summaryrefslogtreecommitdiff
path: root/nuttx/arch
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch')
-rw-r--r--nuttx/arch/c5471/Make.defs2
-rw-r--r--nuttx/arch/c5471/src/Makefile56
-rw-r--r--nuttx/arch/sim/Make.defs2
-rw-r--r--nuttx/arch/sim/src/Makefile48
4 files changed, 77 insertions, 31 deletions
diff --git a/nuttx/arch/c5471/Make.defs b/nuttx/arch/c5471/Make.defs
index 8f0013670..f75abdad6 100644
--- a/nuttx/arch/c5471/Make.defs
+++ b/nuttx/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/nuttx/arch/c5471/src/Makefile b/nuttx/arch/c5471/src/Makefile
index 57d741aaa..e2a4dc4ba 100644
--- a/nuttx/arch/c5471/src/Makefile
+++ b/nuttx/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/nuttx/arch/sim/Make.defs b/nuttx/arch/sim/Make.defs
index 19c2b5db6..da5b1ba48 100644
--- a/nuttx/arch/sim/Make.defs
+++ b/nuttx/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/nuttx/arch/sim/src/Makefile b/nuttx/arch/sim/src/Makefile
index 53b4c6a7e..cb3f96b73 100644
--- a/nuttx/arch/sim/src/Makefile
+++ b/nuttx/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