X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/blobdiff_plain/7fbe0fb9be3e01363235cfbc2a3225a144e9774b..50c72655176127c8347fa668091b02d4649320f6:/Makefile diff --git a/Makefile b/Makefile index 784770d..836a7f4 100644 --- a/Makefile +++ b/Makefile @@ -2,70 +2,83 @@ all: clean:: +.PHONY: all clean + +CLEANFILES += $(TARGETS) .SECONDEXPANSION: # sorry -bindir = ../bin +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 " %-12s %s\n" "$1" "$@"; +v-tag_0 = @printf " %-8s %s\n" "$1" "$@"; CC = gcc CFLAGS = -O2 -g -pedantic -Wall -Werror LD = gcc LDFLAGS = +LIBS = -ldvdread + +CFLAGS.terminfo += -DUSE_TERMINFO +LIBS.terminfo += -ltinfo -ARCH += i686 -CFLAGS_i386 = -m32 +CFLAGS.termcap += -DUSE_TERMCAP +LIBS.termcap += -ltermcap -ARCH += x86_64 -CFLAGS_amd64 = -m64 +TERMLIB ?= terminfo +CFLAGS += $(CFLAGS.$(TERMLIB)) +LIBS += $(LIBS.$(TERMLIB)) PROGS += dvd-sector-copy -dvd-sector-copy_SRCS = dvd-sector-copy.c -dvd-sector-copy_LIBS = -ldvdread -lm +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 SCRIPTS += dvdrip SCRIPTS += dvdrip-upload +SCRIPTS += dvdrip-monitor +SCRIPTS += dvdrip-check-batch +SCRIPTS += dvdrip-retry-botched-vobs -define setup-arch -obj.$1/%.o: %.c - $$(V_AT)mkdir -p $$(dir $$@) - $$(call v-tag,CC [$1])$$(CC) -c $$(CFLAGS) $$(CFLAGS_$1) -o$$@ -MD -MF obj.$1/$$*.dep $$< -clean::; rm -rf obj.$1 -endef -$(foreach a,$(ARCH), $(eval $(call setup-arch,$a))) +%.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))) -ALL_PROGS += $(foreach a,$(ARCH), \ - $(foreach p,$(PROGS), $(bindir)/$p.$a)) -TARGETS += $(ALL_PROGS) -program-name = $(basename $1) -program-arch = $(patsubst .%,%,$(suffix $1)) -program-sources = $($(call program-name,$1)_SRCS) \ - $($(call program-name,$1)_SRCS_$(call program-arch,$1)) -program-objects = $(addprefix obj.$(call program-arch,$1)/, \ - $(call objects,$(call program-sources,$1),$2)) -$(ALL_PROGS): $(bindir)/%: $$(call program-objects,$$*) $$($$(call program-name,$$*)_DEPS) - $(call v-tag,LD [$(call program-arch,$*)])$(LD) \ - $(LDFLAGS) $(LDFLAGS_$(call program-arch,$*)) -o$@ \ - $(call program-objects,$*) \ - $($(call program-name,$*)_LIBS) \ - $($(call program-name,$*)_LIBS_$(call program-arch,$*)) - -ALL_SCRIPTS = $(addprefix $(bindir)/, $(SCRIPTS)) -TARGETS += $(ALL_SCRIPTS) -$(ALL_SCRIPTS): $(bindir)/%: % - $(call v-tag,SCRIPT)install $* $@ +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 $(TARGETS) +clean::; rm -f $(CLEANFILES) --include $(foreach p,$(notdir $(ALL_PROGS)), $(call program-objects,$p,.dep)) +-include $(foreach p,$(PROGS), $(call program-objects,$p,.dep))