set(CMAKE_INCLUDE_CURRENT_DIR ON)

target_sources(xcfun
  PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/aliases.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/apbec.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/apbex.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/b97-1xc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/b97-2xc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/b97xc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/beckex.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/blocx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/brx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/btk.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/common_parameters.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/cs.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ktx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/lb94.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ldaerfc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ldaerfc_jt.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ldaerfx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/lypc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m05c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m05x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m05x2c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m05x2x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06hfc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06hfx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06lc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06lx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06x2c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/m06x2x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/optx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/optxcorr.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/p86c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbec.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbeintc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbeintx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbelocc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbesolx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pbex.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pw86x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pw91c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pw91k.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pw91x.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pw92c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/pz81c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/revpbex.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/revtpssc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/revtpssx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rpbex.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rSCANc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rSCANx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/r2SCANc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/r2SCANx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/r4SCANc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/r4SCANx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rppSCANc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/rppSCANx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SCANc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SCANx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/slaterx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/spbec.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/tfk.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/tpssc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/tpsslocc.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/tpssx.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/tw.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/vonw.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/vwn3.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/vwn5c.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/zvpbeint.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/zvpbesolc.cpp
  )

list(APPEND functionals_headers
    b97c.hpp
    b97x.hpp
    b97xc.hpp
    constants.hpp
    list_of_functionals.hpp
    m0xy_fun.hpp
    pbec_eps.hpp
    pbex.hpp
    pw92eps.hpp
    pw9xx.hpp
    pz81c.hpp
    revtpssc_eps.hpp
    revtpssx_eps.hpp
    slater.hpp
    SCAN_like_eps.hpp
    tpssc_eps.hpp
    tpssx_eps.hpp
    vwn.hpp
  )
foreach(header IN LISTS functionals_headers)
  install(
    FILES
      ${header}
    DESTINATION
      ${CMAKE_INSTALL_INCLUDEDIR}/XCFun/functionals
    )
endforeach()
