From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.smtpout.orange.fr (smtp04.smtpout.orange.fr [80.12.242.126]) by sourceware.org (Postfix) with ESMTPS id 4A56C3858CDB for ; Wed, 17 Aug 2022 08:28:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4A56C3858CDB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=orange.fr Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=orange.fr Received: from [192.168.1.17] ([83.205.188.89]) by smtp.orange.fr with ESMTPA id OEPdoh1MKOizNOEPioCcvI; Wed, 17 Aug 2022 10:28:36 +0200 X-ME-Helo: [192.168.1.17] X-ME-Auth: bW9yaW4tbWlrYWVsQG9yYW5nZS5mcg== X-ME-Date: Wed, 17 Aug 2022 10:28:36 +0200 X-ME-IP: 83.205.188.89 Message-ID: Date: Wed, 17 Aug 2022 10:28:29 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.1.2 From: Mikael Morin Subject: Re: [PATCH] fortran: Add -static-libquadmath support [PR46539] To: Jakub Jelinek , gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org References: Content-Language: fr In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00, FREEMAIL_FROM, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Aug 2022 08:28:40 -0000 Hello, Tobias approved it already, but I spotted what looks like typos. See below. Mikael > gcc/ > * common.opt (static-libquadmath): New option. > * gcc.c (driver_handle_option): Always accept -static-libquadmath. > * config/darwin.h (LINK_SPEC): Handle -static-libquadmath. (...) > --- gcc/config/darwin.h.jj 2022-08-16 14:51:14.529544492 +0200 > +++ gcc/config/darwin.h 2022-08-16 14:53:54.402460097 +0200 > @@ -443,6 +443,7 @@ extern GTY(()) int darwin_ms_struct; > %:replace-outfile(-lobjc libobjc-gnu.a%s); \ > :%:replace-outfile(-lobjc -lobjc-gnu )}}\ > %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\ > + %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lquadmath libquadmath.a%s)}\ s/static-libgfortran/static-libquadmath/ I guess? Otherwise I don’t understand the corresponding ChangeLog description. > %{static|static-libgcc|static-libphobos:%:replace-outfile(-lgphobos libgphobos.a%s)}\ > %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ > %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ (...) > --- libgfortran/acinclude.m4.jj 2022-06-29 17:05:45.478790781 +0200 > +++ libgfortran/acinclude.m4 2022-08-16 16:06:50.047814043 +0200 > @@ -356,18 +356,39 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [ > ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag > ]) > > + dnl Determine -Bstatic ... -Bdynamic etc. support from gfortran -### stderr. > + touch conftest1.$ac_objext conftest2.$ac_objext > + LQUADMATH=-lquadmath > + $FC -static-libgfortran -### -o conftest \ > + conftest1.$ac_objext -lgfortran conftest2.$ac_objext 2>&1 >/dev/null \ > + | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd > + if grep "conftest1.$ac_objext.* -Bstatic -lgfortran -Bdynamic .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static-libquadmath:-Bdynamic}" > + elif grep "conftest1.$ac_objext.* -bstatic -lgfortran -bdynamic .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static-libquadmath:-bdynamic}" > + elif grep "conftest1.$ac_objext.* -aarchive_shared -lgfortran -adefault .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath %{static-libquadmath:-adefault}" > + elif grep "conftest1.$ac_objext.* ligfortran.a .*conftest2.$ac_objext" \ s/ligfortran.a/libgfortran.a/ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}" > + fi > + rm -f conftest1.$ac_objext conftest2.$ac_objext conftest conftest.cmd > + > dnl For static libgfortran linkage, depend on libquadmath only if needed. > dnl If using *f128 APIs from libc/libm, depend on libquadmath only if needed > dnl even for dynamic libgfortran linkage, and don't link libgfortran against > dnl -lquadmath. > if test "x$libgfor_cv_have_as_needed" = xyes; then > if test "x$USE_IEC_60559" = xyes; then > - LIBQUADSPEC="$libgfor_cv_as_needed_option -lquadmath $libgfor_cv_no_as_needed_option" > + LIBQUADSPEC="$libgfor_cv_as_needed_option $LQUADMATH $libgfor_cv_no_as_needed_option" > else > - LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} -lquadmath %{static-libgfortran:$libgfor_cv_no_as_needed_option}" > + LIBQUADSPEC="%{static-libgfortran:$libgfor_cv_as_needed_option} $LQUADMATH %{static-libgfortran:$libgfor_cv_no_as_needed_option}" > fi > else > - LIBQUADSPEC="-lquadmath" > + LIBQUADSPEC="$LQUADMATH" > fi > if test "x$USE_IEC_60559" != xyes; then > if test -f ../libquadmath/libquadmath.la; then