aboutsummaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-11-17 11:44:45 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-11-17 11:44:45 +0200
commit9616e3e84946c23f64448978d9459d2a25202833 (patch)
tree209fe102c7d73b57ff3d2a4cdf68ad2df705704f /build
parent508512b8db199c5bcc1affc237d6eac4e0a4818d (diff)
Add examples for Oracle
Diffstat (limited to 'build')
-rw-r--r--build/bootstrap.make2
-rw-r--r--build/configuration.make4
-rwxr-xr-xbuild/configure3
-rw-r--r--build/import/libodb-oracle/LICENSE12
-rw-r--r--build/import/libodb-oracle/configuration-rules.make15
-rwxr-xr-xbuild/import/libodb-oracle/configure55
-rw-r--r--build/import/libodb-oracle/stub.make30
-rwxr-xr-xbuild/oracle/configure99
-rwxr-xr-xbuild/oracle/oracle75
9 files changed, 293 insertions, 2 deletions
diff --git a/build/bootstrap.make b/build/bootstrap.make
index 17ee203..dae84fc 100644
--- a/build/bootstrap.make
+++ b/build/bootstrap.make
@@ -64,7 +64,7 @@ ifeq ($(dist_prefix),)
$(error dist_prefix is not set)
endif
-databases := mysql sqlite pgsql
+databases := mysql sqlite pgsql oracle
$(dist): databases := $(databases)
# $1 project template without the -vcN.vc[x]proj suffix.
diff --git a/build/configuration.make b/build/configuration.make
index 5dc9e16..e2d0077 100644
--- a/build/configuration.make
+++ b/build/configuration.make
@@ -25,6 +25,10 @@ ifeq ($(db_id),pgsql)
db_macro := DATABASE_PGSQL
endif
+ifeq ($(db_id),oracle)
+db_macro := DATABASE_ORACLE
+endif
+
$(out_root)/%: db_id := $(db_id)
$(out_root)/%: db_macro := $(db_macro)
diff --git a/build/configure b/build/configure
index 70413fc..9aee64a 100755
--- a/build/configure
+++ b/build/configure
@@ -25,9 +25,10 @@ $echo
$echo "(1) MySQL"
$echo "(2) SQLite"
$echo "(3) PostgreSQL"
+$echo "(4) Oracle"
$echo
-db_id=`read_option "mysql sqlite pgsql"`
+db_id=`read_option "mysql sqlite pgsql oracle"`
echo "db_id := $db_id" >$1
diff --git a/build/import/libodb-oracle/LICENSE b/build/import/libodb-oracle/LICENSE
new file mode 100644
index 0000000..ed9c55c
--- /dev/null
+++ b/build/import/libodb-oracle/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-oracle/configuration-rules.make b/build/import/libodb-oracle/configuration-rules.make
new file mode 100644
index 0000000..a4a8c99
--- /dev/null
+++ b/build/import/libodb-oracle/configuration-rules.make
@@ -0,0 +1,15 @@
+# file : build/import/libodb-oracle/configuration-rules.make
+# author : Constantin Michael <constantin@codesynthesis.com>
+# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+# license : ODB NCUEL; see accompanying LICENSE file
+
+$(dcf_root)/import/libodb-oracle/configuration-dynamic.make: | $(dcf_root)/import/libodb-oracle/.
+ $(call message,,$(scf_root)/import/libodb-oracle/configure $@)
+
+ifndef %foreign%
+
+$(dcf_root)/.disfigure::
+ $(call message,rm $(dcf_root)/import/libodb-oracle/configuration-dynamic.make,\
+rm -f $(dcf_root)/import/libodb-oracle/configuration-dynamic.make)
+
+endif
diff --git a/build/import/libodb-oracle/configure b/build/import/libodb-oracle/configure
new file mode 100755
index 0000000..9934d03
--- /dev/null
+++ b/build/import/libodb-oracle/configure
@@ -0,0 +1,55 @@
+#! /usr/bin/env bash
+
+# file : build/import/libodb-oracle/configure
+# author : Constantin Michael <constantin@codesynthesis.com>
+# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+# license : ODB NCUEL; 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-oracle' for '$project_name'."
+$echo
+
+$echo
+$echo "Would you like to configure dependency on the installed version"
+$echo "of 'libodb-oracle' 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-oracle'."
+$echo
+
+src_root=`read_path --directory --exist`
+
+$echo
+$echo "Please enter the out_root for 'libodb-oracle'."
+$echo
+
+out_root=`read_path --directory $src_root`
+
+fi
+
+echo libodb_oracle_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-oracle/stub.make b/build/import/libodb-oracle/stub.make
new file mode 100644
index 0000000..2432246
--- /dev/null
+++ b/build/import/libodb-oracle/stub.make
@@ -0,0 +1,30 @@
+# file : build/import/libodb-oracle/stub.make
+# author : Constantin Michael <constantin@codesynthesis.com>
+# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+# license : ODB NCUEL; see accompanying LICENSE file
+
+$(call include-once,$(scf_root)/import/libodb-oracle/configuration-rules.make,$(dcf_root))
+
+libodb_oracle_installed :=
+
+$(call -include,$(dcf_root)/import/libodb-oracle/configuration-dynamic.make)
+
+ifdef libodb_oracle_installed
+
+ifeq ($(libodb_oracle_installed),y)
+
+$(call export,l: -lodb-oracle -lodb -lclntsh,cpp-options: )
+
+else
+
+# Include export stub.
+#
+$(call include,$(scf_root)/export/libodb-oracle/stub.make)
+
+endif
+
+else
+
+.NOTPARALLEL:
+
+endif
diff --git a/build/oracle/configure b/build/oracle/configure
new file mode 100755
index 0000000..9746133
--- /dev/null
+++ b/build/oracle/configure
@@ -0,0 +1,99 @@
+#! /usr/bin/env bash
+
+# file : build/oracle/configure
+# author : Constantin Michael <constantin@codesynthesis.com>
+# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+# license : ODB NCUEL; see accompanying LICENSE file
+
+#
+# dcf_root - dynamic configuration root
+#
+
+$echo
+$echo "Please enter the Oracle client program path."
+$echo
+
+driver=`read_path --command sqlplus`
+
+$echo
+$echo "Please enter the Oracle database user."
+$echo
+
+user=`read_value "odb_test"`
+
+$echo
+$echo "Please enter the Oracle database password."
+$echo
+
+# If the user is odb_test then default to odb_test as a password since
+# it is unlikely there is the odb_test user with external authentication.
+#
+if [ "$user" = "odb_test" ]; then
+ def_passwd=odb_test
+else
+ def_passwd=
+fi
+
+passwd=`read_value "$def_passwd"`
+
+$echo
+$echo "Please enter the Oracle listener host (localhost if left empty)."
+$echo
+
+host=`read_value ""`
+
+$echo
+$echo "Please enter the Oracle listener port (default port if left empty)."
+$echo
+
+port=`read_value ""`
+
+$echo
+$echo "Please enter the Oracle service to use (default service if left"
+$echo "empty). Note that the database associated with user $user on this"
+$echo "service WILL BE MODIFIED."
+$echo
+
+service=`read_value ""`
+
+opt=$dcf_root/db.options
+drv=$dcf_root/db-driver
+
+if [ -n "$user" ]; then
+echo "--user '$user'" >$opt
+fi
+
+if [ -n "$passwd" ]; then
+echo "--password '$passwd'" >>$opt
+fi
+
+if [ -n "$service" ]; then
+echo "--service '$service'" >>$opt
+fi
+
+if [ -n "$host" ]; then
+echo "--host '$host'" >>$opt
+fi
+
+if [ -n "$port" ]; then
+echo "--port '$port'" >>$opt
+fi
+
+echo "#!/bin/sh" >$drv
+
+dir=`dirname $driver`
+if [ "$dir" != "." ]; then
+ echo >>$drv
+ echo 'LD_LIBRARY_PATH="'$dir':$LD_LIBRARY_PATH"' >>$drv
+ echo "export LD_LIBRARY_PATH" >>$drv
+ echo >>$drv
+ echo 'if [ -z "$SQLPATH" ]; then' >>$drv
+ echo ' SQLPATH="'$dir'"' >>$drv
+ echo " export SQLPATH" >>$drv
+ echo "fi" >>$drv
+ echo >>$drv
+fi
+
+echo "opt=\`cat $opt\`" >>$drv
+echo "eval $scf_root/oracle/oracle --driver $driver \$opt \$*" >>$drv
+chmod 755 $drv
diff --git a/build/oracle/oracle b/build/oracle/oracle
new file mode 100755
index 0000000..9228025
--- /dev/null
+++ b/build/oracle/oracle
@@ -0,0 +1,75 @@
+#! /usr/bin/env bash
+
+# file : build/oracle/oracle
+# author : Constantin Michael <constantin@codesynthesis.com>
+# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+# license : ODB NCUEL; see accompanying LICENSE file
+
+#
+# Oracle driver wrapper.
+#
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ --driver)
+ driver=$2
+ shift 2
+ ;;
+ --user)
+ user="$2"
+ shift 2
+ ;;
+ --password)
+ passwd="$2"
+ shift 2
+ ;;
+ --service)
+ service="$2"
+ shift 2
+ ;;
+ --host)
+ host="$2"
+ shift 2
+ ;;
+ --port)
+ port="$2"
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if [ -z "$driver" ]; then
+ driver=sqlplus
+fi
+
+conn=$user
+
+if [ -n "$passwd" ]; then
+ conn="$conn/$passwd"
+fi
+
+if [ -n "$host" ]; then
+ conn="$conn@//$host"
+
+ if [ -n "$port" ]; then
+ conn="$conn:$port"
+ fi
+
+ if [ -n "$service" ]; then
+ conn="$conn/$service"
+ fi
+elif [ -n "$service" ]; then
+ conn="$conn@$service"
+fi
+
+opt="-L $opt"
+
+if [ -n "$1" ]; then
+ opt="-S $opt"
+ exec $driver $opt $conn @$1
+else
+ exec $driver $opt $conn
+fi