Skip to content

Commit 4113862

Browse files
committed
Do not search for commands with double tool prefixes [Bug #18504]
The `CC` found by `AC_CHECK_TOOL` is prefixed by the host triplet when cross compiling. To search for commands with `AC_CHECK_TOOL` based on that `CC` means to search also doubly prefixed names.
1 parent 992bdfe commit 4113862

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

configure.ac

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -169,38 +169,42 @@ AC_ARG_VAR([STRIP], [Strip command])
169169
# We don't want to bother things like `ccache gcc`, `clang -shared-libgcc`, ...
170170
set rb_dummy ${CC}
171171
rb_CC=$2
172+
AC_DEFUN([RUBY_CHECK_PROG_FOR_CC], [
173+
rb_prog=`echo "${rb_CC}" | sed "$2"`
174+
AC_CHECK_PROG([$1], [$rb_prog], [$rb_prog])
175+
])
172176
AS_CASE(["/${rb_CC} "],
173177
[*@<:@\ /@:>@"cc "*], [
174178
# Don't try g++/clang++ when CC=cc
175-
AC_CHECK_TOOLS([CXX], [cl.exe CC c++])
179+
AC_CHECK_PROGS([CXX], [cl.exe CC c++])
176180
],
177181
[*icc*], [
178182
# Intel C++ has interprocedural optimizations. It tends to come with its
179183
# own linker etc.
180-
AC_CHECK_TOOL([AR], [`echo "${rb_CC}" | sed s/icc/xiar/`])
181-
AC_CHECK_TOOL([CXX], [`echo "${rb_CC}" | sed s/icc/icpc/`])
182-
AC_CHECK_TOOL([LD], [`echo "${rb_CC}" | sed s/icc/xild/`])
184+
RUBY_CHECK_PROG_FOR_CC([AR], [s/icc/xiar/])
185+
RUBY_CHECK_PROG_FOR_CC([CXX], [s/icc/icpc/])
186+
RUBY_CHECK_PROG_FOR_CC([LD], [s/icc/xild/])
183187
],
184188
[*gcc*], [
185-
# Dito for GCC.
186-
AC_CHECK_TOOL([LD], [`echo "${rb_CC}" | sed s/gcc/ld/`])
187-
AC_CHECK_TOOL([AR], [`echo "${rb_CC}" | sed s/gcc/gcc-ar/`])
188-
AC_CHECK_TOOL([CXX], [`echo "${rb_CC}" | sed s/gcc/g++/`])
189-
AC_CHECK_TOOL([NM], [`echo "${rb_CC}" | sed s/gcc/gcc-nm/`])
190-
AC_CHECK_TOOL([RANLIB], [`echo "${rb_CC}" | sed s/gcc/gcc-ranlib/`])
189+
# Ditto for GCC.
190+
RUBY_CHECK_PROG_FOR_CC([LD], [s/gcc/ld/])
191+
RUBY_CHECK_PROG_FOR_CC([AR], [s/gcc/gcc-ar/])
192+
RUBY_CHECK_PROG_FOR_CC([CXX], [s/gcc/g++/])
193+
RUBY_CHECK_PROG_FOR_CC([NM], [s/gcc/gcc-nm/])
194+
RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/gcc/gcc-ranlib/])
191195
],
192196
[*clang*], [
193-
# Dito for LLVM. Note however that llvm-as is a LLVM-IR to LLVM bitcode
197+
# Ditto for LLVM. Note however that llvm-as is a LLVM-IR to LLVM bitcode
194198
# assembler that does not target your machine native binary.
195199
: ${LD:="${CC}"} # ... try -fuse-ld=lld ?
196-
AC_CHECK_TOOL([AR], [`echo "${rb_CC}" | sed s/clang/llvm-ar/`])
197-
# AC_CHECK_TOOL([AS], [`echo "${rb_CC}" | sed s/clang/llvm-as/`])
198-
AC_CHECK_TOOL([CXX], [`echo "${rb_CC}" | sed s/clang/clang++/`])
199-
AC_CHECK_TOOL([NM], [`echo "${rb_CC}" | sed s/clang/llvm-nm/`])
200-
AC_CHECK_TOOL([OBJCOPY], [`echo "${rb_CC}" | sed s/clang/llvm-objcopy/`])
201-
AC_CHECK_TOOL([OBJDUMP], [`echo "${rb_CC}" | sed s/clang/llvm-objdump/`])
202-
AC_CHECK_TOOL([RANLIB], [`echo "${rb_CC}" | sed s/clang/llvm-ranlib/`])
203-
AC_CHECK_TOOL([STRIP], [`echo "${rb_CC}" | sed s/clang/llvm-strip/`])
200+
RUBY_CHECK_PROG_FOR_CC([AR], [s/clang/llvm-ar/])
201+
# RUBY_CHECK_PROG_FOR_CC([AS], [s/clang/llvm-as/])
202+
RUBY_CHECK_PROG_FOR_CC([CXX], [s/clang/clang++/])
203+
RUBY_CHECK_PROG_FOR_CC([NM], [s/clang/llvm-nm/])
204+
RUBY_CHECK_PROG_FOR_CC([OBJCOPY], [s/clang/llvm-objcopy/])
205+
RUBY_CHECK_PROG_FOR_CC([OBJDUMP], [s/clang/llvm-objdump/])
206+
RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/clang/llvm-ranlib/])
207+
RUBY_CHECK_PROG_FOR_CC([STRIP], [s/clang/llvm-strip/])
204208
])
205209
AS_UNSET(rb_CC)
206210
AS_UNSET(rb_dummy)

0 commit comments

Comments
 (0)