diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 437570b..17e5a0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -1,4 +1,20 @@ | |||
1 | # | ||
2 | # Copyright (c) 2014 Brent Cook | ||
3 | # | ||
4 | # Permission to use, copy, modify, and distribute this software for any | ||
5 | # purpose with or without fee is hereby granted, provided that the above | ||
6 | # copyright notice and this permission notice appear in all copies. | ||
7 | # | ||
8 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | |||
1 | cmake_minimum_required (VERSION 3.16.4) | 16 | cmake_minimum_required (VERSION 3.16.4) |
17 | |||
2 | if(MSVC) | 18 | if(MSVC) |
3 | cmake_policy(SET CMP0091 NEW) | 19 | cmake_policy(SET CMP0091 NEW) |
4 | endif() | 20 | endif() |
@@ -72,10 +88,6 @@ endforeach() | |||
72 | 88 | ||
73 | set(BUILD_NC true) | 89 | set(BUILD_NC true) |
74 | 90 | ||
75 | if(CMAKE_SYSTEM_NAME MATCHES "Darwin") | ||
76 | add_definitions(-fno-common) | ||
77 | endif() | ||
78 | |||
79 | if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") | 91 | if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") |
80 | add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__) | 92 | add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__) |
81 | add_definitions(-DHAVE_ATTRIBUTE__DEAD__) | 93 | add_definitions(-DHAVE_ATTRIBUTE__DEAD__) |
@@ -131,7 +143,7 @@ add_definitions(-D__END_HIDDEN_DECLS=) | |||
131 | set(CMAKE_POSITION_INDEPENDENT_CODE true) | 143 | set(CMAKE_POSITION_INDEPENDENT_CODE true) |
132 | 144 | ||
133 | if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") | 145 | if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") |
134 | add_definitions(-Wno-pointer-sign) | 146 | add_compile_options($<$<COMPILE_LANGUAGE:C>:-Wno-pointer-sign>) |
135 | endif() | 147 | endif() |
136 | 148 | ||
137 | if(WIN32) | 149 | if(WIN32) |
@@ -366,6 +378,16 @@ if(HAVE_NETINET_IP_H) | |||
366 | add_definitions(-DHAVE_NETINET_IP_H) | 378 | add_definitions(-DHAVE_NETINET_IP_H) |
367 | endif() | 379 | endif() |
368 | 380 | ||
381 | check_include_files(resolv.h HAVE_RESOLV_H) | ||
382 | if(HAVE_RESOLV_H) | ||
383 | add_definitions(-DHAVE_RESOLV_H) | ||
384 | endif() | ||
385 | |||
386 | check_include_files(arpa/nameser.h HAVE_ARPA_NAMESER_H) | ||
387 | if(HAVE_ARPA_NAMESER_H) | ||
388 | add_definitions(-DHAVE_ARPA_NAMESER_H) | ||
389 | endif() | ||
390 | |||
369 | # This isn't ready for universal binaries yet, since we do conditional | 391 | # This isn't ready for universal binaries yet, since we do conditional |
370 | # compilation based on the architecture, but this makes cross compiling for a | 392 | # compilation based on the architecture, but this makes cross compiling for a |
371 | # single architecture work on macOS at least. | 393 | # single architecture work on macOS at least. |
@@ -375,20 +397,27 @@ if(APPLE AND (NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")) | |||
375 | set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") | 397 | set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") |
376 | endif() | 398 | endif() |
377 | 399 | ||
400 | # CMAKE_SYSTEM_PROCESSOR is not consistently set to the target architecture. | ||
401 | # https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PROCESSOR.html | ||
402 | if (WIN32 AND (NOT CMAKE_GENERATOR_PLATFORM STREQUAL "")) | ||
403 | message("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") | ||
404 | message("CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}") | ||
405 | set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_GENERATOR_PLATFORM}") | ||
406 | endif() | ||
407 | |||
378 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)") | 408 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)") |
379 | set(HOST_AARCH64 true) | 409 | set(HOST_AARCH64 true) |
380 | if(WIN32) | ||
381 | set(ENABLE_ASM false) | ||
382 | endif() | ||
383 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") | 410 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") |
384 | set(HOST_ARM true) | 411 | set(HOST_ARM true) |
385 | elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") | 412 | elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") |
386 | set(HOST_X86_64 true) | 413 | set(HOST_X86_64 true) |
387 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)") | 414 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|x64|amd64|AMD64)") |
388 | set(HOST_X86_64 true) | 415 | set(HOST_X86_64 true) |
389 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)") | 416 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86|Win32)") |
390 | set(ENABLE_ASM false) | 417 | set(ENABLE_ASM false) |
391 | set(HOST_I386 true) | 418 | set(HOST_I386 true) |
419 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") | ||
420 | set(HOST_LOONGARCH64 true) | ||
392 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") | 421 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") |
393 | set(HOST_MIPS64 true) | 422 | set(HOST_MIPS64 true) |
394 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") | 423 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") |
@@ -409,8 +438,6 @@ if(ENABLE_ASM) | |||
409 | if(CMAKE_C_COMPILER_ABI STREQUAL "ELF") | 438 | if(CMAKE_C_COMPILER_ABI STREQUAL "ELF") |
410 | if(HOST_X86_64) | 439 | if(HOST_X86_64) |
411 | set(HOST_ASM_ELF_X86_64 true) | 440 | set(HOST_ASM_ELF_X86_64 true) |
412 | elseif(HOST_ARM) | ||
413 | set(HOST_ASM_ELF_ARMV4 true) | ||
414 | elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386) | 441 | elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386) |
415 | set(HOST_ASM_ELF_X86_64 true) | 442 | set(HOST_ASM_ELF_X86_64 true) |
416 | endif() | 443 | endif() |