chiark / gitweb /
Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/dvdrip
[dvdrip] / Makefile
1 ### -*-makefile-*-
2
3 all:
4 clean::
5 .PHONY: all clean
6
7 CLEANFILES              += $(TARGETS)
8
9 .SECONDEXPANSION: # sorry
10
11 prefix                   = $(HOME)
12 exec_prefix              = $(prefix)
13 bindir                   = $(exec_prefix)/bin
14
15 V                        = 0
16 V_AT                     = $(V_AT_$V)
17 V_AT_0                   = @
18 v-tag                    = $(call v-tag_$V,$1)
19 v-tag_0                  = @printf "  %-8s %s\n" "$1" "$@";
20
21 CC                       = gcc
22 OPTIMIZE                 = -O2
23 DEBUG                    = -g
24 WARN                     = -pedantic -Wall -Werror
25 CFLAGS                   = $(OPTIMIZE) $(DEBUG) $(WARN)
26
27 LD                       = gcc
28 LDFLAGS                  =
29 LIBS                     = -ldvdread
30
31 CFLAGS.terminfo         += -DUSE_TERMINFO
32 LIBS.terminfo           += -ltinfo
33
34 CFLAGS.termcap          += -DUSE_TERMCAP
35 LIBS.termcap            += -ltermcap
36
37 TERMLIB                 ?= terminfo
38 CFLAGS                  += $(CFLAGS.$(TERMLIB))
39 LIBS                    += $(LIBS.$(TERMLIB))
40
41 PROGS                   += dvd-sector-copy
42 dvd-sector-copy_SRCS     = dvd-sector-copy.c lib.c multiprogress.c
43 dvd-sector-copy_LIBS     = -lm
44
45 PROGS                   += dvd-cache-keys
46 dvd-cache-keys_SRCS      = dvd-cache-keys.c lib.c multiprogress.c
47
48 PROGS                   += dvd-id
49 dvd-id_SRCS              = dvd-id.c lib.c multiprogress.c
50
51 PROGS                   += dvd-check-keys
52 dvd-check-keys_SRCS      = dvd-check-keys.c lib.c multiprogress.c
53 dvd-check-keys_LIBS      = -ldvdcss
54
55 PROGS                   += chkdvdimg
56 chkdvdimg_SRCS           = chkdvdimg.c lib.c multiprogress.c
57
58 PROGS                   += dvd-info
59 dvd-info_SRCS            = dvd-info.c lib.c multiprogress.c
60
61 SCRIPTS                 += dvdrip
62 SCRIPTS                 += dvdrip-upload
63 SCRIPTS                 += dvdrip-monitor
64 SCRIPTS                 += dvdrip-check-batch
65 SCRIPTS                 += dvdrip-retry-botched-vobs
66
67 %.o: %.c
68         $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $<
69 CLEANFILES              += *.o *.dep
70
71 objects                  = $(addsuffix $(or $2,.o),$(basename $(filter %.c %.s %.S,$1)))
72
73 TARGETS                 += $(PROGS)
74 program-objects          = $(call objects,$($1_SRCS),$2)
75 $(PROGS): %: $$(call program-objects,$$*) $$($$*_DEPS)
76         $(call v-tag,LD)$(LD) $(LDFLAGS) -o$@ \
77                 $(call program-objects,$*) $($*_LIBS) $(LIBS)
78
79 INSTALL_bin              = $(addprefix inst/,$(PROGS) $(SCRIPTS))
80 install: $(INSTALL_bin)
81 $(INSTALL_bin): inst/%: %
82         $(V_AT)mkdir -p $(bindir)
83         $(call v-tag,INST)install -m755 $* $(bindir)/
84
85 p:; : $p
86
87 all: $(TARGETS)
88 clean::; rm -f $(CLEANFILES)
89
90 -include $(foreach p,$(PROGS), $(call program-objects,$p,.dep))