aboutsummaryrefslogtreecommitdiff
path: root/src/path_utils.cpp
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2026-02-05 10:31:47 +0100
committervimene <vincent.menegaux@gmail.com>2026-02-05 10:31:47 +0100
commitccf086c39f734a000aa3a2fac034f0620021fbdf (patch)
treec49547742909adb671b1e5a43cd042c02509b4b6 /src/path_utils.cpp
parentcbf7d23623b5bb2d2092cb6c86bc965138b4ea75 (diff)
downloadengine-ccf086c39f734a000aa3a2fac034f0620021fbdf.tar.gz
added back windows cross-compilation
Makefile.am is too ugly, but I don't have a better solution right now. - fused Makefile.am and src/Makefile.am - adding back windows cross-compilation - improved README.md a lot - added configure option to enable debug, which greatly simplifies development when writing shaders - removed dependency on LunarG's Vulkan SDK by having dependency only on Vulkan headers, library and slangc - removed print C++ header because I have an old MinGW which doesn't support it. It will be restored in the future - make every assets path relative to be able to build anywhere and run elsewhere - moved stb_image.h inside source directory instead of making it a dependency, which is more aligned with stb philosophy - moved assets inside source code to make it easy to compile and run the engine - improved configure.ac by checking Vulkan headers version directly in the configure script instead of within C code, which allows us to also do theses checks when cross-compiling
Diffstat (limited to 'src/path_utils.cpp')
-rw-r--r--src/path_utils.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/path_utils.cpp b/src/path_utils.cpp
new file mode 100644
index 0000000..df35ef1
--- /dev/null
+++ b/src/path_utils.cpp
@@ -0,0 +1,20 @@
+#include "path_utils.hpp"
+#include <optional>
+#include <filesystem>
+#ifdef _WIN32
+# include <windows.h>
+# include <tchar.h>
+#endif
+
+std::optional<std::filesystem::path> engine::path_utils::exe_path() noexcept {
+#if defined(_WIN32)
+ TCHAR filename[MAX_PATH];
+ if (!GetModuleFileName(NULL, filename, MAX_PATH))
+ return {};
+ return std::filesystem::path(filename);
+#elif defined(linux)
+ return std::filesystem::canonical("/proc/self/exe");
+#else
+# error "operating system not supported"
+#endif
+}