public inbox for newlib-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] Add the needed build system changes in order to compile and create the new libraries for Semihosting Date: Wed, 05 Jul 2017 12:42:00 -0000 [thread overview] Message-ID: <20170705124214.101353.qmail@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=cc142edbe7af2f7d52a80b137ac0ad141408033d commit cc142edbe7af2f7d52a80b137ac0ad141408033d Author: Tamar Christina <tamar.christina@arm.com> Date: Wed Jul 5 13:02:30 2017 +0100 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> Diff: --- libgloss/arm/Makefile.in | 58 ++++++++++++++++++++------ libgloss/arm/coff-rdimon-v2m.specs | 16 +++++++ libgloss/arm/coff-rdimon.specs | 7 ++++ libgloss/arm/elf-aprofile-validation-v2m.specs | 23 ++++++++++ libgloss/arm/elf-aprofile-validation.specs | 5 ++- libgloss/arm/elf-aprofile-ve-v2m.specs | 22 ++++++++++ libgloss/arm/elf-aprofile-ve.specs | 4 +- libgloss/arm/elf-rdimon-v2m.specs | 22 ++++++++++ libgloss/arm/elf-rdimon.specs | 7 ++++ 9 files changed, 147 insertions(+), 17 deletions(-) diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in index 3f87dea..e1bad17 100644 --- a/libgloss/arm/Makefile.in +++ b/libgloss/arm/Makefile.in @@ -29,8 +29,15 @@ MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = MULTISUBDIR = +MULTILIBNAME = MULTIDO = 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 @@ -75,10 +82,12 @@ RDPMON_OBJS = ftruncate.o libcfunc.o syscalls.o trap.o truncate.o _exit.o _kill. RDPMON_SCRIPTS = rdpmon.specs RDPMON_INSTALL = install-rdpmon -RDIMON_CRT0 = rdimon-crt0.o -RDIMON_BSP = librdimon.a +RDIMON_CRT0 = rdimon-crt0${${MULTILIBNAME}}.o +RDIMON_BSP = librdimon${${MULTILIBNAME}}.a 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 CFLAGS = -g @@ -110,6 +119,7 @@ all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON else true; fi; \ else true; fi; \ done + $(MAKE) $(AM_MAKEFLAGS) all-recursive # # here's where we build the test programs for each target @@ -121,33 +131,34 @@ test: crt0.o: crt0.S redboot-crt0.o: redboot-crt0.S 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 - $(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 - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< +rdimon-crt0${${MULTILIBNAME}}.o: crt0.S + $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -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 - $(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 - $(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 - $(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 - $(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 - $(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 - $(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) ${AR} ${ARFLAGS} $@ $^ @@ -161,6 +172,23 @@ $(RDIMON_BSP): $(RDIMON_OBJS) ${AR} ${ARFLAGS} $@ $^ ${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: rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP) @rootpre=`pwd`/; export rootpre; \ @@ -172,6 +200,7 @@ clean mostlyclean: else true; fi; \ else true; fi; \ done + $(MAKE) $(AM_MAKEFLAGS) clean-recursive distclean maintainer-clean realclean: clean rm -f Makefile config.status *~ @@ -187,6 +216,7 @@ install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} $ else true; fi; \ else true; fi; \ done + $(MAKE) $(AM_MAKEFLAGS) install-recursive install-nano: 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 $(SHELL) config.status --recheck + +include $(srcdir)/../multi-build.in \ No newline at end of file diff --git a/libgloss/arm/coff-rdimon-v2m.specs b/libgloss/arm/coff-rdimon-v2m.specs new file mode 100644 index 0000000..c0f723e --- /dev/null +++ b/libgloss/arm/coff-rdimon-v2m.specs @@ -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 + diff --git a/libgloss/arm/coff-rdimon.specs b/libgloss/arm/coff-rdimon.specs index ace5506..89135cf 100644 --- a/libgloss/arm/coff-rdimon.specs +++ b/libgloss/arm/coff-rdimon.specs @@ -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 *link: diff --git a/libgloss/arm/elf-aprofile-validation-v2m.specs b/libgloss/arm/elf-aprofile-validation-v2m.specs new file mode 100644 index 0000000..accef99 --- /dev/null +++ b/libgloss/arm/elf-aprofile-validation-v2m.specs @@ -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} diff --git a/libgloss/arm/elf-aprofile-validation.specs b/libgloss/arm/elf-aprofile-validation.specs index 166a5de..4ef0e95 100644 --- a/libgloss/arm/elf-aprofile-validation.specs +++ b/libgloss/arm/elf-aprofile-validation.specs @@ -1,7 +1,8 @@ -# aem-validation.specs +# aprofile-validation.specs # # 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. diff --git a/libgloss/arm/elf-aprofile-ve-v2m.specs b/libgloss/arm/elf-aprofile-ve-v2m.specs new file mode 100644 index 0000000..75f3802 --- /dev/null +++ b/libgloss/arm/elf-aprofile-ve-v2m.specs @@ -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} diff --git a/libgloss/arm/elf-aprofile-ve.specs b/libgloss/arm/elf-aprofile-ve.specs index d94bb7a..1461b34 100644 --- a/libgloss/arm/elf-aprofile-ve.specs +++ b/libgloss/arm/elf-aprofile-ve.specs @@ -1,7 +1,7 @@ -# aem-ve.specs +# aprofile-ve.specs # # 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. diff --git a/libgloss/arm/elf-rdimon-v2m.specs b/libgloss/arm/elf-rdimon-v2m.specs new file mode 100644 index 0000000..e4f2545 --- /dev/null +++ b/libgloss/arm/elf-rdimon-v2m.specs @@ -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} + diff --git a/libgloss/arm/elf-rdimon.specs b/libgloss/arm/elf-rdimon.specs index c35061f..b4d020d 100644 --- a/libgloss/arm/elf-rdimon.specs +++ b/libgloss/arm/elf-rdimon.specs @@ -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 *rdimon_libc:
reply other threads:[~2017-07-05 12:42 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170705124214.101353.qmail@sourceware.org \ --to=corinna@sourceware.org \ --cc=newlib-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).