[longomatch/redesign2: 154/159] Clean up autotools and add check for C# 4.0



commit e2378778f18ac9a452d0a5acf1a086fe73b2d590
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Wed May 25 23:05:15 2011 +0200

    Clean up autotools and add check for C# 4.0
    
    Copied from the banshee project

 CesarPlayer/Makefile.am            |   82 ++----------
 LongoMatch/Makefile.am             |  140 +++-----------------
 Makefile.am                        |   13 +--
 autogen.sh                         |    3 +-
 build/DllMapVerifier.cs            |  258 ++++++++++++++++++++++++++++++++++++
 build/Makefile.am                  |   19 +++
 build/build.environment.mk         |   40 ++++++
 build/build.mk                     |    3 +
 build/build.rules.mk               |  100 ++++++++++++++
 build/dll-map-makefile-verifier    |   10 ++
 build/icon-theme-installer         |  177 ++++++++++++++++++++++++
 build/m4/Makefile.am               |    6 +
 build/m4/shamrock/expansions.m4    |   50 +++++++
 build/m4/shamrock/gnome-doc.m4     |   23 +++
 build/m4/shamrock/i18n.m4          |   10 ++
 build/m4/shamrock/mono.m4          |  120 +++++++++++++++++
 build/m4/shamrock/monodoc.m4       |   25 ++++
 build/m4/shamrock/nunit.m4         |   29 ++++
 build/m4/shamrock/programs.m4      |   13 ++
 build/m4/shamrock/util.m4          |   11 ++
 build/m4/shave/shave-libtool.in    |  109 +++++++++++++++
 build/m4/shave/shave.in            |  109 +++++++++++++++
 build/m4/shave/shave.m4            |  102 ++++++++++++++
 build/private-icon-theme-installer |   23 +++
 configure.ac                       |  117 +++++++---------
 25 files changed, 1318 insertions(+), 274 deletions(-)
---
diff --git a/CesarPlayer/Makefile.am b/CesarPlayer/Makefile.am
index 76d2c41..2801e85 100644
--- a/CesarPlayer/Makefile.am
+++ b/CesarPlayer/Makefile.am
@@ -1,49 +1,9 @@
+ASSEMBLY = CesarPlayer
+TARGET = library
 
-EXTRA_DIST =  
+LINK = $(REF_DEP_CESARPLAYER)
 
-if ENABLE_DEBUG
-ASSEMBLY_COMPILER_COMMAND = $(CSC)
-ASSEMBLY_COMPILER_FLAGS =  -noconfig -codepage:utf8 -unsafe -warn:4 -optimize+ -debug -define:DEBUG
-ASSEMBLY = bin/Debug/CesarPlayer.dll
-ASSEMBLY_MDB = $(ASSEMBLY).mdb
-COMPILE_TARGET = library
-PROJECT_REFERENCES = 
-BUILD_DIR = bin/Debug
-CESARPLAYER_DLL_MDB_SOURCE=bin/Debug/CesarPlayer.dll.mdb
-CESARPLAYER_DLL_MDB=$(BUILD_DIR)/CesarPlayer.dll.mdb
-CESARPLAYER_DLL_CONFIG_SOURCE = CesarPlayer.dll.config
-CESARPLAYER_DLL_CONFIG = $(BUILD_DIR)/CesarPlayer.dll.config
-
-endif
-
-if ENABLE_RELEASE
-ASSEMBLY_COMPILER_COMMAND = $(CSC)
-ASSEMBLY_COMPILER_FLAGS =  -noconfig -codepage:utf8 -unsafe -warn:4 -optimize+ 
-ASSEMBLY = bin/Release/CesarPlayer.dll
-ASSEMBLY_MDB = $(ASSEMBLY).mdb
-COMPILE_TARGET = library
-PROJECT_REFERENCES = 
-BUILD_DIR = bin/Release
-CESARPLAYER_DLL_MDB_SOURCE=
-CESARPLAYER_DLL_MDB=
-CESARPLAYER_DLL_CONFIG_SOURCE = CesarPlayer.dll.config
-CESARPLAYER_DLL_CONFIG = $(BUILD_DIR)/CesarPlayer.dll.config
-
-
-endif
-
-AL=al2
-SATELLITE_ASSEMBLY_NAME=$(notdir $(basename $(ASSEMBLY))).resources.dll
-
-PROGRAMFILES = \
-	$(CESARPLAYER_DLL_MDB)\
-	$(CESARPLAYER_DLL_CONFIG)
-
-RESGEN=resgen2
-	
-all: $(ASSEMBLY) $(PROGRAMFILES) 
-
-FILES = \
+SOURCES = \
 	AssemblyInfo.cs \
 	gtk-gui/generated.cs \
 	Common/Constants.cs\
@@ -78,36 +38,12 @@ FILES = \
 	Utils/MediaFile.cs \
 	Utils/PreviewMediaFile.cs
 
-DATA_FILES = 
-
 RESOURCES = \
 	gtk-gui/objects.xml \
-	gtk-gui/gui.stetic 
-
-EXTRAS = \
-	cesarplayer.key\
-	CesarPlayer.dll.config\
-	AssemblyInfo.cs.in
-
-REFERENCES =  \
-	System \
-	Mono.Posix \
-	System.Drawing \
-	$(GTK_SHARP_20_LIBS) \
-	$(GLIB_SHARP_20_LIBS)
-
-DLL_REFERENCES = 
-
-CLEANFILES = $(PROGRAMFILES) 
-
-include $(top_srcdir)/Makefile.include
-
-$(eval $(call emit-deploy-target,CESARPLAYER_DLL_CONFIG))
+	gtk-gui/gui.stetic
 
-$(eval $(call emit_resgen_targets))
-$(build_xamlg_list): %.xaml.g.cs: %.xaml
-	xamlg '$<'
+include $(top_srcdir)/build/build.mk
 
-$(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources) $(build_datafiles) $(DLL_REFERENCES) $(PROJECT_REFERENCES) $(build_xamlg_list) $(build_satellite_assembly_list)
-	mkdir -p $(shell dirname $(ASSEMBLY))
-	$(ASSEMBLY_COMPILER_COMMAND) $(ASSEMBLY_COMPILER_FLAGS) -out:$(ASSEMBLY) -target:$(COMPILE_TARGET) $(build_sources_embed) $(build_resources_embed) $(build_references_ref)
+EXTRA_DIST += CesarPlayer.dll.config \
+              AssemblyInfo.cs.in
+module_SCRIPTS += CesarPlayer.dll.config
diff --git a/LongoMatch/Makefile.am b/LongoMatch/Makefile.am
index 0b390af..23f6a40 100644
--- a/LongoMatch/Makefile.am
+++ b/LongoMatch/Makefile.am
@@ -1,80 +1,8 @@
+ASSEMBLY = LongoMatch
+TARGET = exe
+LINK = $(REF_DEP_LONGOMATCH)
 
