836a7f4206f5188678aabf45b98c086b49e6c65b
[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 CFLAGS = -O2 -g -pedantic -Wall -Werror
23
24 LD = gcc
25 LDFLAGS =
26 LIBS = -ldvdread
27
28 CFLAGS.terminfo += -DUSE_TERMINFO
29 LIBS.terminfo += -ltinfo
30
31 CFLAGS.termcap += -DUSE_TERMCAP
32 LIBS.termcap += -ltermcap
33
34 TERMLIB ?= terminfo
35 CFLAGS += $(CFLAGS.$(TERMLIB))
36 LIBS += $(LIBS.$(TERMLIB))
37
38 PROGS += dvd-sector-copy
39 dvd-sector-copy_SRCS = dvd-sector-copy.c lib.c multiprogress.c
40 dvd-sector-copy_LIBS = -lm
41
42 PROGS += dvd-cache-keys
43 dvd-cache-keys_SRCS = dvd-cache-keys.c lib.c multiprogress.c
44
45 PROGS += dvd-id
46 dvd-id_SRCS = dvd-id.c lib.c multiprogress.c
47
48 PROGS += dvd-check-keys
49 dvd-check-keys_SRCS = dvd-check-keys.c lib.c multiprogress.c
50 dvd-check-keys_LIBS = -ldvdcss
51
52 PROGS += chkdvdimg
53 chkdvdimg_SRCS = chkdvdimg.c lib.c multiprogress.c
54
55 SCRIPTS += dvdrip
56 SCRIPTS += dvdrip-upload
57 SCRIPTS += dvdrip-monitor
58 SCRIPTS += dvdrip-check-batch
59 SCRIPTS += dvdrip-retry-botched-vobs
60
61 %.o: %.c
62 $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $<
63 CLEANFILES += *.o *.dep
64
65 objects = $(addsuffix $(or $2,.o),$(basename $(filter %.c %.s %.S,$1)))
66
67 TARGETS += $(PROGS)
68 program-objects = $(call objects,$($1_SRCS),$2)
69 $(PROGS): %: $$(call program-objects,$$*) $$($$*_DEPS)
70 $(call v-tag,LD)$(LD) $(LDFLAGS) -o$@ \
71 $(call program-objects,$*) $($*_LIBS) $(LIBS)
72
73 INSTALL_bin = $(addprefix inst/,$(PROGS) $(SCRIPTS))
74 install: $(INSTALL_bin)
75 $(INSTALL_bin): inst/%: %
76 $(V_AT)mkdir -p $(bindir)
77 $(call v-tag,INST)install -m755 $* $(bindir)/
78
79 p:; : $p
80
81 all: $(TARGETS)
82 clean::; rm -f $(CLEANFILES)
83
84 -include $(foreach p,$(PROGS), $(call program-objects,$p,.dep))