Cross-Platform build scripts for audio plugins
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.

332 lines
11KB

  1. #!/bin/bash
  2. set -e
  3. cd $(dirname ${0})
  4. PAWPAW_ROOT="${PWD}"
  5. # ---------------------------------------------------------------------------------------------------------------------
  6. # check target
  7. target="${1}"
  8. if [ -z "${target}" ]; then
  9. echo "usage: ${0} <target>"
  10. exit 1
  11. fi
  12. # ---------------------------------------------------------------------------------------------------------------------
  13. # skip fluidsynth if glib is not wanted (fluidsynth requires glib)
  14. if [ -n "${PAWPAW_SKIP_GLIB}" ]; then
  15. PAWPAW_SKIP_FLUIDSYNTH=1
  16. fi
  17. # ---------------------------------------------------------------------------------------------------------------------
  18. # run bootstrap dependencies
  19. ./bootstrap-common.sh "${target}"
  20. # ---------------------------------------------------------------------------------------------------------------------
  21. # source setup code
  22. source setup/check_target.sh
  23. source setup/env.sh
  24. source setup/functions.sh
  25. source setup/versions.sh
  26. # ---------------------------------------------------------------------------------------------------------------------
  27. # fftw
  28. if [ -z "${PAWPAW_SKIP_FFTW}" ]; then
  29. FFTW_EXTRAFLAGS="--disable-alloca --disable-fortran --with-our-malloc"
  30. # FIXME macos-universal proper optimizations
  31. if [ "${MACOS_UNIVERSAL}" -eq 0 ]; then
  32. FFTW_EXTRAFLAGS+=" --enable-sse2"
  33. fi
  34. # if [ "${WIN32}" -eq 0 ]; then
  35. # FFTW_EXTRAFLAGS+=" --enable-threads"
  36. # fi
  37. download fftw "${FFTW_VERSION}" "${FFTW_URL}"
  38. build_autoconf fftw "${FFTW_VERSION}" "${FFTW_EXTRAFLAGS}"
  39. if [ "${CROSS_COMPILING}" -eq 0 ]; then
  40. run_make fftw "${FFTW_VERSION}" check
  41. fi
  42. fi # PAWPAW_SKIP_FFTW
  43. # ---------------------------------------------------------------------------------------------------------------------
  44. # fftwf
  45. if [ -z "${PAWPAW_SKIP_FFTW}" ]; then
  46. FFTWF_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-single"
  47. copy_download fftw fftwf "${FFTW_VERSION}"
  48. build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}"
  49. if [ "${CROSS_COMPILING}" -eq 0 ]; then
  50. run_make fftwf "${FFTW_VERSION}" check
  51. fi
  52. fi # PAWPAW_SKIP_FFTW
  53. # ---------------------------------------------------------------------------------------------------------------------
  54. # pcre
  55. if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  56. download pcre "${PCRE_VERSION}" "${PCRE_URL}"
  57. build_autoconf pcre "${PCRE_VERSION}"
  58. fi
  59. # ---------------------------------------------------------------------------------------------------------------------
  60. # libffi
  61. if [ "${WIN32}" -eq 1 ]; then
  62. LIBFFI_EXTRAFLAGS="--disable-multi-os-directory --disable-raw-api"
  63. download libffi "${LIBFFI_VERSION}" "${LIBFFI_URL}"
  64. build_autoconf libffi "${LIBFFI_VERSION}" "${LIBFFI_EXTRAFLAGS}"
  65. fi
  66. # ---------------------------------------------------------------------------------------------------------------------
  67. # glib
  68. if [ -z "${PAWPAW_SKIP_GLIB}" ]; then
  69. if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  70. GLIB_EXTRAFLAGS="--disable-rebuilds"
  71. if [ "${WIN32}" -eq 1 ]; then
  72. GLIB_EXTRAFLAGS+=" --with-threads=win32"
  73. else
  74. GLIB_EXTRAFLAGS+=" --with-threads=posix"
  75. fi
  76. if [ "${MACOS}" -eq 1 ]; then
  77. export EXTRA_LDFLAGS="-lresolv"
  78. elif [ "${WIN32}" -eq 1 ]; then
  79. export EXTRA_CFLAGS="-Wno-format -Wno-format-overflow"
  80. fi
  81. download glib ${GLIB_VERSION} "${GLIB_URL}" "${GLIB_TAR_EXT}"
  82. if [ "${MACOS}" -eq 1 ]; then
  83. patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g'
  84. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_ARM/__aarch64__/'
  85. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/__SSE2__/'
  86. fi
  87. build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}"
  88. fi
  89. fi # PAWPAW_SKIP_GLIB
  90. # ---------------------------------------------------------------------------------------------------------------------
  91. # liblo
  92. LIBLO_EXTRAFLAGS="--enable-threads --disable-examples --disable-tools"
  93. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  94. LIBLO_EXTRAFLAGS+=" --disable-tests"
  95. fi
  96. # auto-detection fails
  97. if [ "${MACOS}" -eq 1 ]; then
  98. LIBLO_EXTRAFLAGS+=" ac_cv_func_select=yes ac_cv_func_poll=yes ac_cv_func_setvbuf=yes"
  99. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  100. LIBLO_EXTRAFLAGS+=" ac_cv_c_bigendian=universal"
  101. fi
  102. fi
  103. download liblo "${LIBLO_VERSION}" "${LIBLO_URL}"
  104. build_autoconf liblo "${LIBLO_VERSION}" "${LIBLO_EXTRAFLAGS}"
  105. # FIXME tests fail on macOS
  106. if [ "${CROSS_COMPILING}" -eq 0 ] && [ "${MACOS}" -eq 0 ]; then
  107. run_make liblo "${LIBLO_VERSION}" check
  108. fi
  109. # ---------------------------------------------------------------------------------------------------------------------
  110. # lv2
  111. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  112. git_clone lv2 "${LV2_VERSION}" "${LV2_URL}"
  113. build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2 --no-coverage --no-plugins"
  114. fi # PAWPAW_SKIP_LV2
  115. # ---------------------------------------------------------------------------------------------------------------------
  116. # serd
  117. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  118. download serd "${SERD_VERSION}" "${SERD_URL}" "tar.bz2"
  119. build_waf serd "${SERD_VERSION}" "--static --no-shared --no-utils"
  120. fi # PAWPAW_SKIP_LV2
  121. # ---------------------------------------------------------------------------------------------------------------------
  122. # sord
  123. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  124. if [ "${CROSS_COMPILING}" -eq 1 ] && [ -z "${EXE_WRAPPER}" ]; then
  125. SORD_EXTRAFLAGS="--no-utils"
  126. fi
  127. download sord "${SORD_VERSION}" "${SORD_URL}" "tar.bz2"
  128. build_waf sord "${SORD_VERSION}" "--static --no-shared ${SORD_EXTRAFLAGS}"
  129. fi # PAWPAW_SKIP_LV2
  130. # ---------------------------------------------------------------------------------------------------------------------
  131. # sratom
  132. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  133. download sratom "${SRATOM_VERSION}" "${SRATOM_URL}" "tar.bz2"
  134. build_waf sratom "${SRATOM_VERSION}" "--static --no-shared"
  135. fi # PAWPAW_SKIP_LV2
  136. # ---------------------------------------------------------------------------------------------------------------------
  137. # lilv
  138. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  139. download lilv "${LILV_VERSION}" "${LILV_URL}" "tar.bz2"
  140. build_waf lilv "${LILV_VERSION}" "--static --no-bash-completion --no-bindings --no-shared"
  141. # --static-progs
  142. fi # PAWPAW_SKIP_LV2
  143. # ---------------------------------------------------------------------------------------------------------------------
  144. # lv2lint
  145. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  146. if [ "${LV2LINT_SUPPORTED}" -eq 1 ]; then
  147. download lv2lint "${LV2LINT_VERSION}" "${LV2LINT_URL}"
  148. build_meson lv2lint "${LV2LINT_VERSION}"
  149. # "-Donline-tests=true -Delf-tests=true"
  150. fi
  151. fi # PAWPAW_SKIP_LV2
  152. # ---------------------------------------------------------------------------------------------------------------------
  153. # kxstudio lv2 extensions
  154. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  155. git_clone kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}" "${KXSTUDIO_LV2_EXTENSIONS_URL}"
  156. build_make kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}"
  157. fi # PAWPAW_SKIP_LV2
  158. # ---------------------------------------------------------------------------------------------------------------------
  159. # MOD lv2 extensions
  160. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  161. git_clone mod-sdk "${MOD_SDK_VERSION}" "${MOD_SDK_URL}"
  162. build_make mod-sdk "${MOD_SDK_VERSION}"
  163. fi # PAWPAW_SKIP_LV2
  164. # ---------------------------------------------------------------------------------------------------------------------
  165. # fluidsynth
  166. if [ -z "${PAWPAW_SKIP_FLUIDSYNTH}" ]; then
  167. FLUIDSYNTH_EXTRAFLAGS="-Denable-floats=ON"
  168. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF"
  169. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF"
  170. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF"
  171. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF"
  172. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF"
  173. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF"
  174. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF"
  175. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF"
  176. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF"
  177. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF"
  178. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF"
  179. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF"
  180. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF"
  181. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF"
  182. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF"
  183. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF"
  184. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF"
  185. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF"
  186. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF"
  187. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF"
  188. git_clone fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_URL}"
  189. patch_file fluidsynth "${FLUIDSYNTH_VERSION}" "CMakeLists.txt" 's/_init_lib_suffix "64"/_init_lib_suffix ""/'
  190. build_cmake fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_EXTRAFLAGS}"
  191. if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc-e" ]; then
  192. FLUIDSYNTH_EXTRALIBS="-lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -lopus -logg -lpthread -lm"
  193. if [ "${MACOS}" -eq 1 ]; then
  194. FLUIDSYNTH_EXTRALIBS+=" -liconv"
  195. elif [ "${WIN32}" -eq 1 ]; then
  196. FLUIDSYNTH_EXTRALIBS+=" -lole32 -lws2_32"
  197. fi
  198. sed -i -e "s/-L\${libdir} -lfluidsynth/-L\${libdir} -lfluidsynth ${FLUIDSYNTH_EXTRALIBS}/" "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc"
  199. touch "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc-e"
  200. fi
  201. fi # PAWPAW_SKIP_FLUIDSYNTH
  202. # ---------------------------------------------------------------------------------------------------------------------
  203. # mxml
  204. git_clone mxml "${MXML_VERSION}" "${MXML_URL}"
  205. build_autoconf mxml "${MXML_VERSION}"
  206. # ---------------------------------------------------------------------------------------------------------------------
  207. # carla (backend only)
  208. CARLA_EXTRAFLAGS="CAN_GENERATE_LV2_TTL=false"
  209. CARLA_EXTRAFLAGS+=" EXTERNAL_PLUGINS=false"
  210. CARLA_EXTRAFLAGS+=" HAVE_ALSA=false"
  211. CARLA_EXTRAFLAGS+=" HAVE_JACK=false"
  212. CARLA_EXTRAFLAGS+=" HAVE_PULSEAUDIO=false"
  213. CARLA_EXTRAFLAGS+=" HAVE_DGL=false"
  214. CARLA_EXTRAFLAGS+=" HAVE_HYLIA=false"
  215. CARLA_EXTRAFLAGS+=" HAVE_GTK2=false"
  216. CARLA_EXTRAFLAGS+=" HAVE_GTK3=false"
  217. CARLA_EXTRAFLAGS+=" HAVE_X11=false"
  218. CARLA_EXTRAFLAGS+=" HAVE_FFMPEG=false"
  219. CARLA_EXTRAFLAGS+=" HAVE_FLUIDSYNTH=false"
  220. CARLA_EXTRAFLAGS+=" HAVE_LIBLO=false"
  221. CARLA_EXTRAFLAGS+=" HAVE_LIBMAGIC=false"
  222. CARLA_EXTRAFLAGS+=" HAVE_PYQT=false"
  223. CARLA_EXTRAFLAGS+=" HAVE_QT=false"
  224. CARLA_EXTRAFLAGS+=" HAVE_QT4=false"
  225. CARLA_EXTRAFLAGS+=" HAVE_QT5=false"
  226. CARLA_EXTRAFLAGS+=" HAVE_SNDFILE=false"
  227. CARLA_EXTRAFLAGS+=" NOOPT=true"
  228. CARLA_EXTRAFLAGS+=" USING_JUCE=false"
  229. CARLA_EXTRAFLAGS+=" USING_JUCE_AUDIO_DEVICES=false"
  230. CARLA_EXTRAFLAGS+=" USING_JUCE_GUI_EXTRA=false"
  231. CARLA_EXTRAFLAGS+=" USING_RTAUDIO=false"
  232. git_clone carla "${CARLA_VERSION}" "${CARLA_URL}"
  233. build_make carla "${CARLA_VERSION}" "${CARLA_EXTRAFLAGS}"
  234. # ---------------------------------------------------------------------------------------------------------------------
  235. # wine bootstrap (needed for cross-compilation)
  236. if [ "${WIN32}" -eq 1 ] && [ -n "${EXE_WRAPPER}" ] && [ ! -d "${WINEPREFIX}" ]; then
  237. wineboot -u
  238. fi
  239. # ---------------------------------------------------------------------------------------------------------------------