Annotation of multiplexer/makefile, revision 1.13

1.11      oskar       1: #!/usr/bin/make
1.1       oskar       2: # make iso 13818-1 stream multiplexer
                      3: 
1.12      oskar       4: VERSION = 1.1.1
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)))
                     49: ALLSRC = $(HEADERS) $(MAN1) $(MANSRC) $(SOURCES) $(LICENCE) $(DEFS_INCSRC) \
                     50:        $(DEFS_INCDEF)
                     51: 
1.13    ! oskar      52: .PHONY:        all clean install install_bin install_man 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.13    ! oskar      90: install:       install_bin install_man
        !            91: 
        !            92: install_bin:   $(TARGETS)
        !            93:        install -d $(BINDIR)
1.5       oskar      94:        install -c -m 755 $(TARGETS) $(BINDIR)
1.13    ! oskar      95: 
        !            96: install_man:   $(MAN)
        !            97:        install -d $(MAN1DIR)
1.11      oskar      98:        install -c -m 644 $(MAN1) $(MANGEN) $(MAN1DIR)
1.7       oskar      99: 
                    100: uninstall:
                    101:        cd $(BINDIR) ; rm -vf $(TARGETS)
1.11      oskar     102:        cd $(MAN1DIR) ; rm -vf $(MAN1) $(MANGEN)
                    103: 
                    104: clean:
                    105:        rm -f *.o *~ $(TARGETS) $(MANGEN)
                    106: 
                    107: $(DEFS_MANOBJ):        %.o:    % %.h
                    108:        $(CC) -E -o - -x c -include $<.h $< | grep -v '^#' | grep -v '^$$' >$@
1.1       oskar     109: 
1.11      oskar     110: en300468ts.1:   %.1:    %.1.src $(DEFS_MANOBJ)
                    111:        cp $< $@.o
                    112:        echo -e '/^INCLUDE-TABLE$$/d\n.-1r en300468ts.table.o\n/^INCLUDE-DESCR$$/d\n.-1r en300468ts.descr.o\nwq' | \
                    113:          ed $@.o # ed is mighty! http://www.gnu.org/fun/jokes/ed.msg.html
                    114:        mv $@.o $@
                    115: 
                    116: targz: $(ALLSRC)
                    117:        for i in $(MAN1) $(MANSRC) ; do \
                    118:          echo -e '/^.TH/s/"[^"]*" "[^"]*"/"$(DATE)" "$(VERSION)"/\nwq' | \
                    119:          ed $$i ; done
                    120:        mkdir mplex13818-$(VERSION)
                    121:        ln $(ALLSRC) mplex13818-$(VERSION)/.
                    122:        tar -czf mplex13818-$(VERSION).tar.gz mplex13818-$(VERSION)
                    123:        rm -r mplex13818-$(VERSION)

LinuxTV legacy CVS <linuxtv.org/cvs>