@@ -9,215 +9,202 @@ usage() {
99 echo -e " \tz690a_ddr5 - build Dasharo image compatible with MSI PRO Z690-A (WIFI)"
1010 echo -e " \tz790p_ddr4 - build Dasharo image compatible with MSI PRO Z790-P (WIFI) DDR4"
1111 echo -e " \tz790p_ddr5 - build Dasharo image compatible with MSI PRO Z790-P (WIFI)"
12+
1213 echo -e " \tvp66xx - build Dasharo for Protectli VP66xx"
1314 echo -e " \tvp46xx - build Dasharo for Protectli VP46xx"
1415 echo -e " \tvp2420 - build Dasharo for Protectli VP2420"
1516 echo -e " \tvp2410 - build Dasharo for Protectli VP2410"
1617 echo -e " \tV1210 - build Dasharo for Protectli V1210"
1718 echo -e " \tV1410 - build Dasharo for Protectli V1410"
1819 echo -e " \tV1610 - build Dasharo for Protectli V1610"
20+
1921 echo -e " \tapu2 - build Dasharo for PC Engines APU2"
2022 echo -e " \tapu3 - build Dasharo for PC Engines APU3"
2123 echo -e " \tapu4 - build Dasharo for PC Engines APU4"
2224 echo -e " \tapu6 - build Dasharo for PC Engines APU6"
25+
2326 echo -e " \toptiplex_9010 - build Dasharo compatible with Dell OptiPlex 7010/9010"
27+
2428 echo -e " \tqemu - build Dasharo for QEMU Q35"
2529 echo -e " \tqemu_full - build Dasharo for QEMU Q35 with all menus available"
30+
31+ echo -e " \tv540tu - build Dasharo for Novacustom V540TU"
32+ echo -e " \tv560tu - build Dasharo for Novacustom V560TU"
33+ echo -e " \tns5x7x - build Dasharo for Novacustom NS5x/NS7x"
34+ echo -e " \tnv4x_adl - build Dasharo for Novacustom NV4x 12 gen"
35+ echo -e " \tnx5x7x - build Dasharo for Novacustom Nx5x/Nx7x"
36+ echo -e " \tnv4x_tgl - build Dasharo for Novacustom NV4x 11 gen"
37+
38+ echo " Used environmental variables:"
39+ echo -e " \tCB_REVISION - build Dasharo coreboot from a given revision name"
40+ echo -e " \tNO_DISTCLEAN - set to not clean the repository before building"
41+ echo -e " \tNO_CONFIG_OVERRIDE - set to not override the " ./.config" file"
42+ echo -e " \tNO_SUBMODULE_UPDATE - set to not update the submodules"
43+ echo -e " \tEC_REVISION - use the given EC revvision to build Dasharo coreboot on platforms which require it"
2644}
2745
2846SDKVER=" 2023-11-24_2731fa619b"
2947
3048
31- function build_optiplex_9010 {
32- DEFCONFIG=" configs/config.dell_optiplex_9010_sff_uefi_txt"
33- FW_VERSION=v0.1.0-rc1
3449
35- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
36- -v $HOME /.ssh:/home/coreboot/.ssh \
37- -w /home/coreboot/coreboot coreboot/coreboot-sdk: $SDKVER \
38- /bin/bash -c " make distclean "
50+ function prepare_for_build {
51+ if [[ -v CB_REVISION ]] ; then
52+ git checkout $CB_REVISION
53+ fi
3954
40- cp " ${DEFCONFIG} " .config
55+ if [[ ! -v NO_DISTCLEAN ]]; then
56+ docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
57+ -v $HOME /.ssh:/home/coreboot/.ssh \
58+ -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
59+ /bin/bash -c " make distclean"
60+ fi
4161
42- git submodule update --init --checkout
62+ if [[ ! -v NO_CONFIG_OVERRIDE ]]; then
63+ cp " ${DEFCONFIG} " .config
64+ fi
65+ }
4366
44- echo " Building Dasharo compatible with Dell OptiPlex 7010/9010 (version $FW_VERSION )"
67+ function build_coreboot {
68+ TARGET_BINARY=$1
69+ prepare_for_build
4570
4671 docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
4772 -v $HOME /.ssh:/home/coreboot/.ssh \
4873 -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
4974 /bin/bash -c " make olddefconfig && make -j$( nproc) "
50-
51- cp build/coreboot.rom ${BOARD} _ ${FW_VERSION} .rom
75+
76+ cp build/coreboot.rom $TARGET_BINARY
5277 if [ $? -eq 0 ]; then
53- echo " Result binary placed in $PWD /${BOARD} _ ${FW_VERSION} .rom "
54- sha256sum ${BOARD} _ ${FW_VERSION} .rom > ${BOARD} _ ${FW_VERSION} .rom .sha256
78+ echo " Result binary placed in $PWD /$TARGET_BINARY "
79+ sha256sum $TARGET_BINARY > $TARGET_BINARY .sha256
5580 else
5681 echo " Build failed!"
5782 exit 1
5883 fi
5984}
6085
61- function build_msi {
62- DEFCONFIG=" configs/config.${BOARD} _$1 "
63- FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
64-
65- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
66- -v $HOME /.ssh:/home/coreboot/.ssh \
67- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
68- /bin/bash -c " make distclean"
69-
70- cp " ${DEFCONFIG} " .config
71-
72- git submodule update --init --checkout
86+ function build_ec {
87+ EC_BOARD_VENDOR=$1
88+ EC_BOARD_MODEL=$2
89+ if [[ ! -v EC_REVISION ]]; then
90+ echo " EC_REVISION environmental variable is not set. Please provide an EC revision."
91+ exit 1;
92+ fi
7393
74- echo " Building Dasharo compatible with MSI PRO $2 (WIFI) (version $FW_VERSION )"
94+ echo " Building EC for $EC_BOARD_VENDOR $EC_BOARD_MODEL from branch $EC_REVISION "
95+ git clone https://github.com/Dasharo/ec.git & > /dev/null || true
96+ cd ec
97+ git checkout $EC_REVISION
98+ git submodule update --init --recursive --checkout
99+ EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=nv4x_adl ./build.sh || true
100+ cd ..
101+ cp " ec/${EC_BOARD_VENDOR} _${EC_BOARD_MODEL} _ec.rom" ec.rom
102+ }
75103
76- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
77- -v $HOME /.ssh:/home/coreboot/.ssh \
78- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
79- /bin/bash -c " make olddefconfig && make -j$( nproc) "
104+ function generic_submodules {
105+ if [[ ! -v NO_SUBMODULE_UPDATE ]]; then
106+ git submodule update --init --checkout
107+ fi
108+ }
80109
81- cp build/coreboot.rom ${BOARD} _${FW_VERSION} _$1 .rom
82- if [ $? -eq 0 ]; then
83- echo " Result binary placed in $PWD /${BOARD} _${FW_VERSION} _$1 .rom"
84- sha256sum ${BOARD} _${FW_VERSION} _$1 .rom > ${BOARD} _${FW_VERSION} _$1 .rom.sha256
110+ function protectli_submodules {
111+ if [[ ! -d 3rdparty/dasharo-blobs/protectli ]]; then
112+ NO_SUBMODULE_UPDATE=" true"
85113 else
86- echo " Build failed!"
87- exit 1
114+ unset NO_SUBMODULE_UPDATE
88115 fi
116+ generic_submodules
89117}
90118
91- function build_protectli_vault {
92- DEFCONFIG=" configs/config.protectli_${BOARD} "
93- FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
119+ function pcengines_submodules {
120+ if [[ ! -v NO_SUBMODULE_UPDATE ]]; then
121+ # checkout several submodules needed by these boards (some others are checked
122+ # out by coreboot's Makefile)
123+ git submodule update --init --force --checkout \
124+ 3rdparty/dasharo-blobs \
125+ 3rdparty/vboot
126+ fi
127+ }
94128
95- if [ ! -d 3rdparty/dasharo-blobs/protectli ]; then
96- git submodule update --init --checkout
129+ function qemu_submodules {
130+ if [[ ! -v NO_SUBMODULE_UPDATE ]]; then
131+ # checkout several submodules needed by these boards (some others are checked
132+ # out by coreboot's Makefile)
133+ git submodule update --init --force --checkout \
134+ 3rdparty/dasharo-blobs
97135 fi
136+ }
98137
99- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
100- -v $HOME /.ssh:/home/coreboot/.ssh \
101- -w /home/coreboot/coreboot coreboot/coreboot-sdk:2021-09-23_b0d87f753c \
102- /bin/bash -c " make distclean"
138+ function build_optiplex_9010 {
139+ DEFCONFIG=" configs/config.dell_optiplex_9010_sff_uefi_txt"
140+ FW_VERSION=v0.1.0-rc1
103141
104- cp $DEFCONFIG .config
142+ generic_submodules
143+ TARGET_BINARY=" ${BOARD} _${FW_VERSION} "
144+ echo " Building Dasharo compatible with Dell OptiPlex 7010/9010 (version $FW_VERSION )"
145+ build_coreboot $TARGET_BINARY
146+ }
105147
106- echo " Building Dasharo for Protectli $BOARD (version $FW_VERSION )"
148+ function build_msi {
149+ DEFCONFIG=" configs/config.${BOARD} _$1 "
150+ FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
107151
108- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
109- -v $HOME /.ssh:/home/coreboot/.ssh \
110- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
111- /bin/bash -c " make olddefconfig && make -j$( nproc) "
152+ generic_submodules
153+ TARGET_BINARY= ${BOARD} _${FW_VERSION} _$1 .rom
154+ echo " Building Dasharo compatible with MSI PRO $2 (WIFI) (version $FW_VERSION )"
155+ build_coreboot $TARGET_BINARY
156+ }
112157
113- cp build/coreboot.rom protectli_ ${BOARD} _ ${FW_VERSION} .rom
114- if [ $? -eq 0 ] ; then
115- echo " Result binary placed in $PWD /protectli_ ${BOARD} _ ${FW_VERSION} .rom "
116- sha256sum protectli_ ${BOARD} _ ${FW_VERSION} .rom > protectli_ ${BOARD} _ ${FW_VERSION} .rom.sha256
117- else
118- echo " Build failed! "
119- exit 1
120- fi
158+ function build_protectli_vault {
159+ DEFCONFIG= " configs/config.protectli_ ${BOARD} "
160+ FW_VERSION= $( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' = ' -f 2 | tr -d ' " ' )
161+
162+ protectli_submodules
163+ TARGET_BINARY=protectli_ ${BOARD} _ ${FW_VERSION} .rom
164+ echo " Building Dasharo for Protectli $BOARD (version $FW_VERSION ) "
165+ build_coreboot $TARGET_BINARY
121166}
122167
123168function build_v1x10 {
124169 DEFCONFIG=" configs/config.protectli_vault_jsl_$1 "
125170 FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
126171
127- if [ ! -d 3rdparty/dasharo-blobs/protectli ]; then
128- git submodule update --init --checkout
129- fi
130-
131- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
132- -v $HOME /.ssh:/home/coreboot/.ssh \
133- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
134- /bin/bash -c " make distclean"
135-
136- cp $DEFCONFIG .config
137-
172+ protectli_submodules
173+ TARGET_BINARY=protectli_$1 _${FW_VERSION} .rom
138174 echo " Building Dasharo for Protectli $1 (version $FW_VERSION )"
139-
140- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
141- -v $HOME /.ssh:/home/coreboot/.ssh \
142- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
143- /bin/bash -c " make olddefconfig && make -j$( nproc) "
144-
145- cp build/coreboot.rom protectli_$1 _${FW_VERSION} .rom
146- if [ $? -eq 0 ]; then
147- echo " Result binary placed in $PWD /protectli_$1 _${FW_VERSION} .rom"
148- sha256sum protectli_$1 _${FW_VERSION} .rom > protectli_$1 _${FW_VERSION} .rom.sha256
149- else
150- echo " Build failed!"
151- exit 1
152- fi
175+ build_coreboot $TARGET_BINARY
153176}
154177
155178function build_pcengines {
156179 VARIANT=$1
157180 DEFCONFIG=" configs/config.pcengines_uefi_${VARIANT} "
158181 FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
159182
160- # checkout several submodules needed by these boards (some others are checked
161- # out by coreboot's Makefile)
162- git submodule update --init --force --checkout \
163- 3rdparty/dasharo-blobs \
164- 3rdparty/vboot
165-
166- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
167- -v $HOME /.ssh:/home/coreboot/.ssh \
168- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
169- /bin/bash -c " make distclean"
170-
171- cp $DEFCONFIG .config
172-
183+ pcengines_submodules
184+ TARGET_BINARY=pcengines_${VARIANT} _${FW_VERSION} .rom
173185 echo " Building Dasharo for PC Engines ${VARIANT^^* } (version $FW_VERSION )"
174-
175- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
176- -v $HOME /.ssh:/home/coreboot/.ssh \
177- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
178- /bin/bash -c " make olddefconfig && make -j$( nproc) "
179-
180- cp build/coreboot.rom pcengines_${VARIANT} _${FW_VERSION} .rom
181- if [ $? -eq 0 ]; then
182- echo " Result binary placed in $PWD /pcengines_${VARIANT} _${FW_VERSION} .rom"
183- sha256sum pcengines_${VARIANT} _${FW_VERSION} .rom > pcengines_${VARIANT} _${FW_VERSION} .rom.sha256
184- else
185- echo " Build failed!"
186- exit 1
187- fi
186+ build_coreboot $TARGET_BINARY
188187}
189188
190189function build_qemu {
191190 DEFCONFIG=" configs/config.emulation_qemu_x86_q35_uefi${1:- } "
192191 FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
193192
194- # checkout several submodules needed by these boards (some others are checked
195- # out by coreboot's Makefile)
196- git submodule update --init --force --checkout \
197- 3rdparty/dasharo-blobs
198-
199- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
200- -v $HOME /.ssh:/home/coreboot/.ssh \
201- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
202- /bin/bash -c " make distclean"
203-
204- cp $DEFCONFIG .config
205-
193+ qemu_submodules
194+ TARGET_BINARY=qemu_q35_${FW_VERSION} .rom
206195 echo " Building Dasharo for QEMU Q35 (version $FW_VERSION )"
196+ build_coreboot $TARGET_BINARY
197+ }
207198
208- docker run --rm -t -u $UID -v $PWD :/home/coreboot/coreboot \
209- -v $HOME /.ssh:/home/coreboot/.ssh \
210- -w /home/coreboot/coreboot coreboot/coreboot-sdk:$SDKVER \
211- /bin/bash -c " make olddefconfig && make -j$( nproc) "
199+ function build_nv4x_adl {
200+ DEFCONFIG=" configs/config.novacustom_nv4x_adl"
201+ FW_VERSION=$( cat ${DEFCONFIG} | grep CONFIG_LOCALVERSION | cut -d ' =' -f 2 | tr -d ' "' )
212202
213- cp build/coreboot.rom qemu_q35_${FW_VERSION} .rom
214- if [ $? -eq 0 ]; then
215- echo " Result binary placed in $PWD /qemu_q35_${FW_VERSION} .rom"
216- sha256sum qemu_q35_${FW_VERSION} .rom > qemu_q35_${FW_VERSION} .rom.sha256
217- else
218- echo " Build failed!"
219- exit 1
220- fi
203+ build_ec novacustom nv4x_adl
204+ generic_submodules
205+ TARGET_BINARY=novacustom_nv4x_adl_$FW_VERSION
206+ echo " Building Dasharo for Novacustom NV4x Adl (version $FW_VERSION )"
207+ build_coreboot $TARGET_BINARY
221208}
222209
223210CMD=" $1 "
@@ -289,6 +276,9 @@ case "$CMD" in
289276 " qemu_full" | " QEMU_full" | " q35_full" | " Q35_full" )
290277 build_qemu " _all_menus"
291278 ;;
279+ " nv4x_adl" )
280+ build_nv4x_adl
281+ ;;
292282 * )
293283 echo " Invalid command: \" $CMD \" "
294284 usage
0 commit comments