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.

621 lines
21KB

  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. # check for depedencies
  28. if [ -z "${autoconf}" ]; then
  29. echo "missing 'autoconf' program, cannot continue!"
  30. exit 2
  31. fi
  32. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  33. if [ -z "${meson}" ]; then
  34. echo "missing 'meson' program, cannot continue!"
  35. exit 2
  36. fi
  37. if [ -z "${ninja}" ]; then
  38. echo "missing 'ninja' program, cannot continue!"
  39. exit 2
  40. fi
  41. fi
  42. # ---------------------------------------------------------------------------------------------------------------------
  43. # libpng
  44. LIBPNG_EXTRAFLAGS=""
  45. if [ -n "${PAWPAW_NOSIMD}" ] && [ "${PAWPAW_NOSIMD}" -ne 0 ]; then
  46. LIBPNG_EXTRAFLAGS+=" --disable-hardware-optimizations"
  47. fi
  48. # bypass broken zlib configure tests
  49. if [ "${MACOS}" -eq 0 ]; then
  50. LIBPNG_EXTRAFLAGS+=" ac_cv_lib_z_zlibVersion=yes"
  51. export EXTRA_CPPFLAGS="-I${PAWPAW_PREFIX}/include"
  52. fi
  53. # FIXME
  54. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  55. LIBPNG_EXTRAFLAGS+=" --disable-hardware-optimizations"
  56. fi
  57. download libpng "${LIBPNG_VERSION}" "${LIBPNG_URL}" "tar.xz"
  58. build_autoconf libpng "${LIBPNG_VERSION}" "${LIBPNG_EXTRAFLAGS}"
  59. if [ "${CROSS_COMPILING}" -eq 0 ]; then
  60. run_make libpng "${LIBPNG_VERSION}" "check -j 1"
  61. fi
  62. if [ "${MACOS}" -eq 1 ] && [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/libpng16.pc-e" ]; then
  63. sed -i -e '/Requires.private: zlib/d' "${PAWPAW_PREFIX}/lib/pkgconfig/libpng16.pc"
  64. touch "${PAWPAW_PREFIX}/lib/pkgconfig/libpng16.pc-e"
  65. fi
  66. # ---------------------------------------------------------------------------------------------------------------------
  67. # libxml2
  68. if [ "${MACOS}" -eq 0 ]; then
  69. LIBXML2_EXTRAFLAGS=""
  70. # ensure no system paths are used
  71. LIBXML2_EXTRAFLAGS+=" -DZLIB_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include"
  72. LIBXML2_EXTRAFLAGS+=" -DZLIB_LIBRARY:PATH=${PAWPAW_PREFIX}/lib/libz.a"
  73. # disable stuff typically not needed for plugins
  74. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_HTML=OFF"
  75. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_HTTP=OFF"
  76. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_ICONV=OFF"
  77. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_LZMA=OFF"
  78. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_MODULES=OFF"
  79. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_PROGRAMS=OFF"
  80. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_PYTHON=OFF"
  81. LIBXML2_EXTRAFLAGS+=" -DLIBXML2_WITH_THREADS=OFF"
  82. download libxml2 "${LIBXML2_VERSION}" "${LIBXML2_URL}" "tar.xz"
  83. build_cmake libxml2 "${LIBXML2_VERSION}" "${LIBXML2_EXTRAFLAGS}"
  84. fi # !MACOS
  85. # ---------------------------------------------------------------------------------------------------------------------
  86. # pixman
  87. PIXMAN_EXTRAFLAGS="--disable-gtk --enable-libpng"
  88. download pixman "${PIXMAN_VERSION}" "${PIXMAN_URL}"
  89. build_autoconf pixman "${PIXMAN_VERSION}" "${PIXMAN_EXTRAFLAGS}"
  90. # FIXME tests fail on i686 CI builds
  91. if [ "${CROSS_COMPILING}" -eq 0 ] && [ "x${LINUX_TARGET}" != "xlinux-i686" ]; then
  92. run_make pixman "${PIXMAN_VERSION}" check
  93. fi
  94. # ---------------------------------------------------------------------------------------------------------------------
  95. # freetype
  96. FREETYPE_EXTRAFLAGS=""
  97. FREETYPE_EXTRAFLAGS+=" -DFT_REQUIRE_PNG=TRUE"
  98. FREETYPE_EXTRAFLAGS+=" -DFT_REQUIRE_ZLIB=TRUE"
  99. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_BROTLI=TRUE"
  100. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_BZIP2=TRUE"
  101. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_HARFBUZZ=TRUE"
  102. # ensure no system paths are used
  103. # FREETYPE_EXTRAFLAGS+=" -DBROTLIDEC_INCLUDE_DIRS:PATH=${PAWPAW_PREFIX}/include"
  104. # FREETYPE_EXTRAFLAGS+=" -DFREETYPE_INCLUDE_DIRS:PATH=${PAWPAW_PREFIX}/include"
  105. # FREETYPE_EXTRAFLAGS+=" -DHarfBuzz_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include/harfbuzz"
  106. FREETYPE_EXTRAFLAGS+=" -DPNG_PNG_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include"
  107. FREETYPE_EXTRAFLAGS+=" -DPNG_LIBRARY:PATH=${PAWPAW_PREFIX}/lib/libpng.a"
  108. if [ "${MACOS}" -eq 0 ]; then
  109. FREETYPE_EXTRAFLAGS+=" -DZLIB_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include"
  110. FREETYPE_EXTRAFLAGS+=" -DZLIB_LIBRARY:PATH=${PAWPAW_PREFIX}/lib/libz.a"
  111. fi
  112. download freetype "${FREETYPE_VERSION}" "${FREETYPE_URL}" "tar.xz"
  113. build_cmake freetype "${FREETYPE_VERSION}" "${FREETYPE_EXTRAFLAGS}"
  114. if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc-e" ]; then
  115. sed -i -e 's/, libbrotlidec//' "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc"
  116. if [ "${MACOS}" -eq 1 ]; then
  117. sed -i -e 's/Requires: zlib,/Requires:/' "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc"
  118. fi
  119. touch "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc-e"
  120. fi
  121. # ---------------------------------------------------------------------------------------------------------------------
  122. # fontconfig
  123. FONTCONFIG_EXTRAFLAGS="--disable-iconv"
  124. if [ "${MACOS}" -eq 0 ]; then
  125. FONTCONFIG_EXTRAFLAGS+=" --enable-libxml2"
  126. fi
  127. # workaround missing implementation, see https://github.com/emscripten-core/emscripten/issues/12093
  128. if [ "${WASM}" -eq 1 ]; then
  129. export EXTRA_CFLAGS="-Duuid_generate_random=uuid_generate"
  130. fi
  131. download fontconfig "${FONTCONFIG_VERSION}" "${FONTCONFIG_URL}"
  132. build_autoconf fontconfig "${FONTCONFIG_VERSION}" "${FONTCONFIG_EXTRAFLAGS}"
  133. # tests fail on stable release, see https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/177
  134. # if [ "${CROSS_COMPILING}" -eq 0 ]; then
  135. # run_make fontconfig "${FONTCONFIG_VERSION}" check
  136. # fi
  137. # ---------------------------------------------------------------------------------------------------------------------
  138. # cairo
  139. CAIRO_EXTRAFLAGS="ac_cv_lib_z_compress=yes"
  140. CAIRO_EXTRAFLAGS+=" --disable-gtk-doc"
  141. CAIRO_EXTRAFLAGS+=" --disable-qt"
  142. CAIRO_EXTRAFLAGS+=" --disable-os2"
  143. CAIRO_EXTRAFLAGS+=" --disable-beos"
  144. CAIRO_EXTRAFLAGS+=" --disable-drm"
  145. CAIRO_EXTRAFLAGS+=" --disable-gallium"
  146. CAIRO_EXTRAFLAGS+=" --disable-gl"
  147. CAIRO_EXTRAFLAGS+=" --disable-glesv2"
  148. CAIRO_EXTRAFLAGS+=" --disable-glesv3"
  149. CAIRO_EXTRAFLAGS+=" --disable-cogl"
  150. CAIRO_EXTRAFLAGS+=" --disable-directfb"
  151. CAIRO_EXTRAFLAGS+=" --disable-vg"
  152. CAIRO_EXTRAFLAGS+=" --disable-egl"
  153. CAIRO_EXTRAFLAGS+=" --disable-glx"
  154. CAIRO_EXTRAFLAGS+=" --disable-wgl"
  155. CAIRO_EXTRAFLAGS+=" --disable-script"
  156. CAIRO_EXTRAFLAGS+=" --disable-ps"
  157. CAIRO_EXTRAFLAGS+=" --disable-pdf"
  158. CAIRO_EXTRAFLAGS+=" --disable-svg"
  159. CAIRO_EXTRAFLAGS+=" --disable-test-surfaces"
  160. CAIRO_EXTRAFLAGS+=" --disable-svg"
  161. CAIRO_EXTRAFLAGS+=" --disable-tee"
  162. CAIRO_EXTRAFLAGS+=" --disable-xml"
  163. CAIRO_EXTRAFLAGS+=" --disable-gobject"
  164. CAIRO_EXTRAFLAGS+=" --disable-full-testing"
  165. CAIRO_EXTRAFLAGS+=" --enable-interpreter"
  166. CAIRO_EXTRAFLAGS+=" --enable-png"
  167. CAIRO_EXTRAFLAGS+=" --enable-ft"
  168. CAIRO_EXTRAFLAGS+=" --enable-pthread"
  169. # TESTING
  170. CAIRO_EXTRAFLAGS+=" --disable-symbol-lookup"
  171. CAIRO_EXTRAFLAGS+=" --disable-trace"
  172. if [ "${LINUX}" -eq 1 ]; then
  173. CAIRO_EXTRAFLAGS+=" --enable-fc"
  174. CAIRO_EXTRAFLAGS+=" --enable-xlib"
  175. CAIRO_EXTRAFLAGS+=" --enable-xlib-xrender"
  176. # TODO
  177. # CAIRO_EXTRAFLAGS+=" --enable-xcb"
  178. # CAIRO_EXTRAFLAGS+=" --enable-xlib-xcb"
  179. # CAIRO_EXTRAFLAGS+=" --enable-xcb-shm"
  180. CAIRO_EXTRAFLAGS+=" --disable-xcb"
  181. CAIRO_EXTRAFLAGS+=" --disable-xlib-xcb"
  182. CAIRO_EXTRAFLAGS+=" --disable-xcb-shm"
  183. if [ "${LINUX_TARGET}" = "linux-riscv64" ]; then
  184. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=yes"
  185. else
  186. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=no"
  187. fi
  188. else
  189. CAIRO_EXTRAFLAGS+=" --disable-fc"
  190. CAIRO_EXTRAFLAGS+=" --disable-xlib"
  191. CAIRO_EXTRAFLAGS+=" --disable-xlib-xrender"
  192. CAIRO_EXTRAFLAGS+=" --disable-xcb"
  193. CAIRO_EXTRAFLAGS+=" --disable-xlib-xcb"
  194. CAIRO_EXTRAFLAGS+=" --disable-xcb-shm"
  195. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=no"
  196. fi
  197. if [ "${MACOS}" -eq 1 ]; then
  198. CAIRO_EXTRAFLAGS+=" --enable-quartz"
  199. CAIRO_EXTRAFLAGS+=" --enable-quartz-font"
  200. CAIRO_EXTRAFLAGS+=" --enable-quartz-image"
  201. else
  202. CAIRO_EXTRAFLAGS+=" --disable-quartz"
  203. CAIRO_EXTRAFLAGS+=" --disable-quartz-font"
  204. CAIRO_EXTRAFLAGS+=" --disable-quartz-image"
  205. fi
  206. if [ "${WIN32}" -eq 1 ]; then
  207. CAIRO_EXTRAFLAGS+=" --enable-win32"
  208. CAIRO_EXTRAFLAGS+=" --enable-win32-font"
  209. else
  210. CAIRO_EXTRAFLAGS+=" --disable-win32"
  211. CAIRO_EXTRAFLAGS+=" --disable-win32-font"
  212. fi
  213. if [ "${WASM}" -eq 1 ]; then
  214. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=no"
  215. fi
  216. # fix link of test suite
  217. if [ "${MACOS}" -eq 1 ]; then
  218. export EXTRA_LDFLAGS="-framework CoreFoundation -framework CoreGraphics"
  219. elif [ "${WIN32}" -eq 1 ]; then
  220. export EXTRA_CFLAGS="-Dstrndup=_strndup"
  221. fi
  222. download cairo "${CAIRO_VERSION}" "${CAIRO_URL}" "tar.xz"
  223. build_autoconf cairo "${CAIRO_VERSION}" "${CAIRO_EXTRAFLAGS}"
  224. # FIXME tests are failing :(
  225. # if [ "${CROSS_COMPILING}" -eq 0 ]; then
  226. # run_make cairo "${CAIRO_VERSION}" "check -j 1"
  227. # fi
  228. # ---------------------------------------------------------------------------------------------------------------------
  229. # fftw
  230. if [ -z "${PAWPAW_SKIP_FFTW}" ]; then
  231. # fftw is not compatible with LTO
  232. if [ -z "${PAWPAW_SKIP_LTO}" ] || [ "${PAWPAW_SKIP_LTO}" -eq 0 ]; then
  233. export EXTRA_CFLAGS="-fno-lto"
  234. export EXTRA_LDFLAGS="-fno-lto"
  235. fi
  236. FFTW_EXTRAFLAGS="--disable-alloca --disable-fortran --with-our-malloc"
  237. if [ "${LINUX}" -eq 1 ]; then
  238. if [ "${LINUX_TARGET}" = "linux-aarch64" ]; then
  239. FFTW_EXTRAFLAGS+=" --with-slow-timer --enable-neon"
  240. elif [ "${LINUX_TARGET}" = "linux-armhf" ]; then
  241. FFTW_EXTRAFLAGS+=" --with-slow-timer"
  242. elif [ "${LINUX_TARGET}" = "linux-riscv64" ]; then
  243. FFTW_EXTRAFLAGS+=" --with-slow-timer"
  244. fi
  245. elif [ "${WASM}" -eq 1 ]; then
  246. FFTW_EXTRAFLAGS+=" --with-slow-timer"
  247. # FIXME macos-universal proper optimizations
  248. # https://github.com/DISTRHO/PawPaw/issues/3
  249. elif [ "${MACOS_UNIVERSAL}" -eq 0 ]; then
  250. FFTW_EXTRAFLAGS+=" --enable-sse2"
  251. fi
  252. download fftw "${FFTW_VERSION}" "${FFTW_URL}"
  253. build_autoconf fftw "${FFTW_VERSION}" "${FFTW_EXTRAFLAGS}"
  254. if [ "${CROSS_COMPILING}" -eq 0 ]; then
  255. run_make fftw "${FFTW_VERSION}" check
  256. fi
  257. fi # PAWPAW_SKIP_FFTW
  258. # ---------------------------------------------------------------------------------------------------------------------
  259. # fftwf
  260. if [ -z "${PAWPAW_SKIP_FFTW}" ]; then
  261. # fftw is not compatible with LTO
  262. if [ -z "${PAWPAW_SKIP_LTO}" ] || [ "${PAWPAW_SKIP_LTO}" -eq 0 ]; then
  263. export EXTRA_CFLAGS="-fno-lto"
  264. export EXTRA_LDFLAGS="-fno-lto"
  265. fi
  266. FFTWF_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-single"
  267. if [ -z "${PAWPAW_NOSIMD}" ] || [ "${PAWPAW_NOSIMD}" -eq 0 ]; then
  268. if [ "${LINUX}" -eq 1 ] && [ "${LINUX_TARGET}" = "linux-armhf" ]; then
  269. FFTWF_EXTRAFLAGS+=" --enable-neon"
  270. fi
  271. fi
  272. copy_download fftw fftwf "${FFTW_VERSION}"
  273. build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}"
  274. if [ "${CROSS_COMPILING}" -eq 0 ]; then
  275. run_make fftwf "${FFTW_VERSION}" check
  276. fi
  277. fi # PAWPAW_SKIP_FFTW
  278. # ---------------------------------------------------------------------------------------------------------------------
  279. # pcre
  280. if [ "${MACOS}" -eq 1 ] || [ -n "${TOOLCHAIN_PREFIX}" ]; then
  281. download pcre "${PCRE_VERSION}" "${PCRE_URL}"
  282. build_autoconf pcre "${PCRE_VERSION}"
  283. fi
  284. # ---------------------------------------------------------------------------------------------------------------------
  285. # libffi
  286. if [ "${WIN32}" -eq 1 ]; then
  287. LIBFFI_EXTRAFLAGS="--disable-multi-os-directory --disable-raw-api"
  288. download libffi "${LIBFFI_VERSION}" "${LIBFFI_URL}"
  289. build_autoconf libffi "${LIBFFI_VERSION}" "${LIBFFI_EXTRAFLAGS}"
  290. fi
  291. # ---------------------------------------------------------------------------------------------------------------------
  292. # glib
  293. if [ -z "${PAWPAW_SKIP_GLIB}" ]; then
  294. if [ "${MACOS}" -eq 1 ] || [ "${WASM}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  295. GLIB_EXTRAFLAGS="--disable-rebuilds"
  296. if [ "${WIN32}" -eq 1 ]; then
  297. GLIB_EXTRAFLAGS+=" --with-threads=win32"
  298. else
  299. GLIB_EXTRAFLAGS+=" --with-threads=posix"
  300. fi
  301. if [ "${WASM}" -eq 1 ]; then
  302. GLIB_EXTRAFLAGS+=" ac_cv_lib_socket_socket=no ac_cv_func_posix_getgrgid_r=no ac_cv_func_posix_getpwuid_r=no glib_cv_stack_grows=no glib_cv_uscore=no"
  303. fi
  304. if [ "${MACOS}" -eq 1 ]; then
  305. export EXTRA_LDFLAGS="-lresolv"
  306. elif [ "${WIN32}" -eq 1 ]; then
  307. export EXTRA_CFLAGS="-Wno-format -Wno-format-overflow"
  308. fi
  309. download glib ${GLIB_VERSION} "${GLIB_URL}" "${GLIB_TAR_EXT}"
  310. if [ "${MACOS}" -eq 1 ]; then
  311. patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g'
  312. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_ARM/__aarch64__/'
  313. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/__SSE2__/'
  314. elif [ "${WASM}" -eq 1 ]; then
  315. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/_G_ATOMIC_NOT_X86_64/'
  316. fi
  317. build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}"
  318. fi
  319. fi # PAWPAW_SKIP_GLIB
  320. # ---------------------------------------------------------------------------------------------------------------------
  321. # liblo
  322. LIBLO_EXTRAFLAGS="--enable-threads --disable-examples --disable-tools"
  323. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  324. LIBLO_EXTRAFLAGS+=" --disable-tests"
  325. fi
  326. # auto-detection fails
  327. if [ "${MACOS}" -eq 1 ]; then
  328. LIBLO_EXTRAFLAGS+=" ac_cv_func_select=yes ac_cv_func_poll=yes ac_cv_func_setvbuf=yes"
  329. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  330. LIBLO_EXTRAFLAGS+=" ac_cv_c_bigendian=universal"
  331. fi
  332. fi
  333. download liblo "${LIBLO_VERSION}" "${LIBLO_URL}"
  334. build_autoconf liblo "${LIBLO_VERSION}" "${LIBLO_EXTRAFLAGS}"
  335. # FIXME tests fail on macOS
  336. if [ "${CROSS_COMPILING}" -eq 0 ] && [ "${MACOS}" -eq 0 ]; then
  337. run_make liblo "${LIBLO_VERSION}" check
  338. fi
  339. # ---------------------------------------------------------------------------------------------------------------------
  340. # serd
  341. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  342. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ] && [ -z "${EXE_WRAPPER}" ]; then
  343. SERD_EXTRAFLAGS="-Dtools=disabled"
  344. fi
  345. download serd "${SERD_VERSION}" "${SERD_URL}" "tar.xz"
  346. build_meson serd "${SERD_VERSION}" "-Ddefault_library=static -Ddocs=disabled ${SERD_EXTRAFLAGS}"
  347. fi # PAWPAW_SKIP_LV2
  348. # ---------------------------------------------------------------------------------------------------------------------
  349. # sord
  350. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  351. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ] && [ -z "${EXE_WRAPPER}" ]; then
  352. SORD_EXTRAFLAGS="-Dtools=disabled"
  353. fi
  354. download sord "${SORD_VERSION}" "${SORD_URL}" "tar.xz"
  355. build_meson sord "${SORD_VERSION}" "-Ddefault_library=static -Ddocs=disabled ${SORD_EXTRAFLAGS}"
  356. fi # PAWPAW_SKIP_LV2
  357. # ---------------------------------------------------------------------------------------------------------------------
  358. # lv2
  359. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  360. git_clone lv2 "${LV2_VERSION}" "${LV2_URL}"
  361. build_meson lv2 "${LV2_VERSION}" "-Dlv2dir=${PAWPAW_PREFIX}/lib/lv2 -Dplugins=disabled"
  362. fi # PAWPAW_SKIP_LV2
  363. # ---------------------------------------------------------------------------------------------------------------------
  364. # sratom
  365. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  366. download sratom "${SRATOM_VERSION}" "${SRATOM_URL}" "tar.xz"
  367. build_meson sratom "${SRATOM_VERSION}" "-Ddefault_library=static -Ddocs=disabled"
  368. fi # PAWPAW_SKIP_LV2
  369. # ---------------------------------------------------------------------------------------------------------------------
  370. # lilv
  371. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  372. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ]; then
  373. LILV_EXTRAFLAGS="-Dtests=disabled -Dtools=disabled"
  374. fi
  375. download lilv "${LILV_VERSION}" "${LILV_URL}" "tar.xz"
  376. build_meson lilv "${LILV_VERSION}" "-Ddefault_library=static -Dbindings_py=disabled -Ddocs=disabled ${LILV_EXTRAFLAGS}"
  377. fi # PAWPAW_SKIP_LV2
  378. # ---------------------------------------------------------------------------------------------------------------------
  379. # lv2lint
  380. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  381. if [ "${LV2LINT_SUPPORTED}" -eq 1 ]; then
  382. download lv2lint "${LV2LINT_VERSION}" "${LV2LINT_URL}"
  383. build_meson lv2lint "${LV2LINT_VERSION}"
  384. # "-Donline-tests=true -Delf-tests=true"
  385. fi
  386. fi # PAWPAW_SKIP_LV2
  387. # ---------------------------------------------------------------------------------------------------------------------
  388. # kxstudio lv2 extensions
  389. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  390. git_clone kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}" "${KXSTUDIO_LV2_EXTENSIONS_URL}"
  391. build_make kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}"
  392. fi # PAWPAW_SKIP_LV2
  393. # ---------------------------------------------------------------------------------------------------------------------
  394. # MOD lv2 extensions
  395. if [ -z "${PAWPAW_SKIP_LV2}" ]; then
  396. git_clone mod-sdk "${MOD_SDK_VERSION}" "${MOD_SDK_URL}"
  397. build_make mod-sdk "${MOD_SDK_VERSION}"
  398. fi # PAWPAW_SKIP_LV2
  399. # ---------------------------------------------------------------------------------------------------------------------
  400. # fluidsynth
  401. if [ -z "${PAWPAW_SKIP_FLUIDSYNTH}" ]; then
  402. FLUIDSYNTH_EXTRAFLAGS="-Denable-floats=ON"
  403. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF"
  404. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF"
  405. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF"
  406. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF"
  407. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF"
  408. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF"
  409. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF"
  410. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF"
  411. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF"
  412. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF"
  413. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF"
  414. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF"
  415. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF"
  416. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF"
  417. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF"
  418. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF"
  419. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF"
  420. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF"
  421. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF"
  422. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF"
  423. git_clone fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_URL}"
  424. build_cmake fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_EXTRAFLAGS}"
  425. if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc-e" ]; then
  426. FLUIDSYNTH_EXTRALIBS="-lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -lopus -logg -lpthread -lm"
  427. if [ "${MACOS}" -eq 1 ]; then
  428. FLUIDSYNTH_EXTRALIBS+=" -liconv"
  429. elif [ "${WIN32}" -eq 1 ]; then
  430. FLUIDSYNTH_EXTRALIBS+=" -lole32 -lws2_32"
  431. fi
  432. sed -i -e "s/-L\${libdir} -lfluidsynth/-L\${libdir} -lfluidsynth ${FLUIDSYNTH_EXTRALIBS}/" "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc"
  433. touch "${PAWPAW_PREFIX}/lib/pkgconfig/fluidsynth.pc-e"
  434. fi
  435. fi # PAWPAW_SKIP_FLUIDSYNTH
  436. # ---------------------------------------------------------------------------------------------------------------------
  437. # mxml
  438. git_clone mxml "${MXML_VERSION}" "${MXML_URL}"
  439. build_autoconf mxml "${MXML_VERSION}"
  440. # ---------------------------------------------------------------------------------------------------------------------
  441. # carla (backend only)
  442. if [ "${CROSS_COMPILING}" -eq 0 ] || [ "${LINUX}" -eq 1 ]; then
  443. CARLA_EXTRAFLAGS="CAN_GENERATE_LV2_TTL=false"
  444. CARLA_EXTRAFLAGS+=" EXTERNAL_PLUGINS=false"
  445. CARLA_EXTRAFLAGS+=" HAVE_ALSA=false"
  446. CARLA_EXTRAFLAGS+=" HAVE_JACK=false"
  447. CARLA_EXTRAFLAGS+=" HAVE_PULSEAUDIO=false"
  448. CARLA_EXTRAFLAGS+=" HAVE_DGL=false"
  449. CARLA_EXTRAFLAGS+=" HAVE_HYLIA=false"
  450. CARLA_EXTRAFLAGS+=" HAVE_X11=false"
  451. CARLA_EXTRAFLAGS+=" HAVE_FFMPEG=false"
  452. CARLA_EXTRAFLAGS+=" HAVE_FLUIDSYNTH=false"
  453. CARLA_EXTRAFLAGS+=" HAVE_LIBLO=false"
  454. CARLA_EXTRAFLAGS+=" HAVE_LIBMAGIC=false"
  455. CARLA_EXTRAFLAGS+=" HAVE_PYQT=false"
  456. CARLA_EXTRAFLAGS+=" HAVE_QT=false"
  457. CARLA_EXTRAFLAGS+=" HAVE_QT4=false"
  458. CARLA_EXTRAFLAGS+=" HAVE_QT5=false"
  459. CARLA_EXTRAFLAGS+=" HAVE_SDL=false"
  460. CARLA_EXTRAFLAGS+=" HAVE_SNDFILE=false"
  461. CARLA_EXTRAFLAGS+=" NOOPT=true"
  462. CARLA_EXTRAFLAGS+=" USING_JUCE=false"
  463. CARLA_EXTRAFLAGS+=" USING_JUCE_AUDIO_DEVICES=false"
  464. CARLA_EXTRAFLAGS+=" USING_JUCE_GUI_EXTRA=false"
  465. CARLA_EXTRAFLAGS+=" USING_RTAUDIO=false"
  466. git_clone carla "${CARLA_VERSION}" "${CARLA_URL}"
  467. build_make carla "${CARLA_VERSION}" "${CARLA_EXTRAFLAGS}"
  468. fi
  469. # ---------------------------------------------------------------------------------------------------------------------
  470. # wine bootstrap (needed for cross-compilation)
  471. if [ "${EXE_WRAPPER}" = "wine" ]; then
  472. wineboot -u
  473. fi
  474. # ---------------------------------------------------------------------------------------------------------------------