summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Hay <steve.m.hay@googlemail.com>2013-11-26 09:06:30 +0000
committerSteve Hay <steve.m.hay@googlemail.com>2013-11-26 17:57:54 +0000
commita2b0867187c3f1dc1866fb63cfd59da300fb4dd5 (patch)
treefad4c1b14a48a1d934a3d8d52b07682cdf648644
parenta0ccbf74dd8e08dd5f5574e95fa73f9d2332896a (diff)
downloadperl-a2b0867187c3f1dc1866fb63cfd59da300fb4dd5.tar.gz
Extend Intel C++ compiler support (a48cc4c427) to dmake builds
-rw-r--r--README.win3210
-rw-r--r--pod/perldelta.pod5
-rw-r--r--win32/makefile.mk18
3 files changed, 26 insertions, 7 deletions
diff --git a/README.win32 b/README.win32
index 37a7177b75..fda4487d4b 100644
--- a/README.win32
+++ b/README.win32
@@ -40,7 +40,7 @@ system). Currently, this port is capable of using one of the
following compilers on the Intel x86 architecture:
Microsoft Visual C++ version 6.0 or later
- Intel C++ Compiler (experimental, nmake only)
+ Intel C++ Compiler (experimental)
Gcc by mingw.org gcc version 3.2 or later
Gcc by mingw-w64.sf.net gcc version 4.4.3 or later
@@ -315,10 +315,10 @@ You also need dmake. See L</"Make"> above on how to get it.
=item Intel C++ Compiler
-Experimental support for using Intel C++ Compiler has been added. You must use
-nmake, not dmake. Edit win32/Makefile and pick the correct CCTYPE for the
-Visual C that Intel C was installed into. Also uncomment __ICC to enable Intel
-C on Visual C support. To set up the build enviroment, from the Start Menu run
+Experimental support for using Intel C++ Compiler has been added. Edit
+win32/Makefile and pick the correct CCTYPE for the Visual C that Intel C was
+installed into. Also uncomment __ICC to enable Intel C on Visual C support.
+To set up the build enviroment, from the Start Menu run
IA-32 Visual Studio 20__ mode or Intel 64 Visual Studio 20__ mode as
appropriate. Then run nmake as usually in that prompt box.
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index f80bd5faa8..a6032661d2 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -305,9 +305,10 @@ L</Modules and Pragmata> section.
=over 4
-=item XXX-some-platform
+=item Windows
-XXX
+Experimental support for building with Intel C++ Compiler has been extended to
+cover the dmake makefile (win32/makefile.mk) as well.
=back
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 691b3caa2c..00d140656b 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -140,6 +140,11 @@ USE_LARGE_FILES *= define
CCTYPE *= GCC
#
+# If you are using Intel C++ Compiler uncomment this
+#
+#__ICC *= define
+
+#
# uncomment next line if you want debug version of perl (big,slow)
# If not enabled, we automatically try to use maximum optimization
# with all compilers that are known to have a working optimizer.
@@ -487,8 +492,13 @@ PREMSVC80 = define
PREMSVC80 = undef
.ENDIF
+.IF "$(__ICC)" != "define"
CC = cl
LINK32 = link
+.ELSE
+CC = icl
+LINK32 = xilink
+.ENDIF
LIB32 = $(LINK32) -lib
RSC = rc
@@ -558,6 +568,14 @@ LIBBASEFILES = \
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
version.lib odbc32.lib odbccp32.lib comctl32.lib
+# Avoid __intel_new_proc_init link error for libircmt.
+# libmmd is /MD equivelent, other variants exist.
+# libmmd is Intel C's math addon funcs to MS CRT, contains long doubles, C99,
+# and optimized C89 funcs
+.IF "$(__ICC)" == "define"
+LIBBASEFILES += libircmt.lib libmmd.lib
+.ENDIF
+
# The 64 bit Windows Server 2003 SP1 SDK compilers link against MSVCRT.dll, which
# doesn't include the buffer overrun verification code used by the /GS switch.
# Since the code links against libraries that are compiled with /GS, this