[f-spot] Clean-up build



commit 60fd12e3f1f8d772edb010cb62b0061a2e843afa
Author: Mike Gemünde <mike gemuende de>
Date:   Wed Jun 2 19:05:47 2010 +0200

    Clean-up build
    
    This commit switches most of the build to use the banshee stuff in build/.
    Only the libraries are just left out for now.
    The file src/PixbufUtils.cs is changed, because the build environment
    checks for consistency of DllImports. This check failed for this file
    because in input was there in a commented part of the code.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=620379

 Makefile.addins                                    |   46 --
 Makefile.am                                        |    8 +-
 Makefile.include                                   |   29 +-
 build/build.environment.mk                         |  167 ++++-
 build/build.rules.mk                               |   24 +-
 build/m4/f-spot/mono-addins.m4                     |   12 +
 configure.ac                                       |   22 +-
 extensions/Editors/BWEditor/Makefile.am            |   26 +-
 extensions/Editors/BlackoutEditor/Makefile.am      |   24 +-
 extensions/Editors/FlipEditor/Makefile.am          |   24 +-
 extensions/Editors/PixelateEditor/Makefile.am      |   24 +-
 extensions/Editors/ResizeEditor/Makefile.am        |   24 +-
 extensions/Exporters/CDExport/Makefile.am          |   27 +-
 extensions/Exporters/FacebookExport/Makefile.am    |  123 +--
 extensions/Exporters/FlickrExport/Makefile.am      |   64 +--
 extensions/Exporters/FolderExport/Makefile.am      |   72 +--
 extensions/Exporters/GalleryExport/Makefile.am     |   67 +--
 extensions/Exporters/PicasaWebExport/Makefile.am   |   64 +--
 .../PicasaWebExport/google-sharp/Makefile.am       |   76 +--
 extensions/Exporters/SmugMugExport/Makefile.am     |   64 +--
 .../Exporters/SmugMugExport/SmugMugNet/Makefile.am |   36 +-
 extensions/Exporters/TabbloExport/Makefile.am      |   83 +--
 .../Exporters/TabbloExport/Tabblo/Makefile.am      |   59 +-
 extensions/Exporters/ZipExport/Makefile.am         |   62 +--
 extensions/Services/DBusService/Makefile.am        |   24 +-
 extensions/Tools/ChangePhotoPath/Makefile.am       |   35 +-
 extensions/Tools/DevelopInUFraw/Makefile.am        |   25 +-
 extensions/Tools/HashJob/Makefile.am               |   25 +-
 extensions/Tools/LiveWebGallery/Makefile.am        |   54 +-
 extensions/Tools/MergeDb/Makefile.am               |   33 +-
 extensions/Tools/RawPlusJpeg/Makefile.am           |   24 +-
 extensions/Tools/RetroactiveRoll/Makefile.am       |   24 +-
 extensions/Tools/ScreensaverConfig/Makefile.am     |   26 +-
 extensions/Transitions/CoverTransition/Makefile.am |   23 +-
 lib/semweb/Makefile.am                             |   84 +--
 src/Bling/Makefile.am                              |   17 +
 .../FSpot.Cms.dll.config.in}                       |    0
 src/Cms/Makefile.am                                |   28 +
 src/{ => Core}/FSpot.Core.dll.config.in            |    0
 src/Core/Makefile.am                               |   33 +
 src/JobScheduler/Makefile.am                       |   16 +
 src/Makefile.am                                    |  824 ++++++--------------
 src/PixbufUtils.cs                                 |    9 -
 src/Platform/Makefile.am                           |   22 +
 src/Query/Makefile.am                              |   19 +
 src/{ => Utils}/FSpot.Utils.dll.config             |    0
 src/Utils/Makefile.am                              |   25 +
 src/{ => Widgets}/FSpot.Widgets.dll.config.in      |    0
 src/Widgets/Makefile.am                            |   34 +
 tests/src/Makefile.am                              |   62 +--
 50 files changed, 1021 insertions(+), 1672 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 56f8a61..1550316 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,12 +22,12 @@ CLEANFILES =			\
 	intltool-merge
 
 EXTRA_DIST =			\
-	MAINTAINERS		\
+	COPYING				\
+	MAINTAINERS			\
 	intltool-extract.in	\
 	intltool-merge.in	\
 	intltool-update.in	\
 	Makefile.include	\
-	Makefile.addins		\
 	gnome-doc-utils.make	\
 	icon-theme-installer	\
 	$(schema_in_files)
@@ -44,8 +44,8 @@ install-data-local:
 	-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
 
 run:
-	@pushd src/; \
-	./f-spot --uninstalled --debug; \
+	@pushd bin/; \
+	../src/f-spot --uninstalled --debug; \
 	popd;
 
 
diff --git a/Makefile.include b/Makefile.include
index 00b0c29..fda2227 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -1,30 +1,15 @@
-## Makefile.include
-## FSpot wide helper
-
-## Directories
-
-DIR_DOCS = $(top_builddir)/docs
-DIR_EXTENSIONS = $(top_builddir)/extensions
-DIR_ICONS = $(top_builddir)/icons
-DIR_JPEGTRAN = $(top_builddir)/lib/libjpegtran
-DIR_LIBFSPOT = $(top_builddir)/lib/libfspot
-DIR_SEMWEB = $(top_builddir)/lib/semweb
-DIR_SRC = $(top_builddir)/src
+# Makefile.include
+# FSpot wide helper
+
+# Directories
+
 DIR_GIOSHARP = $(top_builddir)/lib/gio-sharp/gio
-DIR_GTKSHARPBEANS = $(top_builddir)/lib/gtk-sharp-beans
-DIR_UNIQUESHARP = $(top_builddir)/lib/unique-sharp/unique
-DIR_BIN = $(top_builddir)/bin
+
 
 ## Links
 
-LINK_KEYRING = $(KEYRINGSHARP_LIBS)
-LINK_SEMWEB = -r:$(DIR_SEMWEB)/SemWeb.dll
 LINK_GIOSHARP = -r:$(DIR_GIOSHARP)/gio-sharp.dll
-LINK_GTKSHARPBEANS = -r:$(DIR_GTKSHARPBEANS)/gtk-sharp-beans.dll
-LINK_UNIQUESHARP = -r:$(DIR_UNIQUESHARP)/unique-sharp.dll
-LINK_HYENA = -r:$(DIR_BIN)/Hyena.dll
-LINK_HYENA_GUI = -r:$(DIR_BIN)/Hyena.Gui.dll
-LINK_HYENA_DATA_SQLITE = -r:$(DIR_BIN)/Hyena.Data.Sqlite.dll
+
 
 
 ## Build
diff --git a/build/build.environment.mk b/build/build.environment.mk
index d550ec4..404aaec 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -4,12 +4,177 @@ MONO_ADDINS_PATH =
 
 # Install Paths
 DEFAULT_INSTALL_DIR = $(pkglibdir)
+BACKENDS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Backends
 EXTENSIONS_INSTALL_DIR = $(DEFAULT_INSTALL_DIR)/Extensions
 
+
+## Directories
+DIR_DOCS = $(top_builddir)/docs
+DIR_EXTENSIONS = $(top_builddir)/extensions
+DIR_ICONS = $(top_builddir)/icons
+DIR_JPEGTRAN = $(top_builddir)/lib/libjpegtran
+DIR_LIBFSPOT = $(top_builddir)/lib/libfspot
+DIR_SEMWEB = $(top_builddir)/lib/semweb
+DIR_SRC = $(top_builddir)/src
+DIR_GIOSHARP = $(top_builddir)/lib/gio-sharp/gio
+DIR_GTKSHARPBEANS = $(top_builddir)/lib/gtk-sharp-beans
+DIR_UNIQUESHARP = $(top_builddir)/lib/unique-sharp/unique
+DIR_BIN = $(top_builddir)/bin
+
+
 # External libraries to link against, generated from configure
 LINK_SYSTEM = -r:System
+LINK_SYSTEMDATA = -r:System.Data
+LINK_SYSTEM_WEB = -r:System.Web
+LINK_MONO_POSIX = -r:Mono.Posix
+LINK_MONO_CAIRO = -r:Mono.Cairo
+LINK_MONO_SIMD = -r:Mono.Simd
+LINK_MONODATA = -r:Mono.Data
+LINK_MONO_DATA_SQLITECLIENT = -r:Mono.Data.SqliteClient
+LINK_ICSHARP_ZIP_LIB = -r:ICSharpCode.SharpZipLib
+
+LINK_KEYRING = $(KEYRINGSHARP_LIBS)
+LINK_GLIB = $(GLIBSHARP_LIBS)
+LINK_GTK = $(GTKSHARP_LIBS)
+LINK_GNOME = $(GNOME_SHARP_LIBS)
+LINK_GCONF = $(GCONF_SHARP_LIBS)
+LINK_GLADE = -pkg:glade-sharp-2.0
+LINK_FLICKRNET = -pkg:flickrnet
+LINK_DBUS = $(NDESK_DBUS_LIBS) $(NDESK_DBUS_GLIB_LIBS)
+LINK_DBUS_NO_GLIB = $(NDESK_DBUS_LIBS)
+LINK_MONO_ADDINS_DEPS = $(MONO_ADDINS_LIBS)
+LINK_MONO_ADDINS_SETUP_DEPS = $(MONO_ADDINS_SETUP_LIBS)
+LINK_MONO_ADDINS_GUI_DEPS = $(MONO_ADDINS_GUI_LIBS)
+
+# GIO
+REF_GIO =
+LINK_GIO = -r:$(DIR_GIOSHARP)/gio-sharp.dll
+LINK_GIO_DEPS = $(REF_GIO) $(LINK_GIO)
+
+# Gtk Beans
+REF_GTK_BEANS = $(LINK_GIO_DEPS)
+LINK_GTK_BEANS = -r:$(DIR_GTKSHARPBEANS)/gtk-sharp-beans.dll
+LINK_GTK_BEANS_DEPS = $(REF_GTK_BEANS) $(LINK_GTK_BEANS)
+
+# Uniqe
+REF_UNIQUE =
+LINK_UNIQUE = -r:$(DIR_UNIQUESHARP)/unique-sharp.dll
+LINK_UNIQUE_DEPS = $(REF_UNIQUE) $(LINK_UNIQUE)
+
+# Hyena
+REF_HYENA = $(LINK_SYSTEM) $(LINK_MONO_POSIX)
+LINK_HYENA = -r:$(DIR_BIN)/Hyena.dll
+LINK_HYENA_DEPS = $(REF_HYENA) $(LINK_HYENA)
+
+# Semweb
+REF_SEMWEB = $(LINK_SYSTEMDATA) $(LINK_HYENA_DEPS)
+LINK_SEMWEB = -r:$(DIR_BIN)/SemWeb.dll
+LINK_SEMWEB_DEPS = $(REF_SEMWEB) $(LINK_SEMWEB)
+
+# Hyena.Data.Sqlite
+REF_HYENA_DATA_SQLITE = $(LINK_SQLITE)
+LINK_HYENA_DATA_SQLITE = -r:$(DIR_BIN)/Hyena.Data.Sqlite.dll
+LINK_HYENA_DATA_SQLITE_DEPS = $(REF_HYENA_DATA_SQLITE) $(LINK_HYENA_DATA_SQLITE)
+
+# Hyena.Gui
+REF_HYENA_GUI = $(LINK_HYENA_DEPS)
+LINK_HYENA_GUI = -r:$(DIR_BIN)/Hyena.Gui.dll
+LINK_HENA_GUI_DEPS = $(REF_HYENA_GUI) $(LINK_HYENA_GUI)
+
+# FSpot.Cms
+REF_FSPOT_CMS = $(LINK_GTK)
+LINK_FSPOT_CMS = -r:$(DIR_BIN)/FSpot.Cms.dll
+LINK_FSPOT_CMS_DEPS = $(REF_FSPOT_CMS) $(LINK_FSPOT_CMS)
+
+# FSpot.Utils
+REF_FSPOT_UTILS = $(LINK_HYENA_DEPS) $(LINK_GTK) $(LINK_GIO) $(LINK_MONO_CAIRO)
+LINK_FSPOT_UTILS = -r:$(DIR_BIN)/FSpot.Utils.dll
+LINK_FSPOT_UTILS_DEPS = $(REF_FSPOT_UTILS) $(LINK_FSPOT_UTILS)
+
+# FSpot.Core
+REF_FSPOT_CORE = $(LINK_FSPOT_UTILS_DEPS) $(LINK_FSPOT_CMS_DEPS)
+LINK_FSPOT_CORE = -r:$(DIR_BIN)/FSpot.Core.dll
+LINK_FSPOT_CORE_DEPS = $(REF_FSPOT_CORE) $(LINK_FSPOT_CORE)
+
+# FSpot.Query
+REF_FSPOT_QUERY = $(LINK_FSPOT_CORE_DEPS)
+LINK_FSPOT_QUERY = -r:$(DIR_BIN)/FSpot.Query.dll
+LINK_FSPOT_QUERY_DEPS = $(REF_FSPOT_QUERY) $(LINK_FSPOT_QUERY)
+
+# FSpot.JobScheduler
+REF_FSPOT_JOB_SCHEDULER = $(LINK_HYENA_DEPS)
+LINK_FSPOT_JOB_SCHEDULER = -r:$(DIR_BIN)/FSpot.JobScheduler.dll
+LINK_FSPOT_JOB_SCHEDULER_DEPS = $(REF_FSPOT_JOB_SCHEDULER) $(LINK_FSPOT_JOB_SCHEDULER)
+
+# FSpot.Bling
+REF_FSPOT_BLING = $(LINK_GTK_BEANS_DEPS) $(LINK_GLIB)
+LINK_FSPOT_BLING = -r:$(DIR_BIN)/FSpot.Bling.dll
+LINK_FSPOT_BLING_DEPS = $(REF_FSPOT_BLING) $(LINK_FSPOT_BLING)
+
+# FSpot.Platform
+REF_FSPOT_PLATFORM = $(LINK_GCONF) $(LINK_GTK) $(LINK_FSPOT_CORE_DEPS) $(LINK_DBUS) $(LINK_GNOME)
+LINK_FSPOT_PLATFORM = -r:$(DIR_BIN)/FSpot.Platform.dll
+LINK_FSPOT_PLATFORM_DEPS = $(REF_FSPOT_PLATFORM) $(LINK_FSPOT_PLATFORM)
+
+# FSpot.Widgets
+REF_FSPOT_WIDGETS = $(LINK_FSPOT_CORE_DEPS) $(LINK_FSPOT_BLING_DEPS)
+LINK_FSPOT_WIDGETS = -r:$(DIR_BIN)/FSpot.Widgets.dll
+LINK_FSPOT_WIDGETS_DEPS = $(REF_FSPOT_WIDGETS) $(LINK_FSPOT_WIDGETS)
+
+# FSpot (executable)
+REF_FSPOT = $(LINK_FSPOT_WIDGETS_DEPS) $(LINK_FSPOT_PLATFORM_DEPS) $(LINK_FSPOT_QUERY_DEPS) \
+            $(LINK_GLIB) $(LINK_MONO_ADDINS_DEPS) $(LINK_UNIQUE_DEPS) $(LINK_MONO_ADDINS_SETUP_DEPS) \
+            $(LINK_SEMWEB_DEPS) $(LINK_GLADE) $(LINK_MONODATA) $(LINK_MONO_DATA_SQLITECLIENT) \
+            $(LINK_MONO_ADDINS_GUI_DEPS) $(LINK_FSPOT_JOB_SCHEDULER_DEPS) $(LINK_ICSHARP_ZIP_LIB)
+# FIXME: do not link executables
+LINK_FSPOT = -r:$(DIR_BIN)/f-spot.exe
+LINK_FSPOT_DEPS = $(REF_FSPOT) $(LINK_FSPOT)
+
+# FSpot.Tests
+REF_FSPOT_TESTS = $(LINK_FSPOT_DEPS)
+
+
+# Extensions
+REF_FSPOT_EXTENSION_BLACKOUTEDITOR = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_BWEDITOR = $(LINK_FSPOT_DEPS) $(LINK_MONO_SIMD)
+REF_FSPOT_EXTENSION_FLIPEDITOR = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_PIXELATEEDITOR = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_RESIZEEDITOR = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_CDEXPORT = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_FACEBOOKEXPORT = $(LINK_FSPOT_DEPS) $(LINK_KEYRING)
+REF_FSPOT_EXTENSION_FLICKREXPORT = $(LINK_FSPOT_DEPS) $(LINK_FLICKRNET)
+REF_FSPOT_EXTENSION_FOLDEREXPORT = $(LINK_FSPOT_DEPS) $(LINK_SYSTEM_WEB)
+REF_FSPOT_EXTENSION_GALLERYEXPORT = $(LINK_FSPOT_DEPS)
+
+REF_MONO_GOOGLE = $(LINK_HYENA_DEPS)
+LINK_MONO_GOOGLE = -r:$(DIR_BIN)/Mono.Google.dll
+LINK_MONO_GOOGLE_DEPS = $(REF_MONO_GOOGLE) $(LINK_MONO_GOOGLE)
+REF_FSPOT_EXTENSION_PICASAWEBEXPORT = $(LINK_FSPOT_DEPS) $(LINK_MONO_GOOGLE) $(LINK_KEYRING)
+
+REF_SMUGMUGNET = $(LINK_FSPOT_DEPS)
+LINK_SMUGMUGNET = -r:$(DIR_BIN)/SmugMugNet.dll
+LINK_SMUGMUGNET_DEPS = $(REF_SMUGMUGNET) $(LINK_SMUGMUGNET)
+REF_FSPOT_EXTENSION_SMUGMUGEXPORT = $(LINK_SMUGMUGNET_DEPS) $(LINK_KEYRING)
+
+REF_MONO_TABBLO = $(LINK_HYENA_DEPS)
+LINK_MONO_TABBLO = -r:$(DIR_BIN)/Mono.Tabblo.dll
+LINK_MONO_TABBLO_DEPS = $(REF_MONO_TABBLO) $(LINK_MONO_TABBLO)
+REF_FSPOT_EXTENSION_TABBLOEXPORT = $(LINK_FSPOT_DEPS) $(LINK_KEYRING) $(LINK_MONO_TABBLO_DEPS)
+
+REF_FSPOT_EXTENSION_ZIPEXPORT = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_DBUSSERVICE = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_CHANGEPHOTOPATH = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_DEVELOPINUFRAW = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_HASHJOB = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_LIVEWEBGALLERY = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_MERGEDB = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_RAWPLUSJPEG = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_RETROACTIVEROLL = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_SCREENSAVERCONFIG = $(LINK_FSPOT_DEPS)
+REF_FSPOT_EXTENSION_COVERTRANSITION = $(LINK_FSPOT_DEPS)
+
+
 
