# - 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")

