From 634cc999e0dd43d5c11a4abe9fb5e42241f30473 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Fri, 10 Sep 2021 15:56:17 +0200 Subject: autotools-cmake.yml: Add missing full stop --- .github/workflows/autotools-cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autotools-cmake.yml b/.github/workflows/autotools-cmake.yml index 12d5ad62..306c096b 100644 --- a/.github/workflows/autotools-cmake.yml +++ b/.github/workflows/autotools-cmake.yml @@ -120,7 +120,7 @@ jobs: # There is one known difference between Autotools and CMake for MinGW: # Autotools: usr/local/bin/libexpat-.dll # CMake: usr/local/bin/libexpat.dll - # We patch the Autotools side in line here to get the differ below to empty + # We patch the Autotools side in line here to get the differ below to empty. mv build_autotools/ROOT/usr/local/bin/libexpat{-*,}.dll ( cd build_autotools/ROOT/usr/local/lib*/cmake/expat-*/ \ && sed 's,libexpat-[0-9]\+\.dll,libexpat.dll,g' expat-noconfig.cmake > expat-noconfig-patched.cmake \ -- cgit v1.2.1 From 0b7a88b35593b15c97b8f12f0e27ddec7e9ab756 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Wed, 8 Sep 2021 17:57:00 +0200 Subject: Autotools|CMake: Link against libm for function "isnan" $ git --no-pager grep -lw isnan lib/xmlparse.c tests/runtests.c xmlwf/xmlwf.c --- .github/workflows/autotools-cmake.yml | 9 +++++++++ expat/CMakeLists.txt | 16 ++++++++++++++++ expat/Changes | 1 + expat/ConfigureChecks.cmake | 3 +++ expat/cmake/autotools/expat.cmake | 5 +++++ expat/configure.ac | 1 + expat/expat.pc.cmake | 2 +- expat/expat.pc.in | 2 +- expat/lib/Makefile.am | 1 + expat/tests/Makefile.am | 3 +++ expat/xmlwf/Makefile.am | 2 +- 11 files changed, 42 insertions(+), 3 deletions(-) diff --git a/.github/workflows/autotools-cmake.yml b/.github/workflows/autotools-cmake.yml index 306c096b..ed9c94ae 100644 --- a/.github/workflows/autotools-cmake.yml +++ b/.github/workflows/autotools-cmake.yml @@ -74,6 +74,7 @@ jobs: automake \ cmake \ docbook2x \ + gnu-sed \ libtool \ lzip @@ -128,6 +129,14 @@ jobs: && mv expat-noconfig{-patched,}.cmake ) fi + if [[ "${{ runner.os }}" == macOS ]]; then + # Autotools' LT_LIB_M has a hardcoded exclude for "*-*-darwin*" hosts, + # while macOS does have libm and is successfully found by CMake. + # We patch the CMake side in line here to get the differ below to empty. + export PATH="$(brew --prefix)/opt/gnu-sed/libexec/gnubin:${PATH}" + sed 's,-lm,,' -i build_cmake/ROOT/usr/local/lib*/pkgconfig/expat.pc + fi + diff \ --recursive \ --unified \ diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt index dcd9e91f..bccda81c 100644 --- a/expat/CMakeLists.txt +++ b/expat/CMakeLists.txt @@ -380,6 +380,9 @@ else() endif() add_library(expat ${_SHARED} ${expat_SRCS}) +if(_EXPAT_LIBM_FOUND) + target_link_libraries(expat m) +endif() if(EXPAT_WITH_LIBBSD) target_link_libraries(expat ${LIB_BSD}) endif() @@ -446,6 +449,11 @@ if(EXPAT_BUILD_PKGCONFIG) 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 @@ -470,6 +478,9 @@ if(EXPAT_BUILD_TOOLS) add_executable(xmlwf ${xmlwf_SRCS}) set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) target_link_libraries(xmlwf expat) + if(_EXPAT_LIBM_FOUND) + target_link_libraries(xmlwf m) + endif() expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR}) if(MINGW AND _EXPAT_UNICODE_WCHAR_T) @@ -543,6 +554,11 @@ if(EXPAT_BUILD_TESTS) set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) expat_add_test(runtestspp $) + 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}) diff --git a/expat/Changes b/expat/Changes index ed0f4f2b..78ea0832 100644 --- a/expat/Changes +++ b/expat/Changes @@ -4,6 +4,7 @@ NOTE: We are looking for help with a few things: Release 2.4.2 xxx xxx xx xxxx Other changes: + #509 #510 Link againgst libm for function "isnan" #497 Autotools: Include files with release archives: - buildconf.sh - fuzz/*.c diff --git a/expat/ConfigureChecks.cmake b/expat/ConfigureChecks.cmake index d85e48c9..638f0aa2 100644 --- a/expat/ConfigureChecks.cmake +++ b/expat/ConfigureChecks.cmake @@ -2,6 +2,7 @@ include(CheckCCompilerFlag) include(CheckCSourceCompiles) include(CheckIncludeFile) include(CheckIncludeFiles) +include(CheckLibraryExists) include(CheckSymbolExists) include(TestBigEndian) @@ -64,3 +65,5 @@ check_c_source_compiles(" check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) + +check_library_exists(m cos "" _EXPAT_LIBM_FOUND) diff --git a/expat/cmake/autotools/expat.cmake b/expat/cmake/autotools/expat.cmake index cc2eb1f5..82efb436 100644 --- a/expat/cmake/autotools/expat.cmake +++ b/expat/cmake/autotools/expat.cmake @@ -55,8 +55,13 @@ add_library(expat::expat SHARED IMPORTED) set_target_properties(expat::expat PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "m" ) +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + # Load information for each installed configuration. get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) file(GLOB CONFIG_FILES "${_DIR}/expat-*.cmake") diff --git a/expat/configure.ac b/expat/configure.ac index 6c1016e1..44a954fc 100644 --- a/expat/configure.ac +++ b/expat/configure.ac @@ -186,6 +186,7 @@ AM_CONDITIONAL([_INTERNAL_UNICODE_WCHAR_T], [echo -- "${CPPFLAGS}${CFLAGS}" | ${ AM_CONDITIONAL([_INTERNAL_MIN_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_MIN_SIZE >/dev/null]) AM_CONDITIONAL([_INTERNAL_LARGE_SIZE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_LARGE_SIZE >/dev/null]) +LT_LIB_M AC_ARG_WITH([libbsd], [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], diff --git a/expat/expat.pc.cmake b/expat/expat.pc.cmake index 89a401af..948e35ff 100644 --- a/expat/expat.pc.cmake +++ b/expat/expat.pc.cmake @@ -7,5 +7,5 @@ Name: $>_name> Version: $ Description: expat XML parser URL: https://libexpat.github.io/ -Libs: -L${libdir} -l$>_name> +Libs: -L${libdir} -l$>_name> $ Cflags: -I${includedir} diff --git a/expat/expat.pc.in b/expat/expat.pc.in index 3a1a4609..6be6465a 100644 --- a/expat/expat.pc.in +++ b/expat/expat.pc.in @@ -7,5 +7,5 @@ Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ Description: expat XML parser URL: https://libexpat.github.io/ -Libs: -L${libdir} -l@PACKAGE_NAME@ +Libs: -L${libdir} -l@PACKAGE_NAME@ @LIBM@ Cflags: -I${includedir} diff --git a/expat/lib/Makefile.am b/expat/lib/Makefile.am index 4a11c5e4..d5402496 100644 --- a/expat/lib/Makefile.am +++ b/expat/lib/Makefile.am @@ -40,6 +40,7 @@ noinst_LTLIBRARIES = libexpatinternal.la libexpat_la_LDFLAGS = \ @AM_LDFLAGS@ \ + @LIBM@ \ -no-undefined \ -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ diff --git a/expat/tests/Makefile.am b/expat/tests/Makefile.am index b34a1542..cb68e11e 100644 --- a/expat/tests/Makefile.am +++ b/expat/tests/Makefile.am @@ -57,6 +57,9 @@ runtestspp_SOURCES = \ runtests_LDADD = libruntests.a ../lib/libexpatinternal.la runtestspp_LDADD = libruntests.a ../lib/libexpatinternal.la +runtests_LDFLAGS = @AM_LDFLAGS@ @LIBM@ +runtestspp_LDFLAGS = @AM_LDFLAGS@ @LIBM@ + EXTRA_DIST = \ chardata.h \ structdata.h \ diff --git a/expat/xmlwf/Makefile.am b/expat/xmlwf/Makefile.am index f10a8798..3091e09d 100644 --- a/expat/xmlwf/Makefile.am +++ b/expat/xmlwf/Makefile.am @@ -38,7 +38,7 @@ xmlwf_SOURCES = \ @FILEMAP@.c xmlwf_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib -xmlwf_LDFLAGS = @AM_LDFLAGS@ +xmlwf_LDFLAGS = @AM_LDFLAGS@ @LIBM@ if MINGW if UNICODE -- cgit v1.2.1