aboutsummaryrefslogtreecommitdiffstats
path: root/dists/autogen/m4/pkg_config_utils.m4
blob: 26e2af18824d2afb792d6b1911289e57340f137d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# This file is part of UltraStar Deluxe
# Created by the UltraStar Deluxe Team


# OVERVIEW
#
#   PKG_VALUE(VARIABLE_PREFIX, POSTFIX, COMMAND, MODULE, HELP-STRING)
#   PKG_VERSION(VARIABLE_PREFIX, MODULE)
#   PKG_HAVE(VARIABLE_PREFIX, MODULE, [REQUIRED])
#   AX_TRIM(STRING)

# SYNOPSIS
#
#   PKG_VALUE(VARIABLE_PREFIX, POSTFIX, COMMAND, MODULE, HELP-STRING)
#
# DESCRIPTION
#
#   Calls pkg-config with a given command and stores the result.
#   If the variable was already defined by the user or the package
#   is not present on the system ([$VARIABLE_PREFIX]_HAVE <> yes) 
#   pkg-config will not be executed and the old value remains.
#   In addition the variable will be shown on "./configure --help"
#   described by a given help-string.
#
#   Parameters:
#     - VARIABLE_PREFIX: the prefix for the variables storing 
#                        information about the package.
#     - POSTFIX:         [$VARIABLE_PREFIX]_[$POSTFIX] will contain the value
#     - COMMAND:         a pkg-config command, e.g. "variable=prefix"
#     - MODULE:          the package pkg-config will retrieve info from
#     - HELP-STRING:     description of the variable
#
#   Sets:
#     [$VARIABLE_PREFIX]_[$POSTFIX]   # value (AC_SUBST)

