Build/Public/settings.lua

144 lines
5.9 KiB
Lua

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)
auSetDefault(settings, "bActionsIncludeFull", false)
-- 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