following compilers on the Intel x86 architecture:
Microsoft Visual C++ version 6.0 or later
+ Intel C++ Compiler (experimental, nmake only)
Gcc by mingw.org gcc version 3.2 or later
Gcc by mingw-w64.sf.net gcc version 4.4.3 or later
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
+IA-32 Visual Studio 20__ mode or Intel 64 Visual Studio 20__ mode as
+appropriate. Then run nmake as usually in that prompt box.
+
+Only Intel C++ Compiler v12.1 has been tested. Other versions probably will
+work.
+
=back
=head2 Building
try_strftime("Wed Feb 28 00:00:00 1996 059", 0,0,0, 28,1,96);
SKIP: {
skip("VC++ 8 and Vista's CRTs regard 60 seconds as an invalid parameter", 1)
- if ($Is_W32 and (($Config{cc} eq 'cl' and
- $Config{ccversion} =~ /^(\d+)/ and $1 >= 14) or
- (Win32::GetOSVersion())[1] >= 6));
+ if ($Is_W32
+ and (($Config{cc} eq 'cl' and
+ $Config{ccversion} =~ /^(\d+)/ and $1 >= 14)
+ or ($Config{cc} eq 'icl' and
+ `cl --version 2>&1` =~ /^.*Version\s+([\d.]+)/ and $1 >= 14)
+ or (Win32::GetOSVersion())[1] >= 6));
try_strftime("Thu Feb 29 00:00:60 1996 060", 60,0,-24, 30,1,96);
}
two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which
will hopefully be resolved soon.
+Experimental support for building with Intel C++ Compiler has been added. Only
+the nmake makefile (win32/Makefile) can be used. A "nmake test" will not pass
+at this time due to "cpan/CGI/t/url.t".
+
=item WinCE
Perl can now be built in one shot with no user intervention on WinCE by running
# Visual C++ 2013 Express Edition (aka Visual C++ 12.x) (free version)
#CCTYPE = MSVC120FREE
+#
+# 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
# Programs to compile, build .lib files and link
#
+!IF "$(__ICC)" != "define"
CC = cl
LINK32 = link
+!ELSE
+CC = icl
+LINK32 = xilink
+!ENDIF
LIB32 = $(LINK32) -lib
RSC = rc
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 = $(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
if (exists $opt{cc}) {
# cl version detection borrowed from Test::Smoke's configsmoke.pl
- if ($opt{cc} =~ /\bcl/) { #MSVC can come as clarm.exe
+ if ($opt{cc} =~ /\b(?:cl|icl)/) { #MSVC can come as clarm.exe, icl=Intel C
my $output = `$opt{cc} --version 2>&1`;
$opt{ccversion} = $output =~ /^.*Version\s+([\d.]+)/ ? $1 : '?';
}
$opt{incpath} = mungepath($opt{incpath}) if exists $opt{incpath};
my($int64, $int64f);
-if ($opt{cc} =~ /\bcl/) {
+if ($opt{cc} =~ /\b(?:cl|icl)/) {
$int64 = '__int64';
$int64f = 'I64';
}
$opt{ar} ='lib';
}
}
+#find out which MSVC this ICC is using
+elsif ($opt{cc} =~ /\bicl/) {
+ my $output = `cl --version 2>&1`;
+ my $num_ver = $output =~ /^.*Version\s+([\d.]+)/ ? $1 : '?';
+ if($num_ver =~ /^(\d+)/ && $1 >= 14) {
+ $opt{sGMTIME_max} = 32535291599;
+ $opt{sLOCALTIME_max} = 32535244799;
+ }
+ $opt{ar} ='xilib';
+}
if ($opt{useithreads} eq 'define' && $opt{ccflags} =~ /-DPERL_IMPLICIT_SYS\b/) {
$opt{d_pseudofork} = 'define';