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>