head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.8
	netbsd-11-0-RC3:1.1.1.8
	netbsd-11-0-RC2:1.1.1.8
	netbsd-11-0-RC1:1.1.1.8
	perseant-exfatfs-base-20250801:1.1.1.8
	netbsd-11:1.1.1.8.0.2
	netbsd-11-base:1.1.1.8
	expat-2-7-1:1.1.1.8
	expat-2-7-0:1.1.1.7
	netbsd-10-1-RELEASE:1.1.1.6
	perseant-exfatfs-base-20240630:1.1.1.6
	perseant-exfatfs:1.1.1.6.0.4
	perseant-exfatfs-base:1.1.1.6
	netbsd-8-3-RELEASE:1.1.1.3.4.2
	netbsd-9-4-RELEASE:1.1.1.4.8.1
	netbsd-10-0-RELEASE:1.1.1.6
	netbsd-10-0-RC6:1.1.1.6
	netbsd-10-0-RC5:1.1.1.6
	netbsd-10-0-RC4:1.1.1.6
	netbsd-10-0-RC3:1.1.1.6
	netbsd-10-0-RC2:1.1.1.6
	netbsd-10-0-RC1:1.1.1.6
	netbsd-10:1.1.1.6.0.2
	netbsd-10-base:1.1.1.6
	netbsd-9-3-RELEASE:1.1.1.4.8.1
	expat-2-4-6:1.1.1.6
	cjep_sun2x-base1:1.1.1.5
	cjep_sun2x:1.1.1.5.0.6
	cjep_sun2x-base:1.1.1.5
	cjep_staticlib_x-base1:1.1.1.5
	netbsd-9-2-RELEASE:1.1.1.4.8.1
	cjep_staticlib_x:1.1.1.5.0.4
	cjep_staticlib_x-base:1.1.1.5
	netbsd-9-1-RELEASE:1.1.1.4.8.1
	phil-wifi-20200421:1.1.1.5
	phil-wifi-20200411:1.1.1.5
	is-mlppp:1.1.1.5.0.2
	is-mlppp-base:1.1.1.5
	phil-wifi-20200406:1.1.1.5
	netbsd-8-2-RELEASE:1.1.1.3.4.2
	netbsd-9-0-RELEASE:1.1.1.4.8.1
	netbsd-9-0-RC2:1.1.1.4.8.1
	netbsd-9-0-RC1:1.1.1.4.8.1
	phil-wifi-20191119:1.1.1.5
	expat-2-2-8:1.1.1.5
	netbsd-9:1.1.1.4.0.8
	netbsd-9-base:1.1.1.4
	phil-wifi-20190609:1.1.1.4
	netbsd-8-1-RELEASE:1.1.1.3.4.1
	netbsd-8-1-RC1:1.1.1.3.4.1
	pgoyette-compat-merge-20190127:1.1.1.4
	pgoyette-compat-20190127:1.1.1.4
	pgoyette-compat-20190118:1.1.1.4
	pgoyette-compat-1226:1.1.1.4
	pgoyette-compat-1126:1.1.1.4
	pgoyette-compat-1020:1.1.1.4
	pgoyette-compat-0930:1.1.1.4
	pgoyette-compat-0906:1.1.1.4
	netbsd-7-2-RELEASE:1.1.1.1.12.3
	pgoyette-compat-0728:1.1.1.4
	netbsd-8-0-RELEASE:1.1.1.3.4.1
	phil-wifi:1.1.1.4.0.6
	phil-wifi-base:1.1.1.4
	pgoyette-compat-0625:1.1.1.4
	netbsd-8-0-RC2:1.1.1.3.4.1
	pgoyette-compat-0521:1.1.1.4
	pgoyette-compat-0502:1.1.1.4
	pgoyette-compat-0422:1.1.1.4
	netbsd-8-0-RC1:1.1.1.3.4.1
	pgoyette-compat-0415:1.1.1.4
	pgoyette-compat-0407:1.1.1.4
	pgoyette-compat-0330:1.1.1.4
	pgoyette-compat-0322:1.1.1.4
	pgoyette-compat-0315:1.1.1.4
	netbsd-7-1-2-RELEASE:1.1.1.1.12.2.2.1
	pgoyette-compat:1.1.1.4.0.4
	pgoyette-compat-base:1.1.1.4
	netbsd-7-1-1-RELEASE:1.1.1.1.12.2.2.1
	matt-nb8-mediatek:1.1.1.3.4.1.0.2
	matt-nb8-mediatek-base:1.1.1.3.4.1
	perseant-stdc-iso10646:1.1.1.4.0.2
	perseant-stdc-iso10646-base:1.1.1.4
	expat-2-2-1:1.1.1.4
	netbsd-8:1.1.1.3.0.4
	netbsd-8-base:1.1.1.3
	prg-localcount2-base3:1.1.1.3
	prg-localcount2-base2:1.1.1.3
	prg-localcount2-base1:1.1.1.3
	prg-localcount2:1.1.1.3.0.2
	prg-localcount2-base:1.1.1.3
	pgoyette-localcount-20170426:1.1.1.3
	bouyer-socketcan-base1:1.1.1.3
	pgoyette-localcount-20170320:1.1.1.3
	netbsd-7-1:1.1.1.1.12.2.0.2
	netbsd-7-1-RELEASE:1.1.1.1.12.2
	netbsd-7-1-RC2:1.1.1.1.12.2
	expat-2-2-0:1.1.1.3
	netbsd-7-nhusb-base-20170116:1.1.1.1.12.1
	bouyer-socketcan:1.1.1.2.0.10
	bouyer-socketcan-base:1.1.1.2
	pgoyette-localcount-20170107:1.1.1.2
	netbsd-7-1-RC1:1.1.1.1.12.1
	pgoyette-localcount-20161104:1.1.1.2
	netbsd-7-0-2-RELEASE:1.1.1.1.14.1
	localcount-20160914:1.1.1.2
	netbsd-7-nhusb:1.1.1.1.12.1.0.2
	netbsd-7-nhusb-base:1.1.1.1.12.1
	pgoyette-localcount-20160806:1.1.1.2
	pgoyette-localcount-20160726:1.1.1.2
	pgoyette-localcount:1.1.1.2.0.8
	pgoyette-localcount-base:1.1.1.2
	netbsd-7-0-1-RELEASE:1.1.1.1.14.1
	netbsd-6:1.1.1.2.0.6
	netbsd-6-1:1.1.1.2.0.4
	netbsd-6-0:1.1.1.2.0.2
	expat-2-1-1:1.1.1.2
	netbsd-7-0:1.1.1.1.0.14
	netbsd-7-0-RELEASE:1.1.1.1
	netbsd-7-0-RC3:1.1.1.1
	netbsd-7-0-RC2:1.1.1.1
	netbsd-7-0-RC1:1.1.1.1
	netbsd-7:1.1.1.1.0.12
	netbsd-7-base:1.1.1.1
	yamt-pagecache-base9:1.1.1.1
	yamt-pagecache-tag8:1.1.1.1.2.2
	tls-earlyentropy:1.1.1.1.0.10
	tls-earlyentropy-base:1.1.1.1
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.1
	riastradh-drm2-base3:1.1.1.1
	riastradh-drm2-base2:1.1.1.1
	riastradh-drm2-base1:1.1.1.1
	riastradh-drm2:1.1.1.1.0.6
	riastradh-drm2-base:1.1.1.1
	agc-symver:1.1.1.1.0.8
	agc-symver-base:1.1.1.1
	yamt-pagecache-base8:1.1.1.1
	yamt-pagecache-base7:1.1.1.1
	yamt-pagecache-base6:1.1.1.1
	tls-maxphys:1.1.1.1.0.4
	tls-maxphys-base:1.1.1.1
	yamt-pagecache-base5:1.1.1.1
	yamt-pagecache:1.1.1.1.0.2
	yamt-pagecache-base4:1.1.1.1
	expat-2-1-0:1.1.1.1
	expat:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2012.04.06.10.22.52;	author spz;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2012.04.06.10.22.52;	author spz;	state Exp;
branches
	1.1.1.1.2.1
	1.1.1.1.12.1
	1.1.1.1.14.1;
next	1.1.1.2;

1.1.1.2
date	2016.05.14.14.30.18;	author spz;	state Exp;
branches
	1.1.1.2.2.1
	1.1.1.2.4.1
	1.1.1.2.6.1
	1.1.1.2.8.1
	1.1.1.2.10.1;
next	1.1.1.3;
commitid	t3RrSVHO5XBpss6z;

1.1.1.3
date	2017.02.04.10.15.56;	author spz;	state Exp;
branches
	1.1.1.3.4.1;
next	1.1.1.4;
commitid	B9FyZD57dziavCEz;

1.1.1.4
date	2017.06.17.21.59.05;	author christos;	state Exp;
branches
	1.1.1.4.6.1
	1.1.1.4.8.1;
next	1.1.1.5;
commitid	ToDV7ynpZaar7MVz;

1.1.1.5
date	2019.09.16.06.19.59;	author maya;	state Exp;
branches;
next	1.1.1.6;
commitid	UzhqcAQ3PxywwcDB;

1.1.1.6
date	2022.02.23.15.21.34;	author christos;	state Exp;
branches
	1.1.1.6.4.1;
next	1.1.1.7;
commitid	ZsvHjokwGdDtSKtD;

1.1.1.7
date	2025.03.14.21.23.16;	author wiz;	state Exp;
branches;
next	1.1.1.8;
commitid	uDg3iV45APhk35NF;

1.1.1.8
date	2025.04.18.16.05.32;	author wiz;	state Exp;
branches;
next	;
commitid	mw1CPc3EZt7xayRF;

1.1.1.1.2.1
date	2012.04.06.10.22.52;	author yamt;	state dead;
branches;
next	1.1.1.1.2.2;

1.1.1.1.2.2
date	2012.04.17.00.04.38;	author yamt;	state Exp;
branches;
next	;

1.1.1.1.12.1
date	2016.05.18.09.14.14;	author snj;	state Exp;
branches
	1.1.1.1.12.1.2.1;
next	1.1.1.1.12.2;
commitid	L9D8vOB1Fk8fAW6z;

1.1.1.1.12.2
date	2017.02.19.04.53.23;	author snj;	state Exp;
branches
	1.1.1.1.12.2.2.1;
next	1.1.1.1.12.3;
commitid	818vp37ghTFMewGz;

1.1.1.1.12.3
date	2017.06.21.17.23.41;	author snj;	state Exp;
branches;
next	;
commitid	BajWUxizDuBUsgWz;

1.1.1.1.12.1.2.1
date	2017.03.13.07.41.22;	author skrll;	state Exp;
branches;
next	;
commitid	vH6VFbpxnMy7rmJz;

1.1.1.1.12.2.2.1
date	2017.06.21.17.15.26;	author snj;	state Exp;
branches;
next	;
commitid	vkx34HN3ERMKpgWz;

1.1.1.1.14.1
date	2016.05.18.09.15.16;	author snj;	state Exp;
branches;
next	1.1.1.1.14.2;
commitid	QP6HLZ4lDbRvAW6z;

1.1.1.1.14.2
date	2017.02.19.04.52.27;	author snj;	state Exp;
branches;
next	1.1.1.1.14.3;
commitid	R7ppK1AfEy3newGz;

1.1.1.1.14.3
date	2017.06.21.17.09.13;	author snj;	state Exp;
branches;
next	;
commitid	z7jn49JteMN0ogWz;

1.1.1.2.2.1
date	2016.05.14.14.30.18;	author snj;	state dead;
branches;
next	1.1.1.2.2.2;
commitid	sn3ewMlOwSnM3X6z;

1.1.1.2.2.2
date	2016.05.18.10.40.42;	author snj;	state Exp;
branches;
next	1.1.1.2.2.3;
commitid	sn3ewMlOwSnM3X6z;

1.1.1.2.2.3
date	2017.02.19.07.25.34;	author snj;	state Exp;
branches;
next	1.1.1.2.2.4;
commitid	jAh0mhd653b05xGz;

1.1.1.2.2.4
date	2017.06.21.16.41.40;	author snj;	state Exp;
branches;
next	;
commitid	kpn3A6rkfpJ9egWz;

1.1.1.2.4.1
date	2016.05.14.14.30.18;	author snj;	state dead;
branches;
next	1.1.1.2.4.2;
commitid	5xlzCAOqLNUu5X6z;

1.1.1.2.4.2
date	2016.05.18.10.45.13;	author snj;	state Exp;
branches;
next	1.1.1.2.4.3;
commitid	5xlzCAOqLNUu5X6z;

1.1.1.2.4.3
date	2017.02.19.07.26.18;	author snj;	state Exp;
branches;
next	1.1.1.2.4.4;
commitid	Dgy5ClmXEzfe5xGz;

1.1.1.2.4.4
date	2017.06.21.16.46.21;	author snj;	state Exp;
branches;
next	;
commitid	a3XYbeElG2M9ggWz;

1.1.1.2.6.1
date	2016.05.14.14.30.18;	author snj;	state dead;
branches;
next	1.1.1.2.6.2;
commitid	rBQKbLw2qANU6X6z;

1.1.1.2.6.2
date	2016.05.18.10.49.22;	author snj;	state Exp;
branches;
next	1.1.1.2.6.3;
commitid	rBQKbLw2qANU6X6z;

1.1.1.2.6.3
date	2017.02.19.07.28.10;	author snj;	state Exp;
branches;
next	1.1.1.2.6.4;
commitid	idwY0ZKxoPwU5xGz;

1.1.1.2.6.4
date	2017.06.21.16.56.31;	author snj;	state Exp;
branches;
next	;
commitid	IH7Wjl3kVIGYigWz;

1.1.1.2.8.1
date	2017.03.20.06.56.45;	author pgoyette;	state Exp;
branches;
next	;
commitid	jjw7cAwgyKq7RfKz;

1.1.1.2.10.1
date	2017.04.21.16.52.56;	author bouyer;	state Exp;
branches;
next	;
commitid	dUG7nkTKALCadqOz;

1.1.1.3.4.1
date	2017.06.21.18.09.06;	author snj;	state Exp;
branches;
next	1.1.1.3.4.2;
commitid	NuwQOtsJ0kfEIgWz;

1.1.1.3.4.2
date	2019.09.17.18.50.05;	author martin;	state Exp;
branches;
next	;
commitid	YklLl72xalI1EoDB;

1.1.1.4.6.1
date	2020.04.13.08.02.21;	author martin;	state Exp;
branches;
next	;
commitid	X01YhRUPVUDaec4C;

1.1.1.4.8.1
date	2019.09.17.19.51.12;	author martin;	state Exp;
branches;
next	;
commitid	JZUctABQ1ZKdZoDB;

1.1.1.6.4.1
date	2025.08.02.05.50.28;	author perseant;	state Exp;
branches;
next	;
commitid	23j6GFaDws3O875G;


desc
@@


1.1
log
@Initial revision
@
text
@# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

project(expat)

cmake_minimum_required(VERSION 2.6)
set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "2.1.0")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
option(BUILD_shared "build a shared expat library" ON)

# configuration options
set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
option(XML_NS "Define to make XML Namespaces functionality available" ON)

if(XML_DTD)
    set(XML_DTD 1)
else(XML_DTD)
    set(XML_DTD 0)
endif(XML_DTD)
if(XML_NS)
    set(XML_NS 1)
else(XML_NS)
    set(XML_NS 0)
endif(XML_NS)

if(BUILD_tests)
    enable_testing()
endif(BUILD_tests)

include(ConfigureChecks.cmake)

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)

set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c 
    lib/xmltok_impl.c 
    lib/xmltok_ns.c
)

if(WIN32 AND BUILD_shared)
    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
endif(WIN32 AND BUILD_shared)

if(BUILD_shared)
    set(_SHARED SHARED)
else(BUILD_shared)
    set(_SHARED STATIC)
endif(BUILD_shared)

add_library(expat ${_SHARED} ${expat_SRCS})

install(TARGETS expat RUNTIME DESTINATION bin
                      LIBRARY DESTINATION lib
                      ARCHIVE DESTINATION lib)

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}/bin")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)

install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)



if(BUILD_tools AND NOT WINCE)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    target_link_libraries(xmlwf expat)
    install(TARGETS xmlwf DESTINATION bin)
    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
endif(BUILD_tools AND NOT WINCE)

if(BUILD_examples)
    add_executable(elements examples/elements.c)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    target_link_libraries(outline expat)
endif(BUILD_examples)

if(BUILD_tests)
    ## these are unittests that can be run on any platform
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
    target_link_libraries(runtests expat)
    add_test(runtests runtests)

    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
    target_link_libraries(runtestspp expat)
    add_test(runtestspp runtestspp)
endif(BUILD_tests)
@


1.1.1.1
log
@import of expat 2.1.0
Fixes CVE-2012-1147, CVE-2012-1148 and CVE-2012-0876 (other security
issues have been previously fixed in our tree)

