gst-gmyth/m4/gst-feature.m4
author renatofilho
Tue May 01 16:36:58 2007 +0100 (2007-05-01)
branchtrunk
changeset 610 3cdc32e43041
permissions -rwxr-xr-x
[svn r616] added m4 macros
     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)
     8 dnl
     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.
    12 dnl
    13 dnl The test should define HAVE_<FEATURE-NAME> to "yes" or "no" depending
    14 dnl on whether the feature is available.
    15 dnl
    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.
    20 dnl
    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.
    25 dnl 
    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
    33 dnl                     available.
    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
    37 dnl                     used.
    38 dnl ACTION-IF-NOTUSE    any extra actions to perform if the feature is not to
    39 dnl                     be used.
    40 dnl
    41 dnl
    42 dnl thomas :
    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
    47 
    48 AC_DEFUN([GST_CHECK_FEATURE],
    49 AC_MSG_NOTICE(***)
    50 AC_MSG_NOTICE(*** checking plugin: [$3] ***)
    51 AC_MSG_NOTICE(***)
    52 [dnl
    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
    55 NOUSE=
    56 if test "x$USE_[$1]" = "xno"; then
    57   NOUSE="yes"
    58 fi
    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
    62       yes) USE_[$1]=yes;;
    63       no) USE_[$1]=no;;
    64       *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;;
    65     esac],
    66   [ USE_$1=]ifelse($5, [disabled], [no], [yes]))           dnl DEFAULT
    67 
    68 dnl *** set it back to no if it was preset to no
    69 if test "x$NOUSE" = "xyes"; then
    70   USE_[$1]="no"
    71   AC_MSG_WARN(*** $3 pre-configured not to be built)
    72 fi
    73 NOUSE=
    74 
    75 dnl *** If it's enabled
    76 
    77 if test x$USE_[$1] = xyes; then
    78   dnl save compile variables before the test
    79 
    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
    85 
    86   HAVE_[$1]=no
    87   dnl TEST_FOR_FEATURE
    88   $4
    89 
    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
    95 
    96   dnl If it isn't found, unset USE_[$1]
    97   if test x$HAVE_[$1] = xno; then
    98     USE_[$1]=no
    99   fi
   100 fi
   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"
   106   fi
   107   AC_DEFINE(HAVE_[$1], , [support for features: $3])
   108 else
   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"
   112   fi
   113   ifelse([$7], , :, [$7])
   114 fi
   115 dnl *** Define the conditional as appropriate
   116 AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes)
   117 ])
   118 
   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)
   124 dnl
   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.
   127 dnl
   128 AC_DEFUN([GST_CHECK_CONFIGPROG],
   129 [
   130   AC_PATH_PROG([$1]_CONFIG, [$2], no)
   131   if test x$[$1]_CONFIG = xno; then
   132     [$1]_LIBS=
   133     [$1]_CFLAGS=
   134     HAVE_[$1]=no
   135   else
   136     if [$2] --plugin-libs [$3] &> /dev/null; then
   137       [$1]_LIBS=`[$2] --plugin-libs [$3]`
   138     else
   139       [$1]_LIBS=`[$2] --libs [$3]`
   140     fi
   141     [$1]_CFLAGS=`[$2] --cflags [$3]`
   142     HAVE_[$1]=yes
   143   fi
   144   AC_SUBST([$1]_LIBS)
   145   AC_SUBST([$1]_CFLAGS)
   146 ])
   147 
   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)
   154 dnl
   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.
   157 dnl
   158 AC_DEFUN([GST_CHECK_LIBHEADER],
   159 [
   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])
   166     else
   167       ifelse([$7], , :, [$7])
   168     fi
   169   else
   170     ifelse([$7], , :, [$7])
   171   fi
   172   AC_SUBST(HAVE_[$1])
   173 ]
   174 )
   175 
   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
   178 dnl
   179 dnl Add a subsystem --disable flag and all the necessary symbols and substitions
   180 dnl
   181 dnl GST_CHECK_SUBSYSTEM_DISABLE(SYSNAME, [subsystem name])
   182 dnl
   183 AC_DEFUN([GST_CHECK_SUBSYSTEM_DISABLE],
   184 [
   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))
   189 
   190   AC_ARG_ENABLE(subsys_def, 
   191     AC_HELP_STRING(--disable-subsys_def, [disable $2]),
   192     [
   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]) ;;
   197        esac
   198     ],
   199     [GST_DISABLE_[$1]=no]) dnl Default value
   200 
   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" 
   204   else
   205     GST_DISABLE_[$1]_DEFINE="/* #undef GST_DISABLE_$1 */"
   206   fi
   207   AC_SUBST(GST_DISABLE_[$1]_DEFINE)
   208   undefine([subsys_def])
   209 ])
   210 
   211