#env.Append (CCFLAGS = '-std=c++0x')
# C++11 support:
env.Append (CXXFLAGS = '-std=c++11')
+# Shared libraries using static ones:
+env.Append (CXXFLAGS = '-fPIC')
+#env.Append (CXXFLAGS = '-export-dynamic')
env.Append (LIBS = [''])
# scons -Q release=1
env.Default (libraries)
+#
+## Run 'scons dynamic' to compile dynamic libraries
+#
+dynamic_list = []
+dynamic = os.path.join (current_directory, "dynamic")
+# Find SConstruct files:
+dynamics=[os.path.join(r,f) for r,d,fs in os.walk(dynamic) for f in fs if f.endswith('SConstruct')]
+for dynamic in dynamics:
+ ss = str (dynamic)
+ bn_ss = os.path.basename(ss)
+ if (bn_ss == "SConstruct"):
+ dynamic_program = SConscript (ss, exports='env')
+ if dynamic_program:
+ dynamic_list.extend (dynamic_program)
+ print dynamic_program [0]
+
+#Depends (dynamic_list, compile_library)
+
+# In order to remove dynamics objects with 'scons -c' we need to default them at built ('scons') procedure:
+env.Default (dynamic_list)
+#env.Alias ('dynamic', dynamic_list)
+
+
#
## Run 'scons example' to compile examples
#
env.Default (example_list)
#env.Alias ('example', example_list)
-
#
# Run 'scons test' to compile unit-tests
#
+test_unit_result = None
test_unit_list = []
run_tests = []
# only modified files:
env.Alias('doc', env.Command('doc.dummy', [], 'cd docs/doxygen; doxygen'))
+# Installation aliases:
#
-# Run 'sudo scons install' to install the suite:
-#
-# 'sudo scons install-include' for only headers
-# 'sudo scons install-lib' for only libraries
-# 'sudo scons install-bin' for only binaries
+# 'sudo scons install-include' for only headers
+# 'sudo scons install-lib' for only libraries
+# 'sudo scons install-include-and-lib' for headers & libraries
+# 'sudo scons install-example' for only example binaries/resources
+# 'sudo scons install' to install the whole suite
#
# Run 'sudo scons uninstall' to uninstall the suite
#
# See http://www.scons.org/wiki/InstallTargets and http://www.scons.org/doc/production/HTML/scons-user/c2938.html
install_include = env.Install (target_usr_local_include, Glob("include/anna/*"))
-install_lib = env.Install (target_usr_local_lib, Glob("source/*/" + variant + "/*.a"))
+static_lib_files = 'source/*/' + variant + '/*.a'
+dynamic_lib_files = 'source/*/' + variant + '/*.so'
+files_grabbed = [Glob(e) for e in [static_lib_files, dynamic_lib_files]]
+
+install_lib = env.Install (target_usr_local_lib, files_grabbed)
+install_dynlib = env.Install (target_usr_local_lib, Glob("dynamic/launcher/default/" + variant + "/*.so"))
install_example = env.Install (target_opt_bin, Glob("example/*/*/" + variant + "/example_*"))
-#Default ('install')
-Depends (install_include, test_unit_result)
-Depends (install_lib, test_unit_result)
-Depends (install_example, test_unit_result)
+postinstall_example = env.Command('./example/postinstall.out', None, './example/postinstall.sh')
+#Default ('install')
+if test_unit_result:
+ Depends (install_include, test_unit_result)
+ Depends (install_lib, test_unit_result)
+ Depends (install_dynlib, test_unit_result)
+ Depends (install_example, test_unit_result)
+
+ii = env.Alias('install-include', [target_usr_local_include])
+il = env.Alias('install-lib', [target_usr_local_lib])
+idl = env.Alias('install-dynlib', [target_usr_local_lib])
iil = env.Alias('install-include-and-lib', [target_usr_local_include, target_usr_local_lib])
-iex = env.Alias('install-example', target_opt_bin)
+iex = env.Alias('install-example', [target_opt_bin, postinstall_example])
env.Alias('install', [iil, iex])
env.Command ("uninstall", None, [ Delete(target_usr_local_include), Delete(target_usr_local_lib), Delete(target_opt_bin) ])