Compare commits

...

5 Commits

Author SHA1 Message Date
dac5cbe20d Layout
Some checks failed
Bigfoot / Build & Test Debug (push) Successful in 45s
Bigfoot / Build & Test RelWithDebInfo (push) Successful in 1m3s
Bigfoot / Build & Test Release (push) Successful in 33s
Bigfoot / Clang Format Checks (push) Failing after 9s
2026-02-16 21:02:47 +01:00
16cebe427e Fix guard name
Some checks failed
Bigfoot / Build & Test Debug (push) Successful in 43s
Bigfoot / Build & Test RelWithDebInfo (push) Successful in 1m1s
Bigfoot / Clang Format Checks (push) Has been cancelled
Bigfoot / Build & Test Release (push) Has been cancelled
2026-02-16 21:00:35 +01:00
d4d71a8369 Utilities
Some checks failed
Bigfoot / Build & Test Debug (push) Successful in 1m20s
Bigfoot / Build & Test Release (push) Has been cancelled
Bigfoot / Clang Format Checks (push) Has been cancelled
Bigfoot / Build & Test RelWithDebInfo (push) Has been cancelled
2026-02-16 20:58:47 +01:00
ee1dc86273 remove rapidhash
All checks were successful
Bigfoot / Build & Test Debug (push) Successful in 40s
Bigfoot / Build & Test RelWithDebInfo (push) Successful in 53s
Bigfoot / Build & Test Release (push) Successful in 26s
Bigfoot / Clang Format Checks (push) Successful in 8s
2026-02-15 16:09:35 +01:00
95c8066d26 File layout
All checks were successful
Bigfoot / Build & Test Debug (push) Successful in 40s
Bigfoot / Build & Test RelWithDebInfo (push) Successful in 53s
Bigfoot / Build & Test Release (push) Successful in 27s
Bigfoot / Clang Format Checks (push) Successful in 8s
2026-02-15 16:03:43 +01:00
22 changed files with 713 additions and 5 deletions

View File

