From 6b144ebaa38d50a46624c1e4fdbc1141b23a58d8 Mon Sep 17 00:00:00 2001
From: Viktor <35473052+viktorxda@users.noreply.github.com>
Date: Sat, 1 Jul 2023 07:35:28 +0200
Subject: [PATCH] Makefile: use dialog if variable is not defined

---
 .github/workflows/build.yml |  1 +
 Makefile                    | 62 +++++++++++++++++--------------------
 2 files changed, 29 insertions(+), 34 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e90648c3..80b3de3a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -209,6 +209,7 @@ jobs:
       - name: Build firmware
         run: |
           echo "8.8.8.8 invisible-mirror.net" | sudo tee -a /etc/hosts
+          echo "8.8.8.8 distfiles.dereferenced.org" | sudo tee -a /etc/hosts
 
           export GIT_HASH=$(git rev-parse --short ${GITHUB_SHA})
           export GIT_BRANCH=${GITHUB_REF_NAME}
diff --git a/Makefile b/Makefile
index bf68001d..58ce7b59 100644
--- a/Makefile
+++ b/Makefile
@@ -4,35 +4,34 @@ BR_LINK = https://github.com/buildroot/buildroot/archive/refs/tags
 BR_FILE = /tmp/buildroot-$(BR_VER).tar.gz
 TARGET ?= $(PWD)/output
 
-MAX_KERNEL_SIZE_LITE = 2048
-MAX_ROOTFS_SIZE_LITE = 5120
-MAX_KERNEL_SIZE_ULTIMATE = 3072 
-MAX_ROOTFS_SIZE_ULTIMATE = 10240
-MAX_KERNEL_SIZE_NAND = 4096
-MAX_ROOTFS_SIZE_NAND = 16384
+MAX_KERNEL_SIZE_8M := 2048
+MAX_ROOTFS_SIZE_8M := 5120
+MAX_KERNEL_SIZE_16M := 3072
+MAX_ROOTFS_SIZE_16M := 10240
+MAX_KERNEL_SIZE_128M := 4096
+MAX_ROOTFS_SIZE_128M := 16384
 
-ifdef BOARD
-	CONFIG = $(shell find br-ext-*/configs/*_defconfig | grep -m1 $(BOARD))
+ifneq ($(filter $(MAKECMDGOALS), all repack),)
+LIST = $(shell find ./br-ext-*/configs/*_defconfig | sort | \
+	sed -E "s|br-ext-chip-(.+).configs.(.+)_defconfig|'\2' '\1 \2'|")
+BOARD = $(or $(shell whiptail --title "Available boards" --menu "Please select a board:" 20 76 12 \
+	--notags $(LIST) 3>&1 1>&2 2>&3),$(error variable BOARD must be defined))
+CONFIG := $(shell find br-ext-*/configs/*_defconfig | grep -m1 $(BOARD))
+include $(CONFIG)
 endif
 
-ifeq ($(CONFIG),)
-	CONFIG = $(error variable BOARD must be defined to initialize build)
-else
-	include $(CONFIG)
-endif
-
-.PHONY: all clean defconfig deps distclean help prepare toolname
+TIMER := $(shell date +%s)
 
 help:
 	@printf "BR-OpenIPC usage:\n \
+	- make list - show available device configurations\n \
 	- make deps - install build dependencies\n \
 	- make clean - remove defconfig and target folder\n \
 	- make distclean - remove buildroot and output folder\n \
-	- make list - show available device configurations\n \
-	- make select - show interactive device list\n \
-	- make all BOARD=<config> - build the selected device\n\n"
+	- make br-linux - build linux kernel only\n \
+	- make all - build the device firmware\n\n"
 
-all: build repack
+all: build repack timer
 
 build: defconfig
 	@$(BR_MAKE) all
@@ -40,13 +39,11 @@ build: defconfig
 br-%: defconfig
 	@$(BR_MAKE) $(subst br-,,$@)
 
-defconfig: prepare
-	@$(BR_MAKE) BR2_DEFCONFIG=$(PWD)/$(CONFIG) defconfig
-
-prepare:
+defconfig:
 	@if test ! -e $(TARGET)/buildroot-$(BR_VER); then \
 		wget -c -q $(BR_LINK)/$(BR_VER).tar.gz -O $(BR_FILE); \
 		mkdir -p $(TARGET); tar -xf $(BR_FILE) -C $(TARGET); fi
+	@$(BR_MAKE) BR2_DEFCONFIG=$(PWD)/$(CONFIG) defconfig
 
 toolname:
 	@general/scripts/show_toolchains.sh $(CONFIG)
@@ -64,27 +61,24 @@ deps:
 	sudo apt-get install -y automake autotools-dev bc build-essential cpio \
 		curl file fzf git libncurses-dev libtool lzop make rsync unzip wget
 
-select:
-	$(eval MENU_LIST = $(shell find ./br-ext-*/configs/*_defconfig | sort | \
-		sed -E "s|br-ext-chip-(.+).configs.(.+)_defconfig|'\2' '\1 \2'|"))
-	@$(MAKE) BOARD=$(shell whiptail --title "Available boards" --menu "Please select a board:" \
-		20 76 12 --notags $(MENU_LIST) 3>&1 1>&2 2>&3) all
+timer:
+	@echo - Build time: $(shell date -d @$(shell expr $(shell date +%s) - $(TIMER)) -u +%M:%S)
 
 repack:
 ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS),y)
 ifeq ($(BR2_OPENIPC_FLASH_SIZE),"8")
-	@$(call CHECK_SIZE,uImage,$(MAX_KERNEL_SIZE_LITE))
-	@$(call CHECK_SIZE,rootfs.squashfs,$(MAX_ROOTFS_SIZE_LITE))
+	@$(call CHECK_SIZE,uImage,$(MAX_KERNEL_SIZE_8M))
+	@$(call CHECK_SIZE,rootfs.squashfs,$(MAX_ROOTFS_SIZE_8M))
 else
-	@$(call CHECK_SIZE,uImage,$(MAX_KERNEL_SIZE_ULTIMATE))
-	@$(call CHECK_SIZE,rootfs.squashfs,$(MAX_ROOTFS_SIZE_ULTIMATE))
+	@$(call CHECK_SIZE,uImage,$(MAX_KERNEL_SIZE_16M))
+	@$(call CHECK_SIZE,rootfs.squashfs,$(MAX_ROOTFS_SIZE_16M))
 endif
 	@$(call REPACK_FIRMWARE,uImage,rootfs.squashfs,nor)
 endif
 ifeq ($(BR2_TARGET_ROOTFS_UBI),y)
 	$(eval KERNEL_BIN = $(or $(BR2_LINUX_KERNEL_IMAGE_NAME),uImage))
-	@$(call CHECK_SIZE,$(KERNEL_BIN),$(MAX_KERNEL_SIZE_NAND))
-	@$(call CHECK_SIZE,rootfs.ubi,$(MAX_ROOTFS_SIZE_NAND))
+	@$(call CHECK_SIZE,$(KERNEL_BIN),$(MAX_KERNEL_SIZE_128M))
+	@$(call CHECK_SIZE,rootfs.ubi,$(MAX_ROOTFS_SIZE_128M))
 	@$(call REPACK_FIRMWARE,$(KERNEL_BIN),rootfs.ubi,nand)
 endif