102 lines
2.4 KiB
Lua
102 lines
2.4 KiB
Lua
-- Phanes build configuration
|
|
VERSION = "1.0.0"
|
|
|
|
-- Override with specific platform if necessary
|
|
PLATFORM = os.target()
|
|
|
|
-- architecture.
|
|
ARCH = "x86_64"
|
|
|
|
-- SSE options:
|
|
-- SSE4: SSE
|
|
-- AVX: AVX
|
|
-- AVX2: AVX2
|
|
-- No SSE: FPU
|
|
-- None: Automatically detect SSE during build
|
|
SSE = "None"
|
|
|
|
|
|
phanesRoot = path.getabsolute(".")
|
|
phanesBin = path.join(phanesRoot, "bin")
|
|
phanesInt = path.join(phanesRoot, ".int")
|
|
phanesBuildFiles = path.join(phanesRoot, "build")
|
|
|
|
PhanesEngine = path.join(phanesRoot, "Engine")
|
|
PhanesRuntime = path.join(PhanesEngine, "Source/Runtime")
|
|
PhanesThirdParty = path.join(PhanesEngine, "Source/ThirdParty")
|
|
|
|
|
|
|
|
workspace "PhanesEngine"
|
|
cppdialect "C++20"
|
|
architecture (ARCH)
|
|
toolset "gcc"
|
|
flags { "MultiProcessorCompile" }
|
|
clangtidy "On"
|
|
llvmversion "19.0"
|
|
configurations { "Debug", "Release" }
|
|
|
|
|
|
function linux_sse()
|
|
if SSE == "SSE" then
|
|
defines {"P_SSE__"}
|
|
buildoptions {"-msse4", "-msse2", "-msse3"}
|
|
elseif SSE == "AVX" then
|
|
defines { "P_AVX__" }
|
|
buildoptions {"-mavx", "-msse4", "-msse2", "-msse3"}
|
|
elseif SSE == "AVX2" then
|
|
defines { "P_AVX2__" }
|
|
buildoptions {"-mavx2", "-mavx", "-msse4", "-msse2", "-msse3"}
|
|
elseif SSE == "FPU" then
|
|
defines { "P_FORCE_FPU" }
|
|
end
|
|
|
|
end
|
|
|
|
function boilerplate()
|
|
language "C++"
|
|
|
|
location (phanesBuildFiles .. "/%{prj.name}")
|
|
targetdir (phanesBin .. "/" .. VERSION .. "/%{cfg.buildcfg}/%{prj.name}")
|
|
objdir (phanesInt .. "/" .. VERSION .. "/%{cfg.buildcfg}/%{prj.name}")
|
|
|
|
if PLATFORM == "linux" then
|
|
defines { "P_LINUX_BUILD" }
|
|
linux_sse()
|
|
buildoptions { "-Wno-unused-parameter" , "-fms-extensions" }
|
|
end
|
|
|
|
filter "configurations:Debug"
|
|
defines { "DEBUG", "TRACE", "P_DEBUG"}
|
|
symbols "On"
|
|
buildmessage("Building %{prj.name} in debug mode")
|
|
|
|
filter "configurations:Release"
|
|
defines { "NDEBUG", "P_RELEASE" }
|
|
linktimeoptimization "On"
|
|
optimize "On"
|
|
intrinsics "On"
|
|
buildmessage("Building %{prj.name} in release mode")
|
|
|
|
filter{}
|
|
end
|
|
|
|
-- actions
|
|
|
|
function action_clean()
|
|
os.rmdir(phanesBin)
|
|
os.rmdir(phanesInt)
|
|
os.rmdir(phanesBuildFiles)
|
|
os.remove(phanesRoot .. "/Makefile")
|
|
end
|
|
|
|
newaction {
|
|
trigger = "clean",
|
|
description = "Clean the build",
|
|
execute = action_clean,
|
|
}
|
|
|
|
-- includeProjects here
|
|
include "Engine/Source/Runtime/Core/premake5.lua"
|
|
include "DevPlayground/premake5.lua"
|
|
include "MathTestFPU/premake5.lua" |