relevant Changes:
Release 2.1.0 Sat March 24 2012
        - Bug Fixes:
          #1742315: Harmful XML_ParserCreateNS suggestion.
          #2895533: CVE-2012-1147 - Resource leak in readfilemap.c.
          #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3.
          #1983953, 2517952, 2517962, 2649838:
                Build modifications using autoreconf instead of buildconf.sh.
          #2815947, #2884086: OBJEXT and EXEEXT support while building.
          #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences.
          #2517938: xmlwf should return non-zero exit status if not well-formed.
          #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml.
          #2855609: Dangling positionPtr after error.
          #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8().
          #2958794: CVE-2012-1148 - Memory leak in poolGrow.
          #2990652: CMake support.
          #3010819: UNEXPECTED_STATE with a trailing "%" in entity value.
          #3206497: Unitialized memory returned from XML_Parse.
          #3287849: make check fails on mingw-w64.
          #3496608: CVE-2012-0876 - Hash DOS attack.
        - Patches:
          #1749198: pkg-config support.
          #3010222: Fix for bug #3010819.
          #3312568: CMake support.
          #3446384: Report byte offsets for attr names and values.
        - New Features / API changes:
          Added new API member XML_SetHashSalt() that allows setting an intial
                value (salt) for hash calculations. This is part of the fix for
                bug #3496608 to randomize hash parameters.
          When compiled with XML_ATTR_INFO defined, adds new API member
                XML_GetAttributeInfo() that allows retrieving the byte
                offsets for attribute names and values (patch #3446384).
          Added CMake build system.
                See bug #2990652 and patch #3312568.
          Added run-benchmark target to Makefile.in - relies on testdata module
                present in the same relative location as in the repository.
@
text
@@


1.1.1.1.14.1
log
@Pull up following revision(s) (requested by spz in ticket #1169):
	distrib/sets/lists/base/ad.aarch64: patch
	distrib/sets/lists/base/ad.arm: patch
	distrib/sets/lists/base/ad.mips: patch
	distrib/sets/lists/base/ad.powerpc: patch
	distrib/sets/lists/base/md.amd64: patch
	distrib/sets/lists/base/md.sparc64: patch
	distrib/sets/lists/base/shl.mi: 1.771, 1.772 via patch
	distrib/sets/lists/comp/mi: 1.2035
	distrib/sets/lists/debug/ad.aarch64: patch
	distrib/sets/lists/debug/ad.arm: patch
	distrib/sets/lists/debug/ad.mips: patch
	distrib/sets/lists/debug/ad.powerpc: patch
	distrib/sets/lists/debug/md.amd64: patch
	distrib/sets/lists/debug/md.sparc64: patch
	distrib/sets/lists/debug/shl.mi: 1.133, 1.134 via patch
	doc/3RDPARTY: 1.1316, 1.1330
	external/mit/expat/dist/CMake.README: up to 1.1.1.2
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.3
	external/mit/expat/dist/MANIFEST: up to 1.1.1.3
	external/mit/expat/dist/Makefile.in: up to 1.1.1.3
	external/mit/expat/dist/README: up to 1.1.1.3
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.3
	external/mit/expat/dist/configure.ac: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.3
	external/mit/expat/dist/bcb5/elements.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/outline.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.2
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4: up to 1.4
	external/mit/expat/dist/conftools/config.guess: up to 1.1.1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.1.1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/mkinstalldirs: up to 1.4
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.sgml: up to 1.1.1.3
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.2
	external/mit/expat/dist/lib/amigaconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.3
	external/mit/expat/dist/lib/libexpat.def: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpatw.def: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.h: up to 1.1.1.1
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.3
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/README.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.3
	external/mit/expat/lib/libexpat/Makefile: up to 1.2
	external/mit/expat/lib/libexpat/expat.pc.in: up to 1.1
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.3
	external/mit/expat/lib/libexpat/shlib_version: up to 1.3
Update expat to 2.1.1.  Apply fixes for CVE-2016-0718.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.1.1")
a88 1
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
a95 1
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a98 1
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a104 1
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d106 1
a106 1
    add_test(runtests tests/runtests)
a108 1
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d110 1
a110 1
    add_test(runtestspp tests/runtestspp)
@


1.1.1.1.14.2
log
@Pull up following revision(s) (requested by spz in ticket #1361):
	doc/3RDPARTY: 1.398, 1.1407
	external/mit/expat/dist/CMake.README: up to 1.1.1.3
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.3
	external/mit/expat/dist/COPYING: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.4
	external/mit/expat/dist/MANIFEST: up to 1.1.1.4
	external/mit/expat/dist/Makefile.in: up to 1.1.1.4
	external/mit/expat/dist/README: up to 1.1.1.4
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/xmlwf.mak: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.4
	external/mit/expat/dist/configure.ac: up to 1.1.1.2
	external/mit/expat/dist/conftools/config.guess: up to 1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.4
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.4
	external/mit/expat/dist/doc/expat.png: up to 1.1.1.2
	external/mit/expat/dist/doc/valid-xhtml10.png: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.sgml          delete
	external/mit/expat/dist/doc/xmlwf.xml: up to 1.1.1.1
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.4
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.4
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.6
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.3
	external/mit/expat/dist/lib/xmltok.c: up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.5
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.3
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.3
	external/mit/expat/dist/tests/xmltest.sh: up to 1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.3
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.3
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.4
Update expat to 2.2.0, fixing CVE-2016-0718, CVE-2016-4472, CVE-2016-5300,
and CVE-2012-6702.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.1.14.3
log
@Pull up following revision(s) (requested by spz in ticket #1437):
	doc/3RDPARTY: 1.1454
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile: delete
	external/mit/expat/dist/amiga/README.txt: delete
	external/mit/expat/dist/amiga/expat.xml: delete
	external/mit/expat/dist/amiga/expat_68k.c: delete
	external/mit/expat/dist/amiga/expat_68k.h: delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: delete
	external/mit/expat/dist/amiga/expat_base.h: delete
	external/mit/expat/dist/amiga/expat_lib.c: delete
	external/mit/expat/dist/amiga/expat_vectors.c: delete
	external/mit/expat/dist/amiga/include/inline4/expat.h: delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h: delete
	external/mit/expat/dist/amiga/include/libraries/expat.h: delete
	external/mit/expat/dist/amiga/include/proto/expat.h: delete
	external/mit/expat/dist/amiga/launch.c: delete
	external/mit/expat/dist/bcb5/README.txt: delete
	external/mit/expat/dist/bcb5/all_projects.bpg: delete
	external/mit/expat/dist/bcb5/elements.bpf: delete
	external/mit/expat/dist/bcb5/elements.bpr: delete
	external/mit/expat/dist/bcb5/elements.mak: delete
	external/mit/expat/dist/bcb5/expat.bpf: delete
	external/mit/expat/dist/bcb5/expat.bpr: delete
	external/mit/expat/dist/bcb5/expat.mak: delete
	external/mit/expat/dist/bcb5/expat_static.bpf: delete
	external/mit/expat/dist/bcb5/expat_static.bpr: delete
	external/mit/expat/dist/bcb5/expat_static.mak: delete
	external/mit/expat/dist/bcb5/expatw.bpf: delete
	external/mit/expat/dist/bcb5/expatw.bpr: delete
	external/mit/expat/dist/bcb5/expatw.mak: delete
	external/mit/expat/dist/bcb5/expatw_static.bpf: delete
	external/mit/expat/dist/bcb5/expatw_static.bpr: delete
	external/mit/expat/dist/bcb5/expatw_static.mak: delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def: delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def: delete
	external/mit/expat/dist/bcb5/makefile.mak: delete
	external/mit/expat/dist/bcb5/outline.bpf: delete
	external/mit/expat/dist/bcb5/outline.bpr: delete
	external/mit/expat/dist/bcb5/outline.mak: delete
	external/mit/expat/dist/bcb5/setup.bat: delete
	external/mit/expat/dist/bcb5/xmlwf.bpf: delete
	external/mit/expat/dist/bcb5/xmlwf.bpr: delete
	external/mit/expat/dist/bcb5/xmlwf.mak: delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in: delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp: delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp: delete
	external/mit/expat/dist/expat.dsw: delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW: delete
	external/mit/expat/dist/lib/amigaconfig.h: delete
	external/mit/expat/dist/lib/expat.dsp: delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: delete
	external/mit/expat/dist/lib/expatw.dsp: delete
	external/mit/expat/dist/lib/expatw_static.dsp: delete
	external/mit/expat/dist/lib/macconfig.h: delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw: delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms: delete
	external/mit/expat/dist/vms/descrip.mms: delete
	external/mit/expat/dist/vms/expat_config.h: delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp: delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.1.12.1
log
@Pull up following revision(s) (requested by spz in ticket #1169):
	distrib/sets/lists/base/ad.aarch64: patch
	distrib/sets/lists/base/ad.arm: patch
	distrib/sets/lists/base/ad.mips: patch
	distrib/sets/lists/base/ad.powerpc: patch
	distrib/sets/lists/base/md.amd64: patch
	distrib/sets/lists/base/md.sparc64: patch
	distrib/sets/lists/base/shl.mi: 1.771, 1.772 via patch
	distrib/sets/lists/comp/mi: 1.2035
	distrib/sets/lists/debug/ad.aarch64: patch
	distrib/sets/lists/debug/ad.arm: patch
	distrib/sets/lists/debug/ad.mips: patch
	distrib/sets/lists/debug/ad.powerpc: patch
	distrib/sets/lists/debug/md.amd64: patch
	distrib/sets/lists/debug/md.sparc64: patch
	distrib/sets/lists/debug/shl.mi: 1.133, 1.134 via patch
	doc/3RDPARTY: 1.1316, 1.1330
	external/mit/expat/dist/CMake.README: up to 1.1.1.2
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.3
	external/mit/expat/dist/MANIFEST: up to 1.1.1.3
	external/mit/expat/dist/Makefile.in: up to 1.1.1.3
	external/mit/expat/dist/README: up to 1.1.1.3
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.3
	external/mit/expat/dist/configure.ac: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.3
	external/mit/expat/dist/bcb5/elements.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/outline.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.2
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4: up to 1.4
	external/mit/expat/dist/conftools/config.guess: up to 1.1.1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.1.1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/mkinstalldirs: up to 1.4
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.sgml: up to 1.1.1.3
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.2
	external/mit/expat/dist/lib/amigaconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.3
	external/mit/expat/dist/lib/libexpat.def: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpatw.def: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.h: up to 1.1.1.1
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.3
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/README.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.3
	external/mit/expat/lib/libexpat/Makefile: up to 1.2
	external/mit/expat/lib/libexpat/expat.pc.in: up to 1.1
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.3
	external/mit/expat/lib/libexpat/shlib_version: up to 1.3
Update expat to 2.1.1.  Apply fixes for CVE-2016-0718.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.1.1")
a88 1
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
a95 1
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a98 1
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a104 1
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d106 1
a106 1
    add_test(runtests tests/runtests)
a108 1
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d110 1
a110 1
    add_test(runtestspp tests/runtestspp)
@


1.1.1.1.12.1.2.1
log
@Sync with netbsd-7-1-RELEASE
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.1.12.2
log
@Pull up following revision(s) (requested by spz in ticket #1361):
	doc/3RDPARTY: 1.398, 1.1407
	external/mit/expat/dist/CMake.README: up to 1.1.1.3
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.3
	external/mit/expat/dist/COPYING: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.4
	external/mit/expat/dist/MANIFEST: up to 1.1.1.4
	external/mit/expat/dist/Makefile.in: up to 1.1.1.4
	external/mit/expat/dist/README: up to 1.1.1.4
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/xmlwf.mak: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.4
	external/mit/expat/dist/configure.ac: up to 1.1.1.2
	external/mit/expat/dist/conftools/config.guess: up to 1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.4
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.4
	external/mit/expat/dist/doc/expat.png: up to 1.1.1.2
	external/mit/expat/dist/doc/valid-xhtml10.png: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.sgml          delete
	external/mit/expat/dist/doc/xmlwf.xml: up to 1.1.1.1
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.4
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.4
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.6
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.3
	external/mit/expat/dist/lib/xmltok.c: up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.5
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.3
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.3
	external/mit/expat/dist/tests/xmltest.sh: up to 1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.3
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.3
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.4
Update expat to 2.2.0, fixing CVE-2016-0718, CVE-2016-4472, CVE-2016-5300,
and CVE-2012-6702.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.1.12.3
log
@Pull up following revision(s) (requested by spz in ticket #1437):
	doc/3RDPARTY: 1.1454
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile: delete
	external/mit/expat/dist/amiga/README.txt: delete
	external/mit/expat/dist/amiga/expat.xml: delete
	external/mit/expat/dist/amiga/expat_68k.c: delete
	external/mit/expat/dist/amiga/expat_68k.h: delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: delete
	external/mit/expat/dist/amiga/expat_base.h: delete
	external/mit/expat/dist/amiga/expat_lib.c: delete
	external/mit/expat/dist/amiga/expat_vectors.c: delete
	external/mit/expat/dist/amiga/include/inline4/expat.h: delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h: delete
	external/mit/expat/dist/amiga/include/libraries/expat.h: delete
	external/mit/expat/dist/amiga/include/proto/expat.h: delete
	external/mit/expat/dist/amiga/launch.c: delete
	external/mit/expat/dist/bcb5/README.txt: delete
	external/mit/expat/dist/bcb5/all_projects.bpg: delete
	external/mit/expat/dist/bcb5/elements.bpf: delete
	external/mit/expat/dist/bcb5/elements.bpr: delete
	external/mit/expat/dist/bcb5/elements.mak: delete
	external/mit/expat/dist/bcb5/expat.bpf: delete
	external/mit/expat/dist/bcb5/expat.bpr: delete
	external/mit/expat/dist/bcb5/expat.mak: delete
	external/mit/expat/dist/bcb5/expat_static.bpf: delete
	external/mit/expat/dist/bcb5/expat_static.bpr: delete
	external/mit/expat/dist/bcb5/expat_static.mak: delete
	external/mit/expat/dist/bcb5/expatw.bpf: delete
	external/mit/expat/dist/bcb5/expatw.bpr: delete
	external/mit/expat/dist/bcb5/expatw.mak: delete
	external/mit/expat/dist/bcb5/expatw_static.bpf: delete
	external/mit/expat/dist/bcb5/expatw_static.bpr: delete
	external/mit/expat/dist/bcb5/expatw_static.mak: delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def: delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def: delete
	external/mit/expat/dist/bcb5/makefile.mak: delete
	external/mit/expat/dist/bcb5/outline.bpf: delete
	external/mit/expat/dist/bcb5/outline.bpr: delete
	external/mit/expat/dist/bcb5/outline.mak: delete
	external/mit/expat/dist/bcb5/setup.bat: delete
	external/mit/expat/dist/bcb5/xmlwf.bpf: delete
	external/mit/expat/dist/bcb5/xmlwf.bpr: delete
	external/mit/expat/dist/bcb5/xmlwf.mak: delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in: delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp: delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp: delete
	external/mit/expat/dist/expat.dsw: delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW: delete
	external/mit/expat/dist/lib/amigaconfig.h: delete
	external/mit/expat/dist/lib/expat.dsp: delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: delete
	external/mit/expat/dist/lib/expatw.dsp: delete
	external/mit/expat/dist/lib/expatw_static.dsp: delete
	external/mit/expat/dist/lib/macconfig.h: delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw: delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms: delete
	external/mit/expat/dist/vms/descrip.mms: delete
	external/mit/expat/dist/vms/expat_config.h: delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp: delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.1.12.2.2.1
log
@Pull up following revision(s) (requested by spz in ticket #1437):
	doc/3RDPARTY: 1.1454
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile: delete
	external/mit/expat/dist/amiga/README.txt: delete
	external/mit/expat/dist/amiga/expat.xml: delete
	external/mit/expat/dist/amiga/expat_68k.c: delete
	external/mit/expat/dist/amiga/expat_68k.h: delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: delete
	external/mit/expat/dist/amiga/expat_base.h: delete
	external/mit/expat/dist/amiga/expat_lib.c: delete
	external/mit/expat/dist/amiga/expat_vectors.c: delete
	external/mit/expat/dist/amiga/include/inline4/expat.h: delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h: delete
	external/mit/expat/dist/amiga/include/libraries/expat.h: delete
	external/mit/expat/dist/amiga/include/proto/expat.h: delete
	external/mit/expat/dist/amiga/launch.c: delete
	external/mit/expat/dist/bcb5/README.txt: delete
	external/mit/expat/dist/bcb5/all_projects.bpg: delete
	external/mit/expat/dist/bcb5/elements.bpf: delete
	external/mit/expat/dist/bcb5/elements.bpr: delete
	external/mit/expat/dist/bcb5/elements.mak: delete
	external/mit/expat/dist/bcb5/expat.bpf: delete
	external/mit/expat/dist/bcb5/expat.bpr: delete
	external/mit/expat/dist/bcb5/expat.mak: delete
	external/mit/expat/dist/bcb5/expat_static.bpf: delete
	external/mit/expat/dist/bcb5/expat_static.bpr: delete
	external/mit/expat/dist/bcb5/expat_static.mak: delete
	external/mit/expat/dist/bcb5/expatw.bpf: delete
	external/mit/expat/dist/bcb5/expatw.bpr: delete
	external/mit/expat/dist/bcb5/expatw.mak: delete
	external/mit/expat/dist/bcb5/expatw_static.bpf: delete
	external/mit/expat/dist/bcb5/expatw_static.bpr: delete
	external/mit/expat/dist/bcb5/expatw_static.mak: delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def: delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def: delete
	external/mit/expat/dist/bcb5/makefile.mak: delete
	external/mit/expat/dist/bcb5/outline.bpf: delete
	external/mit/expat/dist/bcb5/outline.bpr: delete
	external/mit/expat/dist/bcb5/outline.mak: delete
	external/mit/expat/dist/bcb5/setup.bat: delete
	external/mit/expat/dist/bcb5/xmlwf.bpf: delete
	external/mit/expat/dist/bcb5/xmlwf.bpr: delete
	external/mit/expat/dist/bcb5/xmlwf.mak: delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in: delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp: delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp: delete
	external/mit/expat/dist/expat.dsw: delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW: delete
	external/mit/expat/dist/lib/amigaconfig.h: delete
	external/mit/expat/dist/lib/expat.dsp: delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: delete
	external/mit/expat/dist/lib/expatw.dsp: delete
	external/mit/expat/dist/lib/expatw_static.dsp: delete
	external/mit/expat/dist/lib/macconfig.h: delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw: delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms: delete
	external/mit/expat/dist/vms/descrip.mms: delete
	external/mit/expat/dist/vms/expat_config.h: delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp: delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.2
log
@Import of a new expat version. Upstream Changes:

Release 2.1.1 Sat March 12 2016
        Security fixes:
            #582: CVE-2015-1283 - Multiple integer overflows in XML_GetBuffer

        Bug fixes:
            #502: Fix potential null pointer dereference
            #520: Symbol XML_SetHashSalt was not exported
            Output of "xmlwf -h" was incomplete

        Other changes
            #503: Document behavior of calling XML_SetHashSalt with salt 0
            Minor improvements to man page xmlwf(1)
            Improvements to the experimental CMake build system
            libtool now invoked with --verbose
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.1.1")
a88 1
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
a95 1
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a98 1
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
a104 1
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d106 1
a106 1
    add_test(runtests tests/runtests)
a108 1
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
d110 1
a110 1
    add_test(runtestspp tests/runtestspp)
@


1.1.1.2.10.1
log
@Sync with HEAD
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.2.8.1
log
@Sync with HEAD
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.3
log
@from Changes:
    Release 2.2.0 Tue June 21 2016
        Security fixes:
            #537  CVE-2016-0718 -- Fix crash on malformed input
                  CVE-2016-4472 -- Improve insufficient fix to CVE-2015-1283 /
                                   CVE-2015-2716 introduced with Expat 2.1.1
            #499  CVE-2016-5300 -- Use more entropy for hash initialization
                                   than the original fix to CVE-2012-0876
            #519  CVE-2012-6702 -- Resolve troublesome internal call to srand
                                   that was introduced with Expat 2.1.0
                                   when addressing CVE-2012-0876 (issue #496)

        Bug fixes:
                  Fix uninitialized reads of size 1
                    (e.g. in little2_updatePosition)
                  Fix detection of UTF-8 character boundaries

        Other changes:
            #532  Fix compilation for Visual Studio 2010 (keyword "C99")
                  Autotools: Resolve use of "$<" to better support bmake
                  Autotools: Add QA script "qa.sh" (and make target "qa")
                  Autotools: Respect CXXFLAGS if given
                  Autotools: Fix "make run-xmltest"
                  Autotools: Have "make run-xmltest" check for expected output
             p90  CMake: Fix static build (BUILD_shared=OFF) on Windows
            #536  CMake: Add soversion, support -DNO_SONAME=yes to bypass
            #323  CMake: Add suffix "d" to differentiate debug from release
                  CMake: Define WIN32 with CMake on Windows
                  Annotate memory allocators for GCC
                  Address all currently known compile warnings
                  Make sure that API symbols remain visible despite
                    -fvisibility=hidden
                  Remove executable flag from source files
                  Resolve COMPILED_FROM_DSP in favor of WIN32
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.3.4.1
log
@Pull up following revision(s) (requested by spz in ticket #48):
	doc/3RDPARTY: 1.1454
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile: delete
	external/mit/expat/dist/amiga/README.txt: delete
	external/mit/expat/dist/amiga/expat.xml: delete
	external/mit/expat/dist/amiga/expat_68k.c: delete
	external/mit/expat/dist/amiga/expat_68k.h: delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: delete
	external/mit/expat/dist/amiga/expat_base.h: delete
	external/mit/expat/dist/amiga/expat_lib.c: delete
	external/mit/expat/dist/amiga/expat_vectors.c: delete
	external/mit/expat/dist/amiga/include/inline4/expat.h: delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h: delete
	external/mit/expat/dist/amiga/include/libraries/expat.h: delete
	external/mit/expat/dist/amiga/include/proto/expat.h: delete
	external/mit/expat/dist/amiga/launch.c: delete
	external/mit/expat/dist/bcb5/README.txt: delete
	external/mit/expat/dist/bcb5/all_projects.bpg: delete
	external/mit/expat/dist/bcb5/elements.bpf: delete
	external/mit/expat/dist/bcb5/elements.bpr: delete
	external/mit/expat/dist/bcb5/elements.mak: delete
	external/mit/expat/dist/bcb5/expat.bpf: delete
	external/mit/expat/dist/bcb5/expat.bpr: delete
	external/mit/expat/dist/bcb5/expat.mak: delete
	external/mit/expat/dist/bcb5/expat_static.bpf: delete
	external/mit/expat/dist/bcb5/expat_static.bpr: delete
	external/mit/expat/dist/bcb5/expat_static.mak: delete
	external/mit/expat/dist/bcb5/expatw.bpf: delete
	external/mit/expat/dist/bcb5/expatw.bpr: delete
	external/mit/expat/dist/bcb5/expatw.mak: delete
	external/mit/expat/dist/bcb5/expatw_static.bpf: delete
	external/mit/expat/dist/bcb5/expatw_static.bpr: delete
	external/mit/expat/dist/bcb5/expatw_static.mak: delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def: delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def: delete
	external/mit/expat/dist/bcb5/makefile.mak: delete
	external/mit/expat/dist/bcb5/outline.bpf: delete
	external/mit/expat/dist/bcb5/outline.bpr: delete
	external/mit/expat/dist/bcb5/outline.mak: delete
	external/mit/expat/dist/bcb5/setup.bat: delete
	external/mit/expat/dist/bcb5/xmlwf.bpf: delete
	external/mit/expat/dist/bcb5/xmlwf.bpr: delete
	external/mit/expat/dist/bcb5/xmlwf.mak: delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in: delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp: delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp: delete
	external/mit/expat/dist/expat.dsw: delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW: delete
	external/mit/expat/dist/lib/amigaconfig.h: delete
	external/mit/expat/dist/lib/expat.dsp: delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: delete
	external/mit/expat/dist/lib/expatw.dsp: delete
	external/mit/expat/dist/lib/expatw_static.dsp: delete
	external/mit/expat/dist/lib/macconfig.h: delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw: delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms: delete
	external/mit/expat/dist/vms/descrip.mms: delete
	external/mit/expat/dist/vms/expat_config.h: delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp: delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.3.4.2
log
@Sync external/mit/expat to current and pull up the following revisions,
requested by maya in ticket #1376:

	external/mit/expat/dist/conftools/test-driver	up to 1.1.1.1
	external/mit/expat/dist/conftools/ar-lib	up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-compile-flags.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-link-flags.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-check-compile-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-check-link-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-require-defined.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/compile	up to 1.1.1.1
	external/mit/expat/dist/conftools/depcomp	up to 1.1.1.1
	external/mit/expat/dist/conftools/missing	up to 1.1.1.1
	external/mit/expat/dist/conftools/expatcfg-compiler-supports-visibility.m4 up to 1.1.1.1
	external/mit/expat/dist/doc/Makefile.am 	up to 1.1.1.1
	external/mit/expat/dist/doc/Makefile.in 	up to 1.1.1.1
	external/mit/expat/dist/examples/Makefile.am	up to 1.1.1.1
	external/mit/expat/dist/examples/Makefile.in	up to 1.1.1.1
	external/mit/expat/dist/lib/Makefile.am 	up to 1.1.1.1
	external/mit/expat/dist/lib/Makefile.in 	up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/Makefile.am up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/Makefile.in up to 1.1.1.1
	external/mit/expat/dist/tests/Makefile.am	up to 1.1.1.1
	external/mit/expat/dist/tests/Makefile.in	up to 1.1.1.1
	external/mit/expat/dist/tests/structdata.c	up to 1.1.1.1
	external/mit/expat/dist/tests/structdata.h	up to 1.1.1.1
	external/mit/expat/dist/tests/udiffer.py	up to 1.1.1.1
	external/mit/expat/dist/tests/xmltest.log.expected up to 1.1.1.1
	external/mit/expat/dist/win32/build_expat_iss.bat up to 1.1.1.1
	external/mit/expat/dist/xmlwf/Makefile.am	up to 1.1.1.1
	external/mit/expat/dist/xmlwf/Makefile.in	up to 1.1.1.1
	external/mit/expat/dist/xmlwf/xmlwf_helpgen.py	up to 1.1.1.1
	external/mit/expat/dist/xmlwf/xmlwf_helpgen.sh	up to 1.1.1.1
	external/mit/expat/dist/Makefile.am		up to 1.1.1.1
	external/mit/expat/dist/README.md		up to 1.1.1.1
	external/mit/expat/dist/cmake/expat-config.cmake.in up to 1.1.1.1
	external/mit/expat/dist/cmake/mingw-toolchain.cmake up to 1.1.1.1
	external/mit/expat/dist/acinclude.m4		up to 1.1.1.1
	external/mit/expat/dist/fix-xmltest-log.sh	up to 1.1.1.1
	external/mit/expat/dist/test-driver-wrapper.sh	up to 1.1.1.1
	external/mit/expat/dist/MANIFEST		delete
	external/mit/expat/dist/README			delete
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4 delete
	external/mit/expat/dist/conftools/mkinstalldirs delete
	external/mit/expat/dist/xmlwf/xmlurl.h		delete
	external/mit/expat/dist/xmlwf/xmlwin32url.cxx	delete
	external/mit/expat/dist/CMake.README		up to 1.1.1.5
	external/mit/expat/dist/CMakeLists.txt		up to 1.1.1.5
	external/mit/expat/dist/Changes 		up to 1.1.1.6
	external/mit/expat/dist/ConfigureChecks.cmake	up to 1.1.1.2
	external/mit/expat/dist/Makefile.in		up to 1.1.1.6
	external/mit/expat/dist/aclocal.m4		up to 1.1.1.4
	external/mit/expat/dist/configure		up to 1.1.1.6
	external/mit/expat/dist/configure.ac		up to 1.1.1.4
	external/mit/expat/dist/expat_config.h.cmake	up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in	up to 1.1.1.6
	external/mit/expat/dist/conftools/config.guess	up to 1.4
	external/mit/expat/dist/conftools/config.sub	up to 1.4
	external/mit/expat/dist/conftools/get-version.sh up to 1.1.1.2
	external/mit/expat/dist/conftools/install-sh	up to 1.1.1.5
	external/mit/expat/dist/conftools/ltmain.sh	up to 1.1.1.5
	external/mit/expat/dist/doc/reference.html	up to 1.1.1.5
	external/mit/expat/dist/doc/xmlwf.1		up to 1.1.1.4
	external/mit/expat/dist/doc/xmlwf.xml		up to 1.1.1.2
	external/mit/expat/dist/examples/elements.c	up to 1.1.1.5
	external/mit/expat/dist/examples/outline.c	up to 1.1.1.4
	external/mit/expat/dist/lib/ascii.h		up to 1.1.1.2
	external/mit/expat/dist/lib/asciitab.h		up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h		up to 1.1.1.6
	external/mit/expat/dist/lib/expat_external.h	up to 1.1.1.4
	external/mit/expat/dist/lib/iasciitab.h 	up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h		up to 1.1.1.3
	external/mit/expat/dist/lib/latin1tab.h 	up to 1.1.1.2
	external/mit/expat/dist/lib/libexpat.def	up to 1.1.1.3
	external/mit/expat/dist/lib/libexpatw.def	up to 1.1.1.3
	external/mit/expat/dist/lib/nametab.h		up to 1.1.1.2
	external/mit/expat/dist/lib/siphash.h		up to 1.1.1.2
	external/mit/expat/dist/lib/utf8tab.h		up to 1.1.1.2
	external/mit/expat/dist/lib/winconfig.h 	up to 1.1.1.3
	external/mit/expat/dist/lib/xmlparse.c		up to 1.8
	external/mit/expat/dist/lib/xmlrole.c		up to 1.1.1.5
	external/mit/expat/dist/lib/xmlrole.h		up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.c		up to 1.5
	external/mit/expat/dist/lib/xmltok.h		up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c	up to 1.6
	external/mit/expat/dist/lib/xmltok_impl.h	up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok_ns.c 	up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c	up to 1.1.1.4
	external/mit/expat/dist/tests/chardata.h	up to 1.1.1.2
	external/mit/expat/dist/tests/memcheck.c	up to 1.1.1.2
	external/mit/expat/dist/tests/memcheck.h	up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.c	up to 1.1.1.4
	external/mit/expat/dist/tests/minicheck.h	up to 1.1.1.5
	external/mit/expat/dist/tests/runtests.c	up to 1.1.1.5
	external/mit/expat/dist/tests/runtestspp.cpp	up to 1.1.1.2
	external/mit/expat/dist/tests/xmltest.sh	up to 1.4
	external/mit/expat/dist/tests/benchmark/benchmark.c up to 1.1.1.3
	external/mit/expat/dist/win32/README.txt	up to 1.1.1.5
	external/mit/expat/dist/win32/expat.iss 	up to 1.1.1.6
	external/mit/expat/dist/xmlwf/codepage.c	up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.h	up to 1.1.1.2
	external/mit/expat/dist/xmlwf/ct.c		up to 1.1.1.2
	external/mit/expat/dist/xmlwf/filemap.h 	up to 1.1.1.3
	external/mit/expat/dist/xmlwf/readfilemap.c	up to 1.1.1.5
	external/mit/expat/dist/xmlwf/unixfilemap.c	up to 1.1.1.4
	external/mit/expat/dist/xmlwf/win32filemap.c	up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c 	up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlfile.h 	up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlmime.c 	up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlmime.h         up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmltchar.h        up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c           up to 1.1.1.6
	external/mit/expat/lib/libexpat/expat_config.h  up to 1.6
	doc/3RDPARTY					1.1649 (patch)
	external/mit/xorg/tools/fc-cache/Makefile	1.18 (patch)

Update expat to 2.2.8.
Define XML_POOR_ENTROPY for the tool version of fc-cache
(we can not assume anything about the build host).
@
text
@d1 153
a153 583
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

cmake_minimum_required(VERSION 3.1.3)

project(expat
    VERSION
        2.2.8
    LANGUAGES
        C
)

set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)

#
# Configuration defaults
#
if(WINCE)
    set(_EXPAT_BUILD_TOOLS_DEFAULT OFF)
else()
    set(_EXPAT_BUILD_TOOLS_DEFAULT ON)
endif()
if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT)
    set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
else()
    find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man)
    if(DOCBOOK_TO_MAN)
        set(_EXPAT_BUILD_DOCS_DEFAULT ON)
    else()
        set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
    endif()
endif()

#
# Configuration
#
option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT})
option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON)
option(EXPAT_BUILD_TESTS "build the tests for expat library" ON)
option(EXPAT_SHARED_LIBS "build a shared expat library" ON)
option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT})
option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF)
option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON)
set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
mark_as_advanced(EXPAT_CONTEXT_BYTES)
option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON)
mark_as_advanced(EXPAT_DTD)
option(EXPAT_NS "Define to make XML Namespaces functionality available" ON)
mark_as_advanced(EXPAT_NS)
option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
if(NOT WIN32 OR _EXPAT_HELP)
    option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON)
    set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING
            "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING
            "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
    mark_as_advanced(EXPAT_DEV_URANDOM)
endif()
set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
mark_as_advanced(EXPAT_ATTR_INFO)
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
mark_as_advanced(EXPAT_LARGE_SIZE)
option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
mark_as_advanced(EXPAT_MIN_SIZE)
if(MSVC OR _EXPAT_HELP)
    set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
endif()

#
# Environment checks
#
if(EXPAT_WITH_LIBBSD)
    find_library(LIB_BSD NAMES bsd)
    if(NOT LIB_BSD)
        message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found")
    else()
        set(HAVE_LIBBSD TRUE)
    endif()
endif()

macro(_expat_copy_bool_int source_ref dest_ref)
    if(${source_ref})
        set(${dest_ref} 1)
    else()
        set(${dest_ref} 0)
    endif()
endmacro()

if(EXPAT_LARGE_SIZE)
    add_definitions(-DXML_LARGE_SIZE)
endif()

if(EXPAT_MIN_SIZE)
    add_definitions(-DXML_MIN_SIZE)
endif()

if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_UNICODE OFF)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
    if(EXPAT_BUILD_TOOLS)
        message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.")
    endif()
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T ON)
else()
    message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".")
endif()

if(_EXPAT_UNICODE)
    add_definitions(-DXML_UNICODE)              # for unsigned short
    if(_EXPAT_UNICODE_WCHAR_T)
        add_definitions(-DXML_UNICODE_WCHAR_T)  # for wchar_t
    endif()
endif()

include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)

macro(evaluate_detection_results use_ref have_ref thing_lower thing_title)
    if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref})
        message(SEND_ERROR
                "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.")
    elseif(NOT ${use_ref} AND ${have_ref})
        message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.")
        set(${have_ref} 0)
    endif()
endmacro()

if(NOT WIN32)
    evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom")
    evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom")
endif()

_expat_copy_bool_int(EXPAT_ATTR_INFO        XML_ATTR_INFO)
_expat_copy_bool_int(EXPAT_DTD              XML_DTD)
_expat_copy_bool_int(EXPAT_LARGE_SIZE       XML_LARGE_SIZE)
_expat_copy_bool_int(EXPAT_MIN_SIZE         XML_MIN_SIZE)
_expat_copy_bool_int(EXPAT_NS               XML_NS)
if(NOT WIN32)
    _expat_copy_bool_int(EXPAT_DEV_URANDOM  XML_DEV_URANDOM)
endif()
set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES})

macro(expat_install)
    if(EXPAT_ENABLE_INSTALL)
        install(${ARGN})
    endif()
endmacro()

configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h")
add_definitions(-DHAVE_EXPAT_CONFIG_H)
expat_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})


set(EXTRA_COMPILE_FLAGS)
if(FLAG_NO_STRICT_ALIASING)
    set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing")
endif()
if(FLAG_VISIBILITY)
  add_definitions(-DXML_ENABLE_VISIBILITY=1)
  set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden")
endif(FLAG_VISIBILITY)
if (EXPAT_WARNINGS_AS_ERRORS)
    if(MSVC)
        add_definitions(/WX)
    else(MSVC)
        set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror")
    endif(MSVC)
endif(EXPAT_WARNINGS_AS_ERRORS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}")

if (MSVC)
    if (EXPAT_MSVC_STATIC_CRT)
        message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}")
        foreach(flag_var
                CMAKE_CXX_FLAGS_DEBUG
                CMAKE_CXX_FLAGS_RELEASE
                CMAKE_CXX_FLAGS_MINSIZEREL
                CMAKE_CXX_FLAGS_RELWITHDEBINFO
                CMAKE_C_FLAGS_DEBUG
                CMAKE_C_FLAGS_RELEASE
                CMAKE_C_FLAGS_MINSIZEREL
                CMAKE_C_FLAGS_RELWITHDEBINFO
                )
            string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
        endforeach()
    endif()
endif()

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)
if(WIN32)
    if(_EXPAT_UNICODE_WCHAR_T)
        set(_POSTFIX_WIDE "w")
    endif()

    if(MSVC AND NOT EXPAT_SHARED_LIBS)
        if(EXPAT_MSVC_STATIC_CRT)
            set(_POSTFIX_CRT "MT")
        else()
            set(_POSTFIX_CRT "MD")
        endif()
    endif()

    foreach(postfix_var
            CMAKE_DEBUG_POSTFIX
            CMAKE_RELEASE_POSTFIX
            CMAKE_MINSIZEREL_POSTFIX
            CMAKE_RELWITHDEBINFO_POSTFIX
            )
        if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX")
            set(_POSTFIX_DEBUG "d")
        else()
            set(_POSTFIX_DEBUG "")
        endif()

        set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. expat<postfix=[w][d][MD|MT]>.lib")
    endforeach()
endif(WIN32)

#
# C library
#
set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c
# NOTE: ISO C forbids an empty translation unit
#   lib/xmltok_impl.c
#   lib/xmltok_ns.c
)

if(EXPAT_SHARED_LIBS)
    set(_SHARED SHARED)
    if(MSVC)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(MSVC)
else(EXPAT_SHARED_LIBS)
    set(_SHARED STATIC)
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
endif(EXPAT_SHARED_LIBS)

add_library(expat ${_SHARED} ${expat_SRCS})
if(EXPAT_WITH_LIBBSD)
    target_link_libraries(expat ${LIB_BSD})
endif()

set(LIBCURRENT 7)    # sync
set(LIBREVISION 10)  # with
set(LIBAGE 6)        # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

expat_install(TARGETS expat EXPORT expat
                      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#
# pkg-config file
#
if(NOT MSVC)
    set(prefix ${CMAKE_INSTALL_PREFIX})
    set(exec_prefix "\${prefix}")
    set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
    set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
    configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @@ONLY)
    expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()

#
# C command line tool xmlwf
#
if(EXPAT_BUILD_TOOLS)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR})

    if(MINGW AND _EXPAT_UNICODE_WCHAR_T)
        # https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html
        set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode)
    endif()

    if(EXPAT_BUILD_DOCS)
        file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
        add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1")
        expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
    endif()
endif()

#
# C code examples
#
if(EXPAT_BUILD_EXAMPLES)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(EXPAT_BUILD_EXAMPLES)

#
# C/C++ test runners
#
if(EXPAT_BUILD_TESTS)
    ## these are unittests that can be run on any platform
    enable_language(CXX)
    enable_testing()

    set(test_SRCS
        tests/chardata.c
        tests/memcheck.c
        tests/minicheck.c
        tests/structdata.c
    )

    if(NOT MSVC)
        if(MINGW)
            set(host whatever-mingw32)  # for nothing but run.sh
        endif()
        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run.sh.in run.sh @@ONLY)
    endif()

    function(expat_add_test _name _file)
        if(MSVC)
            add_test(NAME ${_name} COMMAND ${_file})
        else()
            add_test(NAME ${_name} COMMAND bash run.sh ${_file})
        endif()
    endfunction()

    add_executable(runtests tests/runtests.c ${test_SRCS})
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    expat_add_test(runtests $<TARGET_FILE:runtests>)

    add_executable(runtestspp tests/runtestspp.cpp ${test_SRCS})
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    expat_add_test(runtestspp $<TARGET_FILE:runtestspp>)
endif(EXPAT_BUILD_TESTS)

