s0600204
c025776703
As of the `beta2` version of `premake5`, `sysincludedirs` has been deprecated and replaced with/renamed to `externalincludedirs`, and continuing to use it causes warnings to be emitted. With this change, we now use `externalincludedirs` when available so as to prevent the warnings, falling back to `sysincludedirs` when it's not to prevent breakage with pre-`beta2` versions of `premake5`. Accepted By: sera Fixes: #6785 Differential Revision: https://code.wildfiregames.com/D4980 This was SVN commit r27606.
94 lines
2.7 KiB
Lua
94 lines
2.7 KiB
Lua
local m = {}
|
|
m._VERSION = "1.1.2-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
|
|
|
|
function m.add_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")
|
|
|
|
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) == "-include" then
|
|
table.insert(files, string.sub(w,9))
|
|
else
|
|
table.insert(options, w)
|
|
end
|
|
end
|
|
|
|
-- As of premake5-beta2, `sysincludedirs` has been deprecated in favour of
|
|
-- `externalincludedirs`, and continuing to use it causes warnings to be emitted.
|
|
-- We use `externalincludedirs` when available to prevent the warnings, falling back
|
|
-- to `sysincludedirs` when not to prevent breakage of the `--with-system-premake5`
|
|
-- build argument.
|
|
if externalincludedirs then
|
|
externalincludedirs(dirs)
|
|
else
|
|
sysincludedirs(dirs)
|
|
end
|
|
|
|
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
|