summaryrefslogtreecommitdiff
path: root/odb-examples/build/root.build
diff options
context:
space:
mode:
Diffstat (limited to 'odb-examples/build/root.build')
-rw-r--r--odb-examples/build/root.build274
1 files changed, 274 insertions, 0 deletions
diff --git a/odb-examples/build/root.build b/odb-examples/build/root.build
new file mode 100644
index 0000000..ef6df52
--- /dev/null
+++ b/odb-examples/build/root.build
@@ -0,0 +1,274 @@
+# file : build/root.build
+# license : GNU GPL v2; see accompanying LICENSE file
+
+cxx.std = latest
+
+using cxx
+
+hxx{*}: extension = hxx
+ixx{*}: extension = ixx
+txx{*}: extension = txx
+cxx{*}: extension = cxx
+
+define sql: file
+sql{*}: extension = sql
+
+define xml: file
+xml{*}: extension = xml
+
+skeleton = ($build.mode == 'skeleton')
+
+# The identifier of the database to compile and run the examples against. The
+# valid identifiers are mysql, sqlite, pgsql, oracle, and mssql.
+#
+# Note: can be specified by the user but is also conditionally reflected by
+# the libodb-* libraries' examples manifest values.
+#
+config [string] config.odb_examples.database
+
+database = [string] ($defined(config.odb_examples.database) \
+ ? $config.odb_examples.database \
+ : '')
+
+mysql = false
+sqlite = false
+pgsql = false
+oracle = false
+mssql = false
+
+switch $database
+{
+ case 'mysql'
+ mysql = true
+
+ case 'sqlite'
+ sqlite = true
+
+ case 'pgsql'
+ pgsql = true
+
+ case 'oracle'
+ oracle = true
+
+ case 'mssql'
+ mssql = true
+
+ case ''
+ assert ($skeleton) \
+ 'database must be configured via config.odb_examples.database variable'
+
+ default
+ fail "invalid database '$database' specified in config.odb_examples.database value"
+}
+
+# If true, then this package is enabled as external examples for libodb
+# library (see libodb's manifest for details).
+#
+# Note that this variable is not used in this package itself.
+#
+config [bool] config.odb_examples.libodb_example ?= false
+
+# Database connections.
+#
+
+# MySQL
+#
+# The database user.
+#
+config [string] config.odb_examples.mysql.user ?= 'odb_test'
+
+# The database password.
+#
+config [string] config.odb_examples.mysql.passwd
+
+# The database name. Note that it WILL BE MODIFIED by the examples.
+#
+config [string] config.odb_examples.mysql.database ?= 'odb_test'
+
+# The database host.
+#
+config [string] config.odb_examples.mysql.host
+
+# The database port.
+#
+config [uint64] config.odb_examples.mysql.port
+
+# The database socket path.
+#
+config [path] config.odb_examples.mysql.socket
+
+# PostgreSQL
+#
+# The database user. Note that the named user must be allowed to connect to
+# the database server without specifying credentials.
+#
+config [string] config.odb_examples.pgsql.user ?= 'odb_test'
+
+# The database name. Note that it WILL BE MODIFIED by the examples.
+#
+config [string] config.odb_examples.pgsql.database ?= 'odb_test'
+
+# The database host or directory of Unix-domain socket. Leaving this variable
+# undefined results in using Unix-domain sockets. Machines without Unix-domain
+# sockets will connect to localhost.
+#
+config [string] config.odb_examples.pgsql.host
+
+# The database port or the socket file name extension for Unix-domain
+# connections.
+#
+# For example, specifying:
+#
+# config.odb_examples.pgsql.host=/var/run/postgresql
+# config.odb_examples.pgsql.port=5433
+#
+# Will result in the /var/run/postgresql/.s.PGSQL.5433 socket being used.
+#
+config [string] config.odb_examples.pgsql.port
+
+# Oracle
+#
+# The database user.
+#
+config [string] config.odb_examples.oracle.user ?= 'odb_test'
+
+# The database password.
+#
+config [string] config.odb_examples.oracle.passwd
+
+# The database host.
+#
+config [string] config.odb_examples.oracle.host
+
+# The database port.
+#
+config [uint64] config.odb_examples.oracle.port
+
+# The service name. Note that the database associated with this user on this
+# service WILL BE MODIFIED by the examples.
+#
+config [string] config.odb_examples.oracle.service
+
+# Microsoft SQL Server
+#
+# The database user.
+#
+config [string] config.odb_examples.mssql.user ?= 'odb_test'
+
+# The database password.
+#
+config [string] config.odb_examples.mssql.passwd
+
+# The database name. Note that it WILL BE MODIFIED by the examples.
+#
+config [string] config.odb_examples.mssql.database ?= 'odb_test'
+
+# The database host.
+#
+config [string] config.odb_examples.mssql.host
+
+# The database port.
+#
+config [uint64] config.odb_examples.mssql.port
+
+# The SQL Server instance address.
+#
+# Note: mutually exclusive with config.odb_examples.mssql.{host,port}.
+#
+config [string] config.odb_examples.mssql.server
+
+assert (!$defined(config.odb_examples.mssql.server) || \
+ !$defined(config.odb_examples.mssql.host)) \
+ 'variables config.odb_examples.mssql.server and config.odb_examples.mssql.host cannot be specified both'
+
+assert (!$defined(config.odb_examples.mssql.server) || \
+ !$defined(config.odb_examples.mssql.port)) \
+ 'variables config.odb_examples.mssql.server and config.odb_examples.mssql.port cannot be specified both'
+
+# The SQL Server ODBC Driver.
+#
+config [string, null] config.odb_examples.mssql.driver
+
+if! $skeleton
+{
+ if ($cxx.target.system == 'win32-msvc')
+ cxx.poptions += -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS
+
+ switch $cxx.class
+ {
+ case 'gcc'
+ {
+ cxx.coptions += -Wno-unknown-pragmas
+ }
+ case 'msvc'
+ {
+ cxx.coptions += /wd4068 /wd4251 /wd4275 /wd4800
+ }
+ }
+
+ # Import odb that we are using.
+ #
+ import! [metadata] odb = odb%exe{odb}
+
+ # Import the mysql client for creating the database schemas, etc.
+ #
+ if $mysql
+ {
+ import! mysql_client = mysql-client%exe{mysql}
+ testscript{*}: mysql_client = $mysql_client
+ }
+ #
+ # Import the psql client for creating the database schemas, etc.
+ #
+ elif $pgsql
+ {
+ import! pgsql_client = psql%exe{psql}
+ testscript{*}: pgsql_client = $pgsql_client
+ }
+ #
+ # Import the sqlplus client for creating the database schemas, etc.
+ #
+ # Note: expected to be system-installed.
+ #
+ elif $oracle
+ {
+ import! oracle_client = sqlplus%exe{sqlplus}
+ testscript{*}: oracle_client = $oracle_client
+ }
+ #
+ # Import the sqlcmd client for creating the database schemas, etc.
+ #
+ # Note: expected to be system-installed.
+ #
+ elif $mssql
+ {
+ import! mssql_client = sqlcmd%exe{sqlcmd}
+ testscript{*}: mssql_client = $mssql_client
+ }
+
+ # Every exe{} in this project is by default a test.
+ #
+ exe{*}: test = true
+
+ # Specify the test target for cross-testing.
+ #
+ test.target = $cxx.target
+}
+
+# The helper targets which can be used as prerequisites of test drivers which
+# require either a specific database client or multiple clients for all the
+# enabled databases.
+#
+alias{mysql-client}: $mysql_client:
+{
+ include = $mysql
+ clean = false
+}
+
+alias{pgsql-client}: $pgsql_client:
+{
+ include = $pgsql
+ clean = false
+}
+
+alias{database-client}: alias{mysql-client pgsql-client}