+#******************************************************************
+#
+# Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
+#
+#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
##
# The main build script
#
##
import os
-SRC_TOP_DIR = os.path.abspath('.') + '/' #oic-resource project top directory
-
-# Common build options
+# Load common build config
SConscript('build_common/SConscript')
-Import('RELEASE_BUILD', 'BUILD_TARGET', 'TARGET_CPU_ARCH')
-# Set build directory
-if RELEASE_BUILD:
- BUILD_DIR = SRC_TOP_DIR + '/out/' + BUILD_TARGET + '/' + TARGET_CPU_ARCH + '/release/'
-else:
- BUILD_DIR = SRC_TOP_DIR + '/out/' + BUILD_TARGET + '/' + TARGET_CPU_ARCH + '/debug/'
-VariantDir(BUILD_DIR, SRC_TOP_DIR, duplicate=0)
-Export('SRC_TOP_DIR', 'BUILD_DIR')
+Import('env')
+
+if os.environ.get('TERM') != None:
+ env['ENV']['TERM'] = os.environ['TERM']
-if BUILD_TARGET == 'arduino':
+# Load extra options
+SConscript('extra_options.scons')
+
+target_os = env.get('TARGET_OS')
+if target_os == 'arduino':
SConscript('arduino.scons')
-# Build libcoap
-SConscript(BUILD_DIR + 'csdk/libcoap/SConscript')
+if target_os == 'android':
+ SConscript('android/android_api/SConscript')
-# Build liboctbstack
-SConscript(BUILD_DIR + 'csdk/SConscript')
+# By default, src_dir is current dir, the build_dir is:
+# ./out/<target_os>/<target_arch>/<release or debug>/
+#
+# The build_dir is a variant directory of the source directory(You can
+# consider build_dir as a soft link to src_dir, for detail please refer to:
+# http://www.scons.org/doc/production/HTML/scons-user.html#f-VariantDir
+#
+# Any way, to make the output is in build_dir, when load scripts, the path should
+# be relevant to build_dir.
+build_dir = env.get('BUILD_DIR')
-if BUILD_TARGET != 'arduino':
- # Build liboc_logger
- SConscript(BUILD_DIR + 'oc_logger/SConscript')
+# Build 'resource' sub-project
+SConscript(build_dir + 'resource/SConscript')
- # Build liboc
- SConscript(BUILD_DIR + 'src/SConscript')
+if target_os not in ['arduino','darwin','ios', 'android', 'msys_nt', 'windows', 'tizenrt']:
+ SConscript(build_dir + 'examples/OICMiddle/SConscript')
- # Build examples
- SConscript(BUILD_DIR + 'examples/SConscript')
+# Build 'service' sub-project
+if target_os not in ['tizenrt']:
+ SConscript(build_dir + 'service/SConscript')
-# Print targets
-Import('env')
+# Build "cloud" sub-project
+SConscript(build_dir + 'cloud/SConscript')
+
+# Build "plugin interface" sub-project
+if target_os not in ['tizenrt']:
+ SConscript(build_dir + 'plugins/SConscript')
+
+if target_os == 'tizenrt':
+ SConscript('../apps' + '/SConscript')
+
+# Append targets information to the help information, to see help info, execute command line:
+# $ scon [options] -h
+env.PrintTargets()
+
+# Print bin upload command line (arduino only)
+if target_os == 'arduino':
+ env.UploadHelp()
+
+# to install the generated pc file into custom prefix location
+env.UserInstallTargetPCFile('iotivity.pc', 'iotivity.pc')
-Help('''
-===============================================================================
-Targets:\n ''')
-for t in env.get('TS'):
- Help(t + ' ')
-Help('''
-\nDefault all targets will be built. You can specify the target to build:
-
- #scons [options] [target]
-===============================================================================
-''')
\ No newline at end of file