From patchwork Fri Dec 20 21:08:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 103539 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A92613858404 for ; Fri, 20 Dec 2024 21:09:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A92613858404 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=hLU1Gl/b X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id 812ED3858403 for ; Fri, 20 Dec 2024 21:08:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 812ED3858403 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 812ED3858403 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::636 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734728902; cv=none; b=L6Pj/YGsVmHY8MY4qMlcWqNyh/HoiTNLRfEpBMzHfvxVYrPNg+l/l+pbsyxcJPPOLjZ8IsCcwaFxK8hiKmeTGqgSDerBX3gSe+Sha/j+dh/EJVDWPyxxXrR2I3b0SDLAc4wdAOsAMALx2EUjux3f+t+RzMQp0jnO+3J45awNoLA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734728902; c=relaxed/simple; bh=o7Dl3cx3EphJ+AXx9YypMoTlp8vKxU7CLB8EgCwDB/o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=mzMLRpWiAH2RXQoA2wbN4L6G40RIU4GxP2OSVEsy3rhQOmUi14mnKJY+GBKcxXYNHNSAumEfDfW+JK5KYk+YsmvZGCAxNG5xMjuEz834XdR00+ksft3MxrP9X28A1jE7ixNcEAk3BUKTwy2Cr2FgMnAwUNkOQA2vG2cSxtkVXKY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 812ED3858403 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2165448243fso25956795ad.1 for ; Fri, 20 Dec 2024 13:08:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734728892; x=1735333692; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=K1djWdizbbaN6oqjciPsGV2C0d9lGAYCdb+9p0d2xuY=; b=hLU1Gl/bhWI8UuYKs2n4vh0R17T88VoEW6L3gKg8FMKiCsI6h4gw2U78pKNte3MIC0 jwXc0T/b+rgAiw0IG4kQW1L8RheTFvgP4faTTs3e1JPziINuz23Zk1e87fpAFV+wKg7e lG76pjdYMnXgTmkomE//IA6ePdLZN3Pc1MQDQDNuCCchTTOCVPrbGu90/+zh+Rxs6O/o 9aDWmQYgHlwEwsRZKlKni3OR5iPJ2UitL1Uqw6JW7tc1zAoT3vj6Co+J9A1KeV77WNTc rAZe/Yxo8MkNuQsqkFkRl66aDmOMsl+juIf3IOHlN9KroaZf0CtvFS2UveWsmOEj4y0D duBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734728892; x=1735333692; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=K1djWdizbbaN6oqjciPsGV2C0d9lGAYCdb+9p0d2xuY=; b=HVkrxj+/8X0rqwEkl+Zhnubkc3mrOc7jWXnC0MEoyZAM+S+tLtcjBCF9orGwSenvRJ qoNf8LiP/si9KN6l1wrNfZoh6WgIfJFyNrxzCiOPw76qV31HeSYul8xV0nNHkLD1Y4lV v0HbTY8eljfRhC8aFYaDUGHnHPjrAG07E7Erigc50WOpDTRP8IV/MQKwPA46sDIdeA+W Q6vBr/G4Sda0AS83beXv6a8FckoSXtBpYSrwSSDyivPWUVC2F2J78gX/J2htQ93gevsa C8FgaAXkp2Z8kZE3ROQs5k2+rVMLNAMXna55/edHV149WdTJVDU3H666yVbn/vOgyxmB kjMQ== X-Gm-Message-State: AOJu0Yx1SmUwQ7SU/pWnNcs4tID5DQ68qHPSyOySiRZ/dz454pbN7FIx cbP6yuhEuhJgeQJgFBh7qceIoO5UCmBcrQPB4DhCvBc//OP0gJcRii2PeNqxuRvNPQ== X-Gm-Gg: ASbGnct/1WXvI/6RhU0JTA1UjQHfRrYGTtFJbdm8Ckdl9JKrsr0v5ElmiHPWexBUd5U Q2HIkY88J5/xLDMpp7V2BmQLSvaIfjMLFq9efs3l8FMsonWRDqa2pquBHP7uYu+ob8sXCS41dV9 xVJx1hJcsp6ze4tuqOgKTZPuGguyS0mp+cm2/9ukZyDZfMOcP7jMlyVcYbZoYdd0SSsgXPQlRN+ RGLFZKCIQnyu8WOirZeOfrWFwKGPKdNZ1PtYIzxKrRh5LVAGQRfDtjwi/0U02aE04r5Ww4= X-Google-Smtp-Source: AGHT+IGmJobMH2B/uQElylk4lUgJ1m3eHoifuJjpXR7LJb4s63EbDsBz2QfDmY+2A6JNPijq6lmTWA== X-Received: by 2002:a17:903:2449:b0:215:3a42:dc17 with SMTP id d9443c01a7336-219e6e8bbabmr56636335ad.7.1734728892306; Fri, 20 Dec 2024 13:08:12 -0800 (PST) Received: from gnu-tgl-3.localdomain ([120.204.185.130]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc962d0asm33357405ad.53.2024.12.20.13.08.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Dec 2024 13:08:11 -0800 (PST) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id A7107C0199; Sat, 21 Dec 2024 05:08:07 +0800 (CST) From: "H.J. Lu" To: libc-alpha@sourceware.org Cc: sam@gentoo.org Subject: [PATCH v2] Use -finput-charset=ascii only if supported Date: Sat, 21 Dec 2024 05:08:07 +0800 Message-ID: <20241220210807.591698-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3019.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Check if -finput-charset=ascii is supported before using it in check-installed-headers.sh. Signed-off-by: H.J. Lu --- Makefile | 6 ++- Rules | 6 ++- aclocal.m4 | 29 +++++++++++++ configure | 68 ++++++++++++++++++++++++++++++ configure.ac | 20 +++++++++ scripts/check-installed-headers.sh | 3 +- 6 files changed, 126 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index c84f266ce7..430a0942eb 100644 --- a/Makefile +++ b/Makefile @@ -546,7 +546,8 @@ libof-check-installed-headers-c := testsuite $(objpfx)check-installed-headers-c.out: \ scripts/check-installed-headers.sh $(headers) $(SHELL) $(..)scripts/check-installed-headers.sh c $(supported-fortify) \ - "$(CC) $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \ + "$(CC) $(test-config-cflags-finput-charset-ascii) \ + $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \ $(headers) > $@; \ $(evaluate-test) @@ -556,7 +557,8 @@ libof-check-installed-headers-cxx := testsuite $(objpfx)check-installed-headers-cxx.out: \ scripts/check-installed-headers.sh $(headers) $(SHELL) $(..)scripts/check-installed-headers.sh c++ $(supported-fortify) \ - "$(CXX) $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \ + "$(CXX) $(test-config-cxxflags-finput-charset-ascii) \ + $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \ $(headers) > $@; \ $(evaluate-test) endif # $(CXX) diff --git a/Rules b/Rules index 713c225d2e..cd98fcb006 100644 --- a/Rules +++ b/Rules @@ -86,7 +86,8 @@ libof-check-installed-headers-c := testsuite $(objpfx)check-installed-headers-c.out: \ $(..)scripts/check-installed-headers.sh $(headers) $(SHELL) $(..)scripts/check-installed-headers.sh c $(supported-fortify) \ - "$(CC) $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \ + "$(CC) $(test-config-cflags-finput-charset-ascii) \ + $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \ $(headers) > $@; \ $(evaluate-test) @@ -98,7 +99,8 @@ libof-check-installed-headers-cxx := testsuite $(objpfx)check-installed-headers-cxx.out: \ $(..)scripts/check-installed-headers.sh $(headers) $(SHELL) $(..)scripts/check-installed-headers.sh c++ $(supported-fortify) \ - "$(CXX) $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \ + "$(CXX) $(test-config-cxxflags-finput-charset-ascii) \ + $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \ $(headers) > $@; \ $(evaluate-test) endif # $(CXX) diff --git a/aclocal.m4 b/aclocal.m4 index fb4c1ef1c4..e06366cdb2 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -167,6 +167,12 @@ AC_DEFUN([LIBC_TRY_CC_OPTION], [AS_IF([AC_TRY_COMMAND([${CC-cc} $1 -xc /dev/null -S -o /dev/null])], [$2], [$3])]) +dnl Test a C++ compiler option or options with an empty input file. +dnl LIBC_TRY_CXX_OPTION([options], [action-if-true], [action-if-false]) +AC_DEFUN([LIBC_TRY_CXX_OPTION], +[AS_IF([AC_TRY_COMMAND([${CXX-c++} $1 -xc++ /dev/null -S -o /dev/null])], + [$2], [$3])]) + dnl Find and source sysdeps/*/preconfigure. dnl LIBC_PRECONFIGURE([$srcdir], [for]) AC_DEFUN([LIBC_PRECONFIGURE], [dnl @@ -447,3 +453,26 @@ LIBC_CHECK_TEST_CXX( fi]) ) rm -f conftest*]) + +dnl Test a TEST_CC compiler option or options with an empty input file. +dnl LIBC_TRY_TEST_CC_OPTION([message], [options], +dnl [TEST_CC-cache-id], [TEST_CC-action-if-true], [TEST_CC-action-if-false]) +AC_DEFUN([LIBC_TRY_TEST_CC_OPTION], +[ +LIBC_CHECK_TEST_CC( + AC_CACHE_CHECK([$1 in testing], $3, + [LIBC_TRY_CC_OPTION([$2], [$4], [$5])]) + ) +]) + +dnl Test a TEST_CXX compiler option or options with an empty input file. +dnl LIBC_TRY_TEST_CXX_OPTION([message], [options], +dnl [TEST_CXX-cache-id], [TEST_CXX-action-if-true], +dnl [TEST_CXX-action-if-false]) +AC_DEFUN([LIBC_TRY_TEST_CXX_OPTION], +[ +LIBC_CHECK_TEST_CXX( + AC_CACHE_CHECK([$1 in testing], $3, + [LIBC_TRY_CXX_OPTION([$2], [$4], [$5])]) + ) +]) diff --git a/configure b/configure index c231507721..73eaf0e4e7 100755 --- a/configure +++ b/configure @@ -7775,6 +7775,74 @@ config_vars="$config_vars cc-option-wimplicit-fallthrough = $libc_cv_cc_wimplicit_fallthrough" + + +saved_CC="$CC" +CC="$TEST_CC" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -finput-charset=ascii in testing" >&5 +printf %s "checking -finput-charset=ascii in testing... " >&6; } +if test ${libc_cv_test_cflags_finput_charset_ascii+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if { ac_try='${CC-cc} -c -Werror -finput-charset=ascii -xc /dev/null -S -o /dev/null' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + libc_cv_test_cflags_finput_charset_ascii="-finput-charset=ascii" +else case e in #( + e) libc_cv_test_cflags_finput_charset_ascii= + ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cflags_finput_charset_ascii" >&5 +printf "%s\n" "$libc_cv_test_cflags_finput_charset_ascii" >&6; } + +CC="$saved_CC" + + +config_vars="$config_vars +test-config-cflags-finput-charset-ascii = $libc_cv_test_cflags_finput_charset_ascii" + + + +saved_CXX="$CXX" +CXX="$TEST_CXX" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -finput-charset=ascii in testing" >&5 +printf %s "checking -finput-charset=ascii in testing... " >&6; } +if test ${libc_cv_test_cxxflags_finput_charset_ascii+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if { ac_try='${CXX-c++} -c -Werror -finput-charset=ascii -xc++ /dev/null -S -o /dev/null' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + libc_cv_test_cxxflags_finput_charset_ascii="-finput-charset=ascii" +else case e in #( + e) libc_cv_test_cxxflags_finput_charset_ascii= + ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cxxflags_finput_charset_ascii" >&5 +printf "%s\n" "$libc_cv_test_cxxflags_finput_charset_ascii" >&6; } + +CXX="$saved_CXX" + + +config_vars="$config_vars +test-config-cxxflags-finput-charset-ascii = $libc_cv_test_cxxflags_finput_charset_ascii" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5 printf %s "checking for libgd... " >&6; } if test "$with_gd" != "no"; then diff --git a/configure.ac b/configure.ac index cc1c76f5c8..ecb51e4384 100644 --- a/configure.ac +++ b/configure.ac @@ -1528,6 +1528,26 @@ LIBC_CONFIG_VAR([cc-option-wimplicit-fallthrough], [$libc_cv_cc_wimplicit_fallthrough]) AC_SUBST(libc_cv_test_cc_wimplicit_fallthrough) +dnl Check if TEST_CC supports -finput-charset=ascii. +LIBC_TRY_TEST_CC_OPTION([-finput-charset=ascii], + [-c -Werror -finput-charset=ascii], + libc_cv_test_cflags_finput_charset_ascii, + [libc_cv_test_cflags_finput_charset_ascii="-finput-charset=ascii"], + [libc_cv_test_cflags_finput_charset_ascii=] +) +LIBC_CONFIG_VAR(test-config-cflags-finput-charset-ascii, + $libc_cv_test_cflags_finput_charset_ascii) + +dnl Check if TEST_CXX supports -finput-charset=ascii. +LIBC_TRY_TEST_CXX_OPTION([-finput-charset=ascii], + [-c -Werror -finput-charset=ascii], + libc_cv_test_cxxflags_finput_charset_ascii, + [libc_cv_test_cxxflags_finput_charset_ascii="-finput-charset=ascii"], + [libc_cv_test_cxxflags_finput_charset_ascii=] +) +LIBC_CONFIG_VAR(test-config-cxxflags-finput-charset-ascii, + $libc_cv_test_cxxflags_finput_charset_ascii) + dnl Check whether we have the gd library available. AC_MSG_CHECKING(for libgd) if test "$with_gd" != "no"; then diff --git a/scripts/check-installed-headers.sh b/scripts/check-installed-headers.sh index b8cdcbf858..64cbfda544 100644 --- a/scripts/check-installed-headers.sh +++ b/scripts/check-installed-headers.sh @@ -130,8 +130,7 @@ $expanded_lib_mode #include <$header> int avoid_empty_translation_unit; EOF - if $cc_cmd -finput-charset=ascii -fsyntax-only $lang_mode \ - "$cih_test_c" 2>&1 + if $cc_cmd -fsyntax-only $lang_mode "$cih_test_c" 2>&1 then : else failed=1 fi