@@ -3,10 +3,13 @@ set(CMAKE_SKIP_RPATH FALSE)
3
3
macro (add_test_lib NAME FILE)
4
4
add_library (${NAME} SHARED ${FILE} )
5
5
serenity_set_implicit_links(${NAME} )
6
- # Avoid execution by the test runner
7
- install (TARGETS ${NAME}
8
- DESTINATION usr/Tests/LibELF
9
- PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE GROUP_WRITE)
6
+ install (TARGETS ${NAME} DESTINATION usr/Tests/LibELF)
7
+ endmacro ()
8
+
9
+ macro (add_test_exe NAME FILE)
10
+ add_executable (${NAME} ${FILE} )
11
+ serenity_set_implicit_links(${NAME} )
12
+ install (TARGETS ${NAME} DESTINATION usr/Tests/LibELF)
10
13
endmacro ()
11
14
12
15
macro (add_dlopen_lib NAME FUNCTION)
@@ -28,6 +31,7 @@ unset(CMAKE_INSTALL_RPATH)
28
31
set (TEST_SOURCES
29
32
test -elf.cpp
30
33
TestDlOpen.cpp
34
+ TestOrder.cpp
31
35
TestTLS.cpp
32
36
TestWeakSymbolResolution.cpp
33
37
)
@@ -48,3 +52,20 @@ add_test_lib(TestWeakSymbolResolution1 TestWeakSymbolResolution1.cpp)
48
52
add_test_lib(TestWeakSymbolResolution2 TestWeakSymbolResolution2.cpp)
49
53
target_link_libraries (TestWeakSymbolResolution PRIVATE TestWeakSymbolResolution1 TestWeakSymbolResolution2)
50
54
set_target_properties (TestWeakSymbolResolution PROPERTIES INSTALL_RPATH "$ORIGIN" )
55
+
56
+ add_test_lib(TestOrderLib1 TestOrderLib1.cpp)
57
+ add_test_lib(TestOrderLib2 TestOrderLib2.cpp)
58
+ target_link_libraries (TestOrderLib2 PRIVATE TestOrderLib1)
59
+ set_target_properties (TestOrderLib2 PROPERTIES INSTALL_RPATH "$ORIGIN" )
60
+
61
+ # NOTE: This is so ugly because CMake sorts targets supplied to target_link_libraries.
62
+ # .elf extension here avoids direct invocations by SerenityOS's test runner.
63
+ add_test_exe(TestOrderExe1.elf TestOrderExe.cpp)
64
+ target_link_libraries (TestOrderExe1.elf PRIVATE $<TARGET_FILE:TestOrderLib1> $<TARGET_FILE:TestOrderLib2>)
65
+ add_dependencies (TestOrderExe1.elf TestOrderLib1 TestOrderLib2)
66
+ set_target_properties (TestOrderExe1.elf PROPERTIES INSTALL_RPATH "$ORIGIN" )
67
+
68
+ add_test_exe(TestOrderExe2.elf TestOrderExe.cpp)
69
+ target_link_libraries (TestOrderExe2.elf PRIVATE $<TARGET_FILE:TestOrderLib2> $<TARGET_FILE:TestOrderLib1>)
70
+ add_dependencies (TestOrderExe2.elf TestOrderLib1 TestOrderLib2)
71
+ set_target_properties (TestOrderExe2.elf PROPERTIES INSTALL_RPATH "$ORIGIN" )
0 commit comments