-DIR_BIN = $(top_builddir)/bin
 
 # Cute hack to replace a space with something
 colon:= :
diff --git a/build/build.rules.mk b/build/build.rules.mk
index 98190cb..c1c6c1f 100644
--- a/build/build.rules.mk
+++ b/build/build.rules.mk
@@ -1,8 +1,20 @@
 UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
 BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
 
+# Since all other attempts failed, we currently go this way:
+# This code adds the file specified in ASSEMBLY_INFO_SOURCE to SOURCES_BUILD.
+# If no such file is specified, the default AssemblyInfo.cs is used.
+ASSEMBLY_INFO_SOURCE_REAL = \
+	$(shell if [ "$(ASSEMBLY_INFO_SOURCE)" ]; \
+	then \
+		echo "$(addprefix $(srcdir)/, $(ASSEMBLY_INFO_SOURCE))"; \
+	else \
+		echo "$(top_srcdir)/src/AssemblyInfo.cs"; \
+	fi)
+
 SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES))
-SOURCES_BUILD += $(top_srcdir)/src/AssemblyInfo.cs
+SOURCES_BUILD += $(ASSEMBLY_INFO_SOURCE_REAL)
+
 
 RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
 RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
@@ -43,10 +55,12 @@ run:
 	make run; \
 	popd;
 
-test:
-	@pushd $(top_builddir)/tests; \
-	make $(ASSEMBLY); \
-	popd;
+# uncommented for now.
+# tests are currently excuted from Makefile in $(top_builddir)
+#test:
+#	@pushd $(top_builddir)/tests; \
+#	make $(ASSEMBLY); \
+#	popd;
 
 build-debug:
 	@echo $(DEP_LINK)
diff --git a/build/m4/f-spot/mono-addins.m4 b/build/m4/f-spot/mono-addins.m4
new file mode 100644
index 0000000..267d0e3
--- /dev/null
+++ b/build/m4/f-spot/mono-addins.m4
@@ -0,0 +1,12 @@
+AC_DEFUN([BANSHEE_CHECK_MONO_ADDINS],
+[
+	PKG_CHECK_MODULES(MONO_ADDINS, mono-addins >= 0.3.1)
+	AC_SUBST(MONO_ADDINS_LIBS)
+
+	PKG_CHECK_MODULES(MONO_ADDINS_SETUP, mono-addins-setup >= 0.3.1)
+	AC_SUBST(MONO_ADDINS_SETUP_LIBS)
+
+	PKG_CHECK_MODULES(MONO_ADDINS_GUI, mono-addins-gui >= 0.3.1)
+	AC_SUBST(MONO_ADDINS_GUI_LIBS)
+])
+
diff --git a/configure.ac b/configure.ac
index aaba655..b6c9091 100644
--- a/configure.ac
+++ b/configure.ac
@@ -66,10 +66,15 @@ SHAMROCK_FIND_MONO_RUNTIME
 SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([
     Mono.Data.SqliteClient
     Mono.Posix
+    Mono.Simd
+    Mono.Data
+    System
     System.Runtime.Remoting
     System.Web
     System.Web.Services
+    System.Data
     Mono.Cairo
+    ICSharpCode.SharpZipLib
 ])
 
 FSPOT_CHECK_GTK_SHARP
@@ -194,6 +199,9 @@ fi
 
 AC_SUBST(CSC_DEFINES)
 
+dnl Mono.Addins libraries
+BANSHEE_CHECK_MONO_ADDINS
+
 dnl -- dbus-sharp
 PKG_CHECK_MODULES(NDESK_DBUS, ndesk-dbus-1.0 >= $NDESK_DBUS_REQUIRED ndesk-dbus-glib-1.0 >= $NDESK_DBUS_GLIB_REQUIRED)
 AC_SUBST(NDESK_DBUS_LIBS)
@@ -364,12 +372,20 @@ docs/Makefile
 icons/Makefile
 tools/Makefile
 po/Makefile.in
+src/Cms/FSpot.Cms.dll.config
+src/Cms/Makefile
+src/Utils/Makefile
+src/Bling/Makefile
+src/JobScheduler/Makefile
+src/Query/Makefile
 src/Core/Defines.cs
+src/Core/Makefile
+src/Core/FSpot.Core.dll.config
+src/Widgets/Makefile
+src/Widgets/FSpot.Widgets.dll.config
+src/Platform/Makefile
 src/AssemblyInfo.cs
 src/f-spot.exe.config
-src/Cms.dll.config
-src/FSpot.Core.dll.config
-src/FSpot.Widgets.dll.config
 src/Makefile
 extensions/Makefile
 extensions/Editors/Makefile
diff --git a/extensions/Editors/BWEditor/Makefile.am b/extensions/Editors/BWEditor/Makefile.am
index 744de85..521695c 100644
--- a/extensions/Editors/BWEditor/Makefile.am
+++ b/extensions/Editors/BWEditor/Makefile.am
@@ -1,21 +1,11 @@
-addin = BWEditor
+ASSEMBLY = FSpot.Editors.BWEditor
+ASSEMBLY_BUILD_FLAGS = -unsafe
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_BWEDITOR)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = BWEditor.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = BWEditor.addin.xml
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =		\
-	Mono.Posix		\
-	Mono.Simd
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags = -unsafe
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Editors/BlackoutEditor/Makefile.am b/extensions/Editors/BlackoutEditor/Makefile.am
index a200b81..5338ad4 100644
--- a/extensions/Editors/BlackoutEditor/Makefile.am
+++ b/extensions/Editors/BlackoutEditor/Makefile.am
@@ -1,20 +1,10 @@
-addin = BlackoutEditor
+ASSEMBLY = FSpot.Editors.BlackoutEditor
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_BLACKOUTEDITOR)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = BlackoutEditor.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = BlackoutEditor.addin.xml
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =		\
-	Mono.Posix
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags =
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Editors/FlipEditor/Makefile.am b/extensions/Editors/FlipEditor/Makefile.am
index e8dae23..45b9f2f 100644
--- a/extensions/Editors/FlipEditor/Makefile.am
+++ b/extensions/Editors/FlipEditor/Makefile.am
@@ -1,20 +1,10 @@
-addin = FlipEditor
+ASSEMBLY = FSpot.Editors.FlipEditor
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_FLIPEDITOR)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = FlipEditor.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = FlipEditor.addin.xml
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =		\
-	Mono.Posix
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags =
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Editors/PixelateEditor/Makefile.am b/extensions/Editors/PixelateEditor/Makefile.am
index c91ff68..d6ead24 100644
--- a/extensions/Editors/PixelateEditor/Makefile.am
+++ b/extensions/Editors/PixelateEditor/Makefile.am
@@ -1,20 +1,10 @@
-addin = PixelateEditor
+ASSEMBLY = FSpot.Editors.PixelateEditor
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_PIXELATEEDITOR)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = PixelateEditor.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = PixelateEditor.addin.xml
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =		\
-	Mono.Posix
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags =
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Editors/ResizeEditor/Makefile.am b/extensions/Editors/ResizeEditor/Makefile.am
index cb77879..77785a9 100644
--- a/extensions/Editors/ResizeEditor/Makefile.am
+++ b/extensions/Editors/ResizeEditor/Makefile.am
@@ -1,20 +1,10 @@
-addin = ResizeEditor
+ASSEMBLY = FSpot.Editors.ResizeEditor
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_RESIZEEDITOR)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = ResizeEditor.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = ResizeEditor.addin.xml
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =		\
-	Mono.Posix
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags =
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/CDExport/Makefile.am b/extensions/Exporters/CDExport/Makefile.am
index 4e84085..7cf9120 100644
--- a/extensions/Exporters/CDExport/Makefile.am
+++ b/extensions/Exporters/CDExport/Makefile.am
@@ -1,21 +1,12 @@
-addin = CDExport
+ASSEMBLY = FSpot.Exporters.CDExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_CDEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = CDExport.cs
 
-addin_sources =			\
-	$(addin).cs
+RESOURCES = \
+	CDExport.addin.xml \
+	CDExport.ui
 
