snake/premake5.lua

163 lines
3.4 KiB
Lua

require "ecc/ecc"
require "ninja/ninja"
workspace "snake"
architecture "x64"
configurations
{
"Debug",
"Release"
}
prebuildcommands {
"git clone https://github.com/SFML/SFML.git vendor/SFML",
"cd vendor/SFML && git checkout 3.0.2",
}
filter "action:vs*"
prebuildcommands
{
"cd vendor/SFML && cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1 -DSFML_USE_STATIC_STD_LIBS=1 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=./lib"
}
project_dir = "$(SolutionDir)"
filter "action:gmake"
prebuildcommands
{
"cd vendor/SFML && cmake -S . -B build -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1",
"cd vendor/SFML && cmake --build build"
}
project_dir = "%{wks.location}/"
filter "action:premake-ninja"
prebuildcommands
{
"cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DSFML_BUILD_AUDIO=1 -DSFML_BUILD_GRAPHICS=1 -DSFML_BUILD_WINDOW=1",
"cmake --build build"
}
project_dir = "%{wks.location}/"
filter""
project "snake"
output_dir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
intdir = project_dir .. "intermediate-files/" .. output_dir
bindir = project_dir .. "bin/" .. output_dir
sfmldir = project_dir .. "vendor/SFML"
imguidir = project_dir .. "vendor/imgui"
include_dir = project_dir .. "include"
language "C++"
cppdialect "C++20"
systemversion "latest"
kind "WindowedApp"
targetname "snake"
targetdir (bindir)
objdir (intdir)
debugdir (project_dir)
includedirs
{
"src",
include_dir,
sfmldir .. "/include",
imguidir
}
libdirs (sfmldir .. "/build/lib")
files
{
"src/**.cpp",
"include/**.h",
"include/**.hpp",
"vendor/imgui/imgui.cpp",
"vendor/imgui/imgui_draw.cpp",
"vendor/imgui/imgui_tables.cpp",
"vendor/imgui/imgui_widgets.cpp",
"vendor/imgui/imgui-SFML.cpp"
}
--windows specific settings--
filter{"system:windows"}
defines {"PLATFORM_WINDOWS", "SFML_STATIC"}
staticruntime "on"
filter {"system:windows", "configurations:debug"}
defines{"_DEBUG", "_CONSOLE"}
links
{
"sfml-main-d",
"sfml-graphics-s-d",
"sfml-window-s-d",
"opengl32",
"gdi32",
"freetyped",
"sfml-audio-s-d",
"flacd",
"vorbisfiled",
"vorbisd",
"oggd",
"sfml-system-s-d",
"winmm"
}
filter {"system:windows", "configurations:release"}
defines{"NDEBUG"}
links
{
"sfml-main",
"sfml-graphics-s",
"sfml-window-s",
"opengl32",
"gdi32",
"freetype",
"sfml-audio-s",
"flac",
"vorbisfile",
"vorbis",
"ogg",
"sfml-system-s",
"winmm"
}
--linux specific settings--
filter {"system:linux"}
defines {"PLATFORM_LINUX"}
links
{
"sfml-graphics-s",
"sfml-window-s",
"sfml-audio-s",
"sfml-system-s",
"Xi",
"Xrandr",
"Xcursor",
"freetype",
"X11",
"udev",
"FLAC",
"ogg",
"vorbis",
"vorbisenc",
"vorbisfile",
"pthread",
"OpenGL",
}
--config settings--
filter "configurations:debug"
defines {"LOG_ENABLE", "GAME_DEBUG"}
symbols "on"
runtime "Debug"
warnings "Extra"
filter "configurations:release"
defines {"GAME_RELEASE"}
optimize "Speed"
inlining "Auto"
symbols "off"
runtime "Release"