obs-studio/libobs-opengl/GL/MakeAllExts.lua

72 lines
1.5 KiB
Lua

assert(arg and arg[0], "You ran this script incorrectly.")
--Get the location of our modules relative to here.
local baseDir = arg[0]:match("^(.*[\\/])")
baseDir = baseDir or "./"
--Fixup the package path to be relative to this directory.
package.path = baseDir .. "modules/?.lua;" .. package.path
--Make a function to get the correct directory name.
function SysRelPath(relativePath)
return baseDir .. relativePath
end
FixupPath = SysRelPath --Older name.
local cmd = require "CmdLineOptions"
local Specs = require "Specs"
local parseOpts = cmd.CreateOptionGroup()
parseOpts:enum(
"spec",
"spec",
"Specification to use.",
{"gl", "glX", "wgl"})
parseOpts:pos_opt(
1,
"outname",
"Output filename to generate.",
"outname")
local options, pos_args = parseOpts:ProcessCmdLine(arg)
local dups = {}
local exts = {}
local spec = Specs.GetSpec(options.spec)
local specData = spec.LoadSpec()
local coreExts = spec.GetCoreExts()
for _, version in ipairs(specData.versions or {}) do
if(coreExts[version]) then
for _, extName in ipairs(coreExts[version]) do
if(not dups[extName]) then
exts[#exts + 1] = extName
dups[extName] = true
end
end
end
end
local sortExts = {}
for _, extName in ipairs(specData.extensions) do
if(not dups[extName]) then
sortExts[#sortExts + 1] = extName
dups[extName] = true
end
end
table.sort(sortExts)
local hFile = io.open(options.outname, "w")
for _, extName in ipairs(exts) do
hFile:write(extName, "\n")
end
for _, extName in ipairs(sortExts) do
hFile:write(extName, "\n")
end
hFile:close()