Add option USE_LIBGCC to link agains libgcc instead of liba softfloat implementation.

This commit is contained in:
Damien Nicolet
2017-12-22 22:19:55 +01:00
committed by LeaNumworks
parent f0c06a0405
commit a4abd5e34c
4 changed files with 146 additions and 3 deletions

View File

@@ -24,7 +24,11 @@ ifeq ($(USE_LIBA),0)
include liba/Makefile.bridge
else
SFLAGS += -ffreestanding -nostdinc -nostdlib
ifneq ($(USE_LIBGCC),0)
include liba/Makefile.libgcc
else
include liba/Makefile
endif
include libaxx/Makefile
endif
include ion/Makefile

View File

@@ -23,7 +23,7 @@ products += $(patsubst %.$(EXE),%.map,$(filter %.$(EXE),$(products)))
%.map: %.elf
@echo "LDMAP $@"
$(Q) $(LD) $^ $(LDFLAGS) -M -Map $@ -o /dev/null
$(Q) $(LD) $^ $(LDFLAGS) -Wl,-M -Wl,-Map=$@ -o /dev/null
.PHONY: %_memory_map
%_memory_map: %.map

View File

@@ -1,6 +1,6 @@
CC = arm-none-eabi-gcc
CXX = arm-none-eabi-g++
LD = arm-none-eabi-ld.bfd
LD = arm-none-eabi-gcc
GDB = arm-none-eabi-gdb
OBJCOPY = arm-none-eabi-objcopy
SIZE = arm-none-eabi-size
@@ -9,6 +9,6 @@ ifeq ($(DEBUG),1)
SFLAGS += -ggdb3
else
SFLAGS += -fdata-sections -ffunction-sections
LDFLAGS += --gc-sections
LDFLAGS += -Wl,--gc-sections
endif
SFLAGS += -mthumb -march=armv7e-m -mfloat-abi=hard -mcpu=cortex-m4 -mfpu=fpv4-sp-d16

139
liba/Makefile.libgcc Normal file
View File

@@ -0,0 +1,139 @@
SFLAGS += -Iliba/include
liba/src/external/sqlite/mem5.o: CFLAGS += -w
objs += $(addprefix liba/src/, \
armv7m/setjmp.o \
armv7m/longjmp.o \
assert.o \
bzero.o \
ctype.o \
errno.o \
fpclassify.o \
fpclassifyf.o \
ieee754.o \
malloc.o \
memcmp.o \
memcpy.o \
memmove.o \
memset.o \
nearbyint.o \
nearbyintf.o \
strcmp.o \
strchr.o \
strlcpy.o \
strlen.o \
external/sqlite/mem5.o \
)
objs += $(addprefix liba/src/external/openbsd/, \
b_exp__D.o \
b_log__D.o \
b_tgamma.o \
e_acosf.o \
e_acoshf.o \
e_asinf.o \
e_atanhf.o \
e_atan2.o \
e_atan2f.o \
e_coshf.o \
e_expf.o \
e_fmod.o \
e_fmodf.o \
e_lgammaf_r.o \
e_log10f.o \
e_log2.o \
e_logf.o \
e_powf.o \
e_rem_pio2f.o \
e_scalb.o \
e_sinhf.o \
e_sqrtf.o \
k_cosf.o \
k_rem_pio2f.o \
k_sinf.o \
k_tanf.o \
s_asinhf.o\
s_atanf.o \
s_ceilf.o \
s_copysignf.o \
s_cosf.o \
s_erf.o \
s_expm1f.o\
s_fabsf.o \
s_floorf.o \
s_frexpf.o \
s_frexp.o \
s_log1pf.o \
s_logb.o \
s_modf.o \
s_modff.o \
s_rint.o \
s_roundf.o \
s_scalbnf.o \
s_signgam.o \
s_sinf.o \
s_tanf.o \
s_tanhf.o \
s_trunc.o \
s_truncf.o \
w_lgammaf.o \
)
objs += $(addprefix liba/src/external/openbsd/, \
e_acos.o \
e_acosh.o \
e_asin.o \
e_atanh.o \
e_cosh.o \
e_exp.o \
e_lgamma_r.o \
e_log.o \
e_log10.o \
e_pow.o \
e_rem_pio2.o \
e_sinh.o \
e_sqrt.o \
k_cos.o \
k_rem_pio2.o \
k_sin.o \
k_tan.o \
s_asinh.o \
s_atan.o \
s_ceil.o \
s_copysign.o \
s_cos.o \
s_expm1.o \
s_fabs.o \
s_floor.o \
s_log1p.o \
s_round.o \
s_scalbn.o \
s_sin.o \
s_tan.o \
s_tanh.o \
w_lgamma.o \
)
liba/src/external/openbsd/%.o: SFLAGS := -Iliba/src/external/openbsd/include $(SFLAGS)
liba/src/external/openbsd/%.o: CFLAGS += -w
tests += $(addprefix liba/test/, \
aeabi.c \
double.c \
ieee754.c \
long.c \
math.c \
setjmp.c \
stddef.c \
stdint.c \
strlcpy.c \
)
# The use of aeabi-rt could be made conditional to an AEABI target.
# In practice we're always using liba on such a target.
objs += $(addprefix liba/src/aeabi-rt/, \
atexit.o \
)
LDFLAGS+=-lgcc