Compare commits
18 Commits
main
...
8627e197db
| Author | SHA1 | Date | |
|---|---|---|---|
| 8627e197db | |||
| 27e4fdbfd4 | |||
| 7e273f922a | |||
| 0f66bd95fa | |||
| 56954e8bd0 | |||
| 51afc4d228 | |||
| e27fd9a424 | |||
| 31b7878766 | |||
| 104a85c98e | |||
| 49a035b160 | |||
| 03d633fb04 | |||
| b1c3349814 | |||
| 286bfa1d7b | |||
| 1b8c2cd3e8 | |||
| 2fcbb868e5 | |||
| a116731e46 | |||
| 1f61574360 | |||
| 8e8a5a03c5 |
@@ -7,7 +7,11 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CCACHE_BASEDIR: ${{ github.workspace }}
|
CCACHE_DIR: /ccache
|
||||||
|
CCACHE_MAXSIZE: 10G
|
||||||
|
CCACHE_BASEDIR: /root/.conan2
|
||||||
|
CCACHE_NOHASHDIR: "true"
|
||||||
|
CCACHE_COMPILERCHECK: "%compiler% -dumpversion"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-test:
|
build-and-test:
|
||||||
@@ -19,7 +23,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
build_type: ["Debug", "RelWithDebInfo", "Release"]
|
build_type: ["Debug", "RelWithDebInfo", "Release"]
|
||||||
unity_build: ["ON", "OFF"]
|
unity_build: ["ON", "OFF"]
|
||||||
conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clangd", "./ConanProfiles/clangd_asan"]
|
conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clang_asan"]
|
||||||
name: "Build & Test ${{ matrix.build_type }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }})"
|
name: "Build & Test ${{ matrix.build_type }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }})"
|
||||||
steps:
|
steps:
|
||||||
- name: Install Node.js
|
- name: Install Node.js
|
||||||
|
|||||||
@@ -7,7 +7,11 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CCACHE_BASEDIR: ${{ github.workspace }}
|
CCACHE_DIR: /ccache
|
||||||
|
CCACHE_MAXSIZE: 10G
|
||||||
|
CCACHE_BASEDIR: /root/.conan2
|
||||||
|
CCACHE_NOHASHDIR: "true"
|
||||||
|
CCACHE_COMPILERCHECK: "%compiler% -dumpversion"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
conan-packages:
|
conan-packages:
|
||||||
|
|||||||
@@ -6,6 +6,13 @@ on:
|
|||||||
- main
|
- main
|
||||||
- Development
|
- Development
|
||||||
|
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /ccache
|
||||||
|
CCACHE_MAXSIZE: 10G
|
||||||
|
CCACHE_BASEDIR: /root/.conan2
|
||||||
|
CCACHE_NOHASHDIR: "true"
|
||||||
|
CCACHE_COMPILERCHECK: "%compiler% -dumpversion"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-test:
|
build-and-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
@@ -44,10 +44,20 @@ if(${ASAN})
|
|||||||
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
||||||
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
||||||
|
|
||||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
add_custom_command(
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
DEPENDS "${ASAN_DLL}"
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
COMMENT "Copying ASan DLL for ${PROJECT_NAME}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_target(${PROJECT_NAME}Asan
|
||||||
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan)
|
||||||
|
set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Bin2CPP/${ParentFolder})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -35,14 +35,12 @@ target_link_libraries(${PROJECT_NAME}
|
|||||||
PRIVATE
|
PRIVATE
|
||||||
Bin2CPPCompileAndLinkFlags
|
Bin2CPPCompileAndLinkFlags
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<IF:$<BOOL:${ASAN}>,mimalloc-asan,mimalloc-static>
|
|
||||||
quill::quill
|
quill::quill
|
||||||
$<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace>
|
$<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace>
|
||||||
magic_enum::magic_enum)
|
magic_enum::magic_enum)
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME}
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
QUILL_NO_EXCEPTIONS
|
|
||||||
QUILL_DISABLE_NON_PREFIXED_MACROS)
|
QUILL_DISABLE_NON_PREFIXED_MACROS)
|
||||||
|
|
||||||
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
/*********************************************************************
|
|
||||||
* \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
|
|
||||||
@@ -46,20 +46,45 @@ if(${ASAN})
|
|||||||
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
||||||
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
||||||
|
|
||||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
add_custom_command(
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
DEPENDS "${ASAN_DLL}"
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
COMMENT "Copying ASan DLL for ${PROJECT_NAME}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_target(${PROJECT_NAME}Asan
|
||||||
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan)
|
||||||
|
set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Tests/Bin2CPP)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
##################COPY FIXTURE FOLDER###################
|
##################COPY FIXTURE FOLDER###################
|
||||||
|
|
||||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
||||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
file(GLOB_RECURSE FIXTURE_FILES
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
CONFIGURE_DEPENDS
|
||||||
COMMENT "Copying Fixture folder ${CMAKE_CURRENT_SOURCE_DIR}/Fixture to $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture"
|
${CMAKE_CURRENT_SOURCE_DIR}/Fixture/*
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
||||||
|
DEPENDS ${FIXTURE_FILES}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove_directory $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
||||||
|
COMMENT "Copying Fixture folder for ${PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(${PROJECT_NAME}Fixture
|
||||||
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture)
|
||||||
|
set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Tests/Bin2CPP)
|
||||||
@@ -1,16 +1,3 @@
|
|||||||
foreach(CONFIG DEBUG RELWITHDEBINFO)
|
|
||||||
if("${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO")
|
|
||||||
string(REGEX REPLACE "/INCREMENTAL([^:]|$)" ""
|
|
||||||
CMAKE_EXE_LINKER_FLAGS_${CONFIG}
|
|
||||||
"${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}")
|
|
||||||
endif()
|
|
||||||
if("${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO")
|
|
||||||
string(REGEX REPLACE "/INCREMENTAL([^:]|$)" ""
|
|
||||||
CMAKE_SHARED_LINKER_FLAGS_${CONFIG}
|
|
||||||
"${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
add_library(Bin2CPPCompileAndLinkFlags INTERFACE)
|
add_library(Bin2CPPCompileAndLinkFlags INTERFACE)
|
||||||
|
|
||||||
target_compile_options(Bin2CPPCompileAndLinkFlags INTERFACE
|
target_compile_options(Bin2CPPCompileAndLinkFlags INTERFACE
|
||||||
|
|||||||
@@ -9,12 +9,6 @@ find_package(magic_enum REQUIRED)
|
|||||||
find_package(CLI11 REQUIRED)
|
find_package(CLI11 REQUIRED)
|
||||||
find_package(quill REQUIRED)
|
find_package(quill REQUIRED)
|
||||||
|
|
||||||
if(${ASAN})
|
|
||||||
find_package(mimalloc-asan REQUIRED)
|
|
||||||
else()
|
|
||||||
find_package(mimalloc REQUIRED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(cpptrace REQUIRED)
|
find_package(cpptrace REQUIRED)
|
||||||
|
|
||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
|
|||||||
30
ConanProfiles/Toolchains/ccache.cmake
Normal file
30
ConanProfiles/Toolchains/ccache.cmake
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
include_guard()
|
||||||
|
|
||||||
|
# Find ccache executable
|
||||||
|
find_program(CCACHE_PROGRAM NAMES ccache)
|
||||||
|
|
||||||
|
if(CCACHE_PROGRAM)
|
||||||
|
message(STATUS "ccache found: ${CCACHE_PROGRAM}, enabling via CMake launcher and environment.")
|
||||||
|
if (CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
# Copy original ccache.exe and rename to cl.exe, this way intermediate cmd file is not needed
|
||||||
|
file(COPY_FILE ${CCACHE_PROGRAM} ${CMAKE_BINARY_DIR}/cl.exe ONLY_IF_DIFFERENT)
|
||||||
|
|
||||||
|
# Set Visual Studio global variables:
|
||||||
|
# - Use above cl.exe (ccache.exe) as a compiler
|
||||||
|
# - Enable parallel compilation
|
||||||
|
list(APPEND CMAKE_VS_GLOBALS
|
||||||
|
"CLToolExe=cl.exe"
|
||||||
|
"CLToolPath=${CMAKE_BINARY_DIR}"
|
||||||
|
"UseMultiToolTask=true"
|
||||||
|
"UseStructuredOutput=false"
|
||||||
|
)
|
||||||
|
elseif(CMAKE_GENERATOR MATCHES "Ninja" OR CMAKE_GENERATOR MATCHES "Unix Makefiles")
|
||||||
|
message(STATUS "Using ccache as compiler launcher for Ninja or Makefiles.")
|
||||||
|
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE FILEPATH "CXX compiler cache used" FORCE)
|
||||||
|
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE FILEPATH "C compiler cache used" FORCE)
|
||||||
|
else()
|
||||||
|
message(WARNING "Unsupported generator for ccache integration: ${CMAKE_GENERATOR}. ccache will not be used.")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "ccache not found. Not enabling ccache integration.")
|
||||||
|
endif()
|
||||||
5
ConanProfiles/Toolchains/ipo.cmake
Normal file
5
ConanProfiles/Toolchains/ipo.cmake
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
include_guard()
|
||||||
|
|
||||||
|
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
||||||
|
|
||||||
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
|
||||||
@@ -10,16 +10,14 @@ compiler.runtime=static
|
|||||||
build_type=Release
|
build_type=Release
|
||||||
|
|
||||||
[conf]
|
[conf]
|
||||||
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake
|
||||||
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake
|
||||||
|
|
||||||
tools.system.package_manager:mode=install
|
tools.system.package_manager:mode=install
|
||||||
tools.system.package_manager:sudo=True
|
tools.system.package_manager:sudo=True
|
||||||
|
|
||||||
tools.build:exelinkflags=["-fuse-ld=mold", "-flto"]
|
tools.build:exelinkflags=["-fuse-ld=mold"]
|
||||||
tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"]
|
tools.build:sharedlinkflags=["-fuse-ld=mold"]
|
||||||
|
|
||||||
tools.build:cflags=["-flto"]
|
|
||||||
tools.build:cxxflags=["-flto"]
|
|
||||||
|
|
||||||
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
|
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ compiler.runtime=static
|
|||||||
build_type=Debug
|
build_type=Debug
|
||||||
|
|
||||||
[conf]
|
[conf]
|
||||||
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake
|
||||||
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake
|
||||||
|
|
||||||
tools.system.package_manager:mode=install
|
tools.system.package_manager:mode=install
|
||||||
tools.system.package_manager:sudo=True
|
tools.system.package_manager:sudo=True
|
||||||
@@ -10,7 +10,8 @@ compiler.runtime=static
|
|||||||
build_type=Debug
|
build_type=Debug
|
||||||
|
|
||||||
[conf]
|
[conf]
|
||||||
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake
|
||||||
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake
|
||||||
|
|
||||||
tools.system.package_manager:mode=install
|
tools.system.package_manager:mode=install
|
||||||
tools.system.package_manager:sudo=True
|
tools.system.package_manager:sudo=True
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
[settings]
|
|
||||||
os=Linux
|
|
||||||
arch=x86_64
|
|
||||||
compiler=clang
|
|
||||||
compiler.version=20
|
|
||||||
compiler.libcxx=libstdc++11
|
|
||||||
compiler.cppstd=20
|
|
||||||
compiler.cstd=17
|
|
||||||
compiler.runtime=static
|
|
||||||
build_type=Debug
|
|
||||||
|
|
||||||
[conf]
|
|
||||||
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
|
|
||||||
|
|
||||||
tools.system.package_manager:mode=install
|
|
||||||
tools.system.package_manager:sudo=True
|
|
||||||
|
|
||||||
tools.build:exelinkflags=["-fuse-ld=mold"]
|
|
||||||
tools.build:sharedlinkflags=["-fuse-ld=mold"]
|
|
||||||
|
|
||||||
tools.cmake.cmaketoolchain:generator=Ninja
|
|
||||||
|
|
||||||
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
|
|
||||||
|
|
||||||
[tool_requires]
|
|
||||||
!cmake/*: cmake/[>=4.2]
|
|
||||||
|
|
||||||
[options]
|
|
||||||
bin2cpp/*:build_tests=True
|
|
||||||
@@ -9,12 +9,10 @@ compiler.runtime=static
|
|||||||
build_type=Release
|
build_type=Release
|
||||||
|
|
||||||
[conf]
|
[conf]
|
||||||
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake
|
||||||
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake
|
||||||
|
|
||||||
tools.build:exelinkflags=["/LTCG", "/INCREMENTAL:NO"]
|
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"]
|
||||||
tools.build:sharedlinkflags=["/LTCG", "/INCREMENTAL:NO"]
|
|
||||||
|
|
||||||
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/GL"]
|
|
||||||
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
|
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
|
||||||
|
|
||||||
[tool_requires]
|
[tool_requires]
|
||||||
|
|||||||
@@ -9,10 +9,8 @@ compiler.runtime=static
|
|||||||
build_type=Debug
|
build_type=Debug
|
||||||
|
|
||||||
[conf]
|
[conf]
|
||||||
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake
|
||||||
|
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake
|
||||||
tools.build:exelinkflags=["/INCREMENTAL:NO"]
|
|
||||||
tools.build:sharedlinkflags=["/INCREMENTAL:NO"]
|
|
||||||
|
|
||||||
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/fsanitize=address"]
|
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/fsanitize=address"]
|
||||||
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew", "/fsanitize=address"]
|
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew", "/fsanitize=address"]
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake
|
|
||||||
|
|
||||||
find_program(ccache_exe ccache)
|
|
||||||
if(ccache_exe)
|
|
||||||
file(COPY_FILE
|
|
||||||
${ccache_exe} ${CMAKE_BINARY_DIR}/cl.exe
|
|
||||||
ONLY_IF_DIFFERENT)
|
|
||||||
|
|
||||||
# By default Visual Studio generators will use /Zi which is not compatible
|
|
||||||
# with ccache, so tell Visual Studio to use /Z7 instead.
|
|
||||||
message(STATUS "Setting MSVC debug information format to 'Embedded'")
|
|
||||||
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
|
|
||||||
|
|
||||||
set(CMAKE_VS_GLOBALS
|
|
||||||
"CLToolExe=cl.exe"
|
|
||||||
"CLToolPath=${CMAKE_BINARY_DIR}"
|
|
||||||
"UseMultiToolTask=true"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
[settings]
|
|
||||||
os=Windows
|
|
||||||
arch=x86_64
|
|
||||||
compiler=msvc
|
|
||||||
compiler.version=195
|
|
||||||
compiler.cppstd=20
|
|
||||||
compiler.cstd=17
|
|
||||||
compiler.runtime=static
|
|
||||||
build_type=Debug
|
|
||||||
|
|
||||||
[conf]
|
|
||||||
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
|
|
||||||
|
|
||||||
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"]
|
|
||||||
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
|
|
||||||
[tool_requires]
|
|
||||||
!cmake/*: cmake/[>=4.2]
|
|
||||||
|
|
||||||
[options]
|
|
||||||
bin2cpp/*:build_tests=True
|
|
||||||
@@ -45,13 +45,9 @@ class Bin2CPP(ConanFile):
|
|||||||
if self.settings.os == "Windows":
|
if self.settings.os == "Windows":
|
||||||
del self.options.fPIC
|
del self.options.fPIC
|
||||||
|
|
||||||
if(self.options.asan):
|
|
||||||
self.options["mimalloc"].asan = True
|
|
||||||
|
|
||||||
def requirements(self):
|
def requirements(self):
|
||||||
self.requires("quill/11.0.2", transitive_headers=True)
|
self.requires("quill/11.0.2", transitive_headers=True)
|
||||||
self.requires("magic_enum/0.9.7", transitive_headers=True)
|
self.requires("magic_enum/0.9.7", transitive_headers=True)
|
||||||
self.requires("mimalloc/3.2.8@bigfootdev/main", transitive_headers=True)
|
|
||||||
self.requires("cli11/2.6.1@bigfootdev/main")
|
self.requires("cli11/2.6.1@bigfootdev/main")
|
||||||
|
|
||||||
self.requires("cpptrace/1.0.4", transitive_headers=True)
|
self.requires("cpptrace/1.0.4", transitive_headers=True)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/ap
|
|||||||
|
|
||||||
REM Install dependencies with the specified build option
|
REM Install dependencies with the specified build option
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Release
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Release
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=RelWithDebInfo
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=RelWithDebInfo
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=Debug
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Debug
|
||||||
|
|
||||||
endlocal
|
endlocal
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/ap
|
|||||||
# Set the build option based on the argument
|
# Set the build option based on the argument
|
||||||
if [ "$1" == "force" ]; then
|
if [ "$1" == "force" ]; then
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Release
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Release
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=RelWithDebInfo
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=RelWithDebInfo
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=Debug
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Debug
|
||||||
elif [ "$1" == "missing" ]; then
|
elif [ "$1" == "missing" ]; then
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Release
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Release
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=RelWithDebInfo
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=RelWithDebInfo
|
||||||
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=Debug
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Debug
|
||||||
else
|
else
|
||||||
echo "Invalid argument: $1"
|
echo "Invalid argument: $1"
|
||||||
echo "Usage: $0 [force|missing]"
|
echo "Usage: $0 [force|missing]"
|
||||||
|
|||||||
Reference in New Issue
Block a user