## 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
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<library>
# 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
# cross compile vamp-aubio-plugins using mingw32 toolchain
-pushd ..
-
-# 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
-
-# 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
-
-# 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
-
-popd
-
-# now build vamp-aubio-plugins
-make -f Makefile.mingw32 clean all
+set -e
+set -x
+
+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 waf
+./scripts/get_waf.sh
+
+# fetch Vamp SDK
+./scripts/get_deps_mingw32.sh
+
+# fetch and build aubio
+./scripts/get_aubio.sh
+
+# configure and build plugin
+./waf configure
+
+./waf build -v
+
+# system-wide installation
+# sudo ./waf install
--- /dev/null
+#! /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
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'
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
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')
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'):