summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin.c6
-rw-r--r--common.mk7
-rw-r--r--configure.ac21
-rw-r--r--template/Makefile.in1
-rw-r--r--win32/Makefile.sub2
5 files changed, 31 insertions, 6 deletions
diff --git a/builtin.c b/builtin.c
index aef5b2c2d4..b725d8b968 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,15 +3,15 @@
#include "iseq.h"
#include "builtin.h"
-#ifdef CROSS_COMPILING
+#include "builtin_binary.inc"
+
+#ifndef BUILTIN_BINARY_SIZE
#define INCLUDED_BY_BUILTIN_C 1
#include "mini_builtin.c"
#else
-#include "builtin_binary.inc"
-
static const unsigned char *
bin4feature(const struct builtin_binary *bb, const char *feature, size_t *psize)
{
diff --git a/common.mk b/common.mk
index 2732a1ea4a..070ca91f75 100644
--- a/common.mk
+++ b/common.mk
@@ -1301,9 +1301,12 @@ preludes: {$(srcdir)}golf_prelude.c
$(ECHO) making $@
$(Q) $(BASERUBY) $(tooldir)/mk_builtin_loader.rb $<
-builtin_binary.inc: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir)/template/builtin_binary.inc.tmpl
+$(BUILTIN_BINARY:yes=built)in_binary.inc: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir)/template/builtin_binary.inc.tmpl
$(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ \
- $(srcdir)/template/builtin_binary.inc.tmpl -- --cross=$(CROSS_COMPILING)
+ $(srcdir)/template/builtin_binary.inc.tmpl
+
+$(BUILTIN_BINARY:no=builtin)_binary.inc:
+ $(Q) echo> $@ // empty $(@F)
$(BUILTIN_RB_INCS): $(top_srcdir)/tool/mk_builtin_loader.rb
diff --git a/configure.ac b/configure.ac
index bf6d9af1f1..e0057d974f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1489,6 +1489,25 @@ RUBY_CHECK_SIZEOF(float)
RUBY_CHECK_SIZEOF(double)
RUBY_CHECK_SIZEOF(time_t, [long "long long"], [], [@%:@include <time.h>])
RUBY_CHECK_SIZEOF(clock_t, [], [], [@%:@include <time.h>])
+AC_SUBST(X_BUILTIN_BINARY, yes)
+AS_IF([test "$cross_compiling" = yes],
+[dnl miniruby cannot run if cross compiling
+ X_BUILTIN_BINARY=no
+],
+[
+ AS_CASE([ac_cv_sizeof_voidp],
+ [[1-9]*], [dnl fixed value
+ ],
+ [
+ AC_CACHE_CHECK([word size], [rb_cv_word_size],
+ [for w in 4 8; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@if SIZEOF_VOIDP != ${w}
+ @%:@error SIZEOF_VOIDP
+ @%:@endif]])], [rb_cv_word_size=${w}; break])
+ done])
+ AS_IF([test -z $rb_cv_word_size], [X_BUILTIN_BINARY=no])
+ ])
+])
AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
[rb_cv_packed_struct=no
@@ -4482,7 +4501,7 @@ guard=INCLUDE_RUBY_CONFIG_H
{
echo "#ifndef $guard"
echo "#define $guard 1"
- grep -v "^#define PACKAGE_" confdefs.h
+ sed "/^@%:@define PACKAGE_/d;s/ *$//" confdefs.h
echo "#endif /* $guard */"
} | tr -d '\015' |
(
diff --git a/template/Makefile.in b/template/Makefile.in
index 93fa02d9d7..9e553affac 100644
--- a/template/Makefile.in
+++ b/template/Makefile.in
@@ -65,6 +65,7 @@ rubyarchhdrdir = @rubyarchhdrdir@
ruby_version = @ruby_version@
RUBY_VERSION_NAME = @RUBY_VERSION_NAME@
UNIVERSAL_ARCHNAMES = @UNIVERSAL_ARCHNAMES@
+BUILTIN_BINARY = @X_BUILTIN_BINARY@
TESTUI = console
TESTS =
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index ab1e46a4b0..3d4bbc87e8 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -433,8 +433,10 @@ THREAD_IMPL_SRC = thread_$(THREAD_MODEL).c
!if "$(CROSS_COMPILING)" == "yes"
PREP = $(arch)-fake.rb
+BUILTIN_BINARY = no
!else
PREP = miniruby$(EXEEXT)
+BUILTIN_BINARY = yes
!endif
!if !defined(EXTSTATIC)