[ruby-trunk - Bug #7451][Open] r37911 breaks build on non gcc or non IA-32 platforms

Issue #7451 has been reported by ngoto (Naohisa G.).


Bug #7451: r37911 breaks build on non gcc or non IA-32 platforms

Author: ngoto (Naohisa G.)
Status: Open
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: build
Target version:
ruby -v: -

r37911 以降、__sync_val_compare_and_swap がリンク失敗したら必ず -march=i486 が付くため、
gccではないコンパイラ、またはIA-32ではない環境ではコンパイルに失敗します。

Sun(Oracle)の SolarisStudio 12.3 のccでは、-m はリンカに何かを渡すオプションらしく、
以下のようにminirubyのリンクに失敗します。Fujitsu C Compiler でも同様です。

cc -xO1 -xtarget=sparc64viiplus -m64 -march=i486 -L.
-L/usr/local/64/lib -R/usr/local/64/lib -m64 main.o dmydln.o
dmyencoding.o dmyversion.o miniprelude.o array.o bignum.o class.o
compar.o complex.o dir.o dln_find.o enum.o enumerator.o error.o eval.o
load.o proc.o file.o gc.o hash.o inits.o io.o marshal.o math.o node.o
numeric.o object.o pack.o parse.o process.o random.o range.o rational.o
re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o
ruby.o safe.o signal.o sprintf.o st.o strftime.o string.o struct.o
time.o transcode.o util.o variable.o compile.o debug.o iseq.o vm.o
vm_dump.o vm_backtrace.o vm_trace.o thread.o cont.o ascii.o us_ascii.o
unicode.o utf_8.o newline.o sparc.o flock.o isinf.o setproctitle.o
addr2line.o dmyext.o probes.o -lpthread -lrt -lsocket -ldl -lcrypt -lm
-o miniruby
cc: Warning: Option -march=i486 passed to ld, if ld is invoked, ignored
otherwise
ld: fatal: -c option is incompatible with building a static object
(-dn, -r, --relocatable)
ld: fatal: -a and relocatable object option (-r, --relocatable) are
incompatible
ld: fatal: flags processing errors
make: *** [miniruby] Error 2