HelloAurora/Build_UserScripts/wxwidgets.aurora.lua
2022-02-19 22:45:49 +00:00

211 lines
5.1 KiB
Lua

local configPath = "../wxConfig/"
local gl = true
local gtk = linux
local windows = win32
local wxGlobals = {"__WX__", "wxUSE_GUI=1", "wxUSE_BASE=1","_FILE_OFFSET_BITS=64"}
local platform_macro = "__WXUNKNOWNPLATFORM_"
--local wxvarsW32 = {}
--if (windows) then
--platform_macro = "__WXMSW__"
local wxvarsW32 = require("wxwidgets-windows-msw")
--elseif (gtk_linux) then
--platform_macro = "__WXGTK__"
local wxvarsLinux = require("wxwidgets-linux-gtk")
--end
local function addPlatformMacro()
auFilter(auFilterOf{platforms = "win32"})
defines "__WXMSW__"
auFilter {}
auFilter(auFilterOf{platforms = "linux"})
defines "__WXGTK__"
auFilter {}
end
local function translateDep(that, dep)
if (that.info.translations) then
local override = that.info.translations[dep]
if (override) then
dep = override
end
end
return dep
end
local function incDep(that, dep, link)
if (link) then
auIncludeProject(that:translateDep(dep))
else
auIncludeProject(that:translateDep(dep))
end
end
local function addSources(name)
auFilter(auFilterOf{platforms = "win32"})
auForEach(wxvarsW32[name], files)
auFilter {}
auFilter(auFilterOf{platforms = "linux"})
auForEach(wxvarsLinux[name], files)
auFilter {}
end
local function includeBaseGtk(that)
incDep(that, "gtk-desktop-bins")
end
local function processRegex(that)
auStartProject({name = "wxregex", projectType = "StaticLib", inc = "include"})
addPlatformMacro()
files
{
"src/regex/regcomp.*",
"src/regex/regexec.*",
"src/regex/regerror.*",
"src/regex/regfree.*"
}
includedirs(configPath)
end
local function processScintilla(that)
auStartProject({name = "wxscintilla", projectType = "StaticLib", src = "src/stc/scintilla/src", inc = "src/stc/scintilla/include"})
defines({"__WX__", "SCI_LEXER", "NO_CXX11_REGEX", "LINK_LEXERS", "_FILE_OFFSET_BITS=64"})
addPlatformMacro()
includedirs("include/")
includedirs(configPath)
includedirs("src/stc/scintilla/src")
includedirs("src/stc/scintilla/lexlib")
includedirs("src/stc/scintilla/lexers")
addSources("STC_SRC")
if (gtk) then
includeBaseGtk(that)
if (_linux) then
includedirs("gdk/include")
includedirs "/usr/include/at-spi-2.0 "
includedirs "/usr/include/at-spi2-atk/2.0"
includedirs "/usr/include/dbus-1.0"
includedirs "/usr/lib/dbus-1.0/include"
includedirs "/usr/include/libmount"
includedirs "/usr/include/libsecret-1"
end
end
end
local function processWxWidgets(that)
auStartProject({name = "wxWidgets", projectType = "StaticLib", inc = "include"})
defines(wxGlobals)
defines "WXBUILDING"
incDep(that, "zlib")
--dependson "wxscintilla"
includedirs("src/stc/scintilla/include")
incDep(that, "expat")
defines "XML_STATIC"
includedirs("src/common")
includedirs("src/regex")
includedirs("src/stc/scintilla/include")
includedirs(configPath)
if (gtk) then
includeBaseGtk()
else
incDep(that, "png")
incDep(that, "freetype")
incDep(that, "harfbuzz")
end
addSources("CORE_SRC")
addSources("BASE_SRC")
addSources("BASE_AND_GUI_SRC")
addSources("BASE_PLATFORM_SRC")
addSources("RICHTEXT_SRC")
addSources("XML_SRC")
addSources("HTML_SRC")
if (net) then
addSources("NET_PLATFORM_SRC")
addSources("NET_SRC")
end
if (gl) then
addSources("OPENGL_SRC")
end
end
local function auSetupProjectProject(this)
processRegex(this)
processScintilla(this)
processWxWidgets(this)
end
local function linkProject(this)
links "wxregex"
links "wxscintilla"
links "wxWidgets"
links(translateDep(this, "zlib"))
links(translateDep(this, "expat"))
links(translateDep(this, "png"))
auFilter(auFilterOf{platforms = "linux"})
-- TODO:?
--linkExternalUnixDeps(this)
auFilter {}
if (gtk) then
incDep(this, "gtk-desktop-bins", true)
end
auFilter(auFilterOf{platforms = "win32"})
links "Rpcrt4.lib"
links "Comctl32.lib"
auFilter {}
end
local function includeProject(this)
includedirs(this.info.path .. "/include")
includedirs(this.info.path .. "/src/common")
includedirs(this.info.path .. "/" .. configPath)
defines "XML_STATIC"
defines (wxGlobals)
addPlatformMacro()
end
local function resolveDependencies(this, resolve)
resolve(translateDep(this, "zlib"))
resolve(translateDep(this, "png"))
resolve(translateDep(this, "expat"))
if (gtk) then
resolve(translateDep(this, "gtk-desktop-bins"))
end
end
local function wxWidgetsProcessor(info)
local interface = {}
interface.info = info
interface.process = auSetupProjectProject
interface.handleLink = linkProject
interface.handleReference = includeProject
interface.resolveDependencies = resolveDependencies
return interface
end
return wxWidgetsProcessor