dvdrip: Squish some code a bit.
[dvdrip] / Makefile
CommitLineData
7fbe0fb9
MW
1### -*-makefile-*-
2
3all:
4clean::
f49b5c86
MW
5.PHONY: all clean
6
7CLEANFILES += $(TARGETS)
7fbe0fb9
MW
8
9.SECONDEXPANSION: # sorry
10
f49b5c86
MW
11prefix = $(HOME)
12exec_prefix = $(prefix)
13bindir = $(exec_prefix)/bin
7fbe0fb9
MW
14
15V = 0
16V_AT = $(V_AT_$V)
17V_AT_0 = @
18v-tag = $(call v-tag_$V,$1)
f49b5c86 19v-tag_0 = @printf " %-8s %s\n" "$1" "$@";
7fbe0fb9
MW
20
21CC = gcc
22CFLAGS = -O2 -g -pedantic -Wall -Werror
23
24LD = gcc
25LDFLAGS =
26
7fbe0fb9
MW
27PROGS += dvd-sector-copy
28dvd-sector-copy_SRCS = dvd-sector-copy.c
29dvd-sector-copy_LIBS = -ldvdread -lm
30
31SCRIPTS += dvdrip
32SCRIPTS += dvdrip-upload
33
f49b5c86
MW
34%.o: %.c
35 $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $<
36CLEANFILES += *.o *.dep
7fbe0fb9
MW
37
38objects = $(addsuffix $(or $2,.o),$(basename $(filter %.c %.s %.S,$1)))
39
f49b5c86
MW
40TARGETS += $(PROGS)
41program-objects = $(call objects,$($1_SRCS),$2)
42$(PROGS): %: $$(call program-objects,$$*) $$($$*_DEPS)
43 $(call v-tag,LD)$(LD) $(LDFLAGS) -o$@ \
44 $(call program-objects,$*) $($*_LIBS)
45
46INSTALL_bin = $(addprefix inst/,$(PROGS) $(SCRIPTS))
47install: $(INSTALL_bin)
48$(INSTALL_bin): inst/%: %
49 $(V_AT)mkdir -p $(bindir)
50 $(call v-tag,INST)install -m755 $* $(bindir)/
7fbe0fb9
MW
51
52p:; : $p
53
54all: $(TARGETS)
f49b5c86 55clean::; rm -f $(CLEANFILES)
7fbe0fb9 56
f49b5c86 57-include $(foreach p,$(PROGS), $(call program-objects,$p,.dep))