libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: flang compiler and wrappers


From: Shterenlikht, Anton
Subject: Re: flang compiler and wrappers
Date: Wed, 3 Jul 2024 13:40:11 +0000

Hello Ileana

It seems your original patch is good,
provided I add 

autoreconf -fiv -Wall

or similar.

My problem was in building netcdf.
However, on closer inspection, I noticed that
the patched libtool was not picked up, for some reason:


   40 # Which release of libtool.m4 was used?
   41 macro_version=2.4.7
   42 macro_revision=2.4.7


However, adding the "autoreconf" step seems to have fixed that:


   39 # Which release of libtool.m4 was used?
   40 macro_version=2.5.0.21-cc511
   41 macro_revision=2.5.0.21


Many thanks

Anton



> On 29 Jun 2024, at 12:46, Ileana Dumitrescu <ileanadumitrescu95@gmail.com> 
> wrote:
> 
> On 28/06/2024 08:56, Shterenlikht, Anton wrote:
>>> On 27 Jun 2024, at 17:36, Ileana Dumitrescu <ileanadumitrescu95@gmail.com> 
>>> wrote:
>>> 
>>> On 26/06/2024 10:21, Shterenlikht, Anton wrote:
>>>> Please help understand and fix this problem:
>>>> libtool: link: ftn -shared   <skip files>  -soname libxxx.so.0 -o 
>>>> .libs/libxxx.so.0.0.0
>>>> clang-16: error: unknown argument: '-soname'
>>>> which comes from my compiler wrapper not recognised.
>>> 
>>> Sorry for missing your earlier response. To set 'wl' for
>>> flang, armflang, flang-new, and ftn, the following patch
>>> should work:
>>> 
>>> --- a/m4/libtool.m4
>>> +++ b/m4/libtool.m4
>>> @@@ -4805,7 -4805,7 +4805,7 @@@ m4_if([$1], [CXX],
>>>        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
>>>        _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>>>          ;;
>>> --      *flang)
>>> ++      *flang* | ftn*)
>>>          # Flang compiler.
>>>        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>>>        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
>>> 
>>> Could you test this again in your environment?
>> That's what I tried before, but it does not help.
>> If I clone with: git clone https://git.savannah.gnu.org/git/libtool.git
>> I get different line numbers:
>> % git diff
>> diff --git a/m4/libtool.m4 b/m4/libtool.m4
>> index bbf2d21f..8ec0be58 100644
>> --- a/m4/libtool.m4
>> +++ b/m4/libtool.m4
>> @@ -4706,7 +4706,7 @@ m4_if([$1], [CXX], [
>>         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
>>         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>>          ;;
>> -      *flang)
>> +      *flang* | ftn)
>>          # Flang compiler.
>>         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>>         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
>> Am I on the right branch?
> 
> I usually am working off of development instead of master.
> 
>> With that patch I get in share/aclocal/libtool.m4
>> 4701     linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
>> 4702       case $cc_basename in
>> 4703       # old Intel for x86_64, which still supported -KPIC.
>> 4704       ecc*)
>> 4705         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>> 4706         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
>> 4707         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>> 4708         ;;
>> 4709       *flang* | ftn)
>> 4710         # Flang compiler.
>> 4711         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>> 4712         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
>> 4713         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>> 4714         ;;
>> However, this does not help.
>> I still get in my project libtool:
>> # A language specific compiler.
>> CC="ftn"
>> # Is the compiler the GNU compiler?
>> with_gcc=no
>> # Compiler flag to turn off builtin functions.
>> no_builtin_flag=""
>> # Additional compiler flags for building library objects.
>> pic_flag=""
>> # How to pass a linker flag through the compiler.
>> wl=""
>> I wonder if flang/ftn is applied in the right place in m4/libtool.m4.
>> Or maybe has to be applied in several places.
> 
> I also think it may need to be applied multiple places, but I am not
> confident on where to put it.
> 
>> Other compilers appear multiple times, e.g. nagfor:
>> % grep -nC1 icc m4/libtool.m4
>> 4714-        ;;
>> 4715:      # icc used to be incompatible with GCC.
>> 4716-      # ICC 10 doesn't accept -KPIC any more.
>> 4717:      icc* | ifort*)
>> 4718- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>> --
>> 5217-   tmp_addflag=' $pic_flag -Mnomain' ;;
>> 5218: ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
>> 5219-   tmp_addflag=' -i_dynamic' ;;
>> ashterenli@NB-068 libtool % grep -nC1 nagfor m4/libtool.m4
>> 1117-  case $cc_basename in
>> 1118:     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
>> 1119-     *) _lt_dar_can_shared=$GCC ;;
>> --
>> 4657-      case $cc_basename in
>> 4658:      nagfor*)
>> 4659-        # NAG Fortran compiler
>> --
>> 4727- ;;
>> 4728:      nagfor*)
>> 4729- # NAG Fortran compiler
>> --
>> 5226-   tmp_sharedflag='--shared' ;;
>> 5227:        nagfor*)                        # NAGFOR 5.3
>> 5228-          tmp_sharedflag='-Wl,-shared' ;;
>> or ifort:
>> % grep -nC1 ifort m4/libtool.m4
>> 1117-  case $cc_basename in
>> 1118:     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
>> 1119-     *) _lt_dar_can_shared=$GCC ;;
>> --
>> 4716-      # ICC 10 doesn't accept -KPIC any more.
>> 4717:      icc* | ifort*)
>> 4718- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
>> --
>> 5219-   tmp_addflag=' -i_dynamic' ;;
>> 5220: efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
>> 5221-   tmp_addflag=' -i_dynamic -nofor_main' ;;
>> 5222: ifc* | ifort*) # Intel Fortran compiler
>> 5223-   tmp_addflag=' -nofor_main' ;;
>> Thank you
>> Anton
> 
> Here is another patch I generated for this off of the master branch:
> 
> diff --git a/m4/libtool.m4 b/m4/libtool.m4
> index bbf2d21f..4498639f 100644
> --- a/m4/libtool.m4
> +++ b/m4/libtool.m4
> @@ -4387,6 +4387,12 @@ m4_if([$1], [CXX], [
>    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
>    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>    ;;
> +  *flang* | ftn*)
> +    # Flang compiler.
> +    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
> +    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
> +    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
> +    ;;
>  icpc* )
>    # Intel C++, used to be incompatible with GCC.
>    # ICC 10 doesn't accept -KPIC any more.
> @@ -4706,7 +4712,7 @@ m4_if([$1], [CXX], [
> _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
> _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
>         ;;
> -      *flang)
> +      *flang* | ftn*)
>        # Flang compiler.
> _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
> _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
> 
> I hope this fixes the issue, but I am having some trouble reproducing
> this. If you could provide more information on your flang version,
> host OS, and how you are invoking libtool, it would be easier to debug
> this.  If there is a particular library or test program you are using,
> that would also help me.
> 
> -- 
> Ileana Dumitrescu
> 
> GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354
> <OpenPGP_0x6570EA01146F7354.asc>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]