1 set(THREADS_PREFER_PTHREAD_FLAG ON)
2 find_package(Threads REQUIRED)
4 # Regular pthread examples: test the interceptor of the pthread interface
5 #########################################################################
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 is >3.13
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)
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)
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)
32 # Regular pthread examples that may deadlock: test sthread + MC in that case
33 ############################################################################
38 if(SIMGRID_HAVE_MC AND ("${CMAKE_SYSTEM}" MATCHES "Linux")) # sthread is linux-only
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 is >3.13
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)
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)
54 # Regular sthread examples: test the internal interface for debugging purpose
55 #############################################################################
59 if("${CMAKE_SYSTEM}" MATCHES "Linux")
60 add_executable (sthread-${x} EXCLUDE_FROM_ALL sthread-${x}.c)
61 set_target_properties(sthread-${x} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
62 target_link_libraries(sthread-${x} sthread)
63 set_property(TARGET sthread-${x} APPEND PROPERTY INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}")
65 add_dependencies(tests sthread-${x})
66 ADD_TESH_FACTORIES(sthread-${x} "^thread" --cd ${CMAKE_BINARY_DIR}/examples/sthread ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
69 set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.tesh)
70 set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/sthread-${x}.c)
74 # Add all extra files to the archive
75 ####################################
77 set(tesh_files ${tesh_files} PARENT_SCOPE)
78 set(bin_files ${bin_files} PARENT_SCOPE)
79 set(examples_src ${examples_src} PARENT_SCOPE)
80 set(xml_files ${xml_files} PARENT_SCOPE)