Files_and_Targets.txt 4.6 KB
Newer Older
1 2 3 4
include_directories(include)

set(fleur_F90 main/fleur.F90)
set(fleur_F77 "")
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
include(eigen/CMakeLists.txt)
include(force/CMakeLists.txt)
include(main/CMakeLists.txt)
include(core/CMakeLists.txt)
include(eigen_secvar/CMakeLists.txt)
include(global/CMakeLists.txt)
include(io/CMakeLists.txt)
include(optional/CMakeLists.txt)
include(xc-pot/CMakeLists.txt)
include(cdn/CMakeLists.txt)
include(diagonalization/CMakeLists.txt)
include(eigen_soc/CMakeLists.txt)
include(juDFT/CMakeLists.txt)
include(math/CMakeLists.txt)
include(orbdep/CMakeLists.txt)
include(cdn_mt/CMakeLists.txt)
include(dos/CMakeLists.txt)
include(fermi/CMakeLists.txt)
include(init/CMakeLists.txt)
include(ldau/CMakeLists.txt)
include(mix/CMakeLists.txt)
include(vgen/CMakeLists.txt)
27 28

if (${Fleur_uses_MPI})
29
  include(mpi/CMakeLists.txt)
30 31
endif()

32
#include(wannier/CMakeLists.txt)
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120

set(inpgen_F77 
global/constants.f inpgen/element.f inpgen/atom_input.f inpgen/crystal.f inpgen/lattice2.f inpgen/setab.f inpgen/super_check.f
inpgen/atom_sym.f inpgen/generator.f inpgen/read_record.f inpgen/soc_or_ssdw.f inpgen/symproperties.f
inpgen/bravais_symm.f  inpgen/set_atom_core.f inpgen/spg_gen.f global/triang.f
inpgen/closure.f inpgen/lapw_input.f  inpgen/struct_input.f inpgen/write_struct.f
 global/hybridmix.f  io/calculator.f global/ss_sym.f global/soc_sym.f math/inv3.f  io/rw_symfile.f
)

set(inpgen_F90  io/xsf_io.f90
global/types.F90 global/enpara.f90 global/chkmt.f90 inpgen/inpgen.f90 inpgen/set_inp.f90 io/rw_inp.f90)

set(fleur_SRC ${fleur_F90} ${fleur_F77})

set_source_files_properties(${fleur_F90} PROPERTIES Fortran_FORMAT FREE)
set_source_files_properties(${fleur_F77} PROPERTIES Fortran_FORMAT FIXED)
set_source_files_properties(${inpgen_F90} PROPERTIES Fortran_FORMAT FREE)
set_source_files_properties(${inpgen_F77} PROPERTIES Fortran_FORMAT FIXED)

if (${Fleur_uses_serial})
#Serial executables
add_executable(fleur ${fleur_SRC} ${c_files})
target_link_libraries(fleur ${HDF5_LIBS} ${LAPACK_LIBS})
set_target_properties(fleur PROPERTIES Fortran_MODULE_DIRECTORY fleur_modules COMPILE_OPTIONS -Ifleur_modules)

add_executable(fleur_INVS ${fleur_SRC})
target_link_libraries(fleur_INVS ${HDF5_LIBS} ${LAPACK_LIBS})
target_compile_definitions(fleur_INVS PUBLIC -DCPP_INVERSION)
set_target_properties(fleur_INVS PROPERTIES Fortran_MODULE_DIRECTORY fleur_INVS_modules COMPILE_OPTIONS -Ifleur_INVS_modules)

add_executable(fleur_SOC ${fleur_SRC})
target_link_libraries(fleur_SOC ${HDF5_LIBS} ${LAPACK_LIBS})
target_compile_definitions(fleur_SOC PUBLIC -DCPP_SOC)
set_target_properties(fleur_SOC PROPERTIES Fortran_MODULE_DIRECTORY fleur_SOC_modules COMPILE_OPTIONS -Ifleur_SOC_modules)

endif()
#parallel executables
if(${Fleur_uses_MPI})
  #Preprocessor switches
  if (${Fleur_uses_ELEMENTAL})
    set(MPI_DEFINITIONS -DCPP_EVP -DCPP_ELEMENTAL)
  endif()
  if (${Fleur_uses_SCALAPACK})
    set(MPI_DEFINITIONS -DCPP_EVP)
  endif()
  if (${Fleur_uses_ELPA})
    set(MPI_DEFINITIONS -DCPP_ELPA -DCPP_ELPA2 -DCPP_EVP)
  endif()
  set(MPI_DEFINITIONS -DCPP_MPI ${MPI_DEFINITIONS})

  #fleur_MPI
  add_executable(fleur_MPI ${juDFT_HDF} ${juDFT_SRC_F90} ${fleur_SRC}
${fleur_SRC_MPI})
  target_compile_definitions(fleur_MPI PUBLIC ${MPI_DEFINITIONS})
  target_link_libraries(fleur_MPI ${HDF5_LIBS} ${LAPACK_LIBS})
  set_target_properties(fleur_MPI PROPERTIES Fortran_MODULE_DIRECTORY fleur_MPI_modules COMPILE_OPTIONS -Ifleur_MPI_modules)

  #fleur_INVS_MPI
  add_executable(fleur_INVS_MPI ${juDFT_HDF} ${juDFT_SRC_F90} ${fleur_SRC}
${fleur_SRC_MPI})
  target_link_libraries(fleur_INVS_MPI ${HDF5_LIBS} ${LAPACK_LIBS})
  target_compile_definitions(fleur_INVS_MPI PUBLIC ${MPI_DEFINITIONS} -DCPP_INVERSION)
  set_target_properties(fleur_INVS_MPI PROPERTIES Fortran_MODULE_DIRECTORY fleur_INVS_MPI_modules COMPILE_OPTIONS -Ifleur_INVS_MPI_modules)

  #fleur_SOC_MPI
  add_executable(fleur_SOC_MPI ${juDFT_HDF} ${juDFT_SRC_F90} ${fleur_SRC}
${fleur_SRC_MPI})
  target_link_libraries(fleur_SOC_MPI ${HDF5_LIBS} ${LAPACK_LIBS})
  target_compile_definitions(fleur_SOC_MPI PUBLIC ${MPI_DEFINITIONS} -DCPP_SOC)
  set_target_properties(fleur_SOC_MPI PROPERTIES Fortran_MODULE_DIRECTORY fleur_SOC_MPI_modules COMPILE_OPTIONS -Ifleur_SOC_MPI_modules)

endif ()

#inpgen executable
add_executable(inpgen ${inpgen_F77} ${inpgen_F90} ${juDFT_SRC_F90})
set_target_properties(inpgen PROPERTIES Fortran_MODULE_DIRECTORY inpgen_modules COMPILE_OPTIONS -Iinpgen_modules)


if (${Fleur_uses_serial})        
install(TARGETS fleur fleur_INVS fleur_SOC 
        CONFIGURATIONS Release
        DESTINATION bin)
endif()
if (${Fleur_uses_MPI})        
install(TARGETS fleur_MPI fleur_INVS_MPI fleur_SOC_MPI
        CONFIGURATIONS Release
        DESTINATION bin)
endif()