diff options
author | Brad King <brad.king@kitware.com> | 2016-07-21 14:08:40 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-07-21 14:08:40 (GMT) |
commit | f19aca606394a8651dd06ff1e9bca35fec311467 (patch) | |
tree | bae5a8676e8c9d041dbcfb96cdeaefd8b09801ea /Source | |
parent | 40d5375cf1b55c4eb8043a037c6ad42dc482cc3c (diff) | |
parent | 5e55d87bdc4d14507fec2bae7a41f3fb9498db1a (diff) | |
download | CMake-f19aca606394a8651dd06ff1e9bca35fec311467.zip CMake-f19aca606394a8651dd06ff1e9bca35fec311467.tar.gz CMake-f19aca606394a8651dd06ff1e9bca35fec311467.tar.bz2 |
Merge branch 'revert-autogen-subdirs' into release
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmQtAutoGeneratorInitializer.cxx | 120 | ||||
-rw-r--r-- | Source/cmQtAutoGenerators.cxx | 79 | ||||
-rw-r--r-- | Source/cmQtAutoGenerators.h | 5 |
3 files changed, 45 insertions, 159 deletions
diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx index dd19760..70c8a65 100644 --- a/Source/cmQtAutoGeneratorInitializer.cxx +++ b/Source/cmQtAutoGeneratorInitializer.cxx @@ -25,79 +25,6 @@ #include "cmGlobalVisualStudioGenerator.h" #endif -static std::string GetAutogenTargetName(cmGeneratorTarget const* target) -{ - std::string autogenTargetName = target->GetName(); - autogenTargetName += "_automoc"; - return autogenTargetName; -} - -static std::string GetAutogenTargetDir(cmGeneratorTarget const* target) -{ - cmMakefile* makefile = target->Target->GetMakefile(); - std::string targetDir = makefile->GetCurrentBinaryDirectory(); - targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory(); - targetDir += "/"; - targetDir += GetAutogenTargetName(target); - targetDir += ".dir/"; - return targetDir; -} - -static std::string GetAutogenTargetBuildDir(cmGeneratorTarget const* target) -{ - cmMakefile* makefile = target->Target->GetMakefile(); - std::string targetDir = makefile->GetCurrentBinaryDirectory(); - targetDir += "/"; - targetDir += GetAutogenTargetName(target); - targetDir += ".dir/"; - return targetDir; -} - -static std::string GetSourceRelativePath(cmGeneratorTarget const* target, - const std::string& fileName) -{ - std::string pathRel; - // Test if the file is child to any of the known directories - { - const std::string fileNameReal = cmsys::SystemTools::GetRealPath(fileName); - std::string parentDirectory; - bool match(false); - { - std::string testDirs[4]; - { - cmMakefile* makefile = target->Target->GetMakefile(); - testDirs[0] = makefile->GetCurrentSourceDirectory(); - testDirs[1] = makefile->GetCurrentBinaryDirectory(); - testDirs[2] = makefile->GetHomeDirectory(); - testDirs[3] = makefile->GetHomeOutputDirectory(); - } - for (int ii = 0; ii != sizeof(testDirs) / sizeof(std::string); ++ii) { - const ::std::string testDir = - cmsys::SystemTools::GetRealPath(testDirs[ii]); - if (!testDir.empty() && - cmsys::SystemTools::IsSubDirectory(fileNameReal, testDir)) { - parentDirectory = testDir; - match = true; - break; - } - } - } - // Use root as fallback parent directory - if (!match) { - cmsys::SystemTools::SplitPathRootComponent(fileNameReal, - &parentDirectory); - } - pathRel = cmsys::SystemTools::RelativePath( - parentDirectory, cmsys::SystemTools::GetParentDirectory(fileNameReal)); - } - // Sanitize relative path - if (!pathRel.empty()) { - pathRel += '/'; - cmSystemTools::ReplaceString(pathRel, "..", "__"); - } - return pathRel; -} - static void SetupSourceFiles(cmGeneratorTarget const* target, std::vector<std::string>& skipMoc, std::vector<std::string>& mocSources, @@ -128,16 +55,13 @@ static void SetupSourceFiles(cmGeneratorTarget const* target, if (target->GetPropertyAsBool("AUTORCC")) { if (ext == "qrc" && !cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"))) { - - std::string rcc_output_dir = GetAutogenTargetBuildDir(target); - rcc_output_dir += GetSourceRelativePath(target, absFile); - cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); - std::string basename = cmsys::SystemTools::GetFilenameWithoutLastExtension(absFile); + std::string rcc_output_dir = target->GetSupportDirectory(); + cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); std::string rcc_output_file = rcc_output_dir; - rcc_output_file += "qrc_" + basename + ".cpp"; + rcc_output_file += "/qrc_" + basename + ".cpp"; makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES", rcc_output_file.c_str(), false); makefile->GetOrCreateSource(rcc_output_file, true); @@ -441,6 +365,24 @@ static void MergeRccOptions(std::vector<std::string>& opts, opts.insert(opts.end(), extraOpts.begin(), extraOpts.end()); } +std::string GetAutogenTargetName(cmGeneratorTarget const* target) +{ + std::string autogenTargetName = target->GetName(); + autogenTargetName += "_automoc"; + return autogenTargetName; +} + +std::string GetAutogenTargetDir(cmGeneratorTarget const* target) +{ + cmMakefile* makefile = target->Target->GetMakefile(); + std::string targetDir = makefile->GetCurrentBinaryDirectory(); + targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory(); + targetDir += "/"; + targetDir += GetAutogenTargetName(target); + targetDir += ".dir/"; + return targetDir; +} + static void copyTargetProperty(cmTarget* destinationTarget, cmTarget* sourceTarget, const std::string& propertyName) @@ -803,18 +745,14 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( if (target->GetPropertyAsBool("AUTORCC")) { if (ext == "qrc" && !cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"))) { - - { - std::string rcc_output_dir = GetAutogenTargetBuildDir(target); - rcc_output_dir += GetSourceRelativePath(target, absFile); - cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); - - std::string basename = - cmsys::SystemTools::GetFilenameWithoutLastExtension(absFile); - std::string rcc_output_file = rcc_output_dir; - rcc_output_file += "qrc_" + basename + ".cpp"; - rcc_output.push_back(rcc_output_file); - } + std::string basename = + cmsys::SystemTools::GetFilenameWithoutLastExtension(absFile); + + std::string rcc_output_dir = target->GetSupportDirectory(); + cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); + std::string rcc_output_file = rcc_output_dir; + rcc_output_file += "/qrc_" + basename + ".cpp"; + rcc_output.push_back(rcc_output_file); if (!cmSystemTools::IsOn(sf->GetPropertyForUser("GENERATED"))) { if (qtMajorVersion == "5") { diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index ac64397..3677a28 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -358,12 +358,11 @@ void cmQtAutoGenerators::WriteOldMocDefinitionsFile( void cmQtAutoGenerators::Init() { - this->TargetBuildSubDir = this->TargetName; - this->TargetBuildSubDir += ".dir/"; - this->OutMocCppFilenameRel = this->TargetName; this->OutMocCppFilenameRel += ".cpp"; - this->OutMocCppFilenameAbs = this->Builddir + this->OutMocCppFilenameRel; + + this->OutMocCppFilename = this->Builddir; + this->OutMocCppFilename += this->OutMocCppFilenameRel; std::vector<std::string> cdefList; cmSystemTools::ExpandListArgument(this->MocCompileDefinitionsStr, cdefList); @@ -440,7 +439,7 @@ static std::string ReadAll(const std::string& filename) bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) { - if (!cmsys::SystemTools::FileExists(this->OutMocCppFilenameAbs.c_str()) || + if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str()) || (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr)) { this->GenerateAll = true; } @@ -948,13 +947,12 @@ void cmQtAutoGenerators::ParseHeaders( this->LogInfo(err.str()); } + const std::string basename = + cmsys::SystemTools::GetFilenameWithoutLastExtension(headerName); + + const std::string currentMoc = "moc_" + basename + ".cpp"; std::string macroName; if (requiresMocing(contents, macroName)) { - const std::string parentDir = - this->TargetBuildSubDir + this->SourceRelativePath(headerName); - const std::string basename = - cmsys::SystemTools::GetFilenameWithoutLastExtension(headerName); - const std::string currentMoc = parentDir + "moc_" + basename + ".cpp"; notIncludedMocs[headerName] = currentMoc; } } @@ -1032,7 +1030,7 @@ bool cmQtAutoGenerators::GenerateMocFiles( // check if we even need to update _automoc.cpp if (!automocCppChanged) { // compare contents of the _automoc.cpp file - const std::string oldContents = ReadAll(this->OutMocCppFilenameAbs); + const std::string oldContents = ReadAll(this->OutMocCppFilename); if (oldContents == automocSource) { // nothing changed: don't touch the _automoc.cpp file if (this->Verbose) { @@ -1055,7 +1053,7 @@ bool cmQtAutoGenerators::GenerateMocFiles( } { cmsys::ofstream outfile; - outfile.open(this->OutMocCppFilenameAbs.c_str(), std::ios::trunc); + outfile.open(this->OutMocCppFilename.c_str(), std::ios::trunc); outfile << automocSource; outfile.close(); } @@ -1264,10 +1262,8 @@ bool cmQtAutoGenerators::GenerateQrcFiles() if (ext == ".qrc") { std::string basename = cmsys::SystemTools::GetFilenameWithoutLastExtension(*si); - std::string qrcOutputFile = this->TargetBuildSubDir + - this->SourceRelativePath(*si) + "qrc_" + basename + ".cpp"; - // std::string qrcOutputFile = "CMakeFiles/" + this->OriginTargetName - // + ".dir/qrc_" + basename + ".cpp"; + std::string qrcOutputFile = "CMakeFiles/" + this->OriginTargetName + + ".dir/qrc_" + basename + ".cpp"; qrcGenMap[*si] = qrcOutputFile; } } @@ -1302,10 +1298,8 @@ bool cmQtAutoGenerators::GenerateQrcFiles() bool cmQtAutoGenerators::GenerateQrc(const std::string& qrcInputFile, const std::string& qrcOutputFile) { - std::string relName = this->SourceRelativePath(qrcInputFile); - std::replace(relName.begin(), relName.end(), '/', '_'); - relName += cmsys::SystemTools::GetFilenameWithoutLastExtension(qrcInputFile); - + const std::string basename = + cmsys::SystemTools::GetFilenameWithoutLastExtension(qrcInputFile); const ::std::string qrcBuildFile = this->Builddir + qrcOutputFile; int sourceNewerThanQrc = 0; @@ -1332,7 +1326,7 @@ bool cmQtAutoGenerators::GenerateQrc(const std::string& qrcInputFile, } command.push_back("-name"); - command.push_back(relName); + command.push_back(basename); command.push_back("-o"); command.push_back(qrcBuildFile); command.push_back(qrcInputFile); @@ -1357,49 +1351,6 @@ bool cmQtAutoGenerators::GenerateQrc(const std::string& qrcInputFile, return true; } -std::string cmQtAutoGenerators::SourceRelativePath(const std::string& filename) -{ - std::string pathRel; - - // Test if the file is child to any of the known directories - { - std::string fileNameReal = cmsys::SystemTools::GetRealPath(filename); - std::string parentDirectory; - bool match(false); - { - const ::std::string* testDirs[4]; - testDirs[0] = &(this->Srcdir); - testDirs[1] = &(this->Builddir); - testDirs[2] = &(this->ProjectSourceDir); - testDirs[3] = &(this->ProjectBinaryDir); - for (int ii = 0; ii != sizeof(testDirs) / sizeof(const ::std::string*); - ++ii) { - const ::std::string testDir = - cmsys::SystemTools::GetRealPath(*(testDirs[ii])); - if (cmsys::SystemTools::IsSubDirectory(fileNameReal, testDir)) { - parentDirectory = testDir; - match = true; - break; - } - } - } - // Use root as fallback parent directory - if (!match) { - cmsys::SystemTools::SplitPathRootComponent(fileNameReal, - &parentDirectory); - } - pathRel = cmsys::SystemTools::RelativePath( - parentDirectory, cmsys::SystemTools::GetParentDirectory(fileNameReal)); - } - - // Sanitize relative path - if (!pathRel.empty()) { - pathRel += '/'; - cmSystemTools::ReplaceString(pathRel, "..", "__"); - } - return pathRel; -} - /** * @brief Collects name collisions as output/input pairs * @return True if there were collisions diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h index 5e7fab5..86913f0 100644 --- a/Source/cmQtAutoGenerators.h +++ b/Source/cmQtAutoGenerators.h @@ -83,8 +83,6 @@ private: void Init(); - std::string SourceRelativePath(const std::string& filename); - bool NameCollisionTest(const std::map<std::string, std::string>& genFiles, std::multimap<std::string, std::string>& collisions); void NameCollisionLog( @@ -125,9 +123,8 @@ private: std::string CurrentCompileSettingsStr; std::string OldCompileSettingsStr; - std::string TargetBuildSubDir; std::string OutMocCppFilenameRel; - std::string OutMocCppFilenameAbs; + std::string OutMocCppFilename; std::list<std::string> MocIncludes; std::list<std::string> MocDefinitions; std::vector<std::string> MocOptions; |