local settings = auFetchGlobal("Settings") -- General settings you can probably ignore auSetDefault(settings, "bPremakeOverload" , nil) auSetDefault(settings, "sPremakeOverload" , nil) auSetDefault(settings, "sAbsValac" , nil) auSetDefault(settings, "sAbsRoot" , nil) -- Root offset from `../../` -- Embedders should define 'sAbsAuRoot' from their premake scripts -- Users may change this to account for nested monorepos auSetDefault(settings, "sRelRoot" , "./") -- auSetDefault(settings, "sRelAuRoot" , "./") -- The following settings define constants relating to the aurora build scripts -- You should probably ignore me auSetDefault(settings, "sRelScripts" , "./Build_Scripts") -- You should probably ignore me auSetDefault(settings, "sRelWin32" , "./Build_Scripts/Win32") -- You should probably ignore me auSetDefault(settings, "sRelUnixBins" , "./Build_Scripts/bin") -- You should probably ignore me auSetDefault(settings, "sRelRepoScripts" , "./Build_UserScripts") -- The following settings are relative to the projects sAbsRoot/sRelRoot -- Exported debug binaries -- Debug binaries, debug stl, debug everything. These binaries suck and you probably shouldn't use them. auSetDefault(settings, "sRelDebug" , "./Build/Develop") -- Exported staging binaries. -- These binaries should be used by teams internally and for qa. -- They contain most high level debug assertions, leaving the lower level debug assertions disabled for performance reasons -- Path strings and other debug information should not be shipped in real time or performance critical applications -- For those use cses, defer to the shippable binaries auSetDefault(settings, "sRelStage" , "./Build/Stage") -- Exported ship binaires -- -- Ship binaries contain no debug assertions or debug-level push system errors -- Debug information is still exported for these, albeit stripped from ELF auSetDefault(settings, "sRelShip" , "./Build/Ship") -- Working directory for debug run targets should 'bIsBuildDirWd' be set to false auSetDefault(settings, "sRelWd" , "./Build/CWD") -- ELF stripped or PDB archieve directory auSetDefault(settings, "sRelSymbols" , "./Build/Symbols") -- exported private symbols auSetDefault(settings, "sRelLinkLibs" , "./Build/Link") -- public link files auSetDefault(settings, "sRelCompilerWd" , "./Build/Workspace") auSetDefault(settings, "sRelRootInclude" , "./Include") -- When enabled, debug run targets shall run under the modules path instead of sRelWd auSetDefault(settings, "bIsBuildDirWd" , false) -- auSetDefault(settings, "bIsShipLTOByDefault", true) -- Archives the debug symbols of sRelShip binaries auSetDefault(settings, "bArchiveShipSyms", false) -- C++ language version. C++14/17/20 auSetDefault(settings, "sCppVersion", "C++20") -- Enables standard aurora post build steps including copy of binaries and stripping of symbols auSetDefault(settings, "bUseAuBuildHooks", true) -- Aurora automatically searches for ./include in the root of your solution for solution wide headers -- 'bIncludeAuIncludeIfExists' enables this behaviour auSetDefault(settings, "bIncludeAuIncludeIfExists", true) --Enables multithreaded compilation across toolchains that support it auSetDefault(settings, "bMultithreadBuild", true) auSetDefault(settings, "bUseUnixStdPrefix", false) -- should include the standard unix lib prefix auSetDefault(settings, "sLibPrefix" , "") -- if false, use this auSetDefault(settings, "sMsvcDefCharset", "MBCS") -- auSetDefault(settings, "sNameOfDebug", "Debug") -- auSetDefault(settings, "sNameOfInternal", "Stage") -- auSetDefault(settings, "sNameOfShip", "Ship") -- auSetDefault(settings, "aNamesOfConfigs", {"Debug", "Stage", "Ship"}) -- auSetDefault(settings, "bDefinePartialABIInTargetName", true) auSetDefault(settings, "bStaticRuntime", true) auSetDefault(settings, "bBasicMitigations", true) -- auSetDefault(settings, "bLTO", false) -- auSetDefault(settings, "bEditAndCont", false) -- auSetDefault(settings, "bSplitTargetDirByArch", false) -- Disable common warnings. -- Rationalized as other big projects tend to disable them, builds on linuxs were ugly, and clang and msvc would seethe at different things, and I don't care. -- You should probably turn this off once in a while to check for hidden issues auSetDefault(settings, "bDisableWarningsThatAnnoyRec", true) auSetDefault(settings, "bForceClangWin32", false) -- Forces libc++ stl on Linux, where such is not currently recommended by the vendor, but it's worth forcing modern tech -- G++ is a mess whose future I don't care for. Not that libc++ doesn't do stupid thing on Linux, but au runtime takes care of a lot of things, so idc. auSetDefault(settings, "bForceLLVMStl", true) auSetDefault(settings, "bForceClangOnUnix", true) auSetDefault(settings, "bForceWin32EscLd", true) -- Premake5 binary name to look for when when tied into cmake. Used by build actions and other lua scripted features auSetDefault(settings, "sDefaultCmakePremakeBin", "premake5") -- In place of page NX traps and suspending thread contexts like most debug operations in visual studio, -- they perform an expensive check in each functions prologue :vomit: -- V8 took minutes to start up on an i9-9900k, QST/VM tests result in highs of ~30MB/s down from 900MB/s -- MSVCs justmycode implementation is not fit for use. auSetDefault(settings, "bHotswap", false) if (os.host() == "windows") then auSetDefault(settings, "sValaGirs", "C:\\msys64\\mingw64\\share\\gir-1.0") auSetDefault(settings, "aValaDevVApis", {"C:\\msys64\\mingw64\\share\\vala\\vapi", "C:\\msys64\\mingw64\\share\\vala-0.54\\vapi"}) else auSetDefault(settings, "sValaGirs", "/usr/share/gir-1.0") auSetDefault(settings, "aValaDevVApis", {"/usr/share/vala/vapi", "/usr/share/vala-0.54/vapi"}) end