From 925f45b9338fa08061f35f8ce0f995d24eba9a56 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 27 Feb 2007 23:59:20 +0000 Subject: [PATCH] Working toward successful link using aslink git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@21 42af7a65-404d-4744-a932-0658087f49c3 --- arch/c5471/Make.defs | 2 ++ arch/c5471/src/Makefile | 56 ++++++++++++++++++++++++++++++----------- arch/sim/Make.defs | 2 ++ arch/sim/src/Makefile | 48 +++++++++++++++++++++++------------ 4 files changed, 77 insertions(+), 31 deletions(-) diff --git a/arch/c5471/Make.defs b/arch/c5471/Make.defs index 8f00136708..f75abdad61 100644 --- a/arch/c5471/Make.defs +++ b/arch/c5471/Make.defs @@ -62,6 +62,8 @@ CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \ LDFLAGS = $(ARCHSCRIPT) EXTRA_LIBS = + +OBJEXT = .o LIBEXT = .a ifeq ("${CONFIG_DEBUG}","y") diff --git a/arch/c5471/src/Makefile b/arch/c5471/src/Makefile index 57d741aaa5..e2a4dc4ba6 100644 --- a/arch/c5471/src/Makefile +++ b/arch/c5471/src/Makefile @@ -35,26 +35,33 @@ -include $(TOPDIR)/Make.defs -MKDEP = $(TOPDIR)/tools/mkdeps.sh -CFLAGS += -I$(TOPDIR)/sched +MKDEP = $(TOPDIR)/tools/mkdeps.sh +CFLAGS += -I$(TOPDIR)/sched -ASRCS = up_vectors.S up_saveusercontext.S up_fullcontextrestore.S +ASRCS = up_vectors.S up_saveusercontext.S up_fullcontextrestore.S ifeq ($(CONFIG_DEBUG),y) -ASRCS += up_lowputc.S +ASRCS += up_lowputc.S endif -AOBJS = $(ASRCS:.S=.o) +AOBJS = $(ASRCS:.S=.o) -CSRCS = up_initialize.c up_initialstate.c up_idle.c up_doirq.c \ - up_irq.c up_syscall.c up_dataabort.c up_prefetchabort.c \ - up_undefinedinsn.c up_interruptcontext.c up_timerisr.c \ - up_createstack.c up_usestack.c up_releasestack.c \ - up_exit.c up_assert.c up_blocktask.c up_unblocktask.c \ - up_releasepending.c up_reprioritizertr.c up_copystate.c \ - up_schedulesigaction.c up_sigdeliver.c up_serial.c -COBJS = $(CSRCS:.c=.o) +CSRCS = up_initialize.c up_initialstate.c up_idle.c up_doirq.c \ + up_irq.c up_syscall.c up_dataabort.c up_prefetchabort.c \ + up_undefinedinsn.c up_interruptcontext.c up_timerisr.c \ + up_createstack.c up_usestack.c up_releasestack.c \ + up_exit.c up_assert.c up_blocktask.c up_unblocktask.c \ + up_releasepending.c up_reprioritizertr.c up_copystate.c \ + up_schedulesigaction.c up_sigdeliver.c up_serial.c +COBJS = $(CSRCS:.c=.o) -SRCS = $(ASRCS) $(CSRCS) -OBJS = $(AOBJS) $(COBJS) +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) + +LINKOBJS = +LINKLIBS = +LDPATHES = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS))) +LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS)))) + +LIBGCC = ${shell $(CC) -print-libgcc-file-name} all: up_head.o libarch$(LIBEXT) @@ -70,6 +77,25 @@ libarch$(LIBEXT): $(OBJS) { echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \ done ; ) +nuttx: + $(LD) --entry=__start $(LDFLAGS) $(LDPATHES) -o $(TOPDIR)/$@ \ + $(addprefix $(TOPDIR)/,$(LINKOBJS)) \ + --start-group $(LDLIBS) $(EXTRA_LIBS) $(LIBGCC) --end-group + @$(NM) $(TOPDIR)/$@ | \ + grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ + sort > $(TOPDIR)/System.map + @export vflashstart=`$(OBJDUMP) --all-headers $(TOPDIR)/$@ | grep _vflashstart | cut -d' ' -f1`; \ + if [ ! -z "$$vflashstart" ]; then \ + $(OBJCOPY) --adjust-section-vma=.vector=0x$$vflashstart $(TOPDIR)/$@ $(TOPDIR)/$@.flashimage; \ + mv $(TOPDIR)/$@.flashimage $(TOPDIR)/$@; \ + fi +ifeq ($(CONFIG_RRLOAD_BINARY),y) + @$(TOPDIR)/tools/mkimage.sh $(TOPDIR)/$@ $(TOPDIR)/$@.rr + @if [ -w /tftpboot ] ; then \ + cp -f $(TOPDIR)/$@.rr /tftpboot/$@.rr.${CONFIG_ARCH}; \ + fi +endif + .depend: Makefile $(SRCS) $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep touch $@ diff --git a/arch/sim/Make.defs b/arch/sim/Make.defs index 19c2b5db6b..da5b1ba480 100644 --- a/arch/sim/Make.defs +++ b/arch/sim/Make.defs @@ -61,6 +61,8 @@ CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \ LDFLAGS = $(ARCHSCRIPT) EXTRA_LIBS = -lc + +OBJEXT = .o LIBEXT = .a ifeq ("${CONFIG_DEBUG}","y") diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile index 53b4c6a7ea..cb3f96b73f 100644 --- a/arch/sim/src/Makefile +++ b/arch/sim/src/Makefile @@ -35,26 +35,33 @@ -include $(TOPDIR)/Make.defs -MKDEP = $(TOPDIR)/tools/mkdeps.sh -CFLAGS += -I$(TOPDIR)/sched +MKDEP = $(TOPDIR)/tools/mkdeps.sh +CFLAGS += -I$(TOPDIR)/sched -ASRCS = up_setjmp.S -AOBJS = $(ASRCS:.S=.o) -CSRCS = up_initialize.c up_idle.c up_interruptcontext.c up_initialstate.c \ - up_createstack.c up_usestack.c up_releasestack.c \ - up_unblocktask.c up_blocktask.c up_releasepending.c up_reprioritizertr.c \ - up_exit.c up_schedulesigaction.c up_allocateheap.c up_devconsole.c -COBJS = $(CSRCS:.c=.o) +ASRCS = up_setjmp.S +AOBJS = $(ASRCS:.S=$(OBJEXT)) +CSRCS = up_initialize.c up_idle.c up_interruptcontext.c \ + up_initialstate.c up_createstack.c up_usestack.c \ + up_releasestack.c up_unblocktask.c up_blocktask.c \ + up_releasepending.c up_reprioritizertr.c \ + up_exit.c up_schedulesigaction.c up_allocateheap.c \ + up_devconsole.c +COBJS = $(CSRCS:.c=$(OBJEXT)) -SRCS = $(ASRCS) $(CSRCS) -OBJS = $(AOBJS) $(COBJS) +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) -all: up_head.o libarch$(LIBEXT) +LINKOBJS = +LINKLIBS = +LDPATHES = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS))) +LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS)))) -$(AOBJS): %.o: %.S +all: up_head$(OBJEXT) libarch$(LIBEXT) + +$(AOBJS): %$(OBJEXT): %.S $(CC) -c $(CFLAGS) -D__ASSEMBLY__ $< -o $@ -$(COBJS) up_head.o: %.o: %.c +$(COBJS) up_head$(OBJEXT): %$(OBJEXT): %.c $(CC) -c $(CFLAGS) $< -o $@ libarch$(LIBEXT): $(OBJS) @@ -63,6 +70,15 @@ libarch$(LIBEXT): $(OBJS) { echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \ done ; ) +nuttx: + $(CC) $(LDFLAGS) $(LDPATHES) -o $(TOPDIR)/$@ \ + $(addprefix $(TOPDIR)/,$(LINKOBJS)) \ + -Wl,--start-group $(LDLIBS) $(EXTRA_LIBS) -Wl,--end-group + @$(NM) $(TOPDIR)/$@ | \ + grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ + sort > $(TOPDIR)/System.map + + .depend: Makefile $(SRCS) $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep touch $@ @@ -70,10 +86,10 @@ libarch$(LIBEXT): $(OBJS) depend: .depend clean: - rm -f libarch$(LIBEXT) *.o *~ + rm -f libarch$(LIBEXT) *~ + if [ ! -z "$(OBJEXT)" ]; then rm -f *$(OBJEXT); fi distclean: clean rm -f Make.dep .depend - -include Make.dep