@@ -12,6 +12,7 @@ file(GLOB_RECURSE SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/*.h
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
)
target_sources(${PROJECT_NAME}
@@ -19,9 +20,15 @@ target_sources(${PROJECT_NAME}
${SOURCES}
)
target_link_libraries(${PROJECT_NAME} PUBLIC EASTL::EASTL rapidhash::rapidhash mimalloc)
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS})
target_link_libraries(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace> quill::quill)
target_link_libraries(${PROJECT_NAME} PUBLIC EASTL::EASTL mimalloc quill::quill $<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace>)
target_compile_definitions(${PROJECT_NAME}
PUBLIC QUILL_NO_EXCEPTIONS
PUBLIC QUILL_DISABLE_NON_PREFIXED_MACROS
PUBLIC MI_SHARED_LIB)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${SOURCES})

View File

@@ -0,0 +1,20 @@
/**
* Auto-generated header from: {{FILENAME}}
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef {{GUARD_NAME}}
#define {{GUARD_NAME}}
#include {{ARRAY_TYPE_INCLUDE}}
#include <cstddef>
namespace {{NAMESPACE}} {
constexpr {{ARRAY_TYPE}}<std::byte, {{ARRAY_SIZE}}> {{ARRAY_NAME}} = {
{{DATA}}
};
} // namespace {{NAMESPACE}}
#endif // {{GUARD_NAME}}

View File

@@ -0,0 +1,12 @@
/*********************************************************************
* \file Generator.cpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#include <Generator.hpp>
namespace Bin2CPP
{
} // namespace Bin2CPP

View File

@@ -0,0 +1,138 @@
/*********************************************************************
* \file Assert.hpp
*
* \author Romain BOULLARD
* \date October 2025
*********************************************************************/
#ifndef BIN2CPP_ASSERT_HPP
#define BIN2CPP_ASSERT_HPP
#include <Log.hpp>
#if defined BIN2CPP_NOT_OPTIMIZED
#include <cpptrace/cpptrace.hpp>
#include <source_location>
#include <string>
#if defined BIN2CPP_LINUX
#include <csignal>
#endif
namespace Bin2CPP
{
class AssertHandler
{
public:
AssertHandler() = delete;
AssertHandler(const AssertHandler& p_handler) = delete;
AssertHandler(AssertHandler&& p_handler) = delete;
~AssertHandler() = delete;
/**
* Handle an assertion.
*
* \param p_location Location of the assertion.
* \param p_stacktrace The stack trace
* \param p_format Format string for the assertion message.
* \param p_args Arguments for the format string.
*/
template<typename... ARGS>
static void Handle(const std::source_location& p_location,
const std::string_view p_stacktrace,
std::format_string<ARGS...> p_format,
ARGS&&... p_args)
{
BIN2CPP_LOG_FATAL("Assert: {} (File:{}, Line:{}, Function:{}\n{}",
std::format(p_format, std::forward<ARGS>(p_args)...),
p_location.file_name(),
p_location.line(),
p_location.function_name(),
p_stacktrace);
}
AssertHandler& operator=(const AssertHandler& p_handler) = delete;
AssertHandler& operator=(AssertHandler&& p_handler) = delete;
};
} // namespace Bin2CPP
#if defined BIN2CPP_WINDOWS
#define BIN2CPP_BREAK \
do \
{ \
__debugbreak(); \
} while (false)
#elif defined BIN2CPP_LINUX
#define BIN2CPP_BREAK \
do \
{ \
std::raise(SIGTRAP); \
} while (false)
#endif
#define BIN2CPP_ASSERT(p_assert, p_message, ...) \
do \
{ \
constexpr std::source_location location = std::source_location::current(); \
if (!(p_assert)) [[unlikely]] \
{ \
constexpr auto stacktrace = []() -> std::string \
{ \
const cpptrace::stacktrace stacktrace = cpptrace::generate_trace(); \
return stacktrace.to_string(); \
}; \
\
Bin2CPP::AssertHandler::Handle(location, stacktrace(), p_message __VA_OPT__(, ) __VA_ARGS__); \
BIN2CPP_BREAK; \
} \
} while (false)
#define BIN2CPP_SOFT_ASSERT(p_assert, p_message, ...) \
do \
{ \
constexpr std::source_location location = std::source_location::current(); \
if (!(p_assert)) [[unlikely]] \
{ \
constexpr auto stacktrace = []() -> std::string \
{ \
const cpptrace::stacktrace stacktrace = cpptrace::generate_trace(); \
return stacktrace.to_string(); \
}; \
\
Bin2CPP::AssertHandler::Handle(location, stacktrace(), p_message __VA_OPT__(, ) __VA_ARGS__); \
BIN2CPP_BREAK; \
} \
} while (false)
#define BIN2CPP_CRITICAL_ASSERT(p_assert, p_message, ...) \
do \
{ \
constexpr std::source_location location = std::source_location::current(); \
if (!(p_assert)) [[unlikely]] \
{ \
constexpr auto stacktrace = []() -> std::string \
{ \
const cpptrace::stacktrace stacktrace = cpptrace::generate_trace(); \
return stacktrace.to_string(); \
}; \
\
Bin2CPP::AssertHandler::Handle(location, stacktrace(), p_message __VA_OPT__(, ) __VA_ARGS__); \
if (Bin2CPP::Singleton<Bin2CPP::Log>::HasInstance()) \
{ \
Bin2CPP::Singleton<Bin2CPP::Log>::Instance().Flush(); \
} \
BIN2CPP_BREAK; \
std::abort(); \
} \
} while (false)
#else
#define BIN2CPP_ASSERT(p_assert, p_message, ...)
#define BIN2CPP_SOFT_ASSERT(p_assert, p_message, ...)
#define BIN2CPP_CRITICAL_ASSERT(p_assert, p_message, ...)
#endif
#endif

View File

@@ -0,0 +1,87 @@
/*********************************************************************
* \file EASTLFormatters.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIN2CPP_EASTLFORMATTERS_HPP
#define BIN2CPP_EASTLFORMATTERS_HPP
#include <quill/DeferredFormatCodec.h>
#include <format>
#include <EASTL/string.h>
#include <EASTL/string_view.h>
// STRING
template<>
struct std::formatter<eastl::string>
{
constexpr auto parse(std::format_parse_context& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const eastl::string& p_string, FormatContext& ctx) const
{
return std::format_to(ctx.out(), "{}", p_string.c_str());
}
};
template<>
struct fmtquill::formatter<eastl::string>
{
constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
auto format(const eastl::string& p_string, format_context& ctx) const
{
return fmtquill::format_to(ctx.out(), "{}", p_string.c_str());
}
};
template<>
struct quill::Codec<eastl::string>: quill::DeferredFormatCodec<eastl::string>
{
};
// STRING_VIEW
template<>
struct std::formatter<eastl::string_view>
{
constexpr auto parse(std::format_parse_context& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const eastl::string_view& p_stringView, FormatContext& ctx) const
{
return std::format_to(ctx.out(), "{}", p_stringView.data());
}
};
template<>
struct fmtquill::formatter<eastl::string_view>
{
constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
auto format(const eastl::string_view& p_stringView, format_context& ctx) const
{
return fmtquill::format_to(ctx.out(), "{}", p_stringView.data());
}
};
template<>
struct quill::Codec<eastl::string_view>: quill::DeferredFormatCodec<eastl::string_view>
{
};
#endif

View File

@@ -0,0 +1,14 @@
/*********************************************************************
* \file Generator.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIN2CPP_GENERATOR_HPP
#define BIN2CPP_GENERATOR_HPP
namespace Bin2CPP
{
} // namespace Bin2CPP
#endif

View File

@@ -0,0 +1,116 @@
/*********************************************************************
* \file Log.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIN2CPP_LOG_HPP
#define BIN2CPP_LOG_HPP
#include <EASTLFormatters.hpp>
#include <Singleton.hpp>
#include <EASTL/array.h>
#ifdef BIGFOOT_WINDOWS
#pragma warning(disable: 4702)
#endif
#include <quill/Backend.h>
#include <quill/Frontend.h>
#include <quill/LogMacros.h>
#include <quill/Logger.h>
#include <quill/sinks/ConsoleSink.h>
#if defined BIGFOOT_WINDOWS
#pragma warning(default: 4702)
#endif
namespace Bin2CPP
{
class Log
{
public:
Log();
Log(const Log& p_logger) = delete;
Log(Log&& p_logger) = delete;
/**
* Register a logger.
*
* \return The logger, nullptr if it does not exist
*/
[[nodiscard]]
quill::Logger* GetLogger();
/*
* Flush all the loggers
*
*/
void Flush();
~Log();
Log& operator=(const Log& p_logger) = delete;
Log& operator=(Log&& p_logger) = delete;
private:
/*
* The sinks
*/
eastl::array<std::shared_ptr<quill::Sink>, 1> m_sinks;
};
} // namespace Bin2CPP
#define BIN2CPP_LOG_DEBUG(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_DEBUG(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#define BIN2CPP_LOG_TRACE(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_TRACE_L3(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#define BIN2CPP_LOG_INFO(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_INFO(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#define BIN2CPP_LOG_WARN(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_WARNING(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#define BIN2CPP_LOG_ERROR(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_ERROR(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#define BIN2CPP_LOG_FATAL(fmt, ...) \
do \
{ \
if (quill::Logger* logger = Bin2CPP::Singleton<Bin2CPP::Log>::Instance().GetLogger()) \
{ \
QUILL_LOG_CRITICAL(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
} \
} while (0)
#endif

View File

@@ -0,0 +1,104 @@
/*********************************************************************
* \file Singleton.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIN2CPP_SINGLETON_HPP
#define BIN2CPP_SINGLETON_HPP
#include <EASTL/optional.h>
namespace Bin2CPP
{
template<class TYPE>
class Singleton
{
public:
Singleton() = delete;
Singleton(const Singleton& p_singleton) = delete;
Singleton(Singleton&& p_singleton) = delete;
~Singleton() = delete;
/**
* Get the instance.
*
* \return The instance
*/
static constexpr TYPE& Instance()
{
return ms_instance.value();
}
/**
* Is the instance initialized
*
* \return True if initialized, false otherwise
*/
static constexpr bool HasInstance()
{
return ms_instance.has_value();
}
class Lifetime
{
public:
/**
* Constructor.
*
* \param p_args Arguments for the singleton
*/
template<typename... ARGS>
explicit Lifetime(ARGS&&... p_args)
{
Initialize(std::forward<ARGS>(p_args)...);
}
Lifetime(const Lifetime& p_lifetime) = delete;
Lifetime(Lifetime&& p_lifetime) = delete;
~Lifetime()
{
Finalize();
}
[[nodiscard]]
Lifetime& operator=(const Lifetime& p_lifetime) = delete;
[[nodiscard]]
Lifetime& operator=(Lifetime&& p_lifetime) = delete;
};
[[nodiscard]]
Singleton& operator=(const Singleton& p_singleton) = delete;
[[nodiscard]]
Singleton& operator=(Singleton&& p_singleton) = delete;
private:
/**
* Initialize the singleton.
*
* \param p_args Arguments for the singleton
*/
template<typename... ARGS>
static void Initialize(ARGS&&... p_args)
{
ms_instance.emplace(std::forward<ARGS>(p_args)...);
}
/**
* Finalize the singleton.
*
*/
static void Finalize()
{
ms_instance.reset();
}
/**
* The singleton.
*/
inline static eastl::optional<TYPE> ms_instance;
};
} // namespace Bin2CPP
#endif

