This will generally turn off more FPU codegen, even if its using software fallback unless the project/target/platform selects a cpu that has FPU support. This also turns off a few blocks of test code and the upcoming floating point printf if it's not present on the arch. This may break projects that were compiling for say cortex-m0 but expected FPU code to be present. If so it should be pretty easy to override it, but not going to add that yet unless it's necessary.
72 lines
2.0 KiB
Makefile
72 lines
2.0 KiB
Makefile
LOCAL_DIR := $(GET_LOCAL_DIR)
|
|
|
|
MODULE := $(LOCAL_DIR)
|
|
|
|
MODULE_SRCS += $(LOCAL_DIR)/arch.c
|
|
MODULE_SRCS += $(LOCAL_DIR)/asm.S
|
|
MODULE_SRCS += $(LOCAL_DIR)/exceptions.c
|
|
MODULE_SRCS += $(LOCAL_DIR)/exceptions_asm.S
|
|
MODULE_SRCS += $(LOCAL_DIR)/start.S
|
|
MODULE_SRCS += $(LOCAL_DIR)/thread.c
|
|
|
|
GLOBAL_DEFINES += SMP_MAX_CPUS=1
|
|
|
|
# set the default toolchain to microblaze elf and set a #define
|
|
ifndef TOOLCHAIN_PREFIX
|
|
TOOLCHAIN_PREFIX := m68k-elf-
|
|
endif
|
|
|
|
# select the cpu based on flags the platform/target passes in
|
|
M68K_CPU ?= 68040 # default to 040
|
|
|
|
ifeq ($(M68K_CPU),68000)
|
|
ARCH_COMPILEFLAGS := -mcpu=68000
|
|
GLOBAL_DEFINES += WITH_NO_FP=1
|
|
else ifeq ($(M68K_CPU),68010)
|
|
ARCH_COMPILEFLAGS := -mcpu=68010
|
|
GLOBAL_DEFINES += WITH_NO_FP=1
|
|
else ifeq ($(M68K_CPU),68020)
|
|
ARCH_COMPILEFLAGS := -mcpu=68020
|
|
GLOBAL_DEFINES += WITH_NO_FP=1
|
|
else ifeq ($(M68K_CPU),68030)
|
|
ARCH_COMPILEFLAGS := -mcpu=68030
|
|
else ifeq ($(M68K_CPU),68040)
|
|
ARCH_COMPILEFLAGS := -mcpu=68040
|
|
else
|
|
$(error add support for selected cpu $(M68K_CPU))
|
|
endif
|
|
|
|
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(GLOBAL_COMPILEFLAGS) -print-libgcc-file-name)
|
|
$(info LIBGCC = $(LIBGCC))
|
|
|
|
cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`"; \
|
|
then echo "$(2)"; else echo "$(3)"; fi ;)
|
|
|
|
ARCH_OPTFLAGS := -O2
|
|
|
|
KERNEL_BASE ?= $(MEMBASE)
|
|
KERNEL_LOAD_OFFSET ?= 0
|
|
|
|
GLOBAL_DEFINES += MEMBASE=$(MEMBASE)
|
|
GLOBAL_DEFINES += MEMSIZE=$(MEMSIZE)
|
|
GLOBAL_DEFINES += M68K_CPU=$(M68K_CPU)
|
|
GLOBAL_DEFINES += M68K_CPU_$(M68K_CPU)=1
|
|
|
|
# potentially generated files that should be cleaned out with clean make rule
|
|
GENERATED += \
|
|
$(BUILDDIR)/linker.ld
|
|
|
|
# rules for generating the linker
|
|
$(BUILDDIR)/linker.ld: $(LOCAL_DIR)/linker.ld $(wildcard arch/*.ld) linkerscript.phony
|
|
@echo generating $@
|
|
@$(MKDIR)
|
|
$(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@.tmp
|
|
@$(call TESTANDREPLACEFILE,$@.tmp,$@)
|
|
|
|
linkerscript.phony:
|
|
.PHONY: linkerscript.phony
|
|
|
|
LINKER_SCRIPT += $(BUILDDIR)/linker.ld
|
|
|
|
include make/module.mk
|