function get_module_flag(self, path) result(flags)
class(compiler_t), intent(in) :: self
character(len=*), intent(in) :: path
character(len=:), allocatable :: flags
select case(self%id)
case default
flags = "-module "//path
case(id_caf, id_gcc, id_f95, id_cray, id_lfortran)
flags = "-J "//path
case(id_nvhpc, id_pgi, id_flang)
flags = "-module "//path
case(id_flang_new, id_f18)
flags = "-module-dir "//path
case(id_intel_classic_nix, id_intel_classic_mac, &
& id_intel_llvm_nix)
flags = "-module "//path
case(id_intel_classic_windows, id_intel_llvm_windows)
flags = "/module:"//path
case(id_lahey)
flags = "-M "//path
case(id_nag)
flags = "-mdir "//path
case(id_ibmxl)
flags = "-qmoddir "//path
end select
end function get_module_flag