From f79d991dfd607a6444fe5636fc264cc204fcb2ea Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 2 Feb 2021 19:10:52 -0500 Subject: Tests: Convert CMake.ELF to RunCMake.file-RPATH ELF case --- Tests/CMakeTests/CMakeLists.txt | 4 -- Tests/CMakeTests/ELF/elf32lsb.bin | Bin 2824 -> 0 bytes Tests/CMakeTests/ELF/elf32msb.bin | Bin 17984 -> 0 bytes Tests/CMakeTests/ELF/elf64lsb.bin | Bin 4320 -> 0 bytes Tests/CMakeTests/ELF/elf64msb.bin | Bin 18704 -> 0 bytes Tests/CMakeTests/ELFTest.cmake.in | 73 --------------------------- Tests/RunCMake/CMakeLists.txt | 3 ++ Tests/RunCMake/file-RPATH/Common.cmake | 64 +++++++++++++++++++++++ Tests/RunCMake/file-RPATH/ELF.cmake | 9 ++++ Tests/RunCMake/file-RPATH/ELF/elf32lsb.bin | Bin 0 -> 2824 bytes Tests/RunCMake/file-RPATH/ELF/elf32msb.bin | Bin 0 -> 17984 bytes Tests/RunCMake/file-RPATH/ELF/elf64lsb.bin | Bin 0 -> 4320 bytes Tests/RunCMake/file-RPATH/ELF/elf64msb.bin | Bin 0 -> 18704 bytes Tests/RunCMake/file-RPATH/RunCMakeTest.cmake | 5 ++ 14 files changed, 81 insertions(+), 77 deletions(-) delete mode 100644 Tests/CMakeTests/ELF/elf32lsb.bin delete mode 100644 Tests/CMakeTests/ELF/elf32msb.bin delete mode 100644 Tests/CMakeTests/ELF/elf64lsb.bin delete mode 100644 Tests/CMakeTests/ELF/elf64msb.bin delete mode 100644 Tests/CMakeTests/ELFTest.cmake.in create mode 100644 Tests/RunCMake/file-RPATH/Common.cmake create mode 100644 Tests/RunCMake/file-RPATH/ELF.cmake create mode 100755 Tests/RunCMake/file-RPATH/ELF/elf32lsb.bin create mode 100755 Tests/RunCMake/file-RPATH/ELF/elf32msb.bin create mode 100755 Tests/RunCMake/file-RPATH/ELF/elf64lsb.bin create mode 100755 Tests/RunCMake/file-RPATH/ELF/elf64msb.bin create mode 100644 Tests/RunCMake/file-RPATH/RunCMakeTest.cmake diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt index 348e6d0..6bbbe7d 100644 --- a/Tests/CMakeTests/CMakeLists.txt +++ b/Tests/CMakeTests/CMakeLists.txt @@ -44,10 +44,6 @@ set_property(TEST CMake.FileDownloadBadHash PROPERTY AddCMakeTest(FileUpload "") -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 deleted file mode 100644 index 803ac43..0000000 Binary files a/Tests/CMakeTests/ELF/elf32lsb.bin and /dev/null differ diff --git a/Tests/CMakeTests/ELF/elf32msb.bin b/Tests/CMakeTests/ELF/elf32msb.bin deleted file mode 100644 index d04aaf7..0000000 Binary files a/Tests/CMakeTests/ELF/elf32msb.bin and /dev/null differ diff --git a/Tests/CMakeTests/ELF/elf64lsb.bin b/Tests/CMakeTests/ELF/elf64lsb.bin deleted file mode 100644 index a21e3ea..0000000 Binary files a/Tests/CMakeTests/ELF/elf64lsb.bin and /dev/null differ diff --git a/Tests/CMakeTests/ELF/elf64msb.bin b/Tests/CMakeTests/ELF/elf64msb.bin deleted file mode 100644 index bbe2551..0000000 Binary files a/Tests/CMakeTests/ELF/elf64msb.bin and /dev/null differ diff --git a/Tests/CMakeTests/ELFTest.cmake.in b/Tests/CMakeTests/ELFTest.cmake.in deleted file mode 100644 index 85c2360..0000000 --- a/Tests/CMakeTests/ELFTest.cmake.in +++ /dev/null @@ -1,73 +0,0 @@ -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} NO_SOURCE_PERMISSIONS) - 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 "/path1:/path2") - set(rpath) - file(STRINGS "${f}" rpath REGEX "/path1:/path2" LIMIT_COUNT 1) - if(NOT rpath) - message(FATAL_ERROR "RPATH not changed in ${f}") - endif() - - # Change the RPATH without compiler defined rpath removed - file(RPATH_CHANGE FILE "${f}" - OLD_RPATH "/path2" - NEW_RPATH "/path3") - set(rpath) - file(STRINGS "${f}" rpath REGEX "/path1:/path3" LIMIT_COUNT 1) - if(NOT rpath) - message(FATAL_ERROR "RPATH not updated in ${f}") - endif() - - # Change the RPATH with compiler defined rpath removed - file(RPATH_CHANGE FILE "${f}" - OLD_RPATH "/path3" - NEW_RPATH "/rpath/sample" - INSTALL_REMOVE_ENVIRONMENT_RPATH) - set(rpath) - file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1) - if(NOT rpath) - message(FATAL_ERROR "RPATH not updated in ${f}") - endif() - file(STRINGS "${f}" rpath REGEX "/path1" LIMIT_COUNT 1) - if(rpath) - message(FATAL_ERROR "RPATH not removed 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() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index f58e2f3..e0804d7 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -358,6 +358,9 @@ add_RunCMake_test(ctest_upload) add_RunCMake_test(ctest_fixtures) add_RunCMake_test(file) add_RunCMake_test(file-CHMOD) +if(HAVE_ELF_H) + add_RunCMake_test(file-RPATH -DHAVE_ELF_H=${HAVE_ELF_H}) +endif() add_RunCMake_test(find_file) add_RunCMake_test(find_library -DCYGWIN=${CYGWIN}) add_RunCMake_test(find_package) diff --git a/Tests/RunCMake/file-RPATH/Common.cmake b/Tests/RunCMake/file-RPATH/Common.cmake new file mode 100644 index 0000000..cc1efb5 --- /dev/null +++ b/Tests/RunCMake/file-RPATH/Common.cmake @@ -0,0 +1,64 @@ +# Prepare binaries on which to operate. +set(in "${CMAKE_CURRENT_LIST_DIR}/${format}") +set(out "${CMAKE_CURRENT_BINARY_DIR}") +foreach(f ${names}) + file(COPY ${in}/${f} DESTINATION ${out} NO_SOURCE_PERMISSIONS) + 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 "/path1:/path2") + set(rpath) + file(STRINGS "${f}" rpath REGEX "/path1:/path2" LIMIT_COUNT 1) + if(NOT rpath) + message(FATAL_ERROR "RPATH not changed in ${f}") + endif() + + # Change the RPATH without compiler defined rpath removed + file(RPATH_CHANGE FILE "${f}" + OLD_RPATH "/path2" + NEW_RPATH "/path3") + set(rpath) + file(STRINGS "${f}" rpath REGEX "/path1:/path3" LIMIT_COUNT 1) + if(NOT rpath) + message(FATAL_ERROR "RPATH not updated in ${f}") + endif() + + # Change the RPATH with compiler defined rpath removed + file(RPATH_CHANGE FILE "${f}" + OLD_RPATH "/path3" + NEW_RPATH "/rpath/sample" + INSTALL_REMOVE_ENVIRONMENT_RPATH) + set(rpath) + file(STRINGS "${f}" rpath REGEX "/rpath/sample" LIMIT_COUNT 1) + if(NOT rpath) + message(FATAL_ERROR "RPATH not updated in ${f}") + endif() + file(STRINGS "${f}" rpath REGEX "/path1" LIMIT_COUNT 1) + if(rpath) + message(FATAL_ERROR "RPATH not removed 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() diff --git a/Tests/RunCMake/file-RPATH/ELF.cmake b/Tests/RunCMake/file-RPATH/ELF.cmake new file mode 100644 index 0000000..558b2e2 --- /dev/null +++ b/Tests/RunCMake/file-RPATH/ELF.cmake @@ -0,0 +1,9 @@ +set(names + elf32lsb.bin + elf32msb.bin + elf64lsb.bin + elf64msb.bin + ) +set(format ELF) + +include(${CMAKE_CURRENT_LIST_DIR}/Common.cmake) diff --git a/Tests/RunCMake/file-RPATH/ELF/elf32lsb.bin b/Tests/RunCMake/file-RPATH/ELF/elf32lsb.bin new file mode 100755 index 0000000..803ac43 Binary files /dev/null and b/Tests/RunCMake/file-RPATH/ELF/elf32lsb.bin differ diff --git a/Tests/RunCMake/file-RPATH/ELF/elf32msb.bin b/Tests/RunCMake/file-RPATH/ELF/elf32msb.bin new file mode 100755 index 0000000..d04aaf7 Binary files /dev/null and b/Tests/RunCMake/file-RPATH/ELF/elf32msb.bin differ diff --git a/Tests/RunCMake/file-RPATH/ELF/elf64lsb.bin b/Tests/RunCMake/file-RPATH/ELF/elf64lsb.bin new file mode 100755 index 0000000..a21e3ea Binary files /dev/null and b/Tests/RunCMake/file-RPATH/ELF/elf64lsb.bin differ diff --git a/Tests/RunCMake/file-RPATH/ELF/elf64msb.bin b/Tests/RunCMake/file-RPATH/ELF/elf64msb.bin new file mode 100755 index 0000000..bbe2551 Binary files /dev/null and b/Tests/RunCMake/file-RPATH/ELF/elf64msb.bin differ diff --git a/Tests/RunCMake/file-RPATH/RunCMakeTest.cmake b/Tests/RunCMake/file-RPATH/RunCMakeTest.cmake new file mode 100644 index 0000000..11e90bb --- /dev/null +++ b/Tests/RunCMake/file-RPATH/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCMake) + +if(HAVE_ELF_H) + run_cmake_command(ELF ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/ELF.cmake) +endif() -- cgit v0.12