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.

264 lines
9.7KB

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