AC_DEFUN([PKG_VALUE],
[
    AC_ARG_VAR([$1]_[$2], [$5, overriding pkg-config])   
    # check if variable was defined by the user
    if test -z "$[$1]_[$2]"; then
        # if not, get it from pkg-config
        if test x$[$1][_HAVE] = xyes; then
            PKG_CHECK_EXISTS([$4],
                [[$1]_[$2]=`$PKG_CONFIG --[$3] --silence-errors "$4"`],
                [# print error message and quit
                 err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "$4"`
                 AC_MSG_ERROR(
[

$err_msg

If --with-[$1]=nocheck is defined the environment variable 
[$1]_[$2]
must be set to avoid the need to call pkg-config.

See the pkg-config man page for more details.
])

                ])
        fi
    fi
    AC_SUBST([$1]_[$2])
])

# SYNOPSIS
#
#   PKG_VERSION(VARIABLE_PREFIX, MODULE)
#
# DESCRIPTION
#
#   Retrieves the version of a package
#
#   Parameters:
#     - VARIABLE_PREFIX: the prefix for the variables storing 
#                        information about the package.
#     - MODULE:          package name according to pkg-config
#
#   Sets:
#     [$VARIABLE_PREFIX]_VERSION         # full version string 
#                                        #   (format: "major.minor.release")
#
#     [$VARIABLE_PREFIX]_VERSION_MAJOR   # major version number
#     [$VARIABLE_PREFIX]_VERSION_MINOR   # minor version number
#     [$VARIABLE_PREFIX]_VERSION_RELEASE # release version number
#
#     [$VARIABLE_PREFIX]_VERSION_INT     # integer representation: 
#                                        #   MMMmmmrrr (M:major,m:minor,r:release)

AC_DEFUN([PKG_VERSION],
[
    if test x$[$1][_HAVE] = xyes; then
        AC_MSG_CHECKING([version of $1])
        PKG_VALUE([$1], [VERSION], [modversion], [$2], [version of $1])   
        AC_MSG_RESULT(@<:@$[$1][_VERSION]@:>@)
    else
        [$1][_VERSION]="0.0.0"
    fi
    AX_EXTRACT_VERSION([$1], $[$1][_VERSION])

    # for avutil: map library version to ffmpeg version
    if test $1 = "libavutil"; then
        AC_MSG_CHECKING([version of ffmpeg])
    	if test $[$1][_VERSION_INT] -le 60000000; then
		if   test $[$1][_VERSION_INT] -ge 52048100; then
			FFMPEG_VERSION="2.1"
		elif test $[$1][_VERSION_INT] -ge 52038100; then
			FFMPEG_VERSION="2.0"
		elif test $[$1][_VERSION_INT] -ge 52018100; then
			FFMPEG_VERSION="1.2"
		elif test $[$1][_VERSION_INT] -ge 52013100; then
			FFMPEG_VERSION="1.1"
		elif test $[$1][_VERSION_INT] -ge 51073101; then
			FFMPEG_VERSION="1.0"
		elif test $[$1][_VERSION_INT] -ge 51054100; then
			FFMPEG_VERSION="0.11"
		elif test $[$1][_VERSION_INT] -ge 51034101; then
			FFMPEG_VERSION="0.10"
		elif test $[$1][_VERSION_INT] -ge 51032000; then
			FFMPEG_VERSION="0.9"
		elif test $[$1][_VERSION_INT] -ge 51009001; then
			FFMPEG_VERSION="0.8"
		elif test $[$1][_VERSION_INT] -ge 50043000; then
			FFMPEG_VERSION="0.7"
		else
			FFMPEG_VERSION="0"
		fi
	else
		FFMPEG_VERSION="0"
	fi
        AX_EXTRACT_VERSION(FFMPEG, $FFMPEG_VERSION)
        AC_SUBST(FFMPEG_VERSION)
        AC_MSG_RESULT(@<:@$FFMPEG_VERSION@:>@)
    fi
])

# SYNOPSIS
#
#   AX_TRIM(STRING)
#
# DESCRIPTION
#
#   Removes surrounding whitespace

AC_DEFUN([AX_TRIM],
[
    echo "[$1]" | $SED 's/^[[ \t]]*//' | $SED 's/[[ \t]]*$//'
])

# SYNOPSIS
#
#   PKG_HAVE(VARIABLE_PREFIX, MODULE, [REQUIRED])
#
# DESCRIPTION
#
#   Checks with pkg-config if a package exists and retrieves 
#   information about it.
#
#   Parameters:
#     - VARIABLE_PREFIX: the prefix for the variables storing information about the package.
#     - MODULE:   package name according to pkg-config
#     - REQUIRED: if true, the configure-script is aborted if the package was not found
# 
#   Uses:
#     with_[$VARIABLE_PREFIX]: whether and how the package should be checked for
#       "check":   check for the package but do not abort if it does not exist (default)
#       "no":      do not check for the package (sets _HAVE to "no" and _VERSION to "0.0.0")
#       "yes":     check for the package and abort if it does not exist
#       "nocheck": do not check for the package (sets _HAVE to "yes")
# 
#   Sets:
#     [$VARIABLE_PREFIX]_HAVE       # package is available (values: "yes"|"no")
#     [$VARIABLE_PREFIX]_LIBS       # linker flags (e.g. -Lmylibdir -lmylib)
#     [$VARIABLE_PREFIX]_LIBDIRS    # library dirs (e.g. -Lmylibdir)

AC_DEFUN([PKG_HAVE],
[
    have_lib="no"
    AC_MSG_CHECKING([for $2])
    if test x"$with_[$1]" = xnocheck; then
        # do not call pkg-config, use user settings
        have_lib="yes"
    elif test x"$with_[$1]" != xno; then
        # check if package exists
	PKG_CHECK_EXISTS([$2], [
            have_lib="yes"
            [$1][_LIBS]=`$PKG_CONFIG --libs --silence-errors "$2"`
            [$1][_LIBDIRS]=`$PKG_CONFIG --libs-only-L --silence-errors "$2"`
            [$1][_LIBDIRS]=`AX_TRIM($[$1][_LIBDIRS])`
            # add library directories to LIBS (ignore *_LIBS for now)
	    if test -n "$[$1][_LIBDIRS]"; then
                LIBS="$LIBS $[$1][_LIBDIRS]"
            fi
        ])
    fi
    if test x$have_lib = xyes; then
        [$1][_HAVE]="yes"
        if test -n "$[$1][_LIBDIRS]"; then
            # show additional lib-dirs
            AC_MSG_RESULT(yes [(]$[$1][_LIBDIRS][)])
        else
            AC_MSG_RESULT(yes)
        fi
    else
        [$1][_HAVE]="no"
        AC_MSG_RESULT(no)

        # check if package is required
        if test x$3 = xyes -o x"$with_[$1]" = xyes ; then
            # print error message and quit
            err_msg=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
            AC_MSG_ERROR(
[

$err_msg

Alternatively, you may set --with-[$1]=nocheck and the environment
variables [$1]_[[...]] (see configure --help) 
to appropriate values to avoid the need to call pkg-config.

See the pkg-config man page for more details.
])
        fi
    fi
])