Solvespace
117 строк · 4.5 Кб
1diff --git a/extlib/libpng/CMakeLists.txt b/extlib/libpng/CMakeLists.txt
2index 42ff0f9025..6834ea332e 100644
3--- a/extlib/libpng/CMakeLists.txt
4+++ b/extlib/libpng/CMakeLists.txt
5@@ -65,11 +65,22 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON)
6set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
7set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
8
9+# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS,
10+# based upon the OS architecture, not the target architecture. As such, we need
11+# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
12+# enable. Note that this will fail if you attempt to build a universal binary in
13+# a single cmake invocation.
14+if (APPLE AND CMAKE_OSX_ARCHITECTURES)
15+ set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
16+else()
17+ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
18+endif()
19+
20if(PNG_HARDWARE_OPTIMIZATIONS)
21
22# Set definitions and sources for ARM.
23-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
24- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
25+if(TARGET_ARCH MATCHES "^arm" OR
26+ TARGET_ARCH MATCHES "^aarch64")
27set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
28set(PNG_ARM_NEON "check"
29CACHE STRING "Enable ARM NEON optimizations: check|on|off; check is default")
30@@ -95,8 +106,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
31endif()
32
33# Set definitions and sources for PowerPC.
34-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
35- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
36+if(TARGET_ARCH MATCHES "^powerpc*" OR
37+ TARGET_ARCH MATCHES "^ppc64*")
38set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
39set(PNG_POWERPC_VSX "on"
40CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default")
41@@ -118,8 +129,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
42endif()
43
44# Set definitions and sources for Intel.
45-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
46- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
47+if(TARGET_ARCH MATCHES "^i?86" OR
48+ TARGET_ARCH MATCHES "^x86_64*")
49set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
50set(PNG_INTEL_SSE "on"
51CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default")
52@@ -141,8 +152,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
53endif()
54
55# Set definitions and sources for MIPS.
56-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
57- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
58+if(TARGET_ARCH MATCHES "mipsel*" OR
59+ TARGET_ARCH MATCHES "mips64el*")
60set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
61set(PNG_MIPS_MSA "on"
62CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default")
63@@ -166,26 +177,26 @@ endif()
64else(PNG_HARDWARE_OPTIMIZATIONS)
65
66# Set definitions and sources for ARM.
67-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
68- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
69+if(TARGET_ARCH MATCHES "^arm" OR
70+ TARGET_ARCH MATCHES "^aarch64")
71add_definitions(-DPNG_ARM_NEON_OPT=0)
72endif()
73
74# Set definitions and sources for PowerPC.
75-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
76- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
77+if(TARGET_ARCH MATCHES "^powerpc*" OR
78+ TARGET_ARCH MATCHES "^ppc64*")
79add_definitions(-DPNG_POWERPC_VSX_OPT=0)
80endif()
81
82# Set definitions and sources for Intel.
83-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
84- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
85+if(TARGET_ARCH MATCHES "^i?86" OR
86+ TARGET_ARCH MATCHES "^x86_64*")
87add_definitions(-DPNG_INTEL_SSE_OPT=0)
88endif()
89
90# Set definitions and sources for MIPS.
91-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
92- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
93+if(TARGET_ARCH MATCHES "mipsel*" OR
94+ TARGET_ARCH MATCHES "mips64el*")
95add_definitions(-DPNG_MIPS_MSA_OPT=0)
96endif()
97
98@@ -412,19 +412,11 @@ else()
99DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk"
100"${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def")
101
102- add_custom_target(symbol-check
103- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk")
104-
105generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
106"${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
107generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
108"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
109
110- add_custom_target(genvers
111- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
112- add_custom_target(gensym
113- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
114-
115add_custom_target("genprebuilt"
116COMMAND "${CMAKE_COMMAND}"
117"-DOUTPUT=scripts/pnglibconf.h.prebuilt"
118