aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt45
1 files changed, 37 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8437e02..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()
@@ -127,7 +143,7 @@ add_definitions(-D__END_HIDDEN_DECLS=)
127set(CMAKE_POSITION_INDEPENDENT_CODE true) 143set(CMAKE_POSITION_INDEPENDENT_CODE true)
128 144
129if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") 145if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
130 add_compile_options(-Wno-pointer-sign) 146 add_compile_options($<$<COMPILE_LANGUAGE:C>:-Wno-pointer-sign>)
131endif() 147endif()
132 148
133if(WIN32) 149if(WIN32)
@@ -362,6 +378,16 @@ if(HAVE_NETINET_IP_H)
362 add_definitions(-DHAVE_NETINET_IP_H) 378 add_definitions(-DHAVE_NETINET_IP_H)
363endif() 379endif()
364 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
365# 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
366# 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
367# single architecture work on macOS at least. 393# single architecture work on macOS at least.
@@ -371,18 +397,23 @@ if(APPLE AND (NOT CMAKE_OSX_ARCHITECTURES STREQUAL ""))
371 set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") 397 set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}")
372endif() 398endif()
373 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
374if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)") 408if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)")
375 set(HOST_AARCH64 true) 409 set(HOST_AARCH64 true)
376 if(WIN32)
377 set(ENABLE_ASM false)
378 endif()
379elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm") 410elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
380 set(HOST_ARM true) 411 set(HOST_ARM true)
381elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") 412elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
382 set(HOST_X86_64 true) 413 set(HOST_X86_64 true)
383elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)") 414elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|x64|amd64|AMD64)")
384 set(HOST_X86_64 true) 415 set(HOST_X86_64 true)
385elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)") 416elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86|Win32)")
386 set(ENABLE_ASM false) 417 set(ENABLE_ASM false)
387 set(HOST_I386 true) 418 set(HOST_I386 true)
388elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") 419elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
@@ -407,8 +438,6 @@ if(ENABLE_ASM)
407 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF") 438 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF")
408 if(HOST_X86_64) 439 if(HOST_X86_64)
409 set(HOST_ASM_ELF_X86_64 true) 440 set(HOST_ASM_ELF_X86_64 true)
410 elseif(HOST_ARM)
411 set(HOST_ASM_ELF_ARMV4 true)
412 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386) 441 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386)
413 set(HOST_ASM_ELF_X86_64 true) 442 set(HOST_ASM_ELF_X86_64 true)
414 endif() 443 endif()