99 lines
2.4 KiB
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",
|
||
|
|
})
|