xref: /aosp_15_r20/external/coreboot/payloads/external/U-Boot/Makefile (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1## SPDX-License-Identifier: GPL-2.0-only
2
3TAG-$(CONFIG_UBOOT_MASTER)=master
4TAG-$(CONFIG_UBOOT_STABLE)=$(STABLE_COMMIT_ID)
5
6project_name=U-Boot
7project_dir=u-boot
8project_git_repo=http://github.com/u-boot/u-boot/
9project_build_dir=build
10project_config_file=$(project_build_dir)/.config
11
12make_args=-C $(project_dir) O=../build
13
14unexport KCONFIG_AUTOHEADER
15unexport KCONFIG_AUTOCONFIG
16unexport KCONFIG_DEPENDENCIES
17unexport KCONFIG_SPLITCONFIG
18unexport KCONFIG_TRISTATE
19unexport KCONFIG_NEGATIVES
20unexport $(COREBOOT_EXPORTS)
21
22all: build
23
24$(project_dir):
25	echo "    Cloning $(project_name) from Git"
26	git clone $(project_git_repo) -b $(TAG-y) $(project_dir)
27
28fetch: $(project_dir)
29ifeq ($(CONFIG_UBOOT_MASTER),y)
30	echo "    Fetching new commits from the $(project_name) git repo"
31	git fetch
32
33	#master doesn't get a file, so it's continuously updated
34	rm -f $(STABLE_COMMIT_ID)
35else
36	cd $(project_dir); git show $(TAG-y) >/dev/null 2>&1 ;	if [ $$? -ne 0 ]; \
37	then echo "    Fetching new commits from the $(project_name) git repo"; git fetch; fi
38	touch $(STABLE_COMMIT_ID)
39endif
40
41checkout: fetch
42	echo "    Checking out $(project_name) revision $(TAG-y)"
43	cd $(project_dir); git checkout master; git branch -D coreboot 2>/dev/null; git checkout -b coreboot $(TAG-y)
44
45config: checkout
46	mkdir -p $(project_build_dir)
47	rm -f $(project_config_file)
48ifneq ($(CONFIG_PAYLOAD_CONFIGFILE),)
49ifneq ("$(wildcard $(CONFIG_PAYLOAD_CONFIGFILE))","")
50	cat $(CONFIG_PAYLOAD_CONFIGFILE)" > tag-$(project_config_file)
51	$(MAKE) $(make_args) olddefconfig
52else
53	echo "Error: File $(CONFIG_PAYLOAD_CONFIGFILE) does not exist"
54	false
55endif
56else
57	$(MAKE) $(make_args) coreboot_defconfig
58endif
59
60build: config
61	echo "    MAKE       $(project_name) $(TAG-y)"
62	$(MAKE) $(make_args)
63
64clean:
65	test -d $(project_dir) && $(MAKE) $(make_args) clean || exit 0
66
67distclean:
68	rm -rf $(project_dir)
69
70print-repo-info:
71	echo "$(project_git_repo) $(project_dir)"
72
73.PHONY: checkout config build clean distclean fetch print-repo-info
74