[rygel] build: Improve the build



commit f6a03475fa096b01a4b01747bba789e2b1d67360
Author: Murray Cumming <murrayc murrayc com>
Date:   Fri Dec 7 15:59:46 2012 +0100

    build: Improve the build
    
    * configure.ac: Mention dependencies as executable/library-specific
    PKG_CHECK_MODULES() calls, instead of having one PKG_CHECK_MODULE()
    call for each dependency and then listing those depdendencies'
    CFLAGS and LIBS individually in each Makefile.am.
    Also define the _VALAFLAGS in the same place, keeping things consistent.
    * common.am: Clean this up, using more obvious variable names.
    * various Makefile.am: Use the new structure.
    Do not use AM_CFLAGS, instead specifying the CFLAGS, LIBS and VALAFLAGS
    for each executable/library. As well as being cleaner, this would allow
    us to convert to a non-recursive autotools build sometime in the future.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=689960

 common.am                                       |  101 +++++++-----
 configure.ac                                    |  119 +++++++++++----
 doc/reference/librygel-core/Makefile.am         |    6 +-
 doc/reference/librygel-renderer-gst/Makefile.am |    9 +-
 doc/reference/librygel-renderer/Makefile.am     |    7 +-
 doc/reference/librygel-server/Makefile.am       |    7 +-
 examples/Makefile.am                            |   45 +++---
 examples/renderer-plugins/C/Makefile.am         |   21 +--
 examples/renderer-plugins/vala/Makefile.am      |   14 +-
 examples/server-plugins/C/Makefile.am           |   18 +--
 examples/server-plugins/vala/Makefile.am        |   13 +-
 src/librygel-core/Makefile.am                   |   28 ++--
 src/librygel-core/filelist.am                   |    5 -
 src/librygel-renderer-gst/Makefile.am           |   20 ++-
 src/librygel-renderer-gst/filelist.am           |    1 -
 src/librygel-renderer/Makefile.am               |   18 ++-
 src/librygel-renderer/filelist.am               |    2 -
 src/librygel-server/Makefile.am                 |   25 ++--
 src/librygel-server/filelist.am                 |    4 -
 src/media-engines/gstreamer/Makefile.am         |   25 ++--
 src/media-engines/simple/Makefile.am            |   16 ++-
 src/plugins/external/Makefile.am                |   17 ++-
 src/plugins/gst-launch/Makefile.am              |   21 ++-
 src/plugins/media-export/Makefile.am            |   33 ++---
 src/plugins/mediathek/Makefile.am               |   18 ++-
 src/plugins/mpris/Makefile.am                   |   18 ++-
 src/plugins/playbin/Makefile.am                 |   18 ++-
 src/plugins/tracker/Makefile.am                 |   21 ++-
 src/rygel/Makefile.am                           |   33 ++---
 src/ui/Makefile.am                              |   28 ++--
 tests/Makefile.am                               |  189 ++++++++++-------------
 31 files changed, 486 insertions(+), 414 deletions(-)
---
diff --git a/common.am b/common.am
index d2638f5..42332a4 100644
--- a/common.am
+++ b/common.am
@@ -23,71 +23,88 @@ endif
 smallicondir = $(shareddir)/icons/48x48
 bigicondir = $(shareddir)/icons/120x120
 
-rygeldir = $(top_srcdir)/src/rygel
 librygelcoredir = $(top_srcdir)/src/librygel-core
 librygelserverdir = $(top_srcdir)/src/librygel-server
 librygelrendererdir = $(top_srcdir)/src/librygel-renderer
 
 MAINTAINERCLEANFILES = Makefile.in
 
-AM_CFLAGS = \
-	$(LIBGUPNP_CFLAGS) \
-	$(LIBGUPNP_AV_CFLAGS) \
-	$(GEE_CFLAGS) \
-	$(UUID_CFLAGS) \
-	$(COVERAGE_CFLAGS) \
-	-I$(rygeldir) \
-	-I$(librygelcoredir) \
-	-I$(librygelserverdir) \
-	-I$(librygelrendererdir) \
-	-DDATA_DIR='"$(shareddir)"' -DSYS_CONFIG_DIR='"$(sysconfigdir)"'\
-	-DPLUGIN_DIR='"$(plugindir)"' -DDESKTOP_DIR='"$(desktopdir)"'\
-	-DPRESET_DIR='"$(presetdir)"' -DENGINE_DIR='"$(enginedir)"' \
+RYGEL_COMMON_DEFINES_CFLAGS = \
+	-DDATA_DIR='"$(shareddir)"' \
 	-include config.h
 
-RYGEL_BASE_LIBS = \
-	$(LIBGUPNP_LIBS) \
-	$(GEE_LIBS) \
-	$(COVERAGE_LIBS)
 
-RYGEL_COMMON_LIBS = \
-	$(RYGEL_BASE_LIBS) \
-	$(LIBGUPNP_AV_LIBS) \
+RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS = \
+	--vapidir=$(librygelcoredir) \
+	--pkg rygel-core-2.0 \
+	--pkg uuid
+
+RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS = \
+	$(RYGEL_COMMON_DEFINES_CFLAGS) \
+	-I$(top_builddir)/src/librygel-core \
+	-I$(top_srcdir)/src/librygel-core
+
+RYGEL_COMMON_LIBRYGEL_CORE_LIBS = \
 	$(top_builddir)/src/librygel-core/librygel-core-2.0.la
 
-RYGEL_COMMON_SERVER_LIBS = \
-	$(top_builddir)/src/librygel-server/librygel-server-2.0.la \
-	$(RYGEL_COMMON_LIBS)
 
-RYGEL_COMMON_RENDERER_LIBS = \
-	$(top_builddir)/src/librygel-renderer/librygel-renderer-2.0.la \
-	$(RYGEL_COMMON_LIBS)
+RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS = \
+	--vapidir=$(top_builddir)/src/librygel-renderer \
+	--pkg rygel-renderer-2.0 \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS)
 
-# Note: the -g needs to be at the end of VALAFLAGS to not break make dist
-RYGEL_COMMON_PLUGIN_VALAFLAGS = \
-	--pkg rygel-core-2.0 \
-	$(RYGEL_COMMON_VALAFLAGS)
+RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS) \
+	-I$(top_builddir)/src/librygel-renderer \
+	-I$(top_srcdir)/src/librygel-renderer
 
-RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS = \
-	--pkg rygel-server-2.0 \
+RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS = \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_LIBS) \
+	$(top_builddir)/src/librygel-renderer/librygel-renderer-2.0.la
+
+
+RYGEL_COMMON_LIBRYGEL_RENDERER_GST_VALAFLAGS = \
+	--vapidir=$(top_builddir)/src/librygel-renderer-gst \
+	--pkg rygel-renderer-gst-2.0 \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS)
+
+RYGEL_COMMON_LIBRYGEL_RENDERER_GST_CFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS) \
+	-I$(top_builddir)/src/librygel-renderer-gst \
+	-I$(top_srcdir)/src/librygel-renderer-gst
+
+RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS = \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS) \
+	$(top_builddir)/src/librygel-renderer-gst/librygel-renderer-gst-2.0.la
+
+
+RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS = \
 	--vapidir=$(top_builddir)/src/librygel-server \
-	$(RYGEL_COMMON_PLUGIN_VALAFLAGS)
+	--pkg rygel-server-2.0 \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS)
 
-RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS = \
-	--pkg rygel-renderer-2.0 \
-	--vapidir=$(top_builddir)/src/librygel-renderer \
-	$(RYGEL_COMMON_PLUGIN_VALAFLAGS)
+RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS) \
+	-I$(top_builddir)/src/librygel-server \
+	-I$(top_srcdir)/src/librygel-server
 
-RYGEL_COMMON_VALAFLAGS_PKG = --pkg gupnp-1.0 --pkg gupnp-av-1.0 --pkg gee-0.8
+RYGEL_COMMON_LIBRYGEL_SERVER_LIBS = \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_LIBS) \
+	$(top_builddir)/src/librygel-server/librygel-server-2.0.la
 
-RYGEL_COMMON_VALAFLAGS = \
-	--pkg rygel-build-config \
-	--vapidir=$(rygeldir) \
+RYGEL_COMMON_BUILD_CONFIG_VALAFLAGS = \
 	--vapidir=$(librygelcoredir) \
+	--pkg rygel-build-config
+
+# Note: This must always be the last one in *_VALAFLAGS,
+# because the -g needs to be at the end of VALAFLAGS to not break make dist.
+RYGEL_COMMON_VALAFLAGS = \
+	$(RYGEL_COMMON_BUILD_CONFIG_VALAFLAGS)
 	$(RYGEL_COMMON_VALAFLAGS_PKG) \
 	$(RYGEL_DEBUG_VALAFLAGS) \
 	$(COVERAGE_VALAFLAGS)
 
+
 RYGEL_PLUGIN_LINKER_FLAGS = -shared -fPIC -module -avoid-version
 
 vala-clean:
diff --git a/configure.ac b/configure.ac
index 87bda14..4c89434 100644
--- a/configure.ac
+++ b/configure.ac
@@ -53,17 +53,35 @@ LIBSQLITE3_REQUIRED=3.5
 dnl Additional requirements for tracker plugin
 TRACKER_SPARQL_REQUIRED_MIN=0.14.0
 
-PKG_CHECK_MODULES(LIBGLIB, glib-2.0 >= $GLIB_REQUIRED)
 VALAFLAGS="--target-glib=2.32 $VALAFLAGS"
 
