Makfiles: move arch-dependent flags to arch.mk

This commit is contained in:
Yanyan Jiang 2019-03-21 17:57:49 +08:00
parent 035b551944
commit f9ed3158ec
8 changed files with 43 additions and 64 deletions

View File

@ -1,79 +1,34 @@
# Compilation flags
ifeq ($(ISA), riscv32)
CROSS_COMPILE = riscv-none-embed-
endif
ifeq ($(PLATFORM), navy)
NAVY_LIBS = libndl libos libc
INC_DIR += $(addsuffix /include/, $(addprefix $(NAVY_HOME)/libs/, $(NAVY_LIBS)))
endif
AS = $(CROSS_COMPILE)gcc
CC = $(CROSS_COMPILE)gcc
AS = $(CROSS_COMPILE)gcc
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
LD = $(CROSS_COMPILE)ld
OBJDUMP = $(CROSS_COMPILE)objdump
OBJCOPY = $(CROSS_COMPILE)objcopy
READELF = $(CROSS_COMPILE)readelf
ISA_DEF = __ISA_$(shell echo $(ISA) | tr a-z A-Z)__
ISA_DEF = __ISA_$(shell echo $(ISA) | tr a-z A-Z)__
ARCH_DEF = __ARCH_$(shell echo $(ARCH) | tr a-z A-Z | tr - _)
INCLUDES = $(addprefix -I, $(INC_DIR)) -I$(AM_HOME)/am/
INCLUDES += -I$(AM_HOME)/am/include
CFLAGS_COMMON += -O2 -MMD -Wall -Werror -ggdb $(INCLUDES) -D$(ISA_DEF) -D__ISA__=\"$(ISA)\" \
-D__ARCH__=$(ARCH) -D$(ARCH_DEF) \
-fno-asynchronous-unwind-tables -fno-builtin -fno-stack-protector
CFLAGS += -std=gnu11
CXXFLAGS += -std=c++11 -ffreestanding -fno-rtti -fno-exceptions
ASFLAGS += -MMD $(INCLUDES) -D$(ISA_DEF)
ifeq ($(ISA), native)
CFLAGS_COMMON += -fpie
ASFLAGS += -fpie -pie
endif
ifeq ($(ISA), mips32)
CFLAGS_COMMON += -fno-pic -static -fno-delayed-branch -mno-abicalls -march=mips32 -mno-check-zero-division -EL -mno-llsc -mno-imadd -mno-mad
ASFLAGS += -march=mips32 -EL -mno-check-zero-division -O0 -mno-abicalls -fno-pic -fno-delayed-branch
endif
ifeq ($(ISA), x86)
CFLAGS_COMMON += -m32 -fno-pic -fno-omit-frame-pointer -march=i386 -mstringop-strategy=loop -fno-reorder-functions
ASFLAGS += -m32 -fno-pic
endif
ifeq ($(ISA), riscv32)
CFLAGS_COMMON += -fno-pic -static -march=rv32im -mabi=ilp32
ASFLAGS += -march=rv32im -mabi=ilp32 -O0 -fno-pic
endif
ifeq ($(ISA), am_native)
CFLAGS_COMMON += -fno-omit-frame-pointer -fno-reorder-functions
endif
CFLAGS += $(CFLAGS_COMMON)
CXXFLAGS += $(CFLAGS_COMMON)
CFLAGS += -O2 -MMD -Wall -Werror -ggdb $(INCLUDES) -D$(ISA_DEF) -D__ISA__=\"$(ISA)\" \
-D__ARCH__=$(ARCH) -D$(ARCH_DEF) \
-fno-asynchronous-unwind-tables -fno-builtin -fno-stack-protector
# Files to be compiled
OBJS = $(addprefix $(DST_DIR)/, $(addsuffix .o, $(basename $(SRCS))))
# Compilation patterns
$(DST_DIR)/%.o: %.cpp
@echo + CXX $<
@mkdir -p $(dir $@)
@$(CXX) $(CXXFLAGS) -c -o $@ $(realpath $<)
$(DST_DIR)/%.o: %.c
@echo + CC $<
@mkdir -p $(dir $@)
@$(CC) $(CFLAGS) -c -o $@ $(realpath $<)
@mkdir -p $(dir $@) && echo + CC $<
@$(CC) -std=gnu11 $(CFLAGS) -c -o $@ $(realpath $<)
$(DST_DIR)/%.o: %.cpp
@mkdir -p $(dir $@) && echo + CXX $<
@$(CXX) -std=c++11 -ffreestanding -fno-rtti -fno-exceptions $(CXXFLAGS) $(CFLAGS) -c -o $@ $(realpath $<)
$(DST_DIR)/%.o: %.S
@echo + AS $<
@mkdir -p $(dir $@)
@$(AS) $(ASFLAGS) -c -o $@ $(realpath $<)
@mkdir -p $(dir $@) && echo + AS $<
@$(AS) -MMD $(INCLUDES) -D$(ISA_DEF) $(ASFLAGS) -c -o $@ $(realpath $<)
# Depencies
DEPS = $(addprefix $(DST_DIR)/, $(addsuffix .d, $(basename $(SRCS))))

