Index: configure
===================================================================
--- configure	(revision 21489)
+++ configure	(working copy)
@@ -165,6 +165,38 @@
   test $? -ne 0
 }
 
+set_all(){
+    value=$1
+    shift
+    for var in $*; do
+        eval $var=$value
+    done
+}
+
+enable(){
+    set_all yes $*
+}
+
+disable(){
+    set_all no $*
+}
+
+enabled(){
+    eval test "x\$$1" = "xyes"
+}
+
+enabled_all(){
+    for opt; do
+        enabled $opt || return 1
+    done
+}
+
+enabled_any(){
+    for opt; do
+        enabled $opt && return 0
+    done
+}
+
 # Use this before starting a check
 echocheck() {
   echo "============ Checking for $@ ============" >> "$TMPLOG"
@@ -1587,11 +1619,6 @@
 _amr_nb=auto
 _amr_nb_fixed=auto
 _amr_wb=auto
-_libavdecoders=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "libavcodec/allcodecs.c"`
-_libavencoders=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "libavcodec/allcodecs.c"`
-_libavparsers=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "libavcodec/allcodecs.c"`
-_libavdemuxers=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c`
-_libavmuxers=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c`
 _libavcodec_so=auto
 _libavformat=auto
 _libavformat_so=auto
@@ -1746,6 +1773,15 @@
 _rpath=no
 _asmalign_pot=auto
 _color_console=no
+
+# Parts of FFmpeg
+_libavencoder_list=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "libavcodec/allcodecs.c"`
+_libavdecoder_list=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "libavcodec/allcodecs.c"`
+_libavparser_list=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "libavcodec/allcodecs.c"`
+_libavmuxer_list=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' "libavformat/allformats.c"`
+_libavdemuxer_list=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "libavformat/allformats.c"`
+enable $_libavencoder_list $_libavdecoder_list $_libavparser_list $_libavmuxer_list $_libavdemuxer_list
+
 for ac_option do
   case "$ac_option" in
   # Skip 1st pass
@@ -1980,16 +2016,16 @@
   --disable-amr_nb-fixed)	_amr_nb_fixed=no ;;
   --enable-amr_wb)	_amr_wb=yes	;;
   --disable-amr_wb)	_amr_wb=no	;;
-  --enable-decoder=*)	_libavdecoders="$_libavdecoders `echo $ac_option | cut -d '=' -f 2`" ;;
-  --disable-decoder=*)	_libavdecoders=`echo $_libavdecoders | sed "s/\`echo $ac_option | cut -d '=' -f 2\`//g"` ;;
-  --enable-encoder=*)	_libavencoders="$_libavencoders `echo $ac_option | cut -d '=' -f 2`" ;;
-  --disable-encoder=*)	_libavencoders=`echo $_libavencoders | sed "s/\`echo $ac_option | cut -d '=' -f 2\`//g"` ;;
-  --enable-parser=*)	_libavparsers="$_libavparsers `echo $ac_option | cut -d '=' -f 2`" ;;
-  --disable-parser=*)	_libavparsers=`echo $_libavparsers | sed "s/\`echo $ac_option | cut -d '=' -f 2\`//g"` ;;
-  --enable-demuxer=*)	_libavdemuxers="$_libavdemuxers `echo $ac_option | cut -d '=' -f 2`" ;;
-  --disable-demuxer=*)	_libavdemuxers=`echo $_libavdemuxers | sed "s/\`echo $ac_option | cut -d '=' -f 2\`//g"` ;;
-  --enable-muxer=*)	_libavmuxers="$_libavmuxers `echo $ac_option | cut -d '=' -f 2`" ;;
-  --disable-muxer=*)	_libavmuxers=`echo $_libavmuxers | sed "s/\`echo $ac_option | cut -d '=' -f 2\`//g"` ;;
+  --enable-decoder=*)	enable `echo $ac_option | cut -d '=' -f 2`_decoder ;;
+  --disable-decoder=*)	disable `echo $ac_option | cut -d '=' -f 2`_decoder ;;
+  --enable-encoder=*)	enable `echo $ac_option | cut -d '=' -f 2`_encoder ;;
+  --disable-encoder=*)	disable `echo $ac_option | cut -d '=' -f 2`_encoder ;;
+  --enable-parser=*)	enable `echo $ac_option | cut -d '=' -f 2`_parser ;;
+  --disable-parser=*)	disable `echo $ac_option | cut -d '=' -f 2`_parser ;;
+  --enable-demuxer=*)	enable `echo $ac_option | cut -d '=' -f 2`_demuxer ;;
+  --disable-demuxer=*)	disable `echo $ac_option | cut -d '=' -f 2`_demuxer ;;
+  --enable-muxer=*)	enable `echo $ac_option | cut -d '=' -f 2`_muxer ;;
+  --disable-muxer=*)	disable `echo $ac_option | cut -d '=' -f 2`_muxer ;;
   --enable-libavformat)	_libavformat=yes;;
   --disable-libavformat)	_libavformat=no	;;
   --enable-libavformat_so)	_libavformat_so=yes	;;
@@ -5828,7 +5864,7 @@
 fi
 if test "$_faac" = yes ; then
   _def_faac="#define HAVE_FAAC 1"
-  if echo $_libavencoders | grep -q faac ; then
+  if enabled faac_encoder ; then
     _lavc_faac=yes
     _def_lavc_faac="#define CONFIG_FAAC 1"
     _libs_mplayer="$_libs_mplayer $_ld_faac"
@@ -6466,7 +6502,7 @@
   _x264=yes
   _def_x264='#define HAVE_X264 1'
   _codecmodules="x264 $_codecmodules"
-  if echo $_libavencoders | grep -q x264 ; then
+  if enabled x264_encoder ; then
     _lavc_x264=yes
     _def_lavc_x264='#define CONFIG_X264 1'
     _libs_mplayer="$_libs_mplayer $_ld_x264"
@@ -6533,7 +6569,7 @@
 int main(void) { lame_set_preset(NULL, MEDIUM_FAST); return 0; }
 EOF
     cc_check $_ld_mp3lame $_ld_lm && _def_mp3lame_preset_medium="#define HAVE_MP3LAME_PRESET_MEDIUM"
-    if echo $_libavencoders | grep -q mp3lame ; then
+    if enabled mp3lame_encoder ; then
       _lavc_mp3lame=yes
       _def_lavc_mp3lame="#define CONFIG_MP3LAME 1"
       _libs_mplayer="$_libs_mplayer $_ld_mp3lame"
@@ -6554,9 +6590,10 @@
   _mencoder_flag='#define HAVE_MENCODER'
   _def_muxers='#define CONFIG_MUXERS 1'
 else
+  disable $_libavmuxer_list
+  disable $_libavencoder_list
   # mpeg1video for vf_lavc, snow for vf_uspp and vf_mcdeint
-  _libavencoders="mpeg1video_encoder snow_encoder"
-  _libavmuxers=""
+  enable mpeg1video_encoder snow_encoder
 fi
 echores "$_mencoder"
 
@@ -7475,11 +7512,6 @@
 CONFIG_AMR_NB=$_amr_nb
 CONFIG_AMR_NB_FIXED=$_amr_nb_fixed
 CONFIG_AMR_WB=$_amr_wb
-`echo $_libavdecoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/CONFIG_/;s/$/=yes/'`
-`echo $_libavencoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/CONFIG_/;s/$/=yes/'`
-`echo $_libavparsers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/CONFIG_/;s/$/=yes/'`
-`echo $_libavdemuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/CONFIG_/;s/$/=yes/'`
-`echo $_libavmuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/CONFIG_/;s/$/=yes/'`
 CONFIG_FAAC=$_lavc_faac
 CONFIG_MP3LAME=$_lavc_mp3lame
 CONFIG_XVID=$_lavc_xvid
@@ -7521,6 +7553,12 @@
 AF_SRCS = $_afsrc
 
 EOF
+for codec in $_libavdecoder_list $_libavencoder_list $_libavparser_list $_libavdemuxer_list $_libavmuxer_list; do
+  ucname="`echo $codec | tr '[a-z]' '[A-Z]'`"
+  if enabled $codec; then
+        echo "CONFIG_$ucname=yes"
+  fi
+done >> config.mak
 
 #############################################################################
 echo "Creating config.h"
@@ -7848,22 +7886,6 @@
 $_def_amr_nb_fixed
 $_def_amr_wb
 
-/* Use specific parts from FFmpeg. */
-`echo $_libavdecoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define CONFIG_/;s/$/ 1/'`
-`echo $_libavdecoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define ENABLE_/;s/$/ 1/'`
-`echo $_libavencoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define CONFIG_/;s/$/ 1/'`
-`echo $_libavencoders | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define ENABLE_/;s/$/ 1/'`
-`echo $_libavparsers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define CONFIG_/;s/$/ 1/'`
-`echo $_libavparsers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define ENABLE_/;s/$/ 1/'`
-`echo $_libavdemuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define CONFIG_/;s/$/ 1/'`
-`echo $_libavdemuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define ENABLE_/;s/$/ 1/'`
-`echo $_libavmuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define CONFIG_/;s/$/ 1/'`
-`echo $_libavmuxers | tr '[a-z] ' '[A-Z]\n' | sed 's/^/#define ENABLE_/;s/$/ 1/'`
-$_def_lavc_faac
-$_def_lavc_xvid
-$_def_lavc_mp3lame
-$_def_lavc_x264
-
 /* Use codec libs included in mplayer CVS / source dist: */
 $_def_mp3lib
 $_def_liba52
@@ -8232,8 +8254,23 @@
 #define X11_FULLSCREEN 1
 #endif
 
-#endif /* MPLAYER_CONFIG_H */
+/* Use specific parts from FFmpeg. */
+$_def_lavc_faac
+$_def_lavc_xvid
+$_def_lavc_mp3lame
+$_def_lavc_x264
+
 EOF
+for codec in $_libavdecoder_list $_libavencoder_list $_libavparser_list $_libavdemuxer_list $_libavmuxer_list; do
+  ucname="`echo $codec | tr '[a-z]' '[A-Z]'`"
+  if enabled $codec; then
+        echo "#define CONFIG_$ucname 1"
+        echo "#define ENABLE_$ucname 1"
+    else
+        echo "#define ENABLE_$ucname 0"
+    fi
+done >> config.h
+echo '#endif /* MPLAYER_CONFIG_H */' >> config.h
 
 #############################################################################
 
