[gnome-builder] build: modernize build system



commit bc6215c445aeea6958ef577cc09491557325709b
Author: Christian Hergert <christian hergert me>
Date:   Wed Apr 29 17:35:44 2015 -0700

    build: modernize build system
    
    Previously, the build system was an experiment in compartmentalizing
    various autoconf and automake features. That was very much an experiment
    I'm happy to put behind us. Managing it was just getting too abstract.
    
    This moves us to a more traditional autotools setup using recursive
    automake. I know, I know, "Recursive Automake Considered Harmful" and
    all. Build times don't seem to be too adversely affected at the moment.
    
    Also, we generate ide-debug.h now so that when --enable-tracing is set,
    we force rebuilding the dependent modules.
    
      --enable-tracing now implies --enable-debug
    
    I've also added two more options:
    
      --enable-optimizations will use -Bsymbolic for libide to help reduce
       the number of inter-PLT jumps.
    
      --enable-lto can be used to enable optimizations across .o's when
        linking.
    
    I've also moved various things around in a more traditional layout.
    
      libsearch.la can be found in contrib/search. This contains the Trie
      and Fuzzy search indexes.
    
      libeditorconfig.la can be found in contrib/libeditorconfig. This
      contains a partially modified upstream libeditorconfig. Mostly just
      build and warning fixes have been applied.
    
    We are now using Behdad's git.mk for tracking gitignores. Please use that
    whenever possible instead of manually creating .gitignore files.
    
    I've reversed how some debug options are checked. Instead of checking
    for tracing like:
    
      #ifndef IDE_DISABLE_TRACE
    
    I've inverted the check to
    
      #ifdef IDE_ENABLE_TRACE
    
    See libide/ide-debug.h.in as to why this is the case.
    
    I've also dropped various dead code. Uncrustify and highlight menu code
    to be specific. We can bring it back if designs dictate it. As for
    uncrustify, I think this is better placed in the scripting layer via
    GJS and GSubprocess.
    
    Thanks for reading!

 .gitignore                                         |   53 --
 AUTHORS                                            |   20 +-
 Makefile.am                                        |   96 ++-
 autogen.sh                                         |   55 +-
 build/Makefile.am                                  |   14 +
 build/autotools/.gitignore                         |    8 -
 build/autotools/Makefile.am                        |   25 +
 build/autotools/Makefile.am.enums                  |   52 ++
 .../{automake/glib-tap.mk => Makefile.am.glib-tap} |    4 +-
 build/autotools/Makefile.am.gresources             |   62 ++
 build/autotools/Makefile.am.marshal                |   52 ++
 build/autotools/{m4 => }/appstream-xml.m4          |    0
 build/autotools/autoconf.d/.gitignore              |   10 -
 build/autotools/autoconf.d/10_basic.post-config    |    4 -
 build/autotools/autoconf.d/20_debug.post-config    |    6 -
 .../autoconf.d/30_command_line_options.pre-am      |   41 --
 build/autotools/autoconf.d/50_appstream.post-lt    |    1 -
 build/autotools/autoconf.d/50_debug.post-am        |    1 -
 build/autotools/autoconf.d/50_dependencies.post-am |   33 -
 build/autotools/autoconf.d/50_glibtest.post-am     |    1 -
 build/autotools/autoconf.d/50_gsettings.post-lt    |    1 -
 build/autotools/autoconf.d/50_ltversion.post-lt    |    5 -
 .../autoconf.d/50_maintainer_flags.post-am         |   24 -
 build/autotools/autoconf.d/50_progs.post-am        |    3 -
 build/autotools/autoconf.d/50_silent_rules.post-am |    1 -
 build/autotools/autoconf.d/50_tracing.post-am      |    1 -
 build/autotools/autoconf.d/50_versions.pre-ac      |    7 -
 build/autotools/autoconf.d/60_clang.pre-am         |   32 -
 build/autotools/autoconf.d/60_gcc.pre-am           |    9 -
 build/autotools/autoconf.d/60_sunpro_c.pre-am      |    8 -
 build/autotools/autoconf.d/print_config.m4         |    9 -
 build/autotools/autoconf.d/setup_libtool.m4        |    5 -
 build/autotools/autogen.d/git-submodule.sh         |    4 -
 build/autotools/automake/AutomakeDocs.mk           |    3 -
 build/autotools/automake/ChangeLog.mk              |   10 -
 build/autotools/automake/Defaults.mk               |    3 -
 .../autotools/{m4 => }/ax_append_compile_flags.m4  |    0
 build/autotools/{m4 => }/ax_append_flag.m4         |    0
 build/autotools/{m4 => }/ax_check_compile_flag.m4  |    0
 build/autotools/{m4 => }/ax_require_defined.m4     |    0
 build/autotools/{m4 => }/glibtests.m4              |    1 -
 build/autotools/{m4 => }/introspection.m4          |    0
 build/autotools/m4/.gitignore                      |    1 -
 tap-driver.sh => build/autotools/tap-driver.sh     |    0
 tap-test => build/autotools/tap-test               |    0
 configure.ac                                       |  355 ++++++++--
 contrib/Makefile.am                                |    3 +
 contrib/libeditorconfig/Makefile.am                |   37 +
 .../libeditorconfig/ec_glob.c                      |    0
 .../libeditorconfig/ec_glob.h                      |    0
 .../libeditorconfig/editorconfig.c                 |    0
 .../libeditorconfig/editorconfig.h                 |    0
 .../libeditorconfig/editorconfig/editorconfig.h    |    0
 .../editorconfig/editorconfig_handle.h             |    0
 .../libeditorconfig/editorconfig_handle.c          |    0
 .../libeditorconfig/editorconfig_handle.h          |    0
 .../libeditorconfig/global.h                       |    0
 .../editorconfig => contrib}/libeditorconfig/ini.c |    0
 .../editorconfig => contrib}/libeditorconfig/ini.h |    0
 .../libeditorconfig/misc.c                         |    0
 .../libeditorconfig/misc.h                         |    0
 .../libeditorconfig/utarray.h                      |    0
 contrib/search/Makefile.am                         |   24 +
 {cut-n-paste => contrib/search}/fuzzy.c            |    0
 {cut-n-paste => contrib/search}/fuzzy.h            |    0
 {cut-n-paste => contrib/search}/trie.c             |    0
 {cut-n-paste => contrib/search}/trie.h             |    0
 data/.gitignore                                    |    4 -
 data/Makefile.am                                   |   28 +
 data/data.mk                                       |   28 -
 data/gsettings.mk                                  |   22 -
 data/gsettings/Makefile.am                         |   15 +
 ...xml.in => org.gnome.builder.editor.gschema.xml} |    0
 ... org.gnome.builder.editor.language.gschema.xml} |    0
 ... => org.gnome.builder.experimental.gschema.xml} |    0
 ...schema.xml.in => org.gnome.builder.gschema.xml} |    0
 ... => org.gnome.builder.project-tree.gschema.xml} |    0
 data/icons/Makefile.am                             |    2 +
 data/{js => markdown}/markdown-view.js             |    0
 data/{css => markdown}/markdown.css                |    0
 data/{js => markdown}/marked.js                    |    0
 data/style-schemes/Makefile.am                     |   10 +
 doc/Makefile.am                                    |    3 +
 doc/examples/Makefile.am                           |    3 +
 doc/examples/scripts/Makefile.am                   |    7 +
 {examples => doc/examples}/scripts/README.md       |    0
 .../examples}/scripts/search-provider.js           |    0
 .../examples}/scripts/search-provider.py           |    0
 git.mk                                             |  333 +++++++++
 libide/.gitignore                                  |    2 -
 libide/Makefile.am                                 |  728 ++++++++++----------
 libide/autotools/ide-autotools-project-miner.c     |    2 +-
 libide/autotools/ide-makecache.c                   |    8 +-
 libide/clang/ide-clang-completion-item.c           |    2 +-
 libide/clang/ide-clang-service.c                   |    4 +-
 libide/editorconfig/libeditorconfig/Makefile.am    |   37 -
 libide/ide-back-forward-list.c                     |    4 +-
 libide/{ide-debug.h => ide-debug.h.in}             |   18 +-
 libide/{ide-enums.c.template => ide-enums.c.in}    |    0
 libide/{ide-enums.h.template => ide-enums.h.in}    |    0
 libide/ide-project.c                               |    2 +-
 libide/ide-source-view-movements.c                 |    2 +-
 libide/ide-source-view.c                           |    6 +-
 libide/ide-unsaved-files.c                         |    2 +-
 libide/resources/libide.gresource.xml              |    1 -
 po/POTFILES.in                                     |   46 +-
 src/Makefile.am                                    |  236 +++++++
 src/editor/gb-source-formatter.c                   |  351 ----------
 src/editor/gb-source-formatter.h                   |   63 --
 src/editor/gb-source-highlight-menu.c              |   83 ---
 src/editor/gb-source-highlight-menu.h              |   30 -
 src/gnome-builder.mk                               |  256 -------
 src/resources/editor/uncrustify/uncrustify.c.cfg   |  129 ----
 src/resources/gnome-builder.gresource.xml          |    9 +-
 src/util/gb-version.h.in                           |   36 -
 tests/Makefile.am                                  |  104 +++
 tests/tests.h                                      |    7 -
 tests/tests.mk                                     |  105 ---
 tools/Makefile.am                                  |   62 +-
 119 files changed, 1853 insertions(+), 2021 deletions(-)
---
diff --git a/AUTHORS b/AUTHORS
index 0afaceb..ebe0418 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,25 +1,41 @@
+# Generated by Makefile. Do not edit.
+
 Alexander Larsson
 Alexandre Franke
+Antoine Jacoutot
+burningTyger
 Carlos Soriano
 Christian Hergert
 Cosimo Cecchi
+David King
 Dimitris Zenios
+Elad Alfassa
+Erick Pérez Castellanos
 Fabiano Fidêncio
+Florian
 Florian Bäuerle
 Florian Müllner
+Garrett Regier
+Giovanni Campagna
 Hashem Nasarat
-Hylke Bons
+Ignacio Casal Quinteiro
 Igor Gnatenko
 Jakub Steiner
 Jasper St. Pierre
 Jonathon Jongsma
+Lars Uebernickel
+Marek Černocký
 Mathieu Bridon
 Megh Parikh
 Michael Catanzaro
-Pete Travis
+Paolo Borelli
+Patrick Griffis
+Piotr Drąg
 Ray Strode
 Roberto Majadas
 Sebastien Lafargue
+Timm Bäder
 Ting-Wei Lan
 Trinh Anh Ngoc
 Yosef Or Boczko
+zilla hmt im
diff --git a/Makefile.am b/Makefile.am
index d59bd1c..5a88344 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,47 +1,85 @@
-include build/autotools/automake/glib-tap.mk
-include build/autotools/automake/Defaults.mk
-include build/autotools/automake/ChangeLog.mk
-include build/autotools/automake/AutomakeDocs.mk
-
-ACLOCAL_AMFLAGS = -I build/autotools/m4 ${ACLOCAL_FLAGS}
-
-AM_CPPFLAGS =
-AM_LDFLAGS =
-
-include libide/Makefile.am
-include src/gnome-builder.mk
-include tools/Makefile.am
-include data/data.mk
-include data/gsettings.mk
-include tests/tests.mk
-
-# XXX: Not happy about this, need to come up with a good way to do
-# icon installation that doesn't require subdirs.
-SUBDIRS = . data/icons po
+SUBDIRS = . build contrib libide src data po tools tests doc
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = $(top_builddir)/data/libide-1.0.pc
 
-EXTRA_DIST += \
-       tap-driver.sh \
-       tap-test
-
 INTLTOOL_FILES = \
        intltool-extract.in \
        intltool-merge.in \
        intltool-update.in \
        $(NULL)
 
-EXTRA_DIST += \
+EXTRA_DIST = \
        $(INTLTOOL_FILES) \
        AUTHORS \
-       build/autotools/m4/introspection.m4 \
        $(NULL)
 
-DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
+DISTCLEANFILES = \
+       intltool-extract \
+       intltool-merge \
+       intltool-update \
+       po/.intltool-merge-cache
+
+DISTCHECK_CONFIGURE_FLAGS = \
+       --enable-introspection \
+       --enable-gtk-doc \
+       --disable-tracing \
+       --enable-appstream-util \
+       $(NULL)
+
+GITIGNOREFILES = \
+       *.o \
+       aclocal.m4 \
+       build-aux \
+       ChangeLog \
+       config \
+       config.h.in \
+       gtk-doc.m4 \
+       gtk-doc.make \
+       INSTALL \
+       $(NULL)
+
+AUTHORS:
+       @if test -d "$(srcdir)/.git"; \
+       then \
+               echo Creating $@ && \
+               ( cd "$(top_srcdir)" && \
+                 echo '# Generated by Makefile. Do not edit.'; echo; \
+                 git log --no-merges --pretty=format:"%an" libide src \
+                 | sort | uniq ) > $  tmp \
+               && mv -f $  tmp $@ \
+               || ( rm -f $  tmp ; \
+                    echo Failed to generate $@ >&2 ); \
+       fi
+
+dist-hook:
+       @if test -d "$(srcdir)/.git"; \
+       then \
+               echo Creating ChangeLog && \
+               ( cd "$(top_srcdir)" && \
+                 echo '# Generated by Makefile. Do not edit.'; echo; \
+                 $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \
+               && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
+               || ( rm -f ChangeLog.tmp ; \
+                    echo Failed to generate ChangeLog >&2 ); \
+       else \
+               echo A git clone is required to generate a ChangeLog >&2; \
+       fi
+
+.PHONY: AUTHORS
+
+run:
+       GI_TYPELIB_PATH=libide \
+       $(LIBTOOL) --mode=execute gdb --args src/gnome-builder
 
 debug:
-       G_DEBUG=fatal-criticals $(LIBTOOL) --mode=execute gdb --args gnome-builder test.c
+       GI_TYPELIB_PATH=libide \
+       G_DEBUG=fatal-criticals \
+       $(LIBTOOL) --mode=execute gdb --args src/gnome-builder
 
 valgrind:
-       G_DEBUG=fatal-criticals $(LIBTOOL) --mode=execute valgrind gnome-builder test.c
+       GI_TYPELIB_PATH=libide \
+       G_DEBUG=fatal-criticals \
+       $(LIBTOOL) --mode=execute valgrind src/gnome-builder
+
+-include $(top_srcdir)/git.mk
diff --git a/autogen.sh b/autogen.sh
index 0c267f4..67763a1 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,44 +1,25 @@
 #!/bin/sh
+# Run this to generate all the initial makefiles, etc.
 
-#
-# Run this to generate all of the initial configure scripts and Makefiles.
-#
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
 
-# Switch to the source directory to initialize autoconf.
-olddir=`pwd`
-test -n "${srcdir}" || srcdir=`dirname "$0"`
-test -n "${srcdir}" || srcdir=.
-cd "${srcdir}"
-
-# Load all of our autogen scripts for various features.
-for script in build/autotools/autogen.d/*.sh; do
-    . "${script}"
-done
-
-# Discover the location of autoconf.
-AUTORECONF=`which autoreconf`
-if test -z "${AUTORECONF}"; then
-    echo "*** No autoreconf found, please install it ***"
+(test -f $srcdir/src/main.c) || {
+    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+    echo " top-level gnome-builder directory"
     exit 1
-fi
-
-# Generate m4 sub-configure scripts for inclusion by configure.ac.
-for group in ac am config lt output print; do
-    for mode in pre post; do
-        FILE="build/autotools/autoconf.d/${mode}-${group}.m4"
-        cat build/autotools/autoconf.d/*.${mode}-${group} 2>/dev/null> ${FILE}
-    done
-done
+}
 
-# Run autoconf to build configure.
-intltoolize --automake --copy
-autoreconf --force --install --verbose -I build/autotools ${ACLOCAL_FLAGS} || exit $?
-
-# Remove that pesky autom4te.cache
-rm -rf autom4te.cache
+which gnome-autogen.sh || {
+    echo "You need to install gnome-common from the GNOME git"
+    exit 1
+}
 
-# Return to the original directory.
-cd "$olddir"
+touch ChangeLog
+touch INSTALL
 
-# Unless NOCONFIGURE is set, run configure too.
-test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
+REQUIRED_AUTOCONF_VERSION=2.59
+REQUIRED_AUTOMAKE_VERSION=1.9
+REQUIRED_INTLTOOL_VERSION=0.40.0
+REQUIRED_PKG_CONFIG_VERSION=0.22
+. gnome-autogen.sh
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644
index 0000000..c44cfa2
--- /dev/null
+++ b/build/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS = autotools
+
+GITIGNOREFILES = \
+       compile \
+       config.guess \
+       config.sub \
+       depcomp \
+       install-sh \
+       ltmain.sh \
+       missing \
+       test-driver \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/build/autotools/Makefile.am b/build/autotools/Makefile.am
new file mode 100644
index 0000000..e32cb7c
--- /dev/null
+++ b/build/autotools/Makefile.am
@@ -0,0 +1,25 @@
+EXTRA_DIST = \
+       Makefile.am.enums \
+       Makefile.am.marshal \
+       appstream-xml.m4 \
+       ax_append_compile_flags.m4 \
+       ax_append_flag.m4 \
+       ax_check_compile_flag.m4 \
+       ax_require_defined.m4 \
+       glibtests.m4 \
+       introspection.m4 \
+       tap-driver.sh \
+       tap-test \
+       $(NULL)
+
+GITIGNOREFILES = \
+       gtk-doc.m4 \
+       intltool.m4 \
+       libtool.m4 \
+       ltoptions.m4 \
+       ltsugar.m4 \
+       ltversion.m4 \
+       lt~obsolete.m4 \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/build/autotools/Makefile.am.enums b/build/autotools/Makefile.am.enums
new file mode 100644
index 0000000..2fd69d5
--- /dev/null
+++ b/build/autotools/Makefile.am.enums
@@ -0,0 +1,52 @@
+# Rules for generating enumeration types using glib-mkenums
+#
+# Define:
+#      glib_enum_h = header template file
+#      glib_enum_c = source template file
+#      glib_enum_headers = list of headers to parse
+#
+# before including Makefile.am.enums. You will also need to have
+# the following targets already defined:
+#
+#      CLEANFILES
+#      DISTCLEANFILES
+#      BUILT_SOURCES
+#      EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi linux intel com>
+
+# Basic sanity checks
+$(if $(GLIB_MKENUMS),,$(error Need to define GLIB_MKENUMS))
+
+$(if $(or $(glib_enum_h), \
+          $(glib_enum_c)),, \
+    $(error Need to define glib_enum_h and glib_enum_c))
+
+$(if $(glib_enum_headers),,$(error Need to define glib_enum_headers))
+
+enum_tmpl_h=$(addprefix $(srcdir)/, $(glib_enum_h:.h=.h.in))
+enum_tmpl_c=$(addprefix $(srcdir)/, $(glib_enum_c:.c=.c.in))
+enum_headers=$(addprefix $(srcdir)/, $(glib_enum_headers))
+
+CLEANFILES += stamp-enum-types
+DISTCLEANFILES += $(glib_enum_h) $(glib_enum_c)
+BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c)
+EXTRA_DIST += $(enum_tmpl_h) $(enum_tmpl_c)
+
+stamp-enum-types: $(enum_headers) $(enum_tmpl_h)
+       $(AM_V_GEN)$(GLIB_MKENUMS) \
+               --template $(enum_tmpl_h) \
+       $(enum_headers) > xgen-eh \
+       && (cmp -s xgen-eh $(glib_enum_h) || cp -f xgen-eh $(glib_enum_h)) \
+       && rm -f xgen-eh \
+       && echo timestamp > $(@F)
+
+$(glib_enum_h): stamp-enum-types
+       @true
+
+$(glib_enum_c): $(enum_headers) $(enum_tmpl_h) $(enum_tmpl_c)
+       $(AM_V_GEN)$(GLIB_MKENUMS) \
+               --template $(enum_tmpl_c) \
+       $(enum_headers) > xgen-ec \
+       && cp -f xgen-ec $(glib_enum_c) \
+       && rm -f xgen-ec
diff --git a/build/autotools/automake/glib-tap.mk b/build/autotools/Makefile.am.glib-tap
similarity index 97%
rename from build/autotools/automake/glib-tap.mk
rename to build/autotools/Makefile.am.glib-tap
index 016cb91..86b243f 100644
--- a/build/autotools/automake/glib-tap.mk
+++ b/build/autotools/Makefile.am.glib-tap
@@ -6,8 +6,8 @@ TESTS_ENVIRONMENT= \
        G_DEBUG=gc-friendly                     \
        MALLOC_CHECK_=2                         \
        MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256))
-LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh
-LOG_COMPILER = $(top_srcdir)/tap-test
+LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/build/autotools/tap-driver.sh
+LOG_COMPILER = $(top_srcdir)/build/autotools/tap-test
 
 NULL =
 
diff --git a/build/autotools/Makefile.am.gresources b/build/autotools/Makefile.am.gresources
new file mode 100644
index 0000000..d1b849b
--- /dev/null
+++ b/build/autotools/Makefile.am.gresources
@@ -0,0 +1,62 @@
+# Rules for generating gresources using glib-compile-resources
+#
+# Define:
+#      glib_resources_h = header template file
+#      glib_resources_c = source template file
+#      glib_resources_xml = path to *.gresource.xml
+#      glib_resources_namespace = c prefix for resources
+#
+# before including Makefile.am.resources. You will also need to have
+# the following targets already defined:
+#
+#      CLEANFILES
+#      DISTCLEANFILES
+#      BUILT_SOURCES
+#      EXTRA_DIST
+#
+# Author: Christian Hergert <christian hergert me>
+
+# Basic sanity checks
+$(if $(GLIB_COMPILE_RESOURCES),,$(error Need to define GLIB_COMPILE_RESOURCES))
+
+$(if $(or $(glib_resources_h), \
+          $(glib_resources_c)),, \
+    $(error Need to define glib_resources_h and glib_resources_c))
+
+$(if $(glib_resources_xml),,$(error Need to define glib_resources_xml))
+$(if $(glib_resources_namespace),,$(error Need to define glib_resources_namespace))
+
+resources_xml=$(addprefix $(srcdir)/,$(glib_resources_xml))
+resources_srcdir=$(dir $(resources_xml))
+
+DISTCLEANFILES += $(glib_resources_h) $(glib_resources_c)
+BUILT_SOURCES += $(glib_resources_h) $(glib_resources_c)
+CLEANFILES += stamp-resources $(glib_resources_c) $(glib_resources_h)
+EXTRA_DIST += \
+       $(glib_resources_xml) \
+       $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(resources_srcdir) --generate-dependencies 
$(resources_xml)) \
+       $(NULL)
+
+stamp-resources: $(glib_resources_c) $(resources_xml)
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) \
+               --target=xgen-gr.h \
+               --sourcedir=$(resources_srcdir) \
+               --generate-header \
+               --c-name $(glib_resources_namespace) \
+               $(resources_xml) \
+       && (cmp -s xgen-gr.h $(glib_resources_h) || cp -f xgen-gr.h $(glib_resources_h)) \
+       && rm -f xgen-gr.h \
+       && echo timestamp > $(@F)
+
+$(glib_resources_h): stamp-resources
+       @true
+
+$(glib_resources_c): $(resources_xml) $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(resources_srcdir) 
--generate-dependencies $(resources_xml))
+       $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) \
+               --target=xgen-gr.c \
+               --sourcedir=$(resources_srcdir) \
+               --generate-source \
+               --c-name $(glib_resources_namespace) \
+               $(resources_xml) \
+       && (cmp -s xgen-gr.c $(glib_resources_c) || cp -f xgen-gr.c $(glib_resources_c)) \
+       && rm -f xgen-gr.c
diff --git a/build/autotools/Makefile.am.marshal b/build/autotools/Makefile.am.marshal
new file mode 100644
index 0000000..89d3222
--- /dev/null
+++ b/build/autotools/Makefile.am.marshal
@@ -0,0 +1,52 @@
+# Rules for generating marshal files using glib-genmarshal
+#
+# Define:
+#      glib_marshal_list = marshal list file
+#      glib_marshal_prefix = prefix for marshal functions
+#
+# before including Makefile.am.marshal. You will also need to have
+# the following targets already defined:
+#
+#      CLEANFILES
+#      DISTCLEANFILES
+#      BUILT_SOURCES
+#      EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi linux intel com>
+
+# Basic sanity checks
+$(if $(GLIB_GENMARSHAL),,$(error Need to define GLIB_GENMARSHAL))
+
+$(if $(or $(glib_marshal_list), \
+          $(glib_marshal_prefix)),, \
+    $(error Need to define glib_marshal_list and glib_marshal_prefix))
+
+marshal_h = $(glib_marshal_list:.list=.h)
+marshal_c = $(glib_marshal_list:.list=.c)
+marshal_list = $(addprefix $(srcdir)/, $(glib_marshal_list))
+
+CLEANFILES += stamp-marshal
+DISTCLEANFILES += $(marshal_h) $(marshal_c)
+BUILT_SOURCES += $(marshal_h) $(marshal_c)
+EXTRA_DIST += $(marshal_list)
+
+stamp-marshal: $(marshal_list)
+       $(AM_V_GEN)$(GLIB_GENMARSHAL) \
+               --prefix=$(glib_marshal_prefix) \
+               --header \
+       $(marshal_list) > xgen-mh \
+       && (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
+       && rm -f xgen-mh \
+       && echo timestamp > $(@F)
+
+$(marshal_h): stamp-marshal
+       @true
+
+$(marshal_c): $(marshal_h)
+       $(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \
+       $(GLIB_GENMARSHAL) \
+               --prefix=$(glib_marshal_prefix) \
+               --body \
+       $(marshal_list)) > xgen-mc \
+       && cp xgen-mc $(marshal_c) \
+       && rm -f xgen-mc
diff --git a/build/autotools/m4/appstream-xml.m4 b/build/autotools/appstream-xml.m4
similarity index 100%
rename from build/autotools/m4/appstream-xml.m4
rename to build/autotools/appstream-xml.m4
diff --git a/build/autotools/m4/ax_append_compile_flags.m4 b/build/autotools/ax_append_compile_flags.m4
similarity index 100%
rename from build/autotools/m4/ax_append_compile_flags.m4
rename to build/autotools/ax_append_compile_flags.m4
diff --git a/build/autotools/m4/ax_append_flag.m4 b/build/autotools/ax_append_flag.m4
similarity index 100%
rename from build/autotools/m4/ax_append_flag.m4
rename to build/autotools/ax_append_flag.m4
diff --git a/build/autotools/m4/ax_check_compile_flag.m4 b/build/autotools/ax_check_compile_flag.m4
similarity index 100%
rename from build/autotools/m4/ax_check_compile_flag.m4
rename to build/autotools/ax_check_compile_flag.m4
diff --git a/build/autotools/m4/ax_require_defined.m4 b/build/autotools/ax_require_defined.m4
similarity index 100%
rename from build/autotools/m4/ax_require_defined.m4
rename to build/autotools/ax_require_defined.m4
diff --git a/build/autotools/m4/glibtests.m4 b/build/autotools/glibtests.m4
similarity index 99%
rename from build/autotools/m4/glibtests.m4
rename to build/autotools/glibtests.m4
index 8ae5112..7d5920a 100644
--- a/build/autotools/m4/glibtests.m4
+++ b/build/autotools/glibtests.m4
@@ -26,4 +26,3 @@ AC_DEFUN([GLIB_TESTS],
     AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME)
   fi
 ])
-
diff --git a/build/autotools/m4/introspection.m4 b/build/autotools/introspection.m4
similarity index 100%
rename from build/autotools/m4/introspection.m4
rename to build/autotools/introspection.m4
diff --git a/tap-driver.sh b/build/autotools/tap-driver.sh
similarity index 100%
rename from tap-driver.sh
rename to build/autotools/tap-driver.sh
diff --git a/tap-test b/build/autotools/tap-test
similarity index 100%
rename from tap-test
rename to build/autotools/tap-test
diff --git a/configure.ac b/configure.ac
index 92a12a0..e46ebe6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,99 +1,334 @@
 AC_PREREQ([2.69])
 
-m4_define([project_name],[gnome-builder])
-m4_define([project_major_version],[3])
-m4_define([project_minor_version],[16])
-m4_define([project_micro_version],[3])
-m4_define([project_interface_age],[0])
-m4_define([project_bugreport_url],
+
+dnl ***********************************************************************
+dnl Define Versioning Information
+dnl ***********************************************************************
+m4_define([builder_major_version],[3])
+m4_define([builder_minor_version],[16])
+m4_define([builder_micro_version],[3])
+m4_define([builder_version],[builder_major_version.builder_minor_version.builder_micro_version])
+m4_define([builder_interface_age],[0])
+m4_define([builder_bugreport_url],
          [https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-builder])
+m4_define([builder_debug_default],
+          [m4_if(m4_eval(builder_minor_version % 2), [1], [yes], [minimum])])
 
-# Initialize autoconf and things that go with it.
-m4_include([build/autotools/autoconf.d/pre-ac.m4])
-AC_INIT([project_name],[project_version],[project_bugreport_url])
-AC_CONFIG_MACRO_DIRS([build/autotools/m4])
-AC_CONFIG_AUX_DIR([build/autotools])
-AC_SUBST(ACLOCAL_AMFLAGS, "-I build/autotools")
+
+dnl ***********************************************************************
+dnl Initialize Autoconf
+dnl ***********************************************************************
+AC_INIT([gnome-builder],[builder_version],[news_bugreport_url])
 AC_CONFIG_HEADERS([config.h])
-m4_include([build/autotools/autoconf.d/post-ac.m4])
+AC_CONFIG_SRCDIR([src/main.c])
+AC_CONFIG_MACRO_DIR([build/autotools])
+AC_CONFIG_AUX_DIR([build])
+AC_SUBST(ACLOCAL_AMFLAGS, "-I build/autotools")
+
+
+dnl ***********************************************************************
+dnl Make Version Info Available to .in Files
+dnl ***********************************************************************
+MAJOR_VERSION=builder_major_version
+MINOR_VERSION=builder_minor_version
+MICRO_VERSION=builder_micro_version
+AC_SUBST(MAJOR_VERSION)
+AC_SUBST(MINOR_VERSION)
+AC_SUBST(MICRO_VERSION)
+
 
-# Initialize gettext
+dnl ***********************************************************************
+dnl Initialize Automake
+dnl ***********************************************************************
+AM_SILENT_RULES([yes])
+AM_INIT_AUTOMAKE([foreign subdir-objects tar-ustar no-dist-gzip dist-xz])
+AM_MAINTAINER_MODE([enable])
+
+
+dnl ***********************************************************************
+dnl Internationalization
+dnl ***********************************************************************
 IT_PROG_INTLTOOL([0.50.1])
 GETTEXT_PACKAGE=AC_PACKAGE_TARNAME
 AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
-                   [GETTEXT package name])
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [GETTEXT package name])
 AM_GLIB_GNU_GETTEXT
 
-# Initlize libtool and things that go with it.
-m4_include([build/autotools/autoconf.d/pre-lt.m4])
-m4_include([build/autotools/autoconf.d/setup_libtool.m4])
-LT_INIT
-m4_include([build/autotools/autoconf.d/post-lt.m4])
-
-# Initialize automake and things that go with it.
-# We would put AM initialization in a file but autoreconf requires it.
-m4_include([build/autotools/autoconf.d/pre-am.m4])
-AM_INIT_AUTOMAKE([foreign subdir-objects tar-ustar no-dist-gzip dist-xz])
-AM_MAINTAINER_MODE([enable])
-m4_include([build/autotools/autoconf.d/post-am.m4])
 
+dnl ***********************************************************************
+dnl Check for Required Programs
+dnl ***********************************************************************
 AC_PROG_CC
 AM_PROG_CC_C_O
+AC_PROG_INSTALL
 AC_PROG_CXX
+AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
+AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
+AC_PATH_PROG([GLIB_COMPILE_RESOURCES], [glib-compile-resources])
+AM_PATH_GLIB_2_0
 AC_HEADER_STDC
 
-LT_PREREQ([2.2.0])
+
+dnl ***********************************************************************
+dnl Find Path of GNU Make
+dnl ***********************************************************************
+AC_CHECK_PROG([GMAKE], [gmake], [gmake], [make])
+AC_DEFINE_UNQUOTED([GNU_MAKE_NAME], ["$GMAKE"], [Name of GNU make on this system])
+
+
+dnl ***********************************************************************
+dnl Setup Debug and Tracing Support
+dnl ***********************************************************************
+AC_ARG_ENABLE(tracing,
+              AS_HELP_STRING([--enable-tracing=@<:@no/yes@:>@],
+                             [add extra debugging information @<:@default=no@:>@]),
+              ,
+              enable_tracing=no)
+AS_IF([test "x$enable_tracing" = "xyes"],[enable_debug=yes ENABLE_TRACING=1],[ENABLE_TRACING=0])
+AC_SUBST(ENABLE_TRACING)
+
+AC_ARG_ENABLE(debug,
+              AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+                             [turn on debugging @<:@default=builder_debug_default@:>@]),
+              ,
+              enable_debug=builder_debug_default)
+AS_CASE(["x$enable_debug"],
+        [yes],[
+            ENABLE_DEBUG=1
+        ],
+        [minimum],[
+            ENABLE_DEBUG=1
+            DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_CAST_CHECKS"
+        ],
+        [no],[
+            DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_ASSERT"
+            DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_CHECKS"
+            DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_CAST_CHECKS"
+        ],
+        [])
+AC_SUBST(DEBUG_CFLAGS)
+
+
+dnl ***********************************************************************
+dnl Check for Required Packages
+dnl ***********************************************************************
+m4_define([gtk_required_version], [3.16.1])
+m4_define([glib_required_version], [2.44.0])
+m4_define([gtksourceview_required_version], [3.16.1])
+m4_define([ggit_required_version], [0.22.6])
+m4_define([gjs_required_version], [1.42.0])
+m4_define([pygobject_required_version], [3.0.0])
+m4_define([devhelp_required_version], [3.16.0])
+
+PKG_CHECK_MODULES(BUILDER, [gtk+-3.0 >= gtk_required_version
+                            gio-2.0 >= glib_required_version
+                            gtksourceview-3.0 >= gtksourceview_required_version
+                            libdevhelp-3.0 >= devhelp_required_version
+                            libgit2-glib-1.0 >= ggit_required_version])
+
+PKG_CHECK_MODULES(LIBIDE,  [gio-2.0 >= glib_required_version
+                            gio-unix-2.0 >= glib_required_version
+                            gtksourceview-3.0 >= gtksourceview_required_version
+                            libdevhelp-3.0 >= devhelp_required_version
+                            libgit2-glib-1.0 >= ggit_required_version
+                            gjs-1.0 >= gjs_required_version
+                            gjs-internals-1.0 >= gjs_required_version
+                            pygobject-3.0 >= pygobject_required_version])
+
+PKG_CHECK_MODULES(SEARCH,  [glib-2.0 >= glib_required_version])
+
+
+dnl ***********************************************************************
+dnl Check for Clang, Required for C/C++ Diagnostics
+dnl ***********************************************************************
+AC_CHECK_PROGS([LLVM_CONFIG], [llvm-config-3.5 llvm-config35 llvm-config], [])
+AS_IF([test "x$LLVM_CONFIG" = "x"],[
+       AC_MSG_ERROR([Failed to locate the llvm-config program. Please install llvm-devel.])
+])
+CLANG_INCLUDEDIR=`$LLVM_CONFIG --includedir`
+CLANG_CFLAGS="-I$CLANG_INCLUDEDIR"
+CLANG_LDFLAGS=`$LLVM_CONFIG --ldflags`
+AC_SUBST([CLANG_INCLUDEDIR])
+AC_SUBST([CLANG_CFLAGS])
+AC_SUBST([CLANG_LDFLAGS])
+CPPFLAGS_SAVE=${CPPFLAGS}
+CPPFLAGS=-I${CLANG_INCLUDEDIR}
+AC_CHECK_HEADER([clang-c/Index.h], [], [
+    AC_MSG_ERROR([Failed to locage clang-c/Index.h. Please install clang-devel.])
+])
+CPPFLAGS=${CPPFLAGS_SAVE}
+
+
+dnl ***********************************************************************
+dnl Check for Required Python
+dnl ***********************************************************************
+AC_PATH_TOOL(PYTHON3_CONFIG, "python3-config")
+if test -z "${PYTHON3_CONFIG}"; then
+  AC_MSG_ERROR([Failed to locate python3-config.])
+fi
+LIBIDE_CFLAGS="${LIBIDE_CFLAGS} `${PYTHON3_CONFIG} --cflags`"
+LIBIDE_LIBS="${LIBIDE_LIBS} `${PYTHON3_CONFIG} --libs`"
+LIBIDE_LDFLAGS="${LIBIDE_LDFLAGS} `${PYTHON3_CONFIG} --ldflags`"
+
+
+dnl ***********************************************************************
+dnl Initialize Libtool
+dnl ***********************************************************************
+LT_PREREQ([2.2])
 LT_INIT
 
+
+
+dnl ***********************************************************************
+dnl Additional C Compiler Flags
+dnl ***********************************************************************
 AX_APPEND_COMPILE_FLAGS([ \
        -Wall \
-       -Wextra \
-       -Wno-unused-parameter \
-       -Wno-sign-compare \
-       -Wno-missing-field-initializers \
-       -Wnested-externs \
-       -Wpointer-arith \
-       -Winit-self \
+       -Wcast-align \
        -Wdeclaration-after-statement \
+       -Wempty-body \
        -Werror=format-security \
        -Werror=format=2 \
+       -Wextra \
+       -Wformat \
+       -Wformat-nonliteral \
+       -Wformat-security \
+       -Winit-self \
+       -Wmissing-include-dirs \
+       -Wnested-externs \
+       -Wno-missing-field-initializers \
+       -Wno-sign-compare \
+       -Wno-strict-aliasing \
+       -Wno-uninitialized \
+       -Wno-unused-parameter \
+       -Wpointer-arith \
+       -Wredundant-decls \
+       -Wreturn-type \
+       -Wshadow \
+       -Wswitch-default \
+       -Wswitch-enum \
+       -Wundef \
+       -Wuninitialized \
 ])
-
 AC_C_CONST
 
-# If we are using gtk-doc, enable it.
-# We would put this in a file but gtkdocize requires it.
-m4_ifdef([GTK_DOC_CHECK],[
+
+dnl ***********************************************************************
+dnl Desktop Settings Support
+dnl ***********************************************************************
+GLIB_GSETTINGS
+
+
+dnl ***********************************************************************
+dnl Setup Introspection
+dnl ***********************************************************************
+GOBJECT_INTROSPECTION_CHECK([1.30.0])
+
+
+dnl ***********************************************************************
+dnl GLib Unit Testing Support
+dnl ***********************************************************************
+GLIB_TESTS
+
+
+dnl ***********************************************************************
+dnl Support for gtk-doc Documentation Engine
+dnl ***********************************************************************
 GTK_DOC_CHECK
-])
 
-MAJOR_VERSION=project_major_version
-MINOR_VERSION=project_minor_version
-MICRO_VERSION=project_micro_version
 
-AC_SUBST(MAJOR_VERSION)
-AC_SUBST(MINOR_VERSION)
-AC_SUBST(MICRO_VERSION)
+dnl ***********************************************************************
+dnl Rules for Generating AppStream Information
+dnl ***********************************************************************
+APPSTREAM_XML
 
-# Define our known config files.
+
+dnl ***********************************************************************
+dnl Setup Various Compiler Optimizations
+dnl ***********************************************************************
+AC_MSG_CHECKING([whether to enable optimized builds])
+AC_ARG_ENABLE(optimizations, 
+              AC_HELP_STRING([--enable-optimizations],
+                             [turn on build-time optimizations [default=yes]]),
+              [enable_optimizations=$enableval],
+              [AS_IF([test "x$enable_debug" = "xyes"],
+                    [enable_optimizations="no"],
+                    [enable_optimizations="yes"])])
+AC_MSG_RESULT([$enable_optimizations])
+AC_ARG_ENABLE(lto,
+              AC_HELP_STRING([--enable-lto],
+                             [turn on link time optimizations [default=no]]),
+              [enable_lto=$enableval],
+              [enable_lto=no])
+OPTIMIZE_CFLAGS=""
+OPTIMIZE_LDFLAGS=""
+# Enable -Bsymbolic
+AS_IF([test "$enable_optimizations" != "no"],
+      [AX_CHECK_LINK_FLAG([-Wl,-Bsymbolic],
+                          [OPTIMIZE_LDFLAGS="$OPTIMIZE_LDFLAGS -Wl,-Bsymbolic"])])
+# Enable Link-Time-Optimization
+AS_IF([test "$enable_lto" = "yes"],
+      [AS_IF([test "$c_compiler" = "gcc"],
+             [
+                 AX_CHECK_COMPILE_FLAG([-flto], [OPTIMIZE_CFLAGS="$OPTIMIZE_CFLAGS -flto"])
+                 AX_CHECK_LINK_FLAG([-flto], [OPTIMIZE_LDFLAGS="$OPTIMIZE_LDFLAGS -flto"])
+             ],
+             [AC_MSG_WARN([LTO is not yet available on your compiler.])])])
+AC_SUBST(OPTIMIZE_CFLAGS)
+AC_SUBST(OPTIMIZE_LDFLAGS)
+
+
+dnl ***********************************************************************
+dnl Process .in Files
+dnl ***********************************************************************
 AC_CONFIG_FILES([
        Makefile
-       src/util/gb-version.h
+
+       build/Makefile
+       build/autotools/Makefile
+
+       contrib/Makefile
+       contrib/search/Makefile
+       contrib/libeditorconfig/Makefile
+
+       libide/ide-debug.h
+       libide/Makefile
+
+       data/Makefile
+       data/gsettings/Makefile
        data/icons/Makefile
        data/libide-1.0.pc
-       data/gsettings/org.gnome.builder.gschema.xml
-       data/gsettings/org.gnome.builder.editor.gschema.xml
-       data/gsettings/org.gnome.builder.editor.language.gschema.xml
-       data/gsettings/org.gnome.builder.experimental.gschema.xml
-       data/gsettings/org.gnome.builder.project-tree.gschema.xml
+       data/style-schemes/Makefile
+
+       doc/Makefile
+       doc/examples/Makefile
+       doc/examples/scripts/Makefile
+
        po/Makefile.in
-])
 
-# Last change to configure things and write configuration files.
-m4_include([build/autotools/autoconf.d/pre-output.m4])
+       src/Makefile
+
+       tests/Makefile
+
+       tools/Makefile
+])
 AC_OUTPUT
-m4_include([build/autotools/autoconf.d/post-output.m4])
 
-# Print configuration information.
-m4_include([build/autotools/autoconf.d/print_config.m4])
+
+echo ""
+echo " ${PACKAGE} - ${VERSION}"
+echo ""
+echo " Options"
+echo ""
+echo "  Prefix ............................... : ${prefix}"
+echo "  Libdir ............................... : ${libdir}"
+echo "  Optimized Build ...................... : ${enable_optimizations}"
+echo "  Link-Time-Optimization ............... : ${enable_lto}"
+echo ""
+echo " Development Options"
+echo ""
+echo "  Enable Debug ......................... : ${enable_debug}"
+echo "  Enable Tracing ....................... : ${enable_tracing}"
+echo "  Build API reference ...................: ${enable_gtk_doc}"
+echo "  Enable Test Suite .....................: ${enable_glibtest}"
+echo ""
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
new file mode 100644
index 0000000..f2f9919
--- /dev/null
+++ b/contrib/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = search libeditorconfig
+
+-include $(top_srcdir)/git.mk
diff --git a/contrib/libeditorconfig/Makefile.am b/contrib/libeditorconfig/Makefile.am
new file mode 100644
index 0000000..9923f32
--- /dev/null
+++ b/contrib/libeditorconfig/Makefile.am
@@ -0,0 +1,37 @@
+noinst_LTLIBRARIES = libeditorconfig.la
+
+libeditorconfig_la_SOURCES = \
+       ec_glob.c \
+       ec_glob.h \
+       editorconfig.c \
+       editorconfig.h \
+       editorconfig/editorconfig.h \
+       editorconfig/editorconfig_handle.h \
+       editorconfig_handle.c \
+       editorconfig_handle.h \
+       global.h \
+       ini.c \
+       ini.h \
+       misc.c \
+       misc.h \
+       utarray.h \
+       $(NULL)
+
+libeditorconfig_la_LIBADD = \
+       -lpcre \
+       $(NULL)
+
+libeditorconfig_la_CFLAGS = \
+       -D_GNU_SOURCE \
+       -DHAVE_STRCASECMP \
+       -DHAVE_STRICMP \
+       -DHAVE_STRDUP \
+       -DHAVE_STRNDUP \
+       -DUNIX \
+       -Deditorconfig_VERSION_MAJOR=0 \
+       -Deditorconfig_VERSION_MINOR=0 \
+       -Deditorconfig_VERSION_PATCH=0 \
+       -Deditorconfig_VERSION_SUFFIX=0 \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/libide/editorconfig/libeditorconfig/ec_glob.c b/contrib/libeditorconfig/ec_glob.c
similarity index 100%
rename from libide/editorconfig/libeditorconfig/ec_glob.c
rename to contrib/libeditorconfig/ec_glob.c
diff --git a/libide/editorconfig/libeditorconfig/ec_glob.h b/contrib/libeditorconfig/ec_glob.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/ec_glob.h
rename to contrib/libeditorconfig/ec_glob.h
diff --git a/libide/editorconfig/libeditorconfig/editorconfig.c b/contrib/libeditorconfig/editorconfig.c
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig.c
rename to contrib/libeditorconfig/editorconfig.c
diff --git a/libide/editorconfig/libeditorconfig/editorconfig.h b/contrib/libeditorconfig/editorconfig.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig.h
rename to contrib/libeditorconfig/editorconfig.h
diff --git a/libide/editorconfig/libeditorconfig/editorconfig/editorconfig.h 
b/contrib/libeditorconfig/editorconfig/editorconfig.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig/editorconfig.h
rename to contrib/libeditorconfig/editorconfig/editorconfig.h
diff --git a/libide/editorconfig/libeditorconfig/editorconfig/editorconfig_handle.h 
b/contrib/libeditorconfig/editorconfig/editorconfig_handle.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig/editorconfig_handle.h
rename to contrib/libeditorconfig/editorconfig/editorconfig_handle.h
diff --git a/libide/editorconfig/libeditorconfig/editorconfig_handle.c 
b/contrib/libeditorconfig/editorconfig_handle.c
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig_handle.c
rename to contrib/libeditorconfig/editorconfig_handle.c
diff --git a/libide/editorconfig/libeditorconfig/editorconfig_handle.h 
b/contrib/libeditorconfig/editorconfig_handle.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/editorconfig_handle.h
rename to contrib/libeditorconfig/editorconfig_handle.h
diff --git a/libide/editorconfig/libeditorconfig/global.h b/contrib/libeditorconfig/global.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/global.h
rename to contrib/libeditorconfig/global.h
diff --git a/libide/editorconfig/libeditorconfig/ini.c b/contrib/libeditorconfig/ini.c
similarity index 100%
rename from libide/editorconfig/libeditorconfig/ini.c
rename to contrib/libeditorconfig/ini.c
diff --git a/libide/editorconfig/libeditorconfig/ini.h b/contrib/libeditorconfig/ini.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/ini.h
rename to contrib/libeditorconfig/ini.h
diff --git a/libide/editorconfig/libeditorconfig/misc.c b/contrib/libeditorconfig/misc.c
similarity index 100%
rename from libide/editorconfig/libeditorconfig/misc.c
rename to contrib/libeditorconfig/misc.c
diff --git a/libide/editorconfig/libeditorconfig/misc.h b/contrib/libeditorconfig/misc.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/misc.h
rename to contrib/libeditorconfig/misc.h
diff --git a/libide/editorconfig/libeditorconfig/utarray.h b/contrib/libeditorconfig/utarray.h
similarity index 100%
rename from libide/editorconfig/libeditorconfig/utarray.h
rename to contrib/libeditorconfig/utarray.h
diff --git a/contrib/search/Makefile.am b/contrib/search/Makefile.am
new file mode 100644
index 0000000..38dde4c
--- /dev/null
+++ b/contrib/search/Makefile.am
@@ -0,0 +1,24 @@
+noinst_LTLIBRARIES = libsearch.la
+
+libsearch_la_SOURCES = \
+       trie.c \
+       trie.h \
+       fuzzy.c \
+       fuzzy.h \
+       $(NULL)
+
+libsearch_la_CFLAGS = \
+       $(DEBUG_CFLAGS) \
+       $(OPTIMIZE_CFLAGS) \
+       $(SEARCH_CFLAGS) \
+       $(NULL)
+
+libsearch_la_LIBADD = \
+       $(SEARCH_LIBADD) \
+       $(NULL)
+
+libsearch_la_LDFLAGS = \
+       $(OPTIMIZE_LDFLAGS) \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/cut-n-paste/fuzzy.c b/contrib/search/fuzzy.c
similarity index 100%
rename from cut-n-paste/fuzzy.c
rename to contrib/search/fuzzy.c
diff --git a/cut-n-paste/fuzzy.h b/contrib/search/fuzzy.h
similarity index 100%
rename from cut-n-paste/fuzzy.h
rename to contrib/search/fuzzy.h
diff --git a/cut-n-paste/trie.c b/contrib/search/trie.c
similarity index 100%
rename from cut-n-paste/trie.c
rename to contrib/search/trie.c
diff --git a/cut-n-paste/trie.h b/contrib/search/trie.h
similarity index 100%
rename from cut-n-paste/trie.h
rename to contrib/search/trie.h
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..f558603
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,28 @@
+SUBDIRS = gsettings icons style-schemes .
+
+appdatadir = $(datadir)/appdata
+appdata_DATA = org.gnome.Builder.appdata.xml
+
+# Desktop launcher and description file.
+desktopdir = $(datadir)/applications
+desktop_DATA = org.gnome.Builder.desktop
+
+# D-Bus service file.
+servicedir = $(datadir)/dbus-1/services
+service_in_files = org.gnome.Builder.service.in
+service_DATA = $(service_in_files:.service.in=.service)
+
+org.gnome.Builder.service: org.gnome.Builder.service.in
+       $(AM_V_GEN)     \
+               [ -d $(@D) ] || $(mkdir_p) $(@D) ; \
+               sed -e "s|\ bindir\@|$(bindir)|" $< > $  tmp && mv $  tmp $@
+
+EXTRA_DIST = \
+       $(appdata_DATA) \
+       $(desktop_DATA) \
+       $(service_in_files) \
+       $(NULL)
+
+CLEANFILES = $(service_DATA)
+
+-include $(top_srcdir)/git.mk
diff --git a/data/gsettings/Makefile.am b/data/gsettings/Makefile.am
new file mode 100644
index 0000000..fc35210
--- /dev/null
+++ b/data/gsettings/Makefile.am
@@ -0,0 +1,15 @@
+gsettings_SCHEMAS = \
+       org.gnome.builder.gschema.xml \
+       org.gnome.builder.editor.gschema.xml \
+       org.gnome.builder.editor.language.gschema.xml \
+       org.gnome.builder.experimental.gschema.xml \
+       org.gnome.builder.project-tree.gschema.xml \
+       $(NULL)
+
+.PRECIOUS: $(gsettings_SCHEMAS)
+
+ GSETTINGS_RULES@
+
+EXTRA_DIST = $(gsettings_SCHEMAS)
+
+-include $(top_srcdir)/git.mk
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml.in 
b/data/gsettings/org.gnome.builder.editor.gschema.xml
similarity index 100%
rename from data/gsettings/org.gnome.builder.editor.gschema.xml.in
rename to data/gsettings/org.gnome.builder.editor.gschema.xml
diff --git a/data/gsettings/org.gnome.builder.editor.language.gschema.xml.in 
b/data/gsettings/org.gnome.builder.editor.language.gschema.xml
similarity index 100%
rename from data/gsettings/org.gnome.builder.editor.language.gschema.xml.in
rename to data/gsettings/org.gnome.builder.editor.language.gschema.xml
diff --git a/data/gsettings/org.gnome.builder.experimental.gschema.xml.in 
b/data/gsettings/org.gnome.builder.experimental.gschema.xml
similarity index 100%
rename from data/gsettings/org.gnome.builder.experimental.gschema.xml.in
rename to data/gsettings/org.gnome.builder.experimental.gschema.xml
diff --git a/data/gsettings/org.gnome.builder.gschema.xml.in b/data/gsettings/org.gnome.builder.gschema.xml
similarity index 100%
rename from data/gsettings/org.gnome.builder.gschema.xml.in
rename to data/gsettings/org.gnome.builder.gschema.xml
diff --git a/data/gsettings/org.gnome.builder.project-tree.gschema.xml.in 
b/data/gsettings/org.gnome.builder.project-tree.gschema.xml
similarity index 100%
rename from data/gsettings/org.gnome.builder.project-tree.gschema.xml.in
rename to data/gsettings/org.gnome.builder.project-tree.gschema.xml
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
index 7ef6d6b..6f911ef 100644
--- a/data/icons/Makefile.am
+++ b/data/icons/Makefile.am
@@ -45,3 +45,5 @@ update-icon-cache:
                echo "*** Icon cache not updated.  After (un)install, run this:"; \
                echo "***   $(gtk_update_icon_cache)"; \
        fi
+
+-include $(top_srcdir)/git.mk
diff --git a/data/js/markdown-view.js b/data/markdown/markdown-view.js
similarity index 100%
rename from data/js/markdown-view.js
rename to data/markdown/markdown-view.js
diff --git a/data/css/markdown.css b/data/markdown/markdown.css
similarity index 100%
rename from data/css/markdown.css
rename to data/markdown/markdown.css
diff --git a/data/js/marked.js b/data/markdown/marked.js
similarity index 100%
rename from data/js/marked.js
rename to data/markdown/marked.js
diff --git a/data/style-schemes/Makefile.am b/data/style-schemes/Makefile.am
new file mode 100644
index 0000000..9df6148
--- /dev/null
+++ b/data/style-schemes/Makefile.am
@@ -0,0 +1,10 @@
+styledir = $(datadir)/gtksourceview-3.0/styles/
+
+style_DATA = \
+       builder.xml \
+       builder-dark.xml \
+       $(NULL)
+
+EXTRA_DIST = $(style_DATA)
+
+-include $(top_srcdir)/git.mk
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..36da204
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = examples
+
+-include $(top_srcdir)/git.mk
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
new file mode 100644
index 0000000..1549c97
--- /dev/null
+++ b/doc/examples/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = scripts
+
+-include $(top_srcdir)/git.mk
diff --git a/doc/examples/scripts/Makefile.am b/doc/examples/scripts/Makefile.am
new file mode 100644
index 0000000..ed18644
--- /dev/null
+++ b/doc/examples/scripts/Makefile.am
@@ -0,0 +1,7 @@
+EXTRA_DIST = \
+       README.md \
+       search-provider.js \
+       search-provider.py \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/examples/scripts/README.md b/doc/examples/scripts/README.md
similarity index 100%
rename from examples/scripts/README.md
rename to doc/examples/scripts/README.md
diff --git a/examples/scripts/search-provider.js b/doc/examples/scripts/search-provider.js
similarity index 100%
rename from examples/scripts/search-provider.js
rename to doc/examples/scripts/search-provider.js
diff --git a/examples/scripts/search-provider.py b/doc/examples/scripts/search-provider.py
similarity index 100%
rename from examples/scripts/search-provider.py
rename to doc/examples/scripts/search-provider.py
diff --git a/git.mk b/git.mk
new file mode 100644
index 0000000..9d4bf25
--- /dev/null
+++ b/git.mk
@@ -0,0 +1,333 @@
+# git.mk, a small Makefile to autogenerate .gitignore files
+# for autotools-based projects.
+#
+# Copyright 2009, Red Hat, Inc.
+# Copyright 2010,2011,2012,2013 Behdad Esfahbod
+# Written by Behdad Esfahbod
+#
+# Copying and distribution of this file, with or without modification,
+# is permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+#
+# The latest version of this file can be downloaded from:
+GIT_MK_URL = https://raw.githubusercontent.com/behdad/git.mk/master/git.mk
+#
+# Bugs, etc, should be reported upstream at:
+#   https://github.com/behdad/git.mk
+#
+# To use in your project, import this file in your git repo's toplevel,
+# then do "make -f git.mk".  This modifies all Makefile.am files in
+# your project to -include git.mk.  Remember to add that line to new
+# Makefile.am files you create in your project, or just rerun the
+# "make -f git.mk".
+#
+# This enables automatic .gitignore generation.  If you need to ignore
+# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
+# But think twice before doing that.  If a file has to be in .gitignore,
+# chances are very high that it's a generated file and should be in one
+# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
+#
+# The only case that you need to manually add a file to GITIGNOREFILES is
+# when remove files in one of mostlyclean-local, clean-local, distclean-local,
+# or maintainer-clean-local make targets.
+#
+# Note that for files like editor backup, etc, there are better places to
+# ignore them.  See "man gitignore".
+#
+# If "make maintainer-clean" removes the files but they are not recognized
+# by this script (that is, if "git status" shows untracked files still), send
+# me the output of "git status" as well as your Makefile.am and Makefile for
+# the directories involved and I'll diagnose.
+#
+# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
+# Makefile.am.sample in the git.mk git repo.
+#
+# Don't EXTRA_DIST this file.  It is supposed to only live in git clones,
+# not tarballs.  It serves no useful purpose in tarballs and clutters the
+# build dir.
+#
+# This file knows how to handle autoconf, automake, libtool, gtk-doc,
+# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu, appdata,
+# appstream.
+#
+# This makefile provides the following targets:
+#
+# - all: "make all" will build all gitignore files.
+# - gitignore: makes all gitignore files in the current dir and subdirs.
+# - .gitignore: make gitignore file for the current dir.
+# - gitignore-recurse: makes all gitignore files in the subdirs.
+#
+# KNOWN ISSUES:
+#
+# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
+#   submodule doesn't find us.  If you have configure.{in,ac} files in
+#   subdirs, add a proxy git.mk file in those dirs that simply does:
+#   "include $(top_srcdir)/../git.mk".  Add more ..'s to your taste.
+#   And add those files to git.  See vte/gnome-pty-helper/git.mk for
+#   example.
+#
+
+
+
+###############################################################################
+# Variables user modules may want to add to toplevel MAINTAINERCLEANFILES:
+###############################################################################
+
+#
+# Most autotools-using modules should be fine including this variable in their
+# toplevel MAINTAINERCLEANFILES:
+GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL = \
+       $(srcdir)/aclocal.m4 \
+       $(srcdir)/autoscan.log \
+       $(srcdir)/configure.scan \
+       `AUX_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_AUX_DIR:$$1' ./configure.ac); \
+        test "x$$AUX_DIR" = "x$(srcdir)/" && AUX_DIR=$(srcdir); \
+        for x in \
+               ar-lib \
+               compile \
+               config.guess \
+               config.sub \
+               depcomp \
+               install-sh \
+               ltmain.sh \
+               missing \
+               mkinstalldirs \
+               test-driver \
+               ylwrap \
+        ; do echo "$$AUX_DIR/$$x"; done` \
+       `cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_HEADERS:$$1' ./configure.ac | \
+       head -n 1 | while read f; do echo "$(srcdir)/$$f.in"; done`
+#
+# All modules should also be fine including the following variable, which
+# removes automake-generated Makefile.in files:
+GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN = \
+       `cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' ./configure.ac | \
+       while read f; do \
+         case $$f in Makefile|*/Makefile) \
+           test -f "$(srcdir)/$$f.am" && echo "$(srcdir)/$$f.in";; esac; \
+       done`
+#
+# Modules that use libtool and use  AC_CONFIG_MACRO_DIR() may also include this,
+# though it's harmless to include regardless.
+GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL = \
+       `MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' 
./configure.ac); \
+        if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \
+               for x in \
+                       libtool.m4 \
+                       ltoptions.m4 \
+                       ltsugar.m4 \
+                       ltversion.m4 \
+                       lt~obsolete.m4 \
+               ; do echo "$$MACRO_DIR/$$x"; done; \
+        fi`
+
+
+
+###############################################################################
+# Default rule is to install ourselves in all Makefile.am files:
+###############################################################################
+
+git-all: git-mk-install
+
+git-mk-install:
+       @echo "Installing git makefile"
+       @any_failed=; \
+               find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while 
read x; do \
+               if grep 'include .*/git.mk' $$x >/dev/null; then \
+                       echo "$$x already includes git.mk"; \
+               else \
+                       failed=; \
+                       echo "Updating $$x"; \
+                       { cat $$x; \
+                         echo ''; \
+                         echo '-include $$(top_srcdir)/git.mk'; \
+                       } > $$x.tmp || failed=1; \
+                       if test x$$failed = x; then \
+                               mv $$x.tmp $$x || failed=1; \
+                       fi; \
+                       if test x$$failed = x; then : else \
+                               echo "Failed updating $$x"; >&2 \
+                               any_failed=1; \
+                       fi; \
+       fi; done; test -z "$$any_failed"
+
+git-mk-update:
+       wget $(GIT_MK_URL) -O $(top_srcdir)/git.mk
+
+.PHONY: git-all git-mk-install git-mk-update
+
+
+
+###############################################################################
+# Actual .gitignore generation:
+###############################################################################
+
+$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk
+       @echo "git.mk: Generating $@"
+       @{ \
+               if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \
+                       for x in \
+                               $(DOC_MODULE)-decl-list.txt \
+                               $(DOC_MODULE)-decl.txt \
+                               tmpl/$(DOC_MODULE)-unused.sgml \
+                               "tmpl/*.bak" \
+                               xml html \
+                       ; do echo "/$$x"; done; \
+                       FLAVOR=$$(cd $(top_srcdir); $(AUTOCONF) --trace 'GTK_DOC_CHECK:$$2' ./configure.ac); \
+                       case $$FLAVOR in *no-tmpl*) echo /tmpl;; esac; \
+               fi; \
+               if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \
+                       for lc in $(DOC_LINGUAS); do \
+                               for x in \
+                                       $(if $(DOC_MODULE),$(DOC_MODULE).xml) \
+                                       $(DOC_PAGES) \
+                                       $(DOC_INCLUDES) \
+                               ; do echo "/$$lc/$$x"; done; \
+                       done; \
+                       for x in \
+                               $(_DOC_OMF_ALL) \
+                               $(_DOC_DSK_ALL) \
+                               $(_DOC_HTML_ALL) \
+                               $(_DOC_MOFILES) \
+                               $(DOC_H_FILE) \
+                               "*/.xml2po.mo" \
+                               "*/*.omf.out" \
+                       ; do echo /$$x; done; \
+               fi; \
+               if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \
+                       for lc in $(HELP_LINGUAS); do \
+                               for x in \
+                                       $(HELP_FILES) \
+                                       "$$lc.stamp" \
+                                       "$$lc.mo" \
+                               ; do echo "/$$lc/$$x"; done; \
+                       done; \
+               fi; \
+               if test "x$(gsettings_SCHEMAS)" = x; then :; else \
+                       for x in \
+                               $(gsettings_SCHEMAS:.xml=.valid) \
+                               $(gsettings__enum_file) \
+                       ; do echo "/$$x"; done; \
+               fi; \
+               if test "x$(appdata_XML)" = x; then :; else \
+                       for x in \
+                               $(appdata_XML:.xml=.valid) \
+                       ; do echo "/$$x"; done; \
+               fi; \
+               if test "x$(appstream_XML)" = x; then :; else \
+                       for x in \
+                               $(appstream_XML:.xml=.valid) \
+                       ; do echo "/$$x"; done; \
+               fi; \
+               if test -f $(srcdir)/po/Makefile.in.in; then \
+                       for x in \
+                               po/Makefile.in.in \
+                               po/Makefile.in.in~ \
+                               po/Makefile.in \
+                               po/Makefile \
+                               po/Makevars.template \
+                               po/POTFILES \
+                               po/Rules-quot \
+                               po/stamp-it \
+                               po/.intltool-merge-cache \
+                               "po/*.gmo" \
+                               "po/*.header" \
+                               "po/*.mo" \
+                               "po/*.sed" \
+                               "po/*.sin" \
+                               po/$(GETTEXT_PACKAGE).pot \
+                               intltool-extract.in \
+                               intltool-merge.in \
+                               intltool-update.in \
+                       ; do echo "/$$x"; done; \
+               fi; \
+               if test -f $(srcdir)/configure; then \
+                       for x in \
+                               autom4te.cache \
+                               configure \
+                               config.h \
+                               stamp-h1 \
+                               libtool \
+                               config.lt \
+                       ; do echo "/$$x"; done; \
+               fi; \
+               if test "x$(DEJATOOL)" = x; then :; else \
+                       for x in \
+                               $(DEJATOOL) \
+                       ; do echo "/$$x.sum"; echo "/$$x.log"; done; \
+                       echo /site.exp; \
+               fi; \
+               if test "x$(am__dirstamp)" = x; then :; else \
+                       echo "$(am__dirstamp)"; \
+               fi; \
+               if test "x$(LTCOMPILE)" = x -a "x$(LTCXXCOMPILE)" = x -a "x$(GTKDOC_RUN)" = x; then :; else \
+                       for x in \
+                               "*.lo" \
+                               ".libs" "_libs" \
+                       ; do echo "$$x"; done; \
+               fi; \
+               for x in \
+                       .gitignore \
+                       $(GITIGNOREFILES) \
+                       $(CLEANFILES) \
+                       $(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \
+                       $(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \
+                       $(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \
+                       so_locations \
+                       $(MOSTLYCLEANFILES) \
+                       $(TEST_LOGS) \
+                       $(TEST_LOGS:.log=.trs) \
+                       $(TEST_SUITE_LOG) \
+                       $(TESTS:=.test) \
+                       "*.gcda" \
+                       "*.gcno" \
+                       $(DISTCLEANFILES) \
+                       $(am__CONFIG_DISTCLEAN_FILES) \
+                       $(CONFIG_CLEAN_FILES) \
+                       TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
+                       "*.tab.c" \
+                       $(MAINTAINERCLEANFILES) \
+                       $(BUILT_SOURCES) \
+                       $(patsubst %.vala,%.c,$(filter %.vala,$(SOURCES))) \
+                       $(filter %_vala.stamp,$(DIST_COMMON)) \
+                       $(filter %.vapi,$(DIST_COMMON)) \
+                       $(filter $(addprefix %,$(notdir $(patsubst %.vapi,%.h,$(filter 
%.vapi,$(DIST_COMMON))))),$(DIST_COMMON)) \
+                       Makefile \
+                       Makefile.in \
+                       "*.orig" \
+                       "*.rej" \
+                       "*.bak" \
+                       "*~" \
+                       ".*.sw[nop]" \
+                       ".dirstamp" \
+               ; do echo "/$$x"; done; \
+               for x in \
+                       "*.$(OBJEXT)" \
+                       $(DEPDIR) \
+               ; do echo "$$x"; done; \
+       } | \
+       sed "s ^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
+       sed 's@/[.]/@/@g' | \
+       LC_ALL=C sort | uniq > $  tmp && \
+       mv $  tmp $@;
+
+all: $(srcdir)/.gitignore gitignore-recurse-maybe
+gitignore: $(srcdir)/.gitignore gitignore-recurse
+
+gitignore-recurse-maybe:
+       @for subdir in $(DIST_SUBDIRS); do \
+         case " $(SUBDIRS) " in \
+           *" $$subdir "*) :;; \
+           *) test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore 
|| echo "Skipping $$subdir");; \
+         esac; \
+       done
+gitignore-recurse:
+       @for subdir in $(DIST_SUBDIRS); do \
+           test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore || 
echo "Skipping $$subdir"); \
+       done
+
+maintainer-clean: gitignore-clean
+gitignore-clean:
+       -rm -f $(srcdir)/.gitignore
+
+.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe
diff --git a/libide/Makefile.am b/libide/Makefile.am
index 661c2b6..b32fe80 100644
--- a/libide/Makefile.am
+++ b/libide/Makefile.am
@@ -1,339 +1,339 @@
-include libide/editorconfig/libeditorconfig/Makefile.am
+CLEANFILES =
+DISTCLEANFILES =
+BUILT_SOURCES =
+EXTRA_DIST =
 
-lib_LTLIBRARIES += libide-1.0.la
+lib_LTLIBRARIES = libide-1.0.la
 
 libide_1_0_la_public_sources = \
-       libide/autotools/ide-autotools-build-system.c \
-       libide/autotools/ide-autotools-build-system.h \
-       libide/autotools/ide-autotools-build-task.c \
-       libide/autotools/ide-autotools-build-task.h \
-       libide/autotools/ide-autotools-builder.c \
-       libide/autotools/ide-autotools-builder.h \
-       libide/autotools/ide-autotools-project-miner.c \
-       libide/autotools/ide-autotools-project-miner.h \
-       libide/c/ide-c-indenter.c \
-       libide/c/ide-c-indenter.h \
-       libide/c/ide-c-language.c \
-       libide/c/ide-c-language.h \
-       libide/clang/ide-clang-diagnostic-provider.c \
-       libide/clang/ide-clang-diagnostic-provider.h \
-       libide/clang/ide-clang-highlighter.c \
-       libide/clang/ide-clang-highlighter.h \
-       libide/clang/ide-clang-private.h \
-       libide/clang/ide-clang-service.c \
-       libide/clang/ide-clang-service.h \
-       libide/clang/ide-clang-symbol-resolver.c \
-       libide/clang/ide-clang-symbol-resolver.h \
-       libide/clang/ide-clang-translation-unit.c \
-       libide/clang/ide-clang-translation-unit.h \
-       libide/devhelp/ide-devhelp-search-provider.c \
-       libide/devhelp/ide-devhelp-search-provider.h \
-       libide/devhelp/ide-devhelp-search-result.c \
-       libide/devhelp/ide-devhelp-search-result.h \
-       libide/directory/ide-directory-build-system.c \
-       libide/directory/ide-directory-build-system.h \
-       libide/directory/ide-directory-vcs.c \
-       libide/directory/ide-directory-vcs.h \
-       libide/editorconfig/ide-editorconfig-file-settings.c \
-       libide/editorconfig/ide-editorconfig-file-settings.h \
-       libide/git/ide-git-remote-callbacks.c \
-       libide/git/ide-git-remote-callbacks.h \
-       libide/git/ide-git-search-provider.c \
-       libide/git/ide-git-search-provider.h \
-       libide/git/ide-git-search-result.c \
-       libide/git/ide-git-search-result.h \
-       libide/git/ide-git-vcs.c \
-       libide/git/ide-git-vcs.h \
-       libide/gjs/ide-gjs-script.cpp \
-       libide/gjs/ide-gjs-script.h \
-       libide/gsettings/ide-gsettings-file-settings.c \
-       libide/gsettings/ide-gsettings-file-settings.h \
-       libide/html/ide-html-completion-provider.c \
-       libide/html/ide-html-completion-provider.h \
-       libide/html/ide-html-language.c \
-       libide/html/ide-html-language.h \
-       libide/ide-back-forward-item.c \
-       libide/ide-back-forward-item.h \
-       libide/ide-back-forward-list.c \
-       libide/ide-back-forward-list.h \
-       libide/ide-buffer-change-monitor.c \
-       libide/ide-buffer-change-monitor.h \
-       libide/ide-buffer-manager.c \
-       libide/ide-buffer-manager.h \
-       libide/ide-buffer.c \
-       libide/ide-buffer.h \
-       libide/ide-build-result.c \
-       libide/ide-build-result.h \
-       libide/ide-build-system.c \
-       libide/ide-build-system.h \
-       libide/ide-builder.c \
-       libide/ide-builder.h \
-       libide/ide-context.c \
-       libide/ide-context.h \
-       libide/ide-debugger.c \
-       libide/ide-debugger.h \
-       libide/ide-deployer.c \
-       libide/ide-deployer.h \
-       libide/ide-device-manager.c \
-       libide/ide-device-manager.h \
-       libide/ide-device-provider.c \
-       libide/ide-device-provider.h \
-       libide/ide-device.c \
-       libide/ide-device.h \
-       libide/ide-diagnostic-provider.c \
-       libide/ide-diagnostic-provider.h \
-       libide/ide-diagnostic.c \
-       libide/ide-diagnostic.h \
-       libide/ide-diagnostician.c \
-       libide/ide-diagnostician.h \
-       libide/ide-diagnostics.c \
-       libide/ide-diagnostics.h \
-       libide/ide-executable.c \
-       libide/ide-executable.h \
-       libide/ide-executer.c \
-       libide/ide-executer.h \
-       libide/ide-file-settings.c \
-       libide/ide-file-settings.h \
-       libide/ide-file.c \
-       libide/ide-file.h \
-       libide/ide-fixit.c \
-       libide/ide-fixit.h \
-       libide/ide-global.h \
-       libide/ide-highlight-index.c \
-       libide/ide-highlight-index.h \
-       libide/ide-highlighter.c \
-       libide/ide-highlighter.h \
-       libide/ide-indent-style.c \
-       libide/ide-indent-style.h \
-       libide/ide-indenter.c \
-       libide/ide-indenter.h \
-       libide/ide-language.c \
-       libide/ide-language.h \
-       libide/ide-log.c \
-       libide/ide-log.h \
-       libide/ide-macros.h \
-       libide/ide-object.c \
-       libide/ide-object.h \
-       libide/ide-pattern-spec.c \
-       libide/ide-pattern-spec.h \
-       libide/ide-process.c \
-       libide/ide-process.h \
-       libide/ide-progress.c \
-       libide/ide-progress.h \
-       libide/ide-project-file.c \
-       libide/ide-project-file.h \
-       libide/ide-project-files.c \
-       libide/ide-project-files.h \
-       libide/ide-project-info.c \
-       libide/ide-project-info.h \
-       libide/ide-project-item.c \
-       libide/ide-project-item.h \
-       libide/ide-project-miner.c \
-       libide/ide-project-miner.h \
-       libide/ide-project.c \
-       libide/ide-project.h \
-       libide/ide-recent-projects.c \
-       libide/ide-recent-projects.h \
-       libide/ide-refactory.c \
-       libide/ide-refactory.h \
-       libide/ide-script-manager.c \
-       libide/ide-script-manager.h \
-       libide/ide-script.c \
-       libide/ide-script.h \
-       libide/ide-search-context.c \
-       libide/ide-search-context.h \
-       libide/ide-search-engine.c \
-       libide/ide-search-engine.h \
-       libide/ide-search-provider.c \
-       libide/ide-search-provider.h \
-       libide/ide-search-result.c \
-       libide/ide-search-result.h \
-       libide/ide-service.c \
-       libide/ide-service.h \
-       libide/ide-source-location.c \
-       libide/ide-source-location.h \
-        libide/ide-source-map.c \
-        libide/ide-source-map.h \
-       libide/ide-source-range.c \
-       libide/ide-source-range.h \
-       libide/ide-source-snippet-chunk.c \
-       libide/ide-source-snippet-chunk.h \
-       libide/ide-source-snippet-context.c \
-       libide/ide-source-snippet-context.h \
-       libide/ide-source-snippet.c \
-       libide/ide-source-snippet.h \
-       libide/ide-source-snippets-manager.c \
-       libide/ide-source-snippets-manager.h \
-       libide/ide-source-snippets.c \
-       libide/ide-source-snippets.h \
-       libide/ide-source-view-mode.c \
-       libide/ide-source-view-mode.h \
-       libide/ide-source-view.c \
-       libide/ide-source-view.h \
-       libide/ide-symbol-resolver.c \
-       libide/ide-symbol-resolver.h \
-       libide/ide-symbol.c \
-       libide/ide-symbol.h \
-       libide/ide-target.c \
-       libide/ide-target.h \
-       libide/ide-test-case.c \
-       libide/ide-test-case.h \
-       libide/ide-test-suite.c \
-       libide/ide-test-suite.h \
-        libide/ide-thread-pool.c \
-        libide/ide-thread-pool.h \
-       libide/ide-types.h \
-       libide/ide-unsaved-file.c \
-       libide/ide-unsaved-file.h \
-       libide/ide-unsaved-files.c \
-       libide/ide-unsaved-files.h \
-       libide/ide-vcs.c \
-       libide/ide-vcs.h \
-       libide/ide.c \
-       libide/ide.h \
-       libide/local/ide-local-device.c \
-       libide/local/ide-local-device.h \
-       libide/mingw/ide-mingw-device.c \
-       libide/mingw/ide-mingw-device.h \
-       libide/mingw/ide-mingw-device-provider.c \
-       libide/mingw/ide-mingw-device-provider.h \
-       libide/pygobject/ide-pygobject-script.c \
-       libide/pygobject/ide-pygobject-script.h \
-       libide/python/ide-python-indenter.c \
-       libide/python/ide-python-indenter.h \
-       libide/python/ide-python-format-provider.c \
-       libide/python/ide-python-format-provider.h \
-       libide/python/ide-python-language.c \
-       libide/python/ide-python-language.h \
-       libide/theatrics/ide-animation.c \
-       libide/theatrics/ide-animation.h \
-       libide/vala/ide-vala-language.c \
-       libide/vala/ide-vala-language.h \
-       libide/xml/ide-xml-indenter.c \
-       libide/xml/ide-xml-indenter.h \
-       libide/xml/ide-xml-language.c \
-       libide/xml/ide-xml-language.h \
+       autotools/ide-autotools-build-system.c \
+       autotools/ide-autotools-build-system.h \
+       autotools/ide-autotools-build-task.c \
+       autotools/ide-autotools-build-task.h \
+       autotools/ide-autotools-builder.c \
+       autotools/ide-autotools-builder.h \
+       autotools/ide-autotools-project-miner.c \
+       autotools/ide-autotools-project-miner.h \
+       c/ide-c-indenter.c \
+       c/ide-c-indenter.h \
+       c/ide-c-language.c \
+       c/ide-c-language.h \
+       clang/ide-clang-diagnostic-provider.c \
+       clang/ide-clang-diagnostic-provider.h \
+       clang/ide-clang-highlighter.c \
+       clang/ide-clang-highlighter.h \
+       clang/ide-clang-private.h \
+       clang/ide-clang-service.c \
+       clang/ide-clang-service.h \
+       clang/ide-clang-symbol-resolver.c \
+       clang/ide-clang-symbol-resolver.h \
+       clang/ide-clang-translation-unit.c \
+       clang/ide-clang-translation-unit.h \
+       devhelp/ide-devhelp-search-provider.c \
+       devhelp/ide-devhelp-search-provider.h \
+       devhelp/ide-devhelp-search-result.c \
+       devhelp/ide-devhelp-search-result.h \
+       directory/ide-directory-build-system.c \
+       directory/ide-directory-build-system.h \
+       directory/ide-directory-vcs.c \
+       directory/ide-directory-vcs.h \
+       editorconfig/ide-editorconfig-file-settings.c \
+       editorconfig/ide-editorconfig-file-settings.h \
+       git/ide-git-remote-callbacks.c \
+       git/ide-git-remote-callbacks.h \
+       git/ide-git-search-provider.c \
+       git/ide-git-search-provider.h \
+       git/ide-git-search-result.c \
+       git/ide-git-search-result.h \
+       git/ide-git-vcs.c \
+       git/ide-git-vcs.h \
+       gjs/ide-gjs-script.cpp \
+       gjs/ide-gjs-script.h \
+       gsettings/ide-gsettings-file-settings.c \
+       gsettings/ide-gsettings-file-settings.h \
+       html/ide-html-completion-provider.c \
+       html/ide-html-completion-provider.h \
+       html/ide-html-language.c \
+       html/ide-html-language.h \
+       ide-back-forward-item.c \
+       ide-back-forward-item.h \
+       ide-back-forward-list.c \
+       ide-back-forward-list.h \
+       ide-buffer-change-monitor.c \
+       ide-buffer-change-monitor.h \
+       ide-buffer-manager.c \
+       ide-buffer-manager.h \
+       ide-buffer.c \
+       ide-buffer.h \
+       ide-build-result.c \
+       ide-build-result.h \
+       ide-build-system.c \
+       ide-build-system.h \
+       ide-builder.c \
+       ide-builder.h \
+       ide-context.c \
+       ide-context.h \
+       ide-debugger.c \
+       ide-debugger.h \
+       ide-deployer.c \
+       ide-deployer.h \
+       ide-device-manager.c \
+       ide-device-manager.h \
+       ide-device-provider.c \
+       ide-device-provider.h \
+       ide-device.c \
+       ide-device.h \
+       ide-diagnostic-provider.c \
+       ide-diagnostic-provider.h \
+       ide-diagnostic.c \
+       ide-diagnostic.h \
+       ide-diagnostician.c \
+       ide-diagnostician.h \
+       ide-diagnostics.c \
+       ide-diagnostics.h \
+       ide-enums.c \
+       ide-enums.h \
+       ide-executable.c \
+       ide-executable.h \
+       ide-executer.c \
+       ide-executer.h \
+       ide-file-settings.c \
+       ide-file-settings.h \
+       ide-file.c \
+       ide-file.h \
+       ide-fixit.c \
+       ide-fixit.h \
+       ide-global.h \
+       ide-highlight-index.c \
+       ide-highlight-index.h \
+       ide-highlighter.c \
+       ide-highlighter.h \
+       ide-indent-style.c \
+       ide-indent-style.h \
+       ide-indenter.c \
+       ide-indenter.h \
+       ide-language.c \
+       ide-language.h \
+       ide-log.c \
+       ide-log.h \
+       ide-macros.h \
+       ide-object.c \
+       ide-object.h \
+       ide-pattern-spec.c \
+       ide-pattern-spec.h \
+       ide-process.c \
+       ide-process.h \
+       ide-progress.c \
+       ide-progress.h \
+       ide-project-file.c \
+       ide-project-file.h \
+       ide-project-files.c \
+       ide-project-files.h \
+       ide-project-info.c \
+       ide-project-info.h \
+       ide-project-item.c \
+       ide-project-item.h \
+       ide-project-miner.c \
+       ide-project-miner.h \
+       ide-project.c \
+       ide-project.h \
+       ide-recent-projects.c \
+       ide-recent-projects.h \
+       ide-refactory.c \
+       ide-refactory.h \
+       ide-script-manager.c \
+       ide-script-manager.h \
+       ide-script.c \
+       ide-script.h \
+       ide-search-context.c \
+       ide-search-context.h \
+       ide-search-engine.c \
+       ide-search-engine.h \
+       ide-search-provider.c \
+       ide-search-provider.h \
+       ide-search-result.c \
+       ide-search-result.h \
+       ide-service.c \
+       ide-service.h \
+       ide-source-location.c \
+       ide-source-location.h \
+       ide-source-range.c \
+       ide-source-range.h \
+       ide-source-snippet-chunk.c \
+       ide-source-snippet-chunk.h \
+       ide-source-snippet-context.c \
+       ide-source-snippet-context.h \
+       ide-source-snippet.c \
+       ide-source-snippet.h \
+       ide-source-snippets-manager.c \
+       ide-source-snippets-manager.h \
+       ide-source-snippets.c \
+       ide-source-snippets.h \
+       ide-source-view-mode.c \
+       ide-source-view-mode.h \
+       ide-source-view.c \
+       ide-source-view.h \
+       ide-symbol-resolver.c \
+       ide-symbol-resolver.h \
+       ide-symbol.c \
+       ide-symbol.h \
+       ide-target.c \
+       ide-target.h \
+       ide-test-case.c \
+       ide-test-case.h \
+       ide-test-suite.c \
+       ide-test-suite.h \
+       ide-types.h \
+       ide-unsaved-file.c \
+       ide-unsaved-file.h \
+       ide-unsaved-files.c \
+       ide-unsaved-files.h \
+       ide-vcs.c \
+       ide-vcs.h \
+       ide.c \
+       ide.h \
+       local/ide-local-device.c \
+       local/ide-local-device.h \
+       mingw/ide-mingw-device-provider.c \
+       mingw/ide-mingw-device-provider.h \
+       mingw/ide-mingw-device.c \
+       mingw/ide-mingw-device.h \
+       pygobject/ide-pygobject-script.c \
+       pygobject/ide-pygobject-script.h \
+       python/ide-python-format-provider.c \
+       python/ide-python-format-provider.h \
+       python/ide-python-indenter.c \
+       python/ide-python-indenter.h \
+       python/ide-python-language.c \
+       python/ide-python-language.h \
+       theatrics/ide-animation.c \
+       theatrics/ide-animation.h \
+       vala/ide-vala-language.c \
+       vala/ide-vala-language.h \
+       xml/ide-xml-indenter.c \
+       xml/ide-xml-indenter.h \
+       xml/ide-xml-language.c \
+       xml/ide-xml-language.h \
+        ide-source-map.c \
+        ide-source-map.h \
+        ide-thread-pool.c \
+        ide-thread-pool.h \
        $(NULL)
 
 libide_1_0_la_SOURCES = \
        $(libide_1_0_la_public_sources) \
-       cut-n-paste/fuzzy.c \
-       cut-n-paste/fuzzy.h \
-       cut-n-paste/trie.c \
-       cut-n-paste/trie.h \
-       libide/autotools/ide-makecache.c \
-       libide/autotools/ide-makecache.h \
-       libide/autotools/ide-makecache-target.c \
-       libide/autotools/ide-makecache-target.h \
-       libide/c/c-parse-helper.c \
-       libide/c/c-parse-helper.h \
-       libide/c/ide-c-format-provider.c \
-       libide/c/ide-c-format-provider.h \
-       libide/clang/ide-clang-completion-item.c \
-       libide/clang/ide-clang-completion-item.h \
-       libide/clang/ide-clang-completion-provider.c \
-       libide/clang/ide-clang-completion-provider.h \
-       libide/ide-debug.h \
-       libide/editorconfig/editorconfig-glib.c \
-       libide/editorconfig/editorconfig-glib.h \
-       libide/gca/gca-diagnostics.c \
-       libide/gca/gca-diagnostics.h \
-       libide/gca/gca-service.c \
-       libide/gca/gca-service.h \
-       libide/gca/gca-structs.c \
-       libide/gca/gca-structs.h \
-       libide/gca/ide-gca-diagnostic-provider.c \
-       libide/gca/ide-gca-diagnostic-provider.h \
-       libide/gca/ide-gca-service.c \
-       libide/gca/ide-gca-service.h \
-       libide/gca/ide-gca-service.h \
-       libide/gconstructor.h \
-       libide/git/ide-git-buffer-change-monitor.c \
-       libide/git/ide-git-buffer-change-monitor.h \
-       libide/git/ide-git-search-index.c \
-       libide/git/ide-git-search-index.h \
-       libide/gsettings/ide-language-defaults.c \
-       libide/gsettings/ide-language-defaults.h \
-       libide/ide-async-helper.c \
-       libide/ide-async-helper.h \
-       libide/ide-battery-monitor.c \
-       libide/ide-battery-monitor.h \
-       libide/ide-highlight-engine.c \
-       libide/ide-highlight-engine.h \
-       libide/ide-internal.h \
-       libide/ide-line-change-gutter-renderer.c \
-       libide/ide-line-change-gutter-renderer.h \
-       libide/ide-line-diagnostics-gutter-renderer.c \
-       libide/ide-line-diagnostics-gutter-renderer.h \
-       libide/ide-ref-ptr.c \
-       libide/ide-ref-ptr.h \
-       libide/ide-search-reducer.c \
-       libide/ide-search-reducer.h \
-       libide/ide-source-iter.c \
-       libide/ide-source-iter.h \
-       libide/ide-source-snippet-completion-item.c \
-       libide/ide-source-snippet-completion-item.h \
-       libide/ide-source-snippet-completion-provider.c \
-       libide/ide-source-snippet-completion-provider.h \
-       libide/ide-source-snippet-parser.c \
-       libide/ide-source-snippet-parser.h \
-       libide/ide-source-snippet-private.h \
-       libide/ide-source-view-capture.c \
-       libide/ide-source-view-capture.h \
-       libide/ide-source-view-movements.c \
-       libide/ide-source-view-movements.h \
-       libide/ide-vcs-uri.c \
-       libide/ide-vcs-uri.h \
-       libide/ide-vim-iter.c \
-       libide/ide-vim-iter.h \
-       libide/modelines/modeline-parser.c \
-       libide/modelines/modeline-parser.h \
-       libide/tasks/ide-load-directory-task.c \
-       libide/tasks/ide-load-directory-task.h \
-       libide/theatrics/ide-box-theatric.c \
-       libide/theatrics/ide-box-theatric.h \
-       libide/theatrics/ide-frame-source.c \
-       libide/theatrics/ide-frame-source.h \
-       libide/util/ide-cairo.c \
-       libide/util/ide-cairo.h \
-       libide/util/ide-doc-seq.c \
-       libide/util/ide-doc-seq.h \
-       libide/util/ide-pango.c \
-       libide/util/ide-pango.h \
-       libide/util/ide-rgba.c \
-       libide/util/ide-rgba.h \
+       autotools/ide-makecache-target.c \
+       autotools/ide-makecache-target.h \
+       autotools/ide-makecache.c \
+       autotools/ide-makecache.h \
+       c/c-parse-helper.c \
+       c/c-parse-helper.h \
+       c/ide-c-format-provider.c \
+       c/ide-c-format-provider.h \
+       clang/ide-clang-completion-item.c \
+       clang/ide-clang-completion-item.h \
+       clang/ide-clang-completion-provider.c \
+       clang/ide-clang-completion-provider.h \
+       editorconfig/editorconfig-glib.c \
+       editorconfig/editorconfig-glib.h \
+       gca/gca-diagnostics.c \
+       gca/gca-diagnostics.h \
+       gca/gca-service.c \
+       gca/gca-service.h \
+       gca/gca-structs.c \
+       gca/gca-structs.h \
+       gca/ide-gca-diagnostic-provider.c \
+       gca/ide-gca-diagnostic-provider.h \
+       gca/ide-gca-service.c \
+       gca/ide-gca-service.h \
+       gca/ide-gca-service.h \
+       gconstructor.h \
+       git/ide-git-buffer-change-monitor.c \
+       git/ide-git-buffer-change-monitor.h \
+       git/ide-git-search-index.c \
+       git/ide-git-search-index.h \
+       gsettings/ide-language-defaults.c \
+       gsettings/ide-language-defaults.h \
+       ide-async-helper.c \
+       ide-async-helper.h \
+       ide-battery-monitor.c \
+       ide-battery-monitor.h \
+       ide-debug.h \
+       ide-highlight-engine.c \
+       ide-highlight-engine.h \
+       ide-internal.h \
+       ide-line-change-gutter-renderer.c \
+       ide-line-change-gutter-renderer.h \
+       ide-line-diagnostics-gutter-renderer.c \
+       ide-line-diagnostics-gutter-renderer.h \
+       ide-ref-ptr.c \
+       ide-ref-ptr.h \
+       ide-search-reducer.c \
+       ide-search-reducer.h \
+       ide-source-iter.c \
+       ide-source-iter.h \
+       ide-source-snippet-completion-item.c \
+       ide-source-snippet-completion-item.h \
+       ide-source-snippet-completion-provider.c \
+       ide-source-snippet-completion-provider.h \
+       ide-source-snippet-parser.c \
+       ide-source-snippet-parser.h \
+       ide-source-snippet-private.h \
+       ide-source-view-capture.c \
+       ide-source-view-capture.h \
+       ide-source-view-movements.c \
+       ide-source-view-movements.h \
+       ide-vcs-uri.c \
+       ide-vcs-uri.h \
+       ide-vim-iter.c \
+       ide-vim-iter.h \
+       modelines/modeline-parser.c \
+       modelines/modeline-parser.h \
+       tasks/ide-load-directory-task.c \
+       tasks/ide-load-directory-task.h \
+       theatrics/ide-box-theatric.c \
+       theatrics/ide-box-theatric.h \
+       theatrics/ide-frame-source.c \
+       theatrics/ide-frame-source.h \
+       util/ide-cairo.c \
+       util/ide-cairo.h \
+       util/ide-doc-seq.c \
+       util/ide-doc-seq.h \
+       util/ide-pango.c \
+       util/ide-pango.h \
+       util/ide-rgba.c \
+       util/ide-rgba.h \
        $(NULL)
 
 libide_1_0_la_includes = \
-       -I$(top_builddir)/libide \
-       -I$(top_srcdir)/cut-n-paste \
-       -I$(top_srcdir)/libide \
-       -I$(top_srcdir)/libide/autotools \
-       -I$(top_srcdir)/libide/c \
-       -I$(top_srcdir)/libide/clang \
-       -I$(top_srcdir)/libide/devhelp \
-       -I$(top_srcdir)/libide/directory \
-       -I$(top_srcdir)/libide/fuzzy \
-       -I$(top_srcdir)/libide/gca \
-       -I$(top_srcdir)/libide/editorconfig \
-       -I$(top_srcdir)/libide/editorconfig/libeditorconfig \
-       -I$(top_srcdir)/libide/git \
-       -I$(top_srcdir)/libide/gjs \
-       -I$(top_srcdir)/libide/gsettings \
-       -I$(top_srcdir)/libide/html \
-       -I$(top_srcdir)/libide/local \
-       -I$(top_srcdir)/libide/mingw \
-       -I$(top_srcdir)/libide/modelines \
-       -I$(top_srcdir)/libide/pygobject \
-       -I$(top_srcdir)/libide/python \
-       -I$(top_srcdir)/libide/resources \
-       -I$(top_srcdir)/libide/tasks \
-       -I$(top_srcdir)/libide/theatrics \
-       -I$(top_srcdir)/libide/trie \
-       -I$(top_srcdir)/libide/util \
-       -I$(top_srcdir)/libide/vala \
-       -I$(top_srcdir)/libide/xml \
+       $(DEBUG_CFLAGS) \
        $(CLANG_CFLAGS) \
+       -I$(top_builddir)/libide \
+       -I$(top_srcdir)/contrib/search \
+       -I$(top_srcdir)/contrib/libeditorconfig \
+       -I$(srcdir) \
+       -I$(srcdir)/autotools \
+       -I$(srcdir)/c \
+       -I$(srcdir)/clang \
+       -I$(srcdir)/devhelp \
+       -I$(srcdir)/directory \
+       -I$(srcdir)/editorconfig \
+       -I$(srcdir)/gca \
+       -I$(srcdir)/git \
+       -I$(srcdir)/gjs \
+       -I$(srcdir)/gsettings \
+       -I$(srcdir)/html \
+       -I$(srcdir)/local \
+       -I$(srcdir)/mingw \
+       -I$(srcdir)/modelines \
+       -I$(srcdir)/pygobject \
+       -I$(srcdir)/python \
+       -I$(srcdir)/resources \
+       -I$(srcdir)/tasks \
+       -I$(srcdir)/theatrics \
+       -I$(srcdir)/util \
+       -I$(srcdir)/vala \
+       -I$(srcdir)/xml \
        $(NULL)
 
 libide_1_0_la_CPPFLAGS = \
@@ -344,6 +344,8 @@ libide_1_0_la_CPPFLAGS = \
 libide_1_0_la_CFLAGS = \
        $(AM_CFLAGS) \
        $(LIBIDE_CFLAGS) \
+       $(OPTIMIZE_CFLAGS) \
+       $(DEBUG_CFLAGS) \
        $(libide_1_0_la_includes) \
        $(NULL)
 
@@ -351,9 +353,11 @@ libide_1_0_la_CXXFLAGS = \
        $(AM_CXXFLAGS) \
        $(LIBIDE_CFLAGS) \
        $(libide_1_0_la_includes) \
+       $(OPTIMIZE_CFLAGS) \
        $(NULL)
 
 libide_1_0_la_LDFLAGS = \
+       $(OPTIMIZE_LDFLAGS) \
        -avoid-version \
        -no-undefined \
        -export-symbols-regex '^ide_.*' \
@@ -364,75 +368,49 @@ libide_1_0_la_LIBADD = \
        $(LIBIDE_LIBS) \
        -lclang \
        -lm \
-       libeditorconfig.la \
-       $(NULL)
-
-if ENABLE_TRACING
-else
-AM_CPPFLAGS += -DIDE_DISABLE_TRACING
-endif
-
-if ENABLE_DEBUG
-else
-AM_CPPFLAGS += -DIDE_DISABLE_DEBUG
-endif
-
-libide_1_0_la_type_headers = \
-       libide/ide-buffer.h \
-       libide/ide-diagnostic.h \
-       libide/ide-highlighter.h \
-       libide/ide-source-view.h \
-        libide/ide-thread-pool.h \
+       $(top_builddir)/contrib/libeditorconfig/libeditorconfig.la \
+       $(top_builddir)/contrib/search/libsearch.la \
        $(NULL)
 
 libide_1_0_la_built_sources = \
-       libide/resources/ide-resources.c \
-       libide/resources/ide-resources.h \
-       libide/ide-enums.c \
-       libide/ide-enums.h \
+       resources/ide-resources.c \
+       resources/ide-resources.h \
        $(NULL)
 
-libide_resource_files = $(shell glib-compile-resources --sourcedir=$(top_srcdir)/libide/resources 
--generate-dependencies $(top_srcdir)/libide/resources/libide.gresource.xml)
-libide/resources/ide-resources.c: libide/resources/libide.gresource.xml $(libide_resource_files)
-       $(AM_V_GEN)glib-compile-resources --target=$@ --sourcedir=$(top_srcdir)/libide/resources 
--generate-source --c-name ide $(top_srcdir)/libide/resources/libide.gresource.xml
-libide/resources/ide-resources.h: libide/resources/libide.gresource.xml $(libide_resource_files)
-       $(AM_V_GEN)glib-compile-resources --target=$@ --sourcedir=$(top_srcdir)/libide/resources 
--generate-header --c-name ide $(top_srcdir)/libide/resources/libide.gresource.xml
-
-libide/ide-enums.h: $(libide_1_0_la_type_headers) libide/ide-enums.h.template
-       $(AM_V_GEN) ( cd $(srcdir) && glib-mkenums --template libide/ide-enums.h.template 
$(libide_1_0_la_type_headers) ) > libide/ide-enums.h.tmp
-       @ mv libide/ide-enums.h.tmp libide/ide-enums.h
-libide/ide-enums.c: $(libide_1_0_la_type_headers) libide/ide-enums.c.template
-       $(AM_V_GEN) ( cd $(srcdir) && glib-mkenums --template libide/ide-enums.c.template 
$(libide_1_0_la_type_headers) ) > libide/ide-enums.c.tmp
-       @ mv libide/ide-enums.c.tmp libide/ide-enums.c
 
-nodist_libide_1_0_la_SOURCES = \
-       $(libide_1_0_la_built_sources) \
+glib_enum_h = ide-enums.h
+glib_enum_c = ide-enums.c
+glib_enum_headers =  \
+       ide-buffer.h \
+       ide-diagnostic.h \
+       ide-highlighter.h \
+       ide-source-view.h \
+        ide-thread-pool.h \
        $(NULL)
+include $(top_srcdir)/build/autotools/Makefile.am.enums
 
-BUILT_SOURCES += $(libide_1_0_la_built_sources)
 
-DISTCLEANFILES += $(libide_1_0_la_built_sources)
+glib_resources_c = resources/ide-resources.c
+glib_resources_h = resources/ide-resources.h
+glib_resources_xml = resources/libide.gresource.xml
+glib_resources_namespace = ide
+include $(top_srcdir)/build/autotools/Makefile.am.gresources
 
-EXTRA_DIST += \
-       $(libide_resource_files) \
-       libide/resources/libide.gresource.xml \
-       libide/ide-enums.c.template \
-       libide/ide-enums.h.template \
-       $(libide_1_0_la_built_sources) \
+nodist_libide_1_0_la_SOURCES = \
+       resources/ide-resources.c \
+       resources/ide-resources.h \
        $(NULL)
 
 
 -include $(INTROSPECTION_MAKEFILE)
 
 INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_srcdir)/libide --warn-all
-INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)/libide
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
 
 if HAVE_INTROSPECTION
 introspection_sources = \
        $(libide_1_0_la_public_sources) \
-       libide/ide-enums.c \
-       libide/ide-enums.h \
        $(NULL)
 
 Ide-1.0.gir: libide-1.0.la
@@ -454,3 +432,5 @@ typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
 
 CLEANFILES += $(gir_DATA) $(typelib_DATA)
 endif
+
+-include $(top_srcdir)/git.mk
diff --git a/libide/autotools/ide-autotools-project-miner.c b/libide/autotools/ide-autotools-project-miner.c
index b4ce48e..6a104c8 100644
--- a/libide/autotools/ide-autotools-project-miner.c
+++ b/libide/autotools/ide-autotools-project-miner.c
@@ -116,7 +116,7 @@ ide_autotools_project_miner_mine_directory (IdeAutotoolsProjectMiner *self,
   if (depth == MAX_MINE_DEPTH)
     return;
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     g_autofree gchar *uri = NULL;
 
diff --git a/libide/autotools/ide-makecache.c b/libide/autotools/ide-makecache.c
index 503153d..1dc76d7 100644
--- a/libide/autotools/ide-makecache.c
+++ b/libide/autotools/ide-makecache.c
@@ -336,7 +336,7 @@ ide_makecache_get_file_targets_searched (IdeMakecache *self,
   targets = g_ptr_array_new_with_free_func ((GDestroyNotify)ide_makecache_target_free);
   found = g_hash_table_new (ide_makecache_target_hash, ide_makecache_target_equal);
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     gchar *fmtsize;
 
@@ -391,7 +391,7 @@ ide_makecache_get_file_targets_searched (IdeMakecache *self,
 
   if (targets->len > 0)
     {
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
       {
         GString *str;
         gsize i;
@@ -955,7 +955,7 @@ ide_makecache_get_file_flags_worker (GTask        *task,
       g_ptr_array_add (argv, "CXX="FAKE_CXX);
       g_ptr_array_add (argv, NULL);
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
       {
         gchar *cmdline;
 
@@ -1170,7 +1170,7 @@ ide_makecache_new_for_makefile_async (IdeContext          *context,
   g_return_if_fail (G_IS_FILE (makefile));
   g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     g_autofree gchar *path = g_file_get_path (makefile);
     IDE_TRACE_MSG ("Generating makecache for %s", path);
diff --git a/libide/clang/ide-clang-completion-item.c b/libide/clang/ide-clang-completion-item.c
index 4fcfe8a..ca8afd1 100644
--- a/libide/clang/ide-clang-completion-item.c
+++ b/libide/clang/ide-clang-completion-item.c
@@ -547,7 +547,7 @@ ide_clang_completion_item_get_typed_text (IdeClangCompletionItem *self)
       return g_strdup ("");
     }
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     enum CXCompletionChunkKind kind;
     unsigned num_chunks;
diff --git a/libide/clang/ide-clang-service.c b/libide/clang/ide-clang-service.c
index 4533d4c..7fc8992 100644
--- a/libide/clang/ide-clang-service.c
+++ b/libide/clang/ide-clang-service.c
@@ -290,7 +290,7 @@ ide_clang_service_parse_worker (GTask        *task,
     {
     case CXError_Success:
       index = ide_clang_service_build_index (self, tu, request);
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
       ide_highlight_index_dump (index);
 #endif
       break;
@@ -374,7 +374,7 @@ ide_clang_service__get_build_flags_cb (GObject      *object,
 
   request->command_line_args = argv;
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     gchar *cflags;
 
diff --git a/libide/ide-back-forward-list.c b/libide/ide-back-forward-list.c
index 7f380b9..549eeb8 100644
--- a/libide/ide-back-forward-list.c
+++ b/libide/ide-back-forward-list.c
@@ -627,7 +627,7 @@ _ide_back_forward_list_save_async (IdeBackForwardList  *self,
   g_assert (G_IS_FILE (file));
   g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     g_autofree gchar *path = NULL;
 
@@ -796,7 +796,7 @@ _ide_back_forward_list_load_async (IdeBackForwardList  *self,
   g_assert (G_IS_FILE (file));
   g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     g_autofree gchar *path = NULL;
 
diff --git a/libide/ide-debug.h b/libide/ide-debug.h.in
similarity index 92%
rename from libide/ide-debug.h
rename to libide/ide-debug.h.in
index 54767f9..9f82fad 100644
--- a/libide/ide-debug.h
+++ b/libide/ide-debug.h.in
@@ -1,4 +1,4 @@
-/* ide-debug.h
+/* ide-debug.h.in
  *
  * Copyright (C) 2015 Christian Hergert <christian hergert me>
  *
@@ -23,18 +23,18 @@
 
 G_BEGIN_DECLS
 
-#ifndef G_LOG_LEVEL_TRACE
-# define G_LOG_LEVEL_TRACE (1 << G_LOG_LEVEL_USER_SHIFT)
+#ifndef IDE_ENABLE_TRACING
+# define IDE_ENABLE_TRACING @ENABLE_TRACING@
+#endif
+#if IDE_ENABLE_TRACING != 1
+# undef IDE_ENABLE_TRACING
 #endif
 
-#ifndef IDE_DISABLE_DEBUG
-# define IDE_DEBUG(...)                                                \
-   g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, ##__VA_ARGS__)
-#else
-# define IDE_DEBUG(...)
+#ifndef G_LOG_LEVEL_TRACE
+# define G_LOG_LEVEL_TRACE (1 << G_LOG_LEVEL_USER_SHIFT)
 #endif
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
 # define IDE_TRACE_MSG(fmt, ...)                                       \
    g_log(G_LOG_DOMAIN, G_LOG_LEVEL_TRACE, "  MSG: %s():%d: "fmt,       \
          G_STRFUNC, __LINE__, ##__VA_ARGS__)
diff --git a/libide/ide-enums.c.template b/libide/ide-enums.c.in
similarity index 100%
rename from libide/ide-enums.c.template
rename to libide/ide-enums.c.in
diff --git a/libide/ide-enums.h.template b/libide/ide-enums.h.in
similarity index 100%
rename from libide/ide-enums.h.template
rename to libide/ide-enums.h.in
diff --git a/libide/ide-project.c b/libide/ide-project.c
index 716191a..02e2f44 100644
--- a/libide/ide-project.c
+++ b/libide/ide-project.c
@@ -423,7 +423,7 @@ ide_project_rename_file_worker (GTask        *task,
   workdir = ide_vcs_get_working_directory (vcs);
   path = g_file_get_relative_path (workdir, op->new_file);
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     gchar *old_path = g_file_get_uri (op->orig_file);
     gchar *new_path = g_file_get_uri (op->new_file);
diff --git a/libide/ide-source-view-movements.c b/libide/ide-source-view-movements.c
index 433543f..2d65a11 100644
--- a/libide/ide-source-view-movements.c
+++ b/libide/ide-source-view-movements.c
@@ -1255,7 +1255,7 @@ _ide_source_view_apply_movement (IdeSourceView         *self,
 
   g_return_if_fail (IDE_IS_SOURCE_VIEW (self));
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     GEnumValue *enum_value;
     GEnumClass *enum_class;
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 4928b40..ff2fdfd 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -1994,7 +1994,7 @@ ide_source_view_do_mode (IdeSourceView *self,
       gboolean handled;
       gboolean remove = FALSE;
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
       {
         gunichar ch = 0;
         gchar *name = NULL;
@@ -3101,7 +3101,7 @@ ide_source_view_real_set_mode (IdeSourceView         *self,
   if (!priv->buffer)
     IDE_EXIT;
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     const gchar *old_mode = "null";
 
@@ -4484,7 +4484,7 @@ ide_source_view_goto_definition_symbol_cb (GObject      *object,
 
   if (srcloc != NULL)
     {
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
       guint line = ide_source_location_get_line (srcloc);
       guint line_offset = ide_source_location_get_line_offset (srcloc);
       IdeFile *file = ide_source_location_get_file (srcloc);
diff --git a/libide/ide-unsaved-files.c b/libide/ide-unsaved-files.c
index 0bf43c7..03082fb 100644
--- a/libide/ide-unsaved-files.c
+++ b/libide/ide-unsaved-files.c
@@ -621,7 +621,7 @@ ide_unsaved_files_get_unsaved_file (IdeUnsavedFiles *self,
 
   g_return_val_if_fail (IDE_IS_UNSAVED_FILES (self), NULL);
 
-#ifndef IDE_DISABLE_TRACE
+#ifdef IDE_ENABLE_TRACE
   {
     gchar *path;
 
diff --git a/libide/resources/libide.gresource.xml b/libide/resources/libide.gresource.xml
index 5b81ce5..7ab2b50 100644
--- a/libide/resources/libide.gresource.xml
+++ b/libide/resources/libide.gresource.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/org/gnome/libide">
-    <file alias="snippets/c-sharp.snippets">../../data/snippets/c-sharp.snippets</file>
     <file alias="snippets/c.snippets">../../data/snippets/c.snippets</file>
     <file alias="snippets/chdr.snippets">../../data/snippets/chdr.snippets</file>
     <file alias="snippets/gobject.snippets">../../data/snippets/gobject.snippets</file>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 23f84b1..ac50d4a 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,10 +1,4 @@
-cut-n-paste/trie.c
-[type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.gschema.xml.in
-[type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.language.gschema.xml.in
-[type: gettext/gsettings]data/gsettings/org.gnome.builder.experimental.gschema.xml.in
 [type: gettext/glade]data/gtk/menus.ui
-data/style-schemes/builder-dark.xml
-data/style-schemes/builder.xml
 [type: gettext/glade]data/ui/gb-command-bar.ui
 [type: gettext/glade]data/ui/gb-devhelp-view.ui
 [type: gettext/glade]data/ui/gb-editor-frame.ui
@@ -28,9 +22,15 @@ data/style-schemes/builder.xml
 [type: gettext/glade]data/ui/gb-search-display-row.ui
 [type: gettext/glade]data/ui/gb-view-stack.ui
 [type: gettext/glade]data/ui/gb-workbench.ui
-libide/autotools/ide-autotools-builder.c
+[type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.gschema.xml
+[type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.language.gschema.xml
+[type: gettext/gsettings]data/gsettings/org.gnome.builder.experimental.gschema.xml
+[type: gettext/gsettings]data/gsettings/org.gnome.builder.project-tree.gschema.xml
+data/style-schemes/builder-dark.xml
+data/style-schemes/builder.xml
 libide/autotools/ide-autotools-build-system.c
 libide/autotools/ide-autotools-build-task.c
+libide/autotools/ide-autotools-builder.c
 libide/autotools/ide-autotools-project-miner.c
 libide/autotools/ide-makecache.c
 libide/c/ide-c-format-provider.c
@@ -55,52 +55,53 @@ libide/gsettings/ide-gsettings-file-settings.c
 libide/gsettings/ide-language-defaults.c
 libide/ide-back-forward-item.c
 libide/ide-back-forward-list.c
-libide/ide-buffer.c
 libide/ide-buffer-change-monitor.c
 libide/ide-buffer-manager.c
-libide/ide-builder.c
+libide/ide-buffer.c
 libide/ide-build-result.c
 libide/ide-build-system.c
-libide/ide.c
+libide/ide-builder.c
 libide/ide-context.c
-libide/ide-device.c
 libide/ide-device-manager.c
 libide/ide-device-provider.c
-libide/ide-file.c
+libide/ide-device.c
 libide/ide-file-settings.c
+libide/ide-file.c
 libide/ide-highlight-engine.c
 libide/ide-language.c
 libide/ide-object.c
 libide/ide-progress.c
-libide/ide-project.c
 libide/ide-project-file.c
 libide/ide-project-info.c
 libide/ide-project-item.c
+libide/ide-project.c
 libide/ide-recent-projects.c
-libide/ide-script.c
 libide/ide-script-manager.c
+libide/ide-script.c
 libide/ide-search-result.c
 libide/ide-service.c
 libide/ide-source-map.c
-libide/ide-source-snippet.c
 libide/ide-source-snippet-chunk.c
 libide/ide-source-snippet-completion-item.c
 libide/ide-source-snippet-completion-provider.c
 libide/ide-source-snippet-parser.c
+libide/ide-source-snippet.c
 libide/ide-source-snippets-manager.c
-libide/ide-source-view.c
 libide/ide-source-view-capture.c
 libide/ide-source-view-mode.c
+libide/ide-source-view.c
+libide/ide.c
 libide/mingw/ide-mingw-device-provider.c
 libide/pygobject/ide-pygobject-script.c
 libide/python/ide-python-format-provider.c
 libide/tasks/ide-load-directory-task.c
 libide/theatrics/ide-animation.c
 libide/theatrics/ide-box-theatric.c
+contrib/search/trie.c
 src/app/gb-application-actions.c
 src/app/gb-application.c
-src/commands/gb-command-bar.c
 src/commands/gb-command-bar-item.c
+src/commands/gb-command-bar.c
 src/commands/gb-command-gaction.c
 src/commands/gb-command-provider.c
 src/commands/gb-command-result.c
@@ -116,7 +117,6 @@ src/editor/gb-editor-settings-widget.c
 src/editor/gb-editor-view-actions.c
 src/editor/gb-editor-view.c
 src/editor/gb-editor-workspace.c
-src/editor/gb-source-formatter.c
 src/gd/gd-tagged-entry.c
 src/gedit/gedit-menu-stack-switcher.c
 src/html/gb-html-document.c
@@ -124,27 +124,27 @@ src/html/gb-html-view.c
 src/keybindings/gb-keybindings.c
 src/main.c
 src/nautilus/nautilus-floating-bar.c
-src/preferences/gb-preferences-page.c
 src/preferences/gb-preferences-page-editor.c
 src/preferences/gb-preferences-page-experimental.c
 src/preferences/gb-preferences-page-git.c
 src/preferences/gb-preferences-page-keybindings.c
+src/preferences/gb-preferences-page.c
 src/preferences/gb-preferences-switch.c
 src/project-tree/gb-new-file-popover.c
 src/project-tree/gb-project-tree-builder.c
 src/project-tree/gb-rename-file-popover.c
 src/scrolledwindow/gb-scrolled-window.c
 src/search/gb-search-box.c
-src/search/gb-search-display.c
 src/search/gb-search-display-group.c
 src/search/gb-search-display-row.c
+src/search/gb-search-display.c
 src/tree/gb-tree-builder.c
-src/tree/gb-tree.c
 src/tree/gb-tree-node.c
+src/tree/gb-tree.c
 src/util/gb-file-manager.c
 src/util/gb-glib.c
-src/views/gb-view.c
 src/views/gb-view-stack.c
+src/views/gb-view.c
 src/vim/gb-vim.c
 src/workbench/gb-workbench-actions.c
 src/workbench/gb-workbench.c
@@ -153,7 +153,7 @@ tools/ide-build.c
 tools/ide-list-build-flags.c
 tools/ide-list-devices.c
 tools/ide-list-diagnostics.c
-tools/ide-list-files.c
 tools/ide-list-file-settings.c
+tools/ide-list-files.c
 tools/ide-mine-projects.c
 tools/ide-search.c
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..9096014
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,236 @@
+CLEANFILES =
+DISTCLEANFILES =
+BUILT_SOURCES =
+EXTRA_DIST =
+
+bin_PROGRAMS = gnome-builder
+
+noinst_LTLIBRARIES = libgnome-builder.la
+
+libgnome_builder_la_SOURCES = \
+       $(gnome_builder_built_sources) \
+       app/gb-application-actions.c \
+       app/gb-application-actions.h \
+       app/gb-application-credits.h \
+       app/gb-application-private.h \
+       app/gb-application.c \
+       app/gb-application.h \
+       commands/gb-command-bar-item.c \
+       commands/gb-command-bar-item.h \
+       commands/gb-command-bar.c \
+       commands/gb-command-bar.h \
+       commands/gb-command-gaction-provider.c \
+       commands/gb-command-gaction-provider.h \
+       commands/gb-command-gaction.c \
+       commands/gb-command-gaction.h \
+       commands/gb-command-manager.c \
+       commands/gb-command-manager.h \
+       commands/gb-command-provider.c \
+       commands/gb-command-provider.h \
+       commands/gb-command-result.c \
+       commands/gb-command-result.h \
+       commands/gb-command-vim-provider.c \
+       commands/gb-command-vim-provider.h \
+       commands/gb-command-vim.c \
+       commands/gb-command-vim.h \
+       commands/gb-command.c \
+       commands/gb-command.h \
+       devhelp/gb-devhelp-document.c \
+       devhelp/gb-devhelp-document.h \
+       devhelp/gb-devhelp-view.c \
+       devhelp/gb-devhelp-view.h \
+       dialogs/gb-new-project-dialog.c \
+       dialogs/gb-new-project-dialog.h \
+       dialogs/gb-projects-dialog.c \
+       dialogs/gb-projects-dialog.h \
+       dialogs/gb-recent-project-row.c \
+       dialogs/gb-recent-project-row.h \
+       documents/gb-document.c \
+       documents/gb-document.h \
+       editor/gb-editor-document.c \
+       editor/gb-editor-document.h \
+       editor/gb-editor-frame-actions.c \
+       editor/gb-editor-frame-actions.h \
+       editor/gb-editor-frame-private.h \
+       editor/gb-editor-frame.c \
+       editor/gb-editor-frame.h \
+       editor/gb-editor-map-bin.c \
+       editor/gb-editor-map-bin.h \
+       editor/gb-editor-settings-widget.c \
+       editor/gb-editor-settings-widget.h \
+       editor/gb-editor-tweak-widget.c \
+       editor/gb-editor-tweak-widget.h \
+       editor/gb-editor-view-actions.c \
+       editor/gb-editor-view-actions.h \
+       editor/gb-editor-view-private.h \
+       editor/gb-editor-view.c \
+       editor/gb-editor-view.h \
+       editor/gb-editor-workspace-actions.c \
+       editor/gb-editor-workspace-actions.h \
+       editor/gb-editor-workspace-private.h \
+       editor/gb-editor-workspace.c \
+       editor/gb-editor-workspace.h \
+       gd/gd-tagged-entry.c \
+       gd/gd-tagged-entry.h \
+       gedit/gedit-close-button.c \
+       gedit/gedit-close-button.h \
+       gedit/gedit-menu-stack-switcher.c \
+       gedit/gedit-menu-stack-switcher.h \
+       html/gb-html-document.c \
+       html/gb-html-document.h \
+       html/gb-html-view.c \
+       html/gb-html-view.h \
+       keybindings/gb-keybindings.c \
+       keybindings/gb-keybindings.h \
+       nautilus/nautilus-floating-bar.c \
+       nautilus/nautilus-floating-bar.h \
+       preferences/gb-preferences-page-editor.c \
+       preferences/gb-preferences-page-editor.h \
+       preferences/gb-preferences-page-experimental.c \
+       preferences/gb-preferences-page-experimental.h \
+       preferences/gb-preferences-page-git.c \
+       preferences/gb-preferences-page-git.h \
+       preferences/gb-preferences-page-keybindings.c \
+       preferences/gb-preferences-page-keybindings.h \
+       preferences/gb-preferences-page-language.c \
+       preferences/gb-preferences-page-language.h \
+       preferences/gb-preferences-page.c \
+       preferences/gb-preferences-page.h \
+       preferences/gb-preferences-switch.c \
+       preferences/gb-preferences-switch.h \
+       preferences/gb-preferences-window.c \
+       preferences/gb-preferences-window.h \
+       project-tree/gb-new-file-popover.c \
+       project-tree/gb-new-file-popover.h \
+       project-tree/gb-project-tree-actions.c \
+       project-tree/gb-project-tree-actions.h \
+       project-tree/gb-project-tree-builder.c \
+       project-tree/gb-project-tree-builder.h \
+       project-tree/gb-project-tree-private.h \
+       project-tree/gb-project-tree.c \
+       project-tree/gb-project-tree.h \
+       project-tree/gb-rename-file-popover.c \
+       project-tree/gb-rename-file-popover.h \
+       scrolledwindow/gb-scrolled-window.c \
+       scrolledwindow/gb-scrolled-window.h \
+       search/gb-search-box.c \
+       search/gb-search-box.h \
+       search/gb-search-display-group.c \
+       search/gb-search-display-group.h \
+       search/gb-search-display-row.c \
+       search/gb-search-display-row.h \
+       search/gb-search-display.c \
+       search/gb-search-display.h \
+       support/gb-support.c \
+       support/gb-support.h \
+       tree/gb-tree-builder.c \
+       tree/gb-tree-builder.h \
+       tree/gb-tree-node.c \
+       tree/gb-tree-node.h \
+       tree/gb-tree.c \
+       tree/gb-tree.h \
+       util/gb-cairo.c \
+       util/gb-cairo.h \
+       util/gb-dnd.c \
+       util/gb-dnd.h \
+       util/gb-file-manager.c \
+       util/gb-file-manager.h \
+       util/gb-gdk.c \
+       util/gb-gdk.h \
+       util/gb-glib.c \
+       util/gb-glib.h \
+       util/gb-gtk.c \
+       util/gb-gtk.h \
+       util/gb-pango.c \
+       util/gb-pango.h \
+       util/gb-rgba.c \
+       util/gb-rgba.h \
+       util/gb-string.c \
+       util/gb-string.h \
+       util/gb-widget.c \
+       util/gb-widget.h \
+       views/gb-view-grid.c \
+       views/gb-view-grid.h \
+       views/gb-view-stack-actions.c \
+       views/gb-view-stack-actions.h \
+       views/gb-view-stack-private.h \
+       views/gb-view-stack.c \
+       views/gb-view-stack.h \
+       views/gb-view.c \
+       views/gb-view.h \
+       vim/gb-vim.c \
+       vim/gb-vim.h \
+       workbench/gb-workbench-actions.c \
+       workbench/gb-workbench-actions.h \
+       workbench/gb-workbench-private.h \
+       workbench/gb-workbench-types.h \
+       workbench/gb-workbench.c \
+       workbench/gb-workbench.h \
+       workbench/gb-workspace.c \
+       workbench/gb-workspace.h \
+        css/gb-css-provider.c \
+        css/gb-css-provider.h \
+        util/gb-settings.c \
+        util/gb-settings.h \
+       $(NULL)
+
+nodist_libgnome_builder_la_SOURCES = \
+       resources/gb-resources.c \
+       resources/gb-resources.h \
+       $(NULL)
+
+libgnome_builder_la_LIBADD = \
+       $(BUILDER_LIBS) \
+       $(OPTIMIZE_LDFLAGS) \
+       $(top_builddir)/libide/libide-1.0.la \
+       -lm
+
+libgnome_builder_la_CFLAGS = \
+       -DPACKAGE_DATADIR="\"${datadir}\"" \
+       -DPACKAGE_LOCALE_DIR=\""${datadir}/locale"\" \
+       $(BUILDER_CFLAGS) \
+       $(DEBUG_CFLAGS) \
+       $(OPTIMIZE_CFLAGS) \
+       -I$(builddir)/resources \
+       -I$(builddir)/util \
+       -I$(srcdir)/app \
+       -I$(srcdir)/commands \
+       -I$(srcdir)/css \
+       -I$(srcdir)/devhelp \
+       -I$(srcdir)/dialogs \
+       -I$(srcdir)/documents \
+       -I$(srcdir)/editor \
+       -I$(srcdir)/gd \
+       -I$(srcdir)/gedit \
+       -I$(srcdir)/html \
+       -I$(srcdir)/keybindings \
+       -I$(srcdir)/nautilus \
+       -I$(srcdir)/preferences \
+       -I$(srcdir)/project-tree \
+       -I$(srcdir)/resources \
+       -I$(srcdir)/scrolledwindow \
+       -I$(srcdir)/search \
+       -I$(srcdir)/support \
+       -I$(srcdir)/tree \
+       -I$(srcdir)/util \
+       -I$(srcdir)/views \
+       -I$(srcdir)/vim \
+       -I$(srcdir)/workbench \
+       -I$(top_builddir)/libide \
+       -I$(top_srcdir)/libide \
+       $(NULL)
+
+gnome_builder_SOURCES = main.c
+gnome_builder_CFLAGS = $(libgnome_builder_la_CFLAGS)
+gnome_builder_LDADD = \
+       $(top_builddir)/libide/libide-1.0.la \
+       libgnome-builder.la \
+       $(NULL)
+
+glib_resources_c = resources/gb-resources.c
+glib_resources_h = resources/gb-resources.h
+glib_resources_xml = resources/gnome-builder.gresource.xml
+glib_resources_namespace = gb
+include $(top_srcdir)/build/autotools/Makefile.am.gresources
+
+-include $(top_srcdir)/git.mk
diff --git a/src/resources/gnome-builder.gresource.xml b/src/resources/gnome-builder.gresource.xml
index c202e7f..ac2dec7 100644
--- a/src/resources/gnome-builder.gresource.xml
+++ b/src/resources/gnome-builder.gresource.xml
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/org/gnome/builder">
-    <file alias="css/markdown.css">../../data/css/markdown.css</file>
-
-    <file>editor/uncrustify/uncrustify.c.cfg</file>
-
     <file alias="gtk/menus.ui">../../data/gtk/menus.ui</file>
 
     <!-- Scalable icons all go into actions/ since gtk+ will ignore our directory scheme -->
@@ -25,8 +21,9 @@
     <file 
alias="icons/48x48/actions/builder-vcs-git.png">../../data/icons/hicolor/48x48/vcs/builder-vcs-git.png</file>
     <file 
alias="icons/32x32/actions/builder-vcs-git.png">../../data/icons/hicolor/32x32/vcs/builder-vcs-git.png</file>
 
-    <file alias="js/marked.js">../../data/js/marked.js</file>
-    <file alias="js/markdown-view.js">../../data/js/markdown-view.js</file>
+    <file alias="markdown/markdown.css">../../data/markdown/markdown.css</file>
+    <file alias="markdown/marked.js">../../data/markdown/marked.js</file>
+    <file alias="markdown/markdown-view.js">../../data/markdown/markdown-view.js</file>
 
     <file alias="keybindings/default.css">../../data/keybindings/default.css</file>
     <file alias="keybindings/emacs.css">../../data/keybindings/emacs.css</file>
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..7fccf8c
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,104 @@
+include $(top_srcdir)/build/autotools/Makefile.am.glib-tap
+
+
+tests_cflags = \
+       -I$(top_srcdir)/libide \
+       -I$(top_builddir)/libide \
+       $(DEBUG_CFLAGS) \
+       $(LIBIDE_CFLAGS) \
+       -DTEST_DATA_DIR="\"$(srcdir)/data\"" \
+       -DBUILDDIR="\"$(builddir)\"" \
+       $(NULL)
+
+tests_libs = \
+       $(LIBIDE_LIBS) \
+       $(top_builddir)/libide/libide-1.0.la \
+       $(NULL)
+
+
+TESTS += test-ide-context
+noinst_PROGRAMS += test-ide-context
+test_ide_context_SOURCES = test-ide-context.c
+test_ide_context_CFLAGS = $(tests_cflags)
+test_ide_context_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-back-forward-list
+noinst_PROGRAMS += test-ide-back-forward-list
+test_ide_back_forward_list_SOURCES = test-ide-back-forward-list.c
+test_ide_back_forward_list_CFLAGS = $(tests_cflags)
+test_ide_back_forward_list_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-buffer-manager
+noinst_PROGRAMS += test-ide-buffer-manager
+test_ide_buffer_manager_SOURCES = test-ide-buffer-manager.c
+test_ide_buffer_manager_CFLAGS = $(tests_cflags)
+test_ide_buffer_manager_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-buffer
+noinst_PROGRAMS += test-ide-buffer
+test_ide_buffer_SOURCES = test-ide-buffer.c
+test_ide_buffer_CFLAGS = $(tests_cflags)
+test_ide_buffer_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-file-settings
+noinst_PROGRAMS += test-ide-file-settings
+test_ide_file_settings_SOURCES = test-ide-file-settings.c
+test_ide_file_settings_CFLAGS = $(tests_cflags)
+test_ide_file_settings_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-indenter
+noinst_PROGRAMS += test-ide-indenter
+test_ide_indenter_SOURCES = test-ide-indenter.c
+test_ide_indenter_CFLAGS = $(tests_cflags)
+test_ide_indenter_LDADD = $(tests_libs)
+
+
+TESTS += test-ide-vcs-uri
+noinst_PROGRAMS += test-ide-vcs-uri
+test_ide_vcs_uri_SOURCES = test-ide-vcs-uri.c
+test_ide_vcs_uri_CFLAGS = $(tests_cflags)
+test_ide_vcs_uri_LDADD = $(tests_libs)
+
+
+TESTS += test-c-parse-helper
+noinst_PROGRAMS += test-c-parse-helper
+test_c_parse_helper_SOURCES = test-c-parse-helper.c
+test_c_parse_helper_CFLAGS = \
+       $(tests_cflags) \
+       -include $(top_srcdir)/libide/c/c-parse-helper.c \
+       -include $(top_srcdir)/libide/c/c-parse-helper.h \
+       $(NULL)
+test_c_parse_helper_LDADD = $(tests_libs)
+
+
+TESTS += test-vim
+noinst_PROGRAMS += test-vim
+test_vim_SOURCES = test-vim.c
+test_vim_CFLAGS = \
+       $(tests_cflags) \
+       -I$(top_srcdir)/src/resources \
+       -I$(top_builddir)/src/resources \
+       $(NULL)
+test_vim_LDADD = \
+       $(tests_libs) \
+       $(top_builddir)/src/libgnome-builder.la \
+       $(NULL)
+
+
+noinst_PROGRAMS += test-ide-source-view
+test_ide_source_view_SOURCES = test-ide-source-view.c
+test_ide_source_view_CFLAGS = $(tests_cflags)
+test_ide_source_view_LDADD = $(tests_libs)
+
+
+EXTRA_DIST += \
+       data/project1/configure.ac \
+       data/project1/.editorconfig \
+       $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/tools/Makefile.am b/tools/Makefile.am
index e9abfad..917aedb 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -1,40 +1,54 @@
+noinst_PROGRAMS =
+
+tools_cflags = \
+       -I$(top_srcdir)/libide \
+       -I$(top_builddir)/libide \
+       $(LIBIDE_CFLAGS) \
+       $(NULL)
+
+tools_libs = \
+       $(LIBIDE_LIBS) \
+       $(top_builddir)/libide/libide-1.0.la \
+       $(NULL)
 
 noinst_PROGRAMS += ide-build
-ide_build_SOURCES = tools/ide-build.c
-ide_build_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_build_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_build_SOURCES = ide-build.c
+ide_build_CFLAGS = $(tools_cflags)
+ide_build_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-list-build-flags
-ide_list_build_flags_SOURCES = tools/ide-list-build-flags.c
-ide_list_build_flags_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_list_build_flags_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_list_build_flags_SOURCES = ide-list-build-flags.c
+ide_list_build_flags_CFLAGS = $(tools_cflags)
+ide_list_build_flags_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-list-file-settings
-ide_list_file_settings_SOURCES = tools/ide-list-file-settings.c
-ide_list_file_settings_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_list_file_settings_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_list_file_settings_SOURCES = ide-list-file-settings.c
+ide_list_file_settings_CFLAGS = $(tools_cflags)
+ide_list_file_settings_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-list-devices
-ide_list_devices_SOURCES = tools/ide-list-devices.c
-ide_list_devices_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_list_devices_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_list_devices_SOURCES = ide-list-devices.c
+ide_list_devices_CFLAGS = $(tools_cflags)
+ide_list_devices_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-list-diagnostics
-ide_list_diagnostics_SOURCES = tools/ide-list-diagnostics.c
-ide_list_diagnostics_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_list_diagnostics_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_list_diagnostics_SOURCES = ide-list-diagnostics.c
+ide_list_diagnostics_CFLAGS = $(tools_cflags)
+ide_list_diagnostics_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-list-files
-ide_list_files_SOURCES = tools/ide-list-files.c
-ide_list_files_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_list_files_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_list_files_SOURCES = ide-list-files.c
+ide_list_files_CFLAGS = $(tools_cflags)
+ide_list_files_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-search
-ide_search_SOURCES = tools/ide-search.c
-ide_search_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_search_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_search_SOURCES = ide-search.c
+ide_search_CFLAGS = $(tools_cflags)
+ide_search_LDADD = $(tools_libs)
 
 noinst_PROGRAMS += ide-mine-projects
-ide_mine_projects_SOURCES = tools/ide-mine-projects.c
-ide_mine_projects_CFLAGS = $(libide_1_0_la_CFLAGS)
-ide_mine_projects_LDADD = libide-1.0.la $(LIBIDE_LIBS)
+ide_mine_projects_SOURCES = ide-mine-projects.c
+ide_mine_projects_CFLAGS = $(tools_cflags)
+ide_mine_projects_LDADD = $(tools_libs)
+
+-include $(top_srcdir)/git.mk


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