-set(SIMGRID_DEP "-lm -lpcre")
-
-if(pthread)
- if(${CONTEXT_THREADS})
- SET(SIMGRID_DEP "${SIMGRID_DEP} -pthread")
- endif(${CONTEXT_THREADS})
-endif(pthread)
-
-if(HAVE_LUA)
- ADD_CUSTOM_TARGET(link_simgrid_lua ALL
- DEPENDS simgrid
- ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
- ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
- ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
- )
- add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
- ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
- ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
- COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/lua/
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} #for test
-
- COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/msg/masterslave/
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} #for test
-
- COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/simdag/
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} #for test
- )
- SET(SIMGRID_DEP "${SIMGRID_DEP} -l${LIB_LUA_NAME}")
-endif(HAVE_LUA)
+set(SIMGRID_DEP "-lm")
+if (HAVE_BOOST_CONTEXT)
+ set(SIMGRID_DEP "${SIMGRID_DEP} ${Boost_CONTEXT_LIBRARY}")
+endif()
+
+if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
+ AND NOT ${CMAKE_SYSTEM_VERSION} VERSION_LESS 10.0
+ AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ # FreeBSD from 10.0 provide a internal C++ stack (unused by gcc)
+ # see https://wiki.freebsd.org/NewC%2B%2BStack
+ set(SIMGRID_DEP "${SIMGRID_DEP} -lc++")
+elseif(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
+ AND ${CMAKE_SYSTEM_VERSION} VERSION_LESS 10.0
+ AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ # FreeBSD prior to 10.0 does not necessarily have a compiler
+ # installed that is capable of c++11! Hence, we just assume
+ # here that libc++ was compiled.
+ # FIXME: We should change this behavior; we may want to include
+ # an option of whether libc++ (clang++) or libstdc++ (g++)
+ # should be used.
+ include_directories( "/usr/local/include/c++/v1")
+ set(SIMGRID_DEP "${SIMGRID_DEP} -lc++ -L/usr/local/lib ")
+else()
+ set(SIMGRID_DEP "${SIMGRID_DEP} -lstdc++")
+endif()
+
+if(pthread AND ${CONTEXT_THREADS} AND NOT APPLE)
+ # Clang on recent Mac OS X is not happy about -pthread.
+ SET(SIMGRID_DEP "${SIMGRID_DEP} -pthread")
+endif()
+
+if(HAVE_LUA)
+ ADD_CUSTOM_TARGET(link_simgrid_lua ALL
+ DEPENDS simgrid
+ ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
+ ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
+ ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
+ )
+ add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
+ ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
+ ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/lua/
+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} #for test
+
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/msg/masterslave/
+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} #for test
+
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/simdag/
+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} #for test
+ )
+ SET(SIMGRID_DEP "${SIMGRID_DEP} -l${LIB_LUA_NAME}")
+endif()