1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- diff --git a/CMakeLists.txt b/CMakeLists.txt
- index 6451fcf1b..dbd5016ca 100644
- --- a/CMakeLists.txt
- +++ b/CMakeLists.txt
- @@ -63,11 +63,22 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
- set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
- set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
-
- +# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS,
- +# based upon the OS architecture, not the target architecture. As such, we need
- +# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
- +# enable. Note that this will fail if you attempt to build a universal binary in
- +# a single cmake invokation.
- +if (APPLE AND CMAKE_OSX_ARCHITECTURES)
- + set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
- +else()
- + set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
- +endif()
- +
- if(PNG_HARDWARE_OPTIMIZATIONS)
-
- # set definitions and sources for arm
- -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
- - CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
- +if(TARGET_ARCH MATCHES "^arm" OR
- + TARGET_ARCH MATCHES "^aarch64")
- set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
- set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations:
- check: (default) use internal checking code;
- @@ -121,8 +132,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
- endif()
-
- # set definitions and sources for intel
- -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
- - CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
- +if(TARGET_ARCH MATCHES "^i?86" OR
- + TARGET_ARCH MATCHES "^x86_64*")
- set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
- set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations:
- off: disable the optimizations")
- @@ -171,8 +182,8 @@ endif()
- else(PNG_HARDWARE_OPTIMIZATIONS)
-
- # set definitions and sources for arm
- -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
- - CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
- +if(TARGET_ARCH MATCHES "^arm" OR
- + TARGET_ARCH MATCHES "^aarch64")
- add_definitions(-DPNG_ARM_NEON_OPT=0)
- endif()
-
- @@ -183,8 +194,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
- endif()
-
- # set definitions and sources for intel
- -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
- - CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
- +if(TARGET_ARCH MATCHES "^i?86" OR
- + TARGET_ARCH MATCHES "^x86_64")
- add_definitions(-DPNG_INTEL_SSE_OPT=0)
- endif()
-
|