This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Extend Intel C++ compiler support (a48cc4c427) to dmake builds
authorSteve Hay <steve.m.hay@googlemail.com>
Tue, 26 Nov 2013 09:06:30 +0000 (09:06 +0000)
committerSteve Hay <steve.m.hay@googlemail.com>
Tue, 26 Nov 2013 17:57:54 +0000 (17:57 +0000)
README.win32
pod/perldelta.pod
win32/makefile.mk

index 37a7177..fda4487 100644 (file)
@@ -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.
 
index f80bd5f..a603266 100644 (file)
@@ -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
 
index 691b3ca..00d1406 100644 (file)
@@ -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