diff options
Diffstat (limited to 'script/update')
-rwxr-xr-x | script/update/trees | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/script/update/trees b/script/update/trees index 556181ed..9d1e89ff 100755 --- a/script/update/trees +++ b/script/update/trees @@ -33,6 +33,7 @@ main() done [ -z "$_f" ] && err "missing flag (-m/-u/-b/-c/-x/-f/-s/-l/-n)" [ -z "$project" ] && err "project name not specified" + elfdir="elf/${project}" check_project @@ -63,7 +64,6 @@ build_projects() build_targets() { - elfdir="elf/${project}" [ "$elfdir" = "elf/coreboot" ] && \ elfdir="elf/coreboot_nopayload_DO_NOT_FLASH" @@ -204,17 +204,39 @@ handle_makefile() run_make_command() { - [ -f "${codedir}/Makefile" ] || [ -f "${codedir}/makefile" ] || \ - [ -f "${codedir}/GNUmakefile" ] || return 1 + [ -z "$mode" ] && check_autoconf "$codedir" + check_makefile "$codedir" || return 1 + [ "$project" = "coreboot" ] && [ -z "$mode" ] && \ x_ printf "%s\n" "${version%%-*}" \ > "${codedir}/.coreboot-version" - x_ make $mode -j$(nproc) -C "$codedir" + make $mode -j$(nproc) FS_PAYLOAD_MODULES="" -C "$codedir" || \ + err "run_make $codedir: !make $mode" + [ "$mode" != "clean" ] && return 0 make -C "$codedir" distclean 2>/dev/null || : } +check_autoconf() +{ + ( + _cfgopt="" + cd "${codedir}" || err "!cd $codedir" + [ "$project" = "grub" ] && _cfgopt="--gnulib-srcdir=gnulib/ --no-git" + [ -f "bootstrap" ] && x_ ./bootstrap $_cfgopt + [ -f "autogen.sh" ] && x_ ./autogen.sh + [ "$project" = "grub" ] && _cfgopt="--with-platform=coreboot" + [ -f "configure" ] && x_ ./configure $_cfgopt; return 0 + ) || err "can't bootstrap project: $codedir" +} + +check_makefile() +{ + [ -f "${1}/Makefile" ] || [ -f "${1}/makefile" ] || \ + [ -f "${1}/GNUmakefile" ] || return 1; return 0 +} + copy_elf() { while read -r f; do |