-EXTRA_DIST = \
-	$(desktop_in_files)
-
-
- INTLTOOL_DESKTOP_RULE@
-desktopdir = $(datadir)/applications
-desktop_in_files = longomatch.desktop.in
-desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
-
-
-if ENABLE_DEBUG
-ASSEMBLY_COMPILER_COMMAND = $(CSC)
-ASSEMBLY_COMPILER_FLAGS =  -noconfig -codepage:utf8 -warn:4 -optimize+ -debug -define:DEBUG "-main:LongoMatch.MainClass"
-ASSEMBLY = bin/Debug/LongoMatch.exe
-ASSEMBLY_MDB = $(ASSEMBLY).mdb
-COMPILE_TARGET = exe
-PROJECT_REFERENCES =  \
-	../CesarPlayer/bin/Debug/CesarPlayer.dll
-BUILD_DIR = bin/Debug
-CESARPLAYER_DLL_SOURCE=../CesarPlayer/bin/Debug/CesarPlayer.dll
-CESARPLAYER_DLL=$(BUILD_DIR)/CesarPlayer.dll
-CESARPLAYER_DLL_MDB_SOURCE=../CesarPlayer/bin/Debug/CesarPlayer.dll.mdb
-CESARPLAYER_DLL_MDB=$(BUILD_DIR)/CesarPlayer.dll.mdb
-LONGOMATCH_PNG_SOURCE=images/longomatch.png
-LONGOMATCH_EXE_MDB_SOURCE=bin/Debug/LongoMatch.exe.mdb
-LONGOMATCH_EXE_MDB = $(BUILD_DIR)/LongoMatch.exe.mdb
-BACKGROUND_PNG_SOURCE=images/background.png
-
-endif
-
-if ENABLE_RELEASE
-ASSEMBLY_COMPILER_COMMAND = $(CSC)
-ASSEMBLY_COMPILER_FLAGS =  -noconfig -codepage:utf8 -warn:4 -optimize+ "-main:LongoMatch.MainClass"
-ASSEMBLY = bin/Release/LongoMatch.exe
-ASSEMBLY_MDB = $(ASSEMBLY).mdb
-COMPILE_TARGET = exe
-PROJECT_REFERENCES =  \
-	../CesarPlayer/bin/Release/CesarPlayer.dll
-BUILD_DIR = bin/Release
-CESARPLAYER_DLL_SOURCE=../CesarPlayer/bin/Release/CesarPlayer.dll
-CESARPLAYER_DLL=$(BUILD_DIR)/CesarPlayer.dll
-LONGOMATCH_PNG_SOURCE=images/longomatch.png
-LONGOMATCH_LOGO_SOURCE=images/logo_48x48.png
-LONGOMATCH_EXE_MDB_SOURCE=
-LONGOMATCH_EXE_MDB = 
-CESARPLAYER_DLL_MDB_SOURCE=
-CESARPLAYER_DLL_MDB=
-BACKGROUND_PNG_SOURCE=images/background.png
-
-endif
-
-AL=al2
-SATELLITE_ASSEMBLY_NAME=$(notdir $(basename $(ASSEMBLY))).resources.dll
-
-COMMONAPPLICATIONDATAROOT_IMAGES = \
-	$(LONGOMATCH_PNG) \
-	$(BACKGROUND_PNG)  
-
-COMMONAPPLICATIONDATAROOT_LOGO = \
-	$(LONGOMATCH_LOGO)
-	
-
-PROGRAMFILES = \
-	$(CESARPLAYER_DLL) \
-	$(LONGOMATCH_EXE_MDB) \
-	$(CESARPLAYER_DLL_MDB) 
-
-BINARIES = \
-	$(LONGOMATCH)  
-
-
-RESGEN=resgen2
-	
-all: $(ASSEMBLY) $(COMMONAPPLICATIONDATAROOT_IMAGES)  $(COMMONAPPLICATIONDATAROOT_LOGO) $(PROGRAMFILES) $(BINARIES)
-
-FILES = \
+SOURCES = \
 	AssemblyInfo.cs \
 	Common/Enums.cs \
 	Common/Cairo.cs \
@@ -207,12 +135,15 @@ FILES = \
 	Updates/Updater.cs \
 	Updates/XmlUpdateParser.cs \
 	Utils/ProjectUtils.cs
-	
-DATA_FILES = 
+
+IMAGES = images/longomatch.png \
+         images/background.png
+
+LOGO = images/logo_48x48.png
 
 RESOURCES = \
 	gtk-gui/gui.stetic\
-	images/longomatch.png,longomatch.png\
+	images/longomatch.png\
 	images/stock_draw-line-45.png\
 	images/stock_draw-circle-unfilled.png\
 	images/stock_draw-line-ends-with-arrow.png\
@@ -221,52 +152,13 @@ RESOURCES = \
 	images/camera-video.png\
 	images/video.png 
 
-EXTRAS = \
-	images/longomatch.png\
-	images/background.png\
-	images/logo_48x48.png \
-	longomatch.in\
-	AssemblyInfo.cs.in
-
-REFERENCES =  \
-	Mono.Cairo \
-	Mono.Posix \
-	System \
-	System.Core \
-	System.Xml \
-	$(DB4O_74_LIBS) \
-	$(GTK_SHARP_20_LIBS) \
-	$(GLIB_SHARP_20_LIBS)
+bin_SCRIPTS = longomatch
 
-DLL_REFERENCES = 
+DESKTOP_FILE = longomatch.desktop.in
 
-CLEANFILES = 	\
-		$(COMMONAPPLICATIONDATAROOT_IMAGES)\
-  		$(COMMONAPPLICATIONDATAROOT_LOGO)\
- 		$(PROGRAMFILES)\
-		$(BINARIES)\
-		longomatch.desktop
+include $(top_srcdir)/build/build.mk
 
-include $(top_srcdir)/Makefile.include
-
-LONGOMATCH_PNG = $(BUILD_DIR)/images/longomatch.png
-LONGOMATCH_LOGO = $(BUILD_DIR)/icons/hicolor/48x48/apps/longomatch.png
-LONGOMATCH = $(BUILD_DIR)/longomatch
-BACKGROUND_PNG = $(BUILD_DIR)/images/background.png
-
-$(eval $(call emit-deploy-target,CESARPLAYER_DLL))
-$(eval $(call emit-deploy-target,LONGOMATCH_PNG))
-$(eval $(call emit-deploy-target,LONGOMATCH_LOGO))
-$(eval $(call emit-deploy-target,BACKGROUND_PNG))
-$(eval $(call emit-deploy-wrapper,LONGOMATCH,longomatch,x))
-$(eval $(call emit-deploy-target,CESARPLAYER_DLL_MDB))
-
-
-
-$(eval $(call emit_resgen_targets))
-$(build_xamlg_list): %.xaml.g.cs: %.xaml
-	xamlg '$<'
+EXTRA_DIST += \
+	longomatch.in\
+	AssemblyInfo.cs.in
 
-$(ASSEMBLY) $(ASSEMBLY_MDB): $(build_sources) $(build_resources) $(build_datafiles) $(DLL_REFERENCES) $(PROJECT_REFERENCES) $(build_xamlg_list) $(build_satellite_assembly_list)
-	mkdir -p $(shell dirname $(ASSEMBLY))
-	$(ASSEMBLY_COMPILER_COMMAND) $(ASSEMBLY_COMPILER_FLAGS) -out:$(ASSEMBLY) -target:$(COMPILE_TARGET) $(build_sources_embed) $(build_resources_embed) $(build_references_ref)
diff --git a/Makefile.am b/Makefile.am
index c32799b..181b7ee 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,19 +1,12 @@
-
 EXTRA_DIST =\
 		expansions.m4 \
 		env.in
 
-#Warning: This is an automatically generated file, do not edit!
-if ENABLE_DEBUG
- SUBDIRS =  libcesarplayer CesarPlayer LongoMatch po
-endif
-if ENABLE_RELEASE
- SUBDIRS =  libcesarplayer CesarPlayer LongoMatch po
-endif
+SUBDIRS = build libcesarplayer CesarPlayer LongoMatch po
 
 DISTCLEANFILES = 	intltool-extract\
-					intltool-merge\
-					intltool-update
+			intltool-merge\
+			intltool-update
 
 # Build ChangeLog from GIT history
 ChangeLog:
diff --git a/autogen.sh b/autogen.sh
index 3498b5b..cccbba4 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -18,7 +18,8 @@ test -z "$srcdir" && srcdir=.
 ORIGDIR=`pwd`
 cd $srcdir
 TEST_TYPE=-f
-aclocalinclude="-I . $ACLOCAL_FLAGS"
+aclocalinclude="-I build/m4/shamrock -I build/m4/shave $ACLOCAL_FLAGS"
+conf_flags="--enable-maintainer-mode"
 
 DIE=0
 
