From 01af6cd7729230bfb9091c6e03358b270e150fc8 Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" Date: Wed, 11 Jan 2023 17:56:13 -0300 Subject: [PATCH] 3rdparty: inject cross flags into the compiler executable Workaround for https://github.com/mesonbuild/meson/issues/11143 See https://github.com/mesonbuild/meson/issues/9866#issuecomment-1071045225 --- 3rdparty/CMakeLists.txt | 26 +++++++++----------------- 3rdparty/meson-compiler.ini.in | 8 ++++++-- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index db781e0ab4e..a2773be94ed 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -367,35 +367,27 @@ macro(mesonify VAR DEST) endmacro() if (ANDROID OR (CMAKE_CROSSCOMPILING AND NOT APPLE)) - set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} --sysroot=${CMAKE_SYSROOT}") - set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} --sysroot=${CMAKE_SYSROOT}") - set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${CMAKE_SYSROOT}") - set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${CMAKE_SYSROOT}") - set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --sysroot=${CMAKE_SYSROOT}") + set(CROSS_COMPILE_FLAGS "--sysroot=${CMAKE_SYSROOT}") + set(CROSS_LINKER_FLAGS "--sysroot=${CMAKE_SYSROOT}") elseif (APPLE) - set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") - set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") - set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") - set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") - set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") + set(CROSS_COMPILE_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT}") + set(CROSS_LINKER_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT}") endif() if (ANDROID OR CMAKE_CROSSCOMPILING) - set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") - set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} --target=${CMAKE_CXX_COMPILER_TARGET}") - set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") - set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") - set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") + set(CROSS_COMPILE_FLAGS "${CROSS_COMPILE_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") + set(CROSS_LINKER_FLAGS "${CROSS_EXE_LINKER_FLAGS} --target=${CMAKE_C_COMPILER_TARGET}") endif() if (CMAKE_OSX_ARCHITECTURES) - set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}") - set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}") + set(CROSS_COMPILE_FLAGS "${CROSS_COMPILE_FLAGS} -arch ${CMAKE_OSX_ARCHITECTURES}") endif() mesonify(SECURITY_C_FLAGS _security_c_flags) mesonify(SECURITY_CXX_FLAGS _security_cxx_flags) mesonify(SECURITY_EXE_LINKER_FLAGS _security_exe_linker_flags) +mesonify(CROSS_COMPILE_FLAGS _cross_compile_flags) +mesonify(CROSS_LINKER_FLAGS _cross_linker_flags) # Block any libraries not coming from our PATH when crosscompiling if (UNIX) diff --git a/3rdparty/meson-compiler.ini.in b/3rdparty/meson-compiler.ini.in index 0be2cc8495c..52f10d535ad 100644 --- a/3rdparty/meson-compiler.ini.in +++ b/3rdparty/meson-compiler.ini.in @@ -1,10 +1,14 @@ [constants] common_args = ['-I@CMAKE_PREFIX_PATH@/include'] common_link_args = ['-L@CMAKE_PREFIX_PATH@/lib'] +cross_compile_args = @_cross_compile_flags@ +cross_link_args = @_cross_linker_flags@ [binaries] -c = '@CMAKE_C_COMPILER@' -cpp = '@CMAKE_CXX_COMPILER@' +c = ['@CMAKE_C_COMPILER@'] + cross_compile_args +cpp = ['@CMAKE_CXX_COMPILER@'] + cross_compile_args +c_ld = ['@CMAKE_LINKER@'] + cross_link_args +cpp_ld = ['@CMAKE_LINKER@'] + cross_link_args ar = '@CMAKE_AR@' strip = '@CMAKE_STRIP@' pkgconfig = '@PKG_CONFIG_EXECUTABLE@'