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.

321 lines
10KB

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