aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt51
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
1cmake_minimum_required (VERSION 3.16.4) 16cmake_minimum_required (VERSION 3.16.4)
17
2if(MSVC) 18if(MSVC)
3 cmake_policy(SET CMP0091 NEW) 19 cmake_policy(SET CMP0091 NEW)
4endif() 20endif()
@@ -72,10 +88,6 @@ endforeach()
72 88
73set(BUILD_NC true) 89set(BUILD_NC true)
74 90
75if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
76 add_definitions(-fno-common)
77endif()
78
79if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") 91if(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=)
131set(CMAKE_POSITION_INDEPENDENT_CODE true) 143set(CMAKE_POSITION_INDEPENDENT_CODE true)
132 144
133if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") 145if (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>)
135endif() 147endif()
136 148
137if(WIN32) 149if(WIN32)
@@ -366,6 +378,16 @@ if(HAVE_NETINET_IP_H)
366 add_definitions(-DHAVE_NETINET_IP_H) 378 add_definitions(-DHAVE_NETINET_IP_H)
367endif() 379endif()
368 380
381check_include_files(resolv.h HAVE_RESOLV_H)
382if(HAVE_RESOLV_H)
383 add_definitions(-DHAVE_RESOLV_H)
384endif()
385
386check_include_files(arpa/nameser.h HAVE_ARPA_NAMESER_H)
387if(HAVE_ARPA_NAMESER_H)
388 add_definitions(-DHAVE_ARPA_NAMESER_H)
389endif()
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}")
376endif() 398endif()
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
402if (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}")
406endif()
407
378if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)") 408if(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()
383elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") 410elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
384 set(HOST_ARM true) 411 set(HOST_ARM true)
385elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") 412elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
386 set(HOST_X86_64 true) 413 set(HOST_X86_64 true)
387elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)") 414elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|x64|amd64|AMD64)")
388 set(HOST_X86_64 true) 415 set(HOST_X86_64 true)
389elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)") 416elseif(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)
419elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
420 set(HOST_LOONGARCH64 true)
392elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") 421elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64")
393 set(HOST_MIPS64 true) 422 set(HOST_MIPS64 true)
394elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") 423elseif(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()