|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- #!/bin/bash
-
- # ---------------------------------------------------------------------------------------------------------------------
- # stop on error
-
- set -e
-
- # ---------------------------------------------------------------------------------------------------------------------
- # cd to correct path
-
- cd $(dirname $0)
-
- # ---------------------------------------------------------------------------------------------------------------------
- # set variables
-
- source common.env
-
- # ---------------------------------------------------------------------------------------------------------------------
- # function to remove old stuff
-
- cleanup_prefix()
- {
-
- rm -rf ${TARGETDIR}/carla-w32nosse ${TARGETDIR}/carla-w32 ${TARGETDIR}/carla-w64
-
- }
-
- cleanup_pkgs()
- {
-
- rm -rf Carla
- rm -rf Carla.exe
- rm -rf Carla.lv2
- rm -rf Carla.vst
- rm -rf Carla_*
- rm -rf flac-*
- rm -rf fluidsynth-*
- rm -rf fftw-*
- rm -rf glib-*
- rm -rf liblo-*
- rm -rf libogg-*
- rm -rf libsndfile-*
- rm -rf libvorbis-*
- rm -rf mxml-*
- rm -rf pkg-config-*
- rm -rf pyliblo-*
- rm -rf zlib-*
-
- }
-
- cleanup()
- {
-
- cleanup_prefix
- cleanup_pkgs
- exit 0
-
- }
-
- # ------------------------------------------------------------------------------------
- # function to build base libs
-
- build_base()
- {
-
- # ---------------------------------------------------------------------------------------------------------------------
- # clean env
-
- unset AR
- unset CC
- unset CXX
- unset STRIP
- unset WINDRES
-
- unset PKG_CONFIG_PATH
-
- unset CFLAGS
- unset CPPFLAGS
- unset CXXFLAGS
- unset LDFLAGS
-
- export PREFIX=${TARGETDIR}/carla-w${ARCH_PREFIX}
- export PATH=${PREFIX}/bin:/usr/sbin:/usr/bin:/sbin:/bin
- export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
-
- # ---------------------------------------------------------------------------------------------------------------------
- # pkgconfig
-
- if [ ! -d pkg-config-${PKG_CONFIG_VERSION} ]; then
- wget -c https://pkg-config.freedesktop.org/releases/pkg-config-${PKG_CONFIG_VERSION}.tar.gz
- tar -xf pkg-config-${PKG_CONFIG_VERSION}.tar.gz
- fi
-
- if [ ! -f pkg-config-${PKG_CONFIG_VERSION}/build-done ]; then
- cd pkg-config-${PKG_CONFIG_VERSION}
- env AR="ar" CC="gcc" STRIP="strip" CFLAGS="" LDFLAGS="" PATH="/usr/sbin:/usr/bin:/sbin:/bin" \
- ./configure --enable-indirect-deps --with-internal-glib --with-pc-path=${PKG_CONFIG_PATH} --prefix=${PREFIX}
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # setup
-
- if [ x"${ARCH}" != x"32" ]; then
- CPUARCH="x86_64"
- else
- CPUARCH="i686"
- fi
-
- HOST_ARCH=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)
- MINGW_PREFIX="${CPUARCH}-w64-mingw32"
-
- export AR=${MINGW_PREFIX}-ar
- export CC=${MINGW_PREFIX}-gcc
- export CXX=${MINGW_PREFIX}-g++
- export STRIP=${MINGW_PREFIX}-strip
- export WINDRES=${MINGW_PREFIX}-windres
-
- if [ -z "${NOSSE}" ]; then
- export CFLAGS="-O3 -mtune=generic -msse -msse2 -mfpmath=sse -mstackrealign -fvisibility=hidden -fdata-sections -ffunction-sections"
- else
- export CFLAGS="-O2 -mstackrealign -fvisibility=hidden -fdata-sections -ffunction-sections"
- fi
-
- export CFLAGS="${CFLAGS} -DNDEBUG -DPTW32_STATIC_LIB -DFLUIDSYNTH_NOT_A_DLL -I${PREFIX}/include -I/opt/mingw${ARCH}/include"
- export CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"
- export CPPFLAGS="-DPIC -DNDEBUG -DPTW32_STATIC_LIB -I${PREFIX}/include -I/opt/mingw${ARCH}/include"
-
- export LDFLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed -Wl,--strip-all"
- export LDFLAGS="${LDFLAGS} -L${PREFIX}/lib -L/opt/mingw${ARCH}/lib"
-
- # ---------------------------------------------------------------------------------------------------------------------
- # liblo
-
- if [ ! -d liblo-${LIBLO_VERSION} ]; then
- wget -c https://github.com/radarsat1/liblo/releases/download/${LIBLO_VERSION}/liblo-${LIBLO_VERSION}.tar.gz
- tar -xf liblo-${LIBLO_VERSION}.tar.gz
- fi
-
- if [ ! -f liblo-${LIBLO_VERSION}/build-done ]; then
- cd liblo-${LIBLO_VERSION}
- sed -i "s/@extralibs@/@extralibs@ -lm/" liblo.pc.in
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- --enable-threads \
- --disable-examples --disable-tools
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # zlib
-
- if [ ! -d zlib-${ZLIB_VERSION} ]; then
- wget -c https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz -O zlib-${ZLIB_VERSION}.tar.gz
- tar -xf zlib-${ZLIB_VERSION}.tar.gz
- fi
-
- if [ ! -f zlib-${ZLIB_VERSION}/build-done ]; then
- cd zlib-${ZLIB_VERSION}
- ./configure --static --prefix=${PREFIX}
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # libogg
-
- if [ ! -d libogg-${LIBOGG_VERSION} ]; then
- wget -c https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-${LIBOGG_VERSION}.tar.gz
- tar -xf libogg-${LIBOGG_VERSION}.tar.gz
- fi
-
- if [ ! -f libogg-${LIBOGG_VERSION}/build-done ]; then
- cd libogg-${LIBOGG_VERSION}
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH}
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # libvorbis
-
- if [ ! -d libvorbis-${LIBVORBIS_VERSION} ]; then
- wget -c https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-${LIBVORBIS_VERSION}.tar.gz
- tar -xf libvorbis-${LIBVORBIS_VERSION}.tar.gz
- fi
-
- if [ ! -f libvorbis-${LIBVORBIS_VERSION}/build-done ]; then
- cd libvorbis-${LIBVORBIS_VERSION}
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH}
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # flac
-
- if [ ! -d flac-${FLAC_VERSION} ]; then
- wget -c https://ftp.osuosl.org/pub/xiph/releases/flac/flac-${FLAC_VERSION}.tar.xz
- tar -xf flac-${FLAC_VERSION}.tar.xz
- fi
-
- if [ ! -f flac-${FLAC_VERSION}/build-done ]; then
- cd flac-${FLAC_VERSION}
- chmod +x configure install-sh
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- --disable-cpplibs
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # libsndfile
-
- if [ ! -d libsndfile-${LIBSNDFILE_VERSION} ]; then
- wget -c http://www.mega-nerd.com/libsndfile/files/libsndfile-${LIBSNDFILE_VERSION}.tar.gz
- tar -xf libsndfile-${LIBSNDFILE_VERSION}.tar.gz
- fi
-
- if [ ! -f libsndfile-${LIBSNDFILE_VERSION}/build-done ]; then
- cd libsndfile-${LIBSNDFILE_VERSION}
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- --disable-full-suite --disable-alsa --disable-sqlite
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ------------------------------------------------------------------------------------
- # glib
-
- if [ ! -d glib-${GLIB_VERSION} ]; then
- wget -c http://caesar.ftp.acc.umu.se/pub/GNOME/sources/glib/${GLIB_MVERSION}/glib-${GLIB_VERSION}.tar.gz
- tar -xf glib-${GLIB_VERSION}.tar.gz
- fi
-
- if [ ! -f glib-${GLIB_VERSION}/build-done ]; then
- cd glib-${GLIB_VERSION}
- if [ ! -f patched ]; then
- patch -p1 -i ../../patches/glib_skip-gettext.patch
- sed -i "s|po docs|po|" Makefile.in
- touch patched
- fi
- chmod +x configure install-sh
- autoconf
- ./configure --enable-static --disable-shared --disable-docs --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- --with-threads=win32
- make ${MAKE_ARGS}
- make install
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # fluidsynth
-
- if [ ! -d fluidsynth-${FLUIDSYNTH_VERSION} ]; then
- wget -c https://github.com/FluidSynth/fluidsynth/archive/v${FLUIDSYNTH_VERSION}.tar.gz -O fluidsynth-${FLUIDSYNTH_VERSION}.tar.gz
- tar -xf fluidsynth-${FLUIDSYNTH_VERSION}.tar.gz
- fi
-
- if [ ! -f fluidsynth-${FLUIDSYNTH_VERSION}/build-done ]; then
- cd fluidsynth-${FLUIDSYNTH_VERSION}
- if [ ! -f patched ]; then
- patch -p1 -i ../../patches/fluidsynth-skip-drivers-build.patch
- touch patched
- fi
- cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} -DBUILD_SHARED_LIBS=OFF \
- -Denable-debug=OFF -Denable-profiling=OFF -Denable-ladspa=OFF -Denable-fpe-check=OFF -Denable-portaudio=OFF \
- -Denable-trap-on-fpe=OFF -Denable-aufile=OFF -Denable-dbus=OFF -Denable-ipv6=OFF -Denable-jack=OFF \
- -Denable-midishare=OFF -Denable-oss=OFF -Denable-pulseaudio=OFF -Denable-readline=OFF -Denable-ladcca=OFF \
- -Denable-lash=OFF -Denable-alsa=OFF -Denable-coreaudio=OFF -Denable-coremidi=OFF -Denable-framework=OFF \
- -Denable-floats=ON \
- -DCMAKE_C_COMPILER_WORKS=1 \
- -DCMAKE_CROSSCOMPILING=1 \
- -DCMAKE_SYSTEM_NAME="Windows" \
- -DCMAKE_HOST_SYSTEM_NAME=${HOST_ARCH}
- make ${MAKE_ARGS}
- make install
- sed -i -e "s|-lfluidsynth|-lfluidsynth -lglib-2.0 -lgthread-2.0 -lsndfile -lFLAC -lvorbisenc -lvorbis -logg -lm -ldsound -lwinmm -lole32 -lws2_32|" ${PREFIX}/lib/pkgconfig/fluidsynth.pc
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # mxml
-
- if [ ! -d mxml-${MXML_VERSION} ]; then
- wget -c https://github.com/michaelrsweet/mxml/releases/download/v${MXML_VERSION}/mxml-${MXML_VERSION}.tar.gz -O mxml-${MXML_VERSION}.tar.gz
- tar -xf mxml-${MXML_VERSION}.tar.gz
- fi
-
- if [ ! -f mxml-${MXML_VERSION}/build-done ]; then
- cd mxml-${MXML_VERSION}
- ./configure --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH}
- make libmxml.a
- cp *.a ${PREFIX}/lib/
- cp *.pc ${PREFIX}/lib/pkgconfig/
- cp mxml.h ${PREFIX}/include/
- touch build-done
- cd ..
- fi
-
- # ---------------------------------------------------------------------------------------------------------------------
- # fftw3 (needs to be last as it modifies C[XX]FLAGS)
-
- if [ ! -d fftw-${FFTW3_VERSION} ]; then
- curl -O http://www.fftw.org/fftw-${FFTW3_VERSION}.tar.gz
- tar -xf fftw-${FFTW3_VERSION}.tar.gz
- fi
-
- if [ ! -f fftw-${FFTW3_VERSION}/build-done ]; then
- export CFLAGS="${CFLAGS} -ffast-math"
- export CXXFLAGS="${CXXFLAGS} -ffast-math"
- EXTRA_ARGS=""
- cd fftw-${FFTW3_VERSION}
-
- if [ -z "${NOSSE}" ]; then
- EXTRA_ARGS="--enable-sse2"
- fi
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- ${EXTRA_ARGS} \
- --disable-debug --disable-alloca --disable-fortran \
- --with-our-malloc
- make
- make install
- make clean
-
- if [ -z "${NOSSE}" ]; then
- EXTRA_ARGS="--enable-sse2 --enable-sse"
- fi
- ./configure --enable-static --disable-shared --prefix=${PREFIX} \
- --target=${MINGW_PREFIX} --host=${MINGW_PREFIX} --build=${HOST_ARCH} \
- ${EXTRA_ARGS} --enable-single \
- --disable-debug --disable-alloca --disable-fortran \
- --with-our-malloc
- make
- make install
- make clean
-
- touch build-done
- cd ..
- fi
-
- }
-
- # ---------------------------------------------------------------------------------------------------------------------
- # build base libs
-
- cleanup_prefix
- cleanup_pkgs
-
- export ARCH=32
- export ARCH_PREFIX=32nosse
- export NOSSE=1
- build_base
- cleanup_pkgs
-
- unset NOSSE
-
- export ARCH=32
- export ARCH_PREFIX=32
- build_base
- cleanup_pkgs
-
- export ARCH=64
- export ARCH_PREFIX=64
- build_base
- cleanup_pkgs
-
- # ---------------------------------------------------------------------------------------------------------------------
|