# HG changeset patch # User Paul Brossier # Date 1469386925 -7200 # Node ID 5e944736a8ed7067fb35499c9388133e7fa4be26 # Parent 01b4286e1dab975b05d035a4c71892bdac3a2246 update build scripts for mingw-w64 diff -r 01b4286e1dab -r 5e944736a8ed Makefile.mingw32 --- a/Makefile.mingw32 Sun Jul 24 20:37:41 2016 +0200 +++ b/Makefile.mingw32 Sun Jul 24 21:02:05 2016 +0200 @@ -7,16 +7,18 @@ ## instead so that it can be included by all platform Makefiles. # Location of Vamp plugin SDK relative to the project directory -VAMPSDK_DIR ?= ../vamp-plugin-sdk-2.5 +VAMPSDK_DIR ?= ./contrib/vamp-plugin-sdk-2.6 # Location of libvamp-sdk.dll -VAMPBIN_DIR ?= ../vamp-plugin-sdk-2.5-binaries-win32-mingw +#VAMPBIN_DIR ?= ./contrib/vamp-plugin-sdk-2.6-binaries-win32-mingw +VAMPBIN_DIR ?= ./contrib/vamp-plugin-sdk-2.6 # Location of cross compiled and installed aubio tree -AUBIO_MINGW32_DISTDIR ?= ../aubio-dist-mingw32 +AUBIO_MINGW32_DISTDIR ?= ./contrib/aubio-dist # Toolchain prefix -TOOLPREFIX ?= i586-mingw32msvc- +# on debian/ubuntu systems, you will want to install g++-mingw-w64-i686 +TOOLPREFIX ?= i686-w64-mingw32- CXX = $(TOOLPREFIX)g++ CC = $(TOOLPREFIX)gcc @@ -31,16 +33,18 @@ CFLAGS := -Wall -Wextra -O3 -ftree-vectorize # add AUBIO_MINGW32_DISTDIR to ARCHFLAGS -ARCHFLAGS := -I$(AUBIO_MINGW32_DISTDIR)/usr/local/include +ARCHFLAGS := -I$(AUBIO_MINGW32_DISTDIR)/include # add AUBIO_MINGW32_DISTDIR to PLUGIN_LDFLAGS -PLUGIN_LDFLAGS := -L$(AUBIO_MINGW32_DISTDIR)/usr/local/lib +PLUGIN_LDFLAGS := # Libraries and linker flags required by plugin: add any -l # options here PLUGIN_LDFLAGS += -Wl,--enable-auto-import -PLUGIN_LDFLAGS += -shared -Wl,--retain-symbols-file=vamp-plugin.list -PLUGIN_LIBS := $(VAMPBIN_DIR)/libvamp-sdk.dll +PLUGIN_LDFLAGS += -fno-exceptions -static -static-libgcc +PLUGIN_LDFLAGS += -shared -Wl,-Bsymbolic +PLUGIN_LDFLAGS += -Wl,--retain-symbols-file=vamp-plugin.list +PLUGIN_LIBS := $(AUBIO_MINGW32_DISTDIR)/lib/libaubio.dll.a $(VAMPBIN_DIR)/libvamp-sdk.a # File extension for plugin library on this platform PLUGIN_EXT := .dll diff -r 01b4286e1dab -r 5e944736a8ed build_mingw32.sh --- a/build_mingw32.sh Sun Jul 24 20:37:41 2016 +0200 +++ b/build_mingw32.sh Sun Jul 24 21:02:05 2016 +0200 @@ -2,28 +2,29 @@ # cross compile vamp-aubio-plugins using mingw32 toolchain -pushd .. +set -e +set -x -# get Vamp SDK -curl -O https://code.soundsoftware.ac.uk/attachments/download/690/vamp-plugin-sdk-2.5.tar.gz -tar xf vamp-plugin-sdk-2.5.tar.gz +export CFLAGS="-Os" +#export CC="i586-mingw32msvc-gcc" +#export CXX="i586-mingw32msvc-g++" +export CC="i686-w64-mingw32-gcc" +export CXX="i686-w64-mingw32-g++" +export WAFOPTS="--with-target-platform=win32 --disable-sndfile --disable-samplerate --disable-jack --disable-avcodec --notests" -# get Vamp windows binaries -curl -O https://code.soundsoftware.ac.uk/attachments/download/694/vamp-plugin-sdk-2.5-binaries-win32-mingw.zip -unzip -ox vamp-plugin-sdk-2.5-binaries-win32-mingw.zip +# get waf +./scripts/get_waf.sh -# build aubio -git clone git://git.aubio.org/git/aubio/ aubio-mingw32 -pushd aubio-mingw32 -git co develop -git pull -CFLAGS="-Os" CC=i586-mingw32msvc-gcc ./waf distclean configure build install \ - --destdir=../aubio-dist-mingw32 --testcmd="echo %s" \ - --with-target-platform=win32 --disable-avcodec --disable-samplerate \ - --disable-jack --disable-sndfile -popd +# fetch Vamp SDK +./scripts/get_deps_mingw32.sh -popd +# fetch and build aubio +./scripts/get_aubio.sh -# now build vamp-aubio-plugins -make -f Makefile.mingw32 clean all +# configure and build plugin +./waf configure + +./waf build -v + +# system-wide installation +# sudo ./waf install diff -r 01b4286e1dab -r 5e944736a8ed scripts/get_deps_mingw32.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/get_deps_mingw32.sh Sun Jul 24 21:02:05 2016 +0200 @@ -0,0 +1,20 @@ +#! /bin/bash + + +source scripts/resources + +#rm -rf contrib/ +mkdir -p contrib/ + +pushd contrib + +for p in $VAMP_PLUGIN_SDK #$VAMP_PLUGIN_SDK_MINGW +do + fetch $p +done + +pushd vamp-plugin-sdk-2.6 +make -f build/Makefile.mingw32 +popd + +popd diff -r 01b4286e1dab -r 5e944736a8ed wscript --- a/wscript Sun Jul 24 20:37:41 2016 +0200 +++ b/wscript Sun Jul 24 21:02:05 2016 +0200 @@ -9,6 +9,8 @@ local_vamp_include = 'contrib/vamp-plugin-sdk-2.6' local_vamp_lib_i686 = 'contrib/vamp-plugin-sdk-2.6-binaries-i686-linux' local_vamp_lib_amd64 = 'contrib/vamp-plugin-sdk-2.6-binaries-amd64-linux' +# using debian/stable (jessie), the stdc++ abi seems broken. recompile it. +local_vamp_lib_mingw = 'contrib/vamp-plugin-sdk-2.6' #-binaries-win32-mingw' local_vamp_lib_osx = 'contrib/vamp-plugin-sdk-2.6-binaries-osx' local_vamp_lib_win32 = 'contrib' @@ -29,7 +31,9 @@ local_vamp_stlib = 'libvamp-sdk.a' if sys.platform.startswith('linux'): - if platform.machine() == 'x86_64': + if 'mingw' in conf.env.CXX[0]: + local_vamp_lib = local_vamp_lib_mingw + elif platform.machine() == 'x86_64': local_vamp_lib = local_vamp_lib_amd64 elif platform.machine() == 'x86_64': local_vamp_lib = local_vamp_lib_i686 @@ -67,9 +71,13 @@ if sys.platform.startswith('linux'): conf.env['CXXFLAGS'] += ['-O3', '-msse', '-msse2', '-mfpmath=sse', '-ftree-vectorize'] - conf.env.append_value('LINKFLAGS', '-Wl,-z,defs') - # add plugin.map - conf.env.append_value('LINKFLAGS', '-Wl,--version-script=../vamp-plugin.map') + if 'mingw' in conf.env.CXX[0]: + conf.env.append_value('LINKFLAGS', '-Wl,--enable-auto-import') + conf.env.append_value('LINKFLAGS', '-Wl,--retain-symbols-file=../vamp-plugin.list') + else: + conf.env.append_value('LINKFLAGS', '-Wl,-z,defs') + # add plugin.map + conf.env.append_value('LINKFLAGS', '-Wl,--version-script=../vamp-plugin.map') elif sys.platform == 'win32': conf.env.append_value('CXXFLAGS', '/W4') conf.env.append_value('CXXFLAGS', '/EHsc') @@ -86,7 +94,10 @@ plugin_sources += bld.path.ant_glob('*.cpp') # rename libvamp-aubio to vamp-plugin binary name - if sys.platform.startswith('linux'): + if 'mingw' in bld.env.CXX[0]: + bld.env['cxxshlib_PATTERN'] = '%s.dll' + install_path = None + elif sys.platform.startswith('linux'): bld.env['cxxshlib_PATTERN'] = '%s.so' install_path = '${LIBDIR}/vamp' elif sys.platform.startswith('darwin'):