View File

@@ -0,0 +1,49 @@
/*******************************************************************
* \file Log.cpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#include <Log.hpp>
namespace Bin2CPP
{
Log::Log()
{
quill::Backend::start();
m_sinks[0] = quill::Frontend::create_or_get_sink<quill::ConsoleSink>("ConsoleSink");
quill::Logger* logger = quill::Frontend::create_or_get_logger("Bin2CPP", m_sinks[0]);
logger->set_log_level(quill::LogLevel::TraceL3);
}
/****************************************************************************************/
quill::Logger* Log::GetLogger()
{
return quill::Frontend::get_logger("Bin2CPP");
}
/****************************************************************************************/
void Log::Flush()
{
for (quill::Logger* logger: quill::Frontend::get_all_loggers())
{
logger->flush_log();
}
}
/****************************************************************************************/
Log::~Log()
{
for (quill::Logger* logger: quill::Frontend::get_all_loggers())
{
quill::Frontend::remove_logger(logger);
}
quill::Backend::stop();
}
} // namespace Bin2CPP

View File

@@ -0,0 +1,96 @@
/*********************************************************************
* \file MimallocImpl.cpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#if defined BIN2CPP_WINDOWS
#pragma comment(linker, "/include:mi_version")
#pragma warning(disable: 4100 4559)
#elif defined BIN2CPP_LINUX
#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-parameter"
#endif
#endif
// Taken from mimalloc-new-delete.h
// clang-format off
// ----------------------------------------------------------------------------
// This header provides convenient overrides for the new and
// delete operations in C++.
//
// This header should be included in only one source file!
//
// On Windows, or when linking dynamically with mimalloc, these
// can be more performant than the standard new-delete operations.
// See <https://en.cppreference.com/w/cpp/memory/new/operator_new>
// ---------------------------------------------------------------------------
#if defined(__cplusplus)
#include <new>
#include <mimalloc.h>
#if defined(_MSC_VER) && defined(_Ret_notnull_) && defined(_Post_writable_byte_size_)
// stay consistent with VCRT definitions
#define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict _Ret_notnull_ _Post_writable_byte_size_(n)
#define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict _Ret_maybenull_ _Success_(return != NULL) _Post_writable_byte_size_(n)
#else
#define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict
#define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict
#endif
void operator delete(void* p) noexcept { mi_free(p); };
void operator delete[](void* p) noexcept { mi_free(p); };
void operator delete (void* p, const std::nothrow_t&) noexcept { mi_free(p); }
void operator delete[](void* p, const std::nothrow_t&) noexcept { mi_free(p); }
mi_decl_new(n) void* operator new(std::size_t n) noexcept(false) { return mi_new(n); }
mi_decl_new(n) void* operator new[](std::size_t n) noexcept(false) { return mi_new(n); }
mi_decl_new_nothrow(n) void* operator new (std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
mi_decl_new_nothrow(n) void* operator new[](std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
// Not from mimalloc-new-delete.h, but necessary for EASTL
void* operator new[](size_t size, const char* name, int flags, unsigned debugFlags, const char* file, int line) noexcept(false) { return mi_new(size); }
#if (__cplusplus >= 201402L || _MSC_VER >= 1916)
void operator delete (void* p, std::size_t n) noexcept { mi_free_size(p,n); };
void operator delete[](void* p, std::size_t n) noexcept { mi_free_size(p,n); };
#endif
#if (__cplusplus > 201402L || defined(__cpp_aligned_new))
void operator delete (void* p, std::align_val_t al) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); }
void operator delete[](void* p, std::align_val_t al) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); }
void operator delete (void* p, std::size_t n, std::align_val_t al) noexcept { mi_free_size_aligned(p, n, static_cast<size_t>(al)); };
void operator delete[](void* p, std::size_t n, std::align_val_t al) noexcept { mi_free_size_aligned(p, n, static_cast<size_t>(al)); };
void operator delete (void* p, std::align_val_t al, const std::nothrow_t&) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); }
void operator delete[](void* p, std::align_val_t al, const std::nothrow_t&) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); }
void* operator new (std::size_t n, std::align_val_t al) noexcept(false) { return mi_new_aligned(n, static_cast<size_t>(al)); }
void* operator new[](std::size_t n, std::align_val_t al) noexcept(false) { return mi_new_aligned(n, static_cast<size_t>(al)); }
void* operator new (std::size_t n, std::align_val_t al, const std::nothrow_t&) noexcept { return mi_new_aligned_nothrow(n, static_cast<size_t>(al)); }
void* operator new[](std::size_t n, std::align_val_t al, const std::nothrow_t&) noexcept { return mi_new_aligned_nothrow(n, static_cast<size_t>(al)); }
// Not from mimalloc-new-delete.h, but necessary for EASTL
void* operator new[](size_t size, size_t alignment, size_t alignmentOffset, const char* pName, int flags, unsigned debugFlags, const char* file, int line) noexcept(false) { return mi_new_aligned(size, alignment); }
#endif
#endif
// clang-format on
#if defined BIN2CPP_WINDOWS
#pragma warning(default: 4100 4559)
#elif defined BIN2CPP_LINUX
#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER)
#pragma GCC diagnostic pop
#else
#pragma clang diagnostic pop
#endif
#endif

View File

@@ -0,0 +1 @@
Hello World

View File

@@ -0,0 +1,20 @@
/*********************************************************************
* \file Generator.cpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#include <Generator.hpp>
#include <Log.hpp>
#include <gtest/gtest.h>
namespace Bin2CPP
{
class GeneratorFixture: public ::testing::Test
{
protected:
Singleton<Log>::Lifetime m_lifetime;
};
} // namespace Bin2CPP

View File

@@ -0,0 +1,39 @@
/*********************************************************************
* \file Singleton.cpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#include <Singleton.hpp>
#include <gtest/gtest.h>
namespace Bin2CPP
{
class SingletonFixture: public ::testing::Test
{
protected:
Singleton<std::uint8_t>::Lifetime m_lifetime{8};
};
/****************************************************************************************/
TEST_F(SingletonFixture, HasInstance_ShouldReturnTrueIfSingletonIsInitialized)
{
EXPECT_TRUE(Singleton<std::uint8_t>::HasInstance());
}
/****************************************************************************************/
TEST_F(SingletonFixture, HasInstance_ShouldReturnFaleIfSingletonIsNotInitialized)
{
EXPECT_FALSE(Singleton<std::uint32_t>::HasInstance());
}
/****************************************************************************************/
TEST_F(SingletonFixture, Instance_ShouldReturnTheInstance)
{
EXPECT_EQ(Singleton<std::uint8_t>::Instance(), 8);
}
} // namespace Bin2CPP

