xref: /freebsd/contrib/expat/Makefile.am (revision fe9278888fd4414abe2d922e469cf608005f4c65)
10a48773fSEric van Gyzen#
20a48773fSEric van Gyzen#                          __  __            _
30a48773fSEric van Gyzen#                       ___\ \/ /_ __   __ _| |_
40a48773fSEric van Gyzen#                      / _ \\  /| '_ \ / _` | __|
50a48773fSEric van Gyzen#                     |  __//  \| |_) | (_| | |_
60a48773fSEric van Gyzen#                      \___/_/\_\ .__/ \__,_|\__|
70a48773fSEric van Gyzen#                               |_| XML parser
80a48773fSEric van Gyzen#
9*fe927888SPhilip Paeps# Copyright (c) 2017-2025 Sebastian Pipping <sebastian@pipping.org>
10cc68614dSXin LI# Copyright (c) 2018      KangLin <kl222@126.com>
117ed8e142SXin LI# Copyright (c) 2022      Johnny Jazeix <jazeix@gmail.com>
124543ef51SXin LI# Copyright (c) 2023      Sony Corporation / Snild Dolkow <snild@sony.com>
13ffd294a1SEnji Cooper# Copyright (c) 2024      Alexander Bluhm <alexander.bluhm@gmx.net>
14ffd294a1SEnji Cooper# Copyright (c) 2024      Dag-Erling Smørgrav <des@des.dev>
150a48773fSEric van Gyzen# Licensed under the MIT license:
160a48773fSEric van Gyzen#
170a48773fSEric van Gyzen# Permission is  hereby granted,  free of charge,  to any  person obtaining
180a48773fSEric van Gyzen# a  copy  of  this  software   and  associated  documentation  files  (the
190a48773fSEric van Gyzen# "Software"),  to  deal in  the  Software  without restriction,  including
200a48773fSEric van Gyzen# without  limitation the  rights  to use,  copy,  modify, merge,  publish,
210a48773fSEric van Gyzen# distribute, sublicense, and/or sell copies of the Software, and to permit
220a48773fSEric van Gyzen# persons  to whom  the Software  is  furnished to  do so,  subject to  the
230a48773fSEric van Gyzen# following conditions:
240a48773fSEric van Gyzen#
250a48773fSEric van Gyzen# The above copyright  notice and this permission notice  shall be included
260a48773fSEric van Gyzen# in all copies or substantial portions of the Software.
270a48773fSEric van Gyzen#
280a48773fSEric van Gyzen# THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND,
290a48773fSEric van Gyzen# EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF
300a48773fSEric van Gyzen# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
310a48773fSEric van Gyzen# NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
320a48773fSEric van Gyzen# DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR
330a48773fSEric van Gyzen# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
340a48773fSEric van Gyzen# USE OR OTHER DEALINGS IN THE SOFTWARE.
350a48773fSEric van Gyzen
360a48773fSEric van GyzenAUTOMAKE_OPTIONS = \
370a48773fSEric van Gyzen    dist-bzip2 \
386b2c1e49SXin LI    dist-lzip \
396b2c1e49SXin LI    dist-xz \
400a48773fSEric van Gyzen    foreign \
410a48773fSEric van Gyzen    subdir-objects
420a48773fSEric van Gyzen
430a48773fSEric van GyzenACLOCAL_AMFLAGS = -I m4
440a48773fSEric van GyzenLIBTOOLFLAGS = --verbose
450a48773fSEric van Gyzen
466b2c1e49SXin LISUBDIRS = lib # lib goes first to build first
476b2c1e49SXin LIif WITH_EXAMPLES
486b2c1e49SXin LISUBDIRS += examples
496b2c1e49SXin LIendif
506b2c1e49SXin LIif WITH_TESTS
516b2c1e49SXin LISUBDIRS += tests
526b2c1e49SXin LIendif
530a48773fSEric van Gyzenif WITH_XMLWF
540a48773fSEric van GyzenSUBDIRS += xmlwf doc
550a48773fSEric van Gyzenendif
560a48773fSEric van Gyzen
570a48773fSEric van Gyzenpkgconfig_DATA = expat.pc
580a48773fSEric van Gyzenpkgconfigdir = $(libdir)/pkgconfig
590a48773fSEric van Gyzen
600a48773fSEric van Gyzen
61cc68614dSXin LIdist_cmake_DATA = \
62cc68614dSXin LI    cmake/autotools/expat.cmake
63cc68614dSXin LI
64cc68614dSXin LInodist_cmake_DATA = \
65cc68614dSXin LI    cmake/autotools/expat-config-version.cmake \
66cc68614dSXin LI    cmake/autotools/expat-noconfig.cmake \
67cc68614dSXin LI    cmake/expat-config.cmake
68cc68614dSXin LI
69cc68614dSXin LIcmakedir = $(libdir)/cmake/expat-@PACKAGE_VERSION@
70cc68614dSXin LI
71cc68614dSXin LI
720a48773fSEric van Gyzen_EXTRA_DIST_CMAKE = \
73cc68614dSXin LI    cmake/autotools/expat-noconfig__linux.cmake.in \
74cc68614dSXin LI    cmake/autotools/expat-noconfig__macos.cmake.in \
75cc68614dSXin LI    cmake/autotools/expat-noconfig__windows.cmake.in \
76cc68614dSXin LI    cmake/autotools/expat-package-init.cmake \
776b2c1e49SXin LI    cmake/mingw-toolchain.cmake \
786b2c1e49SXin LI    \
790a48773fSEric van Gyzen    CMakeLists.txt \
800a48773fSEric van Gyzen    CMake.README \
810a48773fSEric van Gyzen    ConfigureChecks.cmake \
82cc68614dSXin LI    expat.pc.cmake \
830a48773fSEric van Gyzen    expat_config.h.cmake
840a48773fSEric van Gyzen
850a48773fSEric van Gyzen_EXTRA_DIST_WINDOWS = \
866b2c1e49SXin LI    win32/build_expat_iss.bat \
870a48773fSEric van Gyzen    win32/expat.iss \
880a48773fSEric van Gyzen    win32/MANIFEST.txt \
897ed8e142SXin LI    win32/README.txt \
904543ef51SXin LI    win32/version.rc.cmake
910a48773fSEric van Gyzen
920a48773fSEric van GyzenEXTRA_DIST = \
930a48773fSEric van Gyzen    $(_EXTRA_DIST_CMAKE) \
940a48773fSEric van Gyzen    $(_EXTRA_DIST_WINDOWS) \
950a48773fSEric van Gyzen    \
960a48773fSEric van Gyzen    conftools/expat.m4 \
970a48773fSEric van Gyzen    conftools/get-version.sh \
98cc68614dSXin LI    \
99*fe927888SPhilip Paeps    fuzz/xml_lpm_fuzzer.cpp \
100*fe927888SPhilip Paeps    fuzz/xml_lpm_fuzzer.proto \
101cc68614dSXin LI    fuzz/xml_parsebuffer_fuzzer.c \
102cc68614dSXin LI    fuzz/xml_parse_fuzzer.c \
1030a48773fSEric van Gyzen    \
1046b2c1e49SXin LI    xmlwf/xmlwf_helpgen.py \
1056b2c1e49SXin LI    xmlwf/xmlwf_helpgen.sh \
1066b2c1e49SXin LI    \
107cc68614dSXin LI    buildconf.sh \
1080a48773fSEric van Gyzen    Changes \
1090a48773fSEric van Gyzen    README.md \
1106b2c1e49SXin LI    \
1116b2c1e49SXin LI    fix-xmltest-log.sh \
1120a48773fSEric van Gyzen    test-driver-wrapper.sh
1130a48773fSEric van Gyzen
1140a48773fSEric van Gyzen
1150a48773fSEric van Gyzen.PHONY: buildlib
1160a48773fSEric van Gyzenbuildlib:
1170a48773fSEric van Gyzen	@echo 'ERROR: Running "make buildlib LIBRARY=libexpatw.la"' >&2
1180a48773fSEric van Gyzen	@echo 'ERROR: is no longer supported.  INSTEAD please:' >&2
1190a48773fSEric van Gyzen	@echo 'ERROR:' >&2
1200a48773fSEric van Gyzen	@echo 'ERROR:  * Mass-patch Makefile.am, e.g.' >&2
121ffd294a1SEnji Cooper	@echo 'ERROR:    # find . -name Makefile.am -exec sed \' >&2
1220a48773fSEric van Gyzen	@echo 'ERROR:          -e "s,libexpat\.la,libexpatw.la," \' >&2
1230a48773fSEric van Gyzen	@echo 'ERROR:          -e "s,libexpat_la,libexpatw_la," \' >&2
124ffd294a1SEnji Cooper	@echo 'ERROR:          -i.bak {} +' >&2
1250a48773fSEric van Gyzen	@echo 'ERROR:' >&2
1260a48773fSEric van Gyzen	@echo 'ERROR:  * Run automake to re-generate Makefile.in files' >&2
1270a48773fSEric van Gyzen	@echo 'ERROR:' >&2
1280a48773fSEric van Gyzen	@echo 'ERROR:  * Use "./configure --without-xmlwf" and/or' >&2
1290a48773fSEric van Gyzen	@echo 'ERROR:    "make -C lib all install" to bypass compilation' >&2
1300a48773fSEric van Gyzen	@echo 'ERROR:    of xmlwf (e.g. with -DXML_UNICODE)' >&2
1310a48773fSEric van Gyzen	@echo 'ERROR:' >&2
1320a48773fSEric van Gyzen	@false
1330a48773fSEric van Gyzen
1340a48773fSEric van Gyzen
1350a48773fSEric van Gyzen.PHONY: run-benchmark
1360a48773fSEric van Gyzenrun-benchmark:
1370a48773fSEric van Gyzen	$(MAKE) -C tests/benchmark
1380a48773fSEric van Gyzen	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3
1394543ef51SXin LI	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/aaaaaa_attr.xml 4096 3
1404543ef51SXin LI	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/aaaaaa_cdata.xml 4096 3
1414543ef51SXin LI	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/aaaaaa_comment.xml 4096 3
1424543ef51SXin LI	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/aaaaaa_tag.xml 4096 3
1434543ef51SXin LI	./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/aaaaaa_text.xml 4096 3
1440a48773fSEric van Gyzen
1456b2c1e49SXin LI.PHONY: download-xmlts-zip
1466b2c1e49SXin LIdownload-xmlts-zip:
1470a48773fSEric van Gyzen	if test "$(XMLTS_ZIP)" = ""; then \
1480a48773fSEric van Gyzen		wget --output-document=tests/xmlts.zip \
1490a48773fSEric van Gyzen			https://www.w3.org/XML/Test/xmlts20080827.zip; \
1500a48773fSEric van Gyzen	else \
1510a48773fSEric van Gyzen		cp $(XMLTS_ZIP) tests/xmlts.zip; \
1520a48773fSEric van Gyzen	fi
1530a48773fSEric van Gyzen
1546b2c1e49SXin LItests/xmlts.zip:
1556b2c1e49SXin LI	$(MAKE) download-xmlts-zip
1566b2c1e49SXin LI
1576b2c1e49SXin LI.PHONY: extract-xmlts-zip
1586b2c1e49SXin LIextract-xmlts-zip: tests/xmlts.zip
1596b2c1e49SXin LI	[ -f $(builddir)/tests/xmlts.zip ] || $(MAKE) download-xmlts-zip  # vpath workaround
1600a48773fSEric van Gyzen	cd tests && unzip -q xmlts.zip
1610a48773fSEric van Gyzen
1626b2c1e49SXin LItests/xmlconf: tests/xmlts.zip
1636b2c1e49SXin LI	$(MAKE) extract-xmlts-zip
1646b2c1e49SXin LI
1650a48773fSEric van Gyzen.PHONY: run-xmltest
1660a48773fSEric van Gyzenrun-xmltest: tests/xmlconf
1670a48773fSEric van Gyzenif WITH_XMLWF
1686b2c1e49SXin LI	[ -d $(builddir)/tests/xmlconf ] || $(MAKE) extract-xmlts-zip  # vpath workaround
1696b2c1e49SXin LI	$(MAKE) -C lib
1700a48773fSEric van Gyzen	$(MAKE) -C xmlwf
1716b2c1e49SXin LI	$(srcdir)/tests/xmltest.sh "$(abs_builddir)/run.sh $(abs_builddir)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee $(builddir)/tests/xmltest.log
1726b2c1e49SXin LI	$(srcdir)/fix-xmltest-log.sh $(builddir)/tests/xmltest.log
1736b2c1e49SXin LI	diff -u $(srcdir)/tests/xmltest.log.expected $(builddir)/tests/xmltest.log
1740a48773fSEric van Gyzenelse
1750a48773fSEric van Gyzen	@echo 'ERROR: xmlwf is needed for "make run-xmltest".' >&2
1760a48773fSEric van Gyzen	@echo 'ERROR: Please re-configure without --without-xmlwf.' >&2
1770a48773fSEric van Gyzen	@false
1780a48773fSEric van Gyzenendif
1790a48773fSEric van Gyzen
1800a48773fSEric van Gyzen.PHONY: qa
1810a48773fSEric van Gyzenqa:
1826b2c1e49SXin LI	QA_COMPILER=clang QA_SANITIZER=address   ./qa.sh
1836b2c1e49SXin LI	QA_COMPILER=clang QA_SANITIZER=memory    ./qa.sh
1846b2c1e49SXin LI	QA_COMPILER=clang QA_SANITIZER=undefined ./qa.sh
1856b2c1e49SXin LI	QA_COMPILER=gcc   QA_PROCESSOR=gcov      ./qa.sh
186