aboutsummaryrefslogtreecommitdiff
path: root/premake5.lua
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-29 03:11:42 +0200
committerhachem <im@hachem.wtf>2026-08-29 03:11:42 +0200
commita159f48900f1927b05d4b8f3d04459610eb9897e (patch)
treebcfd9b7910bd31581abee2c0a17b760aa18bf7e9 /premake5.lua
parent24d639224ca11112025289065d7538851606b56e (diff)
setup: prepare c rewrite
Diffstat (limited to 'premake5.lua')
-rw-r--r--premake5.lua131
1 files changed, 131 insertions, 0 deletions
diff --git a/premake5.lua b/premake5.lua
new file mode 100644
index 0000000..8aa81ca
--- /dev/null
+++ b/premake5.lua
@@ -0,0 +1,131 @@
+output_dir = "%{cfg.buildcfg}-%{cfg.system}"
+
+function setup_target()
+ targetdir ("bin/" .. output_dir)
+ objdir ("bin-int/" .. output_dir .. "/%{prj.name}")
+ staticruntime "On"
+end
+
+function setup_c_target()
+ setup_target()
+
+ filter "configurations:debug"
+ runtime "Debug"
+ symbols "On"
+ filter { "configurations:release", "configurations:dist" }
+ runtime "Release"
+ optimize "Speed"
+ filter "configurations:dist"
+ symbols "Off"
+ filter {}
+end
+
+newaction {
+ trigger = "clean",
+ description = "Remove build output and generated project files",
+
+ execute = function()
+ os.rmdir("bin")
+ os.rmdir("bin-int")
+ os.remove("Makefile")
+
+ for _, file in ipairs(os.matchfiles("*.make")) do
+ os.remove(file)
+ end
+
+ print("Cleaned build output and generated project files")
+ end
+}
+
+workspace "psi"
+ architecture "x64"
+ startproject "tester"
+ multiprocessorcompile "On"
+
+ configurations {
+ "debug",
+ "release",
+ "dist",
+ }
+
+ filter "system:windows"
+ defines "PSI_WINDOWS"
+ filter "system:linux"
+ defines "PSI_LINUX"
+ filter "system:macosx"
+ architecture "ARM64"
+ defines "PSI_MACOS"
+ filter {}
+
+project "psi"
+ kind "StaticLib"
+ language "C"
+ cdialect "C17"
+
+ setup_c_target()
+
+ files {
+ "src/**.h",
+ "src/**.c",
+ }
+
+ includedirs "src"
+
+ filter { "system:macosx or system:linux" }
+ buildoptions {
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ "-pedantic",
+ }
+ filter "system:windows"
+ systemversion "latest"
+ filter {}
+
+ filter "configurations:debug"
+ defines "PSI_DEBUG"
+ filter "configurations:release"
+ defines "PSI_RELEASE"
+ filter "configurations:dist"
+ defines "PSI_DIST"
+ filter {}
+
+project "tester"
+ kind "ConsoleApp"
+ language "C"
+ cdialect "C17"
+
+ setup_c_target()
+
+ files {
+ "examples/tester/**.h",
+ "examples/tester/**.c",
+ }
+
+ includedirs {
+ "src",
+ "examples/tester",
+ }
+
+ links "psi"
+
+ filter { "system:macosx or system:linux" }
+ links "m"
+
+ buildoptions {
+ "-Wall",
+ "-Wextra",
+ "-Werror",
+ "-pedantic",
+ }
+ filter "system:windows"
+ systemversion "latest"
+ filter {}
+
+ filter "configurations:debug"
+ defines "PSI_DEBUG"
+ filter "configurations:release"
+ defines "PSI_RELEASE"
+ filter "configurations:dist"
+ defines "PSI_DIST"
+ filter {}