@@ -299,23 +299,49 @@ if (USE_OPENMP)
299
299
endif ()
300
300
endif ()
301
301
302
- # Seems that this hack doesn't required since macOS 11 Big Sur
303
- if (APPLE AND BUILD_SHARED_LIBS AND CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 20 )
304
- set (CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1 )
305
- if (NOT NOFORTRAN )
306
- set (CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1 )
307
- set (CMAKE_Fortran_CREATE_SHARED_LIBRARY
308
- "sh -c 'cat ${CMAKE_BINARY_DIR} /CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru libopenblas.a && exit 0' "
309
- "sh -c '${CMAKE_AR} -rs libopenblas.a ${CMAKE_BINARY_DIR} /driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' "
310
- "sh -c 'echo \"\" | ${CMAKE_Fortran_COMPILER} -o dummy.o -c -x f95-cpp-input - '"
311
- "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'"
312
- "sh -c 'ls -l ${CMAKE_BINARY_DIR} /lib'" )
313
- else ()
314
- set (CMAKE_C_CREATE_SHARED_LIBRARY
315
- "sh -c 'cat ${CMAKE_BINARY_DIR} /CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru libopenblas.a && exit 0' "
316
- "sh -c '${CMAKE_AR} -rs libopenblas.a ${CMAKE_BINARY_DIR} /driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' "
317
- "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'" )
318
- endif ()
302
+ # Fix "Argument list too long" for macOS with Intel CPUs and DYNAMIC_ARCH turned on
303
+ if (APPLE AND DYNAMIC_ARCH AND (NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64" ))
304
+ # Use response files
305
+ set (CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1 )
306
+ # Always build static library first
307
+ if (INTERFACE64 )
308
+ set (STATIC_FILE "libopenblas_64.a" )
309
+ else ()
310
+ set (STATIC_FILE "libopenblas.a" )
311
+ endif ()
312
+ if (BUILD_STATIC_LIBS )
313
+ set (STATIC_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /${STATIC_FILE} " )
314
+ else ()
315
+ add_library (${OpenBLAS_LIBNAME} _static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE} )
316
+ set (STATIC_PATH STATIC_FILE )
317
+ endif ()
318
+ set (CREATE_STATIC_LIBRARY_COMMAND
319
+ "sh -c 'cat ${CMAKE_BINARY_DIR} /CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru ${STATIC_PATH} && exit 0' "
320
+ "sh -c '${CMAKE_AR} -rs ${STATIC_PATH} ${CMAKE_BINARY_DIR} /driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' " )
321
+ if (BUILD_SHARED_LIBS )
322
+ add_dependencies (${OpenBLAS_LIBNAME} _shared ${OpenBLAS_LIBNAME} _static )
323
+ set (SHARED_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /libopenblas.${OpenBLAS_MAJOR_VERSION} .${OpenBLAS_MINOR_VERSION} .dylib" )
324
+ endif ()
325
+ if (USE_OPENMP )
326
+ get_target_property (OMP_LIB OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES )
327
+ else ()
328
+ set (OMP_LIB "" )
329
+ endif ()
330
+ if (NOT NOFORTRAN )
331
+ set (CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1 )
332
+ set (CMAKE_Fortran_CREATE_STATIC_LIBRARY ${CREATE_STATIC_LIBRARY_COMMAND} )
333
+ if (BUILD_SHARED_LIBS )
334
+ set (CMAKE_Fortran_CREATE_SHARED_LIBRARY
335
+ "sh -c 'echo \"\" | ${CMAKE_Fortran_COMPILER} -o dummy.o -c -x f95-cpp-input - '"
336
+ "sh -c '${CMAKE_Fortran_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,${STATIC_PATH} dummy.o -o ${SHARED_PATH} ${OMP_LIB} '" )
337
+ endif ()
338
+ else ()
339
+ set (CMAKE_C_CREATE_STATIC_LIBRARY ${CREATE_STATIC_LIBRARY_COMMAND} )
340
+ if (BUILD_SHARED_LIBS )
341
+ set (CMAKE_C_CREATE_SHARED_LIBRARY
342
+ "sh -c '${CMAKE_C_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,${STATIC_PATH} -o ${SHARED_PATH} ${OMP_LIB} '" )
343
+ endif ()
344
+ endif ()
319
345
endif ()
320
346
321
347
# Handle MSVC exports
0 commit comments