Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • scripts/build_mingw

    r4f64069 r6b7f54d  
    11#! /bin/bash
    22
    3 # This script cross compiles aubio for windows using mingw, four times:
    4 #
    5 #  - 32 and 64 bits with no external dependencies
    6 #  - 32 and 64 bits against ffmpeg
    7 #
     3# This script cross compiles aubio for windows using mingw, both for 32 and 64
     4# bits. Built binaries will be placed in ./dist-win32 and ./dist-win64.
     5
    86# On debian or ubuntu, you will want to 'apt-get install gcc-mingw-w64'
    97
     
    119set -x
    1210
    13 source VERSION
    14 VERSION="$AUBIO_MAJOR_VERSION.$AUBIO_MINOR_VERSION.$AUBIO_PATCH_VERSION"
    15 VERSION+="$AUBIO_VERSION_STATUS"
     11WAFOPTS="-v --disable-avcodec --disable-samplerate --disable-jack --disable-sndfile"
    1612
    17 FFMPEG_BUILDS_URL="https://ffmpeg.zeranoe.com/builds"
    18 FFMPEG_DEFAULT="20170315-6c4665d"
     13[ -d dist-win32 ] && rm -rf dist-win32
     14[ -d dist-win64 ] && rm -rf dist-win64
    1915
    20 # define some default CFLAGS
    21 DEF_CFLAGS="-Os -I/usr/share/mingw-w64"
    22 DEF_LDFLAGS=""
     16CFLAGS="-Os" \
     17  LDFLAGS="" \
     18  CC=x86_64-w64-mingw32-gcc \
     19  ./waf distclean configure build install --destdir=$PWD/dist-win64 \
     20    --testcmd="echo %s" \
     21    $WAFOPTS --with-target-platform=win64
    2322
    24 WAFOPTS=""
    25 # disable external deps to make sure we don't try to use the host package
    26 WAFOPTS+=" --disable-samplerate --disable-jack --disable-sndfile"
    27 # enable ffmpeg build
    28 WAFOPTS+=" --disable-avcodec"
    29 # install without a prefix
    30 WAFOPTS+=" --prefix=/"
    31 # compile the tests, but fake running them
    32 # passing this option WAFOPTS fails (escaping?), added in actual waf call below
    33 #WAFOPTS+=" --testcmd='echo %s'"
    34 
    35 # debugging
    36 #WAFOPTS+=" -v"
    37 #WAFOPTS+=" -j1"
    38 #WAFOPTS+=" --notests"
    39 
    40 function fetch_ffpmeg() {
    41   ## manually add ffmpeg (no pkg-config .pc files in bins)
    42   [ -n "$FFMPEG_VERSION" ] || FFMPEG_VERSION=$FFMPEG_DEFAULT
    43   FFMPEG_TARBALL="$PWD/ffmpeg-$FFMPEG_VERSION-$TARGET-dev.zip"
    44   FFMPEG_BINARIES="${FFMPEG_TARBALL%%.zip}"
    45   if [ ! -d "$FFMPEG_BINARIES" ]
    46   then
    47     if [ ! -f "$FFMPEG_TARBALL" ]
    48     then
    49       curl -O $FFMPEG_BUILDS_URL/$TARGET/dev/ffmpeg-$FFMPEG_VERSION-$TARGET-dev.zip
    50     else
    51       echo "using $FFMPEG_TARBALL"
    52     fi
    53     unzip -x $FFMPEG_TARBALL
    54   else
    55     echo "using $FFMPEG_BINARIES"
    56   fi
    57 }
    58 
    59 function get_cflags() {
    60   CFLAGS="$DEF_CFLAGS"
    61   LDFLAGS="$DEF_LDFLAGS"
    62   if [ -n "$WITH_FFMEG" ]
    63   then
    64     fetch_ffpmeg
    65     CFLAGS+=" -DHAVE_LIBAV=1 -DHAVE_SWRESAMPLE=1"
    66     CFLAGS+=" -I$FFMPEG_BINARIES/include"
    67     LDFLAGS+=" -lavcodec -lavformat -lavutil -lswresample"
    68     LDFLAGS+=" -L$FFMPEG_BINARIES/lib"
    69   fi
    70 }
    71 
    72 function build_mingw() {
    73   DESTDIR="$PWD/aubio-$VERSION-$TARGET"
    74   [ -n "$WITH_FFMEG" ] && DESTDIR+="-ffmpeg"
    75   [ -f $DESTDIR.zip ] && echo "Remove existing $DESTDIR.zip first" && exit 1
    76   [ -d $DESTDIR ] && rm -rf $DESTDIR
    77   WAFOPTS_TGT="$WAFOPTS --destdir=$DESTDIR"
    78   WAFOPTS_TGT+=" --with-target-platform=$TARGET"
    79   get_cflags
    80   CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
    81     ./waf distclean configure build install $WAFOPTS_TGT --testcmd='echo %s'
    82   zip -r $DESTDIR.zip `basename $DESTDIR`
    83   rm -rf $DESTDIR
    84   sha256sum $DESTDIR.zip > $DESTDIR.zip.sha256
    85 }
    86 
    87 function build_mingw32() {
    88   TARGET=win32
    89   export CC=i686-w64-mingw32-gcc
    90   build_mingw
    91 }
    92 
    93 function build_mingw64() {
    94   TARGET=win64
    95   export CC=x86_64-w64-mingw32-gcc
    96   build_mingw
    97 }
    98 
    99 # fetch waf if needed
    100 [ -f "waf" ] || make getwaf
    101 
    102 # first build without ffmpeg
    103 build_mingw32
    104 build_mingw64
    105 
    106 # then build against ffmpeg
    107 WITH_FFMEG=1
    108 build_mingw32
    109 build_mingw64
    110 
    111 set +x
    112 echo ""
    113 echo "All done! The following files were generated:"
    114 echo ""
    115 ls -lart aubio*.zip*
     23CFLAGS="-Os" \
     24  LDFLAGS="" \
     25  CC=i686-w64-mingw32-gcc \
     26  ./waf distclean configure build install --destdir=$PWD/dist-win32 \
     27    --testcmd="echo %s" \
     28    $WAFOPTS --with-target-platform=win32
Note: See TracChangeset for help on using the changeset viewer.