package/pugixml: add support for a limited set of configuration options

Add config options for a few pugixml configurables.

- Xpath support is enabled by default but has a size impact. Disabling it
  reduces the size significantly (it almost halves). Output of 'size' on the
  library compiled for x86:
  - Xpath support enabled
 160374	   1244	     28	 161646	  2776e	output/target/usr/lib/libpugixml.so.1.7
  - Xpath support disabled
  92754	    880	      8	  93642	  16dca	usr/lib/libpugixml.so.1.7

- Compact and header-only modes are not strictly needed for our use case, but we
  did the work anyway and may be useful for someone else.

Signed-off-by: Wouter Vermeiren <wouter.vermeiren@nokia.com>
[ThomasDS:
- align with Buildroot coding style
- retain only feature options: xpath, compact mode, header-only]
Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019.02.x
Wouter Vermeiren 2019-02-04 11:06:13 +01:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent fcf9bcf014
commit 48b2e50eb8
2 changed files with 46 additions and 0 deletions

View File

@ -18,5 +18,37 @@ config BR2_PACKAGE_PUGIXML
http://pugixml.org/
https://github.com/zeux/pugixml
if BR2_PACKAGE_PUGIXML
config BR2_PACKAGE_PUGIXML_XPATH_SUPPORT
bool "Enable XPath support"
default y
help
When disabled, both XPath interfaces and XPath implementation
are excluded from compilation. This option is provided in case
you do not need XPath functionality and need to save code
space.
config BR2_PACKAGE_PUGIXML_COMPACT
bool "Enable compact mode"
help
Activates a different internal representation of document
storage that is much more memory efficient for documents with
a lot of markup (i.e. nodes and attributes), but is slightly
slower to parse and access.
http://pugixml.org/docs/manual.html#dom.memory.compact
config BR2_PACKAGE_PUGIXML_HEADER_ONLY
bool "Enable header-only version"
help
All source code for pugixml will be included in every
translation unit that includes pugixml.hpp. This is how most
of Boost and STL libraries work.
http://pugixml.org/docs/manual.html#install.building.header
endif
comment "pugixml needs a toolchain w/ C++"
depends on !BR2_INSTALL_LIBSTDCPP

View File

@ -10,4 +10,18 @@ PUGIXML_LICENSE = MIT
PUGIXML_LICENSE_FILES = readme.txt
PUGIXML_INSTALL_STAGING = YES
ifeq ($(BR2_PACKAGE_PUGIXML_XPATH_SUPPORT),)
PUGIXML_BUILD_DEFINES += PUGIXML_NO_XPATH
endif
ifeq ($(BR2_PACKAGE_PUGIXML_COMPACT),y)
PUGIXML_BUILD_DEFINES += PUGIXML_COMPACT
endif
ifeq ($(BR2_PACKAGE_PUGIXML_HEADER_ONLY),y)
PUGIXML_BUILD_DEFINES += PUGIXML_HEADER_ONLY
endif
ifdef PUGIXML_BUILD_DEFINES
PUGIXML_CONF_OPTS += -DBUILD_DEFINES="$(subst $(space),;,$(PUGIXML_BUILD_DEFINES))"
endif
$(eval $(cmake-package))