# Build 'resource' sub-project
SConscript(build_dir + 'resource/SConscript')
-if target_os not in ['arduino','darwin','ios', 'android', 'msys_nt']:
+if target_os not in ['arduino','darwin','ios', 'android', 'msys_nt', 'windows']:
SConscript(build_dir + 'examples/OICMiddle/SConscript')
# Build 'service' sub-project
if target_os == 'arduino':
env.UploadHelp()
-# to install the generated pc file into custome prefix location
+# to install the generated pc file into custom prefix location
env.UserInstallTargetPCFile('iotivity.pc', 'iotivity.pc')
else:
i_n = ienv.Install(user_prefix + '/lib', targets)
ienv.Alias("install", i_n)
+ else:
+ i_n = ienv.Install(env.get('BUILD_DIR'), targets)
+ ienv.Alias("install", i_n)
def __installbin(ienv, targets, name):
user_prefix = env.get('PREFIX')
user_prefix = env.get('PREFIX')
if user_prefix:
i_n = ienv.Install(user_prefix + '/include/' + dir ,targets)
- ienv.Alias("install", i_n)
+ else:
+ i_n = ienv.Install(os.path.join(env.get('BUILD_DIR'), 'include', dir), targets)
+ ienv.Alias("install", i_n)
def __installpcfile(ienv, targets, name):
user_prefix = env.get('PREFIX')
i_n = ienv.Install(user_lib + '/pkgconfig', targets)
else:
i_n = ienv.Install(user_prefix + '/lib/pkgconfig', targets)
- ienv.Alias("install", i_n)
+ else:
+ i_n = ienv.Install(env.get('BUILD_DIR') + 'lib/pkgconfig', targets)
+ ienv.Alias("install", i_n)
def __append_target(ienv, name, targets = None):
if targets:
'\@ROUTING_DEFINE\@': routing_define
}
else:
- pc_vars = {'\@PREFIX\@': env.get('BUILD_DIR'),
- '\@EXEC_PREFIX\@': env.get('BUILD_DIR'),
+ pc_vars = {'\@PREFIX\@': env.get('BUILD_DIR').encode('string_escape'),
+ '\@EXEC_PREFIX\@': env.get('BUILD_DIR').encode('string_escape'),
'\@VERSION\@': '1.0.1',
'\@LIB_INSTALL_DIR\@': user_lib,
'\@ROUTING_DEFINE\@': routing_define
# External library include files are in <src_dir>/deps/<target_os>/include
# the library binaries are in <src_dir>/deps/<target_os>/lib/<arch>
-env.AppendUnique(CPPPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'include')])
-env.AppendUnique(LIBPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'lib', target_arch)])
+if target_os not in ['windows']:
+ env.AppendUnique(CPPPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'include')])
+ env.AppendUnique(LIBPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'lib', target_arch)])
# Check whether a library exists, if not, notify user to install it or try to
# download the source code and build it
--- /dev/null
+##
+# This script includes windows specific config (MSVS/MSVC)
+##
+Import('env')
+import os.path
+
+# Set common flags
+if env['CC'] == 'cl':
+ # C4244 conversion from one type to another type results in a possible loss of data.
+ # C4267 conversion from size_t to a smaller type.
+ # C4355 'this' used in base member initializer list.
+ # C4800 forcing value to bool 'true' or 'false'.
+ # C4996 deprecated declaration.
+ # C4820 added padding to the end of a struct.
+ # C4514 unreferenced inline function has been removed
+ # C4365 signed/unsigned mismatch
+ # C4503 decorated name length exceeded, name was truncated
+ env.AppendUnique(CXXFLAGS=['/wd4244', '/wd4267', '/wd4355', '/wd4800', '/wd4996', '/wd4820', '/wd4514', '/wd4365', '/wd4503'])
+ env.AppendUnique(CCFLAGS=['/EHsc'])
+
+ # Enable special exports for unit test purposes
+ if env.get('TEST') == '1':
+ env.AppendUnique(CPPDEFINES = ['ENABLE_TEST_EXPORTS'])
+ # Set release/debug flags
+ if env.get('RELEASE'):
+ env.AppendUnique(CCFLAGS = ['/MD', '/O2', '/GF'])
+ env.AppendUnique(CPPDEFINES = ['NDEBUG'])
+ else:
+ env.AppendUnique(CCFLAGS = ['/MDd', '/Od', '/ZI', '/RTC1', '/Gm'])
+ env.AppendUnique(LINKFLAGS = ['/debug'])
+ env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
+ env.AppendUnique(PATH = os.environ['PATH'])
+
+elif env['CC'] == 'gcc':
+ print "\nError: gcc not supported on Windows. Use Visual Studio!\n"
+ Exit(1);
+
target_os = env.get('TARGET_OS')
target_arch = env.get('TARGET_ARCH')
+src_dir = env.get('SRC_DIR')
+
+boost_version = '1.60.0'
+
+# TODO: Remove coupling between build scripts and 1_58_0 version for Android
+if target_os in ['android']:
+ boost_version = '1.58.0'
+
+boost_base_name = 'boost_'+string.replace(boost_version,'.','_')
+boost_arch_name = boost_base_name+'.zip'
+boost_b2_name = boost_base_name+os.sep+'b2'
+boost_url = 'http://downloads.sourceforge.net/project/boost/boost/'+boost_version+'/'+boost_arch_name+'?r=&ts=1421801329&use_mirror=iweb'
+
+boost_dir = os.path.join(src_dir, 'extlibs','boost')
+boost_bootstrap = os.path.join(boost_dir,'bootstrap.bat')
if 'linux' == target_os :
# Check for Boost libraries in /usr/boost
print 'TODO: Perform platform check for linux'
raise SCons.Errors.EnvironmentError('Unsupported platform')
-if 'android' == target_os :
+elif target_os in ['windows']:
+ if not os.path.exists(boost_bootstrap) and target_os == 'windows':
+ # TODO: Enable installation of Boost via SConscript
+ print '''
+*********************************** Error: ****************************************
+* Please download boost from the following website:
+*
+* ''' + boost_url + '''
+*
+* and extract the contents directly into:
+*
+* ''' + boost_dir + '''
+*
+* such that you can find:
+*
+* ''' + boost_bootstrap + '''
+*
+***********************************************************************************
+'''
+ Exit(1)
+
+elif target_os in ['android']:
env.Tool('URLDownload', toolpath=['../../tools/scons'])
env.Tool('UnpackAll', toolpath=['../../tools/scons'])
env.Tool('BoostBootstrap', toolpath=['../../tools/scons'])
env.Tool('BoostBuild', toolpath=['../../tools/scons'])
- boost_version = '1.58.0'
- boost_base_name = 'boost_'+string.replace(boost_version,'.','_')
- boost_arch_name = boost_base_name+'.zip'
- boost_b2_name = boost_base_name+os.sep+'b2'
- boost_url = 'http://downloads.sourceforge.net/project/boost/boost/'+boost_version+'/'+boost_arch_name+'?r=&ts=1421801329&use_mirror=iweb'
-
host_os = sys.platform
if host_os == 'linux2' :
target_os = env.get('TARGET_OS')
src_dir = env.get('SRC_DIR')
-targets_need_gtest = ['darwin','linux', 'msys_nt']
-gtest_dir = src_dir + '/extlibs/gtest/gtest-1.7.0'
-gtest_zip_file = src_dir + '/extlibs/gtest/gtest-1.7.0.zip'
+targets_need_gtest = ['darwin','linux', 'msys_nt', 'windows']
+gtest_dir = os.path.join(src_dir, 'extlibs', 'gtest', 'gtest-1.7.0')
+gtest_zip_file = os.path.join(src_dir, 'extlibs', 'gtest', 'gtest-1.7.0.zip')
gtest_url = 'https://googletest.googlecode.com/files/gtest-1.7.0.zip'
if target_os in targets_need_gtest:
gtest_zip = gtest_zip_file
# Unzip gtest
- print 'Unzipping google unit test'
- env.UnpackAll(gtest_dir, gtest_zip)
+ if not os.path.exists(os.path.join(gtest_dir, 'configure')):
+ print 'Unzipping google unit test'
+ env.UnpackAll(gtest_dir, gtest_zip)
if target_os == 'darwin':
env.Configure(gtest_dir, 'mv libgtest.a lib/.libs')
env.Configure(gtest_dir, 'cp libgtest_main.a lib')
env.Configure(gtest_dir, 'mv libgtest_main.a lib/.libs')
+
+elif target_os == 'windows':
+ if os.path.exists(gtest_dir):
+ gtest_lib_dir = os.path.join(gtest_dir, 'lib')
+ gtest_dotlib_dir = os.path.join(gtest_lib_dir, '.libs')
+ if env.get('RELEASE'):
+ output_dir = os.path.join(gtest_dir, 'Release') + os.sep
+ else:
+ output_dir = os.path.join(gtest_dir, 'Debug') + os.sep
+
+ # Three parts to the gtest config string...
+ # 1. "Visual Studio" toolchain name.
+ # 2. VS Version + Year ("14 2015", "12 2013").
+ # 3. Target Architecture ("Win64", "Win32").
+ vs_version_year = ""
+ vs_target_arch = ""
+ vs_num = env['MSVC_VERSION']
+ if "12.0" in vs_num:
+ vs_version_year = "Visual Studio 12 2013"
+ elif "14.0" in vs_num:
+ vs_version_year = "Visual Studio 14 2015"
+ else:
+ print "Error: unknown Visual Studio version %s" % vs_num
+
+ vs_arch = env['TARGET_ARCH']
+ if "amd64" in vs_arch:
+ vs_target_arch = "Win64"
+ elif "x86" in vs_arch:
+ vs_target_arch = ""
+ else:
+ print "Error: unknown Visual Studio target arch %s" % vs_arch
+
+ vs_target_string = vs_version_year + " " + vs_target_arch
+
+ # Exit if we didn't get a match for one of the above.
+ if not vs_version_year or not vs_target_arch:
+ Exit(1)
+
+ if not os.path.exists(gtest_lib_dir):
+ # Create lib dir
+ os.mkdir(gtest_lib_dir)
+ os.mkdir(gtest_dotlib_dir)
+
+ # Run configure on gtest
+ print 'Configuring google unit test for compilation'
+ env.Configure(gtest_dir, 'cmake . -G"'+vs_target_string+'" -Dgtest_force_shared_crt=ON')
+
+ # Run make on gtest
+ print 'Making google unit test'
+ env.Configure(gtest_dir, 'msbuild gtest.vcxproj')
+ env.Configure(gtest_dir, 'msbuild gtest_main.vcxproj')
+
+ print 'Moving libraries to lib folder'
+ env.Configure(gtest_dir, 'copy '+output_dir+'gtest.lib %s' % gtest_lib_dir)
+ env.Configure(gtest_dir, 'move '+output_dir+'gtest.lib %s' % gtest_dotlib_dir )
+ env.Configure(gtest_dir, 'copy '+output_dir+'gtest_main.lib %s' % gtest_lib_dir)
+ env.Configure(gtest_dir, 'move '+output_dir+'gtest_main.lib %s' % gtest_dotlib_dir)
+
target_os = sqlite_env.get('TARGET_OS')
src_dir = sqlite_env.get('SRC_DIR')
-targets_need_sqlite = ['linux', 'android', 'tizen', 'msys_nt']
+targets_need_sqlite = ['linux', 'android', 'tizen', 'msys_nt', 'windows']
sqlite_dir = src_dir + '/extlibs/sqlite3/'
sqlite_build_dir = src_dir + '/extlibs/sqlite3/sqlite-amalgamation-3081101/'
sqlite_zip_file = src_dir + '/extlibs/sqlite3/sqlite-amalgamation-3081101.zip'
# *****************************************************************/
Import('env')
-env.AppendUnique(TIMER_SRC = 'timer.c')
-
-libtimer = env.StaticLibrary('libtimer', env.get('TIMER_SRC'), OBJPREFIX='libtimer_')
-env.InstallTarget(libtimer, 'libtimer');
+timer_src = [ 'timer.c' ]
+libtimer = env.StaticLibrary('timer', timer_src, OBJPREFIX='libtimer_')
+env.InstallTarget(libtimer, 'timer');
samples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
samples_env.PrependUnique(LIBS = ['tinydtls'])
+ if target_os in ['windows', 'msys_nt']:
+ samples_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'advapi32'])
+
Alias("samples", [dtlsserver, dtlsclient])
samples_env.AppendTarget('samples')
build_sample = env.get('BUILD_SAMPLE')
src_dir = env.get('SRC_DIR')
-if target_os not in ['android', 'arduino', 'darwin', 'ios', 'tizen', 'msys_nt']:
+if target_os not in ['android', 'arduino', 'darwin', 'ios', 'tizen', 'msys_nt', 'windows']:
SConscript(os.path.join('zigbee_wrapper', 'SConscript'))
calib = env.SharedLibrary('plugin_interface', env.get('PI_SRC'))
else:
calib = env.StaticLibrary('plugin_interface', env.get('PI_SRC'))
-env.InstallTarget(calib, 'libplugin_interface')
-env.UserInstallTargetLib(calib, 'libplugin_interface')
+env.InstallTarget(calib, 'plugin_interface')
+env.UserInstallTargetLib(calib, 'plugin_interface')
# Build liblogger
SConscript('csdk/logger/SConscript')
-if target_os not in ['arduino', 'darwin', 'ios', 'android', 'msys_nt']:
+if target_os not in ['arduino', 'darwin', 'ios', 'android', 'msys_nt', 'windows']:
env.AppendUnique(LIBS=['rt'])
# Build libcoap
# Build examples
SConscript('examples/SConscript')
-if target_os == 'linux':
+if target_os in ['linux', 'windows']:
# Build C Samples
SConscript('csdk/stack/samples/linux/SimpleClientServer/SConscript')
target_os = env.get('TARGET_OS')
+# Add platform-specific helper library
+if target_os in ['windows', 'msys_nt']:
+ SConscript('windows/SConscript')
+
env.AppendUnique(CPPPATH = [
os.path.join(Dir('.').abspath),
- os.path.join(Dir('.').abspath, 'oic_malloc/include'),
- os.path.join(Dir('.').abspath, 'oic_string/include'),
- os.path.join(Dir('.').abspath, 'oic_time/include'),
- os.path.join(Dir('.').abspath, 'ocrandom/include')
+ os.path.join(Dir('.').abspath, 'oic_malloc', 'include'),
+ os.path.join(Dir('.').abspath, 'oic_string', 'include'),
+ os.path.join(Dir('.').abspath, 'oic_time', 'include'),
+ os.path.join(Dir('.').abspath, 'ocrandom', 'include')
])
if target_os == 'tizen':
env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
else:
- env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource/c_common')])
+ env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'c_common')])
if target_os in ['tizen', 'linux']:
env.ParseConfig("pkg-config --cflags --libs uuid")
env.PrependUnique(LIBS = ['c_common'])
common_env = env.Clone()
+common_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource')])
######################################################################
# Build flags
liboctbstack_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-if target_os in ['android', 'linux', 'tizen', 'msys_nt']:
+liboctbstack_env.PrependUnique(LIBS = ['ocsrm', 'coap'])
+if target_os in ['android', 'linux', 'tizen', 'msys_nt', 'windows']:
liboctbstack_env.PrependUnique(LIBS = ['connectivity_abstraction'])
if with_ra_ibb:
if with_ra:
liboctbstack_env.AppendUnique(LIBS = ['ra_xmpp'])
-liboctbstack_env.AppendUnique(LIBS = ['coap', 'm'])
-liboctbstack_env.PrependUnique(LIBS = ['ocsrm'])
+if target_os in ['windows', 'msys_nt']:
+ liboctbstack_env.AppendUnique(CPPDEFINES = ['OC_EXPORT_DLL'])
+ liboctbstack_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi'])
+else:
+ liboctbstack_env.AppendUnique(LIBS = ['m'])
if target_os in ['tizen', 'linux']:
liboctbstack_env.ParseConfig("pkg-config --cflags --libs uuid")
-if target_os not in ['android', 'arduino', 'windows', 'winrt']:
+if target_os not in ['android', 'arduino', 'windows', 'winrt', 'msys_nt']:
liboctbstack_env.AppendUnique(LIBS = ['pthread'])
if target_os == 'arduino':
liboctbstack_env.AppendUnique(CPPDEFINES = ['NDEBUG', 'WITH_ARDUINO'])
-elif target_os not in ['darwin','ios', 'msys_nt']:
+elif target_os not in ['darwin','ios', 'msys_nt', 'windows']:
liboctbstack_env.AppendUnique(CFLAGS = ['-fPIC'])
if target_os in ['darwin', 'ios']:
env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
liboctbstack_env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
liboctbstack_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-if target_os not in ['arduino']:
+if target_os not in ['arduino', 'windows']:
liboctbstack_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
if target_os == 'android':
liboctbstack_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,liboctbstack.so'])
if env.get('WITH_RD') == '1':
liboctbstack_env.PrependUnique(CPPPATH = ['../../service/resource-directory/include'])
+ liboctbstack_env.PrependUnique(LIBPATH = [env.get('BUILD_DIR') + 'service/resource-directory/include'])
liboctbstack_env.AppendUnique(CPPDEFINES = ['-DWITH_RD'])
liboctbstack_env.AppendUnique(LIBS = ['resource_directory'])
liboctbstack_env.Append(LIBS = ['c_common'])
-if target_os in ['msys_nt']:
- liboctbstack_env.Append(LIBS = ['ws2_32', 'iphlpapi'])
-
if liboctbstack_env.get('ROUTING') in ['GW', 'EP']:
liboctbstack_env.Prepend(LIBS = ['routingmanager'])
liboctbstack_src.extend(env['cbor_files'])
-if target_os in ['arduino','darwin','ios'] :
- static_liboctbstack = liboctbstack_env.StaticLibrary('octbstack', liboctbstack_src)
- liboctbstack_env.InstallTarget(static_liboctbstack, 'liboctbstack')
- liboctbstack_env.UserInstallTargetLib(static_liboctbstack, 'liboctbstack')
- liboctbstack_env.UserInstallTargetHeader('stack/include/ocstackconfig.h', 'resource', 'ocstackconfig.h')
- liboctbstack_env.UserInstallTargetHeader('stack/include/octypes.h', 'resource', 'octypes.h')
-else:
- static_liboctbstack = liboctbstack_env.StaticLibrary('octbstack', liboctbstack_src)
+if target_os == 'windows':
+ liboctbstack_env.AppendUnique(CPPDEFINES = ['CBOR_API=__declspec(dllexport)',
+ 'CBOR_PRIVATE_API=__declspec(dllexport)'
+ ])
+
+static_liboctbstack = liboctbstack_env.StaticLibrary('octbstack', liboctbstack_src)
+octbstack_libs = Flatten(static_liboctbstack)
+
+if target_os not in ['arduino','darwin','ios'] :
shared_liboctbstack = liboctbstack_env.SharedLibrary('octbstack', liboctbstack_src)
- liboctbstack_env.InstallTarget([static_liboctbstack, shared_liboctbstack], 'liboctbstack')
- liboctbstack_env.UserInstallTargetLib([static_liboctbstack, shared_liboctbstack], 'liboctbstack')
- liboctbstack_env.UserInstallTargetHeader('stack/include/ocstackconfig.h', 'resource', 'ocstackconfig.h')
- liboctbstack_env.UserInstallTargetHeader('stack/include/octypes.h', 'resource', 'octypes.h')
+ octbstack_libs += Flatten(shared_liboctbstack)
liboctbstack_env.UserInstallTargetHeader('stack/include/ocstack.h', 'resource', 'ocstack.h')
liboctbstack_env.UserInstallTargetHeader('stack/include/ocpresence.h', 'resource', 'ocpresence.h')
+
+liboctbstack_env.InstallTarget(octbstack_libs, 'octbstack')
+liboctbstack_env.UserInstallTargetLib(octbstack_libs, 'octbstack')
+
+liboctbstack_env.UserInstallTargetHeader('stack/include/ocstackconfig.h', 'resource', 'ocstackconfig.h')
+liboctbstack_env.UserInstallTargetHeader('stack/include/octypes.h', 'resource', 'octypes.h')
env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER', 'NFC_ADAPTER'])
elif target_os in['darwin','ios']:
env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER'])
- elif target_os in ['msys_nt']:
+ elif target_os in ['msys_nt', 'windows']:
env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER'])
else:
env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER'])
Exit(1)
if env.get('RELEASE'):
- build_dir = dir + '/out/' + target_os + '/' + target_arch + '/release/'
+ build_dir = os.path.join(dir, 'out', target_os, target_arch, 'release') + os.sep
else:
- build_dir = dir + '/out/' + target_os + '/' + target_arch + '/debug/'
+ build_dir = os.path.join(dir, 'out', target_os, target_arch, 'debug') + os.sep
env.VariantDir(build_dir, dir, duplicate=0)
env.Replace(BUILD_DIR = build_dir)
if user_prefix:
i_n = ienv.Install(user_prefix + '/lib', targets)
ienv.Alias("install", i_n)
+ else:
+ i_n = ienv.Install(env.get('BUILD_DIR') + '/lib', targets)
+ ienv.Alias("install", i_n)
def __installbin(ienv, targets, name):
user_prefix = env.get('PREFIX')
ca_common_src_path + 'caremotehandler.c'
]
-if env['POSIX_SUPPORTED']:
+if env['POSIX_SUPPORTED'] or (ca_os in ['windows']):
platform_src = [
ca_common_src_path + 'cathreadpool_pthreads.c',
ca_common_src_path + 'camutex_pthreads.c'
'-fdata-sections', '-fno-exceptions'])
if target_os == 'msys_nt':
- libcoap_env.AppendUnique(CPPDEFINES = ['WITH_POSIX', '_DEFAULT_SOURCE'])
+ libcoap_env.AppendUnique(CPPDEFINES = ['_DEFAULT_SOURCE'])
libcoap_env.AppendUnique(CFLAGS = ['-std=c99'])
if target_os in ['linux', 'tizen', 'android', 'ios', 'arduino']:
'block.c'
]
-libcoap = libcoap_env.StaticLibrary('libcoap', libcoap_src, OBJPREFIX='libcoap_')
+libcoap = libcoap_env.StaticLibrary('coap', libcoap_src, OBJPREFIX='libcoap_')
-libcoap_env.InstallTarget([libcoap], 'libcoap')
+libcoap_env.InstallTarget([libcoap], 'coap')
# The tinydtls library is found in '#extlibs/tinydtls', where the '#'
# is interpreted by SCons as the top-level iotivity directory where
# the SConscruct file is found.
+build_dir = env.get('BUILD_DIR')
if env.get('SECURED') == '1':
- if ca_os == 'tizen' and os.path.exists(root_dir + '/extlibs/tinydtls'):
- env.SConscript(os.path.join(root_dir, 'extlibs/tinydtls/SConscript'))
- else:
- env.SConscript('#extlibs/tinydtls/SConscript')
- if ca_os == 'tizen' and os.path.exists(root_dir + '/extlibs/timer'):
- env.SConscript(os.path.join(root_dir, 'extlibs/timer/SConscript'))
- env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'extlibs/timer')])
- else:
- env.SConscript('#extlibs/timer/SConscript')
- env.AppendUnique(CPPPATH = ['#extlibs/timer'])
+ env.SConscript(build_dir + 'extlibs/tinydtls/SConscript')
+ env.SConscript(build_dir + 'extlibs/timer/SConscript')
+ env.AppendUnique(CPPPATH = ['#extlibs/timer'])
env.AppendUnique(CA_SRC = [os.path.join(ca_path,
'adapter_util/caadapterutils.c')])
if ca_os != 'android':
lib_env.AppendUnique(LIBS = ['rt'])
calib = lib_env.SharedLibrary('connectivity_abstraction', env.get('CA_SRC'))
-elif ca_os in ['msys_nt']:
+elif ca_os in ['msys_nt', 'windows']:
lib_env.AppendUnique(LIBS = ['coap', 'mswsock', 'ws2_32', 'iphlpapi', 'logger'])
if lib_env.get('SECURED') == '1':
lib_env.AppendUnique(LIBS = ['tinydtls'])
calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
else:
calib = lib_env.StaticLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
-lib_env.InstallTarget(calib, 'libconnectivity_abstraction')
-lib_env.UserInstallTargetLib(calib, 'libconnectivity_abstraction')
+lib_env.InstallTarget(calib, 'connectivity_abstraction')
+lib_env.UserInstallTargetLib(calib, 'connectivity_abstraction')
# Build flags
######################################################################
catest_env.PrependUnique(CPPPATH = [
- '../../ocsocket/include',
'../../logger/include',
'../../stack/include',
'../../extlibs/cjson',
catest_env.Replace(LINKFLAGS = tmplist)
catest_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
-catest_env.AppendUnique(LIBS = ['pthread'])
catest_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
catest_env.AppendUnique(LIBPATH = [src_dir + '/extlibs/gtest/gtest-1.7.0/lib/.libs'])
-catest_env.PrependUnique(LIBS = ['m',
- 'octbstack',
+catest_env.PrependUnique(LIBS = ['octbstack',
'connectivity_abstraction',
'coap',
'gtest',
target_os = env.get('TARGET_OS')
-if target_os not in ['arduino', 'darwin', 'ios', 'msys_nt']:
+if target_os not in ['arduino', 'darwin', 'ios', 'msys_nt', 'windows']:
catest_env.AppendUnique(LIBS=['rt'])
if env.get('SECURED') == '1':
catest_env.AppendUnique(LIBS = ['tinydtls'])
catest_env.AppendUnique(LIBS = ['timer'])
+if env.get('WITH_RD') == '1':
+ catest_env.PrependUnique(LIBS = ['resource_directory'])
+
if env.get('LOGGING'):
catest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
-if target_os in ['msys_nt']:
+if target_os in ['msys_nt', 'windows']:
+ catest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
catest_env.AppendUnique(LIBS = ['ws2_32',
+ 'advapi32',
'iphlpapi'])
+else:
+ catest_env.PrependUnique(LIBS = ['m', 'pthread'])
######################################################################
# Source files and Targets
env.AppendTarget('test')
if env.get('TEST') == '1':
- if target_os == 'linux':
+ if target_os in ['linux', 'windows']:
+ catest_env.AppendENVPath('PATH', env.get('BUILD_DIR'))
from tools.scons.RunTest import *
run_test(catest_env,
'resource_csdk_connectivity_test.memcheck',
##
Import('env')
+import os
lib_env = env.Clone()
SConscript(env.get('SRC_DIR') + '/resource/third_party_libs.scons', 'lib_env')
if target_os not in ['arduino', 'windows', 'winrt']:
libocsrm_env.AppendUnique(CPPDEFINES = ['WITH_POSIX'])
- libocsrm_env.AppendUnique(CFLAGS = ['-std=c99'])
-
-if target_os not in ['windows', 'winrt']:
- libocsrm_env.AppendUnique(CFLAGS = ['-Wall'])
+ libocsrm_env.AppendUnique(CFLAGS = ['-std=c99', '-Wall'])
libocsrm_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-libocsrm_env.AppendUnique(LIBS = ['coap', 'm'])
+libocsrm_env.AppendUnique(LIBS = ['coap'])
if target_os == 'arduino':
libocsrm_env.AppendUnique(CPPDEFINES = ['NDEBUG', 'WITH_ARDUINO'])
-else:
+elif target_os not in ['windows', 'msys_nt']:
libocsrm_env.AppendUnique(CFLAGS = ['-fPIC'])
+ libocsrm_env.AppendUnique(LIBS = ['m'])
+
+if target_os in ['windows', 'msys_nt']:
+ libocsrm_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'oc_logger')])
if target_os in ['darwin', 'ios']:
libocsrm_env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
# Source files and Targets
######################################################################
OCSRM_SRC = 'src/'
+libocsrm_src = [
+ OCSRM_SRC + 'secureresourcemanager.c',
+ OCSRM_SRC + 'resourcemanager.c',
+ OCSRM_SRC + 'aclresource.c',
+ OCSRM_SRC + 'verresource.c',
+ OCSRM_SRC + 'amaclresource.c',
+ OCSRM_SRC + 'amsmgr.c',
+ OCSRM_SRC + 'pstatresource.c',
+ OCSRM_SRC + 'doxmresource.c',
+ OCSRM_SRC + 'credresource.c',
+ OCSRM_SRC + 'svcresource.c',
+ OCSRM_SRC + 'pconfresource.c',
+ OCSRM_SRC + 'dpairingresource.c',
+ OCSRM_SRC + 'policyengine.c',
+ OCSRM_SRC + 'psinterface.c',
+ OCSRM_SRC + 'srmresourcestrings.c',
+ OCSRM_SRC + 'srmutility.c',
+ OCSRM_SRC + 'iotvticalendar.c',
+ OCSRM_SRC + 'base64.c',
+ OCSRM_SRC + 'directpairing.c'
+ ]
+
if env.get('SECURED') == '1':
- libocsrm_src = [
- OCSRM_SRC + 'secureresourcemanager.c',
- OCSRM_SRC + 'resourcemanager.c',
- OCSRM_SRC + 'aclresource.c',
- OCSRM_SRC + 'amaclresource.c',
- OCSRM_SRC + 'amsmgr.c',
- OCSRM_SRC + 'pstatresource.c',
- OCSRM_SRC + 'doxmresource.c',
- OCSRM_SRC + 'credresource.c',
- OCSRM_SRC + 'svcresource.c',
- OCSRM_SRC + 'pconfresource.c',
- OCSRM_SRC + 'dpairingresource.c',
- OCSRM_SRC + 'verresource.c',
- OCSRM_SRC + 'policyengine.c',
- OCSRM_SRC + 'psinterface.c',
- OCSRM_SRC + 'srmresourcestrings.c',
- OCSRM_SRC + 'srmutility.c',
- OCSRM_SRC + 'iotvticalendar.c',
- OCSRM_SRC + 'oxmpincommon.c',
- OCSRM_SRC + 'base64.c',
- #pbkdf2.c is required to PIN based OxM only.
- #But we did not use a separate build options to prevent the build command becomes complicated.
- OCSRM_SRC + 'pbkdf2.c',
- OCSRM_SRC + 'directpairing.c'
- ]
-else:
- libocsrm_src = [
- OCSRM_SRC + 'secureresourcemanager.c',
- OCSRM_SRC + 'resourcemanager.c',
- OCSRM_SRC + 'aclresource.c',
- OCSRM_SRC + 'amaclresource.c',
- OCSRM_SRC + 'amsmgr.c',
- OCSRM_SRC + 'pstatresource.c',
- OCSRM_SRC + 'doxmresource.c',
- OCSRM_SRC + 'credresource.c',
- OCSRM_SRC + 'svcresource.c',
- OCSRM_SRC + 'pconfresource.c',
- OCSRM_SRC + 'dpairingresource.c',
- OCSRM_SRC + 'policyengine.c',
- OCSRM_SRC + 'verresource.c',
- OCSRM_SRC + 'psinterface.c',
- OCSRM_SRC + 'srmresourcestrings.c',
- OCSRM_SRC + 'srmutility.c',
- OCSRM_SRC + 'iotvticalendar.c',
- OCSRM_SRC + 'base64.c',
- OCSRM_SRC + 'directpairing.c'
- ]
+ libocsrm_src = libocsrm_src + [OCSRM_SRC + 'oxmpincommon.c', OCSRM_SRC + 'pbkdf2.c']
+
+if target_os in ['windows', 'msys_nt']:
+ libocsrm_src = libocsrm_src + [OCSRM_SRC + 'strptime.c']
if env.get('DTLS_WITH_X509') == '1' and env.get('SECURED') == '1':
crl_src = [OCSRM_SRC + 'crlresource.c']
libocsrm_conf.env.AppendUnique(CPPDEFINES = ['HAVE_STRPTIME'])
libocsrm_env = libocsrm_conf.Finish()
-libocsrm = libocsrm_env.StaticLibrary('libocsrm', libocsrm_src)
+libocsrm = libocsrm_env.StaticLibrary('ocsrm', libocsrm_src)
-libocsrm_env.InstallTarget(libocsrm, 'libocsrm')
+libocsrm_env.InstallTarget(libocsrm, 'ocsrm')
-if target_os in ['linux', 'android', 'tizen', 'msys_nt'] and env.get('SECURED') == '1':
+if target_os in ['linux', 'android', 'tizen', 'msys_nt', 'windows'] and env.get('SECURED') == '1':
SConscript('provisioning/SConscript')
if target_os in ['linux'] and env.get('SECURED') == '1':
if target_os != 'android':
provisioning_env.AppendUnique(LIBS = ['-lpthread', '-ldl'])
+provisioning_conf = Configure(provisioning_env)
+if provisioning_conf.CheckFunc('clock_gettime'):
+ provisioning_conf.env.AppendUnique(CPPDEFINES = ['HAVE_CLOCK_GETTIME'])
+if provisioning_conf.CheckFunc('GetSystemTimeAsFileTime') or target_os == 'windows':
+ # TODO: Remove target_os check.
+ # We currently check for 'windows' as well, because the environment can
+ # sometimes get so polluted that CheckFunc ceases to work!
+ provisioning_conf.env.AppendUnique(CPPDEFINES = ['HAVE_GETSYSTEMTIMEASFILETIME'])
+provisioning_env = provisioning_conf.Finish()
provisioning_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
provisioning_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'coap'])
if target_os != 'tizen':
provisioning_src = provisioning_src + [root_dir+'/extlibs/sqlite3/sqlite3.c' ]
-provisioningserver = provisioning_env.SharedLibrary('ocpmapi', provisioning_src)
+if target_os == 'windows':
+ # TODO: Add OC_EXPORT annotations and enable generation of Windows DLL
+ provisioningserver = provisioning_env.StaticLibrary('ocpmapi', provisioning_src)
+else:
+ provisioningserver = provisioning_env.SharedLibrary('ocpmapi', provisioning_src)
-provisioning_env.InstallTarget(provisioningserver, 'libocpmapi')
-provisioning_env.UserInstallTargetLib(provisioningserver, 'libocpmapi')
+provisioning_env.InstallTarget(provisioningserver, 'ocpmapi')
+provisioning_env.UserInstallTargetLib(provisioningserver, 'ocpmapi')
if env.get('DTLS_WITH_X509') == '1':
SConscript('ck_manager/SConscript')
-if target_os in ['linux', 'msys_nt']:
+if target_os in ['linux', 'msys_nt', 'windows']:
SConscript('sample/SConscript')
#
Import('env')
+import os.path
provisioning_env = env.Clone()
])
target_os = env.get('TARGET_OS')
-provisioning_env.AppendUnique(CFLAGS = ['-D__WITH_DTLS__','-std=c99'])
-provisioning_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread', '-fpermissive'])
provisioning_env.AppendUnique(RPATH = [env.get('BUILD_DIR')])
+provisioning_env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__'])
-if target_os in ['msys_nt']:
- provisioning_env.PrependUnique(LIBS = ['-lpthread', 'ws2_32', 'iphlpapi'])
-else:
- provisioning_env.AppendUnique(LIBS = ['-lpthread','-ldl'])
+if target_os not in ['windows']:
+ provisioning_env.AppendUnique(CFLAGS = ['-std=c99'])
+ provisioning_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread', '-fpermissive'])
+ provisioning_env.AppendUnique(LIBS = ['-lpthread'])
+
+if target_os not in ['msys_nt', 'windows']:
+ provisioning_env.AppendUnique(LIBS = ['-ldl', 'm'])
provisioning_env.ParseConfig('pkg-config --libs glib-2.0');
+ provisioning_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
+else:
+ provisioning_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'csdk')])
+ provisioning_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'advapi32', 'timer'])
-provisioning_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-provisioning_env.PrependUnique(LIBS = ['ocpmapi','oc', 'oc_logger', 'ocsrm','m', 'octbstack', 'connectivity_abstraction', 'coap'])
+provisioning_env.PrependUnique(LIBS = ['ocpmapi','oc', 'oc_logger', 'ocsrm', 'octbstack', 'connectivity_abstraction', 'coap'])
if env.get('SECURED') == '1':
provisioning_env.AppendUnique(LIBS = ['tinydtls'])
srmtest_env = env.Clone()
src_dir = srmtest_env.get('SRC_DIR')
+target_os = env.get('TARGET_OS')
######################################################################
# Build flags
'gtest_main'])
if env.get('SECURED') == '1':
- srmtest_env.AppendUnique(LIBS = ['tinydtls'])
+ srmtest_env.AppendUnique(LIBS = ['tinydtls', 'timer'])
-if not env.get('RELEASE'):
+if env.get('LOGGING'):
srmtest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+if target_os == 'windows':
+ srmtest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
+ srmtest_env.AppendUnique(LIBS = ['advapi32', 'kernel32', 'ws2_32', 'iphlpapi'])
+else:
+ # TODO: Implement feature check.
+ srmtest_env.AppendUnique(CPPDEFINES = ['HAVE_LOCALTIME_R'])
+
######################################################################
# Source files and Targets
######################################################################
Alias("test", [unittest])
unittest_src_dir = src_dir + '/resource/csdk/security/unittest/'
-unittest_build_dir = env.get('BUILD_DIR') + 'resource/csdk/security/unittest'
+unittest_build_dir = os.path.join(env.get('BUILD_DIR'), 'resource', 'csdk', 'security', 'unittest') + os.sep
-srmtest_env.AppendUnique(CPPDEFINES = ['SECURITY_BUILD_UNITTEST_DIR='+unittest_build_dir])
+srmtest_env.AppendUnique(CPPDEFINES = ['SECURITY_BUILD_UNITTEST_DIR='+unittest_build_dir.encode('string_escape')])
srmtest_env.Alias("install", srmtest_env.Install( unittest_build_dir,
unittest_src_dir + 'oic_unittest.json'))
env.AppendTarget('test')
if env.get('TEST') == '1':
target_os = env.get('TARGET_OS')
- if target_os == 'linux':
+ if target_os in ['linux', 'windows']:
out_dir = env.get('BUILD_DIR')
result_dir = env.get('BUILD_DIR') + '/test_out/'
if not os.path.isdir(result_dir):
os.makedirs(result_dir)
srmtest_env.AppendENVPath('GTEST_OUTPUT', ['xml:'+ result_dir])
srmtest_env.AppendENVPath('LD_LIBRARY_PATH', [out_dir])
+ srmtest_env.AppendENVPath('PATH', [os.path.join(out_dir, 'resource', 'csdk')])
srmtest_env.AppendENVPath('LD_LIBRARY_PATH', ['./extlibs/gtest/gtest-1.7.0/lib/.libs'])
ut = srmtest_env.Command ('ut', None, out_dir + '/resource/csdk/security/unittest/unittest')
AlwaysBuild ('ut')
'../../../../logger/include',
'../../../../stack/include',
'../../../../../../extlibs/cjson',
+ '../../../../../../extlibs/boost',
'../../../../../oc_logger/include',
'../../../../../connectivity/lib/libcoap-4.1.1'
])
-samples_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
+cc = env.get('CC')
+if cc in ['gcc']:
+ samples_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
+ samples_env.AppendUnique(LIBS=['-lpthread'])
samples_env.AppendUnique(RPATH = [env.get('BUILD_DIR')])
-samples_env.AppendUnique(LIBS = ['-lpthread' ])
samples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-if target_os in ['darwin', 'ios']:
- samples_env.PrependUnique(LIBS = ['m','octbstack', 'ocsrm', 'connectivity_abstraction','coap' ])
-elif target_os not in ['arduino']:
- samples_env.PrependUnique(LIBS = ['m', 'octbstack', 'ocsrm', 'connectivity_abstraction', 'coap'])
+samples_env.PrependUnique(LIBS = ['octbstack', 'ocsrm', 'connectivity_abstraction', 'coap'])
+
+if target_os not in ['arduino', 'windows', 'darwin', 'ios', 'msys_nt']:
samples_env.AppendUnique(LIBS = ['rt'])
+if target_os not in ['windows']:
+ samples_env.PrependUnique(LIBS = ['m'])
+
if env.get('SECURED') == '1':
samples_env.AppendUnique(LIBS = ['tinydtls'])
--- /dev/null
+#ifndef COMMON_H_
+#define COMMON_H_
+
+const char *getResult(OCStackResult result);
+void StripNewLineChar(char* str);
+
+#endif
# Note: 'pthread' is in libc for android.
if target_os != 'android':
samples_env.AppendUnique(LIBS = ['-lpthread'])
+ samples_env.Append(LINKFLAGS = ['-Wl,--no-as-needed'])
samples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-if target_os == 'msys_nt':
+if target_os in ['windows', 'msys_nt']:
samples_env.PrependUnique(LIBS = ['ocsrm', 'ws2_32', 'iphlpapi'])
-samples_env.PrependUnique(LIBS = ['octbstack', 'm', 'connectivity_abstraction', 'coap'])
+else:
+ samples_env.PrependUnique(LIBS = ['m'])
+samples_env.PrependUnique(LIBS = ['octbstack', 'connectivity_abstraction', 'coap'])
if env.get('SECURED') == '1':
samples_env.AppendUnique(LIBS = ['tinydtls'])
-samples_env.Append(LINKFLAGS = ['-Wl,--no-as-needed'])
-
if target_os == 'android':
samples_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
samples_env.AppendUnique(LIBS = ['gnustl_shared'])
cp -f %{ROOTDIR}/resource/csdk/connectivity/lib/libcoap-4.1.1/libcoap.a %{buildroot}/%{_libdir}
cp /usr/lib/libuuid.so.1 %{buildroot}%{_libdir}
if echo %{SECURED}|grep -qi '1'; then
- cp -f %{ROOTDIR}/extlibs/tinydtls/libtinydtls.a %{buildroot}/%{_libdir}
+ cp -f %{ROOTDIR}/out/tizen/*/*/extlibs/tinydtls/libtinydtls.a %{buildroot}/%{_libdir}
fi
cp -rf %{ROOTDIR}/resource/csdk/stack/include/ocstack.h* %{DEST_INC_DIR}/
])
stacktest_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
-stacktest_env.AppendUnique(LIBS = ['-lpthread'])
stacktest_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
stacktest_env.AppendUnique(LIBPATH = [src_dir + '/extlibs/gtest/gtest-1.7.0/lib/.libs'])
-stacktest_env.PrependUnique(LIBS = ['m',
- 'octbstack',
+stacktest_env.PrependUnique(LIBS = ['octbstack',
'ocsrm',
'connectivity_abstraction',
'coap',
if env.get('LOGGING'):
stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
-if target_os in ['msys_nt']:
- stacktest_env.AppendUnique(LIBS = ['ws2_32',
- 'iphlpapi'])
+if target_os in ['msys_nt', 'windows']:
+ stacktest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
+ stacktest_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'kernel32'])
+else:
+ stacktest_env.PrependUnique(LIBS = ['m', 'pthread'])
######################################################################
# Source files and Targets
env.AppendTarget('test')
if env.get('TEST') == '1':
- target_os = env.get('TARGET_OS')
- if target_os == 'linux':
+ if target_os in ['windows']:
+ stacktest_env.AppendENVPath('PATH', [os.path.join(env.get('BUILD_DIR'), 'resource', 'csdk')])
+ if target_os in ['linux', 'windows']:
from tools.scons.RunTest import *
run_test(stacktest_env,
'resource_csdk_stack_test.memcheck',
if env.get('SECURED') == '1':
examples_env.AppendUnique(LIBS = ['tinydtls'])
examples_env.AppendUnique(CPPDEFINES = ['_WITH_DTLS_'])
+ if target_os in ['msys_nt', 'windows']:
+ examples_env.AppendUnique(LIBS = ['advapi32'])
if target_os == 'android':
examples_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
if target_os in ['msys_nt', 'windows']:
examples_env.AppendUnique(LIBS = ['Comctl32', 'Gdi32', 'User32'])
+if env.get('LOGGING'):
+ examples_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+
+def make_single_file_cpp_program(program_name):
+ return examples_env.Program(program_name, program_name + ".cpp")
+
######################################################################
# Source files and Targets
######################################################################
-simpleserver = examples_env.Program('simpleserver', 'simpleserver.cpp')
-simpleclient = examples_env.Program('simpleclient', 'simpleclient.cpp')
-simpleserverHQ = examples_env.Program('simpleserverHQ', 'simpleserverHQ.cpp')
-simpleclientHQ = examples_env.Program('simpleclientHQ', 'simpleclientHQ.cpp')
-fridgeserver = examples_env.Program('fridgeserver', 'fridgeserver.cpp')
-fridgeclient = examples_env.Program('fridgeclient', 'fridgeclient.cpp')
-presenceserver = examples_env.Program('presenceserver', 'presenceserver.cpp')
-presenceclient = examples_env.Program('presenceclient', 'presenceclient.cpp')
-simpleclientserver = examples_env.Program('simpleclientserver', 'simpleclientserver.cpp')
-roomserver = examples_env.Program('roomserver', 'roomserver.cpp')
-roomclient = examples_env.Program('roomclient', 'roomclient.cpp')
-garageserver = examples_env.Program('garageserver', 'garageserver.cpp')
-garageclient = examples_env.Program('garageclient', 'garageclient.cpp')
-groupserver = examples_env.Program('groupserver', 'groupserver.cpp')
-groupclient = examples_env.Program('groupclient', 'groupclient.cpp')
-lightserver = examples_env.Program('lightserver', 'lightserver.cpp')
-devicediscoveryserver = examples_env.Program('devicediscoveryserver', 'devicediscoveryserver.cpp')
-devicediscoveryclient = examples_env.Program('devicediscoveryclient', 'devicediscoveryclient.cpp')
-threadingsample = examples_env.Program('threadingsample', 'threadingsample.cpp')
+example_names = [
+ 'simpleserver', 'simpleclient',
+ 'simpleclientserver',
+ 'devicediscoveryserver', 'devicediscoveryclient'
+ ]
+
+if target_os not in ['windows', 'msys_nt']:
+ example_names += [
+ 'simpleserverHQ', 'simpleclientHQ',
+ 'fridgeserver', 'fridgeclient',
+ 'presenceserver', 'presenceclient',
+ 'roomserver', 'roomclient',
+ 'garageserver',
+ 'garageclient',
+ 'groupserver',
+ 'groupclient',
+ 'lightserver',
+ 'threadingsample',
+ ]
+
+examples = map(make_single_file_cpp_program, example_names)
+######################################################################
+# Other examples
+######################################################################
clientjson = examples_env.Install(env.get('BUILD_DIR') + '/resource/examples/',
env.get('SRC_DIR') + '/resource/examples/' + 'oic_svr_db_client.dat')
serverjson = examples_env.Install(env.get('BUILD_DIR') + '/resource/examples/',
env.get('SRC_DIR') + '/resource/examples/' + 'oic_svr_db_server.dat')
-examples_array = [simpleserver, simpleclient,
- simpleserverHQ, simpleclientHQ,
- fridgeserver, fridgeclient,
- presenceserver, presenceclient,
- simpleclientserver, roomserver, roomclient, garageserver,
- garageclient,
- groupserver, groupclient,
- lightserver,
- devicediscoveryserver, devicediscoveryclient,
- threadingsample,
- serverjson, clientjson
- ]
-
-# Add platform-specific examples
+examples += [clientjson, serverjson]
if target_os in ['msys_nt', 'windows']:
winUIClient = examples_env.Program('winUIClient', ['winuiclientgui.cpp', 'winuiclient.cpp'])
mediaserver = examples_env.Program('mediaserver', 'mediaserver.cpp')
- examples_array += [winUIClient, mediaserver]
+ examples += [winUIClient, mediaserver]
-Alias("examples", examples_array)
+Alias("examples", examples)
env.AppendTarget('examples')
######################################################################
# Source files and Targets
######################################################################
-liboc_logger_core = liboc_logger_env.SharedLibrary('oc_logger_core', 'c/oc_logger.c', OBJPREFIX='core_')
-liboc_logger = liboc_logger_env.SharedLibrary('oc_logger',
+
+oc_logger_libs = []
+
+if target_os in ['windows', 'msys_nt']:
+ # TODO: Add OC_EXPORT API prefixes to enable oc_logger DLL generation.
+ oc_logger_libs += liboc_logger_env.StaticLibrary('oc_logger',
['c/oc_logger.c', 'c/oc_console_logger.c', 'cpp/oc_ostream_logger.cpp'])
+else:
+ oc_logger_libs += Flatten(liboc_logger_env.SharedLibrary('oc_logger_core',
+ ['c/oc_logger.c'], OBJPREFIX='core_'))
+ oc_logger_libs += Flatten(liboc_logger_env.SharedLibrary('oc_logger',
+ ['c/oc_logger.c', 'c/oc_console_logger.c', 'cpp/oc_ostream_logger.cpp']))
-liboc_logger_env.InstallTarget([liboc_logger_core, liboc_logger], 'liboc_logger')
-liboc_logger_env.UserInstallTargetLib([liboc_logger_core, liboc_logger], 'liboc_logger')
+liboc_logger_env.InstallTarget(oc_logger_libs, 'oc_logger')
+liboc_logger_env.UserInstallTargetLib(oc_logger_libs, 'oc_logger')
liboc_logger_env.UserInstallTargetHeader('include/oc_logger.hpp', 'resource', 'oc_logger.hpp')
liboc_logger_env.UserInstallTargetHeader('include/oc_logger.h', 'resource', 'oc_logger.h')
liboc_logger_env.UserInstallTargetHeader('include/oc_logger_types.h', 'resource', 'oc_logger_types.h')
######################################################################
examples_env.PrependUnique(CPPPATH = ['../include'])
examples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-examples_env.AppendUnique(LIBS = ['oc_logger', 'stdc++'])
+examples_env.AppendUnique(LIBS = ['oc_logger'])
+examples_env.Append(LIBS = ['c_common'])
+
+compiler = env.get('CC')
+if compiler != 'cl':
+ examples_env.AppendUnique(LIBS = ['stdc++'])
target_os = env.get('TARGET_OS')
if target_os == 'android':
if target_os in ['linux'] and env.get('SIMULATOR', False):
oclib_env.Append( RPATH = env.Literal('\\$$ORIGIN'))
-
-if target_os in ['msys_nt']:
+if target_os in ['msys_nt', 'windows']:
oclib_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'oc_logger')])
oclib_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'csdk')])
oclib_env.AppendUnique(LIBS=['octbstack', 'logger', 'oc_logger','connectivity_abstraction', 'ocsrm', 'c_common', 'routingmanager'])
'CAManager.cpp'
]
-oclib = oclib_env.SharedLibrary('oc', oclib_src)
-oclib_env.InstallTarget(oclib, 'liboc')
-oclib_env.UserInstallTargetLib(oclib, 'liboc')
-
+if target_os in ['windows']:
+ oclib_src = oclib_src + ['OCApi.cpp']
+ # TODO: Add OC_EXPORT prefixes to enable DLL generation
+ oclib = oclib_env.StaticLibrary('oc', oclib_src)
+else:
+ oclib = oclib_env.SharedLibrary('oc', oclib_src)
+oclib_env.InstallTarget(oclib, 'oc')
+oclib_env.UserInstallTargetLib(oclib, 'oc')
header_dir = env.get('SRC_DIR') + '/resource/include/'
oclib_env.UserInstallTargetHeader(header_dir + 'OCApi.h', 'resource', 'OCApi.h')
# Too much boost warning, suppress the warning
lib_env.AppendUnique(CCFLAGS = ['-w'])
+elif target_os in ['windows']:
+ SConscript(os.path.join(env.get('SRC_DIR'), 'extlibs', 'boost', 'SConscript'))
+ boost_path = os.path.join(src_dir,'extlibs','boost')
+ lib_env.AppendUnique(CPPPATH = [boost_path])
elif target_os == 'ios':
lib_env.AppendUnique(FRAMEWORKS = ['boost'])
elif target_os == 'darwin':
SConscript('csdk/security/provisioning/unittest/SConscript')
SConscript('provisioning/unittests/SConscript')
-elif target_os == 'darwin':
+elif target_os == 'windows' and env.get('TEST') == '1':
# Verify that 'google unit test' library is installed. If not,
# get it and install it
SConscript(src_dir + '/extlibs/gtest/SConscript')
SConscript('csdk/stack/test/SConscript')
SConscript('csdk/connectivity/test/SConscript')
-elif target_os == 'msys_nt':
+ # Build Security Resource Manager unit tests
+ SConscript('csdk/security/unittest/SConscript')
+
+elif target_os in ['darwin', 'msys_nt']:
# Verify that 'google unit test' library is installed. If not,
# get it and install it
SConscript(src_dir + '/extlibs/gtest/SConscript')
target_os = env.get('TARGET_OS')
-if target_os not in ['arduino','darwin', 'ios']:
+if target_os not in ['arduino','darwin', 'ios', 'windows']:
# Build things manager project
SConscript('things-manager/SConscript')
if target_os in ['linux'] and env.get('SIMULATOR', False):
SConscript('simulator/SConscript')
- # Build resource directory project
- if env.get('WITH_RD') == '1':
- SConscript('resource-directory/SConscript')
+# Build resource directory project
+if env.get('WITH_RD') == '1':
+ SConscript('resource-directory/SConscript')
# Build EasySetup module
if target_os in ['arduino', 'android', 'linux','tizen']:
linux_sample_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
linux_sample_env.AppendUnique(CPPDEFINES = ['LINUX'])
linux_sample_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-linux_sample_env.AppendUnique(LIBS = ['libcoap'])
-linux_sample_env.AppendUnique(LIBS = ['libconnectivity_abstraction'])
-linux_sample_env.AppendUnique(LIBS = ['liboc_logger'])
+linux_sample_env.AppendUnique(LIBS = ['coap'])
+linux_sample_env.AppendUnique(LIBS = ['connectivity_abstraction'])
+linux_sample_env.AppendUnique(LIBS = ['oc_logger'])
linux_sample_env.AppendUnique(LIBS = ['octbstack'])
linux_sample_env.AppendUnique(LIBS = ['oc'])
linux_sample_env.AppendUnique(LIBS = ['pthread'])
##
Import('env')
+rd_env = env.Clone()
-if env.get('RELEASE'):
- env.AppendUnique(CCFLAGS = ['-Os'])
- env.AppendUnique(CPPDEFINES = ['NDEBUG'])
-else:
- env.AppendUnique(CCFLAGS = ['-g'])
-
-if env.get('LOGGING'):
- env.AppendUnique(CPPDEFINES = ['-DTB_LOG'])
-
-lib_env = env.Clone()
-SConscript(env.get('SRC_DIR') + '/service/third_party_libs.scons', 'lib_env')
-rd_env = lib_env.Clone()
+if rd_env.get('LOGGING'):
+ rd_env.AppendUnique(CPPDEFINES = ['-DTB_LOG'])
target_os = env.get('TARGET_OS')
+src_dir = env.get('SRC_DIR')
+
######################################################################
# Build flags
######################################################################
rd_env.AppendUnique(CPPPATH = ['include'])
rd_env.AppendUnique(CPPPATH = ['src/internal'])
-rd_env.AppendUnique(CPPPATH = ['../../resource/csdk/logger/include'])
-rd_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'libcoap'])
+rd_env.AppendUnique(CPPPATH = ['../../resource/csdk/stack/include'])
+rd_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'coap'])
if target_os not in ['windows', 'winrt']:
rd_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-Wextra'])
######################################################################
RD_SRC_DIR = 'src/'
rd_src = [
- RD_SRC_DIR + '/internal/rd_storage.c',
+ RD_SRC_DIR + 'internal/rd_storage.c',
RD_SRC_DIR + 'rd_server.c',
RD_SRC_DIR + 'rd_client.c',
]
else :
rdsdk = rd_env.StaticLibrary('resource_directory', rd_src)
-rd_env.InstallTarget(rdsdk, 'libresource_directory')
-rd_env.UserInstallTargetLib(rdsdk, 'libresource_directory')
-rd_env.UserInstallTargetHeader('/include/rd_client.h', 'service/resource-directory', 'rd_client.h')
-rd_env.UserInstallTargetHeader('/include/rd_server.h', 'service/resource-directory', 'rd_server.h')
+rd_env.InstallTarget(rdsdk, 'resource_directory')
+rd_env.UserInstallTargetLib(rdsdk, 'resource_directory')
+rd_env.UserInstallTargetHeader('include/rd_client.h', 'service/resource-directory', 'rd_client.h')
+rd_env.UserInstallTargetHeader('include/rd_server.h', 'service/resource-directory', 'rd_server.h')
######################################################################
# Samples for the resource directory
######################################################################
-SConscript('samples/SConscript')
+if target_os not in ['windows']:
+ SConscript('samples/SConscript')
rd_sample_app_env = lib_env.Clone()
+target_os = env.get('TARGET_OS')
######################################################################
# Build flags
######################################################################
rd_sample_app_env.AppendUnique(CPPPATH = ['../include'])
-rd_sample_app_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-Wextra', '-std=c++0x'])
+if target_os not in ['windows']:
+ rd_sample_app_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-Wextra', '-std=c++0x'])
rd_sample_app_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
rd_sample_app_env.AppendUnique(RPATH = [env.get('BUILD_DIR')])
rd_sample_app_env.PrependUnique(LIBS = ['resource_directory', 'oc', 'octbstack'])
ResourceClientsdk_static = resourceClient_env.StaticLibrary('rcs_client', client_src)
ResourceClientsdk_shared = resourceClient_env.SharedLibrary('rcs_client', client_src)
-resourceClient_env.InstallTarget([ResourceClientsdk_static,ResourceClientsdk_shared], 'librcs_client')
-resourceClient_env.UserInstallTargetLib([ResourceClientsdk_static,ResourceClientsdk_shared], 'librcs_client')
+resourceClient_env.InstallTarget([ResourceClientsdk_static,ResourceClientsdk_shared], 'rcs_client')
+resourceClient_env.UserInstallTargetLib([ResourceClientsdk_static,ResourceClientsdk_shared], 'rcs_client')
resourceClient_env.UserInstallTargetHeader('include/RCSAddress.h', 'service/resource-encapsulation', 'RCSAddress.h')
resourceClient_env.UserInstallTargetHeader('include/RCSDiscoveryManager.h', 'service/resource-encapsulation', 'RCSDiscoveryManager.h')
resourceClient_env.UserInstallTargetHeader('include/RCSRemoteResourceObject.h', 'service/resource-encapsulation', 'RCSRemoteResourceObject.h')
SConscript('src/resourceBroker/unittest/SConscript')
if target_os == 'android':
- SConscript('android/SConscript')
\ No newline at end of file
+ SConscript('android/SConscript')
else :
resourcehostingsdk = resourcehosting_env.StaticLibrary('resource_hosting', resourcehosting_src)
-resourcehosting_env.InstallTarget(resourcehostingsdk, 'libresource_hosting')
-resourcehosting_env.UserInstallTargetLib(resourcehostingsdk, 'libresource_hosting')
+resourcehosting_env.InstallTarget(resourcehostingsdk, 'resource_hosting')
+resourcehosting_env.UserInstallTargetLib(resourcehostingsdk, 'resource_hosting')
resourcehosting_env.UserInstallTargetHeader('include/Hosting.h',\
'service/resource-hosting', 'Hosting.h')
elif target_os == 'darwin':
lib_env.AppendUnique(CPPPATH = ['/usr/local/include'])
lib_env.AppendUnique(LIBPATH = ['/usr/local/lib'])
+elif target_os == 'windows':
+ boost_path = os.path.join(src_dir,'extlibs','boost')
+ lib_env.AppendUnique(CPPPATH = [boost_path])
Import('env')
lib_env.AppendUnique(LIBPATH = env.get('BUILD_DIR'))
test_cmd = os.path.join(build_dir, test)
- if xml_file:
+ have_valgrind = False
+ if env.get('TARGET_OS') not in ['windows']:
+ have_valgrind = True
+
+ if xml_file and have_valgrind:
# Environment variables to be made available during the
# Valgrind run.
valgrind_environment = ''