# ---- Create target for lisabeta_lalsuite ----

# First, use python call to locate lalsuite installation
execute_process(
    COMMAND ${Python_EXECUTABLE} -c
    "import lisabeta_lalsuite; import pathlib; print(pathlib.Path(lisabeta_lalsuite.__file__).parent)"
    OUTPUT_VARIABLE LISABETA_LALSUITE_PATH
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

# Create a static library target for lisabeta_lalsuite
add_library(lisabeta_lalsuite INTERFACE)
target_include_directories(lisabeta_lalsuite INTERFACE "${LISABETA_LALSUITE_PATH}")
target_include_directories(lisabeta_lalsuite INTERFACE "${LISABETA_BASE_SRC_DIR}")
target_include_directories(lisabeta_lalsuite INTERFACE "${LISABETA_BASE_SRC_DIR}/struct")
target_include_directories(lisabeta_lalsuite INTERFACE "${LISABETA_BASE_SRC_DIR}/tools")
target_link_libraries(lisabeta_lalsuite INTERFACE lisabeta_struct_pystruct_base lisabeta_tools_pytools_base)


# -- lisabeta.waveforms.bbh.pyIMRPhenomD --

set(import_path "lisabeta/waveforms/bbh")
set(import_name "pyIMRPhenomD")
set(supplementary_sources
        "${LISABETA_LALSUITE_PATH}/IMRPhenomD.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomD_internals.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomUtils.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomInternalUtils.c"
) 
set(supplementary_links "lisabeta_lalsuite")

define_lisabeta_extension(
    ${import_path} ${import_name} ${pyx_filename}
    "${supplementary_sources}" "${supplementary_links}")

# -- lisabeta.waveforms.bbh.pyIMRPhenomHM --

set(import_path "lisabeta/waveforms/bbh")
set(import_name "pyIMRPhenomHM")
set(supplementary_sources
        "${LISABETA_LALSUITE_PATH}/IMRPhenomHM.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomD_internals.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomUtils.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomInternalUtils.c"
        "${LISABETA_LALSUITE_PATH}/IMRPhenomUtils.c"
        "${LISABETA_LALSUITE_PATH}/RingdownCW.c"
) 
set(supplementary_links "lisabeta_lalsuite")

define_lisabeta_extension(
    ${import_path} ${import_name} ${pyx_filename}
    "${supplementary_sources}" "${supplementary_links}")

# -- lisabeta.waveforms.bbh.pyIMRPhenomX --

set(import_path "lisabeta/waveforms/bbh")
set(import_name "pyIMRPhenomX")
set(supplementary_sources
      "${LISABETA_LALSUITE_PATH}/IMRPhenomX.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXUtilities.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomX_qnm.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomX_inspiral.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomX_intermediate.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomX_ringdown.c"
) 
set(supplementary_links "lisabeta_lalsuite")

define_lisabeta_extension(
    ${import_path} ${import_name} ${pyx_filename}
    "${supplementary_sources}" "${supplementary_links}")

    # -- lisabeta.waveforms.bbh.pyIMRPhenomXHM --

set(import_path "lisabeta/waveforms/bbh")
set(import_name "pyIMRPhenomXHM")
set(supplementary_sources
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXHM.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXHM_qnm.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXHM_intermediate.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXHM_inspiral.c"
      "${LISABETA_LALSUITE_PATH}/IMRPhenomXHM_ringdown.c"
) 
set(supplementary_links "lisabeta_lalsuite")

define_lisabeta_extension(
    ${import_path} ${import_name} ${pyx_filename}
    "${supplementary_sources}" "${supplementary_links}")

# -- lisabeta.waveforms.bbh.pyEOBNRv2HMROM --

set(import_path "lisabeta/waveforms/bbh")
set(import_name "pyEOBNRv2HMROM")
set(supplementary_sources
      "${LISABETA_LALSUITE_PATH}/EOBNRv2HMROM.c"
      "${LISABETA_LALSUITE_PATH}/EOBNRv2HMROMstruct.c"
) 
set(supplementary_links "lisabeta_lalsuite")

define_lisabeta_extension(
    ${import_path} ${import_name} ${pyx_filename}
    "${supplementary_sources}" "${supplementary_links}")
