--- multiplexer/makefile 2005/01/04 21:43:51 1.10 +++ multiplexer/makefile 2006/07/14 17:59:53 1.11 @@ -1,9 +1,13 @@ +#!/usr/bin/make # make iso 13818-1 stream multiplexer -INCLUDEDIR = /usr/local/include -SHELL = /bin/bash -BINDIR = /usr/local/bin -MANDIR = /usr/local/man/man1 +VERSION = 1.1.0 +DATE = $(shell date +%Y-%m-%d) + +PREFIX ?= /usr/local +INCLUDEDIR = $(PREFIX)/include +BINDIR = $(PREFIX)/bin +MAN1DIR = $(PREFIX)/share/man/man1 CFLAGS = -O -c -Wall -I$(INCLUDEDIR) CC = gcc @@ -18,6 +22,7 @@ OBJS_O = repeatts.o showts.o OBJS_TS2PES = ts2pes.o ts2pesdescr.o OBJS_PES2ES = pes2es.o crc16.o OBJS_EN300468TS = en300468ts.o +ALLOBJS = $(OBJS) $(OBJS_O) $(OBJS_TS2PES) $(OBJS_PES2ES) $(OBJS_EN300468TS) TRGSTEM = iso13818 TARGETS_I = $(TRGSTEM)ts $(TRGSTEM)ps @@ -28,11 +33,28 @@ TARGET_EN300468TS = en300468ts TARGETS = $(TARGETS_O) $(TARGETS_I) $(TARGET_TS2PES) $(TARGET_PES2ES) \ $(TARGET_EN300468TS) -HEADERS = dispatch.h error.h crc32.h input.h output.h command.h global.h descref.h splitpes.h splitps.h splitts.h splice.h pes.h ps.h ts.h makefile +HEADERS = dispatch.h error.h crc32.h input.h output.h command.h global.h \ + descref.h splitpes.h splitps.h splitts.h splice.h pes.h ps.h ts.h \ + makefile +DEFS_INCSRC = en300468ts.table en300468ts.descr +DEFS_MANOBJ = $(addsuffix .o,$(DEFS_INCSRC)) +DEFS_INCDEF = $(addsuffix .h,$(DEFS_INCSRC)) +MAN1 = $(addsuffix .1,$(TARGETS_I) repeatts) +MANGEN = $(addsuffix .1,$(TARGET_EN300468TS)) +MANSRC = $(addsuffix .src,$(MANGEN)) +MAN = $(MAN1) $(MANGEN) +LICENCE = COPYING +SOURCES = $(addsuffix .c,$(basename $(ALLOBJS))) \ + $(addsuffix .h,$(basename $(OBJS_TS2PES) $(OBJS_PES2ES) $(OBJS_S))) +ALLSRC = $(HEADERS) $(MAN1) $(MANSRC) $(SOURCES) $(LICENCE) $(DEFS_INCSRC) \ + $(DEFS_INCDEF) + +.PHONY: all clean install uninstall targz -.PHONY: all clean install uninstall +all: $(TARGETS) $(MANGEN) -all: $(TARGETS) +# kill stupid implicit rule: +%: %.o $(TARGETS_I): $(OBJS) $(CC) -o $@ $(OBJS_G) $($(subst $(TRGSTEM),OBJ_,$@)) @@ -50,7 +72,7 @@ $(TARGET_EN300468TS): $(OBJS_EN300468TS) $(CC) -o $@ $(OBJS_EN300468TS) crc32.o $(OBJS_G) $(OBJS_O): %.o: %.c $(HEADERS) - $(CC) $(CFLAGS) -o $@ $< + $(CC) $(CFLAGS) -DMPLEX_VERSION=\"$(VERSION)\" -o $@ $< $(OBJS_S): %.o: %.c %.h $(HEADERS) $(CC) $(CFLAGS) -o $@ $< @@ -61,18 +83,36 @@ $(OBJS_TS2PES): %.o: %.c %.h $($(subst . $(OBJS_PES2ES): %.o: %.c %.h $($(subst .o,.h,$@)) $(CC) $(CFLAGS) -o $@ $< -$(OBJS_EN300468TS): %.o: %.c $($(subst .o,.h,$@)) +$(OBJS_EN300468TS): %.o: %.c $($(subst .o,.h,$@)) $(DEFS_INCSRC) \ + makefile $(CC) $(CFLAGS) -o $@ $< -clean: - rm -f *.o *~ $(TARGETS) - -install: $(TARGETS) - install -d $(BINDIR) $(MANDIR) +install: $(TARGETS) $(MAN) + install -d $(BINDIR) $(MAN1DIR) install -c -m 755 $(TARGETS) $(BINDIR) - install -c -m 644 *.1 $(MANDIR) + install -c -m 644 $(MAN1) $(MANGEN) $(MAN1DIR) uninstall: cd $(BINDIR) ; rm -vf $(TARGETS) - cd $(MANDIR) ; rm -vf $(addsuffix .1,$(TARGETS)) + cd $(MAN1DIR) ; rm -vf $(MAN1) $(MANGEN) + +clean: + rm -f *.o *~ $(TARGETS) $(MANGEN) + +$(DEFS_MANOBJ): %.o: % %.h + $(CC) -E -o - -x c -include $<.h $< | grep -v '^#' | grep -v '^$$' >$@ +en300468ts.1: %.1: %.1.src $(DEFS_MANOBJ) + cp $< $@.o + echo -e '/^INCLUDE-TABLE$$/d\n.-1r en300468ts.table.o\n/^INCLUDE-DESCR$$/d\n.-1r en300468ts.descr.o\nwq' | \ + ed $@.o # ed is mighty! http://www.gnu.org/fun/jokes/ed.msg.html + mv $@.o $@ + +targz: $(ALLSRC) + for i in $(MAN1) $(MANSRC) ; do \ + echo -e '/^.TH/s/"[^"]*" "[^"]*"/"$(DATE)" "$(VERSION)"/\nwq' | \ + ed $$i ; done + mkdir mplex13818-$(VERSION) + ln $(ALLSRC) mplex13818-$(VERSION)/. + tar -czf mplex13818-$(VERSION).tar.gz mplex13818-$(VERSION) + rm -r mplex13818-$(VERSION)