include_directories(include) set(c_filesInpgen io/xml/inputSchema.h io/xml/dropInputSchema.c) set(c_filesFleur io/xml/inputSchema.h io/xml/dropInputSchema.c io/xml/xmlInterfaceWrapper.c) set(fleur_F90 main/fleur.F90) set(fleur_F77 "") 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) include(inpgen/CMakeLists.txt) if (${Fleur_uses_MPI}) include(mpi/CMakeLists.txt) endif() #include(wannier/CMakeLists.txt) 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 global/sort.f init/kptgen_hybrid.f init/od_kptsgen.f init/bravais.f init/divi.f init/brzone.f init/kptmop.f init/kpttet.f init/bandstr1.F init/ordstar.f init/fulstar.f init/kprep.f init/tetcon.f init/kvecon.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 juDFT/juDFT.F90 juDFT/stop.F90 juDFT/time.F90 juDFT/init.F90 io/w_inpXML.f90 init/julia.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_filesFleur}) 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} ${c_filesFleur}) 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} ${c_filesFleur}) 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 ${MPI_DEFINITION} -DCPP_ELEMENTAL) endif() if (${Fleur_uses_SCALAPACK}) set(MPI_DEFINITIONS ${MPI_DEFINITION} -DCPP_SCALAPACK ) endif() if (${Fleur_uses_ELPA}) set(MPI_DEFINITIONS ${MPI_DEFINITION} -DCPP_ELPA -DCPP_ELPA2 ) endif() set(MPI_DEFINITIONS -DCPP_MPI -DCPP_EVP ${MPI_DEFINITIONS}) #fleur_MPI add_executable(fleur_MPI ${juDFT_HDF} ${juDFT_SRC_F90} ${fleur_SRC} ${c_filesFleur} ${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} ${c_filesFleur} ${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} ${c_filesFleur} ${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} ${c_filesInpgen}) 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()