Subject: Re[2]: bug#30127: ICC: 'entry point must be defined' error for shared builds on Windows

From: [email-masked]
Date: Sun, 21 Jan 2018 16:10:39 +0200

--- Оригінальне повідомлення ---
Від кого: "Mathieu Lirzin" <[email-masked]>
Дата: 18 січня 2018, 00:57:33

> Indeed, The great news is that support for ‘icl’ has already been added
> in Automake 1.15.1 [1].  :-)

Thought I checked Automake master before filling report. In any case thank you for a good news.

Though there is lot of code in Automake (and Autotools in general), not covered by commit (http://git.savannah.gnu.org/cgit/automake.git/commit/?id=c40e27e1c2a60f58e72e65d73d808f782d55494a). At least all occurrences of 'cl' and 'cl.exe'should checked and fixed to match 'icl' and 'icl.exe' conditions too. But this, obviously, is out if scope of current issue.

> Could you confirm it works correctly with Automake 1.15.1?

Yes, me used that patch for GMP, MPIR, MPFR and libiconv builds using Windows ICC and it works fine.

In case you're interested, there is a patch to 'lib/ar-lib', which I use for libiconv builds using Windows ICC:
===============================================================
diff --git a/build-aux/ar-lib b/build-aux/ar-lib
index 463b9ec..3cfddbc 100644
--- a/build-aux/ar-lib
+++ b/build-aux/ar-lib
@@ -127,8 +127,10 @@ do
   fi
   case $1 in
     -lib | -LIB \
+    | -xilib | -XILIB \
     | -ltcg | -LTCG \
     | -machine* | -MACHINE* \
+    | -nologo | -NOLOGO \
     | -subsystem* | -SUBSYSTEM* \
     | -verbose | -VERBOSE \
     | -wx* | -WX* )
===============================================================
since ICC linker 'xilink' and librarian 'xilib' are just a wrappers to MSVC 'link' and librarian 'lib' respectively, and ' -nologo ' use reduces noise in stderr.

CC: Jonathan L Peyton,
as Author of patch for 'compile', mentioned above. In case he'll be interested to make a review aor join this discussion.

Odd, that current 'ar-lib' implementation covers only a part of MSVC 'lib' flags:
===============================================================
c:\>lib /?
Microsoft (R) Library Manager Version 14.12.25830.2
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: LIB [options] [files]

   options:

      /DEF[:filename]
      /ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}
      /EXPORT:symbol
      /EXTRACT:membername
      /INCLUDE:symbol
      /LIBPATH:dir
      /LIST[:filename]
      /LTCG
      /MACHINE:{ARM|ARM64|EBC|X64|X86}
      /NAME:filename
      /NODEFAULTLIB[:library]
      /NOLOGO
      /OUT:filename
      /REMOVE:membername
      /SUBSYSTEM:{BOOT_APPLICATION|CONSOLE|EFI_APPLICATION|
                  EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|
                  NATIVE|POSIX|WINDOWS|WINDOWSCE}[,#[.##]]
      /VERBOSE
      /WX[:NO]
===============================================================

Wondering, what was a reason for this.

Best,

Alexander