summaryrefslogtreecommitdiffhomepage
path: root/src/CommandLine/pef-amd64-cxxdrv.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-12 02:34:07 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-12 02:37:30 +0100
commitfacb3edec9fd275d5a8fcabaa87f768087255768 (patch)
tree587c1fdd1e4b09a3c0f5243af46f7d09ac3722fd /src/CommandLine/pef-amd64-cxxdrv.cc
parent37b8e34dc54f572fbfbd135742fa11c21c5e67c1 (diff)
chore! breaking API changes, rename project to Nectar, instead of NeCTI.v0.0.9
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/CommandLine/pef-amd64-cxxdrv.cc')
-rw-r--r--src/CommandLine/pef-amd64-cxxdrv.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/CommandLine/pef-amd64-cxxdrv.cc b/src/CommandLine/pef-amd64-cxxdrv.cc
new file mode 100644
index 0000000..1bd7c3c
--- /dev/null
+++ b/src/CommandLine/pef-amd64-cxxdrv.cc
@@ -0,0 +1,38 @@
+/* ========================================
+
+ Copyright (C) 2024-2025 Amlal El Mahrouss, licensed under the Apache 2.0 license
+
+======================================== */
+
+/// @file pef-amd64-cxxdrv.cc
+/// @brief Nectar C++ frontend compiler for AMD64.
+
+#include <CompilerKit/Detail/Config.h>
+#include <CompilerKit/ErrorID.h>
+#include <CompilerKit/Utilities/Compiler.h>
+#include <CompilerKit/Utilities/DLL.h>
+
+#ifdef __APPLE__
+static auto kPath = "/usr/local/lib/libCompilerKit.dylib";
+#else
+static auto kPath = "/usr/lib/libCompilerKit.so";
+#endif
+
+static auto kSymbol = "CompilerCPlusPlusAMD64";
+
+Int32 main(Int32 argc, Char const* argv[]) {
+ CompilerKit::DLLLoader dylib;
+ dylib(kPath, kSymbol);
+
+ CompilerKit::DLLLoader::EntryT entrypoint_cxx =
+ reinterpret_cast<CompilerKit::DLLLoader::EntryT>(dylib.fEntrypoint);
+
+ if (!entrypoint_cxx) {
+ kStdOut;
+ std::printf("error: Could not find entrypoint in %s: %s\n", kPath, dlerror());
+
+ return EXIT_FAILURE;
+ }
+
+ return (entrypoint_cxx(argc, argv) == NECTI_SUCCESS) ? EXIT_SUCCESS : EXIT_FAILURE;
+}