Mercurial > hg > aboriginal
annotate build.sh @ 1786:0787ceb820bf draft 1.4.2
When x86-64 switched on NPTL in uClibc, distcc broke, and it turns out fully
native compiles under qemu never worked due to qemu not quite emulating
floating point right and confusing the perl build with zero not comparing equal
to zero.
As long as it's broken anyway, switch it over to musl and fix it up on that
side. It's no longer worth trying to fix anything broken in uClibc, the
project is dead. (I'm aware of uClibc-ng, and am treating it exactly the
same way I treated the ecommstation reboot of OS/2.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Fri, 11 Sep 2015 13:25:14 -0500 |
parents | 98a53110ce38 |
children | d461b345c3c9 |
rev | line source |
---|---|
96
137ba51ee993
Delete output directories on re-run, teach build to log and build multiple
Rob Landley <rob@landley.net>
parents:
93
diff
changeset
|
1 #!/bin/bash |
137ba51ee993
Delete output directories on re-run, teach build to log and build multiple
Rob Landley <rob@landley.net>
parents:
93
diff
changeset
|
2 |
888 | 3 # Run all the steps needed to build a system image from scratch. |
4 | |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
5 # The default set of stages run by this script is (in order): |
1730
7f1b9fb1099e
Move simple-root-filesystem.sh to root-filesystem.sh
Rob Landley <rob@landley.net>
parents:
1728
diff
changeset
|
6 # download, host-tools, simple-cross-compiler, root-filesystem, |
1728
b89324905ca2
Giant redo to put simple-root-filesystem in initmpfs.
Rob Landley <rob@landley.net>
parents:
1706
diff
changeset
|
7 # native-compiler, system-image. |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
8 |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
9 # That sanitizes the host build environment and builds a cross compiler, |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
10 # cross compiles a root filesystem and a native toolchain for the target, |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
11 # and finally packages the root filesystem up into a system image bootable |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
12 # by qemu. |
1116
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
13 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
14 # The optional cross-compiler stage (after simple-cross-compiler but before |
1730
7f1b9fb1099e
Move simple-root-filesystem.sh to root-filesystem.sh
Rob Landley <rob@landley.net>
parents:
1728
diff
changeset
|
15 # root-filesystem) creates a more powerful and portable cross compiler |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
16 # that can be used to cross compile more stuff (if you're into that sort of |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
17 # thing). To enable that: |
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
18 |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
19 # CROSS_COMPILER_HOST=i686 ./build.sh $TARGET |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
20 |
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
21 # Where "i686" is whichever target you want the new cross compiler to run on. |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
22 |
1728
b89324905ca2
Giant redo to put simple-root-filesystem in initmpfs.
Rob Landley <rob@landley.net>
parents:
1706
diff
changeset
|
23 # The simplest set of stages (if you run them yourself) is: |
1730
7f1b9fb1099e
Move simple-root-filesystem.sh to root-filesystem.sh
Rob Landley <rob@landley.net>
parents:
1728
diff
changeset
|
24 # download, simple-cross-compiler, root-filesystem, system-image. |
1728
b89324905ca2
Giant redo to put simple-root-filesystem in initmpfs.
Rob Landley <rob@landley.net>
parents:
1706
diff
changeset
|
25 |
1395
ee222555de52
Print better error message for bad architecture name, idea from Alessio Igor Bogani.
Rob Landley <rob@landley.net>
parents:
1378
diff
changeset
|
26 # If this script was run with no arguments, list available architectures |
108
b66d638a3844
Build User Mode Linux and have that do the ext2 packaging (for now, anyway).
Rob Landley <rob@landley.net>
parents:
105
diff
changeset
|
27 |
1739
4ca4ddd185db
Check up front that "./build.sh $ARCH $STAGE" actually names an existing stage to rebuild from.
Rob Landley <rob@landley.net>
parents:
1737
diff
changeset
|
28 [ ! -z "$2" ] && REBUILD="$2" && |
4ca4ddd185db
Check up front that "./build.sh $ARCH $STAGE" actually names an existing stage to rebuild from.
Rob Landley <rob@landley.net>
parents:
1737
diff
changeset
|
29 [ ! -e "$2".sh ] && echo "no stage $2" && exit 1 |
1471
9c2b7ec6b0c7
Optional second argument to build.sh indicates which stage to start rebuilding from after a successful first build.
Rob Landley <rob@landley.net>
parents:
1458
diff
changeset
|
30 |
9c2b7ec6b0c7
Optional second argument to build.sh indicates which stage to start rebuilding from after a successful first build.
Rob Landley <rob@landley.net>
parents:
1458
diff
changeset
|
31 if [ $# -lt 1 ] || [ $# -gt 2 ] || [ ! -e sources/targets/"$1" ] |
114
304fd441e6a4
Re-teach build.sh to build more than one architecture in sequence.
Rob Landley <rob@landley.net>
parents:
108
diff
changeset
|
32 then |
1602
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
33 echo |
1471
9c2b7ec6b0c7
Optional second argument to build.sh indicates which stage to start rebuilding from after a successful first build.
Rob Landley <rob@landley.net>
parents:
1458
diff
changeset
|
34 echo "Usage: $0 TARGET [REBUILD_FROM_STAGE]" |
1602
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
35 echo |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
36 echo "Supported architectures:" |
1395
ee222555de52
Print better error message for bad architecture name, idea from Alessio Igor Bogani.
Rob Landley <rob@landley.net>
parents:
1378
diff
changeset
|
37 ls sources/targets |
1602
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
38 echo |
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
39 echo "Build stages:" |
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
40 sed -n 's/#.*//;s@.*[.]/\([^.]*\)[.]sh.*@\1@p' "$0" | uniq | xargs echo |
045160e8ad71
Better help test for build.sh
Rob Landley <rob@landley.net>
parents:
1471
diff
changeset
|
41 echo |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
42 |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
43 exit 1 |
114
304fd441e6a4
Re-teach build.sh to build more than one architecture in sequence.
Rob Landley <rob@landley.net>
parents:
108
diff
changeset
|
44 fi |
941
7dd3fb4dd333
Minor cleanups and comments, introduce check_prerequisite function.
Rob Landley <rob@landley.net>
parents:
915
diff
changeset
|
45 ARCH="$1" |
108
b66d638a3844
Build User Mode Linux and have that do the ext2 packaging (for now, anyway).
Rob Landley <rob@landley.net>
parents:
105
diff
changeset
|
46 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
47 # Use environment variables persistently set in the config file. |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
48 |
1028
5897a868313e
Jean-Christophe Dubois pointed out that if build.sh doesn't source config, it doesn't get things like NO_NATIVE_COMPILER.
Rob Landley <rob@landley.net>
parents:
1007
diff
changeset
|
49 [ -e config ] && source config |
5897a868313e
Jean-Christophe Dubois pointed out that if build.sh doesn't source config, it doesn't get things like NO_NATIVE_COMPILER.
Rob Landley <rob@landley.net>
parents:
1007
diff
changeset
|
50 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
51 # Allow the output directory to be overridden. This hasn't been tested in |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
52 # forever and probably doesn't work. |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
53 |
984
9840847885e8
Add export_if_blank and make lots of build paths overrideable.
Rob Landley <rob@landley.net>
parents:
944
diff
changeset
|
54 [ -z "$BUILD" ] && BUILD="build" |
9840847885e8
Add export_if_blank and make lots of build paths overrideable.
Rob Landley <rob@landley.net>
parents:
944
diff
changeset
|
55 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
56 # Very simple dependency tracking: skip stages that have already been done |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
57 # (because the tarball they create is already there). |
1116
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
58 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
59 # If you need to rebuild a stage (and everything after it), delete its |
1116
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
60 # tarball out of "build" and re-run build.sh. |
941
7dd3fb4dd333
Minor cleanups and comments, introduce check_prerequisite function.
Rob Landley <rob@landley.net>
parents:
915
diff
changeset
|
61 |
786
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
62 not_already() |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
63 { |
1743
10b64f52ad20
Make tweak.sh actually work, and do less unnecessary rebuilding.
Rob Landley <rob@landley.net>
parents:
1740
diff
changeset
|
64 [ "$AGAIN" == "$1" ] && return 0 |
1458
60f1087591ac
Add ability to specify a package to rebuild to build.sh with REBUILD= (and then dependencies take it from there to the system image).
Rob Landley <rob@landley.net>
parents:
1395
diff
changeset
|
65 [ "$REBUILD" == "$1" ] && zap "$1" |
60f1087591ac
Add ability to specify a package to rebuild to build.sh with REBUILD= (and then dependencies take it from there to the system image).
Rob Landley <rob@landley.net>
parents:
1395
diff
changeset
|
66 |
1737
1acbe7e78d9d
Switch from bz2 to gz tarball output.
Rob Landley <rob@landley.net>
parents:
1730
diff
changeset
|
67 if [ -f "$BUILD/$1-$ARCH.tar.gz" ] |
786
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
68 then |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
69 echo "=== Skipping $1-$ARCH (already there)" |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
70 return 1 |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
71 fi |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
72 |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
73 return 0 |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
74 } |
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
75 |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
76 zap() |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
77 { |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
78 for i in "$@" |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
79 do |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
80 rm -f "$BUILD/$i-$ARCH.tar.gz" |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
81 done |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
82 } |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
83 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
84 do_stage() |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
85 { |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
86 STAGE="$1" |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
87 shift |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
88 |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
89 if [ "$AFTER" == "$STAGE" ] |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
90 then |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
91 unset AFTER |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
92 else |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
93 time ./"$STAGE".sh "$@" || exit 1 |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
94 fi |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
95 } |
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
96 |
1116
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
97 # The first two stages (download.sh and host-tools.sh) are architecture |
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
98 # independent. In order to allow multiple builds in parallel, re-running |
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
99 # them after they've already completed must be a safe NOP. |
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
100 |
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
101 # Download source code. |
944
fc134a13357e
Largeish refactoring and cleanup of compiler build:
Rob Landley <rob@landley.net>
parents:
941
diff
changeset
|
102 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
103 do_stage download |
944
fc134a13357e
Largeish refactoring and cleanup of compiler build:
Rob Landley <rob@landley.net>
parents:
941
diff
changeset
|
104 |
1116
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
105 # Build host tools. This populates a single directory with every command the |
2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1090
diff
changeset
|
106 # build needs, so we can ditch the host's $PATH afterwards. |
944
fc134a13357e
Largeish refactoring and cleanup of compiler build:
Rob Landley <rob@landley.net>
parents:
941
diff
changeset
|
107 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
108 if [ -z "$NO_HOST_TOOLS" ] |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
109 then |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
110 do_stage host-tools |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
111 fi |
944
fc134a13357e
Largeish refactoring and cleanup of compiler build:
Rob Landley <rob@landley.net>
parents:
941
diff
changeset
|
112 |
941
7dd3fb4dd333
Minor cleanups and comments, introduce check_prerequisite function.
Rob Landley <rob@landley.net>
parents:
915
diff
changeset
|
113 # Do we need to build the simple cross compiler? |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
114 |
944
fc134a13357e
Largeish refactoring and cleanup of compiler build:
Rob Landley <rob@landley.net>
parents:
941
diff
changeset
|
115 if not_already simple-cross-compiler |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
116 then |
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
117 # If we need to build cross compiler, assume root filesystem is stale. |
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
118 |
1755
6f81048998fe
The linux-kernel stage got merged back into system-image but build.sh dependencies weren't updated. (Oops.)
Rob Landley <rob@landley.net>
parents:
1743
diff
changeset
|
119 zap root-filesystem cross-compiler native-compiler system-image |
1007
48784ae8533e
Move CROSS_SMOKE_TEST implementation out of simple-cross-compiler.sh and into sources/more/cross-smoke-test.sh, called from build.sh. Clean up comments a bit while we're there.
Rob Landley <rob@landley.net>
parents:
998
diff
changeset
|
120 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
121 do_stage simple-cross-compiler "$ARCH" |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
122 fi |
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
123 |
1007
48784ae8533e
Move CROSS_SMOKE_TEST implementation out of simple-cross-compiler.sh and into sources/more/cross-smoke-test.sh, called from build.sh. Clean up comments a bit while we're there.
Rob Landley <rob@landley.net>
parents:
998
diff
changeset
|
124 # Optionally, we can build a more capable statically linked compiler via |
48784ae8533e
Move CROSS_SMOKE_TEST implementation out of simple-cross-compiler.sh and into sources/more/cross-smoke-test.sh, called from build.sh. Clean up comments a bit while we're there.
Rob Landley <rob@landley.net>
parents:
998
diff
changeset
|
125 # canadian cross. (It's more powerful than we need here, but if you're going |
48784ae8533e
Move CROSS_SMOKE_TEST implementation out of simple-cross-compiler.sh and into sources/more/cross-smoke-test.sh, called from build.sh. Clean up comments a bit while we're there.
Rob Landley <rob@landley.net>
parents:
998
diff
changeset
|
126 # to use the cross compiler in other contexts this is probably what you want.) |
784
037488e9889d
New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set.
Rob Landley <rob@landley.net>
parents:
781
diff
changeset
|
127 |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
128 if [ ! -z "$CROSS_COMPILER_HOST" ] && not_already cross-compiler |
784
037488e9889d
New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set.
Rob Landley <rob@landley.net>
parents:
781
diff
changeset
|
129 then |
1755
6f81048998fe
The linux-kernel stage got merged back into system-image but build.sh dependencies weren't updated. (Oops.)
Rob Landley <rob@landley.net>
parents:
1743
diff
changeset
|
130 zap root-filesystem native-compiler system-image |
784
037488e9889d
New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set.
Rob Landley <rob@landley.net>
parents:
781
diff
changeset
|
131 |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
132 # Build the host compiler if necessary |
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
133 |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
134 if ARCH="$CROSS_COMPILER_HOST" not_already simple-cross-compiler |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
135 then |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
136 do_stage simple-cross-compiler "$CROSS_COMPILER_HOST" |
1212
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
137 fi |
19f3be2b4d04
Teach build.sh to build host compiler if necessary for CROSS_HOST_ARCH.
Rob Landley <rob@landley.net>
parents:
1129
diff
changeset
|
138 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
139 do_stage cross-compiler "$ARCH" |
784
037488e9889d
New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set.
Rob Landley <rob@landley.net>
parents:
781
diff
changeset
|
140 fi |
037488e9889d
New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set.
Rob Landley <rob@landley.net>
parents:
781
diff
changeset
|
141 |
1765
feac53ef0d1c
Building ELF toolchain with ./build.sh should stop early.
Rob Landley <rob@landley.net>
parents:
1755
diff
changeset
|
142 if ! grep -q KARCH= sources/targets/"$ARCH" |
feac53ef0d1c
Building ELF toolchain with ./build.sh should stop early.
Rob Landley <rob@landley.net>
parents:
1755
diff
changeset
|
143 then |
feac53ef0d1c
Building ELF toolchain with ./build.sh should stop early.
Rob Landley <rob@landley.net>
parents:
1755
diff
changeset
|
144 echo no KARCH in $1, stopping here |
feac53ef0d1c
Building ELF toolchain with ./build.sh should stop early.
Rob Landley <rob@landley.net>
parents:
1755
diff
changeset
|
145 fi |
feac53ef0d1c
Building ELF toolchain with ./build.sh should stop early.
Rob Landley <rob@landley.net>
parents:
1755
diff
changeset
|
146 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
147 # Build the basic root filesystem. |
539
85979aa53fde
Teach build.sh not to rerun build stages we already have the result of.
Rob Landley <rob@landley.net>
parents:
503
diff
changeset
|
148 |
1730
7f1b9fb1099e
Move simple-root-filesystem.sh to root-filesystem.sh
Rob Landley <rob@landley.net>
parents:
1728
diff
changeset
|
149 if not_already root-filesystem |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
150 then |
1728
b89324905ca2
Giant redo to put simple-root-filesystem in initmpfs.
Rob Landley <rob@landley.net>
parents:
1706
diff
changeset
|
151 zap system-image |
1755
6f81048998fe
The linux-kernel stage got merged back into system-image but build.sh dependencies weren't updated. (Oops.)
Rob Landley <rob@landley.net>
parents:
1743
diff
changeset
|
152 [ "$SYSIMAGE_TYPE" == rootfs ] && zap system-image |
539
85979aa53fde
Teach build.sh not to rerun build stages we already have the result of.
Rob Landley <rob@landley.net>
parents:
503
diff
changeset
|
153 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
154 do_stage root-filesystem "$ARCH" |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
155 fi |
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
156 |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
157 # Build a native compiler. It's statically linked by default so it can |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
158 # run on an arbitrary host system. |
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
159 |
1728
b89324905ca2
Giant redo to put simple-root-filesystem in initmpfs.
Rob Landley <rob@landley.net>
parents:
1706
diff
changeset
|
160 if not_already native-compiler |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
161 then |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
162 zap system-image |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
163 |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
164 do_stage native-compiler "$ARCH" |
1350
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
165 fi |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
166 |
7eabfa815c90
Split up system-image.sh into root-image.sh, linux-kernel.sh, and system-image.sh. Rename CROSS_HOST_ARCH to CROSS_COMPILER_HOST.
Rob Landley <rob@landley.net>
parents:
1228
diff
changeset
|
167 # Package it all up into something qemu can boot. |
1128
e5f9681a8b3c
Lots of comment updates. Add a NO_HOST_TOOLS=1 config option, and a few "time" calls to stages that didn't have them. Put native-compiler.sh after root-filesystem.sh in build so it's slightly easier to document.
Rob Landley <rob@landley.net>
parents:
1116
diff
changeset
|
168 |
786
8b5ea56e7507
Teach build.sh not to rebuild static compilers if they're already there.
Rob Landley <rob@landley.net>
parents:
785
diff
changeset
|
169 if not_already system-image |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
170 then |
1740
258427b0c8be
Add more/tweak.sh to rebuild a package in a stage.
Rob Landley <rob@landley.net>
parents:
1739
diff
changeset
|
171 do_stage system-image "$ARCH" |
781
d8c780ed3686
Simplify build.sh to take exactly one argument. (Otherwise use buildall.sh.)
Rob Landley <rob@landley.net>
parents:
744
diff
changeset
|
172 fi |