summaryrefslogtreecommitdiffstats
path: root/bridges/Library_cpp_uno.mk
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/Library_cpp_uno.mk')
-rw-r--r--bridges/Library_cpp_uno.mk297
1 files changed, 297 insertions, 0 deletions
diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
new file mode 100644
index 0000000000..7b10348e83
--- /dev/null
+++ b/bridges/Library_cpp_uno.mk
@@ -0,0 +1,297 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Library_Library,$(CPPU_ENV)_uno))
+
+ifeq ($(CPUNAME),ARM)
+
+ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_arm
+bridge_noopt_objects := cpp2uno except uno2cpp
+# HACK
+$(call gb_Library_get_linktarget_target,gcc3_uno) : \
+ $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_linux_arm)/armhelper.objectlist
+$(call gb_Library_get_linktarget_target,gcc3_uno) : \
+ EXTRAOBJECTLISTS += $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_linux_arm)/armhelper.objectlist
+endif
+
+else ifeq ($(CPUNAME),AARCH64)
+
+ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX MACOSX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_aarch64
+bridge_asm_objects := vtableslotcall
+bridge_exception_objects := abi cpp2uno uno2cpp
+
+$(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno, \
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/callvirtualfunction, \
+ $(if $(HAVE_GCC_STACK_CLASH_PROTECTION),-fno-stack-clash-protection) \
+ $(if $(COM_IS_CLANG),-fasynchronous-unwind-tables) \
+))
+
+else ifeq ($(OS),iOS)
+bridges_SELECTED_BRIDGE := gcc3_ios
+bridge_noopt_objects := cpp2uno except uno2cpp
+bridge_asm_objects := ios64_helper
+
+else ifeq ($(COM),MSC)
+bridges_SELECTED_BRIDGE := msvc_win32_arm64
+bridge_exception_objects := cpp2uno uno2cpp abi
+bridge_noopt_objects := except
+bridge_asm_objects := callvirtualfunction vtableslotcall
+
+endif
+
+else ifeq ($(CPUNAME),AXP)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_alpha
+bridge_exception_objects := cpp2uno except uno2cpp
+endif
+
+else ifeq ($(CPUNAME),HPPA)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_hppa
+bridge_noopt_objects := call cpp2uno except uno2cpp
+endif
+
+else ifeq ($(CPUNAME),IA64)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_ia64
+bridge_asm_objects := call
+bridge_exception_objects := except
+bridge_noopt_objects := cpp2uno uno2cpp
+endif
+
+else ifeq ($(CPUNAME),INTEL)
+
+ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD HAIKU,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_intel
+bridge_asm_objects := call
+bridge_exception_objects := cpp2uno except uno2cpp
+bridge_noncallexception_objects := callvirtualmethod
+else ifeq ($(COM),MSC)
+bridges_SELECTED_BRIDGE := msvc_win32_intel
+bridge_exception_objects := cpp2uno uno2cpp
+bridge_noopt_objects := except
+else ifeq ($(OS),EMSCRIPTEN)
+bridges_SELECTED_BRIDGE := gcc3_wasm
+bridge_noopt_objects := cpp2uno except uno2cpp
+endif
+
+else ifeq ($(CPUNAME),M68K)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_m68k
+bridge_noopt_objects := cpp2uno except uno2cpp
+endif
+
+else ifeq ($(CPUNAME),MIPS)
+
+ifneq ($(filter LINUX,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_mips
+bridge_noopt_objects := cpp2uno uno2cpp
+bridge_exception_objects := except
+endif
+
+else ifeq ($(CPUNAME),MIPS64)
+
+ifneq ($(filter LINUX,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_mips64
+bridge_asm_objects := call
+bridge_noopt_objects := cpp2uno uno2cpp
+bridge_exception_objects := except
+endif
+
+else ifeq ($(CPUNAME),LOONGARCH64)
+
+ifneq ($(filter LINUX,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_loongarch64
+bridge_asm_objects := call
+bridge_noopt_objects := abi cpp2uno uno2cpp
+bridge_exception_objects := except
+endif
+
+else ifeq ($(CPUNAME),RISCV64)
+
+ifneq ($(filter LINUX,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_riscv64
+bridge_asm_objects := call
+bridge_noopt_objects := abi cpp2uno uno2cpp
+bridge_exception_objects := except
+endif
+
+else ifeq ($(CPUNAME),POWERPC)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_powerpc
+bridge_noopt_objects := uno2cpp
+bridge_exception_objects := cpp2uno except
+endif
+
+else ifeq ($(CPUNAME),POWERPC64)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_powerpc64
+bridge_noopt_objects := cpp2uno uno2cpp
+bridge_exception_objects := except
+endif
+
+else ifeq ($(CPUNAME),S390X)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_s390x
+bridge_exception_objects := cpp2uno except uno2cpp
+endif
+
+else ifeq ($(CPUNAME),SPARC)
+
+ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_sparc
+bridge_asm_objects := call
+bridge_noopt_objects := except
+bridge_exception_objects := cpp2uno uno2cpp
+endif
+
+else ifeq ($(OS)-$(CPUNAME),LINUX-SPARC64)
+
+bridges_SELECTED_BRIDGE := gcc3_linux_sparc64
+bridge_asm_objects := call
+bridge_noopt_objects := cpp2uno uno2cpp
+bridge_exception_objects := except
+
+else ifeq ($(CPUNAME),X86_64)
+
+ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD HAIKU,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_linux_x86-64
+bridge_asm_objects := call
+bridge_noncallexception_noopt_objects := callvirtualmethod
+bridge_exception_objects := abi cpp2uno except rtti uno2cpp
+else ifneq ($(filter MACOSX iOS,$(OS)),)
+bridges_SELECTED_BRIDGE := gcc3_macosx_x86-64
+bridge_exception_objects := abi call cpp2uno except uno2cpp
+bridge_noncallexception_noopt_objects := callvirtualmethod
+else ifeq ($(COM),MSC)
+bridges_SELECTED_BRIDGE := msvc_win32_x86-64
+bridge_exception_objects := cpp2uno uno2cpp
+bridge_noopt_objects := except
+bridge_asm_objects := call
+endif
+
+endif
+
+$(eval $(call gb_Library_use_internal_comprehensive_api,$(CPPU_ENV)_uno,\
+ udkapi \
+))
+
+ifeq ($(OS),MACOSX)
+ifeq ($(CPUNAME),AARCH64)
+$(eval $(call gb_Library_use_internal_comprehensive_api,$(CPPU_ENV)_uno,\
+ offapi \
+))
+endif
+endif
+
+$(eval $(call gb_Library_set_include,$(CPPU_ENV)_uno,\
+ -I$(SRCDIR)/bridges/inc \
+ $$(INCLUDE) \
+))
+
+ifeq ($(HAVE_POSIX_FALLOCATE),YES)
+$(eval $(call gb_Library_add_defs,$(CPPU_ENV)_uno,\
+ -DHAVE_POSIX_FALLOCATE \
+))
+endif
+
+# In case someone enabled the non-standard -fomit-frame-pointer which does not
+# work with the .cxx sources of this library.
+# LTO causes crashes when enabled for this library
+# In case the compiler supports AVX this code segfaults so specifically turn
+# it off.
+ifeq ($(COM),GCC)
+$(eval $(call gb_Library_add_cxxflags,gcc3_uno,\
+ -fno-omit-frame-pointer \
+ -fno-strict-aliasing \
+ -fno-lto \
+ $(if $(filter TRUE,$(HAVE_GCC_AVX)),-mno-avx) \
+))
+
+ifeq ($(filter ANDROID WNT DRAGONFLY FREEBSD NETBSD OPENBSD MACOSX iOS HAIKU,$(OS)),)
+$(eval $(call gb_Library_add_libs,gcc3_uno,\
+ -ldl \
+))
+endif
+endif
+
+ifeq ($(COM),GCC)
+ifneq ($(COM_IS_CLANG),TRUE)
+bridges_NON_CALL_EXCEPTIONS_FLAGS := -fnon-call-exceptions
+endif
+endif
+
+$(eval $(call gb_Library_use_libraries,$(CPPU_ENV)_uno,\
+ cppu \
+ sal \
+))
+
+$(foreach obj,$(bridge_exception_objects),\
+ $(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj))) \
+)
+$(foreach obj,$(bridge_noncallexception_objects),\
+ $(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
+ , $(bridges_NON_CALL_EXCEPTIONS_FLAGS) )) \
+)
+$(foreach obj,$(bridge_noopt_objects),\
+ $(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
+ , $(gb_COMPILERNOOPTFLAGS))) \
+ )
+$(foreach obj,$(bridge_noncallexception_noopt_objects),\
+ $(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj) \
+ , $(gb_COMPILERNOOPTFLAGS) $(bridges_NON_CALL_EXCEPTIONS_FLAGS) )) \
+ )
+$(foreach obj,$(bridge_cxx_objects),\
+ $(eval $(call gb_Library_add_cxxobjects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj))) \
+ )
+$(foreach obj,$(bridge_asm_objects),\
+ $(eval $(call gb_Library_add_asmobjects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/$(obj))) \
+ )
+
+$(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/shared/bridge \
+ bridges/source/cpp_uno/shared/component \
+ bridges/source/cpp_uno/shared/types \
+ bridges/source/cpp_uno/shared/unointerfaceproxy \
+ bridges/source/cpp_uno/shared/vtablefactory \
+ bridges/source/cpp_uno/shared/vtables \
+ ))
+
+ifeq ($(COM),MSC)
+$(eval $(call gb_Library_add_exception_objects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/msvc_shared/cpp2uno \
+ bridges/source/cpp_uno/msvc_shared/except \
+))
+endif
+
+$(eval $(call gb_Library_add_cxxobjects,$(CPPU_ENV)_uno,\
+ bridges/source/cpp_uno/shared/cppinterfaceproxy \
+ , $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
+ ))
+
+ifeq ($(DISABLE_DYNLOADING),TRUE)
+$(eval $(call gb_Library_set_plugin_for_nodep,$(CPPU_ENV)_uno,cppu))
+endif
+
+# vim: set noet sw=4 ts=4: