* symbian/README.SYMBIAN: symbian support added. great appreciate

to <alexandre.zavorine at symbian.com>.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2009-01-15 01:55:41 +00:00
Родитель c6af6b1b94
Коммит 5932de4991
7 изменённых файлов: 2228 добавлений и 0 удалений

98
symbian/README.SYMBIAN Normal file
Просмотреть файл

@ -0,0 +1,98 @@
=begin
= How to build ruby using Symbian SDK
== Requirement
(1) Nokia S60 SDK version 3.1 or later from http://www.forum.nokia.com/Resources_and_Information/Tools/Platforms/S60_Platform_SDKs/ with OpenC plugin installed.
Note: if you want to build dynamic extensions support you need to install the latest version of GCC compiler from http://www.codesourcery.com/gnu_toolchains/arm/portal/release643. After that you need to apply a patch below to a header file (SDK_ROOT)\epoc32\include\gcce\gcce.h
11c11
<
---
> @released
18a19
>
21a23
>
24a27,29
> #define IMPORT_D __declspec(dllimport)
> #define EXPORT_D __declspec(dllexport)
>
81,82c86,87
< #define __NAKED__ __asm
< #define ____ONLY_USE_NAKED_IN_CIA____ __asm
---
> #define __NAKED__ __declspec(naked)
> #define ____ONLY_USE_NAKED_IN_CIA____ __declspec(naked)
92,96c97,98
< namespace std {
< extern "C" {
< #endif /* __cplusplus */
<
< typedef struct __va_list { void *__ap; } va_list;
---
> namespace std { extern "C" {
> #endif
97a100,104
> #if __GNUC__ < 4
> typedef struct __va_list { void *__ap; } va_list;
> #else
> typedef __builtin_va_list va_list;
> #endif
100,102c107
< } /* extern "C" */
< } /* namespace std */
<
---
> } }
105a111
> #if __GNUC__ < 4
107,109c113,119
< #define va_arg(ap, type) __builtin_va_arg(ap.__ap, type)
< #define va_end(ap) __builtin_va_end(ap.__ap)
<
---
> #define va_arg(ap, type) __builtin_va_arg(ap.__ap, type)
> #define va_end(ap) __builtin_va_end(ap.__ap)
> #else
> #define va_start(ap, parmN) __builtin_va_start(ap, parmN)
> #define va_arg(ap, type) __builtin_va_arg(ap, type)
> #define va_end(ap) __builtin_va_end(ap)
> #endif
140,141c150,152
< // Deal with operator new issues here
< #include "../symcpp.h"
---
> #ifndef __SYMBIAN_STDCPP_SUPPORT__
> #include "../symcpp.h"
> #endif
151a163
>
(2) If you want to build from SVN source, following command line binaries are required that are not a part of Symbain SDK.
* sed
* ruby 1.8
* svn
== How to compile and install
(1) Execute symbian\configure.bat on your build directory (symbian is default).
(3) Run `bldmake bldfiles'
(4) Run `abld build gcce urel'
(5) Run `makesis ruby.pkg'
This command will create unsigned installation file ruby.sis. To sign it follow the guidlines from www.symbiansigned.com
== Known problems
Currently gems are not supported.
Currently signals are not supported.
=end

114
symbian/configure.bat Normal file
Просмотреть файл

@ -0,0 +1,114 @@
@echo off
setlocal
echo> ~tmp~.mak ####
echo> ~ver~.mak ####
:loop
if "%1" == "" goto :end
if "%1" == "--srcdir" goto :srcdir
if "%1" == "srcdir" goto :srcdir
if "%1" == "--target" goto :target
if "%1" == "target" goto :target
if "%1" == "--with-static-linked-ext" goto :extstatic
if "%1" == "--extout" goto :extout
if "%1" == "--with-baseruby" goto :baseruby
if "%1" == "-h" goto :help
if "%1" == "--help" goto :help
shift
goto :loop
:srcdir
echo>> ~tmp~.mak srcdir=%2
echo> ~ver~.mak srcdir=%2
set srcdir=%2
shift
shift
goto :loop
:target
echo>> ~tmp~.mak arch=%2
set arch=%2
shift
shift
goto :loop
:extstatic
echo>> ~tmp~.mak EXTSTATIC=static
shift
goto :loop
:extout
echo>> ~tmp~.mak EXTOUT=%2
set EXTOUT=%2
shift
shift
goto :loop
:baseruby
echo>> ~tmp~.mak BASERUBY=%2
set BASERUBY=%2
shift
shift
goto :loop
:help
echo Configuration:
echo --help display this help
echo --srcdir=DIR find the sources in DIR [configure dir or ..']
echo System types:
echo --target=TARGET configure for TARGET [arm-symbianelf]
echo Optional Package:
echo --with-baseruby=RUBY use RUBY as baseruby [ruby]
echo --with-static-linked-ext link external modules statically
del ~tmp~.mak > nul
goto :exit
:end
echo>> ~ver~.mak CC = arm-none-symbianelf-gcc
echo>> ~ver~.mak CPP = $(CC) -E
if "%srcdir%" == "" echo>> ~ver~.mak srcdir=..
echo>> ~ver~.mak all:
echo>> ~ver~.mak ^ @echo^> ~tmp~.c #define RUBY_REVISION 0
echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c #include "version.h"
echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c MAJOR = RUBY_VERSION_MAJOR
echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c MINOR = RUBY_VERSION_MINOR
echo>> ~ver~.mak ^ @echo^>^> ~tmp~.c TEENY = RUBY_VERSION_TEENY
echo>> ~ver~.mak ^ @$(CPP) -I$(srcdir) ~tmp~.c ^| find "=" ^>^>~tmp~.mak
echo>> ~ver~.mak ^ @del /Q ~tmp~.c
make -f ~ver~.mak
del /Q ~ver~.mak
:: Defaults
if "%srcdir%" == "" echo>> ~tmp~.mak srcdir=..
if "%arch%" == "" echo>> ~tmp~.mak arch=arm-symbianelf
if "%EXTOUT%" == "" echo>> ~tmp~.mak EXTOUT=$(srcdir)/.ext
if "%BASERUBY%" == "" echo>> ~tmp~.mak BASERUBY=ruby
::
echo>> ~tmp~.mak arch_hdrdir = $(EXTOUT)/include/$(arch)
echo>> ~tmp~.mak hdrdir = $(srcdir)/include
echo>> ~tmp~.mak ifndef EXTSTATIC
echo>> ~tmp~.mak EXT_LIST=stringio bigdecimal
echo>> ~tmp~.mak endif
echo>> ~tmp~.mak all:
echo>> ~tmp~.mak ^ @if not exist $(subst /,\,$(arch_hdrdir))\ruby\nul md $(subst /,\,$(arch_hdrdir)\ruby)
echo>> ~tmp~.mak ^ $(call config_h,$(subst /,\,$(arch_hdrdir))\ruby\config.h)
echo>> ~tmp~.mak ^ $(call ruby_mmp,ruby.mmp,64000,2000000,16000000)
echo>> ~tmp~.mak ifndef EXTSTATIC
echo>> ~tmp~.mak ^ $(call ext_mmp,stringio,$(STRINGIO_UID))
echo>> ~tmp~.mak ^ $(call ext_def,stringio)
echo>> ~tmp~.mak ^ $(call ext_pkg,stringio,$(STRINGIO_UID))
echo>> ~tmp~.mak ^ $(call ext_mmp,bigdecimal,$(BIGDECIMAL_UID),,libm.lib)
echo>> ~tmp~.mak ^ $(call ext_def,bigdecimal)
echo>> ~tmp~.mak ^ $(call ext_pkg,bigdecimal,$(BIGDECIMAL_UID))
echo>> ~tmp~.mak ^ $(ext_bigdecimal_pkg_lib_append)
echo>> ~tmp~.mak endif
echo>> ~tmp~.mak ^ $(call pre_build_mk,pre-build.mk)
echo>> ~tmp~.mak ^ $(call bld_inf,bld.inf)
echo>> ~tmp~.mak ^ $(call ruby_pkg,ruby.pkg)
echo>> ~tmp~.mak include setup
make -f ~tmp~.mak
del /Q ~tmp~.mak
:exit

18
symbian/missing-aeabi.c Normal file
Просмотреть файл

@ -0,0 +1,18 @@
#if __GNUC__ > 3
/* GCCE 4.3.2 generates these functions which are are missing from exports (they are simple aliases) */
extern int __aeabi_uidivmod(unsigned int a, unsigned int b);
extern int __aeabi_idivmod(int a, int b);
int __aeabi_idiv(int a, int b)
{
return __aeabi_idivmod(a, b);
}
int __aeabi_uidiv(unsigned int a, unsigned int b)
{
return __aeabi_uidivmod(a, b);
}
#endif

101
symbian/missing-pips.c Normal file
Просмотреть файл

@ -0,0 +1,101 @@
//#include "symbian.h"
#include <sys/signal.h>
#include <sys/resource.h>
#include <fcntl.h>
#include <pthreadtypes.h>
char **environ = 0;
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
int sigfillset(sigset_t *set);
int sigdelset(sigset_t *set, int signum);
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
int raise(int sig);
int kill(pid_t pid, int sig);
int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
int execv(const char *path, char *const argv[]);
int pthread_kill(pthread_t thread, int sig);
sighandler_t signal(int signum, sighandler_t handler)
{
return (sighandler_t)0;
}
int sigfillset(sigset_t *set)
{
return 0;
}
int sigdelset(sigset_t *set, int signum)
{
return 0;
}
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
{
return 0;
}
int raise(int sig)
{
return 0;
}
int kill(pid_t pid, int sig)
{
return 0;
}
int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset)
{
return -1;
}
int execv(const char *path, char *const argv[])
{
return 0;
}
int pthread_kill(pthread_t thread, int sig)
{
return -1;
}
int sigmask(int signum) {
return -1;
}
int sigblock(int mask) {
return -1;
}
int sigsetmask(int mask) {
return -1;
}
sighandler_t posix_signal(int signum, sighandler_t handler)
{
return signal((signum),(handler));
}
int getrlimit(int resource, struct rlimit *rlp)
{
return 0;
}
int setrlimit(int resource, const struct rlimit *rlp)
{
return 0;
}
int getrusage(int who, struct rusage *r_usage)
{
return 0;
}

74
symbian/pre-build Normal file
Просмотреть файл

@ -0,0 +1,74 @@
YACC = bison
COMSPEC=cmd /C
IFCHANGE = $(COMSPEC) $(srcdir)\win32\ifchange.bat
RM = del
MV = $(COMSPEC) move
VCS=svn
parse.c: $(srcdir)\parse.y $(srcdir)\tool\ytab.sed
$(YACC) -d $(YFLAGS) -o y.tab.c $(<:\\=/)
sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
@$(MV) $@.new $(@)
sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse\.y/d" y.tab.h > $(@:.c=.h).new
@$(IFCHANGE) $(@:.c=.h) $(@:.c=.h).new
@$(RM) y.tab.c y.tab.h
INSNS = optinsn.inc insns.inc insns_info.inc vmtc.inc vm.inc
INSNS2VMOPT = --srcdir="$(srcdir)"
$(INSNS): $(srcdir)/insns.def $(srcdir)/vm_opts.h $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def
$(BASERUBY) -Ks $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
minsns.inc: $(srcdir)/template/minsns.inc.tmpl
opt_sc.inc: $(srcdir)/template/opt_sc.inc.tmpl
optinsn.inc: $(srcdir)/template/optinsn.inc.tmpl
optunifs.inc: $(srcdir)/template/optunifs.inc.tmpl
insns.inc: $(srcdir)/template/insns.inc.tmpl
insns_info.inc: $(srcdir)/template/insns_info.inc.tmpl
vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl
vm.inc: $(srcdir)/template/vm.inc.tmpl
node_name.inc: $(srcdir)/node.h
$(BASERUBY) -n $(srcdir)/tool/node_name.rb $? > $@
known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
$(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
newline.c:
$(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo newline.c $(srcdir)/enc/trans/newline.trans
miniprelude.c: $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
$(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
$(srcdir)/revision.h: $(srcdir)/version.h $(srcdir)/ChangeLog
@set LC_MESSAGES=C
-@$(SET_LC_MESSAGES) $(VCS) info "$(@D)" | \
sed -n "s/.*Rev:/#define RUBY_REVISION/p" > "$@.tmp"
@$(IFCHANGE) "$@" "$@.tmp"
incs: $(srcdir)/revision.h $(INSNS) node_name.inc known_errors.inc
srcs: parse.c newline.c lex.c miniprelude.c
lex.c: $(srcdir)\lex.c.blt
copy $(?:/=\) $@
MAKMAKE: incs srcs
CLEAN :
del $(INSNS) node_name.inc known_errors.inc $(srcdir)\revision.h
$(RM) parse.c parse.h newline.c lex.c miniprelude.c
BLD LIB CLEANLIB RESOURCE FREEZE SAVESPACE RELEASABLES FINAL :

1407
symbian/rubyu.def Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

416
symbian/setup Normal file
Просмотреть файл

@ -0,0 +1,416 @@
define config_h
@echo>$(1) #define HAVE_PIPS 1
@echo>>$(1) #define STDC_HEADERS 1
@echo>>$(1) #define HAVE_SYS_TYPES_H 1
@echo>>$(1) #define HAVE_SYS_STAT_H 1
@echo>>$(1) #define HAVE_STDLIB_H 1
@echo>>$(1) #define HAVE_STRING_H 1
@echo>>$(1) #define HAVE_MEMORY_H 1
@echo>>$(1) #define HAVE_STRINGS_H 1
@echo>>$(1) #define HAVE_INTTYPES_H 1
@echo>>$(1) #define HAVE_STDINT_H 1
@echo>>$(1) #define HAVE_UNISTD_H 1
@echo>>$(1) #define HAVE_LONG_LONG 1
@echo>>$(1) #define HAVE_OFF_T 1
@echo>>$(1) #define SIZEOF_INT 4
@echo>>$(1) #define SIZEOF_SHORT 2
@echo>>$(1) #define SIZEOF_LONG 4
@echo>>$(1) #define SIZEOF_LONG_LONG 8
@echo>>$(1) #define SIZEOF___INT64 8
@echo>>$(1) #define SIZEOF_OFF_T 8
@echo>>$(1) #define SIZEOF_VOIDP 4
@echo>>$(1) #define SIZEOF_FLOAT 4
@echo>>$(1) #define SIZEOF_DOUBLE 8
@echo>>$(1) #define SIZEOF_TIME_T 4
@echo>>$(1) #define SIZEOF_SIZE_T 4
@echo>>$(1) #define SIZEOF_PTRDIFF_T 4
@echo>>$(1) #define rb_pid_t pid_t
@echo>>$(1) #define PIDT2NUM(v) LONG2NUM(v)
@echo>>$(1) #define NUM2PIDT(v) NUM2LONG(v)
@echo>>$(1) #define rb_uid_t uid_t
@echo>>$(1) #define UIDT2NUM(v) ULONG2NUM(v)
@echo>>$(1) #define NUM2UIDT(v) NUM2ULONG(v)
@echo>>$(1) #define rb_gid_t gid_t
@echo>>$(1) #define GIDT2NUM(v) ULONG2NUM(v)
@echo>>$(1) #define NUM2GIDT(v) NUM2ULONG(v)
@echo>>$(1) #define HAVE_PROTOTYPES 1
@echo>>$(1) #define TOKEN_PASTE(x,y) x##y
@echo>>$(1) #define STRINGIZE(expr) STRINGIZE0(expr)
@echo>>$(1) #define HAVE_STDARG_PROTOTYPES 1
@echo>>$(1) #define NORETURN(x) __attribute__ ((noreturn)) x
@echo>>$(1) #define DEPRECATED(x) __attribute__ ((deprecated)) x
@echo>>$(1) #define NOINLINE(x) __attribute__ ((noinline)) x
@echo>>$(1) #define FUNC_STDCALL(x) x
@echo>>$(1) #define FUNC_CDECL(x) x
@echo>>$(1) #define FUNC_FASTCALL(x) x
@echo>>$(1) #define HAVE_DECL_SYS_NERR 0
@echo>>$(1) #define HAVE_LIBDL 1
@echo>>$(1) #define HAVE_DIRENT_H 1
@echo>>$(1) #define STDC_HEADERS 1
@echo>>$(1) #define HAVE_SYS_WAIT_H 1
@echo>>$(1) #define HAVE_STDLIB_H 1
@echo>>$(1) #define HAVE_STRING_H 1
@echo>>$(1) #define HAVE_UNISTD_H 1
@echo>>$(1) #define HAVE_LIMITS_H 1
@echo>>$(1) #define HAVE_SYS_IOCTL_H 1
@echo>>$(1) #define HAVE_FCNTL_H 1
@echo>>$(1) #define HAVE_SYS_FCNTL_H 1
@echo>>$(1) #define HAVE_SYS_SELECT_H 1
@echo>>$(1) #define HAVE_SYS_TIME_H 1
@echo>>$(1) #define HAVE_SYS_PARAM_H 1
@echo>>$(1) #define HAVE_PWD_H 1
@echo>>$(1) #define HAVE_GRP_H 1
@echo>>$(1) #define HAVE_UTIME_H 1
@echo>>$(1) #define HAVE_MEMORY_H 1
@echo>>$(1) #define HAVE_SYS_RESOURCE_H 1
@echo>>$(1) #define HAVE_FLOAT_H 1
@echo>>$(1) #define HAVE_PTHREAD_H 1
@echo>>$(1) #define HAVE_LANGINFO_H 1
@echo>>$(1) #define HAVE_LOCALE_H 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
@echo>>$(1) #define HAVE_ST_BLKSIZE 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_BLOCKS 1
@echo>>$(1) #define HAVE_ST_BLOCKS 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_RDEV 1
@echo>>$(1) #define HAVE_ST_RDEV 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_ATIMESPEC 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_MTIMESPEC 1
@echo>>$(1) #define HAVE_STRUCT_STAT_ST_CTIMESPEC 1
@echo>>$(1) #define HAVE_STRUCT_TIMESPEC 1
@echo>>$(1) #define HAVE_RB_FD_INIT 1
@echo>>$(1) #define GETGROUPS_T gid_t
@echo>>$(1) #define RETSIGTYPE void
@echo>>$(1) #define HAVE_ALLOCA 1
@echo>>$(1) #define HAVE_DUP2 1
@echo>>$(1) #define HAVE_MEMMOVE 1
@echo>>$(1) #define HAVE_STRCASECMP 1
@echo>>$(1) #define HAVE_STRNCASECMP 1
@echo>>$(1) #define HAVE_STRERROR 1
@echo>>$(1) #define HAVE_STRFTIME 1
@echo>>$(1) #define HAVE_STRCHR 1
@echo>>$(1) #define HAVE_STRSTR 1
@echo>>$(1) #define HAVE_STRTOUL 1
@echo>>$(1) #define HAVE_VSNPRINTF 1
@echo>>$(1) #define HAVE_ISNAN 1
@echo>>$(1) #define HAVE_FINITE 1
@echo>>$(1) #define HAVE_ISINF 1
@echo>>$(1) #define HAVE_HYPOT 1
@echo>>$(1) #define HAVE_ACOSH 1
@echo>>$(1) #define HAVE_ERF 1
@echo>>$(1) #define HAVE_STRLCPY 1
@echo>>$(1) #define HAVE_STRLCAT 1
@echo>>$(1) #define HAVE_FMOD 1
@echo>>$(1) #define HAVE_WAITPID 1
@echo>>$(1) #define HAVE_FSYNC 1
@echo>>$(1) #define HAVE_GETCWD 1
@echo>>$(1) #define HAVE_TRUNCATE 1
@echo>>$(1) #define HAVE_UTIMES 1
@echo>>$(1) #define HAVE_FCNTL 1
@echo>>$(1) #define HAVE_LSTAT 1
@echo>>$(1) #define HAVE_LINK 1
@echo>>$(1) #define HAVE_SYMLINK 1
@echo>>$(1) #define HAVE_READLINK 1
@echo>>$(1) #define HAVE_SETEUID 1
@echo>>$(1) #define HAVE_SETREUID 1
@echo>>$(1) #define HAVE_SETEGID 1
@echo>>$(1) #define HAVE_SETREGID 1
@echo>>$(1) #define HAVE_ISSETUGID 1
@echo>>$(1) #define HAVE_LCHOWN 1
@echo>>$(1) #define HAVE_GETPGRP 1
@echo>>$(1) #define HAVE_SETPGRP 1
@echo>>$(1) #define HAVE_GETPGID 1
@echo>>$(1) #define HAVE_SETPGID 1
@echo>>$(1) #define HAVE_INITGROUPS 1
@echo>>$(1) #define HAVE_GETGROUPS 1
@echo>>$(1) #define HAVE_SETGROUPS 1
@echo>>$(1) #define HAVE_GETPRIORITY 1
@echo>>$(1) #define HAVE_SYSCONF 1
@echo>>$(1) #define HAVE_DLOPEN 1
@echo>>$(1) #define HAVE_SIGACTION 1
@echo>>$(1) #define HAVE_VSNPRINTF 1
@echo>>$(1) #define HAVE_SNPRINTF 1
@echo>>$(1) #define HAVE_SETSID 1
@echo>>$(1) #define HAVE_TELLDIR 1
@echo>>$(1) #define HAVE_SEEKDIR 1
@echo>>$(1) #define HAVE_FCHMOD 1
@echo>>$(1) #define HAVE_COSH 1
@echo>>$(1) #define HAVE_SINH 1
@echo>>$(1) #define HAVE_TANH 1
@echo>>$(1) #define HAVE_ROUND 1
@echo>>$(1) #define HAVE_SETUID 1
@echo>>$(1) #define HAVE_SETGID 1
@echo>>$(1) #define HAVE_SETENV 1
@echo>>$(1) #define HAVE_UNSETENV 1
@echo>>$(1) #define HAVE_MKTIME 1
@echo>>$(1) #define HAVE_CLOCK_GETTIME 1
@echo>>$(1) #define HAVE_GETTIMEOFDAY 1
@echo>>$(1) #define HAVE_STRUCT_TM_TM_ZONE 1
@echo>>$(1) #define HAVE_TM_ZONE 1
@echo>>$(1) #define HAVE_STRUCT_TM_TM_GMTOFF 1
@echo>>$(1) #define NEGATIVE_TIME_T 1
@echo>>$(1) #define RSHIFT(x,y) ((x)^>^>(int)y)
@echo>>$(1) #define DOSISH 1
@echo>>$(1) #define DOSISH_DRIVE_LETTER
@echo>>$(1) #define RUBY_JMP_BUF jmp_buf
@echo>>$(1) #define RUBY_SETJMP(env) _setjmp(env)
@echo>>$(1) #define RUBY_LONGJMP(env,val) _longjmp(env,val)
@echo>>$(1) #define FILE_COUNT _r
@echo>>$(1) #define FILE_READPTR _p
@echo>>$(1) #define HAVE__SC_CLK_TCK 1
@echo>>$(1) #define STACK_GROW_DIRECTION -1
@echo>>$(1) #define _REENTRANT 1
@echo>>$(1) #define _THREAD_SAFE 1
@echo>>$(1) #define HAVE_LIBPTHREAD 1
@echo>>$(1) #define HAVE_NANOSLEEP 1
@echo>>$(1) #define USE_ELF 1
@echo>>$(1) #define DLEXT_MAXLEN 4
@echo>>$(1) #define DLEXT ".dll"
@echo>>$(1) #define RUBY_LIB "C:/Data/Ruby/lib/$(MAJOR).$(MINOR).$(TEENY)"
@echo>>$(1) #define RUBY_SITE_LIB "E:/Data/Ruby/lib"
@echo>>$(1) #define RUBY_SITE_LIB2 "E:/Data/Ruby/lib/$(MAJOR).$(MINOR).$(TEENY)"
@echo>>$(1) #define RUBY_VENDOR_LIB "C:/Data/Ruby/lib"
@echo>>$(1) #define RUBY_VENDOR_LIB2 "C:/Data/Ruby/lib/$(MAJOR).$(MINOR).$(TEENY)"
@echo>>$(1) #define RUBY_PLATFORM "$(arch)"
@echo>>$(1) #define RUBY_ARCHLIB "C:/Data/Ruby/$(MAJOR).$(MINOR).$(TEENY)/$(arch)"
@echo>>$(1) #define RUBY_SITE_ARCHLIB "E:/Data/Ruby/lib/$(MAJOR).$(MINOR).$(TEENY)/$(arch)"
@echo>>$(1) #define RUBY_VENDOR_ARCHLIB "C:/Data/Ruby/lib/$(MAJOR).$(MINOR).$(TEENY)/$(arch)"
endef
define pre_build_mk
@echo>$(1) srcdir = $(srcdir)
@echo>>$(1) BASERUBY = $(BASERUBY)
@echo>>$(1) include pre-build
endef
define bld_inf
@echo>$(1) PRJ_PLATFORMS
@echo>>$(1) GCCE $(2)
@echo>>$(1) PRJ_MMPFILES
@echo>>$(1) gnumakefile pre-build.mk
@echo>>$(1) ruby.mmp
@if not "$(EXT_LIST)" == "" for %%f in ($(EXT_LIST)) do echo>>$(1) %%f.mmp
endef
ifndef EXTSTATIC
DLN=dln
else
DLN=dmydln
endif
define ruby_mmp
@echo>$(1) TARGET Ruby.exe
@echo>>$(1) TARGETTYPE EXEXP
@echo>>$(1) UID 0x100039CE $(RUBY_UID)
@echo>>$(1) VENDORID 0
@echo>>$(1) SECUREID $(RUBY_UID)
@echo>>$(1) CAPABILITY LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData
@echo>>$(1) USERINCLUDE $(subst /,\,$(arch_hdrdir))
@echo>>$(1) USERINCLUDE .
@echo>>$(1) USERINCLUDE $(subst /,\,$(srcdir))
@echo>>$(1) USERINCLUDE $(subst /,\,$(hdrdir))
@echo>>$(1) USERINCLUDE $(subst /,\,$(hdrdir))\ruby
@echo>>$(1) USERINCLUDE $(subst /,\,$(srcdir))\missing
@echo>>$(1) SYSTEMINCLUDE $(subst /,\,$(arch_hdrdir))
@echo>>$(1) SYSTEMINCLUDE .
@echo>>$(1) SYSTEMINCLUDE $(subst /,\,$(srcdir))
@echo>>$(1) SYSTEMINCLUDE $(subst /,\,$(hdrdir))
@echo>>$(1) SYSTEMINCLUDE $(subst /,\,$(hdrdir))\ruby
@echo>>$(1) SYSTEMINCLUDE $(subst /,\,$(srcdir))\missing
@echo>>$(1) SYSTEMINCLUDE \epoc32\include
@echo>>$(1) SYSTEMINCLUDE \epoc32\include\stdapis
@echo>>$(1) SOURCEPATH $(subst /,\,$(srcdir))
@echo>>$(1) SOURCE array.c
@echo>>$(1) SOURCE bignum.c
@echo>>$(1) SOURCE blockinlining.c
@echo>>$(1) SOURCE class.c
@echo>>$(1) SOURCE compar.c
@echo>>$(1) SOURCE compile.c
@echo>>$(1) SOURCE cont.c
@echo>>$(1) SOURCE debug.c
@echo>>$(1) SOURCE dir.c
@echo>>$(1) SOURCE $(DLN).c
@echo>>$(1) SOURCE dmyext.c
@echo>>$(1) SOURCE encoding.c
@echo>>$(1) SOURCE enum.c
@echo>>$(1) SOURCE enumerator.c
@echo>>$(1) SOURCE error.c
@echo>>$(1) SOURCE eval.c
@echo>>$(1) SOURCE file.c
@echo>>$(1) SOURCE gc.c
@echo>>$(1) SOURCE hash.c
@echo>>$(1) SOURCE inits.c
@echo>>$(1) SOURCE io.c
@echo>>$(1) SOURCE iseq.c
@echo>>$(1) SOURCE load.c
@echo>>$(1) SOURCE main.c
@echo>>$(1) SOURCE marshal.c
@echo>>$(1) SOURCE math.c
@echo>>$(1) SOURCE numeric.c
@echo>>$(1) SOURCE object.c
@echo>>$(1) SOURCE pack.c
@echo>>$(1) SOURCE proc.c
@echo>>$(1) SOURCE process.c
@echo>>$(1) SOURCE random.c
@echo>>$(1) SOURCE range.c
@echo>>$(1) SOURCE re.c
@echo>>$(1) SOURCE regcomp.c
@echo>>$(1) SOURCE regenc.c
@echo>>$(1) SOURCE regerror.c
@echo>>$(1) SOURCE regexec.c
@echo>>$(1) SOURCE regparse.c
@echo>>$(1) SOURCE regsyntax.c
@echo>>$(1) SOURCE ruby.c
@echo>>$(1) SOURCE signal.c
@echo>>$(1) SOURCE sprintf.c
@echo>>$(1) SOURCE st.c
@echo>>$(1) SOURCE string.c
@echo>>$(1) SOURCE struct.c
@echo>>$(1) SOURCE thread.c
@echo>>$(1) SOURCE time.c
@echo>>$(1) SOURCE transcode.c
@echo>>$(1) SOURCE util.c
@echo>>$(1) SOURCE variable.c
@echo>>$(1) SOURCE version.c
@echo>>$(1) SOURCE vm.c
@echo>>$(1) SOURCE vm_dump.c
@echo>>$(1) SOURCE safe.c
@echo>>$(1) SOURCE rational.c
@echo>>$(1) SOURCE strftime.c
@echo>>$(1) SOURCE complex.c
@echo>>$(1) SOURCEPATH $(subst /,\,$(srcdir))\missing
@echo>>$(1) SOURCE vsnprintf.c
@echo>>$(1) SOURCE alloca.c
@echo>>$(1) SOURCE crypt.c
@echo>>$(1) SOURCE tgamma.c
@echo>>$(1) SOURCE flock.c
@echo>>$(1) SOURCEPATH $(subst /,\,$(srcdir))\enc
@echo>>$(1) SOURCE ascii.c
@echo>>$(1) SOURCE unicode.c
@echo>>$(1) SOURCE utf_8.c
@echo>>$(1) SOURCE us_ascii.c
@echo>>$(1) SOURCEPATH .
@echo>>$(1) SOURCE miniprelude.c
@echo>>$(1) SOURCE parse.c
@echo>>$(1) SOURCE newline.c
@echo>>$(1) SOURCE missing-pips.c
@echo>>$(1) SOURCE missing-aeabi.c
@echo>>$(1) LIBRARY euser.lib
@echo>>$(1) LIBRARY libc.lib
@echo>>$(1) LIBRARY libm.lib
@echo>>$(1) LIBRARY libpthread.lib
@echo>>$(1) LIBRARY libdl.lib
@echo>>$(1) STATICLIBRARY libcrt0.lib
@echo>>$(1) EPOCSTACKSIZE $(2)
@echo>>$(1) EPOCHEAPSIZE $(3) $(4)
@if "$(EXTSTATIC)" == "" echo>>$(1) OPTION GCCE -fvisibility=default
@if "$(EXTSTATIC)" == "" echo>>$(1) DEFFILE .\Ruby.def
endef
define ext_mmp
@echo>$(1).mmp TARGET $(1).dll
@echo>>$(1).mmp TARGETTYPE DLL
@echo>>$(1).mmp UID 0x10004262 $(2)
@echo>>$(1).mmp VENDORID 0
@echo>>$(1).mmp SECUREID $(2)
@echo>>$(1).mmp CAPABILITY LocalServices NetworkServices ReadUserData UserEnvironment WriteUserData
@echo>>$(1).mmp USERINCLUDE $(subst /,\,$(arch_hdrdir))
@echo>>$(1).mmp USERINCLUDE $(subst /,\,$(srcdir))
@echo>>$(1).mmp USERINCLUDE $(subst /,\,$(hdrdir))
@echo>>$(1).mmp USERINCLUDE $(subst /,\,$(hdrdir))\ruby
@echo>>$(1).mmp USERINCLUDE $(subst /,\,$(srcdir))\missing
@echo>>$(1).mmp SYSTEMINCLUDE $(subst /,\,$(arch_hdrdir))
@echo>>$(1).mmp SYSTEMINCLUDE $(subst /,\,$(srcdir))
@echo>>$(1).mmp SYSTEMINCLUDE $(subst /,\,$(hdrdir))
@echo>>$(1).mmp SYSTEMINCLUDE $(subst /,\,$(hdrdir))\ruby
@echo>>$(1).mmp SYSTEMINCLUDE $(subst /,\,$(srcdir))\missing
@echo>>$(1).mmp SYSTEMINCLUDE \epoc32\include\stdapis
@echo>>$(1).mmp SOURCEPATH $(subst /,\,$(srcdir))\ext\$(1)
@echo>>$(1).mmp SOURCE $(1).c $(3)
@echo>>$(1).mmp LIBRARY euser.lib
@echo>>$(1).mmp LIBRARY libc.lib $(4)
@echo>>$(1).mmp LIBRARY Ruby.lib
@echo>>$(1).mmp OPTION GCCE -fvisibility=default
@echo>>$(1).mmp DEFFILE .\$(1).def
endef
define ext_def
@echo>$(1)u.def EXPORTS
@echo>>$(1)u.def ^ Init_$(1) @ 1 NONAME
endef
define ruby_pkg
@echo>$(1) ^&EN
@echo>>$(1) #{"Ruby Core"},($(RUBY_UID)),$(MAJOR),$(MINOR),$(TEENY)
@echo>>$(1) %%{"Symbian Research"}
@echo>>$(1) :"Symbian Research"
@echo>>$(1) (0x20013851), 1, 3, 0, {"Symbian OS PIPS"}
@echo>>$(1) [0x101F7961], 0, 0, 0, {"S60ProductID"}
@echo>>$(1) "$(EPOCROOT)epoc32\release\gcce\urel\Ruby.exe"-"!:\sys\bin\Ruby.exe"
endef
define ext_pkg
@echo>ruby_$(1).pkg ^&EN
@echo>>ruby_$(1).pkg #{"Ruby Extension: $(1)"},($(2)),$(MAJOR),$(MINOR),$(TEENY)
@echo>>ruby_$(1).pkg %%{"Symbian Research"}
@echo>>ruby_$(1).pkg :"Symbian Research"
@echo>>ruby_$(1).pkg ($(RUBY_UID)), 1, 9, 1, {"Ruby Core"}
@echo>>ruby_$(1).pkg [0x101F7961], 0, 0, 0, {"S60ProductID"}
@echo>>ruby_$(1).pkg "$(EPOCROOT)epoc32\release\gcce\urel\$(1).dll"-"!:\sys\bin\$(1).dll"
@echo>>ruby_$(1).pkg "$(EPOCROOT)epoc32\release\gcce\urel\$(1).dll"-"!:\Data\Ruby\$(MAJOR).$(MINOR).$(TEENY)\$(arch)\$(1).dll"
endef
define ext_bigdecimal_pkg_lib_append
@echo>>ruby_bigdecimal.pkg "$(subst /,\,$(srcdir))\ext\bigdecimal\lib\bigdecimal\jacobian.rb"-"!:\Data\Ruby\lib\bigdecimal\jacobian.rb"
@echo>>ruby_bigdecimal.pkg "$(subst /,\,$(srcdir))\ext\bigdecimal\lib\bigdecimal\ludcmp.rb"-"!:\Data\Ruby\lib\bigdecimal\ludcmp.rb"
@echo>>ruby_bigdecimal.pkg "$(subst /,\,$(srcdir))\ext\bigdecimal\lib\bigdecimal\math.rb"-"!:\Data\Ruby\lib\bigdecimal\math.rb"
@echo>>ruby_bigdecimal.pkg "$(subst /,\,$(srcdir))\ext\bigdecimal\lib\bigdecimal\newton.rb"-"!:\Data\Ruby\lib\bigdecimal\newton.rb"
@echo>>ruby_bigdecimal.pkg "$(subst /,\,$(srcdir))\ext\bigdecimal\lib\bigdecimal\util.rb"-"!:\Data\Ruby\lib\bigdecimal\util.rb"
endef
EPOCROOT := $(addsuffix \,$(word 3,$(shell devices -info @$(word 3,$(shell devices -default)) | find "Root")))
ifndef SIGNED
RUBY_UID=0xA0001BC6
STRINGIO_UID=0xA0001BC7
BIGDECIMAL_UID=0xA0001BC8
else
RUBY_UID=0x200205CC
STRINGIO_UID=0x200205CD
BIGDECIMAL_UID=0x200205CE
endif