1111! PGI pgfortran pgcc -module -I -mp X
1212! NVIDIA nvfortran nvc -module -I -mp X
1313! LLVM flang flang clang -module-dir -I -fopenmp X
14+ ! AMD flang amdflang amdclang -module-dir -I -fopenmp X
1415! LFortran lfortran --- -J -I --openmp X
1516! Lahey/Futjitsu lfc ? -M -I -openmp ?
1617! NAG nagfor ? -mdir -I -openmp x
@@ -73,6 +74,7 @@ module fpm_compiler
7374 id_nag, &
7475 id_flang_classic, &
7576 id_flang, &
77+ id_amdflang, &
7678 id_f18, &
7779 id_ibmxl, &
7880 id_cray, &
@@ -302,7 +304,7 @@ function get_default_flags(self, release) result(flags)
302304 ! Append position-independent code (PIC) flag, that is necessary
303305 ! building shared libraries
304306 select case (self% id)
305- case (id_gcc, id_f95, id_caf, id_flang_classic, id_f18, id_lfortran, &
307+ case (id_gcc, id_f95, id_caf, id_flang_classic, id_amdflang, id_f18, id_lfortran, &
306308 id_intel_classic_nix, id_intel_classic_mac, id_intel_llvm_nix, &
307309 id_intel_llvm_unknown, id_pgi, id_nvhpc, id_nag, id_cray, id_ibmxl)
308310 pic_flag = " -fPIC"
@@ -421,6 +423,11 @@ subroutine get_release_compile_flags(id, flags)
421423 flag_lfortran_opt
422424
423425 case (id_flang)
426+ flags = &
427+ flag_flang_opt// &
428+
429+ flag_flang_pic
430+ case (id_amdflang)
424431 flags = &
425432 flag_flang_opt// &
426433 flag_flang_pic
@@ -526,6 +533,11 @@ subroutine get_debug_compile_flags(id, flags)
526533 flag_flang_debug// &
527534 flag_flang_pic
528535
536+ case (id_amdflang)
537+ flags = &
538+ flag_flang_debug// &
539+ flag_flang_pic
540+
529541 end select
530542end subroutine get_debug_compile_flags
531543
@@ -538,7 +550,7 @@ pure subroutine set_cpp_preprocessor_flags(id, flags)
538550 select case (id)
539551 case default
540552 flag_cpp_preprocessor = " "
541- case (id_caf, id_gcc, id_f95, id_nvhpc, id_flang)
553+ case (id_caf, id_gcc, id_f95, id_nvhpc, id_flang, id_amdflang )
542554 flag_cpp_preprocessor = " -cpp"
543555 case (id_intel_classic_windows, id_intel_llvm_windows)
544556 flag_cpp_preprocessor = " /fpp"
@@ -633,7 +645,7 @@ function get_include_flag(self, path) result(flags)
633645 flags = " -I " // path
634646
635647 case (id_caf, id_gcc, id_f95, id_cray, id_nvhpc, id_pgi, &
636- & id_flang_classic, id_flang, id_f18, &
648+ & id_flang_classic, id_flang, id_amdflang, id_f18, &
637649 & id_intel_classic_nix, id_intel_classic_mac, &
638650 & id_intel_llvm_nix, id_lahey, id_nag, id_ibmxl, &
639651 & id_lfortran)
@@ -660,7 +672,7 @@ function get_module_flag(self, path) result(flags)
660672 case (id_nvhpc, id_pgi, id_flang_classic)
661673 flags = " -module " // path
662674
663- case (id_flang, id_f18)
675+ case (id_flang, id_f18, id_amdflang )
664676 flags = " -module-dir " // path
665677
666678 case (id_intel_classic_nix, id_intel_classic_mac, &
@@ -691,7 +703,7 @@ function get_shared_flag(self) result(shared_flag)
691703 select case (self% id)
692704 case default
693705 shared_flag = " -shared"
694- case (id_gcc, id_f95, id_flang, id_flang_classic, id_lfortran)
706+ case (id_gcc, id_f95, id_flang, id_amdflang, id_flang_classic, id_lfortran)
695707 shared_flag = " -shared"
696708 case (id_intel_classic_nix, id_intel_llvm_nix, id_pgi, id_nvhpc)
697709 shared_flag = " -shared"
@@ -729,6 +741,9 @@ function get_feature_flag(self, feature) result(flags)
729741 case (id_flang)
730742 flags = flag_flang_no_implicit_typing
731743
744+ case (id_amdflang)
745+ flags = flag_flang_no_implicit_typing
746+
732747 end select
733748
734749 case (" implicit-typing" )
@@ -780,6 +795,9 @@ function get_feature_flag(self, feature) result(flags)
780795 case (id_flang)
781796 flags = flag_flang_free_form
782797
798+ case (id_amdflang)
799+ flags = flag_flang_free_form
800+
783801 end select
784802
785803 case (" fixed-form" )
@@ -809,6 +827,9 @@ function get_feature_flag(self, feature) result(flags)
809827 case (id_flang)
810828 flags = flag_flang_fixed_form
811829
830+ case (id_amdflang)
831+ flags = flag_flang_fixed_form
832+
812833 end select
813834
814835 case (" default-form" )
@@ -878,7 +899,7 @@ subroutine get_default_c_compiler(f_compiler, c_compiler)
878899 case (id_intel_llvm_nix,id_intel_llvm_windows)
879900 c_compiler = ' icx'
880901
881- case (id_flang_classic, id_flang, id_f18)
902+ case (id_flang_classic, id_flang, id_f18 )
882903 c_compiler= ' clang'
883904
884905 case (id_ibmxl)
@@ -890,6 +911,9 @@ subroutine get_default_c_compiler(f_compiler, c_compiler)
890911 case (id_gcc)
891912 c_compiler = ' gcc'
892913
914+ case (id_amdflang)
915+ c_compiler = ' amdclang'
916+
893917 case default
894918 ! Fall-back to using Fortran compiler
895919 c_compiler = f_compiler
@@ -916,6 +940,9 @@ subroutine get_default_cxx_compiler(f_compiler, cxx_compiler)
916940 case (id_flang_classic, id_flang, id_f18)
917941 cxx_compiler= ' clang++'
918942
943+ case (id_amdflang)
944+ cxx_compiler= ' amdclang++'
945+
919946 case (id_ibmxl)
920947 cxx_compiler= ' xlc++'
921948
@@ -1077,6 +1104,11 @@ function match_compiler_type(compiler) result(id)
10771104 return
10781105 end if
10791106
1107+ if (check_compiler(compiler, " amdflang" )) then
1108+ id = id_amdflang
1109+ return
1110+ end if
1111+
10801112 if (check_compiler(compiler, " f18" )) then
10811113 id = id_f18
10821114 return
@@ -1127,7 +1159,7 @@ pure elemental subroutine validate_compiler_name(compiler_name, is_valid)
11271159
11281160 select case (lname)
11291161 case (" gfortran" , " ifort" , " ifx" , " pgfortran" , &
1130- " nvfortran" , " flang" , " caf" , &
1162+ " nvfortran" , " flang" , " amdflang " , " caf" , &
11311163 " f95" , " lfortran" , " lfc" , " nagfor" ,&
11321164 " crayftn" , " xlf90" , " ftn95" , " all" )
11331165 is_valid = .true.
@@ -1863,6 +1895,7 @@ pure function compiler_id_name(id) result(name)
18631895 case (id_nag); name = " nagfor"
18641896 case (id_flang_classic); name = " flang-classic"
18651897 case (id_flang); name = " flang"
1898+ case (id_amdflang); name = " amdflang"
18661899 case (id_f18); name = " f18"
18671900 case (id_ibmxl); name = " xlf90"
18681901 case (id_cray); name = " crayftn"
0 commit comments