diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-02-22 06:22:26 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-02-22 06:22:26 +0100 |
| commit | 877de2b648ae76fa150f75269a23b8ec7476ca5f (patch) | |
| tree | f4f2f4ceaa82fc6920fb98ff189632ceca396330 /src/CommandLine/pef-amd64-asm.cpp | |
| parent | 2e2af63ba5fc011a0a0bba639ff776ce66001f50 (diff) | |
chore: .cc to .cpp conversion, define CK_POSIX in frontends, new driver system for Nectar/C++ frontend.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/CommandLine/pef-amd64-asm.cpp')
| -rw-r--r-- | src/CommandLine/pef-amd64-asm.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/CommandLine/pef-amd64-asm.cpp b/src/CommandLine/pef-amd64-asm.cpp new file mode 100644 index 0000000..3ca4639 --- /dev/null +++ b/src/CommandLine/pef-amd64-asm.cpp @@ -0,0 +1,37 @@ +// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Licensed under the Apache License, Version 2.0 (See accompanying +// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) +// Official repository: https://github.com/nekernel-org/nectar + +/// @file pef-amd64-asm.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 = "AssemblerMainAMD64"; + +Int32 main(Int32 argc, Char const* argv[]) { + CompilerKit::ModuleLoader dylib; + dylib(kPath, kSymbol); + + CompilerKit::ModuleLoader::EntryT entrypoint_cxx = + reinterpret_cast<CompilerKit::ModuleLoader::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) == NECTAR_SUCCESS) ? EXIT_SUCCESS : EXIT_FAILURE; +} |
