[mythtv] [patch] automagic settings.pro (version 3)

Daniel Thor Kristjansson danielk at mrl.nyu.edu
Thu Feb 24 21:09:52 UTC 2005


On Thu, 24 Feb 2005, Simon Kenyon wrote:

]Intel(R) Pentium(R) M processor 2.00GHz
]CFLAGS=-O2 -mcpu=pentium4 -O3 -pipe -fomit-frame-pointer

]AMD Athlon(tm) processor
]CFLAGS="-O3 -march=athlon-tbird -pipe -fomit-frame-pointer"

]VIA C3 Ezra
]CFLAGS="-Os -march=c3 -pipe -fomit-frame-pointer"

I've added these to the attached config patch. 
I've also fixed a couple problems with the 
automatic sound support detection.

I just made all the "AMD Athlon(tm)" processors use 
"-march=pentiumpro -mmmx" I've read reports that the 
Athlon tbird/xp/mp specific -march settings result 
in worse code than "-march=pentiumpro". I'm assuming
all Athlons have mmx support, is this incorrect?

BTW if you specify --cpu or --tune to configure the
automagic -march setting will be ignored.

-- Daniel
-------------- next part --------------
Index: configure
===================================================================
RCS file: /var/lib/mythcvs/mythtv/configure,v
retrieving revision 1.31
diff -u -r1.31 configure
--- configure	8 Jan 2005 16:48:12 -0000	1.31
+++ configure	24 Feb 2005 20:55:43 -0000
@@ -42,7 +42,10 @@
 #echo "  --powerpc-perf-enable    enable performance report on PPC (requires enabling PMC)"
 #echo "  --disable-mmx            disable mmx usage"
 #echo "  --disable-altivec        disable AltiVec usage"
-#echo "  --disable-audio-oss      disable OSS audio support [default=no]"
+echo "  --disable-audio-oss      disable OSS audio support [default=no]"
+echo "  --disable-audio-alsa     disable ALSA audio support [default=no]"
+echo "  --disable-audio-arts     disable aRts audio support [default=no]"
+echo "  --disable-audio-jack     disable JACK audio support [default=no]"
 #echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
 #echo "  --disable-v4l            disable video4linux grabbing [default=no]"
 #echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
@@ -92,6 +95,7 @@
 make="make"
 strip="strip"
 cpu=`uname -m`
+processor=`uname -p`
 tune="generic"
 powerpc_perf="no"
 mmx="default"
@@ -138,6 +142,9 @@
 gprof="no"
 v4l="yes"
 audio_oss="yes"
+audio_alsa="yes"
+audio_arts="yes"
+audio_jack="yes"
 audio_beos="no"
 dv1394="no"
 dc1394="no"
@@ -210,7 +217,6 @@
 esac
 SHFLAGS=-nostart
 # disable linux things
-audio_oss="no"
 v4l="no"
 dv1394="no"
 # enable beos things
@@ -226,7 +232,6 @@
 fi ;;
 SunOS)
 v4l="no"
-audio_oss="no"
 dv1394="no"
 make="gmake"
 LDFLAGS=""
@@ -236,7 +241,6 @@
 ;;
 FreeBSD)
 v4l="no"
-audio_oss="yes"
 dv1394="no"
 make="gmake"
 CFLAGS="-pthread"
@@ -244,7 +248,6 @@
 ;;
 BSD/OS)
 v4l="no"
-audio_oss="yes"
 dv1394="no"
 extralibs="-lpoll -lgnugetopt -lm"
 make="gmake"
@@ -252,7 +255,6 @@
 Darwin)
 cc="cc"
 v4l="no"
-audio_oss="no"
 dv1394="no"
 ffserver="no"
 SHFLAGS="-dynamiclib"
@@ -269,7 +271,6 @@
 ;;
 CYGWIN*)
 v4l="no"
-audio_oss="yes"
 dv1394="no"
 extralibs=""
 cygwin="yes"
@@ -285,7 +286,6 @@
 IRIX*)
 ranlib="echo ignoring ranlib"
 v4l="no"
-audio_oss="no"
 make="gmake"
 ;;
 OS/2)
@@ -304,7 +304,6 @@
 EXESUF=".exe"
 extralibs=""
 v4l="no"
-audio_oss="no"
 dv1394="no"
 network="no"
 ffserver="no"
