# Objects and files
###############################################################################
-#
-# All possible plugin directories, needed for make clean
-#
-PLUGINS_DIR := a52 \
- a52_system \
- aa \
- ac3_adec \
- ac3_spdif \
- access \
- alsa \
- arts \
- avi \
- beos \
- chroma \
- directx \
- downmix \
- dsp \
- dummy \
- dvd \
- dvdread \
- esd \
- fb \
- ffmpeg \
- 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 \
- a52_system/a52_system \
- ac3_adec/ac3_adec \
- ac3_spdif/ac3_spdif \
- access/file \
- access/udp \
- access/http \
- alsa/alsa \
- arts/arts \
- avi/avi \
- 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 \
- ffmpeg/ffmpeg \
- filter/filter_clone \
- filter/filter_crop \
- filter/filter_deinterlace \
- filter/filter_distort \
- filter/filter_invert \
- filter/filter_transform \
- filter/filter_wall \
- filter/filter_clone \
- 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_audio \
- mpeg_system/mpeg_es \
- mpeg_system/mpeg_ps \
- mpeg_system/mpeg_ts \
- mpeg_system/mpeg_ts_dvbpsi \
- 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
#
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 mpeg_system
+INPUT := input input_ext-plugins input_ext-dec input_ext-intf input_dec input_programs input_clock mpeg_system 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 threads cpu configuration netutils iso_lang messages objects
+MISC := mtime modules threads cpu configuration netutils iso_lang messages objects extras
LIBVLC_OBJ := $(LIBVLC:%=src/%.o) \
$(INTERFACE:%=src/interface/%.o) \
# 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
plugins-clean:
for dir in $(PLUGINS_DIR) ; do \
- ( cd plugins/$${dir} \
+ ( cd modules/$${dir} \
&& $(MAKE) -f ../../Makefile.modules clean ) ; done
- rm -f plugins/*/*.o plugins/*/*.lo plugins/*/*.moc plugins/*/*.bak
+ rm -f modules/**/*.o modules/**/*.lo modules/**/*.moc modules/**/*.bak
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
#
# 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)
plugins-install:
mkdir -p $(DESTDIR)$(libdir)/vlc
ifneq (,$(PLUGINS))
- $(INSTALL) -m 644 $(PLUGINS:%=plugins/%.so) $(DESTDIR)$(libdir)/vlc
+ $(INSTALL) $(PLUGINS:%=modules/%.so) $(DESTDIR)$(libdir)/vlc
endif
plugins-uninstall:
rm -f $(DESTDIR)$(libdir)/vlc/*.so
+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
+
+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
find debian -mindepth 1 -maxdepth 1 -type d | \
while read i ; do rm -Rf tmp/vlc/$$i ; done
# Copy .c .h .in .cpp .m and .glade files
- find include src plugins -type f -name '*.[bcdhigmrst]*' | while read i ; \
+ 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
for file in AUTHORS COPYING ChangeLog README FAQ TODO ; \
do cp $$file tmp/$${file}.txt ; \
unix2dos tmp/$${file}.txt ; done
- mkdir tmp/plugins
- cp $(PLUGINS:%=plugins/%.so) tmp/plugins/
+ mkdir tmp/modules
+ cp $(PLUGINS:%=modules/%.so) tmp/modules/
# don't include these two
- #rm -f tmp/plugins/gtk.so tmp/plugins/sdl.so
+ #rm -f tmp/modules/gtk.so tmp/modules/sdl.so
ifneq (,$(PLUGINS))
- for i in $(PLUGINS) ; do if test $$i != intfwin ; then $(STRIP) tmp/plugins/$$i.so ; fi ; done
+ for i in $(PLUGINS) ; do if test $$i != intfwin ; then $(STRIP) tmp/modules/$$i.so ; fi ; done
endif
mkdir tmp/share
for file in default8x16.psf default8x9.psf ; \
# 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} | \
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)
#
-src/misc/modules_builtin.h: Makefile.opts Makefile
+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__"`basename $$i`"( module_t* );" >>$@; \
done
@echo "" >> $@ ;
endif
@echo " { \\" >> $@ ;
ifneq (,$(BUILTINS))
@for i in $(BUILTINS) ; do \
- echo " ALLOCATE_BUILTIN("$$i"); \\" >> $@ ; \
+ echo " ALLOCATE_BUILTIN("`basename $$i`"); \\" >> $@ ; \
done
endif
@echo " } while( 0 );" >> $@ ;
# Main application target
#
vlc: Makefile.config Makefile.opts Makefile.dep Makefile $(VLC_OBJ) lib/libvlc.a $(BUILTIN_OBJ)
- $(CC) $(CFLAGS) -o $@ $(VLC_OBJ) lib/libvlc.a $(BUILTIN_OBJ) $(LDFLAGS) $(vlc_LDFLAGS) $(builtins_LDFLAGS)
+ $(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
-# here are the rules for a dynamic link of libvlc:
-#vlc: Makefile.opts Makefile.dep Makefile $(VLC_OBJ) lib/libvlc.so $(BUILTIN_OBJ)
-# $(CC) $(CFLAGS) -o $@ $(VLC_OBJ) $(BUILTIN_OBJ) $(LDFLAGS) $(builtins_LDFLAGS) -L./lib -lvlc
-
#
# Main library target
#
ar rc $@ $(LIBVLC_OBJ)
$(RANLIB) $@
+#
+# 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 $@
-# chmod a-x $@
-#
-# Plugins target
-#
+builtins: Makefile.modules Makefile.opts Makefile.dep Makefile $(BUILTIN_OBJ)
plugins: Makefile.modules Makefile.opts Makefile.dep Makefile $(PLUGIN_OBJ)
-$(PLUGIN_OBJ): $(H_OBJ) FORCE
- @cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:plugins/%.so=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) -f ../../Makefile.modules $(@:plugins/%=../%)
+
+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@')
#
-# Built-in modules target
+# Mozilla plugin target
#
-builtins: Makefile.modules Makefile.opts Makefile.dep Makefile $(BUILTIN_OBJ)
-$(BUILTIN_OBJ): $(H_OBJ) FORCE
- @cd $(shell echo " "$(PLUGINS_TARGETS)" " | sed -e 's@.* \([^/]*/\)'$(@:plugins/%.a=%)' .*@plugins/\1@' -e 's@^ .*@@') && $(MAKE) -f ../../Makefile.modules $(@:plugins/%=../%)
+mozilla/libvlcplugin.so: FORCE
+ifeq ($(MOZILLA),1)
+ @cd mozilla && $(MAKE) builtins_LDFLAGS="$(builtins_LDFLAGS)"
+endif
#
# gettext target