-addin_resources =		\
-	$(addin_manifest)	\
-	$(addin).ui
-
-addin_references =		\
-	Mono.Posix
-
-addin_packages =		\	
-	gtk-sharp-2.0
-
-addin_extraflags =
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/FacebookExport/Makefile.am b/extensions/Exporters/FacebookExport/Makefile.am
index 3945b71..1c77f22 100644
--- a/extensions/Exporters/FacebookExport/Makefile.am
+++ b/extensions/Exporters/FacebookExport/Makefile.am
@@ -1,86 +1,37 @@
-include $(top_srcdir)/Makefile.include
-
-PLUGIN_NAME = FacebookExport
-
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
-
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/FacebookExport.cs			\
-	$(srcdir)/FacebookExportDialog.cs		\
-	$(srcdir)/FacebookTagPopup.cs			\
-	$(srcdir)/Mono.Facebook/facebook.cs		\
-	$(srcdir)/Mono.Facebook/Album.cs		\
-	$(srcdir)/Mono.Facebook/AssemblyInfo.cs		\
-	$(srcdir)/Mono.Facebook/Error.cs		\
-	$(srcdir)/Mono.Facebook/Event.cs		\
-	$(srcdir)/Mono.Facebook/FacebookException.cs	\
-	$(srcdir)/Mono.Facebook/FacebookParam.cs	\
-	$(srcdir)/Mono.Facebook/FacebookSession.cs	\
-	$(srcdir)/Mono.Facebook/Friend.cs		\
-	$(srcdir)/Mono.Facebook/FriendInfo.cs		\
-	$(srcdir)/Mono.Facebook/Group.cs		\
-	$(srcdir)/Mono.Facebook/Location.cs		\
-	$(srcdir)/Mono.Facebook/Notification.cs		\
-	$(srcdir)/Mono.Facebook/PeopleList.cs		\
-	$(srcdir)/Mono.Facebook/Photo.cs		\
-	$(srcdir)/Mono.Facebook/Responses.cs		\
-	$(srcdir)/Mono.Facebook/SessionInfo.cs	\
-	$(srcdir)/Mono.Facebook/SessionWrapper.cs	\
-	$(srcdir)/Mono.Facebook/Tag.cs			\
-	$(srcdir)/Mono.Facebook/User.cs			\
-	$(srcdir)/Mono.Facebook/Util.cs
-
-REFS =							\
-	-r:$(top_builddir)/src/f-spot.exe		\
-	-r:$(top_builddir)/src/FSpot.Core.dll		\
-	-r:$(top_builddir)/src/FSpot.Utils.dll		\
-	-r:$(top_builddir)/src/FSpot.Platform.dll	\
-	-r:$(top_builddir)/src/FSpot.Widgets.dll	\
-	$(LINK_GTKSHARPBEANS)				\
-	$(LINK_KEYRING)                     		\
-	$(LINK_SEMWEB)					\
-	$(LINK_GPHOTO2)					\
-	$(LINK_GIOSHARP)				\
-	$(LINK_UNIQUESHARP)				\
-	-r:Mono.Posix					\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:gtk-sharp-2.0
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).ui
-
-all: $(PLUGIN_ASSEMBLY)
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-update-xsd:
-	curl http://api.facebook.com/1.0/facebook.xsd > Mono.Facebook/facebook.xsd
-	xsd Mono.Facebook/facebook.xsd /classes /outputdir:Mono.Facebook/ /namespace:Mono.Facebook.Schemas
-
-validate-xsd: all
-	gmcs -debug $(REFS) $(PKGS) -out:FindNullableClashes.exe FindNullableClashes.cs
-	MONO_PATH=.:$(top_builddir)/src/ mono --debug FindNullableClashes.exe FacebookExport.dll
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST) $(PLUGIN_NAME).ui
-	$(CSC_LIB) -debug -out:$@ -warnaserror $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).ui
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+ASSEMBLY = FSpot.Exporters.FacebookExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_FACEBOOKEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	FacebookExport.cs \
+	FacebookExportDialog.cs \
+	FacebookTagPopup.cs \
+	FindNullableClashes.cs \
+	Mono.Facebook/facebook.cs \
+	Mono.Facebook/Album.cs \
+	Mono.Facebook/Error.cs \
+	Mono.Facebook/Event.cs \
+	Mono.Facebook/FacebookException.cs \
+	Mono.Facebook/FacebookParam.cs \
+	Mono.Facebook/FacebookSession.cs \
+	Mono.Facebook/Friend.cs \
+	Mono.Facebook/FriendInfo.cs \
+	Mono.Facebook/Group.cs \
+	Mono.Facebook/Location.cs \
+	Mono.Facebook/Notification.cs \
+	Mono.Facebook/PeopleList.cs \
+	Mono.Facebook/Photo.cs \
+	Mono.Facebook/Responses.cs \
+	Mono.Facebook/SessionInfo.cs \
+	Mono.Facebook/SessionWrapper.cs \
+	Mono.Facebook/Tag.cs \
+	Mono.Facebook/User.cs \
+	Mono.Facebook/Util.cs
+RESOURCES = \
+	FacebookExport.addin.xml \
+	FacebookExport.ui
+
+ASSEMBLY_INFO_SOURCE = Mono.Facebook/AssemblyInfo.cs
+
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/FlickrExport/Makefile.am b/extensions/Exporters/FlickrExport/Makefile.am
index 436accb..6a62ecf 100644
--- a/extensions/Exporters/FlickrExport/Makefile.am
+++ b/extensions/Exporters/FlickrExport/Makefile.am
@@ -1,56 +1,14 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.FlickrExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_FLICKREXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-PLUGIN_NAME = FlickrExport
+SOURCES = \
+	FlickrExport.cs \
+	FlickrRemote.cs
 
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
+RESOURCES = \
+	FlickrExport.addin.xml \
+	FlickrExport.glade
 
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/FlickrExport.cs	\
-	$(srcdir)/FlickrRemote.cs
-
-REFS =						\
-	-r:$(top_builddir)/src/f-spot.exe	\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_SEMWEB)				\
-	$(LINK_GPHOTO2)				\
-	$(LINK_GIOSHARP)			\
-	$(LINK_GTKSHARPBEANS)			\
-	$(LINK_UNIQUESHARP)			\
-	-r:Mono.Posix				\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:flickrnet          \
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-install-data-hook:
-	if [ -w $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml ] ; then rm -f $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml; fi
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/FolderExport/Makefile.am b/extensions/Exporters/FolderExport/Makefile.am
index 0854f94..f5d2148 100644
--- a/extensions/Exporters/FolderExport/Makefile.am
+++ b/extensions/Exporters/FolderExport/Makefile.am
@@ -1,61 +1,15 @@
-include $(top_srcdir)/Makefile.include
-
-PLUGIN_NAME = FolderExport
-
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
-
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/FolderExport.cs
-
-REFS =					\
-	-r:$(top_builddir)/src/f-spot.exe		\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_SEMWEB)				\
-	$(LINK_GPHOTO2)				\
-	$(LINK_GIOSHARP)				\
-	$(LINK_GTKSHARPBEANS)		\
-	$(LINK_UNIQUESHARP)		\
-	-r:System.Web			\
-	-r:ICSharpCode.SharpZipLib	\
-	-r:Mono.Posix			\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade \
-	-resource:$(srcdir)/f-spot-simple-white.css	\
-	-resource:$(srcdir)/f-spot-simple.css		\
-	-resource:$(srcdir)/f-spot.js
-
-all: $(PLUGIN_ASSEMBLY)
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade	\
-	f-spot-simple.css	\
-	f-spot-simple-white.css	\
+ASSEMBLY = FSpot.Exporters.FolderExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_FOLDEREXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = FolderExport.cs
+
+RESOURCES = \
+	FolderExport.addin.xml \
+	FolderExport.glade \
+	f-spot-simple-white.css \
+	f-spot-simple.css \
 	f-spot.js
 
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/GalleryExport/Makefile.am b/extensions/Exporters/GalleryExport/Makefile.am
index d2e40b9..f8153cb 100644
--- a/extensions/Exporters/GalleryExport/Makefile.am
+++ b/extensions/Exporters/GalleryExport/Makefile.am
@@ -1,58 +1,15 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.GalleryExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_GALLERYEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-PLUGIN_NAME = GalleryExport
+SOURCES = \
+	GalleryExport.cs \
+	GalleryRemote.cs \
+	FormClient.cs
 
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
+RESOURCES = \
+	GalleryExport.addin.xml \
+	GalleryExport.glade
 
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/FormClient.cs	\
-	$(srcdir)/GalleryExport.cs	\
-	$(srcdir)/GalleryRemote.cs
-
-REFS =						\
-	-r:$(top_builddir)/src/f-spot.exe	\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_SEMWEB)				\
-	$(LINK_GPHOTO2)				\
-	$(LINK_GIOSHARP)			\
-	$(LINK_GTKSHARPBEANS)			\
-	$(LINK_UNIQUESHARP)			\
-	-r:Mono.Posix				\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade
-
-all: $(PLUGIN_ASSEMBLY)
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-install-data-hook:
-	if [ -w $(DESTDIR)$(plugindir)/GalleryExport.addin.xml ] ; then rm -f $(DESTDIR)$(plugindir)/GalleryExport.addin.xml; fi
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/PicasaWebExport/Makefile.am b/extensions/Exporters/PicasaWebExport/Makefile.am
index d29aeb3..dd801bc 100644
--- a/extensions/Exporters/PicasaWebExport/Makefile.am
+++ b/extensions/Exporters/PicasaWebExport/Makefile.am
@@ -1,59 +1,15 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.PicasaWeb
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_PICASAWEBEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-PLUGIN_NAME = PicasaWebExport
+SOURCES = PicasaWebExport.cs
 
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
+RESOURCES = \
+	PicasaWebExport.addin.xml \
+	PicasaWebExport.glade
 
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/PicasaWebExport.cs
-
-REFS =						\
-	-r:$(top_builddir)/src/f-spot.exe	\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_SEMWEB)				\
-	-r:google-sharp/Mono.Google.dll		\
-	$(LINK_KEYRING)				\
-	$(LINK_GIOSHARP)			\
-	$(LINK_GPHOTO2)				\
-	$(LINK_UNIQUESHARP)			\
-	-r:Mono.Posix				\
-	$(LINK_HYENA)
-
-PKGS =					\
-	$(LINK_GTKSHARPBEANS)		\
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0
-
-SUBDIRS = 			\
+SUBDIRS = \
 	google-sharp
 
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-install-data-hook:
-	if [ -w $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml ] ; then rm -f $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml; fi
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/PicasaWebExport/google-sharp/Makefile.am b/extensions/Exporters/PicasaWebExport/google-sharp/Makefile.am
index 4a3a72d..fd516d5 100644
--- a/extensions/Exporters/PicasaWebExport/google-sharp/Makefile.am
+++ b/extensions/Exporters/PicasaWebExport/google-sharp/Makefile.am
@@ -1,45 +1,31 @@
-include $(top_srcdir)/Makefile.include
-
-ASSEMBLY_NAME = Mono.Google
-
-ASSEMBLY_SOURCES =				\
-	$(srcdir)/AlbumAccess.cs  		\
-	$(srcdir)/AssemblyInfo.cs 		\
-	$(srcdir)/Authentication.cs  		\
-	$(srcdir)/CaptchaException.cs  		\
-	$(srcdir)/CreateAlbumException.cs  	\
-	$(srcdir)/DeleteAlbumException.cs  	\
-	$(srcdir)/GDataApi.cs  			\
-	$(srcdir)/GoogleConnection.cs  		\
-	$(srcdir)/GoogleService.cs  		\
-	$(srcdir)/MultipartRequest.cs  		\
-	$(srcdir)/NoCheckCertificatePolicy.cs  	\
-	$(srcdir)/PicasaAlbum.cs  		\
-	$(srcdir)/PicasaAlbumCollection.cs  	\
-	$(srcdir)/PicasaPicture.cs  		\
-	$(srcdir)/PicasaPictureCollection.cs  	\
-	$(srcdir)/PicasaWeb.cs  		\
-	$(srcdir)/UploadPictureException.cs 	\
-	$(srcdir)/UploadProgressEventArgs.cs  	\
-	$(srcdir)/UploadProgressEventHandler.cs \
-	$(srcdir)/XmlUtil.cs
-
-REFS = -r:System.Web
-
-PKGS =
-
-ASSEMBLY = $(ASSEMBLY_NAME).dll
-
-all: $(ASSEMBLY)
-
-$(ASSEMBLY): $(ASSEMBLY_SOURCES)
-	$(CSC_LIB) -out:$@ $(PKGS) $(REFS) $(ASSEMBLY_SOURCES)
-
-assemblydir = $(pkglibdir)
-assembly_DATA =	$(ASSEMBLY)
-
-EXTRA_DIST = $(ASSEMBLY_SOURCES)
-
-CLEANFILES =			\
-	$(ASSEMBLY)		\
-	$(ASSEMBLY).mdb
+ASSEMBLY = Mono.Google
+TARGET = library
+LINK = $(REF_MONO_GOOGLE)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	AlbumAccess.cs \
+	Authentication.cs \
+	CaptchaException.cs \
+	CreateAlbumException.cs\
+	DeleteAlbumException.cs \
+	GDataApi.cs \
+	GoogleConnection.cs \
+	GoogleService.cs \
+	MultipartRequest.cs \
+	NoCheckCertificatePolicy.cs \
+	PicasaAlbum.cs \
+	PicasaAlbumCollection.cs \
+	PicasaPicture.cs \
+	PicasaPictureCollection.cs \
+	PicasaWeb.cs \
+	UploadPictureException.cs \
+	UploadProgressEventArgs.cs \
+	UploadProgressEventHandler.cs \
+	XmlUtil.cs
+
+RESOURCES =
+
+ASSEMBLY_INFO_SOURCE = AssemblyInfo.cs
+
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/SmugMugExport/Makefile.am b/extensions/Exporters/SmugMugExport/Makefile.am
index 0ba2aef..d0b4fea 100644
--- a/extensions/Exporters/SmugMugExport/Makefile.am
+++ b/extensions/Exporters/SmugMugExport/Makefile.am
@@ -1,59 +1,15 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.SmugMugExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_SMUGMUGEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-PLUGIN_NAME = SmugMugExport
+SOURCES = SmugMugExport.cs
 
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
+RESOURCES = \
+	SmugMugExport.addin.xml \
+	SmugMugExport.glade
 
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/SmugMugExport.cs
-
-REFS =						\
-	-r:$(top_builddir)/src/f-spot.exe	\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	-r:SmugMugNet/SmugMugNet.dll		\
-	$(LINK_SEMWEB)				\
-	$(LINK_GIOSHARP)			\
-	$(LINK_GPHOTO2)				\
-	$(LINK_GTKSHARPBEANS)			\
-	$(LINK_KEYRING)				\
-	$(LINK_UNIQUESHARP)			\
-	-r:Mono.Posix				\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade
-
-SUBDIRS =                      \
+SUBDIRS = \
 	SmugMugNet
 
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-install-data-hook:
-	if [ -w $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml ] ; then rm -f $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml; fi
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am b/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
index adb7fcf..dd9899a 100644
--- a/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
+++ b/extensions/Exporters/SmugMugExport/SmugMugNet/Makefile.am
@@ -1,30 +1,12 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = SmugMugNet
+TARGET = library
+LINK = $(REF_SMUGMUGNET)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-ASSEMBLY_NAME = SmugMugNet
+SOURCES = \
+	SmugMugApi.cs \
+	NoCheckCertificatePolicy.cs
 
-ASSEMBLY_SOURCES =				\
-	$(srcdir)/SmugMugApi.cs 		\
-	$(srcdir)/NoCheckCertificatePolicy.cs
+RESOURCES =
 
-REFS = \
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_GIOSHARP)			\
-	$(LINK_HYENA)
-
-PKGS =
-
-ASSEMBLY = $(ASSEMBLY_NAME).dll
-
-all: $(ASSEMBLY)
-
-$(ASSEMBLY): $(ASSEMBLY_SOURCES)
-	$(CSC_LIB) -out:$@ $(PKGS) $(REFS) $(ASSEMBLY_SOURCES)
-
-assemblydir = $(pkglibdir)
-assembly_DATA =	$(ASSEMBLY)
-
-EXTRA_DIST = $(ASSEMBLY_SOURCES)
-
-CLEANFILES =			\
-	$(ASSEMBLY)		\
-	$(ASSEMBLY).mdb
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/TabbloExport/Makefile.am b/extensions/Exporters/TabbloExport/Makefile.am
index 757adaf..94a5d32 100644
--- a/extensions/Exporters/TabbloExport/Makefile.am
+++ b/extensions/Exporters/TabbloExport/Makefile.am
@@ -1,71 +1,26 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.TabbloExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_TABBLOEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	ApplicationCentricCertificatePolicy.cs \
+	BlindTrustCertificatePolicy.cs \
+	FSpotTraceListener.cs \
+	FSpotUploadProgress.cs \
+	TabbloExport.cs \
+	TabbloExportModel.cs \
+	TabbloExportView.cs \
+	UserDecisionCertificatePolicy.cs
 
