2017-05-21 23:22:51 +08:00
|
|
|
objdest = $(addprefix $(DST_DIR)/, $(addsuffix .o, $(basename $(1))))
|
|
|
|
depdest = $(addprefix $(DST_DIR)/, $(addsuffix .d, $(basename $(1))))
|
|
|
|
|
|
|
|
OBJS = $(call objdest, $(SRCS))
|
|
|
|
DEPS = $(call depdest, $(SRCS))
|
|
|
|
|
2017-05-21 21:17:11 +08:00
|
|
|
ifeq ($(ARCH), mips32-npc)
|
|
|
|
CROSS_COMPILE = mips-linux-gnu-
|
|
|
|
endif
|
|
|
|
# TODO: refactor
|
|
|
|
ifeq ($(ARCH), mips32-minimal)
|
|
|
|
CROSS_COMPILE = mips-linux-gnu-
|
|
|
|
endif
|
|
|
|
|
|
|
|
AS = $(CROSS_COMPILE)gcc
|
|
|
|
CC = $(CROSS_COMPILE)gcc
|
|
|
|
CXX = $(CROSS_COMPILE)g++
|
|
|
|
LD = $(CROSS_COMPILE)ld
|
|
|
|
|
|
|
|
# Basic compilation flags
|
2017-05-21 23:22:51 +08:00
|
|
|
INCLUDES = $(addprefix -I, $(INC_DIR)) -I$(AM_HOME)/am/ -I$(AM_HOME)/am/arch/$(ARCH)/include
|
|
|
|
CFLAGS += -std=gnu99 -O2 -MD -Wall -Werror -ggdb $(INCLUDES)
|
|
|
|
CXXFLAGS += -std=c++11 -O2 -MD -Wall -Werror -ggdb $(INCLUDES)
|
|
|
|
ASFLAGS += -MD $(INCLUDES)
|
2017-05-21 21:17:11 +08:00
|
|
|
|
|
|
|
# Arch-dependent compilation flags
|
|
|
|
ifeq ($(ARCH), mips32-npc)
|
|
|
|
CXX = $(CROSS_COMPILE)g++-5
|
|
|
|
CFLAGS += -MD -fno-pic -static -fno-strict-aliasing -fno-builtin -fno-stack-protector -fno-delayed-branch -mno-abicalls -march=mips32 -mno-check-zero-division -EL
|
|
|
|
CXXFLAGS += -fno-pic -static -fno-strict-aliasing -fno-builtin -fno-stack-protector -fno-delayed-branch -mno-abicalls -march=mips32 -ffreestanding -fno-rtti -fno-exceptions -mno-check-zero-division -EL
|
|
|
|
ASFLAGS += -march=mips32 -EL -MD -mno-check-zero-division -O0 -mno-abicalls -fno-pic -fno-delayed-branch
|
|
|
|
endif
|
|
|
|
ifeq ($(ARCH), mips32-minimal)
|
|
|
|
CXX = $(CROSS_COMPILE)g++-5
|
|
|
|
CFLAGS += -MD -fno-pic -static -fno-strict-aliasing -fno-builtin -fno-stack-protector -fno-delayed-branch -mno-abicalls -march=mips32 -mno-check-zero-division -EL
|
2017-05-30 11:40:00 +08:00
|
|
|
CFLAGS += -mno-llsc -mno-imadd -mno-mad
|
2017-05-21 21:17:11 +08:00
|
|
|
CXXFLAGS += -fno-pic -static -fno-strict-aliasing -fno-builtin -fno-stack-protector -fno-delayed-branch -mno-abicalls -march=mips32 -ffreestanding -fno-rtti -fno-exceptions -mno-check-zero-division -EL
|
|
|
|
ASFLAGS += -march=mips32 -EL -MD -mno-check-zero-division -O0 -mno-abicalls -fno-pic -fno-delayed-branch
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH), x86-qemu)
|
|
|
|
CFLAGS += -m32 -fno-builtin -fno-stack-protector -fno-omit-frame-pointer
|
|
|
|
CXXFLAGS += -m32 -fno-builtin -fno-stack-protector -fno-omit-frame-pointer -ffreestanding -fno-rtti -fno-exceptions
|
|
|
|
ASFLAGS += -m32
|
|
|
|
endif
|
|
|
|
|
2017-05-21 22:10:24 +08:00
|
|
|
# Compilation patterns
|
|
|
|
$(DST_DIR)/%.o: %.cpp
|
|
|
|
@mkdir -p $(dir $@)
|
|
|
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
|
|
|
|
$(DST_DIR)/%.o: %.c
|
|
|
|
@mkdir -p $(dir $@)
|
|
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
|
|
|
|
$(DST_DIR)/%.o: %.S
|
|
|
|
@mkdir -p $(dir $@)
|
|
|
|
$(AS) $(ASFLAGS) -c -o $@ $<
|
2017-05-21 21:17:11 +08:00
|
|
|
|
2017-05-21 23:22:51 +08:00
|
|
|
-include $(DEPS)
|