message (STATUS "Preparing Include Files.")

configure_file (
 ${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Config/HammerConfig.hh.in
 ${PROJECT_BINARY_DIR}/include/Hammer/Config/HammerConfig.hh
 ESCAPE_QUOTES)

file(GLOB AVAIL_AMPLS LIST_DIRECTORIES FALSE RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Amplitudes" "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Amplitudes/*.hh")
file(GLOB AVAIL_FFS LIST_DIRECTORIES FALSE RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/FormFactors" "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/FormFactors/*.hh")
file(GLOB AVAIL_RATES LIST_DIRECTORIES FALSE RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Rates" "${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Rates/*.hh")

set(HAMMER_AMPLITUDES_INCLUDES "")
set(AMPL_BODY "")
foreach(FNAME ${AVAIL_AMPLS})
    if(NOT (FNAME MATCHES ".*Base\.hh"))
        get_filename_component(FNAME_NOEXT ${FNAME} NAME_WE)
        string(APPEND HAMMER_AMPLITUDES_INCLUDES "#include \"Hammer/Amplitudes/" "${FNAME}" "\"\n")
        string(APPEND AMPL_BODY "        ADD(" "${FNAME_NOEXT}" ", CONT, AmplitudeBase); \\\n")
    endif()
endforeach()

set(HAMMER_FORMFACTORS_INCLUDES "")
set(FF_BODY "")
foreach(FNAME ${AVAIL_FFS})
    if(NOT (FNAME MATCHES ".*Base\.hh"))
        get_filename_component(FNAME_NOEXT ${FNAME} NAME_WE)
        string(APPEND HAMMER_FORMFACTORS_INCLUDES "#include \"Hammer/FormFactors/" "${FNAME}" "\"\n")
        string(APPEND FF_BODY "        ADDV(" "${FNAME_NOEXT}" ", CONT, FormFactorBase); \\\n")
    endif()
endforeach()

set(HAMMER_RATES_INCLUDES "")
set(RATE_BODY "")
foreach(FNAME ${AVAIL_RATES})
    if(NOT (FNAME MATCHES ".*Base\.hh"))
        get_filename_component(FNAME_NOEXT ${FNAME} NAME_WE)
        string(APPEND HAMMER_RATES_INCLUDES "#include \"Hammer/Rates/" "${FNAME}" "\"\n")
        string(APPEND RATE_BODY "        ADD(" "${FNAME_NOEXT}" ", CONT, RateBase); \\\n")
    endif()
endforeach()

configure_file(
 ${CMAKE_CURRENT_SOURCE_DIR}/Hammer/Config/HammerModules.hh.in
 ${PROJECT_BINARY_DIR}/include/Hammer/Config/HammerModules.hh
)
