diff options
32 files changed, 157 insertions, 22 deletions
diff --git a/Auxiliary/vim/syntax/cmake.vim b/Auxiliary/vim/syntax/cmake.vim index 7a3e4ed..e09ecf3 100644 --- a/Auxiliary/vim/syntax/cmake.vim +++ b/Auxiliary/vim/syntax/cmake.vim @@ -1608,6 +1608,7 @@ syn keyword cmakeVariable contained \ CTEST_SCP_COMMAND \ CTEST_SITE \ CTEST_SOURCE_DIRECTORY + \ CTEST_SUBMIT_INACTIVITY_TIMEOUT \ CTEST_SUBMIT_URL \ CTEST_SVN_COMMAND \ CTEST_SVN_OPTIONS diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index bb5dba3..435b2c6 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -239,6 +239,7 @@ Properties on Targets /prop_tgt/IMPORTED_LOCATION_CONFIG /prop_tgt/IMPORTED_NO_SONAME /prop_tgt/IMPORTED_NO_SONAME_CONFIG + /prop_tgt/IMPORTED_NO_SYSTEM /prop_tgt/IMPORTED_OBJECTS /prop_tgt/IMPORTED_OBJECTS_CONFIG /prop_tgt/IMPORTED_SONAME diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index a2103f7..ad96c09 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -665,6 +665,7 @@ Variables for CTest /variable/CTEST_SCP_COMMAND /variable/CTEST_SCRIPT_DIRECTORY /variable/CTEST_SITE + /variable/CTEST_SUBMIT_INACTIVITY_TIMEOUT /variable/CTEST_SUBMIT_URL /variable/CTEST_SOURCE_DIRECTORY /variable/CTEST_SVN_COMMAND diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 03d8bf6..52e8009 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -1349,6 +1349,13 @@ Configuration settings include: * :module:`CTest` module variable: ``SUBMIT_URL`` if set, else ``CTEST_SUBMIT_URL`` +``SubmitInactivityTimeout`` + The time to wait for the submission after which it is canceled + if not completed. Specify a zero value to disable timeout. + + * `CTest Script`_ variable: :variable:`CTEST_SUBMIT_INACTIVITY_TIMEOUT` + * :module:`CTest` module variable: ``CTEST_SUBMIT_INACTIVITY_TIMEOUT`` + ``TriggerSite`` Legacy option. Not used. diff --git a/Help/prop_tgt/IMPORTED_NO_SYSTEM.rst b/Help/prop_tgt/IMPORTED_NO_SYSTEM.rst new file mode 100644 index 0000000..cc726d1 --- /dev/null +++ b/Help/prop_tgt/IMPORTED_NO_SYSTEM.rst @@ -0,0 +1,17 @@ +IMPORTED_NO_SYSTEM +------------------ + +Specifies that an :ref:`Imported Target <Imported Targets>` is not +a ``SYSTEM`` library. This has the following effects: + +* Entries of :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` are not treated + as ``SYSTEM`` include directories when compiling consumers, as they + would be by default. + +This property can also be enabled on a non-imported target. Doing so does +not affect the build system, but does tell the :command:`install(EXPORT)` and +:command:`export` commands to enable it on the imported targets they generate. + +See the :prop_tgt:`NO_SYSTEM_FROM_IMPORTED` target property to set this +behavior on the target consuming the include directories rather than +providing them. diff --git a/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst b/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst index 880343d..e5cc09b 100644 --- a/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst +++ b/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst @@ -13,3 +13,6 @@ imported targets as system includes. This property is initialized by the value of the :variable:`CMAKE_NO_SYSTEM_FROM_IMPORTED` variable if it is set when a target is created. + +See the :prop_tgt:`IMPORTED_NO_SYSTEM` target property to set this behavior +on the target providing the include directories rather than consuming them. diff --git a/Help/release/dev/ctest_submit-inactivity-timeout.rst b/Help/release/dev/ctest_submit-inactivity-timeout.rst new file mode 100644 index 0000000..3d4c408 --- /dev/null +++ b/Help/release/dev/ctest_submit-inactivity-timeout.rst @@ -0,0 +1,5 @@ +ctest_submit-inactivity-timeout +------------------------------- + +* :manual:`ctest(1)` gained a new :variable:`CTEST_SUBMIT_INACTIVITY_TIMEOUT` + variable, which can be used to specify a timeout for submission inactivity. diff --git a/Help/release/dev/imported-no-system.rst b/Help/release/dev/imported-no-system.rst new file mode 100644 index 0000000..a35e8bb --- /dev/null +++ b/Help/release/dev/imported-no-system.rst @@ -0,0 +1,7 @@ +imported-no-system +------------------ + +* The :prop_tgt:`IMPORTED_NO_SYSTEM` target property was added to + specify that an :ref:`Imported Target <Imported Targets>` should + not be treated as a system library (i.e. its include directories + are not automatically ``SYSTEM``). diff --git a/Help/variable/CTEST_SUBMIT_INACTIVITY_TIMEOUT.rst b/Help/variable/CTEST_SUBMIT_INACTIVITY_TIMEOUT.rst new file mode 100644 index 0000000..65976fa --- /dev/null +++ b/Help/variable/CTEST_SUBMIT_INACTIVITY_TIMEOUT.rst @@ -0,0 +1,5 @@ +CTEST_SUBMIT_INACTIVITY_TIMEOUT +------------------------------- + +Specify the CTest ``SubmitInactivityTimeout`` setting +in a :manual:`ctest(1)` dashboard client script. diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index e5b1e5d..afa36f7 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -21,6 +21,7 @@ LabelsForSubprojects: @CTEST_LABELS_FOR_SUBPROJECTS@ # Submission information SubmitURL: @SUBMIT_URL@ +SubmitInactivityTimeout: @CTEST_SUBMIT_INACTIVITY_TIMEOUT@ # Dashboard start time NightlyStartTime: @NIGHTLY_START_TIME@ diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index f7ac1fb..8f707d1 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 22) -set(CMake_VERSION_PATCH 20211015) +set(CMake_VERSION_PATCH 20211019) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx index 0686957..d7aa287 100644 --- a/Source/CPack/cmCPackDebGenerator.cxx +++ b/Source/CPack/cmCPackDebGenerator.cxx @@ -237,7 +237,7 @@ bool DebGenerator::generateDataTar() const cmCPackLogger(cmCPackLog::LOG_DEBUG, "RELATIVEDIR: \"" << relativeDir << "\"" << std::endl); -#ifdef WIN32 +#ifdef _WIN32 std::string mode_t_adt_filename = file + ":cmake_mode_t"; cmsys::ifstream permissionStream(mode_t_adt_filename.c_str()); diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index c4f87e9..a2dc615 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -58,6 +58,9 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() this->CTest->SetCTestConfigurationFromCMakeVariable( this->Makefile, "CurlOptions", "CTEST_CURL_OPTIONS", this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable( + this->Makefile, "SubmitInactivityTimeout", + "CTEST_SUBMIT_INACTIVITY_TIMEOUT", this->Quiet); cmValue notesFilesVariable = this->Makefile->GetDefinition("CTEST_NOTES_FILES"); diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index b99bb79..fae5e30 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -7,6 +7,7 @@ #include <cstdlib> #include <sstream> +#include <cm/iomanip> #include <cmext/algorithm> #include <cm3p/curl/curl.h> @@ -216,8 +217,11 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( // if there is little to no activity for too long stop submitting ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1); - ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, - SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT); + auto submitInactivityTimeout = this->GetSubmitInactivityTimeout(); + if (submitInactivityTimeout != 0) { + ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, + submitInactivityTimeout); + } /* HTTP PUT please */ ::curl_easy_setopt(curl, CURLOPT_PUT, 1); @@ -499,7 +503,10 @@ int cmCTestSubmitHandler::HandleCDashUploadFile(std::string const& file, std::string curlopt(this->CTest->GetCTestConfiguration("CurlOptions")); std::vector<std::string> args = cmExpandedList(curlopt); curl.SetCurlOptions(args); - curl.SetTimeOutSeconds(SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT); + auto submitInactivityTimeout = this->GetSubmitInactivityTimeout(); + if (submitInactivityTimeout != 0) { + curl.SetTimeOutSeconds(submitInactivityTimeout); + } curl.SetHttpHeaders(this->HttpHeaders); std::string url = this->CTest->GetSubmitURL(); if (!cmHasLiteralPrefix(url, "http://") && @@ -893,6 +900,26 @@ void cmCTestSubmitHandler::SelectParts(std::set<cmCTest::Part> const& parts) } } +int cmCTestSubmitHandler::GetSubmitInactivityTimeout() +{ + int submitInactivityTimeout = SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT; + std::string const& timeoutStr = + this->CTest->GetCTestConfiguration("SubmitInactivityTimeout"); + if (!timeoutStr.empty()) { + unsigned long timeout; + if (cmStrToULong(timeoutStr, &timeout)) { + submitInactivityTimeout = static_cast<int>(timeout); + } else { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "SubmitInactivityTimeout is invalid: " + << cm::quoted(timeoutStr) << "." + << " Using a default value of " + << SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT << "." << std::endl); + } + } + return submitInactivityTimeout; +} + void cmCTestSubmitHandler::SelectFiles(std::set<std::string> const& files) { this->Files.insert(files.begin(), files.end()); diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h index 809c615..0c7253c 100644 --- a/Source/CTest/cmCTestSubmitHandler.h +++ b/Source/CTest/cmCTestSubmitHandler.h @@ -63,6 +63,7 @@ private: void ParseResponse(cmCTestSubmitHandlerVectorOfChar chunk); std::string GetSubmitResultsPrefix(); + int GetSubmitInactivityTimeout(); class ResponseParser; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 6e97a83..34088d2 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -59,6 +59,8 @@ public: } virtual ~cmCTestCommand() = default; + cmCTestCommand(const cmCTestCommand&) = default; + cmCTestCommand& operator=(const cmCTestCommand&) = default; bool operator()(std::vector<cmListFileArgument> const& args, cmExecutionStatus& status) diff --git a/Source/cmCMakePresetsFile.h b/Source/cmCMakePresetsFile.h index 7aa9b6a..c48a1f8 100644 --- a/Source/cmCMakePresetsFile.h +++ b/Source/cmCMakePresetsFile.h @@ -60,18 +60,20 @@ public: class Preset { public: -#if __cplusplus < 201703L && (!defined(_MSVC_LANG) || _MSVC_LANG < 201703L) + Preset() = default; + Preset(Preset&& /*other*/) = default; + Preset(const Preset& /*other*/) = default; + Preset& operator=(const Preset& /*other*/) = default; + virtual ~Preset() = default; +#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) + Preset& operator=(Preset&& /*other*/) = default; +#else // The move assignment operators for several STL classes did not become // noexcept until C++17, which causes some tools to warn about this move - // assignment operator throwing an exception when it shouldn't. Disable the - // move assignment operator until C++17 is enabled. - // Explicitly defining a copy assignment operator prevents the compiler - // from automatically generating a move assignment operator. - Preset& operator=(const Preset& /*other*/) = default; + // assignment operator throwing an exception when it shouldn't. + Preset& operator=(Preset&& /*other*/) = delete; #endif - virtual ~Preset() = default; - std::string Name; std::vector<std::string> Inherits; bool Hidden; diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index c0a4cdc..0eda92c 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -1072,6 +1072,12 @@ void cmExportFileGenerator::GenerateImportTargetCode( os << "set_property(TARGET " << targetName << " PROPERTY DEPRECATION " << cmExportFileGeneratorEscape(target->GetDeprecation()) << ")\n"; } + + if (target->GetPropertyAsBool("IMPORTED_NO_SYSTEM")) { + os << "set_property(TARGET " << targetName + << " PROPERTY IMPORTED_NO_SYSTEM 1)\n"; + } + os << "\n"; } diff --git a/Source/cmFileCopier.cxx b/Source/cmFileCopier.cxx index 00254a0..63a4274 100644 --- a/Source/cmFileCopier.cxx +++ b/Source/cmFileCopier.cxx @@ -72,7 +72,7 @@ bool cmFileCopier::SetPermissions(const std::string& toFile, mode_t permissions) { if (permissions) { -#ifdef WIN32 +#ifdef _WIN32 if (Makefile->IsOn("CMAKE_CROSSCOMPILING")) { // Store the mode in an NTFS alternate stream. std::string mode_t_adt_filename = toFile + ":cmake_mode_t"; diff --git a/Source/cmFileTime.h b/Source/cmFileTime.h index 4419880..ccc9633 100644 --- a/Source/cmFileTime.h +++ b/Source/cmFileTime.h @@ -24,6 +24,8 @@ public: #endif cmFileTime() = default; ~cmFileTime() = default; + cmFileTime(const cmFileTime&) = default; + cmFileTime& operator=(const cmFileTime&) = default; /** * @brief Loads the file time of fileName from the file system diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 8033ef5..fc02a47 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -747,6 +747,9 @@ void handleSystemIncludesDep(cmLocalGenerator* lg, if (!depTgt->IsImported() || excludeImported) { return; } + if (depTgt->GetPropertyAsBool("IMPORTED_NO_SYSTEM")) { + return; + } if (cmValue dirs = depTgt->GetProperty("INTERFACE_INCLUDE_DIRECTORIES")) { cmExpandList(cmGeneratorExpression::Evaluate(*dirs, lg, config, headTarget, diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index d337d3e..8556fe6 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -88,7 +88,7 @@ void cmLocalNinjaGenerator::Generate() cmGlobalNinjaGenerator::WriteComment(this->GetRulesFileStream(), "localized /showIncludes string"); this->GetRulesFileStream() << "msvc_deps_prefix = "; -#ifdef WIN32 +#ifdef _WIN32 // Ninja uses the ANSI Windows APIs, so strings in the rules file // typically need to be ANSI encoded. However, in this case the compiler // is being invoked using the UTF-8 codepage so the /showIncludes prefix diff --git a/Source/cmSearchPath.h b/Source/cmSearchPath.h index c15cb97..09f9722 100644 --- a/Source/cmSearchPath.h +++ b/Source/cmSearchPath.h @@ -26,6 +26,9 @@ public: cmSearchPath(cmFindCommon* findCmd = nullptr); ~cmSearchPath(); + cmSearchPath(const cmSearchPath&) = default; + cmSearchPath& operator=(const cmSearchPath&) = default; + const std::vector<std::string>& GetPaths() const { return this->Paths; } std::size_t size() const { return this->Paths.size(); } diff --git a/Source/cm_codecvt.cxx b/Source/cm_codecvt.cxx index 216d3f0..df4440f 100644 --- a/Source/cm_codecvt.cxx +++ b/Source/cm_codecvt.cxx @@ -42,7 +42,7 @@ codecvt::codecvt(Encoding e) codecvt::~codecvt() = default; -bool codecvt::do_always_noconv() const throw() +bool codecvt::do_always_noconv() const noexcept { return this->m_noconv; } @@ -234,12 +234,12 @@ void codecvt::BufferPartial(mbstate_t& state, int size, } #endif -int codecvt::do_max_length() const throw() +int codecvt::do_max_length() const noexcept { return 4; } -int codecvt::do_encoding() const throw() +int codecvt::do_encoding() const noexcept { return 0; } diff --git a/Source/cm_codecvt.hxx b/Source/cm_codecvt.hxx index b73204f..9af083f 100644 --- a/Source/cm_codecvt.hxx +++ b/Source/cm_codecvt.hxx @@ -24,14 +24,14 @@ public: protected: ~codecvt() override; - bool do_always_noconv() const throw() override; + bool do_always_noconv() const noexcept override; result do_out(mbstate_t& state, const char* from, const char* from_end, const char*& from_next, char* to, char* to_end, char*& to_next) const override; result do_unshift(mbstate_t& state, char* to, char*, char*& to_next) const override; - int do_max_length() const throw() override; - int do_encoding() const throw() override; + int do_max_length() const noexcept override; + int do_encoding() const noexcept override; private: // The mbstate_t argument to do_out and do_unshift is responsible diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 4eb98b9..bdddc4e 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -1461,7 +1461,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args, cmSystemTools::Error("Problem extracting tar: " + outFile); return 1; } -#ifdef WIN32 +#ifdef _WIN32 // OK, on windows 7 after we untar some files, // sometimes we can not rename the directory after // the untar is done. This breaks the external project diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt index a2968d4..7b33277 100644 --- a/Tests/ExportImport/Export/CMakeLists.txt +++ b/Tests/ExportImport/Export/CMakeLists.txt @@ -145,6 +145,19 @@ set_property(TARGET testLibCycleA PROPERTY LINK_INTERFACE_MULTIPLICITY 3) add_library(testLibNoSONAME SHARED testLibNoSONAME.c) set_property(TARGET testLibNoSONAME PROPERTY NO_SONAME 1) +add_library(testInterfaceIncludeUser INTERFACE) +target_include_directories(testInterfaceIncludeUser + INTERFACE + "$<INSTALL_INTERFACE:include/testInterfaceIncludeUser>" + "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/testInterfaceIncludeUser>" +) +set_property(TARGET testInterfaceIncludeUser PROPERTY IMPORTED_NO_SYSTEM 1) +install( + FILES + "${CMAKE_CURRENT_SOURCE_DIR}/include/testInterfaceIncludeUser/testInterfaceInclude.h" + DESTINATION include/testInterfaceIncludeUser +) + cmake_policy(PUSH) cmake_policy(SET CMP0022 NEW) # Test exporting dependent libraries into different exports @@ -531,6 +544,7 @@ install( cmp0022NEW cmp0022OLD TopDirLib SubDirLinkA systemlib + testInterfaceIncludeUser EXPORT exp RUNTIME DESTINATION $<1:bin>$<0:/wrong> LIBRARY DESTINATION $<1:lib>$<0:/wrong> NAMELINK_SKIP @@ -590,6 +604,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3 cmp0022NEW cmp0022OLD TopDirLib SubDirLinkA systemlib + testInterfaceIncludeUser NAMESPACE bld_ FILE ExportBuildTree.cmake ) diff --git a/Tests/ExportImport/Export/include/testInterfaceIncludeUser/testInterfaceInclude.h b/Tests/ExportImport/Export/include/testInterfaceIncludeUser/testInterfaceInclude.h new file mode 100644 index 0000000..fa882cb --- /dev/null +++ b/Tests/ExportImport/Export/include/testInterfaceIncludeUser/testInterfaceInclude.h @@ -0,0 +1 @@ +/* empty file */ diff --git a/Tests/ExportImport/Import/A/CMakeLists.txt b/Tests/ExportImport/Import/A/CMakeLists.txt index 3cb3833..0cd703f 100644 --- a/Tests/ExportImport/Import/A/CMakeLists.txt +++ b/Tests/ExportImport/Import/A/CMakeLists.txt @@ -70,6 +70,10 @@ target_link_libraries(imp_testExe1 exp_testLibPerConfigDest ) +add_library(imp_testInterfaceInclude1 STATIC imp_testInterfaceInclude1.c) +target_include_directories(imp_testInterfaceInclude1 SYSTEM PRIVATE testInterfaceIncludeSystem) +target_link_libraries(imp_testInterfaceInclude1 PRIVATE exp_testInterfaceIncludeUser) + # Try building a plugin to an executable imported from the install tree. add_library(imp_mod1 MODULE imp_mod1.c) target_link_libraries(imp_mod1 exp_testExe2) @@ -110,6 +114,10 @@ target_link_libraries(imp_testExe1b bld_testLibPerConfigDest ) +add_library(imp_testInterfaceInclude1b STATIC imp_testInterfaceInclude1.c) +target_include_directories(imp_testInterfaceInclude1b SYSTEM PRIVATE testInterfaceIncludeSystem) +target_link_libraries(imp_testInterfaceInclude1b PRIVATE bld_testInterfaceIncludeUser) + add_custom_target(check_testLib1_genex ALL COMMAND ${CMAKE_COMMAND} -DtestLib1=$<TARGET_FILE:exp_testLib1> -Dprefix=${CMAKE_INSTALL_PREFIX} diff --git a/Tests/ExportImport/Import/A/imp_testInterfaceInclude1.c b/Tests/ExportImport/Import/A/imp_testInterfaceInclude1.c new file mode 100644 index 0000000..88a49b5 --- /dev/null +++ b/Tests/ExportImport/Import/A/imp_testInterfaceInclude1.c @@ -0,0 +1,6 @@ +#include "testInterfaceInclude.h" + +int imp_testInterfaceInclude1(void) +{ + return 0; +} diff --git a/Tests/ExportImport/Import/A/testInterfaceIncludeSystem/testInterfaceInclude.h b/Tests/ExportImport/Import/A/testInterfaceIncludeSystem/testInterfaceInclude.h new file mode 100644 index 0000000..2beeb8b --- /dev/null +++ b/Tests/ExportImport/Import/A/testInterfaceIncludeSystem/testInterfaceInclude.h @@ -0,0 +1 @@ +#error testInterfaceInclude.h included from testInterfaceIncludeSystem diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index 4c488e6..efbcb7e 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -115,6 +115,13 @@ add_library(ordertest ordertest.cpp) target_include_directories(ordertest SYSTEM PUBLIC SystemIncludeDirectories/systemlib) target_include_directories(ordertest PUBLIC SystemIncludeDirectories/userlib) +add_library(ordertest2 ordertest.cpp) +target_include_directories(ordertest2 SYSTEM PRIVATE SystemIncludeDirectories/systemlib) +target_link_libraries(ordertest2 PRIVATE ordertest2_userlib) +add_library(ordertest2_userlib INTERFACE IMPORTED) +target_include_directories(ordertest2_userlib INTERFACE SystemIncludeDirectories/userlib) +set_property(TARGET ordertest2_userlib PROPERTY IMPORTED_NO_SYSTEM 1) + add_subdirectory(StandardIncludeDirectories) add_subdirectory(TargetIncludeDirectories) |
