1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* configure.in (LIBRUBY_A): append -static. [ruby-dev:18689]

* configure.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): linker
  argument to link static/shared library respectively.

* Makefile.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): added.

* bcc32/Makefile.sub, win32/Makefile.sub: ditto.

* instruby.rb (LIBRUBY_A): install to libdir.

* lib/mkmf.rb (link_command): link static library of ruby, or
  try_run fails unless LIBRUBY_SO is installed.  [ruby-dev:18646]

* eval.c (call_trace_func): toplevel caller was missing.
  [ruby-dev:18754]

* eval.c (proc_to_s): adjust created line number.

* parse.y (primary, do_block, brace_block): adjust line number of
  block to beginning line, instead of the first statement inside
  the block.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2002-11-14 13:51:19 +00:00
parent a1c02ee495
commit 604689628d
9 changed files with 80 additions and 27 deletions

View file

@ -1,3 +1,28 @@
Thu Nov 14 22:40:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* configure.in (LIBRUBY_A): append -static. [ruby-dev:18689]
* configure.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): linker
argument to link static/shared library respectively.
* Makefile.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): added.
* bcc32/Makefile.sub, win32/Makefile.sub: ditto.
* instruby.rb (LIBRUBY_A): install to libdir.
* lib/mkmf.rb (link_command): link static library of ruby, or
try_run fails unless LIBRUBY_SO is installed. [ruby-dev:18646]
* eval.c (call_trace_func): toplevel caller was missing.
[ruby-dev:18754]
* eval.c (proc_to_s): adjust created line number.
* parse.y (primary, do_block, brace_block): adjust line number of
block to beginning line, instead of the first statement inside
the block.
Thu Nov 14 08:23:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org> Thu Nov 14 08:23:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
* math.c (math_acos): check errno after operation. ditto for * math.c (math_acos): check errno after operation. ditto for

View file