-PLUGIN_NAME = TabbloExport
-
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
-
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES = \
-	$(srcdir)/ApplicationCentricCertificatePolicy.cs \
-	$(srcdir)/AssemblyInfo.cs \
-	$(srcdir)/BlindTrustCertificatePolicy.cs \
-	$(srcdir)/FSpotTraceListener.cs \
-	$(srcdir)/FSpotUploadProgress.cs \
-	$(srcdir)/TabbloExport.cs \
-	$(srcdir)/TabbloExportModel.cs \
-	$(srcdir)/TabbloExportView.cs \
-	$(srcdir)/UserDecisionCertificatePolicy.cs
-
-PLUGIN_INPUT = \
-	$(PLUGIN_SOURCES) \
-	$(PLUGIN_MANIFEST) \
-	ui/$(PLUGIN_NAME).ui \
+RESOURCES = \
+	TabbloExport.addin.xml \
+	ui/TabbloExport.ui \
 	ui/TrustError.ui
 
-
-REFS = \
-	-r:$(top_builddir)/src/f-spot.exe \
-	-r:$(top_builddir)/src/FSpot.Core.dll \
-	-r:$(top_builddir)/src/FSpot.Utils.dll \
-	-r:Tabblo/Mono.Tabblo.dll \
-	$(LINK_KEYRING)		\
-	$(LINK_SEMWEB)		\
-	$(LINK_GIOSHARP)	\
-	$(LINK_GTKSHARPBEANS)	\	
-	$(LINK_GPHOTO2)		\
-	$(LINK_UNIQUESHARP)	\
-	-r:Mono.Posix.dll				\
-	$(LINK_HYENA)
-
-PKGS = \
-	-pkg:gtk-sharp-2.0 
+ASSEMBLY_INFO_SOURCE = AssemblyInfo.cs
 
 SUBDIRS = \
 	Tabblo
 
-RESOURCES = \
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST) \
-	-resource:$(srcdir)/ui/$(PLUGIN_NAME).ui \
-	-resource:$(srcdir)/ui/TrustError.ui
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_INPUT)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-install-data-hook:
-	if [ -w $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml ] ; then rm -f $(DESTDIR)$(plugindir)/$(PLUGIN_NAME).addin.xml; fi
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = $(PLUGIN_INPUT)
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/TabbloExport/Tabblo/Makefile.am b/extensions/Exporters/TabbloExport/Tabblo/Makefile.am
index 822253c..5283b77 100644
--- a/extensions/Exporters/TabbloExport/Tabblo/Makefile.am
+++ b/extensions/Exporters/TabbloExport/Tabblo/Makefile.am
@@ -1,38 +1,21 @@
-include $(top_srcdir)/Makefile.include
-
-ASSEMBLY_NAME = Mono.Tabblo
-
-ASSEMBLY_SOURCES = \
-	$(srcdir)/AssemblyInfo.cs \
-	$(srcdir)/Connection.cs \
-	$(srcdir)/IPreferences.cs \
-	$(srcdir)/MultipartRequest.cs \
-	$(srcdir)/Picture.cs \
-	$(srcdir)/TabbloException.cs \
-	$(srcdir)/TotalUploadProgress.cs \
-	$(srcdir)/Uploader.cs \
-	$(srcdir)/UploadProgressEventArgs.cs \
-	$(srcdir)/UploadProgressEventHandler.cs
-
-REFS = \
-       -r:Mono.Posix.dll \
-       -r:System.Web.dll
-
-PKGS =
-
-ASSEMBLY = $(ASSEMBLY_NAME).dll
-
-all: $(ASSEMBLY)
-
-$(ASSEMBLY): $(ASSEMBLY_SOURCES)
-	$(CSC_LIB) -out:$@ $(PKGS) $(REFS) $(ASSEMBLY_SOURCES)
-
-assemblydir = $(pkglibdir)
-assembly_DATA =	$(ASSEMBLY)
-
-EXTRA_DIST =			\
-	$(ASSEMBLY_SOURCES)
-
-CLEANFILES =			\
-	$(ASSEMBLY)		\
-	$(ASSEMBLY).mdb
+ASSEMBLY = Mono.Tabblo
+TARGET = library
+LINK = $(REF_MONO_TABBLO)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	Connection.cs \
+	IPreferences.cs \
+	MultipartRequest.cs \
+	Picture.cs \
+	TabbloException.cs \
+	TotalUploadProgress.cs \
+	Uploader.cs \
+	UploadProgressEventArgs.cs \
+	UploadProgressEventHandler.cs
+
+RESOURCES =
+
+ASSEMBLY_INFO_SOURCE = AssemblyInfo.cs
+
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Exporters/ZipExport/Makefile.am b/extensions/Exporters/ZipExport/Makefile.am
index c837ef0..4831935 100644
--- a/extensions/Exporters/ZipExport/Makefile.am
+++ b/extensions/Exporters/ZipExport/Makefile.am
@@ -1,56 +1,12 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Exporters.ZipExport
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_ZIPEXPORT)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-PLUGIN_NAME = ZipExport
+SOURCES = ZipExport.cs
 
-PLUGIN_MANIFEST = $(PLUGIN_NAME).addin.xml
+RESOURCES = \
+	ZipExport.addin.xml \
+	ZipExport.glade
 
-PLUGIN_ASSEMBLY = $(PLUGIN_NAME).dll
-
-PLUGIN_SOURCES =			\
-	$(srcdir)/ZipExport.cs
-
-REFS =						\
-	-r:$(top_builddir)/src/f-spot.exe	\
-	-r:$(top_builddir)/src/FSpot.Core.dll	\
-	-r:$(top_builddir)/src/FSpot.Utils.dll	\
-	$(LINK_SEMWEB)				\
-	$(LINK_GPHOTO2)				\
-	$(LINK_GTKSHARPBEANS)			\
-	$(LINK_GIOSHARP)			\
-	$(LINK_UNIQUESHARP)			\
-	-r:System.Web				\
-	-r:ICSharpCode.SharpZipLib		\
-	-r:Mono.Posix				\
-	$(LINK_HYENA)
-
-PKGS =					\
-	-pkg:gtk-sharp-2.0		\
-	-pkg:glade-sharp-2.0		\
-	-pkg:mono-addins
-
-RESOURCES =				\
-	-resource:$(srcdir)/$(PLUGIN_MANIFEST)	\
-	-resource:$(srcdir)/$(PLUGIN_NAME).glade
-
-all: $(PLUGIN_ASSEMBLY)
-
-mpack: $(PLUGIN_ASSEMBLY)
-	mautil p $(PLUGIN_ASSEMBLY)
-
-$(PLUGIN_ASSEMBLY): $(PLUGIN_SOURCES) $(PLUGIN_MANIFEST)
-	$(CSC_LIB) -out:$@ $(PLUGIN_SOURCES) $(REFS) $(PKGS) $(ASSEMBLIES) $(RESOURCES)
-
-plugindir = $(pkglibdir)/extensions
-
-plugin_DATA =			\
-	$(PLUGIN_ASSEMBLY)
-
-EXTRA_DIST = 			\
-	$(PLUGIN_SOURCES)	\
-	$(PLUGIN_MANIFEST)	\
-	$(PLUGIN_NAME).glade
-
-CLEANFILES =			\
-	$(PLUGIN_ASSEMBLY)	\
-	$(PLUGIN_ASSEMBLY).mdb	\
-	*.mpack
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Services/DBusService/Makefile.am b/extensions/Services/DBusService/Makefile.am
index cd633c9..2d5dd2d 100644
--- a/extensions/Services/DBusService/Makefile.am
+++ b/extensions/Services/DBusService/Makefile.am
@@ -1,20 +1,12 @@
-addin = DBusService
+ASSEMBLY = FSpot.Exporters.DBusService
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_DBUSSERVICE)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
-
-addin_sources =			\
-	$(addin).cs		\
+SOURCES = \
+	DBusService.cs \
 	DBusProxy.cs
 
-addin_resources =		\
-	$(addin_manifest)
-
-addin_references =
-addin_packages =		\
-	gtk-sharp-2.0
-
-addin_extraflags =		\
-	$(NDESK_DBUS_LIBS)
-addin_extradist =
+RESOURCES = DBusService.addin.xml
 
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/ChangePhotoPath/Makefile.am b/extensions/Tools/ChangePhotoPath/Makefile.am
index 86a7386..10fc230 100755
--- a/extensions/Tools/ChangePhotoPath/Makefile.am
+++ b/extensions/Tools/ChangePhotoPath/Makefile.am
@@ -1,24 +1,15 @@
-addin = ChangePhotoPath
-
-addin_manifest = $(addin).addin.xml
-
-addin_sources = 			\
-	ChangePhotoPathController.cs	\
-	ChangePhotoPathGui.cs		\
-	IChangePhotoPathGui.cs
-
-addin_resources =			\
-	$(addin_manifest)		\
-	ChangePhotoPath.glade
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0			\
-	glade-sharp-2.0
-
-addin_extradist =			\
+ASSEMBLY = FSpot.Exporters.ChangePhotoPath
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_CHANGEPHOTOPATH)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	IChangePhotoPathGui.cs \
+	ChangePhotoPathGui.cs \
+	ChangePhotoPathController.cs
+
+RESOURCES = \
+	ChangePhotoPath.addin.xml \
 	ChangePhotoPath.glade
 
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/DevelopInUFraw/Makefile.am b/extensions/Tools/DevelopInUFraw/Makefile.am
index 1880cd8..a59d3d4 100644
--- a/extensions/Tools/DevelopInUFraw/Makefile.am
+++ b/extensions/Tools/DevelopInUFraw/Makefile.am
@@ -1,19 +1,12 @@
-addin = DevelopInUFRaw
+ASSEMBLY = FSpot.Exporters.DevelopInUFRaw
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_DEVELOPINUFRAW)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = \
+	DevelopInUFRaw.cs
 
-addin_sources =				\
-	$(addin).cs
+RESOURCES = \
+	DevelopInUFRaw.addin.xml
 
-addin_resources =			\
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/HashJob/Makefile.am b/extensions/Tools/HashJob/Makefile.am
index b936065..051c1f2 100644
--- a/extensions/Tools/HashJob/Makefile.am
+++ b/extensions/Tools/HashJob/Makefile.am
@@ -1,20 +1,9 @@
-addin = HashJob
+ASSEMBLY = FSpot.Exporters.HashJob
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_HASHJOB)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = HashJob.cs
+RESOURCES = HashJob.addin.xml
 
-addin_sources =				\
-	$(addin).cs
-
-addin_resources =			\
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Posix			\
-	Mono.Data.SqliteClient
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extra_dist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/LiveWebGallery/Makefile.am b/extensions/Tools/LiveWebGallery/Makefile.am
index 74eeea2..8545e4d 100644
--- a/extensions/Tools/LiveWebGallery/Makefile.am
+++ b/extensions/Tools/LiveWebGallery/Makefile.am
@@ -1,33 +1,21 @@
-addin = LiveWebGallery
-
-addin_manifest = $(addin).addin.xml
-
-addin_sources =				\
-	LiveWebGallery.cs		\
-	LiveWebGalleryDialog.cs		\
-	SimpleWebServer.cs		\
-	GalleryRequestHandler.cs	\
-	PhotoRequestHandler.cs		\
-	ResourceRequestHandler.cs
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0			\
-	gnome-sharp-2.0
-
-addin_resources =			\
-	$(addin_manifest)		\
-	ui/$(addin).ui			\
-	ui/empty.png			\
-	ui/f-spot.css			\
-	ui/f-spot.js			\
-	ui/gallery.html
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+ASSEMBLY = FSpot.Exporters.LiveWebGallery
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_LIVEWEBGALLERY)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	GalleryRequestHandler.cs \
+	LiveWebGallery.cs \
+	LiveWebGalleryDialog.cs \
+	PhotoRequestHandler.cs \
+	ResourceRequestHandler.cs \
+	SimpleWebServer.cs
+
+RESOURCES = \
+	LiveWebGallery.addin.xml \
+	ui/LiveWebGallery.ui \
+	ui/gallery.html \
+	ui/f-spot.css \
+	ui/f-spot.js
+
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/MergeDb/Makefile.am b/extensions/Tools/MergeDb/Makefile.am
index a59b482..7aa6041 100644
--- a/extensions/Tools/MergeDb/Makefile.am
+++ b/extensions/Tools/MergeDb/Makefile.am
@@ -1,24 +1,15 @@
-addin = MergeDb
-
-addin_manifest = $(addin).addin.xml
-
-addin_sources = 			\
-	$(addin).cs			\
-	MergeDbDialog.cs		\
+ASSEMBLY = FSpot.Exporters.MergeDb
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_MERGEDB)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+	MergeDb.cs \
+	MergeDbDialog.cs \
 	PickFolderDialog.cs
 
-addin_resources =			\
-	$(addin_manifest)		\
-	$(addin).glade
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0			\
-	glade-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+RESOURCES = \
+	MergeDb.addin.xml \
+	MergeDb.glade
 
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/RawPlusJpeg/Makefile.am b/extensions/Tools/RawPlusJpeg/Makefile.am
index 876e527..7fe9b4c 100644
--- a/extensions/Tools/RawPlusJpeg/Makefile.am
+++ b/extensions/Tools/RawPlusJpeg/Makefile.am
@@ -1,20 +1,10 @@
-addin = RawPlusJpeg
+ASSEMBLY = FSpot.Exporters.RawPlusJpeg
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_RAWPLUSJPEG)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = RawPlusJpeg.cs
 
-addin_sources =				\
-	$(addin).cs
+RESOURCES = RawPlusJpeg.addin.xml
 
-addin_resources =			\
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0			\
-	glade-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/RetroactiveRoll/Makefile.am b/extensions/Tools/RetroactiveRoll/Makefile.am
index 0ddb099..91e3a16 100644
--- a/extensions/Tools/RetroactiveRoll/Makefile.am
+++ b/extensions/Tools/RetroactiveRoll/Makefile.am
@@ -1,20 +1,10 @@
-addin = RetroactiveRoll
+ASSEMBLY = FSpot.Exporters.RetroactiveRoll
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_RETROACTIVEROLL)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = RetroactiveRoll.cs
 
-addin_sources =				\
-	$(addin).cs
+RESOURCES = RetroactiveRoll.addin.xml
 