@@ -385,6 +384,12 @@
   ;;
   --disable-audio-oss) audio_oss="no"
   ;;
+  --disable-audio-alsa) audio_alsa="no"
+  ;;
+  --disable-audio-arts) audio_arts="no"
+  ;;
+  --disable-audio-jack) audio_jack="no"
+  ;;
   --disable-audio-beos) audio_beos="no"
   ;;
   --disable-dv1394) dv1394="no"
@@ -616,6 +621,22 @@
     esac
 fi
 
+if test $tune == "generic" -a $cpu == "x86"; then
+   if expr "$processor" : "Intel(R) Pentium(R) 4" > /dev/null ; then
+       CFLAGS="$CFLAGS -march=pentium4"
+   elif expr "$processor" : "Intel(R) Pentium(R) M" > /dev/null ; then
+       CFLAGS="$CFLAGS -march=pentium4"
+   elif expr "$processor" : "AMD Athlon(tm)" > /dev/null ; then
+       CFLAGS="$CFLAGS -march=pentiumpro -mmmx"
+   elif expr "$processor" : "VIA C3 Ezra" > /dev/null ; then
+       CFLAGS="$CFLAGS -march=c3 -Os"
+   elif test `uname -m` = "i686"; then
+       CFLAGS="$CFLAGS -march=pentiumpro"
+   fi
+elif test $tune == "generic" -a $cpu == "x86_64"; then
+   CFLAGS="$CFLAGS -march=k8"
+fi
+
 # AltiVec flags: The FSF version of GCC differs from the Apple version 
 if test $cpu = "powerpc"; then
     if test $altivec = "yes"; then
@@ -1017,6 +1038,84 @@
 fi
 fi
 
+##########################################
+# OSS probe
+
+if test "$audio_oss" = "yes" ; then
+
+cat > $TMPC << EOF
+#include <sys/ioctl.h>
+#include <sys/soundcard.h>
+int main(void) { return (int) EV_SEQ_LOCAL; }
+EOF
+
+audio_oss=no
+if $cc -o $TMPE $TMPC > /dev/null 2>&1; then
+audio_oss=yes
+fi
+
+fi
+
+##########################################
+# ALSA probe
+
+if test "$audio_alsa" = "yes" ; then
+
+cat > $TMPC << EOF
+#include <alsa/asoundlib.h>
+int main(void) { return (int) SND_LIB_MAJOR; }
+EOF
+
+audio_alsa=no
+audio_alsa_libs="-lasound"
+if $cc -o $TMPE $TMPC $audio_alsa_libs > /dev/null 2>&1; then
+audio_alsa=yes
+fi
+
+fi
+
+##########################################
+# aRts probe
+
+if test "$audio_arts" = "yes" ; then
+
+cat > $TMPC << EOF
+#include <artsc/artsc.h>
+int main(void) { return (int) ARTS_P_BUFFER_SIZE; }
+EOF
+
+audio_arts=no
+if (artsc-config --version) > /dev/null 2>&1; then
+audio_arts_libs=`artsc-config --libs`
+audio_arts_tmp=`artsc-config --cflags`
+audio_arts_cflags=`echo $audio_arts_tmp | sed "s/include\/artsc/include/g"`
+if $cc -o $TMPE $TMPC $audio_arts_cflags $audio_arts_libs > /dev/null 2>&1; then
+audio_arts=yes
+fi
+fi
+
+fi
+
+##########################################
+# JACK probe
+
+if test "$audio_jack" = "yes" ; then
+
+cat > $TMPC << EOF
+#include <jack/jack.h>
+int main(void) { return (int) JACK_MAX_FRAMES; }
+EOF
+
+audio_jack=no
+audio_jack_libs="-ljack"
+if $cc -o $TMPE $TMPC $audio_jack_libs > /dev/null 2>&1; then
+audio_jack=yes
+fi
+
+fi
+
+
+
 case "`$cc -v 2>&1 | grep version`" in
     *gcc*)
 	CFLAGS="-Wall -Wno-switch $CFLAGS"
@@ -1109,7 +1208,10 @@
 #else
 #echo "License: GPL"
 #fi
-
+echo "OSS support      $audio_oss"
+echo "ALSA support     $audio_alsa"
+echo "aRts support     $audio_arts"
+echo "JACK support     $audio_jack"
 
 echo "Creating config.mak and config.h"
 
@@ -1346,6 +1448,25 @@
   echo "CONFIG_AUDIO_OSS=yes" >> config.mak
 fi
 
