summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2005-02-04 18:58:11 (GMT)
committerBrad King <brad.king@kitware.com>2005-02-04 18:58:11 (GMT)
commit81b8aafb7a190d01f7d985f7ec6c8c71f6add0c0 (patch)
treea41fe59a6d5064877a0d6edd5b25683cc48aeb6a
parent92458a17ad4f1b3a0edda8f4a4b2e057284a9549 (diff)
downloadCMake-81b8aafb7a190d01f7d985f7ec6c8c71f6add0c0.zip
CMake-81b8aafb7a190d01f7d985f7ec6c8c71f6add0c0.tar.gz
CMake-81b8aafb7a190d01f7d985f7ec6c8c71f6add0c0.tar.bz2
ENH: Adding test for external object file feature.
-rw-r--r--Tests/ExternalOBJ/CMakeLists.txt41
-rw-r--r--Tests/ExternalOBJ/Object/CMakeLists.txt3
-rw-r--r--Tests/ExternalOBJ/Object/external_main.cxx4
-rw-r--r--Tests/ExternalOBJ/Object/external_object.cxx4
-rw-r--r--Tests/ExternalOBJ/executable.cxx5
5 files changed, 57 insertions, 0 deletions
diff --git a/Tests/ExternalOBJ/CMakeLists.txt b/Tests/ExternalOBJ/CMakeLists.txt
new file mode 100644
index 0000000..eef5841
--- /dev/null
+++ b/Tests/ExternalOBJ/CMakeLists.txt
@@ -0,0 +1,41 @@
+PROJECT (ExternalOBJ)
+
+# Build the external object file.
+TRY_COMPILE(EXTERNAL_OBJECT_BUILT
+ ${ExternalOBJ_BINARY_DIR}/Object
+ ${ExternalOBJ_SOURCE_DIR}/Object
+ Object
+ external
+ OUTPUT_VARIABLE OUTPUT
+ )
+SET(EXTERNAL_OBJECT_NAME "external_object${CMAKE_CXX_OUTPUT_EXTENSION}")
+IF(EXTERNAL_OBJECT_BUILT)
+ MESSAGE(
+ "Building ${EXTERNAL_OBJECT_NAME} succeeded with the following output:\n"
+ "[${OUTPUT}]"
+ )
+ELSE(EXTERNAL_OBJECT_BUILT)
+ MESSAGE(FATAL_ERROR
+ "Building ${EXTERNAL_OBJECT_NAME} failed with the following output:\n"
+ "[${OUTPUT}]"
+ )
+ENDIF(EXTERNAL_OBJECT_BUILT)
+
+# Find the external object file.
+SET(BASE ${ExternalOBJ_BINARY_DIR}/Object)
+SET(EXTERNAL_OBJECT)
+FOREACH(dir external.dir . ${CMAKE_CONFIGURATION_TYPES})
+ IF(NOT EXTERNAL_OBJECT)
+ IF(EXISTS ${BASE}/${dir}/${EXTERNAL_OBJECT_NAME})
+ SET(EXTERNAL_OBJECT ${BASE}/${dir}/${EXTERNAL_OBJECT_NAME})
+ ENDIF(EXISTS ${BASE}/${dir}/${EXTERNAL_OBJECT_NAME})
+ ENDIF(NOT EXTERNAL_OBJECT)
+ENDFOREACH(dir)
+IF(EXTERNAL_OBJECT)
+ MESSAGE("Found \"${EXTERNAL_OBJECT}\".")
+ELSE(EXTERNAL_OBJECT)
+ MESSAGE(FATAL_ERROR "Could not find ${EXTERNAL_OBJECT_NAME}.")
+ENDIF(EXTERNAL_OBJECT)
+
+# Build an executable using the external object file.
+ADD_EXECUTABLE(executable executable.cxx ${EXTERNAL_OBJECT})
diff --git a/Tests/ExternalOBJ/Object/CMakeLists.txt b/Tests/ExternalOBJ/Object/CMakeLists.txt
new file mode 100644
index 0000000..141af79
--- /dev/null
+++ b/Tests/ExternalOBJ/Object/CMakeLists.txt
@@ -0,0 +1,3 @@
+PROJECT(Object)
+
+ADD_EXECUTABLE(external external_object.cxx external_main.cxx)
diff --git a/Tests/ExternalOBJ/Object/external_main.cxx b/Tests/ExternalOBJ/Object/external_main.cxx
new file mode 100644
index 0000000..f8b643a
--- /dev/null
+++ b/Tests/ExternalOBJ/Object/external_main.cxx
@@ -0,0 +1,4 @@
+int main()
+{
+ return 0;
+}
diff --git a/Tests/ExternalOBJ/Object/external_object.cxx b/Tests/ExternalOBJ/Object/external_object.cxx
new file mode 100644
index 0000000..5b4adaf
--- /dev/null
+++ b/Tests/ExternalOBJ/Object/external_object.cxx
@@ -0,0 +1,4 @@
+int external_object_function()
+{
+ return 0;
+}
diff --git a/Tests/ExternalOBJ/executable.cxx b/Tests/ExternalOBJ/executable.cxx
new file mode 100644
index 0000000..f9ec61d
--- /dev/null
+++ b/Tests/ExternalOBJ/executable.cxx
@@ -0,0 +1,5 @@
+extern int external_object_function();
+int main()
+{
+ return external_object_function();
+}