diff options
Diffstat (limited to 'Tests/ExternalOBJ')
-rw-r--r-- | Tests/ExternalOBJ/CMakeLists.txt | 41 | ||||
-rw-r--r-- | Tests/ExternalOBJ/Object/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/ExternalOBJ/Object/external_main.cxx | 4 | ||||
-rw-r--r-- | Tests/ExternalOBJ/Object/external_object.cxx | 4 | ||||
-rw-r--r-- | Tests/ExternalOBJ/executable.cxx | 5 |
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(); +} |