2012-05-16 22:48:59 -04:00
|
|
|
=begin
|
|
|
|
= Native Client port of Ruby
|
|
|
|
|
|
|
|
= How to build
|
|
|
|
== Prerequisites
|
|
|
|
You need to install the following things before building NaCl port of Ruby.
|
|
|
|
* Ruby 1.9.3 or later
|
|
|
|
* Python 2.6 or later
|
Merges a patch form naclports.
* configure.in (RUBY_NACL and others): Supports PNaCl.
* dln.c: replace the old hacky dynamic loading over HTTP with nacl_io.
* file.c: tenatively use access(2) instead of eaccess.
(rb_file_load_ok): weaken with attribute but not by postprocess.
* io.c (socket.h): now NaCl has socket.h
(flock): disable here instead of nacl/ioctl.h
* nacl/GNUmakefile.in (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY):
respect path to them if they are absolute.
This helps naclports to build ruby in their source tree.
(PROGRAM_NMF, .SUFFIXES): support .pnexe for PNaCl.
(ruby.o, file.o): move the hack to attributes in ruby.c and file.c
* nacl/ioctl.h: removed. move the hack to io.c.
* nacl/nacl-config.rb: support arm, pnacl and others.
* nacl/pepper_main.c: support build in a naclports tree.
* ruby.c (rb_load_file): weaken with attribute but not by postprocess.
The patch is by sbc@google.com and the Native Client Authors.
It is available at:
* https://chromium.googlesource.com/external/naclports.git/+/873ca4910a5f9d4206306aacb4ed79c587c6a5f3/ports/ruby/nacl.patch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-10 22:11:53 -04:00
|
|
|
* NativeClient SDK pepper 37 or later
|
2012-05-16 22:48:59 -04:00
|
|
|
* GNU make
|
|
|
|
|
|
|
|
== Steps
|
|
|
|
(1) Extract all files from the tarball:
|
|
|
|
$ tar xzf ruby-X.Y.Z.tar.gz
|
2013-05-18 23:10:21 -04:00
|
|
|
(2) Set NACL_SDK_ROOT environment variable to the path to the Native Client SDK you installed:
|
Merges a patch form naclports.
* configure.in (RUBY_NACL and others): Supports PNaCl.
* dln.c: replace the old hacky dynamic loading over HTTP with nacl_io.
* file.c: tenatively use access(2) instead of eaccess.
(rb_file_load_ok): weaken with attribute but not by postprocess.
* io.c (socket.h): now NaCl has socket.h
(flock): disable here instead of nacl/ioctl.h
* nacl/GNUmakefile.in (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY):
respect path to them if they are absolute.
This helps naclports to build ruby in their source tree.
(PROGRAM_NMF, .SUFFIXES): support .pnexe for PNaCl.
(ruby.o, file.o): move the hack to attributes in ruby.c and file.c
* nacl/ioctl.h: removed. move the hack to io.c.
* nacl/nacl-config.rb: support arm, pnacl and others.
* nacl/pepper_main.c: support build in a naclports tree.
* ruby.c (rb_load_file): weaken with attribute but not by postprocess.
The patch is by sbc@google.com and the Native Client Authors.
It is available at:
* https://chromium.googlesource.com/external/naclports.git/+/873ca4910a5f9d4206306aacb4ed79c587c6a5f3/ports/ruby/nacl.patch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-10 22:11:53 -04:00
|
|
|
$ export NACL_SDK_ROOT=/home/yugui/src/nacl_sdk/pepper_37
|
2012-05-16 22:48:59 -04:00
|
|
|
(3) Configure
|
2014-10-11 09:33:14 -04:00
|
|
|
$ ./configure --prefix=/tmp/nacl-ruby --host=x86_64-nacl --with-baseruby=/path/to/ruby-1.9.3-or-later
|
2012-05-16 22:48:59 -04:00
|
|
|
(4) Make
|
|
|
|
$ make
|
|
|
|
$ make package
|
|
|
|
|
|
|
|
Now you have ruby.nexe. You can run it by sel_ldr in NaCl SDK.
|
|
|
|
|
|
|
|
"make package" installs "pepper-ruby.nexe", an example Pepper application that
|
|
|
|
embeds Ruby", and libraries to $prefix. You can run it by the following steps:
|
|
|
|
(5) Publish the $prefix directory on a web server
|
|
|
|
(6) Visit the example.html on the web server by a browser that implements Pepper 18 or later.
|
|
|
|
-- e.g., Chrome 18 implements Pepper 18, Chrome 19 implements Pepper 19, ...
|
|
|
|
|
2014-10-11 09:33:14 -04:00
|
|
|
=== Example Configurations
|
|
|
|
* x86_32 Native Client
|
|
|
|
$ ./configure --prefix=/tmp/nacl-ruby \
|
|
|
|
--host=i686-nacl \
|
|
|
|
--with-baseruby=/path/to/ruby-1.9.3-or-later
|
|
|
|
* arm Native Client
|
|
|
|
$ ./configure --prefix=/tmp/nacl-ruby \
|
|
|
|
--host=arm-nacl \
|
|
|
|
--with-newlib \
|
|
|
|
--with-baseruby=/path/to/ruby-1.9.3-or-later
|
|
|
|
* Portable Native Client
|
|
|
|
$ ./configure --prefix=/tmp/nacl-ruby \
|
|
|
|
--host=le32-nacl \
|
|
|
|
--with-newlib \
|
|
|
|
--with-static-linked-ext \
|
|
|
|
--with-baseruby=/path/to/ruby-1.9.3-or-later
|
|
|
|
|
2012-05-16 22:48:59 -04:00
|
|
|
= Copyright
|
|
|
|
* Copyright 2012 Google Inc. All Rights Reserved.
|
|
|
|
* Author: yugui@google.com (Yugui Sonoda)
|
|
|
|
=end
|