### -*-makefile-*- all: clean:: .PHONY: all clean CLEANFILES += $(TARGETS) .SECONDEXPANSION: # sorry prefix = $(HOME) exec_prefix = $(prefix) bindir = $(exec_prefix)/bin V = 0 V_AT = $(V_AT_$V) V_AT_0 = @ v-tag = $(call v-tag_$V,$1) v-tag_0 = @printf " %-8s %s\n" "$1" "$@"; CC = gcc OPTIMIZE = -O2 DEBUG = -g WARN = -pedantic -Wall -Werror CFLAGS = $(OPTIMIZE) $(DEBUG) $(WARN) LD = gcc LDFLAGS = LIBS = -ldvdread CFLAGS.terminfo += -DUSE_TERMINFO LIBS.terminfo += -ltinfo CFLAGS.termcap += -DUSE_TERMCAP LIBS.termcap += -ltermcap TERMLIB ?= terminfo CFLAGS += $(CFLAGS.$(TERMLIB)) LIBS += $(LIBS.$(TERMLIB)) PROGS += dvd-sector-copy dvd-sector-copy_SRCS = dvd-sector-copy.c lib.c multiprogress.c dvd-sector-copy_LIBS = -lm PROGS += dvd-cache-keys dvd-cache-keys_SRCS = dvd-cache-keys.c lib.c multiprogress.c PROGS += dvd-id dvd-id_SRCS = dvd-id.c lib.c multiprogress.c PROGS += dvd-check-keys dvd-check-keys_SRCS = dvd-check-keys.c lib.c multiprogress.c dvd-check-keys_LIBS = -ldvdcss PROGS += chkdvdimg chkdvdimg_SRCS = chkdvdimg.c lib.c multiprogress.c PROGS += dvd-info dvd-info_SRCS = dvd-info.c lib.c multiprogress.c SCRIPTS += dvdrip SCRIPTS += dvdrip-upload SCRIPTS += dvdrip-monitor SCRIPTS += dvdrip-check-batch SCRIPTS += dvdrip-retry-botched-vobs %.o: %.c $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $< CLEANFILES += *.o *.dep objects = $(addsuffix $(or $2,.o),$(basename $(filter %.c %.s %.S,$1))) TARGETS += $(PROGS) program-objects = $(call objects,$($1_SRCS),$2) $(PROGS): %: $$(call program-objects,$$*) $$($$*_DEPS) $(call v-tag,LD)$(LD) $(LDFLAGS) -o$@ \ $(call program-objects,$*) $($*_LIBS) $(LIBS) INSTALL_bin = $(addprefix inst/,$(PROGS) $(SCRIPTS)) install: $(INSTALL_bin) $(INSTALL_bin): inst/%: % $(V_AT)mkdir -p $(bindir) $(call v-tag,INST)install -m755 $* $(bindir)/ p:; : $p all: $(TARGETS) clean::; rm -f $(CLEANFILES) -include $(foreach p,$(PROGS), $(call program-objects,$p,.dep))