From a159f48900f1927b05d4b8f3d04459610eb9897e Mon Sep 17 00:00:00 2001 From: hachem Date: Sat, 29 Aug 2026 03:11:42 +0200 Subject: setup: prepare c rewrite --- .gitignore | 25 +++++++-- examples/tester/main.c | 9 ++++ examples/tester/main.rs | 2 + premake5.lua | 131 ++++++++++++++++++++++++++++++++++++++++++++++++ src/psi.c | 6 +++ src/psi.h | 7 +++ 6 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 examples/tester/main.c create mode 100644 premake5.lua create mode 100644 src/psi.c create mode 100644 src/psi.h diff --git a/.gitignore b/.gitignore index 476e319..f3f4346 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,29 @@ +.DS_Store +.cache/ + +.vs/ .vscode/ .idea/ -.vs/ +compile_flags.txt +compile_commands.json + +# premake / build output +bin/ +bin-int/ +build/ +builddir/ + +*.make +Makefile + +*.sln +*.vcxproj +*.vcxproj.* + +# rust (reference sources during the port) debug/ target/ - Cargo.lock **/*.rs.bk -*.pdb \ No newline at end of file +*.pdb diff --git a/examples/tester/main.c b/examples/tester/main.c new file mode 100644 index 0000000..9a9428f --- /dev/null +++ b/examples/tester/main.c @@ -0,0 +1,9 @@ +#include + +#include "psi.h" + +int main(void) +{ + printf("psi %s\n", psi_version()); + return 0; +} diff --git a/examples/tester/main.rs b/examples/tester/main.rs index 8a9a41c..ecebd34 100644 --- a/examples/tester/main.rs +++ b/examples/tester/main.rs @@ -67,6 +67,7 @@ fn main() { if run_clifford { clifford::run_all(&mut results); } + if run_non_clifford { non_clifford::run_all(&mut results); @@ -91,6 +92,7 @@ fn main() { if run_bench { benchmarks::run_all(&mut results); } + if !results.is_empty() { print_benchmark_table(&results); 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 {} diff --git a/src/psi.c b/src/psi.c new file mode 100644 index 0000000..6be2831 --- /dev/null +++ b/src/psi.c @@ -0,0 +1,6 @@ +#include "psi.h" + +const char *psi_version(void) +{ + return "0.1.0"; +} diff --git a/src/psi.h b/src/psi.h new file mode 100644 index 0000000..8c62319 --- /dev/null +++ b/src/psi.h @@ -0,0 +1,7 @@ +#pragma once + +#define PSI_VERSION_MAJOR 0 +#define PSI_VERSION_MINOR 1 +#define PSI_VERSION_PATCH 0 + +const char *psi_version(void); -- cgit v1.3