renatofilho@522: dnl Perform a check for a feature for GStreamer renatofilho@522: dnl Richard Boulton renatofilho@522: dnl Thomas Vander Stichele added useful stuff renatofilho@522: dnl Last modification: 25/06/2001 renatofilho@522: dnl GST_CHECK_FEATURE(FEATURE-NAME, FEATURE-DESCRIPTION, renatofilho@522: dnl DEPENDENT-PLUGINS, TEST-FOR-FEATURE, renatofilho@522: dnl DISABLE-BY-DEFAULT, ACTION-IF-USE, ACTION-IF-NOTUSE) renatofilho@522: dnl renatofilho@522: dnl This macro adds a command line argument to enable the user to enable renatofilho@522: dnl or disable a feature, and if the feature is enabled, performs a supplied renatofilho@522: dnl test to check if the feature is available. renatofilho@522: dnl renatofilho@522: dnl The test should define HAVE_ to "yes" or "no" depending renatofilho@522: dnl on whether the feature is available. renatofilho@522: dnl renatofilho@522: dnl The macro will set USE_ to "yes" or "no" depending on renatofilho@522: dnl whether the feature is to be used. renatofilho@522: dnl Thomas changed this, so that when USE_ was already set renatofilho@522: dnl to no, then it stays that way. renatofilho@522: dnl renatofilho@522: dnl The macro will call AM_CONDITIONAL(USE_<, ...) to allow renatofilho@522: dnl the feature to control what is built in Makefile.ams. If you want renatofilho@522: dnl additional actions resulting from the test, you can add them with the renatofilho@522: dnl ACTION-IF-USE and ACTION-IF-NOTUSE parameters. renatofilho@522: dnl renatofilho@522: dnl FEATURE-NAME is the name of the feature, and should be in renatofilho@522: dnl purely upper case characters. renatofilho@522: dnl FEATURE-DESCRIPTION is used to describe the feature in help text for renatofilho@522: dnl the command line argument. renatofilho@522: dnl DEPENDENT-PLUGINS lists any plugins which depend on this feature. renatofilho@522: dnl TEST-FOR-FEATURE is a test which sets HAVE_ to "yes" renatofilho@522: dnl or "no" depending on whether the feature is renatofilho@522: dnl available. renatofilho@522: dnl DISABLE-BY-DEFAULT if "disabled", the feature is disabled by default, renatofilho@522: dnl if any other value, the feature is enabled by default. renatofilho@522: dnl ACTION-IF-USE any extra actions to perform if the feature is to be renatofilho@522: dnl used. renatofilho@522: dnl ACTION-IF-NOTUSE any extra actions to perform if the feature is not to renatofilho@522: dnl be used. renatofilho@522: dnl renatofilho@522: dnl renatofilho@522: dnl thomas : renatofilho@522: dnl we also added a history. renatofilho@522: dnl GST_PLUGINS_YES will contain all plugins to be built renatofilho@522: dnl that were checked through GST_CHECK_FEATURE renatofilho@522: dnl GST_PLUGINS_NO will contain those that won't be built renatofilho@522: renatofilho@522: AC_DEFUN([GST_CHECK_FEATURE], renatofilho@522: AC_MSG_NOTICE(***) renatofilho@522: AC_MSG_NOTICE(*** checking plugin: [$3] ***) renatofilho@522: AC_MSG_NOTICE(***) renatofilho@522: [dnl renatofilho@522: builtin(define, [gst_endisable], ifelse($5, [disabled], [enable], [disable]))dnl renatofilho@522: dnl if it is set to NO, then don't even consider it for building renatofilho@522: NOUSE= renatofilho@522: if test "x$USE_[$1]" = "xno"; then renatofilho@522: NOUSE="yes" renatofilho@522: fi renatofilho@522: AC_ARG_ENABLE(translit([$1], A-Z, a-z), renatofilho@522: [ ]builtin(format, --%-26s gst_endisable %s, gst_endisable-translit([$1], A-Z, a-z), [$2]ifelse([$3],,,: [$3])), renatofilho@522: [ case "${enableval}" in renatofilho@522: yes) USE_[$1]=yes;; renatofilho@522: no) USE_[$1]=no;; renatofilho@522: *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;; renatofilho@522: esac], renatofilho@522: [ USE_$1=]ifelse($5, [disabled], [no], [yes])) dnl DEFAULT renatofilho@522: renatofilho@522: dnl *** set it back to no if it was preset to no renatofilho@522: if test "x$NOUSE" = "xyes"; then renatofilho@522: USE_[$1]="no" renatofilho@522: AC_MSG_WARN(*** $3 pre-configured not to be built) renatofilho@522: fi renatofilho@522: NOUSE= renatofilho@522: renatofilho@522: dnl *** If it's enabled renatofilho@522: renatofilho@522: if test x$USE_[$1] = xyes; then renatofilho@522: dnl save compile variables before the test renatofilho@522: renatofilho@522: gst_check_save_LIBS=$LIBS renatofilho@522: gst_check_save_LDFLAGS=$LDFLAGS renatofilho@522: gst_check_save_CFLAGS=$CFLAGS renatofilho@522: gst_check_save_CPPFLAGS=$CPPFLAGS renatofilho@522: gst_check_save_CXXFLAGS=$CXXFLAGS renatofilho@522: renatofilho@522: HAVE_[$1]=no renatofilho@522: dnl TEST_FOR_FEATURE renatofilho@522: $4 renatofilho@522: renatofilho@522: LIBS=$gst_check_save_LIBS renatofilho@522: LDFLAGS=$gst_check_save_LDFLAGS renatofilho@522: CFLAGS=$gst_check_save_CFLAGS renatofilho@522: CPPFLAGS=$gst_check_save_CPPFLAGS renatofilho@522: CXXFLAGS=$gst_check_save_CXXFLAGS renatofilho@522: renatofilho@522: dnl If it isn't found, unset USE_[$1] renatofilho@522: if test x$HAVE_[$1] = xno; then renatofilho@522: USE_[$1]=no renatofilho@522: fi renatofilho@522: fi renatofilho@522: dnl *** Warn if it's disabled or not found renatofilho@522: if test x$USE_[$1] = xyes; then renatofilho@522: ifelse([$6], , :, [$6]) renatofilho@522: if test "x$3" != "x"; then renatofilho@522: GST_PLUGINS_YES="\t[$3]\n$GST_PLUGINS_YES" renatofilho@522: fi renatofilho@522: AC_DEFINE(HAVE_[$1], , [support for features: $3]) renatofilho@522: else renatofilho@522: ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will not be built: [$3])]) renatofilho@522: if test "x$3" != "x"; then renatofilho@522: GST_PLUGINS_NO="\t[$3]\n$GST_PLUGINS_NO" renatofilho@522: fi renatofilho@522: ifelse([$7], , :, [$7]) renatofilho@522: fi renatofilho@522: dnl *** Define the conditional as appropriate renatofilho@522: AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes) renatofilho@522: ]) renatofilho@522: renatofilho@522: dnl Use a -config program which accepts --cflags and --libs parameters renatofilho@522: dnl to set *_CFLAGS and *_LIBS and check existence of a feature. renatofilho@522: dnl Richard Boulton renatofilho@522: dnl Last modification: 26/06/2001 renatofilho@522: dnl GST_CHECK_CONFIGPROG(FEATURE-NAME, CONFIG-PROG-FILENAME, MODULES) renatofilho@522: dnl renatofilho@522: dnl This check was written for GStreamer: it should be renamed and checked renatofilho@522: dnl for portability if you decide to use it elsewhere. renatofilho@522: dnl renatofilho@522: AC_DEFUN([GST_CHECK_CONFIGPROG], renatofilho@522: [ renatofilho@522: AC_PATH_PROG([$1]_CONFIG, [$2], no) renatofilho@522: if test x$[$1]_CONFIG = xno; then renatofilho@522: [$1]_LIBS= renatofilho@522: [$1]_CFLAGS= renatofilho@522: HAVE_[$1]=no renatofilho@522: else renatofilho@522: if [$2] --plugin-libs [$3] &> /dev/null; then renatofilho@522: [$1]_LIBS=`[$2] --plugin-libs [$3]` renatofilho@522: else renatofilho@522: [$1]_LIBS=`[$2] --libs [$3]` renatofilho@522: fi renatofilho@522: [$1]_CFLAGS=`[$2] --cflags [$3]` renatofilho@522: HAVE_[$1]=yes renatofilho@522: fi renatofilho@522: AC_SUBST([$1]_LIBS) renatofilho@522: AC_SUBST([$1]_CFLAGS) renatofilho@522: ]) renatofilho@522: renatofilho@522: dnl Use AC_CHECK_LIB and AC_CHECK_HEADER to do both tests at once renatofilho@522: dnl sets HAVE_module if we have it renatofilho@522: dnl Richard Boulton renatofilho@522: dnl Last modification: 26/06/2001 renatofilho@522: dnl GST_CHECK_LIBHEADER(FEATURE-NAME, LIB NAME, LIB FUNCTION, EXTRA LD FLAGS, renatofilho@522: dnl HEADER NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) renatofilho@522: dnl renatofilho@522: dnl This check was written for GStreamer: it should be renamed and checked renatofilho@522: dnl for portability if you decide to use it elsewhere. renatofilho@522: dnl renatofilho@522: AC_DEFUN([GST_CHECK_LIBHEADER], renatofilho@522: [ renatofilho@522: AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no,[$4]) renatofilho@522: if test "x$HAVE_[$1]" = "xyes"; then renatofilho@522: AC_CHECK_HEADER([$5], :, HAVE_[$1]=no) renatofilho@522: if test "x$HAVE_[$1]" = "xyes"; then renatofilho@522: dnl execute what needs to be renatofilho@522: ifelse([$6], , :, [$6]) renatofilho@522: else renatofilho@522: ifelse([$7], , :, [$7]) renatofilho@522: fi renatofilho@522: else renatofilho@522: ifelse([$7], , :, [$7]) renatofilho@522: fi renatofilho@522: AC_SUBST(HAVE_[$1]) renatofilho@522: ] renatofilho@522: ) renatofilho@522: renatofilho@522: dnl 2004-02-14 Thomas - changed to get set properly and use proper output renatofilho@522: dnl 2003-06-27 Benjamin Otte - changed to make this work with gstconfig.h renatofilho@522: dnl renatofilho@522: dnl Add a subsystem --disable flag and all the necessary symbols and substitions renatofilho@522: dnl renatofilho@522: dnl GST_CHECK_SUBSYSTEM_DISABLE(SYSNAME, [subsystem name]) renatofilho@522: dnl renatofilho@522: AC_DEFUN([GST_CHECK_SUBSYSTEM_DISABLE], renatofilho@522: [ renatofilho@522: dnl this define will replace each literal subsys_def occurrence with renatofilho@522: dnl the lowercase hyphen-separated subsystem renatofilho@522: dnl e.g. if $1 is GST_DEBUG then subsys_def will be a macro with gst-debug renatofilho@522: define([subsys_def],translit([$1], _A-Z, -a-z)) renatofilho@522: renatofilho@522: AC_ARG_ENABLE(subsys_def, renatofilho@522: AC_HELP_STRING(--disable-subsys_def, [disable $2]), renatofilho@522: [ renatofilho@522: case "${enableval}" in renatofilho@522: yes) GST_DISABLE_[$1]=no ;; renatofilho@522: no) GST_DISABLE_[$1]=yes ;; renatofilho@522: *) AC_MSG_ERROR([bad value ${enableval} for --enable-subsys_def]) ;; renatofilho@522: esac renatofilho@522: ], renatofilho@522: [GST_DISABLE_[$1]=no]) dnl Default value renatofilho@522: renatofilho@522: if test x$GST_DISABLE_[$1] = xyes; then renatofilho@522: AC_MSG_NOTICE([disabled subsystem [$2]]) renatofilho@522: GST_DISABLE_[$1]_DEFINE="#define GST_DISABLE_$1 1" renatofilho@522: else renatofilho@522: GST_DISABLE_[$1]_DEFINE="/* #undef GST_DISABLE_$1 */" renatofilho@522: fi renatofilho@522: AC_SUBST(GST_DISABLE_[$1]_DEFINE) renatofilho@522: undefine([subsys_def]) renatofilho@522: ]) renatofilho@522: renatofilho@522: