This commit is contained in:
2026-09-13 13:30:21 +08:00
commit a6bbd520cf
2744 changed files with 1598795 additions and 0 deletions
@@ -0,0 +1,37 @@
cmake_minimum_required(VERSION 3.10)
project(spdlog_tweakme_consumer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if(SPDLOG_TEST_INSTALLED)
find_package(spdlog CONFIG REQUIRED)
add_executable(package-compiled main.cpp)
target_link_libraries(package-compiled PRIVATE spdlog::spdlog)
add_executable(package-header-only main.cpp)
target_link_libraries(package-header-only PRIVATE spdlog::spdlog_header_only)
find_package(Threads REQUIRED)
add_executable(raw-header-only main.cpp)
target_include_directories(raw-header-only PRIVATE "${SPDLOG_TEST_PREFIX}/include")
target_link_libraries(raw-header-only PRIVATE Threads::Threads)
else()
set(SPDLOG_GENERATE_TWEAKME_H ON CACHE BOOL "" FORCE)
set(SPDLOG_NO_THREAD_ID ON CACHE BOOL "" FORCE)
set(SPDLOG_NO_TLS ON CACHE BOOL "" FORCE)
set(SPDLOG_DISABLE_DEFAULT_LOGGER ON CACHE BOOL "" FORCE)
set(SPDLOG_BUILD_SHARED ${SPDLOG_TEST_SHARED} CACHE BOOL "" FORCE)
set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(SPDLOG_INSTALL ON CACHE BOOL "" FORCE)
add_subdirectory("${SPDLOG_TEST_SOURCE_DIR}" spdlog)
add_executable(source-compiled main.cpp)
target_link_libraries(source-compiled PRIVATE spdlog::spdlog)
add_executable(source-header-only main.cpp)
target_link_libraries(source-header-only PRIVATE spdlog::spdlog_header_only)
endif()
+19
View File
@@ -0,0 +1,19 @@
#include <spdlog/spdlog.h>
#ifndef SPDLOG_TWEAKME_H_GENERATED
#error The generated tweakme.h must be selected before the source header
#endif
#ifndef SPDLOG_NO_THREAD_ID
#error SPDLOG_NO_THREAD_ID must be provided by the generated tweakme.h
#endif
#ifndef SPDLOG_NO_TLS
#error SPDLOG_NO_TLS must be provided by the generated tweakme.h
#endif
#ifndef SPDLOG_DISABLE_DEFAULT_LOGGER
#error SPDLOG_DISABLE_DEFAULT_LOGGER must be provided by the generated tweakme.h
#endif
int main() { return 0; }
+66
View File
@@ -0,0 +1,66 @@
function(run_checked description)
execute_process(COMMAND ${ARGN} RESULT_VARIABLE result OUTPUT_VARIABLE output ERROR_VARIABLE error)
if(NOT result EQUAL 0)
message(FATAL_ERROR "${description} failed (${result}):\n${output}\n${error}")
endif()
endfunction()
function(configure_checked description source_dir build_dir)
file(MAKE_DIRECTORY "${build_dir}")
execute_process(
COMMAND "${CMAKE_COMMAND}" ${ARGN} "${source_dir}"
WORKING_DIRECTORY "${build_dir}"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
ERROR_VARIABLE error)
if(NOT result EQUAL 0)
message(FATAL_ERROR "${description} failed (${result}):\n${output}\n${error}")
endif()
endfunction()
function(test_tweakme_configuration library_type shared)
set(build_dir "${SPDLOG_TEST_BINARY_DIR}/${library_type}/build")
set(prefix "${SPDLOG_TEST_BINARY_DIR}/${library_type}/prefix")
set(consumer_dir "${SPDLOG_TEST_BINARY_DIR}/${library_type}/consumer")
file(REMOVE_RECURSE "${SPDLOG_TEST_BINARY_DIR}/${library_type}")
set(generator_args -G "${SPDLOG_TEST_GENERATOR}")
if(SPDLOG_TEST_GENERATOR_PLATFORM)
list(APPEND generator_args -A "${SPDLOG_TEST_GENERATOR_PLATFORM}")
endif()
if(SPDLOG_TEST_GENERATOR_TOOLSET)
list(APPEND generator_args -T "${SPDLOG_TEST_GENERATOR_TOOLSET}")
endif()
set(common_args
"-DCMAKE_CXX_COMPILER=${SPDLOG_TEST_CXX_COMPILER}"
"-DCMAKE_BUILD_TYPE=${SPDLOG_TEST_CONFIG}")
configure_checked(
"Configure ${library_type} source-tree consumer"
"${CMAKE_CURRENT_LIST_DIR}/tweakme" "${build_dir}" ${generator_args} ${common_args}
"-DSPDLOG_TEST_SOURCE_DIR=${SPDLOG_TEST_SOURCE_DIR}" "-DSPDLOG_TEST_SHARED=${shared}"
"-DCMAKE_INSTALL_PREFIX=${prefix}")
run_checked("Build ${library_type} source-tree consumer" "${CMAKE_COMMAND}" --build "${build_dir}" --config
"${SPDLOG_TEST_CONFIG}")
run_checked("Install ${library_type} spdlog" "${CMAKE_COMMAND}" --build "${build_dir}" --target install --config
"${SPDLOG_TEST_CONFIG}")
set(installed_tweakme "${prefix}/include/spdlog/tweakme.h")
file(READ "${installed_tweakme}" tweakme_contents)
foreach(expected_macro SPDLOG_NO_THREAD_ID SPDLOG_NO_TLS SPDLOG_DISABLE_DEFAULT_LOGGER)
if(NOT tweakme_contents MATCHES "#define ${expected_macro}([\r\n]|$)")
message(FATAL_ERROR "${installed_tweakme} does not define ${expected_macro}")
endif()
endforeach()
configure_checked(
"Configure ${library_type} installed consumers"
"${CMAKE_CURRENT_LIST_DIR}/tweakme" "${consumer_dir}" ${generator_args} ${common_args}
-DSPDLOG_TEST_INSTALLED=ON "-DSPDLOG_TEST_PREFIX=${prefix}" "-DCMAKE_PREFIX_PATH=${prefix}")
run_checked("Build ${library_type} installed consumers" "${CMAKE_COMMAND}" --build "${consumer_dir}" --config
"${SPDLOG_TEST_CONFIG}")
endfunction()
test_tweakme_configuration(static OFF)
test_tweakme_configuration(shared ON)