From 0766540b598a5a1e4d8935bfa2513772f7f1e91b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 9 Jan 2021 09:24:45 +0100 Subject: [PATCH] cmake: use configure_file() for creating the .pc file Escaping in add_custom_target() seems to depend on the shell used in the cmake generator and using Ninja on Windows, which uses cmd.exe, results in stray backslashes in the .pc file. Instead of going through escaping hell just use configure_file() with the existing libzstd.pc.in file already used by the simple Makefile based build system. This fixes the .pc file syntax when building zstd with CMake+Ninja+gcc on Windows. --- build/cmake/lib/CMakeLists.txt | 19 ++++--------------- build/cmake/lib/pkgconfig.cmake | 1 - 2 files changed, 4 insertions(+), 16 deletions(-) delete mode 100644 build/cmake/lib/pkgconfig.cmake diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 088c8760a..f34c950a3 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -137,7 +137,7 @@ endif () if (UNIX OR MINGW) # pkg-config set(PREFIX "${CMAKE_INSTALL_PREFIX}") - set(EXEC_PREFIX "\\$$\{prefix}") + set(EXEC_PREFIX "\${prefix}") set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") set(VERSION "${zstd_VERSION}") @@ -149,24 +149,13 @@ if (UNIX OR MINGW) string(SUBSTRING "${INCLUDEDIR}" ${PREFIX_LENGTH} -1 INCLUDEDIR_SUFFIX) if ("${INCLUDEDIR_PREFIX}" STREQUAL "${PREFIX}") - set(INCLUDEDIR_PREFIX "\\$$\{prefix}") + set(INCLUDEDIR "\${prefix}${INCLUDEDIR_SUFFIX}") endif() if ("${LIBDIR_PREFIX}" STREQUAL "${PREFIX}") - set(LIBDIR_PREFIX "\\$$\{exec_prefix}") + set(LIBDIR "\${exec_prefix}${LIBDIR_SUFFIX}") endif() - add_custom_target(libzstd.pc ALL - ${CMAKE_COMMAND} - -DIN=${LIBRARY_DIR}/libzstd.pc.in - -DOUT="libzstd.pc" - -DPREFIX="${PREFIX}" - -DEXEC_PREFIX="${EXEC_PREFIX}" - -DINCLUDEDIR="${INCLUDEDIR_PREFIX}${INCLUDEDIR_SUFFIX}" - -DLIBDIR="${LIBDIR_PREFIX}${LIBDIR_SUFFIX}" - -DVERSION="${VERSION}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig.cmake - COMMENT "Creating pkg-config file") - + configure_file("${LIBRARY_DIR}/libzstd.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libzstd.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") endif () diff --git a/build/cmake/lib/pkgconfig.cmake b/build/cmake/lib/pkgconfig.cmake deleted file mode 100644 index 8f805a197..000000000 --- a/build/cmake/lib/pkgconfig.cmake +++ /dev/null @@ -1 +0,0 @@ -configure_file("${IN}" "${OUT}" @ONLY) -- 2.47.2