xref: /rk3399_ARM-atf/lib/romlib/Makefile (revision bf719f66a7f2261b69b397072cec5ad99c573891)
1#
2# Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
7AS          = $(CROSS_COMPILE)as
8LD          = $(CROSS_COMPILE)ld
9OC          = $(CROSS_COMPILE)objcopy
10CPP         = $(CROSS_COMPILE)cpp
11BUILD_DIR   = ../../$(BUILD_PLAT)/romlib
12LIB_DIR     = ../../$(BUILD_PLAT)/lib
13WRAPPER_DIR = ../../$(BUILD_PLAT)/libwrapper
14LIBS        = -lmbedtls -lfdt -lc
15INC         = $(INCLUDES:-I%=-I../../%)
16PPFLAGS     = $(INC) $(DEFINES) -P -D__ASSEMBLY__ -D__LINKER__ -MD -MP -MT $(BUILD_DIR)/romlib.ld
17OBJS        = $(BUILD_DIR)/jmptbl.o $(BUILD_DIR)/init.o
18MAPFILE     = ../../$(BUILD_PLAT)/romlib/romlib.map
19
20V ?= 0
21ifeq ($(V),0)
22  Q := @
23else
24  Q :=
25endif
26
27LDFLAGS := --gc-sections -O1
28ifeq ($(DEBUG),1)
29   LDFLAGS += -Map=$(MAPFILE)
30endif
31
32ifeq (${ARM_ARCH_MINOR},0)
33	ASFLAGS = -march=armv8-a
34else
35	ASFLAGS = -march=armv8.${ARM_ARCH_MINOR}-a
36endif
37
38.PHONY: all clean distclean
39
40all: $(BUILD_DIR)/romlib.bin $(LIB_DIR)/libwrappers.a
41
42%.o: %.s
43	@echo "  AS      $@"
44	$(Q)$(AS) $(ASFLAGS) -o $@ $<
45
46$(BUILD_DIR)/%.o: %.s
47	@echo "  AS      $@"
48	$(Q)$(AS) $(ASFLAGS) -o $@ $<
49
50$(BUILD_DIR)/romlib.ld: romlib.ld.S
51	@echo "  PP      $@"
52	$(Q)$(CPP) $(PPFLAGS) -o $@ romlib.ld.S
53
54$(BUILD_DIR)/romlib.elf: $(OBJS) $(BUILD_DIR)/romlib.ld
55	@echo "  LD      $@"
56	$(Q)$(LD) -T $(BUILD_DIR)/romlib.ld -L$(LIB_DIR) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
57
58$(BUILD_DIR)/romlib.bin: $(BUILD_DIR)/romlib.elf
59	@echo "  BIN     $@"
60	$(Q)$(OC) -O binary $(BUILD_DIR)/romlib.elf $@
61
62$(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf
63	@echo "  VAR     $@"
64	$(Q)./genvar.sh -o $@ $(BUILD_DIR)/romlib.elf
65
66$(LIB_DIR)/libwrappers.a: $(BUILD_DIR)/jmptbl.i $(WRAPPER_DIR)/jmpvar.o
67	@echo "  AR      $@"
68	$(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ --bti=$(ENABLE_BTI) --asflags=$(ASFLAGS) $(BUILD_DIR)/jmptbl.i
69
70$(BUILD_DIR)/jmptbl.i: $(BUILD_DIR)/jmptbl.s
71
72$(BUILD_DIR)/jmptbl.s: ../../$(PLAT_DIR)/jmptbl.i
73	@echo "  TBL     $@"
74	$(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) --bti=$(ENABLE_BTI) ../../$(PLAT_DIR)/jmptbl.i
75
76clean:
77	@rm -f $(BUILD_DIR)/*
78
79-include $(BUILD_DIR)/romlib.d
80