mirror of
https://github.com/videolan/vlc.git
synced 2024-11-25 10:53:36 +08:00
372813ac34
* Updated version number and ChangeLog to 0.2.72 * Additional plugin Makefile cleaning, probably the last.
343 lines
10 KiB
Makefile
343 lines
10 KiB
Makefile
###############################################################################
|
|
# vlc (VideoLAN Client) main Makefile - (c)1998 VideoLAN
|
|
###############################################################################
|
|
|
|
-include Makefile.opts
|
|
|
|
###############################################################################
|
|
# Objects and files
|
|
###############################################################################
|
|
|
|
#
|
|
# All possible plugin directories, needed for make clean
|
|
#
|
|
PLUGINS_DIR := alsa beos darwin dsp dummy \
|
|
dvd esd fb ggi glide gnome gtk \
|
|
idct \
|
|
macosx mga \
|
|
motion \
|
|
mpeg null qt sdl \
|
|
text x11 yuv
|
|
|
|
#
|
|
# All possible plugin objects
|
|
#
|
|
PLUGINS_TARGETS := alsa/alsa beos/beos darwin/darwin dsp/dsp dummy/dummy \
|
|
dvd/dvd esd/esd fb/fb ggi/ggi glide/glide gnome/gnome gtk/gtk \
|
|
idct/idct idct/idctclassic idct/idctmmx idct/idctmmxext \
|
|
macosx/macosx mga/mga \
|
|
motion/motion motion/motionmmx motion/motionmmxext \
|
|
mpeg/ps mpeg/ts null/null qt/qt sdl/sdl \
|
|
text/text x11/x11 x11/xvideo yuv/yuv yuv/yuvmmx
|
|
|
|
#
|
|
# C Objects
|
|
#
|
|
INTERFACE = src/interface/main.o \
|
|
src/interface/interface.o \
|
|
src/interface/intf_msg.o \
|
|
src/interface/intf_cmd.o \
|
|
src/interface/intf_ctrl.o \
|
|
src/interface/intf_playlist.o \
|
|
src/interface/intf_channels.o \
|
|
src/interface/intf_console.o \
|
|
src/interface/intf_urldecode.o \
|
|
|
|
INPUT = src/input/input_ext-dec.o \
|
|
src/input/input_ext-intf.o \
|
|
src/input/input_dec.o \
|
|
src/input/input_programs.o \
|
|
src/input/input_netlist.o \
|
|
src/input/input_clock.o \
|
|
src/input/input.o \
|
|
src/input/mpeg_system.o
|
|
|
|
AUDIO_OUTPUT = src/audio_output/audio_output.o \
|
|
src/audio_output/aout_fifo.o \
|
|
src/audio_output/aout_u8.o \
|
|
src/audio_output/aout_s8.o \
|
|
src/audio_output/aout_u16.o \
|
|
src/audio_output/aout_s16.o
|
|
|
|
VIDEO_OUTPUT = src/video_output/video_output.o \
|
|
src/video_output/video_text.o \
|
|
src/video_output/video_spu.o \
|
|
src/video_output/video_yuv.o
|
|
|
|
AC3_DECODER = src/ac3_decoder/ac3_decoder_thread.o \
|
|
src/ac3_decoder/ac3_decoder.o \
|
|
src/ac3_decoder/ac3_parse.o \
|
|
src/ac3_decoder/ac3_exponent.o \
|
|
src/ac3_decoder/ac3_bit_allocate.o \
|
|
src/ac3_decoder/ac3_mantissa.o \
|
|
src/ac3_decoder/ac3_rematrix.o \
|
|
src/ac3_decoder/ac3_imdct.o \
|
|
src/ac3_decoder/ac3_downmix.o \
|
|
src/ac3_decoder/ac3_downmix_c.o
|
|
|
|
LPCM_DECODER = src/lpcm_decoder/lpcm_decoder_thread.o \
|
|
src/lpcm_decoder/lpcm_decoder.o
|
|
|
|
AUDIO_DECODER = src/audio_decoder/audio_decoder.o \
|
|
src/audio_decoder/adec_generic.o \
|
|
src/audio_decoder/adec_layer1.o \
|
|
src/audio_decoder/adec_layer2.o \
|
|
src/audio_decoder/adec_math.o
|
|
|
|
SPU_DECODER = src/spu_decoder/spu_decoder.o
|
|
|
|
#GEN_DECODER = src/generic_decoder/generic_decoder.o
|
|
|
|
VIDEO_PARSER = src/video_parser/video_parser.o \
|
|
src/video_parser/vpar_headers.o \
|
|
src/video_parser/vpar_blocks.o \
|
|
src/video_parser/vpar_synchro.o \
|
|
src/video_parser/video_fifo.o
|
|
|
|
VIDEO_DECODER = src/video_decoder/video_decoder.o
|
|
|
|
MISC = src/misc/mtime.o \
|
|
src/misc/tests.o \
|
|
src/misc/rsc_files.o \
|
|
src/misc/modules.o \
|
|
src/misc/netutils.o
|
|
|
|
C_OBJ = $(INTERFACE) \
|
|
$(INPUT) \
|
|
$(VIDEO_OUTPUT) \
|
|
$(AUDIO_OUTPUT) \
|
|
$(AC3_DECODER) \
|
|
$(LPCM_DECODER) \
|
|
$(AUDIO_DECODER) \
|
|
$(SPU_DECODER) \
|
|
$(GEN_DECODER) \
|
|
$(VIDEO_PARSER) \
|
|
$(VIDEO_DECODER) \
|
|
$(MISC)
|
|
|
|
#
|
|
# Misc Objects
|
|
#
|
|
ifeq ($(GETOPT),1)
|
|
C_OBJ += extras/GNUgetopt/getopt.o extras/GNUgetopt/getopt1.o
|
|
endif
|
|
|
|
ifeq ($(SYS),beos)
|
|
CPP_OBJ = src/misc/beos_specific.o
|
|
endif
|
|
|
|
ifneq (,$(findstring darwin,$(SYS)))
|
|
C_OBJ += src/misc/darwin_specific.o
|
|
endif
|
|
|
|
#
|
|
# Generated header
|
|
#
|
|
H_OBJ = include/modules_builtin.h
|
|
|
|
#
|
|
# Other lists of files
|
|
#
|
|
C_DEP := $(C_OBJ:%.o=.dep/%.d)
|
|
CPP_DEP := $(CPP_OBJ:%.o=.dep/%.dpp)
|
|
|
|
#
|
|
# Translate plugin names
|
|
#
|
|
PLUGIN_OBJ := $(shell for i in : $(PLUGINS) ; do echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.*/\('$$i'\) .*@lib/\1.so@' -e 's@^ .*@@' ; done)
|
|
BUILTIN_OBJ := $(shell for i in : $(BUILTINS) ; do echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.*/\('$$i'\) .*@lib/\1.a@' -e 's@^ .*@@' ; done)
|
|
|
|
# All symbols must be exported
|
|
export
|
|
|
|
###############################################################################
|
|
# Targets
|
|
###############################################################################
|
|
|
|
#
|
|
# Virtual targets
|
|
#
|
|
all: vlc ${ALIASES} plugins vlc.app
|
|
|
|
clean:
|
|
for dir in $(PLUGINS_DIR) ; do \
|
|
( cd plugins/$${dir} && $(MAKE) clean ) ; done
|
|
rm -f plugins/*/*.o plugins/*/*.moc plugins/*/*.bak
|
|
rm -f $(C_OBJ) $(CPP_OBJ)
|
|
rm -f src/*/*.o extras/*/*.o
|
|
rm -f lib/*.so lib/*.a vlc gnome-vlc gvlc kvlc qvlc
|
|
rm -rf vlc.app
|
|
|
|
distclean: clean
|
|
rm -f **/*.o **/*~ *.log
|
|
rm -f Makefile.opts
|
|
rm -f include/defs.h include/config.h include/modules_builtin.h
|
|
rm -f config.status config.cache config.log
|
|
rm -f gmon.out core build-stamp
|
|
rm -Rf .dep
|
|
rm -f .gdb_history
|
|
|
|
install:
|
|
mkdir -p $(DESTDIR)$(bindir)
|
|
$(INSTALL) vlc $(DESTDIR)$(bindir)
|
|
# ugly
|
|
for alias in "" ${ALIASES} ; do if test $$alias ; then rm -f $(DESTDIR)$(bindir)/$$alias && ln -s vlc $(DESTDIR)$(bindir)/$$alias ; fi ; done
|
|
mkdir -p $(DESTDIR)$(libdir)/videolan/vlc
|
|
$(INSTALL) -m 644 $(PLUGINS:%=lib/%.so) $(DESTDIR)$(libdir)/videolan/vlc
|
|
mkdir -p $(DESTDIR)$(datadir)/videolan
|
|
$(INSTALL) -m 644 share/*.psf $(DESTDIR)$(datadir)/videolan
|
|
$(INSTALL) -m 644 share/*.png $(DESTDIR)$(datadir)/videolan
|
|
$(INSTALL) -m 644 share/*.xpm $(DESTDIR)$(datadir)/videolan
|
|
|
|
show:
|
|
@echo CC: $(CC)
|
|
@echo CFLAGS: $(CFLAGS)
|
|
@echo DCFLAGS: $(DCFLAGS)
|
|
@echo LCFLAGS: $(LCFLAGS)
|
|
@echo C_OBJ: $(C_OBJ)
|
|
@echo CPP_OBJ: $(CPP_OBJ)
|
|
@echo objects: $(objects)
|
|
@echo cppobjects: $(cppobjects)
|
|
@echo PLUGIN_OBJ: $(PLUGIN_OBJ)
|
|
@echo BUILTIN_OBJ: $(BUILTIN_OBJ)
|
|
|
|
|
|
# ugliest of all, but I have no time to do it -- sam
|
|
snapshot:
|
|
rm -Rf /tmp/vlc-${PROGRAM_VERSION}* /tmp/vlc-${PROGRAM_VERSION}nocss*
|
|
# copy archive in /tmp
|
|
find -type d | grep -v CVS | grep -v '\.dep' | while read i ; \
|
|
do mkdir -p /tmp/vlc-${PROGRAM_VERSION}/$$i ; \
|
|
done
|
|
find debian -mindepth 1 -maxdepth 1 -type d | \
|
|
while read i ; do rm -Rf /tmp/vlc-${PROGRAM_VERSION}/$$i ; done
|
|
# .c .h .in .cpp .glade
|
|
find include src plugins -type f -name '*.[chig]*' | while read i ; \
|
|
do cp $$i /tmp/vlc-${PROGRAM_VERSION}/$$i ; done
|
|
# Makefiles
|
|
find . plugins -type f -name Makefile | while read i ; \
|
|
do cp $$i /tmp/vlc-${PROGRAM_VERSION}/$$i ; done
|
|
# extra files
|
|
cp -a extras/* /tmp/vlc-${PROGRAM_VERSION}/extras
|
|
cp -a doc/* /tmp/vlc-${PROGRAM_VERSION}/doc
|
|
find /tmp/vlc-${PROGRAM_VERSION}/extras \
|
|
/tmp/vlc-${PROGRAM_VERSION}/doc \
|
|
-type d -name CVS | while read i ; \
|
|
do rm -Rf $$i ; \
|
|
done
|
|
# copy misc files
|
|
cp vlc.spec AUTHORS COPYING ChangeLog INSTALL README TODO todo.pl \
|
|
Makefile.opts.in Makefile.dep Makefile.modules \
|
|
configure configure.in install-sh config.sub config.guess \
|
|
/tmp/vlc-${PROGRAM_VERSION}/
|
|
for file in control control-css vlc-gtk.menu vlc.copyright vlc.docs \
|
|
changelog changelog-css rules rules-css vlc.dirs vlc.desktop \
|
|
gvlc.desktop gnome-vlc.desktop vlc.menu ; do \
|
|
cp debian/$$file /tmp/vlc-${PROGRAM_VERSION}/debian/ ; \
|
|
done
|
|
for file in default8x16.psf default8x9.psf vlc_beos.rsrc vlc.icns ; do \
|
|
cp share/$$file /tmp/vlc-${PROGRAM_VERSION}/share/ ; done
|
|
for icon in vlc gvlc qvlc gnome-vlc kvlc ; do \
|
|
cp share/$$icon.xpm share/$$icon.png \
|
|
/tmp/vlc-${PROGRAM_VERSION}/share/ ; done
|
|
|
|
# build css-enabled archives
|
|
(cd /tmp ; tar cf vlc-${PROGRAM_VERSION}.tar vlc-${PROGRAM_VERSION} ; \
|
|
bzip2 -f -9 < vlc-${PROGRAM_VERSION}.tar \
|
|
> vlc-${PROGRAM_VERSION}.tar.bz2 ; \
|
|
gzip -f -9 vlc-${PROGRAM_VERSION}.tar )
|
|
mv /tmp/vlc-${PROGRAM_VERSION}.tar.gz \
|
|
/tmp/vlc-${PROGRAM_VERSION}.tar.bz2 ..
|
|
|
|
# clean up
|
|
rm -Rf /tmp/vlc-${PROGRAM_VERSION}*
|
|
|
|
.PHONY: vlc.app
|
|
vlc.app:
|
|
ifneq (,$(findstring darwin,$(SYS)))
|
|
rm -rf vlc.app
|
|
mkdir -p vlc.app/Contents/Resources
|
|
mkdir -p vlc.app/Contents/MacOS/lib
|
|
mkdir -p vlc.app/Contents/MacOS/share
|
|
$(INSTALL) -m 644 extras/MacOSX_app/Contents/Info.plist vlc.app/Contents/
|
|
$(INSTALL) -m 644 extras/MacOSX_app/Contents/PkgInfo vlc.app/Contents/
|
|
$(INSTALL) vlc vlc.app/Contents/MacOS/
|
|
$(INSTALL) share/vlc.icns vlc.app/Contents/Resources/
|
|
$(INSTALL) $(PLUGINS:%=lib/%.so) vlc.app/Contents/MacOS/lib
|
|
$(INSTALL) -m 644 share/*.psf vlc.app/Contents/MacOS/share
|
|
endif
|
|
|
|
FORCE:
|
|
|
|
#
|
|
# GTK/Gnome aliases - don't add too many aliases which could bloat
|
|
# the namespace
|
|
#
|
|
gnome-vlc gvlc kvlc qvlc: vlc
|
|
rm -f $@ && ln -s vlc $@
|
|
|
|
#
|
|
# Generic rules (see below)
|
|
#
|
|
$(C_DEP): %.d: FORCE
|
|
@$(MAKE) -s --no-print-directory -f Makefile.dep $@
|
|
|
|
$(CPP_DEP): %.dpp: FORCE
|
|
@$(MAKE) -s --no-print-directory -f Makefile.dep $@
|
|
|
|
$(H_OBJ): Makefile.opts Makefile.dep Makefile
|
|
rm -f $@ && cp $@.in $@
|
|
for i in $(BUILTINS) ; do \
|
|
echo "int module_"$$i"_InitModule (module_t *);" >> $@ ; \
|
|
echo "int module_"$$i"_ActivateModule (module_t *);" >> $@ ; \
|
|
echo "int module_"$$i"_DeactivateModule (module_t *);" >> $@ ; \
|
|
done
|
|
echo "#define ALLOCATE_ALL_BUILTINS() \\" >> $@ ;
|
|
echo "{ \\" >> $@ ;
|
|
for i in $(BUILTINS) ; do \
|
|
echo " ALLOCATE_BUILTIN("$$i"); \\" >> $@ ; \
|
|
done
|
|
echo "};" >> $@ ;
|
|
|
|
$(C_OBJ): %.o: Makefile.opts Makefile.dep Makefile
|
|
$(C_OBJ): %.o: .dep/%.d
|
|
$(C_OBJ): %.o: %.c
|
|
ifneq (,$(findstring darwin,$(SYS)))
|
|
#this is uglier of all
|
|
@if test "src/ac3_decoder/ac3_imdct.c" = "$<"; then $(CC) `echo $(CFLAGS) | sed -e 's/-O3/-O/'` -c -o $@ $<; echo "(CC) `echo $(CFLAGS) | sed -e 's/-O3/-O/'` -c -o $@ $<"; else $(CC) $(CFLAGS) -c -o $@ $<; echo "$(CC) $(CFLAGS) -c -o $@ $<"; fi
|
|
else
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
endif
|
|
|
|
$(CPP_OBJ): %.o: Makefile.opts Makefile.dep Makefile
|
|
$(CPP_OBJ): %.o: .dep/%.dpp
|
|
$(CPP_OBJ): %.o: %.cpp
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
#
|
|
# Main application target
|
|
#
|
|
vlc: Makefile.opts Makefile.dep Makefile $(H_OBJ) $(C_OBJ) $(CPP_OBJ) $(BUILTIN_OBJ)
|
|
$(CC) $(CFLAGS) -o $@ $(C_OBJ) $(CPP_OBJ) $(BUILTIN_OBJ) $(LCFLAGS)
|
|
ifeq ($(SYS),beos)
|
|
rm -f ./lib/_APP_
|
|
ln -s ../vlc ./lib/_APP_
|
|
xres -o $@ ./share/vlc_beos.rsrc
|
|
mimeset -f $@
|
|
endif
|
|
|
|
#
|
|
# Plugins target
|
|
#
|
|
plugins: Makefile.modules Makefile.opts Makefile.dep Makefile $(PLUGIN_OBJ)
|
|
$(PLUGIN_OBJ): FORCE
|
|
cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:lib/%.so=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) $(@:%=../../%)
|
|
|
|
#
|
|
# Built-in modules target
|
|
#
|
|
builtins: Makefile.modules Makefile.opts Makefile.dep Makefile $(BUILTIN_OBJ)
|
|
$(BUILTIN_OBJ): FORCE
|
|
cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:lib/%.a=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) $(@:%=../../%)
|
|
|