packages/net/iotivity/patches/068-build-make-build-fail-if-unresolved-symbols-found.patch
Hauke Mehrtens 0ec3a55767 iotivity: update to version 0.9.2
This brings IoTivity to version 0.9.2 in addition it does the following:
* split C and C++ Stack into two packages
* backport some patches which are adding missing dependencies to the shared libs
* remove patches merged upstream
* add some other patches fixing some problems, most of them are already merged upstream
* activate security and logging support

Signed-off-by: Hauke Mehrtens <hauke.mehrtens@lantiq.com>
2015-08-29 22:15:25 +02:00

227 lines
10 KiB
Diff

From 2533c88e18de689dbb26cfd4d585b1a991533c76 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke.mehrtens@lantiq.com>
Date: Tue, 21 Jul 2015 22:00:18 +0200
Subject: [PATCH] build: make build fail if unresolved symbols found
gcc links shared libs also when there are still some unresolved
symbols, you have to specify it explicitly to make it fail in such
cases. I think a compiler should fail in such cases otherwise
someone will add some not intended dependencies or some existing
dependencies are not getting declared.
This patch makes gcc fail in such cases. I have only activated this for
libs build in a Linux build and explicitly deactivates it for windows
(does this even work at all?) This should be build tested with Android
also.
This was build tested for Linux and Android.
This patch depends on some other patches I send which are fixing the
problems I found with this change.
Change-Id: I9ab79896ca2e86e9226cd9b39060a0763ef89694
Signed-off-by: Hauke Mehrtens <hauke.mehrtens@lantiq.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1802
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Erich Keane <erich.keane@intel.com>
Reviewed-by: Hun-je Yeon <hunje.yeon@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
---
extlibs/expat/SConscript | 3 +++
.../csdk/connectivity/samples/android/SConscript | 1 +
resource/csdk/connectivity/src/SConscript | 3 +++
resource/oc_logger/SConscript | 3 +++
resource/src/SConscript | 3 +++
service/notification-manager/SConscript | 3 +++
service/protocol-plugin/plugin-manager/SConscript | 4 ++++
.../plugin-manager/src/Android/jni/SConscript | 1 +
service/protocol-plugin/plugins/SConscript | 3 +++
.../plugins/mqtt-fan/lib/cpp/SConscript | 3 +++
.../resource-manipulation/src/common/SConscript | 5 ++++-
.../src/resourceContainer/SConscript | 3 +++
.../src/resourceContainer/unittests/SConscript | 3 +++
.../src/serverBuilder/SConscript | 3 +++
service/soft-sensor-manager/SConscript | 3 +++
service/things-manager/SConscript | 3 +++
service/things-manager/sdk/java/jni/SConscript | 3 +++
17 files changed, 49 insertions(+), 1 deletion(-)
--- a/extlibs/expat/SConscript
+++ b/extlibs/expat/SConscript
@@ -35,6 +35,9 @@ if target_os not in ['windows', 'winrt']
'-fexceptions', '-fno-common'])
expat_env.AppendUnique(CPPDEFINES = ['HAVE_EXPAT_CONFIG_H'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ expat_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
######################################################################
# Source files and Targets
######################################################################
--- a/resource/csdk/connectivity/src/SConscript
+++ b/resource/csdk/connectivity/src/SConscript
@@ -27,6 +27,9 @@ env.AppendUnique(CPPPATH = [ os.path.joi
if ca_os not in ['arduino', 'windows', 'winrt']:
env.AppendUnique(CPPDEFINES = ['WITH_POSIX'])
+if ca_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if ca_os in ['darwin','ios']:
env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
--- a/resource/oc_logger/SConscript
+++ b/resource/oc_logger/SConscript
@@ -42,6 +42,9 @@ if target_os not in ['arduino', 'windows
liboc_logger_env.AppendUnique(CFLAGS = ['-Wall', '-std=c99', '-fPIC'])
liboc_logger_env.AppendUnique(CXXFLAGS = ['-Wall', '-std=c++0x', '-fPIC'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ liboc_logger_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
######################################################################
# Source files and Targets
######################################################################
--- a/resource/src/SConscript
+++ b/resource/src/SConscript
@@ -51,6 +51,9 @@ if target_os == 'linux':
if target_os not in ['windows', 'winrt']:
oclib_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-fPIC'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ oclib_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'android':
oclib_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
oclib_env.AppendUnique(LIBS = ['boost_thread', 'gnustl_shared', 'log'])
--- a/service/notification-manager/SConscript
+++ b/service/notification-manager/SConscript
@@ -65,6 +65,9 @@ notimgr_env.PrependUnique(LIBS = [
if target_os not in ['windows', 'winrt']:
notimgr_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-fmessage-length=0', '-std=c++0x'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ notimgr_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'linux':
notimgr_env.AppendUnique(LIBS = ['pthread'])
--- a/service/protocol-plugin/plugin-manager/SConscript
+++ b/service/protocol-plugin/plugin-manager/SConscript
@@ -61,6 +61,10 @@ if target_os == 'android':
pmimpl_env = plugin_manager_env.Clone()
pmimpl_env.PrependUnique(CCFLAGS = ['-fPIC'])
pmimpl_env.PrependUnique(LIBS = File(env.get('BUILD_DIR') + '/libcpluff.a'))
+
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ pmimpl_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
pmimpl = pmimpl_env.SharedLibrary('pmimpl', pmimpl_src)
plugin_manager_env.InstallTarget([ppm, pmimpl], 'libppm')
--- a/service/protocol-plugin/plugin-manager/src/Android/jni/SConscript
+++ b/service/protocol-plugin/plugin-manager/src/Android/jni/SConscript
@@ -23,6 +23,7 @@ ppm_jni_env.PrependUnique(LIBS = ['pmimp
ppm_jni_env.AppendUnique(CPPPATH = [ppm_sdk+'/src'])
ppm_jni_env.AppendUnique(CPPPATH = [ppm_sdk+'/../lib/cpluff/libcpluff'])
ppm_jni_env.AppendUnique(CPPPATH = [env.get('SRC_DIR')+'/extlibs/rapidxml'])
+ppm_jni_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
######################################################################
# Source files and Targets
--- a/service/protocol-plugin/plugins/SConscript
+++ b/service/protocol-plugin/plugins/SConscript
@@ -40,6 +40,9 @@ if target_os not in ['windows', 'winrt']
plugins_env.PrependUnique(CCFLAGS = ['-fPIC'])
plugins_env.AppendUnique(LINKFLAGS = ['-fPIC'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ plugins_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os not in ['arduino', 'android']:
plugins_env.AppendUnique(LIBS = ['pthread'])
--- a/service/protocol-plugin/plugins/mqtt-fan/lib/cpp/SConscript
+++ b/service/protocol-plugin/plugins/mqtt-fan/lib/cpp/SConscript
@@ -16,6 +16,9 @@ mosquittopp_env.AppendUnique(CPPPATH = [
if target_os not in ['windows', 'winrt']:
mosquittopp_env.AppendUnique(CFLAGS = ['-Wall', '-ggdb', '-O2', '-fPIC'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ mosquittopp_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'linux':
mosquittopp_env.AppendUnique(LIBS = ['pthread'])
--- a/service/resource-encapsulation/src/resourceContainer/SConscript
+++ b/service/resource-encapsulation/src/resourceContainer/SConscript
@@ -88,6 +88,9 @@ if target_os not in ['windows', 'winrt']
if target_os != 'android':
resource_container_env.AppendUnique(CXXFLAGS = ['-pthread'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ resource_container_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'android':
resource_container_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
resource_container_env.PrependUnique(LIBS = ['gnustl_shared', 'compatibility', 'log'])
--- a/service/resource-encapsulation/src/resourceContainer/unittests/SConscript
+++ b/service/resource-encapsulation/src/resourceContainer/unittests/SConscript
@@ -144,6 +144,9 @@ if int(containerJavaSupport):
test_bundle_env = container_gtest_env.Clone()
test_bundle_env.AppendUnique(CCFLAGS = ['-fPIC'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ test_bundle_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
TEST_BUNDLE_DIR = 'TestBundle/'
test_bundle_env.AppendUnique(CPPPATH = [
TEST_BUNDLE_DIR + 'include',
--- a/service/resource-encapsulation/src/serverBuilder/SConscript
+++ b/service/resource-encapsulation/src/serverBuilder/SConscript
@@ -54,6 +54,9 @@ if target_os not in ['windows', 'winrt']
if target_os != 'android':
server_builder_env.AppendUnique(CXXFLAGS = ['-pthread'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ server_builder_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'android':
server_builder_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
server_builder_env.PrependUnique(LIBS = ['gnustl_shared', 'compatibility', 'log'])
--- a/service/soft-sensor-manager/SConscript
+++ b/service/soft-sensor-manager/SConscript
@@ -45,6 +45,9 @@ if target_os not in ['windows', 'winrt']
soft_sensor_manager_env.AppendUnique(LIBS = ['pthread'])
soft_sensor_manager_env.AppendUnique(CXXFLAGS = ['-pthread'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ soft_sensor_manager_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'android':
soft_sensor_manager_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
soft_sensor_manager_env.AppendUnique(LIBS = ['gnustl_shared'])
--- a/service/things-manager/SConscript
+++ b/service/things-manager/SConscript
@@ -43,6 +43,9 @@ if target_os not in ['windows', 'winrt']
things_manager_env.AppendUnique(CXXFLAGS = ['-pthread'])
things_manager_env.AppendUnique(LIBS = ['pthread'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ things_manager_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
if target_os == 'android':
things_manager_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
things_manager_env.PrependUnique(LIBS = ['gnustl_shared'])
--- a/service/things-manager/sdk/java/jni/SConscript
+++ b/service/things-manager/sdk/java/jni/SConscript
@@ -27,6 +27,9 @@ tm_jni_env.AppendUnique(CPPPATH = [tm_sd
tm_jni_env.AppendUnique(CPPPATH = [base_jni])
tm_jni_env.AppendUnique(CPPPATH = ['tm/inc', 'jniutil/inc', extlibs+'/timer/'])
+if target_os not in ['darwin', 'ios', 'windows', 'winrt']:
+ tm_jni_env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
+
######################################################################
# Source files and Targets
######################################################################