ifeq ($(shell [ ! -r Makefile.opts ] && echo 1),)
include Makefile.opts
endif
+ifeq ($(shell [ ! -r Makefile.config ] && echo 1),)
+ include Makefile.config
+endif
###############################################################################
# Objects and files
###############################################################################
-#
-# All possible plugin directories, needed for make clean
-#
-PLUGINS_DIR := a52 \
- aa \
- ac3_adec \
- ac3_spdif \
- access \
- alsa \
- arts \
- beos \
- chroma \
- directx \
- downmix \
- dsp \
- dummy \
- dvd \
- dvdread \
- esd \
- fb \
- filter \
- fx \
- ggi \
- glide \
- gtk \
- idct \
- imdct \
- kde \
- lirc \
- lpcm_adec \
- macosx \
- mad \
- memcpy \
- mga \
- motion \
- mpeg_system \
- mpeg_adec \
- mpeg_vdec \
- network \
- ogg \
- qnx \
- qt \
- satellite \
- sdl \
- spudec \
- text \
- vcd \
- win32 \
- x11
-
-PLUGINS_TARGETS := a52/a52 \
- aa/aa \
- ac3_adec/ac3_adec \
- ac3_spdif/ac3_spdif \
- access/file \
- access/udp \
- access/http \
- alsa/alsa \
- arts/arts \
- beos/beos \
- chroma/chroma_i420_rgb \
- chroma/chroma_i420_rgb_mmx \
- chroma/chroma_i420_yuy2 \
- chroma/chroma_i420_yuy2_mmx \
- chroma/chroma_i422_yuy2 \
- chroma/chroma_i422_yuy2_mmx \
- chroma/chroma_i420_ymga \
- chroma/chroma_i420_ymga_mmx \
- directx/directx \
- downmix/downmix \
- downmix/downmixsse \
- downmix/downmix3dn \
- dsp/dsp \
- dummy/dummy \
- dummy/null \
- dvd/dvd \
- dvdread/dvdread \
- esd/esd \
- fb/fb \
- filter/filter_deinterlace \
- filter/filter_transform \
- filter/filter_invert \
- filter/filter_distort \
- filter/filter_wall \
- fx/fx_scope \
- ggi/ggi \
- glide/glide \
- gtk/gnome \
- gtk/gtk \
- idct/idct \
- idct/idctclassic \
- idct/idctmmx \
- idct/idctmmxext \
- idct/idctaltivec \
- imdct/imdct \
- imdct/imdct3dn \
- imdct/imdctsse \
- kde/kde \
- lirc/lirc \
- lpcm_adec/lpcm_adec \
- macosx/macosx \
- mad/mad \
- memcpy/memcpy \
- memcpy/memcpymmx \
- memcpy/memcpymmxext \
- memcpy/memcpy3dn \
- memcpy/memcpyaltivec \
- mga/mga \
- mga/xmga \
- motion/motion \
- motion/motionmmx \
- motion/motionmmxext \
- motion/motion3dnow \
- motion/motionaltivec \
- mpeg_system/mpeg_es \
- mpeg_system/mpeg_ps \
- mpeg_system/mpeg_ts \
- mpeg_adec/mpeg_adec \
- mpeg_vdec/mpeg_vdec \
- network/ipv4 \
- network/ipv6 \
- ogg/vorbis \
- qnx/qnx \
- qt/qt \
- satellite/satellite \
- sdl/sdl \
- spudec/spudec \
- text/logger \
- text/ncurses \
- text/rc \
- vcd/vcd \
- win32/waveout \
- win32/intfwin \
- x11/x11 \
- x11/xvideo
-
#
# C Objects
#
-INTERFACE := main interface intf_msg intf_playlist intf_eject
-INPUT := input input_ext-plugins input_ext-dec input_ext-intf input_dec input_programs input_clock mpeg_system
+VLC := vlc
+LIBVLC := libvlc
+INTERFACE := interface intf_eject
+PLAYLIST := playlist
+INPUT := input input_ext-plugins input_ext-dec input_ext-intf input_dec input_programs input_clock input_info
VIDEO_OUTPUT := video_output video_text vout_pictures vout_subpictures
-AUDIO_OUTPUT := audio_output aout_ext-dec aout_pcm aout_spdif
-MISC := mtime modules configuration netutils iso_lang
+AUDIO_OUTPUT := audio_output filters input mixer output
+MISC := mtime modules threads cpu configuration netutils iso_lang messages objects extras
-C_OBJ := $(INTERFACE:%=src/interface/%.o) \
+LIBVLC_OBJ := $(LIBVLC:%=src/%.o) \
+ $(INTERFACE:%=src/interface/%.o) \
+ $(PLAYLIST:%=src/playlist/%.o) \
$(INPUT:%=src/input/%.o) \
$(VIDEO_OUTPUT:%=src/video_output/%.o) \
$(AUDIO_OUTPUT:%=src/audio_output/%.o) \
$(MISC:%=src/misc/%.o)
+VLC_OBJ := $(VLC:%=src/%.o)
+
+C_OBJ := $(VLC_OBJ) $(LIBVLC_OBJ)
+
#
# Misc Objects
#
ifeq ($(NEED_GETOPT),1)
-C_OBJ += extras/GNUgetopt/getopt.o extras/GNUgetopt/getopt1.o
+LIBVLC_OBJ += extras/GNUgetopt/getopt.o extras/GNUgetopt/getopt1.o
endif
ifeq ($(NEED_SYMBOLS),1)
-C_OBJ += src/misc/symbols.o
+LIBVLC_OBJ += src/misc/symbols.o
endif
ifeq ($(SYS),beos)
endif
ifneq (,$(findstring darwin,$(SYS)))
-C_OBJ += src/misc/darwin_specific.o
+LIBVLC_OBJ += src/misc/darwin_specific.o
endif
ifneq (,$(findstring mingw32,$(SYS)))
-C_OBJ += src/misc/win32_specific.o
+LIBVLC_OBJ += src/misc/win32_specific.o
RESOURCE_OBJ := share/vlc_win32_rc.o
endif
-VLC_OBJ := $(C_OBJ) $(CPP_OBJ) $(BUILTIN_OBJ) $(RESOURCE_OBJ)
+LIBVLC_OBJ += $(CPP_OBJ) $(M_OBJ) $(BUILTIN_OBJ)
+VLC_OBJ += $(RESOURCE_OBJ)
#
# Generated header
# Translate plugin names
#
ifneq (,$(PLUGINS))
-PLUGIN_OBJ := $(shell for i in $(PLUGINS) ; do echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.*/\('$$i'\) .*@plugins/\1.so@' -e 's@^ .*@@' ; done)
+PLUGIN_OBJ := $(PLUGINS:%=modules/%.so)
endif
ifneq (,$(BUILTINS))
-BUILTIN_OBJ := $(shell for i in $(BUILTINS) ; do echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.*/\('$$i'\) .*@plugins/\1.a@' -e 's@^ .*@@' ; done)
+BUILTIN_OBJ := $(BUILTINS:%=modules/%.a)
endif
#
#
# Virtual targets
#
-all: Makefile.opts vlc ${ALIASES} vlc.app plugins po
+all: Makefile.opts vlc ${ALIASES} vlc.app plugins po mozilla/libvlcplugin.so
Makefile.opts:
@echo "**** No configuration found, please run ./configure"
#
# Cleaning rules
#
-clean: plugins-clean po-clean vlc-clean
+clean: plugins-clean po-clean vlc-clean mozilla-clean
rm -f src/*/*.o extras/*/*.o
rm -f lib/*.so* lib/*.a
rm -f plugins/*.so plugins/*.a plugins/*.lib plugins/*.tds
- rm -rf extras/MacOSX/build
+ rm -Rf extras/MacOSX/build
po-clean:
-cd po && $(MAKE) clean
plugins-clean:
- for dir in $(PLUGINS_DIR) ; do \
- ( cd plugins/$${dir} \
- && $(MAKE) -f ../../Makefile.modules clean ) ; done
- rm -f plugins/*/*.o plugins/*/*.lo plugins/*/*.moc plugins/*/*.bak
+ for dir in $(shell echo $(PLUGIN_OBJ) $(BUILTIN_OBJ) | sed 's@\([^ ]*\)/[^ ]*@\1@g' ) ; do ( PARENT=`pwd` ; cd $${dir} && $(MAKE) -f $$PARENT/Makefile.modules clean PARENT=$$PARENT ) ; done
vlc-clean:
rm -f $(C_OBJ) $(CPP_OBJ)
rm -f vlc gnome-vlc gvlc kvlc qvlc vlc.exe
rm -Rf vlc.app
+mozilla-clean:
+ -cd mozilla && $(MAKE) clean
+
distclean: clean
-cd po && $(MAKE) maintainer-clean
rm -f **/*.o **/*~ *.log
- rm -f Makefile.opts
+ rm -f Makefile.opts Makefile.config vlc-config
rm -f include/defs.h include/modules_builtin.h
rm -f src/misc/modules_builtin.h
rm -f config*status config*cache config*log conftest*
#
# Install/uninstall rules
#
-install: vlc-install plugins-install po-install
+install: vlc-install plugins-install builtins-install libvlc-install po-install mozilla-install
-uninstall: vlc-uninstall plugins-uninstall po-uninstall
+uninstall: vlc-uninstall plugins-uninstall builtins-uninstall libvlc-uninstall po-uninstall mozilla-uninstall
vlc-install:
mkdir -p $(DESTDIR)$(bindir)
ifneq (,$(ALIASES))
for alias in $(ALIASES) ; do if test $$alias ; then rm -f $(DESTDIR)$(bindir)/$$alias && ln -s vlc $(DESTDIR)$(bindir)/$$alias ; fi ; done
endif
- 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
+ mkdir -p $(DESTDIR)$(datadir)/vlc
+ $(INSTALL) -m 644 share/*.psf $(DESTDIR)$(datadir)/vlc
+ $(INSTALL) -m 644 share/*.png $(DESTDIR)$(datadir)/vlc
+ $(INSTALL) -m 644 share/*.xpm $(DESTDIR)$(datadir)/vlc
vlc-uninstall:
rm -f $(DESTDIR)$(bindir)/vlc
ifneq (,$(ALIASES))
for alias in $(ALIASES) ; do if test $$alias ; then rm -f $(DESTDIR)$(bindir)/$$alias ; fi ; done
endif
- rm -f $(DESTDIR)$(datadir)/videolan/*.psf
- rm -f $(DESTDIR)$(datadir)/videolan/*.png
- rm -f $(DESTDIR)$(datadir)/videolan/*.xpm
+ rm -f $(DESTDIR)$(datadir)/vlc/*.psf
+ rm -f $(DESTDIR)$(datadir)/vlc/*.png
+ rm -f $(DESTDIR)$(datadir)/vlc/*.xpm
+ -rmdir $(DESTDIR)$(datadir)/vlc
plugins-install:
- mkdir -p $(DESTDIR)$(libdir)/videolan/vlc
+ mkdir -p $(DESTDIR)$(libdir)/vlc
ifneq (,$(PLUGINS))
- $(INSTALL) -m 644 $(PLUGINS:%=plugins/%.so) $(DESTDIR)$(libdir)/videolan/vlc
+ for plugin in $(PLUGINS) ; \
+ do dir=`echo $$plugin | sed -e 's@/[^ ]*@@g'` ; \
+ mkdir -p $(DESTDIR)$(libdir)/vlc/$$dir ; \
+ cp modules/$${plugin}.so $(DESTDIR)$(libdir)/vlc/$$dir ; \
+ done
endif
plugins-uninstall:
- rm -f $(DESTDIR)$(libdir)/videolan/vlc/*.so
+ rm -f $(DESTDIR)$(libdir)/vlc/*/*.so
+ -rmdir $(DESTDIR)$(libdir)/vlc/*
+ -rmdir $(DESTDIR)$(libdir)/vlc
+
+builtins-install:
+ mkdir -p $(DESTDIR)$(libdir)/vlc
+ifneq (,$(BUILTINS))
+ $(INSTALL) -m 644 $(BUILTINS:%=modules/%.a) $(DESTDIR)$(libdir)/vlc
+endif
+
+builtins-uninstall:
+ rm -f $(DESTDIR)$(libdir)/vlc/*.a
+ -rmdir $(DESTDIR)$(libdir)/vlc
+
+libvlc-install:
+ mkdir -p $(DESTDIR)$(bindir)
+ $(INSTALL) vlc-config $(DESTDIR)$(bindir)
+ mkdir -p $(DESTDIR)$(includedir)/vlc
+ $(INSTALL) -m 644 include/vlc/*.h $(DESTDIR)$(includedir)/vlc
+ mkdir -p $(DESTDIR)$(libdir)
+ $(INSTALL) -m 644 lib/libvlc.a $(DESTDIR)$(libdir)
+
+libvlc-uninstall:
+ rm -f $(DESTDIR)$(bindir)/vlc-config
+ rm -Rf $(DESTDIR)$(includedir)/vlc
+ rm -f $(DESTDIR)$(libdir)/libvlc.a
+
+mozilla-install:
+ifeq ($(MOZILLA),1)
+ -cd mozilla && $(MAKE) install
+endif
+
+mozilla-uninstall:
+ifeq ($(MOZILLA),1)
+ -cd mozilla && $(MAKE) uninstall
+endif
po-install:
-cd po && $(MAKE) install
rm -Rf tmp/vlc/tmp
find debian -mindepth 1 -maxdepth 1 -type d | \
while read i ; do rm -Rf tmp/vlc/$$i ; done
- # Copy .c .h .in .cpp and .glade files
- find include src plugins -type f -name '*.[bcdhigrst]*' | while read i ; \
+ # Copy .c .h .in .cpp .m and .glade files
+ find include src modules -type f -name '*.[bcdhigmrst]*' | while read i ; \
do cp $$i tmp/vlc/$$i ; done
# Grmbl... special case...
for i in API BUGS DESIGN TODO ; \
- do cp plugins/mad/$$i tmp/vlc/plugins/mad ; done
+ do cp modules/mad/$$i tmp/vlc/modules/mad ; done
# Copy plugin Makefiles
- find plugins -type f -name Makefile | while read i ; \
+ find modules -type f -name Makefile | while read i ; \
do cp $$i tmp/vlc/$$i ; done
# Copy extra programs and documentation
cp -a extras/* tmp/vlc/extras
# Copy misc files
cp FAQ AUTHORS COPYING TODO todo.pl ChangeLog* README* INSTALL* \
ABOUT-NLS BUGS MODULES vlc.spec \
- Makefile Makefile.opts.in Makefile.dep Makefile.modules \
+ Makefile Makefile.*.in Makefile.dep Makefile.modules \
configure configure.in install-sh install-win32 macosx-dmg \
config.sub config.guess aclocal.m4 mkinstalldirs \
tmp/vlc/
cp $$file tmp/vlc/share ; done
# Build archives
F=vlc-${VERSION}; \
- mv tmp/vlc tmp/$$F; (cd tmp ; tar czf ../$$F.tar.gz $$F); \
+ mv tmp/vlc tmp/$$F; (cd tmp ; \
+ cd $$F && $(MAKE) distclean && cd .. ; \
+ tar czf ../$$F.tar.gz $$F);
# Clean up
rm -Rf tmp
do cp $$file tmp/$${file}.txt ; \
unix2dos tmp/$${file}.txt ; done
mkdir tmp/plugins
- cp $(PLUGINS:%=plugins/%.so) tmp/plugins/
- # don't include these two
- #rm -f tmp/plugins/gtk.so tmp/plugins/sdl.so
- $(STRIP) $(PLUGINS:%=tmp/plugins/%.so)
+ifneq (,$(PLUGINS))
+ for i in $(PLUGINS) ; do \
+ DIR=`echo $$i | cut -f1 -d/` ; \
+ mkdir -p tmp/plugins/$$DIR ; \
+ cp modules/$$i.so tmp/plugins/$$DIR ; \
+ if test $$i != gui/win32/win32 ; then \
+ $(STRIP) \
+ tmp/plugins/$$DIR/`echo $$i | sed -e 's@.*/@@'`.so ; \
+ fi ; \
+ done
+endif
mkdir tmp/share
for file in default8x16.psf default8x9.psf ; \
do cp share/$$file tmp/share/ ; done
# Copy relevant files
cp vlc tmp/vlc/
strip tmp/vlc/vlc
+ xres -o tmp/vlc/vlc ./share/vlc_beos.rsrc
cp AUTHORS COPYING ChangeLog README FAQ TODO tmp/vlc/
for file in default8x16.psf default8x9.psf ; \
do cp share/$$file tmp/vlc/share/ ; done
- mkdir tmp/vlc/plugins
- cp $(PLUGINS:%=plugins/%.so) tmp/vlc/plugins/
- strip $(PLUGINS:%=tmp/vlc/plugins/%.so)
+ mkdir tmp/vlc/modules
+ cp $(PLUGINS:%=modules/%.so) tmp/vlc/modules/
+ strip $(PLUGINS:%=tmp/vlc/modules/%.so)
# Create package
mv tmp/vlc tmp/vlc-${VERSION}
(cd tmp ; find vlc-${VERSION} | \
# Copy relevant files
cp -R vlc.app tmp/
- cp AUTHORS COPYING ChangeLog README FAQ TODO tmp/
+ cp AUTHORS COPYING ChangeLog README README.MacOSX.rtf FAQ TODO tmp/
# Create disk image
./macosx-dmg 0 "vlc-${VERSION}" tmp/*
vlc.app: vlc plugins
ifneq (,$(findstring darwin,$(SYS)))
rm -Rf vlc.app
- cd extras/MacOSX ; pbxbuild | grep -v '^ ' | grep -v '^\t'
+ cd extras/MacOSX ; pbxbuild | grep -v '^ ' | grep -v '^\t' | grep -v "^$$"
cp -r extras/MacOSX/build/vlc.bundle ./vlc.app
$(INSTALL) -d vlc.app/Contents/MacOS/share
- $(INSTALL) -d vlc.app/Contents/MacOS/plugins
+ $(INSTALL) -d vlc.app/Contents/MacOS/modules
$(INSTALL) vlc vlc.app/Contents/MacOS/
ifneq (,$(PLUGINS))
- $(INSTALL) $(PLUGINS:%=plugins/%.so) vlc.app/Contents/MacOS/plugins
+ $(INSTALL) $(PLUGINS:%=modules/%.so) vlc.app/Contents/MacOS/modules
endif
$(INSTALL) -m 644 share/*.psf vlc.app/Contents/MacOS/share
endif
#
# Generic rules (see below)
#
-$(H_OBJ): Makefile.opts Makefile.dep Makefile
-# @echo "regenerating $@"
+src/misc/modules_builtin.h: Makefile.opts Makefile Makefile.config
+ @echo "make[$(MAKELEVEL)]: Creating \`$@'"
@rm -f $@ && cp $@.in $@
ifneq (,$(BUILTINS))
@for i in $(BUILTINS) ; do \
- echo "int InitModule__MODULE_"$$i"( module_t* );" >>$@; \
- echo "int ActivateModule__MODULE_"$$i"( module_t* );" >>$@; \
- echo "int DeactivateModule__MODULE_"$$i"( module_t* );" >>$@; \
+ echo "int vlc_entry__modules_"`echo $$i | sed -e 'y@/@_@' -e 's@\..*@@'`"( module_t* );" >>$@; \
done
@echo "" >> $@ ;
endif
@echo " { \\" >> $@ ;
ifneq (,$(BUILTINS))
@for i in $(BUILTINS) ; do \
- echo " ALLOCATE_BUILTIN("$$i"); \\" >> $@ ; \
+ echo " ALLOCATE_BUILTIN(modules_"`echo $$i | sed -e 'y@/@_@' -e 's@\..*@@'`"); \\" >> $@ ; \
done
endif
@echo " } while( 0 );" >> $@ ;
$(CPP_OBJ): %.o: %.cpp
$(CC) $(CFLAGS) $(vlc_CFLAGS) -c -o $@ $<
+$(M_OBJ): %.o: Makefile.opts Makefile.dep Makefile
+$(M_OBJ): %.o: $(H_OBJ)
+$(M_OBJ): %.o: .dep/%.dm
+$(M_OBJ): %.o: %.m
+ $(CC) $(CFLAGS) $(vlc_CFLAGS) -c -o $@ $<
+
$(RESOURCE_OBJ): %.o: Makefile.dep Makefile
ifneq (,(findstring mingw32,$(SYS)))
$(RESOURCE_OBJ): %.o: %.rc
#
# Main application target
#
-vlc: Makefile.opts Makefile.dep Makefile $(VLC_OBJ) $(BUILTIN_OBJ)
- $(CC) $(CFLAGS) -o $@ $(VLC_OBJ) $(BUILTIN_OBJ) $(LDFLAGS) $(vlc_LDFLAGS) $(builtins_LDFLAGS)
+vlc: Makefile.config Makefile.opts Makefile.dep Makefile $(VLC_OBJ) lib/libvlc.a $(BUILTIN_OBJ)
+ $(CC) $(CFLAGS) -o $@ $(VLC_OBJ) lib/libvlc.a $(LDFLAGS) $(vlc_LDFLAGS) $(BUILTIN_OBJ) $(builtins_LDFLAGS)
ifeq ($(SYS),beos)
xres -o $@ ./share/vlc_beos.rsrc
mimeset -f $@
endif
#
-# Plugins target
+# Main library target
#
-plugins: Makefile.modules Makefile.opts Makefile.dep Makefile $(PLUGIN_OBJ)
-$(PLUGIN_OBJ): FORCE
- @cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:plugins/%.so=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) -f ../../Makefile.modules $(@:plugins/%=../%)
+lib/libvlc.a: Makefile.opts Makefile.dep Makefile $(LIBVLC_OBJ)
+ rm -f $@
+ ar rc $@ $(LIBVLC_OBJ)
+ $(RANLIB) $@
#
-# Built-in modules target
+# DO NOT DISTRIBUTE SHARED VERSIONS OF LIBVLC UNTIL THE ABI IS STABLE
+# OR BURN IN HELL -- Sam
#
+#lib/libvlc.so: Makefile.opts Makefile.dep Makefile $(LIBVLC_OBJ)
+# $(CC) -shared $(LIBVLC_OBJ) $(LDFLAGS) $(vlc_LDFLAGS) -o $@
+
builtins: Makefile.modules Makefile.opts Makefile.dep Makefile $(BUILTIN_OBJ)
-$(BUILTIN_OBJ): FORCE
- @cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:plugins/%.a=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) -f ../../Makefile.modules $(@:plugins/%=../%)
+plugins: Makefile.modules Makefile.opts Makefile.dep Makefile $(PLUGIN_OBJ)
+
+modules/%.a modules/%.so: $(H_OBJ) FORCE
+ cd $(shell echo $@ | sed -e 's@\(.*\)/.*@\1@') && $(MAKE) -f $(shell echo $@ | sed -e 's@[^/]*/@../@g' -e 's@\(.*\)/.*@\1@')/Makefile.modules $(shell echo $@ | sed -e 's@.*/@@') PARENT=$(shell echo $@ | sed -e 's@[^/]*/@../@g' -e 's@\(.*\)/.*@\1@') MODULE_PATH=$(shell echo $@ | sed -e 'y@/@_@' -e 's@\..*@@')
+
+#
+# Mozilla plugin target
+#
+mozilla/libvlcplugin.so: FORCE
+ifeq ($(MOZILLA),1)
+ @cd mozilla && $(MAKE) builtins_LDFLAGS="$(builtins_LDFLAGS)"
+endif
#
# gettext target