if(EXPAT_BUILD_FUZZERS)
    if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
        message(SEND_ERROR
            "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) "
            "is not supported. Please set "
            "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.")
    endif()

    string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "-fsanitize" sanitizer_present)
    if(${sanitizer_present} EQUAL "-1")
        message(WARNING
            "There was no sanitizer present when building the fuzz targets. "
            "This is likely in error - consider adding "
            "-DCMAKE_C_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_CXX_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_STATIC_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=<sanitizer>' to your cmake "
            "execution.")
    endif()

    set(encoding_types UTF-16 UTF-8 ISO-8859-1 US-ASCII UTF-16BE UTF-16LE)
    set(fuzz_targets xml_parse_fuzzer xml_parsebuffer_fuzzer)

    add_library(fuzzpat STATIC ${expat_SRCS})
    target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link)

    foreach(fuzz_target ${fuzz_targets})
        foreach(encoding_type ${encoding_types})
            set(target_name ${fuzz_target}_${encoding_type})
            add_executable(${target_name} fuzz/${fuzz_target}.c)
            target_link_libraries(${target_name} fuzzpat)
            target_compile_definitions(${target_name}
                PRIVATE ENCODING_FOR_FUZZING=${encoding_type})
            target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link)
            # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13
            set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
            set_property(
                TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
        endforeach()
    endforeach()
endif(EXPAT_BUILD_FUZZERS)

#
# Custom target "run-xmltest"
#
if(EXPAT_BUILD_TOOLS AND NOT MSVC)
    add_custom_target(
        xmlts-zip-downloaded
        COMMAND
            sh -c 'test -f xmlts.zip || wget --output-document=xmlts.zip https://www.w3.org/XML/Test/xmlts20080827.zip'
        BYPRODUCTS
            tests/xmlts.zip
        WORKING_DIRECTORY
            tests/)

    add_custom_target(
        xmlts-zip-extracted
        COMMAND
            sh -c 'test -d xmlconf || unzip -q xmlts.zip'
        BYPRODUCTS
            tests/xmlconf
        WORKING_DIRECTORY
            tests/)
    add_dependencies(xmlts-zip-extracted xmlts-zip-downloaded)

    add_custom_target(
        xmltest-sh-been-run
        COMMAND
            sh -c '${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.sh "bash ${CMAKE_CURRENT_BINARY_DIR}/run.sh $<TARGET_FILE:xmlwf>" 2>&1 | tee tests/xmltest.log'
        BYPRODUCTS
            tests/xmltest.log)
    add_dependencies(xmltest-sh-been-run xmlts-zip-extracted xmlwf)

    add_custom_target(
        xmltest-log-fixed
        COMMAND
            ${CMAKE_CURRENT_SOURCE_DIR}/fix-xmltest-log.sh tests/xmltest.log
        DEPENDS
            tests/xmltest.log)
    add_dependencies(xmltest-log-fixed xmltest-sh-been-run)

    add_custom_target(
        xmltest-log-verified
        COMMAND
            diff -u ${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.log.expected tests/xmltest.log)
    add_dependencies(xmltest-log-verified xmltest-log-fixed)

    add_custom_target(run-xmltest)
    add_dependencies(run-xmltest xmltest-log-verified)
endif()

#
# Documentation
#
configure_file(Changes changelog COPYONLY)
expat_install(
    FILES
        AUTHORS
        ${CMAKE_CURRENT_BINARY_DIR}/changelog
    DESTINATION
        ${CMAKE_INSTALL_DOCDIR})

#
# CMake files for find_package(expat [..] CONFIG [..])
#
configure_package_config_file(
        cmake/expat-config.cmake.in
        cmake/expat-config.cmake
    INSTALL_DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
write_basic_package_version_file(
    cmake/expat-config-version.cmake
    COMPATIBILITY SameMajorVersion  # i.e. semver
)
export(
    TARGETS
        expat
    FILE
        cmake/expat-targets.cmake  # not going to be installed
)
expat_install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config-version.cmake
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
expat_install(
    EXPORT
        expat
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
    NAMESPACE
        expat::
)

#
# Summary
#
if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)")
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)")
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    if(WIN32)
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)")
    else()
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32)  // not implemented")
    endif()
else()
    set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR")
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)

message(STATUS "===========================================================================")
message(STATUS "")
message(STATUS "Configuration")
message(STATUS "  Prefix ..................... ${CMAKE_INSTALL_PREFIX}")
message(STATUS "  Build type ................. ${CMAKE_BUILD_TYPE}")
message(STATUS "  Shared libraries ........... ${EXPAT_SHARED_LIBS}")
if(MSVC)
    message(STATUS "  Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
endif()
message(STATUS "  Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}")
if(WIN32)
    message(STATUS "  Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
endif()
message(STATUS "")
message(STATUS "  Build documentation ........ ${EXPAT_BUILD_DOCS}")
message(STATUS "  Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
message(STATUS "  Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}")
message(STATUS "  Build tests ................ ${EXPAT_BUILD_TESTS}")
message(STATUS "  Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}")
message(STATUS "  Install files .............. ${EXPAT_ENABLE_INSTALL}")
message(STATUS "")
message(STATUS "  Features")
message(STATUS "    // Advanced options, changes not advised")
message(STATUS "    Attributes info .......... ${EXPAT_ATTR_INFO}")
message(STATUS "    Context bytes ............ ${EXPAT_CONTEXT_BYTES}")
message(STATUS "    DTD support .............. ${EXPAT_DTD}")
message(STATUS "    Large size ............... ${EXPAT_LARGE_SIZE}")
message(STATUS "    Minimum size ............. ${EXPAT_MIN_SIZE}")
message(STATUS "    Namespace support ........ ${EXPAT_NS}")
message(STATUS "")
message(STATUS "  Entropy sources")
if(WIN32)
    message(STATUS "    rand_s ................... ON")
else()
    message(STATUS "    getrandom ................ ${HAVE_GETRANDOM}")
    message(STATUS "    syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
    message(STATUS "    libbsd ................... ${EXPAT_WITH_LIBBSD}")
    message(STATUS "    /dev/random .............. ${EXPAT_DEV_URANDOM}")
endif()
message(STATUS "")
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
    message(STATUS "Continue with")
    message(STATUS "  make")
    if(EXPAT_BUILD_TESTS)
        message(STATUS "  make test")
    endif()
    if(EXPAT_ENABLE_INSTALL)
        message(STATUS "  sudo make install")
    endif()
    message(STATUS "")
endif()
message(STATUS "===========================================================================")
@


1.1.1.4
log
@Release 2.2.1 Sat June 17 2017
        Security fixes:
                  CVE-2017-9233 -- External entity infinite loop DoS
                    Details: https://libexpat.github.io/doc/cve-2017-9233/
                    Commit c4bf96bb51dd2a1b0e185374362ee136fe2c9d7f
   [MOX-002]      CVE-2016-9063 -- Detect integer overflow; commit
                    d4f735b88d9932bd5039df2335eefdd0723dbe20
                    (Fixed version of existing downstream patches!)
   (SF.net) #539  Fix regression from fix to CVE-2016-0718 cutting off
                    longer tag names; commits
                    * 896b6c1fd3b842f377d1b62135dccf0a579cf65d
                    * af507cef2c93cb8d40062a0abe43a4f4e9158fb2
             #16    * 0dbbf43fdb20f593ddf4fa1ff67288000dd4a7fd
             #25  More integer overflow detection (function poolGrow); commits
                    * 810b74e4703dcfdd8f404e3cb177d44684775143
                    * 44178553f3539ce69d34abee77a05e879a7982ac
   [MOX-002]      Detect overflow from len=INT_MAX call to XML_Parse; commits
                    * 4be2cb5afcc018d996f34bbbce6374b7befad47f
                    * 7e5b71b748491b6e459e5c9a1d090820f94544d8
   [MOX-005] #30  Use high quality entropy for hash initialization:
                    * arc4random_buf on BSD, systems with libbsd
                      (when configured with --with-libbsd), CloudABI
                    * RtlGenRandom on Windows XP / Server 2003 and later
                    * getrandom on Linux 3.17+
                    In a way, that's still part of CVE-2016-5300.
                    https://github.com/libexpat/libexpat/pull/30/commits
   [MOX-005]      For the low quality entropy extraction fallback code,
                    the parser instance address can no longer leak, commit
                    04ad658bd3079dd15cb60fc67087900f0ff4b083
   [MOX-003]      Prevent use of uninitialised variable; commit
   [MOX-004]        a4dc944f37b664a3ca7199c624a98ee37babdb4b
                  Add missing parameter validation to public API functions
                    and dedicated error code XML_ERROR_INVALID_ARGUMENT:
   [MOX-006]        * NULL checks; commits
                      * d37f74b2b7149a3a95a680c4c4cd2a451a51d60a (merge/many)
                      * 9ed727064b675b7180c98cb3d4f75efba6966681
                      * 6a747c837c50114dfa413994e07c0ba477be4534
                    * Negative length (XML_Parse); commit
   [MOX-002]          70db8d2538a10f4c022655d6895e4c3e78692e7f
   [MOX-001] #35  Change hash algorithm to William Ahern's version of SipHash
                    to go further with fixing CVE-2012-0876.
                    https://github.com/libexpat/libexpat/pull/39/commits

        Bug fixes:
             #32  Fix sharing of hash salt across parsers;
                    relevant where XML_ExternalEntityParserCreate is called
                    prior to XML_Parse, in particular (e.g. FBReader)
             #28  xmlwf: Auto-disable use of memory-mapping (and parsing
                    as a single chunk) for files larger than ~1 GB (2^30 bytes)
                    rather than failing with error "out of memory"
              #3  Fix double free after malloc failure in DTD code; commit
                    7ae9c3d3af433cd4defe95234eae7dc8ed15637f
             #17  Fix memory leak on parser error for unbound XML attribute
                    prefix with new namespaces defined in the same tag;
                    found by Google's OSS-Fuzz; commits
                    * 16f87daae5a16132e479e4f71862128c7a915c73
                    * b47dbc9745932c160893d433220e462bd605f8cd
                  xmlwf on Windows: Add missing calls to CloseHandle

        New features:
             #30  Introduced environment switch EXPAT_ENTROPY_DEBUG=1
                    for runtime debugging of entropy extraction

        Other changes:
                  Increase code coverage
             #33  Reject use of XML_UNICODE_WCHAR_T with sizeof(wchar_t) != 2;
                    XML_UNICODE_WCHAR_T was never meant to be used outside
                    of Windows; 4-byte wchar_t is common on Linux
   (SF.net) #538  Start using -fno-strict-aliasing
   (SF.net) #540  Support compilation against cloudlibc of CloudABI
                  Allow MinGW cross-compilation
   (SF.net) #534  CMake: Introduce option "BUILD_doc" (enabled by default)
                    to bypass compilation of the xmlwf.1 man page
   (SF.net)  pr2  CMake: Introduce option "INSTALL" (enabled by default)
                    to bypass installation of expat files
                  CMake: Fix ninja support
                  Autotools: Add parameters --enable-xml-context [COUNT]
                    and --disable-xml-context; default of context of 1024
                    bytes enabled unchanged
             #14  Drop AmigaOS 4.x code and includes
             #14  Drop ancient build systems:
                    * Borland C++ Builder
                    * OpenVMS
                    * Open Watcom
                    * Visual Studio 6.0
                    * Pre-X Mac OS (MPW Makefile)
                    If you happen to rely on some of these, please get in
                    touch for joining with maintenance.
             #10  Move from WIN32 to _WIN32
             #13  Fix "make run-xmltest" order instability
                  Address compile warnings
                  Bump version info from 7:2:6 to 7:3:6
                  Add AUTHORS file

        Infrastructure:
              #1  Migrate from SourceForge to GitHub (except downloads):
                    https://github.com/libexpat/
              #1  Re-create http://libexpat.org/ project website
                  Start utilizing Travis CI

        Special thanks to:
            Andy Wang
            Don Lewis
            Ed Schouten
            Karl Waclawek
            Pascal Cuoq
            Rhodri James
            Sergei Nikulov
            Tobias Taschner
            Viktor Szakats
                 and
            Core Infrastructure Initiative
            Mozilla Foundation (MOSS Track 3: Secure Open Source)
            Radically Open Security
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.4.6.1
log
@Mostly merge changes from HEAD upto 20200411
@
text
@d1 153
a153 583
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

cmake_minimum_required(VERSION 3.1.3)

project(expat
    VERSION
        2.2.8
    LANGUAGES
        C
)

set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)

#
# Configuration defaults
#
if(WINCE)
    set(_EXPAT_BUILD_TOOLS_DEFAULT OFF)
else()
    set(_EXPAT_BUILD_TOOLS_DEFAULT ON)
endif()
if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT)
    set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
else()
    find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man)
    if(DOCBOOK_TO_MAN)
        set(_EXPAT_BUILD_DOCS_DEFAULT ON)
    else()
        set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
    endif()
endif()

#
# Configuration
#
option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT})
option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON)
option(EXPAT_BUILD_TESTS "build the tests for expat library" ON)
option(EXPAT_SHARED_LIBS "build a shared expat library" ON)
option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT})
option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF)
option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON)
set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
mark_as_advanced(EXPAT_CONTEXT_BYTES)
option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON)
mark_as_advanced(EXPAT_DTD)
option(EXPAT_NS "Define to make XML Namespaces functionality available" ON)
mark_as_advanced(EXPAT_NS)
option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
if(NOT WIN32 OR _EXPAT_HELP)
    option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON)
    set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING
            "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING
            "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
    mark_as_advanced(EXPAT_DEV_URANDOM)
endif()
set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
mark_as_advanced(EXPAT_ATTR_INFO)
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
mark_as_advanced(EXPAT_LARGE_SIZE)
option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
mark_as_advanced(EXPAT_MIN_SIZE)
if(MSVC OR _EXPAT_HELP)
    set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
endif()

#
# Environment checks
#
if(EXPAT_WITH_LIBBSD)
    find_library(LIB_BSD NAMES bsd)
    if(NOT LIB_BSD)
        message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found")
    else()
        set(HAVE_LIBBSD TRUE)
    endif()
endif()

macro(_expat_copy_bool_int source_ref dest_ref)
    if(${source_ref})
        set(${dest_ref} 1)
    else()
        set(${dest_ref} 0)
    endif()
endmacro()

if(EXPAT_LARGE_SIZE)
    add_definitions(-DXML_LARGE_SIZE)
endif()

if(EXPAT_MIN_SIZE)
    add_definitions(-DXML_MIN_SIZE)
endif()

if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_UNICODE OFF)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
    if(EXPAT_BUILD_TOOLS)
        message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.")
    endif()
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T ON)
else()
    message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".")
endif()

if(_EXPAT_UNICODE)
    add_definitions(-DXML_UNICODE)              # for unsigned short
    if(_EXPAT_UNICODE_WCHAR_T)
        add_definitions(-DXML_UNICODE_WCHAR_T)  # for wchar_t
    endif()
endif()

include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)

macro(evaluate_detection_results use_ref have_ref thing_lower thing_title)
    if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref})
        message(SEND_ERROR
                "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.")
    elseif(NOT ${use_ref} AND ${have_ref})
        message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.")
        set(${have_ref} 0)
    endif()
endmacro()

if(NOT WIN32)
    evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom")
    evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom")
endif()

_expat_copy_bool_int(EXPAT_ATTR_INFO        XML_ATTR_INFO)
_expat_copy_bool_int(EXPAT_DTD              XML_DTD)
_expat_copy_bool_int(EXPAT_LARGE_SIZE       XML_LARGE_SIZE)
_expat_copy_bool_int(EXPAT_MIN_SIZE         XML_MIN_SIZE)
_expat_copy_bool_int(EXPAT_NS               XML_NS)
if(NOT WIN32)
    _expat_copy_bool_int(EXPAT_DEV_URANDOM  XML_DEV_URANDOM)
endif()
set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES})

macro(expat_install)
    if(EXPAT_ENABLE_INSTALL)
        install(${ARGN})
    endif()
endmacro()

configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h")
add_definitions(-DHAVE_EXPAT_CONFIG_H)
expat_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})


set(EXTRA_COMPILE_FLAGS)
if(FLAG_NO_STRICT_ALIASING)
    set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing")
endif()
if(FLAG_VISIBILITY)
  add_definitions(-DXML_ENABLE_VISIBILITY=1)
  set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden")
endif(FLAG_VISIBILITY)
if (EXPAT_WARNINGS_AS_ERRORS)
    if(MSVC)
        add_definitions(/WX)
    else(MSVC)
        set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror")
    endif(MSVC)
endif(EXPAT_WARNINGS_AS_ERRORS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}")

if (MSVC)
    if (EXPAT_MSVC_STATIC_CRT)
        message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}")
        foreach(flag_var
                CMAKE_CXX_FLAGS_DEBUG
                CMAKE_CXX_FLAGS_RELEASE
                CMAKE_CXX_FLAGS_MINSIZEREL
                CMAKE_CXX_FLAGS_RELWITHDEBINFO
                CMAKE_C_FLAGS_DEBUG
                CMAKE_C_FLAGS_RELEASE
                CMAKE_C_FLAGS_MINSIZEREL
                CMAKE_C_FLAGS_RELWITHDEBINFO
                )
            string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
        endforeach()
    endif()
endif()

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)
if(WIN32)
    if(_EXPAT_UNICODE_WCHAR_T)
        set(_POSTFIX_WIDE "w")
    endif()

    if(MSVC AND NOT EXPAT_SHARED_LIBS)
        if(EXPAT_MSVC_STATIC_CRT)
            set(_POSTFIX_CRT "MT")
        else()
            set(_POSTFIX_CRT "MD")
        endif()
    endif()

    foreach(postfix_var
            CMAKE_DEBUG_POSTFIX
            CMAKE_RELEASE_POSTFIX
            CMAKE_MINSIZEREL_POSTFIX
            CMAKE_RELWITHDEBINFO_POSTFIX
            )
        if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX")
            set(_POSTFIX_DEBUG "d")
        else()
            set(_POSTFIX_DEBUG "")
        endif()

        set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. expat<postfix=[w][d][MD|MT]>.lib")
    endforeach()
endif(WIN32)

#
# C library
#
set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c
# NOTE: ISO C forbids an empty translation unit
#   lib/xmltok_impl.c
#   lib/xmltok_ns.c
)

if(EXPAT_SHARED_LIBS)
    set(_SHARED SHARED)
    if(MSVC)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(MSVC)
else(EXPAT_SHARED_LIBS)
    set(_SHARED STATIC)
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
endif(EXPAT_SHARED_LIBS)

add_library(expat ${_SHARED} ${expat_SRCS})
if(EXPAT_WITH_LIBBSD)
    target_link_libraries(expat ${LIB_BSD})
endif()

set(LIBCURRENT 7)    # sync
set(LIBREVISION 10)  # with
set(LIBAGE 6)        # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

expat_install(TARGETS expat EXPORT expat
                      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#
# pkg-config file
#
if(NOT MSVC)
    set(prefix ${CMAKE_INSTALL_PREFIX})
    set(exec_prefix "\${prefix}")
    set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
    set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
    configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @@ONLY)
    expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()

#
# C command line tool xmlwf
#
if(EXPAT_BUILD_TOOLS)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR})

    if(MINGW AND _EXPAT_UNICODE_WCHAR_T)
        # https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html
        set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode)
    endif()

    if(EXPAT_BUILD_DOCS)
        file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
        add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1")
        expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
    endif()
endif()

#
# C code examples
#
if(EXPAT_BUILD_EXAMPLES)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(EXPAT_BUILD_EXAMPLES)

#
# C/C++ test runners
#
if(EXPAT_BUILD_TESTS)
    ## these are unittests that can be run on any platform
    enable_language(CXX)
    enable_testing()

    set(test_SRCS
        tests/chardata.c
        tests/memcheck.c
        tests/minicheck.c
        tests/structdata.c
    )

    if(NOT MSVC)
        if(MINGW)
            set(host whatever-mingw32)  # for nothing but run.sh
        endif()
        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run.sh.in run.sh @@ONLY)
    endif()

    function(expat_add_test _name _file)
        if(MSVC)
            add_test(NAME ${_name} COMMAND ${_file})
        else()
            add_test(NAME ${_name} COMMAND bash run.sh ${_file})
        endif()
    endfunction()

    add_executable(runtests tests/runtests.c ${test_SRCS})
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    expat_add_test(runtests $<TARGET_FILE:runtests>)

    add_executable(runtestspp tests/runtestspp.cpp ${test_SRCS})
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    expat_add_test(runtestspp $<TARGET_FILE:runtestspp>)
endif(EXPAT_BUILD_TESTS)

if(EXPAT_BUILD_FUZZERS)
    if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
        message(SEND_ERROR
            "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) "
            "is not supported. Please set "
            "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.")
    endif()

    string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "-fsanitize" sanitizer_present)
    if(${sanitizer_present} EQUAL "-1")
        message(WARNING
            "There was no sanitizer present when building the fuzz targets. "
            "This is likely in error - consider adding "
            "-DCMAKE_C_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_CXX_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_STATIC_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=<sanitizer>' to your cmake "
            "execution.")
    endif()

    set(encoding_types UTF-16 UTF-8 ISO-8859-1 US-ASCII UTF-16BE UTF-16LE)
    set(fuzz_targets xml_parse_fuzzer xml_parsebuffer_fuzzer)

    add_library(fuzzpat STATIC ${expat_SRCS})
    target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link)

    foreach(fuzz_target ${fuzz_targets})
        foreach(encoding_type ${encoding_types})
            set(target_name ${fuzz_target}_${encoding_type})
            add_executable(${target_name} fuzz/${fuzz_target}.c)
            target_link_libraries(${target_name} fuzzpat)
            target_compile_definitions(${target_name}
                PRIVATE ENCODING_FOR_FUZZING=${encoding_type})
            target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link)
            # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13
            set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
            set_property(
                TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
        endforeach()
    endforeach()
endif(EXPAT_BUILD_FUZZERS)

#
# Custom target "run-xmltest"
#
if(EXPAT_BUILD_TOOLS AND NOT MSVC)
    add_custom_target(
        xmlts-zip-downloaded
        COMMAND
            sh -c 'test -f xmlts.zip || wget --output-document=xmlts.zip https://www.w3.org/XML/Test/xmlts20080827.zip'
        BYPRODUCTS
            tests/xmlts.zip
        WORKING_DIRECTORY
            tests/)

    add_custom_target(
        xmlts-zip-extracted
        COMMAND
            sh -c 'test -d xmlconf || unzip -q xmlts.zip'
        BYPRODUCTS
            tests/xmlconf
        WORKING_DIRECTORY
            tests/)
    add_dependencies(xmlts-zip-extracted xmlts-zip-downloaded)

    add_custom_target(
        xmltest-sh-been-run
        COMMAND
            sh -c '${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.sh "bash ${CMAKE_CURRENT_BINARY_DIR}/run.sh $<TARGET_FILE:xmlwf>" 2>&1 | tee tests/xmltest.log'
        BYPRODUCTS
            tests/xmltest.log)
    add_dependencies(xmltest-sh-been-run xmlts-zip-extracted xmlwf)

    add_custom_target(
        xmltest-log-fixed
        COMMAND
            ${CMAKE_CURRENT_SOURCE_DIR}/fix-xmltest-log.sh tests/xmltest.log
        DEPENDS
            tests/xmltest.log)
    add_dependencies(xmltest-log-fixed xmltest-sh-been-run)

    add_custom_target(
        xmltest-log-verified
        COMMAND
            diff -u ${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.log.expected tests/xmltest.log)
    add_dependencies(xmltest-log-verified xmltest-log-fixed)

    add_custom_target(run-xmltest)
    add_dependencies(run-xmltest xmltest-log-verified)
endif()

#
# Documentation
#
configure_file(Changes changelog COPYONLY)
expat_install(
    FILES
        AUTHORS
        ${CMAKE_CURRENT_BINARY_DIR}/changelog
    DESTINATION
        ${CMAKE_INSTALL_DOCDIR})

#
# CMake files for find_package(expat [..] CONFIG [..])
#
configure_package_config_file(
        cmake/expat-config.cmake.in
        cmake/expat-config.cmake
    INSTALL_DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
write_basic_package_version_file(
    cmake/expat-config-version.cmake
    COMPATIBILITY SameMajorVersion  # i.e. semver
)
export(
    TARGETS
        expat
    FILE
        cmake/expat-targets.cmake  # not going to be installed
)
expat_install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config-version.cmake
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
expat_install(
    EXPORT
        expat
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
    NAMESPACE
        expat::
)

#
# Summary
#
if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)")
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)")
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    if(WIN32)
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)")
    else()
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32)  // not implemented")
    endif()
else()
    set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR")
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)

message(STATUS "===========================================================================")
message(STATUS "")
message(STATUS "Configuration")
message(STATUS "  Prefix ..................... ${CMAKE_INSTALL_PREFIX}")
message(STATUS "  Build type ................. ${CMAKE_BUILD_TYPE}")
message(STATUS "  Shared libraries ........... ${EXPAT_SHARED_LIBS}")
if(MSVC)
    message(STATUS "  Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
endif()
message(STATUS "  Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}")
if(WIN32)
    message(STATUS "  Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
endif()
message(STATUS "")
message(STATUS "  Build documentation ........ ${EXPAT_BUILD_DOCS}")
message(STATUS "  Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
message(STATUS "  Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}")
message(STATUS "  Build tests ................ ${EXPAT_BUILD_TESTS}")
message(STATUS "  Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}")
message(STATUS "  Install files .............. ${EXPAT_ENABLE_INSTALL}")
message(STATUS "")
message(STATUS "  Features")
message(STATUS "    // Advanced options, changes not advised")
message(STATUS "    Attributes info .......... ${EXPAT_ATTR_INFO}")
message(STATUS "    Context bytes ............ ${EXPAT_CONTEXT_BYTES}")
message(STATUS "    DTD support .............. ${EXPAT_DTD}")
message(STATUS "    Large size ............... ${EXPAT_LARGE_SIZE}")
message(STATUS "    Minimum size ............. ${EXPAT_MIN_SIZE}")
message(STATUS "    Namespace support ........ ${EXPAT_NS}")
message(STATUS "")
message(STATUS "  Entropy sources")
if(WIN32)
    message(STATUS "    rand_s ................... ON")
else()
    message(STATUS "    getrandom ................ ${HAVE_GETRANDOM}")
    message(STATUS "    syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
    message(STATUS "    libbsd ................... ${EXPAT_WITH_LIBBSD}")
    message(STATUS "    /dev/random .............. ${EXPAT_DEV_URANDOM}")
endif()
message(STATUS "")
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
    message(STATUS "Continue with")
    message(STATUS "  make")
    if(EXPAT_BUILD_TESTS)
        message(STATUS "  make test")
    endif()
    if(EXPAT_ENABLE_INSTALL)
        message(STATUS "  sudo make install")
    endif()
    message(STATUS "")
endif()
message(STATUS "===========================================================================")
@


1.1.1.4.8.1
log
@Sync to current and pull up the following revisions, requested by maya
in ticket #206:

	external/mit/expat/dist/conftools/test-driver   up to 1.1.1.1
	external/mit/expat/dist/conftools/ar-lib        up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-compile-flags.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-append-link-flags.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-check-compile-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-check-link-flag.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/ax-require-defined.m4 up to 1.1.1.1
	external/mit/expat/dist/conftools/compile       up to 1.1.1.1
	external/mit/expat/dist/conftools/depcomp       up to 1.1.1.1
	external/mit/expat/dist/conftools/missing       up to 1.1.1.1
	external/mit/expat/dist/conftools/expatcfg-compiler-supports-visibility.m4 up to 1.1.1.1
	external/mit/expat/dist/doc/Makefile.am         up to 1.1.1.1
	external/mit/expat/dist/doc/Makefile.in         up to 1.1.1.1
	external/mit/expat/dist/examples/Makefile.am    up to 1.1.1.1
	external/mit/expat/dist/examples/Makefile.in    up to 1.1.1.1
	external/mit/expat/dist/lib/Makefile.am         up to 1.1.1.1
	external/mit/expat/dist/lib/Makefile.in         up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/Makefile.am up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/Makefile.in up to 1.1.1.1
	external/mit/expat/dist/tests/Makefile.am       up to 1.1.1.1
	external/mit/expat/dist/tests/Makefile.in       up to 1.1.1.1
	external/mit/expat/dist/tests/structdata.c      up to 1.1.1.1
	external/mit/expat/dist/tests/structdata.h      up to 1.1.1.1
	external/mit/expat/dist/tests/udiffer.py        up to 1.1.1.1
	external/mit/expat/dist/tests/xmltest.log.expected up to 1.1.1.1
	external/mit/expat/dist/win32/build_expat_iss.bat up to 1.1.1.1
	external/mit/expat/dist/xmlwf/Makefile.am       up to 1.1.1.1
	external/mit/expat/dist/xmlwf/Makefile.in       up to 1.1.1.1
	external/mit/expat/dist/xmlwf/xmlwf_helpgen.py  up to 1.1.1.1
	external/mit/expat/dist/xmlwf/xmlwf_helpgen.sh  up to 1.1.1.1
	external/mit/expat/dist/Makefile.am             up to 1.1.1.1
	external/mit/expat/dist/README.md               up to 1.1.1.1
	external/mit/expat/dist/cmake/expat-config.cmake.in up to 1.1.1.1
	external/mit/expat/dist/cmake/mingw-toolchain.cmake up to 1.1.1.1
	external/mit/expat/dist/acinclude.m4            up to 1.1.1.1
	external/mit/expat/dist/fix-xmltest-log.sh      up to 1.1.1.1
	external/mit/expat/dist/test-driver-wrapper.sh  up to 1.1.1.1
	external/mit/expat/dist/MANIFEST                delete
	external/mit/expat/dist/README                  delete
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4 delete
	external/mit/expat/dist/conftools/mkinstalldirs delete
	external/mit/expat/dist/xmlwf/xmlurl.h          delete
	external/mit/expat/dist/xmlwf/xmlwin32url.cxx   delete
	external/mit/expat/dist/CMake.README            up to 1.1.1.5
	external/mit/expat/dist/CMakeLists.txt          up to 1.1.1.5
	external/mit/expat/dist/Changes                 up to 1.1.1.6
	external/mit/expat/dist/ConfigureChecks.cmake   up to 1.1.1.2
	external/mit/expat/dist/Makefile.in             up to 1.1.1.6
	external/mit/expat/dist/aclocal.m4              up to 1.1.1.4
	external/mit/expat/dist/configure               up to 1.1.1.6
	external/mit/expat/dist/configure.ac            up to 1.1.1.4
	external/mit/expat/dist/expat_config.h.cmake    up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in       up to 1.1.1.6
	external/mit/expat/dist/conftools/config.guess  up to 1.4
	external/mit/expat/dist/conftools/config.sub    up to 1.4
	external/mit/expat/dist/conftools/get-version.sh up to 1.1.1.2
	external/mit/expat/dist/conftools/install-sh    up to 1.1.1.5
	external/mit/expat/dist/conftools/ltmain.sh     up to 1.1.1.5
	external/mit/expat/dist/doc/reference.html      up to 1.1.1.5
	external/mit/expat/dist/doc/xmlwf.1             up to 1.1.1.4
	external/mit/expat/dist/doc/xmlwf.xml           up to 1.1.1.2
	external/mit/expat/dist/examples/elements.c     up to 1.1.1.5
	external/mit/expat/dist/examples/outline.c      up to 1.1.1.4
	external/mit/expat/dist/lib/ascii.h             up to 1.1.1.2
	external/mit/expat/dist/lib/asciitab.h          up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h             up to 1.1.1.6
	external/mit/expat/dist/lib/expat_external.h    up to 1.1.1.4
	external/mit/expat/dist/lib/iasciitab.h         up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h          up to 1.1.1.3
	external/mit/expat/dist/lib/latin1tab.h         up to 1.1.1.2
	external/mit/expat/dist/lib/libexpat.def        up to 1.1.1.3
	external/mit/expat/dist/lib/libexpatw.def       up to 1.1.1.3
	external/mit/expat/dist/lib/nametab.h           up to 1.1.1.2
	external/mit/expat/dist/lib/siphash.h           up to 1.1.1.2
	external/mit/expat/dist/lib/utf8tab.h           up to 1.1.1.2
	external/mit/expat/dist/lib/winconfig.h         up to 1.1.1.3
	external/mit/expat/dist/lib/xmlparse.c          up to 1.8
	external/mit/expat/dist/lib/xmlrole.c           up to 1.1.1.5
	external/mit/expat/dist/lib/xmlrole.h           up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.c            up to 1.5
	external/mit/expat/dist/lib/xmltok.h            up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c       up to 1.6
	external/mit/expat/dist/lib/xmltok_impl.h       up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok_ns.c         up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c        up to 1.1.1.4
	external/mit/expat/dist/tests/chardata.h        up to 1.1.1.2
	external/mit/expat/dist/tests/memcheck.c        up to 1.1.1.2
	external/mit/expat/dist/tests/memcheck.h        up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.c       up to 1.1.1.4
	external/mit/expat/dist/tests/minicheck.h       up to 1.1.1.5
	external/mit/expat/dist/tests/runtests.c        up to 1.1.1.5
	external/mit/expat/dist/tests/runtestspp.cpp    up to 1.1.1.2
	external/mit/expat/dist/tests/xmltest.sh        up to 1.4
	external/mit/expat/dist/tests/benchmark/benchmark.c up to 1.1.1.3
	external/mit/expat/dist/win32/README.txt        up to 1.1.1.5
	external/mit/expat/dist/win32/expat.iss         up to 1.1.1.6
	external/mit/expat/dist/xmlwf/codepage.c        up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.h        up to 1.1.1.2
	external/mit/expat/dist/xmlwf/ct.c              up to 1.1.1.2
	external/mit/expat/dist/xmlwf/filemap.h         up to 1.1.1.3
	external/mit/expat/dist/xmlwf/readfilemap.c     up to 1.1.1.5
	external/mit/expat/dist/xmlwf/unixfilemap.c     up to 1.1.1.4
	external/mit/expat/dist/xmlwf/win32filemap.c    up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c         up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlfile.h         up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlmime.c         up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlmime.h         up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmltchar.h        up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c           up to 1.1.1.6
	external/mit/expat/lib/libexpat/expat_config.h  up to 1.6
	doc/3RDPARTY					1.1649
	external/mit/xorg/tools/fc-cache/Makefile	1.18

Update expat to 2.2.8.
Define XML_POOR_ENTROPY for the tool version of fc-cache
(we can not assume anything about the build host).
@
text
@d1 153
a153 583
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

cmake_minimum_required(VERSION 3.1.3)

project(expat
    VERSION
        2.2.8
    LANGUAGES
        C
)

set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)

#
# Configuration defaults
#
if(WINCE)
    set(_EXPAT_BUILD_TOOLS_DEFAULT OFF)
else()
    set(_EXPAT_BUILD_TOOLS_DEFAULT ON)
endif()
if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT)
    set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
else()
    find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man)
    if(DOCBOOK_TO_MAN)
        set(_EXPAT_BUILD_DOCS_DEFAULT ON)
    else()
        set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
    endif()
endif()

#
# Configuration
#
option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT})
option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON)
option(EXPAT_BUILD_TESTS "build the tests for expat library" ON)
option(EXPAT_SHARED_LIBS "build a shared expat library" ON)
option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT})
option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF)
option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON)
set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
mark_as_advanced(EXPAT_CONTEXT_BYTES)
option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON)
mark_as_advanced(EXPAT_DTD)
option(EXPAT_NS "Define to make XML Namespaces functionality available" ON)
mark_as_advanced(EXPAT_NS)
option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
if(NOT WIN32 OR _EXPAT_HELP)
    option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON)
    set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING
            "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING
            "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
    mark_as_advanced(EXPAT_DEV_URANDOM)
