summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-05-29 09:58:34 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-05-29 12:58:46 +0100
commite1823ea132c41b16fb165a641ce8388585764124 (patch)
treed5007819ef10631f29885573bbbd41755c65abdb /bridges
parent5281a6c101d3a2b6ee54fbba7924510325ca37a6 (diff)
compile callvirtualmethod with -fnon-call-exceptions
Change-Id: Ibcf70dd5626474bb2a023ce43d7ac661401fd1cb
Diffstat (limited to 'bridges')
-rw-r--r--bridges/Library_cpp_uno.mk24
1 files changed, 20 insertions, 4 deletions
diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index f7153c32137e..8835eeb0a78a 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -58,7 +58,8 @@ else ifeq ($(CPU),I)
ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
bridges_SELECTED_BRIDGE := gcc3_linux_intel
bridge_asm_objects := call
-bridge_exception_objects := callvirtualmethod cpp2uno except uno2cpp
+bridge_exception_objects := cpp2uno except uno2cpp
+bridge_noncallexception_objects := callvirtualmethod
else ifeq ($(OS),MACOSX)
bridges_SELECTED_BRIDGE := gcc3_macosx_intel
bridge_asm_objects := call
@@ -121,12 +122,12 @@ else ifeq ($(CPU),X)
ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
bridges_SELECTED_BRIDGE := gcc3_linux_x86-64
bridge_asm_objects := call
-bridge_noopt_objects := callvirtualmethod
+bridge_noncallexception_noopt_objects := callvirtualmethod
bridge_exception_objects := abi cpp2uno except uno2cpp
else ifeq ($(OS),MACOSX)
bridges_SELECTED_BRIDGE := gcc3_macosx_x86-64
bridge_exception_objects := abi call cpp2uno except uno2cpp
-bridge_noopt_objects := callvirtualmethod
+bridge_noncallexception_noopt_objects := callvirtualmethod
else ifeq ($(COM),MSC)
bridges_SELECTED_BRIDGE := msvc_win32_x86-64
bridge_exception_objects := cpp2uno dllinit uno2cpp
@@ -195,6 +196,12 @@ $(eval $(call gb_Library_add_libs,gcc3_uno,\
endif
endif
+ifeq ($(COM),GCC)
+ifneq ($(COM_GCC_IS_CLANG),TRUE)
+bridges_NON_CALL_EXCEPTIONS_FLAGS := -fnon-call-exceptions
+endif
+endif
+
$(eval $(call gb_Library_use_libraries,$(gb_CPPU_ENV)_uno,\
cppu \
sal \
@@ -204,12 +211,21 @@ $(foreach obj,$(bridge_exception_objects),\
$(eval $(call gb_Library_add_exception_objects,$(gb_CPPU_ENV)_uno,\
bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj))) \
)
-
+$(foreach obj,$(bridge_noncallexception_objects),\
+ $(eval $(call gb_Library_add_cxxobjects,$(gb_CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
+ , $(bridges_NON_CALL_EXCEPTIONS_FLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS))) \
+)
$(foreach obj,$(bridge_noopt_objects),\
$(eval $(call gb_Library_add_cxxobjects,$(gb_CPPU_ENV)_uno,\
bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
, $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS))) \
)
+$(foreach obj,$(bridge_noncallexception_noopt_objects),\
+ $(eval $(call gb_Library_add_cxxobjects,$(gb_CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
+ , $(gb_COMPILERNOOPTFLAGS) $(bridges_NON_CALL_EXCEPTIONS_FLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS))) \
+)
$(foreach obj,$(bridge_cxx_objects),\
$(eval $(call gb_Library_add_cxxobjects,$(gb_CPPU_ENV)_uno,\
bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj))) \