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/