From 14ed88e58517890f5cce1bb9ab5cfb9e94bcfbf6 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 4 Dec 2025 12:36:11 +0100 Subject: chore: Breaking API changes and work in progress examples for NeCTI SDK. Signed-off-by: Amlal El Mahrouss --- src/CompilerKit/AE.h | 2 +- src/CompilerKit/CodeGenerator.h | 2 +- src/CompilerKit/Config.h | 178 ----------------------- src/CompilerKit/ErrorID.h | 2 +- src/CompilerKit/ErrorOr.h | 2 +- src/CompilerKit/PEF.h | 2 +- src/CompilerKit/Ref.h | 2 +- src/CompilerKit/StringKit.h | 2 +- src/CompilerKit/XCOFF.h | 2 +- src/CompilerKit/detail/Config.h | 65 +++++++++ src/CompilerKit/detail/PreConfig.h | 120 +++++++++++++++ src/CompilerKit/impl/32x0.h | 2 +- src/CompilerKit/impl/64x0.h | 2 +- src/CompilerKit/impl/Aarch64.h | 2 +- src/CompilerKit/impl/X64.h | 2 +- src/CompilerKit/src/Backend/AssemblerARM64.cc | 2 +- src/CompilerKit/src/Backend/AssemblerPowerPC.cc | 2 +- src/CompilerKit/src/Frontend/CCompiler64x0.cc | 2 +- src/CompilerKit/src/Frontend/CCompilerARM64.cc | 2 +- src/CompilerKit/src/Frontend/CCompilerPower64.cc | 2 +- src/CompilerKit/src/Linker/DynamicLinker64PEF.cc | 2 +- src/CompilerKit/utils/CompilerUtils.h | 2 +- src/CompilerKit/utils/DylibHelpers.h | 2 +- 23 files changed, 205 insertions(+), 198 deletions(-) delete mode 100644 src/CompilerKit/Config.h create mode 100644 src/CompilerKit/detail/Config.h create mode 100644 src/CompilerKit/detail/PreConfig.h (limited to 'src/CompilerKit') diff --git a/src/CompilerKit/AE.h b/src/CompilerKit/AE.h index a856689..4692d04 100644 --- a/src/CompilerKit/AE.h +++ b/src/CompilerKit/AE.h @@ -10,7 +10,7 @@ #ifndef _NECTI_AE_H_ #define _NECTI_AE_H_ -#include +#include #include #define kAEIdentVersion (0x0122) diff --git a/src/CompilerKit/CodeGenerator.h b/src/CompilerKit/CodeGenerator.h index f3f71d0..836d588 100644 --- a/src/CompilerKit/CodeGenerator.h +++ b/src/CompilerKit/CodeGenerator.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include #include diff --git a/src/CompilerKit/Config.h b/src/CompilerKit/Config.h deleted file mode 100644 index 691d51c..0000000 --- a/src/CompilerKit/Config.h +++ /dev/null @@ -1,178 +0,0 @@ -/* ======================================== - - Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license - -======================================== */ - -#ifndef __NECTI_DEFINES_H__ -#define __NECTI_DEFINES_H__ - -/// =========================================================== /// -/// @file Config.h -/// @author Amlal El Mahrouss -/// @brief Basic defines and types for CompilerKit. -/// =========================================================== /// - -#ifndef Yes -#define Yes true -#endif // ifndef Yes - -#ifndef No -#define No false -#endif // ifndef No - -#ifndef YES -#define YES true -#endif // ifndef YES - -#ifndef NO -#define NO false -#endif // ifndef NO - -#define SizeType size_t - -#define VoidPtr void* -#define voidPtr VoidPtr - -#define UIntPtr uintptr_t - -#define Int64 int64_t -#define UInt64 uint64_t - -#define Int32 int -#define UInt32 unsigned - -#define Int16 int16_t -#define UInt16 uint16_t - -#define Int8 int8_t -#define UInt8 uint8_t - -#define Char char - -#include -#include -#include -#include -#include -#include - -#define kDistVersion "v0.0.7-compilerkit" -#define kDistVersionBCD 0x0002 - -#define ToString(X) Stringify(X) -#define Stringify(X) #X - -#define kDistRelease ToString(kDistReleaseBranch) - -#ifndef kDistRelease - -#define kDistVersion "v0.0.7-compilerkit" -#define kDistVersionBCD 0x0002 - -#define ToString(X) Stringify(X) -#define Stringify(X) #X - -#define kDistRelease ToString(kDistReleaseBranch) - -#endif // !kDistRelease - -#define MUST_PASS(E) assert(E) - -#ifndef __FORCE_STRLEN -#define __FORCE_STRLEN 1 - -#define string_length(len) strlen(len) -#endif - -#ifndef __FORCE_MEMCPY -#define __FORCE_MEMCPY 1 - -#define rt_copy_memory(dst, src, len) memcpy(dst, src, len) -#endif - -#define ATTRIBUTE(X) __attribute__((X)) -#define PACKED ATTRIBUTE(packed) - -#define kObjectFileExt ".obj" -#define kBinaryFileExt ".bin" - -#define kAsmFileExts {".64x", ".32x", ".masm", ".s", ".S", ".asm", ".x64"} - -#define kAsmFileExtsMax (7U) - -#define NECTI_MODULE(name) extern "C" int name(int argc, char** argv) - -#ifdef MSVC -#pragma scalar_storage_order big - endian -#endif // ifdef MSVC - -#define NECTI_COPY_DELETE(KLASS) \ - KLASS& operator=(const KLASS&) = delete; \ - KLASS(const KLASS&) = delete; - -#define NECTI_COPY_DEFAULT(KLASS) \ - KLASS& operator=(const KLASS&) = default; \ - KLASS(const KLASS&) = default; - -#define NECTI_MOVE_DELETE(KLASS) \ - KLASS& operator=(KLASS&&) = delete; \ - KLASS(KLASS&&) = delete; - -#define NECTI_MOVE_DEFAULT(KLASS) \ - KLASS& operator=(KLASS&&) = default; \ - KLASS(KLASS&&) = default; - -#define CK_IMPORT_C extern "C" -#define CK_IMPORT extern -namespace CompilerKit { -inline constexpr int kBaseYear = 1900; - -typedef std::string STLString; - -inline STLString current_date() noexcept { - auto time_data = time(nullptr); - auto time_struct = gmtime(&time_data); - - STLString fmt = std::to_string(kBaseYear + time_struct->tm_year); - - fmt += "-"; - fmt += std::to_string(time_struct->tm_mon + 1); - fmt += "-"; - fmt += std::to_string(time_struct->tm_mday); - - return fmt; -} - -inline bool to_str(Char* str, Int32 limit, Int32 base) noexcept { - if (limit == 0) return false; - - Int32 copy_limit = limit; - Int32 cnt = 0; - Int32 ret = base; - - while (limit != 1) { - ret = ret % 10; - str[cnt] = ret; - - ++cnt; - --limit; - --ret; - } - - str[copy_limit] = '\0'; - return true; -} - -inline bool install_signal(Int32 signal, void (*handler)(int)) noexcept { - if (handler == nullptr) return false; - - if (::signal(signal, handler) == SIG_ERR) { - return false; - } - - return true; -} -} // namespace CompilerKit - -#endif /* ifndef __NECTI_DEFINES_H__ */ diff --git a/src/CompilerKit/ErrorID.h b/src/CompilerKit/ErrorID.h index 1b1e8e8..5781842 100644 --- a/src/CompilerKit/ErrorID.h +++ b/src/CompilerKit/ErrorID.h @@ -9,7 +9,7 @@ #pragma once -#include +#include /// =========================================================== /// /// @file ErrorID.h diff --git a/src/CompilerKit/ErrorOr.h b/src/CompilerKit/ErrorOr.h index 9ab86fb..3a8f160 100644 --- a/src/CompilerKit/ErrorOr.h +++ b/src/CompilerKit/ErrorOr.h @@ -15,7 +15,7 @@ /// @brief ErrorOr for CompilerKit. /// =========================================================== /// -#include +#include #include #include diff --git a/src/CompilerKit/PEF.h b/src/CompilerKit/PEF.h index ad47efd..68a4f9a 100644 --- a/src/CompilerKit/PEF.h +++ b/src/CompilerKit/PEF.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include // @file PEF.h diff --git a/src/CompilerKit/Ref.h b/src/CompilerKit/Ref.h index 58e5ffd..f66e8c1 100644 --- a/src/CompilerKit/Ref.h +++ b/src/CompilerKit/Ref.h @@ -10,7 +10,7 @@ #pragma once -#include +#include namespace CompilerKit { /// @author Amlal El Mahrouss diff --git a/src/CompilerKit/StringKit.h b/src/CompilerKit/StringKit.h index 253c6ce..251ab4e 100644 --- a/src/CompilerKit/StringKit.h +++ b/src/CompilerKit/StringKit.h @@ -10,7 +10,7 @@ #ifndef __NECTI_STRINGKIT__ #define __NECTI_STRINGKIT__ -#include +#include #include #include diff --git a/src/CompilerKit/XCOFF.h b/src/CompilerKit/XCOFF.h index e9c1f2e..64828b9 100644 --- a/src/CompilerKit/XCOFF.h +++ b/src/CompilerKit/XCOFF.h @@ -14,7 +14,7 @@ #ifndef _NECTI_XCOFF_H_ #define _NECTI_XCOFF_H_ -#include +#include #define kXCOFF64Magic 0x01F7 diff --git a/src/CompilerKit/detail/Config.h b/src/CompilerKit/detail/Config.h new file mode 100644 index 0000000..1b2d2ae --- /dev/null +++ b/src/CompilerKit/detail/Config.h @@ -0,0 +1,65 @@ +/* ======================================== + + Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license + +======================================== */ + +#pragma once + +/// =========================================================== /// +/// @file detail/Config.h +/// @author Amlal El Mahrouss +/// @brief Basic defines and types for CompilerKit. +/// =========================================================== /// + +#include + +namespace CompilerKit { +inline constexpr int kBaseYear = 1900; + +typedef std::string STLString; + +inline STLString current_date() noexcept { + auto time_data = time(nullptr); + auto time_struct = gmtime(&time_data); + + STLString fmt = std::to_string(kBaseYear + time_struct->tm_year); + + fmt += "-"; + fmt += std::to_string(time_struct->tm_mon + 1); + fmt += "-"; + fmt += std::to_string(time_struct->tm_mday); + + return fmt; +} + +inline bool to_str(Char* str, Int32 limit, Int32 base) noexcept { + if (limit == 0) return false; + + Int32 copy_limit = limit; + Int32 cnt = 0; + Int32 ret = base; + + while (limit != 1) { + ret = ret % 10; + str[cnt] = ret; + + ++cnt; + --limit; + --ret; + } + + str[copy_limit] = '\0'; + return true; +} + +inline bool install_signal(Int32 signal, void (*handler)(int)) noexcept { + if (handler == nullptr) return false; + + if (::signal(signal, handler) == SIG_ERR) { + return false; + } + + return true; +} +} // namespace CompilerKit diff --git a/src/CompilerKit/detail/PreConfig.h b/src/CompilerKit/detail/PreConfig.h new file mode 100644 index 0000000..6742c53 --- /dev/null +++ b/src/CompilerKit/detail/PreConfig.h @@ -0,0 +1,120 @@ +/* ======================================== + + Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license + +======================================== */ + +#pragma once + +#ifndef Yes +#define Yes true +#endif // ifndef Yes + +#ifndef No +#define No false +#endif // ifndef No + +#ifndef YES +#define YES true +#endif // ifndef YES + +#ifndef NO +#define NO false +#endif // ifndef NO + +#define SizeType size_t + +#define VoidPtr void* +#define voidPtr VoidPtr + +#define UIntPtr uintptr_t + +#define Int64 int64_t +#define UInt64 uint64_t + +#define Int32 int +#define UInt32 unsigned + +#define Int16 int16_t +#define UInt16 uint16_t + +#define Int8 int8_t +#define UInt8 uint8_t + +#define Char char + +#include +#include +#include +#include +#include +#include + +#define kDistVersion "v0.0.7-compilerkit" +#define kDistVersionBCD 0x0002 + +#define ToString(X) Stringify(X) +#define Stringify(X) #X + +#define kDistRelease ToString(kDistReleaseBranch) + +#ifndef kDistRelease + +#define kDistVersion "v0.0.7-compilerkit" +#define kDistVersionBCD 0x0002 + +#define ToString(X) Stringify(X) +#define Stringify(X) #X + +#define kDistRelease ToString(kDistReleaseBranch) + +#endif // !kDistRelease + +#define MUST_PASS(E) assert(E) + +#ifndef __FORCE_STRLEN +#define __FORCE_STRLEN 1 + +#define string_length(len) strlen(len) +#endif + +#ifndef __FORCE_MEMCPY +#define __FORCE_MEMCPY 1 + +#define rt_copy_memory(dst, src, len) memcpy(dst, src, len) +#endif + +#define ATTRIBUTE(X) __attribute__((X)) +#define PACKED ATTRIBUTE(packed) + +#define kObjectFileExt ".obj" +#define kBinaryFileExt ".bin" + +#define kAsmFileExts {".64x", ".32x", ".masm", ".s", ".S", ".asm", ".x64"} + +#define kAsmFileExtsMax (7U) + +#define NECTI_MODULE(name) extern "C" int name(int argc, char** argv) + +#ifdef MSVC +#pragma scalar_storage_order big - endian +#endif // ifdef MSVC + +#define NECTI_COPY_DELETE(KLASS) \ + KLASS& operator=(const KLASS&) = delete; \ + KLASS(const KLASS&) = delete; + +#define NECTI_COPY_DEFAULT(KLASS) \ + KLASS& operator=(const KLASS&) = default; \ + KLASS(const KLASS&) = default; + +#define NECTI_MOVE_DELETE(KLASS) \ + KLASS& operator=(KLASS&&) = delete; \ + KLASS(KLASS&&) = delete; + +#define NECTI_MOVE_DEFAULT(KLASS) \ + KLASS& operator=(KLASS&&) = default; \ + KLASS(KLASS&&) = default; + +#define CK_IMPORT_C extern "C" +#define CK_IMPORT extern diff --git a/src/CompilerKit/impl/32x0.h b/src/CompilerKit/impl/32x0.h index f55e4a6..625e09e 100644 --- a/src/CompilerKit/impl/32x0.h +++ b/src/CompilerKit/impl/32x0.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include // @brief Open32x0 support. diff --git a/src/CompilerKit/impl/64x0.h b/src/CompilerKit/impl/64x0.h index cc521f1..ea16bca 100644 --- a/src/CompilerKit/impl/64x0.h +++ b/src/CompilerKit/impl/64x0.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include // @brief Open64x0 support. diff --git a/src/CompilerKit/impl/Aarch64.h b/src/CompilerKit/impl/Aarch64.h index be052c0..d2eb197 100644 --- a/src/CompilerKit/impl/Aarch64.h +++ b/src/CompilerKit/impl/Aarch64.h @@ -6,7 +6,7 @@ Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license #pragma once -#include +#include #include /// @brief ARM64 encoding support. diff --git a/src/CompilerKit/impl/X64.h b/src/CompilerKit/impl/X64.h index f97812d..deba1b3 100644 --- a/src/CompilerKit/impl/X64.h +++ b/src/CompilerKit/impl/X64.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include // @brief AMD64 support. diff --git a/src/CompilerKit/src/Backend/AssemblerARM64.cc b/src/CompilerKit/src/Backend/AssemblerARM64.cc index bad841b..78cba1c 100644 --- a/src/CompilerKit/src/Backend/AssemblerARM64.cc +++ b/src/CompilerKit/src/Backend/AssemblerARM64.cc @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/CompilerKit/src/Backend/AssemblerPowerPC.cc b/src/CompilerKit/src/Backend/AssemblerPowerPC.cc index 71b41be..0ad59d2 100644 --- a/src/CompilerKit/src/Backend/AssemblerPowerPC.cc +++ b/src/CompilerKit/src/Backend/AssemblerPowerPC.cc @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/CompilerKit/src/Frontend/CCompiler64x0.cc b/src/CompilerKit/src/Frontend/CCompiler64x0.cc index 45306d7..8cceb37 100644 --- a/src/CompilerKit/src/Frontend/CCompiler64x0.cc +++ b/src/CompilerKit/src/Frontend/CCompiler64x0.cc @@ -1185,7 +1185,7 @@ class AssemblyCCInterface final CK_ASSEMBLY_INTERFACE { ///////////////////////////////////////////////////////////////////////////////////////// -#include +#include #define kPrintF printf #define kSplashCxx() kPrintF(kWhite "NeCTI C Driver, %s, (c) Amlal El Mahrouss\n", kDistVersion) diff --git a/src/CompilerKit/src/Frontend/CCompilerARM64.cc b/src/CompilerKit/src/Frontend/CCompilerARM64.cc index b519193..ffee4a8 100644 --- a/src/CompilerKit/src/Frontend/CCompilerARM64.cc +++ b/src/CompilerKit/src/Frontend/CCompilerARM64.cc @@ -1184,7 +1184,7 @@ class AssemblyCCInterface final CK_ASSEMBLY_INTERFACE { ///////////////////////////////////////////////////////////////////////////////////////// -#include +#include #define kPrintF printf #define kSplashCxx() kPrintF(kWhite "NeCTI C Driver, %s, (c) Amlal El Mahrouss\n", kDistVersion) diff --git a/src/CompilerKit/src/Frontend/CCompilerPower64.cc b/src/CompilerKit/src/Frontend/CCompilerPower64.cc index f67040d..cee3cd2 100644 --- a/src/CompilerKit/src/Frontend/CCompilerPower64.cc +++ b/src/CompilerKit/src/Frontend/CCompilerPower64.cc @@ -1202,7 +1202,7 @@ class AssemblyMountpointCLang final CK_ASSEMBLY_INTERFACE { ///////////////////////////////////////////////////////////////////////////////////////// -#include +#include #define kPrintF printf #define kSplashCxx() kPrintF(kWhite "cc, %s, (c) Amlal El Mahrouss\n", kDistVersion) diff --git a/src/CompilerKit/src/Linker/DynamicLinker64PEF.cc b/src/CompilerKit/src/Linker/DynamicLinker64PEF.cc index 7d3cfee..b5e21f1 100644 --- a/src/CompilerKit/src/Linker/DynamicLinker64PEF.cc +++ b/src/CompilerKit/src/Linker/DynamicLinker64PEF.cc @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/CompilerKit/utils/CompilerUtils.h b/src/CompilerKit/utils/CompilerUtils.h index 1494250..ebde2b9 100644 --- a/src/CompilerKit/utils/CompilerUtils.h +++ b/src/CompilerKit/utils/CompilerUtils.h @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/CompilerKit/utils/DylibHelpers.h b/src/CompilerKit/utils/DylibHelpers.h index ca7af38..6b03823 100644 --- a/src/CompilerKit/utils/DylibHelpers.h +++ b/src/CompilerKit/utils/DylibHelpers.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include -- cgit v1.2.3