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 builtin(define, [gst_endisable], ifelse($5, [disabled], [enable], [disable]))dnl
51 dnl if it is set to NO, then don't even consider it for building
53 if test "x$USE_[$1]" = "xno"; then
56 AC_ARG_ENABLE(translit([$1], A-Z, a-z),
57 [ ]builtin(format, --%-26s gst_endisable %s, gst_endisable-translit([$1], A-Z, a-z), [$2]ifelse([$3],,,: [$3])),
58 [ case "${enableval}" in
61 *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;;
63 [ USE_$1=]ifelse($5, [disabled], [no], [yes])) dnl DEFAULT
65 dnl *** set it back to no if it was preset to no
66 if test "x$NOUSE" = "xyes"; then
68 AC_MSG_WARN(*** $3 pre-configured not to be built)
72 dnl *** If it's enabled
74 if test x$USE_[$1] = xyes; then
75 dnl save compile variables before the test
77 gst_check_save_LIBS=$LIBS
78 gst_check_save_LDFLAGS=$LDFLAGS
79 gst_check_save_CFLAGS=$CFLAGS
80 gst_check_save_CPPFLAGS=$CPPFLAGS
81 gst_check_save_CXXFLAGS=$CXXFLAGS
88 LIBS=$gst_check_save_LIBS
89 LDFLAGS=$gst_check_save_LDFLAGS
90 CFLAGS=$gst_check_save_CFLAGS
91 CPPFLAGS=$gst_check_save_CPPFLAGS
92 CXXFLAGS=$gst_check_save_CXXFLAGS
94 dnl If it isn't found, unset USE_[$1]
95 if test x$HAVE_[$1] = xno; then
99 dnl *** Warn if it's disabled or not found
100 if test x$USE_[$1] = xyes; then
101 ifelse([$6], , :, [$6])
102 GST_PLUGINS_YES="$GST_PLUGINS_YES \n\t[$3]"
103 AC_DEFINE(HAVE_[$1], , [support for features: $3])
105 ifelse([$3], , :, [AC_MSG_WARN(
106 ***** NOTE: These plugins won't be built: [$3]
108 GST_PLUGINS_NO="$GST_PLUGINS_NO \n\t[$3]"
109 ifelse([$7], , :, [$7])
111 dnl *** Define the conditional as appropriate
112 AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes)
115 dnl Use a -config program which accepts --cflags and --libs parameters
116 dnl to set *_CFLAGS and *_LIBS and check existence of a feature.
117 dnl Richard Boulton <richard-alsa@tartarus.org>
118 dnl Last modification: 26/06/2001
119 dnl GST_CHECK_CONFIGPROG(FEATURE-NAME, CONFIG-PROG-FILENAME, MODULES)
121 dnl This check was written for GStreamer: it should be renamed and checked
122 dnl for portability if you decide to use it elsewhere.
124 AC_DEFUN(GST_CHECK_CONFIGPROG,
126 AC_PATH_PROG([$1]_CONFIG, [$2], no)
127 if test x$[$1]_CONFIG = xno; then
132 [$1]_LIBS=`[$2] --libs [$3]`
133 [$1]_CFLAGS=`[$2] --cflags [$3]`
137 AC_SUBST([$1]_CFLAGS)
140 dnl Use AC_CHECK_LIB and AC_CHECK_HEADER to do both tests at once
141 dnl sets HAVE_module if we have it
142 dnl Richard Boulton <richard-alsa@tartarus.org>
143 dnl Last modification: 26/06/2001
144 dnl GST_CHECK_LIBHEADER(FEATURE-NAME, LIB NAME, LIB FUNCTION, EXTRA LD FLAGS,
145 dnl HEADER NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
147 dnl This check was written for GStreamer: it should be renamed and checked
148 dnl for portability if you decide to use it elsewhere.
150 AC_DEFUN(GST_CHECK_LIBHEADER,
152 AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no,[$4])
153 if test "x$HAVE_[$1]" = "xyes"; then
154 AC_CHECK_HEADER([$5], :, HAVE_[$1]=no)
155 if test "x$HAVE_[$1]" = "xyes"; then
156 dnl execute what needs to be
157 ifelse([$6], , :, [$6])
159 ifelse([$7], , :, [$7])
162 AC_MSG_WARN([$1] not found)