summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-10-14 13:02:43 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2016-10-14 13:02:43 (GMT)
commitdabd17792215535bdbc0fc5ad032e2a59e7505d2 (patch)
tree60eac1565e0914792d73a5c01522de55647feac2
parent03622ee2d0947b01a56527ea34cbe43fb9c8eba6 (diff)
parent20278872e3d8145f4aa81ea6cde01144daa3ca8f (diff)
downloadCMake-dabd17792215535bdbc0fc5ad032e2a59e7505d2.zip
CMake-dabd17792215535bdbc0fc5ad032e2a59e7505d2.tar.gz
CMake-dabd17792215535bdbc0fc5ad032e2a59e7505d2.tar.bz2
Merge topic 'ninja-framework-POST_BUILD'
20278872 Ninja: Fix POST_BUILD commands on macOS Frameworks
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx6
-rw-r--r--Tests/Framework/CMakeLists.txt5
2 files changed, 9 insertions, 2 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 34fad9d..d729114 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -652,7 +652,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
std::string postBuildCmdLine = localGen.BuildCommandLine(postBuildCmdLines);
cmNinjaVars symlinkVars;
- if (targetOutput == targetOutputReal) {
+ bool const symlinkNeeded =
+ (targetOutput != targetOutputReal && !gt.IsFrameworkOnApple());
+ if (!symlinkNeeded) {
vars["POST_BUILD"] = postBuildCmdLine;
} else {
vars["POST_BUILD"] = ":";
@@ -694,7 +696,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
commandLineLengthLimit, &usedResponseFile);
this->WriteLinkRule(usedResponseFile);
- if (targetOutput != targetOutputReal && !gt.IsFrameworkOnApple()) {
+ if (symlinkNeeded) {
if (targetType == cmState::EXECUTABLE) {
globalGen.WriteBuild(
this->GetBuildFileStream(),
diff --git a/Tests/Framework/CMakeLists.txt b/Tests/Framework/CMakeLists.txt
index 29f9838..271aaf1 100644
--- a/Tests/Framework/CMakeLists.txt
+++ b/Tests/Framework/CMakeLists.txt
@@ -51,6 +51,11 @@ install(TARGETS foo bar
# duplicate install rules for the pieces of the framework.
)
+# test that framework post-build commands run
+add_custom_command(TARGET foo POST_BUILD COMMAND ${CMAKE_COMMAND} -E touch foo-post-build)
+add_custom_target(fooCustom ALL COMMAND ${CMAKE_COMMAND} -E copy foo-post-build foo-custom)
+add_dependencies(fooCustom foo)
+
# Make a static library and apply the framework properties to it to verify
# that everything still builds correctly, but it will not actually produce
# a framework... The framework properties only apply when the library type