File:  [DVB] / multiplexer / makefile
Revision 1.22: download - view: text, annotated - select for diffs
Thu Oct 17 08:37:06 2013 UTC (10 years, 7 months ago) by oskar
Branches: MAIN
CVS tags: HEAD
v1.1.8

#!/usr/bin/make
# make iso 13818-1 stream multiplexer

VERSION = 1.1.8
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

OBJS_G = dispatch.o init.o error.o crc32.o input.o output.o command.o \
	global.o descref.o splitpes.o splitps.o splitts.o splice.o
OBJ_ts = splicets.o
OBJ_ps = spliceps.o
OBJS_S = $(OBJ_ts) $(OBJ_ps)
OBJS = $(OBJS_G) $(OBJS_S)
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
TARGETS_O = repeatts showts
TARGET_TS2PES = ts2pes
TARGET_PES2ES = pes2es
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
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) $(SOURCES) $(LICENCE) $(DEFS_INCSRC) $(DEFS_INCDEF)

.PHONY:	all clean install install_bin install_man uninstall targz

all:	$(TARGETS) $(MANGEN)

# kill stupid implicit rule:
%:      %.o

$(TARGETS_I):	$(OBJS)
	$(CC) -o $@ $(OBJS_G) $($(patsubst $(TRGSTEM)%,OBJ_%,$@))

$(TARGETS_O): % : %.o
	$(CC) -o $* $@.o

$(TARGET_TS2PES):	$(OBJS_TS2PES) crc32.o
	$(CC) -o $@ $(OBJS_TS2PES) crc32.o

$(TARGET_PES2ES):	$(OBJS_PES2ES)
	$(CC) -o $@ $(OBJS_PES2ES)

$(TARGET_EN300468TS):	$(OBJS_EN300468TS) crc32.o
	$(CC) -o $@ $(OBJS_EN300468TS) crc32.o

$(OBJS_G) $(OBJS_O):	%.o:	%.c $(HEADERS)
	$(CC) $(CFLAGS) -DMPLEX_VERSION=\"$(VERSION)\" -o $@ $<

$(OBJS_S):	%.o:	%.c %.h $(HEADERS)
	$(CC) $(CFLAGS) -o $@ $<

$(OBJS_TS2PES):	%.o:	%.c %.h
	$(CC) $(CFLAGS) -o $@ $<

$(OBJS_PES2ES):	%.o:	%.c %.h
	$(CC) $(CFLAGS) -o $@ $<

$(OBJS_EN300468TS):	%.o:	%.c $(DEFS_INCSRC) makefile
	$(CC) $(CFLAGS) -o $@ $<

install:	install_bin install_man

install_bin:	$(TARGETS)
	install -d $(BINDIR)
	install -c -m 755 $(TARGETS) $(BINDIR)

install_man:	$(MAN)
	install -d $(MAN1DIR)
	install -c -m 644 $(MAN1) $(MANGEN) $(MAN1DIR)

uninstall:
	cd $(BINDIR) ; rm -vf $(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)
	sed -e '/^\.\\" INCLUDE-TABLE$$/r en300468ts.table.o' \
	  -e '/^\.\\" INCLUDE-DESCR$$/r en300468ts.descr.o' <$< >$@

targz:	$(ALLSRC) $(MAN1) $(MANSRC)
	mkdir mplex13818-$(VERSION)
	ln $(ALLSRC) mplex13818-$(VERSION)/.
	for i in $(MAN1) $(MANSRC) ; do \
	  sed -e 's/^\(.TH.*\)"DATE" "VERSION"/\1"$(DATE)" "$(VERSION)"/' \
	    <$$i >mplex13818-$(VERSION)/$$i ; done
	tar -czf mplex13818-$(VERSION).tar.gz mplex13818-$(VERSION)
	rm -r mplex13818-$(VERSION)

LinuxTV legacy CVS <linuxtv.org/cvs>