-addin_resources =			\
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Posix 				\
-	Mono.Data.SqliteClient
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Tools/ScreensaverConfig/Makefile.am b/extensions/Tools/ScreensaverConfig/Makefile.am
index e0016c8..1edc011 100644
--- a/extensions/Tools/ScreensaverConfig/Makefile.am
+++ b/extensions/Tools/ScreensaverConfig/Makefile.am
@@ -1,20 +1,12 @@
-addin = ScreensaverConfig
+ASSEMBLY = FSpot.Exporters.ScreensaverConfig
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_SCREENSAVERCONFIG)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = ScreensaverConfig.cs
 
-addin_sources =				\
-	$(addin).cs
+RESOURCES = \
+	ScreensaverConfig.addin.xml \
+	ScreensaverConfigDialog.ui
 
-addin_resources =			\
-	ScreensaverConfigDialog.ui \
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Posix
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/extensions/Transitions/CoverTransition/Makefile.am b/extensions/Transitions/CoverTransition/Makefile.am
index db79db3..d55378a 100644
--- a/extensions/Transitions/CoverTransition/Makefile.am
+++ b/extensions/Transitions/CoverTransition/Makefile.am
@@ -1,19 +1,10 @@
-addin = CoverTransition
+ASSEMBLY = FSpot.Exporters.CoverTransition
+TARGET = library
+LINK = $(REF_FSPOT_EXTENSION_COVERTRANSITION)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
-addin_manifest = $(addin).addin.xml
+SOURCES = CoverTransition.cs
 
-addin_sources =				\
-	$(addin).cs
+RESOURCES = CoverTransition.addin.xml
 
