From 2464cbf74a9d31c7878cb461800ee6e5eeddf473 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Tue, 3 Mar 2026 07:22:49 +0100 Subject: feat: PTX backend for Nectar. Signed-off-by: Amlal El Mahrouss --- src/CommandLine/ptx-drv.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/CommandLine/ptx-drv.json | 21 +++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/CommandLine/ptx-drv.cpp create mode 100644 src/CommandLine/ptx-drv.json (limited to 'src/CommandLine') diff --git a/src/CommandLine/ptx-drv.cpp b/src/CommandLine/ptx-drv.cpp new file mode 100644 index 0000000..2e5a72f --- /dev/null +++ b/src/CommandLine/ptx-drv.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/ne-foss-org/nectar + +/// @file pef-amd64-cxxdrv.cc +/// @brief Nectar C++ frontend compiler for AMD64. + +#include +#include +#include +#include + +#ifdef __APPLE__ +static auto kPath = "/usr/local/lib/libCompilerKit.dylib"; +#else +static auto kPath = "/usr/lib/libCompilerKit.so"; +#endif + +static auto kSymbol = "CompilerNectarPTX"; + +Int32 main(Int32 argc, char const* argv[]) { + CompilerKit::ModuleLoader dylib; + dylib(kPath, kSymbol); + + CompilerKit::ModuleLoader::EntryT entrypoint_cxx = + reinterpret_cast(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; +} diff --git a/src/CommandLine/ptx-drv.json b/src/CommandLine/ptx-drv.json new file mode 100644 index 0000000..6372117 --- /dev/null +++ b/src/CommandLine/ptx-drv.json @@ -0,0 +1,21 @@ +{ + "compiler_path": "clang++", + "compiler_std": "c++20", + "headers_path": [ + "../include/CompilerKit", + "../../include", + "../include/CompilerKit/src/Detail" + ], + "sources_path": [ + "ptx-drv.cpp" + ], + "output_name": "ptx-necdrv", + "compiler_flags": [ + ], + "cpp_macros": [ + "__NECDRV__=202504", + "CK_POSIX", + "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" + ] +} + -- cgit v1.2.3