Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 40 additions & 7 deletions src/fpm_compiler.F90
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
! PGI pgfortran pgcc -module -I -mp X
! NVIDIA nvfortran nvc -module -I -mp X
! LLVM flang flang clang -module-dir -I -fopenmp X
! AMD flang amdflang amdclang -module-dir -I -fopenmp X
! LFortran lfortran --- -J -I --openmp X
! Lahey/Futjitsu lfc ? -M -I -openmp ?
! NAG nagfor ? -mdir -I -openmp x
Expand Down Expand Up @@ -73,6 +74,7 @@ module fpm_compiler
id_nag, &
id_flang_classic, &
id_flang, &
id_amdflang, &
id_f18, &
id_ibmxl, &
id_cray, &
Expand Down Expand Up @@ -302,7 +304,7 @@ function get_default_flags(self, release) result(flags)
! Append position-independent code (PIC) flag, that is necessary
! building shared libraries
select case (self%id)
case (id_gcc, id_f95, id_caf, id_flang_classic, id_f18, id_lfortran, &
case (id_gcc, id_f95, id_caf, id_flang_classic, id_amdflang, id_f18, id_lfortran, &
id_intel_classic_nix, id_intel_classic_mac, id_intel_llvm_nix, &
id_intel_llvm_unknown, id_pgi, id_nvhpc, id_nag, id_cray, id_ibmxl)
pic_flag = " -fPIC"
Expand Down Expand Up @@ -421,6 +423,11 @@ subroutine get_release_compile_flags(id, flags)
flag_lfortran_opt

case(id_flang)
flags = &
flag_flang_opt//&

flag_flang_pic
case(id_amdflang)
flags = &
flag_flang_opt//&
flag_flang_pic
Expand Down Expand Up @@ -526,6 +533,11 @@ subroutine get_debug_compile_flags(id, flags)
flag_flang_debug//&
flag_flang_pic

case(id_amdflang)
flags = &
flag_flang_debug//&
flag_flang_pic

end select
end subroutine get_debug_compile_flags

Expand All @@ -538,7 +550,7 @@ pure subroutine set_cpp_preprocessor_flags(id, flags)
select case(id)
case default
flag_cpp_preprocessor = ""
case(id_caf, id_gcc, id_f95, id_nvhpc, id_flang)
case(id_caf, id_gcc, id_f95, id_nvhpc, id_flang, id_amdflang)
flag_cpp_preprocessor = "-cpp"
case(id_intel_classic_windows, id_intel_llvm_windows)
flag_cpp_preprocessor = "/fpp"
Expand Down Expand Up @@ -633,7 +645,7 @@ function get_include_flag(self, path) result(flags)
flags = "-I "//path

case(id_caf, id_gcc, id_f95, id_cray, id_nvhpc, id_pgi, &
& id_flang_classic, id_flang, id_f18, &
& id_flang_classic, id_flang, id_amdflang, id_f18, &
& id_intel_classic_nix, id_intel_classic_mac, &
& id_intel_llvm_nix, id_lahey, id_nag, id_ibmxl, &
& id_lfortran)
Expand All @@ -660,7 +672,7 @@ function get_module_flag(self, path) result(flags)
case(id_nvhpc, id_pgi, id_flang_classic)
flags = "-module "//path

case(id_flang, id_f18)
case(id_flang, id_f18, id_amdflang)
flags = "-module-dir "//path

case(id_intel_classic_nix, id_intel_classic_mac, &
Expand Down Expand Up @@ -691,7 +703,7 @@ function get_shared_flag(self) result(shared_flag)
select case (self%id)
case default
shared_flag = "-shared"
case (id_gcc, id_f95, id_flang, id_flang_classic, id_lfortran)
case (id_gcc, id_f95, id_flang, id_amdflang, id_flang_classic, id_lfortran)
shared_flag = "-shared"
case (id_intel_classic_nix, id_intel_llvm_nix, id_pgi, id_nvhpc)
shared_flag = "-shared"
Expand Down Expand Up @@ -729,6 +741,9 @@ function get_feature_flag(self, feature) result(flags)
case(id_flang)
flags = flag_flang_no_implicit_typing

case(id_amdflang)
flags = flag_flang_no_implicit_typing

end select

case("implicit-typing")
Expand Down Expand Up @@ -780,6 +795,9 @@ function get_feature_flag(self, feature) result(flags)
case(id_flang)
flags = flag_flang_free_form

case(id_amdflang)
flags = flag_flang_free_form

end select

case("fixed-form")
Expand Down Expand Up @@ -809,6 +827,9 @@ function get_feature_flag(self, feature) result(flags)
case(id_flang)
flags = flag_flang_fixed_form

case(id_amdflang)
flags = flag_flang_fixed_form

end select

case("default-form")
Expand Down Expand Up @@ -878,7 +899,7 @@ subroutine get_default_c_compiler(f_compiler, c_compiler)
case(id_intel_llvm_nix,id_intel_llvm_windows)
c_compiler = 'icx'

case(id_flang_classic, id_flang, id_f18)
case(id_flang_classic, id_flang, id_f18 )
c_compiler='clang'

case(id_ibmxl)
Expand All @@ -890,6 +911,9 @@ subroutine get_default_c_compiler(f_compiler, c_compiler)
case(id_gcc)
c_compiler = 'gcc'

case(id_amdflang)
c_compiler = 'amdclang'

case default
! Fall-back to using Fortran compiler
c_compiler = f_compiler
Expand All @@ -916,6 +940,9 @@ subroutine get_default_cxx_compiler(f_compiler, cxx_compiler)
case(id_flang_classic, id_flang, id_f18)
cxx_compiler='clang++'

case(id_amdflang)
cxx_compiler='amdclang++'

case(id_ibmxl)
cxx_compiler='xlc++'

Expand Down Expand Up @@ -1077,6 +1104,11 @@ function match_compiler_type(compiler) result(id)
return
end if

if (check_compiler(compiler, "amdflang")) then
id = id_amdflang
return
end if

if (check_compiler(compiler, "f18")) then
id = id_f18
return
Expand Down Expand Up @@ -1127,7 +1159,7 @@ pure elemental subroutine validate_compiler_name(compiler_name, is_valid)

select case (lname)
case("gfortran", "ifort", "ifx", "pgfortran", &
"nvfortran", "flang", "caf", &
"nvfortran", "flang", "amdflang", "caf", &
"f95", "lfortran", "lfc", "nagfor",&
"crayftn", "xlf90", "ftn95", "all")
is_valid = .true.
Expand Down Expand Up @@ -1863,6 +1895,7 @@ pure function compiler_id_name(id) result(name)
case(id_nag); name = "nagfor"
case(id_flang_classic); name = "flang-classic"
case(id_flang); name = "flang"
case(id_amdflang); name = "amdflang"
case(id_f18); name = "f18"
case(id_ibmxl); name = "xlf90"
case(id_cray); name = "crayftn"
Expand Down