diff options
author | Brad King <brad.king@kitware.com> | 2009-10-27 18:01:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-10-27 18:01:31 (GMT) |
commit | 23bdb28cadcf3b9cfe474bec06e761fbe9f2d5a5 (patch) | |
tree | b9d02a5bb7e3bda9a2e0b06842269ac45cc03d40 /Tests/CMakeTests | |
parent | 39e88bbe99ed608e8bfc73f8f7314640dd41e874 (diff) | |
download | CMake-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')
-rw-r--r-- | Tests/CMakeTests/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/CMakeTests/ELF/elf32lsb.bin | bin | 0 -> 2824 bytes | |||
-rw-r--r-- | Tests/CMakeTests/ELF/elf32msb.bin | bin | 0 -> 17984 bytes | |||
-rw-r--r-- | Tests/CMakeTests/ELF/elf64lsb.bin | bin | 0 -> 4320 bytes | |||
-rw-r--r-- | Tests/CMakeTests/ELF/elf64msb.bin | bin | 0 -> 18704 bytes | |||
-rw-r--r-- | Tests/CMakeTests/ELFTest.cmake.in | 48 |
6 files changed, 52 insertions, 0 deletions
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt index 1b768cf..adaf247 100644 --- a/Tests/CMakeTests/CMakeLists.txt +++ b/Tests/CMakeTests/CMakeLists.txt @@ -27,6 +27,10 @@ AddCMakeTest(String "") AddCMakeTest(Math "") AddCMakeTest(CMakeMinimumRequired "") +if(HAVE_ELF_H) + AddCMakeTest(ELF "") +endif() + SET(EndStuff_PreArgs "-Ddir:STRING=${CMAKE_CURRENT_BINARY_DIR}/EndStuffTest" ) diff --git a/Tests/CMakeTests/ELF/elf32lsb.bin b/Tests/CMakeTests/ELF/elf32lsb.bin Binary files differnew file mode 100644 index 0000000..803ac43 --- /dev/null +++ b/Tests/CMakeTests/ELF/elf32lsb.bin diff --git a/Tests/CMakeTests/ELF/elf32msb.bin b/Tests/CMakeTests/ELF/elf32msb.bin Binary files differnew file mode 100644 index 0000000..d04aaf7 --- /dev/null +++ b/Tests/CMakeTests/ELF/elf32msb.bin diff --git a/Tests/CMakeTests/ELF/elf64lsb.bin b/Tests/CMakeTests/ELF/elf64lsb.bin Binary files differnew file mode 100644 index 0000000..a21e3ea --- /dev/null +++ b/Tests/CMakeTests/ELF/elf64lsb.bin diff --git a/Tests/CMakeTests/ELF/elf64msb.bin b/Tests/CMakeTests/ELF/elf64msb.bin Binary files differnew file mode 100644 index 0000000..bbe2551 --- /dev/null +++ b/Tests/CMakeTests/ELF/elf64msb.bin 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() |