From 64b8a6bf04095d80b1ca52415ea954b933f47098 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 24 Nov 2025 02:33:21 +0100 Subject: feat! breaking changes, merging to stable. Signed-off-by: Amlal El Mahrouss --- include/NeBuildKit/Defines.h | 34 ++++++++++++++++++++++++++++ include/NeBuildKit/IManifestBuilder.h | 39 ++++++++++++++++++++++++++++++++ include/NeBuildKit/Imports.h | 23 +++++++++++++++++++ include/NeBuildKit/JSONManifestBuilder.h | 39 ++++++++++++++++++++++++++++++++ include/NeBuildKit/TOMLManifestBuilder.h | 39 ++++++++++++++++++++++++++++++++ 5 files changed, 174 insertions(+) create mode 100644 include/NeBuildKit/Defines.h create mode 100644 include/NeBuildKit/IManifestBuilder.h create mode 100644 include/NeBuildKit/Imports.h create mode 100644 include/NeBuildKit/JSONManifestBuilder.h create mode 100644 include/NeBuildKit/TOMLManifestBuilder.h (limited to 'include/NeBuildKit') diff --git a/include/NeBuildKit/Defines.h b/include/NeBuildKit/Defines.h new file mode 100644 index 0000000..06d936f --- /dev/null +++ b/include/NeBuildKit/Defines.h @@ -0,0 +1,34 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under BSD-3 license. +// ============================================================= // + +#pragma once + +#include + +/// =========================================================== /// +/// @brief Defines file +/// =========================================================== /// + +#define LIKELY(ARG) ((ARG) ? assert(false) : ((void) 0)) +#define UNLIKELY(ARG) LIKELY(!(ARG)) + +#define LIBNEBUILD_VERSION "v0.0.7-buildkit" + +#define LIBNEBUILD_VERSION_BCD 0x0007 + +#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/include/NeBuildKit/IManifestBuilder.h b/include/NeBuildKit/IManifestBuilder.h new file mode 100644 index 0000000..96c80c3 --- /dev/null +++ b/include/NeBuildKit/IManifestBuilder.h @@ -0,0 +1,39 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under BSD-3 license. +// ============================================================= // + +#pragma once + +#include + +#define NEBUILD_MANIFEST_BUILDER : public ::NeBuild::IManifestBuilder + +namespace NeBuild { +/// =========================================================== /// +/// @brief Builder interface class. +/// @note This class is meant to be used as an interface. +/// =========================================================== /// +class IManifestBuilder { + public: + IManifestBuilder() = default; + virtual ~IManifestBuilder() = default; + + IManifestBuilder& operator=(const IManifestBuilder&) = default; + IManifestBuilder(const IManifestBuilder&) = default; + + /// =========================================================== /// + /// @brief Builds a TOML target from a file. + /// @param arg_sz filename size (must be 1 or greater). + /// @param arg_val filename path (must be a valid language file). + /// @retval true building has succeeded. + /// @retval false fail to build, see error message. + /// =========================================================== /// + virtual bool BuildTarget(const std::string& arg, const bool dry_run = false) = 0; + + /// =========================================================== /// + /// @brief Returns the build system name. + /// =========================================================== /// + virtual const char* BuildSystem() = 0; +}; +} // namespace NeBuild \ No newline at end of file diff --git a/include/NeBuildKit/Imports.h b/include/NeBuildKit/Imports.h new file mode 100644 index 0000000..33e1e31 --- /dev/null +++ b/include/NeBuildKit/Imports.h @@ -0,0 +1,23 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under BSD-3 license. +// ============================================================= // + +#ifndef NEBUILD_INCLUDES_H +#define NEBUILD_INCLUDES_H + +/// =========================================================== /// +/// @brief Imports file +/// =========================================================== /// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // NEBUILD_INCLUDES_H diff --git a/include/NeBuildKit/JSONManifestBuilder.h b/include/NeBuildKit/JSONManifestBuilder.h new file mode 100644 index 0000000..ccd5f6e --- /dev/null +++ b/include/NeBuildKit/JSONManifestBuilder.h @@ -0,0 +1,39 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under BSD-3 license. +// ============================================================= // + +#pragma once + +#include +#include + +/// @file JSONManifestBuilder.h +/// @brief JSON manifest builder header file. + +namespace NeBuild { +/// @brief JSON builder +class JSONManifestBuilder final NEBUILD_MANIFEST_BUILDER { + public: + JSONManifestBuilder() = default; + ~JSONManifestBuilder() override = default; + + JSONManifestBuilder& operator=(const JSONManifestBuilder&) = default; + JSONManifestBuilder(const JSONManifestBuilder&) = default; + + public: + /// =========================================================== /// + /// @brief Builds a JSON target from a JSON file. + /// @param arg_sz filename size (must be 1 or greater). + /// @param arg_val filename path (must be a valid JSON file). + /// @retval true building has succeeded. + /// @retval false fail to build, see error message. + /// =========================================================== /// + bool BuildTarget(const std::string& arg_val, const bool dry_run = false) override; + + /// =========================================================== /// + /// @brief Returns the build system name. + /// =========================================================== /// + const char* BuildSystem() override; +}; +} // namespace NeBuild \ No newline at end of file diff --git a/include/NeBuildKit/TOMLManifestBuilder.h b/include/NeBuildKit/TOMLManifestBuilder.h new file mode 100644 index 0000000..c6a12bc --- /dev/null +++ b/include/NeBuildKit/TOMLManifestBuilder.h @@ -0,0 +1,39 @@ +// ============================================================= // +// nebuild +// Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under BSD-3 license. +// ============================================================= // + +#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 from a TOML file. + /// @param arg_sz filename size (must be 1 or greater). + /// @param arg_val filename path (must be a valid TOML file). + /// @retval true building has succeeded. + /// @retval false fail to build, see error message. + /// =========================================================== /// + bool BuildTarget(const std::string& arg_val, const bool dry_run = false) override; + + /// =========================================================== /// + /// @brief Returns the build system name. + /// =========================================================== /// + const char* BuildSystem() override; +}; +} // namespace NeBuild \ No newline at end of file -- cgit v1.2.3