Skip to content

Commit 4300591

Browse files
committed
bpo-38980: Only apply -fno-semantic-interposition if available
1 parent dde91b1 commit 4300591

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed

aclocal.m4

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,60 @@
1212
# PARTICULAR PURPOSE.
1313

1414
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
15+
# ===========================================================================
16+
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
17+
# ===========================================================================
18+
#
19+
# SYNOPSIS
20+
#
21+
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
22+
#
23+
# DESCRIPTION
24+
#
25+
# Check whether the given FLAG works with the current language's compiler
26+
# or gives an error. (Warnings, however, are ignored)
27+
#
28+
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
29+
# success/failure.
30+
#
31+
# If EXTRA-FLAGS is defined, it is added to the current language's default
32+
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
33+
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
34+
# force the compiler to issue an error when a bad flag is given.
35+
#
36+
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
37+
#
38+
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
39+
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
40+
#
41+
# LICENSE
42+
#
43+
# Copyright (c) 2008 Guido U. Draheim <[email protected]>
44+
# Copyright (c) 2011 Maarten Bosmans <[email protected]>
45+
#
46+
# Copying and distribution of this file, with or without modification, are
47+
# permitted in any medium without royalty provided the copyright notice
48+
# and this notice are preserved. This file is offered as-is, without any
49+
# warranty.
50+
51+
#serial 6
52+
53+
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
54+
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
55+
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
56+
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
57+
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
58+
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
59+
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
60+
[AS_VAR_SET(CACHEVAR,[yes])],
61+
[AS_VAR_SET(CACHEVAR,[no])])
62+
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
63+
AS_VAR_IF(CACHEVAR,yes,
64+
[m4_default([$2], :)],
65+
[m4_default([$3], :)])
66+
AS_VAR_POPDEF([CACHEVAR])dnl
67+
])dnl AX_CHECK_COMPILE_FLAGS
68+
1569
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
1670
# serial 11 (pkg-config-0.29.1)
1771

configure

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6484,8 +6484,44 @@ if test "$Py_OPT" = 'true' ; then
64846484
DEF_MAKE_RULE="build_all"
64856485
case $CC in
64866486
*gcc*)
6487+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-semantic-interposition" >&5
6488+
$as_echo_n "checking whether C compiler accepts -fno-semantic-interposition... " >&6; }
6489+
if ${ax_cv_check_cflags___fno_semantic_interposition+:} false; then :
6490+
$as_echo_n "(cached) " >&6
6491+
else
6492+
6493+
ax_check_save_flags=$CFLAGS
6494+
CFLAGS="$CFLAGS -fno-semantic-interposition"
6495+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6496+
/* end confdefs.h. */
6497+
6498+
int
6499+
main ()
6500+
{
6501+
6502+
;
6503+
return 0;
6504+
}
6505+
_ACEOF
6506+
if ac_fn_c_try_compile "$LINENO"; then :
6507+
ax_cv_check_cflags___fno_semantic_interposition=yes
6508+
else
6509+
ax_cv_check_cflags___fno_semantic_interposition=no
6510+
fi
6511+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6512+
CFLAGS=$ax_check_save_flags
6513+
fi
6514+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_semantic_interposition" >&5
6515+
$as_echo "$ax_cv_check_cflags___fno_semantic_interposition" >&6; }
6516+
if test "x$ax_cv_check_cflags___fno_semantic_interposition" = xyes; then :
6517+
64876518
CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition"
64886519
LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition"
6520+
6521+
else
6522+
:
6523+
fi
6524+
64896525
;;
64906526
esac
64916527

configure.ac

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,8 +1320,10 @@ if test "$Py_OPT" = 'true' ; then
13201320
DEF_MAKE_RULE="build_all"
13211321
case $CC in
13221322
*gcc*)
1323+
AX_CHECK_COMPILE_FLAG([-fno-semantic-interposition],[
13231324
CFLAGS_NODIST="$CFLAGS_NODIST -fno-semantic-interposition"
13241325
LDFLAGS_NODIST="$LDFLAGS_NODIST -fno-semantic-interposition"
1326+
])
13251327
;;
13261328
esac
13271329

0 commit comments

Comments
 (0)