| 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 | SCRIPTS += dvdrip |
| 53 | SCRIPTS += dvdrip-upload |
| 54 | SCRIPTS += dvdrip-monitor |
| 55 | SCRIPTS += dvdrip-check-batch |
| 56 | SCRIPTS += dvdrip-retry-botched-vobs |
| 57 | |
| 58 | %.o: %.c |
| 59 | $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $< |
| 60 | CLEANFILES += *.o *.dep |
| 61 | |
| 62 | objects = $(addsuffix $(or $2,.o),$(basename $(filter %.c %.s %.S,$1))) |
| 63 | |
| 64 | TARGETS += $(PROGS) |
| 65 | program-objects = $(call objects,$($1_SRCS),$2) |
| 66 | $(PROGS): %: $$(call program-objects,$$*) $$($$*_DEPS) |
| 67 | $(call v-tag,LD)$(LD) $(LDFLAGS) -o$@ \ |
| 68 | $(call program-objects,$*) $($*_LIBS) $(LIBS) |
| 69 | |
| 70 | INSTALL_bin = $(addprefix inst/,$(PROGS) $(SCRIPTS)) |
| 71 | install: $(INSTALL_bin) |
| 72 | $(INSTALL_bin): inst/%: % |
| 73 | $(V_AT)mkdir -p $(bindir) |
| 74 | $(call v-tag,INST)install -m755 $* $(bindir)/ |
| 75 | |
| 76 | p:; : $p |
| 77 | |
| 78 | all: $(TARGETS) |
| 79 | clean::; rm -f $(CLEANFILES) |
| 80 | |
| 81 | -include $(foreach p,$(PROGS), $(call program-objects,$p,.dep)) |