-addin_resources =			\
-	$(addin_manifest)
-
-addin_references =			\
-	Mono.Cairo
-
-addin_packages =			\
-	gtk-sharp-2.0
-
-addin_extradist =
-
-include $(top_srcdir)/Makefile.addins
+include $(top_srcdir)/build/build.mk
diff --git a/lib/semweb/Makefile.am b/lib/semweb/Makefile.am
index 80c98c3..81bb777 100644
--- a/lib/semweb/Makefile.am
+++ b/lib/semweb/Makefile.am
@@ -1,51 +1,33 @@
-include $(top_srcdir)/Makefile.include
-
-ASSEMBLY_NAME = SemWeb
-
-ASSEMBLY_SOURCES =				\
-                $(srcdir)/AssemblyInfo.cs       \
-                $(srcdir)/NamespaceManager.cs   \
-                $(srcdir)/Util.cs               \
-                $(srcdir)/UriMap.cs             \
-                $(srcdir)/Resource.cs           \
-                $(srcdir)/Statement.cs          \
-                $(srcdir)/Store.cs              \
-                $(srcdir)/MemoryStore.cs        \
-                $(srcdir)/SQLStore.cs           \
-                $(srcdir)/RdfReader.cs          \
-                $(srcdir)/RdfXmlReader.cs       \
-                $(srcdir)/N3Reader.cs           \
-                $(srcdir)/RdfWriter.cs          \
-                $(srcdir)/RdfXmlWriter.cs       \
-                $(srcdir)/N3Writer.cs           \
-                $(srcdir)/RSquary.cs            \
-                $(srcdir)/LiteralFilters.cs     \
-                $(srcdir)/Query.cs              \
-                $(srcdir)/Inference.cs          \
-                $(srcdir)/RDFS.cs               \
-                $(srcdir)/Algos.cs              \
-                $(srcdir)/Remote.cs             \
-                $(srcdir)/XPathSemWebNavigator.cs             
-
-REFS =			\
-	-r:System.Data	\
-	-r:System.Web
-
-PKGS =
-
-ASSEMBLY = $(ASSEMBLY_NAME).dll
-
-all: $(ASSEMBLY)
-
-$(ASSEMBLY): $(ASSEMBLY_SOURCES)
-	$(CSC_LIB) -out:$@ $(PKGS) $(REFS) $(ASSEMBLY_SOURCES)
-
-assemblydir = $(pkglibdir)
-assembly_DATA =	$(ASSEMBLY)
-
-EXTRA_DIST =				\
-	$(ASSEMBLY_SOURCES)
-
-CLEANFILES =			\
-	$(ASSEMBLY)		\
-	$(ASSEMBLY).mdb
+ASSEMBLY = SemWeb
+TARGET = library
+LINK = $(REF_SEMWEB)
+
+SOURCES = \
+	NamespaceManager.cs \
+	Util.cs \
+	UriMap.cs \
+	Resource.cs \
+	Statement.cs \
+	Store.cs \
+	MemoryStore.cs \
+	SQLStore.cs \
+	RdfReader.cs \
+	RdfXmlReader.cs \
+	N3Reader.cs \
+	RdfWriter.cs \
+	RdfXmlWriter.cs \
+	N3Writer.cs \
+	RSquary.cs \
+	LiteralFilters.cs \
+	Query.cs \
+	Inference.cs \
+	RDFS.cs \
+	Algos.cs \
+	Remote.cs \
+	XPathSemWebNavigator.cs
+
+RESOURCES =
+
+ASSEMBLY_INFO_SOURCE = AssemblyInfo.cs
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/Bling/Makefile.am b/src/Bling/Makefile.am
new file mode 100644
index 0000000..d857bd4
--- /dev/null
+++ b/src/Bling/Makefile.am
@@ -0,0 +1,17 @@
+ASSEMBLY = FSpot.Bling
+TARGET = library
+LINK = $(REF_FSPOT_BLING)
+
+SOURCES = \
+	Animation.cs \
+	BackEase.cs \
+	CubicEase.cs \
+	DoubleAnimation.cs \
+	EasedAnimation.cs \
+	EasingFunction.cs \
+	EasingMode.cs \
+	QuinticEase.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/Cms.dll.config.in b/src/Cms/FSpot.Cms.dll.config.in
similarity index 100%
rename from src/Cms.dll.config.in
rename to src/Cms/FSpot.Cms.dll.config.in
diff --git a/src/Cms/Makefile.am b/src/Cms/Makefile.am
new file mode 100644
index 0000000..e32fd8d
--- /dev/null
+++ b/src/Cms/Makefile.am
@@ -0,0 +1,28 @@
+ASSEMBLY = FSpot.Cms
+ASSEMBLY_BUILD_FLAGS = -unsafe
+TARGET = library
+LINK = $(REF_FSPOT_CMS)
+
+SOURCES = \
+	CctTable.cs \
+	CmsException.cs \
+	ColorCIELab.cs \
+	ColorCIELCh.cs \
+	ColorCIExyY.cs \
+	ColorCIEXYZ.cs \
+	Format.cs \
+	GammaTable.cs \
+	IccColorSpace.cs \
+	IccProfileClass.cs \
+	Intent.cs \
+	NativeMethods.cs \
+	Profile.cs \
+	SaveException.cs \
+	Transform.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
+
+EXTRA_DIST += FSpot.Cms.dll.config
+module_SCRIPTS += FSpot.Cms.dll.config
diff --git a/src/FSpot.Core.dll.config.in b/src/Core/FSpot.Core.dll.config.in
similarity index 100%
rename from src/FSpot.Core.dll.config.in
rename to src/Core/FSpot.Core.dll.config.in
diff --git a/src/Core/Makefile.am b/src/Core/Makefile.am
new file mode 100644
index 0000000..1dd2488
--- /dev/null
+++ b/src/Core/Makefile.am
@@ -0,0 +1,33 @@
+ASSEMBLY = FSpot.Core
+TARGET = library
+LINK = $(REF_FSPOT_CORE)
+
+SOURCES = \
+	BrowsableEventArgs.cs \
+	BrowsablePointer.cs \
+	BrowsablePointerChangedEventArgs.cs \
+	Category.cs \
+	DbItem.cs \
+	Delay.cs \
+	Tag.cs \
+	Global.cs \
+	IBrowsableItem.cs \
+	IBrowsableItemChanges.cs \
+	IBrowsableItemComparer.cs \
+	IBrowsableItemExtensions.cs \
+	IBrowsableItemVersion.cs \
+	IBrowsableItemVersionable.cs \
+	IBrowsableCollection.cs \
+	PhotoChanges.cs \
+	PhotosChanges.cs \
+	Roll.cs \
+	SafeUri.cs \
+	SafeUriExtensions.cs \
+	Defines.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
+
+EXTRA_DIST += FSpot.Core.dll.config
+module_SCRIPTS += FSpot.Core.dll.config
diff --git a/src/JobScheduler/Makefile.am b/src/JobScheduler/Makefile.am
new file mode 100644
index 0000000..ea7b555
--- /dev/null
+++ b/src/JobScheduler/Makefile.am
@@ -0,0 +1,16 @@
+ASSEMBLY = FSpot.JobScheduler
+TARGET = library
+LINK = $(REF_FSPOT_JOB_SCHEDULER)
+
+SOURCES =  \
+	FSpotCompat.cs \
+	IInstanceCriticalJob.cs \
+	IJob.cs \
+	IntervalHeap.cs \
+	JobPriority.cs \
+	JobStatus.cs \
+	Scheduler.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/Makefile.am b/src/Makefile.am
index fac633c..9d46a94 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,599 +1,231 @@
-include $(top_srcdir)/Makefile.include
-UNSAFE = -unsafe
-NOWARN = -nowarn:0169 -nowarn:0612 -nowarn:0414  
-EXTRAFLAGS = -d:TEST_METADATA -d:BROKEN_RSVG -d:GSD_2_24 $(CSC_DEFINES)
-
-CMS_CSDISTFILES =				\
-	$(srcdir)/Cms/CctTable.cs		\
-	$(srcdir)/Cms/CmsException.cs		\
-	$(srcdir)/Cms/ColorCIELab.cs		\
-	$(srcdir)/Cms/ColorCIELCh.cs		\
-	$(srcdir)/Cms/ColorCIExyY.cs		\
-	$(srcdir)/Cms/ColorCIEXYZ.cs		\
-	$(srcdir)/Cms/Format.cs			\
-	$(srcdir)/Cms/GammaTable.cs		\
-	$(srcdir)/Cms/IccColorSpace.cs		\
-	$(srcdir)/Cms/IccProfileClass.cs	\
-	$(srcdir)/Cms/Intent.cs			\
-	$(srcdir)/Cms/NativeMethods.cs		\
-	$(srcdir)/Cms/Profile.cs		\
-	$(srcdir)/Cms/SaveException.cs		\
-	$(srcdir)/Cms/Transform.cs
-
-CORE_CSDISTFILES =				\
-	$(srcdir)/Core/BrowsableEventArgs.cs	\
-	$(srcdir)/Core/BrowsablePointer.cs	\
-	$(srcdir)/Core/BrowsablePointerChangedEventArgs.cs	\
-	$(srcdir)/Core/Category.cs		\
-	$(srcdir)/Core/DbItem.cs		\
-	$(srcdir)/Core/Delay.cs			\
-	$(srcdir)/Core/Tag.cs			\
-	$(srcdir)/Core/Global.cs		\
-	$(srcdir)/Core/IBrowsableItem.cs	\
-	$(srcdir)/Core/IBrowsableItemChanges.cs	\
-	$(srcdir)/Core/IBrowsableItemComparer.cs	\
-	$(srcdir)/Core/IBrowsableItemExtensions.cs	\
-	$(srcdir)/Core/IBrowsableItemVersion.cs	\
-	$(srcdir)/Core/IBrowsableItemVersionable.cs	\
-	$(srcdir)/Core/IBrowsableCollection.cs	\
-	$(srcdir)/Core/PhotoChanges.cs		\
-	$(srcdir)/Core/PhotosChanges.cs		\
-	$(srcdir)/Core/Roll.cs 				\
-	$(srcdir)/Core/SafeUri.cs 			\
-	$(srcdir)/Core/SafeUriExtensions.cs
-
-QUERY_CSDISTFILES =				\
-	$(srcdir)/Query/DateRange.cs		\
-	$(srcdir)/Query/FolderSet.cs		\
-	$(srcdir)/Query/IOrderCondition.cs	\
-	$(srcdir)/Query/IQueryCondition.cs	\
-	$(srcdir)/Query/LogicalTerm.cs		\
-	$(srcdir)/Query/OrderByTime.cs		\
-	$(srcdir)/Query/RatingRange.cs		\
-	$(srcdir)/Query/RollSet.cs		\
-	$(srcdir)/Query/TagConditionWrapper.cs	\
-	$(srcdir)/Query/UntaggedCondition.cs
-
-UTILS_CSDISTFILES =				\
-	$(srcdir)/Utils/Cache.cs		\
-	$(srcdir)/Utils/CairoUtils.cs		\
-	$(srcdir)/Utils/ConsoleCrayon.cs	\
-	$(srcdir)/Utils/DbUtils.cs		\
-	$(srcdir)/Utils/FileExtensions.cs	\
-	$(srcdir)/Utils/GdkUtils.cs		\
-	$(srcdir)/Utils/GtkUtil.cs		\
-	$(srcdir)/Utils/PixbufOrientation.cs	\
-	$(srcdir)/Utils/PixbufUtils.cs		\
-	$(srcdir)/Utils/RecursiveFileEnumerator.cs		\
-	$(srcdir)/Utils/Unix.cs			\
-	$(srcdir)/Utils/UriExtensions.cs			\
-	$(srcdir)/Utils/UriUtils.cs
-
-JOBSCHEDULER_CSDISTFILES =				\
-	$(srcdir)/JobScheduler/FSpotCompat.cs		\
-	$(srcdir)/JobScheduler/IInstanceCriticalJob.cs	\
-	$(srcdir)/JobScheduler/IJob.cs			\
-	$(srcdir)/JobScheduler/IntervalHeap.cs		\
-	$(srcdir)/JobScheduler/JobPriority.cs		\
-	$(srcdir)/JobScheduler/JobStatus.cs		\
-	$(srcdir)/JobScheduler/Scheduler.cs
-
-BLING_CSDISTFILES =					\
-	$(srcdir)/Bling/Animation.cs		\
-	$(srcdir)/Bling/BackEase.cs		\
-	$(srcdir)/Bling/CubicEase.cs		\
-	$(srcdir)/Bling/DoubleAnimation.cs	\
-	$(srcdir)/Bling/EasedAnimation.cs	\
-	$(srcdir)/Bling/EasingFunction.cs	\
-	$(srcdir)/Bling/EasingMode.cs		\
-	$(srcdir)/Bling/QuinticEase.cs
-
-WIDGETS_CSDISTFILES =				\
-	$(srcdir)/Widgets/ApplicationActivatedEventArgs.cs	\
-	$(srcdir)/Widgets/BuilderWindow.cs	\
-	$(srcdir)/Widgets/CheckPattern.cs	\
-	$(srcdir)/Widgets/ComplexMenuItem.cs	\
-	$(srcdir)/Widgets/Curve.cs		\
-	$(srcdir)/Widgets/CurveType.cs		\
-	$(srcdir)/Widgets/CustomPrintWidget.cs	\
-	$(srcdir)/Widgets/DateEdit.cs		\
-	$(srcdir)/Widgets/DateEditFlags.cs	\
-	$(srcdir)/Widgets/DissolveTransition.cs	\
-	$(srcdir)/Widgets/HighlightedBox.cs	\
-	$(srcdir)/Widgets/ImageView.cs		\
-	$(srcdir)/Widgets/Layout.cs		\
-	$(srcdir)/Widgets/MenuButton.cs		\
-	$(srcdir)/Widgets/OpenWithMenu.cs	\
-	$(srcdir)/Widgets/PointerMode.cs	\
-	$(srcdir)/Widgets/Rating.cs		\
-	$(srcdir)/Widgets/SaneTreeView.cs	\
-	$(srcdir)/Widgets/ScrolledView.cs	\
-	$(srcdir)/Widgets/PushTransition.cs	\
-	$(srcdir)/Widgets/CairoTransition.cs	\
-	$(srcdir)/Widgets/SlideShowTransition.cs
-
-GNOME_PLATFORM_CSDISTFILES =				\
-	$(srcdir)/Platform/Gnome/Desktop.cs		\
-	$(srcdir)/Platform/Gnome/PreferenceBackend.cs	\
-	$(srcdir)/Platform/Gnome/ScreenSaver.cs		\
-	$(srcdir)/Platform/Gnome/ThumbnailFactory.cs	\
-	$(srcdir)/Platform/Gnome/WebProxy.cs
-
-NULL_PLATFORM_CSDISTFILES =				\
-	$(srcdir)/Platform/Null/Desktop.cs		\
-	$(srcdir)/Platform/Null/PreferenceBackend.cs	\
-	$(srcdir)/Platform/Null/ScreenSaver.cs		\
-	$(srcdir)/Platform/Null/ThumbnailFactory.cs	\
-	$(srcdir)/Platform/Null/WebProxy.cs
-
-F_SPOT_CSDISTFILES =				\
-	$(srcdir)/BlockProcessor.cs		\
-	$(srcdir)/BitConverter.cs		\
-	$(srcdir)/PhotoList.cs 		\
-	$(srcdir)/ColorAdjustment/Adjustment.cs		\
-	$(srcdir)/ColorAdjustment/AutoStretch.cs		\
-	$(srcdir)/ColorAdjustment/Desaturate.cs		\
-	$(srcdir)/ColorAdjustment/FullColorAdjustment.cs		\
-	$(srcdir)/ColorAdjustment/SepiaTone.cs		\
-	$(srcdir)/ControlOverlay.cs		\
-	$(srcdir)/Core/App.cs			\
-	$(srcdir)/Core/ColorManagement.cs	\
-	$(srcdir)/Core/Photo.cs			\
-	$(srcdir)/Core/PhotoVersion.cs		\
-	$(srcdir)/Db.cs				\
-	$(srcdir)/DependentListStore.cs		\
-	$(srcdir)/DragDropTargets.cs				\
-	$(srcdir)/Editors/Editor.cs		\
-	$(srcdir)/Editors/AutoStretchEditor.cs		\
-	$(srcdir)/Editors/CropEditor.cs		\
-	$(srcdir)/Editors/ColorEditor.cs		\
-	$(srcdir)/Editors/DesaturateEditor.cs		\
-	$(srcdir)/Editors/RedEyeEditor.cs		\
-	$(srcdir)/Editors/SepiaEditor.cs		\
-	$(srcdir)/Editors/SoftFocusEditor.cs		\
-	$(srcdir)/Editors/TiltEditor.cs		\
-	$(srcdir)/ExportStore.cs		\
-	$(srcdir)/Extensions/ExportMenuItemNode.cs	\
-	$(srcdir)/Extensions/IExporter.cs	\
-	$(srcdir)/Extensions/ICommand.cs	\
-	$(srcdir)/Extensions/IMenuGenerator.cs	\
-	$(srcdir)/Extensions/IService.cs	\
-	$(srcdir)/Extensions/MenuNode.cs	\
-	$(srcdir)/Extensions/CommandMenuItemNode.cs	\
-	$(srcdir)/Extensions/ComplexMenuItemNode.cs	\
-	$(srcdir)/Extensions/PhotoSelectionCondition.cs	\
-	$(srcdir)/Extensions/PopupCommands.cs	\
-	$(srcdir)/Extensions/ServiceNode.cs	\
-	$(srcdir)/Extensions/SidebarPage.cs	\
-	$(srcdir)/Extensions/SidebarPageNode.cs	\
-	$(srcdir)/Extensions/TransitionNode.cs	\
-	$(srcdir)/Extensions/ViewModeCondition.cs	\
-	$(srcdir)/Fader.cs			\
-	$(srcdir)/FileImportBackend.cs		\
-	$(srcdir)/FileBrowsableItem.cs		\
-	$(srcdir)/Filters/ChmodFilter.cs	\
-	$(srcdir)/Filters/FilterRequest.cs	\
-	$(srcdir)/Filters/FilterSet.cs		\
-	$(srcdir)/Filters/IFilter.cs		\
-	$(srcdir)/Filters/JpegFilter.cs		\
-	$(srcdir)/Filters/OrientationFilter.cs	\
-	$(srcdir)/Filters/ResizeFilter.cs	\
-	$(srcdir)/Filters/SharpFilter.cs	\
-	$(srcdir)/Filters/UniqueNameFilter.cs	\
-	$(srcdir)/Filters/WhiteListFilter.cs	\
-	$(srcdir)/FolderQueryWidget.cs			\
-	$(srcdir)/FullScreenView.cs		\
-	$(srcdir)/GroupAdaptor.cs		\
-	$(srcdir)/GroupSelector.cs		\
-	$(srcdir)/Accelerometer.cs		\
-	$(srcdir)/Histogram.cs			\
-	$(srcdir)/Loaders/AreaPreparedEventArgs.cs		\
-	$(srcdir)/Loaders/AreaUpdatedEventArgs.cs		\
-	$(srcdir)/Loaders/ImageLoader.cs		\
-	$(srcdir)/Loaders/IImageLoader.cs		\
-	$(srcdir)/Loaders/GdkImageLoader.cs		\
-	$(srcdir)/ImageLoaderThread.cs		\
-	$(srcdir)/ImportBackend.cs		\
-	$(srcdir)/ImportCommand.cs		\
-	$(srcdir)/InfoOverlay.cs		\
-	$(srcdir)/InternalProcess.cs		\
-	$(srcdir)/IOChannel.cs			\
-	$(srcdir)/ItemAction.cs			\
-	$(srcdir)/Imaging/DCRawFile.cs		\
-	$(srcdir)/Imaging/Bim.cs		\
-	$(srcdir)/Imaging/Ciff.cs		\
-	$(srcdir)/Imaging/Exif.cs		\
-	$(srcdir)/Imaging/ImageFile.cs		\
-	$(srcdir)/Imaging/IptcFile.cs		\
-	$(srcdir)/Imaging/JpegFile.cs		\
-	$(srcdir)/Imaging/JpegHeader.cs		\
-	$(srcdir)/Imaging/JpegUtils.cs		\
-	$(srcdir)/Imaging/MrwFile.cs		\
-	$(srcdir)/Imaging/OrderedWriter.cs	\
-	$(srcdir)/Imaging/PngFile.cs		\
-	$(srcdir)/Imaging/PnmFile.cs		\
-	$(srcdir)/Imaging/RafFile.cs		\
-	$(srcdir)/Imaging/SvgFile.cs		\
-	$(srcdir)/Imaging/X3fFile.cs		\
-	$(srcdir)/Imaging/XmpFile.cs		\
-	$(srcdir)/Imaging/Tiff.cs		\
-	$(srcdir)/JobStore.cs			\
-	$(srcdir)/Jobs/SyncMetadataJob.cs	\
-	$(srcdir)/Jobs/CalculateHashJob.cs	\
-	$(srcdir)/Loupe.cs			\
-	$(srcdir)/MainWindow.cs			\
-	$(srcdir)/MemorySurface.cs		\
-	$(srcdir)/MetaStore.cs			\
-	$(srcdir)/MetadataStore.cs		\
-	$(srcdir)/PhotoEventArgs.cs		\
-	$(srcdir)/PhotoImageView.cs		\
-	$(srcdir)/PhotoLoader.cs		\
-	$(srcdir)/PhotoPopup.cs			\
-	$(srcdir)/PhotoQuery.cs			\
-	$(srcdir)/PhotoStore.cs			\
-	$(srcdir)/PhotoTagMenu.cs		\
-	$(srcdir)/PhotoVersionCommands.cs	\
-	$(srcdir)/PhotoVersionMenu.cs		\
-	$(srcdir)/PhotoView.cs			\
-	$(srcdir)/PixbufUtils.cs		\
-	$(srcdir)/PixbufCache.cs		\
-	$(srcdir)/PixelBuffer.cs		\
-	$(srcdir)/Preferences.cs 		\
-	$(srcdir)/PrintOperation.cs		\
-	$(srcdir)/ProgressItem.cs		\
-	$(srcdir)/QueuedSqliteDatabase.cs	\
-	$(srcdir)/RotateCommand.cs		\
-	$(srcdir)/RollStore.cs			\
-	$(srcdir)/SelectionDataExtensions.cs	\
-	$(srcdir)/SendEmail.cs                  \
-	$(srcdir)/XScreenSaverSlide.cs		\
-	$(srcdir)/SingleView.cs			\
-	$(srcdir)/Sharpener.cs			\
-	$(srcdir)/SoftFocus.cs		\
-	$(srcdir)/TagCommands.cs		\
-	$(srcdir)/TagPopup.cs			\
-	$(srcdir)/TagQueryWidget.cs		\
-	$(srcdir)/TagSelectionWidget.cs		\
-	$(srcdir)/TagStore.cs			\
-	$(srcdir)/ThumbnailCache.cs		\
-	$(srcdir)/ThumbnailGenerator.cs		\
-	$(srcdir)/Term.cs			\
-	$(srcdir)/TimeAdaptor.cs		\
-	$(srcdir)/TipWindow.cs			\
-	$(srcdir)/UI.Dialog/AboutDialog.cs	\
-	$(srcdir)/UI.Dialog/AdjustTimeDialog.cs	\
-	$(srcdir)/UI.Dialog/BuilderDialog.cs	\
-	$(srcdir)/UI.Dialog/DateRangeDialog.cs		\
-	$(srcdir)/UI.Dialog/EditExceptionDialog.cs	\
-	$(srcdir)/UI.Dialog/EditTagDialog.cs	\
-	$(srcdir)/UI.Dialog/EditTagIconDialog.cs	\
-	$(srcdir)/UI.Dialog/ExceptionDialog.cs	\
-	$(srcdir)/UI.Dialog/GladeDialog.cs	\
-	$(srcdir)/UI.Dialog/HigMessageDialog.cs	\
-	$(srcdir)/UI.Dialog/LastRollDialog.cs		\
-	$(srcdir)/UI.Dialog/PreferenceDialog.cs		\
-	$(srcdir)/UI.Dialog/ProgressDialog.cs		\
-	$(srcdir)/UI.Dialog/RatingFilterDialog.cs	\
-	$(srcdir)/UI.Dialog/RepairDbDialog.cs		\
-	$(srcdir)/UI.Dialog/SelectionRatioDialog.cs	\
-	$(srcdir)/UI.Dialog/TagSelectionDialog.cs	\
-	$(srcdir)/UI.Dialog/ThreadProgressDialog.cs	\
-	$(srcdir)/Updater.cs			\
-	$(srcdir)/UriCollection.cs		\
-	$(srcdir)/Util.cs			\
-	$(srcdir)/Vector.cs			\
-	$(srcdir)/ThumbnailCommand.cs		\
-	$(srcdir)/QueryWidget.cs		\
-	$(srcdir)/Query/HiddenTag.cs		\
-	$(srcdir)/Widgets/SlideShow.cs		\
-	$(srcdir)/Widgets/CompositeUtils.cs	\
-	$(srcdir)/Widgets/Dissolve.cs		\
-	$(srcdir)/Widgets/EditorPage.cs		\
-	$(srcdir)/Widgets/Filmstrip.cs		\
-	$(srcdir)/Widgets/FindBar.cs		\
-	$(srcdir)/Widgets/FolderTreePage.cs	\
-	$(srcdir)/Widgets/FolderTreeView.cs	\
-	$(srcdir)/Widgets/FolderTreeModel.cs	\
-	$(srcdir)/Widgets/CellRendererTextProgress.cs\
-	$(srcdir)/Widgets/IEffect.cs		\
-	$(srcdir)/Widgets/ITransition.cs	\
-	$(srcdir)/Widgets/IconView.cs		\
-	$(srcdir)/Widgets/ImageDisplay.cs	\
-	$(srcdir)/Widgets/ImageInfo.cs		\
-	$(srcdir)/Widgets/InfoBox.cs		\
-	$(srcdir)/Widgets/MetadataDisplay.cs		\
-	$(srcdir)/Widgets/PanZoom.cs		\
-	$(srcdir)/Widgets/PreviewPopup.cs 	\
-	$(srcdir)/Widgets/Push.cs		\
-	$(srcdir)/Widgets/QueryView.cs		\
-	$(srcdir)/Widgets/RatingMenuItem.cs	\
-	$(srcdir)/Widgets/Reveal.cs		\
-	$(srcdir)/Widgets/ScalingIconView.cs	\
-	$(srcdir)/Widgets/Sidebar.cs		\
-	$(srcdir)/Widgets/TagEntry.cs		\
-	$(srcdir)/Widgets/TagMenu.cs		\
-	$(srcdir)/Widgets/TagView.cs		\
-	$(srcdir)/Widgets/TrayView.cs		\
-	$(srcdir)/Widgets/ViewContext.cs		\
-	$(srcdir)/Widgets/Wipe.cs		\
-	$(srcdir)/XmpTagsImporter.cs		\
-	$(srcdir)/main.cs
-
-if !NOGCONF
-GCONF_PKG = -pkg:gconf-sharp-2.0
-endif
-
-CMS_ASSEMBLIES = 				\
-	$(NUNIT_LIBS)				\
-	-pkg:gtk-sharp-2.0
-
-CORE_ASSEMBLIES =				\
-	$(LINK_GIOSHARP)			\
-	-pkg:gtk-sharp-2.0			\
-	-r:Cms.dll				\
-	-r:Mono.Posix				\
-	-r:FSpot.Utils.dll			\
-	$(LINK_HYENA)
-
-QUERY_ASSEMBLIES =				\
-	$(LINK_GIOSHARP)			\
-	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll			\
-	$(LINK_HYENA)
-
-UTILS_ASSEMBLIES =				\
-	-pkg:gtk-sharp-2.0			\
-	-pkg:gnome-sharp-2.0			\
-	-r:Mono.Posix				\
-	-r:Mono.Cairo				\
-	$(LINK_GIOSHARP)			\
-	$(GCONF_PKG)				\
-	$(LINK_HYENA)
-
-
-JOBSCHEDULER_ASSEMBLIES =			\
-	$(LINK_GIOSHARP)			\
-	-r:FSpot.Utils.dll				\
-	$(LINK_HYENA)
-
-BLING_ASSEMBLIES =				\
-	-pkg:gtk-sharp-2.0			\
-	-r:Mono.Cairo				\
-	$(LINK_GIOSHARP)			\
-	$(LINK_GTKSHARPBEANS)
-
-WIDGETS_ASSEMBLIES =				\
-	$(LINK_GIOSHARP)			\
-	-pkg:gtk-sharp-2.0			\
-	-pkg:gnome-sharp-2.0			\
-	-pkg:mono-addins			\
-	$(LINK_GTKSHARPBEANS)			\
-	-r:Mono.Cairo				\
-	-r:Cms.dll				\
-	-r:Mono.Posix				\
-	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll			\
-	$(LINK_HYENA)
-
-GNOME_PLATFORM_ASSEMBLIES =			\
-	$(LINK_GIOSHARP)			\
-	-pkg:gnome-sharp-2.0			\
-	-pkg:gtk-sharp-2.0			\
-	-pkg:gconf-sharp-2.0			\
-	$(NDESK_DBUS_LIBS)				\
-	-r:Mono.Posix				\
-	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll				\
-	$(LINK_HYENA)
-
-NULL_PLATFORM_ASSEMBLIES =			\
-	-r:FSpot.Core.dll			\
-	-r:FSpot.Utils.dll
-
-F_SPOT_ASSEMBLIES = 				\
-	$(LINK_GPHOTO2)				\
-	$(LINK_FLICKR)				\
-	$(LINK_KEYRING)				\
-	$(LINK_SMUGMUG)				\
-	$(LINK_SEMWEB)				\
-	$(LINK_GTKSHARPBEANS)			\
-	$(LINK_GIOSHARP)			\
-	$(LINK_UNIQUESHARP)			\
-	-r:System.Data				\
-	-r:Mono.Data.SqliteClient		\
-	-r:Mono.Posix				\
-	-r:Mono.Security			\
-	-r:Mono.Cairo				\
-	-r:ICSharpCode.SharpZipLib		\
-	-r:FSpot.Core.dll			\
-	-r:FSpot.Query.dll			\
-	-r:FSpot.Utils.dll			\
-	-r:FSpot.JobScheduler.dll		\
-	-r:FSpot.Bling.dll			\
-	-r:FSpot.Widgets.dll			\
-	-r:FSpot.Platform.dll			\
-	-r:Cms.dll				\
-	$(NUNIT_LIBS)				\
-	$(NDESK_DBUS_LIBS)				\
-	$(GCONF_PKG)				\
-	$(GTKHTML_SHARP_PKG)			\
-	-pkg:mono-addins			\
-	-pkg:mono-addins-setup			\
-	-pkg:mono-addins-gui			\
-	-pkg:glade-sharp-2.0			\
-	-pkg:gnome-sharp-2.0			\
-	$(LINK_HYENA)
-
-F_SPOT_DISTRESOURCES =					\
-	$(srcdir)/dces.rdf				\
-	$(srcdir)/f-spot.glade				\
-	$(srcdir)/ui/main_window.ui			\
-	$(srcdir)/UI.Dialog/ui/AdjustTimeDialog.ui	\
-	$(srcdir)/UI.Dialog/ui/DateRangeDialog.ui	\
-	$(srcdir)/UI.Dialog/ui/EditTagDialog.ui		\
-	$(srcdir)/UI.Dialog/ui/EditTagIconDialog.ui		\
-	$(srcdir)/UI.Dialog/ui/PreferenceDialog.ui	\
-	$(srcdir)/UI.Dialog/ui/RatingFilterDialog.ui	\
-	$(srcdir)/FSpot.addin.xml
-
-F_SPOT_RESOURCES =					\
-	$(F_SPOT_DISTRESOURCES)				\
-	$(top_srcdir)/COPYING				\
-	$(top_srcdir)/icons/f-spot-not.png		\
-	$(top_srcdir)/icons/f-spot-128.png		\
-	$(top_srcdir)/icons/flower.png
-
-RESOURCES = $(foreach res,$(F_SPOT_RESOURCES), $(addprefix -resource:,$(res)),$(notdir $(res)))
-
-fspotlibdir = $(libdir)/f-spot
-fspotlib_DATA = f-spot.exe.config	\
-		f-spot.exe		\
-		f-spot.exe.mdb		\
-		Cms.dll.config		\
-		Cms.dll			\
-		Cms.dll.mdb		\
-		FSpot.Utils.dll		\
-		FSpot.Utils.dll.mdb	\
-		FSpot.Utils.dll.config	\
-		FSpot.Query.dll		\
-		FSpot.Query.dll.mdb	\
-		FSpot.Core.dll		\
-		FSpot.Core.dll.mdb	\
-		FSpot.Core.dll.config	\
-		FSpot.JobScheduler.dll	\
-		FSpot.JobScheduler.dll.mdb \
-		FSpot.Bling.dll		\
-		FSpot.Bling.dll.mdb \
-		FSpot.Widgets.dll	\
-		FSpot.Widgets.dll.mdb	\
-		FSpot.Widgets.dll.config\
-		FSpot.Platform.dll	\
-		FSpot.Platform.dll.mdb
+SUBDIRS = \
+	Cms \
+	Utils \
+	Core \
+	Query \
+	JobScheduler \
+	Bling \
+	Platform \
+	Widgets
+
+ASSEMBLY = f-spot
+TARGET = exe
+LINK = $(REF_FSPOT)
+ASSEMBLY_BUILD_FLAGS = -unsafe
+
+SOURCES = \
+	BlockProcessor.cs \
+	BitConverter.cs \
+	PhotoList.cs \
+	ColorAdjustment/Adjustment.cs \
+	ColorAdjustment/AutoStretch.cs \
+	ColorAdjustment/Desaturate.cs \
+	ColorAdjustment/FullColorAdjustment.cs \
+	ColorAdjustment/SepiaTone.cs \
+	ControlOverlay.cs \
+	Core/App.cs \
+	Core/ColorManagement.cs \
+	Core/Photo.cs \
+	Core/PhotoVersion.cs \
+	Db.cs \
+	DependentListStore.cs \
+	DragDropTargets.cs \
+	Editors/Editor.cs \
+	Editors/AutoStretchEditor.cs \
+	Editors/CropEditor.cs \
+	Editors/ColorEditor.cs \
+	Editors/DesaturateEditor.cs \
+	Editors/RedEyeEditor.cs \
+	Editors/SepiaEditor.cs \
+	Editors/SoftFocusEditor.cs \
+	Editors/TiltEditor.cs \
+	ExportStore.cs \
+	Extensions/ExportMenuItemNode.cs \
+	Extensions/IExporter.cs \
+	Extensions/ICommand.cs \
+	Extensions/IMenuGenerator.cs \
+	Extensions/IService.cs \
+	Extensions/MenuNode.cs \
+	Extensions/CommandMenuItemNode.cs \
+	Extensions/ComplexMenuItemNode.cs \
+	Extensions/PhotoSelectionCondition.cs \
+	Extensions/PopupCommands.cs \
+	Extensions/ServiceNode.cs \
+	Extensions/SidebarPage.cs \
+	Extensions/SidebarPageNode.cs \
+	Extensions/TransitionNode.cs \
+	Extensions/ViewModeCondition.cs \
+	Fader.cs \
+	FileImportBackend.cs \
+	FileBrowsableItem.cs \
+	Filters/ChmodFilter.cs \
+	Filters/FilterRequest.cs \
+	Filters/FilterSet.cs \
+	Filters/IFilter.cs \
+	Filters/JpegFilter.cs \
+	Filters/OrientationFilter.cs \
+	Filters/ResizeFilter.cs \
+	Filters/SharpFilter.cs \
+	Filters/UniqueNameFilter.cs \
+	Filters/WhiteListFilter.cs \
+	FolderQueryWidget.cs \
+	FullScreenView.cs \
+	GroupAdaptor.cs \
+	GroupSelector.cs \
+	Accelerometer.cs \
+	Histogram.cs \
+	Loaders/AreaPreparedEventArgs.cs \
+	Loaders/AreaUpdatedEventArgs.cs \
+	Loaders/ImageLoader.cs \
+	Loaders/IImageLoader.cs \
+	Loaders/GdkImageLoader.cs \
+	ImageLoaderThread.cs \
+	ImportBackend.cs \
+	ImportCommand.cs \
+	InfoOverlay.cs \
+	InternalProcess.cs \
+	IOChannel.cs \
+	ItemAction.cs \
+	Imaging/DCRawFile.cs \
+	Imaging/Bim.cs \
+	Imaging/Ciff.cs \
+	Imaging/Exif.cs \
+	Imaging/ImageFile.cs \
+	Imaging/IptcFile.cs \
+	Imaging/JpegFile.cs \
+	Imaging/JpegHeader.cs \
+	Imaging/JpegUtils.cs \
+	Imaging/MrwFile.cs \
+	Imaging/OrderedWriter.cs \
+	Imaging/PngFile.cs \
+	Imaging/PnmFile.cs \
+	Imaging/RafFile.cs \
+	Imaging/SvgFile.cs \
+	Imaging/X3fFile.cs \
+	Imaging/XmpFile.cs \
+	Imaging/Tiff.cs \
+	JobStore.cs \
+	Jobs/SyncMetadataJob.cs \
+	Jobs/CalculateHashJob.cs \
+	Loupe.cs \
+	MainWindow.cs \
+	MemorySurface.cs \
+	MetaStore.cs \
+	MetadataStore.cs \
+	PhotoEventArgs.cs \
+	PhotoImageView.cs \
+	PhotoLoader.cs \
+	PhotoPopup.cs \
+	PhotoQuery.cs \
+	PhotoStore.cs \
+	PhotoTagMenu.cs \
+	PhotoVersionCommands.cs \
+	PhotoVersionMenu.cs \
+	PhotoView.cs \
+	PixbufUtils.cs \
+	PixbufCache.cs \
+	PixelBuffer.cs \
+	Preferences.cs  \
+	PrintOperation.cs \
+	ProgressItem.cs \
+	QueuedSqliteDatabase.cs \
+	RotateCommand.cs \
+	RollStore.cs \
+	SelectionDataExtensions.cs \
+	SendEmail.cs \
+	XScreenSaverSlide.cs \
+	SingleView.cs \
+	Sharpener.cs \
+	SoftFocus.cs \
+	TagCommands.cs \
+	TagPopup.cs \
+	TagQueryWidget.cs \
+	TagSelectionWidget.cs \
+	TagStore.cs \
+	ThumbnailCache.cs \
+	ThumbnailGenerator.cs \
+	Term.cs \
+	TimeAdaptor.cs \
+	TipWindow.cs \
+	UI.Dialog/AboutDialog.cs \
+	UI.Dialog/AdjustTimeDialog.cs \
+	UI.Dialog/BuilderDialog.cs \
+	UI.Dialog/DateRangeDialog.cs \
+	UI.Dialog/EditExceptionDialog.cs \
+	UI.Dialog/EditTagDialog.cs \
+	UI.Dialog/EditTagIconDialog.cs \
+	UI.Dialog/ExceptionDialog.cs \
+	UI.Dialog/GladeDialog.cs \
+	UI.Dialog/HigMessageDialog.cs \
+	UI.Dialog/LastRollDialog.cs \
+	UI.Dialog/PreferenceDialog.cs \
+	UI.Dialog/ProgressDialog.cs \
+	UI.Dialog/RatingFilterDialog.cs \
+	UI.Dialog/RepairDbDialog.cs \
+	UI.Dialog/SelectionRatioDialog.cs \
+	UI.Dialog/TagSelectionDialog.cs \
+	UI.Dialog/ThreadProgressDialog.cs \
+	Updater.cs \
+	UriCollection.cs \
+	Util.cs \
+	Vector.cs \
+	ThumbnailCommand.cs \
+	QueryWidget.cs \
+	Query/HiddenTag.cs \
+	Widgets/SlideShow.cs \
+	Widgets/CompositeUtils.cs \
+	Widgets/Dissolve.cs \
+	Widgets/EditorPage.cs \
+	Widgets/Filmstrip.cs \
+	Widgets/FindBar.cs \
+	Widgets/FolderTreePage.cs \
+	Widgets/FolderTreeView.cs \
+	Widgets/FolderTreeModel.cs \
+	Widgets/CellRendererTextProgress.cs\
+	Widgets/IEffect.cs \
+	Widgets/ITransition.cs \
+	Widgets/IconView.cs \
+	Widgets/ImageDisplay.cs \
+	Widgets/ImageInfo.cs \
+	Widgets/InfoBox.cs \
+	Widgets/MetadataDisplay.cs \
+	Widgets/PanZoom.cs \
+	Widgets/PreviewPopup.cs  \
+	Widgets/Push.cs \
+	Widgets/QueryView.cs \
+	Widgets/RatingMenuItem.cs \
+	Widgets/Reveal.cs \
+	Widgets/ScalingIconView.cs \
+	Widgets/Sidebar.cs \
+	Widgets/TagEntry.cs \
+	Widgets/TagMenu.cs \
+	Widgets/TagView.cs \
+	Widgets/TrayView.cs \
+	Widgets/ViewContext.cs \
+	Widgets/Wipe.cs \
+	XmpTagsImporter.cs \
+	main.cs
+
+
+RESOURCES = \
+	../COPYING \
+	../icons/f-spot-not.png \
+	../icons/f-spot-128.png \
+	../icons/flower.png \
+	dces.rdf \
+	f-spot.glade \
+	ui/main_window.ui \
+	UI.Dialog/ui/AdjustTimeDialog.ui \
+	UI.Dialog/ui/DateRangeDialog.ui \
+	UI.Dialog/ui/EditTagDialog.ui \
+	UI.Dialog/ui/EditTagIconDialog.ui \
+	UI.Dialog/ui/PreferenceDialog.ui \
+	UI.Dialog/ui/RatingFilterDialog.ui \
+	FSpot.addin.xml
+
+include $(top_srcdir)/build/build.mk
 
 bin_SCRIPTS = f-spot
