[*] Set explicit clang microarchitecture targets of x86_32 and x86_64 processors

This commit is contained in:
Reece Wilson 2024-06-07 01:31:18 +01:00
parent 051e453cad
commit f1414cd7ec

View File

@ -157,6 +157,26 @@ local function configureProjectForPlatforms(projType)
end) end)
end end
local function configureProjectCPUTarget()
filter { "toolset:clang", "architecture:x86_64"}
-- Some discount VPSes might be running on this dead architecture
-- Haswell introduced AVX2.
-- clang cpu levels: x86_64-v4 contains meme avx512 instructions and beyond, x86_64-v3 includes AVX1+2, x86_64-v2 doesn't have any AVX whatsoever.
-- Dunno if intentional because SSE4.1 >= AVX, but either way, let's get some modern CPU features in an otherwise widely supported binary.
-- Lets sit between v2 and v3 by a single intel generation.
buildoptions { "-march=ivybridge" }
defines {"AURORA_RUNTIME_MEMSET=__builtin_memset"}
defines {"AURORA_RUNTIME_MEMCPY=__builtin_memcpy"}
filter {}
filter { "toolset:clang", "architecture:x86"}
-- Let Linux x86_32 support Intel Core+ (2006) CPUs
buildoptions { "-march=core2" }
defines {"AURORA_RUNTIME_MEMSET=__builtin_memset"}
defines {"AURORA_RUNTIME_MEMCPY=__builtin_memcpy"}
filter {}
end
local function configureProjectErrors() local function configureProjectErrors()
if (not Aurora.Settings.bDisableWarningsThatAnnoyRec) then if (not Aurora.Settings.bDisableWarningsThatAnnoyRec) then
return return
@ -194,7 +214,7 @@ local function configureProjectErrors()
"unknown-warning-option" "unknown-warning-option"
} }
filter{} filter {}
if (targetingCmake) then if (targetingCmake) then
filter {"toolset:msc"} filter {"toolset:msc"}
@ -379,6 +399,7 @@ local function setupProject(prj)
configureProjectForSolution(prj) configureProjectForSolution(prj)
configureProjectErrors() configureProjectErrors()
configureProjectForCompiler() configureProjectForCompiler()
configureProjectCPUTarget()
configureProjectForPlatforms(prj.projectType) configureProjectForPlatforms(prj.projectType)
configureProjectForTarget() configureProjectForTarget()
configureProjectForDebug(prj) configureProjectForDebug(prj)