mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-18 23:12:15 +08:00
Add the needed build system changes in order to compile and create the new libraries for Semihosting v2 for ARM.
This uses the new recursive build target in multi-build.in The new spec files are: For AArch32/ARM (m for mixed mode): - rdimon-v2m.specs - aprofile-validation-v2m.specs - aprofile-ve-v2m.specs These spec files will be using the new libraries generated by multi-build.in. Signed-off-by: Tamar Christina <tamar.christina@arm.com>
This commit is contained in:
parent
bfa3bbcf33
commit
cc142edbe7
@ -29,8 +29,15 @@ MULTISRCTOP =
|
|||||||
MULTIBUILDTOP =
|
MULTIBUILDTOP =
|
||||||
MULTIDIRS =
|
MULTIDIRS =
|
||||||
MULTISUBDIR =
|
MULTISUBDIR =
|
||||||
|
MULTILIBNAME =
|
||||||
MULTIDO = true
|
MULTIDO = true
|
||||||
MULTICLEAN = true
|
MULTICLEAN = true
|
||||||
|
MULTI_FLAGS_FOR_TARGET = MULTI_DEFAULT_FLAGS
|
||||||
|
MULTI_DEFAULT_FLAGS = -DSEMIHOST_V2
|
||||||
|
|
||||||
|
MULTIDIRS += semihv2m
|
||||||
|
MULTIDIR_semihv2m_FLAGS = $(MULTI_DEFAULT_FLAGS) -DSEMIHOST_V2_MIXED_MODE
|
||||||
|
MULTIDIR_semihv2m_NAME = -v2m
|
||||||
|
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
||||||
@ -75,10 +82,12 @@ RDPMON_OBJS = ftruncate.o libcfunc.o syscalls.o trap.o truncate.o _exit.o _kill.
|
|||||||
RDPMON_SCRIPTS = rdpmon.specs
|
RDPMON_SCRIPTS = rdpmon.specs
|
||||||
RDPMON_INSTALL = install-rdpmon
|
RDPMON_INSTALL = install-rdpmon
|
||||||
|
|
||||||
RDIMON_CRT0 = rdimon-crt0.o
|
RDIMON_CRT0 = rdimon-crt0${${MULTILIBNAME}}.o
|
||||||
RDIMON_BSP = librdimon.a
|
RDIMON_BSP = librdimon${${MULTILIBNAME}}.a
|
||||||
RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS))
|
RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS))
|
||||||
RDIMON_SCRIPTS = rdimon.specs aprofile-validation.specs aprofile-ve.specs
|
RDIMON_SCRIPTS = rdimon${${MULTILIBNAME}}.specs \
|
||||||
|
aprofile-validation${${MULTILIBNAME}}.specs \
|
||||||
|
aprofile-ve${${MULTILIBNAME}}.specs
|
||||||
RDIMON_INSTALL = install-rdimon
|
RDIMON_INSTALL = install-rdimon
|
||||||
|
|
||||||
CFLAGS = -g
|
CFLAGS = -g
|
||||||
@ -110,6 +119,7 @@ all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON
|
|||||||
else true; fi; \
|
else true; fi; \
|
||||||
else true; fi; \
|
else true; fi; \
|
||||||
done
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
#
|
#
|
||||||
# here's where we build the test programs for each target
|
# here's where we build the test programs for each target
|
||||||
@ -121,33 +131,34 @@ test:
|
|||||||
crt0.o: crt0.S
|
crt0.o: crt0.S
|
||||||
redboot-crt0.o: redboot-crt0.S
|
redboot-crt0.o: redboot-crt0.S
|
||||||
redboot-syscalls.o: redboot-syscalls.c $(srcdir)/../syscall.h
|
redboot-syscalls.o: redboot-syscalls.c $(srcdir)/../syscall.h
|
||||||
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -o $@ -c $<
|
||||||
|
|
||||||
rdpmon-crt0.o: crt0.S
|
rdpmon-crt0.o: crt0.S
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDP_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDP_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-crt0.o: crt0.S
|
rdimon-crt0${${MULTILIBNAME}}.o: crt0.S
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-ftruncate.o: ftruncate.c
|
rdimon-ftruncate.o: ftruncate.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-trap.o: trap.S
|
rdimon-trap.o: trap.S
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-truncate.o: truncate.c
|
rdimon-truncate.o: truncate.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-_exit.o: _exit.c
|
rdimon-_exit.o: _exit.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-_kill.o: _kill.c
|
rdimon-_kill.o: _kill.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-syscalls.o: syscalls.c
|
rdimon-syscalls.o: syscalls.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
rdimon-libcfunc.o: libcfunc.c
|
rdimon-libcfunc.o: libcfunc.c
|
||||||
$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
$(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
|
||||||
|
|
||||||
$(LINUX_BSP): $(LINUX_OBJS)
|
$(LINUX_BSP): $(LINUX_OBJS)
|
||||||
${AR} ${ARFLAGS} $@ $^
|
${AR} ${ARFLAGS} $@ $^
|
||||||
@ -161,6 +172,23 @@ $(RDIMON_BSP): $(RDIMON_OBJS)
|
|||||||
${AR} ${ARFLAGS} $@ $^
|
${AR} ${ARFLAGS} $@ $^
|
||||||
${RANLIB} $@
|
${RANLIB} $@
|
||||||
|
|
||||||
|
# Multilib support.
|
||||||
|
.PHONY: multi-do all-multi clean-multi install-multi
|
||||||
|
|
||||||
|
all-recursive: all-multi
|
||||||
|
clean-recursive: clean-multi
|
||||||
|
install-recursive: install-multi
|
||||||
|
|
||||||
|
# The $(MAKE) comments below are to enable parallel building.
|
||||||
|
all-multi:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) DO=all multi-do
|
||||||
|
|
||||||
|
clean-multi:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) DO=clean multi-do
|
||||||
|
|
||||||
|
install-multi:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) DO=install multi-do
|
||||||
|
|
||||||
clean mostlyclean:
|
clean mostlyclean:
|
||||||
rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP)
|
rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP)
|
||||||
@rootpre=`pwd`/; export rootpre; \
|
@rootpre=`pwd`/; export rootpre; \
|
||||||
@ -172,6 +200,7 @@ clean mostlyclean:
|
|||||||
else true; fi; \
|
else true; fi; \
|
||||||
else true; fi; \
|
else true; fi; \
|
||||||
done
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) clean-recursive
|
||||||
|
|
||||||
distclean maintainer-clean realclean: clean
|
distclean maintainer-clean realclean: clean
|
||||||
rm -f Makefile config.status *~
|
rm -f Makefile config.status *~
|
||||||
@ -187,6 +216,7 @@ install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} $
|
|||||||
else true; fi; \
|
else true; fi; \
|
||||||
else true; fi; \
|
else true; fi; \
|
||||||
done
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) install-recursive
|
||||||
|
|
||||||
install-nano:
|
install-nano:
|
||||||
set -e; for x in ${NANO_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
|
set -e; for x in ${NANO_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
|
||||||
@ -228,3 +258,5 @@ Makefile: Makefile.in config.status @host_makefile_frag_path@
|
|||||||
|
|
||||||
config.status: configure
|
config.status: configure
|
||||||
$(SHELL) config.status --recheck
|
$(SHELL) config.status --recheck
|
||||||
|
|
||||||
|
include $(srcdir)/../multi-build.in
|
16
libgloss/arm/coff-rdimon-v2m.specs
Normal file
16
libgloss/arm/coff-rdimon-v2m.specs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# rdimon-v2m.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch64 baremetal newlib with version 2 of the
|
||||||
|
# AngelAPI semi-hosting. This version is intended for AArch64/AArch32
|
||||||
|
# mixed mode executables and as such uses the HLT trap instructions.
|
||||||
|
#
|
||||||
|
# This version supports extensibility through an extension mechanism.
|
||||||
|
|
||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*link:
|
||||||
|
%(old_link) -lrdimon-v2m
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
rdimon-crt0-v2m%O%s
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
# rdimon.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch64 baremetal newlib with version 2 of the
|
||||||
|
# AngelAPI semi-hosting using the SVC trap instruction.
|
||||||
|
#
|
||||||
|
# This version supports extensibility through an extension mechanism.
|
||||||
|
|
||||||
%rename link old_link
|
%rename link old_link
|
||||||
|
|
||||||
*link:
|
*link:
|
||||||
|
23
libgloss/arm/elf-aprofile-validation-v2m.specs
Normal file
23
libgloss/arm/elf-aprofile-validation-v2m.specs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# aprofile-validation-v2m.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch32 A profile baremetal newlib, libgloss on
|
||||||
|
# VALIDATION platform with AngelAPI semi-hosting version 2 using the HLT
|
||||||
|
# trap instruction.
|
||||||
|
#
|
||||||
|
# This Spec file is also appropriate for the foundation model.
|
||||||
|
|
||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*link:
|
||||||
|
--defsym=_rdimon_vector_base=0x00000000 -Ttext-segment=0x00010000 %(old_link)
|
||||||
|
|
||||||
|
%rename lib libc
|
||||||
|
|
||||||
|
*libgloss:
|
||||||
|
-lrdimon-v2m
|
||||||
|
|
||||||
|
*lib:
|
||||||
|
cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
|
@ -1,7 +1,8 @@
|
|||||||
# aem-validation.specs
|
# aprofile-validation.specs
|
||||||
#
|
#
|
||||||
# Spec file for AArch32 A profile baremetal newlib, libgloss on
|
# Spec file for AArch32 A profile baremetal newlib, libgloss on
|
||||||
# VALIDATION platform with AngelAPI semi-hosting.
|
# VALIDATION platform with AngelAPI semi-hosting version 2 using the SVC
|
||||||
|
# trap instruction.
|
||||||
#
|
#
|
||||||
# This Spec file is also appropriate for the foundation model.
|
# This Spec file is also appropriate for the foundation model.
|
||||||
|
|
||||||
|
22
libgloss/arm/elf-aprofile-ve-v2m.specs
Normal file
22
libgloss/arm/elf-aprofile-ve-v2m.specs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# aprofile-ve-v2m.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI
|
||||||
|
# semi-hosting version 2 using the HLT trap instruction.
|
||||||
|
#
|
||||||
|
# This Spec file is also appropriate for the foundation model.
|
||||||
|
|
||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*link:
|
||||||
|
--defsym=_rdimon_vector_base=0x80000000 -Ttext-segment=0x80010000 %(old_link)
|
||||||
|
|
||||||
|
%rename lib libc
|
||||||
|
|
||||||
|
*libgloss:
|
||||||
|
-lrdimon-v2m
|
||||||
|
|
||||||
|
*lib:
|
||||||
|
cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
|
@ -1,7 +1,7 @@
|
|||||||
# aem-ve.specs
|
# aprofile-ve.specs
|
||||||
#
|
#
|
||||||
# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI
|
# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI
|
||||||
# semi-hosting.
|
# semi-hosting version 2 using the SVC trap instruction.
|
||||||
#
|
#
|
||||||
# This Spec file is also appropriate for the foundation model.
|
# This Spec file is also appropriate for the foundation model.
|
||||||
|
|
||||||
|
22
libgloss/arm/elf-rdimon-v2m.specs
Normal file
22
libgloss/arm/elf-rdimon-v2m.specs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# rdimon-v2m.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch64 baremetal newlib with version 2 of the
|
||||||
|
# AngelAPI semi-hosting. This version is intended for AArch64/AArch32
|
||||||
|
# mixed mode executables and as such uses the HLT trap instruction.
|
||||||
|
#
|
||||||
|
# This version supports extensibility through an extension mechanism.
|
||||||
|
|
||||||
|
%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence
|
||||||
|
|
||||||
|
*rdimon_libc:
|
||||||
|
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
|
||||||
|
|
||||||
|
*rdimon_libgloss:
|
||||||
|
%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano}
|
||||||
|
|
||||||
|
*link_gcc_c_sequence:
|
||||||
|
%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
# rdimon.specs
|
||||||
|
#
|
||||||
|
# Spec file for AArch64 baremetal newlib with version 2 of the
|
||||||
|
# AngelAPI semi-hosting using the SVC trap instruction.
|
||||||
|
#
|
||||||
|
# This version supports extensibility through an extension mechanism.
|
||||||
|
|
||||||
%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence
|
%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence
|
||||||
|
|
||||||
*rdimon_libc:
|
*rdimon_libc:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user