endif()
set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
mark_as_advanced(EXPAT_ATTR_INFO)
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
mark_as_advanced(EXPAT_LARGE_SIZE)
option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
mark_as_advanced(EXPAT_MIN_SIZE)
if(MSVC OR _EXPAT_HELP)
    set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
endif()

#
# Environment checks
#
if(EXPAT_WITH_LIBBSD)
    find_library(LIB_BSD NAMES bsd)
    if(NOT LIB_BSD)
        message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found")
    else()
        set(HAVE_LIBBSD TRUE)
    endif()
endif()

macro(_expat_copy_bool_int source_ref dest_ref)
    if(${source_ref})
        set(${dest_ref} 1)
    else()
        set(${dest_ref} 0)
    endif()
endmacro()

if(EXPAT_LARGE_SIZE)
    add_definitions(-DXML_LARGE_SIZE)
endif()

if(EXPAT_MIN_SIZE)
    add_definitions(-DXML_MIN_SIZE)
endif()

if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_UNICODE OFF)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
    if(EXPAT_BUILD_TOOLS)
        message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.")
    endif()
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T ON)
else()
    message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".")
endif()

if(_EXPAT_UNICODE)
    add_definitions(-DXML_UNICODE)              # for unsigned short
    if(_EXPAT_UNICODE_WCHAR_T)
        add_definitions(-DXML_UNICODE_WCHAR_T)  # for wchar_t
    endif()
endif()

include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)

macro(evaluate_detection_results use_ref have_ref thing_lower thing_title)
    if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref})
        message(SEND_ERROR
                "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.")
    elseif(NOT ${use_ref} AND ${have_ref})
        message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.")
        set(${have_ref} 0)
    endif()
endmacro()

if(NOT WIN32)
    evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom")
    evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom")
endif()

_expat_copy_bool_int(EXPAT_ATTR_INFO        XML_ATTR_INFO)
_expat_copy_bool_int(EXPAT_DTD              XML_DTD)
_expat_copy_bool_int(EXPAT_LARGE_SIZE       XML_LARGE_SIZE)
_expat_copy_bool_int(EXPAT_MIN_SIZE         XML_MIN_SIZE)
_expat_copy_bool_int(EXPAT_NS               XML_NS)
if(NOT WIN32)
    _expat_copy_bool_int(EXPAT_DEV_URANDOM  XML_DEV_URANDOM)
endif()
set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES})

macro(expat_install)
    if(EXPAT_ENABLE_INSTALL)
        install(${ARGN})
    endif()
endmacro()

configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h")
add_definitions(-DHAVE_EXPAT_CONFIG_H)
expat_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})


set(EXTRA_COMPILE_FLAGS)
if(FLAG_NO_STRICT_ALIASING)
    set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing")
endif()
if(FLAG_VISIBILITY)
  add_definitions(-DXML_ENABLE_VISIBILITY=1)
  set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden")
endif(FLAG_VISIBILITY)
if (EXPAT_WARNINGS_AS_ERRORS)
    if(MSVC)
        add_definitions(/WX)
    else(MSVC)
        set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror")
    endif(MSVC)
endif(EXPAT_WARNINGS_AS_ERRORS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}")

if (MSVC)
    if (EXPAT_MSVC_STATIC_CRT)
        message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}")
        foreach(flag_var
                CMAKE_CXX_FLAGS_DEBUG
                CMAKE_CXX_FLAGS_RELEASE
                CMAKE_CXX_FLAGS_MINSIZEREL
                CMAKE_CXX_FLAGS_RELWITHDEBINFO
                CMAKE_C_FLAGS_DEBUG
                CMAKE_C_FLAGS_RELEASE
                CMAKE_C_FLAGS_MINSIZEREL
                CMAKE_C_FLAGS_RELWITHDEBINFO
                )
            string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
        endforeach()
    endif()
endif()

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)
if(WIN32)
    if(_EXPAT_UNICODE_WCHAR_T)
        set(_POSTFIX_WIDE "w")
    endif()

    if(MSVC AND NOT EXPAT_SHARED_LIBS)
        if(EXPAT_MSVC_STATIC_CRT)
            set(_POSTFIX_CRT "MT")
        else()
            set(_POSTFIX_CRT "MD")
        endif()
    endif()

    foreach(postfix_var
            CMAKE_DEBUG_POSTFIX
            CMAKE_RELEASE_POSTFIX
            CMAKE_MINSIZEREL_POSTFIX
            CMAKE_RELWITHDEBINFO_POSTFIX
            )
        if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX")
            set(_POSTFIX_DEBUG "d")
        else()
            set(_POSTFIX_DEBUG "")
        endif()

        set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. expat<postfix=[w][d][MD|MT]>.lib")
    endforeach()
endif(WIN32)

#
# C library
#
set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c
# NOTE: ISO C forbids an empty translation unit
#   lib/xmltok_impl.c
#   lib/xmltok_ns.c
)

if(EXPAT_SHARED_LIBS)
    set(_SHARED SHARED)
    if(MSVC)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(MSVC)
else(EXPAT_SHARED_LIBS)
    set(_SHARED STATIC)
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
endif(EXPAT_SHARED_LIBS)

add_library(expat ${_SHARED} ${expat_SRCS})
if(EXPAT_WITH_LIBBSD)
    target_link_libraries(expat ${LIB_BSD})
endif()

set(LIBCURRENT 7)    # sync
set(LIBREVISION 10)  # with
set(LIBAGE 6)        # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

expat_install(TARGETS expat EXPORT expat
                      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#
# pkg-config file
#
if(NOT MSVC)
    set(prefix ${CMAKE_INSTALL_PREFIX})
    set(exec_prefix "\${prefix}")
    set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
    set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
    configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @@ONLY)
    expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()

#
# C command line tool xmlwf
#
if(EXPAT_BUILD_TOOLS)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR})

    if(MINGW AND _EXPAT_UNICODE_WCHAR_T)
        # https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html
        set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode)
    endif()

    if(EXPAT_BUILD_DOCS)
        file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
        add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1")
        expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
    endif()
endif()

#
# C code examples
#
if(EXPAT_BUILD_EXAMPLES)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(EXPAT_BUILD_EXAMPLES)

#
# C/C++ test runners
#
if(EXPAT_BUILD_TESTS)
    ## these are unittests that can be run on any platform
    enable_language(CXX)
    enable_testing()

    set(test_SRCS
        tests/chardata.c
        tests/memcheck.c
        tests/minicheck.c
        tests/structdata.c
    )

    if(NOT MSVC)
        if(MINGW)
            set(host whatever-mingw32)  # for nothing but run.sh
        endif()
        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run.sh.in run.sh @@ONLY)
    endif()

    function(expat_add_test _name _file)
        if(MSVC)
            add_test(NAME ${_name} COMMAND ${_file})
        else()
            add_test(NAME ${_name} COMMAND bash run.sh ${_file})
        endif()
    endfunction()

    add_executable(runtests tests/runtests.c ${test_SRCS})
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    expat_add_test(runtests $<TARGET_FILE:runtests>)

    add_executable(runtestspp tests/runtestspp.cpp ${test_SRCS})
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    expat_add_test(runtestspp $<TARGET_FILE:runtestspp>)
endif(EXPAT_BUILD_TESTS)

if(EXPAT_BUILD_FUZZERS)
    if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
        message(SEND_ERROR
            "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) "
            "is not supported. Please set "
            "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.")
    endif()

    string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "-fsanitize" sanitizer_present)
    if(${sanitizer_present} EQUAL "-1")
        message(WARNING
            "There was no sanitizer present when building the fuzz targets. "
            "This is likely in error - consider adding "
            "-DCMAKE_C_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_CXX_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_STATIC_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=<sanitizer>' to your cmake "
            "execution.")
    endif()

    set(encoding_types UTF-16 UTF-8 ISO-8859-1 US-ASCII UTF-16BE UTF-16LE)
    set(fuzz_targets xml_parse_fuzzer xml_parsebuffer_fuzzer)

    add_library(fuzzpat STATIC ${expat_SRCS})
    target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link)

    foreach(fuzz_target ${fuzz_targets})
        foreach(encoding_type ${encoding_types})
            set(target_name ${fuzz_target}_${encoding_type})
            add_executable(${target_name} fuzz/${fuzz_target}.c)
            target_link_libraries(${target_name} fuzzpat)
            target_compile_definitions(${target_name}
                PRIVATE ENCODING_FOR_FUZZING=${encoding_type})
            target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link)
            # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13
            set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
            set_property(
                TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
        endforeach()
    endforeach()
endif(EXPAT_BUILD_FUZZERS)

#
# Custom target "run-xmltest"
#
if(EXPAT_BUILD_TOOLS AND NOT MSVC)
    add_custom_target(
        xmlts-zip-downloaded
        COMMAND
            sh -c 'test -f xmlts.zip || wget --output-document=xmlts.zip https://www.w3.org/XML/Test/xmlts20080827.zip'
        BYPRODUCTS
            tests/xmlts.zip
        WORKING_DIRECTORY
            tests/)

    add_custom_target(
        xmlts-zip-extracted
        COMMAND
            sh -c 'test -d xmlconf || unzip -q xmlts.zip'
        BYPRODUCTS
            tests/xmlconf
        WORKING_DIRECTORY
            tests/)
    add_dependencies(xmlts-zip-extracted xmlts-zip-downloaded)

    add_custom_target(
        xmltest-sh-been-run
        COMMAND
            sh -c '${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.sh "bash ${CMAKE_CURRENT_BINARY_DIR}/run.sh $<TARGET_FILE:xmlwf>" 2>&1 | tee tests/xmltest.log'
        BYPRODUCTS
            tests/xmltest.log)
    add_dependencies(xmltest-sh-been-run xmlts-zip-extracted xmlwf)

    add_custom_target(
        xmltest-log-fixed
        COMMAND
            ${CMAKE_CURRENT_SOURCE_DIR}/fix-xmltest-log.sh tests/xmltest.log
        DEPENDS
            tests/xmltest.log)
    add_dependencies(xmltest-log-fixed xmltest-sh-been-run)

    add_custom_target(
        xmltest-log-verified
        COMMAND
            diff -u ${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.log.expected tests/xmltest.log)
    add_dependencies(xmltest-log-verified xmltest-log-fixed)

    add_custom_target(run-xmltest)
    add_dependencies(run-xmltest xmltest-log-verified)
endif()

#
# Documentation
#
configure_file(Changes changelog COPYONLY)
expat_install(
    FILES
        AUTHORS
        ${CMAKE_CURRENT_BINARY_DIR}/changelog
    DESTINATION
        ${CMAKE_INSTALL_DOCDIR})

#
# CMake files for find_package(expat [..] CONFIG [..])
#
configure_package_config_file(
        cmake/expat-config.cmake.in
        cmake/expat-config.cmake
    INSTALL_DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
write_basic_package_version_file(
    cmake/expat-config-version.cmake
    COMPATIBILITY SameMajorVersion  # i.e. semver
)
export(
    TARGETS
        expat
    FILE
        cmake/expat-targets.cmake  # not going to be installed
)
expat_install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config-version.cmake
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
expat_install(
    EXPORT
        expat
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
    NAMESPACE
        expat::
)

#
# Summary
#
if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)")
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)")
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    if(WIN32)
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)")
    else()
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32)  // not implemented")
    endif()
else()
    set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR")
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)

message(STATUS "===========================================================================")
message(STATUS "")
message(STATUS "Configuration")
message(STATUS "  Prefix ..................... ${CMAKE_INSTALL_PREFIX}")
message(STATUS "  Build type ................. ${CMAKE_BUILD_TYPE}")
message(STATUS "  Shared libraries ........... ${EXPAT_SHARED_LIBS}")
if(MSVC)
    message(STATUS "  Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
endif()
message(STATUS "  Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}")
if(WIN32)
    message(STATUS "  Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
endif()
message(STATUS "")
message(STATUS "  Build documentation ........ ${EXPAT_BUILD_DOCS}")
message(STATUS "  Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
message(STATUS "  Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}")
message(STATUS "  Build tests ................ ${EXPAT_BUILD_TESTS}")
message(STATUS "  Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}")
message(STATUS "  Install files .............. ${EXPAT_ENABLE_INSTALL}")
message(STATUS "")
message(STATUS "  Features")
message(STATUS "    // Advanced options, changes not advised")
message(STATUS "    Attributes info .......... ${EXPAT_ATTR_INFO}")
message(STATUS "    Context bytes ............ ${EXPAT_CONTEXT_BYTES}")
message(STATUS "    DTD support .............. ${EXPAT_DTD}")
message(STATUS "    Large size ............... ${EXPAT_LARGE_SIZE}")
message(STATUS "    Minimum size ............. ${EXPAT_MIN_SIZE}")
message(STATUS "    Namespace support ........ ${EXPAT_NS}")
message(STATUS "")
message(STATUS "  Entropy sources")
if(WIN32)
    message(STATUS "    rand_s ................... ON")
else()
    message(STATUS "    getrandom ................ ${HAVE_GETRANDOM}")
    message(STATUS "    syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
    message(STATUS "    libbsd ................... ${EXPAT_WITH_LIBBSD}")
    message(STATUS "    /dev/random .............. ${EXPAT_DEV_URANDOM}")
endif()
message(STATUS "")
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
    message(STATUS "Continue with")
    message(STATUS "  make")
    if(EXPAT_BUILD_TESTS)
        message(STATUS "  make test")
    endif()
    if(EXPAT_ENABLE_INSTALL)
        message(STATUS "  sudo make install")
    endif()
    message(STATUS "")
endif()
message(STATUS "===========================================================================")
@


1.1.1.5
log
@Import expat 2.2.8

Release 2.2.8 Fri Septemper 13 2019
        Security fixes:
       #317 #318  CVE-2019-15903 -- Fix heap overflow triggered by
                    XML_GetCurrentLineNumber (or XML_GetCurrentColumnNumber),
                    and deny internal entities closing the doctype;
                    fixed in commit c20b758c332d9a13afbbb276d30db1d183a85d43

        Bug fixes:
            #240  Fix cases where XML_StopParser did not have any effect
                    when called from inside of an end element handler
            #341  xmlwf: Fix exit code for operation without "-d DIRECTORY";
                    previously, only "-d DIRECTORY" would give you a proper
                    exit code:
                      # xmlwf -d . <<<'<not well-formed>' 2>/dev/null ; echo $?
                      2
                      # xmlwf <<<'<not well-formed>' 2>/dev/null ; echo $?
                      0
                    Now both cases return exit code 2.

        Other changes:
       #299 #302  Windows: Replace LoadLibrary hack to access
                    unofficial API function SystemFunction036 (RtlGenRandom)
                    by using official API function rand_s (needs WinXP+)
            #325  Windows: Drop support for Visual Studio <=7.1/2003
                    and document supported compilers in README.md
            #286  Windows: Remove COM code from xmlwf; in case it turns
                    out needed later, there will be a dedicated repository
                    below https://github.com/libexpat/ for that code
            #322  Windows: Remove explicit MSVC solution and project files.
                    You can generate Visual Studio solution files through
                    CMake, e.g.: cmake -G"Visual Studio 15 2017" .
            #338  xmlwf: Make "xmlwf -h" help output more friendly
            #339  examples: Improve elements.c
       #244 #264  Autotools: Add argument --enable-xml-attr-info
       #239 #301  Autotools: Add arguments
                    --with-getrandom
                    --without-getrandom
                    --with-sys-getrandom
                    --without-sys-getrandom
       #312 #343  Autotools: Fix linking issues with "./configure LD=clang"
                  Autotools: Fix "make run-xmltest" for out-of-source builds
       #329 #336  CMake: Pull all options from Expat <=2.2.7 into namespace
                    prefix EXPAT_ with the exception of DOCBOOK_TO_MAN:
                    - BUILD_doc            -> EXPAT_BUILD_DOCS (plural)
                    - BUILD_examples       -> EXPAT_BUILD_EXAMPLES
                    - BUILD_shared         -> EXPAT_SHARED_LIBS
                    - BUILD_tests          -> EXPAT_BUILD_TESTS
                    - BUILD_tools          -> EXPAT_BUILD_TOOLS
                    - DOCBOOK_TO_MAN       -> DOCBOOK_TO_MAN (unchanged)
                    - INSTALL              -> EXPAT_ENABLE_INSTALL
                    - MSVC_USE_STATIC_CRT  -> EXPAT_MSVC_STATIC_CRT
                    - USE_libbsd           -> EXPAT_WITH_LIBBSD
                    - WARNINGS_AS_ERRORS   -> EXPAT_WARNINGS_AS_ERRORS
                    - XML_CONTEXT_BYTES    -> EXPAT_CONTEXT_BYTES
                    - XML_DEV_URANDOM      -> EXPAT_DEV_URANDOM
                    - XML_DTD              -> EXPAT_DTD
                    - XML_NS               -> EXPAT_NS
                    - XML_UNICODE          -> EXPAT_CHAR_TYPE=ushort (!)
                    - XML_UNICODE_WCHAR_T  -> EXPAT_CHAR_TYPE=wchar_t (!)
       #244 #264  CMake: Add argument -DEXPAT_ATTR_INFO=(ON|OFF),
                    default OFF
            #326  CMake: Add argument -DEXPAT_LARGE_SIZE=(ON|OFF),
                    default OFF
            #328  CMake: Add argument -DEXPAT_MIN_SIZE=(ON|OFF),
                    default OFF
       #239 #277  CMake: Add arguments
                    -DEXPAT_WITH_GETRANDOM=(ON|OFF|AUTO), default AUTO
                    -DEXPAT_WITH_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO
            #326  CMake: Install expat_config.h to include directory
            #326  CMake: Generate and install configuration files for
                    future find_package(expat [..] CONFIG [..])
                  CMake: Now produces a summary of applied configuration
                  CMake: Require C++ compiler only when tests are enabled
            #330  CMake: Fix compilation for 16bit character types,
                    i.e. ex -DXML_UNICODE=ON (and ex -DXML_UNICODE_WCHAR_T=ON)
            #265  CMake: Fix linking with MinGW
            #330  CMake: Add full support for MinGW; to enable, use
                    -DCMAKE_TOOLCHAIN_FILE=[expat]/cmake/mingw-toolchain.cmake
            #330  CMake: Port "make run-xmltest" from GNU Autotools to CMake
            #316  CMake: Windows: Make binary postfix match MSVC
                    Old: expat[d].lib
                    New: expat[w][d][MD|MT].lib
                  CMake: Migrate files from Windows to Unix line endings
            #308  CMake: Integrate OSS-Fuzz fuzzers, option
                    -DEXPAT_BUILD_FUZZERS=(ON|OFF), default OFF
             #14  Drop an OpenVMS support leftover
    #235 #268 ..
    #270 #310 ..
  #313 #331 #333  Address compiler warnings
    #282 #283 ..
       #284 #285  Address cppcheck warnings
       #294 #295  Address Clang Static Analyzer warnings
        #24 #293  Mass-apply clang-format 9 (and ensure conformance during CI)
                  Version info bumped from 7:9:6 to 7:10:6

        Special thanks to:
            David Loffredo
            Joonun Jang
            Khajapasha Mohammed
            Kishore Kunche
            Marco Maggi
            Mitch Phillips
            Rolf Ade
            xantares
            Zhongyuan Zhou
@
text
@d1 153
a153 583
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

cmake_minimum_required(VERSION 3.1.3)

project(expat
    VERSION
        2.2.8
    LANGUAGES
        C
)

set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)

#
# Configuration defaults
#
if(WINCE)
    set(_EXPAT_BUILD_TOOLS_DEFAULT OFF)
else()
    set(_EXPAT_BUILD_TOOLS_DEFAULT ON)
endif()
if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT)
    set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
else()
    find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man)
    if(DOCBOOK_TO_MAN)
        set(_EXPAT_BUILD_DOCS_DEFAULT ON)
    else()
        set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
    endif()
endif()

#
# Configuration
#
option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT})
option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON)
option(EXPAT_BUILD_TESTS "build the tests for expat library" ON)
option(EXPAT_SHARED_LIBS "build a shared expat library" ON)
option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT})
option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF)
option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON)
set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
mark_as_advanced(EXPAT_CONTEXT_BYTES)
option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON)
mark_as_advanced(EXPAT_DTD)
option(EXPAT_NS "Define to make XML Namespaces functionality available" ON)
mark_as_advanced(EXPAT_NS)
option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
if(NOT WIN32 OR _EXPAT_HELP)
    option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON)
    set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING
            "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING
            "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
    mark_as_advanced(EXPAT_DEV_URANDOM)
endif()
set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
mark_as_advanced(EXPAT_ATTR_INFO)
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
mark_as_advanced(EXPAT_LARGE_SIZE)
option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
mark_as_advanced(EXPAT_MIN_SIZE)
if(MSVC OR _EXPAT_HELP)
    set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
endif()

#
# Environment checks
#
if(EXPAT_WITH_LIBBSD)
    find_library(LIB_BSD NAMES bsd)
    if(NOT LIB_BSD)
        message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found")
    else()
        set(HAVE_LIBBSD TRUE)
    endif()
endif()

macro(_expat_copy_bool_int source_ref dest_ref)
    if(${source_ref})
        set(${dest_ref} 1)
    else()
        set(${dest_ref} 0)
    endif()
endmacro()

if(EXPAT_LARGE_SIZE)
    add_definitions(-DXML_LARGE_SIZE)
endif()

if(EXPAT_MIN_SIZE)
    add_definitions(-DXML_MIN_SIZE)
endif()

if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_UNICODE OFF)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T OFF)
    if(EXPAT_BUILD_TOOLS)
        message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.")
    endif()
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    set(_EXPAT_UNICODE ON)
    set(_EXPAT_UNICODE_WCHAR_T ON)
else()
    message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".")
endif()

if(_EXPAT_UNICODE)
    add_definitions(-DXML_UNICODE)              # for unsigned short
    if(_EXPAT_UNICODE_WCHAR_T)
        add_definitions(-DXML_UNICODE_WCHAR_T)  # for wchar_t
    endif()
endif()

include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)

macro(evaluate_detection_results use_ref have_ref thing_lower thing_title)
    if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref})
        message(SEND_ERROR
                "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.")
    elseif(NOT ${use_ref} AND ${have_ref})
        message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.")
        set(${have_ref} 0)
    endif()
endmacro()

if(NOT WIN32)
    evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom")
    evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom")
endif()

_expat_copy_bool_int(EXPAT_ATTR_INFO        XML_ATTR_INFO)
_expat_copy_bool_int(EXPAT_DTD              XML_DTD)
_expat_copy_bool_int(EXPAT_LARGE_SIZE       XML_LARGE_SIZE)
_expat_copy_bool_int(EXPAT_MIN_SIZE         XML_MIN_SIZE)
_expat_copy_bool_int(EXPAT_NS               XML_NS)
if(NOT WIN32)
    _expat_copy_bool_int(EXPAT_DEV_URANDOM  XML_DEV_URANDOM)
endif()
set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES})

macro(expat_install)
    if(EXPAT_ENABLE_INSTALL)
        install(${ARGN})
    endif()
endmacro()

configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h")
add_definitions(-DHAVE_EXPAT_CONFIG_H)
expat_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})


set(EXTRA_COMPILE_FLAGS)
if(FLAG_NO_STRICT_ALIASING)
    set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing")
endif()
if(FLAG_VISIBILITY)
  add_definitions(-DXML_ENABLE_VISIBILITY=1)
  set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden")
endif(FLAG_VISIBILITY)
if (EXPAT_WARNINGS_AS_ERRORS)
    if(MSVC)
        add_definitions(/WX)
    else(MSVC)
        set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror")
    endif(MSVC)
endif(EXPAT_WARNINGS_AS_ERRORS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}")

if (MSVC)
    if (EXPAT_MSVC_STATIC_CRT)
        message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}")
        foreach(flag_var
                CMAKE_CXX_FLAGS_DEBUG
                CMAKE_CXX_FLAGS_RELEASE
                CMAKE_CXX_FLAGS_MINSIZEREL
                CMAKE_CXX_FLAGS_RELWITHDEBINFO
                CMAKE_C_FLAGS_DEBUG
                CMAKE_C_FLAGS_RELEASE
                CMAKE_C_FLAGS_MINSIZEREL
                CMAKE_C_FLAGS_RELWITHDEBINFO
                )
            string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
        endforeach()
    endif()
