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 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 enable 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 plugins 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 GST_CHECK_FEATURE
46 dnl GST_PLUGINS_NO will contain those that won't be built
48 AC_DEFUN([GST_CHECK_FEATURE],
50 AC_MSG_NOTICE(*** checking plugin: [$3] ***)
53 builtin(define, [gst_endisable], ifelse($5, [disabled], [enable], [disable]))dnl
54 dnl if it is set to NO, then don't even consider it for building
56 if test "x$USE_[$1]" = "xno"; then
59 AC_ARG_ENABLE(translit([$1], A-Z, a-z),
60 [ ]builtin(format, --%-26s gst_endisable %s, gst_endisable-translit([$1], A-Z, a-z), [$2]ifelse([$3],,,: [$3])),
61 [ case "${enableval}" in
64 *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;;
66 [ USE_$1=]ifelse($5, [disabled], [no], [yes])) dnl DEFAULT
68 dnl *** set it back to no if it was preset to no
69 if test "x$NOUSE" = "xyes"; then
71 AC_MSG_WARN(*** $3 pre-configured not to be built)
75 dnl *** If it's enabled
77 if test x$USE_[$1] = xyes; then
78 dnl save compile variables before the test
80 gst_check_save_LIBS=$LIBS
81 gst_check_save_LDFLAGS=$LDFLAGS
82 gst_check_save_CFLAGS=$CFLAGS
83 gst_check_save_CPPFLAGS=$CPPFLAGS
84 gst_check_save_CXXFLAGS=$CXXFLAGS
90 LIBS=$gst_check_save_LIBS
91 LDFLAGS=$gst_check_save_LDFLAGS
92 CFLAGS=$gst_check_save_CFLAGS
93 CPPFLAGS=$gst_check_save_CPPFLAGS
94 CXXFLAGS=$gst_check_save_CXXFLAGS
96 dnl If it isn't found, unset USE_[$1]
97 if test x$HAVE_[$1] = xno; then
101 dnl *** Warn if it's disabled or not found
102 if test x$USE_[$1] = xyes; then
103 ifelse([$6], , :, [$6])
104 if test "x$3" != "x"; then
105 GST_PLUGINS_YES="\t[$3]\n$GST_PLUGINS_YES"
107 AC_DEFINE(HAVE_[$1], , [support for features: $3])
109 ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will not be built: [$3])])
110 if test "x$3" != "x"; then
111 GST_PLUGINS_NO="\t[$3]\n$GST_PLUGINS_NO"
113 ifelse([$7], , :, [$7])
115 dnl *** Define the conditional as appropriate
116 AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes)
119 dnl Use a -config program which accepts --cflags and --libs parameters
120 dnl to set *_CFLAGS and *_LIBS and check existence of a feature.
121 dnl Richard Boulton <richard-alsa@tartarus.org>
122 dnl Last modification: 26/06/2001
123 dnl GST_CHECK_CONFIGPROG(FEATURE-NAME, CONFIG-PROG-FILENAME, MODULES)
125 dnl This check was written for GStreamer: it should be renamed and checked
126 dnl for portability if you decide to use it elsewhere.
128 AC_DEFUN([GST_CHECK_CONFIGPROG],
130 AC_PATH_PROG([$1]_CONFIG, [$2], no)
131 if test x$[$1]_CONFIG = xno; then
136 if [$2] --plugin-libs [$3] &> /dev/null; then
137 [$1]_LIBS=`[$2] --plugin-libs [$3]`
139 [$1]_LIBS=`[$2] --libs [$3]`
141 [$1]_CFLAGS=`[$2] --cflags [$3]`
145 AC_SUBST([$1]_CFLAGS)
148 dnl Use AC_CHECK_LIB and AC_CHECK_HEADER to do both tests at once
149 dnl sets HAVE_module if we have it
150 dnl Richard Boulton <richard-alsa@tartarus.org>
151 dnl Last modification: 26/06/2001
152 dnl GST_CHECK_LIBHEADER(FEATURE-NAME, LIB NAME, LIB FUNCTION, EXTRA LD FLAGS,
153 dnl HEADER NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
155 dnl This check was written for GStreamer: it should be renamed and checked
156 dnl for portability if you decide to use it elsewhere.
158 AC_DEFUN([GST_CHECK_LIBHEADER],
160 AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no,[$4])
161 if test "x$HAVE_[$1]" = "xyes"; then
162 AC_CHECK_HEADER([$5], :, HAVE_[$1]=no)
163 if test "x$HAVE_[$1]" = "xyes"; then
164 dnl execute what needs to be
165 ifelse([$6], , :, [$6])
167 ifelse([$7], , :, [$7])
170 ifelse([$7], , :, [$7])
176 dnl 2004-02-14 Thomas - changed to get set properly and use proper output
177 dnl 2003-06-27 Benjamin Otte - changed to make this work with gstconfig.h
179 dnl Add a subsystem --disable flag and all the necessary symbols and substitions
181 dnl GST_CHECK_SUBSYSTEM_DISABLE(SYSNAME, [subsystem name])
183 AC_DEFUN([GST_CHECK_SUBSYSTEM_DISABLE],
185 dnl this define will replace each literal subsys_def occurrence with
186 dnl the lowercase hyphen-separated subsystem
187 dnl e.g. if $1 is GST_DEBUG then subsys_def will be a macro with gst-debug
188 define([subsys_def],translit([$1], _A-Z, -a-z))
190 AC_ARG_ENABLE(subsys_def,
191 AC_HELP_STRING(--disable-subsys_def, [disable $2]),
193 case "${enableval}" in
194 yes) GST_DISABLE_[$1]=no ;;
195 no) GST_DISABLE_[$1]=yes ;;
196 *) AC_MSG_ERROR([bad value ${enableval} for --enable-subsys_def]) ;;
199 [GST_DISABLE_[$1]=no]) dnl Default value
201 if test x$GST_DISABLE_[$1] = xyes; then
202 AC_MSG_NOTICE([disabled subsystem [$2]])
203 GST_DISABLE_[$1]_DEFINE="#define GST_DISABLE_$1 1"
205 GST_DISABLE_[$1]_DEFINE="/* #undef GST_DISABLE_$1 */"
207 AC_SUBST(GST_DISABLE_[$1]_DEFINE)
208 undefine([subsys_def])