diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-09-14 15:19:16 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-09-14 15:19:16 +0200 |
commit | 349178ecf6c69be63bd81ce81d310404574cb373 (patch) | |
tree | fccbd90c0cae4f43389ec830c9d7924c30c62113 /build | |
parent | 22dd2e8a904d26c18f6e4c634e14b21a8aaddc7d (diff) |
Establish base build system
Diffstat (limited to 'build')
-rw-r--r-- | build/bootstrap.make | 122 | ||||
-rw-r--r-- | build/configuration-rules.make | 20 | ||||
-rw-r--r-- | build/configuration.make | 22 | ||||
-rwxr-xr-x | build/configure | 32 | ||||
-rw-r--r-- | build/import/libodb-mysql/LICENSE | 12 | ||||
-rw-r--r-- | build/import/libodb-mysql/configuration-rules.make | 15 | ||||
-rwxr-xr-x | build/import/libodb-mysql/configure | 55 | ||||
-rw-r--r-- | build/import/libodb-mysql/stub.make | 30 | ||||
-rw-r--r-- | build/import/libodb/LICENSE | 12 | ||||
-rw-r--r-- | build/import/libodb/configuration-rules.make | 15 | ||||
-rwxr-xr-x | build/import/libodb/configure | 55 | ||||
-rw-r--r-- | build/import/libodb/stub.make | 30 | ||||
-rw-r--r-- | build/import/odb/LICENSE | 12 | ||||
-rw-r--r-- | build/import/odb/configuration-rules.make | 15 | ||||
-rwxr-xr-x | build/import/odb/configure | 55 | ||||
-rw-r--r-- | build/import/odb/hxx-cxx.make | 62 | ||||
-rw-r--r-- | build/import/odb/stub.make | 30 | ||||
-rwxr-xr-x | build/mysql/configure | 77 | ||||
-rwxr-xr-x | build/mysql/mysql | 56 |
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 |