Files
geant4/environments/g4py/source/CMakeLists.txt
T
2020-05-29 14:54:29 +02:00

62 lines
2.0 KiB
CMake

# - add libs components
# Private interface library to help Boost.Python usage
add_library(pyG4Boost INTERFACE)
target_include_directories(pyG4Boost INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/boost")
# Core Geant4 bindings
add_subdirectory(global)
add_subdirectory(interface)
add_subdirectory(intercoms)
add_subdirectory(run)
add_subdirectory(event)
add_subdirectory(tracking)
add_subdirectory(track)
add_subdirectory(geometry)
add_subdirectory(materials)
add_subdirectory(particles)
add_subdirectory(processes)
add_subdirectory(digits_hits)
add_subdirectory(visualization)
add_subdirectory(graphics_reps)
add_subdirectory(physics_lists)
# Only if GDML
if(GEANT4_USE_GDML)
add_subdirectory(gdml)
endif()
# Pure Python Geant4 extensions
set(GEANT4_PYTHON_MODULES
__init__.py
colortable.py
g4thread.py
g4viscp.py
hepunit.py)
set(GEANT4_PYTHON_BYTECOMPILE_INPUT)
set(GEANT4_PYTHON_BYTECOMPILE_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__pycache__")
foreach(_pymod ${GEANT4_PYTHON_MODULES})
# Generate used to support testing and multimode so .py/pyc files are in the
# same place as the output extensions
file(GENERATE
OUTPUT ${GEANT4_PYTHON_OUTPUT_DIR}/Geant4/${_pymod}
INPUT ${CMAKE_CURRENT_SOURCE_DIR}/${_pymod})
# Configure module for byte-compilation at install time
# We do this locally because add_custom_command cannot use genexes in
# its OUTPUT command
configure_file(${_pymod} ${CMAKE_CURRENT_BINARY_DIR}/${_pymod} COPYONLY)
list(APPEND GEANT4_PYTHON_BYTECOMPILE_INPUT ${CMAKE_CURRENT_BINARY_DIR}/${_pymod})
endforeach()
add_custom_command(
OUTPUT "${GEANT4_PYTHON_BYTECOMPILE_OUTPUT}"
COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${GEANT4_PYTHON_BYTECOMPILE_INPUT}
COMMENT "Byte-compiling Geant4 .py modules")
add_custom_target(pyG4ByteCompile ALL DEPENDS "${GEANT4_PYTHON_BYTECOMPILE_OUTPUT}")
install(FILES ${GEANT4_PYTHON_BYTECOMPILE_INPUT} DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
install(DIRECTORY ${GEANT4_PYTHON_BYTECOMPILE_OUTPUT} DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")