-if BUILD_EXPERIMENTAL
-EXPERIMENTAL_LIBS=basecamerabinsrc
+if USE_WAYLAND
+WAYLAND_DIR=wayland
endif
-SUBDIRS = baseparse interfaces signalprocessor video $(EXPERIMENTAL_LIBS)
+if USE_OPENCV
+OPENCV_DIR=opencv
+endif
+
+if TV_PROFILE
+SUBDIRS = codecparsers mpegts sctp webrtc $(WAYLAND_DIR)
+else
+SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc codecparsers \
+ insertbin mpegts audio sctp player isoff webrtc $(WAYLAND_DIR) \
+ $(OPENCV_DIR)
+endif
+
+noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
+if TV_PROFILE
+DIST_SUBDIRS = codecparsers mpegts wayland sctp webrtc
+else
+DIST_SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc \
+ codecparsers insertbin mpegts wayland opencv audio player isoff sctp webrtc
+endif
+
+adaptivedemux: uridownloader
+
+if TV_PROFILE
+INDEPENDENT_SUBDIRS = \
+ codecparsers mpegts sctp webrtc $(WAYLAND_DIR)
+else
+INDEPENDENT_SUBDIRS = \
+ interfaces basecamerabinsrc codecparsers insertbin uridownloader \
+ mpegts player isoff sctp webrtc $(WAYLAND_DIR) $(OPENCV_DIR)
+endif
+
+.PHONY: independent-subdirs $(INDEPENDENT_SUBDIRS)
+
+independent-subdirs: $(INDEPENDENT_SUBDIRS)
-noinst_HEADERS = gst-i18n-plugin.h gettext.h
-DIST_SUBDIRS = baseparse interfaces signalprocessor video basecamerabinsrc
+$(INDEPENDENT_SUBDIRS):
+ $(MAKE) -C $@
+all-recursive: independent-subdirs