endif()

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)
if(WIN32)
    if(_EXPAT_UNICODE_WCHAR_T)
        set(_POSTFIX_WIDE "w")
    endif()

    if(MSVC AND NOT EXPAT_SHARED_LIBS)
        if(EXPAT_MSVC_STATIC_CRT)
            set(_POSTFIX_CRT "MT")
        else()
            set(_POSTFIX_CRT "MD")
        endif()
    endif()

    foreach(postfix_var
            CMAKE_DEBUG_POSTFIX
            CMAKE_RELEASE_POSTFIX
            CMAKE_MINSIZEREL_POSTFIX
            CMAKE_RELWITHDEBINFO_POSTFIX
            )
        if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX")
            set(_POSTFIX_DEBUG "d")
        else()
            set(_POSTFIX_DEBUG "")
        endif()

        set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. expat<postfix=[w][d][MD|MT]>.lib")
    endforeach()
endif(WIN32)

#
# C library
#
set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c
# NOTE: ISO C forbids an empty translation unit
#   lib/xmltok_impl.c
#   lib/xmltok_ns.c
)

if(EXPAT_SHARED_LIBS)
    set(_SHARED SHARED)
    if(MSVC)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(MSVC)
else(EXPAT_SHARED_LIBS)
    set(_SHARED STATIC)
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
endif(EXPAT_SHARED_LIBS)

add_library(expat ${_SHARED} ${expat_SRCS})
if(EXPAT_WITH_LIBBSD)
    target_link_libraries(expat ${LIB_BSD})
endif()

set(LIBCURRENT 7)    # sync
set(LIBREVISION 10)  # with
set(LIBAGE 6)        # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

expat_install(TARGETS expat EXPORT expat
                      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

#
# pkg-config file
#
if(NOT MSVC)
    set(prefix ${CMAKE_INSTALL_PREFIX})
    set(exec_prefix "\${prefix}")
    set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
    set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
    configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @@ONLY)
    expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()

#
# C command line tool xmlwf
#
if(EXPAT_BUILD_TOOLS)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR})

    if(MINGW AND _EXPAT_UNICODE_WCHAR_T)
        # https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html
        set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode)
    endif()

    if(EXPAT_BUILD_DOCS)
        file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc)
        add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1")
        expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
    endif()
endif()

#
# C code examples
#
if(EXPAT_BUILD_EXAMPLES)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(EXPAT_BUILD_EXAMPLES)

#
# C/C++ test runners
#
if(EXPAT_BUILD_TESTS)
    ## these are unittests that can be run on any platform
    enable_language(CXX)
    enable_testing()

    set(test_SRCS
        tests/chardata.c
        tests/memcheck.c
        tests/minicheck.c
        tests/structdata.c
    )

    if(NOT MSVC)
        if(MINGW)
            set(host whatever-mingw32)  # for nothing but run.sh
        endif()
        configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run.sh.in run.sh @@ONLY)
    endif()

    function(expat_add_test _name _file)
        if(MSVC)
            add_test(NAME ${_name} COMMAND ${_file})
        else()
            add_test(NAME ${_name} COMMAND bash run.sh ${_file})
        endif()
    endfunction()

    add_executable(runtests tests/runtests.c ${test_SRCS})
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    expat_add_test(runtests $<TARGET_FILE:runtests>)

    add_executable(runtestspp tests/runtestspp.cpp ${test_SRCS})
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    expat_add_test(runtestspp $<TARGET_FILE:runtestspp>)
endif(EXPAT_BUILD_TESTS)

if(EXPAT_BUILD_FUZZERS)
    if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
        message(SEND_ERROR
            "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) "
            "is not supported. Please set "
            "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.")
    endif()

    string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "-fsanitize" sanitizer_present)
    if(${sanitizer_present} EQUAL "-1")
        message(WARNING
            "There was no sanitizer present when building the fuzz targets. "
            "This is likely in error - consider adding "
            "-DCMAKE_C_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_CXX_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_STATIC_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=<sanitizer>' to your cmake "
            "execution.")
    endif()

    set(encoding_types UTF-16 UTF-8 ISO-8859-1 US-ASCII UTF-16BE UTF-16LE)
    set(fuzz_targets xml_parse_fuzzer xml_parsebuffer_fuzzer)

    add_library(fuzzpat STATIC ${expat_SRCS})
    target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link)

    foreach(fuzz_target ${fuzz_targets})
        foreach(encoding_type ${encoding_types})
            set(target_name ${fuzz_target}_${encoding_type})
            add_executable(${target_name} fuzz/${fuzz_target}.c)
            target_link_libraries(${target_name} fuzzpat)
            target_compile_definitions(${target_name}
                PRIVATE ENCODING_FOR_FUZZING=${encoding_type})
            target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link)
            # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13
            set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
            set_property(
                TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
        endforeach()
    endforeach()
endif(EXPAT_BUILD_FUZZERS)

#
# Custom target "run-xmltest"
#
if(EXPAT_BUILD_TOOLS AND NOT MSVC)
    add_custom_target(
        xmlts-zip-downloaded
        COMMAND
            sh -c 'test -f xmlts.zip || wget --output-document=xmlts.zip https://www.w3.org/XML/Test/xmlts20080827.zip'
        BYPRODUCTS
            tests/xmlts.zip
        WORKING_DIRECTORY
            tests/)

    add_custom_target(
        xmlts-zip-extracted
        COMMAND
            sh -c 'test -d xmlconf || unzip -q xmlts.zip'
        BYPRODUCTS
            tests/xmlconf
        WORKING_DIRECTORY
            tests/)
    add_dependencies(xmlts-zip-extracted xmlts-zip-downloaded)

    add_custom_target(
        xmltest-sh-been-run
        COMMAND
            sh -c '${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.sh "bash ${CMAKE_CURRENT_BINARY_DIR}/run.sh $<TARGET_FILE:xmlwf>" 2>&1 | tee tests/xmltest.log'
        BYPRODUCTS
            tests/xmltest.log)
    add_dependencies(xmltest-sh-been-run xmlts-zip-extracted xmlwf)

    add_custom_target(
        xmltest-log-fixed
        COMMAND
            ${CMAKE_CURRENT_SOURCE_DIR}/fix-xmltest-log.sh tests/xmltest.log
        DEPENDS
            tests/xmltest.log)
    add_dependencies(xmltest-log-fixed xmltest-sh-been-run)

    add_custom_target(
        xmltest-log-verified
        COMMAND
            diff -u ${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.log.expected tests/xmltest.log)
    add_dependencies(xmltest-log-verified xmltest-log-fixed)

    add_custom_target(run-xmltest)
    add_dependencies(run-xmltest xmltest-log-verified)
endif()

#
# Documentation
#
configure_file(Changes changelog COPYONLY)
expat_install(
    FILES
        AUTHORS
        ${CMAKE_CURRENT_BINARY_DIR}/changelog
    DESTINATION
        ${CMAKE_INSTALL_DOCDIR})

#
# CMake files for find_package(expat [..] CONFIG [..])
#
configure_package_config_file(
        cmake/expat-config.cmake.in
        cmake/expat-config.cmake
    INSTALL_DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
write_basic_package_version_file(
    cmake/expat-config-version.cmake
    COMPATIBILITY SameMajorVersion  # i.e. semver
)
export(
    TARGETS
        expat
    FILE
        cmake/expat-targets.cmake  # not going to be installed
)
expat_install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config-version.cmake
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
)
expat_install(
    EXPORT
        expat
    DESTINATION
        ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/
    NAMESPACE
        expat::
)

#
# Summary
#
if(EXPAT_CHAR_TYPE STREQUAL "char")
    set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)")
elseif(EXPAT_CHAR_TYPE STREQUAL "ushort")
    set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)")
elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t")
    if(WIN32)
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)")
    else()
        set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32)  // not implemented")
    endif()
else()
    set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR")
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)

