Browse Source

Merge topic 'verify-interface-header-sets-interface-library-source-language'

41f15193e5 VERIFY_INTERFACE_HEADER_SETS: Fall back to global languages

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Merge-request: !7517
Brad King 3 years ago
parent
commit
b6ffca53f8

+ 3 - 1
Help/prop_tgt/VERIFY_INTERFACE_HEADER_SETS.rst

@@ -22,7 +22,9 @@ If the header's :prop_sf:`LANGUAGE` property is set, the value of that property
 is used to determine the language with which to compile the header file.
 Otherwise, if the target has any C++ sources, the header is compiled as C++.
 Otherwise, if the target has any C sources, the header is compiled as C.
-Otherwise, the header file is not compiled.
+Otherwise, if C++ is enabled globally, the header is compiled as C++.
+Otherwise, if C is enabled globally, the header is compiled as C. Otherwise,
+the header file is not compiled.
 
 If the project wishes to control which header sets are verified by this
 property, you can set :prop_tgt:`INTERFACE_HEADER_SETS_TO_VERIFY`.

+ 6 - 0
Source/cmGeneratorTarget.cxx

@@ -8688,6 +8688,12 @@ std::string cmGeneratorTarget::GenerateHeaderSetVerificationFile(
           languages->insert("C");
         }
       }
+
+      if (languages->empty()) {
+        std::vector<std::string> languagesVector;
+        this->GlobalGenerator->GetEnabledLanguages(languagesVector);
+        languages->insert(languagesVector.begin(), languagesVector.end());
+      }
     }
 
     if (languages->count("CXX")) {

+ 1 - 0
Tests/RunCMake/VerifyHeaderSets/RunCMakeTest.cmake

@@ -40,6 +40,7 @@ endif()
 
 run_cmake_build(VerifyHeaderSets lang_test_c_verify_interface_header_sets)
 run_cmake_build(VerifyHeaderSets lang_test_cxx_verify_interface_header_sets)
+run_cmake_build(VerifyHeaderSets interface_lang_test_cxx_verify_interface_header_sets)
 run_cmake_build(VerifyHeaderSets list_verify_interface_header_sets)
 
 set(RunCMake_TEST_OPTIONS -DCMAKE_VERIFY_INTERFACE_HEADER_SETS=ON)

+ 4 - 0
Tests/RunCMake/VerifyHeaderSets/VerifyHeaderSets.cmake

@@ -61,6 +61,10 @@ add_library(lang_test_cxx STATIC lib.c lib.cxx)
 target_compile_definitions(lang_test_cxx INTERFACE EXPECT_CXX)
 target_sources(lang_test_cxx INTERFACE FILE_SET HEADERS FILES lang_test.h)
 
+add_library(interface_lang_test_cxx INTERFACE)
+target_compile_definitions(interface_lang_test_cxx INTERFACE EXPECT_CXX)
+target_sources(interface_lang_test_cxx INTERFACE FILE_SET HEADERS FILES lang_test.h)
+
 set_property(SOURCE error.h PROPERTY LANGUAGE C)
 
 add_library(list STATIC lib.c)