mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
This makes 5.0.0-beta5 the minimally supported version as the gmake2 action was renamed to gmake while gmake was renamed to gmakelegacy. So from now on gmake action is to be used. Clear out all old version dependent code. Fixes: #7789 Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
100 lines
2.8 KiB
Lua
100 lines
2.8 KiB
Lua
local m = {}
|
|
m._VERSION = "1.2.0-dev"
|
|
|
|
m.additional_pc_path = nil
|
|
m.static_link_libs = false
|
|
|
|
local function os_capture(cmd)
|
|
return io.popen(cmd, 'r'):read('*a'):gsub("\n", " ")
|
|
end
|
|
|
|
local function parse_pkg_config_includes(lib, alternative_cmd, alternative_flags)
|
|
local result
|
|
if not alternative_cmd then
|
|
local pc_path = m.additional_pc_path and "PKG_CONFIG_PATH="..m.additional_pc_path or ""
|
|
result = os_capture(pc_path.." pkg-config --cflags "..lib)
|
|
else
|
|
if not alternative_flags then
|
|
result = os_capture(alternative_cmd.." --cflags")
|
|
else
|
|
result = os_capture(alternative_cmd.." "..alternative_flags)
|
|
end
|
|
end
|
|
|
|
-- Small trick: delete the space after -include so that we can detect
|
|
-- which files have to be force-included without difficulty.
|
|
result = result:gsub("%-include +(%g+)", "-include%1")
|
|
result = result:gsub("%-isystem +(%g+)", "-isystem%1")
|
|
|
|
local dirs = {}
|
|
local files = {}
|
|
local options = {}
|
|
for w in string.gmatch(result, "[^' ']+") do
|
|
if string.sub(w,1,2) == "-I" then
|
|
table.insert(dirs, string.sub(w,3))
|
|
elseif string.sub(w,1,8) == "-isystem" then
|
|
table.insert(dirs, string.sub(w,9))
|
|
elseif string.sub(w,1,8) == "-include" then
|
|
table.insert(files, string.sub(w,9))
|
|
else
|
|
table.insert(options, w)
|
|
end
|
|
end
|
|
|
|
return dirs, files, options
|
|
end
|
|
|
|
function m.add_includes(lib, alternative_cmd, alternative_flags)
|
|
local dirs, files, options = parse_pkg_config_includes(lib, alternative_cmd, alternative_flags)
|
|
|
|
externalincludedirs(dirs)
|
|
forceincludes(files)
|
|
buildoptions(options)
|
|
end
|
|
|
|
function m.add_includes_after(lib, alternative_cmd, alternative_flags)
|
|
local dirs, files, options = parse_pkg_config_includes(lib, alternative_cmd, alternative_flags)
|
|
|
|
includedirsafter(dirs)
|
|
forceincludes(files)
|
|
buildoptions(options)
|
|
end
|
|
|
|
function m.add_links(lib, alternative_cmd, alternative_flags)
|
|
local result
|
|
if not alternative_cmd then
|
|
local pc_path = m.additional_pc_path and "PKG_CONFIG_PATH="..m.additional_pc_path or ""
|
|
local static = m.static_link_libs and " --static " or ""
|
|
result = os_capture(pc_path.." pkg-config --libs "..static..lib)
|
|
else
|
|
if not alternative_flags then
|
|
result = os_capture(alternative_cmd.." --libs")
|
|
else
|
|
result = os_capture(alternative_cmd.." "..alternative_flags)
|
|
end
|
|
end
|
|
|
|
-- On OSX, wx-config outputs "-framework foo" instead of "-Wl,-framework,foo"
|
|
-- which doesn't fare well with the splitting into libs, libdirs and options
|
|
-- we perform afterwards.
|
|
result = result:gsub("%-framework +(%g+)", "-Wl,-framework,%1")
|
|
|
|
local libs = {}
|
|
local dirs = {}
|
|
local options = {}
|
|
for w in string.gmatch(result, "[^' ']+") do
|
|
if string.sub(w,1,2) == "-l" then
|
|
table.insert(libs, string.sub(w,3))
|
|
elseif string.sub(w,1,2) == "-L" then
|
|
table.insert(dirs, string.sub(w,3))
|
|
else
|
|
table.insert(options, w)
|
|
end
|
|
end
|
|
|
|
links(libs)
|
|
libdirs(dirs)
|
|
linkoptions(options)
|
|
end
|
|
|
|
return m
|