Annotation of multiplexer/makefile, revision 1.21
1.11 oskar 1: #!/usr/bin/make
1.1 oskar 2: # make iso 13818-1 stream multiplexer
3:
1.21 ! oskar 4: VERSION = 1.1.7
1.11 oskar 5: DATE = $(shell date +%Y-%m-%d)
6:
7: PREFIX ?= /usr/local
8: INCLUDEDIR = $(PREFIX)/include
9: BINDIR = $(PREFIX)/bin
10: MAN1DIR = $(PREFIX)/share/man/man1
1.1 oskar 11:
1.8 oskar 12: CFLAGS = -O -c -Wall -I$(INCLUDEDIR)
1.1 oskar 13: CC = gcc
14:
1.10 oskar 15: OBJS_G = dispatch.o init.o error.o crc32.o input.o output.o command.o \
16: global.o descref.o splitpes.o splitps.o splitts.o splice.o
1.1 oskar 17: OBJ_ts = splicets.o
18: OBJ_ps = spliceps.o
1.2 oskar 19: OBJS_S = $(OBJ_ts) $(OBJ_ps)
20: OBJS = $(OBJS_G) $(OBJS_S)
1.6 jacob 21: OBJS_O = repeatts.o showts.o
1.9 oskar 22: OBJS_TS2PES = ts2pes.o ts2pesdescr.o
23: OBJS_PES2ES = pes2es.o crc16.o
1.10 oskar 24: OBJS_EN300468TS = en300468ts.o
1.11 oskar 25: ALLOBJS = $(OBJS) $(OBJS_O) $(OBJS_TS2PES) $(OBJS_PES2ES) $(OBJS_EN300468TS)
1.1 oskar 26:
27: TRGSTEM = iso13818
1.5 oskar 28: TARGETS_I = $(TRGSTEM)ts $(TRGSTEM)ps
1.6 jacob 29: TARGETS_O = repeatts showts
1.9 oskar 30: TARGET_TS2PES = ts2pes
31: TARGET_PES2ES = pes2es
1.10 oskar 32: TARGET_EN300468TS = en300468ts
33: TARGETS = $(TARGETS_O) $(TARGETS_I) $(TARGET_TS2PES) $(TARGET_PES2ES) \
34: $(TARGET_EN300468TS)
1.1 oskar 35:
1.11 oskar 36: HEADERS = dispatch.h error.h crc32.h input.h output.h command.h global.h \
37: descref.h splitpes.h splitps.h splitts.h splice.h pes.h ps.h ts.h \
38: makefile
39: DEFS_INCSRC = en300468ts.table en300468ts.descr
40: DEFS_MANOBJ = $(addsuffix .o,$(DEFS_INCSRC))
41: DEFS_INCDEF = $(addsuffix .h,$(DEFS_INCSRC))
42: MAN1 = $(addsuffix .1,$(TARGETS_I) repeatts)
43: MANGEN = $(addsuffix .1,$(TARGET_EN300468TS))
44: MANSRC = $(addsuffix .src,$(MANGEN))
45: MAN = $(MAN1) $(MANGEN)
46: LICENCE = COPYING
47: SOURCES = $(addsuffix .c,$(basename $(ALLOBJS))) \
48: $(addsuffix .h,$(basename $(OBJS_TS2PES) $(OBJS_PES2ES) $(OBJS_S)))
1.14 oskar 49: ALLSRC = $(HEADERS) $(SOURCES) $(LICENCE) $(DEFS_INCSRC) $(DEFS_INCDEF)
1.11 oskar 50:
1.13 oskar 51: .PHONY: all clean install install_bin install_man uninstall targz
1.1 oskar 52:
1.11 oskar 53: all: $(TARGETS) $(MANGEN)
1.1 oskar 54:
1.11 oskar 55: # kill stupid implicit rule:
56: %: %.o
1.1 oskar 57:
1.5 oskar 58: $(TARGETS_I): $(OBJS)
1.18 oskar 59: $(CC) -o $@ $(OBJS_G) $($(patsubst $(TRGSTEM)%,OBJ_%,$@))
1.1 oskar 60:
1.6 jacob 61: $(TARGETS_O): % : %.o
62: $(CC) -o $* $@.o
1.5 oskar 63:
1.9 oskar 64: $(TARGET_TS2PES): $(OBJS_TS2PES) crc32.o
65: $(CC) -o $@ $(OBJS_TS2PES) crc32.o
66:
67: $(TARGET_PES2ES): $(OBJS_PES2ES)
68: $(CC) -o $@ $(OBJS_PES2ES)
69:
1.10 oskar 70: $(TARGET_EN300468TS): $(OBJS_EN300468TS) crc32.o
71: $(CC) -o $@ $(OBJS_EN300468TS) crc32.o
72:
1.5 oskar 73: $(OBJS_G) $(OBJS_O): %.o: %.c $(HEADERS)
1.11 oskar 74: $(CC) $(CFLAGS) -DMPLEX_VERSION=\"$(VERSION)\" -o $@ $<
1.2 oskar 75:
76: $(OBJS_S): %.o: %.c %.h $(HEADERS)
1.1 oskar 77: $(CC) $(CFLAGS) -o $@ $<
78:
1.18 oskar 79: $(OBJS_TS2PES): %.o: %.c %.h
1.9 oskar 80: $(CC) $(CFLAGS) -o $@ $<
81:
1.18 oskar 82: $(OBJS_PES2ES): %.o: %.c %.h
1.9 oskar 83: $(CC) $(CFLAGS) -o $@ $<
84:
1.18 oskar 85: $(OBJS_EN300468TS): %.o: %.c $(DEFS_INCSRC) makefile
1.10 oskar 86: $(CC) $(CFLAGS) -o $@ $<
87:
1.13 oskar 88: install: install_bin install_man
89:
90: install_bin: $(TARGETS)
91: install -d $(BINDIR)
1.5 oskar 92: install -c -m 755 $(TARGETS) $(BINDIR)
1.13 oskar 93:
94: install_man: $(MAN)
95: install -d $(MAN1DIR)
1.11 oskar 96: install -c -m 644 $(MAN1) $(MANGEN) $(MAN1DIR)
1.7 oskar 97:
98: uninstall:
99: cd $(BINDIR) ; rm -vf $(TARGETS)
1.11 oskar 100: cd $(MAN1DIR) ; rm -vf $(MAN1) $(MANGEN)
101:
102: clean:
103: rm -f *.o *~ $(TARGETS) $(MANGEN)
104:
105: $(DEFS_MANOBJ): %.o: % %.h
106: $(CC) -E -o - -x c -include $<.h $< | grep -v '^#' | grep -v '^$$' >$@
1.1 oskar 107:
1.11 oskar 108: en300468ts.1: %.1: %.1.src $(DEFS_MANOBJ)
1.14 oskar 109: sed -e '/^\.\\" INCLUDE-TABLE$$/r en300468ts.table.o' \
110: -e '/^\.\\" INCLUDE-DESCR$$/r en300468ts.descr.o' <$< >$@
1.11 oskar 111:
1.14 oskar 112: targz: $(ALLSRC) $(MAN1) $(MANSRC)
113: mkdir mplex13818-$(VERSION)
1.15 oskar 114: ln $(ALLSRC) mplex13818-$(VERSION)/.
1.11 oskar 115: for i in $(MAN1) $(MANSRC) ; do \
1.14 oskar 116: sed -e 's/^\(.TH.*\)"DATE" "VERSION"/\1"$(DATE)" "$(VERSION)"/' \
117: <$$i >mplex13818-$(VERSION)/$$i ; done
1.11 oskar 118: tar -czf mplex13818-$(VERSION).tar.gz mplex13818-$(VERSION)
119: rm -r mplex13818-$(VERSION)
LinuxTV legacy CVS <linuxtv.org/cvs>