Update build scripts for changes to RD for Windows
authorHabib Virji <habib.virji@samsung.com>
Tue, 8 Nov 2016 15:09:27 +0000 (15:09 +0000)
committerHabib Virji <habib.virji@samsung.com>
Wed, 9 Nov 2016 09:44:28 +0000 (09:44 +0000)
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 <mike.fenelon@microsoft.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13905
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Dave Thaler <dthaler@microsoft.com>
Reviewed-by: Habib Virji <habib.virji@samsung.com>
Signed-off-by: Habib Virji <habib.virji@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13997
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: Phil Coval <philippe.coval@osg.samsung.com>
Tested-by: Phil Coval <philippe.coval@osg.samsung.com>
Readme.scons.txt
resource/csdk/SConscript
resource/csdk/connectivity/test/SConscript
resource/csdk/security/provisioning/unittest/SConscript
resource/csdk/security/unittest/SConscript
resource/csdk/stack/test/SConscript
run.bat

index 1c2d0dd..0d4e9b0 100644 (file)
@@ -252,32 +252,36 @@ IOS:
     -> Building for a specific transport :
     $ scons TARGET_OS=ios TARGET_ARCH=xxx SYS_VERSION=yyy
 
+Windows:
+ * Possible values for <TARGET_ARCH> 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 <top directory of the project>
+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 <WITH_MQ> 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:
 
index 2c4583a..cb3f9ec 100644 (file)
@@ -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)
index 27fa636..f8a2f65 100644 (file)
@@ -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'):
index e8dc524..54bb3b4 100644 (file)
@@ -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
 ######################################################################
index 6df16cf..41871bb 100644 (file)
@@ -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
 ######################################################################
index 74bf390..9a766a4 100644 (file)
@@ -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 (file)
--- 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"