77#
88# Copyright (c) 2010 Patrick Spendrin <ps_ml@gmx.de>
99# Copyright (c) 2012 Karl Waclawek <karl@waclawek.net>
10- # Copyright (c) 2016-2025 Sebastian Pipping <sebastian@pipping.org>
10+ # Copyright (c) 2016-2026 Sebastian Pipping <sebastian@pipping.org>
1111# Copyright (c) 2016 Sergei Nikulov <sergey.nikulov@gmail.com>
1212# Copyright (c) 2016 Björn Lindahl <bjorn.lindahl@foi.se>
1313# Copyright (c) 2016 Tobias Taschner <github@tc84.de>
3232# Copyright (c) 2022 Johnny Jazeix <jazeix@gmail.com>
3333# Copyright (c) 2022 Mark Brand <markbrand@google.com>
3434# Copyright (c) 2022 David Faure <david.faure@kdab.com>
35+ # Copyright (c) 2025 Alfonso Gregory <gfunni234@gmail.com>
36+ # Copyright (c) 2026 Rosen Penev <rosenp@gmail.com>
37+ # Copyright (c) 2026 Gordon Messmer <gordon.messmer@gmail.com>
3538# Unlike most of Expat,
3639# this file is copyrighted under the BSD-license for buildsystem files of KDE.
3740
38- cmake_minimum_required (VERSION 3.15 .0 )
41+ cmake_minimum_required (VERSION 3.17 .0 )
3942
4043if (0) # ITK --start
4144project (expat
4245 VERSION
43- 2.7.2
46+ 2.7.4
4447 LANGUAGES
4548 C
4649)
@@ -154,12 +157,10 @@ expat_shy_set(EXPAT_BUILD_DOCS ${_EXPAT_BUILD_DOCS_DEFAULT} CACHE BOOL "Build ma
154157expat_shy_set (EXPAT_BUILD_FUZZERS OFF CACHE BOOL "Build fuzzers for the expat library" )
155158expat_shy_set (EXPAT_BUILD_PKGCONFIG ${_EXPAT_BUILD_PKGCONFIG_DEFAULT} CACHE BOOL "Build pkg-config file" )
156159expat_shy_set (EXPAT_OSSFUZZ_BUILD OFF CACHE BOOL "Build fuzzers via OSS-Fuzz for the expat library" )
157- if (UNIX OR _EXPAT_HELP)
158- expat_shy_set (EXPAT_WITH_LIBBSD OFF CACHE BOOL "Utilize libbsd (for arc4random_buf)" )
159- endif ()
160160expat_shy_set (EXPAT_ENABLE_INSTALL ON CACHE BOOL "Install expat files in cmake install target" )
161161expat_shy_set (EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point, 0 to disable" )
162162mark_as_advanced (EXPAT_CONTEXT_BYTES )
163+ expat_shy_set (EXPAT_SYMBOL_VERSIONING OFF CACHE BOOL "Define to provide symbol versioning for dependency generation" )
163164expat_shy_set (EXPAT_DTD ON CACHE BOOL "Define to make parameter entity parsing functionality available" )
164165mark_as_advanced (EXPAT_DTD )
165166expat_shy_set (EXPAT_GE ON CACHE BOOL "Define to make general entity parsing functionality available" )
@@ -214,15 +215,6 @@ if(EXPAT_DTD AND NOT EXPAT_GE)
214215 message (SEND_ERROR "Please either enable option EXPAT_GE (recommended) or disable EXPAT_DTD also." )
215216endif ()
216217
217- if (EXPAT_WITH_LIBBSD)
218- find_library (LIB_BSD NAMES bsd )
219- if (NOT LIB_BSD)
220- message (SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found" )
221- else ()
222- set (HAVE_LIBBSD TRUE )
223- endif ()
224- endif ()
225-
226218if (MSVC )
227219 # For the three types of MSVC version values, please see:
228220 # - https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html
@@ -350,8 +342,8 @@ configure_file(itk_expat_mangle.h.in
350342# ITK --stop
351343
352344set (EXTRA_COMPILE_FLAGS)
353- if (FLAG_NO_STRICT_ALIASING )
354- set (EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict- aliasing" )
345+ if (FLAG_WSTRICT_ALIASING )
346+ set (EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Wstrict- aliasing=3 " )
355347endif ()
356348if (FLAG_VISIBILITY)
357349 if (EXPAT_SHARED_LIBS)
@@ -434,6 +426,12 @@ set(_EXPAT_C_SOURCES
434426
435427if (EXPAT_SHARED_LIBS)
436428 set (_SHARED SHARED)
429+ if (EXPAT_DTD OR EXPAT_GE)
430+ set (_EXPAT_DTD_OR_GE TRUE )
431+ else ()
432+ set (_EXPAT_DTD_OR_GE FALSE )
433+ endif ()
434+
437435 #[[ ITK --start ITK does not use the .def file for MSVC
438436 if(WIN32)
439437 macro(_expat_def_file_toggle source_var target_var)
@@ -444,12 +442,6 @@ if(EXPAT_SHARED_LIBS)
444442 endif()
445443 endmacro()
446444
447- if(EXPAT_DTD OR EXPAT_GE)
448- set(_EXPAT_DTD_OR_GE TRUE)
449- else()
450- set(_EXPAT_DTD_OR_GE FALSE)
451- endif()
452-
453445 _expat_def_file_toggle(_EXPAT_DTD_OR_GE _EXPAT_COMMENT_DTD_OR_GE)
454446 _expat_def_file_toggle(EXPAT_ATTR_INFO _EXPAT_COMMENT_ATTR_INFO)
455447
@@ -460,6 +452,20 @@ if(EXPAT_SHARED_LIBS)
460452 string(REPLACE "." "," _EXPAT_DLL_VERSION ${PROJECT_VERSION}.0)
461453 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/win32/version.rc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
462454 set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/win32/version.rc")
455+ else()
456+ macro(_expat_map_file_toggle source_var target_var)
457+ if(${source_var})
458+ set(${target_var} " ") # i.e. not commented out, a single space
459+ else()
460+ set(${target_var} "#") # i.e. commented out
461+ endif()
462+ endmacro()
463+
464+ _expat_map_file_toggle(_EXPAT_DTD_OR_GE _EXPAT_COMMENT_DTD_OR_GE)
465+ _expat_map_file_toggle(EXPAT_ATTR_INFO _EXPAT_COMMENT_ATTR_INFO)
466+
467+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lib/libexpat.map.in" "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.map")
468+ set(_EXPAT_EXTRA_SOURCES ${_EXPAT_EXTRA_SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.map")
463469 endif()
464470 #]] # ITK --stop
465471else ()
@@ -472,9 +478,6 @@ add_library(expat::expat ALIAS expat)
472478if(_EXPAT_LIBM_FOUND)
473479 target_link_libraries(expat m)
474480endif()
475- if(EXPAT_WITH_LIBBSD)
476- target_link_libraries(expat ${LIB_BSD})
477- endif()
478481
479482#]]
480483# ITK -start
@@ -558,20 +561,19 @@ foreach(build_type_upper
558561endforeach()
559562
560563set(LIBCURRENT 12) # sync
561- set(LIBREVISION 0 ) # with
564+ set(LIBREVISION 2 ) # with
562565set(LIBAGE 11) # configure.ac!
563566math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")
564567
565568if(NOT WIN32)
566569 set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION})
567570 set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE})
568571 set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME})
572+ if(EXPAT_SYMBOL_VERSIONING)
573+ set_property(TARGET expat PROPERTY LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/lib/libexpat.map")
574+ endif()
569575
570576 if(APPLE)
571- if(NOT CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
572- message(FATAL_ERROR "Expat requires CMake >=3.17 on platform \"APPLE\".")
573- endif()
574-
575577 # NOTE: This intends to talk CMake into compatibility with GNU Libtool
576578 math(EXPR _EXPAT_MACHO_COMPATIBILITY_VERSION "${LIBCURRENT} + 1")
577579 set(_EXPAT_MACHO_CURRENT_VERSION "${_EXPAT_MACHO_COMPATIBILITY_VERSION}.${LIBREVISION}")
@@ -776,10 +778,6 @@ if(EXPAT_BUILD_TESTS)
776778 if(_EXPAT_LIBM_FOUND)
777779 target_link_libraries(${_target} m)
778780 endif()
779-
780- if(EXPAT_WITH_LIBBSD)
781- target_link_libraries(${_target} ${LIB_BSD})
782- endif()
783781 endforeach()
784782
785783 add_executable(benchmark tests/benchmark/benchmark.c)
@@ -1105,7 +1103,6 @@ if(WIN32)
11051103else()
11061104 message(STATUS " getrandom ................ ${HAVE_GETRANDOM}")
11071105 message(STATUS " syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
1108- message(STATUS " libbsd ................... ${EXPAT_WITH_LIBBSD}")
11091106 message(STATUS " /dev/random .............. ${EXPAT_DEV_URANDOM}")
11101107endif()
11111108message(STATUS "")
0 commit comments