4 prefix = ARGUMENTS.get ('prefix', "/usr/local")
5 usr_local_include = os.path.join (prefix, "include")
6 usr_local_lib = os.path.join (prefix, "lib")
7 usr_local_bin = os.path.join (prefix, "bin")
9 current_directory = Dir ('.').abspath
12 target_usr_local_include = os.path.join (usr_local_include, "anna")
13 target_usr_local_lib = os.path.join (usr_local_lib, "anna")
14 #target_usr_local_bin = usr_local_bin
15 target_opt_bin = os.path.join (opt_bin, "anna")
18 release = ARGUMENTS.get ('release', 0)
21 source_include = os.path.join (current_directory, "include")
23 "/usr/include/oracle/11.2/client",
24 "/usr/include/libxml2",
25 #"/usr/include/boost",
26 #"/usr/include/mysql",
27 #"/usr/include/openssl",
35 # CPPPATH will be relative to src/<target>
36 env.Append (CPPPATH = [source_include, usr_local_include, usr_include ])
37 env.Append (CCFLAGS = '-std=c++0x')
39 env.Append (CXXFLAGS = '-std=c++11')
41 env.Append (LIBS = [''])
45 env.Append (CCFLAGS = '-O3')
46 env.Append (VARIANT = variant)
49 env.Append (CCFLAGS = '-g -O0 -D_DEBUG')
50 env.Append (LIBPATH = os.path.join (current_directory, variant))
51 env.Append (VARIANT = variant)
54 source = os.path.join (current_directory, "source")
55 sources = Glob(source + '/*')
56 for source in sources:
59 compile_library = SConscript (ss, exports='env')
60 libraries.extend (compile_library)
62 env.Default (libraries)
65 ## Run 'scons example' to compile examples
68 example = os.path.join (current_directory, "example")
69 examples = Glob(example + '/*/*')
70 for example in examples:
72 bn_ss = os.path.basename(ss)
73 noExtension = (len(bn_ss.split('.')) == 1)
76 example_program = SConscript (ss, exports='env')
77 example_list.extend (example_program)
78 print example_program [0]
80 #Depends (example_list, compile_library)
82 # In order to remove examples objects with 'scons -c' we need to default them at built ('scons') procedure:
83 env.Default (example_list)
84 #env.Alias ('example', example_list)
88 # Run 'scons test' to compile unit-tests
93 test = os.path.join (current_directory, "test")
94 tests = Glob(test + '/*')
98 test_unit_program = SConscript (ss, exports='env')
99 test_unit_list.extend (test_unit_program)
100 print test_unit_program [0]
101 test_unit = Builder (action = '%s --report_level=short > $TARGET' % test_unit_program [0])
102 env ['BUILDERS']['RunTestUnit'] = test_unit
103 test_unit_result = env.RunTestUnit ('%s.output' % test_unit_program [0], 'SConstruct')
104 run_tests.extend (test_unit_result)
105 Depends (test_unit_result, test_unit_program)
107 env.Alias ('test', run_tests)
108 # In order to remove test objects with 'scons -c' we need to default them at built ('scons') procedure:
109 env.Default (test_unit_list)
112 # Run 'scons doc' to generate documentation
114 # Doxygen Builder does not work properly at the moment. We will use an alias/action
115 #env = Environment(tools = ["default", "doxygen"], toolpath = './docs/doxygen')
116 #env.Doxygen("./docs/doxygen/Doxyfile")
117 # Finally, is enough to execute doxygen which will solve dependences and work for
118 # only modified files:
119 env.Alias('doc', env.Command('doc.dummy', [], 'cd docs/doxygen; doxygen'))
122 # Run 'sudo scons install' to install the suite:
124 # 'sudo scons install-include' for only headers
125 # 'sudo scons install-lib' for only libraries
126 # 'sudo scons install-bin' for only binaries
128 # Run 'sudo scons uninstall' to uninstall the suite
130 # See http://www.scons.org/wiki/InstallTargets and http://www.scons.org/doc/production/HTML/scons-user/c2938.html
131 install_include = env.Install (target_usr_local_include, Glob("include/anna/*"))
132 install_lib = env.Install (target_usr_local_lib, Glob("source/*/" + variant + "/*.a"))
133 install_example = env.Install (target_opt_bin, Glob("example/*/*/" + variant + "/example_*"))
135 Depends (install_include, test_unit_result)
136 Depends (install_lib, test_unit_result)
137 Depends (install_example, test_unit_result)
139 iil = env.Alias('install-include-and-lib', [target_usr_local_include, target_usr_local_lib])
140 iex = env.Alias('install-example', target_opt_bin)
141 env.Alias('install', [iil, iex])
143 env.Command ("uninstall", None, [ Delete(target_usr_local_include), Delete(target_usr_local_lib), Delete(target_opt_bin) ])