+EXTRA_DIST += f-spot.exe.config
+module_SCRIPTS += f-spot.exe.config
 
-CMS_CSFILES = $(CMS_CSDISTFILES)
-
-CORE_CSFILES = $(CORE_CSDISTFILES)	\
-	Core/Defines.cs	
-
-QUERY_CSFILES = $(QUERY_CSDISTFILES)
-
-UTILS_CSFILES = $(UTILS_CSDISTFILES)
-
-JOBSCHEDULER_CSFILES = $(JOBSCHEDULER_CSDISTFILES)
-
-BLING_CSFILES = $(BLING_CSDISTFILES)
-
-WIDGETS_CSFILES = $(WIDGETS_CSDISTFILES)
-
-GNOME_PLATFORM_CSFILES = $(GNOME_PLATFORM_CSDISTFILES)
-
-NULL_PLATFORM_CSFILES = $(NULL_PLATFROM_CSDISTFILES)
-
-F_SPOT_CSFILES = $(F_SPOT_CSDISTFILES)	\
-	AssemblyInfo.cs
-
-Cms.dll.mdb: Cms.dll
-
-Cms.dll: $(CMS_CSFILES)
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(UNSAFE) $(CMS_CSFILES) $(CMS_ASSEMBLIES)
-
-FSpot.Core.dll.mdb: FSpot.Core.dll
-
-FSpot.Core.dll: $(CORE_CSFILES) FSpot.Utils.dll Cms.dll
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(CORE_CSFILES) $(CORE_ASSEMBLIES)
-
-FSpot.Query.dll.mdb: FSpot.Query.dll
-
-FSpot.Query.dll: $(QUERY_CSFILES) FSpot.Utils.dll FSpot.Core.dll
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(QUERY_CSFILES) $(QUERY_ASSEMBLIES)
-
-FSpot.Utils.dll.mdb: FSpot.Utils.dll
-
-FSpot.Utils.dll: $(UTILS_CSFILES)
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(UTILS_CSFILES) $(UTILS_ASSEMBLIES)
-
-FSpot.JobScheduler.dll.mdb: FSpot.JobScheduler.dll
-
-FSpot.JobScheduler.dll: $(JOBSCHEDULER_CSFILES) FSpot.Utils.dll
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(JOBSCHEDULER_CSFILES) $(JOBSCHEDULER_ASSEMBLIES)
-
-FSpot.Bling.dll.mdb: FSpot.Bling.dll
-
-FSpot.Bling.dll: $(BLING_CSFILES)
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(BLING_CSFILES) $(BLING_ASSEMBLIES)
-
-FSpot.Widgets.dll.mdb: FSpot.Widgets.dll
-
-FSpot.Widgets.dll: $(WIDGETS_CSFILES) FSpot.Utils.dll FSpot.Core.dll Cms.dll
-	$(CSC_LIB) -warnaserror -out:$@ $(EXTRAFLAGS) $(WIDGETS_CSFILES) $(WIDGETS_ASSEMBLIES)
-
-PLATFORM_CSFILES = $(GNOME_PLATFORM_CSFILES)
-PLATFORM_ASSEMBLIES = $(GNOME_PLATFORM_ASSEMBLIES)
-
-FSpot.Platform.dll.mdb: FSpot.Platform.dll
-
-FSpot.Platform.dll: $(PLATFORM_CSFILES) FSpot.Utils.dll
-	$(CSC_LIB) -out:$@ $(EXTRAFLAGS) $(PLATFORM_CSFILES) $(PLATFORM_ASSEMBLIES)
-
-f-spot.exe.mdb: f-spot.exe
-
-f-spot.exe: $(F_SPOT_CSFILES) FSpot.Utils.dll FSpot.Core.dll FSpot.Query.dll FSpot.JobScheduler.dll FSpot.Bling.dll FSpot.Widgets.dll Cms.dll FSpot.Platform.dll $(F_SPOT_RESOURCES)
-	$(CSC) -target:winexe -out:$@ $(EXTRAFLAGS) $(UNSAFE) $(NOWARN) $(NUNIT_DEFINES) $(F_SPOT_CSFILES) $(F_SPOT_ASSEMBLIES) $(RESOURCES)
-
-all: f-spot.exe
-
-EXTRA_DIST =					\
-	$(UTILS_CSDISTFILES)			\
-	$(CMS_CSDISTFILES)			\
-	$(CORE_CSDISTFILES)			\
-	$(QUERY_CSDISTFILES)			\
-	$(JOBSCHEDULER_CSDISTFILES)		\
-	$(BLING_CSDISTFILES)			\
-	$(WIDGETS_CSDISTFILES)			\
-	$(GNOME_PLATFORM_CSDISTFILES)		\
-	$(NULL_PLATFORM_CSDISTFILES)		\
-	$(F_SPOT_CSDISTFILES)			\
-	$(F_SPOT_DISTRESOURCES)			\
-	f-spot.exe.config.in			\
-	f-spot.in				\
-	FSpot.Core.dll.config			\
-	FSpot.Utils.dll.config			\
-	FSpot.Widgets.dll.config.in		\
-	Cms.dll.config.in
-
-CLEANFILES =					\
-	f-spot.exe.config			\
-	f-spot.exe.mdb				\
-	f-spot.exe				\
-	f-spot					\
-	Cms.dll.mdb				\
-	Cms.dll					\
-	FSpot.Utils.dll.mdb			\
-	FSpot.Utils.dll				\
-	FSpot.Query.dll				\
-	FSpot.Query.dll.mdb			\
-	FSpot.Core.dll.config		\
-	FSpot.Core.dll.mdb			\
-	FSpot.Core.dll				\
-	FSpot.JobScheduler.dll			\
-	FSpot.JobScheduler.dll.mdb		\
-	FSpot.Bling.dll.mdb				\
-	FSpot.Bling.dll					\
-	FSpot.Widgets.dll				\
-	FSpot.Widgets.dll.mdb			\
-	FSpot.Widgets.dll.config		\
-	FSpot.Platform.dll			\
-	FSpot.Platform.dll.mdb			\
-	Cms.dll.config
-
-DISTCLEANFILES = 				\
-	Makefile
-
-if ENABLE_TESTS
-test:
-	@pushd $(top_srcdir)/tests/src/; \
-	make test; \
-	popd;
-endif
diff --git a/src/PixbufUtils.cs b/src/PixbufUtils.cs
index 8651c02..f760c40 100644
--- a/src/PixbufUtils.cs
+++ b/src/PixbufUtils.cs
@@ -728,13 +728,4 @@ public class PixbufUtils {
 //	{
 //		f_pixbuf_copy_with_orientation (src.Handle, dest.Handle, (int)orientation);
 //	}
-
-#if false
-	[DllImport("glibsharpglue")]
-	static extern int gtksharp_object_get_ref_count (IntPtr obj);
-	
-	public static int RefCount (GLib.Object obj) {
-		return gtksharp_object_get_ref_count (obj.Handle);
-	}
-#endif
 }
