summaryrefslogtreecommitdiffstats
path: root/Tests/CMakeTests/ELFTest.cmake.in
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-10-27 18:01:31 (GMT)
committerBrad King <brad.king@kitware.com>2009-10-27 18:01:31 (GMT)
commit23bdb28cadcf3b9cfe474bec06e761fbe9f2d5a5 (patch)
treeb9d02a5bb7e3bda9a2e0b06842269ac45cc03d40 /Tests/CMakeTests/ELFTest.cmake.in
parent39e88bbe99ed608e8bfc73f8f7314640dd41e874 (diff)
downloadCMake-23bdb28cadcf3b9cfe474bec06e761fbe9f2d5a5.zip
CMake-23bdb28cadcf3b9cfe474bec06e761fbe9f2d5a5.tar.gz
CMake-23bdb28cadcf3b9cfe474bec06e761fbe9f2d5a5.tar.bz2
Create CMake.ELF test to cover cmELF further
This commit adds a CMake.ELF test to exercise cmELF and file(RPATH_*). We test all combinations of 32/64-bit and LSB/MSB binaries.
Diffstat (limited to 'Tests/CMakeTests/ELFTest.cmake.in')
-rw-r--r--Tests/CMakeTests/ELFTest.cmake.in48
1 files changed, 48 insertions, 0 deletions
diff --git a/Tests/CMakeTests/ELFTest.cmake.in b/Tests/CMakeTests/ELFTest.cmake.in
new file mode 100644
index 0000000..0271abb
--- /dev/null
+++ b/Tests/CMakeTests/ELFTest.cmake.in
@@ -0,0 +1,48 @@
+set(names
+ elf32lsb.bin
+ elf32msb.bin
+ elf64lsb.bin
+ elf64msb.bin
+ )
+
+# Prepare binaries on which to operate.
+set(in "@CMAKE_CURRENT_SOURCE_DIR@/ELF")
+set(out "@CMAKE_CURRENT_BINARY_DIR@/ELF-Out")
+file(REMOVE_RECURSE "${out}")
+file(MAKE_DIRECTORY "${out}")
+foreach(f ${names})
+ file(COPY ${in}/${f} DESTINATION ${out})
+ list(APPEND files "${out}/${f}")
+endforeach()
+
+foreach(f ${files})
+ # Check for the initial RPATH.
+ file(RPATH_CHECK FILE "${f}" RPATH "/sample/rpath")
+ if(NOT EXISTS "${f}")
+ message(FATAL_ERROR "RPATH_CHECK removed ${f}")
+ endif()
+
+ # Change the RPATH.
+ file(RPATH_CHANGE FILE "${f}"
+ OLD_RPATH "/sample/rpath"
+ NEW_RPATH "/rpath/sample")
+ set(rpath)
+ file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1)
+ if(NOT rpath)
+ message(FATAL_ERROR "RPATH not changed in ${f}")
+ endif()
+
+ # Remove the RPATH.
+ file(RPATH_REMOVE FILE "${f}")
+ set(rpath)
+ file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1)
+ if(rpath)
+ message(FATAL_ERROR "RPATH not removed from ${f}")
+ endif()
+
+ # Check again...this should remove the file.
+ file(RPATH_CHECK FILE "${f}" RPATH "/sample/rpath")
+ if(EXISTS "${f}")
+ message(FATAL_ERROR "RPATH_CHECK did not remove ${f}")
+ endif()
+endforeach()