From 5a2fc3d69659717e530becddb3cbebb04583f4e9 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Fri, 1 Nov 2013 13:39:50 -0400
Subject: Check for OBJECT_LIBRARY source files at start of generation

Teach cmGlobalGenerator::CheckTargets to include OBJECT_LIBRARY targets
in the check for source file existence.

Extend the RunCMake.ObjectLibrary test to cover this case.
---
 Source/cmGlobalGenerator.cxx                          | 1 +
 Tests/RunCMake/ObjectLibrary/MissingSource-result.txt | 1 +
 Tests/RunCMake/ObjectLibrary/MissingSource-stderr.txt | 9 +++++++++
 Tests/RunCMake/ObjectLibrary/MissingSource.cmake      | 1 +
 Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake       | 1 +
 5 files changed, 13 insertions(+)
 create mode 100644 Tests/RunCMake/ObjectLibrary/MissingSource-result.txt
 create mode 100644 Tests/RunCMake/ObjectLibrary/MissingSource-stderr.txt
 create mode 100644 Tests/RunCMake/ObjectLibrary/MissingSource.cmake

diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 7f2b592..b12c691 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1088,6 +1088,7 @@ bool cmGlobalGenerator::CheckTargets()
          target.GetType() == cmTarget::STATIC_LIBRARY ||
          target.GetType() == cmTarget::SHARED_LIBRARY ||
          target.GetType() == cmTarget::MODULE_LIBRARY ||
+         target.GetType() == cmTarget::OBJECT_LIBRARY ||
          target.GetType() == cmTarget::UTILITY)
         {
         if(!target.FindSourceFiles())
diff --git a/Tests/RunCMake/ObjectLibrary/MissingSource-result.txt b/Tests/RunCMake/ObjectLibrary/MissingSource-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/ObjectLibrary/MissingSource-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/ObjectLibrary/MissingSource-stderr.txt b/Tests/RunCMake/ObjectLibrary/MissingSource-stderr.txt
new file mode 100644
index 0000000..411cd7c
--- /dev/null
+++ b/Tests/RunCMake/ObjectLibrary/MissingSource-stderr.txt
@@ -0,0 +1,9 @@
+CMake Error at MissingSource.cmake:1 \(add_library\):
+  Cannot find source file:
+
+    missing.c
+
+  Tried extensions( \.[A-Za-z+]+|
+ )*
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/ObjectLibrary/MissingSource.cmake b/Tests/RunCMake/ObjectLibrary/MissingSource.cmake
new file mode 100644
index 0000000..258eaed
--- /dev/null
+++ b/Tests/RunCMake/ObjectLibrary/MissingSource.cmake
@@ -0,0 +1 @@
+add_library(A OBJECT missing.c)
diff --git a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake
index 55db14d..2dd8d38 100644
--- a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake
@@ -12,6 +12,7 @@ run_cmake(Install)
 run_cmake(LinkObjLHS)
 run_cmake(LinkObjRHS1)
 run_cmake(LinkObjRHS2)
+run_cmake(MissingSource)
 run_cmake(ObjWithObj)
 run_cmake(PostBuild)
 run_cmake(PreBuild)
-- 
cgit v0.12