Here is code to add to configure.in to do what you want. It preserves CFLAGS and uses that var to hold the sse enable flags. You can subset this under the exisiting AC_ARG for sse or just make it do it all the time. If you notice the i?86, that means any x86 platform target will have it enabled. You can change that i686, but keep in mind that some distros compile/target for i386 on the glibc / gcc compiles and you will sometimes get i386 as the target even though you are on a pentium 3/4 box. Aron Rosenberg SightSpeed +++++ Add to configure.in ++++++++ echo -n "Checking for Platform ASM Speedups..." case "$target" in i?86*) CFLAGS="$CFLAGS -D_USE_SSE -O3 -msse" echo "Found and Activating SSE" ;; powerpc-apple-darwin*) CFLAGS="-faltivec" echo "Found and Activating Altivec" ;; *) echo "None Found" ;; esac <p>At 09:08 PM 4/1/2004, you wrote:>I'm aware of the problem, but I don't know how to get autoconf to handle >that properly. If someone knows how to make that work with autoconf even >with non-gcc compilers and with default CFLAGS, I'm interested. > > Jean-Marc > >Le jeu 01/04/2004 à 17:21, Michael T. Dean a écrit : > > When compiling Speex 1.1.4 with GCC 3.3.2, the option -msse must be > > added to the CFLAGS in libspeex/Makefile. > > > > GCC 3.1.1 added a new option "-msse" (see > > http://gcc.gnu.org/gcc-3.1/changes.html , specifically under "New > > Targets and Target Specific Improvements") to enable SSE instructions > > within the compiler's output (for appropriate architectures). > > > > Compiling speex on GCC 3.3.2 without the -msse option yields the error > > message shown at bottom. The referenced file (xmmintrin.h) contains a > > check to ensure that SSE is enabled (via -msse) before use: > > > > #ifndef __SSE__ > > # error "SSE instruction set not enabled" > > #else > > > > This check seems to have been added to the GCC 3.3.x series. > > > > Once the option is added to CFLAGS, libspeex (and the rest of the speex > > package) compiles cleanly and executes properly. > > > > Thanks, > > Mike Dean > > > > > > gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" > > -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 > > -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 > > -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 > > -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 > > -DHAVE_SYS_SOUNDCARD_H=1 -DHAVE_LIBOGG=1 -DHAVE_LIBM=1 > > -DVERSION=\"1.1.4\" -D_USE_SSE=1 -I. -I. -g -O2 -MT nb_celp.lo -MD -MP > > -MF .deps/nb_celp.Tpo -c nb_celp.c -fPIC -DPIC -o .libs/nb_celp.o > > In file included from vq.h:43, > > from nb_celp.c:41: > > /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/include/xmmintrin.h:34:3: > > #error "SSE instruction set not enabled" > > In file included from nb_celp.c:41: > > vq.h:44: error: parse error before '*' token > > vq.h:46: error: parse error before '*' token > > make[1]: *** [nb_celp.lo] Error 1 > > make[1]: Leaving directory `/usr/local/src/mdean/speex-1.1.4/libspeex' > > make: *** [all-recursive] Error 1 > > > > > > --- >8 ---- > > List archives: http://www.xiph.org/archives/ > > Ogg project homepage: http://www.xiph.org/ogg/ > > To unsubscribe from this list, send a message to > 'speex-dev-request@xiph.org' > > containing only the word 'unsubscribe' in the body. No subject is needed. > > Unsubscribe messages sent to the list will be ignored/filtered. >-- >Jean-Marc Valin >http://www.xiph.org/~jm/ >LABORIUS >Université de Sherbrooke, Québec, Canada--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
Actually, I prefer having the user explicitly specify --enable-sse because you might want to compile for other machines than what you have. Also, any idea what happens if the user already has CFLAGS=-O2 defined (and you add -O3)? Last thing, how do you check whether gcc accepts -msse? Jean-Marc Le ven 02/04/2004 à 00:40, Aron Rosenberg a écrit :> Here is code to add to configure.in to do what you want. It preserves > CFLAGS and uses that var to hold the sse enable flags. You can subset this > under the exisiting AC_ARG for sse or just make it do it all the time. If > you notice the i?86, that means any x86 platform target will have it > enabled. You can change that i686, but keep in mind that some distros > compile/target for i386 on the glibc / gcc compiles and you will sometimes > get i386 as the target even though you are on a pentium 3/4 box. > > Aron Rosenberg > SightSpeed > > +++++ Add to configure.in ++++++++ > > echo -n "Checking for Platform ASM Speedups..." > case "$target" in > i?86*) > CFLAGS="$CFLAGS -D_USE_SSE -O3 -msse" > echo "Found and Activating SSE" > ;; > powerpc-apple-darwin*) > CFLAGS="-faltivec" > echo "Found and Activating Altivec" > ;; > *) > echo "None Found" > ;; > esac-- Jean-Marc Valin http://www.xiph.org/~jm/ LABORIUS Université de Sherbrooke, Québec, Canada -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 190 bytes Desc: Ceci est une partie de message numériquement signée. Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20040402/2cac96fc/signature-0001.pgp
So, if you want to enable that within the --enable-sse you would modify the exisiting the AC_ARG_ENABLE macro for sse to include that chunk. You can drop the -O3 if you want, its not needed for sse support on gcc. As for which -O would be used, its the last one specified (from gcc man page). You can get really fancy with a test program that compiles a little bit of code and makes sure it works, but that would require more autoconf hacking than i can write in a few minutes. AC_ARG_ENABLE(sse, [ --enable-sse enable SSE support], [ PLACE CHUNK HERE]) <p>Another note i forgot: If you want to do the system detection, you need to add AC_CANONICAL_SYSTEM as the first major line, right after the VERSION=$SPEEX_VERSION PACKAGE=speex and remove the AC_CANONICAL_HOST line Aron Rosenberg SightSpeed <p>At 09:53 PM 4/1/2004, you wrote:>Actually, I prefer having the user explicitly specify --enable-sse >because you might want to compile for other machines than what you have. >Also, any idea what happens if the user already has CFLAGS=-O2 defined >(and you add -O3)? Last thing, how do you check whether gcc accepts >-msse? > > Jean-Marc > >Le ven 02/04/2004 à 00:40, Aron Rosenberg a écrit : > > Here is code to add to configure.in to do what you want. It preserves > > CFLAGS and uses that var to hold the sse enable flags. You can subset this > > under the exisiting AC_ARG for sse or just make it do it all the time. If > > you notice the i?86, that means any x86 platform target will have it > > enabled. You can change that i686, but keep in mind that some distros > > compile/target for i386 on the glibc / gcc compiles and you will sometimes > > get i386 as the target even though you are on a pentium 3/4 box. > > > > Aron Rosenberg > > SightSpeed > > > > +++++ Add to configure.in ++++++++ > > > > echo -n "Checking for Platform ASM Speedups..." > > case "$target" in > > i?86*) > > CFLAGS="$CFLAGS -D_USE_SSE -O3 -msse" > > echo "Found and Activating SSE" > > ;; > > powerpc-apple-darwin*) > > CFLAGS="-faltivec" > > echo "Found and Activating Altivec" > > ;; > > *) > > echo "None Found" > > ;; > > esac > >-- >Jean-Marc Valin >http://www.xiph.org/~jm/ >LABORIUS >Université de Sherbrooke, Québec, Canada--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
One more thing: The detection snippet, uses $target - which when you are cross-compiling or regular compiler is the target machine type that you specify or the compiler is built for. Aron Rosenberg SightSpeed At 09:53 PM 4/1/2004, you wrote:>Actually, I prefer having the user explicitly specify --enable-sse >because you might want to compile for other machines than what you have. >Also, any idea what happens if the user already has CFLAGS=-O2 defined >(and you add -O3)? Last thing, how do you check whether gcc accepts >-msse? > > Jean-Marc > >Le ven 02/04/2004 à 00:40, Aron Rosenberg a écrit : > > Here is code to add to configure.in to do what you want. It preserves > > CFLAGS and uses that var to hold the sse enable flags. You can subset this > > under the exisiting AC_ARG for sse or just make it do it all the time. If > > you notice the i?86, that means any x86 platform target will have it > > enabled. You can change that i686, but keep in mind that some distros > > compile/target for i386 on the glibc / gcc compiles and you will sometimes > > get i386 as the target even though you are on a pentium 3/4 box. > > > > Aron Rosenberg > > SightSpeed > > > > +++++ Add to configure.in ++++++++ > > > > echo -n "Checking for Platform ASM Speedups..." > > case "$target" in > > i?86*) > > CFLAGS="$CFLAGS -D_USE_SSE -O3 -msse" > > echo "Found and Activating SSE" > > ;; > > powerpc-apple-darwin*) > > CFLAGS="-faltivec" > > echo "Found and Activating Altivec" > > ;; > > *) > > echo "None Found" > > ;; > > esac > >-- >Jean-Marc Valin >http://www.xiph.org/~jm/ >LABORIUS >Université de Sherbrooke, Québec, Canada--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.