Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Activate the stdobject test now that it works
[simgrid.git] / examples / sthread / CMakeLists.txt
1 set(THREADS_PREFER_PTHREAD_FLAG ON)
2 find_package(Threads REQUIRED)
3
4 # Regular pthread examples: test the interceptor of the pthread interface
5 #########################################################################
6
7 foreach(x
8         mutex-simple
9         producer-consumer)
10
11   if("${CMAKE_SYSTEM}" MATCHES "Linux")
12     add_executable       (pthread-${x} EXCLUDE_FROM_ALL pthread-${x}.c)
13     set_target_properties(pthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
14     target_link_libraries(pthread-${x} PRIVATE Threads::Threads)
15     target_link_libraries(pthread-${x} PUBLIC "-Wl,-znorelro -Wl,-znoseparate-code") # TODO: convert to target_link_option once CMAKE_VERSION is >3.13
16
17     add_dependencies(tests pthread-${x})
18     ADD_TESH_FACTORIES(pthread-${x} "^thread" --setenv libdir=${CMAKE_BINARY_DIR}/lib --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.tesh)
19
20     if(SIMGRID_HAVE_MC)
21       add_dependencies(tests-mc pthread-${x})
22       ADD_TESH_FACTORIES(pthread-mc-${x} "^thread" --setenv libdir=${CMAKE_BINARY_DIR}/lib --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
23     endif()
24   endif()
25
26   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.tesh
27                                      ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
28   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.c)
29
30 endforeach()
31
32 # Regular pthread examples that may deadlock: test sthread + MC in that case
33 ############################################################################
34
35 foreach(x
36         mutex-simpledeadlock)
37
38   if(SIMGRID_HAVE_MC AND ("${CMAKE_SYSTEM}" MATCHES "Linux")) # sthread is linux-only
39
40     add_executable       (pthread-${x} EXCLUDE_FROM_ALL pthread-${x}.c)
41     set_target_properties(pthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
42     target_link_libraries(pthread-${x} PRIVATE Threads::Threads)
43     target_link_libraries(pthread-${x} PUBLIC "-Wl,-znorelro -Wl,-znoseparate-code") # TODO: convert to target_link_option once CMAKE_VERSION is >3.13
44
45     add_dependencies(tests-mc pthread-${x})
46     ADD_TESH_FACTORIES(pthread-mc-${x} "^thread" --setenv libdir=${CMAKE_BINARY_DIR}/lib --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
47   endif()
48
49   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
50   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.c)
51
52 endforeach()
53
54 # C++ tests with sthread+MC that live in their own directory
55 ########################################################
56 foreach(example
57         stdobject)
58
59   if(SIMGRID_HAVE_MC AND ("${CMAKE_SYSTEM}" MATCHES "Linux")) # sthread is linux-only
60
61     add_executable       (${example} EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.cpp)
62     set_target_properties(${example} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
63     target_link_libraries(${example} PRIVATE Threads::Threads)
64     target_link_libraries(${example} PUBLIC "-fPIC -Wl,-znorelro -Wl,-znoseparate-code") # TODO: convert to target_link_option once CMAKE_VERSION is >3.13
65     set_target_properties(${example} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${example})
66
67     add_dependencies(tests-mc ${example})
68     ADD_TESH_FACTORIES(sthread-mc-${example} "^thread" --setenv libdir=${CMAKE_BINARY_DIR}/lib --cd ${CMAKE_BINARY_DIR}/examples/sthread/${example} ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.tesh)
69   endif()
70
71   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.tesh)
72   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.cpp)
73 endforeach()
74
75 # Regular sthread examples: test the internal interface for debugging purpose
76 #############################################################################
77
78 foreach(x
79         mutex-simple)
80   if("${CMAKE_SYSTEM}" MATCHES "Linux")
81     add_executable       (sthread-${x} EXCLUDE_FROM_ALL sthread-${x}.c)
82     set_target_properties(sthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
83     target_link_libraries(sthread-${x} sthread)
84     set_property(TARGET sthread-${x} APPEND PROPERTY INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}")
85
86     add_dependencies(tests sthread-${x})
87     ADD_TESH_FACTORIES(sthread-${x} "^thread" --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
88   endif()
89
90   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
91   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.c)
92 endforeach()
93
94
95 # Add all extra files to the archive
96 ####################################
97
98 set(tesh_files    ${tesh_files}     PARENT_SCOPE)
99 set(bin_files     ${bin_files}      PARENT_SCOPE)
100 set(examples_src  ${examples_src}   PARENT_SCOPE)
101 set(xml_files     ${xml_files}      PARENT_SCOPE)
102
103