#!/bin/sh
# normal tests
-for d in __build{,_asan,_ubsan,_lsan,_clang,_clang_msan,_m32,_glibcxx_debug} ; do
+# - exclude _clang_msan as it requires libc++ built with MSan
+for d in __build{,_asan,_ubsan,_lsan,_clang,_m32,_glibcxx_debug} ; do
./${d}.sh \
&& cd ${d} \
&& make check VERBOSE=1 \
|| { cd .. ; echo "*** skeleton failed ***"; exit 1; }
# mingw
+# - exclude _mingw_slibtool, as it fails to link EXEs due to symbol collisions
./__build_mingw.sh \
&& cd __build_mingw \
&& make wtests \
mkdir $builddir
cd $builddir
-../configure LDFLAGS="-static-libstdc++ -static-libgcc" \
+# '-static' tells libtool not to build shared libraries (DLLs)
+# (they would be of no use anyway because libtool ignores '-static-libstdc++
+# -static-libgcc' options and produces non-portable DLLs)
+../configure LDFLAGS="-static -static-libstdc++ -static-libgcc" \
--enable-debug \
--enable-libs \
--host i686-w64-mingw32 \
- && make -j$(nproc) LIBTOOL="dlibtool"
+ && make -j$(nproc)
cd ..
--- /dev/null
+#!/bin/sh
+
+builddir=__build_mingw_slibtool
+rm -rf $builddir
+mkdir $builddir
+
+cd $builddir
+# slibtool fails to build final EXEs because of symbol collisions:
+# libre2c is statically linked with libgcc, and slibtool passes -lre2c
+# before some object file that also contains definitions from libgcc
+#
+# however, slibtool manages to correctly build self-contained libre2c.dll
+# (unlike libtool, which ignores '-static-libstdc++ -static-libgcc' and
+# produces non-portable DLL)
+../configure LDFLAGS="-static-libstdc++ -static-libgcc" \
+ --enable-debug \
+ --enable-libs \
+ --host i686-w64-mingw32 \
+ && make -j$(nproc) LIBTOOL="slibtool"
+cd ..