| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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)
|