diff --git a/build/DllMapVerifier.cs b/build/DllMapVerifier.cs
new file mode 100644
index 0000000..9acccb6
--- /dev/null
+++ b/build/DllMapVerifier.cs
@@ -0,0 +1,258 @@
+using System;
+using System.IO;
+using System.Xml;
+using System.Text;
+using System.Collections.Generic;
+
+public static class DllMapVerifier
+{
+    private struct DllImportRef
+    {
+        public DllImportRef (string name, int line, int column)
+        {
+            Name = name;
+            Line = line;
+            Column = column;
+        }
+
+        public string Name;
+        public int Line;
+        public int Column;
+    }
+
+    private static Dictionary<string, List<DllImportRef>> dll_imports 
+        = new Dictionary<string, List<DllImportRef>> ();
+    private static List<string> ignore_dlls = new List<string> ();
+    private static List<string> config_dlls = null;
+    
+    public static int Main (string [] args)
+    {
+        LoadConfigDlls (args[0]);
+        foreach (string file in args) {
+            LoadDllImports (file);
+        }
+
+        return VerifyDllImports (args[0]) ? 0 : 1;
+    }
+
+    private static bool VerifyDllImports (string configFile)
+    {
+        int total_unmapped_count = 0;
+
+        foreach (KeyValuePair<string, List<DllImportRef>> dll_import in dll_imports) {
+            int file_unmapped_count = 0;
+            foreach (DllImportRef dll_import_ref in dll_import.Value) {
+                if (config_dlls != null && config_dlls.Contains (dll_import_ref.Name)) {
+                    continue;
+                }
+
+                if (file_unmapped_count++ == 0) {
+                    Console.Error.WriteLine ("Unmapped DLLs in file: {0}", dll_import.Key);
+                }
+
+                Console.Error.WriteLine ("  + {0} : {1},{2}", dll_import_ref.Name, 
+                    dll_import_ref.Line, dll_import_ref.Column);
+            }
+
+            total_unmapped_count += file_unmapped_count;
+        }
+
+        if (total_unmapped_count > 0) {
+            Console.Error.WriteLine ();
+            Console.Error.WriteLine ("  If any DllImport above is explicitly allowed to be unmapped,");
+            Console.Error.WriteLine ("  add an 'willfully unmapped' comment to the inside of the attribute:");
+            Console.Error.WriteLine ();
+            Console.Error.WriteLine ("      [DllImport (\"libX11.so.6\") /* willfully unmapped */]");
+            Console.Error.WriteLine ();
+        }
+
+        if (total_unmapped_count > 0 && config_dlls == null) {
+            Console.Error.WriteLine ("No config file for DLL mapping was found ({0})", configFile);
+        }
+
+        return total_unmapped_count == 0;
+    }
+    
+    private static void LoadDllImports (string csFile)
+    {
+        if (csFile.StartsWith ("-i")) {
+            ignore_dlls.Add (csFile.Substring (2));
+            return;
+        }
+
+        if (Path.GetExtension (csFile) == ".cs" && File.Exists (csFile)) {
+            List<DllImportRef> dll_import_refs = null;
+
+            foreach (DllImportRef dll_import in ParseFileForDllImports (csFile)) {
+                if (ignore_dlls.Contains (dll_import.Name)) {
+                    continue;
+                }
+            
+                if (dll_import_refs == null) {
+                    dll_import_refs = new List<DllImportRef> ();
+                }
+
+                dll_import_refs.Add (dll_import);
+            }
+
+            if (dll_import_refs != null) {
+                dll_imports.Add (csFile, dll_import_refs);
+            }
+        }
+    }
+
+    private static void LoadConfigDlls (string configFile)
+    {
+        try {
+            XmlTextReader config = new XmlTextReader (configFile);
+            config_dlls = new List<string> ();
+            while (config.Read ()) {
+                if (config.NodeType == XmlNodeType.Element && 
+                    config.Name == "dllmap") {
+                    string dll = config.GetAttribute ("dll");
+                    if (!config_dlls.Contains (dll)) {
+                        config_dlls.Add (dll);
+                    }
+                }
+            }
+        } catch {
+        }
+    }
+    
+#region DllImport parser
+
+    private static StreamReader reader;
+    private static int reader_line;
+    private static int reader_col;
+    
+    private static IEnumerable<DllImportRef> ParseFileForDllImports (string file)
+    {
+        reader_line = 1;
+        reader_col = 1;
+
+        using (reader = new StreamReader (file)) {
+            char c;
+            bool in_paren = false;
+            bool in_attr = false;
+            bool in_dll_attr = false;
+            bool in_string = false;
+            bool in_comment = false;
+            int dll_line = 1, dll_col = 1;
+            string dll_string = null;
+            string dll_comment = null;
+            
+            while ((c = (char)reader.Peek ()) != Char.MaxValue) {
+                switch (c) {
+                    case ' ':
+                    case '\t': Read (); break;
+                    case '[': 
+                        in_attr = true;
+                        dll_string = null;
+                        dll_comment = null;
+                        dll_line = reader_line;
+                        dll_col = reader_col;
+                        Read ();
+                        break;
+                    case '(': Read (); in_paren = true; break;
+                    case ')': Read (); in_paren = false; break;
+                    case '"':
+                        Read ();
+                        if (dll_string == null && in_dll_attr && in_paren && !in_string) {
+                            in_string = true;
+                        }
+                        break;
+                    case '/':
+                        Read ();
+                        if ((char)reader.Peek () == '*') {
+                            Read ();
+                            if (in_dll_attr && !in_comment) {
+                                in_comment = true;
+                            }
+                        }
+                        break;
+                    case ']':
+                        if (in_dll_attr && dll_string != null && dll_comment != "willfully unmapped") {
+                            yield return new DllImportRef (dll_string, dll_line, dll_col);
+                        }
+                        in_attr = false;
+                        in_dll_attr = false;
+                        Read ();
+                        break;
+                    default:
+                        if (!in_dll_attr && in_attr && ReadDllAttribute ()) {
+                            in_dll_attr = true;
+                        } else if (in_dll_attr && in_string) {
+                            dll_string = ReadDllString ();
+                            in_string = false;
+                        } else if (in_dll_attr && in_comment) {
+                            dll_comment = ReadDllComment ();
+                            in_comment = false;
+                        } else {
+                            Read ();
+                        }
+                        break;
+                }
+            }
+        }
+    }
+
+    private static bool ReadDllAttribute () 
+    {
+        return
+            Read () == 'D' && 
+            Read () == 'l' &&
+            Read () == 'l' &&
+            Read () == 'I' &&
+            Read () == 'm' &&
+            Read () == 'p' &&
+            Read () == 'o' &&
+            Read () == 'r' &&
+            Read () == 't';
+    }
+
+    private static string ReadDllString ()
+    {
+        StringBuilder builder = new StringBuilder (32);
+        while (true) {
+            char c = Read ();
+            if (Char.IsLetterOrDigit (c) || c == '.' || c == '-' || c == '_') {
+                builder.Append (c);
+            } else {
+                break;
+            }
+        }
+        return builder.ToString ();
+    }
+
+    private static string ReadDllComment ()
+    {
+        StringBuilder builder = new StringBuilder ();
+        char lc = Char.MaxValue;
+        while (true) {
+            char c = Read ();
+            if (c == Char.MaxValue || (c == '/' && lc == '*')) {
+                break;
+            } else if (lc != Char.MaxValue) {
+                builder.Append (lc);
+            }
+            lc = c;
+        }
+        return builder.ToString ().Trim ();
+    }
+    
+    private static char Read ()
+    {
+        char c = (char)reader.Read ();
+        if (c == '\n') {
+            reader_line++;
+            reader_col = 1;
+        } else {
+            reader_col++;
+        }
+        return c;
+    }
+    
+#endregion
+
+}
+
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644
index 0000000..706af65
--- /dev/null
+++ b/build/Makefile.am
@@ -0,0 +1,19 @@
+SUBDIRS = m4
+
+DLL_MAP_VERIFIER_ASSEMBLY = dll-map-verifier.exe
+
+ALL_TARGETS = $(DLL_MAP_VERIFIER_ASSEMBLY)
+
+all: $(ALL_TARGETS)
+
+$(DLL_MAP_VERIFIER_ASSEMBLY): DllMapVerifier.cs
+	$(MCS) -out:$@ $<
+
+EXTRA_DIST = \
+	icon-theme-installer \
+	private-icon-theme-installer \
+	DllMapVerifier.cs \
+	dll-map-makefile-verifier
+
+CLEANFILES = *.exe *.mdb
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/build/build.environment.mk b/build/build.environment.mk
new file mode 100644
index 0000000..89a1386
--- /dev/null
+++ b/build/build.environment.mk
@@ -0,0 +1,40 @@
+# Initializers
+MONO_BASE_PATH = 
+MONO_ADDINS_PATH =
+
+# Install Paths
+DEFAULT_INSTALL_DIR = $(pkglibdir)
+
+# External libraries to link against, generated from configure
+LINK_SYSTEM = -r:System
+LINK_CAIRO = -r:Mono.Cairo
+LINK_MONO_POSIX = -r:Mono.Posix
+LINK_MONO_ZEROCONF = $(MONO_ZEROCONF_LIBS)
+LINK_GLIB = $(GLIBSHARP_LIBS)
+LINK_GTK = $(GTKSHARP_LIBS)
+LINK_GCONF = $(GCONFSHARP_LIBS)
+LINK_DB40 = $(DB4O_LIBS)
+LINK_CESARPLAYER = -r:$(DIR_BIN)/CesarPlayer.dll
+
+REF_DEP_CESARPLAYER = $(LINK_GLIB) \
+                      $(LINK_GTK) \
+                      $(LINK_MONO_POSIX)
+
+REF_DEP_LONGOMATCH = \
+                     $(LINK_MONO_POSIX) \
+                     $(LINK_DB40) \
+                     $(LINK_GLIB) \
+                     $(LINK_GTK) \
+                     $(LINK_CAIRO) \
+                     $(LINK_CESARPLAYER)
+
+DIR_BIN = $(top_builddir)/bin
+
+# Cute hack to replace a space with something
+colon:= :
+empty:=
+space:= $(empty) $(empty)
+
+# Build path to allow running uninstalled
+RUN_PATH = $(subst $(space),$(colon), $(MONO_BASE_PATH))
+
diff --git a/build/build.mk b/build/build.mk
new file mode 100644
index 0000000..78e0760
--- /dev/null
+++ b/build/build.mk
@@ -0,0 +1,3 @@
+include $(top_srcdir)/build/build.environment.mk
+include $(top_srcdir)/build/build.rules.mk
+
diff --git a/build/build.rules.mk b/build/build.rules.mk
new file mode 100644
index 0000000..e7f5d97
--- /dev/null
+++ b/build/build.rules.mk
@@ -0,0 +1,100 @@
+UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
+BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
+
+SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES))
+#SOURCES_BUILD += $(top_srcdir)/src/AssemblyInfo.cs
+
+RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
+RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
+	-resource:$(resource),$(notdir $(resource)))
+
+INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
+THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard $(srcdir)/ThemeIcons/scalable/*/*.svg)
+THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
+
+ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
+ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
+
+INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
+
+if ENABLE_TESTS
+    LINK += " $(NUNIT_LIBS)"
+    ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+endif
+
+FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
+DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
+
+OUTPUT_FILES = \
+	$(ASSEMBLY_FILE) \
+	$(ASSEMBLY_FILE).mdb
+
+moduledir = $(INSTALL_DIR_RESOLVED)
+module_SCRIPTS = $(OUTPUT_FILES)
+
+ INTLTOOL_DESKTOP_RULE@
+desktopdir = $(datadir)/applications
+desktop_in_files = $(DESKTOP_FILE)
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+imagesdir = @datadir@/@PACKAGE@/images
+images_DATA = $(IMAGES)
+
+logodir = @datadir@/icons/hicolor/48x48/apps
+logo_DATA = $(LOGO)
+
+all: $(ASSEMBLY_FILE) theme-icons
+
+run: 
+	@pushd $(top_builddir); \
+	make run; \
+	popd;
+
+test:
+	@pushd $(top_builddir)/tests; \
+	make $(ASSEMBLY); \
+	popd;
+
+build-debug:
+	@echo $(DEP_LINK)
+
+$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
+
+$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
+	@mkdir -p $(top_builddir)/bin
+	@if [ ! "x$(ENABLE_RELEASE)" = "xyes" ]; then \
+		$(top_srcdir)/build/dll-map-makefile-verifier $(srcdir)/Makefile.am $(srcdir)/$(notdir $  config) && \
+		$(MONO) $(top_builddir)/build/dll-map-verifier.exe $(srcdir)/$(notdir $  config) -iwinmm -ilibbanshee -ilibbnpx11 -ilibc -ilibc.so.6 -iintl -ilibmtp.dll -ilibigemacintegration.dylib -iCFRelease $(SOURCES_BUILD); \
+	fi;
+	$(MCS) \
+		$(GMCS_FLAGS) \
+		$(ASSEMBLY_BUILD_FLAGS) \
+		-nowarn:0278 -nowarn:0078 $$warn -unsafe \
+		-define:HAVE_GTK_2_10 -define:NET_2_0 \
+		-debug -target:$(TARGET) -out:$@ \
+		$(BUILD_DEFINES) $(ENABLE_TESTS_FLAG) $(ENABLE_ATK_FLAG) \
+		$(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
+	@if [ -e $(srcdir)/$(notdir $  config) ]; then \
+		cp $(srcdir)/$(notdir $  config) $(top_builddir)/bin; \
+	fi;
+	@if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
+		cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
+	fi;
+
+theme-icons: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+
+install-data-hook: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+	$(EXTRA_INSTALL_DATA_HOOK)
+
+uninstall-hook: $(THEME_ICONS_SOURCE)
+	@$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+	$(EXTRA_UNINSTALL_HOOK)
+
+EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE) $(IMAGES) $(desktop_in_files)
+
+CLEANFILES = $(OUTPUT_FILES)
+DISTCLEANFILES = *.pidb
+MAINTAINERCLEANFILES = Makefile.in
+
diff --git a/build/dll-map-makefile-verifier b/build/dll-map-makefile-verifier
new file mode 100755
index 0000000..c75afa5
--- /dev/null
+++ b/build/dll-map-makefile-verifier
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+if [ -f $2 ]; then
+	# Lame, but better than nothing
+	grep $(basename $2) $1 | grep module_SCRIPTS &>/dev/null || {
+		echo "Assembly has corresponding .config file, but it was not found in module_SCRIPTS in Makefile.am" 2>&1
+		exit 1
+	}
+fi
+
diff --git a/build/icon-theme-installer b/build/icon-theme-installer
new file mode 100755
index 0000000..0260788
--- /dev/null
+++ b/build/icon-theme-installer
@@ -0,0 +1,177 @@
+#!/usr/bin/env bash
+
+# icon-theme-installer
+# Copyright (C) 2006 Novell, Inc.
+# Written by Aaron Bockover <abock gnome org>
+# Licensed under the MIT/X11 license
+#
+# This script is meant to be invoked from within a Makefile/Makefile.am
+# in the install-data-local and uninstall-data sections. It handles the
+# task of properly installing icons into the icon theme. It requires a
+# few arguments to set up its environment, and a list of files to be
+# installed. The format of the file list is critical:
+#
+# <category>,<local-src-file-name>
+#
+#   apps,music-player-banshee.svg
+#   apps,music-player-banshee-16.png
+#   apps,music-player-banshee-22.png
+#
+# <category> is the icon theme category, for instance, apps, devices,
+# actions, emblems...
+#
+# <local-src-file-name> must have a basename in the form of:
+#
+#   proper-theme-name[-<SIZE>].<EXTENSION>
+#
+# Where <SIZE> should be either nothing, which will default to scalable
+# or \-[0-9]{2}, which will expand to <SIZE>x<SIZE>. For example:
+#
+#   music-player-banshee-16.png
+#
+# The <SIZE> here is -16 and will expand to 16x16 per the icon theme spec
+#
+# What follows is an example Makefile.am for icon theme installation:
+#
+# ---------------
+# theme=hicolor
+# themedir=$(datadir)/icons/$(theme)
+# theme_icons = \
+#	apps,music-player-banshee.svg \
+#	apps,music-player-banshee-16.png \
+#	apps,music-player-banshee-22.png \
+#	apps,music-player-banshee-24.png \
+#	apps,music-player-banshee-32.png
+#
+# install_icon_exec = $(top_srcdir)/build/icon-theme-installer -t $(theme) -s $(srcdir) -d "x$(DESTDIR)" -b $(themedir) -m "$(mkinstalldirs)" -x "$(INSTALL_DATA)"
+# install-data-local:
+#	$(install_icon_exec) -i $(theme_icons)
+#
+#	uninstall-hook:
+#		$(install_icon_exec) -u $(theme_icons)
+#
+#	MAINTAINERCLEANFILES = Makefile.in
+#	EXTRA_DIST = $(wildcard *.svg *.png)
+# ---------------
+#
+# Arguments to this program:
+#
+# -i         : Install
+# -u         : Uninstall
+# -t <theme> : Theme name (hicolor)
+# -d <dir>   : Theme installation dest directory [x$(DESTDIR)] - Always prefix
+#              this argument with x; it will be stripped but will act as a
+#              placeholder for zero $DESTDIRs (only set by packagers)
+# -b <dir>   : Theme installation directory [$(hicolordir)]
+# -s <dir>   : Source directory [$(srcdir)]
+# -m <exec>  : Command to exec for directory creation [$(mkinstalldirs)]
+# -x <exec>  : Command to exec for single file installation [$(INSTALL_DATA)]
+# <remainging> : All remainging should be category,filename pairs
+
+while getopts "iut:b:d:s:m:x:" flag; do
+	case "$flag" in
+		i) INSTALL=yes ;;
+		u) UNINSTALL=yes ;;
+		t) THEME_NAME=$OPTARG ;;
+		d) INSTALL_DEST_DIR=${OPTARG##x} ;;
+		b) INSTALL_BASE_DIR=$OPTARG ;;
+		s) SRC_DIR=$OPTARG ;;
+		m) MKINSTALLDIRS_EXEC=$OPTARG ;;
+		x) INSTALL_DATA_EXEC=$OPTARG ;;
+	esac
+done
+
+shift $(($OPTIND - 1))
+
+if test "x$INSTALL" = "xyes" -a "x$UNINSTALL" = "xyes"; then
+	echo "Cannot pass both -i and -u"
+	exit 1
+elif test "x$INSTALL" = "x" -a "x$UNINSTALL" = "x"; then
+	echo "Must path either -i or -u"
+	exit 1
+fi
+
+if test -z "$THEME_NAME"; then
+	echo "Theme name required (-t hicolor)"
+	exit 1
+fi
+
+if test -z "$INSTALL_BASE_DIR"; then
+	echo "Base theme directory required [-b \$(hicolordir)]"
+	exit 1
+fi
+
+if test ! -x $(echo "$MKINSTALLDIRS_EXEC" | cut -f1 -d' '); then
+	echo "Cannot find '$MKINSTALLDIRS_EXEC'; You probably want to pass -m \$(mkinstalldirs)"
+	exit 1
+fi
+
+if test ! -x $(echo "$INSTALL_DATA_EXEC" | cut -f1 -d' '); then
+	echo "Cannot find '$INSTALL_DATA_EXEC'; You probably want to pass -x \$(INSTALL_DATA)"
+	exit 1
+fi
+
+if test -z "$SRC_DIR"; then
+	SRC_DIR=.
+fi
+
+for icon in $@; do
+	size=$(echo $icon | sed s/[^0-9]*//g)
+	category=$(echo $icon | cut -d, -f1)
+	build_name=$(echo $icon | cut -d, -f2)
+	install_name=$(echo $build_name | sed "s/[0-9]//g; s/-\././")
+	install_name=$(basename $install_name)
+
+	if test -z $size; then 
+		size=scalable;
+	else
+		size=${size}x${size};
+	fi
+	
+	install_dir=${INSTALL_DEST_DIR}${INSTALL_BASE_DIR}/$size/$category
+	install_path=$install_dir/$install_name
+	
+	if test "x$INSTALL" = "xyes"; then
+		echo "Installing $size $install_name into $THEME_NAME icon theme"
+		
+		$($MKINSTALLDIRS_EXEC $install_dir) || {
+			echo "Failed to create directory $install_dir"
+			exit 1
+		}
+		
+		$($INSTALL_DATA_EXEC $SRC_DIR/$build_name $install_path) || {
+			echo "Failed to install $SRC_DIR/$build_name into $install_path"
+			exit 1
+		}
+
+		if test ! -e $install_path; then
+			echo "Failed to install $SRC_DIR/$build_name into $install_path"
+			exit 1
+		fi
+	else
+		if test -e $install_path; then
+			echo "Removing $size $install_name from $THEME_NAME icon theme"
+
+			rm $install_path || { 
+				echo "Failed to remove $install_path"
+				exit 1
+			}
+		fi
+	fi
+done
+
+gtk_update_icon_cache_bin="$((which gtk-update-icon-cache || echo /opt/gnome/bin/gtk-update-icon-cache)2>/dev/null)"
+gtk_update_icon_cache="$gtk_update_icon_cache_bin -f -t $INSTALL_BASE_DIR"
+
+if test -z "$INSTALL_DEST_DIR"; then 
+	if test -x $gtk_update_icon_cache_bin; then 
+		echo "Updating GTK icon cache"
+		$gtk_update_icon_cache
+	else
+		echo "*** Icon cache not updated. Could not execute $gtk_update_icon_cache_bin"
+	fi
+else
+	echo "*** Icon cache not updated. After (un)install, run this:"
+	echo "***   $gtk_update_icon_cache"
+fi
+
diff --git a/build/m4/Makefile.am b/build/m4/Makefile.am
new file mode 100644
index 0000000..6c1d899
--- /dev/null
+++ b/build/m4/Makefile.am
@@ -0,0 +1,6 @@
+EXTRA_DIST = \
+	$(srcdir)/shamrock/*.m4 \
+	$(srcdir)/shave/*.m4 \
+	$(srcdir)/shave/*.in
+MAINTAINERCLEANFILES = Makefile.in
+
diff --git a/build/m4/shamrock/expansions.m4 b/build/m4/shamrock/expansions.m4
new file mode 100644
index 0000000..ba62356
--- /dev/null
+++ b/build/m4/shamrock/expansions.m4
@@ -0,0 +1,50 @@
+AC_DEFUN([SHAMROCK_EXPAND_LIBDIR],
+[	
+	expanded_libdir=`(
+		case $prefix in 
+			NONE) prefix=$ac_default_prefix ;; 
+			*) ;; 
+		esac
+		case $exec_prefix in 
+			NONE) exec_prefix=$prefix ;; 
+			*) ;; 
+		esac
+		eval echo $libdir
+	)`
+	AC_SUBST(expanded_libdir)
+])
+
+AC_DEFUN([SHAMROCK_EXPAND_BINDIR],
+[
+	expanded_bindir=`(
+		case $prefix in 
+			NONE) prefix=$ac_default_prefix ;; 
+			*) ;; 
+		esac
+		case $exec_prefix in 
+			NONE) exec_prefix=$prefix ;; 
+			*) ;; 
+		esac
+		eval echo $bindir
+	)`
+	AC_SUBST(expanded_bindir)
+])
+
+AC_DEFUN([SHAMROCK_EXPAND_DATADIR],
+[
+	case $prefix in
+		NONE) prefix=$ac_default_prefix ;;
+		*) ;;
+	esac
+
+	case $exec_prefix in
+		NONE) exec_prefix=$prefix ;;
+		*) ;;
+	esac
+
+	expanded_datadir=`(eval echo $datadir)`
+	expanded_datadir=`(eval echo $expanded_datadir)`
+
+	AC_SUBST(expanded_datadir)
+])
+
diff --git a/build/m4/shamrock/gnome-doc.m4 b/build/m4/shamrock/gnome-doc.m4
new file mode 100644
index 0000000..e7340e9
--- /dev/null
+++ b/build/m4/shamrock/gnome-doc.m4
@@ -0,0 +1,23 @@
+AC_DEFUN([SHAMROCK_CHECK_GNOME_DOC_UTILS],
+[
+	AC_ARG_ENABLE([user-help],
+			AC_HELP_STRING([--enable-user-help], [Enable building the user-help [[default=auto]]]),,
+			enable_user_help=auto)
+
+	if test "x$enable_user_help" = "xauto"; then
+		PKG_CHECK_MODULES(GNOME_DOC_UTILS,
+			gnome-doc-utils,
+			enable_user_help=yes, enable_user_help=no)
+	elif test "x$enable_user_help" = "xyes"; then
+		PKG_CHECK_MODULES(GNOME_DOC_UTILS, gnome-doc-utils)
+	fi
+
+	# GNOME_DOC_INIT sets ENABLE_SK, but if we have disabled
+	# user docs, then this needs to be defined manually.
+	AM_CONDITIONAL(ENABLE_SK, false)
+	if test "x$enable_user_help" = "xyes"; then
+		GNOME_DOC_INIT([$1], enable_user_help=yes, enable_user_help=no)
+	fi
+
+	AM_CONDITIONAL(HAVE_GNOME_DOC_UTILS, test "x$enable_user_help" = "xyes")
+])
diff --git a/build/m4/shamrock/i18n.m4 b/build/m4/shamrock/i18n.m4
new file mode 100644
index 0000000..e632647
--- /dev/null
+++ b/build/m4/shamrock/i18n.m4
@@ -0,0 +1,10 @@
+AC_DEFUN([SHAMROCK_CONFIGURE_I18N],
+[
+	ALL_LINGUAS=`grep -v '^#' $srcdir/po/LINGUAS | $SED ':a;N;$!ba;s/\n/ /g; s/[ ]+/ /g' | xargs`
+	GETTEXT_PACKAGE=$1
+	AC_SUBST(GETTEXT_PACKAGE)
+	AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext Package])
+	AM_GLIB_GNU_GETTEXT
+	AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS'])
+])
+
diff --git a/build/m4/shamrock/mono.m4 b/build/m4/shamrock/mono.m4
new file mode 100644
index 0000000..cb6d832
--- /dev/null
+++ b/build/m4/shamrock/mono.m4
@@ -0,0 +1,120 @@
+AC_DEFUN([SHAMROCK_FIND_MONO_1_0_COMPILER],
+[
+	SHAMROCK_FIND_PROGRAM_OR_BAIL(MCS, mcs)
+])
+
+AC_DEFUN([SHAMROCK_FIND_MONO_2_0_COMPILER],
+[
+	SHAMROCK_FIND_PROGRAM_OR_BAIL(MCS, gmcs)
+])
+
+AC_DEFUN([SHAMROCK_FIND_MONO_4_0_COMPILER],
+[
+	SHAMROCK_FIND_PROGRAM_OR_BAIL(MCS, dmcs)
+])
+
+AC_DEFUN([SHAMROCK_FIND_MONO_4_0_COMPILER_NOBAIL],
+[
+	SHAMROCK_FIND_PROGRAM(MCS, dmcs, no)
+])
+
+AC_DEFUN([SHAMROCK_FIND_MONO_RUNTIME],
+[
+	SHAMROCK_FIND_PROGRAM_OR_BAIL(MONO, mono)
+])
+
+AC_DEFUN([_SHAMROCK_CHECK_MONO_MODULE],
+[
+	PKG_CHECK_MODULES(MONO_MODULE, $1 >= $2)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO_MODULE],
+[
+	_SHAMROCK_CHECK_MONO_MODULE(mono, $1)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO2_MODULE],
+[
+	_SHAMROCK_CHECK_MONO_MODULE(mono-2, $1)
+])
+
+AC_DEFUN([_SHAMROCK_CHECK_MONO_MODULE_NOBAIL],
+[
+	PKG_CHECK_MODULES(MONO_MODULE, $2 >= $1,
+		HAVE_MONO_MODULE=yes, HAVE_MONO_MODULE=no)
+	AC_SUBST(HAVE_MONO_MODULE)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO_MODULE_NOBAIL],
+[
+	_SHAMROCK_CHECK_MONO_MODULE_NOBAIL(mono, $1)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO2_MODULE_NOBAIL],
+[
+	_SHAMROCK_CHECK_MONO_MODULE_NOBAIL(mono-2, $1)
+])
+
+AC_DEFUN([_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES],
+[
+	for asm in $(echo "$*" | cut -d, -f3- | sed 's/\,/ /g')
+	do
+		AC_MSG_CHECKING([for Mono $2 GAC for $asm.dll])
+		if test \
+			-e "$($PKG_CONFIG --variable=libdir $1)/mono/$2/$asm.dll" -o \
+			-e "$($PKG_CONFIG --variable=prefix $1)/lib/mono/$2/$asm.dll"; \
+			then \
+			AC_MSG_RESULT([found])
+		else
+			AC_MSG_RESULT([not found])
+			AC_MSG_ERROR([missing required Mono $2 assembly: $asm.dll])
+		fi
+	done
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO_1_0_GAC_ASSEMBLIES],
+[
+	_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES(mono, 1.0, $*)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES],
+[
+	_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES(mono, 2.0, $*)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO2_2_0_GAC_ASSEMBLIES],
+[
+	_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES(mono-2, 2.0, $*)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO_4_0_GAC_ASSEMBLIES],
+[
+	_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES(mono, 4.0, $*)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO2_4_0_GAC_ASSEMBLIES],
+[
+	_SHAMROCK_CHECK_MONO_GAC_ASSEMBLIES(mono-2, 4.0, $*)
+])
+
+AC_DEFUN([SHAMROCK_CHECK_MONO2_4_0_GAC_ASSEMBLIES],
+[
+SHAMROCK_CHECK_MONO_MODULE(2.4.0)
+	AC_CHECK_PROG(MCS, gmcs, yes)
+		if test "x$MCS" = "xyes"; then
+			AC_SUST(MCS)
+			SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([	
+				System.Data
+				Mono.Cairo
+				Mono.Posix
+			])
+		else
+			SHAMROCK_FIND_MONO_2_0_COMPILER
+			SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([	
+				System.Data
+				Mono.Cairo
+				Mono.Posix
+			])
+	fi
+SHAMROCK_FIND_MONO_RUNTIME
+])
diff --git a/build/m4/shamrock/monodoc.m4 b/build/m4/shamrock/monodoc.m4
new file mode 100644
index 0000000..891ac74
--- /dev/null
+++ b/build/m4/shamrock/monodoc.m4
@@ -0,0 +1,25 @@
+AC_DEFUN([SHAMROCK_CHECK_MONODOC],
+[
+	AC_ARG_ENABLE(docs, AC_HELP_STRING([--disable-docs], 
+		[Do not build documentation]), , enable_docs=yes)
+
+	if test "x$enable_docs" = "xyes"; then
+		AC_PATH_PROG(MONODOCER, monodocer, no)
+		if test "x$MONODOCER" = "xno"; then
+			AC_MSG_ERROR([You need to install monodoc, or pass --disable-docs to configure to skip documentation installation])
+		fi
+
+		AC_PATH_PROG(MDASSEMBLER, mdassembler, no)
+		if test "x$MDASSEMBLER" = "xno"; then
+			AC_MSG_ERROR([You need to install mdassembler, or pass --disable-docs to configure to skip documentation installation])
+		fi
+
+		DOCDIR=`$PKG_CONFIG monodoc --variable=sourcesdir`
+		AC_SUBST(DOCDIR)
+		AM_CONDITIONAL(BUILD_DOCS, true)
+	else
+		AC_MSG_NOTICE([not building ${PACKAGE} API documentation])
+		AM_CONDITIONAL(BUILD_DOCS, false)
+	fi
+])
+
diff --git a/build/m4/shamrock/nunit.m4 b/build/m4/shamrock/nunit.m4
new file mode 100644
index 0000000..4d57d00
--- /dev/null
+++ b/build/m4/shamrock/nunit.m4
@@ -0,0 +1,29 @@
+AC_DEFUN([SHAMROCK_CHECK_NUNIT],
+[
+	NUNIT_REQUIRED=2.4.7
+
+	AC_ARG_ENABLE(tests, AC_HELP_STRING([--enable-tests], [Enable NUnit tests]),
+		enable_tests=$enableval, enable_tests="no")
+
+	if test "x$enable_tests" = "xno"; then
+		do_tests=no
+		AM_CONDITIONAL(ENABLE_TESTS, false)
+	else
+		PKG_CHECK_MODULES(NUNIT, nunit >= $NUNIT_REQUIRED,
+			do_tests="yes", do_tests="no")
+
+		AC_SUBST(NUNIT_LIBS)
+		AM_CONDITIONAL(ENABLE_TESTS, test "x$do_tests" = "xyes")
+
+		if test "x$do_tests" = "xno"; then
+			PKG_CHECK_MODULES(NUNIT, mono-nunit >= 2.4,
+				do_tests="yes", do_tests="no")
+
+			AC_SUBST(NUNIT_LIBS)
+			AM_CONDITIONAL(ENABLE_TESTS, test "x$do_tests" = "xyes")
+
+			if test "x$do_tests" = "xno"; then
+				AC_MSG_WARN([Could not find nunit: tests will not be available])			fi
+		fi
+	fi
+])
diff --git a/build/m4/shamrock/programs.m4 b/build/m4/shamrock/programs.m4
new file mode 100644
index 0000000..412a7a6
--- /dev/null
+++ b/build/m4/shamrock/programs.m4
@@ -0,0 +1,13 @@
+AC_DEFUN([SHAMROCK_FIND_PROGRAM],
+[
+	AC_PATH_PROG($1, $2, $3)
+	AC_SUBST($1)
+])
+
+AC_DEFUN([SHAMROCK_FIND_PROGRAM_OR_BAIL],
+[
+	SHAMROCK_FIND_PROGRAM($1, $2, no)
+	if test "x$$1" = "xno"; then
+		AC_MSG_ERROR([You need to install '$2'])
+	fi
+])
diff --git a/build/m4/shamrock/util.m4 b/build/m4/shamrock/util.m4
new file mode 100644
index 0000000..de85ba9
--- /dev/null
+++ b/build/m4/shamrock/util.m4
@@ -0,0 +1,11 @@
+AC_DEFUN([SHAMROCK_CONCAT],
+[
+	$1="$$1 $$2"
+])
+
+AC_DEFUN([SHAMROCK_CONCAT_MODULE],
+[
+	SHAMROCK_CONCAT($1_CFLAGS, $2_CFLAGS)
+	SHAMROCK_CONCAT($1_LIBS, $2_LIBS)
+])
+
diff --git a/build/m4/shave/shave-libtool.in b/build/m4/shave/shave-libtool.in
new file mode 100644
index 0000000..54ebd69
--- /dev/null
+++ b/build/m4/shave/shave-libtool.in
@@ -0,0 +1,109 @@
+#!/bin/sh
+#
+# Copyright (c) 2009, Damien Lespiau <damien lespiau gmail com>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+# we need sed
+SED= SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+}
+
+# the real libtool to use
+LIBTOOL="$1"
+shift
+
+# if 1, don't print anything, the underlaying wrapper will do it
+pass_though=0
+
+# scan the arguments, keep the right ones for libtool, and discover the mode
+preserved_args=
+
+# have we seen the --tag option of libtool in the command line ?
+tag_seen=0
+
+while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+    --mode=*)
+        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+        preserved_args="$preserved_args $opt"
+        ;;
+    -o)
+        lt_output="$1"
+        preserved_args="$preserved_args $opt"
+	;;
+    --tag=*)
+        tag_seen=1
+        preserved_args="$preserved_args $opt"
+	;;
+    *)
+        preserved_args="$preserved_args $opt"
+        ;;
+      esac
+done
+
+case "$mode" in
+compile)
+    # shave will be called and print the actual CC/CXX/LINK line
+    preserved_args="$preserved_args --shave-mode=$mode"
+    pass_though=1
+    ;;
+link)
+    preserved_args="$preserved_args --shave-mode=$mode"
+    Q="  LINK  "
+    ;;
+*)
+    # let's u
+    # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
+    ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+# automake does not add a --tag switch to its libtool invocation when
+# assembling a .s file and rely on libtool to infer the right action based
+# on the compiler name. As shave is using CC to hook a wrapper, libtool gets
+# confused. Let's detect these cases and add a --tag=CC option.
+tag=""
+if test $tag_seen -eq 0 -a x"$mode" = xcompile; then
+    tag="--tag=CC"
+fi
+
+if test -z $V; then
+    if test $pass_though -eq 0; then
+        echo "$Q$output"
+    fi
+    $LIBTOOL --silent $tag $preserved_args
+else
+    echo $LIBTOOL $tag $preserved_args
+    $LIBTOOL $tag $preserved_args
+fi
diff --git a/build/m4/shave/shave.in b/build/m4/shave/shave.in
new file mode 100644
index 0000000..490d6c5
--- /dev/null
+++ b/build/m4/shave/shave.in
@@ -0,0 +1,109 @@
+#!/bin/sh
+#
+# Copyright (c) 2009, Damien Lespiau <damien lespiau gmail com>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+# we need sed
+SED= SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+}
+
+# the tool to wrap (cc, cxx, ar, ranlib, ..)
+tool="$1"
+shift
+
+# the reel tool (to call)
+REEL_TOOL="$1"
+shift
+
+pass_through=0
+preserved_args=
+while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+    --shave-mode=*)
+        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+        ;;
+    -o)
+        lt_output="$1"
+        preserved_args="$preserved_args $opt"
+        ;;
+    -out:*|/out:*)
+        lt_output="${opt#*:}"
+        preserved_args="$preserved_args $opt"
+        ;;
+    *)
+        preserved_args="$preserved_args $opt"
+        ;;
+      esac
+done
+
+# mode=link is handled in the libtool wrapper
+case "$mode,$tool" in
+link,*)
+    pass_through=1
+    ;;
+*,cxx)
+    Q="  CXX   "
+    ;;
+*,cc)
+    Q="  CC    "
+    ;;
+*,fc)
+    Q="  FC    "
+    ;;
+*,f77)
+    Q="  F77   "
+    ;;
+*,objc)
+    Q="  OBJC   "
+    ;;
+*,mcs)
+    Q="  MCS   "
+    ;;
+*,*)
+    # should not happen
+    Q="  CC    "
+    ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+if test -z $V; then
+    if test $pass_through -eq 0; then
+        echo "$Q$output"
+    fi
+    $REEL_TOOL $preserved_args
+else
+    echo $REEL_TOOL $preserved_args
+    $REEL_TOOL $preserved_args
+fi
diff --git a/build/m4/shave/shave.m4 b/build/m4/shave/shave.m4
new file mode 100644
index 0000000..40e47f4
--- /dev/null
+++ b/build/m4/shave/shave.m4
@@ -0,0 +1,102 @@
+dnl Make automake/libtool output more friendly to humans
+dnl
+dnl Copyright (c) 2009, Damien Lespiau <damien lespiau gmail com>
+dnl
+dnl Permission is hereby granted, free of charge, to any person
+dnl obtaining a copy of this software and associated documentation
+dnl files (the "Software"), to deal in the Software without
+dnl restriction, including without limitation the rights to use,
+dnl copy, modify, merge, publish, distribute, sublicense, and/or sell
+dnl copies of the Software, and to permit persons to whom the
+dnl Software is furnished to do so, subject to the following
+dnl conditions:
+dnl
+dnl The above copyright notice and this permission notice shall be
+dnl included in all copies or substantial portions of the Software.
+dnl
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+dnl OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+dnl HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+dnl WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+dnl OTHER DEALINGS IN THE SOFTWARE.
+dnl
+dnl SHAVE_INIT([shavedir],[default_mode])
+dnl
+dnl shavedir: the directory where the shave scripts are, it defaults to
+dnl           $(top_builddir)
+dnl default_mode: (enable|disable) default shave mode.  This parameter
+dnl               controls shave's behaviour when no option has been
+dnl               given to configure.  It defaults to disable.
+dnl
+dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
+dnl   before AC_CONFIG_FILE/AC_OUTPUT is perfect.  This macro rewrites CC and
+dnl   LIBTOOL, you don't want the configure tests to have these variables
+dnl   re-defined.
+dnl * This macro requires GNU make's -s option.
+
+AC_DEFUN([_SHAVE_ARG_ENABLE],
+[
+  AC_ARG_ENABLE([shave],
+    AS_HELP_STRING(
+      [--enable-shave],
+      [use shave to make the build pretty [[default=$1]]]),,
+      [enable_shave=$1]
+    )
+])
+
+AC_DEFUN([SHAVE_INIT],
+[
+  dnl you can tweak the default value of enable_shave
+  m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
+
+  if test x"$enable_shave" = xyes; then
+    dnl where can we find the shave scripts?
+    m4_if([$1],,
+      [shavedir="$ac_pwd"],
+      [shavedir="$ac_pwd/$1"])
+    AC_SUBST(shavedir)
+
+    dnl make is now quiet
+    AC_SUBST([MAKEFLAGS], [-s])
+    AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
+
+    dnl we need sed
+    AC_CHECK_PROG(SED,sed,sed,false)
+
+    dnl substitute libtool
+    SHAVE_SAVED_LIBTOOL=$LIBTOOL
+    LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
+    AC_SUBST(LIBTOOL)
+
+    dnl substitute cc/cxx
+    SHAVE_SAVED_CC=$CC
+    SHAVE_SAVED_CXX=$CXX
+    SHAVE_SAVED_FC=$FC
+    SHAVE_SAVED_F77=$F77
+    SHAVE_SAVED_OBJC=$OBJC
+    SHAVE_SAVED_MCS=$MCS
+    CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
+    CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
+    FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
+    F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
+    OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
+    MCS="${SHELL} ${shavedir}/shave mcs ${SHAVE_SAVED_MCS}"
+    AC_SUBST(CC)
+    AC_SUBST(CXX)
+    AC_SUBST(FC)
+    AC_SUBST(F77)
+    AC_SUBST(OBJC)
+    AC_SUBST(MCS)
+
+    V=@
+  else
+    V=1
+  fi
+  Q='$(V:1=)'
+  AC_SUBST(V)
+  AC_SUBST(Q)
+])
+
diff --git a/build/private-icon-theme-installer b/build/private-icon-theme-installer
new file mode 100755
index 0000000..00f0ffe
--- /dev/null
+++ b/build/private-icon-theme-installer
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+mkinstalldirs=$1; shift
+install_data=$1; shift
+action=$1; shift
+dest_dir=$1; shift
+src_dir=$1; shift
+
+for icon in $@; do
+	dest_dir_build="${dest_dir}/icons/hicolor/$(dirname ${icon})"
+	if [[ ${action} == "-i" || ${action} == "-il" ]]; then
+		src_file="${src_dir}/ThemeIcons/${icon}"
+		$mkinstalldirs "${dest_dir_build}" &>/dev/null
+		if [[ ${action} == "-i" ]]; then 
+			echo "Installing private icon theme icon: ${icon}"
+		fi
+		$install_data "${src_file}" "${dest_dir_build}"
+	else
+		echo "Uninstalling private icon theme icon: ${icon}"
+		rm -f "${dest_dir_build}/$(basename ${icon})"
+	fi
+done
+
diff --git a/configure.ac b/configure.ac
index b057adb..6f92942 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,8 +3,10 @@ dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ([2.54])
 AC_INIT([LongoMatch], [0.16.6])
 AM_INIT_AUTOMAKE([foreign])
+AM_MAINTAINER_MODE
 
-AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_MACRO_DIR([build/m4])
+AC_SUBST([ACLOCAL_AMFLAGS], ["-I build/m4/shamrock -I build/m4/shave \${ACLOCAL_FLAGS}"])
 
 AM_PROG_CC_STDC
 AC_ISC_POSIX
@@ -33,29 +35,6 @@ GETTEXT_PACKAGE=longomatch
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name])
 
-IT_PROG_INTLTOOL([0.40.0])
-AM_GLIB_GNU_GETTEXT
-
-
-dnl Check for C# compiler
-AC_PATH_PROG(CSC, csc, no)
-if test "x$CSC" = "xno"; then
-	AC_PATH_PROG(MCS, gmcs, no)
-	if test "x$MCS" = "xno"; then
-       		AC_PATH_PROG(MCS2, gmcs2,no)
-		if test "x$MCS2" = "xno"; then
-			AC_MSG_ERROR([You need to install a C-sharp compiler])
-		else 
-			AC_SUBST(CSC,[gmcs2])	
-		fi
-	
-	else 
-		AC_SUBST(CSC,[gmcs])
-	fi
-else 
-	AC_SUBST(CSC,[csc])
-fi
-
 dnl Check for gettext utils
 AC_PATH_PROG(MSGFMT, msgfmt, no)
 if test "x$MSGFMT" = "xno"; then
@@ -64,68 +43,74 @@ else
 	AC_SUBST(MSGFMT,[msgfmt])
 fi
 
+IT_PROG_INTLTOOL([0.40.0])
+AM_GLIB_GNU_GETTEXT
 
-AC_ARG_ENABLE(debug,
-	AC_HELP_STRING([--enable-debug],
-		[Use 'DEBUG' Configuration [default=NO]]),
-		enable_debug=yes, enable_debug=no)
-AM_CONDITIONAL(ENABLE_DEBUG, test x$enable_debug = xyes)
-if test "x$enable_debug" = "xyes" ; then
-	CONFIG_REQUESTED="yes"
-fi
-AC_ARG_ENABLE(release,
-	AC_HELP_STRING([--enable-release],
-		[Use 'RELEASE' Configuration [default=YES]]),
-		enable_release=yes, enable_release=no)
-AM_CONDITIONAL(ENABLE_RELEASE, test x$enable_release = xyes)
-if test "x$enable_release" = "xyes" ; then
-	CONFIG_REQUESTED="yes"
-fi
-if test -z "$CONFIG_REQUESTED" ; then
-	AM_CONDITIONAL(ENABLE_RELEASE, true)
-	enable_release=yes
-fi
 
+dnl Mono and C# compiler
+dnl Check first for a 4.0 compiler or than fallback to 2.0
+SHAMROCK_CHECK_MONO_MODULE(2.4.0)
+AC_PATH_PROG(DMCS, dmcs, no)
+	if test "x$DMCS" = "xno"; then
+		SHAMROCK_FIND_MONO_2_0_COMPILER
+		SHAMROCK_CHECK_MONO_2_0_GAC_ASSEMBLIES([	
+			System.Data
+			Mono.Cairo
+			Mono.Posix
+		])
+	else
+		AC_SUBST(MCS, ["$DMCS"])
+		SHAMROCK_CHECK_MONO_4_0_GAC_ASSEMBLIES([	
+			System.Data
+			Mono.Cairo
+			Mono.Posix
+		])
+	fi
+SHAMROCK_FIND_MONO_RUNTIME
+
+dnl NUnit (optional)
+SHAMROCK_CHECK_NUNIT
 
 dnl package checks, common for all configs
-PKG_CHECK_MODULES([GLIB_SHARP_20], [glib-sharp-2.0])
-PKG_CHECK_MODULES([GTK_SHARP_20], [gtk-sharp-2.0])
-PKG_CHECK_MODULES([DB4O_74], [db4o])
-
+PKG_CHECK_MODULES([GLIBSHARP], [glib-sharp-2.0])
+AC_SUBST(GLIBSHARP_LIBS)
+PKG_CHECK_MODULES([GTKSHARP], [gtk-sharp-2.0])
+AC_SUBST(GTKSHARP_LIBS)
+PKG_CHECK_MODULES([DB4O], [db4o])
+AC_SUBST(DB4O_LIBS)
+
+dnl package checks for libcesarplayer
 PKG_CHECK_MODULES(CESARPLAYER, [gtk+-2.0 >= 2.8 gdk-2.0 gio-2.0 glib-2.0 gstreamer-0.10 gstreamer-audio-0.10 gstreamer-video-0.10 gstreamer-pbutils-0.10 gobject-2.0 gstreamer-interfaces-0.10])
 AC_SUBST(CESARPLAYER_CFLAGS)
 AC_SUBST(CESARPLAYER_LIBS)
 
-dnl Check for Mono assemblies that we need
-needed_dlls="Mono.Posix Mono.Cairo"
-for i in $needed_dlls; do
-  AC_MSG_CHECKING([for $i.dll])
-  if test ! \( -e `$PKG_CONFIG --variable=prefix mono`/lib/mono/2.0/$i.dll -o -e `$PKG_CONFIG --variable=prefix mono`/lib64/mono/2.0//$i.dll \); then
-    AC_MSG_ERROR([missing required mono 2.0 DLL: $i.dll])
-  else
-    AC_MSG_RESULT([found])
-  fi
-done
-
-# Checks for library functions.
-AC_CHECK_FUNCS([strchr strstr])
-
+#SHAVE_INIT([build/m4/shave], [enable])
 
 dnl package checks, per config
 
 AC_CONFIG_FILES([env], [chmod +x env])
 AC_CONFIG_FILES([
-po/Makefile.in
+Makefile
+
+build/Makefile
+build/m4/Makefile
+build/m4/shave/shave
+build/m4/shave/shave-libtool
+
 libcesarplayer/Makefile
+libcesarplayer/src/Makefile
+
+CesarPlayer/Makefile
 CesarPlayer/cesarplayer.pc
 CesarPlayer/CesarPlayer.dll.config
 CesarPlayer/AssemblyInfo.cs
-CesarPlayer/Makefile
+
+LongoMatch/Makefile
 LongoMatch/longomatch
 LongoMatch/longomatch.desktop.in
 LongoMatch/AssemblyInfo.cs
-LongoMatch/Makefile
-Makefile
+
+po/Makefile.in
 ])
 
 AC_OUTPUT



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