diff options
Diffstat (limited to 'build-0.3/cxx')
34 files changed, 1214 insertions, 0 deletions
diff --git a/build-0.3/cxx/configuration-rules.make b/build-0.3/cxx/configuration-rules.make new file mode 100644 index 0000000..354791e --- /dev/null +++ b/build-0.3/cxx/configuration-rules.make @@ -0,0 +1,19 @@ +# file : build/cxx/configuration-rules.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(dcf_root)/cxx/configuration-dynamic.make: | $(dcf_root)/cxx/. + $(call message,,$(bld_root)/cxx/configure $@ \ +"$(origin cxx_pp_options)" \ +"$(origin cxx_options)" \ +"$(origin cxx_ld_options)" \ +"$(origin cxx_libs)") + +ifndef %foreign% + +disfigure:: + $(call message,rm $(dcf_root)/cxx/configuration-dynamic.make,\ +rm -f $(dcf_root)/cxx/configuration-dynamic.make) + +endif diff --git a/build-0.3/cxx/configuration-static.make b/build-0.3/cxx/configuration-static.make new file mode 100644 index 0000000..b1339bf --- /dev/null +++ b/build-0.3/cxx/configuration-static.make @@ -0,0 +1,15 @@ +# file : build/cxx/configuration-static.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +cxx_h_suffix := hxx +cxx_t_suffix := txx +cxx_i_suffix := ixx +cxx_s_suffix := cxx + +# Get user-supplied static configuration if any. +# +ifneq ($(bld_root),$(scf_root)) +$(call -include,$(scf_root)/cxx/configuration-static.make) +endif
\ No newline at end of file diff --git a/build-0.3/cxx/configuration.make b/build-0.3/cxx/configuration.make new file mode 100644 index 0000000..5ad97ae --- /dev/null +++ b/build-0.3/cxx/configuration.make @@ -0,0 +1,45 @@ +# file : build/cxx/configuration.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/cxx/configuration-rules.make,$(dcf_root)) + +# Static configuration. +# +$(call include,$(bld_root)/cxx/configuration-static.make) + + +# Dynamic configuration. +# +cxx_id := +cxx_optimize := +cxx_debug := +cxx_rpath := + +cxx_pp_extra_options := +cxx_extra_options := +cxx_ld_extra_options := +cxx_extra_libs := +cxx_extra_lib_paths := + +$(call -include,$(dcf_root)/cxx/configuration-dynamic.make) + +ifdef cxx_id + +$(out_root)/%: cxx_id := $(cxx_id) +$(out_root)/%: cxx_optimize := $(cxx_optimize) +$(out_root)/%: cxx_debug := $(cxx_debug) +$(out_root)/%: cxx_rpath := $(cxx_rpath) + +$(out_root)/%: cxx_pp_extra_options := $(cxx_pp_extra_options) +$(out_root)/%: cxx_extra_options := $(cxx_extra_options) +$(out_root)/%: cxx_ld_extra_options := $(cxx_ld_extra_options) +$(out_root)/%: cxx_extra_libs := $(cxx_extra_libs) +$(out_root)/%: cxx_extra_lib_paths := $(cxx_extra_lib_paths) + +else + +.NOTPARALLEL: + +endif diff --git a/build-0.3/cxx/configure b/build-0.3/cxx/configure new file mode 100755 index 0000000..033424b --- /dev/null +++ b/build-0.3/cxx/configure @@ -0,0 +1,167 @@ +#! /usr/bin/env bash + +# file : build/cxx/configure +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +# $1 out file +# $2 origin of the cxx_pp_options make variable +# $3 origin of the cxx_options make variable +# $4 origin of the cxx_ld_options make variable +# $5 origin of the cxx_libs make variable +# +# 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 C++ compiler you would like to use:" +$echo +$echo "(1) GNU C++ (g++)" +$echo "(2) Intel C++ (icc)" +$echo "(3) Other C++ compiler" +$echo + +id=`read_option "gnu intel generic" "gnu"` + +if [ "$id" != "generic" ]; then + + $echo + $echo "Would you like the C++ compiler to optimize generated code?" + $echo + + optimize=`read_y_n y` + + + $echo + $echo "Would you like the C++ compiler to generate debug information?" + $echo + + debug=`read_y_n y` + + $echo + $echo "Embed dynamic library paths into executables (rpath)?" + $echo + + rpath=`read_y_n y` + +fi + +# pp_options +# +if [ "$2" != "undefined" ]; then + + pp_options=$cxx_pp_options + + if [ "$pp_options" ]; then + $echo + $echo "Extra C++ preprocessor options: $pp_options" + $echo + fi +else + + $echo + $echo "Please enter any extra C++ preprocessor options." + $echo + + read -e -p "[]: " pp_options +fi + + +# options +# +if [ "$3" != "undefined" ]; then + + options=$cxx_options + + if [ "$options" ]; then + $echo + $echo "Extra C++ compiler options: $options" + $echo + fi +else + + $echo + $echo "Please enter any extra C++ compiler options." + $echo + + read -p "[]: " options +fi + + +# ld_options +# +if [ "$4" != "undefined" ]; then + + ld_options=$cxx_ld_options + + if [ "$ld_options" ]; then + $echo + $echo "Extra C++ linker options: $ld_options" + $echo + fi +else + + $echo + $echo "Please enter any extra C++ linker options." + $echo + + read -e -p "[]: " ld_options +fi + + +# libs +# +if [ "$5" != "undefined" ]; then + + libs=$cxx_libs + + if [ "$libs" ]; then + $echo + $echo "Extra C++ libraries: $libs" + $echo + fi +else + + $echo + $echo "Please enter any extra C++ libraries." + $echo + + read -e -p "[]: " libs +fi + + +# Extract -L paths from the ld options. +# +paths= + +if [ "$ld_options" ]; then + paths=`echo "$ld_options" | sed -e 's/-L *\([^ ]*\)/\\ +-L\1\\ +/g' | sed -e 's/^-L\([^ ]*\)$/\1/' -e t -e d` + paths=`echo $paths | sed -e 's/ /:/g'` +fi + +echo "cxx_id := $id" >$1 + +if [ "$id" != "generic" ]; then + echo "cxx_optimize := $optimize" >>$1 + echo "cxx_debug := $debug" >>$1 + echo "cxx_rpath := $rpath" >>$1 +fi + +echo "cxx_pp_extra_options := $pp_options" >>$1 +echo "cxx_extra_options := $options" >>$1 +echo "cxx_ld_extra_options := $ld_options" >>$1 +echo "cxx_extra_libs := $libs" >>$1 +echo "cxx_extra_lib_paths := $paths" >>$1 diff --git a/build-0.3/cxx/cxx-d.make b/build-0.3/cxx/cxx-d.make new file mode 100644 index 0000000..34b80c9 --- /dev/null +++ b/build-0.3/cxx/cxx-d.make @@ -0,0 +1,10 @@ +# file : build/cxx/cxx-d.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/configuration.make) + +ifdef cxx_id +$(call include-once,$(bld_root)/cxx/$(cxx_id)/cxx-d.make,$(out_base)) +endif diff --git a/build-0.3/cxx/cxx-o.make b/build-0.3/cxx/cxx-o.make new file mode 100644 index 0000000..e01067f --- /dev/null +++ b/build-0.3/cxx/cxx-o.make @@ -0,0 +1,10 @@ +# file : build/cxx/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/configuration.make) + +ifdef cxx_id +$(call include-once,$(bld_root)/cxx/$(cxx_id)/cxx-o.make,$(out_base)) +endif diff --git a/build-0.3/cxx/generic/configuration-rules.make b/build-0.3/cxx/generic/configuration-rules.make new file mode 100644 index 0000000..bb4fe67 --- /dev/null +++ b/build-0.3/cxx/generic/configuration-rules.make @@ -0,0 +1,15 @@ +# file : build/cxx/generic/configuration-rules.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(dcf_root)/cxx/generic/configuration-dynamic.make: | $(dcf_root)/cxx/generic/. + $(call message,,$(bld_root)/cxx/generic/configure $@) + +ifndef %foreign% + +disfigure:: + $(call message,rm $(dcf_root)/cxx/generic/configuration-dynamic.make,\ +rm -f $(dcf_root)/cxx/generic/configuration-dynamic.make) + +endif diff --git a/build-0.3/cxx/generic/configuration-sl-rules.make b/build-0.3/cxx/generic/configuration-sl-rules.make new file mode 100644 index 0000000..cbcf160 --- /dev/null +++ b/build-0.3/cxx/generic/configuration-sl-rules.make @@ -0,0 +1,15 @@ +# file : build/cxx/generic/configuration-sl-rules.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(dcf_root)/cxx/generic/configuration-sl-dynamic.make: | $(dcf_root)/cxx/generic/. + $(call message,,$(bld_root)/cxx/generic/configure-sl $@) + +ifndef %foreign% + +disfigure:: + $(call message,rm $(dcf_root)/cxx/generic/configuration-sl-dynamic.make,\ +rm -f $(dcf_root)/cxx/generic/configuration-sl-dynamic.make) + +endif diff --git a/build-0.3/cxx/generic/configuration-sl.make b/build-0.3/cxx/generic/configuration-sl.make new file mode 100644 index 0000000..2a5e682 --- /dev/null +++ b/build-0.3/cxx/generic/configuration-sl.make @@ -0,0 +1,21 @@ +# file : build/cxx/generic/configuration-sl.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/cxx/generic/configuration-sl-rules.make,$(dcf_root)) + +# Dynamic configuration. +# +cxx_generic_pic_option := + +$(call -include,$(dcf_root)/cxx/generic/configuration-sl-dynamic.make) + +ifdef cxx_generic_pic_option + +$(out_root)/%: cxx_generic_pic_option := $(cxx_generic_pic_option) +$(out_root)/%: cxx_generic_shared_option := $(cxx_generic_shared_option) + +else +.NOTPARALLEL: +endif diff --git a/build-0.3/cxx/generic/configuration.make b/build-0.3/cxx/generic/configuration.make new file mode 100644 index 0000000..b57eaaf --- /dev/null +++ b/build-0.3/cxx/generic/configuration.make @@ -0,0 +1,22 @@ +# file : build/cxx/generic/configuration.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/cxx/generic/configuration-rules.make,$(dcf_root)) + +# Static configuration. +# +ifneq ($(bld_root),$(scf_root)) +$(call -include,$(scf_root)/cxx/generic/configuration-static.make) +endif + +# Dynamic configuration. +# +cxx_generic := + +$(call -include,$(dcf_root)/cxx/generic/configuration-dynamic.make) + +ifndef cxx_generic +.NOTPARALLEL: +endif diff --git a/build-0.3/cxx/generic/configure b/build-0.3/cxx/generic/configure new file mode 100755 index 0000000..48b1b59 --- /dev/null +++ b/build-0.3/cxx/generic/configure @@ -0,0 +1,28 @@ +#! /usr/bin/env bash + +# file : build/cxx/generic/configure +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-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 enter the C++ compiler executable you would like to use." +$echo + +cxx_generic=`read_path --command` + +echo "cxx_generic := $cxx_generic" > $1 diff --git a/build-0.3/cxx/generic/configure-sl b/build-0.3/cxx/generic/configure-sl new file mode 100755 index 0000000..1c4b8b5 --- /dev/null +++ b/build-0.3/cxx/generic/configure-sl @@ -0,0 +1,37 @@ +#! /usr/bin/env bash + +# file : build/cxx/generic/configure-sl +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-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 enter C++ compiler option(s) used to build position-" +$echo "independent code (e.g., -fPIC, -Kpic, etc)." +$echo + +read -e -p "[]: " pic_option + +$echo +$echo "Please enter C++ compiler option(s) used to build shared" +$echo "libraries (e.g., -shared, -G, etc)." +$echo + +read -e -p "[]: " shared_option + +echo "cxx_generic_pic_option := $pic_option" > $1 +echo "cxx_generic_shared_option := $shared_option" >> $1 diff --git a/build-0.3/cxx/generic/cxx-d.make b/build-0.3/cxx/generic/cxx-d.make new file mode 100644 index 0000000..53f44b1 --- /dev/null +++ b/build-0.3/cxx/generic/cxx-d.make @@ -0,0 +1,19 @@ +# file : build/cxx/generic/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/generic/configuration.make) + +# Make will try to build dependecies (since they are ultimately included +# files) during configuartion phase without cxx_generic being discovered +# yet. This is also why dependecies should be included with -include. +# +ifdef cxx_generic + +.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean + +$(out_base)/%.o.d.$(cxx_s_suffix).clean: + @: + +endif diff --git a/build-0.3/cxx/generic/cxx-o.make b/build-0.3/cxx/generic/cxx-o.make new file mode 100644 index 0000000..e88f5c6 --- /dev/null +++ b/build-0.3/cxx/generic/cxx-o.make @@ -0,0 +1,40 @@ +# file : build/cxx/generic/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/generic/configuration.make) + +$(out_base)/%.o: cxx := $(cxx_generic) + +#@@ wrong prefix +# +$(out_base)/%.o: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +endif + +.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean + +$(out_base)/%.o.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) diff --git a/build-0.3/cxx/generic/o-e.make b/build-0.3/cxx/generic/o-e.make new file mode 100644 index 0000000..8170da3 --- /dev/null +++ b/build-0.3/cxx/generic/o-e.make @@ -0,0 +1,28 @@ +# file : build/cxx/generic/o-e.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/generic/configuration.make) + +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +$(out_base)/%: ld := $(cxx_generic) +$(out_base)/%: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%: $(out_base)/%.o +else +$(out_base)/%: $(out_base)/%.o | $$(dir $$@). +endif + $(call message,ld $@,$(ld) \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + +.PHONY: $(out_base)/%.o.clean + +$(out_base)/%.o.clean: + $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@))) diff --git a/build-0.3/cxx/generic/o-l.make b/build-0.3/cxx/generic/o-l.make new file mode 100644 index 0000000..5b29855 --- /dev/null +++ b/build-0.3/cxx/generic/o-l.make @@ -0,0 +1,67 @@ +# file : build/cxx/generic/o-l.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/generic/configuration.make) + +ifeq ($(ld_lib_type),shared) +$(call include,$(bld_root)/cxx/generic/configuration-sl.make) +endif + +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +ifdef ld_lib_type + +.PHONY: $(out_base)/%.l.o.clean + +ifeq ($(ld_lib_type),archive) + +$(out_base)/%.l: ar := $(ld_lib_ar) +$(out_base)/%.l: ar_options ?= -rc + +$(out_base)/%.l: ranlib := $(ld_lib_ranlib) +$(out_base)/%.l: ranlib_options ?= + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^)) + $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a) + $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@))) + +else + +$(out_base)/%.l: ld := $(cxx_generic) +$(out_base)/%.l: c_pic_options := $(cxx_generic_pic_option) +$(out_base)/%.l: cxx_pic_options := $(cxx_generic_pic_option) +$(out_base)/%.l: comma_ := , + +$(out_base)/%.l: expand-l = $(shell sed -e 's%^rpath:\(.*\)%%' $1) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ld $@,$(ld) $(cxx_generic_shared_option) \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $(@D)/lib$(basename $(@F)).so \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@) + $(call message,,echo "rpath:$(@D)" >>$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@))) + +endif +endif diff --git a/build-0.3/cxx/gnu/configuration-rules.make b/build-0.3/cxx/gnu/configuration-rules.make new file mode 100644 index 0000000..7598be9 --- /dev/null +++ b/build-0.3/cxx/gnu/configuration-rules.make @@ -0,0 +1,15 @@ +# file : build/cxx/gnu/configuration-rules.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(dcf_root)/cxx/gnu/configuration-dynamic.make: | $(dcf_root)/cxx/gnu/. + $(call message,,$(bld_root)/cxx/gnu/configure $@ $(cxx_optimize)) + +ifndef %foreign% + +disfigure:: + $(call message,rm $(dcf_root)/cxx/gnu/configuration-dynamic.make,\ +rm -f $(dcf_root)/cxx/gnu/configuration-dynamic.make) + +endif diff --git a/build-0.3/cxx/gnu/configuration-static.make b/build-0.3/cxx/gnu/configuration-static.make new file mode 100644 index 0000000..9a2521a --- /dev/null +++ b/build-0.3/cxx/gnu/configuration-static.make @@ -0,0 +1,4 @@ +# file : build/cxx/gnu/configuration-static.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file diff --git a/build-0.3/cxx/gnu/configuration.make b/build-0.3/cxx/gnu/configuration.make new file mode 100644 index 0000000..57e00e9 --- /dev/null +++ b/build-0.3/cxx/gnu/configuration.make @@ -0,0 +1,34 @@ +# file : build/cxx/gnu/configuration.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/cxx/gnu/configuration-rules.make,$(dcf_root)) + +# Static configuration. +# +$(call include,$(bld_root)/cxx/gnu/configuration-static.make) + +ifneq ($(bld_root),$(scf_root)) +$(call -include,$(scf_root)/cxx/gnu/configuration-static.make) +endif + +# Dynamic configuration. +# +cxx_gnu := +cxx_gnu_optimization_options := + +$(call -include,$(dcf_root)/cxx/gnu/configuration-dynamic.make) + +ifdef cxx_gnu + +cxx_gnu_debugging_options := $(if $(findstring y,$(cxx_debug)),-g) + +$(out_root)/%: cxx_gnu_debugging_options := $(cxx_gnu_debugging_options) +$(out_root)/%: cxx_gnu_optimization_options := $(cxx_gnu_optimization_options) + +else + +.NOTPARALLEL: + +endif diff --git a/build-0.3/cxx/gnu/configure b/build-0.3/cxx/gnu/configure new file mode 100755 index 0000000..b9c6ef6 --- /dev/null +++ b/build-0.3/cxx/gnu/configure @@ -0,0 +1,55 @@ +#! /usr/bin/env bash + +# file : build/cxx/gnu/configure +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +# $1 out file +# $2 optimize (y/n) +# +# bld_root - build root +# project_name - project name +# + + +source $bld_root/dialog.bash + +$echo +$echo +$echo "configuring '$project_name'" +$echo +$echo + +$echo +$echo "Please enter the g++ binary you would like to use, for example 'g++-3.4'," +$echo "'/usr/local/bin/g++' or 'distcc g++'." +$echo + +cxx_gnu=`read_path --command g++` +cxx_gnu_libraries=`$cxx_gnu -print-search-dirs | sed -e 's/libraries: =//p' -e d` + + +optimization= + +if [ "$2" == "y" ]; then + + $echo + $echo "Please select the optimization level you would like to use:" + $echo + $echo "(1) -O1 [Tries to reduce code size and execution time, without" + $echo " performing any optimizations that take a great deal of" + $echo " compilation time.]" + $echo "(2) -O2 [Performs nearly all supported optimizations that do not" + $echo " involve a space-speed tradeoff.]" + $echo "(3) -O3 [Optimize even more.]" + $echo "(4) -Os [Optimize for size.]" + $echo + + optimization=`read_option "-O1 -O2 -O3 -Os" "-O2"` + +fi + +echo "cxx_gnu := $cxx_gnu" > $1 +echo "cxx_gnu_libraries := $cxx_gnu_libraries" >> $1 +echo "cxx_gnu_optimization_options := $optimization" >> $1 diff --git a/build-0.3/cxx/gnu/cxx-d.make b/build-0.3/cxx/gnu/cxx-d.make new file mode 100644 index 0000000..642a846 --- /dev/null +++ b/build-0.3/cxx/gnu/cxx-d.make @@ -0,0 +1,59 @@ +# file : build/cxx/gnu/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/gnu/configuration.make) + +# Make will try to build dependecies (since they are ultimately included +# files) during configuartion phase without cxx_gnu being discovered yet. +# This is also why dependecies should be included with -include. +# +ifdef cxx_gnu + +$(out_base)/%.o.d: cxx := $(cxx_gnu) +$(out_base)/%.o.d: cpp_options ?= + +#@@ This needs to be shared with cxx-o. +# +#@@ wrong prefix +# +$(out_base)/%.o.d: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o.d: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +.PRECIOUS: $(out_base)/%.o.d + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o.d: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +endif + +.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean + +$(out_base)/%.o.d.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) + +endif diff --git a/build-0.3/cxx/gnu/cxx-o.make b/build-0.3/cxx/gnu/cxx-o.make new file mode 100644 index 0000000..0320177 --- /dev/null +++ b/build-0.3/cxx/gnu/cxx-o.make @@ -0,0 +1,41 @@ +# file : build/cxx/gnu/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/gnu/configuration.make) + +$(out_base)/%.o: cxx := $(cxx_gnu) +$(out_base)/%.o: cxx_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options) + +#@@ wrong prefix +# +$(out_base)/%.o: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +endif + +.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean + +$(out_base)/%.o.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) diff --git a/build-0.3/cxx/gnu/o-e.make b/build-0.3/cxx/gnu/o-e.make new file mode 100644 index 0000000..8c233bd --- /dev/null +++ b/build-0.3/cxx/gnu/o-e.make @@ -0,0 +1,39 @@ +# file : build/cxx/gnu/o-e.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/gnu/configuration.make) + +#@@ should it be lib%.so? +# +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +ifneq ($(cxx_gnu_libraries),) +vpath %.so $(cxx_gnu_libraries) +vpath %.a $(cxx_gnu_libraries) +endif + +$(out_base)/%: ld := $(cxx_gnu) +$(out_base)/%: ld_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options) $(cxx_ld_extra_options) + +$(out_base)/%: expand-l = $(if $(subst n,,$(cxx_rpath)),\ +$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\ +$(shell sed -e 's%^rpath:\(.*\)%%' $1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%: $(out_base)/%.o +else +$(out_base)/%: $(out_base)/%.o | $$(dir $$@). +endif + $(call message,ld $@,$(ld) \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + +.PHONY: $(out_base)/%.o.clean + +$(out_base)/%.o.clean: + $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@))) diff --git a/build-0.3/cxx/gnu/o-l.make b/build-0.3/cxx/gnu/o-l.make new file mode 100644 index 0000000..e378a4d --- /dev/null +++ b/build-0.3/cxx/gnu/o-l.make @@ -0,0 +1,72 @@ +# file : build/cxx/gnu/o-l.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/gnu/configuration.make) + +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +ifneq ($(cxx_gnu_libraries),) +vpath %.so $(cxx_gnu_libraries) +vpath %.a $(cxx_gnu_libraries) +endif + +ifdef ld_lib_type + +.PHONY: $(out_base)/%.l.o.clean + +ifeq ($(ld_lib_type),archive) + +$(out_base)/%.l: ar := $(ld_lib_ar) +$(out_base)/%.l: ar_options ?= -rc + +$(out_base)/%.l: ranlib := $(ld_lib_ranlib) +$(out_base)/%.l: ranlib_options ?= + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^)) + $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a) + $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@))) + +else + +$(out_base)/%.l: ld := $(cxx_gnu) +$(out_base)/%.l: ld_options := $(cxx_gnu_optimization_options) $(cxx_gnu_debugging_options) +$(out_base)/%.l: c_pic_options := -fPIC +$(out_base)/%.l: cxx_pic_options := -fPIC +$(out_base)/%.l: comma_ := , + +$(out_base)/%.l: expand-l = $(if $(subst n,,$(cxx_rpath)),\ +$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\ +$(shell sed -e 's%^rpath:\(.*\)%%' $1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ld $@,$(ld) -shared \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) \ +-o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@) + $(call message,,echo "rpath:$(@D)" >>$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@))) + +endif +endif diff --git a/build-0.3/cxx/intel/configuration-rules.make b/build-0.3/cxx/intel/configuration-rules.make new file mode 100644 index 0000000..577f2f7 --- /dev/null +++ b/build-0.3/cxx/intel/configuration-rules.make @@ -0,0 +1,15 @@ +# file : build/cxx/intel/configuration-rules.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(dcf_root)/cxx/intel/configuration-dynamic.make: | $(dcf_root)/cxx/intel/. + $(call message,,$(bld_root)/cxx/intel/configure $@ $(cxx_optimize)) + +ifndef %foreign% + +disfigure:: + $(call message,rm $(dcf_root)/cxx/intel/configuration-dynamic.make,\ +rm -f $(dcf_root)/cxx/intel/configuration-dynamic.make) + +endif diff --git a/build-0.3/cxx/intel/configuration-static.make b/build-0.3/cxx/intel/configuration-static.make new file mode 100644 index 0000000..e619365 --- /dev/null +++ b/build-0.3/cxx/intel/configuration-static.make @@ -0,0 +1,4 @@ +# file : build/cxx/intel/configuration-static.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file diff --git a/build-0.3/cxx/intel/configuration.make b/build-0.3/cxx/intel/configuration.make new file mode 100644 index 0000000..eade065 --- /dev/null +++ b/build-0.3/cxx/intel/configuration.make @@ -0,0 +1,34 @@ +# file : build/cxx/intel/configuration.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/cxx/intel/configuration-rules.make,$(dcf_root)) + +# Static configuration. +# +$(call include,$(bld_root)/cxx/intel/configuration-static.make) + +ifneq ($(bld_root),$(scf_root)) +$(call -include,$(scf_root)/cxx/intel/configuration-static.make) +endif + +# Dynamic configuration. +# +cxx_intel := +cxx_intel_optimization_options := + +$(call -include,$(dcf_root)/cxx/intel/configuration-dynamic.make) + +ifdef cxx_intel + +cxx_intel_debugging_options := $(if $(findstring y,$(cxx_debug)),-g) + +$(out_root)/%: cxx_intel_debugging_options := $(cxx_intel_debugging_options) +$(out_root)/%: cxx_intel_optimization_options := $(cxx_intel_optimization_options) + +else + +.NOTPARALLEL: + +endif diff --git a/build-0.3/cxx/intel/configure b/build-0.3/cxx/intel/configure new file mode 100755 index 0000000..ef250cf --- /dev/null +++ b/build-0.3/cxx/intel/configure @@ -0,0 +1,52 @@ +#! /usr/bin/env bash + +# file : build/cxx/intel/configure +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +# $1 out file +# $2 optimize (y/n) +# +# bld_root - build root +# project_name - project name +# + + +source $bld_root/dialog.bash + +$echo +$echo +$echo "configuring '$project_name'" +$echo +$echo + +$echo +$echo "Please enter the icc binary you would like to use, for example " +$echo "'/opt/intel_cc_80/bin/icpc'." +$echo + +cxx_intel=`read_path --command icpc` +cxx_intel_libraries=`$cxx_intel -print-search-dirs | sed -e 's/libraries: =//p' -e d` + +# Intel optimizes by default. +# +optimization=-O0 + +if [ "$2" == "y" ]; then + + $echo + $echo "Please select the optimization level you would like to use:" + $echo + $echo "(1) -O1 [Enable optimizations.]" + $echo "(2) -O2 [Same as -O1.]" + $echo "(3) -O3 [As -O2 plus more aggressive optimizations that may not" + $echo " improve performance for all programs.]" + $echo + + optimization=`read_option "-O1 -O2 -O3" "-O2"` +fi + +echo "cxx_intel := $cxx_intel" > $1 +echo "cxx_intel_libraries := $cxx_intel_libraries" >> $1 +echo "cxx_intel_optimization_options := $optimization" >> $1 diff --git a/build-0.3/cxx/intel/cxx-d.make b/build-0.3/cxx/intel/cxx-d.make new file mode 100644 index 0000000..cd7b567 --- /dev/null +++ b/build-0.3/cxx/intel/cxx-d.make @@ -0,0 +1,59 @@ +# file : build/cxx/intel/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/intel/configuration.make) + +# Make will try to build dependecies (since they are ultimately included +# files) during configuartion phase without cxx_intel being discovered yet. +# This is also why dependecies should be included with -include. +# +ifdef cxx_intel + +$(out_base)/%.o.d: cxx := $(cxx_intel) +$(out_base)/%.o.d: cpp_options ?= + +#@@ This needs to be shared with cxx-o. +# +#@@ wrong prefix +# +$(out_base)/%.o.d: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o.d: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +.PRECIOUS: $(out_base)/%.o.d + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o.d: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/intel/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +endif + +.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean + +$(out_base)/%.o.d.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) + +endif diff --git a/build-0.3/cxx/intel/cxx-o.make b/build-0.3/cxx/intel/cxx-o.make new file mode 100644 index 0000000..c64e2c8 --- /dev/null +++ b/build-0.3/cxx/intel/cxx-o.make @@ -0,0 +1,41 @@ +# file : build/cxx/intel/cxx-o.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/intel/configuration.make) + +$(out_base)/%.o: cxx := $(cxx_intel) +$(out_base)/%.o: cxx_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options) + +#@@ wrong prefix +# +$(out_base)/%.o: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,c++ $<,$(cxx) \ +$(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_options) $(cxx_pic_options) $(cxx_extra_options) -o $@ -c $<) + +endif + +.PHONY: $(out_base)/%.o.$(cxx_s_suffix).clean + +$(out_base)/%.o.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) diff --git a/build-0.3/cxx/intel/o-e.make b/build-0.3/cxx/intel/o-e.make new file mode 100644 index 0000000..c92173a --- /dev/null +++ b/build-0.3/cxx/intel/o-e.make @@ -0,0 +1,39 @@ +# file : build/cxx/intel/o-e.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/intel/configuration.make) + +#@@ should it be lib%.so? +# +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +ifneq ($(cxx_intel_libraries),) +vpath %.so $(cxx_intel_libraries) +vpath %.a $(cxx_intel_libraries) +endif + +$(out_base)/%: ld := $(cxx_intel) +$(out_base)/%: ld_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options) $(cxx_ld_extra_options) + +$(out_base)/%: expand-l = $(if $(subst n,,$(cxx_rpath)),\ +$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\ +$(shell sed -e 's%^rpath:\(.*\)%%' $1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%: $(out_base)/%.o +else +$(out_base)/%: $(out_base)/%.o | $$(dir $$@). +endif + $(call message,ld $@,$(ld) \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) -o $@ \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + +.PHONY: $(out_base)/%.o.clean + +$(out_base)/%.o.clean: + $(call message,rm $(basename $(basename $@)),rm -f $(basename $@) $(basename $(basename $@))) diff --git a/build-0.3/cxx/intel/o-l.make b/build-0.3/cxx/intel/o-l.make new file mode 100644 index 0000000..76f8cff --- /dev/null +++ b/build-0.3/cxx/intel/o-l.make @@ -0,0 +1,72 @@ +# file : build/cxx/intel/o-l.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/intel/configuration.make) + +ifneq ($(cxx_extra_lib_paths),) +vpath %.so $(cxx_extra_lib_paths) +vpath %.a $(cxx_extra_lib_paths) +endif + +ifneq ($(cxx_intel_libraries),) +vpath %.so $(cxx_intel_libraries) +vpath %.a $(cxx_intel_libraries) +endif + +ifdef ld_lib_type + +.PHONY: $(out_base)/%.l.o.clean + +ifeq ($(ld_lib_type),archive) + +$(out_base)/%.l: ar := $(ld_lib_ar) +$(out_base)/%.l: ar_options ?= -rc + +$(out_base)/%.l: ranlib := $(ld_lib_ranlib) +$(out_base)/%.l: ranlib_options ?= + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ar $@,$(ar) $(ar_options) $(@D)/lib$(basename $(@F)).a $(filter %.o,$^)) + $(call message,,$(ranlib) $(ranlib_options) $(@D)/lib$(basename $(@F)).a) + $(call message,,echo "$(@D)/lib$(basename $(@F)).a" >$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.a,$(@F)),$(basename $(basename $@))) + +else + +$(out_base)/%.l: ld := $(cxx_intel) +$(out_base)/%.l: ld_options := $(cxx_intel_optimization_options) $(cxx_intel_debugging_options) +$(out_base)/%.l: c_pic_options := -fPIC +$(out_base)/%.l: cxx_pic_options := -fPIC +$(out_base)/%.l: comma_ := , + +$(out_base)/%.l: expand-l = $(if $(subst n,,$(cxx_rpath)),\ +$(shell sed -e 's%^rpath:\(.*\)%-Wl,-rpath,\1%' $1),\ +$(shell sed -e 's%^rpath:\(.*\)%%' $1)) + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.l: +else +$(out_base)/%.l: | $$(dir $$@). +endif + $(call message,ld $@,$(ld) -shared \ +$(cxx_extra_options) $(ld_options) $(cxx_ld_extra_options) \ +-o $(@D)/lib$(basename $(@F)).so -Wl$(comma_)-soname=lib$(basename $(@F)).so \ +$(foreach f,$^,$(if $(patsubst %.l,,$f),$f,$(call expand-l,$f))) $(cxx_extra_libs)) + $(call message,,echo "$(@D)/lib$(basename $(@F)).so" >$@) + $(call message,,echo "rpath:$(@D)" >>$@) + $(call message,,echo "$(patsubst %.l,`cat %.l`,$(filter %.a %.so %.l,$^))" | xargs -n 1 echo >>$@) + +$(out_base)/%.l.o.clean: + $(call message,rm $$1,rm -f $$1 $(@D)/$(patsubst %.l.o.clean,lib%.so,$(@F)),$(basename $(basename $@))) + +endif +endif diff --git a/build-0.3/cxx/o-e.make b/build-0.3/cxx/o-e.make new file mode 100644 index 0000000..55486b3 --- /dev/null +++ b/build-0.3/cxx/o-e.make @@ -0,0 +1,10 @@ +# file : build/cxx/o-e.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/cxx/configuration.make) + +ifdef cxx_id +$(call include-once,$(bld_root)/cxx/$(cxx_id)/o-e.make,$(out_base)) +endif diff --git a/build-0.3/cxx/o-l.make b/build-0.3/cxx/o-l.make new file mode 100644 index 0000000..5eb04d4 --- /dev/null +++ b/build-0.3/cxx/o-l.make @@ -0,0 +1,11 @@ +# file : build/cxx/o-l.make +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2004-2010 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include,$(bld_root)/ld/configuration-lib.make) +$(call include,$(bld_root)/cxx/configuration.make) + +ifdef cxx_id +$(call include-once,$(bld_root)/cxx/$(cxx_id)/o-l.make,$(out_base)) +endif |