dep-curl/curl-config.in

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

190 lines
4.7 KiB
Text
Raw Normal View History

#!/bin/sh
2006-05-02 22:48:22 +00:00
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2006-05-02 22:48:22 +00:00
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
2020-11-04 14:02:01 +01:00
# are also available at https://curl.se/docs/copyright.html.
2006-05-02 22:48:22 +00:00
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
2006-05-02 22:48:22 +00:00
# SPDX-License-Identifier: curl
#
2006-05-02 22:48:22 +00:00
###########################################################################
2009-03-20 12:42:29 +00:00
# shellcheck disable=SC2006
GHA/configure-vs-cmake: check `libcurl.pc`/`curl-config`, fix issues Add CI checker to compare `libcurl.pc` and `curl-config` files generated by autotools and cmake builds. Fix differences and apply tiny cleanups: - curl-config: use single-quotes for literals. - curl-config: quote all variables. - curl-config: replace double with single quotes in a substituted value that's always literal (`@prefix@`). - libcurl.pc: spelling in `Description:`. - libcurl.pc: avoid substitution in a comment. - cmake: fill `libdir` with `${exec_prefix}` instead of a literal. To sync with './configure'. - configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes in `curl-config`. - configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`. To sync with CMake. - cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and UNIX. They added these values as seen in CI: MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex` Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s` - cmake: delete FIXME about enabling libssh2 by default. `./configure` has special defaults for these packages (called: "off"): brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp It looks for them, but only at system locations, which makes them never detected e.g. on macOS. CMake doesn't offer such default mode for now. - GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`. - cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR` instead of hardcoded `include`/`lib` when generating `libcurl.pc`. Updates to the GHA workflow: - move autotools out-of-tree and rename cmake out-of-tree directory to `bld_cm` to tell it's cmake. - disable static libcurl for `./configure` to match cmake. - enable `pkg-config` debug output with `./configure`. - dump list of Homebrew packages on macOS. - dump `./configure` detailed logs. - disable zstd and brotli for Linux, to match cmake. There remain differences, mostly due to detection order and method. Also some values are inherently different when using CMake and autotools, such as `--cc`, `--configure`. autotools also generates duplicates for `-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools doesn't. Some build defaults are also different in autotools and cmake. These differences are smoothened out for now by the checker script, or via build options. Notice that lib order (a dupes) _can_ be significant in some cases. E.g. the binutils linker is infamous for that on Windows. Closes #14681
2024-08-25 21:40:13 +02:00
prefix='@prefix@'
# Used in 'libdir'
# shellcheck disable=SC2034
GHA/configure-vs-cmake: check `libcurl.pc`/`curl-config`, fix issues Add CI checker to compare `libcurl.pc` and `curl-config` files generated by autotools and cmake builds. Fix differences and apply tiny cleanups: - curl-config: use single-quotes for literals. - curl-config: quote all variables. - curl-config: replace double with single quotes in a substituted value that's always literal (`@prefix@`). - libcurl.pc: spelling in `Description:`. - libcurl.pc: avoid substitution in a comment. - cmake: fill `libdir` with `${exec_prefix}` instead of a literal. To sync with './configure'. - configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes in `curl-config`. - configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`. To sync with CMake. - cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and UNIX. They added these values as seen in CI: MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex` Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s` - cmake: delete FIXME about enabling libssh2 by default. `./configure` has special defaults for these packages (called: "off"): brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp It looks for them, but only at system locations, which makes them never detected e.g. on macOS. CMake doesn't offer such default mode for now. - GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`. - cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR` instead of hardcoded `include`/`lib` when generating `libcurl.pc`. Updates to the GHA workflow: - move autotools out-of-tree and rename cmake out-of-tree directory to `bld_cm` to tell it's cmake. - disable static libcurl for `./configure` to match cmake. - enable `pkg-config` debug output with `./configure`. - dump list of Homebrew packages on macOS. - dump `./configure` detailed logs. - disable zstd and brotli for Linux, to match cmake. There remain differences, mostly due to detection order and method. Also some values are inherently different when using CMake and autotools, such as `--cc`, `--configure`. autotools also generates duplicates for `-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools doesn't. Some build defaults are also different in autotools and cmake. These differences are smoothened out for now by the checker script, or via build options. Notice that lib order (a dupes) _can_ be significant in some cases. E.g. the binutils linker is infamous for that on Windows. Closes #14681
2024-08-25 21:40:13 +02:00
exec_prefix="@exec_prefix@"
# shellcheck disable=SC2034
GHA/configure-vs-cmake: check `libcurl.pc`/`curl-config`, fix issues Add CI checker to compare `libcurl.pc` and `curl-config` files generated by autotools and cmake builds. Fix differences and apply tiny cleanups: - curl-config: use single-quotes for literals. - curl-config: quote all variables. - curl-config: replace double with single quotes in a substituted value that's always literal (`@prefix@`). - libcurl.pc: spelling in `Description:`. - libcurl.pc: avoid substitution in a comment. - cmake: fill `libdir` with `${exec_prefix}` instead of a literal. To sync with './configure'. - configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes in `curl-config`. - configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`. To sync with CMake. - cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and UNIX. They added these values as seen in CI: MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex` Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s` - cmake: delete FIXME about enabling libssh2 by default. `./configure` has special defaults for these packages (called: "off"): brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp It looks for them, but only at system locations, which makes them never detected e.g. on macOS. CMake doesn't offer such default mode for now. - GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`. - cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR` instead of hardcoded `include`/`lib` when generating `libcurl.pc`. Updates to the GHA workflow: - move autotools out-of-tree and rename cmake out-of-tree directory to `bld_cm` to tell it's cmake. - disable static libcurl for `./configure` to match cmake. - enable `pkg-config` debug output with `./configure`. - dump list of Homebrew packages on macOS. - dump `./configure` detailed logs. - disable zstd and brotli for Linux, to match cmake. There remain differences, mostly due to detection order and method. Also some values are inherently different when using CMake and autotools, such as `--cc`, `--configure`. autotools also generates duplicates for `-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools doesn't. Some build defaults are also different in autotools and cmake. These differences are smoothened out for now by the checker script, or via build options. Notice that lib order (a dupes) _can_ be significant in some cases. E.g. the binutils linker is infamous for that on Windows. Closes #14681
2024-08-25 21:40:13 +02:00
includedir="@includedir@"
usage()
{
cat <<EOF
Usage: curl-config [OPTION]
Available values for OPTION include:
--built-shared says 'yes' if libcurl was built shared
--ca CA bundle install path
--cc compiler
--cflags preprocessor and compiler flags
--checkfor [version] check for (lib)curl of the specified version
--configure the arguments given to configure when building curl
--features newline separated list of enabled features
--help display this help and exit
--libs library linking information
--prefix curl install prefix
--protocols newline separated list of enabled protocols
--ssl-backends output the SSL backends libcurl was built to support
--static-libs static libcurl library linking information
--version output version information
--vernum output version as a hexadecimal number
EOF
exit "$1"
}
if test "$#" -eq 0; then
usage 1
fi
while test "$#" -gt 0; do
case "$1" in
--built-shared)
echo '@ENABLE_SHARED@'
;;
--ca)
echo '@CURL_CA_BUNDLE@'
;;
--cc)
echo '@CC@'
;;
--prefix)
echo "$prefix"
;;
--feature|--features)
GHA/configure-vs-cmake: check `libcurl.pc`/`curl-config`, fix issues Add CI checker to compare `libcurl.pc` and `curl-config` files generated by autotools and cmake builds. Fix differences and apply tiny cleanups: - curl-config: use single-quotes for literals. - curl-config: quote all variables. - curl-config: replace double with single quotes in a substituted value that's always literal (`@prefix@`). - libcurl.pc: spelling in `Description:`. - libcurl.pc: avoid substitution in a comment. - cmake: fill `libdir` with `${exec_prefix}` instead of a literal. To sync with './configure'. - configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes in `curl-config`. - configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`. To sync with CMake. - cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and UNIX. They added these values as seen in CI: MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex` Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s` - cmake: delete FIXME about enabling libssh2 by default. `./configure` has special defaults for these packages (called: "off"): brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp It looks for them, but only at system locations, which makes them never detected e.g. on macOS. CMake doesn't offer such default mode for now. - GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`. - cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR` instead of hardcoded `include`/`lib` when generating `libcurl.pc`. Updates to the GHA workflow: - move autotools out-of-tree and rename cmake out-of-tree directory to `bld_cm` to tell it's cmake. - disable static libcurl for `./configure` to match cmake. - enable `pkg-config` debug output with `./configure`. - dump list of Homebrew packages on macOS. - dump `./configure` detailed logs. - disable zstd and brotli for Linux, to match cmake. There remain differences, mostly due to detection order and method. Also some values are inherently different when using CMake and autotools, such as `--cc`, `--configure`. autotools also generates duplicates for `-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools doesn't. Some build defaults are also different in autotools and cmake. These differences are smoothened out for now by the checker script, or via build options. Notice that lib order (a dupes) _can_ be significant in some cases. E.g. the binutils linker is infamous for that on Windows. Closes #14681
2024-08-25 21:40:13 +02:00
for feature in @SUPPORT_FEATURES@ ''; do
test -n "$feature" && echo "$feature"
done
;;
--protocols)
# shellcheck disable=SC2043
for protocol in @SUPPORT_PROTOCOLS@; do
echo "$protocol"
done
;;
--version)
echo 'libcurl @CURLVERSION@'
exit 0
;;
--checkfor)
GHA/configure-vs-cmake: check `libcurl.pc`/`curl-config`, fix issues Add CI checker to compare `libcurl.pc` and `curl-config` files generated by autotools and cmake builds. Fix differences and apply tiny cleanups: - curl-config: use single-quotes for literals. - curl-config: quote all variables. - curl-config: replace double with single quotes in a substituted value that's always literal (`@prefix@`). - libcurl.pc: spelling in `Description:`. - libcurl.pc: avoid substitution in a comment. - cmake: fill `libdir` with `${exec_prefix}` instead of a literal. To sync with './configure'. - configure: fix `CURL_CA_BUNDLE` value to not generate nested quotes in `curl-config`. - configure: add missing `LDFLAGS` to `Libs.private` in `libcurl.pc`. To sync with CMake. - cmake: skip adding `CMAKE_C_IMPLICIT_LINK_LIBRARIES` for MINGW and UNIX. They added these values as seen in CI: MINGW: `-lmingw32 -lgcc -lmoldname -lmingwex -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex` Linux: `-lgcc -lgcc_s -lc -lgcc -lgcc_s` - cmake: delete FIXME about enabling libssh2 by default. `./configure` has special defaults for these packages (called: "off"): brotli, zstd, libpsl, libssh2, libssh, wolfssl, librtmp It looks for them, but only at system locations, which makes them never detected e.g. on macOS. CMake doesn't offer such default mode for now. - GHA/macos: drop now redundant `-DCURL_DISABLE_LDAPS=ON`. - cmake: use `CMAKE_INSTALL_INCLUDEDIR` and `CMAKE_INSTALL_LIBDIR` instead of hardcoded `include`/`lib` when generating `libcurl.pc`. Updates to the GHA workflow: - move autotools out-of-tree and rename cmake out-of-tree directory to `bld_cm` to tell it's cmake. - disable static libcurl for `./configure` to match cmake. - enable `pkg-config` debug output with `./configure`. - dump list of Homebrew packages on macOS. - dump `./configure` detailed logs. - disable zstd and brotli for Linux, to match cmake. There remain differences, mostly due to detection order and method. Also some values are inherently different when using CMake and autotools, such as `--cc`, `--configure`. autotools also generates duplicates for `-lssl` and `-lcrypto`. macOS LDAP wants to link `-lber` while autotools doesn't. Some build defaults are also different in autotools and cmake. These differences are smoothened out for now by the checker script, or via build options. Notice that lib order (a dupes) _can_ be significant in some cases. E.g. the binutils linker is infamous for that on Windows. Closes #14681
2024-08-25 21:40:13 +02:00
checkfor="$2"
cmajor=`echo "$checkfor" | cut -d. -f1`
cminor=`echo "$checkfor" | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-pre1
cpatch=`echo "$checkfor" | cut -d. -f3 | cut -d- -f1`
vmajor=`echo '@CURLVERSION@' | cut -d. -f1`
vminor=`echo '@CURLVERSION@' | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-pre1
vpatch=`echo '@CURLVERSION@' | cut -d. -f3 | cut -d- -f1`
if test "$vmajor" -gt "$cmajor"; then
exit 0
fi
if test "$vmajor" -eq "$cmajor"; then
if test "$vminor" -gt "$cminor"; then
exit 0
fi
if test "$vminor" -eq "$cminor"; then
if test "$cpatch" -le "$vpatch"; then
exit 0
fi
fi
fi
echo "requested version $checkfor is newer than existing @CURLVERSION@"
exit 1
;;
--vernum)
echo '@VERSIONNUM@'
exit 0
;;
--help)
usage 0
;;
--cflags)
if test "@includedir@" = '/usr/include'; then
echo '@LIBCURL_PC_CFLAGS@'
else
echo "@LIBCURL_PC_CFLAGS@ -I@includedir@"
fi
;;
--libs)
if test "@libdir@" != '/usr/lib' && test "@libdir@" != '/usr/lib64'; then
curllibdir="-L@libdir@ "
else
curllibdir=''
fi
if test '@ENABLE_SHARED@' = 'no'; then
echo "${curllibdir}-lcurl @LIBCURL_PC_LIBS_PRIVATE@"
else
echo "${curllibdir}-lcurl"
fi
;;
--ssl-backends)
echo '@SSL_BACKENDS@'
;;
--static-libs)
if test '@ENABLE_STATIC@' != 'no'; then
echo "@libdir@/libcurl.@libext@ @LIBCURL_PC_LDFLAGS_PRIVATE@ @LIBCURL_PC_LIBS_PRIVATE@"
else
echo 'curl was built with static libraries disabled' >&2
exit 1
fi
;;
--configure)
echo @CONFIGURE_OPTIONS@
;;
*)
echo "unknown option: $1"
usage 1
;;
esac
shift
done
exit 0