From b8216fe2fe1041de91147fbeb3321bd63f53aa20 Mon Sep 17 00:00:00 2001 From: rlar Date: Tue, 15 Dec 2015 20:32:09 +0100 Subject: [PATCH] cross-compile-shared.sh, a script to compile the mingw windows dll on gnu/linux --- cross-compile-shared.sh | 57 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 cross-compile-shared.sh diff --git a/cross-compile-shared.sh b/cross-compile-shared.sh new file mode 100644 index 000000000..724b79d8f --- /dev/null +++ b/cross-compile-shared.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# This script can be used to cross compile the ngspice shared library +# for windows on a linux machine. +# The result is a zip file, +# which is intended to be unziped to c:\ +# +# You can invoke this script with no argument, +# whereupon it will compile a 32 bit windows executable +# or with argument "64" +# to compile a 64 bit windows executable +# +# On debian gnu/linux you will need package `mingw-w64' +# +# (compile "time ./cross-compile-shared.sh") +# (compile "time ./cross-compile-shared.sh 64") + +set -e + +if test "$1" = "64"; then + release="release-mingw-64" + dstzip="ngshared-mingw-64.zip" + host="x86_64-w64-mingw32" + dst="C:/Spice64" +else + release="release-mingw-32" + dstzip="ngshared-mingw-32.zip" + host="i686-w64-mingw32" + dst="C:/Spice" +fi + +./autogen.sh + +rm -rf "./$release" +mkdir -p "./$release" + +( + # Hack around a problem of autoconf when cross compiling. + # This will force "configure" to believe we have a proper "malloc" + export ac_cv_func_malloc_0_nonnull=yes + export ac_cv_func_realloc_0_nonnull=yes + + cd "./$release" && \ + ../configure \ + --build=$(../config.guess) \ + --host="$host" \ + --prefix="$dst" \ + --exec-prefix="$dst" \ + --with-ngshared --enable-xspice --enable-cider --disable-debug +) + +make -C "./$release" -k -j6 +make -C "./$release" -k -j6 DESTDIR="$(pwd)/$release/" install + +( cd "./$release/C:/" && zip -r - . ) > "./$release/$dstzip" + +echo "unzip this ./$release/$dstzip to the destination directory c:\\"