aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/core/cfg.lua41
1 files changed, 36 insertions, 5 deletions
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua
index 9bfa8040..b3ff6cb3 100644
--- a/src/luarocks/core/cfg.lua
+++ b/src/luarocks/core/cfg.lua
@@ -45,6 +45,7 @@ local platform_order = {
45 "windows", 45 "windows",
46 "win32", 46 "win32",
47 "mingw32", 47 "mingw32",
48 "msys2_mingw_w64",
48} 49}
49 50
50local function detect_sysconfdir() 51local function detect_sysconfdir()
@@ -70,7 +71,11 @@ end
70 71
71local function set_confdirs(cfg, platforms, hardcoded_sysconfdir) 72local function set_confdirs(cfg, platforms, hardcoded_sysconfdir)
72 local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded_sysconfdir 73 local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded_sysconfdir
73 if platforms.windows then 74 local windows_style = platforms.windows
75 if platforms.msys2_mingw_w64 then
76 windows_style = false
77 end
78 if windows_style then
74 cfg.home = os.getenv("APPDATA") or "c:" 79 cfg.home = os.getenv("APPDATA") or "c:"
75 cfg.home_tree = cfg.home.."/luarocks" 80 cfg.home_tree = cfg.home.."/luarocks"
76 cfg.homeconfdir = cfg.home_tree 81 cfg.homeconfdir = cfg.home_tree
@@ -167,6 +172,7 @@ local platform_sets = {
167 linux = { unix = true, linux = true }, 172 linux = { unix = true, linux = true },
168 mingw = { windows = true, win32 = true, mingw32 = true, mingw = true }, 173 mingw = { windows = true, win32 = true, mingw32 = true, mingw = true },
169 msys = { unix = true, cygwin = true, msys = true }, 174 msys = { unix = true, cygwin = true, msys = true },
175 msys2_mingw_w64 = { windows = true, win32 = true, mingw32 = true, mingw = true, msys = true, msys2_mingw_w64 = true },
170} 176}
171 177
172local function make_platforms(system) 178local function make_platforms(system)
@@ -416,6 +422,29 @@ local function make_defaults(lua_version, target_cpu, platforms, home)
416 lib = { "lib?.so", "?.dll", "lib?.dll" }, 422 lib = { "lib?.so", "?.dll", "lib?.dll" },
417 include = { "?.h" } 423 include = { "?.h" }
418 } 424 }
425 if platforms.mingw then
426 -- MSYS2 can build Windows programs that depend on
427 -- msys-2.0.dll (based on Cygwin) but MSYS2 is also designed
428 -- for building native Windows programs by MinGW. These
429 -- programs don't depend on msys-2.0.dll.
430 local pipe = io.popen("cygpath --windows %MINGW_PREFIX%")
431 local mingw_prefix = pipe:read("*l")
432 pipe:close()
433 defaults.external_deps_dirs = { mingw_prefix, "c:/windows/system32" }
434 defaults.makefile = "Makefile"
435 defaults.cmake_generator = "MSYS Makefiles"
436 defaults.local_cache = home.."/.cache/luarocks"
437 defaults.variables.MAKE = "make"
438 defaults.variables.CC = "gcc"
439 defaults.variables.RC = "windres"
440 defaults.variables.LD = "gcc"
441 defaults.variables.MT = nil
442 defaults.variables.AR = "ar"
443 defaults.variables.RANLIB = "ranlib"
444 defaults.variables.LUALIB = "liblua"..lua_version..".dll.a"
445 defaults.variables.CFLAGS = "-O2 -fPIC"
446 defaults.variables.LIBFLAG = "-shared"
447 end
419 end 448 end
420 449
421 if platforms.bsd then 450 if platforms.bsd then
@@ -600,12 +629,14 @@ function cfg.init(detected, warning)
600 -- running from the Development Command prompt for VS 2017 629 -- running from the Development Command prompt for VS 2017
601 system = "windows" 630 system = "windows"
602 else 631 else
603 local fd = io.open("/bin/sh", "r") 632 local msystem = os.getenv("MSYSTEM")
604 if fd then 633 if msystem == nil then
605 fd:close() 634 system = "mingw"
635 elseif msystem == "MSYS" then
606 system = "msys" 636 system = "msys"
607 else 637 else
608 system = "mingw" 638 -- MINGW32 or MINGW64
639 system = "msys2_mingw_w64"
609 end 640 end
610 end 641 end
611 end 642 end