[Cmake-commits] CMake branch, master, updated. v3.9.1-451-g1d51fca
Kitware Robot
kwrobot at kitware.com
Fri Aug 11 09:15:08 EDT 2017
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.king at kitware.com>
AuthorDate: Fri Aug 11 13:14:36 2017 +0000
Commit: Kitware Robot <kwrobot at 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 <kwrobot at 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.king at kitware.com>
AuthorDate: Fri Aug 11 13:13:36 2017 +0000
Commit: Kitware Robot <kwrobot at 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 <kwrobot at 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.king at kitware.com>
AuthorDate: Fri Aug 11 13:12:23 2017 +0000
Commit: Kitware Robot <kwrobot at 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 <kwrobot at 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.king at kitware.com>
AuthorDate: Fri Aug 11 13:12:15 2017 +0000
Commit: Kitware Robot <kwrobot at 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 <kwrobot at 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.king at kitware.com>
AuthorDate: Fri Aug 11 13:11:37 2017 +0000
Commit: Kitware Robot <kwrobot at 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 <kwrobot at kitware.com>
Reviewed-by: Robert Maynard <robert.maynard at kitware.com>
Merge-request: !1119
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15ef27286ade97a49f6832254d3451755a824fb8
commit 15ef27286ade97a49f6832254d3451755a824fb8
Author: Sebastian Holtermann <sebholt at xwmw.org>
AuthorDate: Thu Aug 10 19:16:16 2017 +0200
Commit: Sebastian Holtermann <sebholt at 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 <sebholt at xwmw.org>
AuthorDate: Wed Aug 9 11:22:56 2017 +0200
Commit: Sebastian Holtermann <sebholt at 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 <sebholt at xwmw.org>
AuthorDate: Thu Aug 10 18:27:52 2017 +0200
Commit: Sebastian Holtermann <sebholt at 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 <bfomitchev at nvidia.com>
AuthorDate: Tue Aug 8 14:04:32 2017 -0700
Commit: Brad King <brad.king at 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.king at kitware.com>
AuthorDate: Thu Aug 10 10:19:26 2017 -0400
Commit: Brad King <brad.king at 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.maynard at kitware.com>
AuthorDate: Thu Aug 10 09:33:06 2017 -0400
Commit: Robert Maynard <robert.maynard at 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.king at kitware.com>
AuthorDate: Tue Aug 8 10:46:00 2017 -0400
Commit: Brad King <brad.king at 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
More information about the Cmake-commits
mailing list