From f94d3d671ca01ef22d0f61f368f901fa96a9c5db Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Tue, 24 Feb 2015 19:42:26 -0600 Subject: [PATCH] update windows binary build script This puts the 32 and 64-bit binaries in the same zip file, adds debug files that are compatible with Visual Studio/windbg, and updates for the new configure options. --- dist-win.sh | 88 ++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/dist-win.sh b/dist-win.sh index a3f008a..e45101a 100755 --- a/dist-win.sh +++ b/dist-win.sh @@ -1,56 +1,54 @@ -#!/bin/sh +#!/bin/bash set -e set -x -# This script generates Windows binary distribution packages with Visual -# Studio-compatible header and library files. - -# Visual Studio 2013 Community Edition and the mingw64 32-bit and 64-bit cross -# compilers packaged with Cygwin are assumed to be installed. - -ARCH=$1 -if [ x$ARCH = x ]; then - ARCH=X86 -fi -echo Building for $ARCH - -if [ $ARCH=X86 ]; then - HOST=i686-w64-mingw32 -else - HOST=x86_64-w64-mingw32 -fi - export PATH=/cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 12.0/VC/bin:$PATH VERSION=`cat VERSION` -DIST=libressl-$VERSION-$ARCH - -CC=$HOST-gcc \ -CFLAGS="-Wl,--nxcompat -fstack-protector" \ -LDFLAGS="-lssp -Wl,--dynamicbase,--export-all-symbols" \ -./configure --prefix=/ --host=$HOST --enable-libtls - -make clean -make -j 4 install DESTDIR=`pwd`/tmp +DIST=libressl-$VERSION rm -fr $DIST -mkdir $DIST +mkdir -p $DIST -cp -a tmp/lib $DIST -cp -a tmp/include $DIST -# massage the headers to remove things cl.exe cannot understand -sed -i -e 'N;/\n.*__non/s/"\? *\n/ /;P;D' \ - $DIST/include/openssl/*.h $DIST/include/*.h -sed -i -e 'N;/\n.*__attr/s/"\? *\n/ /;P;D' \ - $DIST/include/openssl/*.h $DIST/include/*.h -sed -i -e "s/__attr.*;/;/" \ - -e "s/sys\/time.h/winsock2.h/" \ - $DIST/include/openssl/*.h $DIST/include/*.h -cp tmp/bin/* $DIST/lib +for ARCH in X86 X64; do + echo Building for $ARCH -for i in libcrypto libssl libtls; do - echo EXPORTS > $i.def - mv $DIST/lib/$i*.dll $DIST/lib/$i.dll - dumpbin.exe /exports $DIST/lib/$i.dll | awk '{print $4}' | awk 'NF' |tail -n +9 >> $i.def - lib.exe /MACHINE:$ARCH /def:$i.def /out:$DIST/lib/$i.lib + if [ $ARCH=X86 ]; then + HOST=i686-w64-mingw32 + else + HOST=x86_64-w64-mingw32 + fi + + CC=$HOST-gcc ./configure --host=$HOST \ + --enable-libtls --disable-shared + make clean + PATH=$PATH:/usr/$HOST/sys-root/mingw/bin \ + make -j 4 check + make -j 4 install DESTDIR=`pwd`/stage-$ARCH + + mkdir -p $DIST/$ARCH + #cp -a stage-$ARCH/usr/local/lib/* $DIST/$ARCH + if [ ! -e $DIST/include ]; then + cp -a stage-$ARCH/usr/local/include $DIST + sed -i -e 'N;/\n.*__non/s/"\? *\n/ /;P;D' \ + $DIST/include/openssl/*.h $DIST/include/*.h + sed -i -e 'N;/\n.*__attr/s/"\? *\n/ /;P;D' \ + $DIST/include/openssl/*.h $DIST/include/*.h + sed -i -e "s/__attr.*;/;/" \ + -e "s/sys\/time.h/winsock2.h/" \ + $DIST/include/openssl/*.h $DIST/include/*.h + fi + + cp stage-$ARCH/usr/local/bin/* $DIST/$ARCH + #cp /usr/$HOST/sys-root/mingw/bin/libssp* $DIST/$ARCH + + for i in libcrypto libssl libtls; do + DLL=$(basename `ls -1 $DIST/$ARCH/$i*.dll`|cut -d. -f1) + echo EXPORTS > $DLL.def + dumpbin /exports $DIST/$ARCH/$DLL.dll | \ + awk '{print $4}' | awk 'NF' |tail -n +9 >> $DLL.def + lib /MACHINE:$ARCH /def:$DLL.def /out:$DIST/$ARCH/$DLL.lib + cv2pdb $DIST/$ARCH/$DLL.dll + done done + zip -r $DIST.zip $DIST