Annotation of multiplexer/makefile, revision 1.11
1.11 ! oskar 1: #!/usr/bin/make
1.1 oskar 2: # make iso 13818-1 stream multiplexer
3:
1.11 ! oskar 4: VERSION = 1.1.0
! 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)))
! 49: ALLSRC = $(HEADERS) $(MAN1) $(MANSRC) $(SOURCES) $(LICENCE) $(DEFS_INCSRC) \
! 50: $(DEFS_INCDEF)
! 51:
! 52: .PHONY: all clean install uninstall targz
1.1 oskar 53:
1.11 ! oskar 54: all: $(TARGETS) $(MANGEN)
1.1 oskar 55:
1.11 ! oskar 56: # kill stupid implicit rule:
! 57: %: %.o
1.1 oskar 58:
1.5 oskar 59: $(TARGETS_I): $(OBJS)
1.1 oskar 60: $(CC) -o $@ $(OBJS_G) $($(subst $(TRGSTEM),OBJ_,$@))
61:
1.6 jacob 62: $(TARGETS_O): % : %.o
63: $(CC) -o $* $@.o
1.5 oskar 64:
1.9 oskar 65: $(TARGET_TS2PES): $(OBJS_TS2PES) crc32.o
66: $(CC) -o $@ $(OBJS_TS2PES) crc32.o
67:
68: $(TARGET_PES2ES): $(OBJS_PES2ES)
69: $(CC) -o $@ $(OBJS_PES2ES)
70:
1.10 oskar 71: $(TARGET_EN300468TS): $(OBJS_EN300468TS) crc32.o
72: $(CC) -o $@ $(OBJS_EN300468TS) crc32.o
73:
1.5 oskar 74: $(OBJS_G) $(OBJS_O): %.o: %.c $(HEADERS)
1.11 ! oskar 75: $(CC) $(CFLAGS) -DMPLEX_VERSION=\"$(VERSION)\" -o $@ $<
1.2 oskar 76:
77: $(OBJS_S): %.o: %.c %.h $(HEADERS)
1.1 oskar 78: $(CC) $(CFLAGS) -o $@ $<
79:
1.9 oskar 80: $(OBJS_TS2PES): %.o: %.c %.h $($(subst .o,.h,$@))
81: $(CC) $(CFLAGS) -o $@ $<
82:
83: $(OBJS_PES2ES): %.o: %.c %.h $($(subst .o,.h,$@))
84: $(CC) $(CFLAGS) -o $@ $<
85:
1.11 ! oskar 86: $(OBJS_EN300468TS): %.o: %.c $($(subst .o,.h,$@)) $(DEFS_INCSRC) \
! 87: makefile
1.10 oskar 88: $(CC) $(CFLAGS) -o $@ $<
89:
1.11 ! oskar 90: install: $(TARGETS) $(MAN)
! 91: install -d $(BINDIR) $(MAN1DIR)
1.5 oskar 92: install -c -m 755 $(TARGETS) $(BINDIR)
1.11 ! oskar 93: install -c -m 644 $(MAN1) $(MANGEN) $(MAN1DIR)
1.7 oskar 94:
95: uninstall:
96: cd $(BINDIR) ; rm -vf $(TARGETS)
1.11 ! oskar 97: cd $(MAN1DIR) ; rm -vf $(MAN1) $(MANGEN)
! 98:
! 99: clean:
! 100: rm -f *.o *~ $(TARGETS) $(MANGEN)
! 101:
! 102: $(DEFS_MANOBJ): %.o: % %.h
! 103: $(CC) -E -o - -x c -include $<.h $< | grep -v '^#' | grep -v '^$$' >$@
1.1 oskar 104:
1.11 ! oskar 105: en300468ts.1: %.1: %.1.src $(DEFS_MANOBJ)
! 106: cp $< $@.o
! 107: echo -e '/^INCLUDE-TABLE$$/d\n.-1r en300468ts.table.o\n/^INCLUDE-DESCR$$/d\n.-1r en300468ts.descr.o\nwq' | \
! 108: ed $@.o # ed is mighty! http://www.gnu.org/fun/jokes/ed.msg.html
! 109: mv $@.o $@
! 110:
! 111: targz: $(ALLSRC)
! 112: for i in $(MAN1) $(MANSRC) ; do \
! 113: echo -e '/^.TH/s/"[^"]*" "[^"]*"/"$(DATE)" "$(VERSION)"/\nwq' | \
! 114: ed $$i ; done
! 115: mkdir mplex13818-$(VERSION)
! 116: ln $(ALLSRC) mplex13818-$(VERSION)/.
! 117: tar -czf mplex13818-$(VERSION).tar.gz mplex13818-$(VERSION)
! 118: rm -r mplex13818-$(VERSION)
LinuxTV legacy CVS <linuxtv.org/cvs>