浏览代码

Merge topic 'improve-embarcadero'

7a327727 Embarcadero: Fix erroneous interpretation of __CODEGEARC_VERSION__.
25211d75 Compiler ID: Compiler versions must be a valid, numeric version string.
060442c2 Embarcadero:  Check code using CMAKE_CXX_COMPILER_ID and CMAKE_C_COMPILER_ID.
f3b3219c Embarcadero/Watcom: Properly skip VSResource test for other generators.
ddbda722 Embarcadero: Fix bug where duplicate Ninja job pools would be created.
Brad King 10 年之前
父节点
当前提交
5875801293

+ 1 - 1
Modules/Compiler/Embarcadero-DetermineCompiler.cmake

@@ -4,4 +4,4 @@ set(_compiler_id_pp_test "defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__
 set(_compiler_id_version_compute "
 # define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_HEX@(__CODEGEARC_VERSION__>>24 & 0x00FF)
 # define @PREFIX@COMPILER_VERSION_MINOR @MACRO_HEX@(__CODEGEARC_VERSION__>>16 & 0x00FF)
-# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_HEX@(__CODEGEARC_VERSION__     & 0xFFFF)")
+# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__CODEGEARC_VERSION__     & 0xFFFF)")

+ 4 - 0
Modules/GenerateExportHeader.cmake

@@ -230,7 +230,11 @@ macro(_test_compiler_hidden_visibility)
 endmacro()
 
 macro(_test_compiler_has_deprecated)
+  # NOTE:  Some Embarcadero compilers silently compile __declspec(deprecated)
+  # without error, but this is not a documented feature and the attribute does
+  # not actually generate any warnings.
   if(CMAKE_CXX_COMPILER_ID MATCHES Borland
+      OR CMAKE_CXX_COMPILER_ID MATCHES Embarcadero
       OR CMAKE_CXX_COMPILER_ID MATCHES HP
       OR GCC_TOO_OLD
       OR CMAKE_CXX_COMPILER_ID MATCHES PGI

+ 5 - 1
Modules/Platform/Windows-Embarcadero.cmake

@@ -78,7 +78,11 @@ set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_R
 # invocations within a single working directory.
 if(NOT DEFINED CMAKE_JOB_POOL_LINK)
   set(CMAKE_JOB_POOL_LINK BCC32LinkPool)
-  set_property(GLOBAL APPEND PROPERTY JOB_POOLS BCC32LinkPool=1)
+  get_property(_bccjp GLOBAL PROPERTY JOB_POOLS)
+  if(NOT _bccjp MATCHES "BCC32LinkPool=")
+      set_property(GLOBAL APPEND PROPERTY JOB_POOLS BCC32LinkPool=1)
+  endif()
+  unset(_bccjp)
 endif()
 
 macro(__embarcadero_language lang)

+ 1 - 2
Tests/CMakeLists.txt

@@ -269,8 +269,7 @@ if(BUILD_TESTING)
     set(TEST_RESOURCES TRUE)
   endif()
   # for borland and watcom there is no resource support
-  if("${CMAKE_GENERATOR}" MATCHES "WMake" OR
-      "${CMAKE_GENERATOR}" MATCHES "Borland")
+  if(WATCOM OR BORLAND)
     set(TEST_RESOURCES FALSE)
   endif()
   if(TEST_RESOURCES)

+ 7 - 0
Tests/CMakeOnly/CompilerIdC/CMakeLists.txt

@@ -12,3 +12,10 @@ foreach(v
     message(SEND_ERROR "${v} not set!")
   endif()
 endforeach()
+
+# Version numbers may only contain numbers and periods.
+if(NOT CMAKE_C_COMPILER_VERSION MATCHES
+    "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$"
+    )
+  message(SEND_ERROR "Compiler version is not numeric!")
+endif()

+ 7 - 0
Tests/CMakeOnly/CompilerIdCXX/CMakeLists.txt

@@ -12,3 +12,10 @@ foreach(v
     message(SEND_ERROR "${v} not set!")
   endif()
 endforeach()
+
+# Version numbers may only contain numbers and periods.
+if(NOT CMAKE_CXX_COMPILER_VERSION MATCHES
+    "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$"
+    )
+  message(SEND_ERROR "Compiler version is not numeric!")
+endif()

+ 7 - 0
Tests/CMakeOnly/CompilerIdFortran/CMakeLists.txt

@@ -12,3 +12,10 @@ foreach(v
     message(SEND_ERROR "${v} not set!")
   endif()
 endforeach()
+
+# Version numbers may only contain numbers and periods.
+if(NOT CMAKE_Fortran_COMPILER_VERSION MATCHES
+    "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$"
+    )
+  message(SEND_ERROR "Compiler version is not numeric!")
+endif()

+ 1 - 1
Tests/CompileOptions/CMakeLists.txt

@@ -22,7 +22,7 @@ set_property(TARGET CompileOptions PROPERTY COMPILE_OPTIONS
   ${cxx_tests}
   )
 
-if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Borland")
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Borland|Embarcadero")
   set_property(TARGET CompileOptions APPEND PROPERTY COMPILE_OPTIONS
     "-DTEST_OCTOTHORPE=\"#\""
     )