Browse Source

ENH: Adding test for external object file feature.

Brad King 21 years ago
parent
commit
81b8aafb7a

+ 41 - 0
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})

+ 3 - 0
Tests/ExternalOBJ/Object/CMakeLists.txt

@@ -0,0 +1,3 @@
+PROJECT(Object)
+
+ADD_EXECUTABLE(external external_object.cxx external_main.cxx)

+ 4 - 0
Tests/ExternalOBJ/Object/external_main.cxx

@@ -0,0 +1,4 @@
+int main()
+{
+  return 0;
+}

+ 4 - 0
Tests/ExternalOBJ/Object/external_object.cxx

@@ -0,0 +1,4 @@
+int external_object_function()
+{
+  return 0;
+}

+ 5 - 0
Tests/ExternalOBJ/executable.cxx

@@ -0,0 +1,5 @@
+extern int external_object_function();
+int main()
+{
+  return external_object_function();
+}