+if test "$audio_alsa" = "yes" ; then
+  echo "#define CONFIG_AUDIO_ALSA 1" >> $TMPH
+  echo "CONFIG_AUDIO_ALSA=yes" >> config.mak
+  echo "CONFIG_AUDIO_ALSA_LIBS=$audio_alsa_libs" >> config.mak
+fi
+
+if test "$audio_arts" = "yes" ; then
+  echo "#define CONFIG_AUDIO_ARTS 1" >> $TMPH
+  echo "CONFIG_AUDIO_ARTS=yes" >> config.mak
+  echo "CONFIG_AUDIO_ARTS_LIBS=$audio_arts_libs" >> config.mak
+  echo "CONFIG_AUDIO_ARTS_CFLAGS=$audio_arts_cflags" >> config.mak
+fi
+
+if test "$audio_jack" = "yes" ; then
+  echo "#define CONFIG_AUDIO_JACK 1" >> $TMPH
+  echo "CONFIG_AUDIO_JACK=yes" >> config.mak
+  echo "CONFIG_AUDIO_JACK_LIBS=$audio_jack_libs" >> config.mak
+fi
+
 if test "$audio_beos" = "yes" ; then
   echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
   echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
@@ -1534,6 +1655,7 @@
   echo
 fi
 
+
 fi
 
 diff $TMPH config.h >/dev/null 2>&1
Index: settings.pro
===================================================================
RCS file: /var/lib/mythcvs/mythtv/settings.pro,v
retrieving revision 1.107
diff -u -r1.107 settings.pro
--- settings.pro	22 Feb 2005 15:09:57 -0000	1.107
+++ settings.pro	24 Feb 2005 20:55:43 -0000
@@ -1,6 +1,59 @@
+### Compile release, profile or debug version (pick one) ###
+
+#CONFIG += profile
 #CONFIG += debug
 CONFIG += release
 
+
+### Input Hardware ###
+
+# IVTV (PVR-x50) support
+CONFIG += using_ivtv
+# DVB support, you may need edit the path to your linux-dvb headers below
+#CONFIG += using_dvb
+# Firewire support
+#CONFIG += using_firewire
+
+
+### Remote control I/O ###
+
+# Native lirc support (infrared remotes)
+#CONFIG += using_lirc
+# Joystick menu support (Linux only)
+CONFIG += using_joystick_menu
+
+
+### Video Output ###
+
+# X11 support (Network friendly video terminal software)
+CONFIG += using_x11
+# Default Xv support (X11 color conversion acceleration)
+CONFIG += using_xv
+# XvMC support, other than epia (Linux/BSD specific MPEG-2 acceleration)
+#CONFIG += using_xvmc_normal
+# XvMC_VLD support, modify as necessary. Incompatible with normal XvMC support.
+# Used for hardware accelerated decoding on VIA EPIA-M (and other) boards.
+#CONFIG += using_xvmc_vld
+# DirectFB support (Linux non-X11 video output)
+#CONFIG += using_directfb
+# DirectX support (MS Windows video output)
+#CONFIG += using_directx
+# OpenGL support for vertical retrace sync
+#CONFIG += using_opengl_vsync
+# Allow use of X11 XrandR to change display resolutions
+#CONFIG += using_xrandr
+
+
+###
+### The configuration options above are implemented below,
+### hopefully you will not need to edit these.
+###
+
+profile {
+    CONFIG *= release
+    CONFIG -= debug
+}
+
 isEmpty( PREFIX ) {
     PREFIX = /usr/local
 }
@@ -25,21 +78,21 @@
 }
 
 release {
-    contains(TARGET_ARCH_X86, yes) {
-        DEFINES += MMX
-        QMAKE_CXXFLAGS_RELEASE = -O3 -march=pentiumpro -fomit-frame-pointer
-    }
-    contains(TARGET_ARCH_X86_64, yes) {
-        DEFINES += MMX
-        QMAKE_CXXFLAGS_RELEASE = -O3 -march=k8 -fomit-frame-pointer
-    }
+    QMAKE_CXXFLAGS_RELEASE = $$OPTFLAGS -fomit-frame-pointer
+    contains( TARGET_MMX, yes ):DEFINES += MMX
+
     contains( TARGET_ARCH_POWERPC, yes ) {
         # Do not use -O3, it causes some Qt moc methods to go missing
-        QMAKE_CXXFLAGS_RELEASE = -O2
+        QMAKE_CXXFLAGS_RELEASE = $$OPTFLAGS -O2
     }
     QMAKE_CFLAGS_RELEASE = $${QMAKE_CXXFLAGS_RELEASE}
 }
 
