Merge pull request #2421 from felixhandte/pc-no-sed
Don't Use Regexes to Build Pkg-Config File
This commit is contained in:
@@ -137,12 +137,33 @@ endif ()
|
|||||||
if (UNIX OR MINGW)
|
if (UNIX OR MINGW)
|
||||||
# pkg-config
|
# pkg-config
|
||||||
set(PREFIX "${CMAKE_INSTALL_PREFIX}")
|
set(PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(LIBDIR "${CMAKE_INSTALL_LIBDIR}")
|
set(EXEC_PREFIX "\\$$\{prefix}")
|
||||||
set(INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
|
set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
|
||||||
|
set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
|
||||||
set(VERSION "${zstd_VERSION}")
|
set(VERSION "${zstd_VERSION}")
|
||||||
|
|
||||||
|
string(LENGTH "${PREFIX}" PREFIX_LENGTH)
|
||||||
|
string(SUBSTRING "${LIBDIR}" 0 ${PREFIX_LENGTH} LIBDIR_PREFIX)
|
||||||
|
string(SUBSTRING "${LIBDIR}" ${PREFIX_LENGTH} -1 LIBDIR_SUFFIX)
|
||||||
|
string(SUBSTRING "${INCLUDEDIR}" 0 ${PREFIX_LENGTH} INCLUDEDIR_PREFIX)
|
||||||
|
string(SUBSTRING "${INCLUDEDIR}" ${PREFIX_LENGTH} -1 INCLUDEDIR_SUFFIX)
|
||||||
|
|
||||||
|
if ("${INCLUDEDIR_PREFIX}" STREQUAL "${PREFIX}")
|
||||||
|
set(INCLUDEDIR_PREFIX "\\$$\{prefix}")
|
||||||
|
endif()
|
||||||
|
if ("${LIBDIR_PREFIX}" STREQUAL "${PREFIX}")
|
||||||
|
set(LIBDIR_PREFIX "\\$$\{exec_prefix}")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_target(libzstd.pc ALL
|
add_custom_target(libzstd.pc ALL
|
||||||
${CMAKE_COMMAND} -DIN="${LIBRARY_DIR}/libzstd.pc.in" -DOUT="libzstd.pc"
|
${CMAKE_COMMAND}
|
||||||
-DPREFIX="${PREFIX}" -DLIBDIR="${LIBDIR}" -DINCLUDEDIR="${INCLUDEDIR}" -DVERSION="${VERSION}"
|
-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"
|
-P "${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig.cmake"
|
||||||
COMMENT "Creating pkg-config file")
|
COMMENT "Creating pkg-config file")
|
||||||
|
|
||||||
|
|||||||
+16
-19
@@ -353,6 +353,8 @@ ifneq (,$(filter $(UNAME),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD D
|
|||||||
|
|
||||||
all: libzstd.pc
|
all: libzstd.pc
|
||||||
|
|
||||||
|
HAS_EXPLICIT_EXEC_PREFIX := $(if $(or $(EXEC_PREFIX),$(exec_prefix)),1,)
|
||||||
|
|
||||||
DESTDIR ?=
|
DESTDIR ?=
|
||||||
# directory variables : GNU conventions prefer lowercase
|
# directory variables : GNU conventions prefer lowercase
|
||||||
# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
|
# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
|
||||||
@@ -366,24 +368,17 @@ LIBDIR ?= $(libdir)
|
|||||||
includedir ?= $(PREFIX)/include
|
includedir ?= $(PREFIX)/include
|
||||||
INCLUDEDIR ?= $(includedir)
|
INCLUDEDIR ?= $(includedir)
|
||||||
|
|
||||||
PCLIBDIR ?= $(shell echo "$(LIBDIR)" | sed -n $(SED_ERE_OPT) -e "s@^$(EXEC_PREFIX)(/|$$)@@p")
|
PCINCDIR := $(patsubst $(PREFIX)%,%,$(INCLUDEDIR))
|
||||||
PCINCDIR ?= $(shell echo "$(INCLUDEDIR)" | sed -n $(SED_ERE_OPT) -e "s@^$(PREFIX)(/|$$)@@p")
|
PCLIBDIR := $(patsubst $(EXEC_PREFIX)%,%,$(LIBDIR))
|
||||||
|
|
||||||
ifeq (,$(PCLIBDIR))
|
# If we successfully stripped off a prefix, we'll add a reference to the
|
||||||
# Additional prefix check is required, since the empty string is technically a
|
# relevant pc variable.
|
||||||
# valid PCLIBDIR
|
PCINCPREFIX := $(if $(findstring $(INCLUDEDIR),$(PCINCDIR)),,$${prefix})
|
||||||
ifeq (,$(shell echo "$(LIBDIR)" | sed -n $(SED_ERE_OPT) -e "\\@^$(EXEC_PREFIX)(/|$$)@ p"))
|
PCLIBPREFIX := $(if $(findstring $(LIBDIR),$(PCLIBDIR)),,$${exec_prefix})
|
||||||
$(error configured libdir ($(LIBDIR)) is outside of prefix ($(EXEC_PREFIX)), can't generate pkg-config file)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (,$(PCINCDIR))
|
# If no explicit EXEC_PREFIX was set by the caller, write it out as a reference
|
||||||
# Additional prefix check is required, since the empty string is technically a
|
# to PREFIX, rather than as a resolved value.
|
||||||
# valid PCINCDIR
|
PCEXEC_PREFIX := $(if $(HAS_EXPLICIT_EXEC_PREFIX),$(EXEC_PREFIX),$${prefix})
|
||||||
ifeq (,$(shell echo "$(INCLUDEDIR)" | sed -n $(SED_ERE_OPT) -e "\\@^$(PREFIX)(/|$$)@ p"))
|
|
||||||
$(error configured includedir ($(INCLUDEDIR)) is outside of exec_prefix ($(PREFIX)), can't generate pkg-config file)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
|
ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
|
||||||
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
||||||
@@ -404,9 +399,11 @@ INSTALL_DATA ?= $(INSTALL) -m 644
|
|||||||
libzstd.pc:
|
libzstd.pc:
|
||||||
libzstd.pc: libzstd.pc.in
|
libzstd.pc: libzstd.pc.in
|
||||||
@echo creating pkgconfig
|
@echo creating pkgconfig
|
||||||
@sed $(SED_ERE_OPT) -e 's|@PREFIX@|$(PREFIX)|' \
|
@sed $(SED_ERE_OPT) \
|
||||||
-e 's|@LIBDIR@|$(PCLIBDIR)|' \
|
-e 's|@PREFIX@|$(PREFIX)|' \
|
||||||
-e 's|@INCLUDEDIR@|$(PCINCDIR)|' \
|
-e 's|@EXEC_PREFIX@|$(PCEXEC_PREFIX)|' \
|
||||||
|
-e 's|@INCLUDEDIR@|$(PCINCPREFIX)$(PCINCDIR)|' \
|
||||||
|
-e 's|@LIBDIR@|$(PCLIBPREFIX)$(PCLIBDIR)|' \
|
||||||
-e 's|@VERSION@|$(VERSION)|' \
|
-e 's|@VERSION@|$(VERSION)|' \
|
||||||
$< >$@
|
$< >$@
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -3,9 +3,9 @@
|
|||||||
# BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
# BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||||
|
|
||||||
prefix=@PREFIX@
|
prefix=@PREFIX@
|
||||||
exec_prefix=${prefix}
|
exec_prefix=@EXEC_PREFIX@
|
||||||
includedir=${prefix}/@INCLUDEDIR@
|
includedir=@INCLUDEDIR@
|
||||||
libdir=${exec_prefix}/@LIBDIR@
|
libdir=@LIBDIR@
|
||||||
|
|
||||||
Name: zstd
|
Name: zstd
|
||||||
Description: fast lossless compression algorithm library
|
Description: fast lossless compression algorithm library
|
||||||
|
|||||||
Reference in New Issue
Block a user