summaryrefslogtreecommitdiff
path: root/etc/build-ms.sh
diff options
context:
space:
mode:
Diffstat (limited to 'etc/build-ms.sh')
-rwxr-xr-xetc/build-ms.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/etc/build-ms.sh b/etc/build-ms.sh
new file mode 100755
index 0000000..4a70b35
--- /dev/null
+++ b/etc/build-ms.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# Build rabbitmq-c using Microsoft's C compiler
+
+set -e
+
+# Locate the necessary lib and include directories
+
+drive=$(echo "$SYSTEMDRIVE" | sed 's|^\([A-Za-z]\):$|/\1|')
+
+for vsvers in 10.0 9.0 8 ; do
+ vsdir="$drive/Program Files/Microsoft Visual Studio $vsvers"
+ [ -x "$vsdir/VC/bin/cl.exe" ] && break
+
+ vsdir="$drive/Program Files (x86)/Microsoft Visual Studio $vsvers"
+ [ -x "$vsdir/VC/bin/cl.exe" ] && break
+
+ vsdir=
+done
+
+if [ -z "$vsdir" ] ; then
+ echo "Couldn't find suitable Visual Studio installation"
+ exit 1
+fi
+
+echo "Using Visual Studio install at $vsdir"
+
+for sdkpath in "Microsoft SDKs/Windows/"{v7.0A,v6.0A} "Microsoft Visual Studio 8/VC/PlatformSDK" ; do
+ sdkdir="$drive/Program Files/$sdkpath"
+ [ -d "$sdkdir/lib" -a -d "$sdkdir/include" ] && break
+
+ sdkdir="$drive/Program Files (x86)/$sdkpath"
+ [ -d "$sdkdir/lib" -a -d "$sdkdir/include" ] && break
+
+ sdkdir=
+done
+
+if [ -z "$sdkdir" ] ; then
+ echo "Couldn't find suitable Windows SDK installation"
+ exit 1
+fi
+
+echo "Using Windows SDK install at $sdkdir"
+
+PATH="$PATH:$vsdir/VC/bin:$vsdir/Common7/IDE"
+LIB="$vsdir/VC/lib:$sdkdir/lib"
+INCLUDE="$vsdir/VC/include:$sdkdir/include"
+export PATH LIB INCLUDE
+
+# Do the build
+set -x
+autoreconf -i
+./configure CC=cl.exe LD=link.exe CFLAGS='-nologo'
+sed -i -e 's/^fix_srcfile_path=.*$/fix_srcfile_path=""/;s/^deplibs_check_method=.*$/deplibs_check_method=pass_all/;/^archive_cmds=/s/-link -dll/& -implib:\\$libname.\\$libext/' libtool
+make
+
+# Copy the results of the build into one place, as "make install"
+# isn't too useful here.
+mkdir -p build/lib build/include build/bin
+cp -a librabbitmq/.libs/*.dll examples/.libs/*.exe build/bin
+cp -a msinttypes/*.h librabbitmq/amqp.h librabbitmq/amqp_framing.h build/include
+cp -a librabbitmq/*.exp librabbitmq/*.lib build/lib