xref: /curl/curl-config.in (revision 9f56bb60)
1#!/bin/sh
2#***************************************************************************
3#                                  _   _ ____  _
4#  Project                     ___| | | |  _ \| |
5#                             / __| | | | |_) | |
6#                            | (__| |_| |  _ <| |___
7#                             \___|\___/|_| \_\_____|
8#
9# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
10#
11# This software is licensed as described in the file COPYING, which
12# you should have received as part of this distribution. The terms
13# are also available at https://curl.se/docs/copyright.html.
14#
15# You may opt to use, copy, modify, merge, publish, distribute and/or sell
16# copies of the Software, and permit persons to whom the Software is
17# furnished to do so, under the terms of the COPYING file.
18#
19# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20# KIND, either express or implied.
21#
22# SPDX-License-Identifier: curl
23#
24###########################################################################
25
26# shellcheck disable=SC2006
27
28prefix='@prefix@'
29# Used in 'libdir'
30# shellcheck disable=SC2034
31exec_prefix="@exec_prefix@"
32# shellcheck disable=SC2034
33includedir="@includedir@"
34cppflag_curl_staticlib='@LIBCURL_PC_CFLAGS@'
35
36usage()
37{
38  cat <<EOF
39Usage: curl-config [OPTION]
40
41Available values for OPTION include:
42
43  --built-shared says 'yes' if libcurl was built shared
44  --ca                  CA bundle install path
45  --cc                  compiler
46  --cflags              preprocessor and compiler flags
47  --checkfor [version]  check for (lib)curl of the specified version
48  --configure           the arguments given to configure when building curl
49  --features            newline separated list of enabled features
50  --help                display this help and exit
51  --libs                library linking information
52  --prefix              curl install prefix
53  --protocols           newline separated list of enabled protocols
54  --ssl-backends        output the SSL backends libcurl was built to support
55  --static-libs         static libcurl library linking information
56  --version             output version information
57  --vernum              output version as a hexadecimal number
58EOF
59
60  exit "$1"
61}
62
63if test "$#" -eq 0; then
64  usage 1
65fi
66
67while test "$#" -gt 0; do
68  case "$1" in
69  --built-shared)
70    echo '@ENABLE_SHARED@'
71    ;;
72
73  --ca)
74    echo '@CURL_CA_BUNDLE@'
75    ;;
76
77  --cc)
78    echo '@CC@'
79    ;;
80
81  --prefix)
82    echo "$prefix"
83    ;;
84
85  --feature|--features)
86    for feature in @SUPPORT_FEATURES@ ''; do
87      test -n "$feature" && echo "$feature"
88    done
89    ;;
90
91  --protocols)
92    # shellcheck disable=SC2043
93    for protocol in @SUPPORT_PROTOCOLS@; do
94      echo "$protocol"
95    done
96    ;;
97
98  --version)
99    echo 'libcurl @CURLVERSION@'
100    exit 0
101    ;;
102
103  --checkfor)
104    checkfor="$2"
105    cmajor=`echo "$checkfor" | cut -d. -f1`
106    cminor=`echo "$checkfor" | cut -d. -f2`
107    # when extracting the patch part we strip off everything after a
108    # dash as that's used for things like version 1.2.3-pre1
109    cpatch=`echo "$checkfor" | cut -d. -f3 | cut -d- -f1`
110
111    vmajor=`echo '@CURLVERSION@' | cut -d. -f1`
112    vminor=`echo '@CURLVERSION@' | cut -d. -f2`
113    # when extracting the patch part we strip off everything after a
114    # dash as that's used for things like version 1.2.3-pre1
115    vpatch=`echo '@CURLVERSION@' | cut -d. -f3 | cut -d- -f1`
116
117    if test "$vmajor" -gt "$cmajor"; then
118      exit 0
119    fi
120    if test "$vmajor" -eq "$cmajor"; then
121      if test "$vminor" -gt "$cminor"; then
122        exit 0
123      fi
124      if test "$vminor" -eq "$cminor"; then
125        if test "$cpatch" -le "$vpatch"; then
126          exit 0
127        fi
128      fi
129    fi
130
131    echo "requested version $checkfor is newer than existing @CURLVERSION@"
132    exit 1
133    ;;
134
135  --vernum)
136    echo '@VERSIONNUM@'
137    exit 0
138    ;;
139
140  --help)
141    usage 0
142    ;;
143
144  --cflags)
145    if test "X$cppflag_curl_staticlib" = 'X-DCURL_STATICLIB'; then
146      CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB '
147    else
148      CPPFLAG_CURL_STATICLIB=''
149    fi
150    if test "X@includedir@" = 'X/usr/include'; then
151      echo "${CPPFLAG_CURL_STATICLIB}"
152    else
153      echo "${CPPFLAG_CURL_STATICLIB}-I@includedir@"
154    fi
155    ;;
156
157  --libs)
158    if test "X@libdir@" != 'X/usr/lib' -a "X@libdir@" != 'X/usr/lib64'; then
159      CURLLIBDIR="-L@libdir@ "
160    else
161      CURLLIBDIR=''
162    fi
163    if test 'X@ENABLE_SHARED@' = 'Xno'; then
164      echo "${CURLLIBDIR}-lcurl @LIBCURL_PC_LIBS_PRIVATE@"
165    else
166      echo "${CURLLIBDIR}-lcurl"
167    fi
168    ;;
169
170  --ssl-backends)
171    echo '@SSL_BACKENDS@'
172    ;;
173
174  --static-libs)
175    if test 'X@ENABLE_STATIC@' != 'Xno'; then
176      echo "@libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_PC_LIBS_PRIVATE@"
177    else
178      echo 'curl was built with static libraries disabled' >&2
179      exit 1
180    fi
181    ;;
182
183  --configure)
184    echo @CONFIGURE_OPTIONS@
185    ;;
186
187  *)
188    echo "unknown option: $1"
189    usage 1
190    ;;
191  esac
192  shift
193done
194
195exit 0
196