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.

220 lines
8.8KB

  1. #!/bin/bash
  2. set -e
  3. cd $(dirname ${0})
  4. PAWPAW_ROOT="${PWD}"
  5. # ---------------------------------------------------------------------------------------------------------------------
  6. target="${1}"
  7. if [ -z "${target}" ]; then
  8. echo "usage: ${0} <target>"
  9. exit 1
  10. fi
  11. # ---------------------------------------------------------------------------------------------------------------------
  12. # TODO check for depedencies:
  13. # - curl
  14. # - cmake
  15. # - make
  16. # - jq
  17. # - patch
  18. # - python (waf, meson)
  19. # - sed
  20. # - tar
  21. source setup/check_target.sh
  22. source setup/env.sh
  23. source setup/functions.sh
  24. source setup/versions.sh
  25. mkdir -p "${PAWPAW_BUILDDIR}"
  26. mkdir -p "${PAWPAW_DOWNLOADDIR}"
  27. mkdir -p "${PAWPAW_PREFIX}"
  28. mkdir -p "${PAWPAW_TMPDIR}"
  29. # ---------------------------------------------------------------------------------------------------------------------
  30. # let's use native glib for linux builds
  31. if [ "${LINUX}" -eq 1 ] && [ ! -e "${TARGET_PKG_CONFIG_PATH}/glib-2.0.pc" ]; then
  32. mkdir -p ${TARGET_PKG_CONFIG_PATH}
  33. ln -s $(pkg-config --variable=pcfiledir glib-2.0)/g{io,lib,module,object,thread}-2.0.pc ${TARGET_PKG_CONFIG_PATH}/
  34. ln -s $(pkg-config --variable=pcfiledir libpcre)/libpcre.pc ${TARGET_PKG_CONFIG_PATH}/
  35. fi
  36. # ---------------------------------------------------------------------------------------------------------------------
  37. # pkgconfig
  38. download pkg-config "${PKG_CONFIG_VERSION}" "https://pkg-config.freedesktop.org/releases"
  39. build_host_autoconf pkg-config "${PKG_CONFIG_VERSION}" "--enable-indirect-deps --with-internal-glib --with-pc-path=${TARGET_PKG_CONFIG_PATH}"
  40. # ---------------------------------------------------------------------------------------------------------------------
  41. # file/magic (posix only)
  42. # if [ "${WIN32}" -eq 0 ]; then
  43. # download file "${FILE_VERSION}" "ftp://ftp.astron.com/pub/file"
  44. # build_autoconf file "${FILE_VERSION}"
  45. # fi
  46. # ---------------------------------------------------------------------------------------------------------------------
  47. # glib
  48. if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then
  49. if [ "${WIN32}" -eq 1 ]; then
  50. GLIB_EXTRAFLAGS="--with-threads=win32"
  51. else
  52. GLIB_EXTRAFLAGS="--with-threads=posix"
  53. fi
  54. download glib ${GLIB_VERSION} "http://caesar.ftp.acc.umu.se/pub/GNOME/sources/glib/${GLIB_MVERSION}" "${GLIB_TAR_EXT}"
  55. if [ "${MACOS}" -eq 1 ]; then
  56. export EXTRA_LDFLAGS="-lresolv"
  57. patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g'
  58. if [ "${MACOS_OLD}" -eq 1 ]; then
  59. GLIB_EXTRAFLAGS+=" glib_cv_stack_grows=yes"
  60. GLIB_EXTRAFLAGS+=" glib_cv_rtldglobal_broken=no"
  61. GLIB_EXTRAFLAGS+=" glib_cv_uscore=no"
  62. GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getpwuid_r=yes"
  63. GLIB_EXTRAFLAGS+=" ac_cv_func_posix_getgrgid_r=yes"
  64. patch_file glib ${GLIB_VERSION} "configure.in" 's/G_ATOMIC_I486/G_ATOMIC_I486_NOT/'
  65. fi
  66. fi
  67. build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}"
  68. fi
  69. # ---------------------------------------------------------------------------------------------------------------------
  70. # liblo
  71. download liblo "${LIBLO_VERSION}" "http://download.sourceforge.net/liblo"
  72. build_autoconf liblo "${LIBLO_VERSION}" "--enable-threads --disable-examples --disable-tests --disable-tools"
  73. # ---------------------------------------------------------------------------------------------------------------------
  74. # libogg
  75. download libogg "${LIBOGG_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/ogg"
  76. patch_file libogg "${LIBOGG_VERSION}" "include/ogg/os_types.h" 's/__MACH__/__MACH_SKIP__/'
  77. build_autoconf libogg "${LIBOGG_VERSION}"
  78. # ---------------------------------------------------------------------------------------------------------------------
  79. # libvorbis
  80. download libvorbis "${LIBVORBIS_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/vorbis"
  81. build_autoconf libvorbis "${LIBVORBIS_VERSION}" "--disable-examples"
  82. # ---------------------------------------------------------------------------------------------------------------------
  83. # flac
  84. FLAC_EXTRAFLAGS="--disable-doxygen-docs --disable-examples --disable-thorough-tests"
  85. if [ "${MACOS_OLD}" -eq 1 ]; then
  86. FLAC_EXTRAFLAGS="${FLAC_EXTRAFLAGS} --disable-asm-optimizations"
  87. fi
  88. download flac "${FLAC_VERSION}" "https://ftp.osuosl.org/pub/xiph/releases/flac" "tar.xz"
  89. build_autoconf flac "${FLAC_VERSION}" "${FLAC_EXTRAFLAGS}"
  90. # ---------------------------------------------------------------------------------------------------------------------
  91. # fftw
  92. FFTW_EXTRAFLAGS="--enable-sse2 --disable-alloca --disable-fortran --with-our-malloc"
  93. # if [ "${WIN32}" -eq 0 ]; then
  94. # FFTW_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-threads"
  95. # fi
  96. download fftw "${FFTW_VERSION}" "http://www.fftw.org"
  97. if [ "${MACOS_OLD}" -eq 1 ]; then
  98. patch_file fftw "${FFTW_VERSION}" "configure" 's/CFLAGS="$CFLAGS -Wl,-no_compact_unwind"/CFLAGS="$CFLAGS"/'
  99. patch_file fftw "${FFTW_VERSION}" "libbench2/timer.c" 's/#if defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_TIMER)/#ifndef HAVE_TIMER/'
  100. fi
  101. build_autoconf fftw "${FFTW_VERSION}" "${FFTW_EXTRAFLAGS}"
  102. # ---------------------------------------------------------------------------------------------------------------------
  103. # fftwf
  104. FFTWF_EXTRAFLAGS="${FFTW_EXTRAFLAGS} --enable-single"
  105. copy_download fftw fftwf "${FFTW_VERSION}"
  106. if [ "${MACOS_OLD}" -eq 1 ]; then
  107. patch_file fftwf "${FFTW_VERSION}" "configure" 's/CFLAGS="$CFLAGS -Wl,-no_compact_unwind"/CFLAGS="$CFLAGS"/'
  108. patch_file fftwf "${FFTW_VERSION}" "libbench2/timer.c" 's/#if defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_TIMER)/#ifndef HAVE_TIMER/'
  109. fi
  110. build_autoconf fftwf "${FFTW_VERSION}" "${FFTWF_EXTRAFLAGS}"
  111. # ---------------------------------------------------------------------------------------------------------------------
  112. # libsamplerate
  113. download libsamplerate "${LIBSAMPLERATE_VERSION}" "http://www.mega-nerd.com/SRC"
  114. build_autoconf libsamplerate "${LIBSAMPLERATE_VERSION}" "--disable-fftw --disable-sndfile"
  115. # ---------------------------------------------------------------------------------------------------------------------
  116. # libsndfile
  117. download libsndfile "${LIBSNDFILE_VERSION}" "http://www.mega-nerd.com/libsndfile/files"
  118. patch_file libsndfile "${LIBSNDFILE_VERSION}" "configure" 's/ -Wvla//'
  119. build_autoconf libsndfile "${LIBSNDFILE_VERSION}" "--disable-full-suite --disable-alsa --disable-sqlite"
  120. # ---------------------------------------------------------------------------------------------------------------------
  121. # lv2
  122. download lv2 "${LV2_VERSION}" "http://lv2plug.in/spec" "tar.bz2"
  123. build_waf lv2 "${LV2_VERSION}" "--lv2dir=${PAWPAW_PREFIX}/lib/lv2 --no-coverage --no-plugins"
  124. # ---------------------------------------------------------------------------------------------------------------------
  125. # fluidsynth
  126. FLUIDSYNTH_EXTRAFLAGS="-Denable-floats=ON"
  127. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-alsa=OFF"
  128. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-aufile=OFF"
  129. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coreaudio=OFF"
  130. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-coremidi=OFF"
  131. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-dbus=OFF"
  132. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-debug=OFF"
  133. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-fpe-check=OFF"
  134. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-framework=OFF"
  135. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ipv6=OFF"
  136. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-jack=OFF"
  137. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladcca=OFF"
  138. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-ladspa=OFF"
  139. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-lash=OFF"
  140. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-midishare=OFF"
  141. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-oss=OFF"
  142. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-portaudio=OFF"
  143. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-profiling=OFF"
  144. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-pulseaudio=OFF"
  145. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-readline=OFF"
  146. FLUIDSYNTH_EXTRAFLAGS+=" -Denable-trap-on-fpe=OFF"
  147. download fluidsynth ${FLUIDSYNTH_VERSION} "https://github.com/FluidSynth/fluidsynth/archive"
  148. patch_file fluidsynth ${FLUIDSYNTH_VERSION} "CMakeLists.txt" 's/_init_lib_suffix "64"/_init_lib_suffix ""/'
  149. build_cmake fluidsynth ${FLUIDSYNTH_VERSION} "${FLUIDSYNTH_EXTRAFLAGS}"
  150. # touch src/fluidsynth
  151. # sed -i -e "s|-lfluidsynth|-lfluidsynth -lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lpthread -lm -liconv|" ${PREFIX}/lib/pkgconfig/fluidsynth.pc
  152. # ---------------------------------------------------------------------------------------------------------------------
  153. # mxml
  154. download mxml ${MXML_VERSION} "https://github.com/michaelrsweet/mxml/archive"
  155. build_autoconf mxml ${MXML_VERSION} "--disable-shared --prefix=${PAWPAW_PREFIX}"
  156. # ---------------------------------------------------------------------------------------------------------------------
  157. # zlib
  158. if [ "${MACOS}" -eq 0 ]; then
  159. download zlib ${ZLIB_VERSION} "https://github.com/madler/zlib/archive"
  160. build_conf zlib ${ZLIB_VERSION} "--static --prefix=${PAWPAW_PREFIX}"
  161. fi
  162. # ---------------------------------------------------------------------------------------------------------------------