summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/get.sh8
-rw-r--r--include/init.sh6
-rw-r--r--include/lib.sh26
-rw-r--r--include/mrc.sh2
-rw-r--r--include/release.sh2
-rw-r--r--include/rom.sh33
-rw-r--r--include/tree.sh6
-rw-r--r--include/vendor.sh2
8 files changed, 64 insertions, 21 deletions
diff --git a/include/get.sh b/include/get.sh
index 3c30b6d3..0d430abe 100644
--- a/include/get.sh
+++ b/include/get.sh
@@ -81,7 +81,7 @@ git_prep()
fi
if [ "$_loc" != "${_loc%/*}" ]; then
- x_ mkdir -p "${_loc%/*}"
+ x_ xbmkdir "${_loc%/*}"
fi
x_ mv "$tmpgit" "$_loc"
}
@@ -198,7 +198,7 @@ try_fetch_git()
cached="${cached%.git}"
cached="$XBMK_CACHE/$cached"
- x_ mkdir -p "${5%/*}" "${cached%/*}"
+ x_ xbmkdir "${5%/*}" "${cached%/*}"
if ! try_$2 "$cached" "$@"; then
return 1
@@ -221,7 +221,7 @@ try_fetch_file()
cached="file/$6"
cached="$XBMK_CACHE/$cached"
- x_ mkdir -p "${5%/*}" "${cached%/*}"
+ x_ xbmkdir "${5%/*}" "${cached%/*}"
if bad_checksum "$6" "$cached" 2>/dev/null; then
x_ rm -f "$cached"
@@ -284,7 +284,7 @@ try_git()
if [ ! -d "$gitdest" ]; then
( x_ git clone "$2" "$tmpgitcache" ) || return 1
- x_ mkdir -p "${gitdest%/*}"
+ x_ xbmkdir "${gitdest%/*}"
x_ mv "$tmpgitcache" "$gitdest"
fi
diff --git a/include/init.sh b/include/init.sh
index 72af26c3..96247908 100644
--- a/include/init.sh
+++ b/include/init.sh
@@ -58,7 +58,11 @@ xbmk_init()
fi
export PWD="$xbmkpwd"
- x_ mkdir -p "$basetmp"
+ x_ xbmkdir "$basetmp"
+
+ if [ ! -e "cache" ]; then
+ x_ xbmkdir "cache"
+ fi
for init_cmd in get_version set_env set_threads git_init child_exec; do
if ! xbmk_$init_cmd "$@"; then
diff --git a/include/lib.sh b/include/lib.sh
index 3d205fa9..feb411e0 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -8,12 +8,6 @@
cbfstool="elf/coreboot/default/cbfstool"
rmodtool="elf/coreboot/default/rmodtool"
-remkdir()
-{
- x_ rm -Rf "$@"
- x_ mkdir -p "$@"
-}
-
mkrom_tarball()
{
update_xbmkver "$1"
@@ -58,7 +52,7 @@ mktarball()
printf "Creating tar archive '%s' from directory '%s'\n" "$2" "$1"
if [ "${2%/*}" != "$2" ]; then
- x_ mkdir -p "${2%/*}"
+ x_ xbmkdir "${2%/*}"
fi
x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || \
@@ -169,6 +163,24 @@ build_sbase()
fi
}
+remkdir()
+{
+ x_ rm -Rf "$@"
+ x_ xbmkdir "$@"
+}
+
+xbmkdir()
+{
+ while [ $# -gt 0 ]
+ do
+ if [ ! -d "$1" ]; then
+ x_ mkdir -p "$1"
+ fi
+
+ shift 1
+ done
+}
+
fx_()
{
xchk fx_ "$@"
diff --git a/include/mrc.sh b/include/mrc.sh
index 92241b22..9d4566be 100644
--- a/include/mrc.sh
+++ b/include/mrc.sh
@@ -22,7 +22,7 @@ extract_refcode()
err "cbfstoolref not set" "extract_refcode" "$@"
fi
- x_ mkdir -p "${_pre_dest%/*}"
+ x_ xbmkdir "${_pre_dest%/*}"
x_ "$cbfstoolref" "$appdir/bios.bin" extract \
-m x86 -n fallback/refcode -f "$appdir/ref" -r RO_SECTION
diff --git a/include/release.sh b/include/release.sh
index 35a9c711..339ab3f5 100644
--- a/include/release.sh
+++ b/include/release.sh
@@ -52,7 +52,7 @@ release()
fi
x_ rm -Rf "$rsrc"
- x_ mkdir -p "$reldir"
+ x_ xbmkdir "$reldir"
x_ mv "$vdir" "$reldir"
x_ rm -Rf "${vdir%"/$version"}"
diff --git a/include/rom.sh b/include/rom.sh
index 4de49eee..b1c3c559 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -19,7 +19,7 @@ buildser()
x_ make -C "$sersrc" BOARD=$2
fi
- x_ mkdir -p "bin/serprog_$1"
+ x_ xbmkdir "bin/serprog_$1"
x_ mv "$serx" "bin/serprog_$1/serprog_$2.${serx##*.}"
}
@@ -119,7 +119,7 @@ check_coreboot_util()
return 0
fi
- x_ mkdir -p "$utilelfdir"
+ x_ xbmkdir "$utilelfdir"
x_ cp "$utilsrcdir/$1" "$utilelfdir"
if [ "$1" = "cbfstool" ]; then
@@ -175,6 +175,9 @@ mkcorebootbin_real()
initmode="${initmode%%_*}"
cbfstool="elf/coreboot/$tree/cbfstool"
+ # cbfstool option backends, if they exist
+ cbfscfg="config/coreboot/$target/cbfs.cfg"
+
elfrom="elf/coreboot/$tree/$target/$initmode"
if [ -n "$displaymode" ]; then
elfrom="${elfrom}_$displaymode"
@@ -232,6 +235,11 @@ mkcorebootbin_real()
payload_grubsea="n"
fi
+ if [ -f "$cbfscfg" ]; then
+ $if_not_dry_build \
+ dx_ add_cbfs_option "$cbfscfg"
+ fi
+
if $if_not_dry_build grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then
if [ "$payload_seabios" = "y" ]; then
pname="seabios"
@@ -250,6 +258,25 @@ mkcorebootbin_real()
fi; :
}
+# options for cbfs backend (as opposed to nvram/smmstore):
+
+add_cbfs_option()
+{
+ # TODO: input sanitization (currently mitigated by careful config)
+
+ op_name="`printf "%s\n" "$1" | awk '{print $1}'`"
+ op_arg="`printf "%s\n" "$1" | awk '{print $2}'`"
+
+ if [ -z "$op_name" ] || [ -z "$op_arg" ]; then
+ return 0
+ fi
+
+ ( x_ "$cbfstool" "$tmprom" remove -n "option/$op_name" 1>/dev/null \
+ 2>/dev/null ) || :
+
+ x_ "$cbfstool" "$tmprom" add-int -i "$op_arg" -n "option/$op_name"
+}
+
# in our design, SeaBIOS is also responsible for starting either
# a GRUB or U-Boot payload. this is because SeaBIOS is generally
# a more reliable codebase, so it's less likely to cause a brick
@@ -453,7 +480,7 @@ cprom()
printf "Creating new %s image: '%s'\n" "$projectname" "$newrom"
- x_ mkdir -p "bin/$target"
+ x_ xbmkdir "bin/$target"
x_ $cpcmd "$irom" "$newrom"
}
diff --git a/include/tree.sh b/include/tree.sh
index 254f738d..19060110 100644
--- a/include/tree.sh
+++ b/include/tree.sh
@@ -432,7 +432,7 @@ project_up_to_date()
shift 3
- x_ mkdir -p "$XBMK_CACHE/$hashdir"
+ x_ xbmkdir "$XBMK_CACHE/$hashdir"
if [ -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then
read -r old_hash < "$XBMK_CACHE/$hashdir/$project$hashname" \
@@ -485,7 +485,7 @@ check_cross_compiler()
xgccargs="crossgcc-$xfix UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS"
x_ ./mk -f coreboot "${cbdir#src/coreboot/}"
- x_ mkdir -p "elf/coreboot/$tree" # TODO: is this needed?
+ x_ xbmkdir "elf/coreboot/$tree" # TODO: is this needed?
export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH"
export CROSS_COMPILE="${xarch% *}-"
@@ -748,7 +748,7 @@ check_makefile()
copy_elf()
{
if [ -f "$listfile" ]; then
- x_ mkdir -p "$dest_dir"
+ x_ xbmkdir "$dest_dir"
fi
if [ -f "$listfile" ]; then
diff --git a/include/vendor.sh b/include/vendor.sh
index a6b9fd27..7fb4d9ea 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -217,7 +217,7 @@ fetch()
return 0
fi
- x_ mkdir -p "${_dest%/*}"
+ x_ xbmkdir "${_dest%/*}"
if [ "$dl_type" != "fsp" ]; then
extract_archive "$_dl" "$appdir" || \