blob: 08528ccbcddf345b91eaea69e0828ed8e3b9a10a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
$NetBSD: HOWTO-distcc,v 1.3 2020/12/12 10:42:47 fcambus Exp $
Crosscompiling with distcc HOWTO
================================
Purpose:
--------
croscompiling of sourcecode in general including NetBSD's source
tree and NetBSD's pkgsrc packages using `pkgsrc/devel/distcc'
Note that this current setup is not intended for build builds as it might
confuse the buildbuild system.
Terminology:
------------
There are multiple terminologies in use for cross building. In pkgsrc, we use
build platform: the system on which you are doing the compilation of packages
target platform: the system on which you will run the packages
(An alternative terminology is that used by autoconf:
build: as above
host: as "target", above
target: the architecture that the cross-built compiler produces code for
pkgsrc chooses the more simple build/target terms because the Canadian
Cross situation is not common in pkgsrc. Partially because of the
potential for confusion with autoconf's terminology, we avoid the word
"host".
Target machine setup:
---------------------
1) install `pkgsrc/devel/distcc' package.
2) install helper script "use-distcc" in f.e. /usr/local/bin/:
---------
#!/usr/pkg/bin/tcsh
setenv PATH "/usr/distcc/bin:$PATH"
setenv CC gcc
---------
3) create directory "/usr/distcc/bin" contents with softlinks :
lrwxr-xr-x 1 root wheel 20 Sep 16 02:58 c++@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:57 cc@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:58 g++@ -> ../../pkg/bin/distcc
lrwxr-xr-x 1 root wheel 20 Sep 16 02:57 gcc@ -> ../../pkg/bin/distcc
Helper machine setup:
---------------------
1) install `pkgsrc/devel/distcc' package.
2) create a crosscompiler to compile from any architecture to NetBSD/sparc,
go to the NetBSD src dir and run :
./build.sh -a sparc -m sparc -T /usr/gcc-cross-sparc/ tools
this will create a directory called /usr/gcc-cross-sparc/ with the
crosscompilation tools.
3) install helper script "START-distcc'
------------
#!/usr/pkg/bin/tcsh
setenv PATH "/usr/gcc-cross-sparc/sparc--netbsdelf/bin/:$PATH"
setenv DISTCC_VERBOSE 1
distccd -a 192.168.0.137/24 --listen 192.168.0.137 -p 3632
-----------
this will start the `distcc' daemon to listen on the 192.168.0/24 network
and listen on 192.168.0.137 specifically and on port 3632 (why doesn't it do
this on default?)
Compilation of sources (not pkgsrc):
------------------------------------
1) on each helper machine run the `START-distcc' script
2) on the target machine (replace helper1, helper2 etc. by the names/ip
addresses of the helper machines) :
-----------
source /usr/local/bin/use-distcc
setenv DISTCC_HOSTS "helper1 helper2 helper3"
cd .../sourcedir
make -j2 target
-----------
Compilation of pkgsrc packages:
-------------------------------
1) on each helper machine run the `START-distcc' script
2) on the target machine, do NOT run the `use-distcc' script, go to the
package dir and set :
set the helpers (,lzo addition sets compression of the data transport):
setenv DISTCC_HOSTS "helper1 helper2 helper3,lzo"
instruct pkgsrc to use distcc:
setenv PKGSRC_COMPILER "distcc gcc"
set the concurrency level (not all packages allow this)
setenv BUILD_MAKE_FLAGS "-j2"
compile/update package
make update
thats all :)
|