summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2021-06-03 15:41:47 +0200
committerSebastian Pipping <sebastian@pipping.org>2021-07-06 16:22:38 +0200
commit3486fd6e3d2bc269660cedd3befa1ae649d1dcf4 (patch)
tree6195052f5ec8aa741ec5f01c6f9ad470783ef29e
parent7cf97a9bda1b67cd2adba6d972b693aff0d8b875 (diff)
downloadlibexpat-git-3486fd6e3d2bc269660cedd3befa1ae649d1dcf4.tar.gz
CMake: Fix pkg-config section "Libs" for non-release MinGW builds
-rw-r--r--expat/CMakeLists.txt74
-rw-r--r--expat/Changes5
-rw-r--r--expat/configure.ac4
-rw-r--r--expat/expat.pc.in4
4 files changed, 44 insertions, 43 deletions
diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt
index c6b0172f..ae9cdb69 100644
--- a/expat/CMakeLists.txt
+++ b/expat/CMakeLists.txt
@@ -326,34 +326,37 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
endif()
-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()
+#
+# 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(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()
+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()
- set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. libexpat<postfix=[w][d][MD|MT]>.lib")
- endforeach()
-endif()
+ set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix, e.g. libexpat<postfix=[w][d][MD|MT]>.lib")
+endforeach()
#
# C library
@@ -376,17 +379,6 @@ else()
set(_SHARED STATIC)
endif()
-# Avoid colliding with Expat.dll of Perl's XML::Parser::Expat
-if(WIN32 AND NOT MINGW)
- set(_EXPAT_OUTPUT_NAME libexpat) # CMAKE_*_POSTFIX applies, see above
-else()
- if(_EXPAT_UNICODE)
- set(_EXPAT_OUTPUT_NAME expatw)
- else()
- set(_EXPAT_OUTPUT_NAME expat)
- endif()
-endif()
-
add_library(expat ${_SHARED} ${expat_SRCS})
if(EXPAT_WITH_LIBBSD)
target_link_libraries(expat ${LIB_BSD})
@@ -397,12 +389,17 @@ set(LIBREVISION 1) # with
set(LIBAGE 8) # configure.ac!
math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}")
-set_property(TARGET expat PROPERTY OUTPUT_NAME "${_EXPAT_OUTPUT_NAME}")
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()
+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.
+ set_property(TARGET expat PROPERTY PREFIX lib)
+endif()
target_include_directories(expat
INTERFACE
@@ -428,6 +425,7 @@ expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL
if(EXPAT_BUILD_PKGCONFIG)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}")
+ set(_EXPAT_LIBRARY_NAME "expat${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
if(CMAKE_INSTALL_LIBDIR MATCHES "^/")
set(libdir "${CMAKE_INSTALL_LIBDIR}")
@@ -746,9 +744,7 @@ 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 " Library name postfix ....... ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
message(STATUS "")
message(STATUS " Build documentation ........ ${EXPAT_BUILD_DOCS}")
message(STATUS " Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
diff --git a/expat/Changes b/expat/Changes
index 2def0acc..42bae977 100644
--- a/expat/Changes
+++ b/expat/Changes
@@ -7,6 +7,11 @@ Release 2.4.2 xxx xxx xx xxxx
#497 Autotools: Include files with release archives:
- buildconf.sh
- fuzz/*.c
+ #495 CMake: MinGW: Fix pkg-config section "Libs" for non-release
+ build types (e.g. -DCMAKE_BUILD_TYPE=Debug)
+
+ Special thanks to:
+ Kai Pastor
Release 2.4.1 Sun May 23 2021
Bug fixes:
diff --git a/expat/configure.ac b/expat/configure.ac
index b27b59e8..edc95ea4 100644
--- a/expat/configure.ac
+++ b/expat/configure.ac
@@ -394,8 +394,8 @@ AC_SUBST([AM_CFLAGS])
AC_SUBST([AM_CXXFLAGS])
AC_SUBST([AM_LDFLAGS])
-dnl updating _EXPAT_OUTPUT_NAME variable to effect the package name in expat.pc file (issue #361)
-AC_SUBST(_EXPAT_OUTPUT_NAME, ["$PACKAGE_NAME"])
+dnl updating _EXPAT_LIBRARY_NAME variable to effect the package name in expat.pc file (issues #361 and #495)
+AC_SUBST(_EXPAT_LIBRARY_NAME, ["$PACKAGE_NAME"])
AS_CASE("${host_os}",
[darwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__macos.cmake.in],
diff --git a/expat/expat.pc.in b/expat/expat.pc.in
index bdfa47f8..b6834a69 100644
--- a/expat/expat.pc.in
+++ b/expat/expat.pc.in
@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
-Name: @_EXPAT_OUTPUT_NAME@
+Name: @_EXPAT_LIBRARY_NAME@
Version: @PACKAGE_VERSION@
Description: expat XML parser
URL: http://www.libexpat.org
-Libs: -L${libdir} -l@_EXPAT_OUTPUT_NAME@
+Libs: -L${libdir} -l@_EXPAT_LIBRARY_NAME@
Cflags: -I${includedir}