Makefile
  1  # 2023-05-10
  2  STABLE_COMMIT_ID=c48613a71c1ee29295b184c51fe5dadf71b543c4
  3  
  4  project_name=depthcharge
  5  project_dir=$(CURDIR)/depthcharge
  6  project_git_repo=$(DEPTHCHARGE_REPO)
  7  project_config_file=$(project_dir)/.config
  8  output_dir=$(project_dir)/build
  9  libpayload_dir=$(abspath $(CURDIR)/../../libpayload)
 10  libpayload_install_dir=$(output_dir)/lp_$(BOARD)
 11  coreboot_build_dir=$(abspath $(CURDIR)/../../../build)
 12  
 13  VBOOT_SOURCE ?= $(abspath $(CURDIR)/../../../3rdparty/vboot)
 14  EC_HEADERS ?= $(abspath $(CURDIR)/../../../3rdparty/chromeec/include)
 15  
 16  TAG-$(DEPTHCHARGE_MASTER)=$(DEPTHCHARGE_BRANCH)
 17  TAG-$(DEPTHCHARGE_STABLE)=$(STABLE_COMMIT_ID)
 18  TAG-$(DEPTHCHARGE_REVISION)=$(DEPTHCHARGE_REVISION_ID)
 19  
 20  unexport KCONFIG_AUTOHEADER
 21  unexport KCONFIG_AUTOCONFIG
 22  unexport KCONFIG_DEPENDENCIES
 23  unexport KCONFIG_SPLITCONFIG
 24  unexport KCONFIG_TRISTATE
 25  unexport KCONFIG_NEGATIVES
 26  unexport src srck obj objk
 27  
 28  BOARD:=$(notdir $(CONFIG_MAINBOARD_DIR))
 29  
 30  ifeq ($(OVERRIDE_DEFCONFIG),y)
 31  libpayload_config=$(libpayload_dir)/configs/defconfig
 32  DEPTHCHARGE_LIBPAYLOAD_MSG="Depthcharge: Using default defconfig for libpayload"
 33  else
 34  libpayload_config=$(libpayload_dir)/configs/config.$(BOARD)
 35  DEPTHCHARGE_LIBPAYLOAD_MSG="Depthcharge: Using $(libpayload_dir)/configs/config.$(BOARD)"
 36  endif
 37  
 38  all: build
 39  
 40  $(project_dir):
 41  	@echo "    Cloning $(project_name) from Git"
 42  	@git clone $(project_git_repo) $(project_name)
 43  
 44  fetch: $(project_dir)
 45  	@cd $(project_dir); \
 46  		git show $(TAG-y) >/dev/null 2>&1; \
 47  		if [ $$? -ne 0 ] || \
 48  		[ "$(TAG-y)" = "origin/main" ]; then \
 49  		echo "    Fetching new commits from the $(project_name) git repo"; \
 50  		git fetch; fi
 51  
 52  # Check out the requested version of the tree
 53  # Don't write a file for main branch so the latest remote version is always used
 54  $(project_dir)/.version_$(TAG-y): fetch
 55  	echo "    Checking out $(project_name) revision $(TAG-y)"
 56  	rm -f $(project_dir)/.version_*
 57  	cd $(project_dir); \
 58  		git checkout main; \
 59  		git branch -D coreboot 2>/dev/null; \
 60  		git checkout -b coreboot $(TAG-y)
 61  ifneq ($(DEPTHCHARGE_MASTER),y)
 62  	touch $(project_dir)/.version_$(TAG-y)
 63  endif
 64  
 65  $(libpayload_install_dir): $(project_dir)
 66  	test -f $(libpayload_config) || \
 67  		(echo "Error: $(libpayload_config) is not present" && \
 68  		false)
 69  	echo $(DEPTHCHARGE_LIBPAYLOAD_MSG)
 70  	cp $(libpayload_config) $(libpayload_dir)/.config
 71  	(grep -q '^\s*CONFIG_LP_CHROMEOS=' $(libpayload_dir)/.config) || \
 72  		(echo "CONFIG_LP_CHROMEOS=y" >> $(libpayload_dir)/.config)
 73  	$(MAKE) -C $(libpayload_dir) olddefconfig
 74  	$(MAKE) -C $(libpayload_dir)
 75  	$(MAKE) -C $(libpayload_dir) install DESTDIR=$(libpayload_install_dir)
 76  
 77  config: $(project_dir)/.version_$(TAG-y) $(libpayload_install_dir)
 78  	echo "    CONFIG     project_name $(TAG-y)"
 79  	export VERSION=$$(cd depthcharge && \
 80  		git describe --tags --long --dirty 2>/dev/null || \
 81  		echo "unknown") ; \
 82  	cd $(project_dir) && \
 83  		$(MAKE) BOARD=$(BOARD) \
 84  		LIBPAYLOAD_DIR=$(libpayload_install_dir)/libpayload \
 85  		VB_SOURCE=$(VBOOT_SOURCE) \
 86  		EC_HEADERS=$(EC_HEADERS) defconfig
 87  
 88  build: config
 89  	echo "    MAKE       $(project_name) $(TAG-y)"
 90  	cp $(coreboot_build_dir)/static_fw_config.h depthcharge/src/base/
 91  	$(MAKE) -C $(project_dir) depthcharge BOARD=$(BOARD) \
 92  		LIBPAYLOAD_DIR=$(libpayload_install_dir)/libpayload \
 93  		VB_SOURCE=$(VBOOT_SOURCE) \
 94  		EC_HEADERS=$(EC_HEADERS) \
 95  		PATH="$(abspath ../../../build/util/cbfstool):$$PATH"
 96  
 97  clean:
 98  	rm -rf $(output_dir)
 99  
100  distclean:
101  	rm -rf $(project_dir)
102  
103  print-repo-info:
104  	echo "$(project_git_repo) $(project_dir)"
105  
106  .PHONY: checkout config build clean distclean clone fetch print-repo-info