Annotation of multiplexer/makefile, revision 1.22

1.11      oskar       1: #!/usr/bin/make
1.1       oskar       2: # make iso 13818-1 stream multiplexer
                      3: 
1.22    ! oskar       4: VERSION = 1.1.8
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>