- if (!simix_global->context_factory) {
- /* select the context factory to use to create the contexts */
- if (smx_factory_initializer_to_use) {
- smx_factory_initializer_to_use(&simix_global->context_factory);
- }
- else { /* use the factory specified by --cfg=contexts/factory:value */
-
-
- if (!strcmp(smx_context_factory_name, "thread")) {
- /* use os threads (either pthreads or windows ones) */
- SIMIX_ctx_thread_factory_init(&simix_global->context_factory);
- }
-#ifdef CONTEXT_UCONTEXT
- else if (!strcmp(smx_context_factory_name, "ucontext")) {
- /* use ucontext */
- SIMIX_ctx_sysv_factory_init(&simix_global->context_factory);
- }
-#endif
-#ifdef HAVE_RAWCTX
- else if (!strcmp(smx_context_factory_name, "raw")) {
- /* use raw contexts */
- SIMIX_ctx_raw_factory_init(&simix_global->context_factory);
- }
-#endif
-#ifdef HAVE_BOOST_CONTEXT
- else if (!strcmp(smx_context_factory_name, "boost")) {
- /* use Boost.Context */
- SIMIX_ctx_boost_factory_init(&simix_global->context_factory);
- }
-#endif
- else {
- XBT_ERROR("Invalid context factory specified. Valid factories on this machine:");
-#ifdef HAVE_RAWCTX
- XBT_ERROR(" raw: high performance context factory implemented specifically for SimGrid");
-#else
- XBT_ERROR(" (raw contexts were disabled at compilation time on this machine -- check configure logs for details)");
-#endif
-#ifdef CONTEXT_UCONTEXT
- XBT_ERROR(" ucontext: classical system V contexts (implemented with makecontext, swapcontext and friends)");
-#else
- XBT_ERROR(" (ucontext was disabled at compilation time on this machine -- check configure logs for details)");
-#endif
-#ifdef HAVE_BOOST_CONTEXT
- XBT_ERROR(" boost: this uses the boost libraries context implementation");
-#else
- XBT_ERROR(" (boost was disabled at compilation time on this machine -- check configure logs for details. Did you install the libboost-context-dev package?)");
-#endif
- XBT_ERROR(" thread: slow portability layer using system threads (pthreads on UNIX, CreateThread() on windows)");
- xbt_die("Please use a valid factory.");
- }
- }