aboutsummaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-09-14 15:19:16 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-09-14 15:19:16 +0200
commit349178ecf6c69be63bd81ce81d310404574cb373 (patch)
treefccbd90c0cae4f43389ec830c9d7924c30c62113 /build
parent22dd2e8a904d26c18f6e4c634e14b21a8aaddc7d (diff)
Establish base build system
Diffstat (limited to 'build')
-rw-r--r--build/bootstrap.make122
-rw-r--r--build/configuration-rules.make20
-rw-r--r--build/configuration.make22
-rwxr-xr-xbuild/configure32
-rw-r--r--build/import/libodb-mysql/LICENSE12
-rw-r--r--build/import/libodb-mysql/configuration-rules.make15
-rwxr-xr-xbuild/import/libodb-mysql/configure55
-rw-r--r--build/import/libodb-mysql/stub.make30
-rw-r--r--build/import/libodb/LICENSE12
-rw-r--r--build/import/libodb/configuration-rules.make15
-rwxr-xr-xbuild/import/libodb/configure55
-rw-r--r--build/import/libodb/stub.make30
-rw-r--r--build/import/odb/LICENSE12
-rw-r--r--build/import/odb/configuration-rules.make15
-rwxr-xr-xbuild/import/odb/configure55
-rw-r--r--build/import/odb/hxx-cxx.make62
-rw-r--r--build/import/odb/stub.make30
-rwxr-xr-xbuild/mysql/configure77
-rwxr-xr-xbuild/mysql/mysql56
19 files changed, 727 insertions, 0 deletions
diff --git a/build/bootstrap.make b/build/bootstrap.make
new file mode 100644
index 0000000..b4f7ed8
--- /dev/null
+++ b/build/bootstrap.make
@@ -0,0 +1,122 @@
+# file : build/bootstrap.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+project_name := odb-examples
+
+# First try to include the bundled bootstrap.make if it exist. If that
+# fails, let make search for the external bootstrap.make.
+#
+build := build-0.3
+
+-include $(dir $(lastword $(MAKEFILE_LIST)))../../$(build)/bootstrap.make
+
+ifeq ($(patsubst %build/bootstrap.make,,$(lastword $(MAKEFILE_LIST))),)
+include $(build)/bootstrap.make
+endif
+
+# Configuration
+#
+$(call include,$(scf_root)/configuration.make)
+
+def_goal := $(.DEFAULT_GOAL)
+
+# Include C++ configuration. We need to know if we are using the generic
+# C++ compiler in which case we need to compensate for missing dependency
+# auto-generation (see below).
+#
+$(call include,$(bld_root)/cxx/configuration.make)
+
+# Aliases
+#
+.PHONY: $(out_base)/ \
+ $(out_base)/.test \
+ $(out_base)/.dist \
+ $(out_base)/.clean
+
+ifdef %interactive%
+
+.PHONY: test dist clean
+
+test: $(out_base)/.test
+dist: $(out_base)/.dist
+clean: $(out_base)/.clean
+
+endif
+
+# Dist setup.
+#
+ifneq ($(filter $(MAKECMDGOALS),dist),)
+
+# Make sure the distribution prefix is set if the goal is dist.
+#
+ifeq ($(dist_prefix),)
+$(error dist_prefix is not set)
+endif
+
+databases := mysql
+$(dist): databases := $(databases)
+
+# $1 project template without the -vcN.vc[x]proj suffix.
+# $2 project name without the -vcN.vc[x]proj suffix.
+#
+$(dist): meta-vc9projs = \
+$(foreach d,$(databases),$(call \
+meta-vc9proj,$1-vc9.vcproj,$(if $2,$2,$(notdir \
+$1))-$d-vc9.vcproj,database,$d)$(literal_newline)$(literal_tab))@:
+
+$(dist): meta-vc10projs = \
+$(foreach d,$(databases),$(call \
+meta-vc10proj,$1-vc10.vcxproj,$(if $2,$2,$(notdir \
+$1))-$d-vc10.vcxproj,database,$d)$(literal_newline)$(literal_tab))@:
+
+# $1 project name without the -vcN.vc[x]proj suffix.
+#
+vc9projs = $(addprefix $1-,$(addsuffix -vc9.vcproj,$(databases)))
+vc10projs = $(addprefix $1-,$(addsuffix -vc10.vcxproj,$(databases))) \
+$(addprefix $1-,$(addsuffix -vc10.vcxproj.filters,$(databases)))
+
+# $1 solution name without the -vcN.sln suffix.
+#
+$(dist): meta-vc9slns = \
+$(foreach d,$(databases),$(call \
+meta-vc9sln,$1-vc9.sln,$1-$d-vc9.sln,-$d-vc9.vcproj,database,$d)$(literal_newline)\
+$(literal_tab))@:
+
+$(dist): meta-vc10slns = \
+$(foreach d,$(databases),$(call \
+meta-vc10sln,$1-vc10.sln,$1-$d-vc10.sln,-$d-vc10.vcxproj,database,$d)$(literal_newline)\
+$(literal_tab))@:
+
+vc9slns = $(addprefix $1-,$(addsuffix -vc9.sln,$(databases)))
+vc10slns = $(addprefix $1-,$(addsuffix -vc10.sln,$(databases)))
+
+endif
+
+# If we don't have dependency auto-generation then we need to manually
+# make sure that ODB files are generated before C++ file are compiler.
+# To do this we make the object files ($2) depend in order-only on
+# generated files ($3).
+#
+ifeq ($(cxx_id),generic)
+
+define include-dep
+$(if $2,$(eval $2: | $3))
+endef
+
+else
+
+define include-dep
+$(call -include,$1)
+endef
+
+endif
+
+# Don't include dependency info for certain targets.
+#
+ifneq ($(filter $(MAKECMDGOALS),clean disfigure dist),)
+include-dep =
+endif
+
+.DEFAULT_GOAL := $(def_goal)
diff --git a/build/configuration-rules.make b/build/configuration-rules.make
new file mode 100644
index 0000000..19e7ef0
--- /dev/null
+++ b/build/configuration-rules.make
@@ -0,0 +1,20 @@
+# file : build/configuration-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(dcf_root)/configuration-dynamic.make: | $(dcf_root)/.
+ $(call message,,$(scf_root)/configure $@)
+
+ifndef %foreign%
+
+disfigure::
+ $(call message,rm $$1,rm -f $$1,$(dcf_root)/configuration-dynamic.make)
+ $(call message,rm $$1,rm -f $$1,$(dcf_root)/db.options)
+ $(call message,rm $$1,rm -f $$1,$(dcf_root)/db-driver)
+
+endif
+
+ifeq ($(.DEFAULT_GOAL),$(dcf_root)/configuration-dynamic.make)
+.DEFAULT_GOAL :=
+endif
diff --git a/build/configuration.make b/build/configuration.make
new file mode 100644
index 0000000..fe27430
--- /dev/null
+++ b/build/configuration.make
@@ -0,0 +1,22 @@
+# file : build/configuration.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(scf_root)/configuration-rules.make,$(dcf_root))
+
+# Dynamic configuration.
+#
+db_id :=
+
+$(call -include,$(dcf_root)/configuration-dynamic.make)
+
+ifdef db_id
+
+$(out_root)/%: db_id := $(db_id)
+
+else
+
+.NOTPARALLEL:
+
+endif
diff --git a/build/configure b/build/configure
new file mode 100755
index 0000000..0bb1e07
--- /dev/null
+++ b/build/configure
@@ -0,0 +1,32 @@
+#! /usr/bin/env bash
+
+# file : build/configure
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# $1 out file
+#
+# bld_root - build root
+# project_name - project name
+#
+
+source $bld_root/dialog.bash
+
+$echo
+$echo
+$echo "configuring '$project_name'"
+$echo
+$echo
+
+$echo
+$echo "Please select the database you would like to use:"
+$echo
+$echo "(1) MySQL"
+$echo
+
+db_id=`read_option "mysql" "mysql"`
+
+echo "db_id := $db_id" >$1
+
+source $scf_root/$db_id/configure
diff --git a/build/import/libodb-mysql/LICENSE b/build/import/libodb-mysql/LICENSE
new file mode 100644
index 0000000..ed9c55c
--- /dev/null
+++ b/build/import/libodb-mysql/LICENSE
@@ -0,0 +1,12 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/build/import/libodb-mysql/configuration-rules.make b/build/import/libodb-mysql/configuration-rules.make
new file mode 100644
index 0000000..b57907c
--- /dev/null
+++ b/build/import/libodb-mysql/configuration-rules.make
@@ -0,0 +1,15 @@
+# file : build/import/libodb-mysql/configuration-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(dcf_root)/import/libodb-mysql/configuration-dynamic.make: | $(dcf_root)/import/libodb-mysql/.
+ $(call message,,$(scf_root)/import/libodb-mysql/configure $@)
+
+ifndef %foreign%
+
+$(dcf_root)/.disfigure::
+ $(call message,rm $(dcf_root)/import/libodb-mysql/configuration-dynamic.make,\
+rm -f $(dcf_root)/import/libodb-mysql/configuration-dynamic.make)
+
+endif
diff --git a/build/import/libodb-mysql/configure b/build/import/libodb-mysql/configure
new file mode 100755
index 0000000..b16cabe
--- /dev/null
+++ b/build/import/libodb-mysql/configure
@@ -0,0 +1,55 @@
+#! /usr/bin/env bash
+
+# file : build/import/libodb-mysql/configure
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+
+# $1 - out file
+#
+# bld_root - build root
+# project_name - project name
+#
+
+source $bld_root/dialog.bash
+
+
+$echo
+$echo "Configuring external dependency on 'libodb-mysql' for '$project_name'."
+$echo
+
+$echo
+$echo "Would you like to configure dependency on the installed version"
+$echo "of 'libodb-mysql' as opposed to the development build?"
+$echo
+
+installed=`read_y_n y`
+
+path=
+
+if [ "$installed" = "n" ]; then
+
+$echo
+$echo "Please enter the src_root for 'libodb-mysql'."
+$echo
+
+src_root=`read_path --directory --exist`
+
+$echo
+$echo "Please enter the out_root for 'libodb-mysql'."
+$echo
+
+out_root=`read_path --directory $src_root`
+
+fi
+
+echo libodb_mysql_installed := $installed >$1
+
+if [ "$installed" = "n" ]; then
+
+echo src_root := $src_root >>$1
+echo scf_root := \$\(src_root\)/build >>$1
+echo out_root := $out_root >>$1
+
+fi
diff --git a/build/import/libodb-mysql/stub.make b/build/import/libodb-mysql/stub.make
new file mode 100644
index 0000000..259f1a1
--- /dev/null
+++ b/build/import/libodb-mysql/stub.make
@@ -0,0 +1,30 @@
+# file : build/import/libodb-mysql/stub.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(scf_root)/import/libodb-mysql/configuration-rules.make,$(dcf_root))
+
+libodb_mysql_installed :=
+
+$(call -include,$(dcf_root)/import/libodb-mysql/configuration-dynamic.make)
+
+ifdef libodb_mysql_installed
+
+ifeq ($(libodb_mysql_installed),y)
+
+$(call export,l: -lodb-mysql -lodb -lmysqlclient,cpp-options: )
+
+else
+
+# Include export stub.
+#
+$(call include,$(scf_root)/export/libodb-mysql/stub.make)
+
+endif
+
+else
+
+.NOTPARALLEL:
+
+endif
diff --git a/build/import/libodb/LICENSE b/build/import/libodb/LICENSE
new file mode 100644
index 0000000..ed9c55c
--- /dev/null
+++ b/build/import/libodb/LICENSE
@@ -0,0 +1,12 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/build/import/libodb/configuration-rules.make b/build/import/libodb/configuration-rules.make
new file mode 100644
index 0000000..2c30e7f
--- /dev/null
+++ b/build/import/libodb/configuration-rules.make
@@ -0,0 +1,15 @@
+# file : build/import/libodb/configuration-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(dcf_root)/import/libodb/configuration-dynamic.make: | $(dcf_root)/import/libodb/.
+ $(call message,,$(scf_root)/import/libodb/configure $@)
+
+ifndef %foreign%
+
+$(dcf_root)/.disfigure::
+ $(call message,rm $(dcf_root)/import/libodb/configuration-dynamic.make,\
+rm -f $(dcf_root)/import/libodb/configuration-dynamic.make)
+
+endif
diff --git a/build/import/libodb/configure b/build/import/libodb/configure
new file mode 100755
index 0000000..792bb80
--- /dev/null
+++ b/build/import/libodb/configure
@@ -0,0 +1,55 @@
+#! /usr/bin/env bash
+
+# file : build/import/libodb/configure
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+
+# $1 - out file
+#
+# bld_root - build root
+# project_name - project name
+#
+
+source $bld_root/dialog.bash
+
+
+$echo
+$echo "Configuring external dependency on 'libodb' for '$project_name'."
+$echo
+
+$echo
+$echo "Would you like to configure dependency on the installed "
+$echo "version of 'libodb' as opposed to the development build?"
+$echo
+
+installed=`read_y_n y`
+
+path=
+
+if [ "$installed" = "n" ]; then
+
+$echo
+$echo "Please enter the src_root for 'libodb'."
+$echo
+
+src_root=`read_path --directory --exist`
+
+$echo
+$echo "Please enter the out_root for 'libodb'."
+$echo
+
+out_root=`read_path --directory $src_root`
+
+fi
+
+echo libodb_installed := $installed >$1
+
+if [ "$installed" = "n" ]; then
+
+echo src_root := $src_root >>$1
+echo scf_root := \$\(src_root\)/build >>$1
+echo out_root := $out_root >>$1
+
+fi
diff --git a/build/import/libodb/stub.make b/build/import/libodb/stub.make
new file mode 100644
index 0000000..9196552
--- /dev/null
+++ b/build/import/libodb/stub.make
@@ -0,0 +1,30 @@
+# file : build/import/libodb/stub.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(scf_root)/import/libodb/configuration-rules.make,$(dcf_root))
+
+libodb_installed :=
+
+$(call -include,$(dcf_root)/import/libodb/configuration-dynamic.make)
+
+ifdef libodb_installed
+
+ifeq ($(libodb_installed),y)
+
+$(call export,l: -lodb,cpp-options: )
+
+else
+
+# Include export stub.
+#
+$(call include,$(scf_root)/export/libodb/stub.make)
+
+endif
+
+else
+
+.NOTPARALLEL:
+
+endif
diff --git a/build/import/odb/LICENSE b/build/import/odb/LICENSE
new file mode 100644
index 0000000..ed9c55c
--- /dev/null
+++ b/build/import/odb/LICENSE
@@ -0,0 +1,12 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
diff --git a/build/import/odb/configuration-rules.make b/build/import/odb/configuration-rules.make
new file mode 100644
index 0000000..817f1b1
--- /dev/null
+++ b/build/import/odb/configuration-rules.make
@@ -0,0 +1,15 @@
+# file : build/import/odb/configuration-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(dcf_root)/import/odb/configuration-dynamic.make: | $(dcf_root)/import/odb/.
+ $(call message,,$(scf_root)/import/odb/configure $@)
+
+ifndef %foreign%
+
+$(dcf_root)/.disfigure::
+ $(call message,rm $(dcf_root)/import/odb/configuration-dynamic.make,\
+rm -f $(dcf_root)/import/odb/configuration-dynamic.make)
+
+endif
diff --git a/build/import/odb/configure b/build/import/odb/configure
new file mode 100755
index 0000000..1ba2f09
--- /dev/null
+++ b/build/import/odb/configure
@@ -0,0 +1,55 @@
+#! /usr/bin/env bash
+
+# file : build/import/odb/configure
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+
+# $1 - out file
+#
+# bld_root - build root
+# project_name - project name
+#
+
+source $bld_root/dialog.bash
+
+
+$echo
+$echo "Configuring external dependency on 'odb' for '$project_name'."
+$echo
+
+$echo
+$echo "Would you like to configure dependency on the installed "
+$echo "version of 'odb' as opposed to the development build?"
+$echo
+
+installed=`read_y_n y`
+
+path=
+
+if [ "$installed" = "n" ]; then
+
+$echo
+$echo "Please enter the src_root for 'odb'."
+$echo
+
+src_root=`read_path --directory --exist`
+
+$echo
+$echo "Please enter the out_root for 'odb'."
+$eche
+
+out_root=`read_path --directory $src_root`
+
+fi
+
+echo odb_installed := $installed >$1
+
+if [ "$installed" = "n" ]; then
+
+echo src_root := $src_root >>$1
+echo scf_root := \$\(src_root\)/build >>$1
+echo out_root := $out_root >>$1
+
+fi
diff --git a/build/import/odb/hxx-cxx.make b/build/import/odb/hxx-cxx.make
new file mode 100644
index 0000000..c9f3325
--- /dev/null
+++ b/build/import/odb/hxx-cxx.make
@@ -0,0 +1,62 @@
+# file : build/import/odb/hxx-cxx.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v3; see accompanying LICENSE file
+
+# Here we are operating in the importing project's space, not in odb's.
+#
+
+# Get the C++ configuration (file extensions, and extra CPP options).
+#
+$(call include,$(bld_root)/cxx/configuration.make)
+
+odb_pattern := \
+$(out_base)/%-odb.$(cxx_s_suffix) \
+$(out_base)/%-odb.$(cxx_h_suffix) \
+$(out_base)/%-odb.$(cxx_i_suffix) \
+$(out_base)/%.sql
+
+$(odb_pattern): odb_options := \
+--hxx-suffix .$(cxx_h_suffix) \
+--ixx-suffix .$(cxx_i_suffix) \
+--cxx-suffix .$(cxx_s_suffix)
+
+$(odb_pattern): odb-expand-cpp-options-impl = \
+$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1))
+
+$(odb_pattern): odb-expand-cpp-options = \
+$(call odb-expand-cpp-options-impl,$(filter %.cpp-options,$1))
+
+.PRECIOUS: $(odb_pattern)
+
+ifeq ($(out_base),$(src_base))
+
+$(odb_pattern): $(src_base)/%.$(cxx_h_suffix)
+ $(call message,odb $<,$(odb) $(cpp_options) \
+$(call expand-cpp-options,$^) $(cxx_pp_extra_options) $(odb_options) \
+--output-dir $(dir $@) $<)
+
+else
+
+$(odb_pattern): $(src_base)/%.$(cxx_h_suffix) | $$(dir $$@).
+ $(call message,odb $<,$(odb) $(cpp_options) \
+$(call expand-cpp-options,$^) $(cxx_pp_extra_options) $(odb_options) \
+--output-dir $(dir $@) $<)
+
+$(odb_pattern): $(out_base)/%.$(cxx_h_suffix) | $$(dir $$@).
+ $(call message,odb $<,$(odb) $(cpp_options) \
+$(call expand-cpp-options,$^) $(cxx_pp_extra_options) $(odb_options) \
+--output-dir $(dir $@) $<)
+endif
+
+.PHONY: $(out_base)/%-odb.cxx.hxx.clean
+
+$(out_base)/%-odb.cxx.hxx.clean: cxx_s_suffix := $(cxx_s_suffix)
+$(out_base)/%-odb.cxx.hxx.clean: cxx_h_suffix := $(cxx_h_suffix)
+$(out_base)/%-odb.cxx.hxx.clean: cxx_i_suffix := $(cxx_i_suffix)
+
+$(out_base)/%-odb.cxx.hxx.clean:
+ $(call message,rm $$1,rm -f $$1,$(@:.cxx.hxx.clean=.$(cxx_s_suffix)))
+ $(call message,rm $$1,rm -f $$1,$(@:.cxx.hxx.clean=.$(cxx_h_suffix)))
+ $(call message,rm $$1,rm -f $$1,$(@:.cxx.hxx.clean=.$(cxx_i_suffix)))
+ $(call message,rm $$1,rm -f $$1,$(@:-odb.cxx.hxx.clean=.sql))
diff --git a/build/import/odb/stub.make b/build/import/odb/stub.make
new file mode 100644
index 0000000..48585f0
--- /dev/null
+++ b/build/import/odb/stub.make
@@ -0,0 +1,30 @@
+# file : build/import/odb/stub.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(scf_root)/import/odb/configuration-rules.make,$(dcf_root))
+
+odb_installed :=
+
+$(call -include,$(dcf_root)/import/odb/configuration-dynamic.make)
+
+ifdef odb_installed
+
+ifeq ($(odb_installed),y)
+
+$(call export,odb: odb,odb-rules: $(scf_root)/import/odb/hxx-cxx.make)
+
+else
+
+# Include export stub.
+#
+$(call include,$(scf_root)/export/odb/stub.make)
+
+endif
+
+else
+
+.NOTPARALLEL:
+
+endif
diff --git a/build/mysql/configure b/build/mysql/configure
new file mode 100755
index 0000000..a454fc0
--- /dev/null
+++ b/build/mysql/configure
@@ -0,0 +1,77 @@
+#! /usr/bin/env bash
+
+# file : build/mysql/configure
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+#
+# dcf_root - dynamic configuration root
+#
+
+$echo
+$echo "Please enter the MySQL client program path."
+$echo
+
+driver=`read_path --command mysql`
+
+$echo
+$echo "Please enter the MySQL database user."
+$echo
+
+user=`read_value "odb_test"`
+
+$echo
+$echo "Please enter the MySQL database password. Enter NULL for"
+$echo "unspecified password as opposed to the empty password."
+$echo
+
+passwd=`read_value "NULL"`
+
+$echo
+$echo "Please enter the MySQL database name. Note that it WILL BE"
+$echo "MODIFIED by the tests."
+$echo
+
+db=`read_value "odb_test"`
+
+$echo
+$echo "Please enter the MySQL database host."
+$echo
+
+host=`read_value ""`
+
+$echo
+$echo "Please enter the MySQL database port."
+$echo
+
+port=`read_value "0"`
+
+$echo
+$echo "Please enter the MySQL database socket name. Enter NULL for"
+$echo "unspecified name as opposed to the empty name."
+$echo
+
+socket=`read_value "NULL"`
+
+opt=$dcf_root/db.options
+drv=$dcf_root/db-driver
+
+echo "--user '$user'" >$opt
+
+if [ "$passwd" != "NULL" ]; then
+echo "--password '$passwd'" >>$opt
+fi
+
+echo "--database '$db'" >>$opt
+echo "--host '$host'" >>$opt
+echo "--port $port" >>$opt
+
+if [ "$socket" != "NULL" ]; then
+echo "--socket '$socket'" >>$opt
+fi
+
+echo "#!/bin/sh" >$drv
+echo "opt=\`cat $opt\`" >>$drv
+echo "eval $scf_root/mysql/mysql --driver $driver \$opt \$*" >>$drv
+chmod 755 $drv
diff --git a/build/mysql/mysql b/build/mysql/mysql
new file mode 100755
index 0000000..c273d56
--- /dev/null
+++ b/build/mysql/mysql
@@ -0,0 +1,56 @@
+#! /usr/bin/env bash
+
+# file : build/mysql/mysql
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+#
+# MySQL driver wrapper.
+#
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ --driver)
+ driver=$2
+ shift 2
+ ;;
+ --user)
+ opt="$opt --user=$2"
+ shift 2
+ ;;
+ --password)
+ opt="$opt --password=$2"
+ shift 2
+ ;;
+ --database)
+ opt="$opt --database=$2"
+ shift 2
+ ;;
+ --host)
+ opt="$opt --host=$2"
+ shift 2
+ ;;
+ --port)
+ opt="$opt --port=$2"
+ shift 2
+ ;;
+ --socket)
+ opt="$opt --socket=$2"
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if [ -z "$driver" ]; then
+ driver=mysql
+fi
+
+if [ -n "$1" ]; then
+ exec $driver $opt <$1
+else
+ exec $driver $opt
+fi