View File

@ -1,4 +1,6 @@
LDFLAGS := -EL
CROSS_COMPILE := mips-linux-gnu-
CFLAGS += -fno-pic -static -fno-delayed-branch -mno-abicalls -march=mips32 -mno-check-zero-division -EL -mno-llsc -mno-imadd -mno-mad
ASFLAGS += -march=mips32 -EL -mno-check-zero-division -O0 -mno-abicalls -fno-pic -fno-delayed-branch
include $(AM_HOME)/am/arch/nemu/nemu.mk

View File

@ -8,6 +8,9 @@ AM_SRCS := native/trm.c \
native/devices/timer.c \
native/devices/video.c \
CFLAGS += -fpie
ASFLAGS += -fpie -pie
image:
@echo + LD "->" $(BINARY)
@g++ -pie -o $(BINARY) -Wl,--start-group $(LINK_FILES) -Wl,--end-group -lSDL2 -lGL -lrt

View File

@ -8,6 +8,10 @@ AM_SRCS := navy/trm.c \
NAVY_MAKEFILE = Makefile.navy
NAVY_MAKEFILE_CONTENT = "NAME = $(NAME)-am\nAPP = $(BINARY_ABS)\nOBJS = $(LINK_FILES)\nLIBS += libndl\ninclude $${NAVY_HOME}/Makefile.app"
NAVY_LIBS = libndl libos libc
INC_DIR += $(addsuffix /include/, $(addprefix $(NAVY_HOME)/libs/, $(NAVY_LIBS)))
image:
@/bin/echo -e $(NAVY_MAKEFILE_CONTENT) > $(NAVY_MAKEFILE)
$(MAKE) install -f $(NAVY_MAKEFILE) ISA=$(ISA)

View File

@ -1,2 +1,6 @@
LDFLAGS := -melf32lriscv
CROSS_COMPILE := riscv-none-embed-
LDFLAGS += -melf32lriscv
CFLAGS += -fno-pic -static -march=rv32im -mabi=ilp32
ASFLAGS += -march=rv32im -mabi=ilp32 -O0 -fno-pic
include $(AM_HOME)/am/arch/nemu/nemu.mk

View File

@ -8,8 +8,12 @@ AM_SRCS := $(ISA)/nemu/trm.c \
nemu-devices/nemu-video.c \
$(ISA)/nemu/boot/start.S
LDFLAGS := -melf32lriscv
LD_SCRIPT := $(AM_HOME)/am/src/$(ISA)/nemu/boot/loader.ld
CROSS_COMPILE := riscv-none-embed-
CFLAGS += -fno-pic -static -march=rv32im -mabi=ilp32
LDFLAGS += -melf32lriscv
ASFLAGS += -march=rv32im -mabi=ilp32 -O0 -fno-pic
LD_SCRIPT := $(AM_HOME)/am/src/$(ISA)/nemu/boot/loader.ld
GEN_READMEMH := $(NOOP_HOME)/tools/readmemh/verilator-readmemh
$(GEN_READMEMH):

View File

@ -1,2 +1,5 @@
LDFLAGS := -melf_i386
CFLAGS += -m32 -fno-pic -fno-omit-frame-pointer -march=i386 -mstringop-strategy=loop -fno-reorder-functions
LDFLAGS += -melf_i386
ASFLAGS += -m32 -fno-pic
include $(AM_HOME)/am/arch/nemu/nemu.mk

View File

@ -12,10 +12,14 @@ AM_SRCS := x86/qemu/trm.c \
x86/qemu/devices/timer.c \
x86/qemu/devices/video.c \
CFLAGS += -m32 -fno-pic -fno-omit-frame-pointer -march=i386
LDFLAGS += -melf_i386
ASFLAGS += -m32 -fno-pic
image:
@make -s -C $(AM_HOME)/am/src/x86/qemu/boot
@echo + LD "->" $(BINARY).o
@ld -melf_i386 -Ttext 0x00100000 -o $(BINARY).o --start-group $(LINK_FILES) --end-group
@$(LD) $(LDFLAGS) -Ttext 0x00100000 -o $(BINARY).o --start-group $(LINK_FILES) --end-group
@echo + CREATE "->" $(BINARY)
@cat $(AM_HOME)/am/src/x86/qemu/boot/mbr $(BINARY).o > $(BINARY)