changeset 3076:b39e8dc859f7

[MSVC] enable gmplib compilation - create clgfortran.exe wrapper (to make libtool happy) - make cc-msvc/clgcc/clg++ to ignore --export-all-symbols and --output-def
author Michael Goffioul <michael.goffioul@gmail.com>
date Fri, 21 Jun 2013 19:50:36 -0400
parents 21586f2d1fe7
children 9c56d108c141
files Makefile.in src/build-msvctools/Makefile src/build-msvctools/cc-msvc.cc src/gmp.mk
diffstat 4 files changed, 30 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.in	Fri Jun 21 15:39:22 2013 -0400
+++ b/Makefile.in	Fri Jun 21 19:50:36 2013 -0400
@@ -159,7 +159,7 @@
     MXE_RANLIB := ranlib
     MXE_CC := clgcc
     MXE_CXX := clg++
-    MXE_F77 := gfortran-msvc
+    MXE_F77 := clgfortran
     MXE_DLLTOOL := true
     MXE_NM := nm
     MXE_STRIP := true
@@ -173,6 +173,7 @@
     MXE_AR := ar
     MXE_RANLIB := ranlib
     MXE_CC := gcc
+    MXE_CCAS := gcc
     MXE_CXX := g++
     MXE_F77 := gfortran
     MXE_DLLTOOL := dlltool
--- a/src/build-msvctools/Makefile	Fri Jun 21 15:39:22 2013 -0400
+++ b/src/build-msvctools/Makefile	Fri Jun 21 19:50:36 2013 -0400
@@ -3,6 +3,7 @@
 	cc-msvc.exe \
 	clgcc.exe \
 	clg++.exe \
+	clgfortran.exe \
 	dirent.h \
 	dirent.lib \
 	getopt.h \
@@ -111,6 +112,9 @@
 gfortran-msvc.exe: gfortran-msvc.cc
 	cl -nologo -O2 -EHsc gfortran-msvc.cc
 
+clgfortran.exe: gfortran-msvc.exe
+	cp -a $< $@
+
 gfortran-msvc-gcc-patch.stamp:
 	(cd ../gcc-$(GCCVERSION)/ && patch -p1) < gcc.diff
 	(cd ../gcc-$(GCCVERSION)/ && \
@@ -162,6 +166,7 @@
 	$(INSTALL) clg++.exe $(DESTDIR)/bin/
 	$(INSTALL) lt-postproc $(DESTDIR)/bin/
 	$(INSTALL) gfortran-msvc.exe $(DESTDIR)/bin/
+	$(INSTALL) clgfortran.exe $(DESTDIR)/bin/
 	$(INSTALL) ranlib-msvc $(DESTDIR)/bin/
 	$(INSTALL) $(LIBRARY_PREFIX)gfortran-msvc$(LIBRARY_SUFFIX).dll $(DESTDIR)/bin/
 	$(INSTALL) -d $(DESTDIR)/include
--- a/src/build-msvctools/cc-msvc.cc	Fri Jun 21 15:39:22 2013 -0400
+++ b/src/build-msvctools/cc-msvc.cc	Fri Jun 21 19:50:36 2013 -0400
@@ -556,10 +556,20 @@
 		}
 		else if (arg == "-m386" || arg == "-m486" || arg == "-mpentium" ||
 			 arg == "-mpentiumpro" || arg == "-pedantic" || starts_with(arg, "-W") ||
-			 arg == "-fPIC" || arg == "-nostdlib")
+			 arg == "-fPIC" || arg == "-nostdlib" || arg == "--export-all-symbols")
 		{
 			// ignore
 		}
+                else if (arg == "--output-def")
+                {
+                        if (i < argc-1)
+                                ++i;
+                        else
+                        {
+				cerr << "ERROR: argument missing for " << arg << endl;
+				return 1;
+                        }
+                }
 		else if (arg == "-noembed")
 		{
 			mt_embed = false;
--- a/src/gmp.mk	Fri Jun 21 15:39:22 2013 -0400
+++ b/src/gmp.mk	Fri Jun 21 19:50:36 2013 -0400
@@ -10,6 +10,13 @@
 $(PKG)_URL_2    := ftp://ftp.cs.tu-berlin.de/pub/gnu/$(PKG)/$($(PKG)_FILE)
 $(PKG)_DEPS     :=
 
+ifeq ($(MXE_SYSTEM),msvc)
+    $(PKG)_CONFIGURE_OPTIONS := CC_FOR_BUILD='$(MXE_CC)' CCAS='gcc -c' ac_cv_func_memset='yes'
+    COMMA := ,
+else
+    $(PKG)_CONFIGURE_OPTIONS := CC_FOR_BUILD=gcc
+endif
+
 define $(PKG)_UPDATE
     $(WGET) -q -O- 'http://www.gmplib.org/' | \
     grep '<a href="' | \
@@ -19,12 +26,15 @@
 endef
 
 define $(PKG)_BUILD
-    cd '$(1)' && CC_FOR_BUILD=gcc ./configure \
+    $(if $(filter msvc,$(MXE_SYSTEM)), \
+        $(SED) -i -e '/^#ifdef _MSC_VER/$(COMMA)/^#endif/ {/^ *#define __GMP_EXTERN_INLINE .*/d}' '$(1)/gmp-h.in')
+    cd '$(1)' && ./configure \
         $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
+        $($(PKG)_CONFIGURE_OPTIONS) \
         --prefix='$(HOST_PREFIX)' \
         $(ENABLE_SHARED_OR_STATIC) \
         --enable-cxx \
-        --without-readline
+        --without-readline && $(CONFIGURE_POST_HOOK)
     $(MAKE) -C '$(1)' -j '$(JOBS)'
     $(MAKE) -C '$(1)' -j 1 install
 endef