################################################################################
# vls (VideoLAN Server) main Makefile
#-------------------------------------------------------------------------------
# (c)1999-2001 VideoLAN
# $Id: Makefile,v 1.102.4.4 2004/01/10 21:54:57 alexis Exp $
################################################################################
ifeq ($(shell [ ! -r Makefile.opts ] && echo 1),)
include Makefile.opts
endif
CCFLAGS += ${CFLAGS}
################################################################################
# Common options
################################################################################
LCFLAGS += $(VLS_LCFLAGS)
################################################################################
# Files description
################################################################################
#
# Source files
#
ifeq ($(NEEDSRC_core),1)
SRC+= src/core/application.cpp \
src/core/exception.cpp \
src/core/file.cpp \
src/core/lexer.cpp \
src/core/log.cpp \
src/core/parsers.cpp \
src/core/reflect.cpp \
src/core/serialization.cpp \
src/core/settings.cpp \
src/core/socket.cpp \
src/core/string.cpp \
src/core/system.cpp \
src/core/thread.cpp \
src/core/module.cpp \
src/core/iso_lang.cpp \
endif
ifeq ($(NEEDSRC_server),1)
SRC+= src/server/buffer.cpp \
src/server/directory.cpp \
src/server/input.cpp \
src/server/output.cpp \
src/server/channel.cpp \
src/server/request.cpp \
src/server/admin.cpp \
src/server/broadcast.cpp \
src/server/manager.cpp \
src/server/program.cpp \
src/server/telnet.cpp \
src/server/nativeadmin.cpp \
src/server/tsstreamer.cpp \
src/server/vls.cpp \
endif
ifeq ($(NEEDSRC_daemon),1)
SRC+= src/server/daemon.cpp \
endif
ifeq ($(NEEDSRC_mpegbase),1)
SRC+= src/mpeg/ts.cpp \
src/mpeg/rtp.cpp \
src/mpeg/streamdescr.cpp \
src/mpeg/reader.cpp \
src/mpeg/converter.cpp \
endif
ifeq ($(NEEDSRC_mpegmux),1)
SRC+= src/mpeg/dvbpsi.cpp \
src/mpeg/tsdemux.cpp \
src/mpeg/tsmux.cpp \
endif
ifeq ($(NEEDSRC_getopt),1)
C_SRC+= src/extras/getopt.c \
src/extras/getopt1.c \
endif
#
# Module libraries
#
MODULE_LIST:= filereader \
dvdreader \
ts2ts \
ps2ts \
filechannel \
netchannel \
localinput \
videoinput \
dvbinput \
dvbreader \
BUILTINSTARGETS:=$(BUILTINS:%:bin/%.a)
PLUGINSTARGETS:=$(PLUGINS:%:bin/%.so)
#
# Object files
#
OBJ:=$(SRC:src/%.cpp=obj/%.o)
C_OBJ:=$(C_SRC:src/%.c=obj/%.o)
#
# Dependencies
#
DEP:=$(SRC:src/%.cpp=dep/%.dpp)
C_DEP:=$(C_SRC:src/%.c=dep/%.d)
#
# Misc variables
#
VLS_QUICKVERSION := $(shell grep '^ *VLS_VERSION=' configure.in | cut -f2 -d=)
# export symbols for recursive Makefiles
export
################################################################################
# Targets definition
################################################################################
#
# Build rules
#
all: Makefile.opts vls $(PLUGINS)
Makefile.opts:
@echo "**** No configuration found, please run ./configure..."
@exit 1
vls_clean:
rm -Rf obj
module_clean:
for module in $(MODULE_LIST) ; do \
( cd src/modules/$$module && $(MAKE) clean ) ; done
clean: module_clean vls_clean
distclean: vls_clean
rm -f bin/vls
rm -f bin/vls.exe
rm -f bin/vlsd
rm -f bin/vlsd.exe
rm -f config*status config*cache config*log
rm -f Makefile.opts src/core/defs.h src/server/config.h
rm -f src/server/vls_builtins.cpp
rm -Rf dep
rm -Rf *.log *.dbg
for module in $(MODULE_LIST) ; do \
( cd src/modules/$$module && $(MAKE) distclean ) ; done
install:
mkdir -p $(DESTDIR)$(bindir)
$(INSTALL) bin/vls $(DESTDIR)$(bindir)
$(INSTALL) bin/vlsd $(DESTDIR)$(bindir)
mkdir -p $(DESTDIR)$(libdir)/videolan/vls
ifneq (,$(PLUGINS))
$(INSTALL) -m 644 $(PLUGINS:%=bin/%.so) $(DESTDIR)$(libdir)/videolan/vls
endif
mkdir -p $(DESTDIR)$(sysconfdir)/videolan/vls
test -r $(DESTDIR)$(sysconfdir)/videolan/vls/vls.cfg-dist || $(INSTALL) -m 644 vls.cfg $(DESTDIR)$(sysconfdir)/videolan/vls/vls.cfg-dist
@echo "Installation succeeded."
uninstall:
rm -f $(DESTDIR)$(bindir)/vls
rm -f $(DESTDIR)$(bindir)/vlsd
rm -f $(DESTDIR)$(libdir)/videolan/vls/*.so
# Build lexer.cpp with flex
lexer:
flex -i -osrc/core/lexer.cpp src/core/lexer.lex
dep: Makefile.opts $(DEP)
vls: Makefile.opts $(OBJ) $(C_OBJ) $(BUILTINS)
@echo "Linking $@..."
@test -d bin || mkdir -p bin
$(CXX) $(LCFLAGS) -o bin/$@$(EXEEXT) $(OBJ) $(C_OBJ) $(BUILTINS:%=obj/%.a) $(VLS_LIB)
@test -f bin/vlsd$(EXEEXT) || ln -s $@ bin/$@d$(EXEEXT)
chmod 755 bin/$@$(EXEEXT)
dep/server/vls.dpp: src/server/vls_builtins.cpp
src/server/vls_builtins.cpp: Makefile.opts
rm -f $@
ifneq (,$(BUILTINS))
for builtin in $(BUILTINS) ; do \
echo "extern C_Module* NewBuiltin_"$$builtin"(handle hLog);" >> $@ ; \
done
endif
echo "" >> $@
echo "void C_Vls::LoadBuiltins()" >> $@
echo "{" >> $@
ifneq (,$(BUILTINS))
for builtin in $(BUILTINS) ; do \
echo " C_Module* pModule_"$$builtin" = NewBuiltin_"$$builtin"(m_hLog);" >> $@ ; \
echo " m_pModuleManager->RegisterModule(pModule_"$$builtin");" >> $@ ; \
done
endif
echo "}" >> $@
echo "" >> $@
$(PLUGINS): %: Makefile.opts
$(PLUGINS): %: src/modules/%/Makefile
cd src/modules/$* && $(MAKE) ../../../bin/$*.so
$(BUILTINS): %: Makefile.opts
$(BUILTINS): %: src/modules/%/Makefile
cd src/modules/$* && $(MAKE) ../../../obj/$*.a
$(OBJ): obj/%.o: Makefile.opts
$(OBJ): obj/%.o: dep/%.dpp
$(OBJ): obj/%.o: src/%.cpp
@test -d obj/$(dir $*) || mkdir -p obj/$(dir $*)
@echo "Compiling $<..."
$(CXX) $(CCFLAGS) $(INCLUDE) -o $@ -c $<
$(C_OBJ): obj/%.o: Makefile.opts
$(C_OBJ): obj/%.o: dep/%.d
$(C_OBJ): obj/%.o: src/%.c
@test -d obj/$(dir $*) || mkdir -p obj/$(dir $*)
@echo "Compiling $<..."
$(CC) $(CCFLAGS) $(INCLUDE) -o $@ -c $<
$(DEP): Makefile.opts Makefile FORCE
$(DEP): dep/%.dpp: src/%.cpp
@$(MAKE) -s --no-print-directory -f Makefile.dep $@
$(C_DEP): Makefile.opts Makefile FORCE
$(C_DEP): dep/%.d: src/%.c
@$(MAKE) -s --no-print-directory -f Makefile.dep $@
FORCE:
#
# Package generation rules
#
dist:
# Check that tmp isn't in the way
@if test -e tmp; then \
echo "Error: please remove ./tmp, it is in the way"; false; \
else \
echo "Starting dist's build."; mkdir tmp; \
fi
# Copy directory structure in tmp
find -type d | grep -v '\(snapshot\|CVS\)' | while read i ; \
do mkdir -p tmp/vls/$$i ; \
done
rm -Rf tmp/vls/tmp
find debian -mindepth 1 -maxdepth 1 -type d | \
while read i ; do rm -Rf tmp/vls/$$i ; done
mkdir -p tmp/vls/doc
mkdir -p tmp/vls/doc/developer
# Copy .c .h .in .cpp and .def files
find src -type f -name '*.[chi]*' | while read i ; \
do cp $$i tmp/vls/$$i ; done
cp src/core/iso-639.def tmp/vls/src/core
# Copy module Makefiles
find src/modules -type f -name Makefile | while read i ; \
do cp $$i tmp/vls/$$i ; done
# Copy documentation
for file in doc/developer/*.sgml doc/developer/*.dia \
doc/developer/*.eps doc/developer/*.jpg \
doc/developer/*.dsl doc/developer/*.sda ; \
do cp $$file tmp/vls/doc/developer ; done
# Copy misc files
cp AUTHORS COPYING TODO todo.pl ChangeLog* README* INSTALL* \
vls.cfg Makefile Makefile.dep Makefile.module \
Makefile.module.dep Makefile.opts.in \
configure configure.in install-sh config.sub config.guess \
tmp/vls/
# Copy MS Visual Studio project files
cp vls.sln vls.vcproj tmp/vls
# Copy Debian control files
for file in debian/*dirs debian/*docs debian/*menu debian/*desktop \
debian/*copyright debian/*conffiles ; \
do cp $$file tmp/vls/debian ; done
for file in control changelog rules vls.1 ; do \
cp debian/$$file tmp/vls/debian/ ; done
# Copy rpm spec file
cp vls.spec tmp/vls
# Build archives
F=vls-${VLS_QUICKVERSION}; \
mv tmp/vls tmp/$$F; (cd tmp ; tar cf $$F.tar $$F); \
bzip2 -f -9 < tmp/$$F.tar > $$F.tar.bz2; \
gzip -f -9 tmp/$$F.tar ; mv tmp/$$F.tar.gz .
# Clean up
rm -Rf tmp
syntax highlighted by Code2HTML, v. 0.9.1