require "ecc/ecc" require "ninja/ninja" workspace "snake" architecture "x64" startproject"snake" configurations { "Release", "Debug" } defines { --"__STDC_LIMIT_MACROS=1" -- flac may or may not need this on modern computers } filter"system:linux" pic"On" -- fix warning when statically linking filter"" local project_dir = "./" if _ACTION and _ACTION:match("vs") then project_dir = "$(SolutionDir)" else project_dir = "%{wks.location}/" end output_dir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" intdir = project_dir .. "intermediate-files/" .. output_dir bindir = project_dir .. "bin/" .. output_dir libout = "lib/" .. output_dir group "Dependencies" include ("vendor/ogg/build-ogg.lua") include ("vendor/vorbis/build-vorbis.lua") include ("vendor/flac/build-flac.lua") include ("vendor/freetype/build-freetype.lua") include ("vendor/sfml/build-sfml.lua") include("vendor/imgui-sfml/build-imgui-sfml.lua") filter"" group"" 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-sfml" include_dir = project_dir .. "include" language "C++" cppdialect "C++20" systemversion "latest" kind "WindowedApp" targetname "snake" targetdir (bindir) objdir (intdir) debugdir (project_dir) links {"imgui-sfml", "sfml", "vorbis", "flac", "ogg", "freetype"} includedirs { "src", include_dir, sfmldir .. "/include", imguidir } files { "src/**.cpp", "include/**.h", "include/**.hpp", } --windows specific settings-- filter{"system:windows"} defines {"PLATFORM_WINDOWS", "SFML_STATIC", "IMGUI_SFML_STATIC_LIB"} staticruntime "off" links { "legacy_stdio_definitions", "opengl32", "gdi32", "winmm", "ws2_32" } filter {"system:windows", "configurations:debug"} defines{"_DEBUG", "_CONSOLE"} filter {"system:windows", "configurations:release"} defines{"NDEBUG"} --linux specific settings-- filter {"system:linux"} defines {"PLATFORM_LINUX"} links { "Xi", "Xrandr", "Xcursor", "X11", "udev", "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"