diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-06-04 16:25:40 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-06-04 16:25:40 +0200 |
commit | 5d7489b226649a6790d1afbb28359ce5f6ec5c6a (patch) | |
tree | c3e9b3357ed2fc36ec152b4fd00a1294d25699d5 /build | |
parent | 4f17a1e17ca7d40605bf6af46d8136f2c8d30779 (diff) |
Add odb import stub
Diffstat (limited to 'build')
-rw-r--r-- | build/export/odb/stub.make | 13 | ||||
-rw-r--r-- | build/hxx/hxx-cxx.make | 56 | ||||
l--------- | build/import/odb/LICENSE | 1 | ||||
-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 | 58 | ||||
-rw-r--r-- | build/import/odb/stub.make | 30 |
7 files changed, 228 insertions, 0 deletions
diff --git a/build/export/odb/stub.make b/build/export/odb/stub.make new file mode 100644 index 0000000..1293663 --- /dev/null +++ b/build/export/odb/stub.make @@ -0,0 +1,13 @@ +# file : build/export/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,$(src_root)/odb/makefile,$(out_root)) + +# Use the rules file from odb's import directory instead of the +# importing project's one. +# +$(call export,\ + odb: $(out_root)/odb/odb,\ + odb-rules: $(scf_root)/import/odb/hxx-cxx.make) diff --git a/build/hxx/hxx-cxx.make b/build/hxx/hxx-cxx.make new file mode 100644 index 0000000..55d32e3 --- /dev/null +++ b/build/hxx/hxx-cxx.make @@ -0,0 +1,56 @@ +# file : build/hxx/hxx-cxx.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +# 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 := odb +$(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: + $(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/LICENSE b/build/import/odb/LICENSE new file mode 120000 index 0000000..5853aae --- /dev/null +++ b/build/import/odb/LICENSE @@ -0,0 +1 @@ +../../../LICENSE
\ No newline at end of file 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..4d16e5a --- /dev/null +++ b/build/import/odb/hxx-cxx.make @@ -0,0 +1,58 @@ +# 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 v2; 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: + $(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 |