This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fixing "make distclean" to remove "config.arch"
[perl5.git] / Cross / README
1 Building for arm-linux
2 ----------------------
3
4 The files in this directory add another cross-compilation
5 target to the Perl buildsystem.  It was built as a part of
6 the Open Zaurus (http://www.openzaurus.com/) distribution.
7 Most / All of the arm compiler optimisations are "borrowed"
8 from this excellent project.
9
10 (Further discussion about cross-compiling Perl in the top level
11 INSTALL file, see the section "Cross-compilation".)
12
13 The main target is arm-linux but I have also managed to
14 successfully cross-compile Perl for Solaris x86 using the same
15 buildsystem.
16
17 We are currently dependent on an existing working local copy of
18 Perl ** of the same version and revision ** which is available
19 as /usr/bin/perl. 
20
21 You need a working and tested cross-compiler for your build
22 and target combination.  The binary directory must be in
23 your path.
24
25 1)      You should be reading me (README) in perl-5.x.y/Cross
26
27 2)      Make sure you are in the Cross directory.
28
29 3)      Edit the file 'config' to contain your target platform information.
30
31 4)      make patch      ## This will patch the existing source-tree.
32 5)      make perl       ## Will make perl
33
34 Your built Perl environment is in install_me_here/ in your build
35 directory.  From here you can package and deploy as you wish.
36
37 Omissions
38 ----------
39
40 This does NOT perform any installation.
41
42 Make test will NOT work.
43
44 We do not provide documentation in the core,  man pages are not generated.
45
46 Other Targets (For Developers)
47 ------------------------------
48
49 It is possible to extend the cross-compilation to other targets.
50 We have sucessfully compiled for the target solaris2.8/x86
51 on linux/x86 build system.
52
53 To attempt a cross-compile for another target using the methods
54 in this directory:
55
56 1)      Copy the Perl source code onto your TARGET machine.
57 2)      Execute sh Configure as normal and configure as required,
58         do not "make".
59 3)      Copy the config.sh file that is generated to your BUILD
60         machine and place it in the Cross directory with the
61         filename config.sh-ARCH-OS.  For example,
62         config.sh-i386-pc-solaris2.8.  For the appropriate ARCH
63         and OS please refer to your cross-compiler documentation.
64 4)      Edit Cross/config to reflect your new target and continue
65         with build as above.
66
67 Should you wish to produce optimised binaries for different
68 architectures you can add the appropriate compiler flags to
69 the Makefile in a new ifeq ($(ARCH),...) ... endif block.
70
71
72 Please refer to your cross-compiler documentation for details.
73
74
75         Note that the Cross/ directory is also used by a different
76         cross-compilation setup described in the INSTALL file, and
77         executed by Configure.  There should be no conflicts since
78         it is unlikely both that cross-compilation setups are used
79         simultaneously.
80
81 Enjoy!
82
83 References
84 ----------
85 Redvers Davies <red@criticalintegration.com>
86 Open Zaurus http://www.openzaurus.org/
87 Perl OZ Packages http://www.criticalintegration.com/perl-oz/