summaryrefslogtreecommitdiff
path: root/Tests/LibELF/CMakeLists.txt
blob: b417824fac716d511b3c5b5771533292dfbcaace (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
set(CMAKE_SKIP_RPATH FALSE)
macro(add_dlopen_lib NAME FUNCTION)
    add_library(${NAME} SHARED Dynlib.cpp)
    target_compile_definitions(${NAME} PRIVATE -DFUNCTION=${FUNCTION})
    # LibLine is not special, just an "external" dependency
    target_link_libraries(${NAME} PRIVATE LibLine)
    serenity_set_implicit_links(${NAME})
	 # Avoid execution by the test runner
    install(TARGETS ${NAME}
            DESTINATION usr/Tests/LibELF
            PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE GROUP_WRITE)
endmacro()
add_dlopen_lib(DynlibA dynliba_function)
add_dlopen_lib(DynlibB dynlibb_function)

add_dlopen_lib(DynlibC dynlibc_function)
set(CMAKE_INSTALL_RPATH $ORIGIN)
add_dlopen_lib(DynlibD dynlibd_function)
target_link_libraries(DynlibD PRIVATE DynlibC)
unset(CMAKE_INSTALL_RPATH)

set(TEST_SOURCES
    test-elf.cpp
    TestDlOpen.cpp
)

foreach(source IN LISTS TEST_SOURCES)
    serenity_test("${source}" LibELF)
endforeach()