chiark / gitweb /
add mingw64 script
authorstevenj <stevenj@alum.mit.edu>
Fri, 20 Jul 2012 18:19:42 +0000 (14:19 -0400)
committerstevenj <stevenj@alum.mit.edu>
Fri, 20 Jul 2012 18:19:42 +0000 (14:19 -0400)
Ignore-this: 69f407cb300bf42be51d72a4a1f96f53

darcs-hash:20120720181942-c8de0-4e8a55a7ffc4b46422ba190dc10f993562aa11de.gz

BUILD-MINGW64.sh [new file with mode: 0755]

diff --git a/BUILD-MINGW64.sh b/BUILD-MINGW64.sh
new file mode 100755 (executable)
index 0000000..c0ffc31
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+set -e
+
+rm -rf mingw64
+
+./configure --prefix=`pwd`/mingw64 --host=amd64-mingw32msvc --enable-shared --disable-static --without-matlab --without-octave --without-python --without-guile --without-threadlocal && make -j4 && make install
+
+cd mingw64/bin
+for dll in *.dll; do
+    def=`basename $dll .dll`.def
+    echo "LIBRARY $dll" > $def
+    echo EXPORTS >> $def
+    amd64-mingw32msvc-nm $dll | grep ' T _' | sed 's/.* T _//' | egrep 'nlopt|nlo_' >> $def
+done
+cd ../..
+
+perl -pi -e 's,^ * #define NLOPT_DLL,*/\n#define NLOPT_DLL\n/*,' mingw64/include/nlopt.h
+
+cat > README-WINDOWS <<EOF
+This .zip archive contains DLL libraries and the associated header (.h)
+and module-definition (.def) files of NLopt compiled for Win64.
+
+In order to link to this .dll files from Visual C++, you need to
+create a .lib "import libraries" for it, and can do so with the "lib"
+command that comes with VC++.  In particular, run:
+     lib /def:libnlopt-0.def
+
+To compile the Matlab plugin, use the Matlab "mex" compiler on the file
+nlopt_optimize.c (being sure to link to the libnlopt DLL) in the matlab
+subdirectory.
+
+To build the Python plugin (assuming that you have Python and Numpy
+installed), do:
+   python setup.py build_ext --inplace
+
+They were compiled by the GNU C compiler for MinGW, specifically:
+EOF
+amd64-mingw32msvc-gcc --version |head -1 >> README-WINDOWS
+
+# grep -v "nlopt-util.h" octave/nlopt_minimize_constrained-mex.c > mingw64/nlopt_minimize_constrained.c
+
+nlopt_vers=`grep PACKAGE_VERSION config.h |cut -d" " -f3 |tr -d \"`
+
+mkdir mingw64/matlab
+cd octave
+cp `grep 'MFILES =' Makefile.am | cut -d= -f2` ../mingw64/matlab
+cp `grep 'm_DATA =' Makefile.am | cut -d\) -f2` ../mingw64/matlab
+cp nlopt_optimize-mex.c ../mingw64/matlab/nlopt_optimize.c
+cd ..
+
+mkdir mingw64/python
+cp swig/nlopt.py swig/nlopt-python.cpp mingw64/python
+cat > mingw64/python/setup.py <<EOF
+from distutils.core import setup, Extension
+nlopt_module = Extension('_nlopt',
+                           sources=['nlopt-python.cpp'],
+                           libraries=['libnlopt-0'],
+                           )
+import numpy
+setup (name = 'nlopt',
+       version = '${nlopt_vers}',
+       author      = "Steven G. Johnson",
+       description = """NLopt nonlinear-optimization library""",
+       ext_modules = [nlopt_module],
+       py_modules = ["nlopt"],
+       include_dirs = ['.', numpy.get_include()],
+       )
+EOF
+
+nlopt_vers=`grep PACKAGE_VERSION config.h |cut -d" " -f3 |tr -d \"`
+zip=nlopt-${nlopt_vers}-dll64.zip
+rm -f $zip
+zip -vj $zip mingw64/bin/*.dll mingw64/bin/*.exe
+zip -vjgl $zip mingw64/bin/*.def mingw64/include/* mingw64/python/* README COPYING COPYRIGHT NEWS README-WINDOWS
+
+cd mingw64
+zip -vgl ../$zip matlab/*
+cd ..