Issue #10808 has been updated by Naohisa Goto. Makefile と uncommon.mk (common.mk から自動作成) は GNUMakefile からこの順番で読み込まれますが、$(OBJS) は uncommon.mk 内にて代入されるため、Makefile 内にて ruby-glommed.$(OBJEXT) の依存関係が定義された際には $(OBJS) は空のままです。 そして、変数 $(OBJS) の中身が後から common.mk 内部で変更されても、以前に読み込んだ Makefile 内で定義された依存関係にまで遡っての変更は行わないようです。。 つまり、各コマンドの実行は、Makefile, uncommon.mk などすべてを読み込んだ後になるため、変数の最終の内容が反映される一方、依存関係のルールは、(同一ファイル内ならどうかはわかりませんが、複数ファイルに分けて書いた場合には)その依存関係が出現した時点での変数の内容が使われるようです。 r49419 以前のように ruby-glommed.$(OBJEXT) の依存関係の記述を common.mk 内に移動するとうまくビルドできるようになりました。 ---------------------------------------- Bug #10808: r49451以降 Solarisにてruby-glommed.oの作成に失敗 https://bugs.ruby-lang.org/issues/10808#change-51366 * Author: Naohisa Goto * Status: Closed * Priority: Normal * Assignee: * ruby -v: - * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- r49451以降、以下のエラーが発生してビルドできません。 dln.o がビルドされないため、ruby-glommed.o のビルドに失敗しています。 ~~~ cc -xO4 -xtarget=sparc64viiplus -m64 -L. -L/usr/local/64/lib -R/usr/local/64/lib main.o dmydln.o miniinit.o miniprelude.o array.o bignum.o class.o compar.o complex.o dir.o dln_find.o encoding.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 symbol.o time.o transcode.o util.o variable.o version.o compile.o debug.o iseq.o vm.o vm_dump.o vm_backtrace.o vm_trace.o thread.o cont.o probes.o enc/ascii.o enc/us_ascii.o enc/unicode.o enc/utf_8.o enc/trans/newline.o sparc.o flock.o isinf.o setproctitle.o addr2line.o dmyext.o dmyenc.o -lpthread -lrt -lgmp -lsocket -ldl -lcrypt -lm -o miniruby ./miniruby -I./lib -I. -I.ext/common ./tool/mkconfig.rb -timestamp=.rbconfig.time \ -install_name=ruby \ -so_name=ruby rbconfig.rb rbconfig.rb updated ./miniruby -I./lib -I. -I.ext/common ./enc/make_encmake.rb --builtin-encs="enc/ascii.o enc/us_ascii.o enc/unicode.o enc/utf_8.o" --builtin-transes="enc/trans/newline.o" --module enc.mk /usr/ccs/bin/ld -r -o ruby-glommed.o dln.o localeinit.o loadpath.o array.o bignum.o class.o compar.o complex.o dir.o dln_find.o encoding.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 symbol.o time.o transcode.o util.o variable.o version.o compile.o debug.o iseq.o vm.o vm_dump.o vm_backtrace.o vm_trace.o thread.o cont.o probes.o enc/ascii.o enc/us_ascii.o enc/unicode.o enc/utf_8.o enc/trans/newline.o sparc.o flock.o isinf.o setproctitle.o addr2line.o prelude.o probes.o ld: fatal: file dln.o: open failed: No such file or directory make: *** [ruby-glommed.o] Error 1 ~~~ ---Files-------------------------------- r49462_sparc64-solaris10.make_-p_-V1-ruby-glommed_o.log (207 KB) r49462_sparc64-solaris10.Makefile (15.6 KB) -- https://bugs.ruby-lang.org/