Windows package: use pre-compiled MSYS2 packages for most dependencies

We only need to recompile Slicot and x13as.
time-shift
Sébastien Villemot 2019-09-17 13:46:18 +02:00
parent 2113deb0db
commit 533a4ff7db
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
7 changed files with 93 additions and 413 deletions

2
.gitignore vendored
View File

@ -130,6 +130,8 @@ windows/deps/.MTREE
windows/deps/.PKGINFO
windows/deps/lib32/
windows/deps/lib64/
windows/deps/lib32-msys2/
windows/deps/lib64-msys2/
windows/deps/matlab32/
windows/deps/matlab64/
windows/deps/mingw32/

View File

@ -85,9 +85,9 @@ pkg_windows:
- windows/deps/sources64/
- windows/deps/lib32/
- windows/deps/lib64/
# We do not cache mingw{32,64}, octave{32,64} and matlab{32,64}, because
# those are simply extracted from a tarball. It would be a waste of space
# and of (re-compression) time.
# We do not cache lib{32,64}-msys2, mingw{32,64}, octave{32,64} and
# matlab{32,64}, because those are simply extracted from a tarball. It
# would be a waste of space and of (re-compression) time.
artifacts:
paths:
- windows/exe/*

View File

@ -53,6 +53,8 @@ BASENAME=dynare-$VERSION
# Set directories for dependencies
LIB32="$ROOT_DIRECTORY"/deps/lib32
LIB64="$ROOT_DIRECTORY"/deps/lib64
LIB32_MSYS2="$ROOT_DIRECTORY"/deps/lib32-msys2
LIB64_MSYS2="$ROOT_DIRECTORY"/deps/lib64-msys2
# Go to source root directory
cd ..
@ -62,10 +64,10 @@ cd ..
## Compile preprocessor (32-bit), Dynare++ (32-bit) and documentation
./configure --host=i686-w64-mingw32 \
--with-boost="$LIB32"/Boost \
--with-blas="$LIB32"/OpenBLAS/libopenblas.a \
--with-lapack="$LIB32"/OpenBLAS/libopenblas.a \
--with-matio="$LIB32"/matIO \
--with-boost="$LIB32_MSYS2" \
--with-blas="$LIB32_MSYS2"/lib/libopenblas.a \
--with-lapack="$LIB32_MSYS2"/lib/libopenblas.a \
--with-matio="$LIB32_MSYS2" \
--disable-octave \
--disable-matlab \
PACKAGE_VERSION="$VERSION" \
@ -83,7 +85,7 @@ i686-w64-mingw32-strip dynare++/src/dynare++.exe
cd preprocessor
make -C src clean # We don't want to clean the doc
./configure --host=x86_64-w64-mingw32 \
--with-boost="$LIB64"/Boost \
--with-boost="$LIB64_MSYS2" \
PACKAGE_VERSION="$VERSION" \
PACKAGE_STRING="dynare $VERSION"
make -j"$NTHREADS"
@ -103,8 +105,8 @@ build_windows_matlab_mex_32 ()
cd "$TMP_DIRECTORY"/matlab-win32/
"$ROOT_DIRECTORY"/../mex/build/matlab/configure \
--host=i686-w64-mingw32 \
--with-gsl="$LIB32"/Gsl \
--with-matio="$LIB32"/matIO \
--with-gsl="$LIB32_MSYS2" \
--with-matio="$LIB32_MSYS2" \
--with-slicot="$LIB32"/Slicot/without-underscore \
--with-matlab="$ROOT_DIRECTORY"/deps/matlab32/R2009b \
MATLAB_VERSION=R2009b \
@ -124,8 +126,8 @@ build_windows_matlab_mex_64_a ()
cd "$TMP_DIRECTORY"/matlab-win64-a/
"$ROOT_DIRECTORY"/../mex/build/matlab/configure \
--host=x86_64-w64-mingw32 \
--with-gsl="$LIB64"/Gsl \
--with-matio="$LIB64"/matIO \
--with-gsl="$LIB64_MSYS2" \
--with-matio="$LIB64_MSYS2" \
--with-slicot="$LIB64"/Slicot/without-underscore \
--with-matlab="$ROOT_DIRECTORY"/deps/matlab64/R2009b \
MATLAB_VERSION=R2009b \
@ -145,8 +147,8 @@ build_windows_matlab_mex_64_b ()
cd "$TMP_DIRECTORY"/matlab-win64-b/
"$ROOT_DIRECTORY"/../mex/build/matlab/configure \
--host=x86_64-w64-mingw32 \
--with-gsl="$LIB64"/Gsl \
--with-matio="$LIB64"/matIO \
--with-gsl="$LIB64_MSYS2" \
--with-matio="$LIB64_MSYS2" \
--with-slicot="$LIB64"/Slicot/without-underscore \
--with-matlab="$ROOT_DIRECTORY"/deps/matlab64/R2018a \
MATLAB_VERSION=R2018a \
@ -166,8 +168,8 @@ build_windows_octave_mex_32 ()
cd "$TMP_DIRECTORY"/octave-32/
"$ROOT_DIRECTORY"/../mex/build/octave/configure \
--host=i686-w64-mingw32 \
--with-gsl="$LIB32"/Gsl \
--with-matio="$LIB32"/matIO \
--with-gsl="$LIB32_MSYS2" \
--with-matio="$LIB32_MSYS2" \
--with-slicot="$LIB32"/Slicot/with-underscore \
MKOCTFILE="$ROOT_DIRECTORY"/deps/mkoctfile32 \
PACKAGE_VERSION="$VERSION" \
@ -185,8 +187,8 @@ build_windows_octave_mex_64 ()
cd "$TMP_DIRECTORY"/octave-64/
"$ROOT_DIRECTORY"/../mex/build/octave/configure \
--host=x86_64-w64-mingw32 \
--with-gsl="$LIB64"/Gsl \
--with-matio="$LIB64"/matIO \
--with-gsl="$LIB64_MSYS2" \
--with-matio="$LIB64_MSYS2" \
--with-slicot="$LIB64"/Slicot/with-underscore \
MKOCTFILE="$ROOT_DIRECTORY"/deps/mkoctfile64 \
PACKAGE_VERSION="$VERSION" \

View File

@ -21,211 +21,25 @@ ROOT_PATH = $(realpath .)
WGET_OPTIONS := --no-verbose --no-use-server-timestamps --retry-connrefused --retry-on-host-error
.PHONY: clean-openblas-src clean-openblas-tar clean-openblas-all clean-libopenblas \
clean-boost-src clean-boost-tar clean-boost-all clean-libboost \
clean-gsl-src clean-gsl-tar clean-gsl-all clean-libgsl\
clean-slicot-src clean-slicot-tar clean-slicot-all clean-libslicot \
clean-matio-src clean-matio-tar clean-matio-all clean-libmatio\
clean-zlib-src clean-zlib-tar clean-zlib-src clean-libzlib \
clean-x13as-tar clean-x13as-src clean-x13as-bin clean-x13as-all \
clean-src clean-all clean-lib clean-tar \
build build-openblas build-slicot build-matio build-boost build-gsl \
octave matlab mingw
.PHONY: all build octave matlab msys2 \
build build-slicot build-x13as \
clean-lib clean-libslicot clean-matlab clean-octave clean-msys2 clean-x13as-bin \
clean-src clean-slicot-src clean-x13as-src \
clean-tar clean-slicot-tar clean-x13as-tar \
clean-all clean-lib clean-src clean-tar
all: build octave matlab mingw
all: build octave matlab msys2
build: build-openblas build-slicot build-matio build-boost build-gsl build-x13as
build: build-slicot build-x13as
clean-lib: clean-libopenblas clean-libgsl clean-libzlib clean-libmatio clean-libslicot clean-libboost clean-matlab clean-octave clean-mingw clean-x13as-bin
clean-lib: clean-libslicot clean-matlab clean-octave clean-msys2 clean-x13as-bin
clean-src: clean-openblas-src clean-boost-src clean-gsl-src clean-matio-src clean-slicot-src clean-zlib-src clean-x13as-src
clean-src: clean-slicot-src clean-x13as-src
clean-tar: clean-openblas-tar clean-boost-tar clean-gsl-tar clean-matio-tar clean-slicot-tar clean-zlib-tar clean-x13as-tar
clean-tar: clean-slicot-tar clean-x13as-tar
clean-all: clean-lib clean-src clean-tar
#
# OpenBLAS library
#
tarballs/openblas-${OPENBLAS_VERSION}.tar.gz:
mkdir -p tarballs
wget $(WGET_OPTIONS) -O $@ https://github.com/xianyi/OpenBLAS/archive/v${OPENBLAS_VERSION}.tar.gz
sources32/OpenBLAS-${OPENBLAS_VERSION}: tarballs/openblas-${OPENBLAS_VERSION}.tar.gz
mkdir -p sources32
rm -rf sources32/OpenBLAS-*
tar xf $< --directory sources32
patch $@/Makefile.rule < patches/openblas-w32.patch
sources64/OpenBLAS-${OPENBLAS_VERSION}: tarballs/openblas-${OPENBLAS_VERSION}.tar.gz
mkdir -p sources64
rm -rf sources64/OpenBLAS-*
tar xf $< --directory sources64
patch $@/Makefile.rule < patches/openblas-w64.patch
lib32/OpenBLAS/libopenblas.a: sources32/OpenBLAS-${OPENBLAS_VERSION}
make -C $<
i686-w64-mingw32-strip --strip-debug $</libopenblasp-r${OPENBLAS_VERSION}.a
mkdir -p $(dir $@)
cp $</libopenblasp-r${OPENBLAS_VERSION}.a $@
lib64/OpenBLAS/libopenblas.a: sources64/OpenBLAS-${OPENBLAS_VERSION}
make -C $<
x86_64-w64-mingw32-strip --strip-debug $</libopenblasp-r${OPENBLAS_VERSION}.a
mkdir -p $(dir $@)
cp $</libopenblasp-r${OPENBLAS_VERSION}.a $@
build-openblas: lib32/OpenBLAS/libopenblas.a lib64/OpenBLAS/libopenblas.a
clean-openblas-tar:
rm -f tarballs/openblas-${OPENBLAS_VERSION}.tar.gz
clean-openblas-src:
rm -rf sources32/OpenBLAS-${OPENBLAS_VERSION}
rm -rf sources64/OpenBLAS-${OPENBLAS_VERSION}
clean-libopenblas:
rm -rf lib32/OpenBLAS
rm -rf lib64/OpenBLAS
clean-openblas-all: clean-openblas-src clean-openblas-tar clean-libopenblas
#
# Boost library
#
tarballs/boost_${BOOST_VERSION}.tar.bz2:
mkdir -p tarballs
wget $(WGET_OPTIONS) -O $@ https://dl.bintray.com/boostorg/release/$(subst _,.,${BOOST_VERSION})/source/$(notdir $@)
sources32/boost_${BOOST_VERSION}: tarballs/boost_${BOOST_VERSION}.tar.bz2
mkdir -p sources32
rm -rf sources32/boost_*
tar xf $< --directory sources32
echo "using gcc : mingw : i686-w64-mingw32-g++ ;" > $@/user-config.jam
sources64/boost_${BOOST_VERSION}: tarballs/boost_${BOOST_VERSION}.tar.bz2
mkdir -p sources64
rm -rf sources64/boost_*
tar xf $< --directory sources64
echo "using gcc : mingw : x86_64-w64-mingw32-g++ ;" > $@/user-config.jam
lib32/Boost: sources32/boost_${BOOST_VERSION}
rm -rf lib32/Boost
cd $< && ./bootstrap.sh --with-libraries=system,filesystem --prefix=${ROOT_PATH}/lib32/Boost && ./b2 -a -q --user-config=user-config.jam toolset=gcc-mingw target-os=windows address-model=32 variant=release install
lib64/Boost: sources64/boost_${BOOST_VERSION}
rm -rf lib64/Boost
cd $< && ./bootstrap.sh --with-libraries=system,filesystem --prefix=${ROOT_PATH}/lib64/Boost && ./b2 -a -q --user-config=user-config.jam toolset=gcc-mingw target-os=windows address-model=64 variant=release install
build-boost: lib32/Boost lib64/Boost
clean-boost-tar:
rm -f tarballs/boost_${BOOST_VERSION}.tar.bz2
clean-boost-src:
rm -rf sources32/boost_${BOOST_VERSION}
rm -rf sources64/boost_${BOOST_VERSION}
clean-libboost:
rm -rf lib32/Boost
rm -rf lib64/Boost
clean-boost-all: clean-boost-src clean-boost-tar clean-libboost
#
# Gsl
#
tarballs/gsl-${GSL_VERSION}.tar.gz:
mkdir -p tarballs
wget $(WGET_OPTIONS) -O $@ https://ftp.gnu.org/gnu/gsl/$(notdir $@)
sources32/gsl-${GSL_VERSION}: tarballs/gsl-${GSL_VERSION}.tar.gz
mkdir -p sources32
rm -rf sources32/gsl-*
tar xf $< --directory sources32
sources64/gsl-${GSL_VERSION}: tarballs/gsl-${GSL_VERSION}.tar.gz
mkdir -p sources64
rm -rf sources64/gsl-*
tar xf $< --directory sources64
lib32/Gsl/lib/libgsl.a: sources32/gsl-${GSL_VERSION}
rm -rf lib32/Gsl
cd $< && ./configure --host=i686-w64-mingw32 --prefix=${ROOT_PATH}/lib32/Gsl --disable-shared --enable-static && make && make install
lib64/Gsl/lib/libgsl.a: sources64/gsl-${GSL_VERSION}
rm -rf lib64/Gsl
cd $< && ./configure --host=x86_64-w64-mingw32 --prefix=${ROOT_PATH}/lib64/Gsl --disable-shared --enable-static && make && make install
build-gsl: lib32/Gsl/lib/libgsl.a lib64/Gsl/lib/libgsl.a
clean-gsl-tar:
rm -f tarballs/gsl-${GSL_VERSION}.tar.gz
clean-gsl-src:
rm -rf sources32/gsl-${GSL_VERSION}
rm -rf sources64/gsl-${GSL_VERSION}
clean-libgsl:
rm -rf lib32/Gsl
rm -rf lib64/Gsl
clean-gsl-all: clean-gsl-src clean-gsl-tar clean-libgsl
#
# matIO
#
tarballs/matio-${MATIO_VERSION}.tar.gz:
mkdir -p tarballs
wget $(WGET_OPTIONS) -O $@ https://sourceforge.net/projects/matio/files/matio/${MATIO_VERSION}/$(notdir $@)/download
sources32/matio-${MATIO_VERSION}: tarballs/matio-${MATIO_VERSION}.tar.gz
mkdir -p sources32
rm -rf sources32/matio-*
tar xf $< --directory sources32
touch $@
sources64/matio-${MATIO_VERSION}: tarballs/matio-${MATIO_VERSION}.tar.gz
mkdir -p sources64
rm -rf sources64/matio-*
tar xf $< --directory sources64
touch $@
# The "ac_cv_va_copy=C99" argument is a workaround for https://github.com/tbeu/matio/issues/78
lib32/matIO/lib/libmatio.a: sources32/matio-${MATIO_VERSION} lib32/Zlib/lib/libz.a
rm -rf lib32/matIO
cd $< && ./configure --host=i686-w64-mingw32 --disable-shared --with-zlib=${ROOT_PATH}/lib32/Zlib --prefix=${ROOT_PATH}/lib32/matIO ac_cv_va_copy=C99 && make install
ln -sf ${ROOT_PATH}/lib32/Zlib/include/zconf.h ${ROOT_PATH}/lib32/matIO/include/zconf.h
ln -sf ${ROOT_PATH}/lib32/Zlib/include/zlib.h ${ROOT_PATH}/lib32/matIO/include/zlib.h
ln -sf ${ROOT_PATH}/lib32/Zlib/lib/libz.a ${ROOT_PATH}/lib32/matIO/lib/libz.a
lib64/matIO/lib/libmatio.a: sources64/matio-${MATIO_VERSION} lib64/Zlib/lib/libz.a
rm -rf lib64/matIO
cd $< && ./configure --host=x86_64-w64-mingw32 --disable-shared --with-zlib=${ROOT_PATH}/lib64/Zlib --prefix=${ROOT_PATH}/lib64/matIO ac_cv_va_copy=C99 && make install
ln -sf ${ROOT_PATH}/lib64/Zlib/include/zconf.h ${ROOT_PATH}/lib64/matIO/include/zconf.h
ln -sf ${ROOT_PATH}/lib64/Zlib/include/zlib.h ${ROOT_PATH}/lib64/matIO/include/zlib.h
ln -sf ${ROOT_PATH}/lib64/Zlib/lib/libz.a ${ROOT_PATH}/lib64/matIO/lib/libz.a
build-matio: build-zlib lib32/matIO/lib/libmatio.a lib64/matIO/lib/libmatio.a
clean-matio-tar:
rm -f tarballs/matio-${MATIO_VERSION}.tar.gz
clean-matio-src:
rm -rf sources32/matio-${MATIO_VERSION}
rm -rf sources64/matio-${MATIO_VERSION}
clean-libmatio:
rm -rf lib32/matIO
rm -rf lib64/matIO
clean-matio-all: clean-matio-src clean-matio-tar clean-libmatio
#
# Slicot
#
@ -330,49 +144,6 @@ clean-libslicot:
clean-slicot-all: clean-slicot-src clean-slicot-tar clean-libslicot
#
# Zlib
#
tarballs/zlib-${ZLIB_VERSION}.tar.xz:
mkdir -p tarballs
wget $(WGET_OPTIONS) -O $@ https://zlib.net/$(notdir $@)
sources32/zlib-${ZLIB_VERSION}: tarballs/zlib-${ZLIB_VERSION}.tar.xz
mkdir -p sources32
rm -rf sources32/zlib-*
tar xf $< --directory sources32
touch $@
sources64/zlib-${ZLIB_VERSION}: tarballs/zlib-${ZLIB_VERSION}.tar.xz
mkdir -p sources64
rm -rf sources64/zlib-*
tar xf $< --directory sources64
touch $@
lib32/Zlib/lib/libz.a: sources32/zlib-${ZLIB_VERSION}
rm -rf lib32/Zlib
cd $< && CC=i686-w64-mingw32-gcc ./configure --static --prefix=${ROOT_PATH}/lib32/Zlib && make install
lib64/Zlib/lib/libz.a: sources64/zlib-${ZLIB_VERSION}
rm -rf lib64/Zlib
cd $< && CC=x86_64-w64-mingw32-gcc ./configure --static --prefix=${ROOT_PATH}/lib64/Zlib && make install
build-zlib: lib32/Zlib/lib/libz.a lib64/Zlib/lib/libz.a
clean-zlib-tar:
rm -f tarballs/zlib-${ZLIB_VERSION}.tar.xz
clean-zlib-src:
rm -rf sources32/zlib-${ZLIB_VERSION}
rm -rf sources64/zlib-${ZLIB_VERSION}
clean-libzlib:
rm -rf lib32/Zlib
rm -rf lib64/Zlib
clean-zlib-all: clean-zlib-src clean-zlib-tar clean-libzlib
#
# Octave
#
@ -442,10 +213,24 @@ clean-matlab:
rm -rf matlab64
#
# Embedded MinGW (for use_dll)
# Stuff downloaded from MSYS2:
# - several build dependencies
# - the embedded MinGW compiler (for use_dll)
#
mingw: mingw32 mingw64
msys2: lib32-msys2 lib64-msys2 mingw32 mingw64
lib32-msys2: tarballs/mingw-w64-i686-boost-$(MINGW32_BOOST_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-gsl-$(MINGW32_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-openblas-$(MINGW32_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-matio-$(MINGW32_MATIO_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-zlib-$(MINGW32_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-hdf5-$(MINGW32_HDF5_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-szip-$(MINGW32_SZIP_VERSION)-any.pkg.tar.xz
rm -rf $@
mkdir $@
for f in $^; do tar xf $$f --directory $@ --strip-components 1; done
touch $@
lib64-msys2: tarballs/mingw-w64-x86_64-boost-$(MINGW64_BOOST_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-gsl-$(MINGW64_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-openblas-$(MINGW64_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-matio-$(MINGW64_MATIO_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-zlib-$(MINGW64_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-hdf5-$(MINGW64_HDF5_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-szip-$(MINGW64_SZIP_VERSION)-any.pkg.tar.xz
rm -rf $@
mkdir $@
for f in $^; do tar xf $$f --directory $@ --strip-components 1; done
touch $@
mingw32: tarballs/mingw-w64-i686-gcc-$(MINGW32_GCC_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-gmp-$(MINGW32_GMP_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-binutils-$(MINGW32_BINUTILS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-headers-git-$(MINGW32_HEADERS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-crt-git-$(MINGW32_CRT_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-winpthreads-git-$(MINGW32_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-libwinpthread-git-$(MINGW32_LIBWINPTHREAD_VERSION)-any.pkg.tar.xz
rm -rf $@
@ -463,7 +248,9 @@ tarballs/mingw-w64-i686-%-any.pkg.tar.xz:
tarballs/mingw-w64-x86_64-%-any.pkg.tar.xz:
wget $(WGET_OPTIONS) -O $@ http://repo.msys2.org/mingw/x86_64/$(notdir $@)
clean-mingw:
clean-msys2:
rm -rf lib32-msys2
rm -rf lib64-msys2
rm -rf mingw32
rm -rf mingw64
rm -f tarballs/mingw-w64-i686-*.tar.xz

View File

@ -1,69 +0,0 @@
--- OpenBLAS-0.3.6/Makefile.rule 2019-04-29 19:22:19.000000000 +0200
+++ OpenBLAS-0.3.6-w32/Makefile.rule 2019-06-13 11:02:50.665872965 +0200
@@ -15,7 +15,7 @@
# TARGET = PENRYN
# If you want to support multiple architecture in one binary
-# DYNAMIC_ARCH = 1
+DYNAMIC_ARCH = 1
# If you want the full list of x86_64 architectures supported in DYNAMIC_ARCH
# mode (including individual optimizied codes for PENRYN, DUNNINGTON, OPTERON,
@@ -24,10 +24,10 @@
# C compiler including binary type(32bit / 64bit). Default is gcc.
# Don't use Intel Compiler or PGI, it won't generate right codes as I expect.
-# CC = gcc
+CC = i686-w64-mingw32-gcc
# Fortran compiler. Default is g77.
-# FC = gfortran
+FC = i686-w64-mingw32-gfortran
# Even you can specify cross compiler. Meanwhile, please set HOSTCC.
@@ -45,7 +45,7 @@
# If you use the cross compiler, please set this host compiler.
-# HOSTCC = gcc
+HOSTCC = gcc
# If you need 32bit binary, define BINARY=32, otherwise define BINARY=64
# Please note that AVX is not available on 32-bit.
@@ -56,7 +56,7 @@
# specify it.
# For force setting for single threaded, specify USE_THREAD = 0
# For force setting for multi threaded, specify USE_THREAD = 1
-# USE_THREAD = 0
+USE_THREAD = 1
# If you're going to use this library with OpenMP, please comment it in.
# This flag is always set for POWER8. Don't set USE_OPENMP = 0 if you're targeting POWER8.
@@ -82,7 +82,7 @@
# value (eg. 32-256) if you expect your users to use that many threads. Due to the way
# some internal structures are allocated, using a large NUM_THREADS value has a RAM
# footprint penalty, even if users reduce the actual number of threads at runtime.
-# NUM_THREADS = 24
+NUM_THREADS = 2
# If you have enabled USE_OPENMP and your application would call
# OpenBLAS's calculation API from multiple threads, please comment this in.
@@ -95,7 +95,7 @@
# NO_STATIC = 1
# If you don't need to generate the shared library, please comment this in.
-# NO_SHARED = 1
+NO_SHARED = 1
# If you don't need the CBLAS interface, please comment this in.
# NO_CBLAS = 1
@@ -109,7 +109,7 @@
# NO_LAPACK = 1
# If you don't need LAPACKE (C Interface to LAPACK), please comment this in.
-# NO_LAPACKE = 1
+NO_LAPACKE = 1
# Build LAPACK Deprecated functions since LAPACK 3.6.0
BUILD_LAPACK_DEPRECATED = 1

View File

@ -1,77 +0,0 @@
--- OpenBLAS-0.3.6/Makefile.rule 2019-04-29 19:22:19.000000000 +0200
+++ OpenBLAS-0.3.6-w64/Makefile.rule 2019-06-13 11:04:44.433315864 +0200
@@ -15,7 +15,7 @@
# TARGET = PENRYN
# If you want to support multiple architecture in one binary
-# DYNAMIC_ARCH = 1
+DYNAMIC_ARCH = 1
# If you want the full list of x86_64 architectures supported in DYNAMIC_ARCH
# mode (including individual optimizied codes for PENRYN, DUNNINGTON, OPTERON,
@@ -24,10 +24,10 @@
# C compiler including binary type(32bit / 64bit). Default is gcc.
# Don't use Intel Compiler or PGI, it won't generate right codes as I expect.
-# CC = gcc
+CC = x86_64-w64-mingw32-gcc
# Fortran compiler. Default is g77.
-# FC = gfortran
+FC = x86_64-w64-mingw32-gfortran
# Even you can specify cross compiler. Meanwhile, please set HOSTCC.
@@ -45,7 +45,7 @@
# If you use the cross compiler, please set this host compiler.
-# HOSTCC = gcc
+HOSTCC = gcc
# If you need 32bit binary, define BINARY=32, otherwise define BINARY=64
# Please note that AVX is not available on 32-bit.
@@ -56,7 +56,7 @@
# specify it.
# For force setting for single threaded, specify USE_THREAD = 0
# For force setting for multi threaded, specify USE_THREAD = 1
-# USE_THREAD = 0
+USE_THREAD = 1
# If you're going to use this library with OpenMP, please comment it in.
# This flag is always set for POWER8. Don't set USE_OPENMP = 0 if you're targeting POWER8.
@@ -82,7 +82,7 @@
# value (eg. 32-256) if you expect your users to use that many threads. Due to the way
# some internal structures are allocated, using a large NUM_THREADS value has a RAM
# footprint penalty, even if users reduce the actual number of threads at runtime.
-# NUM_THREADS = 24
+NUM_THREADS = 2
# If you have enabled USE_OPENMP and your application would call
# OpenBLAS's calculation API from multiple threads, please comment this in.
@@ -95,7 +95,7 @@
# NO_STATIC = 1
# If you don't need to generate the shared library, please comment this in.
-# NO_SHARED = 1
+NO_SHARED = 1
# If you don't need the CBLAS interface, please comment this in.
# NO_CBLAS = 1
@@ -109,7 +109,7 @@
# NO_LAPACK = 1
# If you don't need LAPACKE (C Interface to LAPACK), please comment this in.
-# NO_LAPACKE = 1
+NO_LAPACKE = 1
# Build LAPACK Deprecated functions since LAPACK 3.6.0
BUILD_LAPACK_DEPRECATED = 1
@@ -242,3 +242,7 @@
#
# End of user configuration
#
+
+# Workaround for apparent MinGW bug with -march=skylake-avx512
+# See https://sourceforge.net/p/mingw-w64/bugs/681/
+NO_AVX512 = 1

View File

@ -1,9 +1,4 @@
BOOST_VERSION = 1_71_0
GSL_VERSION = 2.5
MATIO_VERSION = 1.5.17
OPENBLAS_VERSION = 0.3.6
SLICOT_VERSION = 5.0+20101122
ZLIB_VERSION = 1.2.11
X13AS_VERSION = 1.1_B39
OCTAVE_VERSION = 5.1.0
@ -13,10 +8,50 @@ OCTAVE_W64_BUILD =
MATLAB32_VERSION = 20181204
MATLAB64_VERSION = 20181204
## MinGW packages
### MSYS2 packages
# Determine the versions by:
# - first running: pacman -Sy
# - and then with appropriate queries using: pacman -Ss <regex>
# Dependencies can be determined using: pacman -Si <pkg>
# File lists can be determined using: pacman -Fl <pkg>
# The same information can be gathered from: https://packages.msys2.org/search
## Build dependencies
# pacman -Ss .*-boost$
MINGW32_BOOST_VERSION = 1.70.0-2
MINGW64_BOOST_VERSION = 1.70.0-2
# pacman -Ss .*-gsl$
MINGW32_GSL_VERSION = 2.6-1
MINGW64_GSL_VERSION = 2.6-1
# pacman -Ss .*-openblas$
MINGW32_OPENBLAS_VERSION = 0.3.7-1
MINGW64_OPENBLAS_VERSION = 0.3.7-1
# pacman -Ss .*-matio$
MINGW32_MATIO_VERSION = 1.5.14-1
MINGW64_MATIO_VERSION = 1.5.14-1
# Dependency of matio
# pacman -Ss .*-zlib$
MINGW32_ZLIB_VERSION = 1.2.11-7
MINGW64_ZLIB_VERSION = 1.2.11-7
# Dependency of matio
# pacman -Ss .*-hdf5$
# Can't yet update to 1.10 because of https://github.com/msys2/MINGW-packages/issues/5758
MINGW32_HDF5_VERSION = 1.8.21-2
MINGW64_HDF5_VERSION = 1.8.21-2
# Dependency of HDF5
# pacman -Ss .*-szip$
MINGW32_SZIP_VERSION = 2.1.1-2
MINGW64_SZIP_VERSION = 2.1.1-2
## MinGW packages for the embedded compiler
# pacman -Ss mingw-w64-.*-gcc$
MINGW32_GCC_VERSION = 9.1.0-2