+profile {
+    QMAKE_CXXFLAGS_RELEASE *= -g
+    LIBAVCODEC_CFLAGS *= -g
+}
+
 LOCAL_LIBDIR_X11 =
 !isEmpty( QMAKE_LIBDIR_X11 ) {
     LOCAL_LIBDIR_X11 = -L$$QMAKE_LIBDIR_X11
@@ -55,79 +108,74 @@
     CONFIG  += freebsd backend
 }
 
-# X11 support
-CONFIG += using_x11
+contains( CONFIG_AUDIO_OSS, yes ):CONFIG += using_oss
+contains( CONFIG_AUDIO_ALSA, yes ) {
+    CONFIG += using_alsa
+    EXTRA_LIBS += $$CONFIG_AUDIO_ALSA_LIBS
+}
+contains( CONFIG_AUDIO_ARTS, yes ) {
+    CONFIG += using_arts
+    QMAKE_CXXFLAGS += $$CONFIG_AUDIO_ARTS_CFLAGS
+    EXTRA_LIBS += $$CONFIG_AUDIO_ARTS_LIBS
+}
+contains( CONFIG_AUDIO_JACK, yes ) {
+    CONFIG += using_jack
+    EXTRA_LIBS += $$CONFIG_AUDIO_JACK_LIBS
+}
 
-# Default Xv support
-CONFIG += using_xv
-EXTRA_LIBS += $$LOCAL_LIBDIR_X11 -lXinerama -lXv -lX11 -lXext -lXxf86vm
+using_ivtv {
+    DEFINES += USING_IVTV
+    # Use the installed ivtv header instead of the local copy (needs >= v0.2)
+    #DEFINES += USING_IVTV_HEADER
+}
 
-# IVTV (PVR-x50) support
-CONFIG += using_ivtv
-DEFINES += USING_IVTV
-# Use the installed ivtv header instead of the local copy (needs >= v0.2)
-#DEFINES += USING_IVTV_HEADER
-
-# Default audio output, OSS.  
-# Do NOT disable unless compiling on a non-linux platform.
-CONFIG += using_oss
-
-# Native ALSA support
-#CONFIG += using_alsa
-#ALSA_LIBS = -lasound
-
-# Native ARTS support
-#CONFIG += using_arts
-#ARTS_LIBS = -L/opt/kde3/lib -ldl -lartsc -lpthread
-#EXTRA_LIBS += -L/opt/kde3/lib -ldl -lartsc -lpthread
-#INCLUDEPATH += /opt/kde3/include
-# For Mandrake, use the following:
-#ARTS_LIBS = -ldl -lartsc -lpthread
-#EXTRA_LIBS += -ldl -lartsc -lpthread
-#INCLUDEPATH += /usr/include/artsc
-
-# Native JACK support
-#CONFIG += using_jack
-#JACK_LIBS += -ljack
+using_dvb {
+    DEFINES += USING_DVB
+    # Note: INCLUDEPATH should point to the directory with
+    #   'linux/dvb/frontend.h', not the directory with frontend.h
+    # Note: This _must not_ be your linux kernel source includes.  Copy the dvb
+    #       includes into a separate directory for now.
+    INCLUDEPATH += /cvs/myth/dvb-kernel/linux/include
+    #define the following if you want On Air Guide information
+    #DEFINES += USING_DVB_EIT
+}
 
-# DVB support
-#CONFIG += using_dvb
-#DEFINES += USING_DVB
-# Note: INCLUDEPATH should point to the directory with
-#   'linux/dvb/frontend.h', not the directory with frontend.h
-# Note: This _must not_ be your linux kernel source includes.  Copy the dvb
-#       includes into a separate directory for now.
-#INCLUDEPATH += /usr/src/linuxtv-dvb-1.0.1/include
-#define the following if you want On Air Guide information
-#DEFINES += USING_DVB_EIT
+using_firewire {
+    DEFINES += USING_FIREWIRE
+    EXTRA_LIBS += -lraw1394 -liec61883
+}
 
