/* ======================================== Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license ======================================== */ /// @file cxxdrv.cc /// @brief NeCTI C++ frontend compiler. #include #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 = "CompilerCLangARM64"; Int32 main(Int32 argc, Char const* argv[]) { CompilerKitDylib handler = dlopen(kPath, RTLD_LAZY | RTLD_GLOBAL); if (!handler) { kStdOut; std::printf("error: Could not load dylib in %s: %s\n", kPath, dlerror()); return EXIT_FAILURE; } CompilerKitEntrypoint entrypoint_cxx = (CompilerKitEntrypoint) dlsym(handler, kSymbol); if (!entrypoint_cxx) { kStdOut; std::printf("error: Could not find entrypoint in %s: %s\n", kPath, dlerror()); dlclose(handler); return EXIT_FAILURE; } auto ret = (entrypoint_cxx(argc, argv) == NECTI_SUCCESS) ? EXIT_SUCCESS : EXIT_FAILURE; dlclose(handler); return ret; }