]> wimlib.net Git - wimlib/blobdiff - tools/test-examples
examples: C++ and Windows compatibility
[wimlib] / tools / test-examples
diff --git a/tools/test-examples b/tools/test-examples
new file mode 100755 (executable)
index 0000000..8e4ac66
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# Try building the example programs: in 32-bit and 64-bit mode, in C and C++
+# mode, and for Linux and for Windows.  Also run the Linux versions to make sure
+# they work.
+#
+
+set -eu
+
+cd examples
+make clean
+
+COMMON_FLAGS="-Wall -Wextra -Werror -Wundef -Wno-unused-parameter -Wvla"
+COMMON_CFLAGS="$COMMON_FLAGS -std=gnu99 -Wdeclaration-after-statement -Wstrict-prototypes"
+COMMON_CXXFLAGS="$COMMON_FLAGS"
+
+TEST_WIM="$HOME/data/test.wim"
+TESTDATA="$HOME/data/testdata"
+
+tmpdir="$(mktemp -d)"
+tmpfile="$(mktemp)"
+tmpfile2="$(mktemp)"
+
+trap "rm -rf \"$tmpdir\" \"$tmpfile\" \"$tmpfile2\"" EXIT
+
+do_test() {
+       rm -rf "$tmpdir"
+
+       ./applywim "$TEST_WIM" "$tmpdir"
+       ./capturewim "$tmpdir" "$tmpfile"
+       ./updatewim "$tmpfile" "examples" .
+
+       ./compressfile "$TESTDATA" "$tmpfile"
+       ./decompressfile "$tmpfile" "$tmpfile2"
+       cmp "$tmpfile2" "$TESTDATA"
+
+       ./compressfile "$TESTDATA" "$tmpfile" XPRESS 16384
+       ./decompressfile "$tmpfile" "$tmpfile2"
+       cmp "$tmpfile2" "$TESTDATA"
+}
+
+make CC=gcc CFLAGS="$COMMON_CFLAGS"
+do_test
+make clean
+make CC=g++ CFLAGS="$COMMON_CXXFLAGS"
+do_test
+make clean
+
+make CC=i686-w64-mingw32-gcc CFLAGS="$COMMON_CFLAGS -I../include -municode" LDLIBS="-lwim-15" LDFLAGS="-L/j/wimlib"
+make clean
+make CC=i686-w64-mingw32-g++ CFLAGS="$COMMON_CXXFLAGS -I../include -municode" LDLIBS="-lwim-15" LDFLAGS="-L/j/wimlib"
+make clean
+
+make CC=x86_64-w64-mingw32-gcc CFLAGS="$COMMON_CFLAGS -I../include -municode" LDLIBS="-lwim-15" LDFLAGS="-L/j/x64"
+make clean
+make CC=x86_64-w64-mingw32-g++ CFLAGS="$COMMON_CXXFLAGS -I../include -municode" LDLIBS="-lwim-15" LDFLAGS="-L/j/x64"
+make clean