package("gfortran") set_homepage("https://gcc.gnu.org/fortran/") set_description("The GNU Fortran compiler") on_fetch(function (package, opt) import("lib.detect.find_library") if opt.system then local fortran = package:find_tool("gfortran", opt) if not fortran then return end if package:is_binary() then return true else local installdir = path.directory(path.directory(fortran.program)) local target local out, version = os.iorunv(fortran.program, {"-v", "-E"}) if version then target = version:match("Target: (.-)\n") version = version:match("version (%d+%.%d+%.%d+)") vmajor = version:split("%.")[1] local paths = { "/usr/lib", "/usr/lib64", "/usr/local/lib", path.join(installdir, "lib"), } if target then table.insert(paths, path.join("/usr/lib", target)) table.insert(paths, path.join("/usr/lib/gcc", target, vmajor)) table.insert(paths, path.join(installdir, "lib", target, vmajor)) if package:is_plat("macosx") then table.insert(paths, path.join("/opt/homebrew/Cellar/gcc", version, "/lib/gcc", vmajor)) end end local linkinfo = find_library("gfortran", paths) if linkinfo then return { version = version, links = "gfortran", linkdirs = {linkinfo.linkdir}, } end end end end end)