mirror of https://github.com/python/cpython
gh-101525: Fix make test if the --enable-bolt enabled (gh-103574)
This commit is contained in:
parent
76933df10a
commit
5d9762e7cf
|
@ -38,6 +38,7 @@ CC= @CC@
|
||||||
CXX= @CXX@
|
CXX= @CXX@
|
||||||
LINKCC= @LINKCC@
|
LINKCC= @LINKCC@
|
||||||
AR= @AR@
|
AR= @AR@
|
||||||
|
READELF= @READELF@
|
||||||
SOABI= @SOABI@
|
SOABI= @SOABI@
|
||||||
LDVERSION= @LDVERSION@
|
LDVERSION= @LDVERSION@
|
||||||
LIBPYTHON= @LIBPYTHON@
|
LIBPYTHON= @LIBPYTHON@
|
||||||
|
@ -670,13 +671,18 @@ profile-opt: profile-run-stamp
|
||||||
|
|
||||||
bolt-opt: @PREBOLT_RULE@
|
bolt-opt: @PREBOLT_RULE@
|
||||||
rm -f *.fdata
|
rm -f *.fdata
|
||||||
@LLVM_BOLT@ ./$(BUILDPYTHON) -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $(BUILDPYTHON).bolt) -o $(BUILDPYTHON).bolt_inst
|
@if $(READELF) -p .note.bolt_info $(BUILDPYTHON) | grep BOLT > /dev/null; then\
|
||||||
./$(BUILDPYTHON).bolt_inst $(PROFILE_TASK) || true
|
echo "skip: $(BUILDPYTHON) is already BOLTed."; \
|
||||||
@MERGE_FDATA@ $(BUILDPYTHON).*.fdata > $(BUILDPYTHON).fdata
|
else \
|
||||||
@LLVM_BOLT@ ./$(BUILDPYTHON) -o $(BUILDPYTHON).bolt -data=$(BUILDPYTHON).fdata -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot
|
@LLVM_BOLT@ ./$(BUILDPYTHON) -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $(BUILDPYTHON).bolt) -o $(BUILDPYTHON).bolt_inst; \
|
||||||
rm -f *.fdata
|
./$(BUILDPYTHON).bolt_inst $(PROFILE_TASK) || true; \
|
||||||
rm -f $(BUILDPYTHON).bolt_inst
|
@MERGE_FDATA@ $(BUILDPYTHON).*.fdata > $(BUILDPYTHON).fdata; \
|
||||||
mv $(BUILDPYTHON).bolt $(BUILDPYTHON)
|
@LLVM_BOLT@ ./$(BUILDPYTHON) -o $(BUILDPYTHON).bolt -data=$(BUILDPYTHON).fdata -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot; \
|
||||||
|
rm -f *.fdata; \
|
||||||
|
rm -f $(BUILDPYTHON).bolt_inst; \
|
||||||
|
mv $(BUILDPYTHON).bolt $(BUILDPYTHON); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Compile and run with gcov
|
# Compile and run with gcov
|
||||||
.PHONY=coverage coverage-lcov coverage-report
|
.PHONY=coverage coverage-lcov coverage-report
|
||||||
|
|
|
@ -892,6 +892,8 @@ PGO_PROF_USE_FLAG
|
||||||
PGO_PROF_GEN_FLAG
|
PGO_PROF_GEN_FLAG
|
||||||
MERGE_FDATA
|
MERGE_FDATA
|
||||||
LLVM_BOLT
|
LLVM_BOLT
|
||||||
|
ac_ct_READELF
|
||||||
|
READELF
|
||||||
PREBOLT_RULE
|
PREBOLT_RULE
|
||||||
LLVM_AR_FOUND
|
LLVM_AR_FOUND
|
||||||
LLVM_AR
|
LLVM_AR
|
||||||
|
@ -7916,6 +7918,112 @@ if test "$Py_BOLT" = 'true' ; then
|
||||||
DEF_MAKE_ALL_RULE="bolt-opt"
|
DEF_MAKE_ALL_RULE="bolt-opt"
|
||||||
DEF_MAKE_RULE="build_all"
|
DEF_MAKE_RULE="build_all"
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$ac_tool_prefix"; then
|
||||||
|
for ac_prog in readelf
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
$as_echo_n "checking for $ac_word... " >&6; }
|
||||||
|
if ${ac_cv_prog_READELF+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if test -n "$READELF"; then
|
||||||
|
ac_cv_prog_READELF="$READELF" # Let the user override the test.
|
||||||
|
else
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||||
|
ac_cv_prog_READELF="$ac_tool_prefix$ac_prog"
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
READELF=$ac_cv_prog_READELF
|
||||||
|
if test -n "$READELF"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
|
||||||
|
$as_echo "$READELF" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
test -n "$READELF" && break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if test -z "$READELF"; then
|
||||||
|
ac_ct_READELF=$READELF
|
||||||
|
for ac_prog in readelf
|
||||||
|
do
|
||||||
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
|
set dummy $ac_prog; ac_word=$2
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||||
|
$as_echo_n "checking for $ac_word... " >&6; }
|
||||||
|
if ${ac_cv_prog_ac_ct_READELF+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if test -n "$ac_ct_READELF"; then
|
||||||
|
ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
|
||||||
|
else
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||||
|
ac_cv_prog_ac_ct_READELF="$ac_prog"
|
||||||
|
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
|
||||||
|
if test -n "$ac_ct_READELF"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5
|
||||||
|
$as_echo "$ac_ct_READELF" >&6; }
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
test -n "$ac_ct_READELF" && break
|
||||||
|
done
|
||||||
|
|
||||||
|
if test "x$ac_ct_READELF" = x; then
|
||||||
|
READELF=""notfound""
|
||||||
|
else
|
||||||
|
case $cross_compiling:$ac_tool_warned in
|
||||||
|
yes:)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
|
||||||
|
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
|
||||||
|
ac_tool_warned=yes ;;
|
||||||
|
esac
|
||||||
|
READELF=$ac_ct_READELF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$READELF" == "notfound"
|
||||||
|
then
|
||||||
|
as_fn_error $? "readelf is required for a --enable-bolt build but could not be found." "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
# -fno-reorder-blocks-and-partition is required for bolt to work.
|
# -fno-reorder-blocks-and-partition is required for bolt to work.
|
||||||
# Possibly GCC only.
|
# Possibly GCC only.
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5
|
||||||
|
|
|
@ -1938,6 +1938,13 @@ if test "$Py_BOLT" = 'true' ; then
|
||||||
DEF_MAKE_ALL_RULE="bolt-opt"
|
DEF_MAKE_ALL_RULE="bolt-opt"
|
||||||
DEF_MAKE_RULE="build_all"
|
DEF_MAKE_RULE="build_all"
|
||||||
|
|
||||||
|
AC_SUBST(READELF)
|
||||||
|
AC_CHECK_TOOLS(READELF, [readelf], "notfound")
|
||||||
|
if test "$READELF" == "notfound"
|
||||||
|
then
|
||||||
|
AC_MSG_ERROR([readelf is required for a --enable-bolt build but could not be found.])
|
||||||
|
fi
|
||||||
|
|
||||||
# -fno-reorder-blocks-and-partition is required for bolt to work.
|
# -fno-reorder-blocks-and-partition is required for bolt to work.
|
||||||
# Possibly GCC only.
|
# Possibly GCC only.
|
||||||
AX_CHECK_COMPILE_FLAG([-fno-reorder-blocks-and-partition],[
|
AX_CHECK_COMPILE_FLAG([-fno-reorder-blocks-and-partition],[
|
||||||
|
|
Loading…
Reference in New Issue