1 dnl Perform a check for a feature for GStreamer
2 dnl Richard Boulton <richard-alsa@tartarus.org>
3 dnl Thomas Vander Stichele <thomas@apestaart.org> added useful stuff
4 dnl Last modification: 25/06/2001
5 dnl AG_GST_CHECK_FEATURE(FEATURE-NAME, FEATURE-DESCRIPTION,
6 dnl DEPENDENT-PLUGINS, TEST-FOR-FEATURE,
7 dnl DISABLE-BY-DEFAULT, ACTION-IF-USE, ACTION-IF-NOTUSE)
9 dnl This macro adds a command line argument to allow the user to enable
10 dnl or disable a feature, and if the feature is enabled, performs a supplied
11 dnl test to check if the feature is available.
13 dnl The test should define HAVE_<FEATURE-NAME> to "yes" or "no" depending
14 dnl on whether the feature is available.
16 dnl The macro will set USE_<FEATURE-NAME> to "yes" or "no" depending on
17 dnl whether the feature is to be used.
18 dnl Thomas changed this, so that when USE_<FEATURE-NAME> was already set
19 dnl to no, then it stays that way.
21 dnl The macro will call AM_CONDITIONAL(USE_<<FEATURE-NAME>, ...) to allow
22 dnl the feature to control what is built in Makefile.ams. If you want
23 dnl additional actions resulting from the test, you can add them with the
24 dnl ACTION-IF-USE and ACTION-IF-NOTUSE parameters.
26 dnl FEATURE-NAME is the name of the feature, and should be in
27 dnl purely upper case characters.
28 dnl FEATURE-DESCRIPTION is used to describe the feature in help text for
29 dnl the command line argument.
30 dnl DEPENDENT-PLUGINS lists any plug-ins which depend on this feature.
31 dnl TEST-FOR-FEATURE is a test which sets HAVE_<FEATURE-NAME> to "yes"
32 dnl or "no" depending on whether the feature is
34 dnl DISABLE-BY-DEFAULT if "disabled", the feature is disabled by default,
35 dnl if any other value, the feature is enabled by default.
36 dnl ACTION-IF-USE any extra actions to perform if the feature is to be
38 dnl ACTION-IF-NOTUSE any extra actions to perform if the feature is not to
43 dnl we also added a history.
44 dnl GST_PLUGINS_YES will contain all plugins to be built
45 dnl that were checked through AG_GST_CHECK_FEATURE
46 dnl GST_PLUGINS_NO will contain those that won't be built
48 AC_DEFUN([AG_GST_CHECK_FEATURE],
50 AC_MSG_NOTICE(*** checking feature: [$2] ***)
51 if test "x[$3]" != "x"
53 AC_MSG_NOTICE(*** for plug-ins: [$3] ***)
56 builtin(define, [gst_endisable], ifelse($5, [disabled], [enable], [disable]))dnl
57 dnl if it is set to NO, then don't even consider it for building
59 if test "x$USE_[$1]" = "xno"; then
62 AC_ARG_ENABLE(translit([$1], A-Z, a-z),
63 [ ]builtin(format, --%-26s gst_endisable %s, gst_endisable-translit([$1], A-Z, a-z), [$2]ifelse([$3],,,: [$3])),
64 [ case "${enableval}" in
67 *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;;
69 [ USE_$1=]ifelse($5, [disabled], [no], [yes])) dnl DEFAULT
71 dnl *** set it back to no if it was preset to no
72 if test "x$NOUSE" = "xyes"; then
74 AC_MSG_WARN(*** $3 pre-configured not to be built)
78 dnl *** If it's enabled
80 if test x$USE_[$1] = xyes; then
81 dnl save compile variables before the test
83 gst_check_save_LIBS=$LIBS
84 gst_check_save_LDFLAGS=$LDFLAGS
85 gst_check_save_CFLAGS=$CFLAGS
86 gst_check_save_CPPFLAGS=$CPPFLAGS
87 gst_check_save_CXXFLAGS=$CXXFLAGS
93 LIBS=$gst_check_save_LIBS
94 LDFLAGS=$gst_check_save_LDFLAGS
95 CFLAGS=$gst_check_save_CFLAGS
96 CPPFLAGS=$gst_check_save_CPPFLAGS
97 CXXFLAGS=$gst_check_save_CXXFLAGS
99 dnl If it isn't found, unset USE_[$1]
100 if test x$HAVE_[$1] = xno; then
103 ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will be built: [$3])])
106 dnl *** Warn if it's disabled or not found
107 if test x$USE_[$1] = xyes; then
108 ifelse([$6], , :, [$6])
109 if test "x$3" != "x"; then
110 GST_PLUGINS_YES="\t[$3]\n$GST_PLUGINS_YES"
112 AC_DEFINE(HAVE_[$1], , [support for features: $3])
114 ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will not be built: [$3])])
115 if test "x$3" != "x"; then
116 GST_PLUGINS_NO="\t[$3]\n$GST_PLUGINS_NO"
118 ifelse([$7], , :, [$7])
120 dnl *** Define the conditional as appropriate
121 AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes)
124 dnl Use a -config program which accepts --cflags and --libs parameters
125 dnl to set *_CFLAGS and *_LIBS and check existence of a feature.
126 dnl Richard Boulton <richard-alsa@tartarus.org>
127 dnl Last modification: 26/06/2001
128 dnl AG_GST_CHECK_CONFIGPROG(FEATURE-NAME, CONFIG-PROG-FILENAME, MODULES)
130 dnl This check was written for GStreamer: it should be renamed and checked
131 dnl for portability if you decide to use it elsewhere.
133 AC_DEFUN([AG_GST_CHECK_CONFIGPROG],
135 AC_PATH_PROG([$1]_CONFIG, [$2], no)
136 if test x$[$1]_CONFIG = xno; then
141 if [$2] --plugin-libs [$3] &> /dev/null; then
142 [$1]_LIBS=`[$2] --plugin-libs [$3]`
144 [$1]_LIBS=`[$2] --libs [$3]`
146 [$1]_CFLAGS=`[$2] --cflags [$3]`
150 AC_SUBST([$1]_CFLAGS)
153 dnl Use AC_CHECK_LIB and AC_CHECK_HEADER to do both tests at once
154 dnl sets HAVE_module if we have it
155 dnl Richard Boulton <richard-alsa@tartarus.org>
156 dnl Last modification: 26/06/2001
157 dnl AG_GST_CHECK_LIBHEADER(FEATURE-NAME, LIB NAME, LIB FUNCTION, EXTRA LD FLAGS,
158 dnl HEADER NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
160 dnl This check was written for GStreamer: it should be renamed and checked
161 dnl for portability if you decide to use it elsewhere.
163 AC_DEFUN([AG_GST_CHECK_LIBHEADER],
165 AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no,[$4])
166 if test "x$HAVE_[$1]" = "xyes"; then
167 AC_CHECK_HEADER([$5], :, HAVE_[$1]=no)
168 if test "x$HAVE_[$1]" = "xyes"; then
169 dnl execute what needs to be
170 ifelse([$6], , :, [$6])
172 ifelse([$7], , :, [$7])
175 ifelse([$7], , :, [$7])
181 dnl 2004-02-14 Thomas - changed to get set properly and use proper output
182 dnl 2003-06-27 Benjamin Otte - changed to make this work with gstconfig.h
184 dnl Add a subsystem --disable flag and all the necessary symbols and substitions
186 dnl AG_GST_CHECK_SUBSYSTEM_DISABLE(SYSNAME, [subsystem name])
188 AC_DEFUN([AG_GST_CHECK_SUBSYSTEM_DISABLE],
190 dnl this define will replace each literal subsys_def occurrence with
191 dnl the lowercase hyphen-separated subsystem
192 dnl e.g. if $1 is GST_DEBUG then subsys_def will be a macro with gst-debug
193 define([subsys_def],translit([$1], _A-Z, -a-z))
195 AC_ARG_ENABLE(subsys_def,
196 AC_HELP_STRING(--disable-subsys_def, [disable $2]),
198 case "${enableval}" in
199 yes) GST_DISABLE_[$1]=no ;;
200 no) GST_DISABLE_[$1]=yes ;;
201 *) AC_MSG_ERROR([bad value ${enableval} for --enable-subsys_def]) ;;
204 [GST_DISABLE_[$1]=no]) dnl Default value
206 if test x$GST_DISABLE_[$1] = xyes; then
207 AC_MSG_NOTICE([disabled subsystem [$2]])
208 GST_DISABLE_[$1]_DEFINE="#define GST_DISABLE_$1 1"
210 GST_DISABLE_[$1]_DEFINE="/* #undef GST_DISABLE_$1 */"
212 AC_SUBST(GST_DISABLE_[$1]_DEFINE)
213 undefine([subsys_def])
217 dnl Parse gstconfig.h for feature and defines add the symbols and substitions
219 dnl AG_GST_PARSE_SUBSYSTEM_DISABLE(GST_CONFIGPATH, FEATURE)
221 AC_DEFUN([AG_GST_PARSE_SUBSYSTEM_DISABLE],
223 grep >/dev/null "#undef GST_DISABLE_$2" $1
229 AC_SUBST(GST_DISABLE_[$2])
232 dnl Parse gstconfig.h and defines add the symbols and substitions
234 dnl GST_CONFIGPATH=`$PKG_CONFIG --variable=includedir gstreamer-0.10`"/gst/gstconfig.h"
235 dnl AG_GST_PARSE_SUBSYSTEM_DISABLES(GST_CONFIGPATH)
237 AC_DEFUN([AG_GST_PARSE_SUBSYSTEM_DISABLES],
239 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,GST_DEBUG)
240 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,LOADSAVE)
241 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,PARSE)
242 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,TRACE)
243 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,ALLOC_TRACE)
244 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,REGISTRY)
245 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,ENUMTYPES)
246 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,INDEX)
247 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,PLUGIN)
248 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,URI)
249 AG_GST_PARSE_SUBSYSTEM_DISABLE($1,XML)
254 dnl relies on GST_PLUGINS_ALL, GST_PLUGINS_SELECTED, GST_PLUGINS_YES,
255 dnl GST_PLUGINS_NO, and BUILD_EXTERNAL
256 AC_DEFUN([AG_GST_OUTPUT_PLUGINS], [
258 echo "configure: *** Plug-ins without external dependencies that will be built:"
259 ( for i in $GST_PLUGINS_SELECTED; do /bin/echo -e '\t'$i; done ) | sort
262 echo "configure: *** Plug-ins without external dependencies that will NOT be built:"
263 ( for i in $GST_PLUGINS_ALL; do
264 case $GST_PLUGINS_SELECTED in
274 if test "x$BUILD_EXTERNAL" = "xno"; then
275 echo "configure: *** No plug-ins with external dependencies will be built"
277 /bin/echo -n "configure: *** Plug-ins with dependencies that will be built:"
278 /bin/echo -e "$GST_PLUGINS_YES" | sort
280 /bin/echo -n "configure: *** Plug-ins with dependencies that will NOT be built:"
281 /bin/echo -e "$GST_PLUGINS_NO" | sort