-# Firewire support
-#CONFIG += using_firewire
-#DEFINES += USING_FIREWIRE
-#EXTRA_LIBS += -lraw1394 -liec61883
+using_lirc {
+    LIRC_LIBS = -llirc_client
+}
 
-# Joystick menu support
-CONFIG += using_joystick_menu
+using_xv {
+    EXTRA_LIBS += $$LOCAL_LIBDIR_X11 -lXinerama -lXv -lX11 -lXext -lXxf86vm
+}
 
-# Native lirc support
-#CONFIG += using_lirc
-#LIRC_LIBS = -llirc_client
+using_xvmc_vld:using_xvmc_normal {
+        message(You have enabled both normal XvMC and EPIA XvMC.)
+        message(Unfortunately you must pick one.)
+        error(Unsupported configuration)
+    }
+}
 
-# XvMC support, modify as necessary.
-#CONFIG += using_xvmc
-#DEFINES += USING_XVMC
-#EXTRA_LIBS += -lXvMCNVIDIA -lXvMC
+using_xvmc_vld {
+    CONFIG += using_xvmc
+    DEFINES += USING_XVMC USING_XVMC_VLD
+    EXTRA_LIBS += -lviaXvMC -lXvMC
+}
 
-# XvMC_VLD support, modify as necessary. Incompatible with normal XvMC support.
-# Used for hardware accelerated decoding on VIA EPIA-M (and other) boards.
-#CONFIG += using_xvmc using_xvmc_vld
-#DEFINES += USING_XVMC USING_XVMC_VLD
-#EXTRA_LIBS += -lviaXvMC -lXvMC
+using_xvmc_normal {
+    CONFIG += using_xvmc
+    DEFINES += USING_XVMC
+    EXTRA_LIBS += -lXvMCNVIDIA -lXvMC
+}
 
-# DirectFB support
-#CONFIG += using_directfb
-#EXTRA_LIBS += `directfb-config --libs`
-#QMAKE_CXXFLAGS += `directfb-config --cflags`
+using_directfb {
+    EXTRA_LIBS += `directfb-config --libs`
+    QMAKE_CXXFLAGS += `directfb-config --cflags`
+}
 
 # Windows support
 win32 {
@@ -146,18 +194,18 @@
     }
 }
 
-# DirectX support
-#CONFIG += using_directx
-#DEFINES += USING_DIRECTX
+using_directx {
+    DEFINES += USING_DIRECTX
+}
 
-# OpenGL support for vertical retrace sync
-#DEFINES += USING_OPENGL_VSYNC
-#EXTRA_LIBS += -lGL -lGLU
-#CONFIG += using_opengl
+using_opengl_vsync {
+    DEFINES += USING_OPENGL_VSYNC
+    EXTRA_LIBS += -lGL -lGLU
+}
 
-# Allow use of XrandR to change display resolutions
-#CONFIG += using_xrandr
-#DEFINES += USING_XRANDR
+using_xrandr {
+    DEFINES += USING_XRANDR
+}
 
 ################################################################
 # Please keep these CONFIG blocks as the last part of this file!
@@ -172,7 +220,6 @@
     EXTRA_LIBS -= $${LOCAL_LIBDIR_X11} -lXinerama -lXv -lX11 -lXext -lXxf86vm
     CONFIG     -= using_ivtv
     DEFINES    -= USING_IVTV
-    CONFIG     -= using_oss
     CONFIG     -= using_joystick_menu
 }
 win32 {
@@ -181,7 +228,6 @@
     EXTRA_LIBS -= $${LOCAL_LIBDIR_X11} -lXinerama -lXv -lX11 -lXext -lXxf86vm
     CONFIG     -= using_ivtv
     DEFINES    -= USING_IVTV
-    CONFIG     -= using_oss
     CONFIG     -= using_joystick_menu
 }
 freebsd {
Index: libs/libmythtv/libmythtv.pro
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/libmythtv.pro,v
retrieving revision 1.86
diff -u -r1.86 libmythtv.pro
--- libs/libmythtv/libmythtv.pro	2 Feb 2005 07:11:10 -0000	1.86
+++ libs/libmythtv/libmythtv.pro	24 Feb 2005 20:55:43 -0000
@@ -146,7 +146,7 @@
     HEADERS += videoout_dx.h
 }
 
-using_opengl {
+using_opengl_vsync {
     CONFIG += opengl
 }
 


More information about the mythtv-dev mailing list