-PKG_CHECK_MODULES(LIBGSSDP, gssdp-1.0 >= $GSSDP_REQUIRED)
-PKG_CHECK_MODULES(LIBGUPNP, gupnp-1.0 >= $GUPNP_REQUIRED)
-PKG_CHECK_MODULES(LIBGUPNP_AV, gupnp-av-1.0 >= $GUPNP_AV_REQUIRED)
-PKG_CHECK_MODULES(LIBGIO, gio-2.0 >= $GIO_REQUIRED)
-PKG_CHECK_MODULES(GEE, gee-0.8 >= $GEE_REQUIRED)
-PKG_CHECK_MODULES(UUID, uuid >= $UUID_REQUIRED)
-PKG_CHECK_MODULES(LIBSOUP, libsoup-2.4 >= $LIBSOUP_REQUIRED)
-PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED)
+RYGEL_BASE_MODULES='gupnp-1.0 >= $GUPNP_REQUIRED gee-0.8 >= $GEE_REQUIRED'
+PKG_CHECK_MODULES([LIBRYGEL_CORE_DEPS], [$RYGEL_BASE_MODULES uuid >= $UUID_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED gio-2.0 >= $GIO_REQUIRED])
+RYGEL_BASE_MODULES_VALAFLAGS='--pkg gupnp-1.0 --pkg gee-0.8'
+LIBRYGEL_CORE_DEPS_VALAFLAGS="$RYGEL_BASE_MODULES_VALAFLAGS --pkg gssdp-1.0 --pkg gio-2.0 --pkg gmodule-2.0"
+AC_SUBST([LIBRYGEL_CORE_DEPS_VALAFLAGS])
+
+RYGEL_COMMON_MODULES="$RYGEL_BASE_MODULES gupnp-av-1.0 >= $GUPNP_AV_REQUIRED"
+PKG_CHECK_MODULES([LIBRYGEL_SERVER_DEPS], [$RYGEL_COMMON_MODULES uuid >= $UUID_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED gio-2.0 >= $GIO_REQUIRED libsoup-2.4 >= $LIBSOUP_REQUIRED])
+RYGEL_COMMON_MODULES_VALAFLAGS="$RYGEL_BASE_MODULES_VALAFLAGS --pkg gupnp-av-1.0"
+LIBRYGEL_SERVER_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gssdp-1.0 --pkg gio-2.0 --pkg libsoup-2.4 --pkg gmodule-2.0"
+AC_SUBST([LIBRYGEL_SERVER_DEPS_VALAFLAGS])
+
+PKG_CHECK_MODULES([LIBRYGEL_RENDERER_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED libsoup-2.4 >= $LIBSOUP_REQUIRED])
+LIBRYGEL_RENDERER_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gio-2.0 --pkg libsoup-2.4"
+AC_SUBST([LIBRYGEL_RENDERER_DEPS_VALAFLAGS])
+
+PKG_CHECK_MODULES([RYGEL_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED])
+
+# Not all tests use all of these dependencies,
+# but having one set of dependencies keeps things simple.
+PKG_CHECK_MODULES([TEST_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED libsoup-2.4 >= $LIBSOUP_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED])
+TEST_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gio-2.0 --pkg gssdp-1.0 --pkg libsoup-2.4 --pkg libxml-2.0 --pkg gmodule-2.0"
+AC_SUBST([TEST_DEPS_VALAFLAGS])
+
+PKG_CHECK_MODULES([EXAMPLE_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED])
+
+
 
 dnl Media engine to use
 BUILT_ENGINES="librygel-media-engine-simple"
@@ -79,13 +97,16 @@ AC_ARG_WITH([media_engine],
 
 AS_IF([test "x$with_media_engine" = "xgstreamer"],
       [
-        PKG_CHECK_MODULES(LIBGUPNP_DLNA, gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED)
-        PKG_CHECK_MODULES(LIBGSTREAMER, gstreamer-1.0 >= $GSTREAMER_REQUIRED)
-        PKG_CHECK_MODULES(GSTREAMER_BASE, gstreamer-base-1.0 >= $GSTREAMER_REQUIRED)
-        PKG_CHECK_MODULES(GST_PBU, gstreamer-pbutils-1.0 >= $GSTPBU_REQUIRED)
-        PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0 >= $GSTREAMER_REQUIRED)
         enable_gstreamer="yes"
         BUILT_ENGINES="$BUILT_ENGINES;librygel-media-engine-gst"
+
+        PKG_CHECK_MODULES([RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS], [$RYGEL_COMMON_MODULES gstreamer-pbutils-1.0 >= $GSTPBU_REQUIRED gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED])
+        RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gstreamer-base-1.0 --pkg gstreamer-pbutils-1.0 --pkg gupnp-dlna-1.1"
+        AC_SUBST([RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS_VALAFLAGS])
+
+        PKG_CHECK_MODULES([LIBRYGEL_RENDERER_GST_DEPS], [$RYGEL_COMMON_MODULES gstreamer-1.0 >= $GSTREAMER_REQUIRED])
+        LIBRYGEL_RENDERER_GST_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gstreamer-1.0"
+        AC_SUBST([LIBRYGEL_RENDERER_GST_DEPS_VALAFLAGS])
       ],
       [enable_gstreamer="no"])
 AM_CONDITIONAL([HAVE_GSTREAMER],[test "x$enable_gstreamer" = "xyes"])
@@ -93,15 +114,47 @@ AC_SUBST([BUILT_ENGINES])
 
 dnl Add plugins
 RYGEL_ADD_PLUGIN([external],[MediaServer2 DBus consumer],[yes])
+AS_IF([test "x$enable_external_plugin" = "xyes"],
+  [
+    PKG_CHECK_MODULES([RYGEL_PLUGIN_EXTERNAL_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED])
+  ])
+
 RYGEL_ADD_PLUGIN([mpris],[MPRIS2 DBus consumer],[yes])
+AS_IF([test "x$enable_mpris_plugin" = "xyes"],
+  [
+    PKG_CHECK_MODULES([RYGEL_PLUGIN_MPRIS_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED])
+  ])
+
 RYGEL_ADD_PLUGIN([mediathek],[ZDF Mediathek],[no])
