mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-09-19 21:20:31 +02:00
Compare commits
6 Commits
7cb4cdf0f2
...
4878cec84d
| Author | SHA1 | Date | |
|---|---|---|---|
| 4878cec84d | |||
| 04be963383 | |||
| 5043b6dc97 | |||
| a65d804f1e | |||
| cf079dbd17 | |||
| 828578cc57 |
Vendored
+4
-4
@@ -9,7 +9,7 @@ eval "`newvar url bkup_url depend loc subcurl subcurl_bkup subgit subgit_bkup \
|
|||||||
tmpgit="$xbtmp/gitclone"
|
tmpgit="$xbtmp/gitclone"
|
||||||
tmpgitcache="$xbtmp/tmpgit"
|
tmpgitcache="$xbtmp/tmpgit"
|
||||||
|
|
||||||
fetch_targets()
|
multi_tree_fetch()
|
||||||
{
|
{
|
||||||
[ -d "src/$project/$tree" ] && \
|
[ -d "src/$project/$tree" ] && \
|
||||||
return 0
|
return 0
|
||||||
@@ -18,17 +18,17 @@ fetch_targets()
|
|||||||
"src/$project/$tree" "submod"
|
"src/$project/$tree" "submod"
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch_project()
|
single_tree_fetch()
|
||||||
{
|
{
|
||||||
xgcctree=""
|
xgcctree=""
|
||||||
|
|
||||||
. "config/git/$project/pkg.cfg" || \
|
. "config/git/$project/pkg.cfg" || \
|
||||||
err "Can't read config 'config/git/$project/pkg.cfg'" \
|
err "Can't read config 'config/git/$project/pkg.cfg'" \
|
||||||
"fetch_project" "@"
|
"single_tree_fetch" "@"
|
||||||
|
|
||||||
if [ -z "$url" ] || [ -z "$bkup_url" ]; then
|
if [ -z "$url" ] || [ -z "$bkup_url" ]; then
|
||||||
err "url/bkup_url not both set 'config/git/$project/pkg.cfg'" \
|
err "url/bkup_url not both set 'config/git/$project/pkg.cfg'" \
|
||||||
"fetch_project" "$@"
|
"single_tree_fetch" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$xgcctree" ] && \
|
[ -n "$xgcctree" ] && \
|
||||||
|
|||||||
Vendored
+36
-7
@@ -356,21 +356,50 @@ git_init()
|
|||||||
"git_init" "$@"; :
|
"git_init" "$@"; :
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -L ".git" ] && \
|
git_init_src .
|
||||||
|
[ -d "src" ] && \
|
||||||
|
fx_ git_init_src x_ find src -maxdepth 1 -mindepth 1 -type d; :
|
||||||
|
}
|
||||||
|
|
||||||
|
git_init_src()
|
||||||
|
{
|
||||||
|
gitdir="${1-}"
|
||||||
|
|
||||||
|
[ -z "$gitdir" ] && \
|
||||||
|
err "Invalid argument" git_init_src "$@"
|
||||||
|
[ -L "$gitdir/.git" ] && \
|
||||||
err "'$xbmkpwd/.git' is a symlink" "git_init" "$@"
|
err "'$xbmkpwd/.git' is a symlink" "git_init" "$@"
|
||||||
[ -e ".git" ] && \
|
[ -e "$gitdir/.git" ] && \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
git_projectname="${gitdir#*/}"
|
||||||
|
git_treename="${git_projectname#*/}"
|
||||||
|
[ "$git_projectname" = "${git_projectname#*/}" ] && \
|
||||||
|
git_treename=""
|
||||||
|
|
||||||
|
git_projectname="${git_projectname%%/*}"
|
||||||
|
git_treename="${git_treename%%*/}"
|
||||||
|
|
||||||
|
if ! singletree "$git_projectname"; then
|
||||||
|
if [ -z "$git_treename" ]; then
|
||||||
|
fx_ git_init_src x_ find "$gitdir" -maxdepth 1 \
|
||||||
|
-mindepth 1 -type d
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
(
|
(
|
||||||
export GIT_COMMITTER_DATE="@$versiondate +0000"
|
export GIT_COMMITTER_DATE="@$versiondate +0000"
|
||||||
export GIT_AUTHOR_DATE="@$versiondate +0000"
|
export GIT_AUTHOR_DATE="@$versiondate +0000"
|
||||||
|
|
||||||
x_ git init 1>/dev/null 2>/dev/null
|
x_ git -C "$gitdir" init 1>/dev/null 2>/dev/null
|
||||||
x_ git add -A . 1>/dev/null 2>/dev/null
|
x_ git -C "$gitdir" add -A . 1>/dev/null 2>/dev/null
|
||||||
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
x_ git -C "$gitdir" -c user.name="xbmk" \
|
||||||
commit -m "$projectname $version" \
|
-c user.email="xbmk@example.com" \
|
||||||
|
commit -m "$projectname $version $gitdir" \
|
||||||
--author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null
|
--author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null
|
||||||
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
x_ git -C "$gitdir" -c user.name="xbmk" \
|
||||||
|
-c user.email="xbmk@example.com" \
|
||||||
tag -a "$version" -m "$projectname $version" \
|
tag -a "$version" -m "$projectname $version" \
|
||||||
1>/dev/null 2>/dev/null; :
|
1>/dev/null 2>/dev/null; :
|
||||||
|
|
||||||
|
|||||||
@@ -65,11 +65,20 @@ eval "$(printf "version release download inject\n" | awk '{ for (i=1; i<=NF; \
|
|||||||
flag=""
|
flag=""
|
||||||
|
|
||||||
# macros, overridden depending on the flag
|
# macros, overridden depending on the flag
|
||||||
|
# : means false
|
||||||
if_do_make=""
|
if_do_make=""
|
||||||
if_dry_build=":"
|
|
||||||
if_not_do_make=":"
|
if_not_do_make=":"
|
||||||
|
if_make_clean=":"
|
||||||
|
if_not_make_clean=""
|
||||||
|
if_make_config=":"
|
||||||
|
if_not_make_config=""
|
||||||
|
if_build=":" # can be false even if make is true
|
||||||
|
if_not_build=""
|
||||||
|
if_dry_build=":"
|
||||||
if_not_dry_build=""
|
if_not_dry_build=""
|
||||||
|
|
||||||
|
if_single_tree=":"
|
||||||
|
|
||||||
eval "`newvar autoconfargs autogenargs badhash badtghash bootstrapargs \
|
eval "`newvar autoconfargs autogenargs badhash badtghash bootstrapargs \
|
||||||
build_depend buildtype cleanargs cmakedir cmd defconfig dest_dir elfdir \
|
build_depend buildtype cleanargs cmakedir cmd defconfig dest_dir elfdir \
|
||||||
forcepull listfile makeargs mdir mkhelper mkhelpercfg mode postmake \
|
forcepull listfile makeargs mdir mkhelper mkhelpercfg mode postmake \
|
||||||
@@ -125,6 +134,21 @@ main()
|
|||||||
*) err "invalid option '-$option'" "trees" "$@" ;;
|
*) err "invalid option '-$option'" "trees" "$@" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [ -z "$mode" ]; then
|
||||||
|
if_build=""
|
||||||
|
if_not_build=":"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${mode%config}" != "$mode" ]; then
|
||||||
|
if_make_config=""
|
||||||
|
if_not_make_config=":"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${mode%clean}" != "$mode" ]; then
|
||||||
|
if_make_clean=""
|
||||||
|
if_not_make_clean=":"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${OPTARG+x}" ]; then
|
if [ -z "${OPTARG+x}" ]; then
|
||||||
shift 1
|
shift 1
|
||||||
break
|
break
|
||||||
@@ -161,9 +185,12 @@ main()
|
|||||||
x_ touch "$mkhelpercfg"
|
x_ touch "$mkhelpercfg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmd="build_project"
|
if singletree "$project"; then
|
||||||
singletree "$project" || \
|
cmd="single_tree_build"
|
||||||
cmd="build_targets"
|
if_single_tree=""
|
||||||
|
else
|
||||||
|
cmd="multi_tree_build"
|
||||||
|
fi
|
||||||
|
|
||||||
remkdir "${tmpgit%/*}"
|
remkdir "${tmpgit%/*}"
|
||||||
x_ touch "$mkhelpercfg"
|
x_ touch "$mkhelpercfg"
|
||||||
@@ -172,7 +199,7 @@ main()
|
|||||||
$cmd "$@"
|
$cmd "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
build_project()
|
single_tree_build()
|
||||||
{
|
{
|
||||||
configure_project "$configdir" || \
|
configure_project "$configdir" || \
|
||||||
return 0
|
return 0
|
||||||
@@ -181,23 +208,23 @@ build_project()
|
|||||||
$if_not_dry_build elfcheck || \
|
$if_not_dry_build elfcheck || \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
[ "$mode" = "distclean" ] && \
|
$if_make_clean \
|
||||||
mode="clean"
|
eval mode="clean"
|
||||||
|
|
||||||
run_make_command || \
|
run_make_command || \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
copy_elf; :
|
copy_elf; :
|
||||||
}
|
}
|
||||||
|
|
||||||
build_targets()
|
multi_tree_build()
|
||||||
{
|
{
|
||||||
[ ! -d "$configdir" ] && \
|
[ ! -d "$configdir" ] && \
|
||||||
err "directory '$configdir' doesn't exist" "build_targets" "$@"
|
err "directory '$configdir' doesn't exist" "multi_tree_build" "$@"
|
||||||
[ $# -lt 1 ] && \
|
[ $# -lt 1 ] && \
|
||||||
fx_ build_targets find "$configdir" \
|
fx_ multi_tree_build find "$configdir" \
|
||||||
-mindepth 1 -maxdepth 1 -type d
|
-mindepth 1 -maxdepth 1 -type d
|
||||||
[ $# -gt 0 ] && for x in "$@"
|
[ $# -gt 0 ] && for x in "$@"
|
||||||
do
|
do
|
||||||
@@ -216,7 +243,7 @@ build_targets()
|
|||||||
|
|
||||||
x_ handle_defconfig
|
x_ handle_defconfig
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
x_ $postmake; :
|
x_ $postmake; :
|
||||||
done; :
|
done; :
|
||||||
}
|
}
|
||||||
@@ -226,7 +253,7 @@ handle_defconfig()
|
|||||||
target_dir="$configdir/$target"
|
target_dir="$configdir/$target"
|
||||||
|
|
||||||
[ ! -f "CHANGELOG" ] && \
|
[ ! -f "CHANGELOG" ] && \
|
||||||
fetch_project "$project"
|
single_tree_fetch "$project"
|
||||||
|
|
||||||
configure_project "$target_dir" || \
|
configure_project "$target_dir" || \
|
||||||
return 0
|
return 0
|
||||||
@@ -236,31 +263,35 @@ handle_defconfig()
|
|||||||
|
|
||||||
srcdir="src/$project/$tree"
|
srcdir="src/$project/$tree"
|
||||||
|
|
||||||
[ "$mode" = "${mode%clean}" ] && [ ! -d "$srcdir" ] && \
|
[ ! -d "$srcdir" ] && \
|
||||||
return 0
|
$if_not_make_clean \
|
||||||
|
return 0
|
||||||
|
|
||||||
for y in "$target_dir/config"/*
|
for y in "$target_dir/config"/*
|
||||||
do
|
do
|
||||||
[ "$flag" != "-d" ] && [ ! -f "$y" ] && \
|
[ ! -f "$y" ] && \
|
||||||
continue
|
$if_not_dry_build \
|
||||||
[ "$flag" != "-d" ] && \
|
continue
|
||||||
defconfig="$y"
|
|
||||||
|
|
||||||
if [ -z "$mode" ]; then
|
$if_not_dry_build \
|
||||||
check_defconfig || continue; :
|
eval defconfig="$y"
|
||||||
fi
|
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
for _xarch in $xarch; do
|
check_defconfig || \
|
||||||
$if_dry_build \
|
continue; :
|
||||||
break
|
|
||||||
[ -n "$_xarch" ] && \
|
for _xarch in $xarch; do
|
||||||
check_cross_compiler "$_xarch"; :
|
$if_not_build \
|
||||||
done; :
|
break
|
||||||
|
$if_dry_build \
|
||||||
|
break
|
||||||
|
[ -n "$_xarch" ] && \
|
||||||
|
check_cross_compiler "$_xarch"; :
|
||||||
|
done; :
|
||||||
|
|
||||||
handle_makefile
|
handle_makefile
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
copy_elf; :
|
copy_elf; :
|
||||||
done; :
|
done; :
|
||||||
@@ -286,7 +317,7 @@ configure_project()
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# override target/tree specific variables from per-target config:
|
# override target/tree specific variables from per-target config:
|
||||||
while e "$_tcfg" f || [ "$cmd" != "build_project" ]
|
while e "$_tcfg" f || [ "$cmd" != "single_tree_build" ]
|
||||||
do
|
do
|
||||||
printf "Loading %s config: %s\n" "$project" "$_tcfg"
|
printf "Loading %s config: %s\n" "$project" "$_tcfg"
|
||||||
eval "`newvar rev tree`"
|
eval "`newvar rev tree`"
|
||||||
@@ -294,11 +325,11 @@ configure_project()
|
|||||||
. "$_tcfg" || \
|
. "$_tcfg" || \
|
||||||
err "Can't read '$_tcfg'" "configure_project" "$@"
|
err "Can't read '$_tcfg'" "configure_project" "$@"
|
||||||
|
|
||||||
[ "$flag" = "-d" ] && \
|
$if_dry_build \
|
||||||
build_depend="" # dry run
|
eval build_depend=""
|
||||||
|
|
||||||
[ "$cmd" = "build_project" ] && \
|
$if_single_tree \
|
||||||
break # single-tree, so targeting is unnecessary
|
break
|
||||||
$if_do_make \
|
$if_do_make \
|
||||||
break
|
break
|
||||||
[ "${_tcfg%/*/target.cfg}" = "${_tcfg%"/$tree/target.cfg"}" ] \
|
[ "${_tcfg%/*/target.cfg}" = "${_tcfg%"/$tree/target.cfg"}" ] \
|
||||||
@@ -309,10 +340,11 @@ configure_project()
|
|||||||
|
|
||||||
[ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \
|
[ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \
|
||||||
return 1
|
return 1
|
||||||
[ -n "$buildtype" ] && [ "${mode%config}" != "$mode" ] && \
|
[ -n "$buildtype" ] && \
|
||||||
return 1
|
$if_make_config \
|
||||||
|
return 1
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
build_dependencies
|
build_dependencies
|
||||||
|
|
||||||
@@ -323,7 +355,7 @@ configure_project()
|
|||||||
if [ ! -f "CHANGELOG" ]; then
|
if [ ! -f "CHANGELOG" ]; then
|
||||||
delete_old_project_files
|
delete_old_project_files
|
||||||
$if_not_do_make \
|
$if_not_do_make \
|
||||||
fetch_${cmd#build_}
|
${cmd%_build}_fetch
|
||||||
fi
|
fi
|
||||||
$if_not_do_make \
|
$if_not_do_make \
|
||||||
return 1
|
return 1
|
||||||
@@ -436,15 +468,17 @@ check_cross_compiler()
|
|||||||
[ -n "$xgcctree" ] && \
|
[ -n "$xgcctree" ] && \
|
||||||
cbdir="src/coreboot/$xgcctree"
|
cbdir="src/coreboot/$xgcctree"
|
||||||
|
|
||||||
|
cbelfdir="elf${cbdir#src}"
|
||||||
|
|
||||||
xfix="${1%-*}"
|
xfix="${1%-*}"
|
||||||
[ "$xfix" = "x86_64" ] && \
|
[ "$xfix" = "x86_64" ] && \
|
||||||
xfix="x64"
|
xfix="x64"
|
||||||
|
|
||||||
xgccfile="elf/coreboot/$tree/xgcc_${xfix}_was_compiled"
|
xgccfile="$cbelfdir/xgcc_${xfix}_was_compiled"
|
||||||
xgccargs="crossgcc-$xfix UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS"
|
xgccargs="crossgcc-$xfix UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS"
|
||||||
|
|
||||||
x_ ./mk -f coreboot "${cbdir#src/coreboot/}"
|
x_ ./mk -f coreboot "${cbdir#src/coreboot/}"
|
||||||
x_ mkdir -p "elf/coreboot/$tree" # TODO: is this needed?
|
x_ mkdir -p "$cbelfdir"
|
||||||
|
|
||||||
# tell build systems what cross-compiler to use
|
# tell build systems what cross-compiler to use
|
||||||
export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH"
|
export PATH="$xbmkpwd/$cbdir/util/crossgcc/xgcc/bin:$PATH"
|
||||||
@@ -504,24 +538,23 @@ handle_makefile()
|
|||||||
[ "$mode" = "savedefconfig" ] && \
|
[ "$mode" = "savedefconfig" ] && \
|
||||||
_copy="defconfig"
|
_copy="defconfig"
|
||||||
|
|
||||||
[ "${mode%config}" != "$mode" ] && \
|
$if_make_config \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
x_ cp "$srcdir/$_copy" "$defconfig"; :
|
x_ cp "$srcdir/$_copy" "$defconfig"; :
|
||||||
|
|
||||||
[ -e "$srcdir/.git" ] && [ "$gitclean" = "y" ] && \
|
[ -e "$srcdir/.git" ] && [ "$gitclean" = "y" ] && \
|
||||||
if [ "$mode" = "distclean" ] || [ "$mode" = "clean" ]; then
|
$if_make_clean \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
x_ git -C "$srcdir" clean $gitcleanargs; :
|
x_ git -C "$srcdir" clean $gitcleanargs; :
|
||||||
fi; :
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run_make_command()
|
run_make_command()
|
||||||
{
|
{
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
x_ $premake
|
x_ $premake
|
||||||
|
|
||||||
$if_not_dry_build check_cmake "$srcdir" && \
|
$if_not_dry_build check_cmake "$srcdir" && \
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
check_autoconf "$srcdir"
|
check_autoconf "$srcdir"
|
||||||
|
|
||||||
@@ -531,15 +564,13 @@ run_make_command()
|
|||||||
$if_not_dry_build \
|
$if_not_dry_build \
|
||||||
x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs
|
x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs
|
||||||
|
|
||||||
[ -z "$mode" ] && \
|
$if_build \
|
||||||
x_ $mkhelper
|
x_ $mkhelper
|
||||||
|
|
||||||
check_makefile "$srcdir" || \
|
$if_not_make_clean \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
[ "$mode" = "clean" ] || \
|
check_makefile "$srcdir" || \
|
||||||
return 0
|
|
||||||
$if_dry_build \
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
make -C "$srcdir" $cleanargs distclean || \
|
make -C "$srcdir" $cleanargs distclean || \
|
||||||
|
|||||||
Reference in New Issue
Block a user