Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a sthread+MC example that deadlocks
[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
10   if("${CMAKE_SYSTEM}" MATCHES "Linux")
11     add_executable       (pthread-${x} EXCLUDE_FROM_ALL pthread-${x}.c)
12     set_target_properties(pthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
13     target_link_libraries(pthread-${x} PRIVATE Threads::Threads)
14     target_link_libraries(pthread-${x} PUBLIC "-Wl,-znorelro -Wl,-znoseparate-code") # TODO: convert to target_link_option once cmake is >3.13
15
16     add_dependencies(tests pthread-${x})
17     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)
18
19     if(SIMGRID_HAVE_MC)
20       add_dependencies(tests-mc pthread-${x})
21       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)
22     endif()
23   endif()
24
25   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.tesh
26                                      ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
27   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.c)
28
29 endforeach()
30
31 # Regular pthread examples that may deadlock: test sthread + MC in that case
32 ############################################################################
33
34 foreach(x
35         mutex-simpledeadlock)
36
37   if(SIMGRID_HAVE_MC AND ("${CMAKE_SYSTEM}" MATCHES "Linux")) # sthread is linux-only
38
39     add_executable       (pthread-${x} EXCLUDE_FROM_ALL pthread-${x}.c)
40     set_target_properties(pthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
41     target_link_libraries(pthread-${x} PRIVATE Threads::Threads)
42     target_link_libraries(pthread-${x} PUBLIC "-Wl,-znorelro -Wl,-znoseparate-code") # TODO: convert to target_link_option once cmake is >3.13
43
44     add_dependencies(tests-mc pthread-${x})
45     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)
46   endif()
47
48   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/pthread-mc-${x}.tesh)
49   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/pthread-${x}.c)
50
51 endforeach()
52
53 # Regular sthread examples: test the internal interface for debugging purpose
54 #############################################################################
55
56 foreach(x
57         mutex-simple)
58   if("${CMAKE_SYSTEM}" MATCHES "Linux")
59     add_executable       (sthread-${x} EXCLUDE_FROM_ALL sthread-${x}.c)
60     set_target_properties(sthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
61     target_link_libraries(sthread-${x} sthread)
62     set_property(TARGET sthread-${x} APPEND PROPERTY INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}")
63
64     add_dependencies(tests sthread-${x})
65     ADD_TESH_FACTORIES(sthread-${x} "^thread" --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
66   endif()
67
68   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
69   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.c)
70 endforeach()
71
72
73 # Add all extra files to the archive
74 ####################################
75
76 set(tesh_files    ${tesh_files}     PARENT_SCOPE)
77 set(bin_files     ${bin_files}      PARENT_SCOPE)
78 set(examples_src  ${examples_src}   PARENT_SCOPE)
79 set(xml_files     ${xml_files}      PARENT_SCOPE)
80
81