@ -52,6 +52,8 @@ LIBRUBY_SO = @LIBRUBY_SO@
LIBRUBY_ALIASES= @LIBRUBY_ALIASES@ LIBRUBY_ALIASES= @LIBRUBY_ALIASES@
LIBRUBY = @LIBRUBY@ LIBRUBY = @LIBRUBY@
LIBRUBYARG = @LIBRUBYARG@ LIBRUBYARG = @LIBRUBYARG@
LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@
LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
PREP = @PREP@ @ARCHFILE@ PREP = @PREP@ @ARCHFILE@
SETUP = SETUP =
@ -183,7 +185,7 @@ Makefile: $(srcdir)/Makefile.in
{ echo "Makefile updated, restart."; exit 1; } { echo "Makefile updated, restart."; exit 1; }
config.status: $(srcdir)/configure config.status: $(srcdir)/configure
$(SHELL) ./config.status --recheck MINIRUBY="$(MINIRUBY)" $(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/configure: $(srcdir)/configure.in
cd $(srcdir) && $(AUTOCONF) cd $(srcdir) && $(AUTOCONF)

View file

@ -132,7 +132,7 @@ ORGLIBPATH = $(LIB)
#### End of system configuration section. #### #### End of system configuration section. ####
LIBRUBY_A = lib$(RUBY_INSTALL_NAME).lib LIBRUBY_A = $(RUBY_SO_NAME)-static.lib
LIBRUBY_SO = $(RUBY_SO_NAME).dll LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY) LIBRUBYARG = $(LIBRUBY)
@ -350,11 +350,13 @@ s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
s,@LIBRUBY_A@,lib$$(RUBY_INSTALL_NAME).lib,;t t s,@LIBRUBY_A@,$$(RUBY_SO_NAME)-static.lib,;t t
s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
s,@LIBRUBYARG@,$$(RUBY_SO_NAME).lib,;t t s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t s,@ENABLE_SHARED@,yes,;t t
@ -392,7 +394,7 @@ $(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
$(LIBRUBY_A): $(OBJS) $(LIBRUBY_A): $(OBJS)
@-if exist $@ del $@ @-if exist $@ del $@
$(AR) $(ARFLAGS) $@ $(OBJS) $(AR) $(ARFLAGS) "$@" $(OBJS)
# $(LIBRUBY): $(LIBRUBY_SO) # $(LIBRUBY): $(LIBRUBY_SO)
# implib $@ $(LIBRUBY_SO) # implib $@ $(LIBRUBY_SO)

View file

@ -974,7 +974,7 @@ if test "$fat_binary" = yes ; then
fi fi
if test x"$cross_compiling" = xyes; then if test x"$cross_compiling" = xyes; then
MINIRUBY="${RUBY-ruby} -I`pwd` -rfake" test x"$MINIRUBY" = x && MINIRUBY="${RUBY-ruby} -I`pwd` -rfake"
PREP=fake.rb PREP=fake.rb
else else
MINIRUBY='./miniruby$(EXEEXT)' MINIRUBY='./miniruby$(EXEEXT)'
@ -984,9 +984,10 @@ AC_SUBST(MINIRUBY)
AC_SUBST(PREP) AC_SUBST(PREP)
FIRSTMAKEFILE="" FIRSTMAKEFILE=""
LIBRUBY_A='lib$(RUBY_INSTALL_NAME).a' LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
LIBRUBY='$(LIBRUBY_A)' LIBRUBY='$(LIBRUBY_A)'
LIBRUBYARG='-l$(RUBY_INSTALL_NAME)' LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
LIBRUBYARG='$(LIBRUBYARG_STATIC)'
SOLIBS= SOLIBS=
case "$target_os" in case "$target_os" in
@ -1010,7 +1011,8 @@ AC_ARG_ENABLE(shared,
[enable_shared=$enableval]) [enable_shared=$enableval])
if test "$enable_shared" = 'yes'; then if test "$enable_shared" = 'yes'; then
LIBRUBY='$(LIBRUBY_SO)' LIBRUBY='$(LIBRUBY_SO)'
LIBRUBYARG='-l$(RUBY_SO_NAME)' LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)'
LIBRUBYARG='$(LIBRUBYARG_SHARED)'
CFLAGS="$CFLAGS $CCDLFLAGS" CFLAGS="$CFLAGS $CCDLFLAGS"
ENABLE_SHARED=yes ENABLE_SHARED=yes
if test "$rb_cv_binary_elf" = yes; then if test "$rb_cv_binary_elf" = yes; then
@ -1040,7 +1042,7 @@ if test "$enable_shared" = 'yes'; then
SOLIBS='$(LIBS)' SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR).$(TEENY)' LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR).$(TEENY)'
LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)' LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'
LIBRUBYARG='-Wl,-R -Wl,${libdir} -L${libdir} -L. -l$(RUBY_SO_NAME)' LIBRUBYARG_SHARED='-Wl,-R -Wl,${libdir} -L${libdir} -L. -l$(RUBY_SO_NAME)'
if test "$rb_cv_binary_elf" = yes; then # ELF platforms if test "$rb_cv_binary_elf" = yes; then # ELF platforms
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR) lib$(RUBY_SO_NAME).so' LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR) lib$(RUBY_SO_NAME).so'
else # a.out platforms else # a.out platforms
@ -1067,7 +1069,7 @@ if test "$enable_shared" = 'yes'; then
LIBRUBY_DLDFLAGS='-bE:ruby.imp -bM:SRE -bnoentry' LIBRUBY_DLDFLAGS='-bE:ruby.imp -bM:SRE -bnoentry'
ARCHFILE="ruby.imp" ARCHFILE="ruby.imp"
fi fi
LIBRUBYARG='-L${libdir} -Wl,lib$(RUBY_SO_NAME).so' LIBRUBYARG_SHARED='-L${libdir} -Wl,lib$(RUBY_SO_NAME).so'
SOLIBS='-lm -lc' SOLIBS='-lm -lc'
;; ;;
beos*) beos*)
@ -1158,7 +1160,6 @@ case "$target_os" in
LIBRUBY='lib$(RUBY_SO_NAME).a' LIBRUBY='lib$(RUBY_SO_NAME).a'
fi fi
LIBRUBY_ALIASES='' LIBRUBY_ALIASES=''
LIBRUBY_A='lib$(RUBY_INSTALL_NAME)s.a'
FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
SOLIBS='$(LIBS)' SOLIBS='$(LIBS)'
;; ;;
@ -1177,6 +1178,8 @@ AC_SUBST(LIBRUBY_SO)
AC_SUBST(LIBRUBY_ALIASES) AC_SUBST(LIBRUBY_ALIASES)
AC_SUBST(LIBRUBY) AC_SUBST(LIBRUBY)
AC_SUBST(LIBRUBYARG) AC_SUBST(LIBRUBYARG)
AC_SUBST(LIBRUBYARG_STATIC)
AC_SUBST(LIBRUBYARG_SHARED)
AC_SUBST(SOLIBS) AC_SUBST(SOLIBS)
AC_SUBST(DLDLIBS) AC_SUBST(DLDLIBS)
AC_SUBST(ENABLE_SHARED) AC_SUBST(ENABLE_SHARED)

