4 # Copyright (c) 2019 Jiří Zárevúcky
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
11 # - Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # - Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # - The name of the author may not be used to endorse or promote products
17 # derived from this software without specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 # Find out the path to the script.
32 SOURCE_DIR
=`which -- "$0" 2>/dev/null`
33 # Maybe we are running bash.
34 [ -z "$SOURCE_DIR" ] && SOURCE_DIR
=`which -- "$BASH_SOURCE"`
35 [ -z "$SOURCE_DIR" ] && exit 1
36 SOURCE_DIR
=`dirname -- "$SOURCE_DIR"`
37 SOURCE_DIR
=`cd $SOURCE_DIR && cd .. && echo $PWD`
39 # Check command line arguments.
41 if [ "$#" -gt 1 ] ||
( [ "$#" -eq 1 ] && [ "$1" != '--no-images' ] ); then
42 echo "Unknown command-line arguments."
44 echo " $0 # Build everything."
45 echo " $0 --no-images # Build all code, but don't create bootable images."
49 if [ "$#" -eq 1 ]; then
55 # Make sure we don't make a mess in the source root.
56 if [ "$PWD" = "$SOURCE_DIR" ]; then
61 CONFIG_RULES
="${SOURCE_DIR}/HelenOS.config"
63 PROFILES
=`sh ${SOURCE_DIR}/tools/list_profiles.sh`
66 echo "###################### Configuring all profiles ######################"
68 echo "Configuring profiles" $PROFILES
70 for profile
in $PROFILES; do
71 # echo "Configuring profile ${profile}"
73 mkdir
-p ${profile} ||
exit 1
74 script -q -e /dev
/null
-c "cd '${profile}' && '${SOURCE_DIR}/configure.sh' '${profile}' && ninja build.ninja" </dev/null >"${profile}/configure_output.log" 2>&1 &
75 echo "$!" >"${profile}/configure.pid"
80 for profile
in $PROFILES; do
81 if ! wait `cat "${profile}/configure.pid"`; then
83 cat "${profile}/configure_output.log"
85 echo "Configuration of profile ${profile} failed."
90 if [ "$failed" = 'yes' ]; then
92 echo "Some configuration jobs failed."
95 echo "All profiles configured."
99 echo "###################### Building all profiles ######################"
101 for profile
in $PROFILES; do
103 ninja
-C ${profile} ||
exit 1
106 if [ "$NO_IMAGES" = 'true' ]; then
108 echo "Bootable images not built due to argument --no-images."
113 echo "###################### Building all images ######################"
115 for profile
in $PROFILES; do
117 ninja
-C ${profile} image_path ||
exit 1
121 for profile
in $PROFILES; do
122 path
=`cat ${profile}/image_path`
124 if [ ! -z "$path" ]; then
125 echo "built ${profile}/${path}"