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