Files
Nuake-custom/premake5.lua

575 lines
17 KiB
Lua

-- ╔═══════════════════════════════════════╗
-- ║ ACTIONS ║
-- ╚═══════════════════════════════════════╝
include "build/BuildAssets.lua"
newaction {
trigger = "build-assets",
description = "",
execute = function ()
generateStaticResources("Resources", "Nuake/src/Resource/StaticResources.h", "Nuake/src/Resource/StaticResources.cpp")
end
}
-- ╔═══════════════════════════════════════╗
-- ║ WORKSPACE ║
-- ╚═══════════════════════════════════════╝
workspace "Nuake"
conformancemode "On"
configurations
{
"Debug",
"Release",
"Dist"
}
filter "configurations:Dist"
defines
{
"NK_DIST"
}
filter "configurations:Debug"
defines
{
"NK_DEBUG"
}
filter { "language:C++" }
architecture "x64"
filter { "language:C" }
architecture "x64"
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
local globalDefines = {
"TRACY_ENABLE",
"TRACY_ON_DEMAND"
}
group "Dependencies"
include "Nuake/dependencies/glfw_p5.lua"
include "Nuake/dependencies/glad_p5.lua"
include "Nuake/dependencies/assimp_p5.lua"
include "Nuake/dependencies/jolt_p5.lua"
include "Nuake/dependencies/soloud_p5.lua"
include "Nuake/dependencies/coral_p5.lua"
include "Nuake/dependencies/recastnavigation_p5.lua"
include "Nuake/dependencies/tracy_p5.lua"
include "Nuake/dependencies/yoga_p5.lua"
include "Nuake/dependencies/msdf-atlas-gen_p5.lua"
include "Nuake/dependencies/freetype_p5.lua"
group ""
include "NuakeNet/premake5.lua"
include "EditorNet/premake5.lua"
include "Nuake/src/Modules/Modules.lua"
project "Nuake"
location "Nuake"
kind "StaticLib"
staticruntime "On"
language "C++"
cppdialect "C++20"
local moduleSources = {}
if _ACTION then
local modulesDir = "Nuake/src/Modules"
local outputFilePath = path.join(modulesDir, "Modules.cpp")
-- Load and generate the modules file
local modules = loadModules(modulesDir)
moduleSources = generateModulesFile(modules, outputFilePath, "Nuake/src/Modules")
end
defines
{
table.unpack(globalDefines),
"_MBCS",
"IMGUI_DEFINE_MATH_OPERATORS",
}
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files
{
-- Main Sources
"%{prj.name}/Engine.h",
"%{prj.name}/Engine.cpp",
"%{prj.name}/src/*.h",
"%{prj.name}/src/*.cpp",
"%{prj.name}/src/AI/**.h",
"%{prj.name}/src/AI/**.cpp",
"%{prj.name}/src/Application/**.h",
"%{prj.name}/src/Application/**.cpp",
"%{prj.name}/src/Audio/**.h",
"%{prj.name}/src/Audio/**.cpp",
"%{prj.name}/src/Core/**.h",
"%{prj.name}/src/Core/**.cpp",
"%{prj.name}/src/FileSystem/**.h",
"%{prj.name}/src/FileSystem/**.cpp",
"%{prj.name}/src/Physics/**.h",
"%{prj.name}/src/Physics/**.cpp",
"%{prj.name}/src/Rendering/**.h",
"%{prj.name}/src/Rendering/**.cpp",
"%{prj.name}/src/Resource/**.h",
"%{prj.name}/src/Resource/**.cpp",
"%{prj.name}/src/Scene/**.h",
"%{prj.name}/src/Scene/**.cpp",
"%{prj.name}/src/Scripting/**.h",
"%{prj.name}/src/Scripting/**.cpp",
"%{prj.name}/src/Threading/**.h",
"%{prj.name}/src/Threading/**.cpp",
"%{prj.name}/src/UI/**.h",
"%{prj.name}/src/UI/**.cpp",
"%{prj.name}/src/Subsystems/**.h",
"%{prj.name}/src/Subsystems/**.cpp",
"%{prj.name}/src/Vendors/**.h",
"%{prj.name}/src/Vendors/**.cpp",
-- Vendor Sources
"%{prj.name}/src/Vendors/libmap/h/*.h",
"%{prj.name}/src/Vendors/libmap/c/*.c",
"%{prj.name}/src/Vendors/wren/src/vm/*.h",
"%{prj.name}/src/Vendors/wren/src/vm/*.c",
"%{prj.name}/src/Vendors/katana-parser/*.h",
"%{prj.name}/src/Vendors/katana-parser/*.c",
"%{prj.name}/src/Vendors/incbin/*.c",
"%{prj.name}/src/Vendors/incbin/*.h",
"%{prj.name}/src/Vendors/nanosvg/*.h",
-- Modules System
"%{prj.name}/src/Modules/Modules.h",
"%{prj.name}/src/Modules/Modules.cpp",
table.unpack(moduleSources)
}
includedirs
{
"%{prj.name}",
"%{prj.name}/src/Vendors",
"%{prj.name}/dependencies/glad/include",
"%{prj.name}/dependencies/glfw/include",
"%{prj.name}/dependencies/assimp/include",
"%{prj.name}/dependencies/JoltPhysics",
"%{prj.name}/src/Vendors/wren/src/include",
"%{prj.name}/src/Vendors/incbin",
"%{prj.name}/src/Vendors/nanosvg",
"%{prj.name}/dependencies/build",
"%{prj.name}/dependencies/soloud/include",
"%{prj.name}/dependencies/Coral/Coral.Native/Include",
"%{prj.name}/dependencies/recastnavigation/DebugUtils/Include",
"%{prj.name}/dependencies/recastnavigation/Detour/Include",
"%{prj.name}/dependencies/recastnavigation/DetourCrowd/Include",
"%{prj.name}/dependencies/recastnavigation/DetourTileCache/Include",
"%{prj.name}/dependencies/recastnavigation/Recast/Include",
"%{prj.name}/dependencies/yoga",
"%{prj.name}/dependencies/msdf-atlas-gen",
"%{prj.name}/dependencies/msdf-atlas-gen/msdfgen",
"%{prj.name}/dependencies/msdf-atlas-gen/msdfgen/include",
"%{prj.name}/dependencies/freetype/include",
"%{prj.name}/dependencies/tracy/public/tracy",
"%{prj.name}/dependencies/entt/src",
}
links
{
"soloud",
"tracy",
"yoga"
}
filter "system:linux"
defines
{
"GLFW_STATIC",
"NK_LINUX"
}
links
{
"glib-2.0"
}
buildoptions { "`pkg-config --cflags glib-2.0 pango gdk-pixbuf-2.0 atk`" }
linkoptions { "`pkg-config --libs glib-2.0 pango gdk-pixbuf-2.0`" }
includedirs
{
"/usr/include/gtk-3.0/",
"/usr/lib/glib-2.0/include",
"/usr/include/glib-2.0",
}
filter "system:windows"
staticruntime "On"
defines
{
"NK_WIN"
}
filter { "system:windows", "action:vs*"}
flags
{
"MultiProcessorCompile",
}
filter "configurations:Debug"
runtime "Debug"
symbols "on"
buildoptions { "/Zi" }
filter "configurations:Release"
runtime "Release"
optimize "on"
filter "configurations:Dist"
runtime "Release"
optimize "on"
project "NuakeRuntime"
location "Runtime"
kind "ConsoleApp"
language "C++"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
debugdir ("Editor")
files
{
"Runtime/Runtime.cpp"
}
includedirs
{
"%{prj.name}/../Nuake",
"%{prj.name}/../Nuake/src/Vendors",
"%{prj.name}/../Nuake/src/Vendors/nanosvg",
"%{prj.name}/../Nuake/dependencies/glad/include",
"%{prj.name}/../Nuake/dependencies/glfw/include",
"%{prj.name}/../Nuake/dependencies/assimp/include",
"%{prj.name}/../Nuake/dependencies/build",
"%{prj.name}/../Nuake/dependencies/JoltPhysics",
"%{prj.name}/../Nuake/dependencies/build",
"%{prj.name}/../Nuake/dependencies/soloud/include",
"/usr/include/gtk-3.0/",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DebugUtils/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/Detour/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DetourCrowd/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DetourTileCache/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/Recast/Include",
"%{prj.name}/../Nuake/dependencies/yoga",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen/msdfgen",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen/msdfgen/include",
"%{prj.name}/../Nuake/dependencies/freetype/include",
"%{prj.name}/../Nuake/dependencies/tracy/public/tracy",
"%{prj.name}/../Nuake/dependencies/entt/src",
}
libdirs
{
"%{prj.name}/../Nuake/dependencies/GLEW/lib/Release/x64",
"%{prj.name}/../Nuake/dependencies/assimp/lib/",
"%{prj.name}/../bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/Nuake/",
"%{prj.name}/../Nuake/src/Vendors/wren/src/include",
"%{prj.name}/../Nuake/dependencies/JoltPhysics/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/JoltPhysics/",
"%{prj.name}/../Nuake/dependencies/soloud/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}",
"%{prj.name}/../Nuake/dependencies/Coral/NetCore/",
"%{prj.name}/../Nuake/dependencies/freetype/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/Freetype"
}
links
{
"Nuake",
"glad",
"GLFW",
"assimp",
"JoltPhysics",
"soloud",
"Coral.Native",
"DebugUtils",
"Detour",
"DetourCrowd",
"DetourTileCache",
"Recast",
"tracy",
"yoga",
"msdf-gen",
"msdf-atlas-gen",
"Freetype"
}
defines {
table.unpack(globalDefines)
}
filter "system:windows"
cppdialect "C++20"
staticruntime "On"
defines {
"NK_WIN"
}
links
{
"opengl32.lib"
}
externalincludedirs { "%{prj.name}/../Nuake/dependencies/Coral/Coral.Native/Include/" }
postbuildcommands {
'{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/Coral.Managed.runtimeconfig.json" "%{wks.location}/%{prj.name}"'
}
filter { "system:windows", "action:vs*" }
flags
{
"MultiProcessorCompile",
}
filter "system:linux"
links
{
"GL",
"glfw",
"glad",
"X11",
"asound",
"glib-2.0",
"gtk-3",
"gobject-2.0"
}
includedirs
{
"/usr/include/gtk-3.0/",
"/usr/lib/glib-2.0/include",
"/usr/include/glib-2.0",
}
buildoptions { "`pkg-config --cflags glib-2.0 pango gdk-pixbuf-2.0 gtk-3 atk tk-3.0 glib-2.0`" }
linkoptions { "`pkg-config --libs glib-2.0 pango gdk-pixbuf-2.0 gtk-3 glib-2.0 lgobject-2.0`" }
filter "configurations:Debug"
runtime "Debug"
symbols "on"
defines
{
"NK_DEBUG"
}
buildoptions { "/Zi" }
filter "configurations:Release"
kind "WindowedApp"
runtime "Release"
optimize "on"
defines
{
"NK_DIST",
"WIN32_LEAN_AND_MEAN"
}
filter "configurations:Dist"
kind "WindowedApp"
runtime "Release"
optimize "on"
entrypoint "WinMainCRTStartup"
flags { }
defines
{
"NK_DIST",
"WIN32_LEAN_AND_MEAN"
}
project "Editor"
location "Editor"
targetname ("Nuake Engine")
kind "ConsoleApp"
language "C++"
cppdialect "C++20"
staticruntime "On"
dependson { "NuakeNet" }
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
debugdir ("%{prj.name}")
files
{
"%{prj.name}/Editor.cpp",
"%{prj.name}/src/**.cpp",
"%{prj.name}/src/**.h",
-- This isn't ideal, but it works...needs a proper way of doing this, but that's for another time
"Nuake/dependencies/entt/natvis/entt/*.natvis"
}
includedirs
{
"%{prj.name}/../Nuake",
"%{prj.name}/../Nuake/src/Vendors",
"%{prj.name}/../Nuake/src/Vendors/nanosvg",
"%{prj.name}/../Nuake/dependencies/glad/include",
"%{prj.name}/../Nuake/dependencies/glfw/include",
"%{prj.name}/../Nuake/dependencies/assimp/include",
"%{prj.name}/../Nuake/dependencies/build",
"%{prj.name}/../Nuake/dependencies/JoltPhysics",
"%{prj.name}/../Nuake/dependencies/build",
"%{prj.name}/../Nuake/dependencies/soloud/include",
"/usr/include/gtk-3.0/",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DebugUtils/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/Detour/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DetourCrowd/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/DetourTileCache/Include",
"%{prj.name}/../Nuake/dependencies/recastnavigation/Recast/Include",
"%{prj.name}/../Nuake/dependencies/yoga",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen/msdfgen",
"%{prj.name}/../Nuake/dependencies/msdf-atlas-gen/msdfgen/include",
"%{prj.name}/../Nuake/dependencies/freetype/include",
"%{prj.name}/../Nuake/dependencies/tracy/public/tracy",
"%{prj.name}/../Nuake/dependencies/entt/src",
}
libdirs
{
"%{prj.name}/../Nuake/dependencies/GLEW/lib/Release/x64",
"%{prj.name}/../Nuake/dependencies/assimp/lib/",
"%{prj.name}/../bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/Nuake/",
"%{prj.name}/../Nuake/src/Vendors/wren/src/include",
"%{prj.name}/../Nuake/dependencies/JoltPhysics/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/JoltPhysics/",
"%{prj.name}/../Nuake/dependencies/soloud/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}",
"%{prj.name}/../Nuake/dependencies/Coral/NetCore/",
"%{prj.name}/../Nuake/dependencies/freetype/bin/%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}/Freetype"
}
links
{
"Nuake",
"glad",
"GLFW",
"assimp",
"JoltPhysics",
"soloud",
"Coral.Native",
"DebugUtils",
"Detour",
"DetourCrowd",
"DetourTileCache",
"Recast",
"tracy",
"yoga",
"msdf-gen",
"msdf-atlas-gen",
"Freetype"
}
defines {
table.unpack(globalDefines)
}
filter "system:Windows"
links
{
"OpenGL32"
}
files
{
"%{prj.name}/*.rc",
"%{prj.name}/**.ico"
}
defines
{
"NK_WIN",
"IMGUI_DEFINE_MATH_OPERATORS"
}
externalincludedirs { "%{prj.name}/../Nuake/dependencies/Coral/Coral.Native/Include/" }
postbuildcommands {
'{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/Coral.Managed.runtimeconfig.json" "%{wks.location}/%{prj.name}"',
'{COPYFILE} "%{wks.location}/Nuake/dependencies/Coral/Coral.Managed/bin/%{cfg.buildcfg}/Coral.Managed.dll" "%{wks.location}/%{prj.name}"'
}
filter { "system:windows", "action:vs*"}
flags
{
"MultiProcessorCompile",
}
filter "system:linux"
links
{
"GL",
"glfw",
"glad",
"X11",
"asound",
"glib-2.0",
"gtk-3",
"gobject-2.0",
"asound"
}
buildoptions { "`pkg-config --cflags glib-2.0 pango gdk-pixbuf-2.0 gtk-3 atk tk-3.0 glib-2.0`" }
linkoptions { "`pkg-config --libs glib-2.0 pango gdk-pixbuf-2.0 gtk-3 glib-2.0 lgobject-2.0`" }
includedirs
{
"/usr/include/gtk-3.0/",
"/usr/lib/glib-2.0/include",
"/usr/include/glib-2.0",
}
defines
{
"GLFW_STATIC",
"NK_LINUX",
"IMGUI_DEFINE_MATH_OPERATORS"
}
filter "configurations:Debug"
runtime "Debug"
symbols "on"
defines
{
"WIN32_LEAN_AND_MEAN",
"IMGUI_DEFINE_MATH_OPERATORS"
}
buildoptions { "/Zi" }
filter "configurations:Release"
runtime "Release"
optimize "on"
filter "configurations:Dist"
runtime "Release"
optimize "on"
defines
{
"WIN32_LEAN_AND_MEAN",
"IMGUI_DEFINE_MATH_OPERATORS"
}
-- Removes the console for windows
--filter {"configurations:Dist", "platforms:windows"}
-- kind "WindowedApp"--
-- copy a file from the objects directory to the target directory
postbuildcommands {
--"{COPY} "Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll" " .. "./bin/" .. outputdir .. "/%{prj.name}/glfw3.dll"
}