diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-10-10 09:46:06 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-10-10 10:01:39 (GMT) |
commit | af1f6987571b6f8298b03e184aa4aad23882d5c8 (patch) | |
tree | b8c2ed5d64659f6defc853921a1aa5cf2b46e8dd | |
parent | 7e4910fe47d667e059e42ac6395b0f4726f17064 (diff) | |
download | CMake-af1f6987571b6f8298b03e184aa4aad23882d5c8.zip CMake-af1f6987571b6f8298b03e184aa4aad23882d5c8.tar.gz CMake-af1f6987571b6f8298b03e184aa4aad23882d5c8.tar.bz2 |
CMP0024: Store the fact of included export in global generator.
Storing it in the makefile means that the policy does not trigger
when include and export are in differing directories.
-rw-r--r-- | Source/cmExportCommand.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 13 | ||||
-rw-r--r-- | Source/cmIncludeCommand.cxx | 4 | ||||
-rw-r--r-- | Source/cmMakefile.h | 13 | ||||
-rw-r--r-- | Tests/RunCMake/include/CMP0024-NEW-stderr.txt | 7 | ||||
-rw-r--r-- | Tests/RunCMake/include/CMP0024-NEW.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/include/CMP0024-WARN-stderr.txt | 6 | ||||
-rw-r--r-- | Tests/RunCMake/include/CMP0024-WARN.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/include/subdir1/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/include/subdir2/CMakeLists.txt | 2 |
10 files changed, 31 insertions, 28 deletions
diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 422b038..f335b8b 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -172,7 +172,9 @@ bool cmExportCommand ebfg.SetCommand(this); ebfg.SetExportOld(this->ExportOld.IsEnabled()); - this->Makefile->AddExportedTargetsFile(fname); + cmGlobalGenerator *gg = this->Makefile->GetLocalGenerator() + ->GetGlobalGenerator(); + gg->AddExportedTargetsFile(fname); // Compute the set of configurations exported. std::vector<std::string> configurationTypes; diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 70f6e32..b8860f1 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -293,6 +293,18 @@ public: void ProcessEvaluationFiles(); + void AddExportedTargetsFile(const std::string &filename) + { + this->ExportedTargetsFiles.insert(filename); + } + + bool IsExportedTargetsFile(const std::string &filename) const + { + const std::set<std::string>::const_iterator it + = this->ExportedTargetsFiles.find(filename); + return it != this->ExportedTargetsFiles.end(); + } + protected: typedef std::vector<cmLocalGenerator*> GeneratorVector; // for a project collect all its targets by following depend @@ -372,6 +384,7 @@ private: std::map<cmStdString, cmStdString> ExtensionToLanguage; std::map<cmStdString, int> LanguageToLinkerPreference; std::map<cmStdString, cmStdString> LanguageToOriginalSharedLibFlags; + std::set<std::string> ExportedTargetsFiles; // Record hashes for rules and outputs. struct RuleHash { char Data[32]; }; diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index a3d8b83..39d4993 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -93,7 +93,9 @@ bool cmIncludeCommand cmSystemTools::CollapseFullPath(fname.c_str(), this->Makefile->GetStartDirectory()); - if (this->Makefile->IsExportedTargetsFile(fname_abs)) + cmGlobalGenerator *gg = this->Makefile->GetLocalGenerator() + ->GetGlobalGenerator(); + if (gg->IsExportedTargetsFile(fname_abs)) { const char *modal = 0; cmake::MessageType messageType = cmake::AUTHOR_WARNING; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 362b066..ca82336 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -489,18 +489,6 @@ public: return this->cmCurrentListFile.c_str(); } - void AddExportedTargetsFile(const std::string &filename) - { - this->ExportedTargetsFiles.insert(filename); - } - - bool IsExportedTargetsFile(const std::string &filename) const - { - const std::set<std::string>::const_iterator it - = this->ExportedTargetsFiles.find(filename); - return it != this->ExportedTargetsFiles.end(); - } - //@} /** @@ -1053,7 +1041,6 @@ private: void EnforceDirectoryLevelRules(); bool GeneratingBuildSystem; - std::set<std::string> ExportedTargetsFiles; /** * Old version of GetSourceFileWithOutput(const char*) kept for * backward-compatibility. It implements a linear search and support diff --git a/Tests/RunCMake/include/CMP0024-NEW-stderr.txt b/Tests/RunCMake/include/CMP0024-NEW-stderr.txt index 182c67a..059d7e4 100644 --- a/Tests/RunCMake/include/CMP0024-NEW-stderr.txt +++ b/Tests/RunCMake/include/CMP0024-NEW-stderr.txt @@ -1,15 +1,12 @@ -CMake Error at CMP0024-NEW.cmake:9 \(include\): +CMake Error at subdir2/CMakeLists.txt:2 \(include\): Policy CMP0024 is not set: Disallow include export result. Run "cmake --help-policy CMP0024" for policy details. Use the cmake_policy command to set the policy and suppress this warning. The file - .*/Tests/RunCMake/include/CMP0024-NEW-build/theTargets.cmake + .*/Tests/RunCMake/include/CMP0024-NEW-build/subdir1/theTargets.cmake was generated by the export\(\) command. It may not be used as the argument to the include\(\) command. Use ALIAS targets instead to refer to targets by alternative names. - -Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/include/CMP0024-NEW.cmake b/Tests/RunCMake/include/CMP0024-NEW.cmake index 0685d6c..0e03d2a 100644 --- a/Tests/RunCMake/include/CMP0024-NEW.cmake +++ b/Tests/RunCMake/include/CMP0024-NEW.cmake @@ -5,5 +5,5 @@ cmake_policy(SET CMP0024 NEW) add_library(foo SHARED empty.cpp) -export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake") -include("${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake") +add_subdirectory(subdir1) +add_subdirectory(subdir2) diff --git a/Tests/RunCMake/include/CMP0024-WARN-stderr.txt b/Tests/RunCMake/include/CMP0024-WARN-stderr.txt index 2b36f17..9c79007 100644 --- a/Tests/RunCMake/include/CMP0024-WARN-stderr.txt +++ b/Tests/RunCMake/include/CMP0024-WARN-stderr.txt @@ -1,16 +1,14 @@ -CMake Warning \(dev\) at CMP0024-WARN.cmake:7 \(include\): +CMake Warning \(dev\) at subdir2/CMakeLists.txt:2 \(include\): Policy CMP0024 is not set: Disallow include export result. Run "cmake --help-policy CMP0024" for policy details. Use the cmake_policy command to set the policy and suppress this warning. The file - .*/Tests/RunCMake/include/CMP0024-WARN-build/theTargets.cmake + .*/Tests/RunCMake/include/CMP0024-WARN-build/subdir1/theTargets.cmake was generated by the export\(\) command. It should not be used as the argument to the include\(\) command. Use ALIAS targets instead to refer to targets by alternative names. -Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/include/CMP0024-WARN.cmake b/Tests/RunCMake/include/CMP0024-WARN.cmake index 583c7d4..783cf78 100644 --- a/Tests/RunCMake/include/CMP0024-WARN.cmake +++ b/Tests/RunCMake/include/CMP0024-WARN.cmake @@ -3,5 +3,5 @@ enable_language(CXX) add_library(foo SHARED empty.cpp) -export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake") -include("${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake") +add_subdirectory(subdir1) +add_subdirectory(subdir2) diff --git a/Tests/RunCMake/include/subdir1/CMakeLists.txt b/Tests/RunCMake/include/subdir1/CMakeLists.txt new file mode 100644 index 0000000..11a76d1 --- /dev/null +++ b/Tests/RunCMake/include/subdir1/CMakeLists.txt @@ -0,0 +1,2 @@ + +export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake") diff --git a/Tests/RunCMake/include/subdir2/CMakeLists.txt b/Tests/RunCMake/include/subdir2/CMakeLists.txt new file mode 100644 index 0000000..7361f9c --- /dev/null +++ b/Tests/RunCMake/include/subdir2/CMakeLists.txt @@ -0,0 +1,2 @@ + +include("${CMAKE_CURRENT_BINARY_DIR}/../subdir1/theTargets.cmake") |