From 9af22514395a73f04c9d4de46ee843e5805abb54 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Sun, 30 Aug 2026 09:17:38 +0200 Subject: [PATCH 1/4] perf(odf): store the registry's ids narrow An element is five ids - parent, first and last child, previous and next sibling - a type and a node pointer, and nothing else. At 64 bits per id it is 56 bytes, of which 40 are ids; at 32 it is 32 bytes, and the sheet index entry that names a cell's element drops from 24 to 16 with it. `ElementIdentifier` itself stays 64 bits. It is public, and it is not everywhere an index: `csv` has no registry and packs a kind, a row and a column into its bits, so narrowing the public type quietly truncates a csv document to nothing. `StoredId` narrows inside this registry alone and every boundary widens back; an id only ever comes from `create_element`, which now refuses to hand out one it could not store. On `odr-private/ods/efficiency-big-1.ods` - 3.16M elements out of a 297 MB `content.xml` - peak footprint through a full html translation goes 914 MB to 777 MB. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012FzCVAsZATFPMoaAqZNkoc --- CMakePresets.json | 41 +++ FindGTest.cmake | 57 ++++ GTest-Target-relwithdebinfo.cmake | 286 ++++++++++++++++++ GTest-relwithdebinfo-armv8-data.cmake | 174 +++++++++++ GTestConfig.cmake | 44 +++ GTestConfigVersion.cmake | 21 ++ GTestTargets.cmake | 33 ++ OpenJPEG-Target-relwithdebinfo.cmake | 71 +++++ OpenJPEG-relwithdebinfo-armv8-data.cmake | 50 +++ OpenJPEGConfig.cmake | 44 +++ OpenJPEGConfigVersion.cmake | 21 ++ OpenJPEGTargets.cmake | 25 ++ cmakedeps_macros.cmake | 101 +++++++ conan_toolchain.cmake | 241 +++++++++++++++ conanbuild.sh | 1 + conanbuildenv-relwithdebinfo-armv8.sh | 13 + conandeps_legacy.cmake | 15 + conanrun.sh | 1 + conanrunenv-relwithdebinfo-armv8.sh | 13 + cryptopp-Target-relwithdebinfo.cmake | 103 +++++++ cryptopp-config-version.cmake | 21 ++ cryptopp-config.cmake | 44 +++ cryptopp-relwithdebinfo-armv8-data.cmake | 81 +++++ cryptoppTargets.cmake | 29 ++ deactivate_conanbuild.sh | 1 + deactivate_conanrun.sh | 1 + httplib-Target-relwithdebinfo.cmake | 71 +++++ httplib-config-version.cmake | 21 ++ httplib-config.cmake | 44 +++ httplib-relwithdebinfo-armv8-data.cmake | 50 +++ httplibTargets.cmake | 25 ++ md4c-Target-relwithdebinfo.cmake | 164 ++++++++++ md4c-config-version.cmake | 21 ++ md4c-config.cmake | 44 +++ md4c-relwithdebinfo-armv8-data.cmake | 112 +++++++ md4cTargets.cmake | 25 ++ miniz-Target-relwithdebinfo.cmake | 71 +++++ miniz-config-version.cmake | 21 ++ miniz-config.cmake | 44 +++ miniz-relwithdebinfo-armv8-data.cmake | 50 +++ minizTargets.cmake | 25 ++ module-GTest-Target-relwithdebinfo.cmake | 286 ++++++++++++++++++ module-GTest-relwithdebinfo-armv8-data.cmake | 174 +++++++++++ module-GTestTargets.cmake | 33 ++ nlohmann_json-Target-relwithdebinfo.cmake | 71 +++++ nlohmann_json-config-version.cmake | 21 ++ nlohmann_json-config.cmake | 44 +++ nlohmann_json-relwithdebinfo-armv8-data.cmake | 49 +++ nlohmann_jsonTargets.cmake | 25 ++ pugixml-Target-relwithdebinfo.cmake | 71 +++++ pugixml-config-version.cmake | 21 ++ pugixml-config.cmake | 44 +++ pugixml-relwithdebinfo-armv8-data.cmake | 49 +++ pugixmlTargets.cmake | 25 ++ src/odr/internal/odf/odf_element_registry.cpp | 27 +- src/odr/internal/odf/odf_element_registry.hpp | 27 +- test/data | 1 + uchardet-Target-relwithdebinfo.cmake | 71 +++++ uchardet-config-version.cmake | 21 ++ uchardet-config.cmake | 44 +++ uchardet-relwithdebinfo-armv8-data.cmake | 49 +++ uchardetTargets.cmake | 25 ++ utf8cpp-Target-relwithdebinfo.cmake | 71 +++++ utf8cpp-config-version.cmake | 21 ++ utf8cpp-config.cmake | 44 +++ utf8cpp-relwithdebinfo-armv8-data.cmake | 50 +++ utf8cppTargets.cmake | 33 ++ 67 files changed, 3697 insertions(+), 20 deletions(-) create mode 100644 CMakePresets.json create mode 100644 FindGTest.cmake create mode 100644 GTest-Target-relwithdebinfo.cmake create mode 100644 GTest-relwithdebinfo-armv8-data.cmake create mode 100644 GTestConfig.cmake create mode 100644 GTestConfigVersion.cmake create mode 100644 GTestTargets.cmake create mode 100644 OpenJPEG-Target-relwithdebinfo.cmake create mode 100644 OpenJPEG-relwithdebinfo-armv8-data.cmake create mode 100644 OpenJPEGConfig.cmake create mode 100644 OpenJPEGConfigVersion.cmake create mode 100644 OpenJPEGTargets.cmake create mode 100644 cmakedeps_macros.cmake create mode 100644 conan_toolchain.cmake create mode 100644 conanbuild.sh create mode 100644 conanbuildenv-relwithdebinfo-armv8.sh create mode 100644 conandeps_legacy.cmake create mode 100644 conanrun.sh create mode 100644 conanrunenv-relwithdebinfo-armv8.sh create mode 100644 cryptopp-Target-relwithdebinfo.cmake create mode 100644 cryptopp-config-version.cmake create mode 100644 cryptopp-config.cmake create mode 100644 cryptopp-relwithdebinfo-armv8-data.cmake create mode 100644 cryptoppTargets.cmake create mode 100644 deactivate_conanbuild.sh create mode 100644 deactivate_conanrun.sh create mode 100644 httplib-Target-relwithdebinfo.cmake create mode 100644 httplib-config-version.cmake create mode 100644 httplib-config.cmake create mode 100644 httplib-relwithdebinfo-armv8-data.cmake create mode 100644 httplibTargets.cmake create mode 100644 md4c-Target-relwithdebinfo.cmake create mode 100644 md4c-config-version.cmake create mode 100644 md4c-config.cmake create mode 100644 md4c-relwithdebinfo-armv8-data.cmake create mode 100644 md4cTargets.cmake create mode 100644 miniz-Target-relwithdebinfo.cmake create mode 100644 miniz-config-version.cmake create mode 100644 miniz-config.cmake create mode 100644 miniz-relwithdebinfo-armv8-data.cmake create mode 100644 minizTargets.cmake create mode 100644 module-GTest-Target-relwithdebinfo.cmake create mode 100644 module-GTest-relwithdebinfo-armv8-data.cmake create mode 100644 module-GTestTargets.cmake create mode 100644 nlohmann_json-Target-relwithdebinfo.cmake create mode 100644 nlohmann_json-config-version.cmake create mode 100644 nlohmann_json-config.cmake create mode 100644 nlohmann_json-relwithdebinfo-armv8-data.cmake create mode 100644 nlohmann_jsonTargets.cmake create mode 100644 pugixml-Target-relwithdebinfo.cmake create mode 100644 pugixml-config-version.cmake create mode 100644 pugixml-config.cmake create mode 100644 pugixml-relwithdebinfo-armv8-data.cmake create mode 100644 pugixmlTargets.cmake create mode 120000 test/data create mode 100644 uchardet-Target-relwithdebinfo.cmake create mode 100644 uchardet-config-version.cmake create mode 100644 uchardet-config.cmake create mode 100644 uchardet-relwithdebinfo-armv8-data.cmake create mode 100644 uchardetTargets.cmake create mode 100644 utf8cpp-Target-relwithdebinfo.cmake create mode 100644 utf8cpp-config-version.cmake create mode 100644 utf8cpp-config.cmake create mode 100644 utf8cpp-relwithdebinfo-armv8-data.cmake create mode 100644 utf8cppTargets.cmake diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..7d52d5078 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,41 @@ +{ + "version": 3, + "vendor": { + "conan": {} + }, + "cmakeMinimumRequired": { + "major": 3, + "minor": 15, + "patch": 0 + }, + "configurePresets": [ + { + "name": "conan-relwithdebinfo", + "displayName": "'conan-relwithdebinfo' config", + "description": "'conan-relwithdebinfo' configure using 'Unix Makefiles' generator", + "generator": "Unix Makefiles", + "cacheVariables": { + "CMAKE_POLICY_DEFAULT_CMP0091": "NEW", + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + }, + "toolchainFile": "conan_toolchain.cmake", + "binaryDir": "/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776" + } + ], + "buildPresets": [ + { + "name": "conan-relwithdebinfo", + "configurePreset": "conan-relwithdebinfo", + "jobs": 12 + } + ], + "testPresets": [ + { + "name": "conan-relwithdebinfo", + "configurePreset": "conan-relwithdebinfo", + "execution": { + "jobs": 12 + } + } + ] +} \ No newline at end of file diff --git a/FindGTest.cmake b/FindGTest.cmake new file mode 100644 index 000000000..beba625e8 --- /dev/null +++ b/FindGTest.cmake @@ -0,0 +1,57 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(GTest_FIND_QUIETLY) + set(GTest_MESSAGE_MODE VERBOSE) +else() + set(GTest_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/module-GTestTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${gtest_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(GTest_VERSION_STRING "1.14.0") +set(GTest_INCLUDE_DIRS ${gtest_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(GTest_INCLUDE_DIR ${gtest_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(GTest_LIBRARIES ${gtest_LIBRARIES_RELWITHDEBINFO} ) +set(GTest_DEFINITIONS ${gtest_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${gtest_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${GTest_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + +include(FindPackageHandleStandardArgs) +set(GTest_FOUND 1) +set(GTest_VERSION "1.14.0") + +find_package_handle_standard_args(GTest + REQUIRED_VARS GTest_VERSION + VERSION_VAR GTest_VERSION) +mark_as_advanced(GTest_FOUND GTest_VERSION) + +set(GTest_FOUND 1) +set(GTest_VERSION "1.14.0") +mark_as_advanced(GTest_FOUND GTest_VERSION) + diff --git a/GTest-Target-relwithdebinfo.cmake b/GTest-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..0876efa94 --- /dev/null +++ b/GTest-Target-relwithdebinfo.cmake @@ -0,0 +1,286 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(gtest_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET gtest_DEPS_TARGET) + add_library(gtest_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET gtest_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:GTest::gtest;GTest::gmock>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### gtest_DEPS_TARGET to all of them +conan_package_library_targets("${gtest_LIBS_RELWITHDEBINFO}" # libraries + "${gtest_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${gtest_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_DEPS_TARGET + gtest_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "gtest" # package_name + "${gtest_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${gtest_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## COMPONENTS TARGET PROPERTIES RelWithDebInfo ######################################## + + ########## COMPONENT GTest::gmock_main ############# + + set(gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gmock_main_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gmock_main_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gmock_main_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gmock_main_DEPS_TARGET) + add_library(gtest_GTest_gmock_main_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gmock_main_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gmock_main_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gmock_main_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gmock_main_DEPS_TARGET + gtest_GTest_gmock_main_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gmock_main" + "${gtest_GTest_gmock_main_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gmock_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_main_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gmock_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gmock_main_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gmock_main_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gmock_main_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gmock_main_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gmock ############# + + set(gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gmock_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gmock_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gmock_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gmock_DEPS_TARGET) + add_library(gtest_GTest_gmock_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gmock_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gmock_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gmock_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gmock_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gmock_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gmock_DEPS_TARGET + gtest_GTest_gmock_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gmock" + "${gtest_GTest_gmock_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gmock + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gmock_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gmock + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gmock_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gmock_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gmock_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gmock_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gmock_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gtest_main ############# + + set(gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gtest_main_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gtest_main_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gtest_main_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gtest_main_DEPS_TARGET) + add_library(gtest_GTest_gtest_main_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gtest_main_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gtest_main_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gtest_main_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gtest_main_DEPS_TARGET + gtest_GTest_gtest_main_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gtest_main" + "${gtest_GTest_gtest_main_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gtest_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_main_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gtest_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gtest_main_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gtest_main_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gtest_main_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gtest_main_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gtest ############# + + set(gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gtest_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gtest_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gtest_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gtest_DEPS_TARGET) + add_library(gtest_GTest_gtest_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gtest_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gtest_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gtest_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gtest_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gtest_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gtest_DEPS_TARGET + gtest_GTest_gtest_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gtest" + "${gtest_GTest_gtest_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gtest + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gtest_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gtest + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gtest_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gtest_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gtest_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gtest_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## AGGREGATED GLOBAL TARGET WITH THE COMPONENTS ##################### + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gmock_main) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gmock) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest_main) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest) + +########## For the modules (FindXXX) +set(gtest_LIBRARIES_RELWITHDEBINFO gtest::gtest) diff --git a/GTest-relwithdebinfo-armv8-data.cmake b/GTest-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..4e300b117 --- /dev/null +++ b/GTest-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,174 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +list(APPEND gtest_COMPONENT_NAMES GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main) +list(REMOVE_DUPLICATES gtest_COMPONENT_NAMES) +if(DEFINED gtest_FIND_DEPENDENCY_NAMES) + list(APPEND gtest_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES gtest_FIND_DEPENDENCY_NAMES) +else() + set(gtest_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(gtest_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/gtestb6bb409d34b28/p") +set(gtest_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(gtest_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_RES_DIRS_RELWITHDEBINFO ) +set(gtest_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_OBJECTS_RELWITHDEBINFO ) +set(gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(gtest_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_LIBS_RELWITHDEBINFO gmock_main gmock gtest_main gtest) +set(gtest_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_BUILD_DIRS_RELWITHDEBINFO ) +set(gtest_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(gtest_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(gtest_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${gtest_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(gtest_COMPONENTS_RELWITHDEBINFO GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main) +########### COMPONENT GTest::gmock_main VARIABLES ############################################ + +set(gtest_GTest_gmock_main_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gmock_main_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gmock_main_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gmock_main_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO gmock_main) +set(gtest_GTest_gmock_main_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_DEPENDENCIES_RELWITHDEBINFO GTest::gmock) +set(gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gmock_main_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gmock_main_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gmock VARIABLES ############################################ + +set(gtest_GTest_gmock_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gmock_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gmock_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gmock_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gmock_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gmock_LIBS_RELWITHDEBINFO gmock) +set(gtest_GTest_gmock_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_DEPENDENCIES_RELWITHDEBINFO GTest::gtest) +set(gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gmock_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gmock_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gmock_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gmock_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gmock_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gtest_main VARIABLES ############################################ + +set(gtest_GTest_gtest_main_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gtest_main_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gtest_main_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gtest_main_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO gtest_main) +set(gtest_GTest_gtest_main_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_DEPENDENCIES_RELWITHDEBINFO GTest::gtest) +set(gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gtest_main_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gtest_main_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gtest VARIABLES ############################################ + +set(gtest_GTest_gtest_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gtest_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gtest_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gtest_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gtest_LIBS_RELWITHDEBINFO gtest) +set(gtest_GTest_gtest_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_DEPENDENCIES_RELWITHDEBINFO ) +set(gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gtest_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gtest_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gtest_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") \ No newline at end of file diff --git a/GTestConfig.cmake b/GTestConfig.cmake new file mode 100644 index 000000000..60bec5c50 --- /dev/null +++ b/GTestConfig.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(GTest_FIND_QUIETLY) + set(GTest_MESSAGE_MODE VERBOSE) +else() + set(GTest_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/GTestTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${gtest_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(GTest_VERSION_STRING "1.14.0") +set(GTest_INCLUDE_DIRS ${gtest_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(GTest_INCLUDE_DIR ${gtest_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(GTest_LIBRARIES ${gtest_LIBRARIES_RELWITHDEBINFO} ) +set(GTest_DEFINITIONS ${gtest_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${gtest_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${GTest_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/GTestConfigVersion.cmake b/GTestConfigVersion.cmake new file mode 100644 index 000000000..654fbd3ca --- /dev/null +++ b/GTestConfigVersion.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "1.14.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("1.14.0" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "1.14.0") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/GTestTargets.cmake b/GTestTargets.cmake new file mode 100644 index 000000000..4c095e28f --- /dev/null +++ b/GTestTargets.cmake @@ -0,0 +1,33 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/GTest-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${gtest_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${GTest_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET gtest::gtest) + add_library(gtest::gtest INTERFACE IMPORTED) + message(${GTest_MESSAGE_MODE} "Conan: Target declared 'gtest::gtest'") +endif() +if(NOT TARGET GTest::GTest) + add_library(GTest::GTest INTERFACE IMPORTED) + set_property(TARGET GTest::GTest PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest) +endif() +if(NOT TARGET GTest::Main) + add_library(GTest::Main INTERFACE IMPORTED) + set_property(TARGET GTest::Main PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest_main) +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/GTest-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/OpenJPEG-Target-relwithdebinfo.cmake b/OpenJPEG-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..eb73e2c10 --- /dev/null +++ b/OpenJPEG-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(openjpeg_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(openjpeg_FRAMEWORKS_FOUND_RELWITHDEBINFO "${openjpeg_FRAMEWORKS_RELWITHDEBINFO}" "${openjpeg_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(openjpeg_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET openjpeg_DEPS_TARGET) + add_library(openjpeg_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET openjpeg_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${openjpeg_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${openjpeg_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### openjpeg_DEPS_TARGET to all of them +conan_package_library_targets("${openjpeg_LIBS_RELWITHDEBINFO}" # libraries + "${openjpeg_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${openjpeg_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${openjpeg_LIBRARY_TYPE_RELWITHDEBINFO}" + "${openjpeg_IS_HOST_WINDOWS_RELWITHDEBINFO}" + openjpeg_DEPS_TARGET + openjpeg_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "openjpeg" # package_name + "${openjpeg_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${openjpeg_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${openjpeg_OBJECTS_RELWITHDEBINFO}> + $<$:${openjpeg_LIBRARIES_TARGETS}> + ) + + if("${openjpeg_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + openjpeg_DEPS_TARGET) + endif() + + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${openjpeg_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${openjpeg_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${openjpeg_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${openjpeg_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET openjp2 + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${openjpeg_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(openjpeg_LIBRARIES_RELWITHDEBINFO openjp2) diff --git a/OpenJPEG-relwithdebinfo-armv8-data.cmake b/OpenJPEG-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..4775d5635 --- /dev/null +++ b/OpenJPEG-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,50 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(openjpeg_COMPONENT_NAMES "") +if(DEFINED openjpeg_FIND_DEPENDENCY_NAMES) + list(APPEND openjpeg_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES openjpeg_FIND_DEPENDENCY_NAMES) +else() + set(openjpeg_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/openja715c9c610054/p") +set(openjpeg_BUILD_MODULES_PATHS_RELWITHDEBINFO "${openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO}/lib/cmake/conan-official-openjpeg-variables.cmake") + + +set(openjpeg_INCLUDE_DIRS_RELWITHDEBINFO "${openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO}/include" + "${openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO}/include/openjpeg-2.5") +set(openjpeg_RES_DIRS_RELWITHDEBINFO ) +set(openjpeg_DEFINITIONS_RELWITHDEBINFO ) +set(openjpeg_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(openjpeg_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(openjpeg_OBJECTS_RELWITHDEBINFO ) +set(openjpeg_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(openjpeg_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(openjpeg_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(openjpeg_LIB_DIRS_RELWITHDEBINFO "${openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(openjpeg_BIN_DIRS_RELWITHDEBINFO ) +set(openjpeg_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(openjpeg_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(openjpeg_LIBS_RELWITHDEBINFO openjp2) +set(openjpeg_SYSTEM_LIBS_RELWITHDEBINFO ) +set(openjpeg_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(openjpeg_FRAMEWORKS_RELWITHDEBINFO ) +set(openjpeg_BUILD_DIRS_RELWITHDEBINFO "${openjpeg_PACKAGE_FOLDER_RELWITHDEBINFO}/lib/cmake") +set(openjpeg_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(openjpeg_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${openjpeg_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${openjpeg_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(openjpeg_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${openjpeg_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${openjpeg_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${openjpeg_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(openjpeg_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/OpenJPEGConfig.cmake b/OpenJPEGConfig.cmake new file mode 100644 index 000000000..737831560 --- /dev/null +++ b/OpenJPEGConfig.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(OpenJPEG_FIND_QUIETLY) + set(OpenJPEG_MESSAGE_MODE VERBOSE) +else() + set(OpenJPEG_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/OpenJPEGTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${openjpeg_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(OpenJPEG_VERSION_STRING "2.5.4") +set(OpenJPEG_INCLUDE_DIRS ${openjpeg_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(OpenJPEG_INCLUDE_DIR ${openjpeg_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(OpenJPEG_LIBRARIES ${openjpeg_LIBRARIES_RELWITHDEBINFO} ) +set(OpenJPEG_DEFINITIONS ${openjpeg_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${openjpeg_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${OpenJPEG_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/OpenJPEGConfigVersion.cmake b/OpenJPEGConfigVersion.cmake new file mode 100644 index 000000000..e6ff03dd9 --- /dev/null +++ b/OpenJPEGConfigVersion.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "2.5.4") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("2.5.4" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "2.5.4") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/OpenJPEGTargets.cmake b/OpenJPEGTargets.cmake new file mode 100644 index 000000000..aa7614a2c --- /dev/null +++ b/OpenJPEGTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenJPEG-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${openjpeg_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${OpenJPEG_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET openjp2) + add_library(openjp2 INTERFACE IMPORTED) + message(${OpenJPEG_MESSAGE_MODE} "Conan: Target declared 'openjp2'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/OpenJPEG-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/cmakedeps_macros.cmake b/cmakedeps_macros.cmake new file mode 100644 index 000000000..8a9e1176b --- /dev/null +++ b/cmakedeps_macros.cmake @@ -0,0 +1,101 @@ + +macro(conan_find_apple_frameworks FRAMEWORKS_FOUND FRAMEWORKS FRAMEWORKS_DIRS) + if(APPLE) + foreach(_FRAMEWORK ${FRAMEWORKS}) + # https://cmake.org/pipermail/cmake-developers/2017-August/030199.html + find_library(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND NAMES ${_FRAMEWORK} PATHS ${FRAMEWORKS_DIRS} CMAKE_FIND_ROOT_PATH_BOTH) + if(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND) + list(APPEND ${FRAMEWORKS_FOUND} ${CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND}) + message(VERBOSE "Framework found! ${FRAMEWORKS_FOUND}") + else() + message(FATAL_ERROR "Framework library ${_FRAMEWORK} not found in paths: ${FRAMEWORKS_DIRS}") + endif() + endforeach() + endif() +endmacro() + +function(conan_package_library_targets libraries package_libdir package_bindir library_type + is_host_windows deps_target out_libraries_target config_suffix package_name no_soname_mode) + set(_out_libraries_target "") + + foreach(_LIBRARY_NAME ${libraries}) + if(CMAKE_SYSTEM_NAME MATCHES "Windows" AND NOT DEFINED MINGW AND CMAKE_VERSION VERSION_LESS "3.29") + # Backport logic from https://github.com/Kitware/CMake/commit/c6efbd78d86798573654d1a791f76de0e71bd93f + # which is only needed on versions older than 3.29 + # this allows finding static library files created by meson + # We are not affected by PATH-derived folders, because we call find_library with NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + set(_original_find_library_suffixes "${CMAKE_FIND_LIBRARY_SUFFIXES}") + set(_original_find_library_prefixes "${CMAKE_FIND_LIBRARY_PREFIXES}") + set(CMAKE_FIND_LIBRARY_PREFIXES "" "lib") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.lib" ".lib" ".a") + endif() + find_library(CONAN_FOUND_LIBRARY NAMES ${_LIBRARY_NAME} PATHS ${package_libdir} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + if(DEFINED _original_find_library_suffixes) + set(CMAKE_FIND_LIBRARY_SUFFIXES "${_original_find_library_suffixes}") + set(CMAKE_FIND_LIBRARY_PREFIXES "${_original_find_library_prefixes}") + unset(_original_find_library_suffixes) + unset(_original_find_library_prefixes) + endif() + if(CONAN_FOUND_LIBRARY) + message(VERBOSE "Conan: Library ${_LIBRARY_NAME} found ${CONAN_FOUND_LIBRARY}") + + # Create a micro-target for each lib/a found + # Allow only some characters for the target name + string(REGEX REPLACE "[^A-Za-z0-9.+_-]" "_" _LIBRARY_NAME ${_LIBRARY_NAME}) + set(_LIB_NAME CONAN_LIB::${package_name}_${_LIBRARY_NAME}${config_suffix}) + + if(is_host_windows AND library_type STREQUAL "SHARED") + # Store and reset the variable, so it doesn't leak + set(_OLD_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES .dll ${CMAKE_FIND_LIBRARY_SUFFIXES}) + find_library(CONAN_SHARED_FOUND_LIBRARY NAMES ${_LIBRARY_NAME} PATHS ${package_bindir} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_OLD_CMAKE_FIND_LIBRARY_SUFFIXES}) + if(NOT CONAN_SHARED_FOUND_LIBRARY) + message(DEBUG "DLL library not found, creating UNKNOWN IMPORTED target, searched for: ${_LIBRARY_NAME}") + if(NOT TARGET ${_LIB_NAME}) + add_library(${_LIB_NAME} UNKNOWN IMPORTED) + endif() + set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_LOCATION${config_suffix} ${CONAN_FOUND_LIBRARY}) + else() + if(NOT TARGET ${_LIB_NAME}) + add_library(${_LIB_NAME} SHARED IMPORTED) + endif() + set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_LOCATION${config_suffix} ${CONAN_SHARED_FOUND_LIBRARY}) + set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_IMPLIB${config_suffix} ${CONAN_FOUND_LIBRARY}) + message(DEBUG "Found DLL and STATIC at ${CONAN_SHARED_FOUND_LIBRARY}, ${CONAN_FOUND_LIBRARY}") + endif() + unset(CONAN_SHARED_FOUND_LIBRARY CACHE) + else() + if(NOT TARGET ${_LIB_NAME}) + # library_type can be STATIC, still UNKNOWN (if no package type available in the recipe) or SHARED (but no windows) + add_library(${_LIB_NAME} ${library_type} IMPORTED) + endif() + message(DEBUG "Created target ${_LIB_NAME} ${library_type} IMPORTED") + set_target_properties(${_LIB_NAME} PROPERTIES IMPORTED_LOCATION${config_suffix} ${CONAN_FOUND_LIBRARY} IMPORTED_NO_SONAME ${no_soname_mode}) + endif() + list(APPEND _out_libraries_target ${_LIB_NAME}) + message(VERBOSE "Conan: Found: ${CONAN_FOUND_LIBRARY}") + else() + message(FATAL_ERROR "Library '${_LIBRARY_NAME}' not found in package. If '${_LIBRARY_NAME}' is a system library, declare it with 'cpp_info.system_libs' property") + endif() + unset(CONAN_FOUND_LIBRARY CACHE) + endforeach() + + # Add the dependencies target for all the imported libraries + foreach(_T ${_out_libraries_target}) + set_property(TARGET ${_T} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${deps_target}) + endforeach() + + set(${out_libraries_target} ${_out_libraries_target} PARENT_SCOPE) +endfunction() + +macro(check_build_type_defined) + # Check that the -DCMAKE_BUILD_TYPE argument is always present + get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(NOT isMultiConfig AND NOT CMAKE_BUILD_TYPE) + message(FATAL_ERROR "Please, set the CMAKE_BUILD_TYPE variable when calling to CMake " + "adding the '-DCMAKE_BUILD_TYPE=' argument.") + endif() +endmacro() diff --git a/conan_toolchain.cmake b/conan_toolchain.cmake new file mode 100644 index 000000000..fdf1291d5 --- /dev/null +++ b/conan_toolchain.cmake @@ -0,0 +1,241 @@ +# Conan automatically generated toolchain file +# DO NOT EDIT MANUALLY, it will be overwritten + +# Avoid including toolchain file several times (bad if appending to variables like +# CMAKE_CXX_FLAGS. See https://github.com/android/ndk/issues/323 +include_guard() +message(STATUS "Using Conan toolchain: ${CMAKE_CURRENT_LIST_FILE}") +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeToolchain' generator only works with CMake >= 3.15") +endif() + +########## 'user_toolchain' block ############# +# Include one or more CMake user toolchain from tools.cmake.cmaketoolchain:user_toolchain + + + +########## 'generic_system' block ############# +# Definition of system, platform and toolset + + + + + +########## 'compilers' block ############# + +set(CMAKE_C_COMPILER "clang") +set(CMAKE_CXX_COMPILER "clang++") + + +########## 'apple_system' block ############# +# Define Apple architectures, sysroot, deployment target, bitcode, etc + +# Set the architectures for which to build. +set(CMAKE_OSX_ARCHITECTURES arm64 CACHE STRING "" FORCE) +# Setting CMAKE_OSX_SYSROOT SDK, when using Xcode generator the name is enough +# but full path is necessary for others +set(CMAKE_OSX_SYSROOT macosx CACHE STRING "" FORCE) +set(BITCODE "") +set(FOBJC_ARC "") +set(VISIBILITY "") +#Check if Xcode generator is used, since that will handle these flags automagically +if(CMAKE_GENERATOR MATCHES "Xcode") + message(DEBUG "Not setting any manual command-line buildflags, since Xcode is selected as generator.") +else() + string(APPEND CONAN_C_FLAGS " ${BITCODE} ${VISIBILITY}") + string(APPEND CONAN_CXX_FLAGS " ${BITCODE} ${VISIBILITY}") + # Objective-C/C++ specific flags + string(APPEND CONAN_OBJC_FLAGS " ${BITCODE} ${VISIBILITY} ${FOBJC_ARC}") + string(APPEND CONAN_OBJCXX_FLAGS " ${BITCODE} ${VISIBILITY} ${FOBJC_ARC}") +endif() + + +########## 'fpic' block ############# +# Defining CMAKE_POSITION_INDEPENDENT_CODE for static libraries when necessary + +message(STATUS "Conan toolchain: Setting CMAKE_POSITION_INDEPENDENT_CODE=ON (options.fPIC)") +set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Position independent code") + + +########## 'rpath_link_flags' block ############# +# Pass -rpath-link pointing to all directories with runtime libraries + + +########## 'libcxx' block ############# +# Definition of libcxx from 'compiler.libcxx' setting, defining the +# right CXX_FLAGS for that libcxx + +message(STATUS "Conan toolchain: Defining libcxx as C++ flags: -stdlib=libc++") +string(APPEND CONAN_CXX_FLAGS " -stdlib=libc++") + + +########## 'cppstd' block ############# +# Define the C++ and C standards from 'compiler.cppstd' and 'compiler.cstd' + +function(conan_modify_std_watch variable access value current_list_file stack) + set(conan_watched_std_variable "20") + if (${variable} STREQUAL "CMAKE_C_STANDARD") + set(conan_watched_std_variable "") + endif() + if ("${access}" STREQUAL "MODIFIED_ACCESS" AND NOT "${value}" STREQUAL "${conan_watched_std_variable}") + message(STATUS "Warning: Standard ${variable} value defined in conan_toolchain.cmake to ${conan_watched_std_variable} has been modified to ${value} by ${current_list_file}") + endif() + unset(conan_watched_std_variable) +endfunction() + +message(STATUS "Conan toolchain: C++ Standard 20 with extensions ON") +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_EXTENSIONS ON) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +variable_watch(CMAKE_CXX_STANDARD conan_modify_std_watch) + + +########## 'extra_flags' block ############# +# Include extra C++, C and linker flags from configuration tools.build:flags +# and from CMakeToolchain.extra__flags + +# Conan conf flags start: +string(APPEND CONAN_CXX_FLAGS " -fno-sanitize=all") +string(APPEND CONAN_C_FLAGS " -fno-sanitize=all") +# Conan conf flags end + + +########## 'cmake_flags_init' block ############# +# Define CMAKE__FLAGS from CONAN__FLAGS + +foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES) + string(TOUPPER ${config} config) + if(DEFINED CONAN_CXX_FLAGS_${config}) + string(APPEND CMAKE_CXX_FLAGS_${config}_INIT " ${CONAN_CXX_FLAGS_${config}}") + endif() + if(DEFINED CONAN_C_FLAGS_${config}) + string(APPEND CMAKE_C_FLAGS_${config}_INIT " ${CONAN_C_FLAGS_${config}}") + endif() + if(DEFINED CONAN_SHARED_LINKER_FLAGS_${config}) + string(APPEND CMAKE_SHARED_LINKER_FLAGS_${config}_INIT " ${CONAN_SHARED_LINKER_FLAGS_${config}}") + endif() + if(DEFINED CONAN_EXE_LINKER_FLAGS_${config}) + string(APPEND CMAKE_EXE_LINKER_FLAGS_${config}_INIT " ${CONAN_EXE_LINKER_FLAGS_${config}}") + endif() +endforeach() + +if(DEFINED CONAN_CXX_FLAGS) + string(APPEND CMAKE_CXX_FLAGS_INIT " ${CONAN_CXX_FLAGS}") +endif() +if(DEFINED CONAN_C_FLAGS) + string(APPEND CMAKE_C_FLAGS_INIT " ${CONAN_C_FLAGS}") +endif() +if(DEFINED CONAN_SHARED_LINKER_FLAGS) + string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${CONAN_SHARED_LINKER_FLAGS}") +endif() +if(DEFINED CONAN_EXE_LINKER_FLAGS) + string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${CONAN_EXE_LINKER_FLAGS}") +endif() +if(DEFINED CONAN_OBJCXX_FLAGS) + string(APPEND CMAKE_OBJCXX_FLAGS_INIT " ${CONAN_OBJCXX_FLAGS}") +endif() +if(DEFINED CONAN_OBJC_FLAGS) + string(APPEND CMAKE_OBJC_FLAGS_INIT " ${CONAN_OBJC_FLAGS}") +endif() + + +########## 'extra_variables' block ############# +# Definition of extra CMake variables from tools.cmake.cmaketoolchain:extra_variables + + + +########## 'try_compile' block ############# +# Blocks after this one will not be added when running CMake try/checks +get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) +if(_CMAKE_IN_TRY_COMPILE) + message(STATUS "Running toolchain IN_TRY_COMPILE") + return() +endif() + + +########## 'find_paths' block ############# +# Define paths to find packages, programs, libraries, etc. +if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/conan_cmakedeps_paths.cmake") + message(STATUS "Conan toolchain: Including CMakeDeps generated conan_cmakedeps_paths.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/conan_cmakedeps_paths.cmake") +else() + +set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) + +# Definition of CMAKE_MODULE_PATH +list(PREPEND CMAKE_MODULE_PATH "/Users/andreas/.conan2/p/b/openja715c9c610054/p/lib/cmake") +# the generators folder (where conan generates files, like this toolchain) +list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) + +# Definition of CMAKE_PREFIX_PATH, CMAKE_XXXXX_PATH +# The explicitly defined "builddirs" of "host" context dependencies must be in PREFIX_PATH +list(PREPEND CMAKE_PREFIX_PATH "/Users/andreas/.conan2/p/b/openja715c9c610054/p/lib/cmake") +# The Conan local "generators" folder, where this toolchain is saved. +list(PREPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR} ) +list(PREPEND CMAKE_LIBRARY_PATH "/Users/andreas/.conan2/p/b/crypt4ff9b27e63670/p/lib" "/Users/andreas/.conan2/p/b/md4c0a60c9bc55651/p/lib" "/Users/andreas/.conan2/p/b/miniz5c80580ddaacd/p/lib" "/Users/andreas/.conan2/p/b/openja715c9c610054/p/lib" "/Users/andreas/.conan2/p/b/uchar435bc08c03cd6/p/lib" "/Users/andreas/.conan2/p/b/gtestb6bb409d34b28/p/lib") +list(PREPEND CMAKE_INCLUDE_PATH "/Users/andreas/.conan2/p/pugix676f7d1fa98b4/p/include" "/Users/andreas/.conan2/p/b/crypt4ff9b27e63670/p/include" "/Users/andreas/.conan2/p/b/md4c0a60c9bc55651/p/include" "/Users/andreas/.conan2/p/b/miniz5c80580ddaacd/p/include" "/Users/andreas/.conan2/p/b/miniz5c80580ddaacd/p/include/miniz" "/Users/andreas/.conan2/p/nlohmd014ef7748f4b/p/include" "/Users/andreas/.conan2/p/b/openja715c9c610054/p/include" "/Users/andreas/.conan2/p/b/openja715c9c610054/p/include/openjpeg-2.5" "/Users/andreas/.conan2/p/b/uchar435bc08c03cd6/p/include" "/Users/andreas/.conan2/p/utfcp412baeeda02ec/p/include" "/Users/andreas/.conan2/p/utfcp412baeeda02ec/p/include/utf8cpp" "/Users/andreas/.conan2/p/cpp-h320a4fd5aa060/p/include" "/Users/andreas/.conan2/p/cpp-h320a4fd5aa060/p/include/httplib" "/Users/andreas/.conan2/p/b/gtestb6bb409d34b28/p/include") +set(CONAN_RUNTIME_LIB_DIRS "/Users/andreas/.conan2/p/b/crypt4ff9b27e63670/p/lib" "/Users/andreas/.conan2/p/b/md4c0a60c9bc55651/p/lib" "/Users/andreas/.conan2/p/b/miniz5c80580ddaacd/p/lib" "/Users/andreas/.conan2/p/b/openja715c9c610054/p/lib" "/Users/andreas/.conan2/p/b/uchar435bc08c03cd6/p/lib" "/Users/andreas/.conan2/p/b/gtestb6bb409d34b28/p/lib" ) + +endif() + + +########## 'pkg_config' block ############# +# Define pkg-config from 'tools.gnu:pkg_config' executable and paths + +if (DEFINED ENV{PKG_CONFIG_PATH}) +set(ENV{PKG_CONFIG_PATH} "${CMAKE_CURRENT_LIST_DIR}:$ENV{PKG_CONFIG_PATH}") +else() +set(ENV{PKG_CONFIG_PATH} "${CMAKE_CURRENT_LIST_DIR}:") +endif() + + +########## 'rpath' block ############# +# Defining CMAKE_SKIP_RPATH + + + +########## 'shared' block ############# +# Define BUILD_SHARED_LIBS for shared libraries + +message(STATUS "Conan toolchain: Setting BUILD_SHARED_LIBS = OFF") +set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries") + + +########## 'output_dirs' block ############# +# Definition of CMAKE_INSTALL_XXX folders + +set(CMAKE_INSTALL_BINDIR "bin") +set(CMAKE_INSTALL_SBINDIR "bin") +set(CMAKE_INSTALL_LIBEXECDIR "bin") +set(CMAKE_INSTALL_LIBDIR "lib") +set(CMAKE_INSTALL_INCLUDEDIR "include") +set(CMAKE_INSTALL_OLDINCLUDEDIR "include") + + +########## 'variables' block ############# +# Definition of CMake variables from CMakeToolchain.variables values + +# Variables +set(CMAKE_PROJECT_VERSION "" CACHE STRING "Variable CMAKE_PROJECT_VERSION conan-toolchain defined") +set(ODR_TEST OFF CACHE BOOL "Variable ODR_TEST conan-toolchain defined") +set(ODR_WITH_LIBMAGIC "False" CACHE STRING "Variable ODR_WITH_LIBMAGIC conan-toolchain defined") +set(ODR_WITH_HTTP_SERVER "True" CACHE STRING "Variable ODR_WITH_HTTP_SERVER conan-toolchain defined") +set(ODR_CLI "True" CACHE STRING "Variable ODR_CLI conan-toolchain defined") +set(ODR_PYTHON "False" CACHE STRING "Variable ODR_PYTHON conan-toolchain defined") +set(ODR_JNI "False" CACHE STRING "Variable ODR_JNI conan-toolchain defined") +set(ODR_APPLE "False" CACHE STRING "Variable ODR_APPLE conan-toolchain defined") +set(ODR_WASM "False" CACHE STRING "Variable ODR_WASM conan-toolchain defined") +set(ODR_BUNDLE_ASSETS "False" CACHE STRING "Variable ODR_BUNDLE_ASSETS conan-toolchain defined") +# Variables per configuration + + + +########## 'preprocessor' block ############# +# Preprocessor definitions from CMakeToolchain.preprocessor_definitions values + +# Preprocessor definitions per configuration + + + +if(CMAKE_POLICY_DEFAULT_CMP0091) # Avoid unused and not-initialized warnings +endif() diff --git a/conanbuild.sh b/conanbuild.sh new file mode 100644 index 000000000..24e5251d2 --- /dev/null +++ b/conanbuild.sh @@ -0,0 +1 @@ +. "/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776/conanbuildenv-relwithdebinfo-armv8.sh" \ No newline at end of file diff --git a/conanbuildenv-relwithdebinfo-armv8.sh b/conanbuildenv-relwithdebinfo-armv8.sh new file mode 100644 index 000000000..89b914cf4 --- /dev/null +++ b/conanbuildenv-relwithdebinfo-armv8.sh @@ -0,0 +1,13 @@ +script_folder="/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776" +echo "echo Restoring environment" > "$script_folder/deactivate_conanbuildenv-relwithdebinfo-armv8.sh" +for v in +do + is_defined="true" + value=$(printenv $v) || is_defined="" || true + if [ -n "$value" ] || [ -n "$is_defined" ] + then + echo export "$v='$value'" >> "$script_folder/deactivate_conanbuildenv-relwithdebinfo-armv8.sh" + else + echo unset $v >> "$script_folder/deactivate_conanbuildenv-relwithdebinfo-armv8.sh" + fi +done diff --git a/conandeps_legacy.cmake b/conandeps_legacy.cmake new file mode 100644 index 000000000..52da83511 --- /dev/null +++ b/conandeps_legacy.cmake @@ -0,0 +1,15 @@ +message(STATUS "Conan: Using CMakeDeps conandeps_legacy.cmake aggregator via include()") +message(STATUS "Conan: It is recommended to use explicit find_package() per dependency instead") + +find_package(pugixml) +find_package(cryptopp) +find_package(md4c) +find_package(miniz) +find_package(nlohmann_json) +find_package(OpenJPEG) +find_package(uchardet) +find_package(utf8cpp) +find_package(httplib) +find_package(GTest) + +set(CONANDEPS_LEGACY pugixml::pugixml cryptopp::cryptopp md4c::md4c-html miniz::miniz nlohmann_json::nlohmann_json openjp2 uchardet::uchardet utf8cpp::utf8cpp httplib::httplib gtest::gtest ) \ No newline at end of file diff --git a/conanrun.sh b/conanrun.sh new file mode 100644 index 000000000..5b0d3adf0 --- /dev/null +++ b/conanrun.sh @@ -0,0 +1 @@ +. "/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776/conanrunenv-relwithdebinfo-armv8.sh" \ No newline at end of file diff --git a/conanrunenv-relwithdebinfo-armv8.sh b/conanrunenv-relwithdebinfo-armv8.sh new file mode 100644 index 000000000..82b413535 --- /dev/null +++ b/conanrunenv-relwithdebinfo-armv8.sh @@ -0,0 +1,13 @@ +script_folder="/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776" +echo "echo Restoring environment" > "$script_folder/deactivate_conanrunenv-relwithdebinfo-armv8.sh" +for v in +do + is_defined="true" + value=$(printenv $v) || is_defined="" || true + if [ -n "$value" ] || [ -n "$is_defined" ] + then + echo export "$v='$value'" >> "$script_folder/deactivate_conanrunenv-relwithdebinfo-armv8.sh" + else + echo unset $v >> "$script_folder/deactivate_conanrunenv-relwithdebinfo-armv8.sh" + fi +done diff --git a/cryptopp-Target-relwithdebinfo.cmake b/cryptopp-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..03f005547 --- /dev/null +++ b/cryptopp-Target-relwithdebinfo.cmake @@ -0,0 +1,103 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO "${cryptopp_FRAMEWORKS_RELWITHDEBINFO}" "${cryptopp_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(cryptopp_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET cryptopp_DEPS_TARGET) + add_library(cryptopp_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET cryptopp_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${cryptopp_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### cryptopp_DEPS_TARGET to all of them +conan_package_library_targets("${cryptopp_LIBS_RELWITHDEBINFO}" # libraries + "${cryptopp_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${cryptopp_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${cryptopp_LIBRARY_TYPE_RELWITHDEBINFO}" + "${cryptopp_IS_HOST_WINDOWS_RELWITHDEBINFO}" + cryptopp_DEPS_TARGET + cryptopp_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "cryptopp" # package_name + "${cryptopp_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${cryptopp_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## COMPONENTS TARGET PROPERTIES RelWithDebInfo ######################################## + + ########## COMPONENT cryptopp::cryptopp ############# + + set(cryptopp_cryptopp_cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(cryptopp_cryptopp_cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO "${cryptopp_cryptopp_cryptopp_FRAMEWORKS_RELWITHDEBINFO}" "${cryptopp_cryptopp_cryptopp_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(cryptopp_cryptopp_cryptopp_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET cryptopp_cryptopp_cryptopp_DEPS_TARGET) + add_library(cryptopp_cryptopp_cryptopp_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET cryptopp_cryptopp_cryptopp_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${cryptopp_cryptopp_cryptopp_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${cryptopp_cryptopp_cryptopp_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${cryptopp_cryptopp_cryptopp_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'cryptopp_cryptopp_cryptopp_DEPS_TARGET' to all of them + conan_package_library_targets("${cryptopp_cryptopp_cryptopp_LIBS_RELWITHDEBINFO}" + "${cryptopp_cryptopp_cryptopp_LIB_DIRS_RELWITHDEBINFO}" + "${cryptopp_cryptopp_cryptopp_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${cryptopp_cryptopp_cryptopp_LIBRARY_TYPE_RELWITHDEBINFO}" + "${cryptopp_cryptopp_cryptopp_IS_HOST_WINDOWS_RELWITHDEBINFO}" + cryptopp_cryptopp_cryptopp_DEPS_TARGET + cryptopp_cryptopp_cryptopp_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "cryptopp_cryptopp_cryptopp" + "${cryptopp_cryptopp_cryptopp_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET cryptopp::cryptopp + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${cryptopp_cryptopp_cryptopp_OBJECTS_RELWITHDEBINFO}> + $<$:${cryptopp_cryptopp_cryptopp_LIBRARIES_TARGETS}> + ) + + if("${cryptopp_cryptopp_cryptopp_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET cryptopp::cryptopp + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + cryptopp_cryptopp_cryptopp_DEPS_TARGET) + endif() + + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${cryptopp_cryptopp_cryptopp_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${cryptopp_cryptopp_cryptopp_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${cryptopp_cryptopp_cryptopp_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${cryptopp_cryptopp_cryptopp_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## AGGREGATED GLOBAL TARGET WITH THE COMPONENTS ##################### + set_property(TARGET cryptopp::cryptopp APPEND PROPERTY INTERFACE_LINK_LIBRARIES cryptopp::cryptopp) + +########## For the modules (FindXXX) +set(cryptopp_LIBRARIES_RELWITHDEBINFO cryptopp::cryptopp) diff --git a/cryptopp-config-version.cmake b/cryptopp-config-version.cmake new file mode 100644 index 000000000..de3cdb2af --- /dev/null +++ b/cryptopp-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "8.9.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("8.9.0" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "8.9.0") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/cryptopp-config.cmake b/cryptopp-config.cmake new file mode 100644 index 000000000..3704362b0 --- /dev/null +++ b/cryptopp-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(cryptopp_FIND_QUIETLY) + set(cryptopp_MESSAGE_MODE VERBOSE) +else() + set(cryptopp_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/cryptoppTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${cryptopp_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(cryptopp_VERSION_STRING "8.9.0") +set(cryptopp_INCLUDE_DIRS ${cryptopp_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(cryptopp_INCLUDE_DIR ${cryptopp_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(cryptopp_LIBRARIES ${cryptopp_LIBRARIES_RELWITHDEBINFO} ) +set(cryptopp_DEFINITIONS ${cryptopp_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${cryptopp_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${cryptopp_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/cryptopp-relwithdebinfo-armv8-data.cmake b/cryptopp-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..0e03a19cb --- /dev/null +++ b/cryptopp-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,81 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +list(APPEND cryptopp_COMPONENT_NAMES cryptopp::cryptopp) +list(REMOVE_DUPLICATES cryptopp_COMPONENT_NAMES) +if(DEFINED cryptopp_FIND_DEPENDENCY_NAMES) + list(APPEND cryptopp_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES cryptopp_FIND_DEPENDENCY_NAMES) +else() + set(cryptopp_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(cryptopp_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/crypt4ff9b27e63670/p") +set(cryptopp_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(cryptopp_INCLUDE_DIRS_RELWITHDEBINFO "${cryptopp_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(cryptopp_RES_DIRS_RELWITHDEBINFO ) +set(cryptopp_DEFINITIONS_RELWITHDEBINFO ) +set(cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(cryptopp_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(cryptopp_OBJECTS_RELWITHDEBINFO ) +set(cryptopp_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(cryptopp_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(cryptopp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(cryptopp_LIB_DIRS_RELWITHDEBINFO "${cryptopp_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(cryptopp_BIN_DIRS_RELWITHDEBINFO ) +set(cryptopp_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(cryptopp_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(cryptopp_LIBS_RELWITHDEBINFO cryptopp) +set(cryptopp_SYSTEM_LIBS_RELWITHDEBINFO ) +set(cryptopp_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(cryptopp_FRAMEWORKS_RELWITHDEBINFO ) +set(cryptopp_BUILD_DIRS_RELWITHDEBINFO ) +set(cryptopp_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(cryptopp_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${cryptopp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${cryptopp_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(cryptopp_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${cryptopp_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(cryptopp_COMPONENTS_RELWITHDEBINFO cryptopp::cryptopp) +########### COMPONENT cryptopp::cryptopp VARIABLES ############################################ + +set(cryptopp_cryptopp_cryptopp_INCLUDE_DIRS_RELWITHDEBINFO "${cryptopp_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(cryptopp_cryptopp_cryptopp_LIB_DIRS_RELWITHDEBINFO "${cryptopp_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(cryptopp_cryptopp_cryptopp_BIN_DIRS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(cryptopp_cryptopp_cryptopp_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(cryptopp_cryptopp_cryptopp_RES_DIRS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_DEFINITIONS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_OBJECTS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(cryptopp_cryptopp_cryptopp_LIBS_RELWITHDEBINFO cryptopp) +set(cryptopp_cryptopp_cryptopp_SYSTEM_LIBS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_FRAMEWORKS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_DEPENDENCIES_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(cryptopp_cryptopp_cryptopp_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(cryptopp_cryptopp_cryptopp_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${cryptopp_cryptopp_cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${cryptopp_cryptopp_cryptopp_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${cryptopp_cryptopp_cryptopp_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${cryptopp_cryptopp_cryptopp_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") \ No newline at end of file diff --git a/cryptoppTargets.cmake b/cryptoppTargets.cmake new file mode 100644 index 000000000..20875aada --- /dev/null +++ b/cryptoppTargets.cmake @@ -0,0 +1,29 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/cryptopp-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${cryptopp_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${cryptopp_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET cryptopp::cryptopp) + add_library(cryptopp::cryptopp INTERFACE IMPORTED) + message(${cryptopp_MESSAGE_MODE} "Conan: Target declared 'cryptopp::cryptopp'") +endif() +if(NOT TARGET cryptopp-static) + add_library(cryptopp-static INTERFACE IMPORTED) + set_property(TARGET cryptopp-static PROPERTY INTERFACE_LINK_LIBRARIES cryptopp::cryptopp) +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/cryptopp-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/deactivate_conanbuild.sh b/deactivate_conanbuild.sh new file mode 100644 index 000000000..1812edaa1 --- /dev/null +++ b/deactivate_conanbuild.sh @@ -0,0 +1 @@ +. "/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776/deactivate_conanbuildenv-relwithdebinfo-armv8.sh" \ No newline at end of file diff --git a/deactivate_conanrun.sh b/deactivate_conanrun.sh new file mode 100644 index 000000000..ed308944c --- /dev/null +++ b/deactivate_conanrun.sh @@ -0,0 +1 @@ +. "/private/tmp/claude-501/-Users-andreas-odr-OpenDocument-core/50040636-38e1-4d0f-90ae-6ed308703180/scratchpad/wt776/deactivate_conanrunenv-relwithdebinfo-armv8.sh" \ No newline at end of file diff --git a/httplib-Target-relwithdebinfo.cmake b/httplib-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..ec0184453 --- /dev/null +++ b/httplib-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(cpp-httplib_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(cpp-httplib_FRAMEWORKS_FOUND_RELWITHDEBINFO "${cpp-httplib_FRAMEWORKS_RELWITHDEBINFO}" "${cpp-httplib_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(cpp-httplib_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET cpp-httplib_DEPS_TARGET) + add_library(cpp-httplib_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET cpp-httplib_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${cpp-httplib_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${cpp-httplib_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### cpp-httplib_DEPS_TARGET to all of them +conan_package_library_targets("${cpp-httplib_LIBS_RELWITHDEBINFO}" # libraries + "${cpp-httplib_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${cpp-httplib_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${cpp-httplib_LIBRARY_TYPE_RELWITHDEBINFO}" + "${cpp-httplib_IS_HOST_WINDOWS_RELWITHDEBINFO}" + cpp-httplib_DEPS_TARGET + cpp-httplib_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "cpp-httplib" # package_name + "${cpp-httplib_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${cpp-httplib_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${cpp-httplib_OBJECTS_RELWITHDEBINFO}> + $<$:${cpp-httplib_LIBRARIES_TARGETS}> + ) + + if("${cpp-httplib_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + cpp-httplib_DEPS_TARGET) + endif() + + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${cpp-httplib_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${cpp-httplib_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${cpp-httplib_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${cpp-httplib_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET httplib::httplib + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${cpp-httplib_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(cpp-httplib_LIBRARIES_RELWITHDEBINFO httplib::httplib) diff --git a/httplib-config-version.cmake b/httplib-config-version.cmake new file mode 100644 index 000000000..9d21aae7d --- /dev/null +++ b/httplib-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "0.47.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("0.47.0" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "0.47.0") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/httplib-config.cmake b/httplib-config.cmake new file mode 100644 index 000000000..3ef4d8422 --- /dev/null +++ b/httplib-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(httplib_FIND_QUIETLY) + set(httplib_MESSAGE_MODE VERBOSE) +else() + set(httplib_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/httplibTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${cpp-httplib_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(httplib_VERSION_STRING "0.47.0") +set(httplib_INCLUDE_DIRS ${cpp-httplib_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(httplib_INCLUDE_DIR ${cpp-httplib_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(httplib_LIBRARIES ${cpp-httplib_LIBRARIES_RELWITHDEBINFO} ) +set(httplib_DEFINITIONS ${cpp-httplib_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${cpp-httplib_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${httplib_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/httplib-relwithdebinfo-armv8-data.cmake b/httplib-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..8852f5215 --- /dev/null +++ b/httplib-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,50 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(cpp-httplib_COMPONENT_NAMES "") +if(DEFINED cpp-httplib_FIND_DEPENDENCY_NAMES) + list(APPEND cpp-httplib_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES cpp-httplib_FIND_DEPENDENCY_NAMES) +else() + set(cpp-httplib_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(cpp-httplib_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/cpp-h320a4fd5aa060/p") +set(cpp-httplib_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(cpp-httplib_INCLUDE_DIRS_RELWITHDEBINFO "${cpp-httplib_PACKAGE_FOLDER_RELWITHDEBINFO}/include" + "${cpp-httplib_PACKAGE_FOLDER_RELWITHDEBINFO}/include/httplib") +set(cpp-httplib_RES_DIRS_RELWITHDEBINFO ) +set(cpp-httplib_DEFINITIONS_RELWITHDEBINFO "-DCPPHTTPLIB_USE_NON_BLOCKING_GETADDRINFO") +set(cpp-httplib_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(cpp-httplib_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(cpp-httplib_OBJECTS_RELWITHDEBINFO ) +set(cpp-httplib_COMPILE_DEFINITIONS_RELWITHDEBINFO "CPPHTTPLIB_USE_NON_BLOCKING_GETADDRINFO") +set(cpp-httplib_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(cpp-httplib_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(cpp-httplib_LIB_DIRS_RELWITHDEBINFO ) +set(cpp-httplib_BIN_DIRS_RELWITHDEBINFO ) +set(cpp-httplib_LIBRARY_TYPE_RELWITHDEBINFO UNKNOWN) +set(cpp-httplib_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(cpp-httplib_LIBS_RELWITHDEBINFO ) +set(cpp-httplib_SYSTEM_LIBS_RELWITHDEBINFO ) +set(cpp-httplib_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(cpp-httplib_FRAMEWORKS_RELWITHDEBINFO CoreFoundation CFNetwork) +set(cpp-httplib_BUILD_DIRS_RELWITHDEBINFO ) +set(cpp-httplib_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(cpp-httplib_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${cpp-httplib_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${cpp-httplib_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(cpp-httplib_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${cpp-httplib_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${cpp-httplib_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${cpp-httplib_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(cpp-httplib_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/httplibTargets.cmake b/httplibTargets.cmake new file mode 100644 index 000000000..e73ff62e5 --- /dev/null +++ b/httplibTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/httplib-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${cpp-httplib_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${httplib_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET httplib::httplib) + add_library(httplib::httplib INTERFACE IMPORTED) + message(${httplib_MESSAGE_MODE} "Conan: Target declared 'httplib::httplib'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/httplib-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/md4c-Target-relwithdebinfo.cmake b/md4c-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..c57682588 --- /dev/null +++ b/md4c-Target-relwithdebinfo.cmake @@ -0,0 +1,164 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO "${md4c_FRAMEWORKS_RELWITHDEBINFO}" "${md4c_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(md4c_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET md4c_DEPS_TARGET) + add_library(md4c_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET md4c_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${md4c_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:md4c::md4c>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### md4c_DEPS_TARGET to all of them +conan_package_library_targets("${md4c_LIBS_RELWITHDEBINFO}" # libraries + "${md4c_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${md4c_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${md4c_LIBRARY_TYPE_RELWITHDEBINFO}" + "${md4c_IS_HOST_WINDOWS_RELWITHDEBINFO}" + md4c_DEPS_TARGET + md4c_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "md4c" # package_name + "${md4c_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${md4c_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## COMPONENTS TARGET PROPERTIES RelWithDebInfo ######################################## + + ########## COMPONENT md4c::md4c-html ############# + + set(md4c_md4c_md4c-html_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(md4c_md4c_md4c-html_FRAMEWORKS_FOUND_RELWITHDEBINFO "${md4c_md4c_md4c-html_FRAMEWORKS_RELWITHDEBINFO}" "${md4c_md4c_md4c-html_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(md4c_md4c_md4c-html_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET md4c_md4c_md4c-html_DEPS_TARGET) + add_library(md4c_md4c_md4c-html_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET md4c_md4c_md4c-html_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${md4c_md4c_md4c-html_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c-html_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c-html_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'md4c_md4c_md4c-html_DEPS_TARGET' to all of them + conan_package_library_targets("${md4c_md4c_md4c-html_LIBS_RELWITHDEBINFO}" + "${md4c_md4c_md4c-html_LIB_DIRS_RELWITHDEBINFO}" + "${md4c_md4c_md4c-html_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${md4c_md4c_md4c-html_LIBRARY_TYPE_RELWITHDEBINFO}" + "${md4c_md4c_md4c-html_IS_HOST_WINDOWS_RELWITHDEBINFO}" + md4c_md4c_md4c-html_DEPS_TARGET + md4c_md4c_md4c-html_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "md4c_md4c_md4c-html" + "${md4c_md4c_md4c-html_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET md4c::md4c-html + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${md4c_md4c_md4c-html_OBJECTS_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c-html_LIBRARIES_TARGETS}> + ) + + if("${md4c_md4c_md4c-html_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET md4c::md4c-html + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + md4c_md4c_md4c-html_DEPS_TARGET) + endif() + + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${md4c_md4c_md4c-html_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${md4c_md4c_md4c-html_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${md4c_md4c_md4c-html_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${md4c_md4c_md4c-html_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${md4c_md4c_md4c-html_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT md4c::md4c ############# + + set(md4c_md4c_md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(md4c_md4c_md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO "${md4c_md4c_md4c_FRAMEWORKS_RELWITHDEBINFO}" "${md4c_md4c_md4c_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(md4c_md4c_md4c_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET md4c_md4c_md4c_DEPS_TARGET) + add_library(md4c_md4c_md4c_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET md4c_md4c_md4c_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${md4c_md4c_md4c_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'md4c_md4c_md4c_DEPS_TARGET' to all of them + conan_package_library_targets("${md4c_md4c_md4c_LIBS_RELWITHDEBINFO}" + "${md4c_md4c_md4c_LIB_DIRS_RELWITHDEBINFO}" + "${md4c_md4c_md4c_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${md4c_md4c_md4c_LIBRARY_TYPE_RELWITHDEBINFO}" + "${md4c_md4c_md4c_IS_HOST_WINDOWS_RELWITHDEBINFO}" + md4c_md4c_md4c_DEPS_TARGET + md4c_md4c_md4c_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "md4c_md4c_md4c" + "${md4c_md4c_md4c_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET md4c::md4c + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${md4c_md4c_md4c_OBJECTS_RELWITHDEBINFO}> + $<$:${md4c_md4c_md4c_LIBRARIES_TARGETS}> + ) + + if("${md4c_md4c_md4c_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET md4c::md4c + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + md4c_md4c_md4c_DEPS_TARGET) + endif() + + set_property(TARGET md4c::md4c APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${md4c_md4c_md4c_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${md4c_md4c_md4c_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${md4c_md4c_md4c_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${md4c_md4c_md4c_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET md4c::md4c APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${md4c_md4c_md4c_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## AGGREGATED GLOBAL TARGET WITH THE COMPONENTS ##################### + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_LINK_LIBRARIES md4c::md4c-html) + set_property(TARGET md4c::md4c-html APPEND PROPERTY INTERFACE_LINK_LIBRARIES md4c::md4c) + +########## For the modules (FindXXX) +set(md4c_LIBRARIES_RELWITHDEBINFO md4c::md4c-html) diff --git a/md4c-config-version.cmake b/md4c-config-version.cmake new file mode 100644 index 000000000..53adccac8 --- /dev/null +++ b/md4c-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "0.5.2") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("0.5.2" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "0.5.2") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/md4c-config.cmake b/md4c-config.cmake new file mode 100644 index 000000000..4bd89e4ae --- /dev/null +++ b/md4c-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(md4c_FIND_QUIETLY) + set(md4c_MESSAGE_MODE VERBOSE) +else() + set(md4c_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/md4cTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${md4c_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(md4c_VERSION_STRING "0.5.2") +set(md4c_INCLUDE_DIRS ${md4c_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(md4c_INCLUDE_DIR ${md4c_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(md4c_LIBRARIES ${md4c_LIBRARIES_RELWITHDEBINFO} ) +set(md4c_DEFINITIONS ${md4c_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${md4c_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${md4c_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/md4c-relwithdebinfo-armv8-data.cmake b/md4c-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..b669aa1e3 --- /dev/null +++ b/md4c-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,112 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +list(APPEND md4c_COMPONENT_NAMES md4c::md4c md4c::md4c-html) +list(REMOVE_DUPLICATES md4c_COMPONENT_NAMES) +if(DEFINED md4c_FIND_DEPENDENCY_NAMES) + list(APPEND md4c_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES md4c_FIND_DEPENDENCY_NAMES) +else() + set(md4c_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(md4c_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/md4c0a60c9bc55651/p") +set(md4c_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(md4c_INCLUDE_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(md4c_RES_DIRS_RELWITHDEBINFO ) +set(md4c_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_OBJECTS_RELWITHDEBINFO ) +set(md4c_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(md4c_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(md4c_LIB_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(md4c_BIN_DIRS_RELWITHDEBINFO ) +set(md4c_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(md4c_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(md4c_LIBS_RELWITHDEBINFO md4c-html md4c) +set(md4c_SYSTEM_LIBS_RELWITHDEBINFO ) +set(md4c_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(md4c_FRAMEWORKS_RELWITHDEBINFO ) +set(md4c_BUILD_DIRS_RELWITHDEBINFO ) +set(md4c_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(md4c_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${md4c_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${md4c_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(md4c_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${md4c_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(md4c_COMPONENTS_RELWITHDEBINFO md4c::md4c md4c::md4c-html) +########### COMPONENT md4c::md4c-html VARIABLES ############################################ + +set(md4c_md4c_md4c-html_INCLUDE_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(md4c_md4c_md4c-html_LIB_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(md4c_md4c_md4c-html_BIN_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(md4c_md4c_md4c-html_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(md4c_md4c_md4c-html_RES_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_OBJECTS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(md4c_md4c_md4c-html_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(md4c_md4c_md4c-html_LIBS_RELWITHDEBINFO md4c-html) +set(md4c_md4c_md4c-html_SYSTEM_LIBS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_FRAMEWORKS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_DEPENDENCIES_RELWITHDEBINFO md4c::md4c) +set(md4c_md4c_md4c-html_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_md4c_md4c-html_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(md4c_md4c_md4c-html_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${md4c_md4c_md4c-html_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${md4c_md4c_md4c-html_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${md4c_md4c_md4c-html_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(md4c_md4c_md4c-html_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${md4c_md4c_md4c-html_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${md4c_md4c_md4c-html_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT md4c::md4c VARIABLES ############################################ + +set(md4c_md4c_md4c_INCLUDE_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(md4c_md4c_md4c_LIB_DIRS_RELWITHDEBINFO "${md4c_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(md4c_md4c_md4c_BIN_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(md4c_md4c_md4c_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(md4c_md4c_md4c_RES_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_OBJECTS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(md4c_md4c_md4c_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(md4c_md4c_md4c_LIBS_RELWITHDEBINFO md4c) +set(md4c_md4c_md4c_SYSTEM_LIBS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_FRAMEWORKS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_DEPENDENCIES_RELWITHDEBINFO ) +set(md4c_md4c_md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(md4c_md4c_md4c_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(md4c_md4c_md4c_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${md4c_md4c_md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${md4c_md4c_md4c_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${md4c_md4c_md4c_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(md4c_md4c_md4c_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${md4c_md4c_md4c_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${md4c_md4c_md4c_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") \ No newline at end of file diff --git a/md4cTargets.cmake b/md4cTargets.cmake new file mode 100644 index 000000000..217549ca8 --- /dev/null +++ b/md4cTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/md4c-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${md4c_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${md4c_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET md4c::md4c-html) + add_library(md4c::md4c-html INTERFACE IMPORTED) + message(${md4c_MESSAGE_MODE} "Conan: Target declared 'md4c::md4c-html'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/md4c-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/miniz-Target-relwithdebinfo.cmake b/miniz-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..37346f466 --- /dev/null +++ b/miniz-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(miniz_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(miniz_FRAMEWORKS_FOUND_RELWITHDEBINFO "${miniz_FRAMEWORKS_RELWITHDEBINFO}" "${miniz_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(miniz_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET miniz_DEPS_TARGET) + add_library(miniz_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET miniz_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${miniz_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${miniz_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### miniz_DEPS_TARGET to all of them +conan_package_library_targets("${miniz_LIBS_RELWITHDEBINFO}" # libraries + "${miniz_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${miniz_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${miniz_LIBRARY_TYPE_RELWITHDEBINFO}" + "${miniz_IS_HOST_WINDOWS_RELWITHDEBINFO}" + miniz_DEPS_TARGET + miniz_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "miniz" # package_name + "${miniz_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${miniz_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${miniz_OBJECTS_RELWITHDEBINFO}> + $<$:${miniz_LIBRARIES_TARGETS}> + ) + + if("${miniz_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + miniz_DEPS_TARGET) + endif() + + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${miniz_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${miniz_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${miniz_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${miniz_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET miniz::miniz + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${miniz_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(miniz_LIBRARIES_RELWITHDEBINFO miniz::miniz) diff --git a/miniz-config-version.cmake b/miniz-config-version.cmake new file mode 100644 index 000000000..5ad77687e --- /dev/null +++ b/miniz-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "3.1.1") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("3.1.1" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "3.1.1") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/miniz-config.cmake b/miniz-config.cmake new file mode 100644 index 000000000..59f1f5ff2 --- /dev/null +++ b/miniz-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(miniz_FIND_QUIETLY) + set(miniz_MESSAGE_MODE VERBOSE) +else() + set(miniz_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/minizTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${miniz_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(miniz_VERSION_STRING "3.1.1") +set(miniz_INCLUDE_DIRS ${miniz_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(miniz_INCLUDE_DIR ${miniz_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(miniz_LIBRARIES ${miniz_LIBRARIES_RELWITHDEBINFO} ) +set(miniz_DEFINITIONS ${miniz_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${miniz_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${miniz_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/miniz-relwithdebinfo-armv8-data.cmake b/miniz-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..93dcec09b --- /dev/null +++ b/miniz-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,50 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(miniz_COMPONENT_NAMES "") +if(DEFINED miniz_FIND_DEPENDENCY_NAMES) + list(APPEND miniz_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES miniz_FIND_DEPENDENCY_NAMES) +else() + set(miniz_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(miniz_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/miniz5c80580ddaacd/p") +set(miniz_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(miniz_INCLUDE_DIRS_RELWITHDEBINFO "${miniz_PACKAGE_FOLDER_RELWITHDEBINFO}/include" + "${miniz_PACKAGE_FOLDER_RELWITHDEBINFO}/include/miniz") +set(miniz_RES_DIRS_RELWITHDEBINFO ) +set(miniz_DEFINITIONS_RELWITHDEBINFO ) +set(miniz_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(miniz_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(miniz_OBJECTS_RELWITHDEBINFO ) +set(miniz_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(miniz_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(miniz_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(miniz_LIB_DIRS_RELWITHDEBINFO "${miniz_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(miniz_BIN_DIRS_RELWITHDEBINFO ) +set(miniz_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(miniz_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(miniz_LIBS_RELWITHDEBINFO miniz) +set(miniz_SYSTEM_LIBS_RELWITHDEBINFO ) +set(miniz_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(miniz_FRAMEWORKS_RELWITHDEBINFO ) +set(miniz_BUILD_DIRS_RELWITHDEBINFO ) +set(miniz_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(miniz_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${miniz_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${miniz_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(miniz_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${miniz_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${miniz_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${miniz_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(miniz_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/minizTargets.cmake b/minizTargets.cmake new file mode 100644 index 000000000..7bfd79ca5 --- /dev/null +++ b/minizTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/miniz-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${miniz_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${miniz_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET miniz::miniz) + add_library(miniz::miniz INTERFACE IMPORTED) + message(${miniz_MESSAGE_MODE} "Conan: Target declared 'miniz::miniz'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/miniz-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/module-GTest-Target-relwithdebinfo.cmake b/module-GTest-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..0876efa94 --- /dev/null +++ b/module-GTest-Target-relwithdebinfo.cmake @@ -0,0 +1,286 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(gtest_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET gtest_DEPS_TARGET) + add_library(gtest_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET gtest_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:GTest::gtest;GTest::gmock>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### gtest_DEPS_TARGET to all of them +conan_package_library_targets("${gtest_LIBS_RELWITHDEBINFO}" # libraries + "${gtest_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${gtest_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_DEPS_TARGET + gtest_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "gtest" # package_name + "${gtest_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${gtest_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## COMPONENTS TARGET PROPERTIES RelWithDebInfo ######################################## + + ########## COMPONENT GTest::gmock_main ############# + + set(gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gmock_main_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gmock_main_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gmock_main_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gmock_main_DEPS_TARGET) + add_library(gtest_GTest_gmock_main_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gmock_main_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_main_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gmock_main_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gmock_main_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gmock_main_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gmock_main_DEPS_TARGET + gtest_GTest_gmock_main_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gmock_main" + "${gtest_GTest_gmock_main_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gmock_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_main_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_main_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gmock_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gmock_main_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gmock_main_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gmock_main_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gmock_main_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock_main APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gmock ############# + + set(gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gmock_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gmock_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gmock_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gmock_DEPS_TARGET) + add_library(gtest_GTest_gmock_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gmock_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gmock_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gmock_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gmock_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gmock_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gmock_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gmock_DEPS_TARGET + gtest_GTest_gmock_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gmock" + "${gtest_GTest_gmock_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gmock + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gmock_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gmock_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gmock_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gmock + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gmock_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gmock_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gmock_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gmock_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gmock APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gmock_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gtest_main ############# + + set(gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gtest_main_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gtest_main_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gtest_main_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gtest_main_DEPS_TARGET) + add_library(gtest_GTest_gtest_main_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gtest_main_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_main_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gtest_main_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gtest_main_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gtest_main_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gtest_main_DEPS_TARGET + gtest_GTest_gtest_main_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gtest_main" + "${gtest_GTest_gtest_main_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gtest_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_main_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_main_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gtest_main + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gtest_main_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gtest_main_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gtest_main_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gtest_main_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest_main APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## COMPONENT GTest::gtest ############# + + set(gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "") + conan_find_apple_frameworks(gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO "${gtest_GTest_gtest_FRAMEWORKS_RELWITHDEBINFO}" "${gtest_GTest_gtest_FRAMEWORK_DIRS_RELWITHDEBINFO}") + + set(gtest_GTest_gtest_LIBRARIES_TARGETS "") + + ######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) + if(NOT TARGET gtest_GTest_gtest_DEPS_TARGET) + add_library(gtest_GTest_gtest_DEPS_TARGET INTERFACE IMPORTED) + endif() + + set_property(TARGET gtest_GTest_gtest_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_DEPENDENCIES_RELWITHDEBINFO}> + ) + + ####### Find the libraries declared in cpp_info.component["xxx"].libs, + ####### create an IMPORTED target for each one and link the 'gtest_GTest_gtest_DEPS_TARGET' to all of them + conan_package_library_targets("${gtest_GTest_gtest_LIBS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO}" + "${gtest_GTest_gtest_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${gtest_GTest_gtest_LIBRARY_TYPE_RELWITHDEBINFO}" + "${gtest_GTest_gtest_IS_HOST_WINDOWS_RELWITHDEBINFO}" + gtest_GTest_gtest_DEPS_TARGET + gtest_GTest_gtest_LIBRARIES_TARGETS + "_RELWITHDEBINFO" + "gtest_GTest_gtest" + "${gtest_GTest_gtest_NO_SONAME_MODE_RELWITHDEBINFO}") + + + ########## TARGET PROPERTIES ##################################### + set_property(TARGET GTest::gtest + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${gtest_GTest_gtest_OBJECTS_RELWITHDEBINFO}> + $<$:${gtest_GTest_gtest_LIBRARIES_TARGETS}> + ) + + if("${gtest_GTest_gtest_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the component is not declaring any "cpp_info.components['foo'].libs" the system, frameworks etc are not + # linked to the imported targets and we need to do it to the global target + set_property(TARGET GTest::gtest + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + gtest_GTest_gtest_DEPS_TARGET) + endif() + + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${gtest_GTest_gtest_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${gtest_GTest_gtest_INCLUDE_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${gtest_GTest_gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET GTest::gtest APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${gtest_GTest_gtest_COMPILE_OPTIONS_RELWITHDEBINFO}>) + + + ########## AGGREGATED GLOBAL TARGET WITH THE COMPONENTS ##################### + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gmock_main) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gmock) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest_main) + set_property(TARGET gtest::gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest) + +########## For the modules (FindXXX) +set(gtest_LIBRARIES_RELWITHDEBINFO gtest::gtest) diff --git a/module-GTest-relwithdebinfo-armv8-data.cmake b/module-GTest-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..4e300b117 --- /dev/null +++ b/module-GTest-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,174 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +list(APPEND gtest_COMPONENT_NAMES GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main) +list(REMOVE_DUPLICATES gtest_COMPONENT_NAMES) +if(DEFINED gtest_FIND_DEPENDENCY_NAMES) + list(APPEND gtest_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES gtest_FIND_DEPENDENCY_NAMES) +else() + set(gtest_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(gtest_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/gtestb6bb409d34b28/p") +set(gtest_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(gtest_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_RES_DIRS_RELWITHDEBINFO ) +set(gtest_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_OBJECTS_RELWITHDEBINFO ) +set(gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(gtest_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_LIBS_RELWITHDEBINFO gmock_main gmock gtest_main gtest) +set(gtest_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_BUILD_DIRS_RELWITHDEBINFO ) +set(gtest_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(gtest_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(gtest_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${gtest_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(gtest_COMPONENTS_RELWITHDEBINFO GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main) +########### COMPONENT GTest::gmock_main VARIABLES ############################################ + +set(gtest_GTest_gmock_main_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gmock_main_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gmock_main_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gmock_main_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gmock_main_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gmock_main_LIBS_RELWITHDEBINFO gmock_main) +set(gtest_GTest_gmock_main_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_DEPENDENCIES_RELWITHDEBINFO GTest::gmock) +set(gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_main_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gmock_main_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gmock_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gmock_main_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gmock_main_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gmock_main_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gmock VARIABLES ############################################ + +set(gtest_GTest_gmock_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gmock_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gmock_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gmock_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gmock_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gmock_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gmock_LIBS_RELWITHDEBINFO gmock) +set(gtest_GTest_gmock_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_DEPENDENCIES_RELWITHDEBINFO GTest::gtest) +set(gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gmock_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gmock_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gmock_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gmock_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gmock_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gmock_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gmock_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gtest_main VARIABLES ############################################ + +set(gtest_GTest_gtest_main_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gtest_main_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gtest_main_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gtest_main_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gtest_main_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gtest_main_LIBS_RELWITHDEBINFO gtest_main) +set(gtest_GTest_gtest_main_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_DEPENDENCIES_RELWITHDEBINFO GTest::gtest) +set(gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_main_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gtest_main_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gtest_main_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gtest_main_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gtest_main_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gtest_main_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +########### COMPONENT GTest::gtest VARIABLES ############################################ + +set(gtest_GTest_gtest_INCLUDE_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(gtest_GTest_gtest_LIB_DIRS_RELWITHDEBINFO "${gtest_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(gtest_GTest_gtest_BIN_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(gtest_GTest_gtest_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(gtest_GTest_gtest_RES_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_OBJECTS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO "") +set(gtest_GTest_gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO "") +set(gtest_GTest_gtest_LIBS_RELWITHDEBINFO gtest) +set(gtest_GTest_gtest_SYSTEM_LIBS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_FRAMEWORKS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_DEPENDENCIES_RELWITHDEBINFO ) +set(gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(gtest_GTest_gtest_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + +# COMPOUND VARIABLES +set(gtest_GTest_gtest_LINKER_FLAGS_RELWITHDEBINFO + $<$,SHARED_LIBRARY>:${gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,MODULE_LIBRARY>:${gtest_GTest_gtest_SHARED_LINK_FLAGS_RELWITHDEBINFO}> + $<$,EXECUTABLE>:${gtest_GTest_gtest_EXE_LINK_FLAGS_RELWITHDEBINFO}> +) +set(gtest_GTest_gtest_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${gtest_GTest_gtest_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${gtest_GTest_gtest_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") \ No newline at end of file diff --git a/module-GTestTargets.cmake b/module-GTestTargets.cmake new file mode 100644 index 000000000..69a874bfd --- /dev/null +++ b/module-GTestTargets.cmake @@ -0,0 +1,33 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/module-GTest-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${gtest_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${GTest_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET gtest::gtest) + add_library(gtest::gtest INTERFACE IMPORTED) + message(${GTest_MESSAGE_MODE} "Conan: Target declared 'gtest::gtest'") +endif() +if(NOT TARGET GTest::GTest) + add_library(GTest::GTest INTERFACE IMPORTED) + set_property(TARGET GTest::GTest PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest) +endif() +if(NOT TARGET GTest::Main) + add_library(GTest::Main INTERFACE IMPORTED) + set_property(TARGET GTest::Main PROPERTY INTERFACE_LINK_LIBRARIES GTest::gtest_main) +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/module-GTest-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/nlohmann_json-Target-relwithdebinfo.cmake b/nlohmann_json-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..affb25dde --- /dev/null +++ b/nlohmann_json-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(nlohmann_json_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(nlohmann_json_FRAMEWORKS_FOUND_RELWITHDEBINFO "${nlohmann_json_FRAMEWORKS_RELWITHDEBINFO}" "${nlohmann_json_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(nlohmann_json_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET nlohmann_json_DEPS_TARGET) + add_library(nlohmann_json_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET nlohmann_json_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${nlohmann_json_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${nlohmann_json_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### nlohmann_json_DEPS_TARGET to all of them +conan_package_library_targets("${nlohmann_json_LIBS_RELWITHDEBINFO}" # libraries + "${nlohmann_json_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${nlohmann_json_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${nlohmann_json_LIBRARY_TYPE_RELWITHDEBINFO}" + "${nlohmann_json_IS_HOST_WINDOWS_RELWITHDEBINFO}" + nlohmann_json_DEPS_TARGET + nlohmann_json_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "nlohmann_json" # package_name + "${nlohmann_json_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${nlohmann_json_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${nlohmann_json_OBJECTS_RELWITHDEBINFO}> + $<$:${nlohmann_json_LIBRARIES_TARGETS}> + ) + + if("${nlohmann_json_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + nlohmann_json_DEPS_TARGET) + endif() + + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${nlohmann_json_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${nlohmann_json_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${nlohmann_json_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${nlohmann_json_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET nlohmann_json::nlohmann_json + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${nlohmann_json_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(nlohmann_json_LIBRARIES_RELWITHDEBINFO nlohmann_json::nlohmann_json) diff --git a/nlohmann_json-config-version.cmake b/nlohmann_json-config-version.cmake new file mode 100644 index 000000000..d6d052f4d --- /dev/null +++ b/nlohmann_json-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "3.12.0") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("3.12.0" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "3.12.0") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/nlohmann_json-config.cmake b/nlohmann_json-config.cmake new file mode 100644 index 000000000..db355dc50 --- /dev/null +++ b/nlohmann_json-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(nlohmann_json_FIND_QUIETLY) + set(nlohmann_json_MESSAGE_MODE VERBOSE) +else() + set(nlohmann_json_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/nlohmann_jsonTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${nlohmann_json_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(nlohmann_json_VERSION_STRING "3.12.0") +set(nlohmann_json_INCLUDE_DIRS ${nlohmann_json_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(nlohmann_json_INCLUDE_DIR ${nlohmann_json_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(nlohmann_json_LIBRARIES ${nlohmann_json_LIBRARIES_RELWITHDEBINFO} ) +set(nlohmann_json_DEFINITIONS ${nlohmann_json_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${nlohmann_json_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${nlohmann_json_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/nlohmann_json-relwithdebinfo-armv8-data.cmake b/nlohmann_json-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..8c0579323 --- /dev/null +++ b/nlohmann_json-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,49 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(nlohmann_json_COMPONENT_NAMES "") +if(DEFINED nlohmann_json_FIND_DEPENDENCY_NAMES) + list(APPEND nlohmann_json_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES nlohmann_json_FIND_DEPENDENCY_NAMES) +else() + set(nlohmann_json_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(nlohmann_json_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/nlohmd014ef7748f4b/p") +set(nlohmann_json_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(nlohmann_json_INCLUDE_DIRS_RELWITHDEBINFO "${nlohmann_json_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(nlohmann_json_RES_DIRS_RELWITHDEBINFO ) +set(nlohmann_json_DEFINITIONS_RELWITHDEBINFO ) +set(nlohmann_json_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(nlohmann_json_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(nlohmann_json_OBJECTS_RELWITHDEBINFO ) +set(nlohmann_json_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(nlohmann_json_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(nlohmann_json_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(nlohmann_json_LIB_DIRS_RELWITHDEBINFO ) +set(nlohmann_json_BIN_DIRS_RELWITHDEBINFO ) +set(nlohmann_json_LIBRARY_TYPE_RELWITHDEBINFO UNKNOWN) +set(nlohmann_json_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(nlohmann_json_LIBS_RELWITHDEBINFO ) +set(nlohmann_json_SYSTEM_LIBS_RELWITHDEBINFO ) +set(nlohmann_json_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(nlohmann_json_FRAMEWORKS_RELWITHDEBINFO ) +set(nlohmann_json_BUILD_DIRS_RELWITHDEBINFO ) +set(nlohmann_json_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(nlohmann_json_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${nlohmann_json_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${nlohmann_json_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(nlohmann_json_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${nlohmann_json_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${nlohmann_json_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${nlohmann_json_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(nlohmann_json_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/nlohmann_jsonTargets.cmake b/nlohmann_jsonTargets.cmake new file mode 100644 index 000000000..f73a681c5 --- /dev/null +++ b/nlohmann_jsonTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/nlohmann_json-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${nlohmann_json_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${nlohmann_json_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET nlohmann_json::nlohmann_json) + add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED) + message(${nlohmann_json_MESSAGE_MODE} "Conan: Target declared 'nlohmann_json::nlohmann_json'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/nlohmann_json-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/pugixml-Target-relwithdebinfo.cmake b/pugixml-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..cdfa49b32 --- /dev/null +++ b/pugixml-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(pugixml_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(pugixml_FRAMEWORKS_FOUND_RELWITHDEBINFO "${pugixml_FRAMEWORKS_RELWITHDEBINFO}" "${pugixml_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(pugixml_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET pugixml_DEPS_TARGET) + add_library(pugixml_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET pugixml_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${pugixml_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${pugixml_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### pugixml_DEPS_TARGET to all of them +conan_package_library_targets("${pugixml_LIBS_RELWITHDEBINFO}" # libraries + "${pugixml_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${pugixml_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${pugixml_LIBRARY_TYPE_RELWITHDEBINFO}" + "${pugixml_IS_HOST_WINDOWS_RELWITHDEBINFO}" + pugixml_DEPS_TARGET + pugixml_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "pugixml" # package_name + "${pugixml_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${pugixml_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${pugixml_OBJECTS_RELWITHDEBINFO}> + $<$:${pugixml_LIBRARIES_TARGETS}> + ) + + if("${pugixml_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + pugixml_DEPS_TARGET) + endif() + + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${pugixml_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${pugixml_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${pugixml_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${pugixml_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET pugixml::pugixml + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${pugixml_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(pugixml_LIBRARIES_RELWITHDEBINFO pugixml::pugixml) diff --git a/pugixml-config-version.cmake b/pugixml-config-version.cmake new file mode 100644 index 000000000..412861fb0 --- /dev/null +++ b/pugixml-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "1.15") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("1.15" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "1.15") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/pugixml-config.cmake b/pugixml-config.cmake new file mode 100644 index 000000000..7427e03d8 --- /dev/null +++ b/pugixml-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(pugixml_FIND_QUIETLY) + set(pugixml_MESSAGE_MODE VERBOSE) +else() + set(pugixml_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/pugixmlTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${pugixml_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(pugixml_VERSION_STRING "1.15") +set(pugixml_INCLUDE_DIRS ${pugixml_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(pugixml_INCLUDE_DIR ${pugixml_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(pugixml_LIBRARIES ${pugixml_LIBRARIES_RELWITHDEBINFO} ) +set(pugixml_DEFINITIONS ${pugixml_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${pugixml_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${pugixml_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/pugixml-relwithdebinfo-armv8-data.cmake b/pugixml-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..ad4e6b9f0 --- /dev/null +++ b/pugixml-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,49 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(pugixml_COMPONENT_NAMES "") +if(DEFINED pugixml_FIND_DEPENDENCY_NAMES) + list(APPEND pugixml_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES pugixml_FIND_DEPENDENCY_NAMES) +else() + set(pugixml_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(pugixml_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/pugix676f7d1fa98b4/p") +set(pugixml_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(pugixml_INCLUDE_DIRS_RELWITHDEBINFO "${pugixml_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(pugixml_RES_DIRS_RELWITHDEBINFO ) +set(pugixml_DEFINITIONS_RELWITHDEBINFO "-DPUGIXML_HEADER_ONLY") +set(pugixml_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(pugixml_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(pugixml_OBJECTS_RELWITHDEBINFO ) +set(pugixml_COMPILE_DEFINITIONS_RELWITHDEBINFO "PUGIXML_HEADER_ONLY") +set(pugixml_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(pugixml_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(pugixml_LIB_DIRS_RELWITHDEBINFO ) +set(pugixml_BIN_DIRS_RELWITHDEBINFO ) +set(pugixml_LIBRARY_TYPE_RELWITHDEBINFO UNKNOWN) +set(pugixml_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(pugixml_LIBS_RELWITHDEBINFO ) +set(pugixml_SYSTEM_LIBS_RELWITHDEBINFO ) +set(pugixml_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(pugixml_FRAMEWORKS_RELWITHDEBINFO ) +set(pugixml_BUILD_DIRS_RELWITHDEBINFO ) +set(pugixml_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(pugixml_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${pugixml_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${pugixml_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(pugixml_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${pugixml_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${pugixml_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${pugixml_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(pugixml_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/pugixmlTargets.cmake b/pugixmlTargets.cmake new file mode 100644 index 000000000..725a01917 --- /dev/null +++ b/pugixmlTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/pugixml-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${pugixml_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${pugixml_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET pugixml::pugixml) + add_library(pugixml::pugixml INTERFACE IMPORTED) + message(${pugixml_MESSAGE_MODE} "Conan: Target declared 'pugixml::pugixml'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/pugixml-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/src/odr/internal/odf/odf_element_registry.cpp b/src/odr/internal/odf/odf_element_registry.cpp index 2bc72be2e..289fcee6c 100644 --- a/src/odr/internal/odf/odf_element_registry.cpp +++ b/src/odr/internal/odf/odf_element_registry.cpp @@ -1,6 +1,7 @@ #include #include +#include #include namespace odr::internal::odf { @@ -22,6 +23,11 @@ void ElementRegistry::clear() noexcept { std::tuple ElementRegistry::create_element(const ElementType type, const pugi::xml_node node) { + if (m_elements.size() >= std::numeric_limits::max()) { + throw std::overflow_error( + "ElementRegistry::create_element: out of identifiers"); + } + Element &element = m_elements.emplace_back(); const ElementIdentifier element_id = m_elements.size(); element.type = type; @@ -134,18 +140,17 @@ ElementRegistry::sheet_cell_element(const ElementIdentifier id) const { void ElementRegistry::link_child(const ElementIdentifier parent_id, const ElementIdentifier child_id, - ElementIdentifier &first_id, - ElementIdentifier &last_id) { + StoredId &first_id, StoredId &last_id) { Element &child = element_at(child_id); - child.parent_id = parent_id; + child.parent_id = static_cast(parent_id); child.previous_sibling_id = last_id; if (first_id == null_element_id) { - first_id = child_id; + first_id = static_cast(child_id); } else { - element_at(last_id).next_sibling_id = child_id; + element_at(last_id).next_sibling_id = static_cast(child_id); } - last_id = child_id; + last_id = static_cast(child_id); } void ElementRegistry::append_child(const ElementIdentifier parent_id, @@ -196,7 +201,7 @@ void ElementRegistry::append_sheet_cell(const ElementIdentifier sheet_id, "child already has a parent"); } - element_at(cell_id).parent_id = sheet_id; + element_at(cell_id).parent_id = static_cast(sheet_id); } void ElementRegistry::check_element_id(const ElementIdentifier id) const { @@ -281,10 +286,14 @@ void ElementRegistry::Sheet::register_cell(const std::uint32_t column, const std::uint32_t end = column + columns_repeated; if (cells.size() > rows.back().first_cell && cells.back().end >= end) { - cells.back() = {.end = end, .node = element, .element_id = element_id}; + cells.back() = {.end = end, + .element_id = static_cast(element_id), + .node = element}; return; } - cells.push_back({.end = end, .node = element, .element_id = element_id}); + cells.push_back({.end = end, + .element_id = static_cast(element_id), + .node = element}); } namespace { diff --git a/src/odr/internal/odf/odf_element_registry.hpp b/src/odr/internal/odf/odf_element_registry.hpp index d8358891f..e5d0bd3ca 100644 --- a/src/odr/internal/odf/odf_element_registry.hpp +++ b/src/odr/internal/odf/odf_element_registry.hpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -19,19 +20,23 @@ namespace odr::internal::odf { class ElementRegistry final { public: + /// An element is five ids, so the width is most of what one costs. Widened + /// back at every boundary; an id past @ref check_element_id fits. + using StoredId = std::uint32_t; + struct Element final { - ElementIdentifier parent_id{null_element_id}; - ElementIdentifier first_child_id{null_element_id}; - ElementIdentifier last_child_id{null_element_id}; - ElementIdentifier previous_sibling_id{null_element_id}; - ElementIdentifier next_sibling_id{null_element_id}; + StoredId parent_id{null_element_id}; + StoredId first_child_id{null_element_id}; + StoredId last_child_id{null_element_id}; + StoredId previous_sibling_id{null_element_id}; + StoredId next_sibling_id{null_element_id}; ElementType type{ElementType::none}; pugi::xml_node node; }; struct Table final { - ElementIdentifier first_column_id{null_element_id}; - ElementIdentifier last_column_id{null_element_id}; + StoredId first_column_id{null_element_id}; + StoredId last_column_id{null_element_id}; }; struct Text final { @@ -50,8 +55,8 @@ class ElementRegistry final { struct Cell final { std::uint32_t end{0}; + StoredId element_id{null_element_id}; pugi::xml_node node; - ElementIdentifier element_id{null_element_id}; }; struct Row final { @@ -66,8 +71,8 @@ class ElementRegistry final { std::vector rows; std::vector cells; - ElementIdentifier first_shape_id{null_element_id}; - ElementIdentifier last_shape_id{null_element_id}; + StoredId first_shape_id{null_element_id}; + StoredId last_shape_id{null_element_id}; void register_column(std::uint32_t column, std::uint32_t repeated, pugi::xml_node element); @@ -153,7 +158,7 @@ class ElementRegistry final { /// Links `child_id` as the last child of the chain `first_id`/`last_id`. void link_child(ElementIdentifier parent_id, ElementIdentifier child_id, - ElementIdentifier &first_id, ElementIdentifier &last_id); + StoredId &first_id, StoredId &last_id); void check_element_id(ElementIdentifier id) const; void check_text_id(ElementIdentifier id) const; diff --git a/test/data b/test/data new file mode 120000 index 000000000..8194f5eab --- /dev/null +++ b/test/data @@ -0,0 +1 @@ +/Users/andreas/odr/OpenDocument.core/test/data \ No newline at end of file diff --git a/uchardet-Target-relwithdebinfo.cmake b/uchardet-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..56e9c9d27 --- /dev/null +++ b/uchardet-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(uchardet_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(uchardet_FRAMEWORKS_FOUND_RELWITHDEBINFO "${uchardet_FRAMEWORKS_RELWITHDEBINFO}" "${uchardet_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(uchardet_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET uchardet_DEPS_TARGET) + add_library(uchardet_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET uchardet_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${uchardet_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${uchardet_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### uchardet_DEPS_TARGET to all of them +conan_package_library_targets("${uchardet_LIBS_RELWITHDEBINFO}" # libraries + "${uchardet_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${uchardet_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${uchardet_LIBRARY_TYPE_RELWITHDEBINFO}" + "${uchardet_IS_HOST_WINDOWS_RELWITHDEBINFO}" + uchardet_DEPS_TARGET + uchardet_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "uchardet" # package_name + "${uchardet_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${uchardet_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${uchardet_OBJECTS_RELWITHDEBINFO}> + $<$:${uchardet_LIBRARIES_TARGETS}> + ) + + if("${uchardet_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + uchardet_DEPS_TARGET) + endif() + + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${uchardet_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${uchardet_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${uchardet_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${uchardet_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET uchardet::uchardet + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${uchardet_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(uchardet_LIBRARIES_RELWITHDEBINFO uchardet::uchardet) diff --git a/uchardet-config-version.cmake b/uchardet-config-version.cmake new file mode 100644 index 000000000..162388bda --- /dev/null +++ b/uchardet-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "0.0.8") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("0.0.8" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "0.0.8") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/uchardet-config.cmake b/uchardet-config.cmake new file mode 100644 index 000000000..b0ec09629 --- /dev/null +++ b/uchardet-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(uchardet_FIND_QUIETLY) + set(uchardet_MESSAGE_MODE VERBOSE) +else() + set(uchardet_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/uchardetTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${uchardet_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(uchardet_VERSION_STRING "0.0.8") +set(uchardet_INCLUDE_DIRS ${uchardet_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(uchardet_INCLUDE_DIR ${uchardet_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(uchardet_LIBRARIES ${uchardet_LIBRARIES_RELWITHDEBINFO} ) +set(uchardet_DEFINITIONS ${uchardet_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${uchardet_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${uchardet_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/uchardet-relwithdebinfo-armv8-data.cmake b/uchardet-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..448f95e8e --- /dev/null +++ b/uchardet-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,49 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(uchardet_COMPONENT_NAMES "") +if(DEFINED uchardet_FIND_DEPENDENCY_NAMES) + list(APPEND uchardet_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES uchardet_FIND_DEPENDENCY_NAMES) +else() + set(uchardet_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(uchardet_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/b/uchar435bc08c03cd6/p") +set(uchardet_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(uchardet_INCLUDE_DIRS_RELWITHDEBINFO "${uchardet_PACKAGE_FOLDER_RELWITHDEBINFO}/include") +set(uchardet_RES_DIRS_RELWITHDEBINFO ) +set(uchardet_DEFINITIONS_RELWITHDEBINFO ) +set(uchardet_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(uchardet_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(uchardet_OBJECTS_RELWITHDEBINFO ) +set(uchardet_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(uchardet_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(uchardet_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(uchardet_LIB_DIRS_RELWITHDEBINFO "${uchardet_PACKAGE_FOLDER_RELWITHDEBINFO}/lib") +set(uchardet_BIN_DIRS_RELWITHDEBINFO ) +set(uchardet_LIBRARY_TYPE_RELWITHDEBINFO STATIC) +set(uchardet_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(uchardet_LIBS_RELWITHDEBINFO uchardet) +set(uchardet_SYSTEM_LIBS_RELWITHDEBINFO ) +set(uchardet_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(uchardet_FRAMEWORKS_RELWITHDEBINFO ) +set(uchardet_BUILD_DIRS_RELWITHDEBINFO ) +set(uchardet_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(uchardet_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${uchardet_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${uchardet_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(uchardet_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${uchardet_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${uchardet_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${uchardet_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(uchardet_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/uchardetTargets.cmake b/uchardetTargets.cmake new file mode 100644 index 000000000..9a9904e19 --- /dev/null +++ b/uchardetTargets.cmake @@ -0,0 +1,25 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/uchardet-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${uchardet_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${uchardet_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET uchardet::uchardet) + add_library(uchardet::uchardet INTERFACE IMPORTED) + message(${uchardet_MESSAGE_MODE} "Conan: Target declared 'uchardet::uchardet'") +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/uchardet-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file diff --git a/utf8cpp-Target-relwithdebinfo.cmake b/utf8cpp-Target-relwithdebinfo.cmake new file mode 100644 index 000000000..067b4c2f2 --- /dev/null +++ b/utf8cpp-Target-relwithdebinfo.cmake @@ -0,0 +1,71 @@ +# Avoid multiple calls to find_package to append duplicated properties to the targets +include_guard()########### VARIABLES ####################################################################### +############################################################################################# +set(utfcpp_FRAMEWORKS_FOUND_RELWITHDEBINFO "") # Will be filled later +conan_find_apple_frameworks(utfcpp_FRAMEWORKS_FOUND_RELWITHDEBINFO "${utfcpp_FRAMEWORKS_RELWITHDEBINFO}" "${utfcpp_FRAMEWORK_DIRS_RELWITHDEBINFO}") + +set(utfcpp_LIBRARIES_TARGETS "") # Will be filled later + + +######## Create an interface target to contain all the dependencies (frameworks, system and conan deps) +if(NOT TARGET utfcpp_DEPS_TARGET) + add_library(utfcpp_DEPS_TARGET INTERFACE IMPORTED) +endif() + +set_property(TARGET utfcpp_DEPS_TARGET + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${utfcpp_FRAMEWORKS_FOUND_RELWITHDEBINFO}> + $<$:${utfcpp_SYSTEM_LIBS_RELWITHDEBINFO}> + $<$:>) + +####### Find the libraries declared in cpp_info.libs, create an IMPORTED target for each one and link the +####### utfcpp_DEPS_TARGET to all of them +conan_package_library_targets("${utfcpp_LIBS_RELWITHDEBINFO}" # libraries + "${utfcpp_LIB_DIRS_RELWITHDEBINFO}" # package_libdir + "${utfcpp_BIN_DIRS_RELWITHDEBINFO}" # package_bindir + "${utfcpp_LIBRARY_TYPE_RELWITHDEBINFO}" + "${utfcpp_IS_HOST_WINDOWS_RELWITHDEBINFO}" + utfcpp_DEPS_TARGET + utfcpp_LIBRARIES_TARGETS # out_libraries_targets + "_RELWITHDEBINFO" + "utfcpp" # package_name + "${utfcpp_NO_SONAME_MODE_RELWITHDEBINFO}") # soname + +# FIXME: What is the result of this for multi-config? All configs adding themselves to path? +set(CMAKE_MODULE_PATH ${utfcpp_BUILD_DIRS_RELWITHDEBINFO} ${CMAKE_MODULE_PATH}) + +########## GLOBAL TARGET PROPERTIES RelWithDebInfo ######################################## + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + $<$:${utfcpp_OBJECTS_RELWITHDEBINFO}> + $<$:${utfcpp_LIBRARIES_TARGETS}> + ) + + if("${utfcpp_LIBS_RELWITHDEBINFO}" STREQUAL "") + # If the package is not declaring any "cpp_info.libs" the package deps, system libs, + # frameworks etc are not linked to the imported targets and we need to do it to the + # global target + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_LINK_LIBRARIES + utfcpp_DEPS_TARGET) + endif() + + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_LINK_OPTIONS + $<$:${utfcpp_LINKER_FLAGS_RELWITHDEBINFO}>) + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $<$:${utfcpp_INCLUDE_DIRS_RELWITHDEBINFO}>) + # Necessary to find LINK shared libraries in Linux + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_LINK_DIRECTORIES + $<$:${utfcpp_LIB_DIRS_RELWITHDEBINFO}>) + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS + $<$:${utfcpp_COMPILE_DEFINITIONS_RELWITHDEBINFO}>) + set_property(TARGET utf8cpp::utf8cpp + APPEND PROPERTY INTERFACE_COMPILE_OPTIONS + $<$:${utfcpp_COMPILE_OPTIONS_RELWITHDEBINFO}>) + +########## For the modules (FindXXX) +set(utfcpp_LIBRARIES_RELWITHDEBINFO utf8cpp::utf8cpp) diff --git a/utf8cpp-config-version.cmake b/utf8cpp-config-version.cmake new file mode 100644 index 000000000..949115607 --- /dev/null +++ b/utf8cpp-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "4.0.9") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if("4.0.9" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR ${CMAKE_MATCH_1}) + else() + set(CVF_VERSION_MAJOR "4.0.9") + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() \ No newline at end of file diff --git a/utf8cpp-config.cmake b/utf8cpp-config.cmake new file mode 100644 index 000000000..2dc750e7a --- /dev/null +++ b/utf8cpp-config.cmake @@ -0,0 +1,44 @@ +########## MACROS ########################################################################### +############################################################################################# + +# Requires CMake > 3.15 +if(${CMAKE_VERSION} VERSION_LESS "3.15") + message(FATAL_ERROR "The 'CMakeDeps' generator only works with CMake >= 3.15") +endif() + +if(utf8cpp_FIND_QUIETLY) + set(utf8cpp_MESSAGE_MODE VERBOSE) +else() + set(utf8cpp_MESSAGE_MODE STATUS) +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/cmakedeps_macros.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/utf8cppTargets.cmake) +include(CMakeFindDependencyMacro) + +check_build_type_defined() + +foreach(_DEPENDENCY ${utfcpp_FIND_DEPENDENCY_NAMES} ) + # Check that we have not already called a find_package with the transitive dependency + if(NOT ${_DEPENDENCY}_FOUND) + find_dependency(${_DEPENDENCY} REQUIRED ${${_DEPENDENCY}_FIND_MODE}) + endif() +endforeach() + +set(utf8cpp_VERSION_STRING "4.0.9") +set(utf8cpp_INCLUDE_DIRS ${utfcpp_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(utf8cpp_INCLUDE_DIR ${utfcpp_INCLUDE_DIRS_RELWITHDEBINFO} ) +set(utf8cpp_LIBRARIES ${utfcpp_LIBRARIES_RELWITHDEBINFO} ) +set(utf8cpp_DEFINITIONS ${utfcpp_DEFINITIONS_RELWITHDEBINFO} ) + + +# Definition of extra CMake variables from cmake_extra_variables + + +# Only the last installed configuration BUILD_MODULES are included to avoid the collision +foreach(_BUILD_MODULE ${utfcpp_BUILD_MODULES_PATHS_RELWITHDEBINFO} ) + message(${utf8cpp_MESSAGE_MODE} "Conan: Including build module from '${_BUILD_MODULE}'") + include(${_BUILD_MODULE}) +endforeach() + + diff --git a/utf8cpp-relwithdebinfo-armv8-data.cmake b/utf8cpp-relwithdebinfo-armv8-data.cmake new file mode 100644 index 000000000..e51573fe1 --- /dev/null +++ b/utf8cpp-relwithdebinfo-armv8-data.cmake @@ -0,0 +1,50 @@ +########### AGGREGATED COMPONENTS AND DEPENDENCIES FOR THE MULTI CONFIG ##################### +############################################################################################# + +set(utfcpp_COMPONENT_NAMES "") +if(DEFINED utfcpp_FIND_DEPENDENCY_NAMES) + list(APPEND utfcpp_FIND_DEPENDENCY_NAMES ) + list(REMOVE_DUPLICATES utfcpp_FIND_DEPENDENCY_NAMES) +else() + set(utfcpp_FIND_DEPENDENCY_NAMES ) +endif() + +########### VARIABLES ####################################################################### +############################################################################################# +set(utfcpp_PACKAGE_FOLDER_RELWITHDEBINFO "/Users/andreas/.conan2/p/utfcp412baeeda02ec/p") +set(utfcpp_BUILD_MODULES_PATHS_RELWITHDEBINFO ) + + +set(utfcpp_INCLUDE_DIRS_RELWITHDEBINFO "${utfcpp_PACKAGE_FOLDER_RELWITHDEBINFO}/include" + "${utfcpp_PACKAGE_FOLDER_RELWITHDEBINFO}/include/utf8cpp") +set(utfcpp_RES_DIRS_RELWITHDEBINFO ) +set(utfcpp_DEFINITIONS_RELWITHDEBINFO ) +set(utfcpp_SHARED_LINK_FLAGS_RELWITHDEBINFO ) +set(utfcpp_EXE_LINK_FLAGS_RELWITHDEBINFO ) +set(utfcpp_OBJECTS_RELWITHDEBINFO ) +set(utfcpp_COMPILE_DEFINITIONS_RELWITHDEBINFO ) +set(utfcpp_COMPILE_OPTIONS_C_RELWITHDEBINFO ) +set(utfcpp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO ) +set(utfcpp_LIB_DIRS_RELWITHDEBINFO ) +set(utfcpp_BIN_DIRS_RELWITHDEBINFO ) +set(utfcpp_LIBRARY_TYPE_RELWITHDEBINFO UNKNOWN) +set(utfcpp_IS_HOST_WINDOWS_RELWITHDEBINFO 0) +set(utfcpp_LIBS_RELWITHDEBINFO ) +set(utfcpp_SYSTEM_LIBS_RELWITHDEBINFO ) +set(utfcpp_FRAMEWORK_DIRS_RELWITHDEBINFO ) +set(utfcpp_FRAMEWORKS_RELWITHDEBINFO ) +set(utfcpp_BUILD_DIRS_RELWITHDEBINFO ) +set(utfcpp_NO_SONAME_MODE_RELWITHDEBINFO FALSE) + + +# COMPOUND VARIABLES +set(utfcpp_COMPILE_OPTIONS_RELWITHDEBINFO + "$<$:${utfcpp_COMPILE_OPTIONS_CXX_RELWITHDEBINFO}>" + "$<$:${utfcpp_COMPILE_OPTIONS_C_RELWITHDEBINFO}>") +set(utfcpp_LINKER_FLAGS_RELWITHDEBINFO + "$<$,SHARED_LIBRARY>:${utfcpp_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,MODULE_LIBRARY>:${utfcpp_SHARED_LINK_FLAGS_RELWITHDEBINFO}>" + "$<$,EXECUTABLE>:${utfcpp_EXE_LINK_FLAGS_RELWITHDEBINFO}>") + + +set(utfcpp_COMPONENTS_RELWITHDEBINFO ) \ No newline at end of file diff --git a/utf8cppTargets.cmake b/utf8cppTargets.cmake new file mode 100644 index 000000000..3f9a7928b --- /dev/null +++ b/utf8cppTargets.cmake @@ -0,0 +1,33 @@ +# Load the debug and release variables +file(GLOB DATA_FILES "${CMAKE_CURRENT_LIST_DIR}/utf8cpp-*-data.cmake") + +foreach(f ${DATA_FILES}) + include(${f}) +endforeach() + +# Create the targets for all the components +foreach(_COMPONENT ${utfcpp_COMPONENT_NAMES} ) + if(NOT TARGET ${_COMPONENT}) + add_library(${_COMPONENT} INTERFACE IMPORTED) + message(${utf8cpp_MESSAGE_MODE} "Conan: Component target declared '${_COMPONENT}'") + endif() +endforeach() + +if(NOT TARGET utf8cpp::utf8cpp) + add_library(utf8cpp::utf8cpp INTERFACE IMPORTED) + message(${utf8cpp_MESSAGE_MODE} "Conan: Target declared 'utf8cpp::utf8cpp'") +endif() +if(NOT TARGET utf8::cpp) + add_library(utf8::cpp INTERFACE IMPORTED) + set_property(TARGET utf8::cpp PROPERTY INTERFACE_LINK_LIBRARIES utf8cpp::utf8cpp) +endif() +if(NOT TARGET utf8cpp) + add_library(utf8cpp INTERFACE IMPORTED) + set_property(TARGET utf8cpp PROPERTY INTERFACE_LINK_LIBRARIES utf8cpp::utf8cpp) +endif() +# Load the debug and release library finders +file(GLOB CONFIG_FILES "${CMAKE_CURRENT_LIST_DIR}/utf8cpp-Target-*.cmake") + +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() \ No newline at end of file From a27a11e75681903dbc22029d4a35d273411b0025 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Sun, 30 Aug 2026 09:18:42 +0200 Subject: [PATCH 2/4] perf(odf): keep the per-element payloads in sorted arrays The payloads that hang off an element by id - a text's last node, a table's column chain, a sheet's index, a sheet cell's position - were `unordered_map`s. Every one of them is written the moment its element is created, and ids are handed out in increasing order, so the parser only ever appends in key order: a sorted array answers a lookup with a binary search and spends nothing on nodes and buckets. libc++ spends 32 bytes on a hash node carrying 16 bytes of payload, plus a bucket slot per entry. `m_texts` and `m_sheet_cells` hold one entry per non-empty cell, so on `efficiency-big-1.ods` the four tables were 130 MB against 34 MB of array. Peak footprint 777 MB to 677 MB. A deque, not a vector: `create_*_element` hands back a reference to the payload and the parser fills it in while it keeps parsing - the same reason the elements are in one - and it also spares the document the doubling. `SideTable::emplace` throws on an id out of order rather than silently breaking the search, and `at` looks the id up once rather than checking and then looking it up again. `m_list_types` and `m_list_markers` stay hash maps: they are written when a list is resolved, not when it is parsed, so their keys do not arrive in order. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012FzCVAsZATFPMoaAqZNkoc --- src/odr/internal/odf/odf_element_registry.cpp | 64 ++++------------ src/odr/internal/odf/odf_element_registry.hpp | 74 +++++++++++++++++-- 2 files changed, 82 insertions(+), 56 deletions(-) diff --git a/src/odr/internal/odf/odf_element_registry.cpp b/src/odr/internal/odf/odf_element_registry.cpp index 289fcee6c..a630ae0fc 100644 --- a/src/odr/internal/odf/odf_element_registry.cpp +++ b/src/odr/internal/odf/odf_element_registry.cpp @@ -41,7 +41,7 @@ ElementRegistry::create_text_element(const pugi::xml_node first_node, const pugi::xml_node last_node) { const auto &[element_id, element] = create_element(ElementType::text, first_node); - Text &text = m_texts.emplace(element_id, Text{last_node}).first->second; + Text &text = m_texts.emplace(element_id, Text{last_node}); return {element_id, element, text}; } @@ -49,7 +49,7 @@ std::tuple ElementRegistry::create_table_element(const pugi::xml_node node) { const auto &[element_id, element] = create_element(ElementType::table, node); - Table &table = m_tables.emplace(element_id, Table{}).first->second; + Table &table = m_tables.emplace(element_id, Table{}); return {element_id, element, table}; } @@ -57,7 +57,7 @@ std::tuple ElementRegistry::create_sheet_element(const pugi::xml_node node) { const auto &[element_id, element] = create_element(ElementType::sheet, node); - Sheet &sheet = m_sheets.emplace(element_id, Sheet{}).first->second; + Sheet &sheet = m_sheets.emplace(element_id, Sheet{}); return {element_id, element, sheet}; } @@ -68,11 +68,8 @@ ElementRegistry::create_sheet_cell_element(const pugi::xml_node node, const bool is_repeated) { const auto &[element_id, element] = create_element(ElementType::sheet_cell, node); - SheetCell &sheet_cell = - m_sheet_cells - .emplace(element_id, - SheetCell{.position = position, .is_repeated = is_repeated}) - .first->second; + SheetCell &sheet_cell = m_sheet_cells.emplace( + element_id, SheetCell{.position = position, .is_repeated = is_repeated}); return {element_id, element, sheet_cell}; } @@ -84,19 +81,19 @@ ElementRegistry::element_at(const ElementIdentifier id) { ElementRegistry::Text & ElementRegistry::text_element_at(const ElementIdentifier id) { - check_text_id(id); + check_element_id(id); return m_texts.at(id); } ElementRegistry::Table & ElementRegistry::table_element_at(const ElementIdentifier id) { - check_table_id(id); + check_element_id(id); return m_tables.at(id); } ElementRegistry::Sheet & ElementRegistry::sheet_element_at(const ElementIdentifier id) { - check_sheet_id(id); + check_element_id(id); return m_sheets.at(id); } @@ -108,34 +105,31 @@ ElementRegistry::element_at(const ElementIdentifier id) const { const ElementRegistry::Text & ElementRegistry::text_element_at(const ElementIdentifier id) const { - check_text_id(id); + check_element_id(id); return m_texts.at(id); } const ElementRegistry::Table & ElementRegistry::table_element_at(const ElementIdentifier id) const { - check_table_id(id); + check_element_id(id); return m_tables.at(id); } const ElementRegistry::Sheet & ElementRegistry::sheet_element_at(const ElementIdentifier id) const { - check_sheet_id(id); + check_element_id(id); return m_sheets.at(id); } const ElementRegistry::SheetCell & ElementRegistry::sheet_cell_element_at(const ElementIdentifier id) const { - check_sheet_cell_id(id); + check_element_id(id); return m_sheet_cells.at(id); } const ElementRegistry::SheetCell * ElementRegistry::sheet_cell_element(const ElementIdentifier id) const { - if (const auto it = m_sheet_cells.find(id); it != m_sheet_cells.end()) { - return &it->second; - } - return nullptr; + return m_sheet_cells.find(id); } void ElementRegistry::link_child(const ElementIdentifier parent_id, @@ -168,27 +162,25 @@ void ElementRegistry::append_child(const ElementIdentifier parent_id, void ElementRegistry::append_column(const ElementIdentifier table_id, const ElementIdentifier column_id) { - check_table_id(table_id); + Table &table = table_element_at(table_id); check_element_id(column_id); if (element_at(column_id).parent_id != null_element_id) { throw std::invalid_argument( "DocumentElementRegistry::append_column: child already has a parent"); } - Table &table = table_element_at(table_id); link_child(table_id, column_id, table.first_column_id, table.last_column_id); } void ElementRegistry::append_shape(const ElementIdentifier sheet_id, const ElementIdentifier shape_id) { - check_sheet_id(sheet_id); + Sheet &sheet = sheet_element_at(sheet_id); check_element_id(shape_id); if (element_at(shape_id).parent_id != null_element_id) { throw std::invalid_argument( "DocumentElementRegistry::append_shape: child already has a parent"); } - Sheet &sheet = sheet_element_at(sheet_id); link_child(sheet_id, shape_id, sheet.first_shape_id, sheet.last_shape_id); } @@ -215,33 +207,9 @@ void ElementRegistry::check_element_id(const ElementIdentifier id) const { } } -void ElementRegistry::check_text_id(const ElementIdentifier id) const { - check_element_id(id); - if (!m_texts.contains(id)) { - throw std::out_of_range( - "DocumentElementRegistry::check_id: identifier not found"); - } -} - -void ElementRegistry::check_table_id(const ElementIdentifier id) const { - check_element_id(id); - if (!m_tables.contains(id)) { - throw std::out_of_range( - "DocumentElementRegistry::check_id: identifier not found"); - } -} - void ElementRegistry::check_sheet_id(const ElementIdentifier id) const { check_element_id(id); - if (!m_sheets.contains(id)) { - throw std::out_of_range( - "DocumentElementRegistry::check_id: identifier not found"); - } -} - -void ElementRegistry::check_sheet_cell_id(const ElementIdentifier id) const { - check_element_id(id); - if (!m_sheet_cells.contains(id)) { + if (m_sheets.find(id) == nullptr) { throw std::out_of_range( "DocumentElementRegistry::check_id: identifier not found"); } diff --git a/src/odr/internal/odf/odf_element_registry.hpp b/src/odr/internal/odf/odf_element_registry.hpp index e5d0bd3ca..99badd90f 100644 --- a/src/odr/internal/odf/odf_element_registry.hpp +++ b/src/odr/internal/odf/odf_element_registry.hpp @@ -7,11 +7,13 @@ #include #include +#include #include #include -#include #include +#include #include +#include #include #include @@ -103,6 +105,64 @@ class ElementRegistry final { bool is_repeated{false}; }; + /// Payloads keyed by element id and written in id order, so a lookup is a + /// binary search. A deque: `create_*_element` hands out a reference. + template class SideTable final { + public: + T &emplace(const ElementIdentifier id, T value) { + if (!m_entries.empty() && m_entries.back().first >= id) { + throw std::invalid_argument( + "ElementRegistry::SideTable::emplace: identifier out of order"); + } + return m_entries.emplace_back(static_cast(id), std::move(value)) + .second; + } + + [[nodiscard]] T *find(const ElementIdentifier id) { + const auto it = + std::ranges::lower_bound(m_entries, id, {}, &Entry::first); + return it != std::end(m_entries) && it->first == id ? &it->second + : nullptr; + } + + [[nodiscard]] const T *find(const ElementIdentifier id) const { + const auto it = + std::ranges::lower_bound(m_entries, id, {}, &Entry::first); + return it != std::end(m_entries) && it->first == id ? &it->second + : nullptr; + } + + [[nodiscard]] T &at(const ElementIdentifier id) { + T *entry = find(id); + if (entry == nullptr) { + throw std::out_of_range( + "ElementRegistry::SideTable::at: identifier not found"); + } + return *entry; + } + + [[nodiscard]] const T &at(const ElementIdentifier id) const { + const T *entry = find(id); + if (entry == nullptr) { + throw std::out_of_range( + "ElementRegistry::SideTable::at: identifier not found"); + } + return *entry; + } + + void clear() noexcept { m_entries.clear(); } + + [[nodiscard]] auto begin() const noexcept { return m_entries.begin(); } + [[nodiscard]] auto end() const noexcept { return m_entries.end(); } + [[nodiscard]] auto begin() noexcept { return m_entries.begin(); } + [[nodiscard]] auto end() noexcept { return m_entries.end(); } + + private: + using Entry = std::pair; + + std::deque m_entries; + }; + void clear() noexcept; [[nodiscard]] std::size_t size() const noexcept; @@ -149,10 +209,11 @@ class ElementRegistry final { /// holds on to, and a vector both invalidates it and peaks holding two /// copies. std::deque m_elements; - std::unordered_map m_texts; - std::unordered_map m_tables; - std::unordered_map m_sheets; - std::unordered_map m_sheet_cells; + SideTable m_texts; + SideTable m_tables; + SideTable m_sheets; + SideTable m_sheet_cells; + // out of id order: written when a list is resolved, not when it is parsed std::unordered_map m_list_types; std::unordered_map m_list_markers; @@ -161,10 +222,7 @@ class ElementRegistry final { StoredId &first_id, StoredId &last_id); void check_element_id(ElementIdentifier id) const; - void check_text_id(ElementIdentifier id) const; - void check_table_id(ElementIdentifier id) const; void check_sheet_id(ElementIdentifier id) const; - void check_sheet_cell_id(ElementIdentifier id) const; }; } // namespace odr::internal::odf From 25a1708dc4b585037ca9f6836c801fb880351173 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Sun, 30 Aug 2026 09:19:25 +0200 Subject: [PATCH 3/4] perf(odf): size a sheet's arrays before filling them The sheet index grows to one entry per row and per cell node at most - a repeat collapses onto one entry - so a walk of the row and cell nodes gives the size up front. Counting them is a fraction of what parsing them costs, and it buys the doubling: a vector that reaches a million entries by doubling holds a third more than it needs, and it peaks holding both halves while it copies. The count is an upper bound, and one bounded by the dom that is already resident, so a repeat bomb still registers its handful of entries and reserves against nodes we already paid for. Peak footprint 677 MB to 626 MB on `efficiency-big-1.ods`, and no slower: the copies it saves pay for the walk. Shrinking the arrays afterwards instead does the opposite - measured 76 MB worse - because the copy lands exactly at the high-water mark, which is what the peak is. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012FzCVAsZATFPMoaAqZNkoc --- src/odr/internal/odf/odf_parser.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/odr/internal/odf/odf_parser.cpp b/src/odr/internal/odf/odf_parser.cpp index 250d5eca2..67ff1a2e8 100644 --- a/src/odr/internal/odf/odf_parser.cpp +++ b/src/odr/internal/odf/odf_parser.cpp @@ -143,6 +143,22 @@ bool is_cell_empty(const pugi::xml_node cell_node) { cell_node.attribute("table:number-rows-spanned").as_uint(1) <= 1; } +/// One entry per row and per cell node at most - repeats collapse onto one. +void reserve_sheet(ElementRegistry::Sheet &sheet, const pugi::xml_node node) { + std::size_t rows = 0; + std::size_t cells = 0; + for_each_table_row(node, [&](const pugi::xml_node row_node) { + ++rows; + for ([[maybe_unused]] const pugi::xml_node cell_node : + row_node.children("table:table-cell")) { + ++cells; + } + }); + + sheet.rows.reserve(rows); + sheet.cells.reserve(cells); +} + std::tuple parse_sheet(ElementRegistry ®istry, const pugi::xml_node node) { if (!node) { @@ -151,6 +167,8 @@ parse_sheet(ElementRegistry ®istry, const pugi::xml_node node) { const auto &[element_id, _, sheet] = registry.create_sheet_element(node); + reserve_sheet(sheet, node); + TableCursor cursor; for_each_table_column(node, [&](const pugi::xml_node column_node) { From 5f17f4ce2620e0025daaef60d6d3886285d39475 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Sun, 30 Aug 2026 09:19:45 +0200 Subject: [PATCH 4/4] docs: what the registry stores, and the changelog The two AGENTS.md carry the keeping: that `ElementIdentifier` is opaque and 64 bits wide because `csv` packs coordinates into it, so an engine that wants a narrower id narrows it inside its own store; and what odf's registry does with that - narrow ids, payload tables in id order, a sheet's arrays sized before they are filled. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012FzCVAsZATFPMoaAqZNkoc --- AGENTS.md | 4 ++++ CHANGELOG.md | 3 +++ src/odr/internal/odf/AGENTS.md | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index d1c24923e..346a58c3a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -38,6 +38,10 @@ bytes ─▶ magic/open_strategy ─▶ DecodedFile ─▶ Document ─▶ Eleme `type`, plus side maps for per-type payloads. Builders: `create_element` / `create_*_element` / `append_child`. Minimal example: `oldms/presentation/ppt_element_registry.*`. +- An **`ElementIdentifier` is opaque, and 64 bits wide**: registry engines use it + as index + 1, `csv` packs a kind, a row and a column into its bits. An engine + wanting a narrower id narrows it inside its own store (`odf`'s + `ElementRegistry::StoredId`) and widens at the boundary. - An **`ElementAdapter`**: one class implementing `abstract::ElementAdapter` (tree navigation by id) and, via multiple inheritance, the per-type adapters it supports (`SlideAdapter`, `ParagraphAdapter`, …). Each `*_adapter(id)` returns diff --git a/CHANGELOG.md b/CHANGELOG.md index a7888e94e..79a80d5d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The release run heads these entries with the version and opens a fresh ## Unreleased +- A spreadsheet decodes in less memory: 626 MB peak instead of 914 MB on a + 297 MB `content.xml`. Rendered output is unchanged. + ## v6.12.0 - 2026-08-30 - New `Document::save(std::ostream &)` and `Document::save_to_memory()`, which diff --git a/src/odr/internal/odf/AGENTS.md b/src/odr/internal/odf/AGENTS.md index bfd23b336..ad5a5de69 100644 --- a/src/odr/internal/odf/AGENTS.md +++ b/src/odr/internal/odf/AGENTS.md @@ -28,7 +28,7 @@ engines throw away the source, so their models are read-only. Everything else follows the shared registry/adapter pattern: a flat element store, id = index + 1, `null_element_id == 0`, parent/child/ -sibling ids, per-subtype side maps (`m_texts`, `m_tables`, `m_sheets`, +sibling ids, per-subtype payload tables (`m_texts`, `m_tables`, `m_sheets`, `m_sheet_cells`). One mega `ElementAdapter` multiply-inherits every abstract per-type adapter and dispatches by returning `this`/`nullptr` on `element_type`. @@ -66,7 +66,16 @@ where its own run starts, so a sheet is two allocations rather than one per row. The elements themselves are a `std::deque`: `create_element` hands back a reference the parser holds on to, and a vector both invalidates it and peaks -holding two copies. +holding two copies. `parse_sheet` counts the row and cell nodes first, so the +arrays are allocated once at the size they end at — a repeat collapses onto one +entry, so the count is an upper bound, and one bounded by the dom. + +**Ids are stored narrow, payloads in sorted arrays.** `StoredId` is 32 bits and +every boundary widens back to the public `ElementIdentifier`, which stays 64 — +`csv` packs coordinates into it. The payload tables are written in id order as +elements are created, so a binary search replaces a hash map; `m_list_types` and +`m_list_markers` stay hash maps, written when a list is resolved rather than +parsed. **Styles resolve to a flattened `ResolvedStyle`, eagerly.** `StyleRegistry` first builds name→node indices from *both* files (automatic and named styles land @@ -128,7 +137,7 @@ are **tolerated** to keep rendering best-effort. | `odf_meta.cpp` | `parse_file_meta`: mimetype→FileType, doc type, page/table counts, encryption flag | | `odf_manifest.{hpp,cpp}` | `META-INF/manifest.xml` → per-file crypto entries, smallest-file tracking | | `odf_crypto.cpp` | Decryption: hashing, key derivation, cipher dispatch, package-vs-lazy filesystem | -| `odf_element_registry.{hpp,cpp}` | Flat element store + Text/Table/Sheet/SheetCell side maps; sparse repeated-range maps | +| `odf_element_registry.{hpp,cpp}` | Flat element store + Text/Table/Sheet/SheetCell payload tables; sparse repeated-range index | | `odf_parser.{hpp,cpp}` | `content.xml` → registry: name dispatch table, text-run coalescing, sheet cursor | | `odf_document.{hpp,cpp}` | `Document` (owns DOMs + registries + adapter); the mega `ElementAdapter`; edit + `save` | | `odf_style.{hpp,cpp}` | `StyleRegistry` + `Style`: indices, eager parent/family flatten, master pages, `ResolvedStyle` readers |