diff --git a/src/Platform/Makefile.am b/src/Platform/Makefile.am
new file mode 100644
index 0000000..8afaef1
--- /dev/null
+++ b/src/Platform/Makefile.am
@@ -0,0 +1,22 @@
+ASSEMBLY = FSpot.Platform
+TARGET = library
+LINK = $(REF_FSPOT_PLATFORM)
+
+SOURCES = \
+	Gnome/Desktop.cs \
+	Gnome/PreferenceBackend.cs \
+	Gnome/ScreenSaver.cs \
+	Gnome/ThumbnailFactory.cs \
+	Gnome/WebProxy.cs
+
+# Currently unused
+#NULL_PLATFORM_CSDISTFILES = \
+#	Null/Desktop.cs \
+#	Null/PreferenceBackend.cs \
+#	Null/ScreenSaver.cs \
+#	Null/ThumbnailFactory.cs \
+#	Null/WebProxy.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/Query/Makefile.am b/src/Query/Makefile.am
new file mode 100644
index 0000000..7149ef4
--- /dev/null
+++ b/src/Query/Makefile.am
@@ -0,0 +1,19 @@
+ASSEMBLY = FSpot.Query
+TARGET = library
+LINK = $(REF_FSPOT_QUERY)
+
+SOURCES = \
+	DateRange.cs \
+	FolderSet.cs \
+	IOrderCondition.cs \
+	IQueryCondition.cs \
+	LogicalTerm.cs \
+	OrderByTime.cs \
+	RatingRange.cs \
+	RollSet.cs \
+	TagConditionWrapper.cs \
+	UntaggedCondition.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
diff --git a/src/FSpot.Utils.dll.config b/src/Utils/FSpot.Utils.dll.config
similarity index 100%
rename from src/FSpot.Utils.dll.config
rename to src/Utils/FSpot.Utils.dll.config
diff --git a/src/Utils/Makefile.am b/src/Utils/Makefile.am
new file mode 100644
index 0000000..1c9fd5a
--- /dev/null
+++ b/src/Utils/Makefile.am
@@ -0,0 +1,25 @@
+ASSEMBLY = FSpot.Utils
+TARGET = library
+LINK = $(REF_FSPOT_UTILS)
+
+SOURCES = \
+	Cache.cs \
+	CairoUtils.cs \
+	ConsoleCrayon.cs \
+	DbUtils.cs \
+	FileExtensions.cs \
+	GdkUtils.cs \
+	GtkUtil.cs \
+	PixbufOrientation.cs \
+	PixbufUtils.cs \
+	RecursiveFileEnumerator.cs \
+	Unix.cs \
+	UriExtensions.cs \
+	UriUtils.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
+
+EXTRA_DIST += FSpot.Utils.dll.config
+module_SCRIPTS += FSpot.Utils.dll.config
diff --git a/src/FSpot.Widgets.dll.config.in b/src/Widgets/FSpot.Widgets.dll.config.in
similarity index 100%
rename from src/FSpot.Widgets.dll.config.in
rename to src/Widgets/FSpot.Widgets.dll.config.in
diff --git a/src/Widgets/Makefile.am b/src/Widgets/Makefile.am
new file mode 100644
index 0000000..43f1aa5
--- /dev/null
+++ b/src/Widgets/Makefile.am
@@ -0,0 +1,34 @@
+ASSEMBLY = FSpot.Widgets
+TARGET = library
+LINK = $(REF_FSPOT_WIDGETS)
+
+SOURCES = \
+	ApplicationActivatedEventArgs.cs \
+	BuilderWindow.cs \
+	CheckPattern.cs \
+	ComplexMenuItem.cs \
+	Curve.cs \
+	CurveType.cs \
+	CustomPrintWidget.cs \
+	DateEdit.cs \
+	DateEditFlags.cs \
+	DissolveTransition.cs \
+	HighlightedBox.cs \
+	ImageView.cs \
+	Layout.cs \
+	MenuButton.cs \
+	OpenWithMenu.cs \
+	PointerMode.cs \
+	Rating.cs \
+	SaneTreeView.cs \
+	ScrolledView.cs \
+	PushTransition.cs \
+	CairoTransition.cs \
+	SlideShowTransition.cs
+
+RESOURCES =
+
+include $(top_srcdir)/build/build.mk
+
+EXTRA_DIST += FSpot.Widgets.dll.config
+module_SCRIPTS += FSpot.Widgets.dll.config
diff --git a/tests/src/Makefile.am b/tests/src/Makefile.am
index 68e12ae..5bd6d55 100644
--- a/tests/src/Makefile.am
+++ b/tests/src/Makefile.am
@@ -1,56 +1,18 @@
-include $(top_srcdir)/Makefile.include
+ASSEMBLY = FSpot.Tests
+TARGET = library
+LINK = $(REF_FSPOT_TESTS)
+SOURCES = \
+	SafeUriTest.cs \
+	Query/LogicalTerm.cs \
+	Cms/Cms.cs
 
-SOURCES = 				\
-	$(srcdir)/SafeUriTest.cs			\
-	$(srcdir)/Query/LogicalTerm.cs		\
-	$(srcdir)/Cms/Cms.cs
+RESOURCES = \
+	../../icons/f-spot-32.png
 
-if ENABLE_TESTS
 
-all: FSpot.Tests.dll
+include $(top_srcdir)/build/build.mk
 
-PKGS = 					\
-	-pkg:mono-nunit			\
-	-pkg:gnome-sharp-2.0		\
-	-pkg:gtk-sharp-2.0
 
-REFS =							\
-	$(LINK_GPHOTO2)					\
-	$(LINK_GIOSHARP)				\
-	$(LINK_UNIQUESHARP)				\
-	-r:$(top_builddir)/src/f-spot.exe		\
-	-r:$(top_builddir)/src/FSpot.Core.dll		\
-	-r:$(top_builddir)/src/FSpot.Query.dll		\
-	-r:$(top_builddir)/src/FSpot.Utils.dll		\
-	-r:$(top_builddir)/src/FSpot.Platform.dll	\
-	-r:$(top_builddir)/src/Cms.dll			\
-	-r:$(top_builddir)/lib/semweb/SemWeb.dll
+test: $(ASSEMBLY_FILE)
+	export MONO_PATH=$(DIR_BIN):$(top_srcdir)/lib/gio-sharp/gio/:$(top_srcdir)/lib/gtk-sharp-beans; nunit-console -noshadow -nologo $(ASSEMBLY_FILE)
 
-RESOURCES =							\
-	-resource:$(top_srcdir)/icons/f-spot-32.png,f-spot-32.png
-
-TEST_ASSEMBLIES =				\
-	FSpot.Tests.dll
-
-MCSFLAGS = -t:library -d:ENABLE_NUNIT
-
-FSpot.Tests.dll: $(SOURCES)
-	gmcs $(MCSFLAGS) $(PKGS) $(REFS) $(SOURCES) $(RESOURCES) -out:FSpot.Tests.dll
-
-test: FSpot.Tests.dll
-	export MONO_PATH=$(top_srcdir)/src:$(top_srcdir)/lib/gio-sharp/gio/:$(top_srcdir)/lib/semweb:$(top_srcdir)/lib/gtk-sharp-beans; nunit-console -noshadow -nologo $(TEST_ASSEMBLIES) 
-
-CLEANFILES =			\
-	FSpot.Tests.dll.mdb	\
-	FSpot.Tests.dll		\
-	PhotoTestStore.db	\
-	TagTestStore.db		\
-	TestResult.xml
-
-endif
-
-MAINTAINERCLEANFILES = \
-	Makefile.in
-
-EXTRA_DIST =			\
-	$(SOURCES)



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