Blame view

tools/extras/install_portaudio.sh 3.91 KB
8dcb6dfcb   Yannick Estève   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  #!/bin/bash
  #Copyright 2012 Cisco Systems; Matthias Paulik
  #
  #Licensed under the Apache License, Version 2.0 (the "License");
  #you may not use this file except in compliance with the License.
  #You may obtain a copy of the License at
  #
  #http://www.apache.org/licenses/LICENSE-2.0
  #
  #THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  #KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
  #WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
  #MERCHANTABLITY OR NON-INFRINGEMENT.
  #See the Apache 2 License for the specific language governing permissions and
  #limitations under the License.
  #
  #This script attempts to install port audio, which is needed for the run-on
  #decoding stuff. Portaudio enables the decoder to grab a live audio stream
  #from the soundcard. I tested portaudio on Linux (RedHat and Suse Linux) and
  #on MacOS 10.7. On Linux, it compiles out of the box. For MacOS 10.7,
  #it is necessary to edit the Makefile (this script tries to do that).
  #The script will remove all occurances of
  #
  # -Werror (occurs once in the Makefile)
  # -arch i386 (occurs twice in the Makefile)
  # -arch ppc (occurs twice in the Makefile)
  # -isysroot /Developer/SDKs/MacOSX10.4u.sdk
  #
  #also, it seems that one has to uncomment the inclusion of AudioToolbox in
  #include/pa_mac_core.h
  #
  #All this should make it compile fine for x86_64 under MacOS 10.7
  #(always assuming that you installed XCode, wget and
  #the Linux environment stuff on MacOS)
  
  echo "****() Installing portaudio"
  
  if [ ! -e pa_stable_v19_20111121.tgz ]; then
      echo "Could not find portaudio tarball pa_stable_v19_20111121.tgz"
      echo "Trying to download it via wget!"
  
      if ! which wget >&/dev/null; then
          echo "This script requires you to first install wget"
          echo "You can also just download pa_stable_v19_20111121.tgz from"
          echo "http://www.portaudio.com/download.html)"
          exit 1;
      fi
  
     wget -T 10 -t 3 http://www.portaudio.com/archives/pa_stable_v19_20111121.tgz
  
     if [ ! -e pa_stable_v19_20111121.tgz ]; then
          echo "Download of pa_stable_v19_20111121.tgz - failed!"
          echo "Aborting script. Please download and install port audio manually!"
      exit 1;
     fi
  fi
  
  tar -xovzf pa_stable_v19_20111121.tgz || exit 1
  
  read -d '' pa_patch << "EOF"
  --- portaudio/Makefile.in	2012-08-05 10:42:05.000000000 +0300
  +++ portaudio/Makefile_mod.in	2012-08-05 10:41:54.000000000 +0300
  @@ -193,6 +194,8 @@
   	for include in $(INCLUDES); do \\
   		$(INSTALL_DATA) -m 644 $(top_srcdir)/include/$$include $(DESTDIR)$(includedir)/$$include; \\
   	done
  +	$(INSTALL_DATA) -m 644 $(top_srcdir)/src/common/pa_ringbuffer.h $(DESTDIR)$(includedir)/$$include;
  +	$(INSTALL_DATA) -m 644 $(top_srcdir)/src/common/pa_memorybarrier.h $(DESTDIR)$(includedir)/$$include;
   	$(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
   	$(INSTALL) -m 644 portaudio-2.0.pc $(DESTDIR)$(libdir)/pkgconfig/portaudio-2.0.pc
   	@echo ""
  
  EOF
  
  MACOS=`uname 2>/dev/null | grep Darwin`
  
  cd portaudio
  
  if [ -z "$MACOS" ]; then
      echo "Patching Makefile.in to include ring buffer functionality..."
      echo "${pa_patch}" | patch -p0 Makefile.in
  fi
  
  patch -p0  Makefile.in < ../extras/portaudio.patch
  autoconf
  ./configure --prefix=`pwd`/install --with-pic
  perl -i -pe 's:src/common/pa_ringbuffer.o:: if /^OTHER_OBJS\s*=/' Makefile
  
  if [ "$MACOS" != "" ]; then
      echo "detected MacOS operating system ... trying to fix Makefile"
      mv Makefile Makefile.bck
      cat Makefile.bck | sed -e 's/\-isysroot\ \/Developer\/SDKs\/MacOSX10\.4u\.sdk//g' \
        -e 's/-Werror//g' -e 's/-arch i386//g' -e 's/-arch ppc64//g' -e 's/-arch ppc//g' \
        > Makefile
      mv include/pa_mac_core.h include/pa_mac_core.h.bck
      cat include/pa_mac_core.h.bck \
        | sed 's/\/\/\#include \<AudioToolbox\/AudioToolbox.h\>/#include \<AudioToolbox\/AudioToolbox.h\>/g' \
        > include/pa_mac_core.h
  fi
  
  make
  make install
  
  if [ "$MACOS" != "" ]; then
      cp src/common/pa_ringbuffer.h install/include/
  fi
  
  cd ..