aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2014-02-25 10:08:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2014-02-25 10:08:02 +0200
commit27142799b33dabc075f660e5de8ab375a1ac9314 (patch)
treec9b279c24fd1b80985bec7c952fb9598ca97e3b4
parent7f23a534f3ed0b9c79a7f7c5c01648a7a4fcff70 (diff)
Update and improve for new dependencies
-rw-r--r--README62
-rw-r--r--libbackend-elements/build/cxx/gnu/configuration-dynamic.make8
-rw-r--r--libbackend-elements/build/import/libboost/configuration-dynamic.make8
-rw-r--r--libbackend-elements/build/import/libcult/configuration-dynamic.make4
-rw-r--r--libbackend-elements/build/ld/configuration-lib-dynamic.make13
-rw-r--r--libcult/build/configuration-dynamic.make3
-rw-r--r--libcult/build/cxx/configuration-dynamic.make14
-rw-r--r--libcult/build/cxx/gnu/configuration-dynamic.make8
-rw-r--r--libcutl/build/c/configuration-dynamic.make11
-rw-r--r--libcutl/build/c/generic/configuration-dynamic.make5
-rw-r--r--libcutl/build/cxx/configuration-dynamic.make (renamed from libbackend-elements/build/cxx/configuration-dynamic.make)5
-rw-r--r--libcutl/build/cxx/generic/configuration-dynamic.make5
-rw-r--r--libcutl/build/ld/configuration-lib-dynamic.make (renamed from libcult/build/ld/configuration-lib-dynamic.make)4
-rw-r--r--libfrontend-elements/build/cxx/configuration-dynamic.make14
-rw-r--r--libfrontend-elements/build/cxx/gnu/configuration-dynamic.make8
-rw-r--r--libfrontend-elements/build/import/libcult/configuration-dynamic.make4
-rw-r--r--libfrontend-elements/build/ld/configuration-lib-dynamic.make13
-rw-r--r--libxsd-frontend/build/configuration-dynamic.make1
-rw-r--r--libxsd-frontend/build/cxx/configuration-dynamic.make5
-rw-r--r--libxsd-frontend/build/cxx/generic/configuration-dynamic.make5
-rw-r--r--libxsd-frontend/build/cxx/gnu/configuration-dynamic.make8
-rw-r--r--libxsd-frontend/build/import/libboost/configuration-dynamic.make8
-rw-r--r--libxsd-frontend/build/import/libcult/configuration-dynamic.make4
-rw-r--r--libxsd-frontend/build/import/libcutl/configuration-dynamic.make8
-rw-r--r--libxsd-frontend/build/import/libfrontend-elements/configuration-dynamic.make4
-rw-r--r--libxsd-frontend/build/ld/configuration-lib-dynamic.make4
-rw-r--r--makefile21
-rw-r--r--xsde/build/c/configuration-dynamic.make5
-rw-r--r--xsde/build/c/generic/configuration-dynamic.make5
-rw-r--r--xsde/build/c/gnu/configuration-dynamic.make8
-rw-r--r--xsde/build/configuration-dynamic.make2
-rw-r--r--xsde/build/cxx/configuration-dynamic.make5
-rw-r--r--xsde/build/cxx/generic/configuration-dynamic.make16
-rw-r--r--xsde/build/cxx/gnu/configuration-dynamic.make8
-rw-r--r--xsde/build/import/cli/configuration-dynamic.make3
-rw-r--r--xsde/build/import/libbackend-elements/configuration-dynamic.make4
-rw-r--r--xsde/build/import/libboost/configuration-dynamic.make8
-rw-r--r--xsde/build/import/libcult/configuration-dynamic.make4
-rw-r--r--xsde/build/import/libcutl/configuration-dynamic.make8
-rw-r--r--xsde/build/ld/configuration-lib-dynamic.make3
40 files changed, 111 insertions, 225 deletions
diff --git a/README b/README
index 9aa5ced..abea321 100644
--- a/README
+++ b/README
@@ -1,68 +1,62 @@
-This archive contains pre-configured CodeSynthesis XSD/e source code
-with all its dependencies (except Xerces-C++ and Boost). It allows
-you to build the XSD/e compiler in non-interactive mode (that is,
-without answering any configuration questions).
+This archive contains pre-configured CodeSynthesis XSD/e source code
+with all its dependencies (except Xerces-C++). It allows you to build
+the XSD/e compiler in non-interactive mode (that is, without answering
+any configuration questions).
-The following GNU tools are required to build XSD/e. Any fairly recent
-GNU/Linux distribution should have these already installed:
+The following GNU tools are required to build XSD/e. Any fairly recent
+GNU/Linux distribution should have all of them already installed:
GNU bash >= 2.00 (bash --version) http://www.gnu.org/software/bash/
-GNU m4 >= 1.4 (m4 --version) http://www.gnu.org/software/m4/
GNU make >= 3.81 (make --version) http://www.gnu.org/software/make/
-GNU g++ >= 3.4.3 (g++ --version) http://gcc.gnu.org/
+GNU g++ >= 4.2.0 (g++ --version) http://gcc.gnu.org/
-The build system expects you to have the Xerces-C++ (2.6.0 or later)
-as well as Boost filesystem and regex (1.33.1 or later) libraries
-built and installed in a location where the C++ compiler looks by
-default (normally /usr/lib/ and /usr/local/lib/). Alternatively, you
-can provide include (-I) and library (-L) paths for this packages via
-the CPPFLAGS and LDFLAGS variables, respectively.
+The build system expects you to have the Xerces-C++ library version
+3.0.0 or later built and installed in a location where the C++ compiler
+will find them by default (normally /usr/lib/ and /usr/local/lib/).
+Alternatively, you can provide include (-I) and library (-L) paths
+for this library via the CPPFLAGS and LDFLAGS variables, respectively.
The build system supports the following variables:
+CC (defaults to gcc if not set)
CXX (defaults to g++ if not set)
AR (defaults to ar if not set)
RANLIB (defaults to ranlib if not set)
CPPFLAGS
+CFLAGS
CXXFLAGS
LDFLAGS
LIBS
-BOOST_LIB_SUFFIX
-BOOST_LINK_SYSTEM
+EXTERNAL_LIBCUTL
For example:
-$ make CXX=g++-4.2 CXXFLAGS=-O3 -j 4
+$ make CC=gcc-4.8 CXX=g++-4.8 CFLAGS=-O3 CXXFLAGS=-O3 -j 4
-The BOOST_LIB_SUFFIX variable allows you to specify the optional
-Boost library suffix. For example, if your Boost library names are
-in the libboost_regex-gcc41-mt-d.so format, then you will need to
-set BOOST_LIB_SUFFIX to -gcc41-mt-d.
-
-The BOOST_LINK_SYSTEM variable allows you to specify whether the
-Boost system library should be explicitly linked to which may be
-required by newer linkers. The valid values are 'y' (default) and
-'n'.
+The EXTERNAL_LIBCUTL variable allows you to use an external build
+of libcutl, for example, if you already have this library installed.
+The valid values are 'n' (default) and 'y'.
If you would like to see the full compiler/linker/etc., command lines,
you can add verbose=1 to the make command line:
$ make verbose=1
-After the build is complete, the XSD/e compiler can be found in the
-xsde/xsde/ directory. You can also create a distribution package with
-the XSD/e compiler binary, source code and build system for the runtime
-library and examples, as well as the documentation using the dist and
-dist-win targets, for example:
+After the build is complete, the XSD/e compiler can be found in the
+xsde/xsde/ sub-directory. You can also create a distribution package
+with the XSD/e compiler binary, source code for the runtime library
+and examples, as well as the documentation using the dist and dist-win
+targets, for example:
-$ make dist_prefix=./xsde-x.y.z dist
+$ make dist_prefix=/tmp/xsde-x.y.z dist
Or, for Windows:
-$ make dist_prefix=./xsde-x.y.z dist-win
+$ make dist_prefix=/tmp/xsde-x.y.z dist-win
-The build system also supports the clean target:
+The build system also supports the test and clean targets, for example:
+$ make test
$ make clean
Send bug reports or any other feedback to the xsde-users@codesynthesis.com
diff --git a/libbackend-elements/build/cxx/gnu/configuration-dynamic.make b/libbackend-elements/build/cxx/gnu/configuration-dynamic.make
deleted file mode 100644
index f3fe64d..0000000
--- a/libbackend-elements/build/cxx/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CXX),)
-cxx_gnu := $(CXX)
-else
-cxx_gnu := g++
-endif
-
-cxx_gnu_libraries :=
-cxx_gnu_optimization_options :=
diff --git a/libbackend-elements/build/import/libboost/configuration-dynamic.make b/libbackend-elements/build/import/libboost/configuration-dynamic.make
deleted file mode 100644
index ab55882..0000000
--- a/libbackend-elements/build/import/libboost/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-libboost_installed := y
-libboost_suffix := $(BOOST_LIB_SUFFIX)
-
-ifeq ($(BOOST_LINK_SYSTEM),n)
-libboost_system := n
-else
-libboost_system := y
-endif
diff --git a/libbackend-elements/build/import/libcult/configuration-dynamic.make b/libbackend-elements/build/import/libcult/configuration-dynamic.make
deleted file mode 100644
index 73c92bb..0000000
--- a/libbackend-elements/build/import/libcult/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libcult_installed := n
-src_root := $(abspath $(src_root)/../libcult)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/libbackend-elements/build/ld/configuration-lib-dynamic.make b/libbackend-elements/build/ld/configuration-lib-dynamic.make
deleted file mode 100644
index 74c8885..0000000
--- a/libbackend-elements/build/ld/configuration-lib-dynamic.make
+++ /dev/null
@@ -1,13 +0,0 @@
-ld_lib_type := archive
-
-ifneq ($(AR),)
-ld_lib_ar := $(AR)
-else
-ld_lib_ar := ar
-endif
-
-ifneq ($(RANLIB),)
-ld_lib_ranlib := $(RANLIB)
-else
-ld_lib_ranlib := ranlib
-endif
diff --git a/libcult/build/configuration-dynamic.make b/libcult/build/configuration-dynamic.make
deleted file mode 100644
index e027b0b..0000000
--- a/libcult/build/configuration-dynamic.make
+++ /dev/null
@@ -1,3 +0,0 @@
-cult_dr := n
-cult_threads := n
-cult_network := n
diff --git a/libcult/build/cxx/configuration-dynamic.make b/libcult/build/cxx/configuration-dynamic.make
deleted file mode 100644
index 568ab40..0000000
--- a/libcult/build/cxx/configuration-dynamic.make
+++ /dev/null
@@ -1,14 +0,0 @@
-cxx_id := gnu
-cxx_optimize := n
-cxx_debug := n
-cxx_rpath := n
-cxx_pp_extra_options := $(CPPFLAGS)
-cxx_extra_options := $(CXXFLAGS)
-cxx_ld_extra_options := $(LDFLAGS)
-cxx_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-cxx_extra_lib_paths := $(r)
diff --git a/libcult/build/cxx/gnu/configuration-dynamic.make b/libcult/build/cxx/gnu/configuration-dynamic.make
deleted file mode 100644
index f3fe64d..0000000
--- a/libcult/build/cxx/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CXX),)
-cxx_gnu := $(CXX)
-else
-cxx_gnu := g++
-endif
-
-cxx_gnu_libraries :=
-cxx_gnu_optimization_options :=
diff --git a/libcutl/build/c/configuration-dynamic.make b/libcutl/build/c/configuration-dynamic.make
new file mode 100644
index 0000000..17788dd
--- /dev/null
+++ b/libcutl/build/c/configuration-dynamic.make
@@ -0,0 +1,11 @@
+c_id := generic
+c_pp_extra_options := $(CPPFLAGS)
+c_extra_options := $(CFLAGS)
+c_ld_extra_options := $(LDFLAGS)
+c_extra_libs := $(LIBS)
+
+r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
+r := $(patsubst -L%,%,$(filter -L%,$(r)))
+r := $(shell echo $(r) | sed -e 's/ /:/g')
+
+c_extra_lib_paths := $(r)
diff --git a/libcutl/build/c/generic/configuration-dynamic.make b/libcutl/build/c/generic/configuration-dynamic.make
new file mode 100644
index 0000000..319a86d
--- /dev/null
+++ b/libcutl/build/c/generic/configuration-dynamic.make
@@ -0,0 +1,5 @@
+ifeq ($(filter $(origin CC),undefined default),)
+c_generic := $(CC)
+else
+c_generic := gcc
+endif
diff --git a/libbackend-elements/build/cxx/configuration-dynamic.make b/libcutl/build/cxx/configuration-dynamic.make
index 568ab40..83cf860 100644
--- a/libbackend-elements/build/cxx/configuration-dynamic.make
+++ b/libcutl/build/cxx/configuration-dynamic.make
@@ -1,7 +1,4 @@
-cxx_id := gnu
-cxx_optimize := n
-cxx_debug := n
-cxx_rpath := n
+cxx_id := generic
cxx_pp_extra_options := $(CPPFLAGS)
cxx_extra_options := $(CXXFLAGS)
cxx_ld_extra_options := $(LDFLAGS)
diff --git a/libcutl/build/cxx/generic/configuration-dynamic.make b/libcutl/build/cxx/generic/configuration-dynamic.make
new file mode 100644
index 0000000..c43865a
--- /dev/null
+++ b/libcutl/build/cxx/generic/configuration-dynamic.make
@@ -0,0 +1,5 @@
+ifeq ($(filter $(origin CXX),undefined default),)
+cxx_generic := $(CXX)
+else
+cxx_generic := g++
+endif
diff --git a/libcult/build/ld/configuration-lib-dynamic.make b/libcutl/build/ld/configuration-lib-dynamic.make
index 74c8885..63d2ed3 100644
--- a/libcult/build/ld/configuration-lib-dynamic.make
+++ b/libcutl/build/ld/configuration-lib-dynamic.make
@@ -1,12 +1,12 @@
ld_lib_type := archive
-ifneq ($(AR),)
+ifeq ($(filter $(origin AR),undefined default),)
ld_lib_ar := $(AR)
else
ld_lib_ar := ar
endif
-ifneq ($(RANLIB),)
+ifeq ($(filter $(origin RANLIB),undefined default),)
ld_lib_ranlib := $(RANLIB)
else
ld_lib_ranlib := ranlib
diff --git a/libfrontend-elements/build/cxx/configuration-dynamic.make b/libfrontend-elements/build/cxx/configuration-dynamic.make
deleted file mode 100644
index 568ab40..0000000
--- a/libfrontend-elements/build/cxx/configuration-dynamic.make
+++ /dev/null
@@ -1,14 +0,0 @@
-cxx_id := gnu
-cxx_optimize := n
-cxx_debug := n
-cxx_rpath := n
-cxx_pp_extra_options := $(CPPFLAGS)
-cxx_extra_options := $(CXXFLAGS)
-cxx_ld_extra_options := $(LDFLAGS)
-cxx_extra_libs := $(LIBS)
-
-r := $(shell echo $(LDFLAGS) | sed -e 's/-L *\([^ ]*\)/-L\1/g')
-r := $(patsubst -L%,%,$(filter -L%,$(r)))
-r := $(shell echo $(r) | sed -e 's/ /:/g')
-
-cxx_extra_lib_paths := $(r)
diff --git a/libfrontend-elements/build/cxx/gnu/configuration-dynamic.make b/libfrontend-elements/build/cxx/gnu/configuration-dynamic.make
deleted file mode 100644
index f3fe64d..0000000
--- a/libfrontend-elements/build/cxx/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CXX),)
-cxx_gnu := $(CXX)
-else
-cxx_gnu := g++
-endif
-
-cxx_gnu_libraries :=
-cxx_gnu_optimization_options :=
diff --git a/libfrontend-elements/build/import/libcult/configuration-dynamic.make b/libfrontend-elements/build/import/libcult/configuration-dynamic.make
deleted file mode 100644
index 73c92bb..0000000
--- a/libfrontend-elements/build/import/libcult/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libcult_installed := n
-src_root := $(abspath $(src_root)/../libcult)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/libfrontend-elements/build/ld/configuration-lib-dynamic.make b/libfrontend-elements/build/ld/configuration-lib-dynamic.make
deleted file mode 100644
index 74c8885..0000000
--- a/libfrontend-elements/build/ld/configuration-lib-dynamic.make
+++ /dev/null
@@ -1,13 +0,0 @@
-ld_lib_type := archive
-
-ifneq ($(AR),)
-ld_lib_ar := $(AR)
-else
-ld_lib_ar := ar
-endif
-
-ifneq ($(RANLIB),)
-ld_lib_ranlib := $(RANLIB)
-else
-ld_lib_ranlib := ranlib
-endif
diff --git a/libxsd-frontend/build/configuration-dynamic.make b/libxsd-frontend/build/configuration-dynamic.make
new file mode 100644
index 0000000..d681b0b
--- /dev/null
+++ b/libxsd-frontend/build/configuration-dynamic.make
@@ -0,0 +1 @@
+libxsd_frontend_clean_gen := n
diff --git a/libxsd-frontend/build/cxx/configuration-dynamic.make b/libxsd-frontend/build/cxx/configuration-dynamic.make
index 568ab40..83cf860 100644
--- a/libxsd-frontend/build/cxx/configuration-dynamic.make
+++ b/libxsd-frontend/build/cxx/configuration-dynamic.make
@@ -1,7 +1,4 @@
-cxx_id := gnu
-cxx_optimize := n
-cxx_debug := n
-cxx_rpath := n
+cxx_id := generic
cxx_pp_extra_options := $(CPPFLAGS)
cxx_extra_options := $(CXXFLAGS)
cxx_ld_extra_options := $(LDFLAGS)
diff --git a/libxsd-frontend/build/cxx/generic/configuration-dynamic.make b/libxsd-frontend/build/cxx/generic/configuration-dynamic.make
new file mode 100644
index 0000000..c43865a
--- /dev/null
+++ b/libxsd-frontend/build/cxx/generic/configuration-dynamic.make
@@ -0,0 +1,5 @@
+ifeq ($(filter $(origin CXX),undefined default),)
+cxx_generic := $(CXX)
+else
+cxx_generic := g++
+endif
diff --git a/libxsd-frontend/build/cxx/gnu/configuration-dynamic.make b/libxsd-frontend/build/cxx/gnu/configuration-dynamic.make
deleted file mode 100644
index f3fe64d..0000000
--- a/libxsd-frontend/build/cxx/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CXX),)
-cxx_gnu := $(CXX)
-else
-cxx_gnu := g++
-endif
-
-cxx_gnu_libraries :=
-cxx_gnu_optimization_options :=
diff --git a/libxsd-frontend/build/import/libboost/configuration-dynamic.make b/libxsd-frontend/build/import/libboost/configuration-dynamic.make
deleted file mode 100644
index ab55882..0000000
--- a/libxsd-frontend/build/import/libboost/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-libboost_installed := y
-libboost_suffix := $(BOOST_LIB_SUFFIX)
-
-ifeq ($(BOOST_LINK_SYSTEM),n)
-libboost_system := n
-else
-libboost_system := y
-endif
diff --git a/libxsd-frontend/build/import/libcult/configuration-dynamic.make b/libxsd-frontend/build/import/libcult/configuration-dynamic.make
deleted file mode 100644
index 73c92bb..0000000
--- a/libxsd-frontend/build/import/libcult/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libcult_installed := n
-src_root := $(abspath $(src_root)/../libcult)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/libxsd-frontend/build/import/libcutl/configuration-dynamic.make b/libxsd-frontend/build/import/libcutl/configuration-dynamic.make
new file mode 100644
index 0000000..4e4bb83
--- /dev/null
+++ b/libxsd-frontend/build/import/libcutl/configuration-dynamic.make
@@ -0,0 +1,8 @@
+ifeq ($(EXTERNAL_LIBCUTL),y)
+libcutl_installed := y
+else
+libcutl_installed := n
+src_root := $(abspath $(src_root)/../libcutl)
+scf_root := $(src_root)/build
+out_root := $(src_root)
+endif
diff --git a/libxsd-frontend/build/import/libfrontend-elements/configuration-dynamic.make b/libxsd-frontend/build/import/libfrontend-elements/configuration-dynamic.make
deleted file mode 100644
index 70d0da6..0000000
--- a/libxsd-frontend/build/import/libfrontend-elements/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libfrontend_elements_installed := n
-src_root := $(abspath $(src_root)/../libfrontend-elements)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/libxsd-frontend/build/ld/configuration-lib-dynamic.make b/libxsd-frontend/build/ld/configuration-lib-dynamic.make
index 74c8885..63d2ed3 100644
--- a/libxsd-frontend/build/ld/configuration-lib-dynamic.make
+++ b/libxsd-frontend/build/ld/configuration-lib-dynamic.make
@@ -1,12 +1,12 @@
ld_lib_type := archive
-ifneq ($(AR),)
+ifeq ($(filter $(origin AR),undefined default),)
ld_lib_ar := $(AR)
else
ld_lib_ar := ar
endif
-ifneq ($(RANLIB),)
+ifeq ($(filter $(origin RANLIB),undefined default),)
ld_lib_ranlib := $(RANLIB)
else
ld_lib_ranlib := ranlib
diff --git a/makefile b/makefile
index aab9fb2..c8330a6 100644
--- a/makefile
+++ b/makefile
@@ -28,26 +28,17 @@ dist-win: $(out_base)/xsde/.dist-win
# Clean.
#
-clean: $(out_base)/libcult/.clean \
- $(out_base)/libfrontend-elements/.clean \
- $(out_base)/libbackend-elements/.clean \
- $(out_base)/libxsd-frontend/.clean \
+clean: $(out_base)/libxsd-frontend/.clean \
$(out_base)/xsde/.clean
-src_root := $(src_base)/libcult
+ifneq ($(EXTERNAL_LIBCUTL),y)
+src_root := $(src_base)/libcutl
scf_root := $(src_root)/build
out_root := $(src_root)
-$(call import,$(src_base)/libcult/makefile)
+$(call import,$(src_base)/libcutl/makefile)
-src_root := $(src_base)/libfrontend-elements
-scf_root := $(src_root)/build
-out_root := $(src_root)
-$(call import,$(src_base)/libfrontend-elements/makefile)
-
-src_root := $(src_base)/libbackend-elements
-scf_root := $(src_root)/build
-out_root := $(src_root)
-$(call import,$(src_base)/libbackend-elements/makefile)
+clean: $(out_base)/libcutl/.clean
+endif
src_root := $(src_base)/libxsd-frontend
scf_root := $(src_root)/build
diff --git a/xsde/build/c/configuration-dynamic.make b/xsde/build/c/configuration-dynamic.make
index 2003d76..17788dd 100644
--- a/xsde/build/c/configuration-dynamic.make
+++ b/xsde/build/c/configuration-dynamic.make
@@ -1,7 +1,4 @@
-c_id := gnu
-c_optimize := n
-c_debug := n
-c_rpath := n
+c_id := generic
c_pp_extra_options := $(CPPFLAGS)
c_extra_options := $(CFLAGS)
c_ld_extra_options := $(LDFLAGS)
diff --git a/xsde/build/c/generic/configuration-dynamic.make b/xsde/build/c/generic/configuration-dynamic.make
new file mode 100644
index 0000000..319a86d
--- /dev/null
+++ b/xsde/build/c/generic/configuration-dynamic.make
@@ -0,0 +1,5 @@
+ifeq ($(filter $(origin CC),undefined default),)
+c_generic := $(CC)
+else
+c_generic := gcc
+endif
diff --git a/xsde/build/c/gnu/configuration-dynamic.make b/xsde/build/c/gnu/configuration-dynamic.make
deleted file mode 100644
index 4062154..0000000
--- a/xsde/build/c/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CC),)
-c_gnu := $(CC)
-else
-c_gnu := gcc
-endif
-
-c_gnu_libraries :=
-c_gnu_optimization_options :=
diff --git a/xsde/build/configuration-dynamic.make b/xsde/build/configuration-dynamic.make
index 32fa3ca..3b0d328 100644
--- a/xsde/build/configuration-dynamic.make
+++ b/xsde/build/configuration-dynamic.make
@@ -21,3 +21,5 @@ xsde_parser_imap_buckets := 97
xsde_serializer_smap_buckets := 53
xsde_serializer_smap_bucket_buckets := 53
xsde_serializer_imap_buckets := 97
+
+xsde_clean_gen := no \ No newline at end of file
diff --git a/xsde/build/cxx/configuration-dynamic.make b/xsde/build/cxx/configuration-dynamic.make
index 568ab40..83cf860 100644
--- a/xsde/build/cxx/configuration-dynamic.make
+++ b/xsde/build/cxx/configuration-dynamic.make
@@ -1,7 +1,4 @@
-cxx_id := gnu
-cxx_optimize := n
-cxx_debug := n
-cxx_rpath := n
+cxx_id := generic
cxx_pp_extra_options := $(CPPFLAGS)
cxx_extra_options := $(CXXFLAGS)
cxx_ld_extra_options := $(LDFLAGS)
diff --git a/xsde/build/cxx/generic/configuration-dynamic.make b/xsde/build/cxx/generic/configuration-dynamic.make
new file mode 100644
index 0000000..f35ea66
--- /dev/null
+++ b/xsde/build/cxx/generic/configuration-dynamic.make
@@ -0,0 +1,16 @@
+ifeq ($(filter $(origin CXX),undefined default),)
+cxx_generic := $(CXX)
+else
+cxx_generic := g++
+endif
+
+r := $(shell $(cxx_generic) $(cxx_extra_options) $(cxx_ld_extra_options) \
+-print-search-dirs 2>&1 | sed -e 's/libraries: =//p' -e d)
+
+ifneq ($r,)
+ ifeq ($(cxx_extra_lib_paths),)
+ cxx_extra_lib_paths := $r
+ else
+ cxx_extra_lib_paths := $(cxx_extra_lib_paths):$r
+ endif
+endif
diff --git a/xsde/build/cxx/gnu/configuration-dynamic.make b/xsde/build/cxx/gnu/configuration-dynamic.make
deleted file mode 100644
index f3fe64d..0000000
--- a/xsde/build/cxx/gnu/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-ifneq ($(CXX),)
-cxx_gnu := $(CXX)
-else
-cxx_gnu := g++
-endif
-
-cxx_gnu_libraries :=
-cxx_gnu_optimization_options :=
diff --git a/xsde/build/import/cli/configuration-dynamic.make b/xsde/build/import/cli/configuration-dynamic.make
new file mode 100644
index 0000000..908d979
--- /dev/null
+++ b/xsde/build/import/cli/configuration-dynamic.make
@@ -0,0 +1,3 @@
+# We ship up-to-date generated files so cli normally won't be invoked.
+#
+cli_installed := y
diff --git a/xsde/build/import/libbackend-elements/configuration-dynamic.make b/xsde/build/import/libbackend-elements/configuration-dynamic.make
deleted file mode 100644
index 8a6f091..0000000
--- a/xsde/build/import/libbackend-elements/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libbackend_elements_installed := n
-src_root := $(abspath $(src_root)/../libbackend-elements)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/xsde/build/import/libboost/configuration-dynamic.make b/xsde/build/import/libboost/configuration-dynamic.make
deleted file mode 100644
index ab55882..0000000
--- a/xsde/build/import/libboost/configuration-dynamic.make
+++ /dev/null
@@ -1,8 +0,0 @@
-libboost_installed := y
-libboost_suffix := $(BOOST_LIB_SUFFIX)
-
-ifeq ($(BOOST_LINK_SYSTEM),n)
-libboost_system := n
-else
-libboost_system := y
-endif
diff --git a/xsde/build/import/libcult/configuration-dynamic.make b/xsde/build/import/libcult/configuration-dynamic.make
deleted file mode 100644
index 73c92bb..0000000
--- a/xsde/build/import/libcult/configuration-dynamic.make
+++ /dev/null
@@ -1,4 +0,0 @@
-libcult_installed := n
-src_root := $(abspath $(src_root)/../libcult)
-scf_root := $(src_root)/build
-out_root := $(src_root)
diff --git a/xsde/build/import/libcutl/configuration-dynamic.make b/xsde/build/import/libcutl/configuration-dynamic.make
new file mode 100644
index 0000000..4e4bb83
--- /dev/null
+++ b/xsde/build/import/libcutl/configuration-dynamic.make
@@ -0,0 +1,8 @@
+ifeq ($(EXTERNAL_LIBCUTL),y)
+libcutl_installed := y
+else
+libcutl_installed := n
+src_root := $(abspath $(src_root)/../libcutl)
+scf_root := $(src_root)/build
+out_root := $(src_root)
+endif
diff --git a/xsde/build/ld/configuration-lib-dynamic.make b/xsde/build/ld/configuration-lib-dynamic.make
deleted file mode 100644
index c2c560c..0000000
--- a/xsde/build/ld/configuration-lib-dynamic.make
+++ /dev/null
@@ -1,3 +0,0 @@
-ld_lib_type := archive
-ld_lib_ar := ar
-ld_lib_ranlib := ranlib