diff options
-rw-r--r-- | Help/release/3.29.rst | 5 | ||||
-rw-r--r-- | Modules/FindCUDAToolkit.cmake | 4 | ||||
-rw-r--r-- | Modules/Platform/Windows-Clang-OBJC.cmake | 18 | ||||
-rw-r--r-- | Modules/Platform/Windows-Clang-OBJCXX.cmake | 18 | ||||
-rw-r--r-- | Modules/Platform/Windows-GNU-OBJC-ABI.cmake | 1 | ||||
-rw-r--r-- | Modules/Platform/Windows-GNU-OBJC.cmake | 2 | ||||
-rw-r--r-- | Modules/Platform/Windows-GNU-OBJCXX-ABI.cmake | 1 | ||||
-rw-r--r-- | Modules/Platform/Windows-GNU-OBJCXX.cmake | 2 |
8 files changed, 48 insertions, 3 deletions
diff --git a/Help/release/3.29.rst b/Help/release/3.29.rst index 96f161f..659237e 100644 --- a/Help/release/3.29.rst +++ b/Help/release/3.29.rst @@ -39,6 +39,11 @@ Compilers * The LLVM/Clang GNU-like frontend on Windows (``clang++``) may now be used to compile ``CUDA`` language sources. +* Compilers targeting the GNU ABI on Windows (MinGW) may now be used to + compile Objective C (``OBJC``) and Objective C++ (``OBJCXX``). These + include GNU compilers (``gcc`` and ``g++``) and the LLVM/Clang GNU-like + frontends (``clang`` and ``clang++``). + * TI Clang-based compilers are now supported with :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``TIClang``. diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 1eaf36b..2229de6 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -1137,9 +1137,6 @@ if(CUDAToolkit_FOUND) target_link_directories(CUDA::toolkit INTERFACE "${CUDAToolkit_LIBRARY_DIR}") endif() - _CUDAToolkit_find_and_add_import_lib(cuda_driver ALT cuda) - - # setup dependencies that are required for cudart/cudart_static when building # on linux. These are generally only required when using the CUDA toolkit # when CUDA language is disabled @@ -1162,6 +1159,7 @@ if(CUDAToolkit_FOUND) endif() endif() + _CUDAToolkit_find_and_add_import_lib(cuda_driver ALT cuda DEPS cudart_static_deps) _CUDAToolkit_find_and_add_import_lib(cudart DEPS cudart_static_deps) _CUDAToolkit_find_and_add_import_lib(cudart_static DEPS cudart_static_deps) diff --git a/Modules/Platform/Windows-Clang-OBJC.cmake b/Modules/Platform/Windows-Clang-OBJC.cmake new file mode 100644 index 0000000..7babb98 --- /dev/null +++ b/Modules/Platform/Windows-Clang-OBJC.cmake @@ -0,0 +1,18 @@ +include(Platform/Windows-Clang) +__windows_compiler_clang(OBJC) + +if("x${CMAKE_OBJC_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC") + if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER) + AND CMAKE_GENERATOR MATCHES "Makefiles|WMake" + AND CMAKE_DEPFILE_FLAGS_OBJC) + set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE) + endif() +elseif("x${CMAKE_OBJC_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU") + if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER) + AND CMAKE_GENERATOR MATCHES "Makefiles|WMake" + AND CMAKE_DEPFILE_FLAGS_OBJC) + # dependencies are computed by the compiler itself + set(CMAKE_OBJC_DEPFILE_FORMAT gcc) + set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE) + endif() +endif() diff --git a/Modules/Platform/Windows-Clang-OBJCXX.cmake b/Modules/Platform/Windows-Clang-OBJCXX.cmake new file mode 100644 index 0000000..3bc1673 --- /dev/null +++ b/Modules/Platform/Windows-Clang-OBJCXX.cmake @@ -0,0 +1,18 @@ +include(Platform/Windows-Clang) +__windows_compiler_clang(OBJCXX) + +if("x${CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC") + if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER) + AND CMAKE_GENERATOR MATCHES "Makefiles|WMake" + AND CMAKE_DEPFILE_FLAGS_OBJCXX) + set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE) + endif() +elseif("x${CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU") + if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER) + AND CMAKE_GENERATOR MATCHES "Makefiles|WMake" + AND CMAKE_DEPFILE_FLAGS_OBJCXX) + # dependencies are computed by the compiler itself + set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc) + set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE) + endif() +endif() diff --git a/Modules/Platform/Windows-GNU-OBJC-ABI.cmake b/Modules/Platform/Windows-GNU-OBJC-ABI.cmake new file mode 100644 index 0000000..c8b2ea6 --- /dev/null +++ b/Modules/Platform/Windows-GNU-OBJC-ABI.cmake @@ -0,0 +1 @@ +__windows_compiler_gnu_abi(OBJC) diff --git a/Modules/Platform/Windows-GNU-OBJC.cmake b/Modules/Platform/Windows-GNU-OBJC.cmake new file mode 100644 index 0000000..42cf3f8 --- /dev/null +++ b/Modules/Platform/Windows-GNU-OBJC.cmake @@ -0,0 +1,2 @@ +include(Platform/Windows-GNU) +__windows_compiler_gnu(OBJC) diff --git a/Modules/Platform/Windows-GNU-OBJCXX-ABI.cmake b/Modules/Platform/Windows-GNU-OBJCXX-ABI.cmake new file mode 100644 index 0000000..9a11514 --- /dev/null +++ b/Modules/Platform/Windows-GNU-OBJCXX-ABI.cmake @@ -0,0 +1 @@ +__windows_compiler_gnu_abi(OBJCXX) diff --git a/Modules/Platform/Windows-GNU-OBJCXX.cmake b/Modules/Platform/Windows-GNU-OBJCXX.cmake new file mode 100644 index 0000000..072cf28 --- /dev/null +++ b/Modules/Platform/Windows-GNU-OBJCXX.cmake @@ -0,0 +1,2 @@ +include(Platform/Windows-GNU) +__windows_compiler_gnu(OBJCXX) |