blob: 6a0402cecae22e20120a67fd28a5657bc537b99e [file] [log] [blame]
Pascal Brandefe56592016-03-03 10:46:52 +01001################################################################################
2# Following variables defines how the NS_USER (Non Secure User - Client
3# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
4# S_USER (Secure User - TA) are compiled
5################################################################################
6override COMPILE_NS_USER := 32
7override COMPILE_NS_KERNEL := 32
8override COMPILE_S_USER := 32
9override COMPILE_S_KERNEL := 32
Pascal Brandd6536da2015-09-01 10:38:43 +020010
Victor Chong7a716512017-09-11 15:18:44 +010011include common.mk
Joakim Bech427dd632015-05-04 15:52:33 +020012
13################################################################################
14# Paths to git projects and various binaries
15################################################################################
Joakim Bech427dd632015-05-04 15:52:33 +020016BIOS_QEMU_PATH ?= $(ROOT)/bios_qemu_tz_arm
Joakim Bech427dd632015-05-04 15:52:33 +020017QEMU_PATH ?= $(ROOT)/qemu
Jens Wiklander37ab51d2017-09-14 12:09:37 +020018BINARIES_PATH ?= $(ROOT)/out/bin
Joakim Bech427dd632015-05-04 15:52:33 +020019
20SOC_TERM_PATH ?= $(ROOT)/soc_term
21
Pascal Brand070d9552015-09-01 15:33:22 +020022DEBUG = 1
Joakim Bech427dd632015-05-04 15:52:33 +020023
Joakim Bech427dd632015-05-04 15:52:33 +020024################################################################################
25# Targets
26################################################################################
Jens Wiklandereed314d2018-02-07 14:25:24 +010027all: bios-qemu qemu soc-term linux
28clean: bios-qemu-clean linux-clean optee-os-clean \
29 qemu-clean soc-term-clean check-clean buildroot-clean
Joakim Bech427dd632015-05-04 15:52:33 +020030
Victor Chong7a716512017-09-11 15:18:44 +010031include toolchain.mk
Joakim Bech427dd632015-05-04 15:52:33 +020032
33################################################################################
34# QEMU
35################################################################################
36define bios-qemu-common
Jerome Forissier2660ff22015-09-03 10:20:00 +020037 +$(MAKE) -C $(BIOS_QEMU_PATH) \
38 CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \
Joakim Bech427dd632015-05-04 15:52:33 +020039 O=$(ROOT)/out/bios-qemu \
Joakim Bech427dd632015-05-04 15:52:33 +020040 PLATFORM_FLAVOR=virt
41endef
42
Jens Wiklandereed314d2018-02-07 14:25:24 +010043bios-qemu: buildroot optee-os linux
Jens Wiklander37ab51d2017-09-14 12:09:37 +020044 mkdir -p $(BINARIES_PATH)
45 ln -sf $(OPTEE_OS_HEADER_V2_BIN) $(BINARIES_PATH)
46 ln -sf $(OPTEE_OS_PAGER_V2_BIN) $(BINARIES_PATH)
47 ln -sf $(OPTEE_OS_PAGEABLE_V2_BIN) $(BINARIES_PATH)
48 ln -sf $(LINUX_PATH)/arch/arm/boot/zImage $(BINARIES_PATH)
Jens Wiklandereed314d2018-02-07 14:25:24 +010049 ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)
Joakim Bech427dd632015-05-04 15:52:33 +020050 $(call bios-qemu-common)
51
52bios-qemu-clean:
53 $(call bios-qemu-common) clean
54
55qemu:
Igor Opaniuk97d05292016-10-26 14:46:14 +030056 cd $(QEMU_PATH); ./configure --target-list=arm-softmmu\
57 $(QEMU_CONFIGURE_PARAMS_COMMON)
Jerome Forissier2660ff22015-09-03 10:20:00 +020058 $(MAKE) -C $(QEMU_PATH)
Joakim Bech427dd632015-05-04 15:52:33 +020059
60qemu-clean:
Jerome Forissier2660ff22015-09-03 10:20:00 +020061 $(MAKE) -C $(QEMU_PATH) distclean
Joakim Bech427dd632015-05-04 15:52:33 +020062
63################################################################################
Joakim Bech427dd632015-05-04 15:52:33 +020064# Linux kernel
65################################################################################
Jerome Forissiere1002382015-11-26 11:36:00 +010066LINUX_DEFCONFIG_COMMON_ARCH := arm
67LINUX_DEFCONFIG_COMMON_FILES := \
68 $(LINUX_PATH)/arch/arm/configs/vexpress_defconfig \
69 $(CURDIR)/kconfigs/qemu.conf
Joakim Bech427dd632015-05-04 15:52:33 +020070
71linux-defconfig: $(LINUX_PATH)/.config
72
Pascal Brande3d85982015-09-10 17:20:42 +020073LINUX_COMMON_FLAGS += ARCH=arm
Joakim Bech427dd632015-05-04 15:52:33 +020074
Pascal Brande3d85982015-09-10 17:20:42 +020075linux: linux-common
76
77linux-defconfig-clean: linux-defconfig-clean-common
78
79LINUX_CLEAN_COMMON_FLAGS += ARCH=arm
80
81linux-clean: linux-clean-common
82
83LINUX_CLEANER_COMMON_FLAGS += ARCH=arm
84
85linux-cleaner: linux-cleaner-common
Joakim Bech427dd632015-05-04 15:52:33 +020086
87################################################################################
88# OP-TEE
89################################################################################
Jerome Forissierae45fbf2015-09-04 09:40:17 +020090OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-qemu_virt
91optee-os: optee-os-common
Joakim Bech427dd632015-05-04 15:52:33 +020092
Jerome Forissierae45fbf2015-09-04 09:40:17 +020093OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-qemu_virt
94optee-os-clean: optee-os-clean-common
Joakim Bech427dd632015-05-04 15:52:33 +020095
Pascal Brand070d9552015-09-01 15:33:22 +020096optee-client: optee-client-common
Jerome Forissierae45fbf2015-09-04 09:40:17 +020097
Pascal Brand070d9552015-09-01 15:33:22 +020098optee-client-clean: optee-client-clean-common
Jerome Forissierae45fbf2015-09-04 09:40:17 +020099
Joakim Bech427dd632015-05-04 15:52:33 +0200100################################################################################
101# Soc-term
102################################################################################
103soc-term:
Jerome Forissier2660ff22015-09-03 10:20:00 +0200104 $(MAKE) -C $(SOC_TERM_PATH)
Joakim Bech427dd632015-05-04 15:52:33 +0200105
106soc-term-clean:
Jerome Forissier2660ff22015-09-03 10:20:00 +0200107 $(MAKE) -C $(SOC_TERM_PATH) clean
Joakim Bech427dd632015-05-04 15:52:33 +0200108
109################################################################################
Joakim Bech427dd632015-05-04 15:52:33 +0200110# Run targets
111################################################################################
Joakim Bech427dd632015-05-04 15:52:33 +0200112.PHONY: run
113# This target enforces updating root fs etc
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200114run: all
115 $(MAKE) run-only
Joakim Bech427dd632015-05-04 15:52:33 +0200116
117.PHONY: run-only
118run-only:
Jerome Forissierefd56292017-01-31 17:46:10 +0100119 $(call check-terminal)
Joakim Bech427dd632015-05-04 15:52:33 +0200120 $(call run-help)
SY Chiuc8d61452015-09-17 16:42:17 +0800121 $(call launch-terminal,54320,"Normal World")
122 $(call launch-terminal,54321,"Secure World")
Peter Maydellc8bcc902015-10-29 16:31:52 +0000123 $(call wait-for-ports,54320,54321)
Jens Wiklander37ab51d2017-09-14 12:09:37 +0200124 (cd $(BINARIES_PATH) && $(QEMU_PATH)/arm-softmmu/qemu-system-arm \
Joakim Bech427dd632015-05-04 15:52:33 +0200125 -nographic \
126 -serial tcp:localhost:54320 -serial tcp:localhost:54321 \
Victor Chong6f0c0eb2016-01-24 07:43:33 +0000127 -s -S -machine virt -machine secure=on -cpu cortex-a15 \
Jens Wiklander37ab51d2017-09-14 12:09:37 +0200128 -d unimp -semihosting-config enable,target=native \
Joakim Bech427dd632015-05-04 15:52:33 +0200129 -m 1057 \
Igor Opaniuk97d05292016-10-26 14:46:14 +0300130 -bios $(ROOT)/out/bios-qemu/bios.bin \
Jens Wiklander37ab51d2017-09-14 12:09:37 +0200131 $(QEMU_EXTRA_ARGS) )
Joakim Bech427dd632015-05-04 15:52:33 +0200132
Jerome Forissierf080b5a2015-08-07 16:18:57 +0200133
134ifneq ($(filter check,$(MAKECMDGOALS)),)
135CHECK_DEPS := all
136endif
137
Jerome Forissier7a9463c2015-08-20 10:53:48 +0200138check-args := --bios $(ROOT)/out/bios-qemu/bios.bin
139ifneq ($(TIMEOUT),)
140check-args += --timeout $(TIMEOUT)
141endif
142
Jerome Forissier0a60a9d2017-10-13 13:35:47 +0200143QEMU_SMP ?= 1
Jerome Forissierf080b5a2015-08-07 16:18:57 +0200144check: $(CHECK_DEPS)
Jerome Forissiercdc6fe02017-09-20 11:43:51 +0200145 cd $(BINARIES_PATH) && \
146 export QEMU=$(ROOT)/qemu/arm-softmmu/qemu-system-arm && \
Jerome Forissier2a90dde2017-10-13 13:32:45 +0200147 export QEMU_SMP=$(QEMU_SMP) && \
Jerome Forissiercdc6fe02017-09-20 11:43:51 +0200148 expect $(ROOT)/build/qemu-check.exp -- $(check-args) || \
Jerome Forissier2660ff22015-09-03 10:20:00 +0200149 (if [ "$(DUMP_LOGS_ON_ERROR)" ]; then \
150 echo "== $$PWD/serial0.log:"; \
151 cat serial0.log; \
152 echo "== end of $$PWD/serial0.log:"; \
153 echo "== $$PWD/serial1.log:"; \
154 cat serial1.log; \
155 echo "== end of $$PWD/serial1.log:"; \
156 fi; false)
Jerome Forissierf080b5a2015-08-07 16:18:57 +0200157
158check-only: check
159
160check-clean:
161 rm -f serial0.log serial1.log