View File

@@ -0,0 +1,3 @@
//
// Created by romain on 16/02/2026.
//

View File

@@ -8,7 +8,6 @@ endif()
find_package(EASTL REQUIRED)
find_package(mimalloc REQUIRED)
find_package(CLI11 REQUIRED)
find_package(rapidhash REQUIRED)
find_package(quill REQUIRED)
if(${IS_MULTI_CONFIG})

View File

@@ -23,6 +23,10 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_OPTIMIZE_DEPENDENCIES 1)
add_compile_definitions(
$<$<CONFIG:Release>:BIN2CPP_OPTIMIZED>
$<$<CONFIG:Debug,RelWithDebInfo>:BIN2CPP_NOT_OPTIMIZED>
$<$<PLATFORM_ID:Windows>:BIN2CPP_WINDOWS>
$<$<PLATFORM_ID:Linux>:BIN2CPP_LINUX>
$<$<PLATFORM_ID:Windows>:NOMINMAX>
$<$<PLATFORM_ID:Windows>:WIN32_LEAN_AND_MEAN>)

View File

@@ -45,7 +45,6 @@ class Bigfoot(ConanFile):
self.requires("eastl/3.27.01@bigfootdev/main", transitive_headers=True)
self.requires("mimalloc/3.2.8@bigfootdev/main", transitive_headers=True)
self.requires("cli11/2.6.1@bigfootdev/main")
self.requires("rapidhash/3.0@bigfootdev/main", transitive_headers=True)
if(self.settings.build_type == "RelWithDebInfo" or self.settings.build_type == "Debug"):
self.requires("cpptrace/1.0.4", transitive_headers=True)

0
format.sh Normal file → Executable file
View File

0
generate_bin2cpp.sh Normal file → Executable file
View File

0
generate_dependencies.sh Normal file → Executable file
View File