From a3ea256d00e5aac45574c7c8b076b60630f73a95 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 24 Jul 2025 09:15:17 +0100 Subject: feat! refactor! Breaking changes of the NeBuild system. Working on a TOML backend, refactored source code namespace. And add 'toml++' vendor library. See commit details. Signed-off-by: Amlal El Mahrouss --- dev/BuildKit/Defines.h | 30 ++++++++++++++++++++++++++++++ dev/BuildKit/IManifestBuilder.h | 9 ++++----- dev/BuildKit/Imports.h | 23 +++++++++++++++++++++++ dev/BuildKit/Includes.h | 17 ----------------- dev/BuildKit/JSONManifestBuilder.h | 6 +++--- dev/BuildKit/Macros.h | 34 ---------------------------------- dev/BuildKit/TOMLManifestBuilder.h | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 93 insertions(+), 59 deletions(-) create mode 100644 dev/BuildKit/Defines.h create mode 100644 dev/BuildKit/Imports.h delete mode 100644 dev/BuildKit/Includes.h delete mode 100644 dev/BuildKit/Macros.h create mode 100644 dev/BuildKit/TOMLManifestBuilder.h (limited to 'dev/BuildKit') diff --git a/dev/BuildKit/Defines.h b/dev/BuildKit/Defines.h new file mode 100644 index 0000000..d408058 --- /dev/null +++ b/dev/BuildKit/Defines.h @@ -0,0 +1,30 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +// ============================================================= // + +#pragma once + +#include + +#define LIKELY(ARG) ((ARG) ? assert(false) : ((void) 0)) +#define UNLIKELY(ARG) LIKELY(!(ARG)) + +#define LIBNEBUILD_VERSION "v0.0.1-libNeBuild" + +#define LIBNEBUILD_VERSION_BCD 0x0001 + +#define LIBNEBUILD_VERSION_MAJOR 1 +#define LIBNEBUILD_VERSION_MINOR 1 +#define LIBNEBUILD_VERSION_PATCH 0 + +#define LIBNEBUILD_UNUSED(X) ((void) X) + +namespace NeBuild::Logger { +/// @brief replacement for std::cout for NeBuild logging. +inline std::ostream& info() noexcept { + auto& out = std::cout; + out << rang::fg::red << "nebuild: " << rang::style::reset; + return out; +} +} // namespace NeBuild::Logger diff --git a/dev/BuildKit/IManifestBuilder.h b/dev/BuildKit/IManifestBuilder.h index 065bec3..a0e5d85 100644 --- a/dev/BuildKit/IManifestBuilder.h +++ b/dev/BuildKit/IManifestBuilder.h @@ -5,12 +5,11 @@ #pragma once -#include -#include +#include -#define NEBUILD_MANIFEST_BUILDER : public BTB::IManifestBuilder +#define NEBUILD_MANIFEST_BUILDER : public NeBuild::IManifestBuilder -namespace BTB { +namespace NeBuild { /// @brief Builder interface class. /// @note This class is meant to be used as an interface. class IManifestBuilder { @@ -29,4 +28,4 @@ class IManifestBuilder { virtual bool buildTarget(int arg_sz, const char* arg_val, const bool dry_run = false) = 0; virtual const char* buildSystem() = 0; }; -} // namespace BTB \ No newline at end of file +} // namespace NeBuild \ No newline at end of file diff --git a/dev/BuildKit/Imports.h b/dev/BuildKit/Imports.h new file mode 100644 index 0000000..b365dca --- /dev/null +++ b/dev/BuildKit/Imports.h @@ -0,0 +1,23 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +// ============================================================= // + +#ifndef NEBUILD_INCLUDES_H +#define NEBUILD_INCLUDES_H + +#include +#include +#include +#include +#include +#include +#include + +extern "C" { +#include +} + +#include + +#endif // NEBUILD_INCLUDES_H diff --git a/dev/BuildKit/Includes.h b/dev/BuildKit/Includes.h deleted file mode 100644 index 4cb3043..0000000 --- a/dev/BuildKit/Includes.h +++ /dev/null @@ -1,17 +0,0 @@ -// ============================================================= // -// nebuild -// Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. -// ============================================================= // - -#ifndef NEBUILD_INCLUDES_H -#define NEBUILD_INCLUDES_H - -#include -#include -#include -#include -#include -#include -#include - -#endif // NEBUILD_INCLUDES_H diff --git a/dev/BuildKit/JSONManifestBuilder.h b/dev/BuildKit/JSONManifestBuilder.h index f7c769d..ba34a69 100644 --- a/dev/BuildKit/JSONManifestBuilder.h +++ b/dev/BuildKit/JSONManifestBuilder.h @@ -6,12 +6,12 @@ #pragma once #include -#include +#include /// @file JSONManifestBuilder.h /// @brief JSON manifest builder header file. -namespace BTB { +namespace NeBuild { /// @brief JSON builder class JSONManifestBuilder final NEBUILD_MANIFEST_BUILDER { public: @@ -30,4 +30,4 @@ class JSONManifestBuilder final NEBUILD_MANIFEST_BUILDER { bool buildTarget(int arg_sz, const char* arg_val, const bool dry_run = false) override; const char* buildSystem() override; }; -} // namespace BTB \ No newline at end of file +} // namespace NeBuild \ No newline at end of file diff --git a/dev/BuildKit/Macros.h b/dev/BuildKit/Macros.h deleted file mode 100644 index 98bf891..0000000 --- a/dev/BuildKit/Macros.h +++ /dev/null @@ -1,34 +0,0 @@ -// ============================================================= // -// nebuild -// Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. -// ============================================================= // - -#pragma once - -extern "C" { -#include -} - -#include - -#define LIKELY(ARG) ((ARG) ? assert(false) : ((void) 0)) -#define UNLIKELY(ARG) LIKELY(!(ARG)) - -#define LIBNEBUILD_VERSION "v0.0.1-libNeBuild" - -#define LIBNEBUILD_VERSION_BCD 0x0001 - -#define LIBNEBUILD_VERSION_MAJOR 1 -#define LIBNEBUILD_VERSION_MINOR 1 -#define LIBNEBUILD_VERSION_PATCH 0 - -#define LIBNEBUILD_UNUSED(X) ((void) X) - -namespace BTB::Logger { -/// @brief replacement for std::cout for BTB logging. -inline std::ostream& info() noexcept { - auto& out = std::cout; - out << rang::fg::red << "nebuild: " << rang::style::reset; - return out; -} -} // namespace BTB::Logger diff --git a/dev/BuildKit/TOMLManifestBuilder.h b/dev/BuildKit/TOMLManifestBuilder.h new file mode 100644 index 0000000..5037967 --- /dev/null +++ b/dev/BuildKit/TOMLManifestBuilder.h @@ -0,0 +1,33 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +// ============================================================= // + +#pragma once + +#include +#include + +/// @file TOMLManifestBuilder.h +/// @brief TOML manifest builder header file. + +namespace NeBuild { +/// @brief TOML builder +class TOMLManifestBuilder final NEBUILD_MANIFEST_BUILDER { + public: + TOMLManifestBuilder() = default; + ~TOMLManifestBuilder() override = default; + + TOMLManifestBuilder& operator=(const TOMLManifestBuilder&) = default; + TOMLManifestBuilder(const TOMLManifestBuilder&) = default; + + public: + /// @brief Builds a TOML target. + /// @param arg_sz filename size + /// @param arg_val filename path. + /// @retval true build succeeded. + /// @retval false failed to build. + bool buildTarget(int arg_sz, const char* arg_val, const bool dry_run = false) override; + const char* buildSystem() override; +}; +} // namespace NeBuild \ No newline at end of file -- cgit v1.2.3