-RYGEL_ADD_PLUGIN([tracker],[Tracker],[yes])
+AS_IF([test "x$enable_mediathek_plugin" = "xyes"],
+  [
+    PKG_CHECK_MODULES([RYGEL_PLUGIN_MEDIATHEK_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED libsoup-2.4 >= $LIBSOUP_REQUIRED])
+  ])
 
 AS_IF([test "x$with_media_engine" = "xgstreamer"],
       [
         RYGEL_ADD_PLUGIN([playbin],[GStreamer playbin],[yes])
+        AS_IF([test "x$enable_playbin_plugin" = "xyes"],
+          [
+            PKG_CHECK_MODULES([RYGEL_PLUGIN_PLAYBIN_DEPS], [$RYGEL_COMMON_MODULES gstreamer-1.0 >= $GSTREAMER_TAG_REQUIRED])
+          ])
+
         RYGEL_ADD_PLUGIN([media-export],[MediaExport],[yes])
+        AS_IF([test "x$enable_media_export_plugin" = "xyes"],
+          [
+            PKG_CHECK_MODULES([RYGEL_PLUGIN_MEDIA_EXPORT_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED gstreamer-tag-1.0 >= $GSTREAMER_TAG_REQUIRED gstreamer-app-1.0 >= $GSTREAMER_TAG_REQUIRED sqlite3 >= $LIBSQLITE3_REQUIRED])
+            RYGEL_PLUGIN_MEDIA_EXPORT_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gupnp-dlna-1.1 --pkg gstreamer-tag-1.0 --pkg gstreamer-app-1.0 --pkg sqlite3"
+            AC_SUBST([RYGEL_PLUGIN_MEDIA_EXPORT_DEPS_VALAFLAGS])
+          ])
+
         RYGEL_ADD_PLUGIN([gst-launch],[GStreamer launchline],[no])
+        AS_IF([test "x$enable_gst_launch_plugin" = "xyes"],
+          [
+            PKG_CHECK_MODULES([RYGEL_PLUGIN_GST_LAUNCH_DEPS], [$RYGEL_COMMON_MODULES gstreamer-1.0 >= $GSTREAMER_REQUIRED])
+            RYGEL_PLUGIN_GST_LAUNCH_DEPS_VALAFLAGS="$RYGEL_COMMON_MODULES_VALAFLAGS --pkg gstreamer-1.0"
+            AC_SUBST([RYGEL_PLUGIN_GST_LAUNCH_DEPS_VALAFLAGS])
+          ])
+
         RYGEL_ADD_STAMP([src/media-engines/gstreamer/librygel_media_engine_gst_la_vala.stamp])
         RYGEL_ADD_STAMP([src/librygel-renderer-gst/librygel_renderer_gst_2_0_la_vala.stamp])
       ],
@@ -125,13 +178,6 @@ RYGEL_ADD_STAMP([src/rygel/rygel_vala.stamp])
 RYGEL_ADD_STAMP([src/ui/rygel_preferences_vala.stamp])
 RYGEL_ADD_STAMP([src/media-engines/simple/librygel_media_engine_simple_la_vala.stamp])
 
-RYGEL_CHECK_VALA([$VALA_REQUIRED],
-                 [gupnp-1.0
-                  gupnp-av-1.0
-                  gio-2.0
-                  gee-0.8
-                  posix])
-
 AS_IF([test "x$with_media_engine" = "xgstreamer"],
       [
         RYGEL_CHECK_PACKAGES([gupnp-dlna-1.1 gstreamer-1.0
@@ -176,14 +222,19 @@ AC_ARG_WITH( ui,
 HAVE_GTK=no
 if test x$try_ui = xyes ; then
     dnl check for gtk
-    PKG_CHECK_MODULES(GTK, gtk+-3.0 >= $GTK_REQUIRED,
+    PKG_CHECK_MODULES([RYGEL_UI_DEPS], [$RYGEL_BASE_MODULES gtk+-3.0 >= $GTK_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED gee-0.8 >= $GEE_REQUIRED],
       [
         RYGEL_CHECK_PACKAGES([gtk+-3.0], [HAVE_GTK=yes])
       ],
       [
-        AC_MSG_WARN([gtk $GTK_REQUIRED or greater not found.])
+        AC_MSG_WARN([UI dependencies not found.])
         AC_MSG_WARN([UI applications will not be built.])
       ])
+
+    RYGEL_UI_DEPS_VALAFLAGS="$RYGEL_BASE_MODULES_VALAFLAGS --pkg gtk+-3.0 --pkg gssdp-1.0 --pkg gee-0.8"
+    AC_SUBST([RYGEL_UI_DEPS_VALAFLAGS])
+
+    PKG_CHECK_MODULES([EXAMPLE_UI_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED gssdp-1.0 >= $GSSDP_REQUIRED gstreamer-video-1.0 >= $GSTREAMER_REQUIRED gtk+-3.0 >= $GTK_REQUIRED])
 else
     AC_MSG_NOTICE([UI applications disabled.])
 fi
@@ -216,9 +267,6 @@ AS_IF([test "x$enable_coverage" != "xno"],
 dnl Check additional requirements for MediaExport plugins
 if test "x$enable_media_export_plugin" = "xyes";
 then
-    PKG_CHECK_MODULES(LIBSQLITE3, sqlite3 >= $LIBSQLITE3_REQUIRED)
-    PKG_CHECK_MODULES(GSTREAMER_TAG, gstreamer-tag-1.0 >= $GSTREAMER_TAG_REQUIRED);
-    PKG_CHECK_MODULES(GSTREAMER_APP, gstreamer-app-1.0 >= $GSTREAMER_APP_REQUIRED);
     RYGEL_CHECK_PACKAGES([sqlite3 gstreamer-tag-1.0 gstreamer-app-1.0])
     AC_CHECK_HEADER([unistr.h],
                     AC_CHECK_LIB([unistring],
@@ -233,8 +281,12 @@ then
     fi
 fi
 
+
+RYGEL_ADD_PLUGIN([tracker],[Tracker],[yes])
 AS_IF([test "x$enable_tracker_plugin" = "xyes"],
   [
+    PKG_CHECK_MODULES([RYGEL_PLUGIN_TRACKER_DEPS], [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED])
+
     tracker_api_version="0.14"
     PKG_CHECK_MODULES(TRACKER_SPARQL,
                       tracker-sparql-0.14 >= $TRACKER_SPARQL_REQUIRED_MIN,
@@ -256,10 +308,19 @@ AS_IF([test "x$enable_tracker_plugin" = "xyes"],
           ])
     AS_IF([test "x$enable_vala" = "xyes"],
           [VALA_CHECK_PACKAGES([tracker-sparql-$tracker_api_version])])
-    TRACKER_API_VERSION=$tracker_api_version
-    AC_SUBST(TRACKER_API_VERSION)
+
+    RYGEL_PLUGIN_TRACKER_DEPS_VALAFLAGS="--pkg tracker-sparql-$tracker_api_version"
+    AC_SUBST([RYGEL_PLUGIN_TRACKER_DEPS_VALAFLAGS])
   ])
 
+# This should be called only after all RYGEL_CHECK_VALA() and RYGEL_ADD_PLUGIN() calls:
+RYGEL_CHECK_VALA([$VALA_REQUIRED],
+                 [gupnp-1.0
+                  gupnp-av-1.0
+                  gio-2.0
+                  gee-0.8
+                  posix])
+
 dnl Gettext
 GETTEXT_PACKAGE=rygel
 AC_SUBST(GETTEXT_PACKAGE)
diff --git a/doc/reference/librygel-core/Makefile.am b/doc/reference/librygel-core/Makefile.am
index eeda5d4..edcc725 100644
--- a/doc/reference/librygel-core/Makefile.am
+++ b/doc/reference/librygel-core/Makefile.am
@@ -11,8 +11,10 @@ VALA_SOURCE_FILES = $(LIBRYGEL_CORE_VAPI_SOURCE_FILES) \
 VALA_SOURCE_FILES_WITH_PATHS = $(addprefix $(top_srcdir)/src/librygel-core/, $(VALA_SOURCE_FILES))
 
 RYGEL_DOCBUILD_VALADOC_FLAGS = \
-	$(RYGEL_COMMON_VALAFLAGS_PKG) \
-	$(LIBRYGEL_CORE_VALAFLAGS_PKG)
+	$(LIBRYGEL_CORE_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_BUILD_CONFIG_VALAFLAGS) \
+	--pkg uuid
+
 
 RYGEL_DOCBUILD_MODULE = rygel-core
 RYGEL_DOCBUILD_EXTRA_GTKDOC_OPTIONS =
diff --git a/doc/reference/librygel-renderer-gst/Makefile.am b/doc/reference/librygel-renderer-gst/Makefile.am
index b353c47..1d13f7e 100644
--- a/doc/reference/librygel-renderer-gst/Makefile.am
+++ b/doc/reference/librygel-renderer-gst/Makefile.am
@@ -15,13 +15,8 @@ VALA_SOURCE_FILES_WITH_PATHS = $(addprefix $(top_srcdir)/src/librygel-renderer-g
 
 # TODO: The need for rygel-build-config here reminds us that we shouldn't need that in librygel-renderer-gst either.
 RYGEL_DOCBUILD_VALADOC_FLAGS = \
-		--vapidir $(top_srcdir)/src/librygel-core \
-		--pkg rygel-core-2.0 \
-		--vapidir $(top_srcdir)/src/librygel-renderer \
-		--pkg rygel-renderer-2.0 \
-	        --pkg gstreamer-pbutils-1.0 \
-		$(RYGEL_COMMON_VALAFLAGS_PKG) \
-		$(LIBRYGEL_RENDERER_GST_VALAFLAGS_PKG)
+		$(LIBRYGEL_RENDERER_GST_DEPS_VALAFLAGS) \
+		$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS)
 
 RYGEL_DOCBUILD_MODULE = rygel-renderer-gst
 RYGEL_DOCBUILD_EXTRA_GTKDOC_OPTIONS = -X -l -X $(top_builddir)/src/librygel-core/.libs/librygel-core-2.0.so \
diff --git a/doc/reference/librygel-renderer/Makefile.am b/doc/reference/librygel-renderer/Makefile.am
index 129b3b7..8aad550 100644
--- a/doc/reference/librygel-renderer/Makefile.am
+++ b/doc/reference/librygel-renderer/Makefile.am
@@ -12,10 +12,9 @@ VALA_SOURCE_FILES_WITH_PATHS = $(addprefix $(top_srcdir)/src/librygel-renderer/,
 
 # TODO: The need for rygel-build-config here reminds us that we shouldn't need that in librygel-renderer either.
 RYGEL_DOCBUILD_VALADOC_FLAGS = \
-	--vapidir $(top_srcdir)/src/librygel-core \
-	--pkg rygel-core-2.0 \
-	$(RYGEL_COMMON_VALAFLAGS_PKG) \
-	$(LIBRYGEL_RENDERER_VALAFLAGS_PKG)
+	$(LIBRYGEL_RENDERER_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS) \
+	$(RYGEL_COMMON_BUILD_CONFIG_VALAFLAGS)
 
 RYGEL_DOCBUILD_MODULE = rygel-renderer
 RYGEL_DOCBUILD_EXTRA_GTKDOC_OPTIONS = -X -l -X $(top_builddir)/src/librygel-core/.libs/librygel-core-2.0.so
diff --git a/doc/reference/librygel-server/Makefile.am b/doc/reference/librygel-server/Makefile.am
index 229c116..436deff 100644
--- a/doc/reference/librygel-server/Makefile.am
+++ b/doc/reference/librygel-server/Makefile.am
@@ -15,10 +15,9 @@ VALA_SOURCE_FILES_WITH_PATHS = $(addprefix $(top_srcdir)/src/librygel-server/, $
 
 # TODO: The need for rygel-build-config here reminds us that we shouldn't need that in librygel-server either.
 RYGEL_DOCBUILD_VALADOC_FLAGS = \
-		--vapidir $(top_srcdir)/src/librygel-core \
-		--pkg rygel-core-2.0 \
-		$(RYGEL_COMMON_VALAFLAGS_PKG) \
-		$(LIBRYGEL_SERVER_VALAFLAGS_PKG)
+		$(LIBRYGEL_SERVER_DEPS_VALAFLAGS) \
+		$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS) \
+		$(RYGEL_COMMON_BUILD_CONFIG_VALAFLAGS)
 
 
 RYGEL_DOCBUILD_MODULE = rygel-server
diff --git a/examples/Makefile.am b/examples/Makefile.am
index ac39753..1182364 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -10,46 +10,41 @@ SUBDIRS = $(EXAMPLE_PLUGINS)
 
 include ../common.am
 
-AM_CFLAGS += \
-	-I$(top_builddir)/src/librygel-server \
-	-I$(top_srcdir)/src/librygel-server \
-	-I$(top_builddir)/src/rygel \
-	-I$(top_srcdir)/src/rygel
 
+#TODO: Remove the src/rygel from here?
 noinst_PROGRAMS = standalone-server
 standalone_server_SOURCES = standalone-server.c
+standalone_server_CFLAGS = \
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS)
 standalone_server_LDADD = \
-	$(top_builddir)/src/librygel-server/librygel-server-2.0.la \
-	$(LIBGIO_LIBS) \
-	$(RYGEL_COMMON_LIBS)
+	$(EXAMPLE_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
 
 if HAVE_GSTREAMER
-AM_CFLAGS += \
-	-I$(top_builddir)/src/librygel-renderer-gst \
-	-I$(top_srcdir)/src/librygel-renderer-gst \
-	-I$(top_builddir)/src/librygel-renderer \
-	-I$(top_srcdir)/src/librygel-renderer \
-	$(LIBGSTREAMER_CFLAGS)
 
 noinst_PROGRAMS += standalone-renderer-gst
 standalone_renderer_gst_SOURCES = standalone-renderer-gst.c
+standalone_renderer_gst_CFLAGS = \
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_CFLAGS)
 standalone_renderer_gst_LDADD = \
-	$(top_builddir)/src/librygel-renderer/librygel-renderer-2.0.la \
-	$(top_builddir)/src/librygel-renderer-gst/librygel-renderer-gst-2.0.la \
-	$(LIBGSTREAMER_LIBS) \
-	$(RYGEL_COMMON_LIBS)
+	$(EXAMPLE_DEPS_LIBS) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS)
 
 if BUILD_UI
 noinst_PROGRAMS += fullscreen-renderer
 fullscreen_renderer_SOURCES = fullscreen-renderer.c
-fullscreen_renderer_CFLAGS = $(AM_CFLAGS) $(GTK_CFLAGS)
+fullscreen_renderer_CFLAGS = \
+	$(EXAMPLE_UI_DEPS_CFLAGS) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_CFLAGS)
 fullscreen_renderer_LDADD = \
-	$(top_builddir)/src/librygel-renderer/librygel-renderer-2.0.la \
-	$(top_builddir)/src/librygel-renderer-gst/librygel-renderer-gst-2.0.la \
-	$(LIBGSTREAMER_LIBS) \
-	$(RYGEL_COMMON_LIBS) \
-	$(GTK_LIBS) \
-	$(GST_VIDEO_LIBS)
+	$(EXAMPLE_UI_DEPS_LIBS) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS)
 endif
 endif
 
diff --git a/examples/renderer-plugins/C/Makefile.am b/examples/renderer-plugins/C/Makefile.am
index ae34783..be7685c 100644
--- a/examples/renderer-plugins/C/Makefile.am
+++ b/examples/renderer-plugins/C/Makefile.am
@@ -2,31 +2,22 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-example-renderer-plugin-c.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"ExampleRendererPluginC"'
-
 librygel_example_renderer_plugin_c_la_SOURCES = \
 	example-renderer-plugin.h \
 	example-renderer-plugin.h \
 	example-player.h \
 	example-player.c
 
-# You would ususally just use pkg-config:
-librygel_core_includes = -I$(top_builddir)/src/librygel-core $(if $(srcdir:.=),-I$(top_srcdir)/src/librygel-core)
-librygel_renderer_includes = -I$(top_builddir)/src/librygel-renderer $(if $(srcdir:.=),-I$(top_srcdir)/src/librygel-renderer)
-
 # TODO: Do we need all these?
 librygel_example_renderer_plugin_c_la_CFLAGS = \
-	$(LIBGSTREAMER_CFLAGS) \
-	$(LIBGUPNP_CFLAGS) \
-	$(LIBGUPNP_AV_CFLAGS) \
-	$(GEE_CFLAGS) \
-	$(librygel_core_includes) \
-	$(librygel_renderer_includes)
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS) \
+	-DG_LOG_DOMAIN='"ExampleRendererPluginC"'
 
 librygel_example_renderer_plugin_c_la_LIBADD = \
-	$(LIBGSTREAMER_LIBS) \
-	$(RYGEL_COMMON_RENDERER_LIBS)
+	$(EXAMPLE_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS)
 	
 librygel_example_renderer_plugin_c_la_LDFLAGS = \
-  $(RYGEL_PLUGIN_LINKER_FLAGS)
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
 
diff --git a/examples/renderer-plugins/vala/Makefile.am b/examples/renderer-plugins/vala/Makefile.am
index 1a2a77c..2aa2b8d 100644
--- a/examples/renderer-plugins/vala/Makefile.am
+++ b/examples/renderer-plugins/vala/Makefile.am
@@ -2,17 +2,21 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-example-renderer-plugin-vala.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"ExampleRendererPluginVala"'
-
 librygel_example_renderer_plugin_vala_la_SOURCES = \
 	example-renderer-plugin-vala.vala \
 	example-player-vala.vala
 
 librygel_example_renderer_plugin_vala_la_VALAFLAGS = \
-	$(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 
+librygel_example_renderer_plugin_vala_la_CFLAGS = \
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS) \
+	-DG_LOG_DOMAIN='"ExampleRendererPluginVala"'
 librygel_example_renderer_plugin_vala_la_LIBADD = \
-	$(RYGEL_COMMON_RENDERER_LIBS)
+	$(EXAMPLE_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS)
 	
 librygel_example_renderer_plugin_vala_la_LDFLAGS = \
-  $(RYGEL_PLUGIN_LINKER_FLAGS)
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/examples/server-plugins/C/Makefile.am b/examples/server-plugins/C/Makefile.am
index 2424f55..f9230f7 100644
--- a/examples/server-plugins/C/Makefile.am
+++ b/examples/server-plugins/C/Makefile.am
@@ -2,28 +2,20 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-example-server-plugin-c.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"ExampleServerPluginC"'
-
 librygel_example_server_plugin_c_la_SOURCES = \
 	example-server-plugin.h \
 	example-server-plugin.c \
 	example-root-container.h \
 	example-root-container.c
 
-# You would ususally just use pkg-config:
-librygel_core_includes = -I$(top_builddir)/src/librygel-core $(if $(srcdir:.=),-I$(top_srcdir)/src/librygel-core)
-librygel_server_includes = -I$(top_builddir)/src/librygel-server $(if $(srcdir:.=),-I$(top_srcdir)/src/librygel-server)
-
 librygel_example_server_plugin_c_la_CFLAGS = \
-	$(LIBGSTREAMER_CFLAGS) \
-	$(LIBGUPNP_CFLAGS) \
-	$(LIBGUPNP_AV_CFLAGS) \
-	$(GEE_CFLAGS) \
-	$(librygel_core_includes) \
-	$(librygel_server_includes)
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"ExampleServerPluginC"'
 
 librygel_example_server_plugin_c_la_LIBADD = \
-	$(LIBGSTREAMER_LIBS) \
+	$(EXAMPLE_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS) \
 	$(RYGEL_COMMON_SERVER_LIBS)
 	
 librygel_example_server_plugin_c_la_LDFLAGS = \
diff --git a/examples/server-plugins/vala/Makefile.am b/examples/server-plugins/vala/Makefile.am
index 2001ac4..7c82b3c 100644
--- a/examples/server-plugins/vala/Makefile.am
+++ b/examples/server-plugins/vala/Makefile.am
@@ -2,8 +2,6 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-example-server-plugin-vala.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"ExampleServerPluginVala"'
-
 # Note that we must have these Vala prefixes on the
 # class names (and therefore on the file names)
 # to avoid conflicts with other plugins.
@@ -12,10 +10,17 @@ librygel_example_server_plugin_vala_la_SOURCES = \
 	example-root-container-vala.vala
 
 librygel_example_server_plugin_vala_la_VALAFLAGS = \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+
+librygel_example_server_plugin_vala_la_CFLAGS = \
+	$(EXAMPLE_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"ExampleServerPluginVala"'
 
 librygel_example_server_plugin_vala_la_LIBADD = \
-	$(RYGEL_COMMON_SERVER_LIBS)
+	$(EXAMPLE_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
 	
 librygel_example_server_plugin_vala_la_LDFLAGS = \
   $(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/librygel-core/Makefile.am b/src/librygel-core/Makefile.am
index 14f815a..1c839b3 100644
--- a/src/librygel-core/Makefile.am
+++ b/src/librygel-core/Makefile.am
@@ -1,12 +1,6 @@
 include ../../common.am
 include $(srcdir)/filelist.am
 
-AM_CFLAGS += \
-	$(LIBGSTREAMER_CFLAGS) \
-	-DSMALL_ICON_DIR='"$(smallicondir)"' \
-	-DBIG_ICON_DIR='"$(bigicondir)"' -include config.h \
-	-DLOCALEDIR=\""$(datadir)/locale"\" -DG_LOG_DOMAIN='"Rygel"'
-
 librygelincdir = $(includedir)/rygel-2.0
 
 librygelinc_HEADERS = rygel-core.h
@@ -19,17 +13,27 @@ librygel_core_2_0_la_SOURCES = \
 
 librygel_core_2_0_la_VALAFLAGS = \
 	-H rygel-core.h -C --library=rygel-core-2.0 \
-	$(LIBRYGEL_CORE_VALAFLAGS_PKG) \
+	--vapidir=$(srcdir) \
+	--pkg uuid \
+	$(LIBRYGEL_CORE_DEPS_VALAFLAGS) \
 	$(RYGEL_COMMON_VALAFLAGS)
 
+librygel_core_2_0_la_CFLAGS = \
+	$(RYGEL_COMMON_DEFINES_CFLAGS) \
+	$(LIBRYGEL_CORE_DEPS_CFLAGS) \
+	-DPLUGIN_DIR='"$(plugindir)"' \
+	-DSMALL_ICON_DIR='"$(smallicondir)"' \
+	-DBIG_ICON_DIR='"$(bigicondir)"' \
+	-include config.h \
+	-DG_LOG_DOMAIN='"Rygel"'
+
 librygel_core_2_0_la_LIBADD = \
-	$(RYGEL_BASE_LIBS) \
-	$(UUID_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGIO_LIBS)
+	$(LIBRYGEL_CORE_DEPS_LIBS)
 
 RYGEL_CORE_VERSION=1:0:0
-librygel_core_2_0_la_LDFLAGS = -version-info $(RYGEL_CORE_VERSION)
+librygel_core_2_0_la_LDFLAGS = \
+	$(RYGEL_DATA_DIR_DEFINES) \
+	-version-info $(RYGEL_CORE_VERSION)
 
 BUILT_SOURCES = \
 	rygel-core-2.0.vapi \
diff --git a/src/librygel-core/filelist.am b/src/librygel-core/filelist.am
index 28abde1..a9800fd 100644
--- a/src/librygel-core/filelist.am
+++ b/src/librygel-core/filelist.am
@@ -19,8 +19,3 @@ LIBRYGEL_CORE_VAPI_SOURCE_FILES = \
 LIBRYGEL_CORE_NONVAPI_SOURCE_FILES = \
 	rygel-icon-info.vala \
 	rygel-xml-utils.vala
-
-LIBRYGEL_CORE_VALAFLAGS_PKG = \
-	--pkg gio-2.0 \
-	--pkg gmodule-2.0 \
-	--pkg uuid
diff --git a/src/librygel-renderer-gst/Makefile.am b/src/librygel-renderer-gst/Makefile.am
index 139877a..bc7e84a 100644
--- a/src/librygel-renderer-gst/Makefile.am
+++ b/src/librygel-renderer-gst/Makefile.am
@@ -12,19 +12,21 @@ librygel_renderer_gst_2_0_la_SOURCES = \
 	$(LIBRYGEL_RENDERER_GST_VAPI_SOURCE_FILES) \
 	$(LIBRYGEL_RENDERER_GST_NONVAPI_SOURCE_FILES)
 
-AM_CFLAGS += -DG_LOG_DOMAIN=\"Rygel\" \
-	$(LIBGSTREAMER_CFLAGS)
-
 librygel_renderer_gst_2_0_la_VALAFLAGS = \
 	-H rygel-renderer-gst.h --library=rygel-renderer-gst-2.0 \
 	--enable-experimental \
-	$(LIBRYGEL_RENDERER_GST_VALAFLAGS_PKG) \
-	$(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
+	$(LIBRYGEL_RENDERER_GST_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_renderer_gst_2_0_la_CFLAGS = \
+	$(LIBRYGEL_RENDERER_GST_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS)
 librygel_renderer_gst_2_0_la_LIBADD = \
-	$(RYGEL_COMMON_RENDERER_LIBS) \
-	$(LIBGSTREAMER_LIBS) \
-	$(LIBGUPNP_AV_LIBS)
-librygel_renderer_gst_2_0_la_LDFLAGS = -version-info $(LIBRYGEL_RENDERER_GST_VERSION)
+	$(LIBRYGEL_RENDERER_GST_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS)
+librygel_renderer_gst_2_0_la_LDFLAGS = \
+	-version-info $(LIBRYGEL_RENDERER_GST_VERSION) \
+	-DG_LOG_DOMAIN=\"Rygel\"
 
 rygel-renderer-gst.h rygel-renderer-gst-2.0.vapi: \
 	librygel_renderer_gst_2_0_la_vala.stamp
diff --git a/src/librygel-renderer-gst/filelist.am b/src/librygel-renderer-gst/filelist.am
index 351a37b..7951d2b 100644
--- a/src/librygel-renderer-gst/filelist.am
+++ b/src/librygel-renderer-gst/filelist.am
@@ -4,4 +4,3 @@ LIBRYGEL_RENDERER_GST_VAPI_SOURCE_FILES = \
 
 LIBRYGEL_RENDERER_GST_NONVAPI_SOURCE_FILES = 
 
-LIBRYGEL_RENDERER_GST_VALAFLAGS_PKG = --pkg gstreamer-1.0
diff --git a/src/librygel-renderer/Makefile.am b/src/librygel-renderer/Makefile.am
index c35ae6a..438e371 100644
--- a/src/librygel-renderer/Makefile.am
+++ b/src/librygel-renderer/Makefile.am
@@ -12,14 +12,20 @@ librygel_renderer_2_0_la_SOURCES = \
 	$(LIBRYGEL_RENDERER_VAPI_SOURCE_FILES) \
 	$(LIBRYGEL_RENDERER_NONVAPI_SOURCE_FILES)
 
-AM_CFLAGS += -DG_LOG_DOMAIN=\"Rygel\"
-
 librygel_renderer_2_0_la_VALAFLAGS = \
 	-H rygel-renderer.h --library=rygel-renderer-2.0 \
-	$(LIBRYGEL_RENDERER_VALAFLAGS_PKG) \
-	$(RYGEL_COMMON_PLUGIN_VALAFLAGS)
-librygel_renderer_2_0_la_LIBADD = $(RYGEL_COMMON_LIBS) $(LIBGIO_LIBS) $(LIBSOUP_LIBS)
-librygel_renderer_2_0_la_LDFLAGS = -version-info $(LIBRYGEL_RENDERER_VERSION)
+	$(LIBRYGEL_RENDERER_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_renderer_2_0_la_CFLAGS = \
+	$(LIBRYGEL_RENDERER_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS) \
+	-DG_LOG_DOMAIN=\"Rygel\"
+librygel_renderer_2_0_la_LIBADD = \
+	$(LIBRYGEL_RENDERER_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_LIBS)
+librygel_renderer_2_0_la_LDFLAGS = \
+	-version-info $(LIBRYGEL_RENDERER_VERSION)
 
 vapidir = $(VAPIDIR)
 vapi_DATA = rygel-renderer-2.0.vapi rygel-renderer-2.0.deps
diff --git a/src/librygel-renderer/filelist.am b/src/librygel-renderer/filelist.am
index b1f7888..3f5cb08 100644
--- a/src/librygel-renderer/filelist.am
+++ b/src/librygel-renderer/filelist.am
@@ -11,5 +11,3 @@ LIBRYGEL_RENDERER_NONVAPI_SOURCE_FILES = \
 	rygel-time-utils.vala \
 	rygel-changelog.vala \
 	rygel-volume.vala
-
-LIBRYGEL_RENDERER_VALAFLAGS_PKG =
diff --git a/src/librygel-server/Makefile.am b/src/librygel-server/Makefile.am
index ebb09ed..c284ed7 100644
--- a/src/librygel-server/Makefile.am
+++ b/src/librygel-server/Makefile.am
@@ -8,25 +8,28 @@ lib_LTLIBRARIES = librygel-server-2.0.la
 
 LIBRYGEL_SERVER_VERSION=1:0:0
 
-AM_CFLAGS += -DG_LOG_DOMAIN=\"Rygel\"
-
 librygel_server_2_0_la_SOURCES = \
 	$(LIBRYGEL_SERVER_VAPI_SOURCE_FILES) \
 	$(LIBRYGEL_SERVER_NONVAPI_SOURCE_FILES)
 
 librygel_server_2_0_la_VALAFLAGS = \
 	-H rygel-server.h --library=rygel-server-2.0 \
-	$(LIBRYGEL_SERVER_VALAFLAGS_PKG) \
-	$(RYGEL_COMMON_PLUGIN_VALAFLAGS)
-
+	$(LIBRYGEL_SERVER_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+
+librygel_server_2_0_la_CFLAGS = \
+	$(LIBRYGEL_SERVER_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS) \
+	-DENGINE_DIR='"$(enginedir)"' \
+	-DG_LOG_DOMAIN=\"Rygel\"
 librygel_server_2_0_la_LIBADD = \
-	$(RYGEL_COMMON_LIBS) \
-	$(UUID_LIBS) \
-	$(LIBGIO_LIBS) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGSSDP_LIBS)
+	$(LIBRYGEL_SERVER_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_LIBS)
 
-librygel_server_2_0_la_LDFLAGS = -version-info $(LIBRYGEL_SERVER_VERSION)
+librygel_server_2_0_la_LDFLAGS = \
+	$(RYGEL_DATA_DIR_DEFINES) \
+	-version-info $(LIBRYGEL_SERVER_VERSION)
 
 vapidir = $(VAPIDIR)
 vapi_DATA = rygel-server-2.0.vapi rygel-server-2.0.deps
diff --git a/src/librygel-server/filelist.am b/src/librygel-server/filelist.am
index a6e9960..e961efd 100644
--- a/src/librygel-server/filelist.am
+++ b/src/librygel-server/filelist.am
@@ -75,7 +75,3 @@ LIBRYGEL_SERVER_NONVAPI_SOURCE_FILES = \
 	rygel-xbmc-hacks.vala \
 	rygel-xbox-hacks.vala \
 	rygel-data-sink.vala
-
-LIBRYGEL_SERVER_VALAFLAGS_PKG = \
-	--pkg gmodule-2.0 \
-	--pkg uuid
diff --git a/src/media-engines/gstreamer/Makefile.am b/src/media-engines/gstreamer/Makefile.am
index 255b309..09e1754 100644
--- a/src/media-engines/gstreamer/Makefile.am
+++ b/src/media-engines/gstreamer/Makefile.am
@@ -2,9 +2,6 @@ include $(top_srcdir)/common.am
 
 engine_LTLIBRARIES = librygel-media-engine-gst.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"MediaEngine-GStreamer"' \
-	$(GST_PBU_CFLAGS) \
-	$(LIBGUPNP_DLNA_CFLAGS)
 
 librygel_media_engine_gst_la_SOURCES = \
 	rygel-aac-transcoder.vala \
@@ -23,22 +20,28 @@ librygel_media_engine_gst_la_SOURCES = \
 
 librygel_media_engine_gst_la_VALAFLAGS = \
 	--enable-experimental \
-	--pkg gstreamer-base-1.0 \
-	--pkg gstreamer-pbutils-1.0 \
-	--pkg gupnp-dlna-1.1 \
+	$(RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS_VALAFLAGS) \
 	--library rygel-media-engine-gst \
 	--use-header \
 	--header=rygel-media-engine-gst.h \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 
 rygel-media-engine-gst.h rygel-media-engine-gstreamer.vapi: librygel_media_engine_gst_la_vala.stamp
 
+librygel_media_engine_gst_la_CFLAGS = \
+	$(RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"MediaEngine-GStreamer"' \
+	-DPRESET_DIR='"$(presetdir)"'
+
 librygel_media_engine_gst_la_LIBADD = \
-	$(GST_PBU_LIBS) \
-	$(LIBGUPNP_DLNA_LIBS) \
-	$(RYGEL_COMMON_SERVER_LIBS)
+	$(RYGEL_MEDIA_ENGINE_GSTREAMER_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+
+librygel_media_engine_gst_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
 
-librygel_media_engine_gst_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
 
 EXTRA_DIST = \
 	rygel-media-engine-gst.vapi \
diff --git a/src/media-engines/simple/Makefile.am b/src/media-engines/simple/Makefile.am
index 039a892..78779b7 100644
--- a/src/media-engines/simple/Makefile.am
+++ b/src/media-engines/simple/Makefile.am
@@ -2,14 +2,20 @@ include $(top_srcdir)/common.am
 
 engine_LTLIBRARIES = librygel-media-engine-simple.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"MediaEngine-Simple"'
-
 librygel_media_engine_simple_la_SOURCES = \
 	rygel-simple-media-engine.vala \
 	rygel-simple-data-source.vala
 
 librygel_media_engine_simple_la_VALAFLAGS = \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 
-librygel_media_engine_simple_la_LIBADD = $(RYGEL_COMMON_SERVER_LIBS)
-librygel_media_engine_simple_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+librygel_media_engine_simple_la_CFLAGS = \
+	$(LIBRYGEL_SERVER_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"MediaEngine-Simple"'
+librygel_media_engine_simple_la_LIBADD = \
+	$(LIBRYGEL_SERVER_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+librygel_media_engine_simple_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/external/Makefile.am b/src/plugins/external/Makefile.am
index e9391b8..7cfe122 100644
--- a/src/plugins/external/Makefile.am
+++ b/src/plugins/external/Makefile.am
@@ -2,8 +2,6 @@ include ../../../common.am
 
 plugin_LTLIBRARIES = librygel-external.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"External"'
-
 librygel_external_la_SOURCES = \
 	rygel-external-container.vala \
 	rygel-external-dummy-container.vala \
@@ -16,6 +14,15 @@ librygel_external_la_SOURCES = \
 	rygel-external-icon-factory.vala \
 	rygel-external-variant-util.vala
 
-librygel_external_la_VALAFLAGS = $(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
-librygel_external_la_LIBADD = $(RYGEL_COMMON_SERVER_LIBS) $(LIBGIO_LIBS)
-librygel_external_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+librygel_external_la_VALAFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_external_la_CFLAGS = \
+	$(RYGEL_PLUGIN_EXTERNAL_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"External"'
+librygel_external_la_LIBADD = \
+	$(RYGEL_PLUGIN_EXTERNAL_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+librygel_external_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/gst-launch/Makefile.am b/src/plugins/gst-launch/Makefile.am
index bdc2619..779e87c 100644
--- a/src/plugins/gst-launch/Makefile.am
+++ b/src/plugins/gst-launch/Makefile.am
@@ -2,10 +2,6 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-gst-launch.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"GstLaunch"' \
-	-I$(top_srcdir)/src/media-engines/gstreamer \
-	$(LIBGSTREAMER_CFLAGS)
-
 librygel_gst_launch_la_SOURCES = \
 	rygel-gst-launch-plugin.vala \
 	rygel-gst-launch-root-container.vala \
@@ -16,9 +12,16 @@ librygel_gst_launch_la_SOURCES = \
 
 librygel_gst_launch_la_VALAFLAGS = \
 	--enable-experimental \
-	--pkg gstreamer-1.0 \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_PLUGIN_GST_LAUNCH_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_gst_launch_la_CFLAGS = \
+	$(RYGEL_PLUGIN_GST_LAUNCH_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-I$(top_srcdir)/src/media-engines/gstreamer \
+	-DG_LOG_DOMAIN='"GstLaunch"'
 librygel_gst_launch_la_LIBADD = \
-	$(LIBGSTREAMER_LIBS) \
-	$(RYGEL_COMMON_SERVER_LIBS)
-librygel_gst_launch_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+	$(RYGEL_PLUGIN_GST_LAUNCH_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+librygel_gst_launch_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/media-export/Makefile.am b/src/plugins/media-export/Makefile.am
index 24bb55d..41584d7 100644
--- a/src/plugins/media-export/Makefile.am
+++ b/src/plugins/media-export/Makefile.am
@@ -2,13 +2,6 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-media-export.la
 
-AM_CFLAGS += \
-	$(LIBGUPNP_DLNA_CFLAGS) \
-	$(LIBSQLITE3_CFLAGS) \
-	$(GSTREAMER_TAG_CFLAGS) \
-	$(GSTREAMER_APP_CFLAGS) \
-	-DG_LOG_DOMAIN='"MediaExport"'
-
 librygel_media_export_la_SOURCES = \
 	rygel-media-export-plugin.vala \
 	rygel-media-export-database.vala \
@@ -45,21 +38,19 @@ librygel_media_export_la_SOURCES = \
 
 librygel_media_export_la_VALAFLAGS = \
 	--enable-experimental \
-	--pkg gupnp-dlna-1.1 \
-	--pkg gstreamer-tag-1.0 \
-	--pkg gstreamer-app-1.0 \
-	--pkg sqlite3 \
-	--pkg uuid \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_PLUGIN_MEDIA_EXPORT_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 
+librygel_media_export_la_CFLAGS = \
+	$(RYGEL_PLUGIN_MEDIA_EXPORT_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"MediaExport"'
 librygel_media_export_la_LIBADD = \
-	$(RYGEL_COMMON_SERVER_LIBS) \
-	$(LIBGIO_LIBS) \
-	$(LIBGUPNP_DLNA_LIBS) \
-	$(GSTREAMER_TAG_LIBS) \
-	$(GSTREAMER_APP_LIBS) \
-	$(LIBSQLITE3_LIBS) \
-	$(COLLATION_LIBS)
+	$(RYGEL_PLUGIN_MEDIA_EXPORT_DEPS_LIBS) \
+	$(COLLATION_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
 
-librygel_media_export_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+librygel_media_export_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
 
diff --git a/src/plugins/mediathek/Makefile.am b/src/plugins/mediathek/Makefile.am
index 7603fe8..10f3730 100644
--- a/src/plugins/mediathek/Makefile.am
+++ b/src/plugins/mediathek/Makefile.am
@@ -2,8 +2,6 @@ include ../../../common.am
 
 plugin_LTLIBRARIES = librygel-mediathek.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"Mediathek"'
-
 librygel_mediathek_la_SOURCES = \
 	rygel-mediathek-asx-playlist-parser.vala \
 	rygel-mediathek-mov-playlist-parser.vala \
@@ -14,6 +12,16 @@ librygel_mediathek_la_SOURCES = \
 	rygel-mediathek-rss-container.vala \
 	rygel-mediathek-soup-utils.vala
 
-librygel_mediathek_la_VALAFLAGS = $(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
-librygel_mediathek_la_LIBADD = $(RYGEL_COMMON_SERVER_LIBS) $(LIBGIO_LIBS) $(LIBSOUP_LIBS)
-librygel_mediathek_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+librygel_mediathek_la_VALAFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_mediathek_la_CFLAGS = \
+	$(RYGEL_PLUGIN_MEDIATHEK_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	$(RYGEL_COMMON_DEFINES_CFLAGS) \
+	-DG_LOG_DOMAIN='"Mediathek"'
+librygel_mediathek_la_LIBADD = \
+	$(RYGEL_PLUGIN_MEDIATHEK_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+librygel_mediathek_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/mpris/Makefile.am b/src/plugins/mpris/Makefile.am
index 40e182c..d2bb3a7 100644
--- a/src/plugins/mpris/Makefile.am
+++ b/src/plugins/mpris/Makefile.am
@@ -2,15 +2,21 @@ include ../../../common.am
 
 plugin_LTLIBRARIES = librygel-mpris.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"MPRIS"' \
-	$(LIBGSTREAMER_CFLAGS)
-
 librygel_mpris_la_SOURCES = \
 	rygel-mpris-player.vala \
 	rygel-mpris-plugin.vala \
 	rygel-mpris-plugin-factory.vala \
 	rygel-mpris-interfaces.vala
 
-librygel_mpris_la_VALAFLAGS = $(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
-librygel_mpris_la_LIBADD = $(RYGEL_COMMON_RENDERER_LIBS) $(LIBGIO_LIBS)
-librygel_mpris_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+librygel_mpris_la_VALAFLAGS = \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_mpris_la_CFLAGS = \
+	$(RYGEL_PLUGIN_MPRIS_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_CFLAGS) \
+	-DG_LOG_DOMAIN='"MPRIS"'
+librygel_mpris_la_LIBADD = \
+	$(RYGEL_PLUGIN_MPRIS_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_LIBS)
+librygel_mpris_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/playbin/Makefile.am b/src/plugins/playbin/Makefile.am
index 8fbd26e..e17365c 100644
--- a/src/plugins/playbin/Makefile.am
+++ b/src/plugins/playbin/Makefile.am
@@ -2,16 +2,18 @@ include ../../../common.am
 
 plugin_LTLIBRARIES = librygel-playbin.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"Playbin"' \
-	-I$(top_srcdir)/src/librygel-renderer-gst \
-	$(LIBGSTREAMER_CFLAGS)
-
 librygel_playbin_la_SOURCES = rygel-playbin-module.vala rygel-playbin-plugin.vala
 librygel_playbin_la_VALAFLAGS = \
 	--pkg rygel-renderer-gst-2.0 \
 	--vapidir $(top_srcdir)/src/librygel-renderer-gst \
-	$(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_playbin_la_CFLAGS = \
+	$(RYGEL_PLUGIN_PLAYBIN_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_CFLAGS) \
+	-DG_LOG_DOMAIN='"Playbin"'
 librygel_playbin_la_LIBADD = \
-	$(top_builddir)/src/librygel-renderer-gst/librygel-renderer-gst-2.0.la \
-	$(RYGEL_COMMON_RENDERER_LIBS)
-librygel_playbin_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+	$(RYGEL_PLUGIN_PLAYBIN_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS)
+librygel_playbin_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/plugins/tracker/Makefile.am b/src/plugins/tracker/Makefile.am
index abbcf09..3dfcf99 100644
--- a/src/plugins/tracker/Makefile.am
+++ b/src/plugins/tracker/Makefile.am
@@ -2,9 +2,6 @@ include $(top_srcdir)/common.am
 
 plugin_LTLIBRARIES = librygel-tracker.la
 
-AM_CFLAGS += -DG_LOG_DOMAIN='"Rygel-Tracker"' \
-    $(TRACKER_SPARQL_CFLAGS)
-
 librygel_tracker_la_SOURCES = \
 	rygel-tracker-root-container.vala \
 	rygel-tracker-category-container.vala \
@@ -41,9 +38,17 @@ librygel_tracker_la_SOURCES = \
 
 librygel_tracker_la_VALAFLAGS = \
 	--pkg posix \
-	--pkg tracker-sparql- TRACKER_API_VERSION@ \
-	$(RYGEL_COMMON_SERVER_PLUGIN_VALAFLAGS)
+	$(RYGEL_PLUGIN_TRACKER_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+librygel_tracker_la_CFLAGS = \
+	$(RYGEL_PLUGIN_TRACKER_DEPS_CFLAGS) \
+	$(TRACKER_SPARQL_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-DG_LOG_DOMAIN='"Rygel-Tracker"'
 librygel_tracker_la_LIBADD = \
-	$(RYGEL_COMMON_SERVER_LIBS) \
-	$(TRACKER_SPARQL_LIBS)
-librygel_tracker_la_LDFLAGS = $(RYGEL_PLUGIN_LINKER_FLAGS)
+	$(RYGEL_PLUGIN_TRACKER_DEPS_LIBS) \
+	$(TRACKER_SPARQL_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+librygel_tracker_la_LDFLAGS = \
+	$(RYGEL_PLUGIN_LINKER_FLAGS)
diff --git a/src/rygel/Makefile.am b/src/rygel/Makefile.am
index 5b69365..ab46c60 100644
--- a/src/rygel/Makefile.am
+++ b/src/rygel/Makefile.am
@@ -1,14 +1,5 @@
 include ../../common.am
 
-AM_CFLAGS += \
-	$(LIBGUPNP_DLNA_CFLAGS) \
-	$(LIBSOUP_CFLAGS) \
-	$(LIBGSTREAMER_CFLAGS) \
-	$(GST_PBU_CFLAGS) \
-	-DSMALL_ICON_DIR='"$(smallicondir)"' \
-	-DBIG_ICON_DIR='"$(bigicondir)"' -include config.h \
-	-DLOCALEDIR=\""$(datadir)/locale"\" -DG_LOG_DOMAIN='"Rygel"'
-
 bin_PROGRAMS = rygel
 
 rygel_SOURCES = \
@@ -16,23 +7,25 @@ rygel_SOURCES = \
 	rygel-main.vala \
 	rygel-cmdline-config.vala \
 	rygel-environment-config.vala \
-	rygel-user-config.vala \
-	$(top_builddir)/src/librygel-core/rygel-core-2.0.vapi \
-	$(top_builddir)/src/librygel-server/rygel-server-2.0.vapi
+	rygel-user-config.vala
 
 rygel_VALAFLAGS = \
 	--pkg posix \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS) \
 	$(RYGEL_COMMON_VALAFLAGS)
 
+rygel_CFLAGS = \
+	$(RYGEL_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS) \
+	-include config.h \
+	-DLOCALEDIR=\""$(datadir)/locale"\" \
+	-DG_LOG_DOMAIN='"Rygel"' \
+	-DSYS_CONFIG_DIR='"$(sysconfigdir)"'
 rygel_LDADD = \
-	$(top_builddir)/src/librygel-core/librygel-core-2.0.la \
-	$(top_builddir)/src/librygel-server/librygel-server-2.0.la \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGIO_LIBS) \
-	$(LIBGUPNP_AV_LIBS) \
-	$(RYGEL_BASE_LIBS)
-
-rygel_LDFLAGS = -export-dynamic
+	$(RYGEL_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
+rygel_LDFLAGS = \
+	-export-dynamic
 
 vapidir = $(VAPIDIR)
 vapi_DATA = $(VAPI_FILES) $(DEPS_FILES)
diff --git a/src/ui/Makefile.am b/src/ui/Makefile.am
index 3704aa1..c050311 100644
--- a/src/ui/Makefile.am
+++ b/src/ui/Makefile.am
@@ -1,10 +1,5 @@
 include ../../common.am
 
-AM_CFLAGS += \
-	$(GTK_CFLAGS) \
-	-DSMALL_ICON_DIR='"$(icondir)"' \
-	-DLOCALEDIR=\""$(datadir)/locale"\" -DG_LOG_DOMAIN='"Rygel"'
-
 bin_PROGRAMS = rygel-preferences
 
 rygel_preferences_SOURCES =  \
@@ -16,12 +11,21 @@ rygel_preferences_SOURCES =  \
 	rygel-user-config.vala
 
 rygel_preferences_VALAFLAGS = \
-	--pkg gio-2.0 \
-	--pkg gtk+-3.0 $(RYGEL_COMMON_PLUGIN_VALAFLAGS)
+	$(RYGEL_UI_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 
+rygel_preferences_CFLAGS = \
+	$(RYGEL_UI_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_CFLAGS) \
+	-DSMALL_ICON_DIR='"$(icondir)"' \
+	-DLOCALEDIR=\""$(datadir)/locale"\" \
+	-DG_LOG_DOMAIN='"Rygel"' \
+	-DDESKTOP_DIR='"$(desktopdir)"' \
+	-DSYS_CONFIG_DIR='"$(sysconfigdir)"'
 rygel_preferences_LDADD = \
-	$(RYGEL_COMMON_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(GTK_LIBS)
-rygel_preferences_LDFLAGS = -export-dynamic
-
+	$(RYGEL_UI_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_CORE_LIBS)
+rygel_preferences_LDFLAGS = \
+	$(RYGEL_DATA_DIR_DEFINES) \
+	-export-dynamic
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c692be4..6f4fc54 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -20,76 +20,71 @@ EXTRA_DIST = $(srcdir)/data/test-data.dat
 # Define the most commonly-used flags,
 # to avoid repetition:
 test_valaflags = \
-	--pkg gee-0.8
-	$(RYGEL_DEBUG_VALAFLAGS) \
-	$(COVERAGE_VALAFLAGS)
+	$(TEST_DEPS_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
 test_cflags = \
-	$(GEE_CFLAGS)
+	$(TEST_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_DEFINES_CFLAGS)
 test_libs = \
-	$(LIBGIO_LIBS) \
-	$(GEE_LIBS) \
+	$(TEST_DEPS_LIBS) \
 	$(COVERAGE_LIBS)
 
 # This is for tests that link to librygel-server,
 # instead of compiling its source files directly:
 test_server_valaflags = \
 	$(test_valaflags) \
-	--vapidir $(top_builddir)/src/librygel-core \
-	--pkg rygel-core-2.0 \
-	--vapidir $(top_builddir)/src/librygel-server \
-	--pkg rygel-server-2.0
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_VALAFLAGS)
 test_server_cflags = \
 	$(test_cflags) \
-	-I$(top_builddir)/src/librygel-server \
-	-I$(top_srcdir)/src/librygel-server \
-	-I$(top_builddir)/src/librygel-core \
-	-I$(top_srcdir)/src/librygel-core \
-	$(LIBGUPNP_AV_CFLAGS)
+	$(LIBRYGEL_SERVER_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_CFLAGS)
 test_server_libs = \
 	$(test_libs) \
-	$(top_builddir)/src/librygel-server/librygel-server-2.0.la \
-	$(top_builddir)/src/librygel-core/librygel-core-2.0.la \
-	$(LIBGUPNP_AV_LIBS)
+	$(LIBRYGEL_SERVER_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_SERVER_LIBS)
 	
 # Note that the non-test sources here are symlinked from their
 # various source directories.
 # TODO: Mention their relative paths instead, to make this clearer?
 rygel_http_item_uri_test_SOURCES = rygel-http-item-uri-test.vala \
                                    rygel-http-item-uri.vala
-rygel_http_item_uri_test_VALAFLAGS = $(test_valaflags) \
-	--pkg gupnp-1.0
-rygel_http_item_uri_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGUPNP_LIBS)
+rygel_http_item_uri_test_VALAFLAGS = \
+	$(test_valaflags)
+rygel_http_item_uri_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_item_uri_test_LDADD = \
+	$(test_libs)
 
 rygel_http_response_test_SOURCES = rygel-http-response-test.vala \
 				   rygel-http-response.vala \
 				   rygel-state-machine_http-response.vala \
 				   rygel-data-source_http-response.vala \
 				   rygel-data-sink_http-response.vala
-rygel_http_response_test_VALAFLAGS = $(test_valaflags) \
-	--pkg gupnp-1.0
-rygel_http_response_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGUPNP_LIBS)
+rygel_http_response_test_VALAFLAGS = \
+	$(test_valaflags)
+rygel_http_response_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_response_test_LDADD = \
+	$(test_libs)
 
 rygel_http_byte_seek_test_SOURCES = rygel-http-byte-seek-test.vala \
 				    rygel-http-byte-seek.vala \
 				    rygel-http-seek.vala
-rygel_http_byte_seek_test_VALAFLAGS = $(test_valaflags) \
-	--pkg libsoup-2.4
-rygel_http_byte_seek_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS)
+rygel_http_byte_seek_test_VALAFLAGS = \
+	$(test_valaflags)
+rygel_http_byte_seek_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_byte_seek_test_LDADD = $(test_libs)
 
 rygel_http_time_seek_test_SOURCES = rygel-http-time-seek-test.vala \
 				    rygel-http-time-seek.vala \
 				    rygel-http-seek_time-seek.vala
-rygel_http_time_seek_test_VALAFLAGS = $(test_valaflags) \
-	--pkg libsoup-2.4
-rygel_http_time_seek_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS)
+rygel_http_time_seek_test_VALAFLAGS = \
+	$(test_valaflags)
+rygel_http_time_seek_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_time_seek_test_LDADD = \
+	$(test_libs)
 
 rygel_http_get_test_SOURCES = rygel-http-get-test.vala \
 			      rygel-http-get.vala \
@@ -99,12 +94,12 @@ rygel_http_get_test_SOURCES = rygel-http-get-test.vala \
 			      rygel-http-time-seek_http-get.vala \
 			      rygel-http-byte-seek_http-get.vala \
 			      rygel-http-seek_http-get.vala
-rygel_http_get_test_VALAFLAGS = $(test_valaflags) \
-	--pkg gupnp-av-1.0
-rygel_http_get_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGUPNP_LIBS)
+rygel_http_get_test_VALAFLAGS = \
+	$(test_valaflags)
+rygel_http_get_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_get_test_LDADD = \
+	$(test_libs)
 
 rygel_http_post_test_SOURCES = rygel-http-post-test.vala \
 			       rygel-http-post.vala \
@@ -113,10 +108,10 @@ rygel_http_post_test_SOURCES = rygel-http-post-test.vala \
 			       rygel-state-machine_http-post.vala
 rygel_http_post_test_VALAFLAGS = $(test_valaflags) \
 	--pkg gupnp-av-1.0
-rygel_http_post_test_LDADD = $(test_libs) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGSSDP_LIBS) \
-	$(LIBGUPNP_LIBS)
+rygel_http_post_test_CFLAGS =  \
+	$(test_cflags)
+rygel_http_post_test_LDADD = \
+	$(test_libs)
 
 rygel_album_art_spec_test_SOURCES = rygel-album-art-spec-test.vala \
 			       rygel-media-art-store.vala \
@@ -124,8 +119,10 @@ rygel_album_art_spec_test_SOURCES = rygel-album-art-spec-test.vala \
 				   rygel-icon-info.vala
 rygel_album_art_spec_test_VALAFLAGS = $(test_valaflags) \
 	--pkg gupnp-av-1.0
-rygel_album_art_spec_test_LDADD = $(test_libs) \
-	$(LIBGUPNP_AV_LIBS)
+rygel_album_art_spec_test_CFLAGS =  \
+	$(test_cflags)
+rygel_album_art_spec_test_LDADD = \
+	$(test_libs)
 
 rygel_searchable_container_test_SOURCES = \
 	rygel-searchable-container.vala \
@@ -133,8 +130,10 @@ rygel_searchable_container_test_SOURCES = \
 rygel_searchable_container_test_VALAFLAGS = \
 	$(test_valaflags) \
 	--pkg gupnp-av-1.0
-rygel_searchable_container_test_LDADD = $(test_libs) \
-	$(LIBGUPNP_AV_LIBS)
+rygel_searchable_container_test_CFLAGS =  \
+	$(test_cflags)
+rygel_searchable_container_test_LDADD = \
+	$(test_libs)
 
 rygel_item_creator_test_SOURCES = rygel-item-creator-test.vala \
 				  rygel-item-creator.vala \
@@ -146,34 +145,29 @@ rygel_item_creator_test_SOURCES = rygel-item-creator-test.vala \
 				  rygel-search-expression.vala \
 				  rygel-media-engine.vala \
 				  rygel-serializer_item-creator.vala
-rygel_item_creator_test_VALAFLAGS = $(test_valaflags) \
-	--pkg gupnp-av-1.0 \
-	--vapidir $(top_srcdir)/src/librygel-core \
+rygel_item_creator_test_VALAFLAGS = \
+	$(test_valaflags) \
 	--pkg uuid
-rygel_item_creator_test_LDADD = $(test_libs) \
-	$(LIBXML_LIBS) \
-	$(LIBSOUP_LIBS) \
-	$(LIBGUPNP_AV_LIBS)
+rygel_item_creator_test_CFLAGS =  \
+	$(test_cflags)
+rygel_item_creator_test_LDADD = \
+	$(test_libs)
 
 rygel_user_config_test_SOURCES = rygel-configuration.vala \
 				 rygel-user-config.vala \
 				 rygel-user-config-test.vala
 rygel_user_config_test_VALAFLAGS = \
-	$(test_valaflags) \
-	--vapidir $(top_builddir)/src/librygel-core \
-	--pkg rygel-build-config \
-	--pkg gio-2.0
-rygel_user_config_test_LDADD = \
-	$(test_libs)
+	$(test_valaflags)
 rygel_user_config_test_CFLAGS =  \
 	$(test_cflags) \
 	-DSYS_CONFIG_DIR='"$(sysconfigdir)"'
+rygel_user_config_test_LDADD = \
+	$(test_libs)
 
 rygel_regression_SOURCES = \
 	rygel-regression.vala
 rygel_regression_VALAFLAGS = \
-	$(test_server_valaflags) \
-	--pkg gio-2.0
+	$(test_server_valaflags)
 rygel_regression_CFLAGS = \
 	$(test_server_cflags)
 rygel_regression_LDADD = \
@@ -182,61 +176,48 @@ rygel_regression_LDADD = \
 rygel_media_engine_test_SOURCES = \
 	rygel-media-engine-test.vala
 rygel_media_engine_test_VALAFLAGS = \
-	$(test_server_valaflags)\
-        --pkg gmodule-2.0
+	$(test_server_valaflags)
 rygel_media_engine_test_CFLAGS = \
+	$(test_server_cflags) \
 	-DTEST_DATA_FOLDER='"$(abs_srcdir)/data"' \
 	-DTEST_ENGINE_PATH='"$(abs_top_builddir)/src/media-engines"' \
-	-DBUILT_ENGINES='"@BUILT_ENGINES@"' \
-	$(test_server_cflags)
+	-DBUILT_ENGINES='"@BUILT_ENGINES@"'
 rygel_media_engine_test_LDADD = \
-	$(test_server_libs) \
-	$(LIBSOUP_LIBS)
+	$(test_server_libs)
 
 if HAVE_GSTREAMER
 check_PROGRAMS += \
 	rygel-playbin-renderer-test \
 	rygel-environment-test
 
-librygel_renderer_gst_valaflags = \
-	$(LIBRYGEL_RENDERER_GST_VALAFLAGS_PKG) \
-	$(RYGEL_COMMON_PLUGIN_VALAFLAGS)
+test_librygel_renderer_gst_valaflags = \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_VALAFLAGS) \
+	$(RYGEL_COMMON_VALAFLAGS)
+test_librygel_renderer_gst_cflags = \
+	$(test_cflags) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_CFLAGS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_CFLAGS)
+test_librygel_renderer_gst_libs = \
+	$(test_libs) \
+	$(LIBRYGEL_RENDERER_GST_DEPS_LIBS) \
+	$(RYGEL_COMMON_LIBRYGEL_RENDERER_GST_LIBS)
 	
 rygel_playbin_renderer_test_SOURCES = rygel-playbin-renderer-test.vala
 rygel_playbin_renderer_test_VALAFLAGS = \
-	--pkg rygel-renderer-gst-2.0 \
-	--vapidir $(top_srcdir)/src/librygel-renderer-gst \
-	$(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
+	$(test_librygel_renderer_gst_valaflags)
 rygel_playbin_renderer_test_CFLAGS = \
-	$(GEE_CFLAGS) \
-	$(LIBGSTREAMER_CFLAGS) \
-	$(LIBGUPNP_CFLAGS) \
-	-I$(top_builddir)/src/librygel-renderer \
-	-I$(top_srcdir)/src/librygel-renderer \
-	-I$(top_builddir)/src/librygel-renderer-gst \
-	-I$(top_srcdir)/src/librygel-renderer-gst \
-	-I$(top_builddir)/src/librygel-core \
-	-I$(top_srcdir)/src/librygel-core
+	$(test_librygel_renderer_gst_cflags)
 rygel_playbin_renderer_test_LDADD = \
-	$(test_libs) \
-	$(LIBGSTREAMER_LIBS) \
-	$(LIBGUPNP_LIBS) \
-	$(top_builddir)/src/librygel-renderer/librygel-renderer-2.0.la \
-	$(top_builddir)/src/librygel-renderer-gst/librygel-renderer-gst-2.0.la \
-	$(top_builddir)/src/librygel-core/librygel-core-2.0.la
+	$(test_librygel_renderer_gst_libs)
 
 rygel_environment_test_SOURCES = rygel-environment-test.vala
-rygel_environment_test_CFLAGS =  \
-	$(GEE_CFLAGS) \
-	$(LIBGSTREAMER_CFLAGS)
-rygel_environment_test_LDADD = \
-	$(test_libs) \
-	$(LIBGSTREAMER_LIBS) \
-	$(LIBGUPNP_LIBS)
 rygel_environment_test_VALAFLAGS = \
-	--pkg rygel-renderer-gst-2.0 \
-	--vapidir $(top_srcdir)/src/librygel-renderer-gst \
-	$(RYGEL_COMMON_RENDERER_PLUGIN_VALAFLAGS)
+	$(test_librygel_renderer_gst_valaflags)
+rygel_environment_test_CFLAGS = \
+	$(test_librygel_renderer_gst_cflags)
+rygel_environment_test_LDADD = \
+	$(test_librygel_renderer_gst_libs)
+
 endif
 
 if ALWAYS_TEST



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]