summaryrefslogtreecommitdiff
path: root/Cross
diff options
context:
space:
mode:
Diffstat (limited to 'Cross')
-rw-r--r--Cross/Makefile63
-rw-r--r--Cross/Makefile.SH.patch164
-rw-r--r--Cross/README55
-rw-r--r--Cross/TODO2
-rw-r--r--Cross/config23
-rw-r--r--Cross/config.sh-arm-linux983
-rwxr-xr-xCross/generate_config_sh131
-rw-r--r--Cross/installperl.patch22
-rwxr-xr-xCross/warp14
9 files changed, 1454 insertions, 3 deletions
diff --git a/Cross/Makefile b/Cross/Makefile
new file mode 100644
index 0000000000..f0db84e9c0
--- /dev/null
+++ b/Cross/Makefile
@@ -0,0 +1,63 @@
+## Toplevel Makefile for cross-compilation of perl
+#
+## $Id: Makefile,v 1.1 2003/04/15 00:38:39 red Exp red $
+
+export TOPDIR?=${shell pwd}
+include $(TOPDIR)/config
+export CFLAGS
+export SYS=$(ARCH)-$(OS)
+export CROSS=$(ARCH)-$(OS)-
+export FULL_OPTIMIZATION = -fexpensive-optimizations -fomit-frame-pointer -O2
+export OPTIMIZATION = -O2
+
+export CC = $(CROSS)gcc
+export CXX = $(CROSS)g++
+export LD = $(CROSS)ld
+export STRIP = $(CROSS)strip
+export AR = $(CROSS)ar
+export RANLIB = $(CROSS)ranlib
+
+
+## Optimisation work
+ifeq ($(ARCH),arm)
+ ifdef CONFIG_TARGET_ARM_SA11X0
+ ifndef Architecture
+ Architecture = armv4l-strongarm
+ endif
+ FULL_OPTIMIZATION += -march=armv4 -mtune=strongarm1100 -mapcs-32
+ OPTIMIZATION += -march=armv4 -mtune=strongarm1100 -mapcs-32
+ endif
+endif
+
+CFLAGS+=$(FULL_OPTIMIZATION)
+
+all:
+ @echo Please read the README file before doing anything else.
+
+gen_patch:
+ diff -Bbur ../Makefile.SH Makefile.SH > Makefile.SH.patch
+ diff -Bbur ../installperl installperl > installperl.patch
+
+patch:
+ cd .. ; patch -p1 < Cross/Makefile.SH.patch
+ cd .. ; patch -p1 < Cross/installperl.patch ; mv installperl installperl-patched
+ cd .. ; sed -e 's/XXSTRIPXX/$(SYS)/' installperl-patched > installperl
+
+perl:
+ @echo Perl cross-build directory is $(TOPDIR)
+ @echo Target arch is $(SYS)
+ @echo toolchain: $(CC), $(CXX), $(LD), $(STRIP), $(AR), $(RANLIB)
+ @echo Optimizations: $(FULL_OPTIMIZATION)
+
+ $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh
+ $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh-arse
+ cd $(TOPDIR)/.. ; ./Configure -S ; make depend ; make ; make more
+ cd $(TOPDIR)/.. ; mkdir -p fake_config_library ; cp lib/Config.pm fake_config_library
+ cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+ cd $(TOPDIR)/.. ; $(MAKE) more3 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+ cd $(TOPDIR)/.. ; $(MAKE) more4 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
+ cd $(TOPDIR)/.. ; rm -rf install_me_here
+ cd $(TOPDIR)/.. ; make install-strip
+ cd $(TOPDIR)/.. ; sh -x Cross/warp
+
+
diff --git a/Cross/Makefile.SH.patch b/Cross/Makefile.SH.patch
new file mode 100644
index 0000000000..beaf7a30a1
--- /dev/null
+++ b/Cross/Makefile.SH.patch
@@ -0,0 +1,164 @@
+--- ../Makefile.SH 2002-06-09 17:04:06.000000000 +0000
++++ Makefile.SH 2003-04-15 00:30:58.000000000 +0000
+@@ -329,9 +329,20 @@
+ .c.s:
+ $(CCCMDSRC) -S $*.c
+
+-all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
+- @echo " ";
+- @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++#all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
++# @echo " ";
++# @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT)
++ mv miniperl miniperl-arm
++ ln -s /usr/bin/perl miniperl
++
++more: extra.pods $(private) $(public)
++
++more2: $(dynamic_ext)
++
++more3: $(nonxs_ext)
++
++more4: extras.make
+
+ .PHONY: all compile translators utilities
+
+@@ -341,10 +352,10 @@
+ cd x2p; $(MAKE) compile;
+ cd pod; $(MAKE) compile;
+
+-translators: miniperl$(EXE_EXT) lib/Config.pm FORCE
++translators: lib/Config.pm FORCE
+ @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
+
+-utilities: miniperl$(EXE_EXT) lib/Config.pm $(plextract) lib/lib.pm FORCE
++utilities: lib/Config.pm $(plextract) lib/lib.pm FORCE
+ @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
+
+
+@@ -521,7 +532,7 @@
+ $(CC) -o miniperl $(CLDFLAGS) \
+ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ beos*|next4*)
+@@ -538,7 +549,7 @@
+ -@rm -f miniperl.xok
+ $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
+ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+- $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++# $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ ;;
+ esac
+@@ -664,7 +675,7 @@
+ # We need to autosplit in two steps because VOS can't handle so many args
+ #
+ .PHONY: preplibrary
+-preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL)
++preplibrary: lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL)
+ @sh ./makedir lib/auto
+ @echo " AutoSplitting perl library"
+ $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
+@@ -676,11 +687,11 @@
+ # Take care to avoid modifying lib/Config.pm without reason
+ # (If trying to create a new port and having problems with the configpm script,
+ # try 'make minitest' and/or commenting out the tests at the end of configpm.)
+-lib/Config.pm: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
++lib/Config.pm: config.sh configpm Porting/Glossary
+ $(LDLIBPTH) ./miniperl -Ilib configpm configpm.tmp
+ sh mv-if-diff configpm.tmp $@
+
+-lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl lib/Config.pm
++lib/ExtUtils/Miniperl.pm: miniperlmain.c minimod.pl lib/Config.pm
+ $(LDLIBPTH) ./miniperl minimod.pl > minimod.tmp
+ sh mv-if-diff minimod.tmp $@
+ -touch lib/ExtUtils/Miniperl.pm
+@@ -688,18 +699,18 @@
+ lib/re.pm: ext/re/re.pm
+ cp ext/re/re.pm ext/re/re.tmp && sh mv-if-diff ext/re/re.tmp lib/re.pm
+
+-$(plextract): miniperl$(EXE_EXT) lib/Config.pm x2p/s2p
++$(plextract): lib/Config.pm x2p/s2p
+ @-rm -f $@
+ $(LDLIBPTH) ./miniperl -Ilib $@.PL
+
+-x2p/s2p: miniperl$(EXE_EXT) lib/Config.pm x2p/s2p.PL
++x2p/s2p: lib/Config.pm x2p/s2p.PL
+ cd x2p; $(LDLIBPTH) $(MAKE) s2p
+
+-lib/lib.pm: miniperl$(EXE_EXT) lib/Config.pm
++lib/lib.pm: lib/Config.pm
+ @-rm -f $@
+ $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
+
+-extra.pods: miniperl$(EXE_EXT)
++extra.pods:
+ -@test -f extra.pods && rm -f `cat extra.pods`
+ -@rm -f extra.pods
+ -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+@@ -738,18 +749,10 @@
+ $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n
+
+ install.perl: all installperl
+- if [ -n "$(COMPILE)" ]; \
+- then \
+- cd utils; $(MAKE) compile; \
+- cd ../x2p; $(MAKE) compile; \
+- cd ../pod; $(MAKE) compile; \
+- else :; \
+- fi
+- $(LDLIBPTH) ./perl installperl $(INSTALLFLAGS) $(STRIPFLAGS)
+- $(MAKE) extras.install
++ /usr/bin/perl -Ifake_config_library -MConfig installperl $(INSTALLFLAGS) $(STRIPFLAGS)
+
+-install.man: all installman
+- $(LDLIBPTH) ./perl installman $(INSTALLFLAGS)
++install.man: installman
++ /usr/bin/perl -Ifake_config_library -MConfig installman $(INSTALLFLAGS)
+
+ # XXX Experimental. Hardwired values, but useful for testing.
+ # Eventually Configure could ask for some of these values.
+@@ -861,16 +864,16 @@
+ #
+ # DynaLoader may be needed for extensions that use Makefile.PL.
+
+-$(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE
++$(DYNALOADER): preplibrary FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++d_dummy $(dynamic_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++s_dummy $(static_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+-n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
++n_dummy $(nonxs_ext): preplibrary $(DYNALOADER) FORCE
+ @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+
+ .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
+@@ -1009,7 +1012,7 @@
+
+ test_prep_pre: preplibrary utilities $(nonxs_ext)
+
+-test_prep: test_prep_pre miniperl$(EXE_EXT) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
++test_prep: test_prep_pre perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL)
+ PERL=./perl $(MAKE) _test_prep
+
+ _test_tty:
+@@ -1078,7 +1081,7 @@
+
+ # Can't depend on lib/Config.pm because that might be where miniperl
+ # is crashing.
+-minitest: miniperl$(EXE_EXT) lib/re.pm
++minitest: lib/re.pm
+ -@test -f lib/lib.pm && test -f lib/Config.pm || \
+ $(MAKE) lib/Config.pm lib/lib.pm
+ @echo " "
diff --git a/Cross/README b/Cross/README
index 31b39f8b48..62444837b7 100644
--- a/Cross/README
+++ b/Cross/README
@@ -1,4 +1,53 @@
-If Perl is built using a cross-compilation environment the Cross
-directory will contain temporary helper scripts for the duration
-of the build, see INSTALL/Cross-compilation for more information.
+Summary
+-------
+This is a patch set which adds cross-compilation to the perl
+buildsystem. It was built as a part of the Open Zaurus
+(http://www.openzaurus.com/) distribution. Most / All of the
+optimisations are "borrowed" from this excellent project.
+
+The main target is arm-linux but I have also managed to
+successfully cross-compile perl for solaris x86 using the same
+buildsystem.
+
+We are currently dependent on an existing working local copy of
+perl which is available as /usr/bin/perl. This could be migrated
+to using native miniperl with some additional effort.
+
+Obviously you need a working and tested cross-compiler for your
+build and target combination. The binary directory must be in
+your path.
+
+1) You should be reading me (README) in perl-5.x.x/Cross
+
+2) Make sure you are in the Cross directory.
+
+3) Edit the file 'config' to contain your target platform information.
+
+4) make patch ## This will patch the existing source-tree.
+5) make perl ## Will make perl
+
+The Obvious Ommissions
+----------------------
+
+This does NOT perform any installation as site installation method will
+be dependant on the target arch and OS.
+
+make test will NOT work as the binaries and libraries will not execute.
+
+Due to space limitations on the Zaurus (it's a PDA) we do not provide
+documentation in the core - Therefore man pages are not even generated.
+
+ Note that the Cross/ directory is also used by a different
+ cross-compilation setup described in the INSTALL file, and
+ executed by Configure. There should be no conflicts since
+ it is unlikely both that cross-compilation setups are used
+ simultaneously.
+
+Enjoy!
+
+References
+-------
+Redvers Davies <red@criticalintegration.com>
+Open Zaurus http://www.openzaurus.org/
+Perl OZ Packages http://www.openzaurus.org/official/testing/feed/
diff --git a/Cross/TODO b/Cross/TODO
new file mode 100644
index 0000000000..c7280d0eca
--- /dev/null
+++ b/Cross/TODO
@@ -0,0 +1,2 @@
+Install man pages.
+Provide a better sandbox for building additional XS libraries.
diff --git a/Cross/config b/Cross/config
new file mode 100644
index 0000000000..7f40e356b6
--- /dev/null
+++ b/Cross/config
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# This is the configuration file used to specify the target platform and
+# required level of debug or optimisation.
+#
+##############################################################################
+
+### Target Arch
+ARCH = arm
+#ARCH = i386-pc
+#ARCH = sh4
+#ARCH = mips
+#ARCH = mipsel
+#ARCH = ppc
+
+## Specific arm
+CONFIG_TARGET_ARM_SA11X0 = 1
+#CONFIG_TARGET_ARM_XSCALE = 1
+
+### Target OS
+OS = linux
+#OS = solaris2.8
+
diff --git a/Cross/config.sh-arm-linux b/Cross/config.sh-arm-linux
new file mode 100644
index 0000000000..617be5bbc1
--- /dev/null
+++ b/Cross/config.sh-arm-linux
@@ -0,0 +1,983 @@
+#!/bin/sh
+#
+# This file was produced by running the Configure script. It holds all the
+# definitions figured out by Configure. Should you modify one of these values,
+# do not forget to propagate your changes by running "Configure -der". You may
+# instead choose to run each of the .SH files by yourself, or "Configure -S".
+#
+# $Id$
+#
+
+# Package name : perl5
+# Source directory : .
+# Configuration time: Sat Mar 8 00:20:33 UTC 2003
+# Configured by : root
+# Target system : linux zaurus 2.4.6-rmk1-np2-embedix #5 wed dec 11 22:20:32 cst 2002 armv4l unknown
+
+Author='Redvers Davies <red@criticalintegration.com>'
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+Mcc='Mcc'
+RCSfile='$RCSfile'
+Revision='$Revision'
+Source=''
+State=''
+_a='.a'
+_exe=''
+_o='.o'
+afs='false'
+afsroot='/afs'
+alignbytes='4'
+ansi2knr=''
+aphostname='/bin/hostname'
+api_revision='5'
+api_subversion='0'
+api_version='8'
+api_versionstring='5.8.0'
+ar='arm-linux-ar'
+archlib='/usr/lib/perl5/5.8.0/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.8.0/armv4l-linux'
+archname64=''
+archname='armv4l-linux'
+archobjs=''
+asctime_r_proto='0'
+awk='awk'
+baserev='5.0'
+bash=''
+bin='/usr/bin'
+binexp='/usr/bin'
+bison='bison'
+byacc='byacc'
+byteorder='1234'
+c=''
+castflags='0'
+cat='cat'
+cc='arm-linux-gcc'
+cccdlflags=''
+ccdlflags=''
+ccflags='-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+ccname='arm-linux-gcc'
+ccsymbols='__APCS_32__=1 __ARM_ARCH_4__=1 __CHAR_UNSIGNED__=1 __GNUC_MINOR__=95 __arm=1 __arm__=1 __arm_elf=1 __arm_elf__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 arm=1 arm_elf=1 cpu=arm machine=arm system=posix system=unix'
+ccversion=''
+cf_by='root'
+cf_email='red@criticalintegration.com'
+cf_time='Sat Mar 8 00:20:33 UTC 2003'
+charsize='1'
+chgrp=''
+chmod='chmod'
+chown=''
+clocktype='clock_t'
+comm='comm'
+compress=''
+contains='grep'
+cp='cp'
+cpio=''
+cpp='arm-linux-cpp'
+cpp_stuff='42'
+cppccsymbols='__ELF__=1 __GNUC__=2 linux=1 unix=1'
+cppflags='-fno-strict-aliasing'
+cpplast='-'
+cppminus='-'
+cpprun='arm-linux-gcc -E'
+cppstdin='arm-linux-gcc -E'
+cppsymbols='_FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC_MINOR__=95 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506 _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 __linux=1 __linux__=1 __unix=1 __unix__=1'
+crypt_r_proto='0'
+cryptlib=''
+csh='csh'
+ctermid_r_proto='0'
+ctime_r_proto='0'
+d_Gconvert='gcvt((x),(n),(b))'
+d_PRIEUldbl='define'
+d_PRIFUldbl='define'
+d_PRIGUldbl='define'
+d_PRIXU64='define'
+d_PRId64='define'
+d_PRIeldbl='define'
+d_PRIfldbl='define'
+d_PRIgldbl='define'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
+d_SCNfldbl='define'
+d__fwalk='undef'
+d_access='define'
+d_accessx='undef'
+d_alarm='define'
+d_archlib='define'
+d_asctime_r='undef'
+d_atolf='undef'
+d_atoll='define'
+d_attribut='define'
+d_bcmp='define'
+d_bcopy='define'
+d_bsd='undef'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_bzero='define'
+d_casti32='define'
+d_castneg='define'
+d_charvspr='undef'
+d_chown='define'
+d_chroot='define'
+d_chsize='undef'
+d_class='undef'
+d_closedir='define'
+d_cmsghdr_s='define'
+d_const='define'
+d_crypt='undef'
+d_crypt_r='undef'
+d_csh='undef'
+d_ctermid_r='undef'
+d_ctime_r='undef'
+d_cuserid='define'
+d_dbl_dig='define'
+d_dbminitproto='undef'
+d_difftime='define'
+d_dirfd='define'
+d_dirnamlen='undef'
+d_dlerror='undef'
+d_dlopen='undef'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_drand48_r='undef'
+d_drand48proto='define'
+d_dup2='define'
+d_eaccess='undef'
+d_endgrent='define'
+d_endgrent_r='undef'
+d_endhent='define'
+d_endhostent_r='undef'
+d_endnent='define'
+d_endnetent_r='undef'
+d_endpent='define'
+d_endprotoent_r='undef'
+d_endpwent='define'
+d_endpwent_r='undef'
+d_endsent='define'
+d_endservent_r='undef'
+d_eofnblk='define'
+d_eunice='undef'
+d_fchdir='define'
+d_fchmod='define'
+d_fchown='define'
+d_fcntl='define'
+d_fcntl_can_lock='undef'
+d_fd_macros='define'
+d_fd_set='define'
+d_fds_bits='undef'
+d_fgetpos='define'
+d_finite='define'
+d_finitel='define'
+d_flexfnam='define'
+d_flock='define'
+d_flockproto='define'
+d_fork='define'
+d_fp_class='undef'
+d_fpathconf='define'
+d_fpclass='undef'
+d_fpclassify='undef'
+d_fpclassl='undef'
+d_fpos64_t='undef'
+d_frexpl='define'
+d_fs_data_s='undef'
+d_fseeko='define'
+d_fsetpos='define'
+d_fstatfs='define'
+d_fstatvfs='define'
+d_fsync='define'
+d_ftello='define'
+d_ftime='undef'
+d_getcwd='define'
+d_getespwnam='undef'
+d_getfsstat='undef'
+d_getgrent='define'
+d_getgrent_r='undef'
+d_getgrgid_r='undef'
+d_getgrnam_r='undef'
+d_getgrps='define'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='define'
+d_gethname='define'
+d_gethostbyaddr_r='undef'
+d_gethostbyname_r='undef'
+d_gethostent_r='undef'
+d_gethostprotos='define'
+d_getitimer='define'
+d_getlogin='define'
+d_getlogin_r='undef'
+d_getmnt='undef'
+d_getmntent='define'
+d_getnbyaddr='define'
+d_getnbyname='define'
+d_getnent='define'
+d_getnetbyaddr_r='undef'
+d_getnetbyname_r='undef'
+d_getnetent_r='undef'
+d_getnetprotos='define'
+d_getpagsz='define'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='define'
+d_getpgid='define'
+d_getpgrp2='undef'
+d_getpgrp='define'
+d_getppid='define'
+d_getprior='define'
+d_getprotobyname_r='undef'
+d_getprotobynumber_r='undef'
+d_getprotoent_r='undef'
+d_getprotoprotos='define'
+d_getprpwnam='undef'
+d_getpwent='define'
+d_getpwent_r='undef'
+d_getpwnam_r='undef'
+d_getpwuid_r='undef'
+d_getsbyname='define'
+d_getsbyport='define'
+d_getsent='define'
+d_getservbyname_r='undef'
+d_getservbyport_r='undef'
+d_getservent_r='undef'
+d_getservprotos='define'
+d_getspnam='define'
+d_getspnam_r='undef'
+d_gettimeod='define'
+d_gmtime_r='undef'
+d_gnulibc='define'
+d_grpasswd='define'
+d_hasmntopt='define'
+d_htonl='define'
+d_index='undef'
+d_inetaton='define'
+d_int64_t='define'
+d_isascii='define'
+d_isfinite='undef'
+d_isinf='define'
+d_isnan='define'
+d_isnanl='define'
+d_killpg='define'
+d_lchown='define'
+d_ldbl_dig='define'
+d_link='define'
+d_localtime_r='undef'
+d_locconv='define'
+d_lockf='define'
+d_longdbl='define'
+d_longlong='define'
+d_lseekproto='define'
+d_lstat='define'
+d_madvise='define'
+d_mblen='define'
+d_mbstowcs='define'
+d_mbtowc='define'
+d_memchr='define'
+d_memcmp='define'
+d_memcpy='define'
+d_memmove='define'
+d_memset='define'
+d_mkdir='define'
+d_mkdtemp='define'
+d_mkfifo='define'
+d_mkstemp='define'
+d_mkstemps='undef'
+d_mktime='define'
+d_mmap='define'
+d_modfl='undef'
+d_modfl_pow32_bug='undef'
+d_mprotect='define'
+d_msg='define'
+d_msg_ctrunc='define'
+d_msg_dontroute='define'
+d_msg_oob='define'
+d_msg_peek='define'
+d_msg_proxy='define'
+d_msgctl='define'
+d_msgget='define'
+d_msghdr_s='define'
+d_msgrcv='define'
+d_msgsnd='define'
+d_msync='define'
+d_munmap='define'
+d_mymalloc='undef'
+d_nice='define'
+d_nl_langinfo='define'
+d_nv_preserves_uv='define'
+d_off64_t='undef'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='define'
+d_pathconf='define'
+d_pause='define'
+d_perl_otherlibdirs='undef'
+d_phostname='undef'
+d_pipe='define'
+d_poll='define'
+d_portable='define'
+d_procselfexe='undef'
+d_pthread_atfork='undef'
+d_pthread_yield='undef'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='define'
+d_pwpasswd='define'
+d_pwquota='undef'
+d_qgcvt='define'
+d_quad='define'
+d_random_r='undef'
+d_readdir64_r='undef'
+d_readdir='define'
+d_readdir_r='undef'
+d_readlink='define'
+d_readv='define'
+d_recvmsg='define'
+d_rename='define'
+d_rewinddir='define'
+d_rmdir='define'
+d_safebcpy='undef'
+d_safemcpy='undef'
+d_sanemcmp='define'
+d_sbrkproto='define'
+d_sched_yield='define'
+d_scm_rights='define'
+d_seekdir='define'
+d_select='define'
+d_sem='define'
+d_semctl='define'
+d_semctl_semid_ds='define'
+d_semctl_semun='define'
+d_semget='define'
+d_semop='define'
+d_sendmsg='define'
+d_setegid='define'
+d_seteuid='define'
+d_setgrent='define'
+d_setgrent_r='undef'
+d_setgrps='define'
+d_sethent='define'
+d_sethostent_r='undef'
+d_setitimer='define'
+d_setlinebuf='define'
+d_setlocale='define'
+d_setlocale_r='undef'
+d_setnent='define'
+d_setnetent_r='undef'
+d_setpent='define'
+d_setpgid='define'
+d_setpgrp2='undef'
+d_setpgrp='define'
+d_setprior='define'
+d_setproctitle='undef'
+d_setprotoent_r='undef'
+d_setpwent='define'
+d_setpwent_r='undef'
+d_setregid='define'
+d_setresgid='define'
+d_setresuid='define'
+d_setreuid='define'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='define'
+d_setservent_r='undef'
+d_setsid='define'
+d_setvbuf='define'
+d_sfio='undef'
+d_shm='define'
+d_shmat='define'
+d_shmatprototype='define'
+d_shmctl='define'
+d_shmdt='define'
+d_shmget='define'
+d_sigaction='define'
+d_sigprocmask='define'
+d_sigsetjmp='define'
+d_sockatmark='undef'
+d_sockatmarkproto='undef'
+d_socket='define'
+d_socklen_t='define'
+d_sockpair='define'
+d_socks5_init='undef'
+d_sqrtl='undef'
+d_srand48_r='undef'
+d_srandom_r='undef'
+d_sresgproto='undef'
+d_sresuproto='undef'
+d_statblks='define'
+d_statfs_f_flags='undef'
+d_statfs_s='define'
+d_statvfs='define'
+d_stdio_cnt_lval='undef'
+d_stdio_ptr_lval='define'
+d_stdio_ptr_lval_nochange_cnt='undef'
+d_stdio_ptr_lval_sets_cnt='define'
+d_stdio_stream_array='undef'
+d_stdiobase='define'
+d_stdstdio='define'
+d_strchr='define'
+d_strcoll='define'
+d_strctcpy='define'
+d_strerrm='strerror(e)'
+d_strerror='define'
+d_strerror_r='undef'
+d_strftime='define'
+d_strtod='define'
+d_strtol='define'
+d_strtold='define'
+d_strtoll='define'
+d_strtoq='define'
+d_strtoul='define'
+d_strtoull='define'
+d_strtouq='define'
+d_strxfrm='define'
+d_suidsafe='undef'
+d_symlink='define'
+d_syscall='define'
+d_syscallproto='define'
+d_sysconf='define'
+d_sysernlst=''
+d_syserrlst='define'
+d_system='define'
+d_tcgetpgrp='define'
+d_tcsetpgrp='define'
+d_telldir='define'
+d_telldirproto='define'
+d_time='define'
+d_times='define'
+d_tm_tm_gmtoff='define'
+d_tm_tm_zone='define'
+d_tmpnam_r='undef'
+d_truncate='define'
+d_ttyname_r='undef'
+d_tzname='define'
+d_u32align='define'
+d_ualarm='define'
+d_umask='define'
+d_uname='define'
+d_union_semun='undef'
+d_unordered='undef'
+d_usleep='define'
+d_usleepproto='define'
+d_ustat='define'
+d_vendorarch='undef'
+d_vendorbin='undef'
+d_vendorlib='undef'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='define'
+d_voidtty=''
+d_volatile='define'
+d_vprintf='define'
+d_wait4='define'
+d_waitpid='define'
+d_wcstombs='define'
+d_wctomb='define'
+d_writev='define'
+d_xenix='undef'
+date='date'
+db_hashtype='u_int32_t'
+db_prefixtype='size_t'
+db_version_major=''
+db_version_minor=''
+db_version_patch=''
+defvoidused='15'
+direntrytype='struct dirent'
+dlext='so'
+dlsrc='dl_dlopen.xs'
+doublesize='8'
+drand01='drand48()'
+drand48_r_proto='0'
+dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize attrs re threads threads/shared Encode/Byte Encode/CN Encode/EBCDIC Encode/JP Encode/KR Encode/Symbol Encode/TW Encode/Unicode Errno Filter/Util/Call'
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+endgrent_r_proto='0'
+endhostent_r_proto='0'
+endnetent_r_proto='0'
+endprotoent_r_proto='0'
+endpwent_r_proto='0'
+endservent_r_proto='0'
+eunicefix=':'
+exe_ext=''
+expr='expr'
+extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize attrs re threads threads/shared Encode/Byte Encode/CN Encode/EBCDIC Encode/JP Encode/KR Encode/Symbol Encode/TW Encode/Unicode Errno'
+extras=''
+fflushNULL='define'
+fflushall='undef'
+find=''
+firstmakefile='makefile'
+flex=''
+fpossize='16'
+fpostype='fpos_t'
+freetype='void'
+from=':'
+full_ar='/usr/local/arm/2.95.3/bin/arm-linux-ar'
+full_csh='csh'
+full_sed='/bin/sed'
+gccosandvers=''
+gccversion='2.95.1 19990816 (release)'
+getgrent_r_proto='0'
+getgrgid_r_proto='0'
+getgrnam_r_proto='0'
+gethostbyaddr_r_proto='0'
+gethostbyname_r_proto='0'
+gethostent_r_proto='0'
+getlogin_r_proto='0'
+getnetbyaddr_r_proto='0'
+getnetbyname_r_proto='0'
+getnetent_r_proto='0'
+getprotobyname_r_proto='0'
+getprotobynumber_r_proto='0'
+getprotoent_r_proto='0'
+getpwent_r_proto='0'
+getpwnam_r_proto='0'
+getpwuid_r_proto='0'
+getservbyname_r_proto='0'
+getservbyport_r_proto='0'
+getservent_r_proto='0'
+getspnam_r_proto='0'
+gidformat='"lu"'
+gidsign='1'
+gidsize='4'
+gidtype='gid_t'
+glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
+gmake='gmake'
+gmtime_r_proto='0'
+gnulibc_version='2.2.4'
+grep='grep'
+groupcat='cat /etc/group'
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl='false'
+h_sysfile='true'
+hint='recommended'
+hostcat='cat /etc/hosts'
+i16size='2'
+i16type='short'
+i32size='4'
+i32type='long'
+i64size='8'
+i64type='long long'
+i8size='1'
+i8type='char'
+i_arpainet='define'
+i_bsdioctl=''
+i_crypt='define'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dld='undef'
+i_dlfcn='define'
+i_fcntl='undef'
+i_float='define'
+i_fp='undef'
+i_fp_class='undef'
+i_gdbm='undef'
+i_grp='define'
+i_ieeefp='undef'
+i_inttypes='define'
+i_langinfo='define'
+i_libutil='undef'
+i_limits='define'
+i_locale='define'
+i_machcthr='undef'
+i_malloc='define'
+i_math='define'
+i_memory='undef'
+i_mntent='define'
+i_ndbm='undef'
+i_netdb='define'
+i_neterrno='undef'
+i_netinettcp='define'
+i_niin='define'
+i_poll='define'
+i_prot='undef'
+i_pthread='define'
+i_pwd='define'
+i_rpcsvcdbm='undef'
+i_sfio='undef'
+i_sgtty='undef'
+i_shadow='define'
+i_socks='undef'
+i_stdarg='define'
+i_stddef='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='define'
+i_sysfile='define'
+i_sysfilio='undef'
+i_sysin='undef'
+i_sysioctl='define'
+i_syslog='define'
+i_sysmman='define'
+i_sysmode='undef'
+i_sysmount='define'
+i_sysndir='undef'
+i_sysparam='define'
+i_sysresrc='define'
+i_syssecrt='undef'
+i_sysselct='define'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatfs='define'
+i_sysstatvfs='define'
+i_systime='define'
+i_systimek='undef'
+i_systimes='define'
+i_systypes='define'
+i_sysuio='define'
+i_sysun='define'
+i_sysutsname='define'
+i_sysvfs='define'
+i_syswait='define'
+i_termio='undef'
+i_termios='define'
+i_time='define'
+i_unistd='define'
+i_ustat='define'
+i_utime='define'
+i_values='define'
+i_varargs='undef'
+i_varhdr='stdarg.h'
+i_vfork='undef'
+ignore_versioned_solibs='y'
+inc_version_list=' '
+inc_version_list_init='0'
+incpath=''
+inews=''
+installarchlib='./install_me_here/usr/lib/perl5/5.8.0/armv4l-linux'
+installbin='./install_me_here/usr/bin'
+installman1dir=''
+installman3dir=''
+installprefix='./install_me_here/usr/lib/perl5'
+installprefixexp='./install_me_here/usr/lib/perl5'
+installprivlib='./install_me_here/usr/lib/perl5/5.8.0'
+installscript='./install_me_here/usr/bin'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.0/armv4l-linux'
+installsitebin='./install_me_here/usr/bin'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.0'
+installstyle='lib/perl5'
+installusrbinperl='undef'
+installvendorarch=''
+installvendorbin=''
+installvendorlib=''
+intsize='4'
+issymlink='/usr/bin/test -h'
+ivdformat='"ld"'
+ivsize='4'
+ivtype='long'
+known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
+ksh=''
+ld='arm-linux-ld'
+lddlflags=' -shared '
+ldflags=''
+ldflags_uselargefiles=''
+ldlibpthname='LD_LIBRARY_PATH'
+less='less'
+lib_ext='.a'
+libc='/lib/libc-2.2.4.so'
+libperl='libperl.so'
+libpth='/lib /usr/lib'
+libs='-lc -lm -ldl'
+libsdirs=' /lib'
+libsfiles=' libc.so'
+libsfound=' /lib/libc.so'
+libspath=' /lib /usr/lib'
+libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt sec ucb BSD PW x util'
+libswanted_uselargefiles=''
+line=''
+lint=''
+lkflags=''
+ln='ln'
+lns='/bin/ln -s'
+localtime_r_proto='0'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+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='0'
+man3dir=' '
+man3direxp=''
+man3ext='0'
+mips_type=''
+mkdir='mkdir'
+mmaptype='void *'
+modetype='mode_t'
+more='more'
+multiarch='undef'
+mv=''
+myarchname='armv4l-linux'
+mydomain='.criticalintegration.com'
+myhostname='citalopram'
+myuname='linux zaurus 2.4.6-rmk1-np2-embedix #5 wed dec 11 22:20:32 cst 2002 armv4l unknown '
+n='-n'
+need_va_copy='undef'
+netdb_hlen_type='size_t'
+netdb_host_type='const void *'
+netdb_name_type='const char *'
+netdb_net_type='in_addr_t'
+nm='nm'
+nm_opt=''
+nm_so_opt=''
+nonxs_ext='Errno'
+nroff='nroff'
+nvEUformat='"E"'
+nvFUformat='"F"'
+nvGUformat='"G"'
+nv_preserves_uv_bits='32'
+nveformat='"e"'
+nvfformat='"f"'
+nvgformat='"g"'
+nvsize='8'
+nvtype='double'
+o_nonblock='O_NONBLOCK'
+obj_ext='.o'
+old_pthread_create_joinable=''
+optimize='-O2'
+orderlib='false'
+osname='linux'
+osvers='2.4.6-rmk1-np2-embedix'
+otherlibdirs=' '
+package='perl5'
+pager='/usr/bin/less'
+passcat='cat /etc/passwd'
+patchlevel='8'
+path_sep=':'
+perl5=''
+perl=''
+perl_patchlevel=''
+perladmin='red@criticalintegration.com'
+perllibs='-lc -lm -ldl'
+perlpath='/usr/bin/perl'
+pg='pg'
+phostname='hostname'
+pidtype='pid_t'
+plibpth=''
+pm_apiversion='5.005'
+pmake=''
+pr=''
+prefix='/usr'
+prefixexp='/usr'
+privlib='/usr/lib/perl5/5.8.0'
+privlibexp='/usr/lib/perl5/5.8.0'
+procselfexe=''
+prototype='define'
+ptrsize='4'
+quadkind='3'
+quadtype='long long'
+randbits='48'
+randfunc='drand48'
+random_r_proto='0'
+randseedtype='long'
+ranlib='/usr/bin/ranlib'
+rd_nodata='-1'
+readdir64_r_proto='0'
+readdir_r_proto='0'
+revision='5'
+rm='rm'
+rmail=''
+run=''
+runnm='false'
+sPRIEUldbl='"E"'
+sPRIFUldbl='"F"'
+sPRIGUldbl='"G"'
+sPRIXU64='"LX"'
+sPRId64='"Ld"'
+sPRIeldbl='"e"'
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
+sPRIi64='"Li"'
+sPRIo64='"Lo"'
+sPRIu64='"Lu"'
+sPRIx64='"Lx"'
+sSCNfldbl='"f"'
+sched_yield='sched_yield()'
+scriptdir='/usr/bin'
+scriptdirexp='/usr/bin'
+sed='sed'
+seedfunc='srand48'
+selectminbits='32'
+selecttype='fd_set *'
+sendmail=''
+setgrent_r_proto='0'
+sethostent_r_proto='0'
+setlocale_r_proto='0'
+setnetent_r_proto='0'
+setprotoent_r_proto='0'
+setpwent_r_proto='0'
+setservent_r_proto='0'
+sh='/bin/sh'
+shar=''
+sharpbang='#!'
+shmattype='void *'
+shortsize='2'
+shrpenv=''
+shsharp='true'
+sig_count='1'
+sig_name='ZERO '
+sig_name_init='"ZERO", 0'
+sig_num='0 '
+sig_num_init='0, 0'
+sig_size='1'
+signal_t='void'
+sitearch='/usr/lib/perl5/site_perl/5.8.0/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.8.0/armv4l-linux'
+sitebin='/usr/bin'
+sitebinexp='/usr/bin'
+sitelib='/usr/lib/perl5/site_perl/5.8.0'
+sitelib_stem='/usr/lib/perl5/site_perl'
+sitelibexp='/usr/lib/perl5/site_perl/5.8.0'
+siteprefix='/usr/lib/perl5.8.0'
+siteprefixexp='/usr'
+sizesize='4'
+sizetype='size_t'
+sleep=''
+smail=''
+so='so'
+sockethdr=''
+socketlib=''
+socksizetype='socklen_t'
+sort='sort'
+spackage='Perl5'
+spitshell='cat'
+srand48_r_proto='0'
+srandom_r_proto='0'
+src='.'
+ssizetype='ssize_t'
+startperl='#!/usr/bin/perl'
+startsh='#!/bin/sh'
+static_ext=' '
+stdchar='char'
+stdio_base='((fp)->_IO_read_base)'
+stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
+stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+stdio_filbuf=''
+stdio_ptr='((fp)->_IO_read_ptr)'
+stdio_stream_array=''
+strerror_r_proto='0'
+strings='/usr/include/string.h'
+submit=''
+subversion='0'
+sysman='/usr/man/man1'
+tail=''
+tar=''
+targetarch=''
+tbl=''
+tee=''
+test='test'
+timeincl='/usr/include/sys/time.h /usr/include/time.h '
+timetype='time_t'
+tmpnam_r_proto='0'
+to=':'
+touch='touch'
+tr='tr'
+trnl='\n'
+troff=''
+ttyname_r_proto='0'
+u16size='2'
+u16type='unsigned short'
+u32size='4'
+u32type='unsigned long'
+u64size='8'
+u64type='unsigned long long'
+u8size='1'
+u8type='unsigned char'
+uidformat='"lu"'
+uidsign='1'
+uidsize='4'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+uquadtype='unsigned long long'
+use5005threads='undef'
+use64bitall='undef'
+use64bitint='undef'
+usecrosscompile='undef'
+usedl='undef'
+useithreads='undef'
+uselargefiles='define'
+uselongdouble='undef'
+usemorebits='undef'
+usemultiplicity='undef'
+usemymalloc='n'
+usenm='false'
+useopcode='true'
+useperlio='define'
+useposix='true'
+usereentrant='undef'
+usesfio='false'
+useshrplib='true'
+usesocks='undef'
+usethreads='undef'
+usevendorprefix='undef'
+usevfork='false'
+usrinc='/usr/include'
+uuname=''
+uvXUformat='"lX"'
+uvoformat='"lo"'
+uvsize='4'
+uvtype='unsigned long'
+uvuformat='"lu"'
+uvxformat='"lx"'
+vendorarch=''
+vendorarchexp=''
+vendorbin=''
+vendorbinexp=''
+vendorlib=''
+vendorlib_stem=''
+vendorlibexp=''
+vendorprefix=''
+vendorprefixexp=''
+version='5.8.0'
+version_patchlevel_string='version 8 subversion 0'
+versiononly='undef'
+vi=''
+voidflags='15'
+xlibpth='/usr/lib/386 /lib/386'
+xs_apiversion='5.8.0'
+yacc='yacc'
+yaccflags=''
+zcat=''
+zip='zip'
+# Configure command line arguments.
+config_arg0='./Configure'
+config_args='-Dprefix=/usr/local/perl5.8.0 -Uinstallusrbinperl -des'
+config_argc=3
+config_arg1='-Dprefix=/usr/local/perl5.8.0'
+config_arg2='-Uinstallusrbinperl'
+config_arg3='-des'
+PERL_REVISION=5
+PERL_VERSION=8
+PERL_SUBVERSION=0
+PERL_API_REVISION=5
+PERL_API_VERSION=8
+PERL_API_SUBVERSION=0
+PERL_PATCHLEVEL=
+PERL_CONFIG_SH=true
diff --git a/Cross/generate_config_sh b/Cross/generate_config_sh
new file mode 100755
index 0000000000..4461b8c797
--- /dev/null
+++ b/Cross/generate_config_sh
@@ -0,0 +1,131 @@
+#!/usr/bin/perl
+
+##############################################################################
+#
+# Ok, so there is this buildsystem that has variables set in shell
+# like this:
+#
+# cc='gcc'
+#
+# This means we can go
+#
+# if test "${CC+set}" != set; then
+# ar='arm-linux-ar'
+# else
+# ar=${AR}
+# fi
+#
+# Right??? WRONG!
+#
+# Damn perl installation *PARSES* and *PATTERN MATCHES* this file.
+#
+##############################################################################
+
+my $config = shift;
+
+my $sys = $ENV{SYS};
+
+my $callbacks = {};
+$callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
+$callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
+$callbacks->{'cc'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+$callbacks->{'cccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+$callbacks->{'ccdlflags'} = [\&simple_process, ["CFLAGS", ""]];
+$callbacks->{'ccflags'} = [\&simple_process, ["CFLAGS", "-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+$callbacks->{'ccflags_uselargefiles'} = [\&simple_process, ["CFLAGS", "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"]];
+$callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
+$callbacks->{'cpp'} = [\&simple_process, ["CCP", "arm-linux-cpp"]];
+$callbacks->{'cppflags'} = [\&simple_process, ["CCPFLAGS", "-fno-strict-aliasing"]];
+$callbacks->{'cpprun'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
+$callbacks->{'cppstdin'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
+$callbacks->{'full_ar'} = [\&backtick, ["AR", "which $ENV{AR}", "/usr/local/arm/2.95.3/bin/arm-linux-ar"]];
+$callbacks->{'ld'} = [\&simple_process, ["LD", "arm-linux-ld"]];
+$callbacks->{'ldflags'} = [\&simple_process, ["LDFLAGS", ""]];
+$callbacks->{'ldflags_uselargefiles'} = [\&simple_process, ["LDFLAGS", ""]];
+$callbacks->{'myarchname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
+$callbacks->{'archlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'archlibexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'installarchlib'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'installsitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'sitearch'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+$callbacks->{'sitearchexp'} = [\&library_munge, ["SYS", "armv4l-linux"]];
+
+if ($config eq "") {
+ die("Please run me as generate_config_sh path/to/original/config.sh");
+}
+
+open(FILE, "$config") || die("Unable to open $config");
+
+my $line_in;
+while ($line_in = <FILE>) {
+ if ($line_in =~ /^#/) {
+ next;
+ }
+
+ if ($line_in !~ /./) {
+ next;
+ }
+
+ $line_in =~ /^([^=]+)=(.*)/;
+ my $key = $1;
+ my $value = $2;
+ if (ref($callbacks->{$key}) eq "ARRAY") {
+ ($callbacks->{$key}[0])->($key,$value);
+ } else {
+ print($line_in);
+ }
+}
+
+sub backtick {
+ my $key = shift;
+ my $value = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ my $rawtext = `$callbacks->{$key}->[1][1]`;
+ chomp($rawtext);
+ print("$key=\'$rawtext\'\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][2]\'\n");
+ }
+}
+
+
+sub simple_process {
+ my $key = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ print("$key=\"$ENV{$envvar}\"\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][1]\'\n");
+ }
+
+}
+
+sub simple_process_append {
+ my $key = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ print("$key=\"$ENV{$envvar} $callbacks->{$key}->[1][2]\"\n");
+ } else {
+ print("$key=\'$callbacks->{$key}->[1][1]\'\n");
+ }
+
+}
+
+sub library_munge {
+ my $key = shift;
+ my $value = shift;
+ my $envvar = $callbacks->{$key}->[1][0];
+
+ if ($ENV{$envvar}) {
+ $value =~ s/$callbacks->{$key}->[1][1]/$ENV{$envvar}/g;
+ print("$key=$value\n");
+ } else {
+ print("$key=$value\n");
+ }
+
+}
+
diff --git a/Cross/installperl.patch b/Cross/installperl.patch
new file mode 100644
index 0000000000..33ad2d4c0a
--- /dev/null
+++ b/Cross/installperl.patch
@@ -0,0 +1,22 @@
+--- ../installperl 2002-07-16 18:57:32.000000000 +0000
++++ installperl 2003-04-15 01:55:54.000000000 +0000
+@@ -3,8 +3,8 @@
+ BEGIN {
+ require 5.004;
+ chdir '..' if !-d 'lib' and -d '..\lib';
+- @INC = 'lib';
+- $ENV{PERL5LIB} = 'lib';
++# @INC = 'lib';
++# $ENV{PERL5LIB} = 'lib';
+ }
+
+ use strict;
+@@ -876,7 +876,7 @@
+ print " " if (@opts);
+ print "$file\n";
+ }
+- system("strip", @opts, $file);
++ system("XXSTRIPXX-strip", @opts, $file);
+ } else {
+ print "# file '$file' skipped\n" if $verbose;
+ }
diff --git a/Cross/warp b/Cross/warp
new file mode 100755
index 0000000000..69cffeeada
--- /dev/null
+++ b/Cross/warp
@@ -0,0 +1,14 @@
+#!/bin/sh -x
+
+## This script contains an rm -rf. This may alarm you.
+## These directories need to be reccursively deleted.
+## I don't see any method of making "Bad Things"[tm]
+## Happen. But we don't run buildroot as root do we? :-)
+
+for f in `find lib -name install_me_here`;do
+cp -r $f/* ./install_me_here/
+done
+
+for f in `find lib -name install_me_here`;do
+rm -rf $f
+done