diff --git a/dtool/Configure.cmake b/dtool/Configure.cmake index 555140636b..e1404e3f14 100644 --- a/dtool/Configure.cmake +++ b/dtool/Configure.cmake @@ -237,7 +237,7 @@ config_package(VRPN) #config_package(VORBIS COMMENT "Vorbis Ogg decoder") - +### Configure interrogate ### message(STATUS "") # simple line break if(HAVE_PYTHON) set(USE_INTERROGATE TRUE CACHE BOOL "If true, Panda3D will generate python interfaces") @@ -252,21 +252,33 @@ else() endif() +### Configure threading support ### +# Add basic use flag for threading set(USE_THREADS TRUE CACHE BOOL "If true, compile Panda3D with threading support.") if(USE_THREADS) set(HAVE_THREADS TRUE) else() unset(SIMPLE_THREADS CACHE) - unset(DO_PIPELINING CACHE) + unset(OS_SIMPLE_THREADS CACHE) endif() +# Configure debug threads +if(NOT DEFINED OPTIMIZE OR OPTIMIZE LESS 3) + set(DEBUG_THREADS ON CACHE BOOL "If on, enables debugging of thread and sync operations (i.e. mutexes, deadlocks)") +else() + set(DEBUG_THREADS OFF CACHE BOOL "If on, enables debugging of thread and sync operations (i.e. mutexes, deadlocks)") +endif() + +# Add advanced threading configuration if(HAVE_THREADS) set(SIMPLE_THREADS FALSE CACHE BOOL "If true, compile with simulated threads.") if(SIMPLE_THREADS) message(STATUS "Compilation will include simulated threading support.") - unset(DO_PIPELINING CACHE) + set(OS_SIMPLE_THREADS TRUE CACHE BOOL "If true, OS threading constructs will be used to perform context switches.") else() - set(DO_PIPELINING TRUE CACHE BOOL "If true, compile with pipelined threads.") + unset(OS_SIMPLE_THREADS CACHE) + + set(DO_PIPELINING TRUE CACHE BOOL "If true, compile with pipelined rendering.") if(DO_PIPELINING) message(STATUS "Compilation will include full, pipelined threading support.") else() @@ -277,6 +289,34 @@ else() message(STATUS "Configuring Panda without threading support.") endif() +set(HAVE_POSIX_THREADS FALSE) +if(NOT WIN32) + find_path(PTHREAD_IPATH + NAMES "pthread.h" + PATHS "/usr/include" + ) + if(PTHREAD_IPATH) + set(HAVE_POSIX_THREADS TRUE) + set(THREAD_LIBS pthread) + set(CMAKE_CXX_FLAGS "-pthread") + set(CMAKE_CXX_FLAGS_DEBUG "-pthread") + set(CMAKE_CXX_FLAGS_RELEASE "-pthread") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-pthread") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-pthread") + endif() +endif() + + +### Configure pipelining ### +if(NOT DEFINED DO_PIPELINING) + if(NOT DEFINED OPTIMIZE OR OPTIMIZE LESS 2) + set(DO_PIPELINING TRUE CACHE BOOL "If true, compile with pipelined rendering.") + else() + set(DO_PIPELINING FALSE CACHE BOOL "If true, compile with pipelined rendering.") + endif() +endif() + +### Configure OS X options ### if(OSX_PLATFORM) set(UNIVERSIAL_BINARIES TRUE CACHE BOOL "If true, compiling will create universal OS X binaries.") if(UNIVERSAL_BINARIES)