[Cmake-commits] CMake branch, next, updated. v3.0.0-4153-gd6304b7
Brad King
brad.king at kitware.com
Wed Jul 9 09:45:28 EDT 2014
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, next has been updated
via d6304b7d78d3310ee3b1b9a30bb3ab712c12af53 (commit)
via 2c470b775ab54f565383c95200d16dc42d94fe17 (commit)
from 3c6c1970758fbee09b4c72d85cb27097717a0c9c (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 -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d6304b7d78d3310ee3b1b9a30bb3ab712c12af53
commit d6304b7d78d3310ee3b1b9a30bb3ab712c12af53
Merge: 3c6c197 2c470b7
Author: Brad King <brad.king at kitware.com>
AuthorDate: Wed Jul 9 09:45:27 2014 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Jul 9 09:45:27 2014 -0400
Merge topic 'allow-OBJECT-library-extra-sources' into next
2c470b77 add_library: Allow arbitrary non-linked sources in OBJECT libraries
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2c470b775ab54f565383c95200d16dc42d94fe17
commit 2c470b775ab54f565383c95200d16dc42d94fe17
Author: Brad King <brad.king at kitware.com>
AuthorDate: Wed Jul 2 15:38:10 2014 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Wed Jul 9 09:43:42 2014 -0400
add_library: Allow arbitrary non-linked sources in OBJECT libraries
Loosen this restriction on OBJECT libraries to allow source files of any
name to be generated by custom commands or listed for reference in IDE
projects so long as they would not affect linking of a normal library.
Update the rejection message to be more specific about the looser
restriction.
Extend the ObjectLibrary test to cover a ".cmake" file generated by a
custom command in an OBJECT library.
diff --git a/Help/command/add_library.rst b/Help/command/add_library.rst
index f19b5c0..f86f3c5 100644
--- a/Help/command/add_library.rst
+++ b/Help/command/add_library.rst
@@ -94,7 +94,8 @@ object library name. For example:
will include objlib's object files in a library and an executable
along with those compiled from their own sources. Object libraries
-may contain only sources (and headers) that compile to object files.
+may contain only sources that compile, header files, and other files
+that would not affect linking of a normal library (e.g. ``.txt``).
They may contain custom commands generating such sources, but not
``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` commands. Object libraries
cannot be imported, exported, installed, or linked. Some native build
diff --git a/Help/release/dev/allow-OBJECT-library-extra-sources.rst b/Help/release/dev/allow-OBJECT-library-extra-sources.rst
new file mode 100644
index 0000000..472fcdc
--- /dev/null
+++ b/Help/release/dev/allow-OBJECT-library-extra-sources.rst
@@ -0,0 +1,6 @@
+allow-OBJECT-library-extra-sources
+----------------------------------
+
+* :ref:`Object Libraries` may now have extra sources that do not
+ compile to object files so long as they would not affect linking
+ of a normal library (e.g. ``.dat`` is okay but not ``.def``).
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index eccb06a..64c5822 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -38,7 +38,8 @@ void reportBadObjLib(std::vector<cmSourceFile*> const& badObjLib,
{
e << " " << (*i)->GetLocation().GetName() << "\n";
}
- e << "but may contain only headers and sources that compile.";
+ e << "but may contain only sources that compile, header files, and "
+ "other files that would not affect linking of a normal library.";
cm->IssueMessage(cmake::FATAL_ERROR, e.str(),
target->GetBacktrace());
}
@@ -205,10 +206,6 @@ struct TagVisitor
else
{
DoAccept<IsSameTag<Tag, ExtraSourcesTag>::Result>::Do(this->Data, sf);
- if(this->IsObjLib && ext != "txt")
- {
- this->BadObjLibFiles.push_back(sf);
- }
}
}
};
diff --git a/Tests/ObjectLibrary/A/CMakeLists.txt b/Tests/ObjectLibrary/A/CMakeLists.txt
index 3fba9f8..c24c5ed 100644
--- a/Tests/ObjectLibrary/A/CMakeLists.txt
+++ b/Tests/ObjectLibrary/A/CMakeLists.txt
@@ -11,5 +11,16 @@ add_custom_command(
${CMAKE_CURRENT_BINARY_DIR}/a1.c
)
-add_library(A OBJECT a1.c a2.c)
+# Remove the custom command output to be sure it runs in an
+# incremental test. Skip this on VS 6 because it sometimes
+# re-runs CMake after the custom command runs.
+if(NOT CMAKE_GENERATOR STREQUAL "Visual Studio 6")
+ file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/a.cmake)
+endif()
+add_custom_command(
+ OUTPUT a.cmake
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/a.cmake
+ )
+
+add_library(A OBJECT a1.c a2.c a.cmake)
target_include_directories(A PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/Tests/ObjectLibrary/CMakeLists.txt b/Tests/ObjectLibrary/CMakeLists.txt
index 75c34d8..e9f553e 100644
--- a/Tests/ObjectLibrary/CMakeLists.txt
+++ b/Tests/ObjectLibrary/CMakeLists.txt
@@ -12,6 +12,7 @@ add_library(Cshared SHARED c.c $<TARGET_OBJECTS:A> $<TARGET_OBJECTS:Bexport>)
add_executable(UseCshared main.c)
set_property(TARGET UseCshared PROPERTY COMPILE_DEFINITIONS SHARED_C)
target_link_libraries(UseCshared Cshared)
+add_custom_command(TARGET UseCshared POST_BUILD COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/A/a.cmake)
add_executable(UseCinternal main.c c.c $<TARGET_OBJECTS:A> $<TARGET_OBJECTS:B>)
diff --git a/Tests/RunCMake/ObjectLibrary/BadObjSource1-stderr.txt b/Tests/RunCMake/ObjectLibrary/BadObjSource1-stderr.txt
index b31225b..a09552b 100644
--- a/Tests/RunCMake/ObjectLibrary/BadObjSource1-stderr.txt
+++ b/Tests/RunCMake/ObjectLibrary/BadObjSource1-stderr.txt
@@ -3,6 +3,7 @@ CMake Error at BadObjSource1.cmake:1 \(add_library\):
bad.def
- but may contain only headers and sources that compile.
+ but may contain only sources that compile, header files, and other files
+ that would not affect linking of a normal library.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/ObjectLibrary/BadObjSource2-stderr.txt b/Tests/RunCMake/ObjectLibrary/BadObjSource2-stderr.txt
index 906cf0b..b91ffd0 100644
--- a/Tests/RunCMake/ObjectLibrary/BadObjSource2-stderr.txt
+++ b/Tests/RunCMake/ObjectLibrary/BadObjSource2-stderr.txt
@@ -3,6 +3,7 @@ CMake Error at BadObjSource2.cmake:1 \(add_library\):
bad.obj
- but may contain only headers and sources that compile.
+ but may contain only sources that compile, header files, and other files
+ that would not affect linking of a normal library.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list