LIB_libvlc = src/libvlc.a
endif
-vlc_LDFLAGS = `$(VLC_CONFIG) --libs vlc builtin` $(vlc_WORKAROUNDLDFLAGS)
+vlc_LDFLAGS = `$(VLC_CONFIG) --libs vlc` $(vlc_WORKAROUNDLDFLAGS)
vlc_LDADD = $(LIB_libvlc) $(DATA_win32_rc) $(INCLUDED_LIBINTL)
vlc_CFLAGS = `$(VLC_CONFIG) --cflags vlc`
vlc$(EXEEXT): $(vlc_OBJECTS) $(DEPENDENCIES_vlc) stamp-builtin
@rm -f vlc$(EXEEXT)
- @case `$(VLC_CONFIG) --linkage vlc builtin` in \
+ @case `$(VLC_CONFIG) --linkage vlc` in \
c++) cmd="$(CXXLINK)" ;; \
objc) cmd="$(OBJCLINK)" ;; \
c|*) cmd="$(LINK)" ;; \
misc/version.c: FORCE
$(TOOLBOX) --update-version
+###############################################################################
+# Building builtin modules
+###############################################################################
+#
+# As long as we use builtins with a shared libvlc, we must build them before
+# we build libvlc. Maybe one day, libvlc will handle multiple modules per
+# shared object, which will make builtins fairly redumdant. Until then, we
+# need this workaround.
+
+builtins:
+if BUILD_SHARED
+ @if test "$(pic)" = "pic"; then ext="_pic.a"; else ext=".a"; fi ; \
+ for c in `$(VLC_CONFIG) --libs builtin`; do \
+ case $$c in \
+ ../modules/*.a) echo $$c ;; \
+ esac ; \
+ done | \
+ sed -e 's/^\(.*\)\/\([^\/]*\)\.a$$/cd \1 \&\& $(MAKE) \2/g' | \
+ while read cmd; do echo $$cmd$$ext; eval "($$cmd$$ext)" || exit $$? ; done
+endif
+
+.PHONY: builtins
+
###############################################################################
# Building libvlc
###############################################################################
endif
endif
-libvlc$(LIBEXT): $(OBJECTS_libvlc_so)
- @ldfl="`$(VLC_CONFIG) --libs plugin vlc $(pic)` $(INCLUDED_LIBINTL)" ; \
- case `$(VLC_CONFIG) --linkage vlc` in \
+libvlc$(LIBEXT): $(OBJECTS_libvlc_so) builtins
+ @ldfl="`$(VLC_CONFIG) --libs plugin vlc builtin $(pic)` $(INCLUDED_LIBINTL)" ; \
+ case `$(VLC_CONFIG) --linkage vlc builtin` in \
c++) ld="$(CXXLINK)" ;; \
objc) ld="$(OBJCLINK)" ;; \
c|*) ld="$(LINK)" ;; \