mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
90 lines
2.9 KiB
CMake
90 lines
2.9 KiB
CMake
if(NOT BUILD_PANDA)
|
|
message(FATAL_ERROR "Cannot build direct without panda! Please enable the BUILD_PANDA option.")
|
|
endif()
|
|
|
|
# Include source directories which have C++ components:
|
|
add_subdirectory(src/dcparse)
|
|
add_subdirectory(src/dcparser)
|
|
add_subdirectory(src/deadrec)
|
|
add_subdirectory(src/directbase)
|
|
#add_subdirectory(src/directd)
|
|
#add_subdirectory(src/directdServer)
|
|
add_subdirectory(src/distributed)
|
|
add_subdirectory(src/interval)
|
|
add_subdirectory(src/motiontrail)
|
|
add_subdirectory(src/showbase)
|
|
|
|
set(P3DIRECT_COMPONENTS
|
|
p3dcparser p3deadrec
|
|
p3interval p3motiontrail p3showbase
|
|
)
|
|
if(HAVE_PYTHON)
|
|
list(APPEND P3DIRECT_COMPONENTS p3distributed)
|
|
endif()
|
|
|
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "DirectDevel")
|
|
add_metalib(p3direct INIT init_libdirect direct.h COMPONENTS ${P3DIRECT_COMPONENTS})
|
|
unset(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
|
|
set_property(TARGET p3direct PROPERTY LINKER_LANGUAGE "CXX")
|
|
|
|
# Installation:
|
|
install(TARGETS p3direct
|
|
EXPORT Direct COMPONENT Direct
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
ARCHIVE COMPONENT DirectDevel)
|
|
|
|
if(HAVE_PYTHON)
|
|
# Now for the Python side of everything
|
|
|
|
add_python_module(panda3d.direct
|
|
p3dcparser p3deadrec p3distributed p3interval
|
|
p3motiontrail p3showbase LINK p3direct IMPORT panda3d.core COMPONENT Direct)
|
|
|
|
# Copy Python source files into the build directory
|
|
install_python_package(direct SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src" LIB COMPONENT Direct)
|
|
|
|
# This bit is to generate the 'pandac' compatibility shim. It's deprecated now,
|
|
# but in older versions of Panda3D, one would use
|
|
# from pandac.PandaModules import *
|
|
# instead of
|
|
# from panda3d.FOO import *
|
|
# Generate PandaModules:
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/pandac/PandaModules.py"
|
|
"\"This module is deprecated. Import from panda3d.core and other panda3d.* modules instead.\"
|
|
|
|
if __debug__:
|
|
print(\"Warning: pandac.PandaModules is deprecated, import from panda3d.core instead\")\n")
|
|
|
|
foreach(module ${ALL_INTERROGATE_MODULES})
|
|
string(REGEX REPLACE "^.*\\." "" module_name "${module}")
|
|
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/pandac/PandaModules.py" "
|
|
try:
|
|
from ${module} import *
|
|
except ImportError as err:
|
|
if not (\"No module named\" in str(err) and \"${module_name}\" in str(err)):
|
|
raise
|
|
")
|
|
endforeach()
|
|
|
|
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/pandac/PandaModules.py"
|
|
"from direct.showbase import DConfig
|
|
|
|
def get_config_showbase():
|
|
return DConfig
|
|
|
|
def get_config_express():
|
|
return DConfig
|
|
|
|
getConfigShowbase = get_config_showbase
|
|
getConfigExpress = get_config_express
|
|
")
|
|
|
|
# Now install ourselves:
|
|
install_python_package(pandac SOURCE "${CMAKE_CURRENT_BINARY_DIR}/pandac" LIB COMPONENT Direct)
|
|
endif()
|
|
|
|
# "Direct" component contains both the Python stuff and the non-Python stuff,
|
|
# because direct has a pretty solid dependency on Python.
|
|
export_targets(Direct NAMESPACE "Panda3D::Direct::" COMPONENT DirectDevel)
|