From be9218082e4bd666f76e417502d6260c41890769 Mon Sep 17 00:00:00 2001 From: Habib Virji Date: Tue, 8 Nov 2016 15:09:27 +0000 Subject: [PATCH] Update build scripts for changes to RD for Windows These changes allow Windows to build correctly with Resource Directory code. Changes from WITH_RD to RD_MODE were introduced in early October, but the RUN.BAT file that builds Windows was not updated, so Windows has been building with a broken mix of RD and not RD to this point. Changes to RUN.BAT and SCONS scripts bring Windows builds up-to-date. Change-Id: I9ba789a11fa0ca1865822578f7da8d4a56439660 Signed-off-by: Mike Fenelon Reviewed-on: https://gerrit.iotivity.org/gerrit/13905 Tested-by: jenkins-iotivity Reviewed-by: Dave Thaler Reviewed-by: Habib Virji Signed-off-by: Habib Virji Reviewed-on: https://gerrit.iotivity.org/gerrit/13997 Reviewed-by: Dan Mihai Reviewed-by: Phil Coval Tested-by: Phil Coval --- Readme.scons.txt | 28 ++++++++++++---------- resource/csdk/SConscript | 22 ++++++++++++----- resource/csdk/connectivity/test/SConscript | 3 ++- .../csdk/security/provisioning/unittest/SConscript | 4 ++++ resource/csdk/security/unittest/SConscript | 4 ++++ resource/csdk/stack/test/SConscript | 4 ++++ run.bat | 6 ++--- 7 files changed, 48 insertions(+), 23 deletions(-) diff --git a/Readme.scons.txt b/Readme.scons.txt index 1c2d0dd..0d4e9b0 100644 --- a/Readme.scons.txt +++ b/Readme.scons.txt @@ -252,32 +252,36 @@ IOS: -> Building for a specific transport : $ scons TARGET_OS=ios TARGET_ARCH=xxx SYS_VERSION=yyy +Windows: + * Possible values for are: amd64 + +For convenience to build projects supported on Windows a batch file (run.bat) is provided +to run many build combinations with TARGET_OS to 'windows'. + +1. Go to root directory + $ cd +2. To clean before building: + $ run clean +3. To build debug amd64 binaries: + $ run build +See run.bat for more example usage parameters + * Additional options * VERBOSE=true or false (Show compilation) * RELEASE=true or false (Build for release?) * LOGGING=true or false (Enable stack logging) * SECURED=1 or 0 (Build with DTLS) * TEST=1 or 0 (Run unit tests) - * SECURED=1 or 0 (Build with DTLS) * BUILD_SAMPLE=ON or OFF (Build with sample) * ROUTING=GW or EP (Enable routing) * WITH_TCP=true or false (Enable CoAP over TCP Transport, arduino is not supported) * WITH_RA=true or false (Build with Remote Access module) - * WITH_RD=1 or 0 (Build including Resource Directory) + * RD_MODE=CLIENT or SERVER (Build including Resource Directory) * SIMULATOR=true or false (Build with simulator module) * Possible values for are: PUB,SUB,BROKER (Build including Message Queue) -> PUB : publisher, SUB : subscriber, BROKER : MQ broker(not supported yet) -Note1: Currently most IoTivity project doesn't support Windows, so you can't set -TARGET_OS to 'windows' except the project support Windows. - -That's to say if the project doesn't support Windows, run: - $ scons TARGET_OS=windows .... -or run on Windows - $ scons -may always fail. - -Note2: +Note: 1) for convenience, a script (auto_build.sh) is provided to run possible build at once. Following is the usage: diff --git a/resource/csdk/SConscript b/resource/csdk/SConscript index 2c4583a..cb3f9ec 100644 --- a/resource/csdk/SConscript +++ b/resource/csdk/SConscript @@ -158,6 +158,17 @@ liboctbstack_env.Append(LIBS = ['c_common']) if liboctbstack_env.get('ROUTING') in ['GW', 'EP']: liboctbstack_env.Prepend(LIBS = ['routingmanager']) +if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: + liboctbstack_env.PrependUnique(CPPPATH = ['resource-directory/include']) + if 'CLIENT' in rd_mode: + liboctbstack_env.AppendUnique(CPPDEFINES = ['RD_CLIENT']) + if 'SERVER' in rd_mode: + liboctbstack_env.AppendUnique(CPPDEFINES = ['RD_SERVER']) + if target_os in ['tizen']: + liboctbstack_env.ParseConfig('pkg-config --cflags --libs sqlite3') + else: + liboctbstack_env.AppendUnique(CPPPATH = ['#extlibs/sqlite3']) + ###################################################################### # Source files and Targets ###################################################################### @@ -177,15 +188,14 @@ liboctbstack_src = [ OCTBSTACK_SRC + 'oicgroup.c' ] -if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: - if 'CLIENT' in rd_mode: - liboctbstack_env.AppendUnique(CPPDEFINES = ['RD_CLIENT']) - if 'SERVER' in rd_mode: - liboctbstack_env.AppendUnique(CPPDEFINES = ['RD_SERVER']) - if with_tcp == True: liboctbstack_src.append(OCTBSTACK_SRC + 'oickeepalive.c') +if 'SERVER' in rd_mode: + liboctbstack_src.append(OCTBSTACK_SRC + 'oicresourcedirectory.c') + if target_os not in ['tizen']: + liboctbstack_src.append('#extlibs/sqlite3/sqlite3.c') + if target_os in ['windows', 'msys_nt']: # Avoid a name conflict with the octbstack.lib target of the SharedLibrary. static_liboctbstack = liboctbstack_env.StaticLibrary('octbstack_static', liboctbstack_src) diff --git a/resource/csdk/connectivity/test/SConscript b/resource/csdk/connectivity/test/SConscript index 27fa636..f8a2f65 100644 --- a/resource/csdk/connectivity/test/SConscript +++ b/resource/csdk/connectivity/test/SConscript @@ -26,6 +26,7 @@ gtest_env = SConscript('#extlibs/gtest/SConscript') catest_env = gtest_env.Clone() target_os = catest_env.get('TARGET_OS') target_transport = catest_env.get('TARGET_TRANSPORT') +rd_mode = catest_env.get('RD_MODE') ###################################################################### # Build flags @@ -49,7 +50,7 @@ if target_os not in ['arduino', 'darwin', 'ios', 'msys_nt', 'windows']: if catest_env.get('SECURED') == '1': catest_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto']) -if catest_env.get('WITH_RD') == '1': +if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: catest_env.PrependUnique(LIBS = ['resource_directory']) if catest_env.get('LOGGING'): diff --git a/resource/csdk/security/provisioning/unittest/SConscript b/resource/csdk/security/provisioning/unittest/SConscript index e8dc524..54bb3b4 100644 --- a/resource/csdk/security/provisioning/unittest/SConscript +++ b/resource/csdk/security/provisioning/unittest/SConscript @@ -26,6 +26,7 @@ gtest_env = SConscript('#extlibs/gtest/SConscript') sptest_env = gtest_env.Clone() src_dir = sptest_env.get('SRC_DIR') target_os = sptest_env.get('TARGET_OS') +rd_mode = sptest_env.get('RD_MODE') ###################################################################### # Build flags @@ -88,6 +89,9 @@ if target_os in ['msys_nt', 'windows']: else: sptest_env.AppendUnique(LIBS = ['octbstack']) +if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: + sptest_env.PrependUnique(LIBS = ['resource_directory']) + ###################################################################### # Source files and Targets ###################################################################### diff --git a/resource/csdk/security/unittest/SConscript b/resource/csdk/security/unittest/SConscript index 6df16cf..41871bb 100644 --- a/resource/csdk/security/unittest/SConscript +++ b/resource/csdk/security/unittest/SConscript @@ -26,6 +26,7 @@ gtest_env = SConscript('#extlibs/gtest/SConscript') srmtest_env = gtest_env.Clone() src_dir = srmtest_env.get('SRC_DIR') target_os = srmtest_env.get('TARGET_OS') +rd_mode = srmtest_env.get('RD_MODE') ###################################################################### # Build flags @@ -78,6 +79,9 @@ else: srmtest_env.AppendUnique(CPPDEFINES = ['HAVE_LOCALTIME_R']) srmtest_env.AppendUnique(LIBS = ['octbstack']) +if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: + srmtest_env.PrependUnique(LIBS = ['resource_directory']) + ###################################################################### # Source files and Targets ###################################################################### diff --git a/resource/csdk/stack/test/SConscript b/resource/csdk/stack/test/SConscript index 74bf390..9a766a4 100644 --- a/resource/csdk/stack/test/SConscript +++ b/resource/csdk/stack/test/SConscript @@ -25,6 +25,7 @@ import os.path gtest_env = SConscript('#extlibs/gtest/SConscript') stacktest_env = gtest_env.Clone() target_os = stacktest_env.get('TARGET_OS') +rd_mode = stacktest_env.get('RD_MODE') ###################################################################### # Build flags @@ -63,6 +64,9 @@ if target_os in ['msys_nt', 'windows']: else: stacktest_env.PrependUnique(LIBS = ['m']) +if 'CLIENT' in rd_mode or 'SERVER' in rd_mode: + stacktest_env.PrependUnique(LIBS = ['resource_directory']) + ###################################################################### # Source files and Targets ###################################################################### diff --git a/run.bat b/run.bat index 507724c..facec17 100644 --- a/run.bat +++ b/run.bat @@ -19,7 +19,7 @@ set SECOND_ARG=%2 set DEBUG= if "!SECOND_ARG!"=="debug" ( - set DEBUG="%ProgramFiles(x86)%\Windows Kits\10\Debuggers\x64\cdb.exe" -2 -c "g" + set DEBUG="%ProgramFiles(x86)%\Windows Kits\10\Debuggers\x64\cdb.exe" -2 -c "g" ) IF "%CURRENT_ARG%" == "build" IF "%BUILD_MSYS%" == "" ( @@ -58,8 +58,7 @@ set LOGGING=OFF set WITH_RD=1 set ROUTING=EP set WITH_UPSTREAM_LIBCOAP=0 - -set BUILD_OPTIONS= TARGET_OS=%TARGET_OS% TARGET_ARCH=%TARGET_ARCH% RELEASE=0 WITH_RA=0 TARGET_TRANSPORT=IP SECURED=%SECURED% WITH_TCP=0 BUILD_SAMPLE=ON LOGGING=%LOGGING% TEST=%TEST% WITH_RD=%WITH_RD% ROUTING=%ROUTING% WITH_UPSTREAM_LIBCOAP=%WITH_UPSTREAM_LIBCOAP% +set BUILD_OPTIONS= TARGET_OS=%TARGET_OS% TARGET_ARCH=%TARGET_ARCH% RELEASE=0 WITH_RA=0 TARGET_TRANSPORT=IP SECURED=%SECURED% WITH_TCP=0 BUILD_SAMPLE=ON LOGGING=%LOGGING% TEST=%TEST% RD_MODE=CLIENT ROUTING=%ROUTING% WITH_UPSTREAM_LIBCOAP=%WITH_UPSTREAM_LIBCOAP% REM *** BUILD OPTIONS *** @@ -109,7 +108,6 @@ if "!CURRENT_ARG!"=="server" ( echo SECURED=%SECURED% echo TEST=%TEST% echo LOGGING=%LOGGING% - echo WITH_RD=%WITH_RD% echo ROUTING=%ROUTING% echo WITH_UPSTREAM_LIBCOAP=%WITH_UPSTREAM_LIBCOAP% CL.exe | findstr "Compiler Verison" -- 2.7.4