Commit e9ce5447 authored by Dominik Charousset's avatar Dominik Charousset

added --disable-context-switching option

parent 37376c49
...@@ -22,6 +22,10 @@ else () ...@@ -22,6 +22,10 @@ else ()
set(CMAKE_BUILD_TYPE RelWithDebInfo) set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif () endif ()
if (DISABLE_CONTEXT_SWITCHING)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCPPA_DISABLE_CONTEXT_SWITCHING")
endif()
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION) OUTPUT_VARIABLE GCC_VERSION)
...@@ -91,32 +95,33 @@ set(LIBCPPA_SRC ...@@ -91,32 +95,33 @@ set(LIBCPPA_SRC
set(boost_context third_party/boost_context) set(boost_context third_party/boost_context)
# add third party Boost.Context sources # add third party Boost.Context sources if context-switching is enabled
if(CMAKE_SIZEOF_VOID_P EQUAL 4) if(NOT DISABLE_CONTEXT_SWITCHING)
if(APPLE) if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(fcontext_asm ${boost_context}/src/asm/fcontext_i386_sysv_macho_gas.S) if(APPLE)
else() set(fcontext_asm ${boost_context}/src/asm/fcontext_i386_sysv_macho_gas.S)
set(fcontext_asm ${boost_context}/src/asm/fcontext_i386_sysv_elf_gas.S) else()
endif() set(fcontext_asm ${boost_context}/src/asm/fcontext_i386_sysv_elf_gas.S)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) endif()
if(APPLE) elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(fcontext_asm ${boost_context}/src/asm/fcontext_x86_64_sysv_macho_gas.S) if(APPLE)
set(fcontext_asm ${boost_context}/src/asm/fcontext_x86_64_sysv_macho_gas.S)
else()
set(fcontext_asm ${boost_context}/src/asm/fcontext_x86_64_sysv_elf_gas.S)
endif()
else() else()
set(fcontext_asm ${boost_context}/src/asm/fcontext_x86_64_sysv_elf_gas.S) message(FATAL_ERROR "Unsupported platform (neither 32 nor 64 bit)")
endif() endif()
else() set_property(SOURCE ${fcontext_asm} PROPERTY LANGUAGE CXX)
message(FATAL_ERROR "Unsupported platform (neither 32 nor 64 bit)") set(LIBCPPA_SRC
${LIBCPPA_SRC}
${fcontext_asm}
${boost_context}/src/stack_utils_posix.cpp
${boost_context}/src/stack_allocator_posix.cpp
${boost_context}/src/fcontext.cpp
)
endif() endif()
set_property(SOURCE ${fcontext_asm} PROPERTY LANGUAGE CXX)
set(LIBCPPA_SRC
${LIBCPPA_SRC}
${fcontext_asm}
${boost_context}/src/stack_utils_posix.cpp
${boost_context}/src/stack_allocator_posix.cpp
${boost_context}/src/fcontext.cpp
)
find_package(Boost COMPONENTS thread REQUIRED) find_package(Boost COMPONENTS thread REQUIRED)
link_directories(${Boost_LIBRARY_DIRS}) link_directories(${Boost_LIBRARY_DIRS})
......
...@@ -17,28 +17,32 @@ usage="\ ...@@ -17,28 +17,32 @@ usage="\
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
Build Options: Build Options:
--builddir=DIR place build files in directory [build] --builddir=DIR place build files in directory [build]
--generator=GENERATOR CMake generator to use (see cmake --help) --generator=GENERATOR CMake generator to use (see cmake --help)
--with-clang=FILE path to clang++ executable --with-clang=FILE path to clang++ executable
--with-gcc=FILE path to g++ executable --with-gcc=FILE path to g++ executable
--bin-dir=DIR executable directory [build/bin] --bin-dir=DIR executable directory [build/bin]
--lib-dir=DIR library directory [build/lib] --lib-dir=DIR library directory [build/lib]
--dual-build build both with gcc and clang --dual-build build both with gcc and clang
Installation Directories: Installation Directories:
--prefix=PREFIX installation directory [/usr/local] --prefix=PREFIX installation directory [/usr/local]
Optional Features: Optional Features:
--enable-debug compile in debugging mode --enable-debug compile in debugging mode
--enable-perftools use Google perftools --enable-perftools use Google perftools
Platform-Dependent Adjustments:
--disable-context-switching compile libcppa without context-switching actors
on platforms where Boost.Context is not available
Required Packages in Non-Standard Locations: Required Packages in Non-Standard Locations:
--with-boost=PATH path to Boost install root --with-boost=PATH path to Boost install root
Influential Environment Variables (only on first invocation Influential Environment Variables (only on first invocation
per build directory): per build directory):
CXX C++ compiler command CXX C++ compiler command
CXXFLAGS C++ compiler flags CXXFLAGS C++ compiler flags
" "
...@@ -111,8 +115,9 @@ configure () ...@@ -111,8 +115,9 @@ configure ()
# Set defaults. # Set defaults.
builddir="$sourcedir/build" builddir="$sourcedir/build"
CMakeCacheEntries="" CMakeCacheEntries=""
append_cache_entry CMAKE_INSTALL_PREFIX PATH /usr/local append_cache_entry CMAKE_INSTALL_PREFIX PATH /usr/local
append_cache_entry ENABLE_DEBUG BOOL false append_cache_entry ENABLE_DEBUG BOOL false
append_cache_entry DISABLE_CONTEXT_SWITCHING BOOL false
# Parse arguments. # Parse arguments.
while [ $# -ne 0 ]; do while [ $# -ne 0 ]; do
...@@ -138,6 +143,9 @@ while [ $# -ne 0 ]; do ...@@ -138,6 +143,9 @@ while [ $# -ne 0 ]; do
--enable-debug) --enable-debug)
append_cache_entry ENABLE_DEBUG BOOL true append_cache_entry ENABLE_DEBUG BOOL true
;; ;;
--disable-context-switching)
append_cache_entry DISABLE_CONTEXT_SWITCHING BOOL true
;;
--with-boost=*) --with-boost=*)
append_cache_entry BOOST_ROOT PATH $optarg append_cache_entry BOOST_ROOT PATH $optarg
;; ;;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment