Files
HardCompound/premake5.lua

99 lines
2.4 KiB
Lua

workspace("HardCompound")
architecture("x64")
startproject("HardCompound")
configurations({ "Debug", "Release" })
-- Variable definitions
SRCDIR = "src"
VENDOR = "vendor"
BUILD = "build"
project("HardCompound")
kind("ConsoleApp")
language("C++")
cppdialect("C++20")
staticruntime("on") -- Helps avoid missing DLL errors on Windows
targetdir(BUILD .. "/bin/%{cfg.buildcfg}")
objdir(BUILD .. "/obj/%{cfg.buildcfg}")
-- 1. Source Files
files({
-- Your Source Code
path.join(SRCDIR, "**.h"),
path.join(SRCDIR, "**.cpp"),
-- GLAD (Still C, works fine in C++ project)
path.join(VENDOR, "glad/src/glad.c"),
-- ImGui Core
path.join(VENDOR, "imgui/imgui.cpp"),
path.join(VENDOR, "imgui/imgui_draw.cpp"),
path.join(VENDOR, "imgui/imgui_tables.cpp"),
path.join(VENDOR, "imgui/imgui_widgets.cpp"),
-- path.join(VENDOR, "imgui/imgui_demo.cpp"), -- Good for testing
-- ImGui Backends (CRITICAL: Connects ImGui to GLFW/OpenGL)
path.join(VENDOR, "imgui/backends/imgui_impl_glfw.cpp"),
path.join(VENDOR, "imgui/backends/imgui_impl_opengl3.cpp"),
-- ImPlot
path.join(VENDOR, "implot/implot.cpp"),
path.join(VENDOR, "implot/implot_items.cpp"),
-- path.join(VENDOR, "implot/implot_demo.cpp"),
})
-- 2. Include Directories
includedirs({
SRCDIR,
path.join(VENDOR, "glad/include"),
path.join(VENDOR, "glfw/include"),
path.join(VENDOR, "duckdb/include"),
path.join(VENDOR, "mariadb/include"),
path.join(VENDOR, "imgui"), -- For imgui.h
path.join(VENDOR, "imgui/backends"), -- For imgui_impl_glfw.h
path.join(VENDOR, "implot"), -- For implot.h
})
-- 3. Configuration Filters
filter("configurations:Debug")
defines({ "DEBUG" })
symbols("On")
filter("configurations:Release")
defines({ "NDEBUG" })
optimize("On")
-- 4. Linux Linking
filter("system:linux")
defines({ "PLATFORM_LINUX" })
links({ "glfw", "duckdb", "dl", "pthread", "m" })
linkoptions({ "`pkg-config --libs libmariadb`" })
buildoptions({ "`pkg-config --cflags libmariadb`" })
-- 5. Windows Linking (MinGW Cross-Compile)
filter("system:windows")
defines({ "PLATFORM_WINDOWS" })
-- Ensure these paths exist and contain the .lib / .dll files
libdirs({
path.join(VENDOR, "glfw/lib"),
path.join(VENDOR, "duckdb/lib"),
path.join(VENDOR, "mariadb/lib"),
})
links({
"glfw3", -- Looks for libglfw3.a
"duckdb", -- Looks for duckdb.lib / libduckdb.a
"libmariadb", -- Looks for libmariadb.lib
"ws2_32",
"gdi32",
"opengl32",
"shlwapi",
"crypt32",
"secur32",
"dwmapi",
"winmm",
})