function get_feature_flag(self, feature) result(flags)
class(compiler_t), intent(in) :: self
character(len=*), intent(in) :: feature
character(len=:), allocatable :: flags
flags = ""
select case(feature)
case("no-implicit-typing")
select case(self%id)
case(id_caf, id_gcc, id_f95)
flags = flag_gnu_no_implicit_typing
case(id_nag)
flags = flag_nag_no_implicit_typing
case(id_cray)
flags = flag_cray_no_implicit_typing
end select
case("implicit-typing")
select case(self%id)
case(id_cray)
flags = flag_cray_implicit_typing
case(id_lfortran)
flags = flag_lfortran_implicit_typing
end select
case("no-implicit-external")
select case(self%id)
case(id_caf, id_gcc, id_f95)
flags = flag_gnu_no_implicit_external
end select
case("implicit-external")
select case(self%id)
case(id_lfortran)
flags = flag_lfortran_implicit_external
end select
case("free-form")
select case(self%id)
case(id_caf, id_gcc, id_f95)
flags = flag_gnu_free_form
case(id_pgi, id_nvhpc, id_flang)
flags = flag_pgi_free_form
case(id_nag)
flags = flag_nag_free_form
case(id_intel_classic_nix, id_intel_classic_mac, id_intel_llvm_nix, &
& id_intel_llvm_unknown)
flags = flag_intel_free_form
case(id_intel_classic_windows, id_intel_llvm_windows)
flags = flag_intel_free_form_win
case(id_cray)
flags = flag_cray_free_form
end select
case("fixed-form")
select case(self%id)
case(id_caf, id_gcc, id_f95)
flags = flag_gnu_fixed_form
case(id_pgi, id_nvhpc, id_flang)
flags = flag_pgi_fixed_form
case(id_nag)
flags = flag_nag_fixed_form
case(id_intel_classic_nix, id_intel_classic_mac, id_intel_llvm_nix, &
& id_intel_llvm_unknown)
flags = flag_intel_fixed_form
case(id_intel_classic_windows, id_intel_llvm_windows)
flags = flag_intel_fixed_form_win
case(id_cray)
flags = flag_cray_fixed_form
case(id_lfortran)
flags = flag_lfortran_fixed_form
end select
case("default-form")
continue
case default
error stop "Unknown feature '"//feature//"'"
end select
end function get_feature_flag