X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=SConstruct;h=e223dd8c792efbb3148067cf689645b216a3e343;hb=refs%2Fheads%2Fquick_solution;hp=14f7f158d4aa8fa57d12b691ac8c7eed242aef16;hpb=72687d725ac5a53ff71379f72b0eea0b3451b62b;p=anna.git diff --git a/SConstruct b/SConstruct index 14f7f15..e223dd8 100644 --- a/SConstruct +++ b/SConstruct @@ -1,4 +1,5 @@ import os +import sys, select # Basic paths prefix = ARGUMENTS.get ('prefix', "/usr/local") @@ -18,8 +19,29 @@ target_opt_bin = os.path.join (opt_bin, "anna") release = ARGUMENTS.get ('release', 0) # Environment -env = Environment () -oracle_includes = os.environ['ORACLE_HOME'] + "/include" +env = None +rc = os.system("clang++ --version >/dev/null 2>/dev/null") +if rc == 0: + print "\nDetected clang++ installed in the system" + print "\nSelect compiler:\n 1. g++\n 2. clang++" + #option = raw_input("\nInput option [1]: ") or "1" + # Read with timeout: + print "\nInput option [1]: " + option = 1 + i, o, e = select.select( [sys.stdin], [], [], 60 ) + if (i): option = sys.stdin.readline().strip() + else: print "expired! using default ..." + if option == "2": + env = Environment(CXX = 'clang++') + env.Append (CCFLAGS = '-DIS_CLANG') + env.Append (CXXFLAGS = '-Wno-parentheses-equality') + else: + env = Environment() +else: + env = Environment() + +#oracle_includes = os.environ["ORACLE_HOME"] + "/include" +oracle_includes = "/usr/lib/oracle/12.1/client64/include" # Headers source_include = os.path.join (current_directory, "include") @@ -39,9 +61,9 @@ libraries = [] #env = Environment () # CPPPATH will be relative to src/ env.Append (CPPPATH = [source_include, usr_local_include, usr_include ]) -env.Append (CCFLAGS = '-std=c++0x') +#env.Append (CCFLAGS = '-std=c++0x') # C++11 support: -#env.Append (CXXFLAGS = '-std=c++11') +env.Append (CXXFLAGS = '-std=c++11') env.Append (LIBS = ['']) # scons -Q release=1 @@ -51,7 +73,7 @@ if int(release): env.Append (VARIANT = variant) else: variant='debug' - env.Append (CCFLAGS = '-g -O0 -D_DEBUG') + env.Append (CCFLAGS = '-g -O0') env.Append (LIBPATH = os.path.join (current_directory, variant)) env.Append (VARIANT = variant) @@ -66,6 +88,29 @@ for source in sources: 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 # @@ -88,10 +133,10 @@ for example in 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 = [] @@ -123,26 +168,35 @@ env.Default (test_unit_list) # 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")) +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) ])