blob: a261403c6f7bf7519aab6c1dc3656f5e606836af [file] [log] [blame]
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -08001UEFI_TOP_DIR := .
2
3ifndef $(BOOTLOADER_OUT)
4 BOOTLOADER_OUT := .
5endif
6export $(BOOTLOADER_OUT)
7
8BUILDDIR=$(shell pwd)
Bhanuprakash Modem78a89d72018-10-10 19:00:44 +05309export WRAPPER := $(PREBUILT_PYTHON_PATH) $(BUILDDIR)/clang-wrapper.py
Bhanuprakash Modema64c9642018-11-30 13:49:09 +053010export MAKEPATH := $(MAKEPATH)
Jeevan Shriram4d4d5e62017-06-08 16:43:07 -070011
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -080012export CLANG35_BIN := $(CLANG_BIN)
Jeevan Shriramd29e4402017-11-06 14:04:11 -080013export CLANG35_GCC_TOOLCHAIN := $(CLANG35_GCC_TOOLCHAIN)
Jeevan Shriramd5d169f2018-04-20 16:09:10 -070014export $(BOARD_BOOTLOADER_PRODUCT_NAME)
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -080015
Jeevan Shriram4d4d5e62017-06-08 16:43:07 -070016ifeq ($(TARGET_ARCHITECTURE),arm)
17export ARCHITECTURE := ARM
Jeevan Shriramd29e4402017-11-06 14:04:11 -080018export CLANG35_ARM_PREFIX := $(CLANG_PREFIX)
Jeevan Shriram4d4d5e62017-06-08 16:43:07 -070019else
20export ARCHITECTURE := AARCH64
Jeevan Shriramd29e4402017-11-06 14:04:11 -080021export CLANG35_AARCH64_PREFIX := $(CLANG_PREFIX)
Jeevan Shriram4d4d5e62017-06-08 16:43:07 -070022endif
23
Jeevan Shriramd29e4402017-11-06 14:04:11 -080024export BUILD_REPORT_DIR := $(BOOTLOADER_OUT)/build_report
25ANDROID_PRODUCT_OUT := $(BOOTLOADER_OUT)/Build
26
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -080027WORKSPACE=$(BUILDDIR)
28TARGET_TOOLS := CLANG35
29TARGET := DEBUG
30BUILD_ROOT := $(ANDROID_PRODUCT_OUT)/$(TARGET)_$(TARGET_TOOLS)
Channagoud Kadabi1ed4a152016-02-05 15:15:41 -080031EDK_TOOLS := $(BUILDDIR)/BaseTools
32EDK_TOOLS_BIN := $(EDK_TOOLS)/Source/C/bin
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -080033ABL_FV_IMG := $(BUILD_ROOT)/FV/abl.fv
34ABL_FV_ELF := $(BOOTLOADER_OUT)/../../abl.elf
lijuang4d342f62016-09-13 15:51:26 +080035SHELL:=/bin/bash
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -080036
Venkata Narendra Kumar Gutta688a1612018-04-18 17:12:50 -070037# This function is to check version compatibility, used to control features based on the compiler version. \
38Arguments should be return value, current version and supported version in order. \
39It sets return value to true if the current version is equal or greater than the supported version.
40define check_version_compatibility
41 $(eval CURR_VERSION := $(shell $(2)/clang --version |& grep -i "clang version" |& sed 's/[^0-9.]//g'))
42 $(eval CURR_VERSION_MAJOR := $(shell echo $(CURR_VERSION) |& cut -d. -f1))
43 $(eval CURR_VERSION_MINOR := $(shell echo $(CURR_VERSION) |& cut -d. -f2))
44 $(eval SUPPORTED_VERSION := $(3))
45 $(eval SUPPORTED_VERSION_MAJOR := $(shell echo $(SUPPORTED_VERSION) |& cut -d. -f1))
46 $(eval SUPPORTED_VERSION_MINOR := $(shell echo $(SUPPORTED_VERSION) |& cut -d. -f2))
47
48 ifeq ($(shell expr $(CURR_VERSION_MAJOR) \> $(SUPPORTED_VERSION_MAJOR)), 1)
49 $(1) := true
50 endif
51 ifeq ($(shell expr $(CURR_VERSION_MAJOR) \= $(SUPPORTED_VERSION_MAJOR)), 1)
52 ifeq ($(shell expr $(CURR_VERSION_MINOR) \>= $(SUPPORTED_VERSION_MINOR)), 1)
53 $(1) := true
54 endif
55 endif
56endef
57
Trilok Sonic1a2d142017-04-26 17:32:05 -070058# UEFI UBSAN Configuration
59# ENABLE_UEFI_UBSAN := true
60
61ifeq "$(ENABLE_UEFI_UBSAN)" "true"
62 UBSAN_GCC_FLAG_UNDEFINED := -fsanitize=undefined
63 UBSAN_GCC_FLAG_ALIGNMENT := -fno-sanitize=alignment
64else
65 UBSAN_GCC_FLAG_UNDEFINED :=
66 UBSAN_GCC_FLAG_ALIGNMENT :=
67endif
68
Jeevan Shriram90c404b2018-03-29 15:11:44 -070069ifeq ($(TARGET_ARCHITECTURE), arm)
Jeevan Shriram32541172017-12-02 10:19:23 -080070 LOAD_ADDRESS := 0X8FB00000
lijuang31b93db2018-09-05 19:48:22 +080071 TARGET_ARCH_ARM64 := 0
Jeevan Shriram995c2312017-10-10 14:25:00 -070072else
Jeevan Shriram32541172017-12-02 10:19:23 -080073 LOAD_ADDRESS := 0X9FA00000
lijuang31b93db2018-09-05 19:48:22 +080074 TARGET_ARCH_ARM64 := 1
Jeevan Shriram995c2312017-10-10 14:25:00 -070075endif
76
Jeevan Shriram90c404b2018-03-29 15:11:44 -070077ifeq ($(ENABLE_LE_VARIANT), true)
78 ENABLE_LE_VARIANT := 1
79else
80 ENABLE_LE_VARIANT := 0
81endif
82
lijuang65c51d52018-03-28 13:52:57 +080083ifeq "$(ABL_USE_SDLLVM)" "true"
84 SDLLVM_COMPILE_ANALYZE := --compile-and-analyze
85 SDLLVM_ANALYZE_REPORT := $(BUILD_REPORT_DIR)
86else
87 SDLLVM_COMPILE_ANALYZE :=
88 SDLLVM_ANALYZE_REPORT :=
89endif
S A Muqthyarb25e5b32018-04-26 16:02:41 +053090
91ifneq "$(INIT_BIN_LE)" ""
92 INIT_BIN := $(INIT_BIN_LE)
93else
94 INIT_BIN := \"/init\"
95endif
96
lijuang65c51d52018-03-28 13:52:57 +080097export SDLLVM_COMPILE_ANALYZE := $(SDLLVM_COMPILE_ANALYZE)
98export SDLLVM_ANALYZE_REPORT := $(SDLLVM_ANALYZE_REPORT)
99
Venkata Narendra Kumar Gutta688a1612018-04-18 17:12:50 -0700100CLANG_SUPPORTS_SAFESTACK := false
101$(eval $(call check_version_compatibility, CLANG_SUPPORTS_SAFESTACK, $(CLANG_BIN), $(SAFESTACK_SUPPORTED_CLANG_VERSION)))
102
103ifeq "$(ABL_SAFESTACK)" "true"
104 ifeq "$(CLANG_SUPPORTS_SAFESTACK)" "true"
105 LLVM_ENABLE_SAFESTACK := -fsanitize=safe-stack
106 LLVM_SAFESTACK_USE_PTR := -mllvm -safestack-use-pointer-address
107 LLVM_SAFESTACK_COLORING := -mllvm -safe-stack-coloring=true
108 endif
109else
110 LLVM_ENABLE_SAFESTACK :=
111 LLVM_SAFESTACK_USE_PTR :=
112 LLVM_SAFESTACK_COLORING :=
113endif
114export LLVM_ENABLE_SAFESTACK := $(LLVM_ENABLE_SAFESTACK)
115export LLVM_SAFESTACK_USE_PTR := $(LLVM_SAFESTACK_USE_PTR)
116export LLVM_SAFESTACK_COLORING := $(LLVM_SAFESTACK_COLORING)
117
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -0800118.PHONY: all cleanall
119
120all: ABL_FV_ELF
121
122cleanall:
123 @. ./edksetup.sh BaseTools && \
Jeevan Shriram4d4d5e62017-06-08 16:43:07 -0700124 build -p $(WORKSPACE)/QcomModulePkg/QcomModulePkg.dsc -a $(ARCHITECTURE) -t $(TARGET_TOOLS) -b $(TARGET) -j build_modulepkg.log cleanall
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -0800125 rm -rf $(WORKSPACE)/QcomModulePkg/Bin64
126
Channagoud Kadabi1ed4a152016-02-05 15:15:41 -0800127EDK_TOOLS_BIN:
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -0800128 @. ./edksetup.sh BaseTools && \
Bhanuprakash Modem200d4b12018-11-22 16:29:39 +0530129 $(MAKEPATH)make -C $(EDK_TOOLS) $(PREBUILT_HOST_TOOLS) -j1
Channagoud Kadabi1ed4a152016-02-05 15:15:41 -0800130
131ABL_FV_IMG: EDK_TOOLS_BIN
132 @. ./edksetup.sh BaseTools && \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700133 build -p $(WORKSPACE)/QcomModulePkg/QcomModulePkg.dsc \
134 -a $(ARCHITECTURE) \
135 -t $(TARGET_TOOLS) \
136 -b $(TARGET) \
137 -D ABL_OUT_DIR=$(ANDROID_PRODUCT_OUT) \
Mukesh Ojha8dc65f52018-03-27 00:59:30 +0530138 -D BUILD_SYSTEM_ROOT_IMAGE=$(BUILD_SYSTEM_ROOT_IMAGE) \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700139 -D VERIFIED_BOOT=$(VERIFIED_BOOT) \
140 -D VERIFIED_BOOT_2=$(VERIFIED_BOOT_2) \
Zhen Kongdd5c5e32017-07-05 13:44:45 -0700141 -D VERIFIED_BOOT_LE=$(VERIFIED_BOOT_LE) \
Jeevan Shriram0a3ba0b2019-01-02 23:21:12 -0800142 -D AB_RETRYCOUNT_DISABLE=$(AB_RETRYCOUNT_DISABLE) \
vijay.rayabarapu18a64042018-08-08 02:23:27 +0530143 -D VERITY_LE=$(VERITY_LE) \
lijuang31b93db2018-09-05 19:48:22 +0800144 -D TARGET_ARCH_ARM64=$(TARGET_ARCH_ARM64) \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700145 -D USER_BUILD_VARIANT=$(USER_BUILD_VARIANT) \
Mukesh Ojhad29676a2018-04-10 17:37:56 +0530146 -D DISABLE_PARALLEL_DOWNLOAD_FLASH=$(DISABLE_PARALLEL_DOWNLOAD_FLASH) \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700147 -D ENABLE_LE_VARIANT=$(ENABLE_LE_VARIANT) \
Saranya Chidura30eb6292019-02-20 15:27:37 +0530148 -D DYNAMIC_PARTITION_SUPPORT=$(DYNAMIC_PARTITION_SUPPORT) \
S A Muqthyarb25e5b32018-04-26 16:02:41 +0530149 -D INIT_BIN=$(INIT_BIN) \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700150 -D UBSAN_UEFI_GCC_FLAG_UNDEFINED=$(UBSAN_GCC_FLAG_UNDEFINED) \
151 -D UBSAN_UEFI_GCC_FLAG_ALIGNMENT=$(UBSAN_GCC_FLAG_ALIGNMENT) \
Sourabh Banerjee54a5bd72019-03-15 15:16:24 +0530152 -D NAND_SQUASHFS_SUPPORT=$(NAND_SQUASHFS_SUPPORT) \
Jeevan Shriram995c2312017-10-10 14:25:00 -0700153 -j build_modulepkg.log $*
154
Sridhar Parasuramfedf9ac2015-11-03 16:20:50 -0800155 cp $(BUILD_ROOT)/FV/FVMAIN_COMPACT.Fv $(ABL_FV_IMG)
156
lijuangcd8329b2019-10-29 17:08:53 +0800157BASETOOLS_CLEAN: ABL_FV_IMG
158 @$(MAKEPATH)make -C $(BUILDDIR)/BaseTools/Source/C clean > /dev/null
159
160ABL_FV_ELF: BASETOOLS_CLEAN
Jeevan Shriram19a53812017-06-14 15:39:48 -0700161 python $(WORKSPACE)/QcomModulePkg/Tools/image_header.py $(ABL_FV_IMG) $(ABL_FV_ELF) $(LOAD_ADDRESS) elf 32