From a4dd0ad63c00f4dee3b86dfd3075d1d61b2b3180 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 27 Aug 2022 23:52:56 -0500 Subject: add plibsys --- 3rdparty/plibsys/cmake/PlatformDetect.cmake | 144 ++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 3rdparty/plibsys/cmake/PlatformDetect.cmake (limited to '3rdparty/plibsys/cmake/PlatformDetect.cmake') diff --git a/3rdparty/plibsys/cmake/PlatformDetect.cmake b/3rdparty/plibsys/cmake/PlatformDetect.cmake new file mode 100644 index 0000000..ab05065 --- /dev/null +++ b/3rdparty/plibsys/cmake/PlatformDetect.cmake @@ -0,0 +1,144 @@ +# The MIT License +# +# Copyright (C) 2018 Alexander Saprykin +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# 'Software'), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +function (plibsys_detect_c_compiler result) + # Get target system OS + string (TOLOWER ${CMAKE_SYSTEM_NAME} PLIBSYS_TARGET_OS) + + # Detect C compiler by it's ID + if (CMAKE_C_COMPILER_ID STREQUAL GNU) + set (PLIBSYS_C_COMPILER gcc) + elseif (CMAKE_C_COMPILER_ID STREQUAL MSVC) + set (PLIBSYS_C_COMPILER msvc) + else() + string (TOLOWER ${CMAKE_C_COMPILER_ID} PLIBSYS_C_COMPILER) + endif() + + # Fix gcc -> qcc naming on QNX 6 + if ((PLIBSYS_TARGET_OS STREQUAL qnx) AND (PLIBSYS_C_COMPILER STREQUAL gcc)) + set (PLIBSYS_C_COMPILER qcc) + endif() + + # Rename intel -> icc + if (PLIBSYS_C_COMPILER STREQUAL intel) + set (PLIBSYS_C_COMPILER icc) + endif() + + # Rename openwatcom -> watcom + if (PLIBSYS_C_COMPILER STREQUAL openwatcom) + set (PLIBSYS_C_COMPILER watcom) + endif() + + # Rename xl -> xlc + if (PLIBSYS_C_COMPILER STREQUAL xl) + set (PLIBSYS_C_COMPILER xlc) + endif() + + # Assign result + set (${result} ${PLIBSYS_C_COMPILER} PARENT_SCOPE) +endfunction (plibsys_detect_c_compiler) + +function (plibsys_detect_os_bits result) + if (PLIBSYS_SIZEOF_VOID_P EQUAL 8) + set (PLIBSYS_ARCH_BITS 64) + elseif (PLIBSYS_SIZEOF_VOID_P EQUAL 4) + set (PLIBSYS_ARCH_BITS 32) + elseif(PLIBSYS_SIZEOF_VOID_P EQUAL 0) + set (PLIBSYS_ARCH_BITS "universal") + else() + set (PLIBSYS_ARCH_BITS "unknown") + endif() + + set (${result} ${PLIBSYS_ARCH_BITS} PARENT_SCOPE) +endfunction (plibsys_detect_os_bits) + +function (plibsys_detect_cpu_arch result) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "(i[1-9]86)|(x86_64)") + if (CMAKE_CROSSCOMPILING) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "i[1-9]86") + set (PLIBSYS_PROCESSOR_ARCH "x86") + else() + set (PLIBSYS_PROCESSOR_ARCH "x64") + endif() + else() + plibsys_detect_os_bits (PLIBSYS_OS_BITS) + if (PLIBSYS_OS_BITS STREQUAL "32") + set (PLIBSYS_PROCESSOR_ARCH "x86") + elseif (PLIBSYS_OS_BITS STREQUAL "64") + set (PLIBSYS_PROCESSOR_ARCH "x64") + else() + set (PLIBSYS_PROCESSOR_ARCH "x${PLIBSYS_OS_BITS}") + endif() + endif() + else() + set (PLIBSYS_PROCESSOR_ARCH ${CMAKE_SYSTEM_PROCESSOR}) + endif() + + set (${result} ${PLIBSYS_PROCESSOR_ARCH} PARENT_SCOPE) +endfunction (plibsys_detect_cpu_arch) + +function (plibsys_detect_target_os result) + string (TOLOWER ${CMAKE_SYSTEM_NAME} PLIBSYS_TARGET_OS) + + # Rename mingw -> windows + if (PLIBSYS_TARGET_OS MATCHES "(mingw.*)") + set (PLIBSYS_TARGET_OS windows) + endif() + + # Rename hp-ux -> hpux + if (PLIBSYS_TARGET_OS STREQUAL hp-ux) + set (PLIBSYS_TARGET_OS hpux) + endif() + + # Rename sco_sv -> scosv + if (PLIBSYS_TARGET_OS STREQUAL sco_sv) + set (PLIBSYS_TARGET_OS scosv) + endif() + + # Rename osf1 -> tru64 + if (PLIBSYS_TARGET_OS STREQUAL osf1) + set (PLIBSYS_TARGET_OS tru64) + endif() + + # Rename craylinuxenvironment -> linux + if (PLIBSYS_TARGET_OS STREQUAL craylinuxenvironment) + set (PLIBSYS_TARGET_OS linux) + endif() + + set (${result} ${PLIBSYS_TARGET_OS} PARENT_SCOPE) +endfunction (plibsys_detect_target_os) + +function (plibsys_detect_target_platform result) + plibsys_detect_target_os (PLIBSYS_TARGET_OS) + plibsys_detect_os_bits (PLIBSYS_OS_BITS) + plibsys_detect_c_compiler (PLIBSYS_C_COMPILER) + + if (PLIBSYS_TARGET_OS STREQUAL windows) + set (PLIBSYS_TARGET_PLATFORM win${PLIBSYS_OS_BITS}) + else() + set (PLIBSYS_TARGET_PLATFORM ${PLIBSYS_TARGET_OS}) + endif() + + set (PLIBSYS_TARGET_PLATFORM ${PLIBSYS_TARGET_PLATFORM}-${PLIBSYS_C_COMPILER}) + set (${result} ${PLIBSYS_TARGET_PLATFORM} PARENT_SCOPE) +endfunction (plibsys_detect_target_platform) -- cgit v1.2.1