panda3d/dtool/Config.cmake

169 lines
5.7 KiB
CMake

# PRC Config settings
set(PRC_DEFAULT_DIR_ABSOLUTE "" CACHE STRING "Specify the PRC_DEFAULT_DIR as an absolute path.")
if(NOT PRC_DEFAULT_DIR_ABSOLUTE)
set(PRC_DEFAULT_DIR "etc" CACHE STRING
"Panda uses prc files for runtime configuration. Panda will search the default
.prc directory if the PRC_PATH and PRC_DIR environment variables are not defined.")
else()
set(PRC_DEFAULT_DIR "" CACHE STRING
"Panda uses prc files for runtime configuration. Panda will search the default
.prc directory if the PRC_PATH and PRC_DIR environment variables are not defined.")
endif()
set(PRC_DCONFIG_TRUST_LEVEL 0 CACHE STRING "The trust level value for any legacy (DConfig) variables.")
set(PRC_INC_TRUST_LEVEL 0 CACHE STRING "The amount by which we globally increment the trust level.")
if(PRC_DEFAULT_DIR AND PRC_DEFAULT_DIR_ABSOLUTE)
message(FATAL_ERROR "Cannot have both PRC_DEFAULT_DIR and PRC_DEFAULT_DIR_ABSOLUTE, choose one.")
endif()
# PRC special values for config headers
if(PRC_DEFAULT_DIR_ABSOLUTE)
set(DEFAULT_PRC_DIR ${PRC_ABSOLUTE_DIR})
else()
set(DEFAULT_PRC_DIR "${CMAKE_INSTALL_PREFIX}/panda/${PRC_DEFAULT_DIR}")
endif()
### Configure interrogate ###
message(STATUS "") # simple line break
if(HAVE_PYTHON AND HAVE_OPENSSL)
option(USE_INTERROGATE "If on, Panda3D will generate python interfaces" ON)
if(USE_INTERROGATE)
set(HAVE_INTERROGATE TRUE)
endif()
else()
unset(USE_INTERROGATE CACHE)
endif()
if(HAVE_INTERROGATE)
message(STATUS "Compilation will generate Python interfaces.")
else()
message(STATUS "Configuring Panda without Python interfaces.")
endif()
### Configure threading support ###
# Add basic use flag for threading
option(BUILD_THREADS "If on, compile Panda3D with threading support." ON)
if(BUILD_THREADS)
set(HAVE_THREADS TRUE)
else()
unset(BUILD_SIMPLE_THREADS CACHE)
unset(BUILD_OS_SIMPLE_THREADS CACHE)
endif()
# Configure debug threads
if(CMAKE_BUILD_TYPE MATCHES "Debug")
option(BUILD_DEBUG_THREADS "If on, enables debugging of thread and sync operations (i.e. mutexes, deadlocks)" ON)
else()
option(BUILD_DEBUG_THREADS "If on, enables debugging of thread and sync operations (i.e. mutexes, deadlocks)" OFF)
endif()
if(BUILD_DEBUG_THREADS)
set(DEBUG_THREADS TRUE)
endif()
# Add advanced threading configuration
if(HAVE_THREADS)
option(BUILD_SIMPLE_THREADS "If on, compile with simulated threads." OFF)
if(BUILD_SIMPLE_THREADS)
message(STATUS "Compilation will include simulated threading support.")
option(BUILD_OS_SIMPLE_THREADS "If on, OS threading constructs will be used to perform context switches." ON)
set(SIMPLE_THREADS TRUE)
if(BUILD_OS_SIMPLE_THREADS)
set(OS_SIMPLE_THREADS TRUE)
endif()
else()
unset(BUILD_OS_SIMPLE_THREADS CACHE)
option(BUILD_PIPELINING "If on, compile with pipelined rendering." ON)
if(BUILD_PIPELINING)
message(STATUS "Compilation will include full, pipelined threading support.")
else()
message(STATUS "Compilation will include nonpipelined threading support.")
endif()
endif()
else()
message(STATUS "Configuring Panda without threading support.")
endif()
set(HAVE_POSIX_THREADS FALSE)
if(NOT WIN32)
find_path(PTHREAD_INCLUDE_DIR
NAMES "pthread.h"
PATHS "/usr/include"
)
if(PTHREAD_INCLUDE_DIR)
set(HAVE_POSIX_THREADS TRUE)
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")
mark_as_advanced(PTHREAD_INCLUDE_DIR)
endif()
endif()
### Configure pipelining ###
if(NOT DEFINED BUILD_PIPELINING)
option(BUILD_PIPELINING "If on, compile with pipelined rendering." ON)
endif()
if(BUILD_PIPELINING)
set(DO_PIPELINING TRUE)
endif()
### Configure OS X options ###
if(APPLE)
option(BUILD_UNIVERSIAL_BINARIES "If on, compiling will create universal OS X binaries." ON)
if(BUILD_UNIVERSAL_BINARIES)
message(STATUS "Compilation will create universal binaries.")
set(UNIVERSAL_BINARIES TRUE)
else()
message(STATUS "Compilation will not create universal binaries.")
endif()
endif()
message(STATUS "")
message(STATUS "See dtool_config.h for more details about the specified configuration.\n")
include(CheckIncludeFileCXX)
check_include_file_cxx(io.h PHAVE_IO_H)
check_include_file_cxx(iostream PHAVE_IOSTREAM)
check_include_file_cxx(malloc.h PHAVE_MALLOC_H)
check_include_file_cxx(sys/malloc.h PHAVE_SYS_MALLOC_H)
check_include_file_cxx(alloca.h PHAVE_ALLOCA_H)
check_include_file_cxx(locale.h PHAVE_LOCALE_H)
check_include_file_cxx(string.h PHAVE_STRING_H)
check_include_file_cxx(stdlib.h PHAVE_STDLIB_H)
check_include_file_cxx(limits.h PHAVE_LIMITS_H)
check_include_file_cxx(minmax.h PHAVE_MINMAX_H)
check_include_file_cxx(sstream PHAVE_SSTREAM)
check_include_file_cxx(new PHAVE_NEW)
check_include_file_cxx(sys/types.h PHAVE_SYS_TYPES_H)
check_include_file_cxx(sys/time.h PHAVE_SYS_TIME_H)
check_include_file_cxx(unistd.h PHAVE_UNISTD_H)
check_include_file_cxx(utime.h PHAVE_UTIME_H)
check_include_file_cxx(glob.h PHAVE_GLOB_H)
check_include_file_cxx(dirent.h PHAVE_DIRENT_H)
check_include_file_cxx(drfftw.h PHAVE_DRFFTW_H)
check_include_file_cxx(sys/soundcard.h PHAVE_SYS_SOUNDCARD_H)
check_include_file_cxx(ucontext.h PHAVE_UCONTEXT_H)
check_include_file_cxx(linux/input.h PHAVE_LINUX_INPUT_H)
check_include_file_cxx(stdint.h PHAVE_STDINT_H)
# TODO: Actually check for these, instead of assuming
set(HAVE_NAMESPACE ON)
set(HAVE_LOCKF ON)
set(HAVE_WCHAR_T ON)
set(HAVE_WSTRING ON)
set(HAVE_TYPENAME ON)
set(SIMPLE_STRUCT_POINTERS ON)
set(HAVE_STREAMSIZE ON)
set(HAVE_IOS_TYPEDEFS ON)
if(WIN32)
set(DEFAULT_PATHSEP ";")
else()
set(DEFAULT_PATHSEP ":")
endif()
configure_file(dtool/dtool_config.h.cmake ${CMAKE_BINARY_DIR}/include/dtool_config.h)