FILE(GLOB PYROL_SRC "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
MESSAGE("PYROL_SRC = ${PYROL_SRC}")
FILE(COPY ${PYROL_SRC} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

MESSAGE("CMAKE_CURRENT_BINARY_DIR = ${CMAKE_CURRENT_BINARY_DIR}")

# file(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/../binder/pyrol.sources BINDER_SRCS)
list(TRANSFORM BINDER_SRCS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/../binder/")
list(APPEND PYROL_SRC ${BINDER_SRCS})

list(APPEND PYROL_SRC ${CMAKE_CURRENT_BINARY_DIR}/../binder/pyrol.cpp)

IF(NOT PYROL_USE_ONE_FILE)
  MATH(EXPR NUMBER_FILE "${PYROL_BINDER_NUM_FILES}")

  foreach(index RANGE 0 ${NUMBER_FILE})
    list(APPEND PYROL_SRC ${CMAKE_CURRENT_BINARY_DIR}/../binder/pyrol_${index}.cpp)
  endforeach()

  MATH(EXPR NUMBER_FILE "${NUMBER_FILE}+1")

  EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}"
    -D "NUMBER_FILE=${NUMBER_FILE}"
    -P "${CMAKE_CURRENT_SOURCE_DIR}/checkNumberFiles.cmake"
    RESULT_VARIABLE STATUS
    OUTPUT_VARIABLE OUTPUT_CHECKNUMBERFILES
  )

  if(STATUS AND NOT STATUS EQUAL 0)
    message("${OUTPUT_CHECKNUMBERFILES}")
    message(FATAL_ERROR "checkNumberFiles FAILED: ${STATUS}")
  endif()
ENDIF()

MESSAGE("PYROL_SRC with Binder = ${PYROL_SRC}")

pybind11_add_module(pyrol ${PYROL_SRC})
target_include_directories(pyrol PUBLIC ${Mpi4Py_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../binder "$<BUILD_INTERFACE:${ROL_all_include_dirs}>")
target_compile_features(pyrol PUBLIC cxx_std_14)

foreach(depPkg IN LISTS ROL_LIB_ENABLED_DEPENDENCIES)
    target_link_libraries(pyrol PUBLIC ${depPkg}::all_libs)
endforeach()
target_link_libraries(pyrol PUBLIC ${Trilinos_EXTRA_LINK_FLAGS})
set_target_properties(pyrol PROPERTIES SUFFIX ".so")

INSTALL(TARGETS pyrol
  DESTINATION ${PyROL_INSTALL_DIR})

add_custom_command(TARGET pyrol POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/pyrol.so ${CMAKE_CURRENT_BINARY_DIR}/../pyrol/.
    COMMENT "Copy ${PROJECT_BINARY_DIR}/src/pyrol.so"
)
