Working toward successful link using aslink

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@21 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2007-02-27 23:59:20 +00:00
parent 954c1d9364
commit 925f45b933
4 changed files with 77 additions and 31 deletions

View File

@ -62,6 +62,8 @@ CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
LDFLAGS = $(ARCHSCRIPT) LDFLAGS = $(ARCHSCRIPT)
EXTRA_LIBS = EXTRA_LIBS =
OBJEXT = .o
LIBEXT = .a LIBEXT = .a
ifeq ("${CONFIG_DEBUG}","y") ifeq ("${CONFIG_DEBUG}","y")

View File

@ -35,26 +35,33 @@
-include $(TOPDIR)/Make.defs -include $(TOPDIR)/Make.defs
MKDEP = $(TOPDIR)/tools/mkdeps.sh MKDEP = $(TOPDIR)/tools/mkdeps.sh
CFLAGS += -I$(TOPDIR)/sched 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) ifeq ($(CONFIG_DEBUG),y)
ASRCS += up_lowputc.S ASRCS += up_lowputc.S
endif endif
AOBJS = $(ASRCS:.S=.o) AOBJS = $(ASRCS:.S=.o)
CSRCS = up_initialize.c up_initialstate.c up_idle.c up_doirq.c \ 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_irq.c up_syscall.c up_dataabort.c up_prefetchabort.c \
up_undefinedinsn.c up_interruptcontext.c up_timerisr.c \ up_undefinedinsn.c up_interruptcontext.c up_timerisr.c \
up_createstack.c up_usestack.c up_releasestack.c \ up_createstack.c up_usestack.c up_releasestack.c \
up_exit.c up_assert.c up_blocktask.c up_unblocktask.c \ up_exit.c up_assert.c up_blocktask.c up_unblocktask.c \
up_releasepending.c up_reprioritizertr.c up_copystate.c \ up_releasepending.c up_reprioritizertr.c up_copystate.c \
up_schedulesigaction.c up_sigdeliver.c up_serial.c up_schedulesigaction.c up_sigdeliver.c up_serial.c
COBJS = $(CSRCS:.c=.o) COBJS = $(CSRCS:.c=.o)
SRCS = $(ASRCS) $(CSRCS) SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS) 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) all: up_head.o libarch$(LIBEXT)
@ -70,6 +77,25 @@ libarch$(LIBEXT): $(OBJS)
{ echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \ { echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \
done ; ) 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) .depend: Makefile $(SRCS)
$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
touch $@ touch $@

View File

@ -61,6 +61,8 @@ CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
LDFLAGS = $(ARCHSCRIPT) LDFLAGS = $(ARCHSCRIPT)
EXTRA_LIBS = -lc EXTRA_LIBS = -lc
OBJEXT = .o
LIBEXT = .a LIBEXT = .a
ifeq ("${CONFIG_DEBUG}","y") ifeq ("${CONFIG_DEBUG}","y")

View File

@ -35,26 +35,33 @@
-include $(TOPDIR)/Make.defs -include $(TOPDIR)/Make.defs
MKDEP = $(TOPDIR)/tools/mkdeps.sh MKDEP = $(TOPDIR)/tools/mkdeps.sh
CFLAGS += -I$(TOPDIR)/sched CFLAGS += -I$(TOPDIR)/sched
ASRCS = up_setjmp.S ASRCS = up_setjmp.S
AOBJS = $(ASRCS:.S=.o) AOBJS = $(ASRCS:.S=$(OBJEXT))
CSRCS = up_initialize.c up_idle.c up_interruptcontext.c up_initialstate.c \ CSRCS = up_initialize.c up_idle.c up_interruptcontext.c \
up_createstack.c up_usestack.c up_releasestack.c \ up_initialstate.c up_createstack.c up_usestack.c \
up_unblocktask.c up_blocktask.c up_releasepending.c up_reprioritizertr.c \ up_releasestack.c up_unblocktask.c up_blocktask.c \
up_exit.c up_schedulesigaction.c up_allocateheap.c up_devconsole.c up_releasepending.c up_reprioritizertr.c \
COBJS = $(CSRCS:.c=.o) up_exit.c up_schedulesigaction.c up_allocateheap.c \
up_devconsole.c
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS) SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS) 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 $@ $(CC) -c $(CFLAGS) -D__ASSEMBLY__ $< -o $@
$(COBJS) up_head.o: %.o: %.c $(COBJS) up_head$(OBJEXT): %$(OBJEXT): %.c
$(CC) -c $(CFLAGS) $< -o $@ $(CC) -c $(CFLAGS) $< -o $@
libarch$(LIBEXT): $(OBJS) libarch$(LIBEXT): $(OBJS)
@ -63,6 +70,15 @@ libarch$(LIBEXT): $(OBJS)
{ echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \ { echo "$(AR) $@ $obj FAILED!" ; exit 1 ; } ; \
done ; ) 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) .depend: Makefile $(SRCS)
$(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep $(MKDEP) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
touch $@ touch $@
@ -70,10 +86,10 @@ libarch$(LIBEXT): $(OBJS)
depend: .depend depend: .depend
clean: clean:
rm -f libarch$(LIBEXT) *.o *~ rm -f libarch$(LIBEXT) *~
if [ ! -z "$(OBJEXT)" ]; then rm -f *$(OBJEXT); fi
distclean: clean distclean: clean
rm -f Make.dep .depend rm -f Make.dep .depend
-include Make.dep -include Make.dep