From: Christoph Reiter Date: Sat, 9 Jan 2021 08:24:45 +0000 (+0100) Subject: cmake: use configure_file() for creating the .pc file X-Git-Tag: v1.4.9^2~27^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0766540b598a5a1e4d8935bfa2513772f7f1e91b;p=thirdparty%2Fzstd.git 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. --- 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)