${CMAKE_HOME_DIRECTORY}/examples/c/${x}/${x}.tesh)
endforeach()
-ADD_TESH_FACTORIES(app-masterworker-multicore "thread;ucontext;raw;boost"
+ADD_TESH_FACTORIES(app-masterworker-multicore "*"
--setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/c/app-masterworker
--setenv bindir=${CMAKE_BINARY_DIR}/examples/c/app-masterworker
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
${CMAKE_HOME_DIRECTORY}/examples/c/app-masterworker/app-masterworker-multicore.tesh)
-ADD_TESH_FACTORIES(app-masterworker-vivaldi "thread;ucontext;raw;boost"
+ADD_TESH_FACTORIES(app-masterworker-vivaldi "*"
--setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/c/app-masterworker
--setenv bindir=${CMAKE_BINARY_DIR}/examples/c/app-masterworker
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "i386" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
# Thread-local storage (TLS) is needed for parallel execution, but it doesn't
# play well with Ucontexts on 64bit SunOS (at least on x86_64).
- set(parallel-factories "thread;raw;boost")
+ set(parallel-factories "^ucontext")
else()
- set(parallel-factories "thread;ucontext;raw;boost")
+ set(parallel-factories "*")
endif()
ADD_TESH_FACTORIES(c-app-bittorrent-parallel "raw" --cfg contexts/nthreads:4 ${CONTEXTS_SYNCHRO}
set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.py)
if(enable_python)
- ADD_TESH_FACTORIES(python-${example} "thread;ucontext;raw;boost"
+ ADD_TESH_FACTORIES(python-${example} "*"
--setenv srcdir=${CMAKE_CURRENT_SOURCE_DIR}/${example}
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
--setenv pythoncmd=${PYTHON_EXECUTABLE}
dht-kademlia/routing_table.cpp dht-kademlia/routing_table.hpp
dht-kademlia/answer.cpp dht-kademlia/answer.hpp dht-kademlia/message.hpp)
-set(_actor-stacksize_factories "raw;boost;ucontext") # Threads ignore modifications of the stack size
+set(_actor-stacksize_factories "^thread") # Threads ignore modifications of the stack size
# The maestro-set example only works for threads and when not using windows.
set(_maestro-set_factories "thread")
if(NOT SIMGRID_HAVE_MC)
set(_${example}_disable 1)
endif()
- set(_${example}_factories "ucontext;raw;boost")
+ set(_${example}_factories "^thread")
endforeach()
if(SIMGRID_HAVE_MC)
# Use default factories unless specified otherwise
if(NOT DEFINED _${example}_factories)
- set(_${example}_factories "thread;ucontext;raw;boost")
+ set(_${example}_factories "*")
endif()
# message("Factories of ${example}: ${_${example}_factories}")
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "i386" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
# Thread-local storage (TLS) is needed for parallel execution, but it doesn't
# play well with Ucontexts on 64bit SunOS (at least on x86_64).
- set(parallel-factories "thread;raw;boost")
+ set(parallel-factories "^ucontext")
else()
- set(parallel-factories "thread;ucontext;raw;boost")
+ set(parallel-factories "*")
endif()
foreach(example app-bittorrent app-masterworkers
# ns3-tests
if(SIMGRID_HAVE_NS3)
- ADD_TESH_FACTORIES(s4u-network-ns3 "thread;ucontext;raw;boost"
+ ADD_TESH_FACTORIES(s4u-network-ns3 "*"
--setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/s4u
--setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
${CMAKE_HOME_DIRECTORY}/examples/s4u/network-ns3/s4u-network-ns3.tesh)
- ADD_TESH_FACTORIES(s4u-network-ns3-wifi "thread;ucontext;raw;boost"
+ ADD_TESH_FACTORIES(s4u-network-ns3-wifi "*"
--setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/s4u
--setenv bindir=${CMAKE_BINARY_DIR}/examples/s4u
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
# MC is currently broken with threads (deadlock => timeout)
if(SIMGRID_HAVE_MC)
ADD_TESH(smpi-mc-only-send-determinism --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/mc --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/mc ${CMAKE_HOME_DIRECTORY}/examples/smpi/mc/only_send_deterministic.tesh)
- ADD_TESH_FACTORIES(smpi-mc-sendsend "ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/mc --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/mc ${CMAKE_HOME_DIRECTORY}/examples/smpi/mc/sendsend.tesh)
+ ADD_TESH_FACTORIES(smpi-mc-sendsend "^thread" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/mc --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/mc ${CMAKE_HOME_DIRECTORY}/examples/smpi/mc/sendsend.tesh)
endif()
ADD_TESH(smpi-tracing --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/trace --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/trace --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/trace ${CMAKE_HOME_DIRECTORY}/examples/smpi/trace/trace.tesh)
ADD_TESH(smpi-replay --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/replay.tesh)
ADD_TESH(smpi-replay-override-replayer --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/replay-override-replayer.tesh)
ADD_TESH(smpi-gemm --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/gemm --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/gemm --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/gemm ${CMAKE_HOME_DIRECTORY}/examples/smpi/gemm/gemm.tesh)
- ADD_TESH_FACTORIES(smpi-energy "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/energy --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/energy.tesh)
+ ADD_TESH_FACTORIES(smpi-energy "*" --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/energy --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/energy.tesh)
ADD_TESH(smpi-ampi --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/ampi_test/ampi_test.tesh)
endif()
add_executable (masterworker_mailbox_smpi EXCLUDE_FROM_ALL masterworker_mailbox_smpi.cpp)
target_link_libraries(masterworker_mailbox_smpi simgrid)
- ADD_TESH_FACTORIES(smpi-s4u-masterworker "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/smpi_s4u_masterworker --cd ${CMAKE_BINARY_DIR}/examples/smpi/smpi_s4u_masterworker ${CMAKE_HOME_DIRECTORY}/examples/smpi/smpi_s4u_masterworker/s4u_smpi.tesh)
+ ADD_TESH_FACTORIES(smpi-s4u-masterworker "*" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/smpi_s4u_masterworker --cd ${CMAKE_BINARY_DIR}/examples/smpi/smpi_s4u_masterworker ${CMAKE_HOME_DIRECTORY}/examples/smpi/smpi_s4u_masterworker/s4u_smpi.tesh)
add_dependencies(tests masterworker_mailbox_smpi)
endif()
## Add the easy tests: only simcall-generic for now
foreach(x simcall-generic)
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.tesh)
- ADD_TESH_FACTORIES(tesh-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/kernel/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/kernel/${x} ${x}.tesh)
+ ADD_TESH_FACTORIES(tesh-${x} "*" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/kernel/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/kernel/${x} ${x}.tesh)
endforeach()
## Add the tests for stack-overflow
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/stack-overflow/stack-overflow.tesh)
if (NOT enable_memcheck AND NOT enable_address_sanitizer AND NOT enable_thread_sanitizer)
- ADD_TESH_FACTORIES(stack-overflow "ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/kernel/stack-overflow --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/kernel/stack-overflow stack-overflow.tesh)
+ ADD_TESH_FACTORIES(stack-overflow "^thread" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/kernel/stack-overflow --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/kernel/stack-overflow stack-overflow.tesh)
if (WIN32)
- SET_TESH_PROPERTIES(stack-overflow "ucontext;raw;boost" WILL_FAIL true)
+ SET_TESH_PROPERTIES(stack-overflow "^thread" WILL_FAIL true)
endif()
endif()
set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${example}/${example}.py)
if(enable_python)
- ADD_TESH_FACTORIES(tesh-python-${example} "thread;ucontext;raw;boost"
+ ADD_TESH_FACTORIES(tesh-python-${example} "*"
--setenv srcdir=${CMAKE_CURRENT_SOURCE_DIR}/${example}
--setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms
--setenv pythoncmd=${PYTHON_EXECUTABLE}
cloud-interrupt-migration cloud-two-execs concurrent_rw
vm-live-migration)
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.tesh)
- ADD_TESH_FACTORIES(tesh-s4u-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/s4u/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/teshsuite/s4u/${x} ${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x}/${x}.tesh)
+ ADD_TESH_FACTORIES(tesh-s4u-${x} "*" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/s4u/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/teshsuite/s4u/${x} ${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x}/${x}.tesh)
endforeach()
foreach(x basic-link-test host-on-off host-on-off-actors host-on-off-recv is-router listen_async pid storage_client_server trace-integration)
if(enable_smpi)
if(NOT WIN32)
- ADD_TESH_FACTORIES(tesh-smpi-macro-shared "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-shared macro-shared.tesh)
- ADD_TESH_FACTORIES(tesh-smpi-auto-shared "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/auto-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/auto-shared auto-shared.tesh)
- ADD_TESH_FACTORIES(tesh-smpi-macro-partial-shared "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-partial-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-partial-shared macro-partial-shared.tesh)
- ADD_TESH_FACTORIES(tesh-smpi-macro-partial-shared-communication "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-partial-shared-communication --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-partial-shared-communication macro-partial-shared-communication.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-macro-shared "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-shared macro-shared.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-auto-shared "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/auto-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/auto-shared auto-shared.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-macro-partial-shared "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-partial-shared --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-partial-shared macro-partial-shared.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-macro-partial-shared-communication "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/macro-partial-shared-communication --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/macro-partial-shared-communication macro-partial-shared-communication.tesh)
endif()
foreach(x coll-allgather coll-allgatherv coll-allreduce coll-alltoall coll-alltoallv coll-barrier coll-bcast
coll-gather coll-reduce coll-reduce-scatter coll-scatter macro-sample pt2pt-dsend pt2pt-pingpong
type-hvector type-indexed type-struct type-vector bug-17132 timers io-simple io-simple-at io-all io-all-at io-shared io-ordered topo-cart-sub)
- ADD_TESH_FACTORIES(tesh-smpi-${x} "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/${x} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/${x} ${x}.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-${x} "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/${x} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/${x} ${x}.tesh)
endforeach()
if(SMPI_FORTRAN)
- ADD_TESH_FACTORIES(tesh-smpi-fort_args "thread;ucontext;raw;boost" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/fort_args --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/fort_args fort_args.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-fort_args "*" --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/fort_args --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/fort_args fort_args.tesh)
endif()
foreach (ALLGATHER 2dmesh 3dmesh bruck GB loosely_lr NTSLR NTSLR_NB pair rdb rhv ring SMP_NTS smp_simple spreading_simple
# Simple privatization tests
if(HAVE_PRIVATIZATION)
foreach(PRIVATIZATION dlopen mmap)
- ADD_TESH_FACTORIES(tesh-smpi-privatization-${PRIVATIZATION} "thread;ucontext;raw;boost" --setenv privatization=${PRIVATIZATION} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/privatization --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/privatization privatization.tesh)
+ ADD_TESH_FACTORIES(tesh-smpi-privatization-${PRIVATIZATION} "*" --setenv privatization=${PRIVATIZATION} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/smpi/privatization --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/privatization privatization.tesh)
endforeach()
endif()
endif()
endif()
ENDMACRO()
+# Build a list variable named FACTORIES_LIST with the given arguments, but:
+# - replace wildcard "*" with all known factories
+# - if the list begins with "^", take the complement
+# - finally remove unsupported factories
+#
+# Used by ADD_TESH_FACTORIES, and SET_TESH_PROPERTIES
+MACRO(SETUP_FACTORIES_LIST)
+ set(ALL_KNOWN_FACTORIES "thread;boost;raw;ucontext")
+
+ if("${ARGV}" STREQUAL "*") # take all known factories
+ SET(FACTORIES_LIST ${ALL_KNOWN_FACTORIES})
+ elseif("${ARGV}" MATCHES "^\\^") # exclude given factories
+ SET(FACTORIES_LIST ${ALL_KNOWN_FACTORIES})
+ STRING(SUBSTRING "${ARGV}" 1 -1 EXCLUDED)
+ LIST(REMOVE_ITEM FACTORIES_LIST ${EXCLUDED})
+ else() # take given factories
+ SET(FACTORIES_LIST "${ARGV}")
+ endif()
+
+ # Exclude unsupported factories. Threads are always available, thanks to C++11 threads.
+ if(NOT HAVE_BOOST_CONTEXTS)
+ LIST(REMOVE_ITEM FACTORIES_LIST "boost")
+ endif()
+ if(NOT HAVE_RAW_CONTEXTS)
+ LIST(REMOVE_ITEM FACTORIES_LIST "raw")
+ endif()
+ if(NOT HAVE_UCONTEXT_CONTEXTS)
+ LIST(REMOVE_ITEM FACTORIES_LIST "ucontext")
+ endif()
+
+ # Check that there is no unknown factory
+ FOREACH(FACTORY ${FACTORIES_LIST})
+ if(NOT FACTORY IN_LIST ALL_KNOWN_FACTORIES)
+ message(FATAL_ERROR "Unknown factory: ${FACTORY}")
+ endif()
+ ENDFOREACH()
+ENDMACRO()
+
MACRO(ADD_TESH_FACTORIES NAME FACTORIES)
SET(ARGR ${ARGV})
LIST(REMOVE_AT ARGR 0) # remove name
FOREACH(I ${FACTORIES}) # remove all factories
LIST(REMOVE_AT ARGR 0)
ENDFOREACH()
- FOREACH(FACTORY ${FACTORIES})
- if ((${FACTORY} STREQUAL "thread" ) OR # Always available, thanks to C++11 threads
- (${FACTORY} STREQUAL "boost" AND HAVE_BOOST_CONTEXTS) OR
- (${FACTORY} STREQUAL "raw" AND HAVE_RAW_CONTEXTS) OR
- (${FACTORY} STREQUAL "ucontext" AND HAVE_UCONTEXT_CONTEXTS))
- ADD_TESH("${NAME}-${FACTORY}" "--cfg" "contexts/factory:${FACTORY}" ${ARGR})
- endif()
- if ((NOT ${FACTORY} STREQUAL "thread") AND
- (NOT ${FACTORY} STREQUAL "boost") AND
- (NOT ${FACTORY} STREQUAL "raw") AND
- (NOT ${FACTORY} STREQUAL "ucontext"))
- message(FATAL_ERROR "Cannot add a tesh for an unknown factory: ${FACTORY}")
- endif()
+ SETUP_FACTORIES_LIST(${FACTORIES})
+ FOREACH(FACTORY ${FACTORIES_LIST})
+ ADD_TESH("${NAME}-${FACTORY}" "--cfg" "contexts/factory:${FACTORY}" ${ARGR})
ENDFOREACH()
ENDMACRO()
FOREACH(I ${FACTORIES}) # remove all factories
LIST(REMOVE_AT ARGR 0)
ENDFOREACH()
- FOREACH(FACTORY ${FACTORIES})
- if ((${FACTORY} STREQUAL "thread" ) OR # Always available, thanks to C++11 threads
- (${FACTORY} STREQUAL "boost" AND HAVE_BOOST_CONTEXTS) OR
- (${FACTORY} STREQUAL "raw" AND HAVE_RAW_CONTEXTS) OR
- (${FACTORY} STREQUAL "ucontext" AND HAVE_UCONTEXT_CONTEXTS))
- set_tests_properties("${NAME}-${FACTORY}" PROPERTIES ${ARGR})
- endif()
+ SETUP_FACTORIES_LIST(${FACTORIES})
+ FOREACH(FACTORY ${FACTORIES_LIST})
+ set_tests_properties("${NAME}-${FACTORY}" PROPERTIES ${ARGR})
ENDFOREACH()
ENDMACRO()