Difference between revisions of "ARts"

From CBLFS
Jump to navigationJump to search
(I updated the package description.)
(Non-Multilib: No detection of SSE instruction availability)
Line 35: Line 35:
  
 
== Non-Multilib ==
 
== Non-Multilib ==
 +
On x86_64, aRTS 'configure' fails to detect if the hardware provides SSE floating point to int conversion instructions.
 +
 +
Apply the following patch to allow aRTS to use SSE instructions and hardware float to int conversions on your x86_64 machine:
 +
 +
diff -Naur arts-1.5.6/configure arts-1.5.6.new/configure
 +
--- arts-1.5.6/configure        2007-01-15 22:45:45.000000000 -0800
 +
+++ arts-1.5.6.new/configure    2007-01-31 23:10:21.000000000 -0800
 +
@@ -38958,7 +38958,7 @@
 +
  cat >>conftest.$ac_ext <<_ACEOF
 +
  /* end confdefs.h.  */
 +
-#if defined(__i386__)
 +
+#if defined(__i386__) || defined(__x86_64__)
 +
  static inline long QRound (float inval)
 +
  {
 +
    long ret;
 +
@@ -39047,7 +39047,7 @@
 +
  main ()
 +
  {
 +
-#if defined(__GNUC__) && defined(__i386__)
 +
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 +
  __asm__("movups %xmm0, (%esp)");
 +
  #else
 +
  /* IRIX's cc treats #error as a warning, make sure it errors out here */
 +
diff -Naur arts-1.5.6/flow/cpuinfo.cc arts-1.5.6.new/flow/cpuinfo.cc
 +
--- arts-1.5.6/flow/cpuinfo.cc  2005-09-10 01:13:33.000000000 -0700
 +
+++ arts-1.5.6.new/flow/cpuinfo.cc      2007-01-31 23:16:20.000000000 -0800
 +
@@ -29,7 +29,23 @@
 +
  using namespace Arts;
 +
+#ifdef __x86_64__
 +
+
 +
+  /*
 +
+    HACK: This assumes that x86_64 processors have all the MMX, 3DNow!,
 +
+  and SSE instructions, which is true as far as I know, but I haven't
 +
+  checked for other than K8.
 +
+
 +
+  It also bypasses the original codes' checking of the hardware CPUID
 +
+  for that info, and hard codes it instead.
 +
+  */
 +
+
 +
+int CpuInfo::s_flags = CpuMMX + CpuEMMX + Cpu3DNow + CpuSSE;
 +
+#else
 +
  int CpuInfo::s_flags = 0;
 +
+#endif
 +
+
 +
+
 +
  namespace Arts
 +
  {
 +
@@ -53,7 +69,7 @@
 +
  void CpuInfoStartup::startup()
 +
  {
 +
-#ifdef HAVE_X86_SSE
 +
+#if defined(HAVE_X86_SSE) && !defined(__x86_64__)
 +
  /*
 +
  * Taken with thanks from mmx.h:
 +
  *
 +
@@ -226,7 +242,7 @@
 +
          }
 +
          signal(SIGILL, oldHandler);
 +
        }
 +
-#endif /* HAVE_X86_SSE */
 +
+#endif /* HAVE_X86_SSE && ! __x86_64__*/
 +
  }
 +
  static CpuInfoStartup cpuInfoStartup;
  
 
Compile the package:
 
Compile the package:

Revision as of 09:21, 2 February 2007

Download Source: ftp://ftp.kde.org/pub/kde/stable/3.5.10/src/arts-1.5.10.tar.bz2

Introduction to aRts

The Analog Realtime Synthesizer (aRts) enables the playing of multiple audio or video streams concurrently - be it on the desktop or over a network. ARts is a full-featured sound system and includes filters, a modular analog synthesizer, and a mixer. Its architecture allows developers to create additional filter plugins and users to apply sequences of filters using a graphical drag-n-drop approach. Video support is available for MPEG versions 1, 2 and 4 (experimental), as well as the AVI and DivX formats.

ARts is a core component of the KDE 3 desktop environment and provides the basis for the KdeMultimedia package. However, it can also be used independently of KDE (i.e. doesn't use Qt or KdeLibs for most things).

Old Project Home Page: http://www.arts-project.org/

Current Project Home Page: http://www.kde.org

Dependencies

Required

Recommended

Optional

Non-Multilib

On x86_64, aRTS 'configure' fails to detect if the hardware provides SSE floating point to int conversion instructions.

Apply the following patch to allow aRTS to use SSE instructions and hardware float to int conversions on your x86_64 machine:

diff -Naur arts-1.5.6/configure arts-1.5.6.new/configure
--- arts-1.5.6/configure        2007-01-15 22:45:45.000000000 -0800
+++ arts-1.5.6.new/configure    2007-01-31 23:10:21.000000000 -0800
@@ -38958,7 +38958,7 @@
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#if defined(__i386__)
+#if defined(__i386__) || defined(__x86_64__)
 static inline long QRound (float inval)
 {
   long ret;
@@ -39047,7 +39047,7 @@
 main ()
 {
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 __asm__("movups %xmm0, (%esp)");
 #else
 /* IRIX's cc treats #error as a warning, make sure it errors out here */
diff -Naur arts-1.5.6/flow/cpuinfo.cc arts-1.5.6.new/flow/cpuinfo.cc
--- arts-1.5.6/flow/cpuinfo.cc  2005-09-10 01:13:33.000000000 -0700
+++ arts-1.5.6.new/flow/cpuinfo.cc      2007-01-31 23:16:20.000000000 -0800
@@ -29,7 +29,23 @@
 using namespace Arts;
+#ifdef __x86_64__
+
+   /*
+    HACK: This assumes that x86_64 processors have all the MMX, 3DNow!,
+   and SSE instructions, which is true as far as I know, but I haven't
+   checked for other than K8.
+
+   It also bypasses the original codes' checking of the hardware CPUID
+   for that info, and hard codes it instead.
+   */
+
+int CpuInfo::s_flags = CpuMMX + CpuEMMX + Cpu3DNow + CpuSSE;
+#else
 int CpuInfo::s_flags = 0;
+#endif
+
+
 namespace Arts
 {
@@ -53,7 +69,7 @@
 void CpuInfoStartup::startup()
 {
-#ifdef HAVE_X86_SSE
+#if defined(HAVE_X86_SSE) && !defined(__x86_64__)
 /*
  * Taken with thanks from mmx.h:
  *
@@ -226,7 +242,7 @@
         }
         signal(SIGILL, oldHandler);
        }
-#endif /* HAVE_X86_SSE */
+#endif /* HAVE_X86_SSE && ! __x86_64__*/
 }
 static CpuInfoStartup cpuInfoStartup;

Compile the package:

./configure --prefix=$KDE_PREFIX --disable-debug \
    --disable-dependency-tracking &&
make

Install the package

make install

Multilib

32Bit

Compile the package:

CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" USE_ARCH=32 PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
    ./configure --prefix=$KDE_PREFIX --disable-debug --disable-dependency-tracking \
    --x-libraries=${XORG_PREFIX}/lib --with-qt-libraries=${QTDIR}/lib \
    --enable-libsuffix=none &&
make

Install the package

make install &&
mv -v ${KDE_PREFIX}/bin/artsc-config{,-32}

N32

Compile the package:

CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" USE_ARCH=n32 PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" \
    ./configure --prefix=$KDE_PREFIX --libdir=${KDE_PREFIX}/lib32 --disable-debug \
    --disable-dependency-tracking --x-libraries=${XORG_PREFIX}/lib32 --with-qt-libraries=${QTDIR}/lib32 \
    --enable-libsuffix=32 &&
make

Install the package

make install &&
mv -v ${KDE_PREFIX}/bin/artsc-config{,-n32}

64Bit

Compile the package:

CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" USE_ARCH=64 PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
    ./configure --prefix=$KDE_PREFIX --libdir=${KDE_PREFIX}/lib64 --disable-debug \
    --disable-dependency-tracking --x-libraries=${XORG_PREFIX}/lib64 --with-qt-libraries=${QTDIR}/lib64 \
    --enable-libsuffix=64 &&
make

Install the package

make install &&
mv -v ${KDE_PREFIX}/bin/artsc-config{,-64} &&
ln -sfv /usr/bin/multiarch_wrapper ${KDE_PREFIX}/bin/artsc-config