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.

662 lines
23KB

  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}" ] && [ "${PAWPAW_SKIP_GLIB}" -eq 1 ]; 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}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; 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}" -eq 1 ]; 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 [ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -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 ([ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -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+=" -DDISABLE_FORCE_DEBUG_POSTFIX=TRUE"
  98. FREETYPE_EXTRAFLAGS+=" -DFT_REQUIRE_PNG=TRUE"
  99. FREETYPE_EXTRAFLAGS+=" -DFT_REQUIRE_ZLIB=TRUE"
  100. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_BROTLI=TRUE"
  101. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_BZIP2=TRUE"
  102. FREETYPE_EXTRAFLAGS+=" -DFT_DISABLE_HARFBUZZ=TRUE"
  103. # ensure no system paths are used
  104. # FREETYPE_EXTRAFLAGS+=" -DBROTLIDEC_INCLUDE_DIRS:PATH=${PAWPAW_PREFIX}/include"
  105. # FREETYPE_EXTRAFLAGS+=" -DFREETYPE_INCLUDE_DIRS:PATH=${PAWPAW_PREFIX}/include"
  106. # FREETYPE_EXTRAFLAGS+=" -DHarfBuzz_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include/harfbuzz"
  107. FREETYPE_EXTRAFLAGS+=" -DPNG_PNG_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include"
  108. FREETYPE_EXTRAFLAGS+=" -DPNG_LIBRARY:PATH=${PAWPAW_PREFIX}/lib/libpng.a"
  109. if [ "${MACOS}" -eq 0 ]; then
  110. FREETYPE_EXTRAFLAGS+=" -DZLIB_INCLUDE_DIR:PATH=${PAWPAW_PREFIX}/include"
  111. FREETYPE_EXTRAFLAGS+=" -DZLIB_LIBRARY:PATH=${PAWPAW_PREFIX}/lib/libz.a"
  112. fi
  113. download freetype "${FREETYPE_VERSION}" "${FREETYPE_URL}" "tar.xz"
  114. build_cmake freetype "${FREETYPE_VERSION}" "${FREETYPE_EXTRAFLAGS}"
  115. if [ ! -e "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc-e" ]; then
  116. sed -i -e 's/, libbrotlidec//' "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc"
  117. if [ "${MACOS}" -eq 1 ]; then
  118. sed -i -e 's/Requires: zlib,/Requires:/' "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc"
  119. fi
  120. touch "${PAWPAW_PREFIX}/lib/pkgconfig/freetype2.pc-e"
  121. fi
  122. # ---------------------------------------------------------------------------------------------------------------------
  123. # fontconfig
  124. FONTCONFIG_EXTRAFLAGS="--disable-iconv"
  125. if [ "${MACOS}" -eq 0 ]; then
  126. FONTCONFIG_EXTRAFLAGS+=" --enable-libxml2"
  127. fi
  128. # workaround missing implementation, see https://github.com/emscripten-core/emscripten/issues/12093
  129. if [ "${WASM}" -eq 1 ]; then
  130. export EXTRA_CFLAGS="-Duuid_generate_random=uuid_generate"
  131. fi
  132. download fontconfig "${FONTCONFIG_VERSION}" "${FONTCONFIG_URL}"
  133. build_autoconf fontconfig "${FONTCONFIG_VERSION}" "${FONTCONFIG_EXTRAFLAGS}"
  134. # tests fail on stable release, see https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/177
  135. # if [ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -eq 0 ]; then
  136. # run_make fontconfig "${FONTCONFIG_VERSION}" check
  137. # fi
  138. # ---------------------------------------------------------------------------------------------------------------------
  139. # cairo
  140. CAIRO_EXTRAFLAGS="ac_cv_lib_z_compress=yes"
  141. CAIRO_EXTRAFLAGS+=" --disable-gtk-doc"
  142. CAIRO_EXTRAFLAGS+=" --disable-qt"
  143. CAIRO_EXTRAFLAGS+=" --disable-os2"
  144. CAIRO_EXTRAFLAGS+=" --disable-beos"
  145. CAIRO_EXTRAFLAGS+=" --disable-drm"
  146. CAIRO_EXTRAFLAGS+=" --disable-gallium"
  147. CAIRO_EXTRAFLAGS+=" --disable-gl"
  148. CAIRO_EXTRAFLAGS+=" --disable-glesv2"
  149. CAIRO_EXTRAFLAGS+=" --disable-glesv3"
  150. CAIRO_EXTRAFLAGS+=" --disable-cogl"
  151. CAIRO_EXTRAFLAGS+=" --disable-directfb"
  152. CAIRO_EXTRAFLAGS+=" --disable-vg"
  153. CAIRO_EXTRAFLAGS+=" --disable-egl"
  154. CAIRO_EXTRAFLAGS+=" --disable-glx"
  155. CAIRO_EXTRAFLAGS+=" --disable-wgl"
  156. CAIRO_EXTRAFLAGS+=" --disable-script"
  157. CAIRO_EXTRAFLAGS+=" --disable-ps"
  158. CAIRO_EXTRAFLAGS+=" --disable-pdf"
  159. CAIRO_EXTRAFLAGS+=" --disable-svg"
  160. CAIRO_EXTRAFLAGS+=" --disable-test-surfaces"
  161. CAIRO_EXTRAFLAGS+=" --disable-svg"
  162. CAIRO_EXTRAFLAGS+=" --disable-tee"
  163. CAIRO_EXTRAFLAGS+=" --disable-xml"
  164. CAIRO_EXTRAFLAGS+=" --disable-gobject"
  165. CAIRO_EXTRAFLAGS+=" --disable-full-testing"
  166. CAIRO_EXTRAFLAGS+=" --enable-interpreter"
  167. CAIRO_EXTRAFLAGS+=" --enable-png"
  168. CAIRO_EXTRAFLAGS+=" --enable-ft"
  169. CAIRO_EXTRAFLAGS+=" --enable-pthread"
  170. # TESTING
  171. CAIRO_EXTRAFLAGS+=" --disable-symbol-lookup"
  172. CAIRO_EXTRAFLAGS+=" --disable-trace"
  173. if [ "${LINUX}" -eq 1 ]; then
  174. CAIRO_EXTRAFLAGS+=" --enable-fc"
  175. CAIRO_EXTRAFLAGS+=" --enable-xlib"
  176. CAIRO_EXTRAFLAGS+=" --enable-xlib-xrender"
  177. # TODO
  178. # CAIRO_EXTRAFLAGS+=" --enable-xcb"
  179. # CAIRO_EXTRAFLAGS+=" --enable-xlib-xcb"
  180. # CAIRO_EXTRAFLAGS+=" --enable-xcb-shm"
  181. CAIRO_EXTRAFLAGS+=" --disable-xcb"
  182. CAIRO_EXTRAFLAGS+=" --disable-xlib-xcb"
  183. CAIRO_EXTRAFLAGS+=" --disable-xcb-shm"
  184. if [ "${LINUX_TARGET}" = "linux-riscv64" ]; then
  185. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=yes"
  186. else
  187. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=no"
  188. fi
  189. else
  190. CAIRO_EXTRAFLAGS+=" --disable-fc"
  191. CAIRO_EXTRAFLAGS+=" --disable-xlib"
  192. CAIRO_EXTRAFLAGS+=" --disable-xlib-xrender"
  193. CAIRO_EXTRAFLAGS+=" --disable-xcb"
  194. CAIRO_EXTRAFLAGS+=" --disable-xlib-xcb"
  195. CAIRO_EXTRAFLAGS+=" --disable-xcb-shm"
  196. CAIRO_EXTRAFLAGS+=" ax_cv_c_float_words_bigendian=no"
  197. fi
  198. if [ "${MACOS}" -eq 1 ]; then
  199. CAIRO_EXTRAFLAGS+=" --enable-quartz"
  200. CAIRO_EXTRAFLAGS+=" --enable-quartz-font"
  201. CAIRO_EXTRAFLAGS+=" --enable-quartz-image"
  202. else
  203. CAIRO_EXTRAFLAGS+=" --disable-quartz"
  204. CAIRO_EXTRAFLAGS+=" --disable-quartz-font"
  205. CAIRO_EXTRAFLAGS+=" --disable-quartz-image"
  206. fi
  207. if [ "${WIN32}" -eq 1 ]; then
  208. CAIRO_EXTRAFLAGS+=" --enable-win32"
  209. CAIRO_EXTRAFLAGS+=" --enable-win32-font"
  210. else
  211. CAIRO_EXTRAFLAGS+=" --disable-win32"
  212. CAIRO_EXTRAFLAGS+=" --disable-win32-font"
  213. fi
  214. # fix link of test suite
  215. if [ "${MACOS}" -eq 1 ]; then
  216. export EXTRA_LDFLAGS="-framework CoreFoundation -framework CoreGraphics"
  217. elif [ "${WIN32}" -eq 1 ]; then
  218. export EXTRA_CFLAGS="-Dstrndup=_strndup"
  219. fi
  220. download cairo "${CAIRO_VERSION}" "${CAIRO_URL}" "tar.xz"
  221. # fix build when compiler or linker uses stderr, see https://gitlab.freedesktop.org/cairo/cairo/-/issues/121
  222. patch_file cairo "${CAIRO_VERSION}" "configure" 's/test "x$cairo_cc_stderr" != "x"/false/g'
  223. build_autoconf cairo "${CAIRO_VERSION}" "${CAIRO_EXTRAFLAGS}"
  224. # FIXME tests are failing :(
  225. # if [ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -eq 0 ]; then
  226. # run_make cairo "${CAIRO_VERSION}" "check -j 1"
  227. # fi
  228. # ---------------------------------------------------------------------------------------------------------------------
  229. # fftw
  230. if [ -z "${PAWPAW_SKIP_FFTW}" ] || [ "${PAWPAW_SKIP_FFTW}" -eq 0 ]; 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. # debug builds are broken, as they override CFLAGS
  253. if [ -n "${PAWPAW_DEBUG}" ] && [ "${PAWPAW_DEBUG}" -eq 1 ]; then
  254. FFTW_EXTRAFLAGS+=" --disable-debug"
  255. fi
  256. download fftw "${FFTW_VERSION}" "${FFTW_URL}"
  257. build_autoconf fftw "${FFTW_VERSION}" "${FFTW_EXTRAFLAGS}"
  258. if [ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -eq 0 ]; then
  259. run_make fftw "${FFTW_VERSION}" check
  260. fi
  261. fi # PAWPAW_SKIP_FFTW
  262. # ---------------------------------------------------------------------------------------------------------------------
  263. # fftwf
  264. if [ -z "${PAWPAW_SKIP_FFTW}" ] || [ "${PAWPAW_SKIP_FFTW}" -eq 0 ]; then
  265. # fftw is not compatible with LTO
  266. if [ -z "${PAWPAW_SKIP_LTO}" ] || [ "${PAWPAW_SKIP_LTO}" -eq 0 ]; then
  267. export EXTRA_CFLAGS="-fno-lto"
  268. export EXTRA_LDFLAGS="-fno-lto"
  269. fi
  270. FFTWF_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-single"
  271. if [ -z "${PAWPAW_NOSIMD}" ] || [ "${PAWPAW_NOSIMD}" -eq 0 ]; then
  272. if [ "${LINUX}" -eq 1 ] && [ "${LINUX_TARGET}" = "linux-armhf" ]; then
  273. FFTWF_EXTRAFLAGS+=" --enable-neon"
  274. fi
  275. fi
  276. # debug builds are broken, as they override CFLAGS
  277. if [ -n "${PAWPAW_DEBUG}" ] && [ "${PAWPAW_DEBUG}" -eq 1 ]; then
  278. FFTWF_EXTRAFLAGS+=" --disable-debug"
  279. fi
  280. copy_download fftw fftwf "${FFTW_VERSION}"
  281. build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}"
  282. if [ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -eq 0 ]; then
  283. run_make fftwf "${FFTW_VERSION}" check
  284. fi
  285. fi # PAWPAW_SKIP_FFTW
  286. # ---------------------------------------------------------------------------------------------------------------------
  287. # pcre
  288. if [ "${MACOS}" -eq 1 ] || [ -n "${TOOLCHAIN_PREFIX}" ]; then
  289. download pcre "${PCRE_VERSION}" "${PCRE_URL}"
  290. build_autoconf pcre "${PCRE_VERSION}"
  291. fi
  292. # ---------------------------------------------------------------------------------------------------------------------
  293. # libffi
  294. if [ "${LINUX}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  295. LIBFFI_EXTRAFLAGS="--disable-multi-os-directory --disable-raw-api"
  296. download libffi "${LIBFFI_VERSION}" "${LIBFFI_URL}"
  297. build_autoconf libffi "${LIBFFI_VERSION}" "${LIBFFI_EXTRAFLAGS}"
  298. fi
  299. # ---------------------------------------------------------------------------------------------------------------------
  300. # glib
  301. if [ -z "${PAWPAW_SKIP_GLIB}" ] || [ "${PAWPAW_SKIP_GLIB}" -eq 0 ]; then
  302. if [ "${MACOS}" -eq 1 ] || [ "${WASM}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  303. GLIB_EXTRAFLAGS="--disable-rebuilds"
  304. GLIB_EXTRAFLAGS="--disable-profile"
  305. if [ "${WIN32}" -eq 1 ]; then
  306. GLIB_EXTRAFLAGS+=" --with-threads=win32"
  307. else
  308. GLIB_EXTRAFLAGS+=" --with-threads=posix"
  309. fi
  310. if [ "${WASM}" -eq 1 ]; then
  311. 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"
  312. fi
  313. export EXTRA_CFLAGS="-Wno-incompatible-function-pointer-types"
  314. if [ "${MACOS}" -eq 1 ]; then
  315. export EXTRA_LDFLAGS="-lresolv"
  316. elif [ "${WIN32}" -eq 1 ]; then
  317. export EXTRA_CFLAGS="${EXTRA_CFLAGS} -Wno-format -Wno-format-overflow"
  318. fi
  319. download glib ${GLIB_VERSION} "${GLIB_URL}" "${GLIB_TAR_EXT}"
  320. if [ "${MACOS}" -eq 1 ]; then
  321. patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g'
  322. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_ARM/__aarch64__/'
  323. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/__SSE2__/'
  324. elif [ "${WASM}" -eq 1 ]; then
  325. patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/_G_ATOMIC_NOT_X86_64/'
  326. fi
  327. build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}"
  328. fi
  329. fi # PAWPAW_SKIP_GLIB
  330. # ---------------------------------------------------------------------------------------------------------------------
  331. # liblo
  332. LIBLO_EXTRAFLAGS="--enable-threads --disable-examples --disable-tools"
  333. if [ -n "${PAWPAW_SKIP_TESTS}" ] && [ "${PAWPAW_SKIP_TESTS}" -eq 1 ]; then
  334. LIBLO_EXTRAFLAGS+=" --disable-tests"
  335. else
  336. LIBLO_EXTRAFLAGS+=" --disable-network-tests"
  337. fi
  338. # auto-detection fails
  339. if [ "${MACOS}" -eq 1 ]; then
  340. LIBLO_EXTRAFLAGS+=" ac_cv_func_select=yes ac_cv_func_poll=yes ac_cv_func_setvbuf=yes"
  341. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  342. LIBLO_EXTRAFLAGS+=" ac_cv_c_bigendian=universal"
  343. fi
  344. # use of wrong macro, should be _WIN32
  345. elif [ "${WIN32}" -eq 1 ]; then
  346. export EXTRA_CFLAGS="-DWIN32"
  347. fi
  348. download liblo "${LIBLO_VERSION}" "${LIBLO_URL}"
  349. build_autoconf liblo "${LIBLO_VERSION}" "${LIBLO_EXTRAFLAGS}"
  350. # FIXME tests fail on macOS
  351. if ([ -z "${PAWPAW_SKIP_TESTS}" ] || [ "${PAWPAW_SKIP_TESTS}" -eq 0 ]) && [ "${MACOS}" -eq 0 ]; then
  352. run_make liblo "${LIBLO_VERSION}" check
  353. fi
  354. # ---------------------------------------------------------------------------------------------------------------------
  355. # zix
  356. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  357. ZIX_EXTRAFLAGS=""
  358. if [ "${MACOS}" -eq 1 ] && [ "${MACOS_10_15}" -eq 0 ]; then
  359. # tests under macOS require >= 10.15
  360. ZIX_EXTRAFLAGS+=" -Dtests=disabled -Dtests_cpp=disabled"
  361. elif [ "${WASM}" -eq 1 ]; then
  362. ZIX_EXTRAFLAGS+=" -Dtests=disabled -Dtests_cpp=disabled -Dthreads=disabled"
  363. elif [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ] && [ -z "${EXE_WRAPPER}" ]; then
  364. ZIX_EXTRAFLAGS+=" -Dtests=disabled -Dtests_cpp=disabled"
  365. fi
  366. export EXTRA_CFLAGS="-fno-finite-math-only"
  367. download zix "${ZIX_VERSION}" "${ZIX_URL}" "tar.xz"
  368. build_meson zix "${ZIX_VERSION}" "-Dbenchmarks=disabled -Ddefault_library=static -Ddocs=disabled ${ZIX_EXTRAFLAGS}"
  369. fi # PAWPAW_SKIP_LV2
  370. # ---------------------------------------------------------------------------------------------------------------------
  371. # serd
  372. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  373. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ] && [ -z "${EXE_WRAPPER}" ]; then
  374. SERD_EXTRAFLAGS="-Dtools=disabled"
  375. fi
  376. export EXTRA_CFLAGS="-fno-finite-math-only"
  377. download serd "${SERD_VERSION}" "${SERD_URL}" "tar.xz"
  378. build_meson serd "${SERD_VERSION}" "-Ddefault_library=static -Ddocs=disabled ${SERD_EXTRAFLAGS}"
  379. fi # PAWPAW_SKIP_LV2
  380. # ---------------------------------------------------------------------------------------------------------------------
  381. # sord
  382. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  383. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ] && [ -z "${EXE_WRAPPER}" ]; then
  384. SORD_EXTRAFLAGS="-Dtools=disabled"
  385. fi
  386. download sord "${SORD_VERSION}" "${SORD_URL}" "tar.xz"
  387. build_meson sord "${SORD_VERSION}" "-Ddefault_library=static -Ddocs=disabled ${SORD_EXTRAFLAGS}"
  388. fi # PAWPAW_SKIP_LV2
  389. # ---------------------------------------------------------------------------------------------------------------------
  390. # lv2
  391. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  392. git_clone lv2 "${LV2_VERSION}" "${LV2_URL}"
  393. build_meson lv2 "${LV2_VERSION}" "-Dlv2dir=${PAWPAW_PREFIX}/lib/lv2 -Dplugins=disabled"
  394. fi # PAWPAW_SKIP_LV2
  395. # ---------------------------------------------------------------------------------------------------------------------
  396. # sratom
  397. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  398. download sratom "${SRATOM_VERSION}" "${SRATOM_URL}" "tar.xz"
  399. build_meson sratom "${SRATOM_VERSION}" "-Ddefault_library=static -Ddocs=disabled"
  400. fi # PAWPAW_SKIP_LV2
  401. # ---------------------------------------------------------------------------------------------------------------------
  402. # lilv
  403. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  404. if [ "${CROSS_COMPILING}" -eq 1 ] && [ "${LINUX}" -eq 0 ]; then
  405. LILV_EXTRAFLAGS="-Dtests=disabled -Dtools=disabled"
  406. fi
  407. # Fix tests
  408. export EXTRA_CXXFLAGS="-std=c++11"
  409. download lilv "${LILV_VERSION}" "${LILV_URL}" "tar.xz"
  410. build_meson lilv "${LILV_VERSION}" "-Ddefault_library=static -Dbindings_py=disabled -Ddocs=disabled ${LILV_EXTRAFLAGS}"
  411. fi # PAWPAW_SKIP_LV2
  412. # ---------------------------------------------------------------------------------------------------------------------
  413. # lv2lint
  414. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  415. if [ "${LV2LINT_SUPPORTED}" -eq 1 ]; then
  416. git_clone lv2lint "${LV2LINT_VERSION}" "${LV2LINT_URL}"
  417. build_meson lv2lint "${LV2LINT_VERSION}"
  418. # "-Donline-tests=true -Delf-tests=true"
  419. fi
  420. fi # PAWPAW_SKIP_LV2
  421. # ---------------------------------------------------------------------------------------------------------------------
  422. # kxstudio lv2 extensions
  423. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  424. git_clone kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}" "${KXSTUDIO_LV2_EXTENSIONS_URL}"
  425. build_make kxstudio-lv2-extensions "${KXSTUDIO_LV2_EXTENSIONS_VERSION}"
  426. fi # PAWPAW_SKIP_LV2
  427. # ---------------------------------------------------------------------------------------------------------------------
  428. # MOD lv2 extensions
  429. if [ -z "${PAWPAW_SKIP_LV2}" ] || [ "${PAWPAW_SKIP_LV2}" -eq 0 ]; then
  430. git_clone mod-sdk "${MOD_SDK_VERSION}" "${MOD_SDK_URL}"
  431. build_make mod-sdk "${MOD_SDK_VERSION}"
  432. fi # PAWPAW_SKIP_LV2
  433. # ---------------------------------------------------------------------------------------------------------------------
  434. # fluidsynth
  435. if [ -z "${PAWPAW_SKIP_FLUIDSYNTH}" ] || [ "${PAWPAW_SKIP_FLUIDSYNTH}" -eq 0 ]; then
  436. FLUIDSYNTH_EXTRAFLAGS=""
  437. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-floats=ON"
  438. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF"
  439. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF"
  440. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF"
  441. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF"
  442. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF"
  443. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF"
  444. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF"
  445. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF"
  446. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF"
  447. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF"
  448. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF"
  449. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF"
  450. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF"
  451. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF"
  452. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF"
  453. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF"
  454. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF"
  455. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF"
  456. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF"
  457. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF"
  458. git_clone fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_URL}"
  459. build_cmake fluidsynth "${FLUIDSYNTH_VERSION}" "${FLUIDSYNTH_EXTRAFLAGS}"
  460. fi # PAWPAW_SKIP_FLUIDSYNTH
  461. # ---------------------------------------------------------------------------------------------------------------------
  462. # mxml
  463. MXML_EXTRAFLAGS=""
  464. MXML_EXTRAFLAGS+=" --with-archflags="
  465. download mxml "${MXML_VERSION}" "${MXML_URL}"
  466. build_autoconf mxml "${MXML_VERSION}" "${MXML_EXTRAFLAGS}"
  467. # ---------------------------------------------------------------------------------------------------------------------
  468. # carla (backend only)
  469. if [ "${WASM}" -eq 0 ]; then
  470. CARLA_EXTRAFLAGS="CAN_GENERATE_LV2_TTL=false"
  471. CARLA_EXTRAFLAGS+=" EXTERNAL_PLUGINS=false"
  472. CARLA_EXTRAFLAGS+=" HAVE_ALSA=false"
  473. CARLA_EXTRAFLAGS+=" HAVE_JACK=false"
  474. CARLA_EXTRAFLAGS+=" HAVE_PULSEAUDIO=false"
  475. CARLA_EXTRAFLAGS+=" HAVE_DGL=false"
  476. CARLA_EXTRAFLAGS+=" HAVE_HYLIA=false"
  477. CARLA_EXTRAFLAGS+=" HAVE_X11=false"
  478. CARLA_EXTRAFLAGS+=" HAVE_FFMPEG=false"
  479. CARLA_EXTRAFLAGS+=" HAVE_FLUIDSYNTH=false"
  480. CARLA_EXTRAFLAGS+=" HAVE_FRONTEND=false"
  481. CARLA_EXTRAFLAGS+=" HAVE_LIBLO=false"
  482. CARLA_EXTRAFLAGS+=" HAVE_LIBMAGIC=false"
  483. CARLA_EXTRAFLAGS+=" HAVE_PYQT=false"
  484. CARLA_EXTRAFLAGS+=" HAVE_QT=false"
  485. CARLA_EXTRAFLAGS+=" HAVE_QT4=false"
  486. CARLA_EXTRAFLAGS+=" HAVE_QT5=false"
  487. CARLA_EXTRAFLAGS+=" HAVE_SDL=false"
  488. CARLA_EXTRAFLAGS+=" HAVE_SNDFILE=false"
  489. CARLA_EXTRAFLAGS+=" NOOPT=true"
  490. CARLA_EXTRAFLAGS+=" USING_JUCE=false"
  491. CARLA_EXTRAFLAGS+=" USING_JUCE_AUDIO_DEVICES=false"
  492. CARLA_EXTRAFLAGS+=" USING_JUCE_GUI_EXTRA=false"
  493. CARLA_EXTRAFLAGS+=" USING_RTAUDIO=false"
  494. git_clone carla "${CARLA_VERSION}" "${CARLA_URL}"
  495. build_make carla "${CARLA_VERSION}" "${CARLA_EXTRAFLAGS}"
  496. fi # WASM
  497. # ---------------------------------------------------------------------------------------------------------------------
  498. # wine bootstrap (needed for cross-compilation)
  499. if [ "${EXE_WRAPPER}" = "wine" ]; then
  500. wineboot -u
  501. fi
  502. # ---------------------------------------------------------------------------------------------------------------------