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.

245 lines
9.8KB

  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. if [ "${MACOS_UNIVERSAL}" -eq 0 ]; then
  25. FFTW_EXTRAFLAGS+=" --enable-sse2"
  26. fi
  27. # if [ "${WIN32}" -eq 0 ]; then
  28. # FFTW_EXTRAFLAGS+=" --enable-threads"
  29. # fi
  30. download fftw "${FFTW_VERSION}" "http://www.fftw.org"
  31. if [ "${MACOS_OLD}" -eq 1 ]; then
  32. patch_file fftw "${FFTW_VERSION}" "configure" 's/CFLAGS="$CFLAGS -Wl,-no_compact_unwind"/CFLAGS="$CFLAGS"/'
  33. patch_file fftw "${FFTW_VERSION}" "libbench2/timer.c" 's/#if defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_TIMER)/#ifndef HAVE_TIMER/'
  34. fi
  35. build_autoconf fftw "${FFTW_VERSION}" "${FFTW_EXTRAFLAGS}"
  36. # ---------------------------------------------------------------------------------------------------------------------
  37. # fftwf
  38. FFTWF_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-single"
  39. copy_download fftw fftwf "${FFTW_VERSION}"
  40. if [ "${MACOS_OLD}" -eq 1 ]; then
  41. patch_file fftwf "${FFTW_VERSION}" "configure" 's/CFLAGS="$CFLAGS -Wl,-no_compact_unwind"/CFLAGS="$CFLAGS"/'
  42. patch_file fftwf "${FFTW_VERSION}" "libbench2/timer.c" 's/#if defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_TIMER)/#ifndef HAVE_TIMER/'
  43. fi
  44. build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}"
  45. # ---------------------------------------------------------------------------------------------------------------------
  46. # glib
  47. if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  48. if [ "${WIN32}" -eq 1 ]; then
  49. GLIB_EXTRAFLAGS="--with-threads=win32"
  50. else
  51. GLIB_EXTRAFLAGS="--with-threads=posix"
  52. fi
  53. download glib ${GLIB_VERSION} "http://caesar.ftp.acc.umu.se/pub/GNOME/sources/glib/${GLIB_MVERSION}" "${GLIB_TAR_EXT}"
  54. if [ "${MACOS}" -eq 1 ]; then
  55. export EXTRA_LDFLAGS="-lresolv"
  56. patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g'
  57. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  58. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_ARM/__aarch64__/'
  59. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/__SSE2__/'
  60. elif [ "${MACOS_OLD}" -eq 1 ]; then
  61. GLIB_EXTRAFLAGS+=" glib_cv_stack_grows=yes"
  62. GLIB_EXTRAFLAGS+=" glib_cv_rtldglobal_broken=no"
  63. GLIB_EXTRAFLAGS+=" glib_cv_uscore=no"
  64. GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getpwuid_r=yes"
  65. GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getgrgid_r=yes"
  66. patch_file glib ${GLIB_VERSION} "configure.in" 's/G_ATOMIC_I486/G_ATOMIC_NOT_I486/'
  67. fi
  68. fi
  69. build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}"
  70. fi
  71. # ---------------------------------------------------------------------------------------------------------------------
  72. # liblo
  73. download liblo "${LIBLO_VERSION}" "http://download.sourceforge.net/liblo"
  74. build_autoconf liblo "${LIBLO_VERSION}" "--enable-threads --disable-examples --disable-tests --disable-tools"
  75. # ---------------------------------------------------------------------------------------------------------------------
  76. # pcre (needed for sord_validate, only relevant if we can run the resulting binaries)
  77. if [ "${CROSS_COMPILING}" -eq 0 ] || [ -n "${EXE_WRAPPER}" ]; then
  78. download pcre "${PCRE_VERSION}" "https://ftp.pcre.org/pub/pcre"
  79. build_autoconf pcre "${PCRE_VERSION}"
  80. fi
  81. # ---------------------------------------------------------------------------------------------------------------------
  82. # lv2
  83. download lv2 "${LV2_VERSION}" "http://lv2plug.in/spec" "tar.bz2"
  84. build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2 --no-coverage --no-plugins"
  85. # ---------------------------------------------------------------------------------------------------------------------
  86. # serd
  87. download serd "${SERD_VERSION}" "http://download.drobilla.net/" "tar.bz2"
  88. build_waf serd "${SERD_VERSION}" "--static --no-shared --no-utils"
  89. # ---------------------------------------------------------------------------------------------------------------------
  90. # sord
  91. if [ "${CROSS_COMPILING}" -eq 1 ] && [ -z "${EXE_WRAPPER}" ]; then
  92. SORD_EXTRAFLAGS="--no-utils"
  93. fi
  94. download sord "${SORD_VERSION}" "http://download.drobilla.net/" "tar.bz2"
  95. build_waf sord "${SORD_VERSION}" "--static --no-shared ${SORD_EXTRAFLAGS}"
  96. # ---------------------------------------------------------------------------------------------------------------------
  97. # sratom
  98. download sratom "${SRATOM_VERSION}" "http://download.drobilla.net/" "tar.bz2"
  99. build_waf sratom "${SRATOM_VERSION}" "--static --no-shared"
  100. # ---------------------------------------------------------------------------------------------------------------------
  101. # lilv
  102. download lilv "${LILV_VERSION}" "http://download.drobilla.net/" "tar.bz2"
  103. build_waf lilv "${LILV_VERSION}" "--static --no-bash-completion --no-bindings --no-shared"
  104. # --static-progs
  105. # ---------------------------------------------------------------------------------------------------------------------
  106. # lv2lint
  107. if [ "${LV2LINT_SUPPORTED}" -eq 1 ]; then
  108. download lv2lint "${LV2LINT_VERSION}" "https://gitlab.com/OpenMusicKontrollers/lv2lint/-/archive/${LV2LINT_VERSION}"
  109. build_meson lv2lint "${LV2LINT_VERSION}"
  110. # "-Donline-tests=true -Delf-tests=true"
  111. fi
  112. # ---------------------------------------------------------------------------------------------------------------------
  113. # kxstudio lv2 extensions
  114. download kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}" "https://github.com/KXStudio/LV2-Extensions.git" "" "git"
  115. build_make kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}"
  116. # ---------------------------------------------------------------------------------------------------------------------
  117. # MOD lv2 extensions
  118. download mod-sdk "${MOD_SDK_VERSION}" "https://github.com/moddevices/mod-sdk.git" "" "git"
  119. build_make mod-sdk "${MOD_SDK_VERSION}"
  120. # ---------------------------------------------------------------------------------------------------------------------
  121. # fluidsynth
  122. FLUIDSYNTH_EXTRAFLAGS="-Denable-floats=ON"
  123. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF"
  124. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF"
  125. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF"
  126. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF"
  127. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF"
  128. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF"
  129. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF"
  130. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF"
  131. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF"
  132. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF"
  133. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF"
  134. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF"
  135. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF"
  136. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF"
  137. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF"
  138. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF"
  139. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF"
  140. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF"
  141. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF"
  142. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF"
  143. download fluidsynth ${FLUIDSYNTH_VERSION} "https://github.com/FluidSynth/fluidsynth/archive"
  144. patch_file fluidsynth ${FLUIDSYNTH_VERSION} "CMakeLists.txt" 's/_init_lib_suffix "64"/_init_lib_suffix ""/'
  145. build_cmake fluidsynth ${FLUIDSYNTH_VERSION} "${FLUIDSYNTH_EXTRAFLAGS}"
  146. if [ "${MACOS}" -eq 1 ] && [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc-e" ]; then
  147. sed -i -e 's/-lfluidsynth/-lfluidsynth -lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lpthread -liconv -lm/' "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc"
  148. fi
  149. # ---------------------------------------------------------------------------------------------------------------------
  150. # mxml
  151. download mxml ${MXML_VERSION} "https://github.com/michaelrsweet/mxml/archive"
  152. build_autoconf mxml ${MXML_VERSION}
  153. # ---------------------------------------------------------------------------------------------------------------------
  154. # zlib
  155. if [ "${MACOS}" -eq 0 ]; then
  156. download zlib ${ZLIB_VERSION} "https://github.com/madler/zlib/archive"
  157. build_conf zlib ${ZLIB_VERSION} "--static --prefix=${PAWPAW_PREFIX}"
  158. fi
  159. # ---------------------------------------------------------------------------------------------------------------------
  160. # carla (backend only)
  161. CARLA_EXTRAFLAGS="HAVE_ALSA=false"
  162. CARLA_EXTRAFLAGS+=" HAVE_JACK=false"
  163. CARLA_EXTRAFLAGS+=" HAVE_PULSEAUDIO=false"
  164. CARLA_EXTRAFLAGS+=" HAVE_DGL=false"
  165. CARLA_EXTRAFLAGS+=" HAVE_HYLIA=false"
  166. CARLA_EXTRAFLAGS+=" HAVE_GTK2=false"
  167. CARLA_EXTRAFLAGS+=" HAVE_GTK3=false"
  168. CARLA_EXTRAFLAGS+=" HAVE_X11=false"
  169. CARLA_EXTRAFLAGS+=" HAVE_FFMPEG=false"
  170. CARLA_EXTRAFLAGS+=" HAVE_FLUIDSYNTH=false"
  171. CARLA_EXTRAFLAGS+=" HAVE_LIBLO=false"
  172. CARLA_EXTRAFLAGS+=" HAVE_LIBMAGIC=false"
  173. CARLA_EXTRAFLAGS+=" HAVE_PYQT=false"
  174. CARLA_EXTRAFLAGS+=" HAVE_QT=false"
  175. CARLA_EXTRAFLAGS+=" HAVE_QT4=false"
  176. CARLA_EXTRAFLAGS+=" HAVE_QT5=false"
  177. CARLA_EXTRAFLAGS+=" HAVE_SNDFILE=false"
  178. CARLA_EXTRAFLAGS+=" EXTERNAL_PLUGINS=false"
  179. CARLA_EXTRAFLAGS+=" USING_JUCE=false"
  180. CARLA_EXTRAFLAGS+=" USING_JUCE_AUDIO_DEVICES=false"
  181. CARLA_EXTRAFLAGS+=" USING_JUCE_GUI_EXTRA=false"
  182. download carla ${CARLA_VERSION} "https://github.com/falkTX/Carla.git" "" "git"
  183. build_make carla ${CARLA_VERSION} "${CARLA_EXTRAFLAGS}"
  184. # ---------------------------------------------------------------------------------------------------------------------