10
eval.c
View file

@ -2103,6 +2103,7 @@ call_trace_func(event, node, self, id, klass)
if (node) { if (node) {
ruby_current_node = node; ruby_current_node = node;
ruby_frame->node = node;
ruby_sourcefile = node->nd_file; ruby_sourcefile = node->nd_file;
ruby_sourceline = nd_line(node); ruby_sourceline = nd_line(node);
} }
@ -2324,7 +2325,7 @@ rb_eval(self, n)
if (trace_func) { if (trace_func) {
call_trace_func("line", node, self, call_trace_func("line", node, self,
ruby_frame->last_func, ruby_frame->last_func,
ruby_frame->last_class); ruby_frame->last_class);
} }
if (RTEST(rb_eval(self, node->nd_cond))) { if (RTEST(rb_eval(self, node->nd_cond))) {
node = node->nd_body; node = node->nd_body;
@ -6686,17 +6687,18 @@ proc_to_s(self, other)
VALUE self, other; VALUE self, other;
{ {
struct BLOCK *data; struct BLOCK *data;
NODE *node;
char *cname = rb_class2name(CLASS_OF(self)); char *cname = rb_class2name(CLASS_OF(self));
const int w = (SIZEOF_LONG * CHAR_BIT) / 4; const int w = (SIZEOF_LONG * CHAR_BIT) / 4;
long len = strlen(cname)+6+w; /* 6:tags 16:addr */ long len = strlen(cname)+6+w; /* 6:tags 16:addr */
VALUE str; VALUE str;
Data_Get_Struct(self, struct BLOCK, data); Data_Get_Struct(self, struct BLOCK, data);
if (data->body) { if ((node = data->frame.node) || (node = data->body)) {
len += strlen(data->body->nd_file) + 2 + (SIZEOF_LONG*CHAR_BIT-NODE_LSHIFT)/3; len += strlen(node->nd_file) + 2 + (SIZEOF_LONG*CHAR_BIT-NODE_LSHIFT)/3;
str = rb_str_new(0, len); str = rb_str_new(0, len);
sprintf(RSTRING(str)->ptr, "#<%s:0x%.*lx@%s:%d>", cname, w, (VALUE)data->tag, sprintf(RSTRING(str)->ptr, "#<%s:0x%.*lx@%s:%d>", cname, w, (VALUE)data->tag,
data->body->nd_file, nd_line(data->body)); node->nd_file, nd_line(node));
} }
else { else {
str = rb_str_new(0, len); str = rb_str_new(0, len);

View file

@ -81,7 +81,7 @@ if rubyw_install_name and !rubyw_install_name.empty?
end end
Installer.install dll, bindir, 0755, true if enable_shared and dll != lib Installer.install dll, bindir, 0755, true if enable_shared and dll != lib
Installer.install lib, libdir, 0555, true unless lib == arc Installer.install lib, libdir, 0555, true unless lib == arc
Installer.install arc, archlibdir, 0644, true Installer.install arc, libdir, 0644, true
Installer.install "config.h", archlibdir, 0644, true Installer.install "config.h", archlibdir, 0644, true
Installer.install "rbconfig.rb", archlibdir, 0644, true Installer.install "rbconfig.rb", archlibdir, 0644, true
if CONFIG["ARCHFILE"] if CONFIG["ARCHFILE"]

View file

@ -211,7 +211,7 @@ def link_command(ldflags, opt="", libpath=$LIBPATH)
'LDFLAGS' => "#$LDFLAGS #{ldflags}", 'LDFLAGS' => "#$LDFLAGS #{ldflags}",
'LIBPATH' => libpathflag(libpath), 'LIBPATH' => libpathflag(libpath),
'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs", 'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
'LIBS' => "#$LIBRUBYARG #{opt} #$LIBS") 'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
end end
def cc_command(opt="") def cc_command(opt="")
@ -558,6 +558,10 @@ VPATH = $(srcdir)
end end
mk << %{ mk << %{
CC = #{CONFIG['CC']} CC = #{CONFIG['CC']}
LIBRUBY = #{CONFIG['LIBRUBY']}
LIBRUBY_A = #{CONFIG['LIBRUBY_A']}
LIBRUBYARG_SHARED = #$LIBRUBYARG_SHARED
LIBRUBYARG_STATIC = #$LIBRUBYARG_STATIC
CFLAGS = #{CONFIG['CCDLFLAGS'] unless $static} #$CFLAGS CFLAGS = #{CONFIG['CCDLFLAGS'] unless $static} #$CFLAGS
CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) #{$defs.join(" ")} #{$CPPFLAGS} CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) #{$defs.join(" ")} #{$CPPFLAGS}
@ -774,6 +778,8 @@ def init_mkmf(config = CONFIG)
$OBJEXT = config["OBJEXT"].dup $OBJEXT = config["OBJEXT"].dup
$LIBS = "#{config['LIBS']} #{config['DLDLIBS']}" $LIBS = "#{config['LIBS']} #{config['DLDLIBS']}"
$LIBRUBYARG = config['LIBRUBYARG'] $LIBRUBYARG = config['LIBRUBYARG']
$LIBRUBYARG_STATIC = config['LIBRUBYARG_STATIC']
$LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED']
$LIBPATH = [] $LIBPATH = []
$objs = nil $objs = nil

23
parse.y
View file

@ -1302,10 +1302,14 @@ primary : literal
$$ = NEW_VCALL($1); $$ = NEW_VCALL($1);
} }
| kBEGIN | kBEGIN
{
$<num>1 = ruby_sourceline;
}
bodystmt bodystmt
kEND kEND
{ {
$$ = NEW_BEGIN($2); $$ = NEW_BEGIN($3);
nd_set_line($$, $<num>1);
} }
| tLPAREN_ARG expr {lex_state = EXPR_ENDARG;} ')' | tLPAREN_ARG expr {lex_state = EXPR_ENDARG;} ')'
{ {
@ -1589,22 +1593,27 @@ opt_block_var : none
do_block : kDO_BLOCK do_block : kDO_BLOCK
{ {
$<vars>$ = dyna_push(); $<vars>$ = dyna_push();
$<num>1 = ruby_sourceline;
} }
opt_block_var opt_block_var
compstmt compstmt
kEND kEND
{ {
$$ = NEW_ITER($3, 0, $4); $$ = NEW_ITER($3, 0, $4);
fixpos($$, $3?$3:$4); nd_set_line($$, $<num>1);
dyna_pop($<vars>2); dyna_pop($<vars>2);
} }
| tLBRACE_ARG {$<vars>$ = dyna_push();} | tLBRACE_ARG
{
$<vars>$ = dyna_push();
$<num>1 = ruby_sourceline;
}
opt_block_var opt_block_var
compstmt compstmt
'}' '}'
{ {
$$ = NEW_ITER($3, 0, $4); $$ = NEW_ITER($3, 0, $4);
fixpos($$, $3?$3:$4); nd_set_line($$, $<num>1);
dyna_pop($<vars>2); dyna_pop($<vars>2);
} }
@ -1661,23 +1670,25 @@ method_call : operation paren_args
brace_block : '{' brace_block : '{'
{ {
$<vars>$ = dyna_push(); $<vars>$ = dyna_push();
$<num>1 = ruby_sourceline;
} }
opt_block_var opt_block_var
compstmt '}' compstmt '}'
{ {
$$ = NEW_ITER($3, 0, $4); $$ = NEW_ITER($3, 0, $4);
fixpos($$, $4); nd_set_line($$, $<num>1);
dyna_pop($<vars>2); dyna_pop($<vars>2);
} }
| kDO | kDO
{ {
$<vars>$ = dyna_push(); $<vars>$ = dyna_push();
$<num>1 = ruby_sourceline;
} }
opt_block_var opt_block_var
compstmt kEND compstmt kEND
{ {
$$ = NEW_ITER($3, 0, $4); $$ = NEW_ITER($3, 0, $4);
fixpos($$, $4); nd_set_line($$, $<num>1);
dyna_pop($<vars>2); dyna_pop($<vars>2);
} }
; ;

View file

@ -121,7 +121,7 @@ ORGLIBPATH = $(LIB)
#### End of system configuration section. #### #### End of system configuration section. ####
LIBRUBY_A = lib$(RUBY_INSTALL_NAME).lib LIBRUBY_A = $(RUBY_SO_NAME)-static.lib
LIBRUBY_SO = $(RUBY_SO_NAME).dll LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY) LIBRUBYARG = $(LIBRUBY)
@ -345,11 +345,13 @@ s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
s,@LIBRUBY_A@,lib$$(RUBY_INSTALL_NAME).lib,;t t s,@LIBRUBY_A@,$$(RUBY_SO_NAME)-static.lib,;t t
s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
s,@LIBRUBYARG@,$$(RUBY_SO_NAME).lib,;t t s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t s,@ENABLE_SHARED@,yes,;t t