From 64741f2bccd6817e6236e8776f57c98092ab370c Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 2 Nov 2012 00:22:52 +0000 Subject: [PATCH] Add libsupc++ to sim/cxxtest configuration git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5296 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/src/Makefile | 26 +++++++++++----------- arch/sim/src/Makefile | 51 ++++++++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile index 74be6c18d1f..49a651c4eb2 100644 --- a/arch/arm/src/Makefile +++ b/arch/arm/src/Makefile @@ -100,18 +100,18 @@ $(COBJS): %$(OBJEXT): %.c $(call COMPILE, $<, $@) libarch$(LIBEXT): $(OBJS) - @( for obj in $(OBJS) ; do \ + $(Q) ( for obj in $(OBJS) ; do \ $(call ARCHIVE, $@, $${obj}); \ done ; ) board/libboard$(LIBEXT): - @$(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES) + $(Q) $(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES) nuttx: $(HEAD_OBJ) board/libboard$(LIBEXT) - @echo "LD: nuttx" - @$(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) -o $(NUTTX)$(EXEEXT) $(HEAD_OBJ) $(EXTRA_OBJS) \ + $(Q) echo "LD: nuttx" + $(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) -o $(NUTTX)$(EXEEXT) $(HEAD_OBJ) $(EXTRA_OBJS) \ --start-group $(LDLIBS) -lboard $(EXTRA_LIBS) $(LIBGCC) --end-group - @$(NM) $(NUTTX)$(EXEEXT) | \ + $(Q) $(NM) $(NUTTX)$(EXEEXT) | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ sort > $(TOPDIR)/System.map @@ -121,7 +121,7 @@ nuttx: $(HEAD_OBJ) board/libboard$(LIBEXT) export_head: board/libboard$(LIBEXT) $(HEAD_OBJ) ifneq ($(HEAD_OBJ),) - @if [ -d "$(EXPORT_DIR)/startup" ]; then \ + $(Q) if [ -d "$(EXPORT_DIR)/startup" ]; then \ cp -f $(HEAD_OBJ) "$(EXPORT_DIR)/startup"; \ else \ echo "$(EXPORT_DIR)/startup does not exist"; \ @@ -132,26 +132,26 @@ endif # Dependencies .depend: Makefile chip/Make.defs $(SRCS) - @if [ -e board/Makefile ]; then \ + $(Q) if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \ fi - @$(MKDEP) --dep-path chip --dep-path common --dep-path $(ARCH_SUBDIR) \ + $(Q) $(MKDEP) --dep-path chip --dep-path common --dep-path $(ARCH_SUBDIR) \ $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep - @touch $@ + $(Q) touch $@ depend: .depend clean: - @if [ -e board/Makefile ]; then \ + $(Q) if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \ fi - @rm -f libarch$(LIBEXT) *~ .*.swp + $(Q) rm -f libarch$(LIBEXT) *~ .*.swp $(call CLEAN) distclean: clean - @if [ -e board/Makefile ]; then \ + $(Q) if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" distclean ; \ fi - @rm -f Make.dep .depend + $(Q) rm -f Make.dep .depend -include Make.dep diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile index 43210e37b90..cf8008b16b9 100644 --- a/arch/sim/src/Makefile +++ b/arch/sim/src/Makefile @@ -100,12 +100,17 @@ ifeq ($(CONFIG_SIM_TOUCHSCREEN),y) endif endif +EXTRA_LIBS ?= + ifeq ($(CONFIG_FS_FAT),y) STDLIBS += -lz endif STDLIBS += -lc +LIBGCC := "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}" +GCC_LIBDIR := ${shell dirname $(LIBGCC)} + # Determine which objects are required in the link. The # up_head object normally draws in all that is needed, but # there are a fews that must be included because they @@ -129,7 +134,7 @@ LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS)))) # Add the board-specific library and directory -LDPATHS += -L board +LDPATHS += -L board -L $(GCC_LIBDIR) LDLIBS += -lboard # Make targets begin here @@ -145,13 +150,13 @@ $(COBJS) $(LINKOBJS): %$(OBJEXT): %.c $(call COMPILE, $<, $@) $(HOSTOBJS): %$(OBJEXT): %.c - @echo "CC: $<" - @$(CC) -c $(HOSTCFLAGS) $< -o $@ + $(Q) echo "CC: $<" + $(Q) $(CC) -c $(HOSTCFLAGS) $< -o $@ # The architecture-specific library libarch$(LIBEXT): $(NUTTXOBJS) - @( for obj in $(NUTTXOBJS) ; do \ + $(Q) ( for obj in $(NUTTXOBJS) ; do \ $(call ARCHIVE, $@, $${obj}); \ done ; ) @@ -160,35 +165,35 @@ libarch$(LIBEXT): $(NUTTXOBJS) # that are not hardware-related. board/libboard$(LIBEXT): - @$(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES) + $(Q) $(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES) # A partially linked object containing only NuttX code (no interface to host OS) # Change the names of most symbols that conflict with libc symbols. GNU: - @mkdir ./GNU + $(Q) mkdir ./GNU GNU/Linux-names.dat: GNU nuttx-names.dat - @cp nuttx-names.dat $@ + $(Q) cp nuttx-names.dat $@ Cygwin-names.dat: nuttx-names.dat - @cat $^ | sed -e "s/^/_/g" >$@ + $(Q) cat $^ | sed -e "s/^/_/g" >$@ nuttx.rel : libarch$(LIBEXT) board/libboard$(LIBEXT) $(HOSTOS)-names.dat $(LINKOBJS) - @echo "LD: nuttx.rel" - @$(LD) -r $(LDLINKFLAGS) $(LDPATHS) -o $@ $(REQUIREDOBJS) --start-group $(LDLIBS) $(EXTRA_LIBS) --end-group - @$(OBJCOPY) --redefine-syms=$(HOSTOS)-names.dat $@ + $(Q) echo "LD: nuttx.rel" + $(Q) $(LD) -r $(LDLINKFLAGS) $(LDPATHS) -o $@ $(REQUIREDOBJS) --start-group $(LDLIBS) $(EXTRA_LIBS) --end-group + $(Q) $(OBJCOPY) --redefine-syms=$(HOSTOS)-names.dat $@ # Generate the final NuttX binary by linking the host-specific objects with the NuttX # specific objects (with munged names) nuttx$(EXEEXT): cleanrel nuttx.rel $(HOSTOBJS) - @echo "LD: nuttx$(EXEEXT)" - @$(CC) $(CCLINKFLAGS) $(LDPATHS) -o $(TOPDIR)/$@ nuttx.rel $(HOSTOBJS) $(DRVLIB) $(STDLIBS) - @$(NM) $(TOPDIR)/$@ | \ + $(Q) echo "LD: nuttx$(EXEEXT)" + $(Q) $(CC) $(CCLINKFLAGS) $(LDPATHS) -o $(TOPDIR)/$@ nuttx.rel $(HOSTOBJS) $(DRVLIB) $(STDLIBS) + $(Q) $(NM) $(TOPDIR)/$@ | \ grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ sort > $(TOPDIR)/System.map - @rm -f nuttx.rel + $(Q) rm -f nuttx.rel # This is part of the top-level export target @@ -200,26 +205,26 @@ export_head: board/libboard$(LIBEXT) up_head.o $(HOSTOBJS) # Dependencies .depend: Makefile $(SRCS) - @$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep - @touch $@ + $(Q) $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep + $(Q) touch $@ depend: .depend cleanrel: - @rm -f nuttx.rel GNU/Linux-names.dat Cygwin-names.dat + $(Q) rm -f nuttx.rel GNU/Linux-names.dat Cygwin-names.dat clean: cleanrel - @if [ -e board/Makefile ]; then \ + $(Q) if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \ fi - @rm -f nuttx.rel libarch$(LIBEXT) *~ .*.swp + $(Q) rm -f nuttx.rel libarch$(LIBEXT) *~ .*.swp $(call CLEAN) distclean: clean - @if [ -e board/Makefile ]; then \ + $(Q) if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" distclean ; \ fi - @rm -f Make.dep .depend - @rm -rf GNU + $(Q) rm -f Make.dep .depend + $(Q) rm -rf GNU -include Make.dep