1 #******************************************************************
3 # Copyright 2015 Samsung Electronics All Rights Reserved.
5 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
19 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 # resource container build script
28 containerJavaSupport = ARGUMENTS.get('containerJavaSupport',0)
30 def filtered_glob(env, pattern, omit=[],
31 ondisk=True, source=False, strings=False):
33 lambda f: os.path.basename(f.path) not in omit,
36 env.AddMethod(filtered_glob, "FilteredGlob");
38 # Add third party libraries
40 SConscript(env.get('SRC_DIR') + '/service/third_party_libs.scons', exports = 'lib_env')
42 resource_container_env = lib_env.Clone()
43 target_os = env.get('TARGET_OS')
44 ######################################################################
46 ######################################################################
48 if int(containerJavaSupport):
50 print 'Java Home: ', os.environ['JAVA_HOME']
51 print 'Java Lib: ', os.environ['JAVA_LIB']
52 resource_container_env.Append(CPPDEFINES={'JAVA_SUPPORT':1})
55 *********************************** Error *************************************
56 * Building resource container without Java support. JAVA_HOME or JAVA_LIB are not set properly
57 * Please configure JAVA_HOME to point to your Java 7 JDK and
58 * JAVA_LIB to your folder containing libjvm
59 * Example: export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
60 * export JAVA_LIB=/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/server
61 *******************************************************************************
63 resource_container_env.Append(CPPDEFINES={'JAVA_SUPPORT':0})
66 resource_container_env.AppendUnique(
68 env.get('SRC_DIR')+'/extlibs',
69 '../resource-encapsulation/include',
75 if int(containerJavaSupport):
77 resource_container_env.AppendUnique(
79 os.environ['JAVA_HOME']+'/include',
80 os.environ['JAVA_HOME']+'/include/linux'
86 if target_os not in ['windows', 'winrt']:
87 resource_container_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall'])
88 if target_os != 'android':
89 resource_container_env.AppendUnique(CXXFLAGS = ['-pthread'])
91 if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
92 resource_container_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
94 if target_os == 'android':
95 resource_container_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
96 resource_container_env.PrependUnique(LIBS = ['gnustl_shared', 'log'])
99 resource_container_env.AppendUnique(LIBPATH = [os.environ['JAVA_LIB']])
104 resource_container_env.PrependUnique(LIBS = ['rcs_client', 'rcs_server', 'rcs_common', 'oc','octbstack', 'oc_logger', 'connectivity_abstraction'])
105 resource_container_env.AppendUnique(LIBS = ['dl', 'boost_system', 'boost_date_time', 'boost_thread'])
107 if int(containerJavaSupport):
109 print 'Java Lib: ', os.environ['JAVA_LIB']
110 resource_container_env.AppendUnique(LIBS = ['jvm'])
114 ######################################################################
115 # Source files and Targets
116 ######################################################################
117 res_container_src = [ Glob('src/*.cpp') ]
119 res_container_static = resource_container_env.StaticLibrary('rcs_container', res_container_src)
120 res_container_shared = resource_container_env.SharedLibrary('rcs_container', res_container_src)
122 resource_container_env.InstallTarget([res_container_static,res_container_shared], 'libResContainer')
123 resource_container_env.UserInstallTargetLib([res_container_static,res_container_shared], 'libResContainer')
125 resource_container_env.UserInstallTargetHeader('include/RCSBundleInfo.h', 'service/resource-container', 'RCSBundleInfo.h')
126 resource_container_env.UserInstallTargetHeader('include/RCSResourceContainer.h', 'service/resource-container', 'RCSResourceContainer.h')
128 ######################################################################
129 # build discomfort index sensor sample bundle
130 ######################################################################
131 if target_os in ['linux', 'tizen', 'android']:
132 DI_sensor_bundle_env = resource_container_env.Clone()
133 DI_sensor_bundle_env.AppendUnique(CCFLAGS = ['-fPIC'])
135 DI_SENSOR_BUNDLE_DIR = 'examples/DiscomfortIndexSensorBundle/'
136 DI_sensor_bundle_env.AppendUnique(CPPPATH = [ DI_SENSOR_BUNDLE_DIR + 'include' ])
138 DI_sensor_bundle_env.PrependUnique(LIBS = ['rcs_container'])
140 DI_sensor_bundle_src = [ Glob(DI_SENSOR_BUNDLE_DIR + 'src/*.cpp')]
142 DISensorBundle = DI_sensor_bundle_env.SharedLibrary('DISensorBundle', DI_sensor_bundle_src)
143 DI_sensor_bundle_env.InstallTarget(DISensorBundle, 'libDISensorBundle')
144 DI_sensor_bundle_env.UserInstallTargetLib(DISensorBundle, 'libDISensorBundle')
146 if target_os == 'linux' :
147 SConscript(DI_SENSOR_BUNDLE_DIR + 'src/inputSensors/SConscript')
148 Command("THSensorApp", DI_SENSOR_BUNDLE_DIR + "src/inputSensors/THSensorApp/THSensorApp", Copy("$TARGET", "$SOURCE"))
149 Command("THSensorApp1", DI_SENSOR_BUNDLE_DIR + "src/inputSensors/THSensorApp1/THSensorApp1", Copy("$TARGET", "$SOURCE"))
151 ######################################################################
152 # build BMI sensor sample bundle
153 ######################################################################
154 if target_os in ['linux', 'tizen', 'android']:
155 BMI_sensor_bundle_env = resource_container_env.Clone()
156 BMI_sensor_bundle_env.AppendUnique(CCFLAGS = ['-fPIC'])
158 BMI_SENSOR_BUNDLE_DIR = 'examples/BMISensorBundle/'
159 BMI_sensor_bundle_env.AppendUnique(CPPPATH = [ BMI_SENSOR_BUNDLE_DIR + 'include' ])
161 BMI_sensor_bundle_env.PrependUnique(LIBS = ['rcs_container'])
163 BMI_sensor_bundle_src = [ Glob(BMI_SENSOR_BUNDLE_DIR + 'src/*.cpp')]
165 BMISensorBundle = BMI_sensor_bundle_env.SharedLibrary('BMISensorBundle', BMI_sensor_bundle_src)
166 BMI_sensor_bundle_env.InstallTarget(BMISensorBundle, 'libBMISensorBundle')
167 BMI_sensor_bundle_env.UserInstallTargetLib(BMISensorBundle, 'libBMISensorBundle')
169 if target_os == 'linux' :
170 SConscript(BMI_SENSOR_BUNDLE_DIR + 'src/inputSensors/SConscript')
171 Command("HeightSensorApp", BMI_SENSOR_BUNDLE_DIR + "src/inputSensors/HeightSensorApp/HeightSensorApp", Copy("$TARGET", "$SOURCE"))
172 Command("WeightSensorApp", BMI_SENSOR_BUNDLE_DIR + "src/inputSensors/WeightSensorApp/WeightSensorApp", Copy("$TARGET", "$SOURCE"))
174 ######################################################################
175 # build hue sample bundle
176 ######################################################################
178 conf2 = Configure(lib_env)
179 if not conf2.CheckLib('curl'):
181 *********************************** Error *************************************
182 * Cannot build hue sample. Please install libcurl.
184 * sudo apt-get install libcurl4-openssl-dev
186 * Hint: check with pkg-config --libs libcurl and clear scons cache.
187 * Skipping hue sample build.
188 *******************************************************************************
191 hue_resource_bundle_env = resource_container_env.Clone()
192 hue_resource_bundle_env.AppendUnique(CCFLAGS = ['-fPIC'])
194 HUE_RESOURCE_BUNDLE_DIR = 'examples/HueSampleBundle/'
195 hue_resource_bundle_env.AppendUnique(CPPPATH = [
196 HUE_RESOURCE_BUNDLE_DIR + 'include',
200 hue_resource_bundle_env.PrependUnique(LIBS = ['curl', 'rcs_container'])
202 hue_resource_bundle_src = [ Glob(HUE_RESOURCE_BUNDLE_DIR + 'src/*.cpp')]
204 HueBundle = hue_resource_bundle_env.SharedLibrary('HueBundle', hue_resource_bundle_src)
205 hue_resource_bundle_env.InstallTarget(HueBundle, 'libHueBundle')
206 hue_resource_bundle_env.UserInstallTargetLib(HueBundle, 'libHueBundle')
207 lib_env = conf2.Finish()
209 ######################################################################
210 # build resource container unit tests
211 ######################################################################
212 if target_os == 'linux':
213 SConscript('unittests/SConscript')
215 ######################################################################
216 # Build Container Sample
217 ######################################################################
218 containersample_env = resource_container_env.Clone();
219 containersample_env.AppendUnique(LINKFLAGS=["-rdynamic"])
221 # Copy test configuration
222 Command("examples/ResourceContainerConfig.xml","examples/ResourceContainerConfig.xml", Copy("$TARGET", "$SOURCE"))
223 Ignore("examples/ResourceContainerConfig.xml", "examples/ResourceContainerConfig.xml")
225 containersample_env.AppendUnique(LIBS = ['rcs_container'])
227 containersampleapp_src = ['examples/ContainerSample.cpp']
228 containersampleapp = containersample_env.Program('ContainerSample',containersampleapp_src)
229 Alias("containersample", containersampleapp)
230 env.AppendTarget('containersample')
232 ######################################################################
233 # Build Container Sample Client
234 ######################################################################
235 containersampleclient_env = resource_container_env.Clone();
237 containersample_env.AppendUnique(LIBS = ['rcs_container'])
238 containersampleclient_src = ['examples/ContainerSampleClient.cpp']
239 containersampleclientapp = containersample_env.Program('ContainerSampleClient',containersampleclient_src)
240 Alias("containersampleclient", containersampleclientapp)
241 env.AppendTarget('containersampleclient')
243 ######################################################################
244 # Build Container Java SDK
245 ######################################################################
246 if target_os == 'android':
247 SConscript('android/SConscript')