From 986b7ffd01aedcd4f2aa16e78e4cad9313b6d7b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Wed, 23 Jun 2021 11:05:34 +0200 Subject: [PATCH 01/10] Add Cmake options for pugiconfig.hpp Add Cmake options variables for each of the defines in pugiconfig.hpp. --- CMakeLists.txt | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3fd0c77..0ee5239 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,76 @@ option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF) cmake_dependent_option(PUGIXML_BUILD_SHARED_AND_STATIC_LIBS "Build both shared and static libraries" OFF "BUILD_SHARED_LIBS" OFF) + +# Expose options from the pugiconfig.hpp file. +option(PUGIXML_WCHAR_MODE "Enable wchar_t mode" OFF) +if (PUGIXML_WCHAR_MODE) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_WCHAR_MODE) +endif() + +option(PUGIXML_COMPACT "Enable compact mode" OFF) +if (PUGIXML_COMPACT) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_COMPACT) +endif() + +option(PUGIXML_NO_XPATH "Disable XPath" OFF) +if (PUGIXML_NO_XPATH) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_XPATH) +endif() + +option(PUGIXML_NO_STL "Disable STL" OFF) +if (PUGIXML_NO_STL) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_STL) +endif() + +option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) +if (PUGIXML_NO_EXCEPTIONS) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_EXCEPTIONS) +endif() + +option(PUGIXML_HEADER_ONLY "Switch to header only" OFF) +if (PUGIXML_HEADER_ONLY) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_HEADER_ONLY) +endif() + +option(PUGIXML_HAS_LONG_LONG "Enable long long support" OFF) +if (PUGIXML_HAS_LONG_LONG) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_HAS_LONG_LONG) +endif() + +# Tune these to adjust memory-related behaviour +if (DEFINED PUGIXML_MEMORY_PAGE_SIZE) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}) +endif() + +if(DEFINED PUGIXML_MEMORY_OUTPUT_STACK) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}) +endif() + +if (DEFINED PUGIXML_MEMORY_XPATH_PAGE_SIZE) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}) +endif() + +# Tune this to adjust max nesting for XPath queries +if (DEFINED PUGIXML_XPATH_DEPTH_LIMIT) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}) +endif() + +# Set these to control attributes for public classes/functions +option(PUGIXML_OVERRIDE_API "Export all public symbols from DLL" OFF) +if(PUGIXML_OVERRIDE_API) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_API=__declspec(dllexport)) +endif() + +option(PUGIXML_OVERRIDE_CLASS "Import all classes from DLL" OFF) +if(PUGIXML_OVERRIDE_CLASS) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_CLASS=__declspec(dllimport)) +endif() + +option(PUGIXML_OVERRIDE_FUNCTION "Set calling conventions to all public functions to fastcall" OFF) +if(PUGIXML_OVERRIDE_FUNCTION) + list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_FUNCTION=__fastcall) +endif() # This is used to backport a CMake 3.15 feature, but is also forwards compatible if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) From 5f49f2c6575cc2b7d343f8d41581fe92d69d7b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Sat, 26 Jun 2021 22:20:36 +0200 Subject: [PATCH 02/10] Mark advanced options and removed redundant ones Options marked as advanced are hidden by default in the CMake GUI. The `PUGIXML_HEADER_ONLY` are redundant when during CMake builds, hence removed. The `PUGIXML_HAS_LONG_LONG` should be handled automatically and needs to be rewritten, hence these options has been removed. --- CMakeLists.txt | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ee5239..f40401c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,26 +50,20 @@ option(PUGIXML_NO_XPATH "Disable XPath" OFF) if (PUGIXML_NO_XPATH) list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_XPATH) endif() +mark_as_advanced(PUGIXML_NO_XPATH) option(PUGIXML_NO_STL "Disable STL" OFF) if (PUGIXML_NO_STL) list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_STL) endif() +mark_as_advanced(PUGIXML_NO_STL) option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) if (PUGIXML_NO_EXCEPTIONS) list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_EXCEPTIONS) endif() +mark_as_advanced(PUGIXML_NO_EXCEPTIONS) -option(PUGIXML_HEADER_ONLY "Switch to header only" OFF) -if (PUGIXML_HEADER_ONLY) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_HEADER_ONLY) -endif() - -option(PUGIXML_HAS_LONG_LONG "Enable long long support" OFF) -if (PUGIXML_HAS_LONG_LONG) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_HAS_LONG_LONG) -endif() # Tune these to adjust memory-related behaviour if (DEFINED PUGIXML_MEMORY_PAGE_SIZE) @@ -89,22 +83,6 @@ if (DEFINED PUGIXML_XPATH_DEPTH_LIMIT) list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}) endif() -# Set these to control attributes for public classes/functions -option(PUGIXML_OVERRIDE_API "Export all public symbols from DLL" OFF) -if(PUGIXML_OVERRIDE_API) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_API=__declspec(dllexport)) -endif() - -option(PUGIXML_OVERRIDE_CLASS "Import all classes from DLL" OFF) -if(PUGIXML_OVERRIDE_CLASS) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_CLASS=__declspec(dllimport)) -endif() - -option(PUGIXML_OVERRIDE_FUNCTION "Set calling conventions to all public functions to fastcall" OFF) -if(PUGIXML_OVERRIDE_FUNCTION) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_FUNCTION=__fastcall) -endif() - # This is used to backport a CMake 3.15 feature, but is also forwards compatible if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) set(CMAKE_MSVC_RUNTIME_LIBRARY From e2ba4f401447024f9aaa1d96058cb485f4b32317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Sat, 26 Jun 2021 23:16:24 +0200 Subject: [PATCH 03/10] Add options to build targets Add custom options to the build targets via generator expressions. --- CMakeLists.txt | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f40401c..383cf3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,35 +35,15 @@ cmake_dependent_option(PUGIXML_BUILD_SHARED_AND_STATIC_LIBS "Build both shared and static libraries" OFF "BUILD_SHARED_LIBS" OFF) -# Expose options from the pugiconfig.hpp file. +# Expose options from the pugiconfig.hpp option(PUGIXML_WCHAR_MODE "Enable wchar_t mode" OFF) -if (PUGIXML_WCHAR_MODE) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_WCHAR_MODE) -endif() - option(PUGIXML_COMPACT "Enable compact mode" OFF) -if (PUGIXML_COMPACT) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_COMPACT) -endif() +# Advanced options from pugiconfig.hpp option(PUGIXML_NO_XPATH "Disable XPath" OFF) -if (PUGIXML_NO_XPATH) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_XPATH) -endif() -mark_as_advanced(PUGIXML_NO_XPATH) - option(PUGIXML_NO_STL "Disable STL" OFF) -if (PUGIXML_NO_STL) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_STL) -endif() -mark_as_advanced(PUGIXML_NO_STL) - option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) -if (PUGIXML_NO_EXCEPTIONS) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_NO_EXCEPTIONS) -endif() -mark_as_advanced(PUGIXML_NO_EXCEPTIONS) - +mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS) # Tune these to adjust memory-related behaviour if (DEFINED PUGIXML_MEMORY_PAGE_SIZE) @@ -137,7 +117,12 @@ if (BUILD_SHARED_LIBS) PUBLIC ${PUGIXML_BUILD_DEFINES} PRIVATE - $<$:PUGIXML_API=__declspec\(dllexport\)>) + $<$:PUGIXML_API=__declspec\(dllexport\)> + $<$:PUGIXML_WCHAR_MODE> + $<$:PUGIXML_COMPACT> + $<$:PUGIXML_NO_XPATH> + $<$:PUGIXML_NO_STL> + $<$:PUGIXML_NO_EXCEPTIONS>) target_compile_options(pugixml-shared PRIVATE ${msvc-rt-mtd-shared} @@ -158,7 +143,13 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) $) target_compile_definitions(pugixml-static PUBLIC - ${PUGIXML_BUILD_DEFINES}) + ${PUGIXML_BUILD_DEFINES} + PRIVATE + $<$:PUGIXML_WCHAR_MODE> + $<$:PUGIXML_COMPACT> + $<$:PUGIXML_NO_XPATH> + $<$:PUGIXML_NO_STL> + $<$:PUGIXML_NO_EXCEPTIONS>) target_compile_options(pugixml-static PRIVATE ${msvc-rt-mtd-shared} From f1946432ee0ce5407feca8c236693b1d27772896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Sat, 26 Jun 2021 23:17:28 +0200 Subject: [PATCH 04/10] Check for existence of long long --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 383cf3b..e686341 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,9 @@ include(CMakePackageConfigHelpers) include(CMakeDependentOption) include(GNUInstallDirs) include(CTest) +include(CheckTypeSize) +check_type_size("long long" LONG_LONG LANGUAGE CXX) cmake_dependent_option(PUGIXML_USE_VERSIONED_LIBDIR "Use a private subdirectory to install the headers and libraries" OFF @@ -118,6 +120,7 @@ if (BUILD_SHARED_LIBS) ${PUGIXML_BUILD_DEFINES} PRIVATE $<$:PUGIXML_API=__declspec\(dllexport\)> + $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> @@ -145,6 +148,7 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) PUBLIC ${PUGIXML_BUILD_DEFINES} PRIVATE + $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> From 1cd65c7eb801d56608de4d031d6c6e51d98ccb74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Mon, 28 Jun 2021 12:41:11 +0200 Subject: [PATCH 05/10] Move advanced memory settings into target defs. Moved the advanced memory options into target_compile_definitions using generator expressions. --- CMakeLists.txt | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e686341..dcb00ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,24 +47,6 @@ option(PUGIXML_NO_STL "Disable STL" OFF) option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS) -# Tune these to adjust memory-related behaviour -if (DEFINED PUGIXML_MEMORY_PAGE_SIZE) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}) -endif() - -if(DEFINED PUGIXML_MEMORY_OUTPUT_STACK) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}) -endif() - -if (DEFINED PUGIXML_MEMORY_XPATH_PAGE_SIZE) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}) -endif() - -# Tune this to adjust max nesting for XPath queries -if (DEFINED PUGIXML_XPATH_DEPTH_LIMIT) - list(APPEND PUGIXML_BUILD_DEFINES PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}) -endif() - # This is used to backport a CMake 3.15 feature, but is also forwards compatible if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) set(CMAKE_MSVC_RUNTIME_LIBRARY @@ -116,16 +98,19 @@ if (BUILD_SHARED_LIBS) PUBLIC $) target_compile_definitions(pugixml-shared - PUBLIC - ${PUGIXML_BUILD_DEFINES} PRIVATE + ${PUGIXML_BUILD_DEFINES} $<$:PUGIXML_API=__declspec\(dllexport\)> $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS>) + $<$:PUGIXML_NO_EXCEPTIONS> + $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> + $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> + $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> + $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) target_compile_options(pugixml-shared PRIVATE ${msvc-rt-mtd-shared} @@ -144,16 +129,19 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) target_include_directories(pugixml-static PUBLIC $) - target_compile_definitions(pugixml-static - PUBLIC - ${PUGIXML_BUILD_DEFINES} + target_compile_definitions(pugixml-static PRIVATE + ${PUGIXML_BUILD_DEFINES} $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS>) + $<$:PUGIXML_NO_EXCEPTIONS> + $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> + $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> + $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> + $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) target_compile_options(pugixml-static PRIVATE ${msvc-rt-mtd-shared} From 50b103f127180a7087fa8c4105cd91283ce0a310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Mon, 28 Jun 2021 13:16:28 +0200 Subject: [PATCH 06/10] Fix generator expressions --- CMakeLists.txt | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dcb00ba..486cc41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,16 +101,16 @@ if (BUILD_SHARED_LIBS) PRIVATE ${PUGIXML_BUILD_DEFINES} $<$:PUGIXML_API=__declspec\(dllexport\)> - $<$:PUGIXML_HAS_LONG_LONG> - $<$:PUGIXML_WCHAR_MODE> - $<$:PUGIXML_COMPACT> - $<$:PUGIXML_NO_XPATH> - $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS> - $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> - $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> - $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> - $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) + $<$:PUGIXML_HAS_LONG_LONG> + $<$:PUGIXML_WCHAR_MODE> + $<$:PUGIXML_COMPACT> + $<$:PUGIXML_NO_XPATH> + $<$:PUGIXML_NO_STL> + $<$:PUGIXML_NO_EXCEPTIONS> + $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> + $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> + $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> + $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) target_compile_options(pugixml-shared PRIVATE ${msvc-rt-mtd-shared} @@ -132,16 +132,16 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) target_compile_definitions(pugixml-static PRIVATE ${PUGIXML_BUILD_DEFINES} - $<$:PUGIXML_HAS_LONG_LONG> - $<$:PUGIXML_WCHAR_MODE> - $<$:PUGIXML_COMPACT> - $<$:PUGIXML_NO_XPATH> - $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS> - $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> - $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> - $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> - $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) + $<$:PUGIXML_HAS_LONG_LONG> + $<$:PUGIXML_WCHAR_MODE> + $<$:PUGIXML_COMPACT> + $<$:PUGIXML_NO_XPATH> + $<$:PUGIXML_NO_STL> + $<$:PUGIXML_NO_EXCEPTIONS> + $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> + $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> + $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> + $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) target_compile_options(pugixml-static PRIVATE ${msvc-rt-mtd-shared} From 92ac6ac1d97c9e0616dd07dcc2c708d44e9f33b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Mon, 28 Jun 2021 12:58:16 +0200 Subject: [PATCH 07/10] Update github action to trigger defines via CMake Use options via explicit CMake defines, instead of calling them from the generic PUGI_BUILD_DEFINES variable. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9462f90..bf6948b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: cmake configure - run: cmake . -DPUGIXML_BUILD_TESTS=ON -DPUGIXML_BUILD_DEFINES=${{matrix.defines}} -A ${{matrix.arch}} + run: cmake . -DPUGIXML_BUILD_TESTS=ON -D${{matrix.defines}}=ON -A ${{matrix.arch}} - name: cmake test shell: bash # necessary for fail-fast run: | From 52a7981b85e3e648d11ea40cb36e4fadaac70f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Mon, 28 Jun 2021 13:36:55 +0200 Subject: [PATCH 08/10] Make some compile definitions public Moved needed defines to public section of target_compile_definitions. --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 486cc41..0cccd98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,15 +98,16 @@ if (BUILD_SHARED_LIBS) PUBLIC $) target_compile_definitions(pugixml-shared - PRIVATE + PUBLIC ${PUGIXML_BUILD_DEFINES} - $<$:PUGIXML_API=__declspec\(dllexport\)> $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> $<$:PUGIXML_NO_STL> $<$:PUGIXML_NO_EXCEPTIONS> + PRIVATE + $<$:PUGIXML_API=__declspec\(dllexport\)> $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> @@ -130,7 +131,7 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) PUBLIC $) target_compile_definitions(pugixml-static - PRIVATE + PUBLIC ${PUGIXML_BUILD_DEFINES} $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> @@ -138,6 +139,7 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) $<$:PUGIXML_NO_XPATH> $<$:PUGIXML_NO_STL> $<$:PUGIXML_NO_EXCEPTIONS> + PRIVATE $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> From e7eae035ff55553d2e901dc17a963ca5120c0098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Blissing?= Date: Mon, 28 Jun 2021 19:51:20 +0200 Subject: [PATCH 09/10] Store definitions in variable to avoid duplication Store compile definitions in variable to avoid duplicated generator expressions. --- CMakeLists.txt | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cccd98..6fb09a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,20 @@ option(PUGIXML_NO_STL "Disable STL" OFF) option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS) +set(PUGIXML_PUBLIC_DEFINITIONS + $<$:PUGIXML_HAS_LONG_LONG> + $<$:PUGIXML_WCHAR_MODE> + $<$:PUGIXML_COMPACT> + $<$:PUGIXML_NO_XPATH> + $<$:PUGIXML_NO_STL> + $<$:PUGIXML_NO_EXCEPTIONS>) + +set(PUGIXML_PRIVATE_DEFINITIONS + $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> + $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> + $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> + $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) + # This is used to backport a CMake 3.15 feature, but is also forwards compatible if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) set(CMAKE_MSVC_RUNTIME_LIBRARY @@ -100,18 +114,10 @@ if (BUILD_SHARED_LIBS) target_compile_definitions(pugixml-shared PUBLIC ${PUGIXML_BUILD_DEFINES} - $<$:PUGIXML_HAS_LONG_LONG> - $<$:PUGIXML_WCHAR_MODE> - $<$:PUGIXML_COMPACT> - $<$:PUGIXML_NO_XPATH> - $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS> + ${PUGIXML_PUBLIC_DEFINITIONS} PRIVATE $<$:PUGIXML_API=__declspec\(dllexport\)> - $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> - $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> - $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> - $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) + ${PUGIXML_PRIVATE_DEFINITIONS}) target_compile_options(pugixml-shared PRIVATE ${msvc-rt-mtd-shared} @@ -133,17 +139,9 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) target_compile_definitions(pugixml-static PUBLIC ${PUGIXML_BUILD_DEFINES} - $<$:PUGIXML_HAS_LONG_LONG> - $<$:PUGIXML_WCHAR_MODE> - $<$:PUGIXML_COMPACT> - $<$:PUGIXML_NO_XPATH> - $<$:PUGIXML_NO_STL> - $<$:PUGIXML_NO_EXCEPTIONS> + ${PUGIXML_PUBLIC_DEFINITIONS} PRIVATE - $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> - $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> - $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> - $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) + ${PUGIXML_PRIVATE_DEFINITIONS}) target_compile_options(pugixml-static PRIVATE ${msvc-rt-mtd-shared} From c624c7a8bda7e879669f9f490302ed0392855139 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sat, 7 Aug 2021 09:51:54 -0700 Subject: [PATCH 10/10] Update CMakeLists.txt Remove memory configuration options and rely on automatic detection of long long --- CMakeLists.txt | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fb09a6..db2f10e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,6 @@ include(CMakePackageConfigHelpers) include(CMakeDependentOption) include(GNUInstallDirs) include(CTest) -include(CheckTypeSize) - -check_type_size("long long" LONG_LONG LANGUAGE CXX) cmake_dependent_option(PUGIXML_USE_VERSIONED_LIBDIR "Use a private subdirectory to install the headers and libraries" OFF @@ -48,19 +45,12 @@ option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF) mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS) set(PUGIXML_PUBLIC_DEFINITIONS - $<$:PUGIXML_HAS_LONG_LONG> $<$:PUGIXML_WCHAR_MODE> $<$:PUGIXML_COMPACT> $<$:PUGIXML_NO_XPATH> $<$:PUGIXML_NO_STL> $<$:PUGIXML_NO_EXCEPTIONS>) -set(PUGIXML_PRIVATE_DEFINITIONS - $<$:PUGIXML_MEMORY_PAGE_SIZE=${PUGIXML_MEMORY_PAGE_SIZE}> - $<$:PUGIXML_MEMORY_OUTPUT_STACK=${PUGIXML_MEMORY_OUTPUT_STACK}> - $<$:PUGIXML_MEMORY_XPATH_PAGE_SIZE=${PUGIXML_MEMORY_XPATH_PAGE_SIZE}> - $<$:PUGIXML_XPATH_DEPTH_LIMIT=${PUGIXML_XPATH_DEPTH_LIMIT}>) - # This is used to backport a CMake 3.15 feature, but is also forwards compatible if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) set(CMAKE_MSVC_RUNTIME_LIBRARY @@ -116,8 +106,7 @@ if (BUILD_SHARED_LIBS) ${PUGIXML_BUILD_DEFINES} ${PUGIXML_PUBLIC_DEFINITIONS} PRIVATE - $<$:PUGIXML_API=__declspec\(dllexport\)> - ${PUGIXML_PRIVATE_DEFINITIONS}) + $<$:PUGIXML_API=__declspec\(dllexport\)>) target_compile_options(pugixml-shared PRIVATE ${msvc-rt-mtd-shared} @@ -139,9 +128,7 @@ if (NOT BUILD_SHARED_LIBS OR PUGIXML_BUILD_SHARED_AND_STATIC_LIBS) target_compile_definitions(pugixml-static PUBLIC ${PUGIXML_BUILD_DEFINES} - ${PUGIXML_PUBLIC_DEFINITIONS} - PRIVATE - ${PUGIXML_PRIVATE_DEFINITIONS}) + ${PUGIXML_PUBLIC_DEFINITIONS}) target_compile_options(pugixml-static PRIVATE ${msvc-rt-mtd-shared}