@@ -169,38 +169,42 @@ AC_ARG_VAR([STRIP], [Strip command])
169169# We don't want to bother things like `ccache gcc`, `clang -shared-libgcc`, ...
170170set rb_dummy ${CC}
171171rb_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+ ] )
172176AS_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] )
205209AS_UNSET ( rb_CC )
206210AS_UNSET ( rb_dummy )
0 commit comments