diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2020-09-29 15:24:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-09-29 16:35:49 (GMT) |
commit | 8a2977ba55367c91f2f66055ea2cc1304e1a42b1 (patch) | |
tree | cdae0c1c41a4d58f14ff0949c5fe9ee708c7d123 | |
parent | 7d4e9a3a3a579db66b2850beee9b70cd8e5fa6fa (diff) | |
download | CMake-8a2977ba55367c91f2f66055ea2cc1304e1a42b1.zip CMake-8a2977ba55367c91f2f66055ea2cc1304e1a42b1.tar.gz CMake-8a2977ba55367c91f2f66055ea2cc1304e1a42b1.tar.bz2 |
OBJCXX: Fix regression for compiling cpp files as objcxx
In commit 8d61294c3e (PCH: Mark CMake PCH source files as -x
<lang>-header, 2020-09-04, v3.18.3~14^2) we removed the explicit `-x
objective-c++` flag. This broke cases with custom source extensions.
Restore the explicit `-x objective-c[++]` flag and put it before the
`<FLAGS>` placeholder. The latter will contain the proper `-x
objective-c[++]-header` value and will override the `-x objective-c[++]`
value set before.
Fixes: #21234
-rw-r--r-- | Modules/CMakeOBJCInformation.cmake | 2 | ||||
-rw-r--r-- | Modules/CMakeOBJCXXInformation.cmake | 2 | ||||
-rw-r--r-- | Tests/ObjCXX/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/ObjCXX/cxx-as-objcxx/CMakeLists.txt | 5 | ||||
-rw-r--r-- | Tests/ObjCXX/cxx-as-objcxx/main.cpp | 6 |
5 files changed, 14 insertions, 2 deletions
diff --git a/Modules/CMakeOBJCInformation.cmake b/Modules/CMakeOBJCInformation.cmake index b3da82d..d530191 100644 --- a/Modules/CMakeOBJCInformation.cmake +++ b/Modules/CMakeOBJCInformation.cmake @@ -170,7 +170,7 @@ endif() # compile an Objective-C file into an object file if(NOT CMAKE_OBJC_COMPILE_OBJECT) set(CMAKE_OBJC_COMPILE_OBJECT - "<CMAKE_OBJC_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x objective-c -o <OBJECT> -c <SOURCE>") + "<CMAKE_OBJC_COMPILER> <DEFINES> <INCLUDES> -x objective-c <FLAGS> -o <OBJECT> -c <SOURCE>") endif() if(NOT CMAKE_OBJC_LINK_EXECUTABLE) diff --git a/Modules/CMakeOBJCXXInformation.cmake b/Modules/CMakeOBJCXXInformation.cmake index 4be9762..7a3b9d7 100644 --- a/Modules/CMakeOBJCXXInformation.cmake +++ b/Modules/CMakeOBJCXXInformation.cmake @@ -263,7 +263,7 @@ endif() # compile an Objective-C++ file into an object file if(NOT CMAKE_OBJCXX_COMPILE_OBJECT) set(CMAKE_OBJCXX_COMPILE_OBJECT - "<CMAKE_OBJCXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>") + "<CMAKE_OBJCXX_COMPILER> <DEFINES> <INCLUDES> -x objective-c++ <FLAGS> -o <OBJECT> -c <SOURCE>") endif() if(NOT CMAKE_OBJCXX_LINK_EXECUTABLE) diff --git a/Tests/ObjCXX/CMakeLists.txt b/Tests/ObjCXX/CMakeLists.txt index a2a907a..cf03771 100644 --- a/Tests/ObjCXX/CMakeLists.txt +++ b/Tests/ObjCXX/CMakeLists.txt @@ -2,3 +2,4 @@ ADD_TEST_MACRO(ObjCXX.ObjC++ ObjC++) ADD_TEST_MACRO(ObjCXX.simple-build-test simple-build-test) ADD_TEST_MACRO(ObjCXX.cxx-file-extension-test cxx-file-extension-test) ADD_TEST_MACRO(ObjCXX.objcxx-file-extension-test objcxx-file-extension-test) +ADD_TEST_MACRO(ObjCXX.cxx-as-objcxx cxx-as-objcxx) diff --git a/Tests/ObjCXX/cxx-as-objcxx/CMakeLists.txt b/Tests/ObjCXX/cxx-as-objcxx/CMakeLists.txt new file mode 100644 index 0000000..23f6891 --- /dev/null +++ b/Tests/ObjCXX/cxx-as-objcxx/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.18) +project(cxx-as-objcxx LANGUAGES OBJCXX) + +add_executable(cxx-as-objcxx main.cpp) +set_source_files_properties(main.cpp PROPERTIES LANGUAGE OBJCXX) diff --git a/Tests/ObjCXX/cxx-as-objcxx/main.cpp b/Tests/ObjCXX/cxx-as-objcxx/main.cpp new file mode 100644 index 0000000..701c567 --- /dev/null +++ b/Tests/ObjCXX/cxx-as-objcxx/main.cpp @@ -0,0 +1,6 @@ +#import <Foundation/Foundation.h> + +int main(int argc, char* argv[]) +{ + return 0; +} |