Fix DYNAMIC_ARCH builds with CMAKE on OSX and add corresponding test to Azure CI (#3409)
* Use linker response files and a custom link command to get around ARG_MAX limitations on OSX * Reconfigure a redundant job on Azure to test shared library builds with CMAKE and DYNAMIC_ARCH on OSX
This commit is contained in:
parent
54d321d742
commit
ea09355eae
|
@ -244,6 +244,22 @@ if(ANDROID)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (APPLE AND DYNAMIC_ARCH AND BUILD_SHARED_LIBS)
|
||||||
|
set (CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
|
||||||
|
if (NOT NOFORTRAN)
|
||||||
|
set (CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1)
|
||||||
|
set (CMAKE_Fortran_CREATE_SHARED_LIBRARY
|
||||||
|
"sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ar -ru libopenblas.a && exit 0' "
|
||||||
|
"sh -c 'echo \"\" | ${CMAKE_Fortran_COMPILER} -o dummy.o -c -x f95-cpp-input - '"
|
||||||
|
"sh -c '${CMAKE_Fortran_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,libopenblas.a -Wl,-noall_load dummy.o -o ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenblas.${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.dylib'"
|
||||||
|
"sh -c 'ls -l ${CMAKE_BINARY_DIR}/lib'")
|
||||||
|
else ()
|
||||||
|
set (CMAKE_C_CREATE_SHARED_LIBRARY
|
||||||
|
"sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ar -ru libopenblas.a && exit 0' "
|
||||||
|
"sh -c '${CMAKE_C_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,libopenblas.a -Wl,-noall_load -o ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenblas.${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.dylib'")
|
||||||
|
endif ()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Handle MSVC exports
|
# Handle MSVC exports
|
||||||
if(MSVC AND BUILD_SHARED_LIBS)
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_LESS 3.4)
|
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_LESS 3.4)
|
||||||
|
|
|
@ -165,7 +165,7 @@ jobs:
|
||||||
make
|
make
|
||||||
ctest
|
ctest
|
||||||
|
|
||||||
- job: OSX_OpenMP_Clang_gf_cmake
|
- job: OSX_dynarch_cmake
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-10.15'
|
vmImage: 'macOS-10.15'
|
||||||
variables:
|
variables:
|
||||||
|
@ -173,14 +173,12 @@ jobs:
|
||||||
LIBRARY_PATH: /usr/local/opt/llvm/lib
|
LIBRARY_PATH: /usr/local/opt/llvm/lib
|
||||||
steps:
|
steps:
|
||||||
- script: |
|
- script: |
|
||||||
brew update
|
|
||||||
brew install llvm libomp
|
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -DTARGET=CORE2 -DUSE_OPENMP=1 -DINTERFACE64=1 -DDYNAMIC_ARCH=1 -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DNO_AVX512=1 ..
|
cmake -DTARGET=CORE2 -DDYNAMIC_ARCH=1 -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_Fortran_COMPILER=gfortran-10 -DBUILD_SHARED_LIBS=ON ..
|
||||||
make
|
cmake --build .
|
||||||
ctest
|
ctest
|
||||||
|
|
||||||
- job: OSX_Ifort_Clang
|
- job: OSX_Ifort_Clang
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'macOS-10.15'
|
vmImage: 'macOS-10.15'
|
||||||
|
|
Loading…
Reference in New Issue