This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, master has been updated via 1d51fcaeafeb9bfcdf3bc871d2b875446df081e8 (commit) via 0baf114a35f061ac27f44c9d4716b2f30a1533c6 (commit) via d4b70a20fae44e802b5e07c7fa18b81808263f77 (commit) via 485cbd456aae395da1661b08161751c3c3b47a96 (commit) via eda45e9f17cdc401c6450d0e8eca65e5b068330f (commit) via 15ef27286ade97a49f6832254d3451755a824fb8 (commit) via 362f9bd755c7b964184db38d1fb2217ded70af63 (commit) via 952fc65d140a1b36fc2e580d7ca89de231a04412 (commit) via cbf1393aa4b957ec3c2c5cc4852dcebab825c5b6 (commit) via ae813b6bcc64fc5096fb4a7d87920b47cfbe488f (commit) via d9c8aa47c2e7a2f97def22847a76c3cfcba74f01 (commit) via 4f7d9eef51da4a72fd7c7a17bcbbcf83ffad3216 (commit) from f8a61c578badb0015423580b38341bc00a3c7fd4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1d51fcaeafeb9bfcdf3bc871d2b875446df081e8 commit 1d51fcaeafeb9bfcdf3bc871d2b875446df081e8 Merge: 0baf114 15ef272 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Aug 11 13:14:36 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Fri Aug 11 09:14:40 2017 -0400 Merge topic 'autogen-merge-redundant' 15ef2728 Autogen: Add test for OBJECT libraries 362f9bd7 Autogen: Merge and remove redundant function calls 952fc65d Autogen: Clear sources meta data cache Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !1120 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0baf114a35f061ac27f44c9d4716b2f30a1533c6 commit 0baf114a35f061ac27f44c9d4716b2f30a1533c6 Merge: d4b70a2 4f7d9ee Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Aug 11 13:13:36 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Fri Aug 11 09:13:39 2017 -0400 Merge topic 'genex-COMPILE_FEATURES-stds' 4f7d9eef Features: Fix COMPILE_FEATURES genex for C++ 14 and 17 features Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !1118 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d4b70a20fae44e802b5e07c7fa18b81808263f77 commit d4b70a20fae44e802b5e07c7fa18b81808263f77 Merge: 485cbd4 ae813b6 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Aug 11 13:12:23 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Fri Aug 11 09:12:37 2017 -0400 Merge topic 'FindCUDA-superseded' ae813b6b FindCUDA: Document that module has been superseded Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !1124 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=485cbd456aae395da1661b08161751c3c3b47a96 commit 485cbd456aae395da1661b08161751c3c3b47a96 Merge: eda45e9 d9c8aa4 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Aug 11 13:12:15 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Fri Aug 11 09:12:18 2017 -0400 Merge topic 'findcuda_dont_ignore_CUDA_USE_STATIC_CUDA_RUNTIME' d9c8aa47 FindCUDA: Always obey the CUDA_USE_STATIC_CUDA_RUNTIME option. Acked-by: Kitware Robot <kwro...@kitware.com> Merge-request: !1123 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eda45e9f17cdc401c6450d0e8eca65e5b068330f commit eda45e9f17cdc401c6450d0e8eca65e5b068330f Merge: f8a61c5 cbf1393 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Aug 11 13:11:37 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Fri Aug 11 09:11:43 2017 -0400 Merge topic 'FindCUDA-cuda9' cbf1393a FindCUDA: Add CUDA9/Volta recognition Acked-by: Kitware Robot <kwro...@kitware.com> Reviewed-by: Robert Maynard <robert.mayn...@kitware.com> Merge-request: !1119 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15ef27286ade97a49f6832254d3451755a824fb8 commit 15ef27286ade97a49f6832254d3451755a824fb8 Author: Sebastian Holtermann <sebh...@xwmw.org> AuthorDate: Thu Aug 10 19:16:16 2017 +0200 Commit: Sebastian Holtermann <sebh...@xwmw.org> CommitDate: Thu Aug 10 23:15:48 2017 +0200 Autogen: Add test for OBJECT libraries diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index 5064d26..198bf63 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -193,5 +193,9 @@ endif() add_subdirectory(uicInclude) # -- Test +# OBJECT libraries +add_subdirectory(objectLibrary) + +# -- Test # Complex test case add_subdirectory(complex) diff --git a/Tests/QtAutogen/objectLibrary/CMakeLists.txt b/Tests/QtAutogen/objectLibrary/CMakeLists.txt new file mode 100644 index 0000000..9b29a40 --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/CMakeLists.txt @@ -0,0 +1,14 @@ +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +# Object library a defined in a subdirectory +add_subdirectory(a) + +# Object library b defined locally +include_directories(b) +add_library(b OBJECT b/classb.cpp) +target_compile_features(b PRIVATE ${QT_COMPILE_FEATURES}) + +# Executable with OBJECT library generator expressions +add_executable(someProgram main.cpp $<TARGET_OBJECTS:a> $<TARGET_OBJECTS:b>) +target_link_libraries(someProgram ${QT_LIBRARIES}) diff --git a/Tests/QtAutogen/objectLibrary/a/CMakeLists.txt b/Tests/QtAutogen/objectLibrary/a/CMakeLists.txt new file mode 100644 index 0000000..fe76ac3 --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/a/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(a OBJECT classa.cpp) +target_compile_features(a PRIVATE ${QT_COMPILE_FEATURES}) diff --git a/Tests/QtAutogen/objectLibrary/a/classa.cpp b/Tests/QtAutogen/objectLibrary/a/classa.cpp new file mode 100644 index 0000000..4f08fda --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/a/classa.cpp @@ -0,0 +1,7 @@ +#include "classa.h" +#include <QDebug> + +void ClassA::slotDoSomething() +{ + qDebug() << m_member; +} diff --git a/Tests/QtAutogen/objectLibrary/a/classa.h b/Tests/QtAutogen/objectLibrary/a/classa.h new file mode 100644 index 0000000..fa5fed9 --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/a/classa.h @@ -0,0 +1,23 @@ +#ifndef CLASSA_H +#define CLASSA_H + +#include <QObject> +#include <QString> + +class ClassA : public QObject +{ + Q_OBJECT +public: + ClassA() + : m_member("Hello A") + { + } + +public slots: + void slotDoSomething(); + +private: + QString m_member; +}; + +#endif diff --git a/Tests/QtAutogen/objectLibrary/b/classb.cpp b/Tests/QtAutogen/objectLibrary/b/classb.cpp new file mode 100644 index 0000000..26e0926 --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/b/classb.cpp @@ -0,0 +1,7 @@ +#include "classb.h" +#include <QDebug> + +void ClassB::slotDoSomething() +{ + qDebug() << m_member; +} diff --git a/Tests/QtAutogen/objectLibrary/b/classb.h b/Tests/QtAutogen/objectLibrary/b/classb.h new file mode 100644 index 0000000..783bb48 --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/b/classb.h @@ -0,0 +1,23 @@ +#ifndef CLASSB_H +#define CLASSB_H + +#include <QObject> +#include <QString> + +class ClassB : public QObject +{ + Q_OBJECT +public: + ClassB() + : m_member("Hello B") + { + } + +public slots: + void slotDoSomething(); + +private: + QString m_member; +}; + +#endif diff --git a/Tests/QtAutogen/objectLibrary/main.cpp b/Tests/QtAutogen/objectLibrary/main.cpp new file mode 100644 index 0000000..cacf0fd --- /dev/null +++ b/Tests/QtAutogen/objectLibrary/main.cpp @@ -0,0 +1,13 @@ +#include "a/classa.h" +#include "b/classb.h" + +int main(int argc, char** argv) +{ + ClassA a; + a.slotDoSomething(); + + ClassB b; + b.slotDoSomething(); + + return 0; +} https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=362f9bd755c7b964184db38d1fb2217ded70af63 commit 362f9bd755c7b964184db38d1fb2217ded70af63 Author: Sebastian Holtermann <sebh...@xwmw.org> AuthorDate: Wed Aug 9 11:22:56 2017 +0200 Commit: Sebastian Holtermann <sebh...@xwmw.org> CommitDate: Thu Aug 10 18:48:15 2017 +0200 Autogen: Merge and remove redundant function calls diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index c8b13ad..18d10c5 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1433,31 +1433,36 @@ cmGlobalGenerator::CreateQtAutoGeneratorsTargets() std::vector<const cmGeneratorTarget*> autogenTargets; #ifdef CMAKE_BUILD_WITH_CMAKE - for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) { - std::vector<cmGeneratorTarget*> targets = - this->LocalGenerators[i]->GetGeneratorTargets(); + for (std::vector<cmLocalGenerator*>::const_iterator lgit = + this->LocalGenerators.begin(); + lgit != this->LocalGenerators.end(); ++lgit) { + cmLocalGenerator* localGen = *lgit; + const std::vector<cmGeneratorTarget*>& targets = + localGen->GetGeneratorTargets(); + // Find targets that require AUTOGEN processing std::vector<cmGeneratorTarget*> filteredTargets; filteredTargets.reserve(targets.size()); - for (std::vector<cmGeneratorTarget*>::iterator ti = targets.begin(); + for (std::vector<cmGeneratorTarget*>::const_iterator ti = targets.begin(); ti != targets.end(); ++ti) { - if ((*ti)->GetType() == cmStateEnums::GLOBAL_TARGET) { + cmGeneratorTarget* target = *ti; + if (target->GetType() == cmStateEnums::GLOBAL_TARGET) { continue; } - if ((*ti)->GetType() != cmStateEnums::EXECUTABLE && - (*ti)->GetType() != cmStateEnums::STATIC_LIBRARY && - (*ti)->GetType() != cmStateEnums::SHARED_LIBRARY && - (*ti)->GetType() != cmStateEnums::MODULE_LIBRARY && - (*ti)->GetType() != cmStateEnums::OBJECT_LIBRARY) { + if (target->GetType() != cmStateEnums::EXECUTABLE && + target->GetType() != cmStateEnums::STATIC_LIBRARY && + target->GetType() != cmStateEnums::SHARED_LIBRARY && + target->GetType() != cmStateEnums::MODULE_LIBRARY && + target->GetType() != cmStateEnums::OBJECT_LIBRARY) { continue; } - if ((!(*ti)->GetPropertyAsBool("AUTOMOC") && - !(*ti)->GetPropertyAsBool("AUTOUIC") && - !(*ti)->GetPropertyAsBool("AUTORCC")) || - (*ti)->IsImported()) { + if ((!target->GetPropertyAsBool("AUTOMOC") && + !target->GetPropertyAsBool("AUTOUIC") && + !target->GetPropertyAsBool("AUTORCC")) || + target->IsImported()) { continue; } - // don't do anything if there is no Qt4 or Qt5Core (which contains moc): - cmMakefile* mf = (*ti)->Target->GetMakefile(); + // don't do anything if there is no Qt4 or Qt5Core (which contains moc) + cmMakefile* mf = target->Target->GetMakefile(); std::string qtMajorVersion = mf->GetSafeDefinition("QT_VERSION_MAJOR"); if (qtMajorVersion == "") { qtMajorVersion = mf->GetSafeDefinition("Qt5Core_VERSION_MAJOR"); @@ -1465,17 +1470,13 @@ cmGlobalGenerator::CreateQtAutoGeneratorsTargets() if (qtMajorVersion != "4" && qtMajorVersion != "5") { continue; } - - cmGeneratorTarget* gt = *ti; - - cmQtAutoGeneratorInitializer::InitializeAutogenSources(gt); - filteredTargets.push_back(gt); + filteredTargets.push_back(target); } + // Initialize AUTOGEN targets for (std::vector<cmGeneratorTarget*>::iterator ti = filteredTargets.begin(); ti != filteredTargets.end(); ++ti) { - cmQtAutoGeneratorInitializer::InitializeAutogenTarget( - this->LocalGenerators[i], *ti); + cmQtAutoGeneratorInitializer::InitializeAutogenTarget(localGen, *ti); autogenTargets.push_back(*ti); } } diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx index 2cf2ee9..7974977 100644 --- a/Source/cmQtAutoGeneratorInitializer.cxx +++ b/Source/cmQtAutoGeneratorInitializer.cxx @@ -263,13 +263,17 @@ static bool AddToSourceGroup(cmMakefile* makefile, const std::string& fileName, return true; } -static void AddGeneratedSource(cmMakefile* makefile, +static void AddGeneratedSource(cmGeneratorTarget* target, const std::string& filename, cmQtAutoGeneratorCommon::GeneratorType genType) { - cmSourceFile* gFile = makefile->GetOrCreateSource(filename, true); - gFile->SetProperty("GENERATED", "1"); - gFile->SetProperty("SKIP_AUTOGEN", "On"); + cmMakefile* makefile = target->Target->GetMakefile(); + { + cmSourceFile* gFile = makefile->GetOrCreateSource(filename, true); + gFile->SetProperty("GENERATED", "1"); + gFile->SetProperty("SKIP_AUTOGEN", "On"); + } + target->AddSource(filename); AddToSourceGroup(makefile, filename, genType); } @@ -692,19 +696,6 @@ static void RccSetupAutoTarget(cmGeneratorTarget const* target, AddDefinitionEscaped(makefile, "_rcc_options_options", rccFileOptions); } -void cmQtAutoGeneratorInitializer::InitializeAutogenSources( - cmGeneratorTarget* target) -{ - if (target->GetPropertyAsBool("AUTOMOC")) { - cmMakefile* makefile = target->Target->GetMakefile(); - // Mocs compilation file - const std::string mocsComp = - GetAutogenTargetBuildDir(target) + "/mocs_compilation.cpp"; - AddGeneratedSource(makefile, mocsComp, cmQtAutoGeneratorCommon::MOC); - target->AddSource(mocsComp); - } -} - void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( cmLocalGenerator* lg, cmGeneratorTarget* target) { @@ -781,6 +772,7 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( // Add moc compilation to generated files list if (mocEnabled) { const std::string mocsComp = autogenBuildDir + "/mocs_compilation.cpp"; + AddGeneratedSource(target, mocsComp, cmQtAutoGeneratorCommon::MOC); autogenProvides.push_back(mocsComp); } @@ -880,10 +872,8 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( rccBuildFile += ".cpp"; // Register rcc ouput file as generated - AddGeneratedSource(makefile, rccBuildFile, + AddGeneratedSource(target, rccBuildFile, cmQtAutoGeneratorCommon::RCC); - // Add rcc output file to origin target sources - target->AddSource(rccBuildFile); // Register rcc ouput file as generated by the _autogen target autogenProvides.push_back(rccBuildFile); } diff --git a/Source/cmQtAutoGeneratorInitializer.h b/Source/cmQtAutoGeneratorInitializer.h index ca806f5..11f6e1e 100644 --- a/Source/cmQtAutoGeneratorInitializer.h +++ b/Source/cmQtAutoGeneratorInitializer.h @@ -11,7 +11,6 @@ class cmLocalGenerator; class cmQtAutoGeneratorInitializer { public: - static void InitializeAutogenSources(cmGeneratorTarget* target); static void InitializeAutogenTarget(cmLocalGenerator* lg, cmGeneratorTarget* target); static void SetupAutoGenerateTarget(cmGeneratorTarget const* target); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=952fc65d140a1b36fc2e580d7ca89de231a04412 commit 952fc65d140a1b36fc2e580d7ca89de231a04412 Author: Sebastian Holtermann <sebh...@xwmw.org> AuthorDate: Thu Aug 10 18:27:52 2017 +0200 Commit: Sebastian Holtermann <sebh...@xwmw.org> CommitDate: Thu Aug 10 18:33:02 2017 +0200 Autogen: Clear sources meta data cache Adds cmGeneratorTarget::clearSourcesCache() which clears the cache of precomputed sources lists and object names. The cache gets recomputed on demand. Clearing the cache is necessary in case an OBJECT library gets a source added after a target (ORIGIN) that includes it computed it's external sources cache. This may happen in AUTOMOC when ORIGIN is processed before the OBJECT library which gets a mocs_compilation.cpp file added. Closes #17152 Closes #17139 Closes #17085 Closes #15967 diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 329c7a9..95f4543 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -326,6 +326,13 @@ std::string cmGeneratorTarget::GetOutputName( return i->second; } +void cmGeneratorTarget::ClearSourcesCache() +{ + this->KindedSourcesMap.clear(); + this->LinkImplementationLanguageIsContextDependent = true; + this->Objects.clear(); +} + void cmGeneratorTarget::AddSourceCommon(const std::string& src) { cmListFileBacktrace lfbt = this->Makefile->GetBacktrace(); @@ -333,8 +340,7 @@ void cmGeneratorTarget::AddSourceCommon(const std::string& src) CM_AUTO_PTR<cmCompiledGeneratorExpression> cge = ge.Parse(src); cge->SetEvaluateForBuildsystem(true); this->SourceEntries.push_back(new TargetPropertyEntry(cge)); - this->KindedSourcesMap.clear(); - this->LinkImplementationLanguageIsContextDependent = true; + this->ClearSourcesCache(); } void cmGeneratorTarget::AddSource(const std::string& src) diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 52147e3..b5f7f6e 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -491,6 +491,11 @@ public: std::string GetOutputName(const std::string& config, cmStateEnums::ArtifactType artifact) const; + /** Clears cached meta data for local and external source files. + * The meta data will be recomputed on demand. + */ + void ClearSourcesCache(); + void AddSource(const std::string& src); void AddTracedSources(std::vector<std::string> const& srcs); diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx index 5a06730..2cf2ee9 100644 --- a/Source/cmQtAutoGeneratorInitializer.cxx +++ b/Source/cmQtAutoGeneratorInitializer.cxx @@ -919,6 +919,12 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( } } + // cmGeneratorTarget::GetConfigCommonSourceFiles computes the target's + // sources meta data cache. Clear it so that OBJECT library targets that + // are AUTOGEN initialized after this target get their added + // mocs_compilation.cpp source acknowledged by this target. + target->ClearSourcesCache(); + // Convert std::set to std::vector const std::vector<std::string> autogenDepends(autogenDependsSet.begin(), autogenDependsSet.end()); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cbf1393aa4b957ec3c2c5cc4852dcebab825c5b6 commit cbf1393aa4b957ec3c2c5cc4852dcebab825c5b6 Author: Boris Fomitchev <bfomitc...@nvidia.com> AuthorDate: Tue Aug 8 14:04:32 2017 -0700 Commit: Brad King <brad.k...@kitware.com> CommitDate: Thu Aug 10 11:10:07 2017 -0400 FindCUDA: Add CUDA9/Volta recognition diff --git a/Modules/FindCUDA/select_compute_arch.cmake b/Modules/FindCUDA/select_compute_arch.cmake index 8fb44d8..b604a17 100644 --- a/Modules/FindCUDA/select_compute_arch.cmake +++ b/Modules/FindCUDA/select_compute_arch.cmake @@ -30,12 +30,17 @@ endif () if (CUDA_VERSION VERSION_GREATER "7.5") list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Pascal") - list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1" "6.1+PTX") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1") else() list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "5.2+PTX") endif () - +if (CUDA_VERSION VERSION_GREATER "8.5") + list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Volta") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.0" "7.0+PTX") +else() + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.1+PTX") +endif() ################################################################################################ # A function for automatic detection of GPUs installed (if autodetection is enabled) @@ -141,6 +146,9 @@ function(CUDA_SELECT_NVCC_ARCH_FLAGS out_variable) elseif(${arch_name} STREQUAL "Pascal") set(arch_bin 6.0 6.1) set(arch_ptx 6.1) + elseif(${arch_name} STREQUAL "Volta") + set(arch_bin 7.0 7.0) + set(arch_ptx 7.0) else() message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS") endif() https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ae813b6bcc64fc5096fb4a7d87920b47cfbe488f commit ae813b6bcc64fc5096fb4a7d87920b47cfbe488f Author: Brad King <brad.k...@kitware.com> AuthorDate: Thu Aug 10 10:19:26 2017 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Thu Aug 10 10:22:53 2017 -0400 FindCUDA: Document that module has been superseded Add a note at the top of the module documentation to point readers at the first-class support for the CUDA language. diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 5dc55d4..98fb58b 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -2,6 +2,20 @@ # FindCUDA # -------- # +# .. note:: +# +# The FindCUDA module has been superseded by first-class support +# for the CUDA language in CMake. It is no longer necessary to +# use this module or call ``find_package(CUDA)``. This module +# now exists only for compatibility with projects that have not +# been ported. +# +# Instead, list ``CUDA`` among the languages named in the top-level +# call to the :command:`project` command, or call the +# :command:`enable_language` command with ``CUDA``. +# Then one can add CUDA (``.cu``) sources to programs directly +# in calls to :command:`add_library` and :command:`add_executable`. +# # Tools for building CUDA C files: libraries and build dependencies. # # This script locates the NVIDIA CUDA C tools. It should work on linux, https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9c8aa47c2e7a2f97def22847a76c3cfcba74f01 commit d9c8aa47c2e7a2f97def22847a76c3cfcba74f01 Author: Robert Maynard <robert.mayn...@kitware.com> AuthorDate: Thu Aug 10 09:33:06 2017 -0400 Commit: Robert Maynard <robert.mayn...@kitware.com> CommitDate: Thu Aug 10 09:33:06 2017 -0400 FindCUDA: Always obey the CUDA_USE_STATIC_CUDA_RUNTIME option. Fixes #17150, where the FindCUDA would incorrectly handle CUDA_USE_STATIC_CUDA_RUNTIME being set to false. diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake index 5dc55d4..b79f787 100644 --- a/Modules/FindCUDA.cmake +++ b/Modules/FindCUDA.cmake @@ -589,7 +589,6 @@ macro(cuda_unset_include_and_libraries) unset(CUDA_npps_LIBRARY CACHE) unset(CUDA_nvcuvenc_LIBRARY CACHE) unset(CUDA_nvcuvid_LIBRARY CACHE) - unset(CUDA_USE_STATIC_CUDA_RUNTIME CACHE) unset(CUDA_GPU_DETECT_OUTPUT CACHE) endmacro() @@ -802,12 +801,17 @@ endif() if(CUDA_cudart_static_LIBRARY) # If static cudart available, use it by default, but provide a user-visible option to disable it. option(CUDA_USE_STATIC_CUDA_RUNTIME "Use the static version of the CUDA runtime library if available" ON) - set(CUDA_CUDART_LIBRARY_VAR CUDA_cudart_static_LIBRARY) else() # If not available, silently disable the option. set(CUDA_USE_STATIC_CUDA_RUNTIME OFF CACHE INTERNAL "") +endif() + +if(CUDA_USE_STATIC_CUDA_RUNTIME) + set(CUDA_CUDART_LIBRARY_VAR CUDA_cudart_static_LIBRARY) +else() set(CUDA_CUDART_LIBRARY_VAR CUDA_CUDART_LIBRARY) endif() + if(NOT CUDA_VERSION VERSION_LESS "5.0") cuda_find_library_local_first(CUDA_cudadevrt_LIBRARY cudadevrt "\"cudadevrt\" library") mark_as_advanced(CUDA_cudadevrt_LIBRARY) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4f7d9eef51da4a72fd7c7a17bcbbcf83ffad3216 commit 4f7d9eef51da4a72fd7c7a17bcbbcf83ffad3216 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Aug 8 10:46:00 2017 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Tue Aug 8 13:28:38 2017 -0400 Features: Fix COMPILE_FEATURES genex for C++ 14 and 17 features When `CXX_STANDARD` is not at least 14 or 17, features enabled by the compiler for those standards should not be reported as existing by the `COMPILE_FEATURES` genex. Fix the implementation and add a test. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index f077459..cb6cf2d 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4381,6 +4381,18 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target, cmStrCmp(existingCxxStandard)) : cmArrayEnd(CXX_STANDARDS); + if (needCxx17 && + existingCxxIt < std::find_if(cmArrayBegin(CXX_STANDARDS), + cmArrayEnd(CXX_STANDARDS), + cmStrCmp("17"))) { + return false; + } + if (needCxx14 && + existingCxxIt < std::find_if(cmArrayBegin(CXX_STANDARDS), + cmArrayEnd(CXX_STANDARDS), + cmStrCmp("14"))) { + return false; + } if (needCxx11 && existingCxxIt < std::find_if(cmArrayBegin(CXX_STANDARDS), cmArrayEnd(CXX_STANDARDS), diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index 4a5558d..b560acd 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -428,6 +428,14 @@ else() HAVE_FINAL=$<COMPILE_FEATURES:cxx_final> HAVE_INHERITING_CONSTRUCTORS_AND_FINAL=$<COMPILE_FEATURES:cxx_inheriting_constructors,cxx_final> ) + if (CMAKE_CXX_STANDARD_DEFAULT) + target_compile_definitions(CompileFeaturesGenex PRIVATE + TEST_CXX_STD + HAVE_CXX_STD_11=$<COMPILE_FEATURES:cxx_std_11> + HAVE_CXX_STD_14=$<COMPILE_FEATURES:cxx_std_14> + HAVE_CXX_STD_17=$<COMPILE_FEATURES:cxx_std_17> + ) + endif() add_executable(CompileFeaturesGenex2 genex_test.cpp) target_compile_features(CompileFeaturesGenex2 PRIVATE cxx_std_11) diff --git a/Tests/CompileFeatures/genex_test.cpp b/Tests/CompileFeatures/genex_test.cpp index 5ae8a78..5303e73 100644 --- a/Tests/CompileFeatures/genex_test.cpp +++ b/Tests/CompileFeatures/genex_test.cpp @@ -11,6 +11,18 @@ #error EXPECT_OVERRIDE_CONTROL not defined #endif +#ifdef TEST_CXX_STD +#if !HAVE_CXX_STD_11 +#error HAVE_CXX_STD_11 is false with CXX_STANDARD == 11 +#endif +#if HAVE_CXX_STD_14 +#error HAVE_CXX_STD_14 is true with CXX_STANDARD == 11 +#endif +#if HAVE_CXX_STD_17 +#error HAVE_CXX_STD_17 is true with CXX_STANDARD == 11 +#endif +#endif + #if !HAVE_OVERRIDE_CONTROL #if EXPECT_OVERRIDE_CONTROL #error "Expect override control feature" ----------------------------------------------------------------------- Summary of changes: Modules/FindCUDA.cmake | 22 ++++++++++- Modules/FindCUDA/select_compute_arch.cmake | 12 +++++- Source/cmGeneratorTarget.cxx | 10 ++++- Source/cmGeneratorTarget.h | 5 +++ Source/cmGlobalGenerator.cxx | 47 ++++++++++++------------ Source/cmMakefile.cxx | 12 ++++++ Source/cmQtAutoGeneratorInitializer.cxx | 36 ++++++++---------- Source/cmQtAutoGeneratorInitializer.h | 1 - Tests/CompileFeatures/CMakeLists.txt | 8 ++++ Tests/CompileFeatures/genex_test.cpp | 12 ++++++ Tests/QtAutogen/CMakeLists.txt | 4 ++ Tests/QtAutogen/objectLibrary/CMakeLists.txt | 14 +++++++ Tests/QtAutogen/objectLibrary/a/CMakeLists.txt | 2 + Tests/QtAutogen/objectLibrary/a/classa.cpp | 7 ++++ Tests/QtAutogen/objectLibrary/a/classa.h | 23 ++++++++++++ Tests/QtAutogen/objectLibrary/b/classb.cpp | 7 ++++ Tests/QtAutogen/objectLibrary/b/classb.h | 23 ++++++++++++ Tests/QtAutogen/objectLibrary/main.cpp | 13 +++++++ 18 files changed, 208 insertions(+), 50 deletions(-) create mode 100644 Tests/QtAutogen/objectLibrary/CMakeLists.txt create mode 100644 Tests/QtAutogen/objectLibrary/a/CMakeLists.txt create mode 100644 Tests/QtAutogen/objectLibrary/a/classa.cpp create mode 100644 Tests/QtAutogen/objectLibrary/a/classa.h create mode 100644 Tests/QtAutogen/objectLibrary/b/classb.cpp create mode 100644 Tests/QtAutogen/objectLibrary/b/classb.h create mode 100644 Tests/QtAutogen/objectLibrary/main.cpp hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits