Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

329 lines
10KB

  1. #!/bin/bash
  2. # apt-get install build-essential libglib2.0-dev uuid-dev
  3. # ---------------------------------------------------------------------------------------------------------------------
  4. # set variables
  5. PKG_CONFIG_VERSION=0.28
  6. LIBLO_VERSION=0.29
  7. ZLIB_VERSION=1.2.11
  8. FILE_VERSION=5.32
  9. LIBOGG_VERSION=1.3.3
  10. LIBVORBIS_VERSION=1.3.5
  11. FLAC_VERSION=1.3.2
  12. LIBSNDFILE_VERSION=1.0.28
  13. LIBGIG_VERSION=4.0.0
  14. LINUXSAMPLER_VERSION=2.0.0
  15. FLUIDSYNTH_VERSION=1.1.6
  16. MAKE_ARGS="-j 8"
  17. # ---------------------------------------------------------------------------------------------------------------------
  18. # stop on error
  19. set -e
  20. # ---------------------------------------------------------------------------------------------------------------------
  21. # cd to correct path
  22. if [ -f Makefile ]; then
  23. cd data/linux
  24. fi
  25. # ---------------------------------------------------------------------------------------------------------------------
  26. # set target dir
  27. TARGETDIR=$HOME/builds
  28. # ---------------------------------------------------------------------------------------------------------------------
  29. # function to remove old stuff
  30. cleanup()
  31. {
  32. rm -rf $TARGETDIR/carla32/ $TARGETDIR/carla64/
  33. rm -rf file-*
  34. rm -rf flac-*
  35. rm -rf fltk-*
  36. rm -rf fluidsynth-*
  37. rm -rf libgig-*
  38. rm -rf liblo-*
  39. rm -rf libogg-*
  40. rm -rf libsndfile-*
  41. rm -rf libvorbis-*
  42. rm -rf linuxsampler-*
  43. rm -rf pkg-config-*
  44. rm -rf zlib-*
  45. }
  46. # ---------------------------------------------------------------------------------------------------------------------
  47. # function to build base libs
  48. build_base()
  49. {
  50. export CC=gcc
  51. export CXX=g++
  52. export PREFIX=$TARGETDIR/carla$ARCH
  53. export PATH=$PREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
  54. export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
  55. export CFLAGS="-O3 -mtune=generic -msse -msse2 -mfpmath=sse -fvisibility=hidden -fdata-sections -ffunction-sections"
  56. export CFLAGS="$CFLAGS -fPIC -DPIC -DNDEBUG -I$PREFIX/include"
  57. export CXXFLAGS="$CFLAGS -fvisibility-inlines-hidden"
  58. export LDFLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed -Wl,--strip-all"
  59. export LDFLAGS="$LDFLAGS -L$PREFIX/lib"
  60. # ---------------------------------------------------------------------------------------------------------------------
  61. # pkgconfig
  62. if [ ! -d pkg-config-${PKG_CONFIG_VERSION} ]; then
  63. curl -O https://pkg-config.freedesktop.org/releases/pkg-config-${PKG_CONFIG_VERSION}.tar.gz
  64. tar -xf pkg-config-${PKG_CONFIG_VERSION}.tar.gz
  65. fi
  66. if [ ! -f pkg-config-${PKG_CONFIG_VERSION}_$ARCH/build-done ]; then
  67. cp -r pkg-config-${PKG_CONFIG_VERSION} pkg-config-${PKG_CONFIG_VERSION}_$ARCH
  68. cd pkg-config-${PKG_CONFIG_VERSION}_$ARCH
  69. ./configure --enable-indirect-deps --with-internal-glib --with-pc-path=$PKG_CONFIG_PATH --prefix=$PREFIX
  70. make ${MAKE_ARGS}
  71. make install
  72. touch build-done
  73. cd ..
  74. fi
  75. # ---------------------------------------------------------------------------------------------------------------------
  76. # liblo
  77. if [ ! -d liblo-${LIBLO_VERSION} ]; then
  78. curl -L http://download.sourceforge.net/liblo/liblo-${LIBLO_VERSION}.tar.gz -o liblo-${LIBLO_VERSION}.tar.gz
  79. tar -xf liblo-${LIBLO_VERSION}.tar.gz
  80. fi
  81. if [ ! -f liblo-${LIBLO_VERSION}_$ARCH/build-done ]; then
  82. cp -r liblo-${LIBLO_VERSION} liblo-${LIBLO_VERSION}_$ARCH
  83. cd liblo-${LIBLO_VERSION}_$ARCH
  84. ./configure --enable-static --disable-shared --prefix=$PREFIX \
  85. --enable-threads \
  86. --disable-examples --disable-tools
  87. make ${MAKE_ARGS}
  88. make install
  89. touch build-done
  90. cd ..
  91. fi
  92. # ---------------------------------------------------------------------------------------------------------------------
  93. if [ "$ARCH" == "32" ]; then
  94. return
  95. fi
  96. # ---------------------------------------------------------------------------------------------------------------------
  97. # zlib
  98. if [ ! -d zlib-${ZLIB_VERSION} ]; then
  99. curl -L https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz -o zlib-${ZLIB_VERSION}.tar.gz
  100. tar -xf zlib-${ZLIB_VERSION}.tar.gz
  101. fi
  102. if [ ! -f zlib-${ZLIB_VERSION}/build-done ]; then
  103. cd zlib-${ZLIB_VERSION}
  104. ./configure --static --prefix=$PREFIX
  105. make ${MAKE_ARGS}
  106. make install
  107. touch build-done
  108. cd ..
  109. fi
  110. # ---------------------------------------------------------------------------------------------------------------------
  111. # file/magic
  112. if [ ! -d file-${FILE_VERSION} ]; then
  113. curl -O ftp://ftp.astron.com/pub/file/file-${FILE_VERSION}.tar.gz
  114. tar -xf file-${FILE_VERSION}.tar.gz
  115. fi
  116. if [ ! -f file-${FILE_VERSION}/build-done ]; then
  117. cd file-${FILE_VERSION}
  118. ./configure --enable-static --disable-shared --prefix=$PREFIX
  119. make ${MAKE_ARGS}
  120. make install
  121. touch build-done
  122. cd ..
  123. fi
  124. # ---------------------------------------------------------------------------------------------------------------------
  125. # libogg
  126. if [ ! -d libogg-${LIBOGG_VERSION} ]; then
  127. curl -O https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz
  128. tar -xf libogg-${LIBOGG_VERSION}.tar.gz
  129. fi
  130. if [ ! -f libogg-${LIBOGG_VERSION}/build-done ]; then
  131. cd libogg-${LIBOGG_VERSION}
  132. ./configure --enable-static --disable-shared --prefix=$PREFIX
  133. make ${MAKE_ARGS}
  134. make install
  135. touch build-done
  136. cd ..
  137. fi
  138. # ---------------------------------------------------------------------------------------------------------------------
  139. # libvorbis
  140. if [ ! -d libvorbis-${LIBVORBIS_VERSION} ]; then
  141. wget https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz
  142. tar -xf libvorbis-${LIBVORBIS_VERSION}.tar.gz
  143. fi
  144. if [ ! -f libvorbis-${LIBVORBIS_VERSION}/build-done ]; then
  145. cd libvorbis-${LIBVORBIS_VERSION}
  146. ./configure --enable-static --disable-shared --prefix=$PREFIX
  147. make ${MAKE_ARGS}
  148. make install
  149. touch build-done
  150. cd ..
  151. fi
  152. # ---------------------------------------------------------------------------------------------------------------------
  153. # flac
  154. if [ ! -d flac-${FLAC_VERSION} ]; then
  155. wget https://svn.xiph.org/releases/flac/flac-${FLAC_VERSION}.tar.xz
  156. tar -xf flac-${FLAC_VERSION}.tar.xz
  157. fi
  158. if [ ! -f flac-${FLAC_VERSION}/build-done ]; then
  159. cd flac-${FLAC_VERSION}
  160. chmod +x configure install-sh
  161. ./configure --enable-static --disable-shared --prefix=$PREFIX \
  162. --disable-cpplibs
  163. make ${MAKE_ARGS}
  164. make install
  165. touch build-done
  166. cd ..
  167. fi
  168. # ---------------------------------------------------------------------------------------------------------------------
  169. # libsndfile
  170. if [ ! -d libsndfile-${LIBSNDFILE_VERSION} ]; then
  171. curl -O http://www.mega-nerd.com/libsndfile/files/libsndfile-${LIBSNDFILE_VERSION}.tar.gz
  172. tar -xf libsndfile-${LIBSNDFILE_VERSION}.tar.gz
  173. fi
  174. if [ ! -f libsndfile-${LIBSNDFILE_VERSION}/build-done ]; then
  175. cd libsndfile-${LIBSNDFILE_VERSION}
  176. ./configure --enable-static --disable-shared --prefix=$PREFIX \
  177. --disable-full-suite --disable-alsa --disable-sqlite
  178. make ${MAKE_ARGS}
  179. make install
  180. touch build-done
  181. cd ..
  182. fi
  183. # ---------------------------------------------------------------------------------------------------------------------
  184. # libgig
  185. if [ ! -d libgig-${LIBGIG_VERSION} ]; then
  186. curl -O http://download.linuxsampler.org/packages/libgig-${LIBGIG_VERSION}.tar.bz2
  187. tar -xf libgig-${LIBGIG_VERSION}.tar.bz2
  188. fi
  189. if [ ! -f libgig-${LIBGIG_VERSION}/build-done ]; then
  190. cd libgig-${LIBGIG_VERSION}
  191. if [ ! -f patched ]; then
  192. patch -p1 -i ../patches/libgig_fix-build.patch
  193. touch patched
  194. fi
  195. ./configure --enable-static --disable-shared --prefix=$PREFIX
  196. make ${MAKE_ARGS}
  197. make install
  198. touch build-done
  199. cd ..
  200. fi
  201. # ---------------------------------------------------------------------------------------------------------------------
  202. # linuxsampler
  203. if [ ! -d linuxsampler-${LINUXSAMPLER_VERSION} ]; then
  204. curl -O http://download.linuxsampler.org/packages/linuxsampler-${LINUXSAMPLER_VERSION}.tar.bz2
  205. tar -xf linuxsampler-${LINUXSAMPLER_VERSION}.tar.bz2
  206. fi
  207. if [ ! -f linuxsampler-${LINUXSAMPLER_VERSION}/build-done ]; then
  208. cd linuxsampler-${LINUXSAMPLER_VERSION}
  209. if [ ! -f patched ]; then
  210. patch -p1 -i ../patches/linuxsampler_allow-no-drivers-build.patch
  211. patch -p1 -i ../patches/linuxsampler_disable-ladspa-fx.patch
  212. touch patched
  213. fi
  214. rm configure
  215. make -f Makefile.svn configure
  216. ./configure \
  217. --enable-static --disable-shared --prefix=$PREFIX \
  218. --disable-alsa-driver --disable-arts-driver --disable-jack-driver \
  219. --disable-asio-driver --disable-midishare-driver --disable-mmemidi-driver \
  220. --disable-coreaudio-driver --disable-coremidi-driver \
  221. --disable-instruments-db --disable-sf2-engine
  222. make ${MAKE_ARGS}
  223. make install
  224. sed -i -e "s|-llinuxsampler|-llinuxsampler -L$PREFIX/lib/libgig -lgig -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lpthread -lm|" $PREFIX/lib/pkgconfig/linuxsampler.pc
  225. touch build-done
  226. cd ..
  227. fi
  228. # ---------------------------------------------------------------------------------------------------------------------
  229. # glib
  230. if [ ! -d $PREFIX/include/glib-2.0 ]; then
  231. cp -r /usr/include/glib-2.0 $PREFIX/include/
  232. fi
  233. if [ ! -f $PREFIX/lib/pkgconfig/glib-2.0.pc ]; then
  234. cp /usr/lib/x86_64-linux-gnu/pkgconfig/glib-2.0.pc $PREFIX/lib/pkgconfig/
  235. cp /usr/lib/x86_64-linux-gnu/pkgconfig/gthread-2.0.pc $PREFIX/lib/pkgconfig/
  236. cp /usr/lib/x86_64-linux-gnu/pkgconfig/libpcre.pc $PREFIX/lib/pkgconfig/
  237. fi
  238. # ---------------------------------------------------------------------------------------------------------------------
  239. # fluidsynth
  240. if [ ! -d fluidsynth-${FLUIDSYNTH_VERSION} ]; then
  241. curl -L http://sourceforge.net/projects/fluidsynth/files/fluidsynth-${FLUIDSYNTH_VERSION}/fluidsynth-${FLUIDSYNTH_VERSION}.tar.gz/download -o fluidsynth-${FLUIDSYNTH_VERSION}.tar.gz
  242. tar -xf fluidsynth-${FLUIDSYNTH_VERSION}.tar.gz
  243. fi
  244. if [ ! -f fluidsynth-${FLUIDSYNTH_VERSION}/build-done ]; then
  245. cd fluidsynth-${FLUIDSYNTH_VERSION}
  246. ./configure --enable-static --disable-shared --prefix=$PREFIX \
  247. --enable-libsndfile-support \
  248. --disable-dbus-support --disable-aufile-support \
  249. --disable-pulse-support --disable-alsa-support --disable-portaudio-support --disable-oss-support --disable-jack-support \
  250. --disable-coreaudio --disable-coremidi --disable-dart --disable-lash --disable-ladcca \
  251. --without-readline
  252. make ${MAKE_ARGS}
  253. make install
  254. sed -i -e "s|-lfluidsynth|-lfluidsynth -lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lpthread -lm|" $PREFIX/lib/pkgconfig/fluidsynth.pc
  255. touch build-done
  256. cd ..
  257. fi
  258. }
  259. # ---------------------------------------------------------------------------------------------------------------------
  260. # build base libs
  261. export ARCH=32
  262. build_base
  263. export ARCH=64
  264. build_base
  265. # ---------------------------------------------------------------------------------------------------------------------