message(STATUS "===========================================================================")
message(STATUS "")
message(STATUS "Configuration")
message(STATUS "  Prefix ..................... ${CMAKE_INSTALL_PREFIX}")
message(STATUS "  Build type ................. ${CMAKE_BUILD_TYPE}")
message(STATUS "  Shared libraries ........... ${EXPAT_SHARED_LIBS}")
if(MSVC)
    message(STATUS "  Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
endif()
message(STATUS "  Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}")
if(WIN32)
    message(STATUS "  Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
endif()
message(STATUS "")
message(STATUS "  Build documentation ........ ${EXPAT_BUILD_DOCS}")
message(STATUS "  Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
message(STATUS "  Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}")
message(STATUS "  Build tests ................ ${EXPAT_BUILD_TESTS}")
message(STATUS "  Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}")
message(STATUS "  Install files .............. ${EXPAT_ENABLE_INSTALL}")
message(STATUS "")
message(STATUS "  Features")
message(STATUS "    // Advanced options, changes not advised")
message(STATUS "    Attributes info .......... ${EXPAT_ATTR_INFO}")
message(STATUS "    Context bytes ............ ${EXPAT_CONTEXT_BYTES}")
message(STATUS "    DTD support .............. ${EXPAT_DTD}")
message(STATUS "    Large size ............... ${EXPAT_LARGE_SIZE}")
message(STATUS "    Minimum size ............. ${EXPAT_MIN_SIZE}")
message(STATUS "    Namespace support ........ ${EXPAT_NS}")
message(STATUS "")
message(STATUS "  Entropy sources")
if(WIN32)
    message(STATUS "    rand_s ................... ON")
else()
    message(STATUS "    getrandom ................ ${HAVE_GETRANDOM}")
    message(STATUS "    syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
    message(STATUS "    libbsd ................... ${EXPAT_WITH_LIBBSD}")
    message(STATUS "    /dev/random .............. ${EXPAT_DEV_URANDOM}")
endif()
message(STATUS "")
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
    message(STATUS "Continue with")
    message(STATUS "  make")
    if(EXPAT_BUILD_TESTS)
        message(STATUS "  make test")
    endif()
    if(EXPAT_ENABLE_INSTALL)
        message(STATUS "  sudo make install")
    endif()
    message(STATUS "")
endif()
message(STATUS "===========================================================================")
@


1.1.1.6
log
@Upgrade expat from 2.2.8 -> 2.4.6 to include the security fixes from 2.4.5

Release 2.4.6 Sun February 20 2022
        Bug fixes:
            #566  Fix a regression introduced by the fix for CVE-2022-25313
                    in release 2.4.5 that affects applications that (1)
                    call function XML_SetElementDeclHandler and (2) are
                    parsing XML that contains nested element declarations
                    (e.g. "<!ELEMENT junk ((bar|foo|xyz+), zebra*)>").

        Other changes:
       #567 #568  Version info bumped from 9:5:8 to 9:6:8;
                    see https://verbump.de/ for what these numbers do

        Special thanks to:
            Matt Sergeant
            Samanta Navarro
            Sergei Trofimovich
                 and
            NixOS
            Perl XML::Parser

Release 2.4.5 Fri February 18 2022
        Security fixes:
            #562  CVE-2022-25235 -- Passing malformed 2- and 3-byte UTF-8
                    sequences (e.g. from start tag names) to the XML
                    processing application on top of Expat can cause
                    arbitrary damage (e.g. code execution) depending
                    on how invalid UTF-8 is handled inside the XML
                    processor; validation was not their job but Expat's.
                    Exploits with code execution are known to exist.
            #561  CVE-2022-25236 -- Passing (one or more) namespace separator
                    characters in "xmlns[:prefix]" attribute values
                    made Expat send malformed tag names to the XML
                    processor on top of Expat which can cause
                    arbitrary damage (e.g. code execution) depending
                    on such unexpectable cases are handled inside the XML
                    processor; validation was not their job but Expat's.
                    Exploits with code execution are known to exist.
            #558  CVE-2022-25313 -- Fix stack exhaustion in doctype parsing
                    that could be triggered by e.g. a 2 megabytes
                    file with a large number of opening braces.
                    Expected impact is denial of service or potentially
                    arbitrary code execution.
            #560  CVE-2022-25314 -- Fix integer overflow in function copyString;
                    only affects the encoding name parameter at parser creation
                    time which is often hardcoded (rather than user input),
                    takes a value in the gigabytes to trigger, and a 64-bit
                    machine.  Expected impact is denial of service.
            #559  CVE-2022-25315 -- Fix integer overflow in function storeRawNames;
                    needs input in the gigabytes and a 64-bit machine.
                    Expected impact is denial of service or potentially
                    arbitrary code execution.

        Other changes:
       #557 #564  Version info bumped from 9:4:8 to 9:5:8;
                    see https://verbump.de/ for what these numbers do

        Special thanks to:
            Ivan Fratric
            Samanta Navarro
                 and
            Google Project Zero
            JetBrains

Release 2.4.4 Sun January 30 2022
        Security fixes:
            #550  CVE-2022-23852 -- Fix signed integer overflow
                    (undefined behavior) in function XML_GetBuffer
                    (that is also called by function XML_Parse internally)
                    for when XML_CONTEXT_BYTES is defined to >0 (which is both
                    common and default).
                    Impact is denial of service or more.
            #551  CVE-2022-23990 -- Fix unsigned integer overflow in function
                    doProlog triggered by large content in element type
                    declarations when there is an element declaration handler
                    present (from a prior call to XML_SetElementDeclHandler).
                    Impact is denial of service or more.

        Bug fixes:
       #544 #545  xmlwf: Fix a memory leak on output file opening error

        Other changes:
            #546  Autotools: Fix broken CMake support under Cygwin
            #554  Windows: Add missing files to the installer to fix
                    compilation with CMake from installed sources
       #552 #554  Version info bumped from 9:3:8 to 9:4:8;
                    see https://verbump.de/ for what these numbers do

        Special thanks to:
            Carlo Bramini
            hwt0415
            Roland Illig
            Samanta Navarro
                 and
            Clang LeakSan and the Clang team

Release 2.4.3 Sun January 16 2022
        Security fixes:
       #531 #534  CVE-2021-45960 -- Fix issues with left shifts by >=29 places
                    resulting in
                      a) realloc acting as free
                      b) realloc allocating too few bytes
                      c) undefined behavior
                    depending on architecture and precise value
                    for XML documents with >=2^27+1 prefixed attributes
                    on a single XML tag a la
                    "<r xmlns:a='[..]' a:a123='[..]' [..] />"
                    where XML_ParserCreateNS is used to create the parser
                    (which needs argument "-n" when running xmlwf).
                    Impact is denial of service, or more.
       #532 #538  CVE-2021-46143 (ZDI-CAN-16157) -- Fix integer overflow
                    on variable m_groupSize in function doProlog leading
                    to realloc acting as free.
                    Impact is denial of service or more.
            #539  CVE-2022-22822 to CVE-2022-22827 -- Prevent integer overflows
                    near memory allocation at multiple places.  Mitre assigned
                    a dedicated CVE for each involved internal C function:
                    - CVE-2022-22822 for function addBinding
                    - CVE-2022-22823 for function build_model
                    - CVE-2022-22824 for function defineAttribute
                    - CVE-2022-22825 for function lookup
                    - CVE-2022-22826 for function nextScaffoldPart
                    - CVE-2022-22827 for function storeAtts
                    Impact is denial of service or more.

        Other changes:
            #535  CMake: Make call to file(GENERATE [..]) work for CMake <3.19
            #541  Autotools|CMake: MinGW: Make run.sh(.in) work for Cygwin
                    and MSYS2 by not going through Wine on these platforms
       #527 #528  Address compiler warnings
       #533 #543  Version info bumped from 9:2:8 to 9:3:8;
                    see https://verbump.de/ for what these numbers do

        Infrastructure:
            #536  CI: Check for realistic minimum CMake version
       #529 #539  CI: Cover compilation with -m32
            #529  CI: Store coverage reports as artifacts for download
            #528  CI: Upgrade Clang from 11 to 13

        Special thanks to:
            An anonymous whitehat
            Christopher Degawa
            J. Peter Mugaas
            Tyson Smith
                 and
            GCC Farm Project
            Trend Micro Zero Day Initiative

Release 2.4.2 Sun December 19 2021
        Other changes:
       #509 #510  Link againgst libm for function "isnan"
       #513 #514  Include expat_config.h as early as possible
            #498  Autotools: Include files with release archives:
                    - buildconf.sh
                    - fuzz/*.c
       #507 #519  Autotools: Sync CMake templates
       #495 #524  CMake: MinGW: Fix pkg-config section "Libs" for
                    - non-release build types (e.g. -DCMAKE_BUILD_TYPE=Debug)
                    - multi-config CMake generators (e.g. Ninja Multi-Config)
       #502 #503  docs: Document that function XML_GetBuffer may return NULL
                    when asking for a buffer of 0 (zero) bytes size
       #522 #523  docs: Fix return value docs for both
                    XML_SetBillionLaughsAttackProtection* functions
       #525 #526  Version info bumped from 9:1:8 to 9:2:8;
                    see https://verbump.de/ for what these numbers do

        Special thanks to:
            Dong-hee Na
            Joergen Ibsen
            Kai Pastor

Release 2.4.1 Sun May 23 2021
        Bug fixes:
       #488 #490  Autotools: Fix installed header expat_config.h for multilib
                    systems; regression introduced in 2.4.0 by pull request #486

        Other changes:
       #491 #492  Version info bumped from 9:0:8 to 9:1:8;
                    see https://verbump.de/ for what these numbers do

        Special thanks to:
            Gentoo's QA check "multilib_check_headers"

Release 2.4.0 Sun May 23 2021
        Security fixes:
   #34 #466 #484  CVE-2013-0340/CWE-776 -- Protect against billion laughs attacks
                    (denial-of-service; flavors targeting CPU time or RAM or both,
                    leveraging general entities or parameter entities or both)
                    by tracking and limiting the input amplification factor
                    (<amplification> := (<direct> + <indirect>) / <direct>).
                    By conservative default, amplification up to a factor of 100.0
                    is tolerated and rejection only starts after 8 MiB of output bytes
                    (=<direct> + <indirect>) have been processed.
                    The fix adds the following to the API:
                    - A new error code XML_ERROR_AMPLIFICATION_LIMIT_BREACH to
                      signals this specific condition.
                    - Two new API functions ..
                      - XML_SetBillionLaughsAttackProtectionMaximumAmplification and
                      - XML_SetBillionLaughsAttackProtectionActivationThreshold
                      .. to further tighten billion laughs protection parameters
                      when desired.  Please see file "doc/reference.html" for details.
                      If you ever need to increase the defaults for non-attack XML
                      payload, please file a bug report with libexpat.
                    - Two new XML_FEATURE_* constants ..
                      - that can be queried using the XML_GetFeatureList function, and
                      - that are shown in "xmlwf -v" output.
                    - Two new environment variable switches ..
                      - EXPAT_ACCOUNTING_DEBUG=(0|1|2|3) and
                      - EXPAT_ENTITY_DEBUG=(0|1)
                      .. for runtime debugging of accounting and entity processing.
                      Specific behavior of these values may change in the future.
                    - Two new command line arguments "-a FACTOR" and "-b BYTES"
                      for xmlwf to further tighten billion laughs protection
                      parameters when desired.
                      If you ever need to increase the defaults for non-attack XML
                      payload, please file a bug report with libexpat.

        Bug fixes:
       #332 #470  For (non-default) compilation with -DEXPAT_MIN_SIZE=ON (CMake)
                    or CPPFLAGS=-DXML_MIN_SIZE (GNU Autotools): Fix segfault
                    for UTF-16 payloads containing CDATA sections.
       #485 #486  Autotools: Fix generated CMake files for non-64bit and
                    non-Linux platforms (e.g. macOS and MinGW in particular)
                    that were introduced with release 2.3.0

        Other changes:
       #468 #469  xmlwf: Improve help output and the xmlwf man page
            #463  xmlwf: Improve maintainability through some refactoring
            #477  xmlwf: Fix man page DocBook validity
       #458 #459  CMake: Support absolute paths for both CMAKE_INSTALL_LIBDIR
                    and CMAKE_INSTALL_INCLUDEDIR
       #471 #481  CMake: Add support for standard variable BUILD_SHARED_LIBS
            #457  Unexpose symbol _INTERNAL_trim_to_complete_utf8_characters
            #467  Resolve macro HAVE_EXPAT_CONFIG_H
            #472  Delete unused legacy helper file "conftools/PrintPath"
       #473 #483  Improve attribution
  #464 #465 #477  doc/reference.html: Fix XHTML validity
       #475 #478  doc/reference.html: Replace the 90s look by OK.css
            #479  Version info bumped from 8:0:7 to 9:0:8
                    due to addition of new symbols and error codes;
                    see https://verbump.de/ for what these numbers do

        Infrastructure:
            #456  CI: Enable periodic runs
            #457  CI: Start covering the list of exported symbols
            #474  CI: Isolate coverage task
       #476 #482  CI: Adapt to breaking changes in image "ubuntu-18.04"
            #477  CI: Cover well-formedness and DocBook/XHTML validity
                    of doc/reference.html and doc/xmlwf.xml

        Special thanks to:
            Dimitry Andric
            Eero Helenius
            Nick Wellnhofer
            Rhodri James
            Tomas Korbar
            Yury Gribov
                 and
            Clang LeakSan
            JetBrains
            OSS-Fuzz

Release 2.3.0 Thu March 25 2021
        Bug fixes:
            #438  When calling XML_ParseBuffer without a prior successful call to
                    XML_GetBuffer as a user, no longer trigger undefined behavior
                    (by adding an integer to a NULL pointer) but rather return
                    XML_STATUS_ERROR and set the error code to (new) code
                    XML_ERROR_NO_BUFFER. Found by UBSan (UndefinedBehaviorSanitizer)
                    of Clang 11 (but not Clang 9).
            #444  xmlwf: Exit status 2 was used for both:
                    - malformed input files (documented) and
                    - invalid command-line arguments (undocumented).
                    The case of invalid command-line arguments now
                    has its own exit status 4, resolving the ambiguity.

        Other changes:
            #439  xmlwf: Add argument -k to allow continuing after
                    non-fatal errors
            #439  xmlwf: Add section about exit status to the -h help output
  #422 #426 #447  Windows: Drop support for Visual Studio <=14.0/2015
            #434  Windows: CMake: Detect unsupported Visual Studio at
                    configure time (rather than at compile time)
       #382 #428  testrunner: Make verbose mode (argument "-v") report
                    about passed tests, and make default mode report about
                    failures, as well.
            #442  CMake: Call "enable_language(CXX)" prior to tinkering
                    with CMAKE_CXX_* variables
            #448  Document use of libexpat from a CMake-based project
            #451  Autotools: Install CMake files as generated by CMake 3.19.6
                    so that users with "find_package(expat [..] CONFIG [..])"
                    are served on distributions that are *not* using the CMake
                    build system inside for libexpat packaging
       #436 #437  Autotools: Drop obsolescent macro AC_HEADER_STDC
       #450 #452  Autotools: Resolve use of obsolete macro AC_CONFIG_HEADER
            #441  Address compiler warnings
            #443  Version info bumped from 7:12:6 to 8:0:7
                    due to addition of error code XML_ERROR_NO_BUFFER
                    (see https://verbump.de/ for what these numbers do)

        Infrastructure:
       #435 #446  Replace Travis CI by GitHub Actions

        Special thanks to:
            Alexander Richardson
            Oleksandr Popovych
            Thomas Beutlich
            Tim Bray
                 and
            Clang LeakSan, Clang 11 UBSan and the Clang team

Release 2.2.10 Sat October 3 2020
        Bug fixes:
  #390 #395 #398  Fix undefined behavior during parsing caused by
                    pointer arithmetic with NULL pointers
       #404 #405  Fix reading uninitialized variable during parsing
            #406  xmlwf: Add missing check for malloc NULL return

        Other changes:
            #396  Windows: Drop support for Visual Studio <=8.0/2005
            #409  Windows: Add missing file "Changes" to the installer
                    to fix compilation with CMake from installed sources
            #403  xmlwf: Document exit codes in xmlwf manpage and
                    exit with code 3 (rather than code 1) for output errors
                    when used with "-d DIRECTORY"
       #356 #359  MinGW: Provide declaration of rand_s for mingwrt <5.3.0
       #383 #392  Autotools: Use -Werror while configure tests the compiler
                    for supported compile flags to avoid false positives
  #383 #393 #394  Autotools: Improve handling of user (C|CPP|CXX|LD)FLAGS,
                    e.g. ensure that they have the last word over flags added
                    while running ./configure
            #360  CMake: Create libexpatw.{dll,so} and expatw.pc (with emphasis
                    on suffix "w") with -DEXPAT_CHAR_TYPE=(ushort|wchar_t)
            #360  CMake: Detect and deny unsupported build combinations
                    involving -DEXPAT_CHAR_TYPE=(ushort|wchar_t)
            #360  CMake: Install pre-compiled shipped xmlwf.1 manpage in case
                    of -DEXPAT_BUILD_DOCS=OFF
  #375 #380 #419  CMake: Fix use of Expat by means of add_subdirectory
       #407 #408  CMake: Keep expat target name constant at "expat"
                    (i.e. refrain from using the target name to control
                    build artifact filenames)
            #385  CMake: Fix compilation with -DEXPAT_SHARED_LIBS=OFF for
                    Windows
                  CMake: Expose man page compilation as target "xmlwf-manpage"
       #413 #414  CMake: Introduce option EXPAT_BUILD_PKGCONFIG
                    to control generation of pkg-config file "expat.pc"
            #424  CMake: Add minimalistic support for building binary packages
                    with CMake target "package"; based on CPack
            #366  CMake: Add option -DEXPAT_OSSFUZZ_BUILD=(ON|OFF) with
                    default OFF to build fuzzer code against OSS-Fuzz and
                    related environment variable LIB_FUZZING_ENGINE
            #354  Fix testsuite for -DEXPAT_DTD=OFF and -DEXPAT_NS=OFF, each
    #354 #355 ..
       #356 #412  Address compiler warnings
       #368 #369  Address pngcheck warnings with doc/*.png images
            #425  Version info bumped from 7:11:6 to 7:12:6

        Special thanks to:
            asavah
            Ben Wagner
            Bhargava Shastry
            Frank Landgraf
            Jeffrey Walton
            Joe Orton
            Kleber Tarcísio
            Ma Lin
            Maciej Sroczy#ski
            Mohammed Khajapasha
            Vadim Zeitlin
                 and
            Cppcheck 2.0 and the Cppcheck team

Release 2.2.9 Wed September 25 2019
        Other changes:
                  examples: Drop executable bits from elements.c
            #349  Windows: Change the name of the Windows DLLs from expat*.dll
                    to libexpat*.dll once more (regression from 2.2.8, first
                    fixed in 1.95.3, issue #61 on SourceForge today,
                    was issue #432456 back then); needs a fix due
                    case-insensitive file systems on Windows and the fact that
                    Perl's XML::Parser::Expat compiles into Expat.dll.
            #347  Windows: Only define _CRT_RAND_S if not defined
                  Version info bumped from 7:10:6 to 7:11:6

        Special thanks to:
            Ben Wagner
@
text
@d1 2
a2 33
#                          __  __            _
#                       ___\ \/ /_ __   __ _| |_
#                      / _ \\  /| '_ \ / _` | __|
#                     |  __//  \| |_) | (_| | |_
#                      \___/_/\_\ .__/ \__,_|\__|
#                               |_| XML parser
#
# Copyright (c) 2010      Patrick Spendrin <ps_ml@@gmx.de>
# Copyright (c) 2012      Karl Waclawek <karl@@waclawek.net>
# Copyright (c) 2016-2022 Sebastian Pipping <sebastian@@pipping.org>
# Copyright (c) 2016      Sergei Nikulov <sergey.nikulov@@gmail.com>
# Copyright (c) 2016      BjÃ¶rn Lindahl <bjorn.lindahl@@foi.se>
# Copyright (c) 2016      Tobias Taschner <github@@tc84.de>
# Copyright (c) 2016      Ben Boeckel <ben.boeckel@@kitware.com>
# Copyright (c) 2017      Rhodri James <rhodri@@wildebeest.org.uk>
# Copyright (c) 2017      Rolf Eike Beer <eike@@sf-mail.de>
# Copyright (c) 2017      Stephen Groat <stephen@@groat.us>
# Copyright (c) 2017      Franek Korta <fkorta@@gmail.com>
# Copyright (c) 2018      pedro-vicente <pedro.vicente@@space-research.org>
# Copyright (c) 2018      Frank Rast <frank.rast@@gefeg.com>
# Copyright (c) 2018      userwithuid <userwithuid@@gmail.com>
# Copyright (c) 2018      Yury Gribov <tetra2005@@gmail.com>
# Copyright (c) 2019      Kishore Kunche <kishore.kunche@@intel.com>
# Copyright (c) 2019      xantares <xantares09@@hotmail.com>
# Copyright (c) 2019      Mohammed Khajapasha <mohammed.khajapasha@@intel.com>
# Copyright (c) 2019      David Loffredo <loffredo@@steptools.com>
# Copyright (c) 2019      Bhargava Shastry <bhargava.shastry@@ethereum.org>
# Copyright (c) 2020      Maciej SroczyÅ„ski <macieksroczynski@@poczta.fm>
# Copyright (c) 2020      Gulliver <gulliver@@traumkristalle.net>
# Copyright (c) 2020      Thomas Beutlich <tc@@tbeu.de>
# Copyright (c) 2021      Alex Richardson <Alexander.Richardson@@cl.cam.ac.uk>
# Unlike most of Expat,
# this file is copyrighted under the BSD-license for buildsystem files of KDE.
a5 28
# This allows controlling documented build time switches
# when Expat is pulled in using the add_subdirectory function, e.g.
#
#   set(EXPAT_BUILD_DOCS OFF)
#   set(EXPAT_BUILD_TOOLS OFF)
#   add_subdirectory(${expat_SOURCE_DIR}/expat ${expat_BINARY_DIR})
#
# would disable compilation of the xmlwf CLI and its man page.
# Without activating behaviour NEW for policy CMP0077 here,
# a user with -Wdev enabled would see warning
#
#   Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
#   --help-policy CMP0077" for policy details.  Use the cmake_policy command to
#   set the policy and suppress this warning.
#
#   For compatibility with older versions of CMake, option is clearing the
#   normal variable 'EXPAT_BUILD_DOCS'.
#
# and effectively not be able to adjust option EXPAT_BUILD_DOCS.
#
# For more details please see:
# - https://cmake.org/cmake/help/latest/policy/CMP0077.html
# - https://github.com/libexpat/libexpat/pull/419
#
if(POLICY CMP0077)
    cmake_policy(SET CMP0077 NEW)
endif()

d8 1
a8 1
        2.4.6
a39 14
if(MSVC)
    set(_EXPAT_BUILD_PKGCONFIG_DEFAULT OFF)
else()
    set(_EXPAT_BUILD_PKGCONFIG_DEFAULT ON)
endif()
if(DEFINED BUILD_SHARED_LIBS)
    set(_EXPAT_SHARED_LIBS_DEFAULT ${BUILD_SHARED_LIBS})
else()
    set(_EXPAT_SHARED_LIBS_DEFAULT ON)
endif()
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE NoConfig)  # so that accessing CMAKE_*_POSTFIX will be waterproof
endif()
string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER)
d47 1
a47 1
option(EXPAT_SHARED_LIBS "build a shared expat library" ${_EXPAT_SHARED_LIBS_DEFAULT})
d50 1
a50 5
option(EXPAT_BUILD_PKGCONFIG "build pkg-config file" ${_EXPAT_BUILD_PKGCONFIG_DEFAULT})
option(EXPAT_OSSFUZZ_BUILD "build fuzzers via ossfuzz for the expat library" OFF)
if(UNIX OR _EXPAT_HELP)
    option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
endif()
d59 1
a59 1
if(UNIX OR _EXPAT_HELP)
a76 8
if(NOT _EXPAT_HELP)
    set(_EXPAT_M32 OFF CACHE BOOL "(Unofficial!) Produce 32bit code with -m32")
endif()

if(EXPAT_BUILD_TESTS)
    # We have to call enable_language() before modifying any CMAKE_CXX_* variables
    enable_language(CXX)
endif()
a89 20
if(MSVC)
    # For the three types of MSVC version values, please see:
    # - https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html
    # - https://sourceforge.net/p/predef/wiki/Compilers/
    # - https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History
    set(_EXPAT_MSVC_REQUIRED_INT 1800)  # i.e. 12.0/2013/1800; see PR #426
    set(_EXPAT_MSVC_SUPPORTED_INT 1910)
    set(_EXPAT_MSVC_SUPPORTED_DISPLAY "Visual Studio 15.0/2017/${_EXPAT_MSVC_SUPPORTED_INT}")

    if(MSVC_VERSION VERSION_LESS ${_EXPAT_MSVC_SUPPORTED_INT})
        if(MSVC_VERSION VERSION_LESS ${_EXPAT_MSVC_REQUIRED_INT})
            message(SEND_ERROR "MSVC_VERSION ${MSVC_VERSION} is TOO OLD to compile Expat without errors.")
            message(SEND_ERROR "Please use officially supported ${_EXPAT_MSVC_SUPPORTED_DISPLAY} or later.  Thank you!")
        else()
            message(WARNING "MSVC_VERSION ${MSVC_VERSION} is NOT OFFICIALLY SUPPORTED by Expat.")
            message(WARNING "Please use ${_EXPAT_MSVC_SUPPORTED_DISPLAY} or later.  Thank you!")
        endif()
    endif()
endif()

a111 6
    if(EXPAT_BUILD_EXAMPLES)
        message(SEND_ERROR "Examples can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_EXAMPLES=OFF.")
    endif()
    if(EXPAT_BUILD_TESTS)
        message(SEND_ERROR "The testsuite can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TESTS=OFF.")
    endif()
a117 9
    if(NOT WIN32)
        string(FIND "${CMAKE_C_FLAGS}" "-fshort-wchar" _expat_short_wchar_found)
        if(${_expat_short_wchar_found} EQUAL "-1")
            message(SEND_ERROR "Configuration -DEXPAT_CHAR_TYPE=wchar_t requires -DCMAKE_{C,CXX}_FLAGS=-fshort-wchar (which was not found) and libc compiled with -fshort-wchar, too.")
        endif()
        if (EXPAT_BUILD_TOOLS)
            message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=wchar_t outside of Windows. Please pass -DEXPAT_CHAR_TYPE=char or -DEXPAT_BUILD_TOOLS=OFF.")
        endif()
    endif()
d163 1
d174 1
a174 5
endif()
if(MINGW)
    # Without __USE_MINGW_ANSI_STDIO the compiler produces a false positive
    set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Wno-pedantic-ms-format")
endif()
d178 1
a178 1
    else()
d180 2
a181 2
    endif()
endif()
a188 1
                CMAKE_CXX_FLAGS_${_EXPAT_BUILD_TYPE_UPPER}
a192 1
                CMAKE_C_FLAGS_${_EXPAT_BUILD_TYPE_UPPER}
a202 17
if(_EXPAT_M32 AND NOT MSVC)
    foreach(flag_var
            CMAKE_CXX_FLAGS_${_EXPAT_BUILD_TYPE_UPPER}
            CMAKE_CXX_FLAGS_DEBUG
            CMAKE_CXX_FLAGS_RELEASE
            CMAKE_CXX_FLAGS_MINSIZEREL
            CMAKE_CXX_FLAGS_RELWITHDEBINFO
            CMAKE_C_FLAGS_${_EXPAT_BUILD_TYPE_UPPER}
            CMAKE_C_FLAGS_DEBUG
            CMAKE_C_FLAGS_RELEASE
            CMAKE_C_FLAGS_MINSIZEREL
            CMAKE_C_FLAGS_RELWITHDEBINFO
            )
        set(${flag_var} "${${flag_var}} -m32")
    endforeach()
endif()

d206 5
a210 1
endif()
d212 6
a217 12
#
# Library filename postfix
#
if(_EXPAT_UNICODE)
    set(_POSTFIX_WIDE "w")
endif()

if(MSVC AND NOT EXPAT_SHARED_LIBS)
    if(EXPAT_MSVC_STATIC_CRT)
        set(_POSTFIX_CRT "MT")
    else()
        set(_POSTFIX_CRT "MD")
a218 1
endif()
d220 11
a230 12
foreach(postfix_var
        CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX
        CMAKE_DEBUG_POSTFIX
        CMAKE_RELEASE_POSTFIX
        CMAKE_MINSIZEREL_POSTFIX
        CMAKE_RELWITHDEBINFO_POSTFIX
        )
    if(WIN32 AND postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX")
        set(_POSTFIX_DEBUG "d")
    else()
        set(_POSTFIX_DEBUG "")  # needs a reset because of being looped
    endif()
d232 3
a234 2
    set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix, e.g. libexpat<postfix=[w][d][MD|MT]>.lib")
endforeach()
d252 2
a253 2
    endif()
else()
d255 4
a258 1
endif()
a260 3
if(_EXPAT_LIBM_FOUND)
    target_link_libraries(expat m)
endif()
d265 3
a267 3
set(LIBCURRENT 9)   # sync
set(LIBREVISION 6)  # with
set(LIBAGE 8)       # configure.ac!
d274 1
a274 21
endif()
if(WIN32 AND NOT MINGW)
    # NOTE: This avoids a name collision with Expat.dll of Perl's XML::Parser::Expat
    #       on Windows by resorting to filename libexpat.dll since Expat 1.95.3.
    #       Everything but MSVC is already adding prefix "lib", automatically.
    # NOTE: "set_property(TARGET expat PROPERTY PREFIX lib)" would only affect *.dll
    #       files but not *.lib files, so we have to rely on property OUTPUT_NAME, instead.
    #       Property CMAKE_*_POSTFIX still applies.
    set_property(TARGET expat PROPERTY OUTPUT_NAME libexpat)
endif()

target_include_directories(expat
    INTERFACE
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib>
        $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

if(NOT EXPAT_SHARED_LIBS AND WIN32)
    target_compile_definitions(expat PUBLIC -DXML_STATIC)
endif()
d286 7
a292 36
if(EXPAT_BUILD_PKGCONFIG)
    if(CMAKE_INSTALL_LIBDIR MATCHES "^/")
        set(_expat_pkgconfig_libdir "${CMAKE_INSTALL_LIBDIR}")
    else()
        set(_expat_pkgconfig_libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
    endif()

    if(CMAKE_INSTALL_INCLUDEDIR MATCHES "^/")
        set(_expat_pkgconfig_includedir "${CMAKE_INSTALL_INCLUDEDIR}")
    else()
        set(_expat_pkgconfig_includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
    endif()

    set_target_properties(expat PROPERTIES
        pkgconfig_prefix "${CMAKE_INSTALL_PREFIX}"
        pkgconfig_exec_prefix "\${prefix}"
        pkgconfig_libdir "${_expat_pkgconfig_libdir}"
        pkgconfig_includedir "${_expat_pkgconfig_includedir}"
        pkgconfig_version "${PACKAGE_VERSION}")

    foreach(_build_type ${CMAKE_BUILD_TYPE} Debug Release RelWithDebInfo MinSizeRel)
        string(TOLOWER "${_build_type}" _build_type_lower)
        string(TOUPPER "${_build_type}" _build_type_upper)
        set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_name" "expat${CMAKE_${_build_type_upper}_POSTFIX}")
        if(_EXPAT_LIBM_FOUND)
            set_property(TARGET expat PROPERTY "pkgconfig_libm" "-lm")
        else()
            set_property(TARGET expat PROPERTY "pkgconfig_libm" "")
        endif()
    endforeach()

    file(GENERATE
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/expat.pc
        INPUT ${PROJECT_SOURCE_DIR}/expat.pc.cmake)

    expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
a308 3
    if(_EXPAT_LIBM_FOUND)
        target_link_libraries(xmlwf m)
    endif()
d318 1
a318 7
        add_custom_target(
            xmlwf-manpage
            COMMAND
                "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1"
            BYPRODUCTS
                doc/xmlwf.1)
        add_dependencies(expat xmlwf-manpage)
a319 2
    elseif(EXISTS ${PROJECT_SOURCE_DIR}/doc/xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
d334 1
a334 1
endif()
d341 1
a348 1
        ${expat_SRCS}
d368 1
d373 1
d375 1
a375 11

    if(_EXPAT_LIBM_FOUND)
        target_link_libraries(runtests m)
        target_link_libraries(runtestspp m)
    endif()

    if(EXPAT_WITH_LIBBSD)
        target_link_libraries(runtests ${LIB_BSD})
        target_link_libraries(runtestspp ${LIB_BSD})
    endif()
endif()
d385 1
a385 1
    string(FIND "${CMAKE_C_FLAGS}" "-fsanitize" sanitizer_present)
d392 2
a393 3
            "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_MODULE_LINKER_FLAGS='-fsanitize=<sanitizer>' and "
            "-DCMAKE_SHARED_LINKER_FLAGS='-fsanitize=<sanitizer>' to your cmake "
a396 8
    if(EXPAT_OSSFUZZ_BUILD AND NOT DEFINED ENV{LIB_FUZZING_ENGINE})
        message(SEND_ERROR
            "OSS-Fuzz builds require the environment variable "
            "LIB_FUZZING_ENGINE to be set. If you are seeing this "
            "warning, it points to a deeper problem in the ossfuzz "
            "build setup.")
    endif()

d401 1
a401 3
    if(NOT EXPAT_OSSFUZZ_BUILD)
        target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link)
    endif()
d410 1
a410 3
            if(NOT EXPAT_OSSFUZZ_BUILD)
                target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link)
            endif()
d412 1
a412 6
            if(EXPAT_OSSFUZZ_BUILD)
                set_target_properties(${target_name} PROPERTIES LINK_FLAGS $ENV{LIB_FUZZING_ENGINE})
                set_target_properties(${target_name} PROPERTIES LINKER_LANGUAGE "CXX")
            else()
                set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
            endif()
d417 1
a417 8
else()
    if(EXPAT_OSSFUZZ_BUILD)
        message(SEND_ERROR
                "Attempting to perform an ossfuzz build without turning on the fuzzer build. "
                "This is likely in error - consider adding "
                "-DEXPAT_BUILD_FUZZERS=ON to your cmake execution.")
    endif()
endif()
a514 19
# CPack
#

# This effectively disables target "package_source".
# That is done due to CPack's unfortunate choice of an exclusion list
# rather than inclusion list.  An exclusion list does not protect against
# unwanted files ending up in the resulting archive in a way that's
# safe to run from an Expat developer's machine.
set(CPACK_SOURCE_GENERATOR '')

if(WIN32)
    set(CPACK_GENERATOR ZIP)
else()
    set(CPACK_GENERATOR TGZ)
endif()

include(CPack)

#
d530 1
a530 7
# NOTE: We're not accessing global property GENERATOR_IS_MULTI_CONFIG
#       because that would require CMake >=3.9
if(CMAKE_CONFIGURATION_TYPES)
    set(_EXPAT_GENERATOR_IS_MULTI_CONFIG TRUE)
else()
    set(_EXPAT_GENERATOR_IS_MULTI_CONFIG FALSE)
endif()
a534 6
message(STATUS "  Generator .................. ${CMAKE_GENERATOR}")
if(_EXPAT_GENERATOR_IS_MULTI_CONFIG)
    message(STATUS "  Build types ................ ${CMAKE_CONFIGURATION_TYPES}")
else()
    message(STATUS "  Build type ................. ${CMAKE_BUILD_TYPE}")
endif()
d536 1
d542 2
a543 2
if(NOT _EXPAT_GENERATOR_IS_MULTI_CONFIG)
    message(STATUS "  Library name postfix ....... ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
a550 1
message(STATUS "  Build pkg-config file ...... ${EXPAT_BUILD_PKGCONFIG}")
@


1.1.1.6.4.1
log
@Sync with HEAD
@
text
@d10 1
a10 1
# Copyright (c) 2016-2025 Sebastian Pipping <sebastian@@pipping.org>
d15 1
a15 1
# Copyright (c) 2017-2022 Rhodri James <rhodri@@wildebeest.org.uk>
a31 3
# Copyright (c) 2022      Johnny Jazeix <jazeix@@gmail.com>
# Copyright (c) 2022      Mark Brand <markbrand@@google.com>
# Copyright (c) 2022      David Faure <david.faure@@kdab.com>
d35 29
a63 1
cmake_minimum_required(VERSION 3.13.0)
d67 1
a67 1
        2.7.1
a70 3
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)  # i.e. -std=c99 rather than default -std=gnu99
d72 1
a72 1
set(PACKAGE_BUGREPORT "https://github.com/libexpat/libexpat/issues")
d110 1
a110 1
    set(CMAKE_BUILD_TYPE NoConfig)  # so that accessing EXPAT_*_POSTFIX will be waterproof
d117 8
a124 44

macro(expat_shy_set var default cache type desc)
    # Macro expat_shy_set came into life because:
    # - Expat was previously using an inconsistent mix of CMake's native set()
    #   and option() to define public build time options.
    # - option() is more friendly than set() with regard to configuring an
    #   external project that is pulled in by means of add_subdirectory() --
    #   see comments in issue #597 -- so we wanted to get away from set().
    # - option() auto-converts non-bool values to bool when writing to the CMake
    #   cache, so we needed something that supports non-bool better and hence
    #   wanted to get away from plain option(), too.
    #
    # As a result, this function serves as a hybrid between CMake's regular set()
    # and option(): from set() it takes support for non-bool types and the function
    # name and signature whereas from option() (with policy CMP0077 mode NEW) it
    # takes being shy when a value has previously been defined for that variable.
    #
    # So that resolves all need for set(.. FORCE) when pulling in Expat by means of
    # add_subdirectory().
    #
    if(NOT ${cache} STREQUAL "CACHE")
        message(SEND_ERROR "Macro usage is: expat_shy_set(var default CACHE type desc)")
    endif()

    if(DEFINED ${var})
        # NOTE: The idea is to (ideally) only add to the cache if
        #       there is no cache entry, yet.  "if(DEFINED CACHE{var})"
        #       requires CMake >=3.14.
        if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14" AND NOT DEFINED "CACHE{${var}}")
            set("${var}" "${${var}}" CACHE "${type}" "${desc}")
        endif()
    else()
        set("${var}" "${default}" CACHE "${type}" "${desc}")
    endif()
endmacro()

expat_shy_set(EXPAT_BUILD_TOOLS ${_EXPAT_BUILD_TOOLS_DEFAULT} CACHE BOOL "Build the xmlwf tool for expat library")
expat_shy_set(EXPAT_BUILD_EXAMPLES ON CACHE BOOL "Build the examples for expat library")
expat_shy_set(EXPAT_BUILD_TESTS ON CACHE BOOL "Build the tests for expat library")
expat_shy_set(EXPAT_SHARED_LIBS ${_EXPAT_SHARED_LIBS_DEFAULT} CACHE BOOL "Build a shared expat library")
expat_shy_set(EXPAT_BUILD_DOCS ${_EXPAT_BUILD_DOCS_DEFAULT} CACHE BOOL "Build man page for xmlwf")
expat_shy_set(EXPAT_BUILD_FUZZERS OFF CACHE BOOL "Build fuzzers for the expat library")
expat_shy_set(EXPAT_BUILD_PKGCONFIG ${_EXPAT_BUILD_PKGCONFIG_DEFAULT} CACHE BOOL "Build pkg-config file")
expat_shy_set(EXPAT_OSSFUZZ_BUILD OFF CACHE BOOL "Build fuzzers via OSS-Fuzz for the expat library")
d126 1
a126 1
    expat_shy_set(EXPAT_WITH_LIBBSD OFF CACHE BOOL "Utilize libbsd (for arc4random_buf)")
d128 2
a129 2
expat_shy_set(EXPAT_ENABLE_INSTALL ON CACHE BOOL "Install expat files in cmake install target")
expat_shy_set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point, 0 to disable")
d131 1
a131 1
expat_shy_set(EXPAT_DTD ON CACHE BOOL "Define to make parameter entity parsing functionality available")
d133 1
a133 3
expat_shy_set(EXPAT_GE ON CACHE BOOL "Define to make general entity parsing functionality available")
mark_as_advanced(EXPAT_GE)
expat_shy_set(EXPAT_NS ON CACHE BOOL "Define to make XML Namespaces functionality available")
d135 1
a135 1
expat_shy_set(EXPAT_WARNINGS_AS_ERRORS OFF CACHE BOOL "Treat all compiler warnings as errors")
d137 5
a141 3
    expat_shy_set(EXPAT_DEV_URANDOM ON CACHE BOOL "Define to include code reading entropy from `/dev/urandom'.")
    expat_shy_set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    expat_shy_set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
d144 2
a145 2
expat_shy_set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
expat_shy_set(EXPAT_ATTR_INFO OFF CACHE BOOL "Define to allow retrieving the byte offsets for attribute names and values")
d147 1
a147 1
expat_shy_set(EXPAT_LARGE_SIZE OFF CACHE BOOL "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>")
d149 1
a149 1
expat_shy_set(EXPAT_MIN_SIZE OFF CACHE BOOL "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)")
d152 1
a152 1
    expat_shy_set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
d155 1
a155 2
    expat_shy_set(_EXPAT_M32 OFF CACHE BOOL "(Unofficial!) Produce 32bit code with -m32")
    mark_as_advanced(_EXPAT_M32)
d158 1
a158 1
if(EXPAT_BUILD_TESTS OR EXPAT_BUILD_FUZZERS)
a160 8

    if (EXPAT_BUILD_FUZZERS)
        set(CMAKE_CXX_STANDARD 17)  # for std::string_view for Abseil for libprotobuf-mutator
    else()
        set(CMAKE_CXX_STANDARD 11)
    endif()
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)  # i.e. -std=c++11 rather than default -std=gnu++11
a165 5
if(EXPAT_DTD AND NOT EXPAT_GE)
    message(SEND_ERROR "Option EXPAT_DTD requires that EXPAT_GE is also enabled.")
    message(SEND_ERROR "Please either enable option EXPAT_GE (recommended) or disable EXPAT_DTD also.")
endif()

d181 2
a182 2
    set(_EXPAT_MSVC_SUPPORTED_INT 1920)
    set(_EXPAT_MSVC_SUPPORTED_DISPLAY "Visual Studio 16.0/2019/${_EXPAT_MSVC_SUPPORTED_INT}")
a267 1
_expat_copy_bool_int(EXPAT_GE               XML_GE)
a273 3
if(NOT EXPAT_CONTEXT_BYTES GREATER 0)  # in particular with -DEXPAT_CONTEXT_BYTES=OFF
    set(EXPAT_CONTEXT_BYTES 0)
endif()
d291 1
a291 3
  if(EXPAT_SHARED_LIBS)
     add_definitions(-DXML_ENABLE_VISIBILITY=1)
  endif()
d294 1
a294 1
if(MINGW AND ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU"))
a302 4
        if(MINGW)
            # To avoid "error: unknown conversion type character â€˜lâ€™ in format [-Werror=format=]"
            set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Wno-format")
        endif()
d351 31
d384 1
a384 1
set(_EXPAT_C_SOURCES
d395 2
a396 25
    if(WIN32)
        macro(_expat_def_file_toggle source_var target_var)
            if(${source_var})
                set(${target_var} " ")  # i.e. not commented out, a single space
            else()
                set(${target_var} ";")  # i.e. commented out
            endif()
        endmacro()

        if(EXPAT_DTD OR EXPAT_GE)
            set(_EXPAT_DTD_OR_GE TRUE)
        else()
            set(_EXPAT_DTD_OR_GE FALSE)
        endif()

        _expat_def_file_toggle(_EXPAT_DTD_OR_GE _EXPAT_COMMENT_DTD_OR_GE)
        _expat_def_file_toggle(EXPAT_ATTR_INFO _EXPAT_COMMENT_ATTR_INFO)

        configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lib/libexpat.def.cmake" "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.def")
        set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.def")

        # Add DLL version
        string(REPLACE "." "," _EXPAT_DLL_VERSION ${PROJECT_VERSION}.0)
        configure_file("${CMAKE_CURRENT_SOURCE_DIR}/win32/version.rc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
        set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
d402 1
a402 2
add_library(expat ${_SHARED} ${_EXPAT_C_SOURCES} ${_EXPAT_EXTRA_SOURCES})
add_library(expat::expat ALIAS expat)
d410 3
a412 36
#
# Library filename postfix
#
if(_EXPAT_UNICODE)
    set(_POSTFIX_WIDE "w")
endif()

if(MSVC AND NOT EXPAT_SHARED_LIBS)
    if(EXPAT_MSVC_STATIC_CRT)
        set(_POSTFIX_CRT "MT")
    else()
        set(_POSTFIX_CRT "MD")
    endif()
endif()

foreach(build_type_upper
        ${_EXPAT_BUILD_TYPE_UPPER}
        DEBUG
        RELEASE
        MINSIZEREL
        RELWITHDEBINFO
        )
    if(WIN32 AND build_type_upper STREQUAL "DEBUG")
        set(_POSTFIX_DEBUG "d")
    else()
        set(_POSTFIX_DEBUG "")  # needs a reset because of being looped
    endif()

    expat_shy_set(EXPAT_${build_type_upper}_POSTFIX "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix for build type ${build_type_upper}; yields filenames libexpat<postfix=[w][d][MD|MT]>.(dll|dylib|lib|so)")
    mark_as_advanced(EXPAT_${build_type_upper}_POSTFIX)
    set_property(TARGET expat PROPERTY ${build_type_upper}_POSTFIX ${EXPAT_${build_type_upper}_POSTFIX})
endforeach()

set(LIBCURRENT 11)  # sync
set(LIBREVISION 2)  # with
set(LIBAGE 10)      # configure.ac!
a418 12

    if(APPLE)
        if(NOT CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
            message(FATAL_ERROR "Expat requires CMake >=3.17 on platform \"APPLE\".")
        endif()

        # NOTE: This intends to talk CMake into compatibility with GNU Libtool
        math(EXPR _EXPAT_MACHO_COMPATIBILITY_VERSION "${LIBCURRENT} + 1")
        set(_EXPAT_MACHO_CURRENT_VERSION "${_EXPAT_MACHO_COMPATIBILITY_VERSION}.${LIBREVISION}")
        set_property(TARGET expat PROPERTY MACHO_COMPATIBILITY_VERSION ${_EXPAT_MACHO_COMPATIBILITY_VERSION})
        set_property(TARGET expat PROPERTY MACHO_CURRENT_VERSION ${_EXPAT_MACHO_CURRENT_VERSION})
    endif()
a419 5

if(MINGW AND EXPAT_SHARED_LIBS)
    set_target_properties(expat PROPERTIES SUFFIX "-${LIBCURRENT_MINUS_AGE}.dll")
endif()

d426 2
a427 5
    #       Target property <CONFIG>_POSTFIX still applies.
    set(_EXPAT_OUTPUT_NAME libexpat)
    set_property(TARGET expat PROPERTY OUTPUT_NAME ${_EXPAT_OUTPUT_NAME})
else()
    set(_EXPAT_OUTPUT_NAME expat)
d437 2
a438 2
if(WIN32 AND EXPAT_SHARED_LIBS)
    target_compile_definitions(expat PRIVATE VER_FILEVERSION=${_EXPAT_DLL_VERSION})
d474 1
a474 2
        set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_name" "expat${EXPAT_${_build_type_upper}_POSTFIX}")
        set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_output_name" "${_EXPAT_OUTPUT_NAME}${EXPAT_${_build_type_upper}_POSTFIX}")
d494 2
a497 2
        xmlwf/xmlfile.c
        xmlwf/xmlwf.c
d510 1
a510 1
        target_link_options(xmlwf PRIVATE -municode)
d532 7
a538 5
    foreach(_target element_declarations elements outline)
        add_executable(${_target} examples/${_target}.c)
        set_property(TARGET ${_target} PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
        target_link_libraries(${_target} expat)
    endforeach()
d548 8
d571 7
a577 1
    set(_EXPAT_TEST_TARGETS runtests runtests_cxx)
d579 4
a582 17
    add_executable(runtests
        tests/acc_tests.c
        tests/alloc_tests.c
        tests/basic_tests.c
        tests/chardata.c
        tests/common.c
        tests/dummy.c
        tests/handlers.c
        tests/memcheck.c
        tests/minicheck.c
        tests/misc_tests.c
        tests/ns_tests.c
        tests/nsalloc_tests.c
        tests/runtests.c
        tests/structdata.c
        ${_EXPAT_C_SOURCES}
    )
d584 4
a587 36
    add_executable(runtests_cxx
        tests/acc_tests_cxx.cpp
        tests/alloc_tests_cxx.cpp
        tests/basic_tests_cxx.cpp
        tests/chardata_cxx.cpp
        tests/common_cxx.cpp
        tests/dummy_cxx.cpp
        tests/handlers_cxx.cpp
        tests/memcheck_cxx.cpp
        tests/minicheck_cxx.cpp
        tests/misc_tests_cxx.cpp
        tests/ns_tests_cxx.cpp
        tests/nsalloc_tests_cxx.cpp
        tests/runtests_cxx.cpp
        tests/structdata_cxx.cpp
        ${_EXPAT_C_SOURCES}
    )

    foreach(_target ${_EXPAT_TEST_TARGETS})
        target_compile_definitions(${_target} PRIVATE -DXML_TESTING)

        set_property(TARGET ${_target} PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
        expat_add_test(${_target} $<TARGET_FILE:${_target}>)

        if(_EXPAT_LIBM_FOUND)
            target_link_libraries(${_target} m)
        endif()

        if(EXPAT_WITH_LIBBSD)
            target_link_libraries(${_target} ${LIB_BSD})
        endif()
    endforeach()

    add_executable(benchmark tests/benchmark/benchmark.c)
    set_property(TARGET benchmark PROPERTY RUNTIME_OUTPUT_DIRECTORY tests/benchmark)
    target_link_libraries(benchmark expat)
a589 3
#
# Fuzzers
#
d615 1
a615 1
            "warning, it points to a deeper problem in the OSS-Fuzz "
d622 1
a622 1
    add_library(fuzzpat STATIC ${_EXPAT_C_SOURCES})
d634 4
d639 1
a639 1
                target_link_options(${target_name} PRIVATE $ENV{LIB_FUZZING_ENGINE})
d642 1
a642 2
                target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer)
                target_link_options(${target_name} PRIVATE -fsanitize=fuzzer)
a647 57

    find_package(Protobuf REQUIRED)

    # Only include libprotobuf-mutator here so we don't build it in non-fuzz
    # configurations.
    include(ExternalProject)

    set(ProtobufMutator_PREFIX libprotobuf-mutator)
    set(ProtobufMutator_PATH ${CMAKE_CURRENT_BINARY_DIR}/${ProtobufMutator_PREFIX}/src/${ProtobufMutator_PREFIX})
    set(ProtobufMutator_BUILD_PATH ${ProtobufMutator_PATH}-build)
    set(ProtobufMutator_INCLUDE_DIR ${ProtobufMutator_PATH})
    set(ProtobufMutator_LIBRARIES ${ProtobufMutator_BUILD_PATH}/src/libfuzzer/libprotobuf-mutator-libfuzzer.a ${ProtobufMutator_BUILD_PATH}/src/libprotobuf-mutator.a)

    ExternalProject_Add(
        ${ProtobufMutator_PREFIX}
        PREFIX ${ProtobufMutator_PREFIX}
        GIT_REPOSITORY https://github.com/google/libprotobuf-mutator.git
        GIT_TAG 57928f41ae52bb27666aa15b310130d086dac245  # v1.4-16-g57928f4
        CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
        CMAKE_CACHE_ARGS
            -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
            -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
            -DLIB_PROTO_MUTATOR_EXAMPLES:BOOL=OFF
            -DLIB_PROTO_MUTATOR_TESTING:BOOL=OFF
        BUILD_BYPRODUCTS ${ProtobufMutator_LIBRARIES}
        UPDATE_COMMAND true
        INSTALL_COMMAND true)

    # Check for availability of protobuf compiler to avoid hard-to-understand
    # errors from make(1) down the line as seen with CMake 3.25.1 on Debian
    if(NOT Protobuf_PROTOC_EXECUTABLE)
        message(SEND_ERROR
            "The protobuf compiler (protoc) could not be found. "
            "Is it installed and working properly?")
    endif()

    protobuf_generate_cpp(XML_LPM_FUZZER_PROTO_SRCS
                          XML_LPM_FUZZER_PROTO_HDRS
                          fuzz/xml_lpm_fuzzer.proto)

    add_executable(xml_lpm_fuzzer
                   fuzz/xml_lpm_fuzzer.cpp
                   ${XML_LPM_FUZZER_PROTO_SRCS})
    target_include_directories(xml_lpm_fuzzer PUBLIC ${ProtobufMutator_INCLUDE_DIR})
    target_link_libraries(xml_lpm_fuzzer
                          fuzzpat
                          ${ProtobufMutator_LIBRARIES}
                          ${Protobuf_LIBRARIES})
    add_dependencies(xml_lpm_fuzzer ${ProtobufMutator_PREFIX})

    if(EXPAT_OSSFUZZ_BUILD)
        target_link_options(xml_lpm_fuzzer PRIVATE $ENV{LIB_FUZZING_ENGINE})
    else()
        target_compile_options(xml_lpm_fuzzer PRIVATE -fsanitize=fuzzer)
        target_link_options(xml_lpm_fuzzer PRIVATE -fsanitize=fuzzer)
    endif()
    set_property(TARGET xml_lpm_fuzzer PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
d651 1
a651 1
                "Attempting to perform an OSS-Fuzz build without turning on the fuzzer build. "
a657 17
# C/C++ config affecting multiple targets
#
if(WIN32)
    set(_EXPAT_STATIC_TARGETS ${_EXPAT_TEST_TARGETS})
    if(NOT EXPAT_SHARED_LIBS)
        list(APPEND _EXPAT_STATIC_TARGETS expat)
    endif()
    if(EXPAT_BUILD_FUZZERS)
        list(APPEND _EXPAT_STATIC_TARGETS fuzzpat)
    endif()

    foreach(_target ${_EXPAT_STATIC_TARGETS})
        target_compile_definitions(${_target} PUBLIC -DXML_STATIC)
    endforeach()
endif()

#
d787 7
a793 1
get_property(_EXPAT_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
d811 1
a811 1
    message(STATUS "  Library name postfix ....... ${EXPAT_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
a826 1
message(STATUS "    General entities ......... ${EXPAT_GE}")
@


1.1.1.7
log
@Import expat 2.7.0
@
text
@d10 1
a10 1
# Copyright (c) 2016-2025 Sebastian Pipping <sebastian@@pipping.org>
d15 1
a15 1
# Copyright (c) 2017-2022 Rhodri James <rhodri@@wildebeest.org.uk>
a31 3
# Copyright (c) 2022      Johnny Jazeix <jazeix@@gmail.com>
# Copyright (c) 2022      Mark Brand <markbrand@@google.com>
# Copyright (c) 2022      David Faure <david.faure@@kdab.com>
d35 29
a63 1
cmake_minimum_required(VERSION 3.13.0)
d67 1
a67 1
        2.7.0
a70 3
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)  # i.e. -std=c99 rather than default -std=gnu99
d72 1
a72 1
set(PACKAGE_BUGREPORT "https://github.com/libexpat/libexpat/issues")
d110 1
a110 1
    set(CMAKE_BUILD_TYPE NoConfig)  # so that accessing EXPAT_*_POSTFIX will be waterproof
d117 8
a124 44

macro(expat_shy_set var default cache type desc)
    # Macro expat_shy_set came into life because:
    # - Expat was previously using an inconsistent mix of CMake's native set()
    #   and option() to define public build time options.
    # - option() is more friendly than set() with regard to configuring an
    #   external project that is pulled in by means of add_subdirectory() --
    #   see comments in issue #597 -- so we wanted to get away from set().
    # - option() auto-converts non-bool values to bool when writing to the CMake
    #   cache, so we needed something that supports non-bool better and hence
    #   wanted to get away from plain option(), too.
    #
    # As a result, this function serves as a hybrid between CMake's regular set()
    # and option(): from set() it takes support for non-bool types and the function
    # name and signature whereas from option() (with policy CMP0077 mode NEW) it
    # takes being shy when a value has previously been defined for that variable.
    #
    # So that resolves all need for set(.. FORCE) when pulling in Expat by means of
    # add_subdirectory().
    #
    if(NOT ${cache} STREQUAL "CACHE")
        message(SEND_ERROR "Macro usage is: expat_shy_set(var default CACHE type desc)")
    endif()

    if(DEFINED ${var})
        # NOTE: The idea is to (ideally) only add to the cache if
        #       there is no cache entry, yet.  "if(DEFINED CACHE{var})"
        #       requires CMake >=3.14.
        if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14" AND NOT DEFINED "CACHE{${var}}")
            set("${var}" "${${var}}" CACHE "${type}" "${desc}")
        endif()
    else()
        set("${var}" "${default}" CACHE "${type}" "${desc}")
    endif()
endmacro()

expat_shy_set(EXPAT_BUILD_TOOLS ${_EXPAT_BUILD_TOOLS_DEFAULT} CACHE BOOL "Build the xmlwf tool for expat library")
expat_shy_set(EXPAT_BUILD_EXAMPLES ON CACHE BOOL "Build the examples for expat library")
expat_shy_set(EXPAT_BUILD_TESTS ON CACHE BOOL "Build the tests for expat library")
expat_shy_set(EXPAT_SHARED_LIBS ${_EXPAT_SHARED_LIBS_DEFAULT} CACHE BOOL "Build a shared expat library")
expat_shy_set(EXPAT_BUILD_DOCS ${_EXPAT_BUILD_DOCS_DEFAULT} CACHE BOOL "Build man page for xmlwf")
expat_shy_set(EXPAT_BUILD_FUZZERS OFF CACHE BOOL "Build fuzzers for the expat library")
expat_shy_set(EXPAT_BUILD_PKGCONFIG ${_EXPAT_BUILD_PKGCONFIG_DEFAULT} CACHE BOOL "Build pkg-config file")
expat_shy_set(EXPAT_OSSFUZZ_BUILD OFF CACHE BOOL "Build fuzzers via OSS-Fuzz for the expat library")
d126 1
a126 1
    expat_shy_set(EXPAT_WITH_LIBBSD OFF CACHE BOOL "Utilize libbsd (for arc4random_buf)")
d128 2
a129 2
expat_shy_set(EXPAT_ENABLE_INSTALL ON CACHE BOOL "Install expat files in cmake install target")
expat_shy_set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point, 0 to disable")
d131 1
a131 1
expat_shy_set(EXPAT_DTD ON CACHE BOOL "Define to make parameter entity parsing functionality available")
d133 1
a133 3
expat_shy_set(EXPAT_GE ON CACHE BOOL "Define to make general entity parsing functionality available")
mark_as_advanced(EXPAT_GE)
expat_shy_set(EXPAT_NS ON CACHE BOOL "Define to make XML Namespaces functionality available")
d135 1
a135 1
expat_shy_set(EXPAT_WARNINGS_AS_ERRORS OFF CACHE BOOL "Treat all compiler warnings as errors")
d137 5
a141 3
    expat_shy_set(EXPAT_DEV_URANDOM ON CACHE BOOL "Define to include code reading entropy from `/dev/urandom'.")
    expat_shy_set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
    expat_shy_set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
d144 2
a145 2
expat_shy_set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]")
expat_shy_set(EXPAT_ATTR_INFO OFF CACHE BOOL "Define to allow retrieving the byte offsets for attribute names and values")
d147 1
a147 1
expat_shy_set(EXPAT_LARGE_SIZE OFF CACHE BOOL "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>")
d149 1
a149 1
expat_shy_set(EXPAT_MIN_SIZE OFF CACHE BOOL "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)")
d152 1
a152 1
    expat_shy_set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
d155 1
a155 2
    expat_shy_set(_EXPAT_M32 OFF CACHE BOOL "(Unofficial!) Produce 32bit code with -m32")
    mark_as_advanced(_EXPAT_M32)
d158 1
a158 1
if(EXPAT_BUILD_TESTS OR EXPAT_BUILD_FUZZERS)
a160 8

    if (EXPAT_BUILD_FUZZERS)
        set(CMAKE_CXX_STANDARD 17)  # for std::string_view for Abseil for libprotobuf-mutator
    else()
        set(CMAKE_CXX_STANDARD 11)
    endif()
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)  # i.e. -std=c++11 rather than default -std=gnu++11
a165 5
if(EXPAT_DTD AND NOT EXPAT_GE)
    message(SEND_ERROR "Option EXPAT_DTD requires that EXPAT_GE is also enabled.")
    message(SEND_ERROR "Please either enable option EXPAT_GE (recommended) or disable EXPAT_DTD also.")
endif()

d181 2
a182 2
    set(_EXPAT_MSVC_SUPPORTED_INT 1920)
    set(_EXPAT_MSVC_SUPPORTED_DISPLAY "Visual Studio 16.0/2019/${_EXPAT_MSVC_SUPPORTED_INT}")
a267 1
_expat_copy_bool_int(EXPAT_GE               XML_GE)
a273 3
if(NOT EXPAT_CONTEXT_BYTES GREATER 0)  # in particular with -DEXPAT_CONTEXT_BYTES=OFF
    set(EXPAT_CONTEXT_BYTES 0)
endif()
d291 1
a291 3
  if(EXPAT_SHARED_LIBS)
     add_definitions(-DXML_ENABLE_VISIBILITY=1)
  endif()
d294 1
a294 1
if(MINGW AND ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU"))
a302 4
        if(MINGW)
            # To avoid "error: unknown conversion type character â€˜lâ€™ in format [-Werror=format=]"
            set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Wno-format")
        endif()
d351 31
d384 1
a384 1
set(_EXPAT_C_SOURCES
d395 2
a396 25
    if(WIN32)
        macro(_expat_def_file_toggle source_var target_var)
            if(${source_var})
                set(${target_var} " ")  # i.e. not commented out, a single space
            else()
                set(${target_var} ";")  # i.e. commented out
            endif()
        endmacro()

        if(EXPAT_DTD OR EXPAT_GE)
            set(_EXPAT_DTD_OR_GE TRUE)
        else()
            set(_EXPAT_DTD_OR_GE FALSE)
        endif()

        _expat_def_file_toggle(_EXPAT_DTD_OR_GE _EXPAT_COMMENT_DTD_OR_GE)
        _expat_def_file_toggle(EXPAT_ATTR_INFO _EXPAT_COMMENT_ATTR_INFO)

        configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lib/libexpat.def.cmake" "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.def")
        set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.def")

        # Add DLL version
        string(REPLACE "." "," _EXPAT_DLL_VERSION ${PROJECT_VERSION}.0)
        configure_file("${CMAKE_CURRENT_SOURCE_DIR}/win32/version.rc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
        set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
d402 1
a402 2
add_library(expat ${_SHARED} ${_EXPAT_C_SOURCES} ${_EXPAT_EXTRA_SOURCES})
add_library(expat::expat ALIAS expat)
d410 3
a412 36
#
# Library filename postfix
#
if(_EXPAT_UNICODE)
    set(_POSTFIX_WIDE "w")
endif()

if(MSVC AND NOT EXPAT_SHARED_LIBS)
    if(EXPAT_MSVC_STATIC_CRT)
        set(_POSTFIX_CRT "MT")
    else()
        set(_POSTFIX_CRT "MD")
    endif()
endif()

foreach(build_type_upper
        ${_EXPAT_BUILD_TYPE_UPPER}
        DEBUG
        RELEASE
        MINSIZEREL
        RELWITHDEBINFO
        )
    if(WIN32 AND build_type_upper STREQUAL "DEBUG")
        set(_POSTFIX_DEBUG "d")
    else()
        set(_POSTFIX_DEBUG "")  # needs a reset because of being looped
    endif()

    expat_shy_set(EXPAT_${build_type_upper}_POSTFIX "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix for build type ${build_type_upper}; yields filenames libexpat<postfix=[w][d][MD|MT]>.(dll|dylib|lib|so)")
    mark_as_advanced(EXPAT_${build_type_upper}_POSTFIX)
    set_property(TARGET expat PROPERTY ${build_type_upper}_POSTFIX ${EXPAT_${build_type_upper}_POSTFIX})
endforeach()

set(LIBCURRENT 11)  # sync
set(LIBREVISION 1)  # with
set(LIBAGE 10)      # configure.ac!
a418 12

    if(APPLE)
        if(NOT CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
            message(FATAL_ERROR "Expat requires CMake >=3.17 on platform \"APPLE\".")
        endif()

        # NOTE: This intends to talk CMake into compatibility with GNU Libtool
        math(EXPR _EXPAT_MACHO_COMPATIBILITY_VERSION "${LIBCURRENT} + 1")
        set(_EXPAT_MACHO_CURRENT_VERSION "${_EXPAT_MACHO_COMPATIBILITY_VERSION}.${LIBREVISION}")
        set_property(TARGET expat PROPERTY MACHO_COMPATIBILITY_VERSION ${_EXPAT_MACHO_COMPATIBILITY_VERSION})
        set_property(TARGET expat PROPERTY MACHO_CURRENT_VERSION ${_EXPAT_MACHO_CURRENT_VERSION})
    endif()
a419 5

if(MINGW AND EXPAT_SHARED_LIBS)
    set_target_properties(expat PROPERTIES SUFFIX "-${LIBCURRENT_MINUS_AGE}.dll")
endif()

d426 2
a427 5
    #       Target property <CONFIG>_POSTFIX still applies.
    set(_EXPAT_OUTPUT_NAME libexpat)
    set_property(TARGET expat PROPERTY OUTPUT_NAME ${_EXPAT_OUTPUT_NAME})
else()
    set(_EXPAT_OUTPUT_NAME expat)
d437 2
a438 2
if(WIN32 AND EXPAT_SHARED_LIBS)
    target_compile_definitions(expat PRIVATE VER_FILEVERSION=${_EXPAT_DLL_VERSION})
d474 1
a474 2
        set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_name" "expat${EXPAT_${_build_type_upper}_POSTFIX}")
        set_property(TARGET expat PROPERTY "pkgconfig_${_build_type_lower}_output_name" "${_EXPAT_OUTPUT_NAME}${EXPAT_${_build_type_upper}_POSTFIX}")
d494 2
a497 2
        xmlwf/xmlfile.c
        xmlwf/xmlwf.c
d510 1
a510 1
        target_link_options(xmlwf PRIVATE -municode)
d532 7
a538 5
    foreach(_target element_declarations elements outline)
        add_executable(${_target} examples/${_target}.c)
        set_property(TARGET ${_target} PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
        target_link_libraries(${_target} expat)
    endforeach()
d548 8
d571 7
a577 1
    set(_EXPAT_TEST_TARGETS runtests runtests_cxx)
d579 4
a582 17
    add_executable(runtests
        tests/acc_tests.c
        tests/alloc_tests.c
        tests/basic_tests.c
        tests/chardata.c
        tests/common.c
        tests/dummy.c
        tests/handlers.c
        tests/memcheck.c
        tests/minicheck.c
        tests/misc_tests.c
        tests/ns_tests.c
        tests/nsalloc_tests.c
        tests/runtests.c
        tests/structdata.c
        ${_EXPAT_C_SOURCES}
    )
d584 4
a587 36
    add_executable(runtests_cxx
        tests/acc_tests_cxx.cpp
        tests/alloc_tests_cxx.cpp
        tests/basic_tests_cxx.cpp
        tests/chardata_cxx.cpp
        tests/common_cxx.cpp
        tests/dummy_cxx.cpp
        tests/handlers_cxx.cpp
        tests/memcheck_cxx.cpp
        tests/minicheck_cxx.cpp
        tests/misc_tests_cxx.cpp
        tests/ns_tests_cxx.cpp
        tests/nsalloc_tests_cxx.cpp
        tests/runtests_cxx.cpp
        tests/structdata_cxx.cpp
        ${_EXPAT_C_SOURCES}
    )

    foreach(_target ${_EXPAT_TEST_TARGETS})
        target_compile_definitions(${_target} PRIVATE -DXML_TESTING)

        set_property(TARGET ${_target} PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
        expat_add_test(${_target} $<TARGET_FILE:${_target}>)

        if(_EXPAT_LIBM_FOUND)
            target_link_libraries(${_target} m)
        endif()

        if(EXPAT_WITH_LIBBSD)
            target_link_libraries(${_target} ${LIB_BSD})
        endif()
    endforeach()

    add_executable(benchmark tests/benchmark/benchmark.c)
    set_property(TARGET benchmark PROPERTY RUNTIME_OUTPUT_DIRECTORY tests/benchmark)
    target_link_libraries(benchmark expat)
a589 3
#
# Fuzzers
#
d615 1
a615 1
            "warning, it points to a deeper problem in the OSS-Fuzz "
d622 1
a622 1
    add_library(fuzzpat STATIC ${_EXPAT_C_SOURCES})
d634 4
d639 1
a639 1
                target_link_options(${target_name} PRIVATE $ENV{LIB_FUZZING_ENGINE})
d642 1
a642 2
                target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer)
                target_link_options(${target_name} PRIVATE -fsanitize=fuzzer)
a647 57

    find_package(Protobuf REQUIRED)

    # Only include libprotobuf-mutator here so we don't build it in non-fuzz
    # configurations.
    include(ExternalProject)

    set(ProtobufMutator_PREFIX libprotobuf-mutator)
    set(ProtobufMutator_PATH ${CMAKE_CURRENT_BINARY_DIR}/${ProtobufMutator_PREFIX}/src/${ProtobufMutator_PREFIX})
    set(ProtobufMutator_BUILD_PATH ${ProtobufMutator_PATH}-build)
    set(ProtobufMutator_INCLUDE_DIR ${ProtobufMutator_PATH})
    set(ProtobufMutator_LIBRARIES ${ProtobufMutator_BUILD_PATH}/src/libfuzzer/libprotobuf-mutator-libfuzzer.a ${ProtobufMutator_BUILD_PATH}/src/libprotobuf-mutator.a)

    ExternalProject_Add(
        ${ProtobufMutator_PREFIX}
        PREFIX ${ProtobufMutator_PREFIX}
        GIT_REPOSITORY https://github.com/google/libprotobuf-mutator.git
        GIT_TAG 57928f41ae52bb27666aa15b310130d086dac245  # v1.4-16-g57928f4
        CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
        CMAKE_CACHE_ARGS
            -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
            -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
            -DLIB_PROTO_MUTATOR_EXAMPLES:BOOL=OFF
            -DLIB_PROTO_MUTATOR_TESTING:BOOL=OFF
        BUILD_BYPRODUCTS ${ProtobufMutator_LIBRARIES}
        UPDATE_COMMAND true
        INSTALL_COMMAND true)

    # Check for availability of protobuf compiler to avoid hard-to-understand
    # errors from make(1) down the line as seen with CMake 3.25.1 on Debian
    if(NOT Protobuf_PROTOC_EXECUTABLE)
        message(SEND_ERROR
            "The protobuf compiler (protoc) could not be found. "
            "Is it installed and working properly?")
    endif()

    protobuf_generate_cpp(XML_LPM_FUZZER_PROTO_SRCS
                          XML_LPM_FUZZER_PROTO_HDRS
                          fuzz/xml_lpm_fuzzer.proto)

    add_executable(xml_lpm_fuzzer
                   fuzz/xml_lpm_fuzzer.cpp
                   ${XML_LPM_FUZZER_PROTO_SRCS})
    target_include_directories(xml_lpm_fuzzer PUBLIC ${ProtobufMutator_INCLUDE_DIR})
    target_link_libraries(xml_lpm_fuzzer
                          fuzzpat
                          ${ProtobufMutator_LIBRARIES}
                          ${Protobuf_LIBRARIES})
    add_dependencies(xml_lpm_fuzzer ${ProtobufMutator_PREFIX})

    if(EXPAT_OSSFUZZ_BUILD)
        target_link_options(xml_lpm_fuzzer PRIVATE $ENV{LIB_FUZZING_ENGINE})
    else()
        target_compile_options(xml_lpm_fuzzer PRIVATE -fsanitize=fuzzer)
        target_link_options(xml_lpm_fuzzer PRIVATE -fsanitize=fuzzer)
    endif()
    set_property(TARGET xml_lpm_fuzzer PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
d651 1
a651 1
                "Attempting to perform an OSS-Fuzz build without turning on the fuzzer build. "
a657 17
# C/C++ config affecting multiple targets
#
if(WIN32)
    set(_EXPAT_STATIC_TARGETS ${_EXPAT_TEST_TARGETS})
    if(NOT EXPAT_SHARED_LIBS)
        list(APPEND _EXPAT_STATIC_TARGETS expat)
    endif()
    if(EXPAT_BUILD_FUZZERS)
        list(APPEND _EXPAT_STATIC_TARGETS fuzzpat)
    endif()

    foreach(_target ${_EXPAT_STATIC_TARGETS})
        target_compile_definitions(${_target} PUBLIC -DXML_STATIC)
    endforeach()
endif()

#
d787 7
a793 1
get_property(_EXPAT_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
d811 1
a811 1
    message(STATUS "  Library name postfix ....... ${EXPAT_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
a826 1
message(STATUS "    General entities ......... ${EXPAT_GE}")
@


1.1.1.8
log
@Import expat 2.7.1.
@
text
@d42 1
a42 1
        2.7.1
d475 1
a475 1
set(LIBREVISION 2)  # with
@


1.1.1.2.6.1
log
@file CMakeLists.txt was added on branch netbsd-6 on 2016-05-18 10:49:22 +0000
@
text
@d1 116
@


1.1.1.2.6.2
log
@Pull up following revision(s) (requested by spz in ticket #1383):
	distrib/sets/lists/base/ad.mips64eb: patch
	distrib/sets/lists/base/ad.mips64el: patch
	distrib/sets/lists/base/md.amd64: patch
	distrib/sets/lists/base/md.sparc64: patch
	distrib/sets/lists/base/shl.mi: 1.771, 1.772 via patch
	distrib/sets/lists/comp/ad.mips64eb: patch
	distrib/sets/lists/comp/ad.mips64el: patch
	distrib/sets/lists/comp/md.amd64: patch
	distrib/sets/lists/comp/md.sparc64: patch
	distrib/sets/lists/comp/mi: 1.2035 via patch
	distrib/sets/lists/comp/shl.mi: patch
	external/mit/expat/dist/CMake.README: up to 1.1.1.2
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.3
	external/mit/expat/dist/ConfigureChecks.cmake: up to 1.1.1.1
	external/mit/expat/dist/MANIFEST: up to 1.1.1.3
	external/mit/expat/dist/Makefile.in: up to 1.1.1.3
	external/mit/expat/dist/README: up to 1.1.1.3
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.3
	external/mit/expat/dist/configure.ac: up to 1.1.1.1
	external/mit/expat/dist/configure.in: up to 1.1.1.2
	external/mit/expat/dist/expat.pc.in: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.cmake: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.3
	external/mit/expat/dist/amiga/Makefile: up to 1.1.1.2
	external/mit/expat/dist/amiga/README.txt: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_68k.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_base.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/stdlib.c: delete
	external/mit/expat/dist/bcb5/elements.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/outline.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.2
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4: up to 1.4
	external/mit/expat/dist/conftools/config.guess: up to 1.1.1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.1.1.3
	external/mit/expat/dist/conftools/expat.m4: up to 1.1.1.2
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/libtool.m4: delete
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/mkinstalldirs: up to 1.4
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.sgml: up to 1.1.1.3
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.2
	external/mit/expat/dist/examples/elements.dsp: up to 1.1.1.2
	external/mit/expat/dist/examples/outline.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/amigaconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpat.def: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpatw.def: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.4
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.h: up to 1.1.1.1
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.3
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.1
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.1
	external/mit/expat/dist/tests/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.2
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.2
	external/mit/expat/dist/tests/xmltest.sh: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.2
	external/mit/expat/lib/libexpat/Makefile: up to 1.2
	external/mit/expat/lib/libexpat/expat.pc.in: up to 1.1
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.3
	external/mit/expat/lib/libexpat/shlib_version: up to 1.3
Update expat to 2.1.1.  Apply fixes for CVE-2016-0718.
@
text
@a0 116
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

project(expat)

cmake_minimum_required(VERSION 2.6)
set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "2.1.1")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
option(BUILD_shared "build a shared expat library" ON)

# configuration options
set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
option(XML_NS "Define to make XML Namespaces functionality available" ON)

if(XML_DTD)
    set(XML_DTD 1)
else(XML_DTD)
    set(XML_DTD 0)
endif(XML_DTD)
if(XML_NS)
    set(XML_NS 1)
else(XML_NS)
    set(XML_NS 0)
endif(XML_NS)

if(BUILD_tests)
    enable_testing()
endif(BUILD_tests)

include(ConfigureChecks.cmake)

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)

set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c 
    lib/xmltok_impl.c 
    lib/xmltok_ns.c
)

if(WIN32 AND BUILD_shared)
    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
endif(WIN32 AND BUILD_shared)

if(BUILD_shared)
    set(_SHARED SHARED)
else(BUILD_shared)
    set(_SHARED STATIC)
endif(BUILD_shared)

add_library(expat ${_SHARED} ${expat_SRCS})

install(TARGETS expat RUNTIME DESTINATION bin
                      LIBRARY DESTINATION lib
                      ARCHIVE DESTINATION lib)

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}/bin")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)

install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)



if(BUILD_tools AND NOT WINCE)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    install(TARGETS xmlwf DESTINATION bin)
    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
endif(BUILD_tools AND NOT WINCE)

if(BUILD_examples)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(BUILD_examples)

if(BUILD_tests)
    ## these are unittests that can be run on any platform
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    add_test(runtests tests/runtests)

    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    add_test(runtestspp tests/runtestspp)
endif(BUILD_tests)
@


1.1.1.2.6.3
log
@Pull up following revision(s) (requested by spz in ticket #1435):
	external/mit/expat/dist/CMake.README: up to 1.1.1.3
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.3
	external/mit/expat/dist/COPYING: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.4
	external/mit/expat/dist/MANIFEST: up to 1.1.1.4
	external/mit/expat/dist/Makefile.in: up to 1.1.1.4
	external/mit/expat/dist/README: up to 1.1.1.4
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.3
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/xmlwf.mak: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.4
	external/mit/expat/dist/configure.ac: up to 1.1.1.2
	external/mit/expat/dist/conftools/config.guess: up to 1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.4
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.4
	external/mit/expat/dist/doc/expat.png: up to 1.1.1.2
	external/mit/expat/dist/doc/valid-xhtml10.png: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.sgml          delete
	external/mit/expat/dist/doc/xmlwf.xml: up to 1.1.1.1
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.4
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.4
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.6
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.3
	external/mit/expat/dist/lib/xmltok.c: up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.5
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.3
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.3
	external/mit/expat/dist/tests/xmltest.sh: up to 1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.3
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.3
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.4
Update expat to 2.2.0, fixing CVE-2016-0718, CVE-2016-4472,
CVE-2016-5300, and CVE-2012-6702.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.2.6.4
log
@Pull up following revision(s) (requested by spz in ticket #1458):
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile          delete
	external/mit/expat/dist/amiga/README.txt        delete
	external/mit/expat/dist/amiga/expat.xml         delete
	external/mit/expat/dist/amiga/expat_68k.c       delete
	external/mit/expat/dist/amiga/expat_68k.h       delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c delete
	external/mit/expat/dist/amiga/expat_base.h      delete
	external/mit/expat/dist/amiga/expat_lib.c       delete
	external/mit/expat/dist/amiga/expat_vectors.c   delete
	external/mit/expat/dist/amiga/include/inline4/expat.h delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h delete
	external/mit/expat/dist/amiga/include/libraries/expat.h delete
	external/mit/expat/dist/amiga/include/proto/expat.h delete
	external/mit/expat/dist/amiga/launch.c          delete
	external/mit/expat/dist/bcb5/README.txt         delete
	external/mit/expat/dist/bcb5/all_projects.bpg   delete
	external/mit/expat/dist/bcb5/elements.bpf       delete
	external/mit/expat/dist/bcb5/elements.bpr       delete
	external/mit/expat/dist/bcb5/elements.mak       delete
	external/mit/expat/dist/bcb5/expat.bpf          delete
	external/mit/expat/dist/bcb5/expat.bpr          delete
	external/mit/expat/dist/bcb5/expat.mak          delete
	external/mit/expat/dist/bcb5/expat_static.bpf   delete
	external/mit/expat/dist/bcb5/expat_static.bpr   delete
	external/mit/expat/dist/bcb5/expat_static.mak   delete
	external/mit/expat/dist/bcb5/expatw.bpf         delete
	external/mit/expat/dist/bcb5/expatw.bpr         delete
	external/mit/expat/dist/bcb5/expatw.mak         delete
	external/mit/expat/dist/bcb5/expatw_static.bpf  delete
	external/mit/expat/dist/bcb5/expatw_static.bpr  delete
	external/mit/expat/dist/bcb5/expatw_static.mak  delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def   delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def  delete
	external/mit/expat/dist/bcb5/makefile.mak       delete
	external/mit/expat/dist/bcb5/outline.bpf        delete
	external/mit/expat/dist/bcb5/outline.bpr        delete
	external/mit/expat/dist/bcb5/outline.mak        delete
	external/mit/expat/dist/bcb5/setup.bat          delete
	external/mit/expat/dist/bcb5/xmlwf.bpf          delete
	external/mit/expat/dist/bcb5/xmlwf.bpr          delete
	external/mit/expat/dist/bcb5/xmlwf.mak          delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in            delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp   delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp    delete
	external/mit/expat/dist/expat.dsw               delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW        delete
	external/mit/expat/dist/lib/amigaconfig.h       delete
	external/mit/expat/dist/lib/expat.dsp           delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp    delete
	external/mit/expat/dist/lib/expatw.dsp          delete
	external/mit/expat/dist/lib/expatw_static.dsp   delete
	external/mit/expat/dist/lib/macconfig.h         delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms          delete
	external/mit/expat/dist/vms/descrip.mms         delete
	external/mit/expat/dist/vms/expat_config.h      delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp         delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.2.4.1
log
@file CMakeLists.txt was added on branch netbsd-6-1 on 2016-05-18 10:45:13 +0000
@
text
@d1 116
@


1.1.1.2.4.2
log
@Pull up following revision(s) (requested by spz in ticket #1383):
	distrib/sets/lists/base/ad.mips64eb: patch
	distrib/sets/lists/base/ad.mips64el: patch
	distrib/sets/lists/base/md.amd64: patch
	distrib/sets/lists/base/md.sparc64: patch
	distrib/sets/lists/base/shl.mi: 1.771, 1.772 via patch
	distrib/sets/lists/comp/ad.mips64eb: patch
	distrib/sets/lists/comp/ad.mips64el: patch
	distrib/sets/lists/comp/md.amd64: patch
	distrib/sets/lists/comp/md.sparc64: patch
	distrib/sets/lists/comp/mi: 1.2035 via patch
	distrib/sets/lists/comp/shl.mi: patch
	external/mit/expat/dist/CMake.README: up to 1.1.1.2
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.3
	external/mit/expat/dist/ConfigureChecks.cmake: up to 1.1.1.1
	external/mit/expat/dist/MANIFEST: up to 1.1.1.3
	external/mit/expat/dist/Makefile.in: up to 1.1.1.3
	external/mit/expat/dist/README: up to 1.1.1.3
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.3
	external/mit/expat/dist/configure.ac: up to 1.1.1.1
	external/mit/expat/dist/configure.in: up to 1.1.1.2
	external/mit/expat/dist/expat.pc.in: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.cmake: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.3
	external/mit/expat/dist/amiga/Makefile: up to 1.1.1.2
	external/mit/expat/dist/amiga/README.txt: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_68k.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_base.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/stdlib.c: delete
	external/mit/expat/dist/bcb5/elements.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/outline.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.2
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4: up to 1.4
	external/mit/expat/dist/conftools/config.guess: up to 1.1.1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.1.1.3
	external/mit/expat/dist/conftools/expat.m4: up to 1.1.1.2
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/libtool.m4: delete
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/mkinstalldirs: up to 1.4
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.sgml: up to 1.1.1.3
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.2
	external/mit/expat/dist/examples/elements.dsp: up to 1.1.1.2
	external/mit/expat/dist/examples/outline.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/amigaconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpat.def: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpatw.def: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.4
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.h: up to 1.1.1.1
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.3
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.1
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.1
	external/mit/expat/dist/tests/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.2
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.2
	external/mit/expat/dist/tests/xmltest.sh: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.2
	external/mit/expat/lib/libexpat/Makefile: up to 1.2
	external/mit/expat/lib/libexpat/expat.pc.in: up to 1.1
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.3
	external/mit/expat/lib/libexpat/shlib_version: up to 1.3
Update expat to 2.1.1.  Apply fixes for CVE-2016-0718.
@
text
@a0 116
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

project(expat)

cmake_minimum_required(VERSION 2.6)
set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "2.1.1")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
option(BUILD_shared "build a shared expat library" ON)

# configuration options
set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
option(XML_NS "Define to make XML Namespaces functionality available" ON)

if(XML_DTD)
    set(XML_DTD 1)
else(XML_DTD)
    set(XML_DTD 0)
endif(XML_DTD)
if(XML_NS)
    set(XML_NS 1)
else(XML_NS)
    set(XML_NS 0)
endif(XML_NS)

if(BUILD_tests)
    enable_testing()
endif(BUILD_tests)

include(ConfigureChecks.cmake)

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)

set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c 
    lib/xmltok_impl.c 
    lib/xmltok_ns.c
)

if(WIN32 AND BUILD_shared)
    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
endif(WIN32 AND BUILD_shared)

if(BUILD_shared)
    set(_SHARED SHARED)
else(BUILD_shared)
    set(_SHARED STATIC)
endif(BUILD_shared)

add_library(expat ${_SHARED} ${expat_SRCS})

install(TARGETS expat RUNTIME DESTINATION bin
                      LIBRARY DESTINATION lib
                      ARCHIVE DESTINATION lib)

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}/bin")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)

install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)



if(BUILD_tools AND NOT WINCE)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    install(TARGETS xmlwf DESTINATION bin)
    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
endif(BUILD_tools AND NOT WINCE)

if(BUILD_examples)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(BUILD_examples)

if(BUILD_tests)
    ## these are unittests that can be run on any platform
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    add_test(runtests tests/runtests)

    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    add_test(runtestspp tests/runtestspp)
endif(BUILD_tests)
@


1.1.1.2.4.3
log
@Pull up following revision(s) (requested by spz in ticket #1435):
	external/mit/expat/dist/CMake.README: up to 1.1.1.3
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.3
	external/mit/expat/dist/COPYING: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.4
	external/mit/expat/dist/MANIFEST: up to 1.1.1.4
	external/mit/expat/dist/Makefile.in: up to 1.1.1.4
	external/mit/expat/dist/README: up to 1.1.1.4
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.3
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/xmlwf.mak: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.4
	external/mit/expat/dist/configure.ac: up to 1.1.1.2
	external/mit/expat/dist/conftools/config.guess: up to 1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.4
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.4
	external/mit/expat/dist/doc/expat.png: up to 1.1.1.2
	external/mit/expat/dist/doc/valid-xhtml10.png: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.sgml          delete
	external/mit/expat/dist/doc/xmlwf.xml: up to 1.1.1.1
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.4
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.4
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.6
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.3
	external/mit/expat/dist/lib/xmltok.c: up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.5
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.3
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.3
	external/mit/expat/dist/tests/xmltest.sh: up to 1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.3
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.3
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.4
Update expat to 2.2.0, fixing CVE-2016-0718, CVE-2016-4472,
CVE-2016-5300, and CVE-2012-6702.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.2.4.4
log
@Pull up following revision(s) (requested by spz in ticket #1458):
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile          delete
	external/mit/expat/dist/amiga/README.txt        delete
	external/mit/expat/dist/amiga/expat.xml         delete
	external/mit/expat/dist/amiga/expat_68k.c       delete
	external/mit/expat/dist/amiga/expat_68k.h       delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c delete
	external/mit/expat/dist/amiga/expat_base.h      delete
	external/mit/expat/dist/amiga/expat_lib.c       delete
	external/mit/expat/dist/amiga/expat_vectors.c   delete
	external/mit/expat/dist/amiga/include/inline4/expat.h delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h delete
	external/mit/expat/dist/amiga/include/libraries/expat.h delete
	external/mit/expat/dist/amiga/include/proto/expat.h delete
	external/mit/expat/dist/amiga/launch.c          delete
	external/mit/expat/dist/bcb5/README.txt         delete
	external/mit/expat/dist/bcb5/all_projects.bpg   delete
	external/mit/expat/dist/bcb5/elements.bpf       delete
	external/mit/expat/dist/bcb5/elements.bpr       delete
	external/mit/expat/dist/bcb5/elements.mak       delete
	external/mit/expat/dist/bcb5/expat.bpf          delete
	external/mit/expat/dist/bcb5/expat.bpr          delete
	external/mit/expat/dist/bcb5/expat.mak          delete
	external/mit/expat/dist/bcb5/expat_static.bpf   delete
	external/mit/expat/dist/bcb5/expat_static.bpr   delete
	external/mit/expat/dist/bcb5/expat_static.mak   delete
	external/mit/expat/dist/bcb5/expatw.bpf         delete
	external/mit/expat/dist/bcb5/expatw.bpr         delete
	external/mit/expat/dist/bcb5/expatw.mak         delete
	external/mit/expat/dist/bcb5/expatw_static.bpf  delete
	external/mit/expat/dist/bcb5/expatw_static.bpr  delete
	external/mit/expat/dist/bcb5/expatw_static.mak  delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def   delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def  delete
	external/mit/expat/dist/bcb5/makefile.mak       delete
	external/mit/expat/dist/bcb5/outline.bpf        delete
	external/mit/expat/dist/bcb5/outline.bpr        delete
	external/mit/expat/dist/bcb5/outline.mak        delete
	external/mit/expat/dist/bcb5/setup.bat          delete
	external/mit/expat/dist/bcb5/xmlwf.bpf          delete
	external/mit/expat/dist/bcb5/xmlwf.bpr          delete
	external/mit/expat/dist/bcb5/xmlwf.mak          delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in            delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp   delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp    delete
	external/mit/expat/dist/expat.dsw               delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW        delete
	external/mit/expat/dist/lib/amigaconfig.h       delete
	external/mit/expat/dist/lib/expat.dsp           delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp    delete
	external/mit/expat/dist/lib/expatw.dsp          delete
	external/mit/expat/dist/lib/expatw_static.dsp   delete
	external/mit/expat/dist/lib/macconfig.h         delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms          delete
	external/mit/expat/dist/vms/descrip.mms         delete
	external/mit/expat/dist/vms/expat_config.h      delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp         delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.2.2.1
log
@file CMakeLists.txt was added on branch netbsd-6-0 on 2016-05-18 10:40:42 +0000
@
text
@d1 116
@


1.1.1.2.2.2
log
@Pull up following revision(s) (requested by spz in ticket #1383):
	distrib/sets/lists/base/ad.mips64eb: patch
	distrib/sets/lists/base/ad.mips64el: patch
	distrib/sets/lists/base/md.amd64: patch
	distrib/sets/lists/base/md.sparc64: patch
	distrib/sets/lists/base/shl.mi: 1.771, 1.772 via patch
	distrib/sets/lists/comp/ad.mips64eb: patch
	distrib/sets/lists/comp/ad.mips64el: patch
	distrib/sets/lists/comp/md.amd64: patch
	distrib/sets/lists/comp/md.sparc64: patch
	distrib/sets/lists/comp/mi: 1.2035 via patch
	distrib/sets/lists/comp/shl.mi: patch
	external/mit/expat/dist/CMake.README: up to 1.1.1.2
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.3
	external/mit/expat/dist/ConfigureChecks.cmake: up to 1.1.1.1
	external/mit/expat/dist/MANIFEST: up to 1.1.1.3
	external/mit/expat/dist/Makefile.in: up to 1.1.1.3
	external/mit/expat/dist/README: up to 1.1.1.3
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.3
	external/mit/expat/dist/configure.ac: up to 1.1.1.1
	external/mit/expat/dist/configure.in: up to 1.1.1.2
	external/mit/expat/dist/expat.pc.in: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.cmake: up to 1.1.1.1
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.3
	external/mit/expat/dist/amiga/Makefile: up to 1.1.1.2
	external/mit/expat/dist/amiga/README.txt: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_68k.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_base.h: up to 1.1.1.1
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/stdlib.c: delete
	external/mit/expat/dist/bcb5/elements.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/outline.bpr: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.2
	external/mit/expat/dist/conftools/ac_c_bigendian_cross.m4: up to 1.4
	external/mit/expat/dist/conftools/config.guess: up to 1.1.1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.1.1.3
	external/mit/expat/dist/conftools/expat.m4: up to 1.1.1.2
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/libtool.m4: delete
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.3
	external/mit/expat/dist/conftools/mkinstalldirs: up to 1.4
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.sgml: up to 1.1.1.3
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.2
	external/mit/expat/dist/examples/elements.dsp: up to 1.1.1.2
	external/mit/expat/dist/examples/outline.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/amigaconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpat.def: up to 1.1.1.2
	external/mit/expat/dist/lib/libexpatw.def: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.4
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.c: up to 1.1.1.2
	external/mit/expat/dist/lib/xmltok.h: up to 1.1.1.1
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.3
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.1
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.1
	external/mit/expat/dist/tests/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.2
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.2
	external/mit/expat/dist/tests/xmltest.sh: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/README.txt: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.2
	external/mit/expat/lib/libexpat/Makefile: up to 1.2
	external/mit/expat/lib/libexpat/expat.pc.in: up to 1.1
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.3
	external/mit/expat/lib/libexpat/shlib_version: up to 1.3
Update expat to 2.1.1.  Apply fixes for CVE-2016-0718.
@
text
@a0 116
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

project(expat)

cmake_minimum_required(VERSION 2.6)
set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "2.1.1")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
option(BUILD_shared "build a shared expat library" ON)

# configuration options
set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
option(XML_NS "Define to make XML Namespaces functionality available" ON)

if(XML_DTD)
    set(XML_DTD 1)
else(XML_DTD)
    set(XML_DTD 0)
endif(XML_DTD)
if(XML_NS)
    set(XML_NS 1)
else(XML_NS)
    set(XML_NS 0)
endif(XML_NS)

if(BUILD_tests)
    enable_testing()
endif(BUILD_tests)

include(ConfigureChecks.cmake)

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)

set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c 
    lib/xmltok_impl.c 
    lib/xmltok_ns.c
)

if(WIN32 AND BUILD_shared)
    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
endif(WIN32 AND BUILD_shared)

if(BUILD_shared)
    set(_SHARED SHARED)
else(BUILD_shared)
    set(_SHARED STATIC)
endif(BUILD_shared)

add_library(expat ${_SHARED} ${expat_SRCS})

install(TARGETS expat RUNTIME DESTINATION bin
                      LIBRARY DESTINATION lib
                      ARCHIVE DESTINATION lib)

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}/bin")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)

install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)



if(BUILD_tools AND NOT WINCE)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf)
    target_link_libraries(xmlwf expat)
    install(TARGETS xmlwf DESTINATION bin)
    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
endif(BUILD_tools AND NOT WINCE)

if(BUILD_examples)
    add_executable(elements examples/elements.c)
    set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
    target_link_libraries(outline expat)
endif(BUILD_examples)

if(BUILD_tests)
    ## these are unittests that can be run on any platform
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtests expat)
    add_test(runtests tests/runtests)

    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
    set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
    target_link_libraries(runtestspp expat)
    add_test(runtestspp tests/runtestspp)
endif(BUILD_tests)
@


1.1.1.2.2.3
log
@Pull up following revision(s) (requested by spz in ticket #1435):
	external/mit/expat/dist/CMake.README: up to 1.1.1.3
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.3
	external/mit/expat/dist/COPYING: up to 1.1.1.2
	external/mit/expat/dist/Changes: up to 1.1.1.4
	external/mit/expat/dist/MANIFEST: up to 1.1.1.4
	external/mit/expat/dist/Makefile.in: up to 1.1.1.4
	external/mit/expat/dist/README: up to 1.1.1.4
	external/mit/expat/dist/aclocal.m4: up to 1.1.1.3
	external/mit/expat/dist/amiga/expat_lib.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/expat_vectors.c: up to 1.1.1.2
	external/mit/expat/dist/amiga/launch.c: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expat_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expat_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/expatw_static.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/expatw_static.mak: up to 1.1.1.2
	external/mit/expat/dist/bcb5/xmlwf.bpr: up to 1.1.1.3
	external/mit/expat/dist/bcb5/xmlwf.mak: up to 1.1.1.2
	external/mit/expat/dist/configure: up to 1.1.1.4
	external/mit/expat/dist/configure.ac: up to 1.1.1.2
	external/mit/expat/dist/conftools/config.guess: up to 1.3
	external/mit/expat/dist/conftools/config.sub: up to 1.3
	external/mit/expat/dist/conftools/install-sh: up to 1.1.1.4
	external/mit/expat/dist/conftools/ltmain.sh: up to 1.1.1.4
	external/mit/expat/dist/doc/expat.png: up to 1.1.1.2
	external/mit/expat/dist/doc/valid-xhtml10.png: up to 1.1.1.2
	external/mit/expat/dist/doc/xmlwf.1: up to 1.1.1.3
	external/mit/expat/dist/doc/xmlwf.sgml          delete
	external/mit/expat/dist/doc/xmlwf.xml: up to 1.1.1.1
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.2
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.4
	external/mit/expat/dist/lib/expat.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.4
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.2
	external/mit/expat/dist/lib/expat_static.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw.dsp: up to 1.1.1.3
	external/mit/expat/dist/lib/expatw_static.dsp: up to 1.1.1.2
	external/mit/expat/dist/lib/internal.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.6
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.3
	external/mit/expat/dist/lib/xmltok.c: up to 1.3
	external/mit/expat/dist/lib/xmltok_impl.c: up to 1.5
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltoptions.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/ltsugar.m4: up to 1.1.1.2
	external/mit/expat/dist/m4/ltversion.m4: up to 1.1.1.3
	external/mit/expat/dist/m4/lt~obsolete.m4: up to 1.1.1.2
	external/mit/expat/dist/tests/chardata.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.2
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.3
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.3
	external/mit/expat/dist/tests/xmltest.sh: up to 1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.3
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/xmlwf.dsp: up to 1.1.1.3
	external/mit/expat/lib/libexpat/expat_config.h: up to 1.4
Update expat to 2.2.0, fixing CVE-2016-0718, CVE-2016-4472,
CVE-2016-5300, and CVE-2012-6702.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.0")
a43 4
if(WIN32)
    add_definitions(-DWIN32)
    set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows")
endif(WIN32)
d53 4
a58 3
    if(WIN32)
        set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
    endif(WIN32)
a60 3
    if(WIN32)
        add_definitions(-DXML_STATIC)
    endif(WIN32)
a64 11
set(LIBCURRENT 7)   # sync
set(LIBREVISION 2)  # with
set(LIBAGE 6)       # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")

if(NOT WIN32)
    set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
    set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
    set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
endif(NOT WIN32)

a78 1
add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1)
@


1.1.1.2.2.4
log
@Pull up following revision(s) (requested by spz in ticket #1458):
	external/mit/expat/dist/AUTHORS: up to 1.1.1.1
	external/mit/expat/dist/CMake.README: up to 1.1.1.4
	external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
	external/mit/expat/dist/COPYING: up to 1.1.1.3
	external/mit/expat/dist/Changes: up to 1.1.1.5
	external/mit/expat/dist/MANIFEST: up to 1.1.1.5
	external/mit/expat/dist/Makefile.in: up to 1.1.1.5
	external/mit/expat/dist/README: up to 1.1.1.5
	external/mit/expat/dist/amiga/Makefile          delete
	external/mit/expat/dist/amiga/README.txt        delete
	external/mit/expat/dist/amiga/expat.xml         delete
	external/mit/expat/dist/amiga/expat_68k.c       delete
	external/mit/expat/dist/amiga/expat_68k.h       delete
	external/mit/expat/dist/amiga/expat_68k_handler_stubs.c delete
	external/mit/expat/dist/amiga/expat_base.h      delete
	external/mit/expat/dist/amiga/expat_lib.c       delete
	external/mit/expat/dist/amiga/expat_vectors.c   delete
	external/mit/expat/dist/amiga/include/inline4/expat.h delete
	external/mit/expat/dist/amiga/include/interfaces/expat.h delete
	external/mit/expat/dist/amiga/include/libraries/expat.h delete
	external/mit/expat/dist/amiga/include/proto/expat.h delete
	external/mit/expat/dist/amiga/launch.c          delete
	external/mit/expat/dist/bcb5/README.txt         delete
	external/mit/expat/dist/bcb5/all_projects.bpg   delete
	external/mit/expat/dist/bcb5/elements.bpf       delete
	external/mit/expat/dist/bcb5/elements.bpr       delete
	external/mit/expat/dist/bcb5/elements.mak       delete
	external/mit/expat/dist/bcb5/expat.bpf          delete
	external/mit/expat/dist/bcb5/expat.bpr          delete
	external/mit/expat/dist/bcb5/expat.mak          delete
	external/mit/expat/dist/bcb5/expat_static.bpf   delete
	external/mit/expat/dist/bcb5/expat_static.bpr   delete
	external/mit/expat/dist/bcb5/expat_static.mak   delete
	external/mit/expat/dist/bcb5/expatw.bpf         delete
	external/mit/expat/dist/bcb5/expatw.bpr         delete
	external/mit/expat/dist/bcb5/expatw.mak         delete
	external/mit/expat/dist/bcb5/expatw_static.bpf  delete
	external/mit/expat/dist/bcb5/expatw_static.bpr  delete
	external/mit/expat/dist/bcb5/expatw_static.mak  delete
	external/mit/expat/dist/bcb5/libexpat_mtd.def   delete
	external/mit/expat/dist/bcb5/libexpatw_mtd.def  delete
	external/mit/expat/dist/bcb5/makefile.mak       delete
	external/mit/expat/dist/bcb5/outline.bpf        delete
	external/mit/expat/dist/bcb5/outline.bpr        delete
	external/mit/expat/dist/bcb5/outline.mak        delete
	external/mit/expat/dist/bcb5/setup.bat          delete
	external/mit/expat/dist/bcb5/xmlwf.bpf          delete
	external/mit/expat/dist/bcb5/xmlwf.bpr          delete
	external/mit/expat/dist/bcb5/xmlwf.mak          delete
	external/mit/expat/dist/configure: up to 1.1.1.5
	external/mit/expat/dist/configure.ac: up to 1.1.1.3
	external/mit/expat/dist/configure.in            delete
	external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
	external/mit/expat/dist/examples/elements.dsp   delete
	external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
	external/mit/expat/dist/examples/outline.dsp    delete
	external/mit/expat/dist/expat.dsw               delete
	external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
	external/mit/expat/dist/lib/Makefile.MPW        delete
	external/mit/expat/dist/lib/amigaconfig.h       delete
	external/mit/expat/dist/lib/expat.dsp           delete
	external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
	external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
	external/mit/expat/dist/lib/expat_static.dsp    delete
	external/mit/expat/dist/lib/expatw.dsp          delete
	external/mit/expat/dist/lib/expatw_static.dsp   delete
	external/mit/expat/dist/lib/macconfig.h         delete
	external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
	external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
	external/mit/expat/dist/lib/xmlparse.c: up to 1.7
	external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
	external/mit/expat/dist/lib/xmltok.c: up to 1.4
	external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
	external/mit/expat/dist/run.sh.in: up to 1.1.1.1
	external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
	external/mit/expat/dist/tests/benchmark/benchmark.dsp delete
	external/mit/expat/dist/tests/benchmark/benchmark.dsw delete
	external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
	external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
	external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
	external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
	external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
	external/mit/expat/dist/tests/xmltest.sh: up to 1.3
	external/mit/expat/dist/vms/README.vms          delete
	external/mit/expat/dist/vms/descrip.mms         delete
	external/mit/expat/dist/vms/expat_config.h      delete
	external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
	external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
	external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
	external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
	external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
	external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
	external/mit/expat/dist/xmlwf/xmlwf.dsp         delete
Update expat to 2.2.1.
@
text
@d9 1
a9 1
set(PACKAGE_VERSION "2.2.1")
a16 2
option(BUILD_doc "build man page for xmlwf" ON)
option(INSTALL "install expat files in cmake install target" ON)
a39 6
set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")

d45 1
d52 2
a53 2
    lib/xmltok.c
    lib/xmltok_impl.c
d72 1
a72 1
set(LIBREVISION 3)  # with
d82 1
a82 7
macro(expat_install)
    if(INSTALL)
        install(${ARGN})
    endif()
endmacro()

expat_install(TARGETS expat RUNTIME DESTINATION bin
d92 5
a96 2
expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
d109 2
a110 11
    expat_install(TARGETS xmlwf DESTINATION bin)
    if(BUILD_doc AND NOT MSVC)
        if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
            set(make_command "$(MAKE)")
        else()
            set(make_command "make")
        endif()

        add_custom_command(TARGET expat PRE_BUILD COMMAND "${make_command}" -C "${PROJECT_SOURCE_DIR}/doc" xmlwf.1)
        expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION share/man/man1)
    endif()
d125 1
a125 1
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c tests/memcheck.c)
d130 1
a130 1
    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c tests/memcheck.c)
@


1.1.1.1.2.1
log
@file CMakeLists.txt was added on branch yamt-pagecache on 2012-04-17 00:04:38 +0000
@
text
@d1 111
@


1.1.1.1.2.2
log
@sync with head
@
text
@a0 111
# This file is copyrighted under the BSD-license for buildsystem files of KDE
# copyright 2010, Patrick Spendrin <ps_ml@@gmx.de>

project(expat)

cmake_minimum_required(VERSION 2.6)
set(PACKAGE_BUGREPORT "expat-bugs@@libexpat.org")
set(PACKAGE_NAME "expat")
set(PACKAGE_VERSION "2.1.0")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}")

option(BUILD_tools "build the xmlwf tool for expat library" ON)
option(BUILD_examples "build the examples for expat library" ON)
option(BUILD_tests "build the tests for expat library" ON)
option(BUILD_shared "build a shared expat library" ON)

# configuration options
set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
option(XML_NS "Define to make XML Namespaces functionality available" ON)

if(XML_DTD)
    set(XML_DTD 1)
else(XML_DTD)
    set(XML_DTD 0)
endif(XML_DTD)
if(XML_NS)
    set(XML_NS 1)
else(XML_NS)
    set(XML_NS 0)
endif(XML_NS)

if(BUILD_tests)
    enable_testing()
endif(BUILD_tests)

include(ConfigureChecks.cmake)

include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif(MSVC)

set(expat_SRCS
    lib/xmlparse.c
    lib/xmlrole.c
    lib/xmltok.c 
    lib/xmltok_impl.c 
    lib/xmltok_ns.c
)

if(WIN32 AND BUILD_shared)
    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
endif(WIN32 AND BUILD_shared)

if(BUILD_shared)
    set(_SHARED SHARED)
else(BUILD_shared)
    set(_SHARED STATIC)
endif(BUILD_shared)

add_library(expat ${_SHARED} ${expat_SRCS})

install(TARGETS expat RUNTIME DESTINATION bin
                      LIBRARY DESTINATION lib
                      ARCHIVE DESTINATION lib)

set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}/bin")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)

install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)



if(BUILD_tools AND NOT WINCE)
    set(xmlwf_SRCS
        xmlwf/xmlwf.c
        xmlwf/xmlfile.c
        xmlwf/codepage.c
        xmlwf/readfilemap.c
    )

    add_executable(xmlwf ${xmlwf_SRCS})
    target_link_libraries(xmlwf expat)
    install(TARGETS xmlwf DESTINATION bin)
    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
endif(BUILD_tools AND NOT WINCE)

if(BUILD_examples)
    add_executable(elements examples/elements.c)
    target_link_libraries(elements expat)

    add_executable(outline examples/outline.c)
    target_link_libraries(outline expat)
endif(BUILD_examples)

if(BUILD_tests)
    ## these are unittests that can be run on any platform
    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
    target_link_libraries(runtests expat)
    add_test(runtests runtests)

    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
    target_link_libraries(runtestspp expat)
    add_test(runtestspp runtestspp)
endif(BUILD_tests)
@


