summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/epoc
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2000-04-06 16:11:09 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2000-04-06 16:11:09 +0000
commite852ed17d905386f3bbad057fda2f07926227f89 (patch)
tree9c602984a369e27373c3cd3b71bd8c8e791393f2 /gnu/usr.bin/perl/epoc
parent9cfdf10e50d1f9e72606c75c7b7a0e18940c80aa (diff)
virgin perl 5.6.0
Diffstat (limited to 'gnu/usr.bin/perl/epoc')
-rw-r--r--gnu/usr.bin/perl/epoc/config.sh789
-rw-r--r--gnu/usr.bin/perl/epoc/createpkg.pl40
-rw-r--r--gnu/usr.bin/perl/epoc/epoc.c147
-rw-r--r--gnu/usr.bin/perl/epoc/epoc_stubs.c69
-rw-r--r--gnu/usr.bin/perl/epoc/epocish.c34
-rw-r--r--gnu/usr.bin/perl/epoc/epocish.h135
-rw-r--r--gnu/usr.bin/perl/epoc/link.pl25
7 files changed, 1239 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/epoc/config.sh b/gnu/usr.bin/perl/epoc/config.sh
new file mode 100644
index 00000000000..a60b7a0f085
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/config.sh
@@ -0,0 +1,789 @@
+#!/bin/sh
+#
+# This file is manually maintained.
+#
+# It is NOT produced by running the Configure script.
+#
+
+# Package name : perl5
+# Source directory : .
+# Configuration time:
+# Configured by : Olaf Flebbe
+# Target system : EPOC
+
+Author=''
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+Mcc=''
+RCSfile='$RCSfile'
+Revision='$Revision'
+Source=''
+State=''
+_a='.a'
+_exe='.exe'
+_o='.o'
+afs='false'
+alignbytes='8'
+ansi2knr=''
+aphostname=''
+apirevision=''
+apisubversion=''
+apiversion=''
+ar='arm-pe-ar'
+archlib='/perl/lib/5.6.0/epoc'
+archlibexp='/perl/lib/5.6.0/epoc'
+archname64=''
+archname='epoc'
+archobjs='epoc.o epocish.o epoc_stubs.o'
+awk='awk'
+baserev='5.0'
+bash=''
+bin=''
+bincompat5005='false'
+binexp=''
+bison='bison'
+byacc=''
+byteorder='1234'
+c=''
+castflags='0'
+cat='cat'
+cc='arm-pe-gcc -B/usr/local/lib/gcc-lib/arm-pe/cygnus-2.7.2-960323/ -nostdinc -D__SYMBIAN32__ -D__PSISOFT32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__EXE__ -I/usr/local/epoc/include/ -I/usr/local/epoc/include/libc -DEPOC'
+cccdlflags=''
+ccdlflags=''
+ccflags='-Wno-ctor-dtor-privacy -mcpu-arm710 -mapcs-32 -mshort-load-bytes -msoft-float -fcheck-new -fvtable-thunks'
+ccsymbols=''
+cf_by='olaf'
+cf_email='o.flebbe@gmx.de'
+cf_time='Dec 1999'
+chgrp=''
+chmod=''
+chown=''
+clocktype=''
+comm=''
+compress=''
+contains='grep'
+cp='cp'
+cpio=''
+cpp='arm-pe-cpp'
+cpp_stuff='42'
+cppccsymbols='EPOC=1'
+cppflags=' -nostdinc -D__SYMBIAN32__ -D__PSISOFT32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__EXE__ -I/usr/local/epoc/include/ -I/usr/local/epoc/include/libc'
+cpplast='-'
+cppminus='-'
+cpprun='arm-pe-gcc -E -B/usr/local/lib/gcc-lib/arm-pe/cygnus-2.7.2-960323/'
+cppstdin='arm-pe-gcc -E -B/usr/local/lib/gcc-lib/arm-pe/cygnus-2.7.2-960323/'
+cppsymbols=''
+crosscompile='define'
+cryptlib=''
+csh='csh'
+d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+d_PRIEldbl='undef'
+d_PRIFldbl='undef'
+d_PRIGldbl='undef'
+d_PRIX64='undef'
+d_PRId64='undef'
+d_PRIeldbl='undef'
+d_PRIfldbl='define'
+d_PRIgldbl='define'
+d_PRIi64='undef'
+d_PRIo64='undef'
+d_PRIu64='undef'
+d_PRIx64='undef'
+d_access='undef'
+d_accessx='undef'
+d_alarm='undef'
+d_archlib='define'
+d_atolf='undef'
+d_atoll='undef'
+d_attribut='undef'
+d_bcmp='define'
+d_bcopy='define'
+d_bincompat5005='undef'
+d_bsd='undef'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_bzero='define'
+d_casti32='undef'
+d_castneg='undef'
+d_charvspr='undef'
+d_chown='undef'
+d_chroot='undef'
+d_chsize='undef'
+d_closedir='undef'
+d_cmsghdr_s='undef'
+d_const='define'
+d_crypt='undef'
+d_csh='undef'
+d_cuserid='undef'
+d_dbl_dig='undef'
+d_difftime='define'
+d_dirnamlen='undef'
+d_dlerror='undef'
+d_dlopen='undef'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_drand48proto='define'
+d_dup2='undef'
+d_eaccess='undef'
+d_endgrent='undef'
+d_endhent='undef'
+d_endnent='undef'
+d_endpent='undef'
+d_endpwent='undef'
+d_endsent='undef'
+d_endspent='undef'
+d_eofnblk='define'
+d_eunice='undef'
+d_fchmod='undef'
+d_fchown='undef'
+d_fcntl='undef'
+d_fd_macros='undef'
+d_fd_set='define'
+d_fds_bits='undef'
+d_fgetpos='define'
+d_flexfnam='define'
+d_flock='undef'
+d_fork='undef'
+d_fpathconf='undef'
+d_fpos64_t='undef'
+d_fseeko='undef'
+d_fsetpos='define'
+d_fstatfs='define'
+d_fstatvfs='undef'
+d_ftello='undef'
+d_ftime='undef'
+d_getfsstat='undef'
+d_getgrent='undef'
+d_getgrps='undef'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='undef'
+d_gethname='undef'
+d_gethostprotos='define'
+d_getlogin='undef'
+d_getmntent='undef'
+d_getnbyaddr='undef'
+d_getnbyname='undef'
+d_getnent='undef'
+d_getnetprotos='define'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='undef'
+d_getpgid='undef'
+d_getpgrp2='undef'
+d_getpgrp='undef'
+d_getppid='undef'
+d_getprior='undef'
+d_getprotoprotos='define'
+d_getpwent='undef'
+d_getsbyname='undef'
+d_getsbyport='undef'
+d_getsent='undef'
+d_getservprotos='define'
+d_getspent='undef'
+d_getspnam='undef'
+d_gettimeod='define'
+d_gnulibc='undef'
+d_grpasswd='undef'
+d_hasmntopt='undef'
+d_htonl='define'
+d_iconv='undef'
+d_index='undef'
+d_inetaton='define'
+d_int64t='undef'
+d_iovec_s='undef'
+d_isascii='define'
+d_killpg='undef'
+d_lchown='undef'
+d_ldbl_dig='undef'
+d_link='undef'
+d_llseek='undef'
+d_locconv='undef'
+d_lockf='undef'
+d_longdbl='undef'
+d_longlong='define'
+d_lseekproto='define'
+d_lstat='undef'
+d_madvise='undef'
+d_mblen='undef'
+d_mbstowcs='undef'
+d_mbtowc='undef'
+d_memchr='define'
+d_memcmp='define'
+d_memcpy='define'
+d_memmove='define'
+d_memset='define'
+d_mkdir='define'
+d_mkfifo='undef'
+d_mktime='define'
+d_mmap='undef'
+d_mprotect='undef'
+d_msg='undef'
+d_msg_ctrunc='undef'
+d_msg_dontroute='undef'
+d_msg_oob='undef'
+d_msg_peek='undef'
+d_msg_proxy='undef'
+d_msgctl='undef'
+d_msgget='undef'
+d_msghdr_s='undef'
+d_msgrcv='undef'
+d_msgsnd='undef'
+d_msync='undef'
+d_munmap='undef'
+d_mymalloc='undef'
+d_nice='undef'
+d_off64_t='undef'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='define'
+d_pathconf='undef'
+d_pause='undef'
+d_phostname='undef'
+d_pipe='undef'
+d_poll='undef'
+d_portable='undef'
+d_pthread_yield='undef'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='undef'
+d_pwpasswd='undef'
+d_pwquota='undef'
+d_qgcvt='undef'
+d_readdir='define'
+d_readlink='undef'
+d_readv='undef'
+d_recvmsg='undef'
+d_rename='define'
+d_rewinddir='define'
+d_rmdir='define'
+d_safebcpy='undef'
+d_safemcpy='undef'
+d_sanemcmp='define'
+d_sched_yield='undef'
+d_scm_rights='undef'
+d_seekdir='define'
+d_select='undef'
+d_sem='undef'
+d_semctl='undef'
+d_semctl_semid_ds='define'
+d_semctl_semun='define'
+d_semget='undef'
+d_semop='undef'
+d_sendmsg='undef'
+d_setegid='undef'
+d_seteuid='undef'
+d_setgrent='undef'
+d_setgrps='undef'
+d_sethent='undef'
+d_setlinebuf='undef'
+d_setlocale='undef'
+d_setnent='undef'
+d_setpent='undef'
+d_setpgid='undef'
+d_setpgrp2='undef'
+d_setpgrp='undef'
+d_setprior='undef'
+d_setpwent='undef'
+d_setregid='undef'
+d_setresgid='undef'
+d_setresuid='undef'
+d_setreuid='undef'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='undef'
+d_setsid='undef'
+d_setspent='undef'
+d_setvbuf='undef'
+d_sfio='undef'
+d_shm='undef'
+d_shmat='undef'
+d_shmatprototype='undef'
+d_shmctl='undef'
+d_shmdt='undef'
+d_shmget='undef'
+d_sigaction='undef'
+d_sigsetjmp='undef'
+d_socket='define'
+d_sockpair='undef'
+d_statblks='define'
+d_statfs='undef'
+d_statfsflags='define'
+d_statvfs='undef'
+d_stdio_cnt_lval='define'
+d_stdio_ptr_lval='define'
+d_stdio_stream_array='undef'
+d_stdiobase='undef'
+d_stdstdio='undef'
+d_strchr='define'
+d_strcoll='define'
+d_strctcpy='define'
+d_strerrm='strerror(e)'
+d_strerror='define'
+d_strtod='define'
+d_strtol='define'
+d_strtoul='define'
+d_strtoull='undef'
+d_strxfrm='define'
+d_suidsafe='undef'
+d_symlink='undef'
+d_syscall='undef'
+d_sysconf='define'
+d_sysernlst='undef'
+d_syserrlst='undef'
+d_system='define'
+d_tcgetpgrp='undef'
+d_tcsetpgrp='undef'
+d_telldir='define'
+d_telldirproto='define'
+d_time='undef'
+d_times='undef'
+d_truncate='undef'
+d_tzname='undef'
+d_umask='undef'
+d_uname='undef'
+d_union_semun='undef'
+d_vendorlib='undef'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='undef'
+d_voidtty='undef'
+d_volatile='define'
+d_vprintf='define'
+d_wait4='undef'
+d_waitpid='undef'
+d_wcstombs='undef'
+d_wctomb='undef'
+d_writev='undef'
+d_xenix='undef'
+date='date'
+db_hashtype='undef'
+db_prefixtype='undef'
+defvoidused='15'
+direntrytype='struct dirent'
+dlext='none'
+dlsrc='dl_none.xs'
+doublesize='8'
+drand01='(rand()/(double)(1U<<RANDBITS))'
+dynamic_ext=''
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+eunicefix=':'
+exe_ext=''
+expr='expr'
+extensions='Data/Dumper File/Glob IO Socket'
+fflushNULL='undef'
+fflushall='define'
+find=''
+firstmakefile='makefile'
+flex=''
+fpostype='fpos_t'
+freetype='void'
+full_ar='/usr/local/bin/arm-pe-ar'
+full_csh=''
+full_sed='/usr/bin/sed'
+gccversion=''
+gidtype='gid_t'
+glibpth=''
+grep='grep'
+groupcat=''
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl=''
+h_sysfile=''
+hint=''
+hostcat=''
+huge=''
+i_arpainet='define'
+i_bsdioctl='undef'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dld='undef'
+i_dlfcn='undef'
+i_fcntl='define'
+i_float='undef'
+i_gdbm='undef'
+i_grp='undef'
+i_iconv='undef'
+i_ieeefp='undef'
+i_inttypes='undef'
+i_limits='define'
+i_locale='undef'
+i_machcthr='undef'
+i_malloc='undef'
+i_math='define'
+i_memory='undef'
+i_mntent='undef'
+i_ndbm='undef'
+i_netdb='define'
+i_neterrno='undef'
+i_netinettcp='define'
+i_niin='define'
+i_poll='undef'
+i_pthread='undef'
+i_pwd='undef'
+i_rpcsvcdbm='undef'
+i_sfio='undef'
+i_sgtty='undef'
+i_shadow='undef'
+i_socks='undef'
+i_stdarg='define'
+i_stddef='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='undef'
+i_sysfile='undef'
+i_sysfilio='undef'
+i_sysin='undef'
+i_sysioctl='define'
+i_sysmman='undef'
+i_sysmount='undef'
+i_sysndir='undef'
+i_sysparam='define'
+i_sysresrc='define'
+i_syssecrt='undef'
+i_sysselct='undef'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatvfs='undef'
+i_systime='define'
+i_systimek='undef'
+i_systimes='define'
+i_systypes='define'
+i_sysuio='undef'
+i_sysun='undef'
+i_syswait='define'
+i_termio='undef'
+i_termios='undef'
+i_time='define'
+i_unistd='define'
+i_utime='undef'
+i_values='undef'
+i_varargs='undef'
+i_varhdr='undef'
+i_vfork='undef'
+ignore_versioned_solibs=''
+incpath=''
+inews=''
+installarchlib='/home/olaf/E/lib'
+installbin='/home/olaf/E/bin'
+installman1dir=''
+installman3dir=''
+installprefix='/home/olaf/'
+installprefixexp=''
+installprivlib=''
+installscript=''
+installsitearch='/home/olaf/E/site/'
+installsitelib='/home/olaf/E/site/lib'
+installstyle=''
+installusrbinperl='undef'
+installvendorlib=''
+intsize='4'
+known_extensions='Data/Dumper File/Glob IO Socket'
+ksh=''
+large=''
+ld='echo'
+lddlflags=''
+ldflags=''
+ldlibpthname=''
+less=''
+lib_ext=''
+libc=''
+libperl='perl.a'
+libpth=''
+libs=''
+libswanted=''
+line=''
+lint=''
+lkflags=''
+ln='ln'
+lns='/bin/ln -s'
+locincpth=''
+loclibpth=''
+longdblsize='8'
+longlongsize='8'
+longsize='4'
+lp=''
+lpr=''
+ls='ls'
+lseeksize='8'
+lseektype='off_t'
+mail=''
+mailx=''
+make='make'
+make_set_make='#'
+mallocobj=''
+mallocsrc=''
+malloctype='void *'
+man1dir=''
+man1direxp=''
+man1ext=''
+man3dir=''
+man3direxp=''
+man3ext=''
+medium=''
+mips=''
+mips_type=''
+mkdir='mkdir'
+mmaptype=''
+models='none'
+modetype='mode_t'
+more='more'
+multiarch='define'
+mv=''
+myarchname='epoc'
+mydomain='.gmx.de'
+myhostname='dragon'
+myuname=''
+n='-n'
+netdb_hlen_type='int'
+netdb_host_type='const char *'
+netdb_name_type='const char *'
+netdb_net_type='int'
+nm='arm-pe-nm'
+nm_opt=''
+nm_so_opt=''
+nonxs_ext=''
+nroff='nroff'
+o_nonblock='O_NONBLOCK'
+obj_ext=''
+old_pthread_create_joinable=''
+optimize='-fomit-frame-pointer -DNDEBUG -O'
+orderlib=''
+osname='epoc'
+osvers=''
+package=''
+pager=''
+passcat=''
+patchlevel=''
+path_sep=''
+perl=''
+perladmin=''
+perlpath=''
+pg=''
+phostname=''
+pidtype='pid_t'
+plibpth=''
+pmake=''
+pr=''
+prefix=''
+prefixexp=''
+privlib='/perl/lib/5.6.0'
+privlibexp='/perl/lib/5.6.0'
+prototype='define'
+ptrsize='4'
+randbits='31'
+randfunc=''
+randseedtype='unsigned'
+ranlib='arm-pe-ranlib'
+rd_nodata='-1'
+rm='rm'
+rmail=''
+runnm='false'
+sPRIEldbl=''
+sPRIFldbl=''
+sPRIGldbl=''
+sPRIX64=''
+sPRId64=''
+sPRIeldbl=''
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
+sPRIi64=''
+sPRIo64=''
+sPRIu64=''
+sPRIx64=''
+sched_yield=''
+scriptdir=''
+scriptdirexp=''
+sed='sed'
+seedfunc='srand'
+selectminbits='32'
+selecttype=''
+sendmail=''
+sh='/bin/sh'
+shar=''
+sharpbang='#!'
+shmattype=''
+shortsize='2'
+shrpenv=''
+shsharp=''
+sig_count='ZERO '
+sig_name=''
+sig_name_init='"ZERO", 0'
+sig_num='0'
+sig_num_init='0, 0'
+signal_t='void'
+sitearch='/perl/lib/site_perl/5.6.0/epoc'
+sitearchexp='/perl/lib/site_perl/5.6.0/epoc'
+sitelib='/perl/lib/site_perl/5.6.0/'
+sitelib_stem='/perl/lib/site_perl'
+sitelibexp='/perl/lib/site_perl/5.6.0/'
+siteprefix=''
+siteprefixexp=''
+sizesize='4'
+sizetype='size_t'
+sleep=''
+smail=''
+small=''
+so=''
+socksizetype='int'
+sockethdr=''
+socketlib=''
+sort='sort'
+spackage=''
+spitshell='cat'
+split=''
+src='.'
+ssizetype='long'
+startperl=''
+startsh='#!/bin/sh'
+static_ext='Data/Dumper File/Glob IO Socket'
+stdchar='char'
+stdio_base=''
+stdio_bufsiz=''
+stdio_cnt=''
+stdio_filbuf=''
+stdio_ptr=''
+stdio_stream_array=''
+strings=''
+submit=''
+subversion=''
+sysman=''
+tail=''
+tar=''
+tbl=''
+tee='tee'
+test='test'
+timeincl=''
+timetype='time_t'
+touch='touch'
+tr='tr'
+trnl='\n'
+troff=''
+uidsign='1'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+use64bitall='undef'
+use64bitint='undef'
+usedl='undef'
+uselargefiles='undef'
+uselongdouble='undef'
+usemorebits='undef'
+usemultiplicity='undef'
+usemymalloc='n'
+usenm=''
+useopcode=''
+useperlio='undef'
+useposix=''
+usesfio=''
+useshrplib=''
+usesocks='undef'
+usethreads='undef'
+usevendorprefix=''
+usevfork=''
+usrinc=''
+uuname=''
+vendorlib=''
+vendorlib_stem=''
+vendorlibexp=''
+vendorprefix=''
+vendorprefixexp=''
+version='5.6.0'
+vi=''
+voidflags='15'
+xlibpth=''
+zcat=''
+zip=''
+# Configure command line arguments.
+config_arg0=''
+config_args=''
+config_argc=11
+config_arg1=''
+config_arg2=''
+config_arg3=''
+config_arg4=''
+config_arg5=''
+config_arg6=''
+config_arg7=''
+config_arg8=''
+config_arg9=''
+config_arg10=''
+config_arg11=''
+PERL_REVISION=5
+PERL_VERSION=6
+PERL_SUBVERSION=0
+PERL_API_REVISION=5
+PERL_API_VERSION=6
+PERL_API_SUBVERSION=0
+CONFIGDOTSH=true
+# Variables propagated from previous config.sh file.
+pp_sys_cflags=''
+epocish_cflags='ccflags="$cflags -xc++"'
+ivtype='int'
+uvtype='unsigned int'
+i8type='char'
+u8type='unsigned char'
+i16type='short'
+u16type='unsigned short'
+i32type='int'
+u32type='unsigned int'
+i64type='long long'
+u64type='unsigned long long'
+d_quad='define'
+quadtype='long long'
+quadtype='unsigned long long'
+quadkind='QUAD_IS_LONG_LONG'
+nvtype='double'
+ivsize='4'
+uvsize='4'
+i8size='1'
+u8size='1'
+i16size='2'
+u16size='2'
+i32size='4'
+u32size='4'
+i64size='8'
+u64size='8'
+d_fs_data_s='undef'
+d_fseeko='undef'
+d_ldbl_dig='undef'
+d_sqrtl='undef'
+d_getmnt='undef'
+d_statfs_f_flags='undef'
+d_statfs_s='undef'
+d_ustat='undef'
+i_sysstatfs='undef'
+i_sysvfs='undef'
+i_ustat='undef'
+uidsize='2'
+uidsign='1'
+gidsize='2'
+gidsign='1'
+ivdformat='"ld"'
+uvuformat='"lu"'
+uvoformat='"lo"'
+uvxformat='"lx"'
+uidformat='"hu"'
+gidformat='"hu"'
+d_strtold='undef'
+d_strtoll='undef'
+d_strtouq='undef'
+d_nv_preserves_uv='define'
+use5005threads='undef'
+useithreads='undef'
+inc_version_list=' '
+inc_version_list_init='0'
diff --git a/gnu/usr.bin/perl/epoc/createpkg.pl b/gnu/usr.bin/perl/epoc/createpkg.pl
new file mode 100644
index 00000000000..6977bd385f5
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/createpkg.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use File::Find;
+use Cwd;
+
+$VERSION="5.5";
+$PATCH="650";
+$EPOC_VERSION=19;
+$CROSSCOMPILEPATH=cwd;
+$CROSSREPLACEPATH="H:\\devel\\perl5.5.650";
+
+
+sub filefound {
+ my $f = $File::Find::name;
+
+ return if ( $f =~ /CVS|unicode|CPAN|ExtUtils|IPC|User|DB.pm|\.a$|\.ld$|\.exists$/i);
+ my $back = $f;
+
+ $back =~ s|$CROSSCOMPILEPATH||;
+
+ $back =~ s|/|\\|g;
+
+ my $psiback = $back;
+
+ $psiback =~ s/\\lib\\/\\perl\\lib\\$VERSION.$PATCH\\/i;
+
+ print OUT "\"$CROSSREPLACEPATH$back\"-\"!:$psiback\"\n" if ( -f $f );
+;
+}
+
+open OUT,">perl.pkg";
+
+print OUT "#{\"perl$VERSION\"},(0x100051d8),$PATCH,$EPOC_VERSION,0\n";
+
+print OUT "\"$CROSSREPLACEPATH\\perlmain.exe\"-\"!:\\perl.exe\"\n";
+
+find(\&filefound, cwd.'/lib');
+print OUT "@\"G:\\lib\\stdlib.sis\",(0x0100002c3)\n"
+
+
diff --git a/gnu/usr.bin/perl/epoc/epoc.c b/gnu/usr.bin/perl/epoc/epoc.c
new file mode 100644
index 00000000000..498036dbc04
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/epoc.c
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1999 Olaf Flebbe o.flebbe@gmx.de
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/unistd.h>
+
+void
+Perl_epoc_init(int *argcp, char ***argvp) {
+ int i;
+ int truecount=0;
+ char **lastcp = (*argvp);
+ char *ptr;
+ for (i=0; i< *argcp; i++) {
+ if ((*argvp)[i]) {
+ if (*((*argvp)[i]) == '<') {
+ if (strlen((*argvp)[i]) > 1) {
+ ptr =((*argvp)[i])+1;
+ } else {
+ i++;
+ ptr = ((*argvp)[i]);
+ }
+ freopen( ptr, "r", stdin);
+ } else if (*((*argvp)[i]) == '>') {
+ if (strlen((*argvp)[i]) > 1) {
+ ptr =((*argvp)[i])+1;
+ } else {
+ i++;
+ ptr = ((*argvp)[i]);
+ }
+ freopen( ptr, "w", stdout);
+ } else if ((*((*argvp)[i]) == '2') && (*(((*argvp)[i])+1) == '>')) {
+ if (strcmp( (*argvp)[i], "2>&1") == 0) {
+ dup2( fileno( stdout), fileno( stderr));
+ } else {
+ if (strlen((*argvp)[i]) > 2) {
+ ptr =((*argvp)[i])+2;
+ } else {
+ i++;
+ ptr = ((*argvp)[i]);
+ }
+ freopen( ptr, "w", stderr);
+ }
+ } else {
+ *lastcp++ = (*argvp)[i];
+ truecount++;
+ }
+ }
+ }
+ *argcp=truecount;
+
+
+}
+
+#ifdef __MARM__
+/* Symbian forgot to include __fixunsdfi into the MARM euser.lib */
+/* This is from libgcc2.c , gcc-2.7.2.3 */
+
+typedef unsigned int UQItype __attribute__ ((mode (QI)));
+typedef int SItype __attribute__ ((mode (SI)));
+typedef unsigned int USItype __attribute__ ((mode (SI)));
+typedef int DItype __attribute__ ((mode (DI)));
+typedef unsigned int UDItype __attribute__ ((mode (DI)));
+
+typedef float SFtype __attribute__ ((mode (SF)));
+typedef float DFtype __attribute__ ((mode (DF)));
+
+
+
+extern DItype __fixunssfdi (SFtype a);
+extern DItype __fixunsdfdi (DFtype a);
+
+
+USItype
+__fixunsdfsi (a)
+ DFtype a;
+{
+ if (a >= - (DFtype) (- 2147483647L -1) )
+ return (SItype) (a + (- 2147483647L -1) ) - (- 2147483647L -1) ;
+ return (SItype) a;
+}
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+int
+do_aspawn( pTHX_ SV *really,SV **mark,SV **sp) {
+ return do_spawn( really, mark, sp);
+}
+
+int
+do_spawn (pTHX_ SV *really,SV **mark,SV **sp)
+{
+ dTHR;
+ int rc;
+ char **a,*cmd,**ptr, *cmdline, **argv, *p2;
+ STRLEN n_a;
+ size_t len = 0;
+
+ if (sp<=mark)
+ return -1;
+
+ a=argv=ptr=(char**) malloc ((sp-mark+3)*sizeof (char*));
+
+ while (++mark <= sp) {
+ if (*mark)
+ *a = SvPVx(*mark, n_a);
+ else
+ *a = "";
+ len += strlen( *a) + 1;
+ a++;
+ }
+ *a = Nullch;
+
+ if (!(really && *(cmd = SvPV(really, n_a)))) {
+ cmd = argv[0];
+ argv++;
+ }
+
+ cmdline = (char * ) malloc( len + 1);
+ cmdline[ 0] = '\0';
+ while (*argv != NULL) {
+ strcat( cmdline, *argv++);
+ strcat( cmdline, " ");
+ }
+
+ for (p2=cmd; *p2 != '\0'; p2++) {
+ /* Change / to \ */
+ if ( *p2 == '/')
+ *p2 = '\\';
+ }
+ rc = epoc_spawn( cmd, cmdline);
+ free( ptr);
+ free( cmdline);
+
+ return rc;
+}
+
+
+#endif
diff --git a/gnu/usr.bin/perl/epoc/epoc_stubs.c b/gnu/usr.bin/perl/epoc/epoc_stubs.c
new file mode 100644
index 00000000000..b11da400d6b
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/epoc_stubs.c
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 1999 Olaf Flebbe o.flebbe@gmx.de
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
+#include <string.h>
+
+char *environ = 0;
+
+int getgid() {return 0;}
+int getegid() {return 0;}
+int geteuid() {return 0;}
+int getuid() {return 0;}
+int setgid() {return -1;}
+int setuid() {return -1;}
+
+
+int Perl_my_popen( int a, int b) {
+ return NULL;
+}
+int Perl_my_pclose( int a) {
+ return NULL;
+}
+
+int kill() {return -1;}
+signal() { }
+
+int execv() { return -1;}
+int execvp() { return -1;}
+
+void Perl_do_exec() {}
+
+/*------------------------------------------------------------------*/
+/* Two dummy functions implement getproto* */
+/*------------------------------------------------------------------*/
+#include <sys/types.h>
+#include <netdb.h>
+#include <netinet/in.h>
+
+
+static struct protoent protos[2] = {
+ {"tcp", NULL, IPPROTO_TCP} ,
+ {"udp", NULL, IPPROTO_UDP}};
+
+struct protoent *getprotobyname (const char *st) {
+
+ if (!strcmp( st, "tcp")) {
+ return &protos[0];
+ }
+ if (!strcmp( st, "udp")) {
+ return &protos[1];
+ }
+ return NULL;
+}
+
+struct protoent *getprotobynumber ( int i) {
+ if (i == IPPROTO_TCP) {
+ return &protos[0];
+ }
+ if (i == IPPROTO_UDP) {
+ return &protos[1];
+ }
+ return NULL;
+}
+
+
diff --git a/gnu/usr.bin/perl/epoc/epocish.c b/gnu/usr.bin/perl/epoc/epocish.c
new file mode 100644
index 00000000000..134eaef0e00
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/epocish.c
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 1999 Olaf Flebbe o.flebbe@gmx.de
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
+/* This is indeed C++ Code !! */
+
+#include <e32std.h>
+
+extern "C" {
+
+epoc_spawn( char *cmd, char *cmdline) {
+ RProcess p;
+ TRequestStatus status;
+ TInt rc;
+
+ rc = p.Create( _L( cmd), _L( cmdline));
+ if (rc != KErrNone)
+ return -1;
+
+ p.Resume();
+
+ p.Logon( status);
+ User::WaitForRequest( status);
+ if (status!=KErrNone) {
+ return -1;
+ }
+ return 0;
+}
+
+}
diff --git a/gnu/usr.bin/perl/epoc/epocish.h b/gnu/usr.bin/perl/epoc/epocish.h
new file mode 100644
index 00000000000..f4be0ff677b
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/epocish.h
@@ -0,0 +1,135 @@
+/*
+ * The following symbols are defined if your operating system supports
+ * functions by that name. All Unixes I know of support them, thus they
+ * are not checked by the configuration script, but are directly defined
+ * here.
+ */
+
+/* HAS_IOCTL:
+ * This symbol, if defined, indicates that the ioctl() routine is
+ * available to set I/O characteristics
+ */
+#define HAS_IOCTL / **/
+
+/* HAS_UTIME:
+ * This symbol, if defined, indicates that the routine utime() is
+ * available to update the access and modification times of files.
+ */
+/* #define HAS_UTIME / **/
+
+/* HAS_GROUP
+ * This symbol, if defined, indicates that the getgrnam() and
+ * getgrgid() routines are available to get group entries.
+ * The getgrent() has a separate definition, HAS_GETGRENT.
+ */
+/* #define HAS_GROUP / **/
+
+/* HAS_PASSWD
+ * This symbol, if defined, indicates that the getpwnam() and
+ * getpwuid() routines are available to get password entries.
+ * The getpwent() has a separate definition, HAS_GETPWENT.
+ */
+/* #define HAS_PASSWD / **/
+
+/* #define HAS_KILL */
+#define HAS_WAIT
+
+/* USEMYBINMODE
+ * This symbol, if defined, indicates that the program should
+ * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
+ * that a file is in "binary" mode -- that is, that no translation
+ * of bytes occurs on read or write operations.
+ */
+#undef USEMYBINMODE
+
+/* Stat_t:
+ * This symbol holds the type used to declare buffers for information
+ * returned by stat(). It's usually just struct stat. It may be necessary
+ * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
+ * information.
+ */
+#define Stat_t struct stat
+
+/* USE_STAT_RDEV:
+ * This symbol is defined if this system has a stat structure declaring
+ * st_rdev
+ */
+#define USE_STAT_RDEV / **/
+
+/* ACME_MESS:
+ * This symbol, if defined, indicates that error messages should be
+ * should be generated in a format that allows the use of the Acme
+ * GUI/editor's autofind feature.
+ */
+#undef ACME_MESS /**/
+
+/* UNLINK_ALL_VERSIONS:
+ * This symbol, if defined, indicates that the program should arrange
+ * to remove all versions of a file if unlink() is called. This is
+ * probably only relevant for VMS.
+ */
+/* #define UNLINK_ALL_VERSIONS / **/
+
+/* VMS:
+ * This symbol, if defined, indicates that the program is running under
+ * VMS. It is currently automatically set by cpps running under VMS,
+ * and is included here for completeness only.
+ */
+/* #define VMS / **/
+
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+/* #define ALTERNATE_SHEBANG "#!" / **/
+
+
+#define ABORT() abort();
+
+/*
+ * fwrite1() should be a routine with the same calling sequence as fwrite(),
+ * but which outputs all of the bytes requested as a single stream (unlike
+ * fwrite() itself, which on some systems outputs several distinct records
+ * if the number_of_items parameter is >1).
+ */
+#define fwrite1 fwrite
+
+#define Stat(fname,bufptr) stat((fname),(bufptr))
+#define Fstat(fd,bufptr) fstat((fd),(bufptr))
+#define Fflush(fp) fflush(fp)
+#define Mkdir(path,mode) mkdir((path),(mode))
+
+/* these should be set in a hint file, not here */
+#ifndef PERL_SYS_INIT
+# define PERL_SYS_INIT(c,v) Perl_epoc_init(c,v); MALLOC_INIT
+#endif
+
+#ifndef PERL_SYS_TERM
+#define PERL_SYS_TERM() MALLOC_TERM
+#endif
+
+#define BIT_BUCKET "NUL:"
+
+#define dXSUB_SYS
+
+/* getsockname returns the size of struct sockaddr_in *without* padding */
+#define BOGUS_GETNAME_RETURN 8
+
+/* Yes, size_t is size_t */
+#define Sock_size_t size_t
+
+/*
+ read() on a socket blocks until buf is filled completly,
+ recv() returns each massage
+*/
+#define PERL_SOCK_SYSREAD_IS_RECV
+
+/* No /dev/random available*/
+
+#define PERL_NO_DEV_RANDOM
diff --git a/gnu/usr.bin/perl/epoc/link.pl b/gnu/usr.bin/perl/epoc/link.pl
new file mode 100644
index 00000000000..9da8a356cae
--- /dev/null
+++ b/gnu/usr.bin/perl/epoc/link.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/perl -w
+
+$epoc="/usr/local/epoc";
+@objs=@ARGV;
+$basname=$objs[0];
+$basname =~ s/.o//;
+$baspe = $basname . "pe";
+
+
+system("arm-pe-ld -s -e _E32Startup --base-file $basname.bas " .
+ "-o $baspe.exe $epoc/lib/eexe.o @objs " .
+ "$epoc/lib/ecrt0.o $epoc/lib/estlib.lib $epoc/lib/euser.lib");
+
+system("arm-pe-dlltool --as=arm-pe-as --output-exp $basname.exp " .
+ "--base-file $basname.bas $epoc/lib/eexe.o @objs " .
+ "$epoc/lib/ecrt0.o $epoc/lib/estlib.lib $epoc/lib/euser.lib");
+
+system("arm-pe-ld -s -e _E32Startup -o $basname.exe $basname.exp " .
+ "-o $baspe.exe $epoc/lib/eexe.o @objs " .
+ "$epoc/lib/ecrt0.o $epoc/lib/estlib.lib $epoc/lib/euser.lib");
+
+system( "wine \"$epoc/bin/petran.exe $baspe.exe $basname.exe " .
+ "-nocall -heap 0x00000400 0x00400000 -stack 0x0000c000 " .
+ "-uid1 0x1000007a -uid2 0x100051d8 -uid3 0x00000000 \" ");
+