@@ -373,6 +373,21 @@ if(POLICY CMP0169)
373373 cmake_policy (SET CMP0169 OLD )
374374endif ()
375375
376+ # Collect macOS-specific flags to forward to child CMake builds so that
377+ # cross-compilation (e.g. universal2, x86_64 under Rosetta) works correctly.
378+ # CMAKE_OSX_ARCHITECTURES is set by scikit-build-core when building Python wheels.
379+ set (_osx_cmake_args "" )
380+ set (_osx_arch_cxxflags "" )
381+ if (CMAKE_OSX_ARCHITECTURES)
382+ list (APPEND _osx_cmake_args "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} " )
383+ foreach (_arch ${CMAKE_OSX_ARCHITECTURES} )
384+ string (APPEND _osx_arch_cxxflags " -arch ${_arch} " )
385+ endforeach ()
386+ endif ()
387+ if (CMAKE_OSX_DEPLOYMENT_TARGET)
388+ list (APPEND _osx_cmake_args "-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} " )
389+ endif ()
390+
376391# ---- CryptoMiniSat5 and its deps (cadical, cadiback) ----
377392# cadical and cadiback are only needed when auto-building CryptoMiniSat5.
378393# cadiback's configure looks for ../cadical, so both must be siblings under deps/.
@@ -397,7 +412,7 @@ if(NOT cryptominisat5_DIR)
397412 if (NOT EXISTS "${_cadical_lib} " )
398413 message (STATUS "CaDiCaL: building in ${_cadical_src} " )
399414 execute_process (
400- COMMAND bash -c "CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=-fPIC ./configure --no-contracts --no-tracing --fp"
415+ COMMAND bash -c "CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=\" -fPIC${_osx_arch_cxxflags} \" ./configure --no-contracts --no-tracing --fp"
401416 WORKING_DIRECTORY "${_cadical_src} "
402417 RESULT_VARIABLE _cadical_cfg_ret
403418 )
@@ -434,7 +449,7 @@ if(NOT cryptominisat5_DIR)
434449 if (NOT EXISTS "${_cadiback_lib} " )
435450 message (STATUS "CaDiBaCk: building in ${_cadiback_src} " )
436451 execute_process (
437- COMMAND bash -c "CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=-fPIC ./configure --release"
452+ COMMAND bash -c "CXX=${CMAKE_CXX_COMPILER} CXXFLAGS=\" -fPIC${_osx_arch_cxxflags} \" ./configure --release"
438453 WORKING_DIRECTORY "${_cadiback_src} "
439454 RESULT_VARIABLE _cadiback_cfg_ret
440455 )
@@ -477,6 +492,7 @@ if(NOT cryptominisat5_DIR)
477492 -Dcadiback_DIR=${cadiback_DIR}
478493 -DGMP_LIBRARY=${GMP_LIBRARY}
479494 -DGMPXX_LIBRARY=${GMPXX_LIBRARY}
495+ ${_osx_cmake_args}
480496 RESULT_VARIABLE _cms_cfg_ret
481497 )
482498 if (NOT _cms_cfg_ret EQUAL 0)
@@ -526,6 +542,7 @@ if(NOT arjun_DIR)
526542 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
527543 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
528544 -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
545+ ${_osx_cmake_args}
529546 RESULT_VARIABLE _sbva_cfg_ret
530547 )
531548 if (NOT _sbva_cfg_ret EQUAL 0)
@@ -563,6 +580,7 @@ if(NOT arjun_DIR)
563580 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
564581 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
565582 -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
583+ ${_osx_cmake_args}
566584 RESULT_VARIABLE _tdec_cfg_ret
567585 )
568586 if (NOT _tdec_cfg_ret EQUAL 0)
@@ -606,6 +624,7 @@ if(NOT arjun_DIR)
606624 -DGMP_LIBRARY=${GMP_LIBRARY}
607625 -DGMPXX_LIBRARY=${GMPXX_LIBRARY}
608626 -DGMP_INCLUDE_DIR=${GMP_INCLUDE_DIR}
627+ ${_osx_cmake_args}
609628 RESULT_VARIABLE _arjun_cfg_ret
610629 )
611630 if (NOT _arjun_cfg_ret EQUAL 0)
@@ -652,6 +671,7 @@ if(USE_EVALMAXSAT)
652671 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
653672 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
654673 -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
674+ ${_osx_cmake_args}
655675 RESULT_VARIABLE _evalmaxsat_cfg_ret
656676 )
657677 if (NOT _evalmaxsat_cfg_ret EQUAL 0)
0 commit comments