aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-09-14 12:00:03 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-09-14 12:00:03 +0200
commit0c370d056fe0848c8a9cf11c48e423f3f2e97264 (patch)
treed68548fb60758c0f027cb7ca024a9e1e290321fd
parent71a46a05f30f6f02186ba2a03b29fae37bf9e585 (diff)
Use options parsing from database instead of our own
-rw-r--r--build/import/cli/LICENSE21
-rw-r--r--build/import/cli/cli-cxx.make45
-rw-r--r--build/import/cli/configuration-rules.make15
-rwxr-xr-xbuild/import/cli/configure55
-rw-r--r--build/import/cli/stub.make30
-rw-r--r--libcommon/common/common.cxx55
-rw-r--r--libcommon/common/common.hxx2
-rw-r--r--libcommon/common/makefile42
-rw-r--r--libcommon/common/options.cli58
9 files changed, 28 insertions, 295 deletions
diff --git a/build/import/cli/LICENSE b/build/import/cli/LICENSE
deleted file mode 100644
index db16aa3..0000000
--- a/build/import/cli/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2009-2010 Code Synthesis Tools CC.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/build/import/cli/cli-cxx.make b/build/import/cli/cli-cxx.make
deleted file mode 100644
index cb60d37..0000000
--- a/build/import/cli/cli-cxx.make
+++ /dev/null
@@ -1,45 +0,0 @@
-# file : build/import/cli/cli-cxx.make
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-# Here we are operating in the importing project's space, not in
-# cli's.
-#
-
-# Get the C++ file extensions.
-#
-$(call include,$(bld_root)/cxx/configuration-static.make)
-
-cli_pattern := \
-$(out_base)/%.$(cxx_s_suffix) \
-$(out_base)/%.$(cxx_h_suffix) \
-$(out_base)/%.$(cxx_i_suffix)
-
-$(cli_pattern): cli_options := \
---hxx-suffix .$(cxx_h_suffix) \
---ixx-suffix .$(cxx_i_suffix) \
---cxx-suffix .$(cxx_s_suffix)
-
-.PRECIOUS: $(cli_pattern)
-
-ifeq ($(out_base),$(src_base))
-
-$(cli_pattern): $(src_base)/%.cli
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-
-else
-
-$(cli_pattern): $(src_base)/%.cli | $$(dir $$@).
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-
-$(cli_pattern): $(out_base)/%.cli | $$(dir $$@).
- $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<)
-endif
-
-.PHONY: $(out_base)/%.cxx.cli.clean
-
-$(out_base)/%.cxx.cli.clean:
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_s_suffix)))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_h_suffix)))
- $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_i_suffix)))
diff --git a/build/import/cli/configuration-rules.make b/build/import/cli/configuration-rules.make
deleted file mode 100644
index 52c334d..0000000
--- a/build/import/cli/configuration-rules.make
+++ /dev/null
@@ -1,15 +0,0 @@
-# file : build/import/cli/configuration-rules.make
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(dcf_root)/import/cli/configuration-dynamic.make: | $(dcf_root)/import/cli/.
- $(call message,,$(scf_root)/import/cli/configure $@)
-
-ifndef %foreign%
-
-$(dcf_root)/.disfigure::
- $(call message,rm $(dcf_root)/import/cli/configuration-dynamic.make,\
-rm -f $(dcf_root)/import/cli/configuration-dynamic.make)
-
-endif
diff --git a/build/import/cli/configure b/build/import/cli/configure
deleted file mode 100755
index 21a09c5..0000000
--- a/build/import/cli/configure
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /usr/bin/env bash
-
-# file : build/import/cli/configure
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
-# license : MIT; 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 'cli' for '$project_name'."
-$echo
-
-$echo
-$echo "Would you like to configure dependency on the installed "
-$echo "version of 'cli' 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 'cli'."
-$echo
-
-src_root=`read_path --directory --exist`
-
-$echo
-$echo "Please enter the out_root for 'cli'."
-$eche
-
-out_root=`read_path --directory $src_root`
-
-fi
-
-echo cli_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/cli/stub.make b/build/import/cli/stub.make
deleted file mode 100644
index 250a5ee..0000000
--- a/build/import/cli/stub.make
+++ /dev/null
@@ -1,30 +0,0 @@
-# file : build/import/cli/stub.make
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
-# license : MIT; see accompanying LICENSE file
-
-$(call include-once,$(scf_root)/import/cli/configuration-rules.make,$(dcf_root))
-
-cli_installed :=
-
-$(call -include,$(dcf_root)/import/cli/configuration-dynamic.make)
-
-ifdef cli_installed
-
-ifeq ($(cli_installed),y)
-
-$(call export,cli: cli,cli-rules: $(scf_root)/import/cli/cli-cxx.make)
-
-else
-
-# Include export stub.
-#
-$(call include,$(scf_root)/export/cli/stub.make)
-
-endif
-
-else
-
-.NOTPARALLEL:
-
-endif
diff --git a/libcommon/common/common.cxx b/libcommon/common/common.cxx
index ed8be69..730b8ce 100644
--- a/libcommon/common/common.cxx
+++ b/libcommon/common/common.cxx
@@ -10,58 +10,39 @@
# include <common/config.h>
#endif
-#ifdef DB_ID_MYSQL
+#if defined(DB_ID_MYSQL)
# include <odb/mysql/database.hxx>
# include <odb/mysql/connection-factory.hxx>
+#else
+# error unknown database
#endif
#include <common/common.hxx>
-#include <common/options.hxx>
using namespace std;
using namespace odb;
auto_ptr<database>
-create_database (int argc, char* argv[], size_t max_connections)
+create_database (int& argc, char* argv[], size_t max_connections)
{
- try
+ if (argc > 1 && argv[1] == string ("--help"))
{
-#ifdef DB_ID_MYSQL
- cli::argv_file_scanner scan (argc, argv, "--options-file");
- cli::mysql_options ops (scan);
+ cerr << "Usage: " << argv[0] << " [options]" << endl
+ << "Options:" << endl;
- if (ops.help ())
- {
- cerr << "Usage: " << argv[0] << " [options]" << endl
- << "Options:" << endl;
- cli::mysql_options::print_usage (cerr);
- exit (0);
- }
+#if defined(DB_ID_MYSQL)
+ mysql::database::print_usage (cerr);
+#endif
- auto_ptr<mysql::connection_factory> f;
+ exit (0);
+ }
- if (max_connections != 0)
- f.reset (new mysql::connection_pool_factory (max_connections));
+#if defined(DB_ID_MYSQL)
+ auto_ptr<mysql::connection_factory> f;
- return auto_ptr<database> (
- new mysql::database (
- ops.user (),
- ops.password_specified () ? &ops.password () : 0,
- ops.database (),
- ops.host (),
- ops.port (),
- ops.socket_specified () ? &ops.socket () : 0,
- 0,
- f));
-#else
- return auto_ptr<database> (0);
-#endif
- }
- catch (const cli::exception& e)
- {
- cerr << e.what () << endl;
- exit (1);
- }
+ if (max_connections != 0)
+ f.reset (new mysql::connection_pool_factory (max_connections));
- return auto_ptr<database> (0);
+ return auto_ptr<database> (new mysql::database (argc, argv, false, 0, f));
+#endif
}
diff --git a/libcommon/common/common.hxx b/libcommon/common/common.hxx
index 57069dc..2a02a12 100644
--- a/libcommon/common/common.hxx
+++ b/libcommon/common/common.hxx
@@ -14,6 +14,6 @@
#include <common/export.hxx>
LIBCOMMON_EXPORT std::auto_ptr<odb::database>
-create_database (int argc, char* argv[], std::size_t max_connections = 0);
+create_database (int& argc, char* argv[], std::size_t max_connections = 0);
#endif // LIBCOMMON_COMMON_COMMON_HXX
diff --git a/libcommon/common/makefile b/libcommon/common/makefile
index 27e0bf2..41bb776 100644
--- a/libcommon/common/makefile
+++ b/libcommon/common/makefile
@@ -5,12 +5,9 @@
include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make
-# Options file.
-#
-cli_tun := options.cli
cxx_tun := common.cxx
-cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(cli_tun:.cli=.o))
+cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o))
cxx_od := $(cxx_obj:.o=.o.d)
common.l := $(out_base)/common.l
@@ -23,10 +20,6 @@ clean := $(out_base)/.clean
# Import.
#
$(call import,\
- $(scf_root)/import/cli/stub.make,\
- cli: cli,cli-rules: cli_rules)
-
-$(call import,\
$(scf_root)/import/libodb/stub.make,\
l: odb.l,cpp-options: odb.l.cpp-options)
@@ -48,18 +41,6 @@ $(cxx_obj) $(cxx_od): $(common.l.cpp-options) $(out_base)/config.h
$(common.l.cpp-options): value := -I$(out_root)/libcommon -I$(src_root)/libcommon
$(common.l.cpp-options): $(odb_db.l.cpp-options) $(odb.l.cpp-options)
-genf := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) $(cli_tun:.cli=.cxx)
-gen := $(addprefix $(out_base)/,$(genf))
-
-$(gen): $(cli)
-$(gen): cli := $(cli)
-$(gen): cli_options += \
---generate-specifier \
---generate-file-scanner \
---guard-prefix LIBCOMMON_COMMON
-
-$(call include-dep,$(cxx_od),$(cxx_obj),$(gen))
-
$(out_base)/config.h: $(dcf_root)/configuration-dynamic.make
@echo '// file : libcommon/config.h' >$@
@echo '// author : automatically generated' >>$@
@@ -73,26 +54,23 @@ endif
@echo '' >>$@
@echo '#endif // LIBCOMMON_COMMON_CONFIG_H' >>$@
+$(call include-dep,$(cxx_od),$(cxx_obj),$(out_base)/config.h)
+
# Convenience alias for default target.
#
$(out_base)/: $(common.l)
# Dist.
#
-$(dist): sources_dist := $(cxx_tun)
-$(dist): export sources := $(sources_dist) $(cli_tun:.cli=.cxx)
-$(dist): headers_dist = $(subst $(src_base)/,,$(shell find $(src_base) \
+$(dist): export sources := $(cxx_tun)
+$(dist): export headers = $(subst $(src_base)/,,$(shell find $(src_base) \
-name '*.hxx' -o -name '*.ixx' -o -name '*.txx'))
-$(dist): gen_headers := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx)
-$(dist): export headers = $(sort $(headers_dist) $(gen_headers))
-$(dist): gen_dist := $(gen)
-$(dist): data_dist := $(cli_tun) config.h.in
+$(dist): data_dist := config.h.in
$(dist): export extra_dist := $(data_dist) $(call vc9projs,libcommon) \
$(call vc10projs,libcommon)
-$(dist): $(gen)
- $(call dist-data,$(sources_dist) $(headers_dist) $(data_dist))
- $(call dist-data,$(gen_dist))
+$(dist):
+ $(call dist-data,$(sources) $(headers) $(data_dist))
$(call meta-automake)
$(call meta-vc9projs,libcommon)
$(call meta-vc10projs,libcommon)
@@ -103,7 +81,6 @@ $(clean): $(common.l).o.clean \
$(common.l.cpp-options).clean \
$(addsuffix .cxx.clean,$(cxx_obj)) \
$(addsuffix .cxx.clean,$(cxx_od)) \
- $(addprefix $(out_base)/,$(cli_tun:.cli=.cxx.cli.clean))
$(call message,rm $$1,rm -f $$1,$(out_base)/config.h)
# Generated .gitignore.
@@ -111,7 +88,7 @@ $(clean): $(common.l).o.clean \
ifeq ($(out_base),$(src_base))
$(common.l): | $(out_base)/.gitignore
-$(out_base)/.gitignore: files := config.h $(genf)
+$(out_base)/.gitignore: files := config.h
$(clean): $(out_base)/.gitignore.clean
$(call include,$(bld_root)/git/gitignore.make)
@@ -124,7 +101,6 @@ $(call include,$(bld_root)/meta/vc9proj.make)
$(call include,$(bld_root)/meta/vc10proj.make)
$(call include,$(bld_root)/meta/automake.make)
-$(call include,$(cli_rules))
$(call include,$(bld_root)/cxx/cxx-d.make)
$(call include,$(bld_root)/cxx/cxx-o.make)
$(call include,$(bld_root)/cxx/o-l.make)
diff --git a/libcommon/common/options.cli b/libcommon/common/options.cli
deleted file mode 100644
index b5db026..0000000
--- a/libcommon/common/options.cli
+++ /dev/null
@@ -1,58 +0,0 @@
-// file : libcommon/common/options.cli
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
-// license : GNU GPL v2; see accompanying LICENSE file
-
-include <string>;
-
-namespace cli
-{
- class mysql_options
- {
- bool --help {"Print usage information and exit."};
-
- std::string --user
- {
- "<name>",
- "MySQL database user."
- };
-
- std::string --password
- {
- "<str>",
- "MySQL database password"
- };
-
- std::string --database
- {
- "<name>",
- "MySQL database name."
- };
-
- std::string --host
- {
- "<addr>",
- "MySQL database host name or address (localhost by default)."
- };
-
- unsigned int --port = 0
- {
- "<integer>",
- "MySQL database port number."
- };
-
- std::string --socket
- {
- "<name>",
- "MySQL database socket name."
- };
-
- std::string --options-file
- {
- "<file>",
- "Read additional options from <file>. Each option appearing on a separate
- line optionally followed by space and an option value. Empty lines and
- lines starting with \cb{#} are ignored."
- };
- };
-}