瀏覽代碼

QNX: Compiler and feature detection fixes

Tested compiler detection with the QNX 7.0 list of compiler targets:
 * gcc_ntoaarch64le
 * gcc_ntoaarch64le_cxx
 * gcc_ntoarmv7le
 * gcc_ntoarmv7le_cxx
 * gcc_ntox86_cxx
 * gcc_ntoaarch64le_gpp
 * gcc_ntox86_64_gpp
 * gcc_ntoarmv7le_gpp
 * gcc_ntox86_64_cxx
 * gcc_ntox86
 * gcc_ntox86_gpp
 * gcc_ntox86_64

This commit fixes some of the problems described in:
https://cristianadam.eu/20181202/a-better-qnx-cmake-toolchain-file/
Cristian Adam 7 年之前
父節點
當前提交
243b7c40d4

+ 2 - 2
Modules/CMakeDetermineCCompiler.cmake

@@ -136,7 +136,7 @@ endif ()
 # "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
 if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
 
-  if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|QCC")
     get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
     if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
       set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
@@ -145,7 +145,7 @@ if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
         set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-)
       endif()
     elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$")
-      if(CMAKE_C_COMPILER_TARGET MATCHES "gcc_nto([^_le]+)(le)?")
+      if(CMAKE_C_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)?")
         set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
       endif()
     endif ()

+ 2 - 2
Modules/CMakeDetermineCXXCompiler.cmake

@@ -133,7 +133,7 @@ endif ()
 
 if (CMAKE_CROSSCOMPILING  AND NOT  _CMAKE_TOOLCHAIN_PREFIX)
 
-  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC")
     get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
     if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
       set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
@@ -142,7 +142,7 @@ if (CMAKE_CROSSCOMPILING  AND NOT  _CMAKE_TOOLCHAIN_PREFIX)
         set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-)
       endif()
     elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$")
-      if(CMAKE_CXX_COMPILER_TARGET MATCHES "gcc_nto([^_le]+)(le)?")
+      if(CMAKE_CXX_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)")
         set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
       endif()
     endif ()

+ 1 - 0
Modules/Compiler/QCC-C-FeatureTests.cmake

@@ -0,0 +1 @@
+include(Compiler/GNU-C-FeatureTests)

+ 3 - 0
Modules/Compiler/QCC-C.cmake

@@ -1,2 +1,5 @@
+# To include compiler feature detection
+include(Compiler/GNU-C)
+
 include(Compiler/QCC)
 __compiler_qcc(C)

+ 1 - 0
Modules/Compiler/QCC-CXX-FeatureTests.cmake

@@ -0,0 +1 @@
+include(Compiler/GNU-CXX-FeatureTests)

+ 3 - 0
Modules/Compiler/QCC-CXX.cmake

@@ -1,3 +1,6 @@
+# To include compiler feature detection
+include(Compiler/GNU-CXX)
+
 include(Compiler/QCC)
 __compiler_qcc(CXX)