2017-06-02 20:40:03 +08:00
|
|
|
# Compilation flags
|
2017-05-30 13:10:04 +08:00
|
|
|
ARCH_SPLIT = $(subst -, ,$(ARCH))
|
2017-06-05 23:23:54 +08:00
|
|
|
ISA = $(word 1,$(ARCH_SPLIT))
|
2017-05-30 13:10:04 +08:00
|
|
|
PLATFORM = $(word 2,$(ARCH_SPLIT))
|
|
|
|
|
2017-06-05 23:23:54 +08:00
|
|
|
ifeq ($(ISA), mips32)
|
2017-05-21 21:17:11 +08:00
|
|
|
CROSS_COMPILE = mips-linux-gnu-
|
|
|
|
endif
|
|
|
|
|
2019-01-30 17:44:56 +08:00
|
|
|
ifeq ($(ISA), riscv32)
|
|
|
|
CROSS_COMPILE = riscv-none-embed-
|
|
|
|
endif
|
|
|
|
|
2018-09-03 21:40:27 +08:00
|
|
|
ifeq ($(PLATFORM), navy)
|
|
|
|
NAVY_LIBS = libndl libos libc
|
|
|
|
INC_DIR += $(addsuffix /include/, $(addprefix $(NAVY_HOME)/libs/, $(NAVY_LIBS)))
|
|
|
|
endif
|
|
|
|
|
2017-05-21 21:17:11 +08:00
|
|
|
AS = $(CROSS_COMPILE)gcc
|
|
|
|
CC = $(CROSS_COMPILE)gcc
|
|
|
|
CXX = $(CROSS_COMPILE)g++
|
|
|
|
LD = $(CROSS_COMPILE)ld
|
2017-07-29 12:10:30 +08:00
|
|
|
OBJCOPY = $(CROSS_COMPILE)objcopy
|
2017-08-03 23:59:53 +08:00
|
|
|
READELF = $(CROSS_COMPILE)readelf
|
2017-05-21 21:17:11 +08:00
|
|
|
|
2017-06-19 21:24:34 +08:00
|
|
|
ISA_DEF = __ISA_$(shell echo $(ISA) | tr a-z A-Z)__
|
|
|
|
|
2017-06-02 20:40:03 +08:00
|
|
|
INCLUDES = $(addprefix -I, $(INC_DIR)) -I$(AM_HOME)/am/
|
|
|
|
INCLUDES += -I$(AM_HOME)/am/arch/$(ARCH)/include
|
2018-10-12 10:31:37 +08:00
|
|
|
|
2019-02-10 14:29:14 +08:00
|
|
|
CFLAGS_COMMON += -O2 -MMD -Wall -Werror -ggdb $(INCLUDES) -D$(ISA_DEF) -D__ISA__=\"$(ISA)\" \
|
2018-10-12 10:31:37 +08:00
|
|
|
-fno-builtin -fno-stack-protector
|
|
|
|
CFLAGS += -std=gnu11
|
|
|
|
CXXFLAGS += -std=c++11 -ffreestanding -fno-rtti -fno-exceptions
|
|
|
|
ASFLAGS += -MMD $(INCLUDES) -D$(ISA_DEF)
|
2017-05-21 21:17:11 +08:00
|
|
|
|
2018-04-04 10:04:06 +08:00
|
|
|
ifeq ($(ISA), native)
|
2018-10-12 10:31:37 +08:00
|
|
|
CFLAGS_COMMON += -fpie
|
2018-04-04 10:04:06 +08:00
|
|
|
ASFLAGS += -fpie -pie
|
|
|
|
endif
|
|
|
|
|
2017-06-05 23:23:54 +08:00
|
|
|
ifeq ($(ISA), mips32)
|
2019-01-30 17:39:32 +08:00
|
|
|
CFLAGS_COMMON += -fno-pic -static -fno-delayed-branch -mno-abicalls -march=mips32 -mno-check-zero-division -EL -mno-llsc -mno-imadd -mno-mad
|
2017-05-30 13:10:04 +08:00
|
|
|
ASFLAGS += -march=mips32 -EL -mno-check-zero-division -O0 -mno-abicalls -fno-pic -fno-delayed-branch
|
2017-05-21 21:17:11 +08:00
|
|
|
endif
|
|
|
|
|
2017-06-05 23:23:54 +08:00
|
|
|
ifeq ($(ISA), x86)
|
2018-12-28 08:56:35 +08:00
|
|
|
CFLAGS_COMMON += -m32 -fno-pic -fno-omit-frame-pointer -march=i386 -mstringop-strategy=loop -fno-reorder-functions
|
2017-05-21 21:17:11 +08:00
|
|
|
ASFLAGS += -m32
|
|
|
|
endif
|
|
|
|
|
2019-01-30 17:44:56 +08:00
|
|
|
ifeq ($(ISA), riscv32)
|
|
|
|
CFLAGS_COMMON += -fno-pic -static -march=rv32im -mabi=ilp32
|
|
|
|
ASFLAGS += -march=rv32im -mabi=ilp32 -O0 -fno-pic
|
|
|
|
endif
|
|
|
|
|
2018-09-08 03:05:20 +08:00
|
|
|
ifeq ($(ISA), am_native)
|
2018-10-12 10:31:37 +08:00
|
|
|
CFLAGS_COMMON += -fno-omit-frame-pointer -fno-reorder-functions
|
2018-09-08 03:05:20 +08:00
|
|
|
endif
|
|
|
|
|
2018-10-12 10:31:37 +08:00
|
|
|
CFLAGS += $(CFLAGS_COMMON)
|
|
|
|
CXXFLAGS += $(CFLAGS_COMMON)
|
|
|
|
|
2017-06-02 20:40:03 +08:00
|
|
|
# Files to be compiled
|
|
|
|
OBJS = $(addprefix $(DST_DIR)/, $(addsuffix .o, $(basename $(SRCS))))
|
|
|
|
|
2017-05-21 22:10:24 +08:00
|
|
|
# Compilation patterns
|
|
|
|
$(DST_DIR)/%.o: %.cpp
|
2017-08-12 15:58:53 +08:00
|
|
|
@echo + CXX $<
|
2017-05-21 22:10:24 +08:00
|
|
|
@mkdir -p $(dir $@)
|
2017-08-12 15:58:53 +08:00
|
|
|
@$(CXX) $(CXXFLAGS) -c -o $@ $<
|
2017-05-21 22:10:24 +08:00
|
|
|
$(DST_DIR)/%.o: %.c
|
2017-08-12 15:58:53 +08:00
|
|
|
@echo + CC $<
|
2017-05-21 22:10:24 +08:00
|
|
|
@mkdir -p $(dir $@)
|
2017-08-12 15:58:53 +08:00
|
|
|
@$(CC) $(CFLAGS) -c -o $@ $<
|
2017-05-21 22:10:24 +08:00
|
|
|
$(DST_DIR)/%.o: %.S
|
2017-08-12 15:58:53 +08:00
|
|
|
@echo + AS $<
|
2017-05-21 22:10:24 +08:00
|
|
|
@mkdir -p $(dir $@)
|
2017-08-12 15:58:53 +08:00
|
|
|
@$(AS) $(ASFLAGS) -c -o $@ $<
|
2017-05-21 21:17:11 +08:00
|
|
|
|
2017-06-02 20:40:03 +08:00
|
|
|
# Depencies
|
|
|
|
DEPS = $(addprefix $(DST_DIR)/, $(addsuffix .d, $(basename $(SRCS))))
|
2017-05-21 23:22:51 +08:00
|
|
|
-include $(DEPS)
|
2017-06-02 20:40:03 +08:00
|
|
|
|
|
|
|
# Dependent AM and libraries
|
|
|
|
.PHONY: $(LIBS) am
|
|
|
|
am:
|
2017-08-12 15:59:26 +08:00
|
|
|
@$(MAKE) -C $(AM_HOME)
|
2017-08-12 15:55:44 +08:00
|
|
|
$(sort $(LIBS)): %:
|
2017-08-12 15:59:26 +08:00
|
|
|
@$(MAKE) -C $(AM_HOME)/libs/$*
|