mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
cmake: Fix the handling of PNG_HARDWARE_OPTIMIZATIONS on FreeBSD/amd64
Because of a missing "amd64" string (in lowercase) in a regex match, the CMake build was unable to pick up the PNG_HARDWARE_OPTIMIZATIONS flag on FreeBSD/amd64 (and possibly other amd64 systems as well). Rename the target arch variable from TARGET_ARCH to a more idiomatic PNG_TARGET_ARCHITECTURE, and set it to an always-lowercase string. The follow-on checks are now simpler and easier to get right.
This commit is contained in:
parent
532fec0214
commit
33ef48b6d6
@ -90,6 +90,21 @@ endif()
|
|||||||
option(PNG_DEBUG "Enable debug output" OFF)
|
option(PNG_DEBUG "Enable debug output" OFF)
|
||||||
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
|
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
|
||||||
|
|
||||||
|
# Initialize and show the target architecture variable PNG_TARGET_ARCHITECTURE.
|
||||||
|
#
|
||||||
|
# NOTE:
|
||||||
|
# On macOS, CMake sets CMAKE_SYSTEM_PROCESSOR to either "x86_64" or "arm64",
|
||||||
|
# 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 invocation.
|
||||||
|
if (APPLE AND CMAKE_OSX_ARCHITECTURES)
|
||||||
|
string(TOLOWER "${CMAKE_OSX_ARCHITECTURES}" PNG_TARGET_ARCHITECTURE)
|
||||||
|
else()
|
||||||
|
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" PNG_TARGET_ARCHITECTURE)
|
||||||
|
endif()
|
||||||
|
message(STATUS "Building for target architecture: ${PNG_TARGET_ARCHITECTURE}")
|
||||||
|
|
||||||
# Allow the users to specify a custom location of zlib.
|
# Allow the users to specify a custom location of zlib.
|
||||||
# This option is deprecated, and no longer needed with CMake 3.12 and newer.
|
# This option is deprecated, and no longer needed with CMake 3.12 and newer.
|
||||||
# Under the CMake policy CMP0074, if zlib is being built alongside libpng as a
|
# Under the CMake policy CMP0074, if zlib is being built alongside libpng as a
|
||||||
@ -119,22 +134,11 @@ else()
|
|||||||
# libm is not available or not needed.
|
# libm is not available or not needed.
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# 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 invocation.
|
|
||||||
if (APPLE AND CMAKE_OSX_ARCHITECTURES)
|
|
||||||
set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
|
|
||||||
else()
|
|
||||||
set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PNG_HARDWARE_OPTIMIZATIONS)
|
if(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
|
|
||||||
# Set definitions and sources for ARM.
|
# Set definitions and sources for ARM.
|
||||||
if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
|
||||||
if(TARGET_ARCH MATCHES "^(ARM64|arm64|aarch64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)")
|
||||||
set(PNG_ARM_NEON_POSSIBLE_VALUES on off)
|
set(PNG_ARM_NEON_POSSIBLE_VALUES on off)
|
||||||
set(PNG_ARM_NEON "on"
|
set(PNG_ARM_NEON "on"
|
||||||
CACHE STRING "Enable ARM NEON optimizations: on|off; on is default")
|
CACHE STRING "Enable ARM NEON optimizations: on|off; on is default")
|
||||||
@ -164,7 +168,7 @@ if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for PowerPC.
|
# Set definitions and sources for PowerPC.
|
||||||
if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
|
||||||
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
|
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
|
||||||
set(PNG_POWERPC_VSX "on"
|
set(PNG_POWERPC_VSX "on"
|
||||||
CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default")
|
CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default")
|
||||||
@ -186,7 +190,7 @@ if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for Intel.
|
# Set definitions and sources for Intel.
|
||||||
if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
|
||||||
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
|
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
|
||||||
set(PNG_INTEL_SSE "on"
|
set(PNG_INTEL_SSE "on"
|
||||||
CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default")
|
CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default")
|
||||||
@ -208,7 +212,7 @@ if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for MIPS.
|
# Set definitions and sources for MIPS.
|
||||||
if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
|
||||||
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
|
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
|
||||||
set(PNG_MIPS_MSA "on"
|
set(PNG_MIPS_MSA "on"
|
||||||
CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default")
|
CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default")
|
||||||
@ -255,7 +259,7 @@ if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for LoongArch.
|
# Set definitions and sources for LoongArch.
|
||||||
if(TARGET_ARCH MATCHES "^(loongarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off)
|
set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off)
|
||||||
set(PNG_LOONGARCH_LSX "on"
|
set(PNG_LOONGARCH_LSX "on"
|
||||||
@ -286,27 +290,27 @@ endif()
|
|||||||
else(PNG_HARDWARE_OPTIMIZATIONS)
|
else(PNG_HARDWARE_OPTIMIZATIONS)
|
||||||
|
|
||||||
# Set definitions and sources for ARM.
|
# Set definitions and sources for ARM.
|
||||||
if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)")
|
||||||
add_definitions(-DPNG_ARM_NEON_OPT=0)
|
add_definitions(-DPNG_ARM_NEON_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for PowerPC.
|
# Set definitions and sources for PowerPC.
|
||||||
if(TARGET_ARCH MATCHES "^(powerpc|ppc64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)")
|
||||||
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
|
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for Intel.
|
# Set definitions and sources for Intel.
|
||||||
if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)")
|
||||||
add_definitions(-DPNG_INTEL_SSE_OPT=0)
|
add_definitions(-DPNG_INTEL_SSE_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for MIPS.
|
# Set definitions and sources for MIPS.
|
||||||
if(TARGET_ARCH MATCHES "^(mipsel|mips64el)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)")
|
||||||
add_definitions(-DPNG_MIPS_MSA_OPT=0)
|
add_definitions(-DPNG_MIPS_MSA_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set definitions and sources for LoongArch.
|
# Set definitions and sources for LoongArch.
|
||||||
if(TARGET_ARCH MATCHES "^(loongarch)")
|
if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)")
|
||||||
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
add_definitions(-DPNG_LOONGARCH_LSX_OPT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user