From 21c84dad3ff4e0de10b813260b6a5247771d6754 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sun, 6 Mar 2022 14:53:43 -0300 Subject: build: change how the CFLAGS/LDFLAGS environment variables are honored This is to ensure that the -fPIC tweak is always added. --- src/luarocks/build/builtin.lua | 2 +- src/luarocks/core/cfg.lua | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index 0e8c3151..e7c0ae38 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua @@ -158,7 +158,7 @@ function builtin.run(rockspec, no_install) local checked_lua_h = false for _, var in ipairs{ "CC", "CFLAGS", "LDFLAGS" } do - variables[var] = os.getenv(var) or variables[var] or "" + variables[var] = variables[var] or os.getenv(var) or "" end local function add_flags(extras, flag, flags) diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua index 1f055b41..6a2518c0 100644 --- a/src/luarocks/core/cfg.lua +++ b/src/luarocks/core/cfg.lua @@ -45,6 +45,7 @@ local platform_order = { -- Windows "windows", "win32", + "mingw", "mingw32", "msys2_mingw_w64", } @@ -293,7 +294,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) defaults.variables.MT = "mt" defaults.variables.AR = "lib" defaults.variables.LUALIB = "lua"..lua_version..".lib" - defaults.variables.CFLAGS = "/nologo /MD /O2" + defaults.variables.CFLAGS = os.getenv("CFLAGS") or "/nologo /MD /O2" + defaults.variables.LDFLAGS = os.getenv("LDFLAGS") defaults.variables.LIBFLAG = "/nologo /dll" defaults.external_deps_patterns = { @@ -334,7 +336,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) defaults.variables.LD = "mingw32-gcc" defaults.variables.AR = "ar" defaults.variables.RANLIB = "ranlib" - defaults.variables.CFLAGS = "-O2" + defaults.variables.CFLAGS = os.getenv("CFLAGS") or "-O2" + defaults.variables.LDFLAGS = os.getenv("LDFLAGS") defaults.variables.LIBFLAG = "-shared" defaults.makefile = "Makefile" defaults.external_deps_patterns = { @@ -358,7 +361,16 @@ local function make_defaults(lua_version, target_cpu, platforms, home) defaults.external_lib_extension = "so" defaults.obj_extension = "o" defaults.external_deps_dirs = { "/usr/local", "/usr", "/" } - defaults.variables.CFLAGS = "-O2" + + defaults.variables.CFLAGS = os.getenv("CFLAGS") or "-O2" + -- we pass -fPIC via CFLAGS because of old Makefile-based Lua projects + -- which didn't have -fPIC in their Makefiles but which honor CFLAGS + if not defaults.variables.CFLAGS:match("-fPIC") then + defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC" + end + + defaults.variables.LDFLAGS = os.getenv("LDFLAGS") + defaults.cmake_generator = "Unix Makefiles" defaults.variables.CC = "gcc" defaults.variables.LD = "gcc" @@ -380,9 +392,6 @@ local function make_defaults(lua_version, target_cpu, platforms, home) defaults.wrapper_suffix = "" local xdg_cache_home = os.getenv("XDG_CACHE_HOME") or home.."/.cache" defaults.local_cache = xdg_cache_home.."/luarocks" - if not defaults.variables.CFLAGS:match("-fPIC") then - defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC" - end defaults.web_browser = "xdg-open" end @@ -430,7 +439,12 @@ local function make_defaults(lua_version, target_cpu, platforms, home) defaults.variables.AR = "ar" defaults.variables.RANLIB = "ranlib" defaults.variables.LUALIB = "liblua"..lua_version..".dll.a" - defaults.variables.CFLAGS = "-O2 -fPIC" + + defaults.variables.CFLAGS = os.getenv("CFLAGS") or "-O2 -fPIC" + if not defaults.variables.CFLAGS:match("-fPIC") then + defaults.variables.CFLAGS = defaults.variables.CFLAGS.." -fPIC" + end + defaults.variables.LIBFLAG = "-shared" end end -- cgit v1.2.3-55-g6feb