Skip to content

Commit 418a040

Browse files
authored
feat: make flang-new a first-class citizen in fpm (#1174)
2 parents 4c52f46 + fd6f2ba commit 418a040

File tree

2 files changed

+50
-19
lines changed

2 files changed

+50
-19
lines changed

src/fpm_compiler.F90

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
! Intel oneAPI ifx icx -module -I -qopenmp X
1111
! PGI pgfortran pgcc -module -I -mp X
1212
! NVIDIA nvfortran nvc -module -I -mp X
13-
! LLVM flang flang clang -module -I -mp X
13+
! LLVM flang flang clang -module-dir -I -fopenmp X
1414
! LFortran lfortran --- -J -I --openmp X
1515
! Lahey/Futjitsu lfc ? -M -I -openmp ?
1616
! NAG nagfor ? -mdir -I -openmp x
@@ -69,8 +69,8 @@ module fpm_compiler
6969
id_pgi, &
7070
id_nvhpc, &
7171
id_nag, &
72+
id_flang_classic, &
7273
id_flang, &
73-
id_flang_new, &
7474
id_f18, &
7575
id_ibmxl, &
7676
id_cray, &
@@ -273,7 +273,13 @@ module fpm_compiler
273273
flag_cray_free_form = " -ffree"
274274

275275
character(*), parameter :: &
276-
flag_flang_new_openmp = " -fopenmp"
276+
flag_flang_new_openmp = " -fopenmp", &
277+
flag_flang_new_debug = " -g", &
278+
flag_flang_new_opt = " -O3", &
279+
flag_flang_new_pic = " -fPIC", &
280+
flag_flang_new_free_form = " -ffree-form", &
281+
flag_flang_new_fixed_form = " -ffixed-form", &
282+
flag_flang_new_no_implicit_typing = " -fimplicit-none"
277283

278284
contains
279285

@@ -294,11 +300,11 @@ function get_default_flags(self, release) result(flags)
294300
! Append position-independent code (PIC) flag, that is necessary
295301
! building shared libraries
296302
select case (self%id)
297-
case (id_gcc, id_f95, id_caf, id_flang, id_f18, id_lfortran, &
303+
case (id_gcc, id_f95, id_caf, id_flang_classic, id_f18, id_lfortran, &
298304
id_intel_classic_nix, id_intel_classic_mac, id_intel_llvm_nix, &
299305
id_pgi, id_nvhpc, id_nag, id_cray, id_ibmxl)
300306
pic_flag = " -fPIC"
301-
case (id_flang_new)
307+
case (id_flang)
302308
! flang-new doesn't support -fPIC on Windows MSVC target
303309
if (get_os_type() == OS_WINDOWS) then
304310
pic_flag = ""
@@ -412,6 +418,11 @@ subroutine get_release_compile_flags(id, flags)
412418
flags = &
413419
flag_lfortran_opt
414420

421+
case(id_flang)
422+
flags = &
423+
flag_flang_new_opt//&
424+
flag_flang_new_pic
425+
415426
end select
416427
end subroutine get_release_compile_flags
417428

@@ -507,6 +518,12 @@ subroutine get_debug_compile_flags(id, flags)
507518

508519
case(id_lfortran)
509520
flags = ""
521+
522+
case(id_flang)
523+
flags = &
524+
flag_flang_new_debug//&
525+
flag_flang_new_pic
526+
510527
end select
511528
end subroutine get_debug_compile_flags
512529

@@ -519,7 +536,7 @@ pure subroutine set_cpp_preprocessor_flags(id, flags)
519536
select case(id)
520537
case default
521538
flag_cpp_preprocessor = ""
522-
case(id_caf, id_gcc, id_f95, id_nvhpc, id_flang_new)
539+
case(id_caf, id_gcc, id_f95, id_nvhpc, id_flang)
523540
flag_cpp_preprocessor = "-cpp"
524541
case(id_intel_classic_windows, id_intel_llvm_windows)
525542
flag_cpp_preprocessor = "/fpp"
@@ -614,7 +631,7 @@ function get_include_flag(self, path) result(flags)
614631
flags = "-I "//path
615632

616633
case(id_caf, id_gcc, id_f95, id_cray, id_nvhpc, id_pgi, &
617-
& id_flang, id_flang_new, id_f18, &
634+
& id_flang_classic, id_flang, id_f18, &
618635
& id_intel_classic_nix, id_intel_classic_mac, &
619636
& id_intel_llvm_nix, id_lahey, id_nag, id_ibmxl, &
620637
& id_lfortran)
@@ -638,10 +655,10 @@ function get_module_flag(self, path) result(flags)
638655
case(id_caf, id_gcc, id_f95, id_cray, id_lfortran)
639656
flags = "-J "//path
640657

641-
case(id_nvhpc, id_pgi, id_flang)
658+
case(id_nvhpc, id_pgi, id_flang_classic)
642659
flags = "-module "//path
643660

644-
case(id_flang_new, id_f18)
661+
case(id_flang, id_f18)
645662
flags = "-module-dir "//path
646663

647664
case(id_intel_classic_nix, id_intel_classic_mac, &
@@ -672,7 +689,7 @@ function get_shared_flag(self) result(shared_flag)
672689
select case (self%id)
673690
case default
674691
shared_flag = "-shared"
675-
case (id_gcc, id_f95, id_flang, id_flang_new, id_lfortran)
692+
case (id_gcc, id_f95, id_flang_classic, id_flang, id_lfortran)
676693
shared_flag = "-shared"
677694
case (id_intel_classic_nix, id_intel_llvm_nix, id_pgi, id_nvhpc)
678695
shared_flag = "-shared"
@@ -707,6 +724,9 @@ function get_feature_flag(self, feature) result(flags)
707724
case(id_cray)
708725
flags = flag_cray_no_implicit_typing
709726

727+
case(id_flang)
728+
flags = flag_flang_new_no_implicit_typing
729+
710730
end select
711731

712732
case("implicit-typing")
@@ -738,7 +758,7 @@ function get_feature_flag(self, feature) result(flags)
738758
case(id_caf, id_gcc, id_f95)
739759
flags = flag_gnu_free_form
740760

741-
case(id_pgi, id_nvhpc, id_flang)
761+
case(id_pgi, id_nvhpc, id_flang_classic)
742762
flags = flag_pgi_free_form
743763

744764
case(id_nag)
@@ -754,14 +774,17 @@ function get_feature_flag(self, feature) result(flags)
754774
case(id_cray)
755775
flags = flag_cray_free_form
756776

777+
case(id_flang)
778+
flags = flag_flang_new_free_form
779+
757780
end select
758781

759782
case("fixed-form")
760783
select case(self%id)
761784
case(id_caf, id_gcc, id_f95)
762785
flags = flag_gnu_fixed_form
763786

764-
case(id_pgi, id_nvhpc, id_flang)
787+
case(id_pgi, id_nvhpc, id_flang_classic)
765788
flags = flag_pgi_fixed_form
766789

767790
case(id_nag)
@@ -780,6 +803,9 @@ function get_feature_flag(self, feature) result(flags)
780803
case(id_lfortran)
781804
flags = flag_lfortran_fixed_form
782805

806+
case(id_flang)
807+
flags = flag_flang_new_fixed_form
808+
783809
end select
784810

785811
case("default-form")
@@ -849,7 +875,7 @@ subroutine get_default_c_compiler(f_compiler, c_compiler)
849875
case(id_intel_llvm_nix,id_intel_llvm_windows)
850876
c_compiler = 'icx'
851877

852-
case(id_flang, id_flang_new, id_f18)
878+
case(id_flang_classic, id_flang, id_f18)
853879
c_compiler='clang'
854880

855881
case(id_ibmxl)
@@ -884,7 +910,7 @@ subroutine get_default_cxx_compiler(f_compiler, cxx_compiler)
884910
case(id_intel_llvm_nix,id_intel_llvm_windows)
885911
cxx_compiler = 'icpx'
886912

887-
case(id_flang, id_flang_new, id_f18)
913+
case(id_flang_classic, id_flang, id_f18)
888914
cxx_compiler='clang++'
889915

890916
case(id_ibmxl)
@@ -998,7 +1024,7 @@ function get_id(compiler) result(id)
9981024
end if
9991025

10001026
if (check_compiler(compiler, "flang-new")) then
1001-
id = id_flang_new
1027+
id = id_flang
10021028
return
10031029
end if
10041030

@@ -1007,6 +1033,11 @@ function get_id(compiler) result(id)
10071033
return
10081034
end if
10091035

1036+
if (check_compiler(compiler, "flang-classic")) then
1037+
id = id_flang_classic
1038+
return
1039+
end if
1040+
10101041
if (check_compiler(compiler, "flang")) then
10111042
id = id_flang
10121043
return
@@ -1752,8 +1783,8 @@ pure function compiler_name(self) result(name)
17521783
case(id_pgi); name = "pgfortran"
17531784
case(id_nvhpc); name = "nvfortran"
17541785
case(id_nag); name = "nagfor"
1755-
case(id_flang); name = "flang"
1756-
case(id_flang_new); name = "flang-new"
1786+
case(id_flang_classic); name = "flang-classic"
1787+
case(id_flang); name = "flang"
17571788
case(id_f18); name = "f18"
17581789
case(id_ibmxl); name = "xlf90"
17591790
case(id_cray); name = "crayftn"

src/metapackage/fpm_meta_openmp.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module fpm_meta_openmp
22
use fpm_compiler, only: compiler_t, id_gcc, id_f95, id_intel_classic_windows, &
33
id_intel_llvm_windows, id_intel_classic_nix, id_intel_llvm_nix, &
44
id_intel_classic_mac, id_pgi, id_nvhpc, id_ibmxl, id_nag, id_lfortran, &
5-
id_flang, id_flang_new, flag_gnu_openmp, flag_intel_openmp_win, &
5+
id_flang_classic, id_flang, flag_gnu_openmp, flag_intel_openmp_win, &
66
flag_intel_openmp, flag_pgi_openmp, flag_nag_openmp, &
77
flag_lfortran_openmp, flag_flang_new_openmp
88
use fpm_strings, only: string_t
@@ -73,7 +73,7 @@ subroutine init_openmp(this,compiler,all_meta,error)
7373
openmp_flag = flag_lfortran_openmp
7474
link_flag = flag_lfortran_openmp
7575

76-
case (id_flang, id_flang_new)
76+
case (id_flang_classic, id_flang)
7777
openmp_flag = flag_flang_new_openmp
7878
link_flag = flag_flang_new_openmp
7979

0 commit comments

Comments
 (0)