| 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)) |