SY Chiu | ddd3d82 | 2015-07-21 10:10:01 +0800 | [diff] [blame^] | 1 | BASH := $(shell which bash) |
| 2 | ROOT ?= $(subst /build/,,$(shell pwd)/) |
| 3 | |
| 4 | ################################################################################ |
| 5 | # Paths to git projects and various binaries |
| 6 | ################################################################################ |
| 7 | LINUX_PATH ?= $(ROOT)/linux |
| 8 | LINUX_PATCH_PATH ?= $(ROOT)/patches-upstream |
| 9 | |
| 10 | OPTEE_OS_PATH ?= $(ROOT)/optee_os |
| 11 | OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-mediatek/core/tee-pager.bin |
| 12 | |
| 13 | OPTEE_CLIENT_PATH ?= $(ROOT)/optee_client |
| 14 | OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export |
| 15 | OPTEE_LINUXDRIVER_PATH ?= $(ROOT)/optee_linuxdriver |
| 16 | |
| 17 | OPTEE_TEST_PATH ?= $(ROOT)/optee_test |
| 18 | OPTEE_TEST_OUT_PATH ?= $(ROOT)/out/optee_test |
| 19 | |
| 20 | GEN_ROOTFS_PATH ?= $(ROOT)/gen_rootfs |
| 21 | GEN_ROOTFS_FILELIST ?= $(GEN_ROOTFS_PATH)/filelist-tee.txt |
| 22 | |
| 23 | MTK_TOOLS_PATH ?= $(ROOT)/mtk_tools |
| 24 | |
| 25 | ################################################################################ |
| 26 | # defines, macros, configuration etc |
| 27 | ################################################################################ |
| 28 | define KERNEL_VERSION |
| 29 | $(shell cd $(LINUX_PATH) && make kernelversion) |
| 30 | endef |
| 31 | |
| 32 | CCACHE ?= $(shell which ccache) # Don't remove this comment (space is needed) |
| 33 | |
| 34 | ################################################################################ |
| 35 | # Targets |
| 36 | ################################################################################ |
| 37 | all: linux optee-os optee-client optee-linuxdriver xtest |
| 38 | all-clean: busybox-clean optee-os-clean \ |
| 39 | optee-client-clean optee-linuxdriver-clean |
| 40 | |
| 41 | |
| 42 | -include toolchain.mk |
| 43 | |
| 44 | ################################################################################ |
| 45 | # Busybox |
| 46 | ################################################################################ |
| 47 | busybox: |
| 48 | @if [ ! -d "$(GEN_ROOTFS_PATH)/build" ]; then \ |
| 49 | cd $(GEN_ROOTFS_PATH); \ |
| 50 | CC_DIR=$(AARCH64_PATH) \ |
| 51 | PATH=${PATH}:$(LINUX_PATH)/usr \ |
| 52 | $(GEN_ROOTFS_PATH)/generate-cpio-rootfs.sh mt8173-evb; \ |
| 53 | fi |
| 54 | |
| 55 | busybox-clean: |
| 56 | cd $(GEN_ROOTFS_PATH); \ |
| 57 | $(GEN_ROOTFS_PATH)/generate-cpio-rootfs.sh mt8173-evb clean |
| 58 | |
| 59 | ################################################################################ |
| 60 | # Linux kernel |
| 61 | ################################################################################ |
| 62 | .ONESHELL: |
| 63 | $(LINUX_PATCH_PATH)/.patched: |
| 64 | cd $(LINUX_PATH); \ |
| 65 | $(LINUX_PATCH_PATH)/patch-all.sh |
| 66 | touch $@ |
| 67 | |
| 68 | $(LINUX_PATH)/.config: |
| 69 | # Temporary fix until we have the driver integrated in the kernel |
| 70 | sed -i '/config ARM64$$/a select DMA_SHARED_BUFFER' $(LINUX_PATH)/arch/arm64/Kconfig; |
| 71 | make -C $(LINUX_PATH) ARCH=arm64 defconfig |
| 72 | |
| 73 | linux-defconfig: $(LINUX_PATH)/.config |
| 74 | linux-patched: $(LINUX_PATCH_PATH)/.patched |
| 75 | |
| 76 | linux: linux-defconfig linux-patched |
| 77 | make -C $(LINUX_PATH) \ |
| 78 | CROSS_COMPILE="$(CCACHE)$(AARCH64_NONE_CROSS_COMPILE)" \ |
| 79 | LOCALVERSION= \ |
| 80 | ARCH=arm64 \ |
| 81 | -j`getconf _NPROCESSORS_ONLN` |
| 82 | |
| 83 | ################################################################################ |
| 84 | # OP-TEE |
| 85 | ################################################################################ |
| 86 | optee-os: |
| 87 | make -C $(OPTEE_OS_PATH) \ |
| 88 | CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \ |
| 89 | CROSS_COMPILE_core="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \ |
| 90 | CFG_ARM64_core=y \ |
| 91 | PLATFORM=mediatek \ |
| 92 | PLATFORM_FLAVOR=mt8173 \ |
| 93 | CFG_TEE_CORE_LOG_LEVEL=4 \ |
| 94 | DEBUG=0 \ |
| 95 | -j`getconf _NPROCESSORS_ONLN` |
| 96 | |
| 97 | optee-os-clean: |
| 98 | make -C $(OPTEE_OS_PATH) \ |
| 99 | PLATFORM=mediatek \ |
| 100 | PLATFORM_FLAVOR=mt8173 \ |
| 101 | clean |
| 102 | |
| 103 | optee-client: |
| 104 | make -C $(OPTEE_CLIENT_PATH) \ |
| 105 | CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \ |
| 106 | -j`getconf _NPROCESSORS_ONLN` |
| 107 | |
| 108 | optee-client-clean: |
| 109 | make -C $(OPTEE_CLIENT_PATH) clean |
| 110 | |
| 111 | optee-linuxdriver: linux |
| 112 | make -C $(LINUX_PATH) \ |
| 113 | V=0 \ |
| 114 | ARCH=arm64 \ |
| 115 | CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \ |
| 116 | LOCALVERSION= \ |
| 117 | M=$(OPTEE_LINUXDRIVER_PATH) modules |
| 118 | |
| 119 | optee-linuxdriver-clean: |
| 120 | make -C $(LINUX_PATH) \ |
| 121 | M=$(OPTEE_LINUXDRIVER_PATH) clean |
| 122 | |
| 123 | ################################################################################ |
| 124 | # xtest / optee_test |
| 125 | ################################################################################ |
| 126 | xtest: optee-os optee-client |
| 127 | @if [ -d "$(OPTEE_TEST_PATH)" ]; then \ |
| 128 | make -C $(OPTEE_TEST_PATH) \ |
| 129 | -j`getconf _NPROCESSORS_ONLN` \ |
| 130 | CROSS_COMPILE_HOST="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \ |
| 131 | CROSS_COMPILE_TA="$(CCACHE)$(AARCH32_CROSS_COMPILE)" \ |
| 132 | TA_DEV_KIT_DIR=$(OPTEE_OS_PATH)/out/arm-plat-mediatek/export-user_ta \ |
| 133 | O=$(OPTEE_TEST_OUT_PATH); \ |
| 134 | fi |
| 135 | |
| 136 | xtest-clean: |
| 137 | @if [ -d "$(OPTEE_TEST_PATH)" ]; then \ |
| 138 | rm -rf $(OPTEE_TEST_OUT_PATH); \ |
| 139 | fi |
| 140 | |
| 141 | ################################################################################ |
| 142 | # Root FS |
| 143 | ################################################################################ |
| 144 | .PHONY: filelist-tee |
| 145 | filelist-tee: |
| 146 | @echo "# xtest / optee_test" > $(GEN_ROOTFS_FILELIST) |
| 147 | @find $(OPTEE_TEST_OUT_PATH) -type f -name "xtest" | sed 's/\(.*\)/file \/bin\/xtest \1 755 0 0/g' >> $(GEN_ROOTFS_FILELIST) |
| 148 | @echo "# TAs" >> $(GEN_ROOTFS_FILELIST) |
| 149 | @echo "dir /lib/optee_armtz 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 150 | @find $(OPTEE_TEST_OUT_PATH) -name "*.ta" | \ |
| 151 | sed 's/\(.*\)\/\(.*\)/file \/lib\/optee_armtz\/\2 \1\/\2 444 0 0/g' >> $(GEN_ROOTFS_FILELIST) |
| 152 | @echo "# Secure storage dig" >> $(GEN_ROOTFS_FILELIST) |
| 153 | @echo "dir /data 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 154 | @echo "dir /data/tee 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 155 | @echo "# OP-TEE device" >> $(GEN_ROOTFS_FILELIST) |
| 156 | @echo "dir /lib/modules 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 157 | @echo "dir /lib/modules/$(call KERNEL_VERSION) 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 158 | @echo "file /lib/modules/$(call KERNEL_VERSION)/optee.ko $(OPTEE_LINUXDRIVER_PATH)/core/optee.ko 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 159 | @echo "file /lib/modules/$(call KERNEL_VERSION)/optee_armtz.ko $(OPTEE_LINUXDRIVER_PATH)/armtz/optee_armtz.ko 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 160 | @echo "# OP-TEE Client" >> $(GEN_ROOTFS_FILELIST) |
| 161 | @echo "file /bin/tee-supplicant $(OPTEE_CLIENT_EXPORT)/bin/tee-supplicant 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 162 | @echo "dir /lib/aarch64-linux-gnu 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 163 | @echo "file /lib/aarch64-linux-gnu/libteec.so.1.0 $(OPTEE_CLIENT_EXPORT)/lib/libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 164 | @echo "slink /lib/aarch64-linux-gnu/libteec.so.1 libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 165 | @echo "slink /lib/aarch64-linux-gnu/libteec.so libteec.so.1 755 0 0" >> $(GEN_ROOTFS_FILELIST) |
| 166 | |
| 167 | update_rootfs: busybox optee-client optee-linuxdriver xtest filelist-tee |
| 168 | cat $(GEN_ROOTFS_PATH)/filelist-final.txt $(GEN_ROOTFS_PATH)/filelist-tee.txt > $(GEN_ROOTFS_PATH)/filelist.tmp |
| 169 | cd $(GEN_ROOTFS_PATH); \ |
| 170 | $(LINUX_PATH)/usr/gen_init_cpio $(GEN_ROOTFS_PATH)/filelist.tmp | gzip > $(GEN_ROOTFS_PATH)/filesystem.cpio.gz |
| 171 | |
| 172 | ################################################################################ |
| 173 | # Image Tools |
| 174 | ################################################################################ |
| 175 | .PHONY: build_image flash_image run |
| 176 | build-image: update_rootfs optee-os |
| 177 | cd $(MTK_TOOLS_PATH); \ |
| 178 | ./build_trustzone.sh $(OPTEE_OS_BIN); \ |
| 179 | ./build_bootimg.sh $(LINUX_PATH) $(GEN_ROOTFS_PATH)/filesystem.cpio.gz |
| 180 | |
| 181 | flash-image: build-image |
| 182 | @echo "Please press reset button ..." |
| 183 | @cd $(MTK_TOOLS_PATH); \ |
| 184 | ./fastboot flash boot ./boot.img; \ |
| 185 | ./fastboot flash TEE1 ./trustzone.bin |
| 186 | @echo "Please press reset button again..." |
| 187 | |
| 188 | run: flash-image |