Need to add CRT0 to every Makefile in apps/examples/tests

This commit is contained in:
Gregory Nutt 2014-09-05 16:05:29 -06:00
parent a03bd2f1e7
commit 95679676a1
10 changed files with 49 additions and 34 deletions

View File

@ -66,17 +66,17 @@ endif
BIN = errno
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))
@ -85,4 +85,3 @@ clean:
install:
$(Q) mkdir -p $(ROMFS_DIR)
$(Q) install $(BIN) $(ROMFS_DIR)/$(BIN)

View File

@ -66,17 +66,17 @@ endif
BIN = hello
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -72,18 +72,18 @@ endif
ALL_BIN = $(BIN1) $(BIN2) $(BIN3) $(BIN4)
SRCS1 = $(BIN1).c
OBJS1 = $(SRCS1:.c=.o)
OBJS1 = $(SRCS1:.c=$(OBJEXT))
SRCS2 = $(BIN2).c
OBJS2 = $(SRCS2:.c=.o)
OBJS2 = $(SRCS2:.c=$(OBJEXT))
ifeq ($(CONFIG_BINFMT_CONSTRUCTORS),y)
SRCS3 = $(BIN3).c
OBJS3 = $(SRCS3:.c=.o)
OBJS3 = $(SRCS3:.c=$(OBJEXT))
endif
#SRCS4 = $(BIN4).c
#OBJS4 = $(SRCS4:.c=.o)
#OBJS4 = $(SRCS4:.c=$(OBJEXT))
SRCS = $(SRCS1) $(SRCS2) $(SRCS3) $(SRCS4)
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4)
@ -93,7 +93,7 @@ LDLIBSTDC_STUBS_LIB = $(LDLIBSTDC_STUBS_DIR)/liblibxx.a
all: $(BIN1) $(BIN2) $(BIN3) $(BIN4)
$(OBJS): %.o: %.cpp
$(OBJS): %$(OBJEXT): %.cpp
@echo "CC: $<"
$(Q) $(CXX) -c $(CXXELFFLAGS) $< -o $@
@ -110,18 +110,18 @@ $(LDLIBSTDC_STUBS_LIB):
$(BIN1): $(OBJS1)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
$(BIN2): $(OBJS2)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
# BIN3 is equivalent to BIN2 except that is uses static initializers
ifeq ($(CONFIG_BINFMT_CONSTRUCTORS),y)
$(BIN3): $(OBJS3)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
endif
# BIN4 is similar to BIN3 except that it uses the streams code from libstdc++
@ -130,7 +130,7 @@ endif
#
#$(BIN4): $(OBJS4)
# @echo "LD: $<"
# $(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
# $(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN1))

View File

@ -66,17 +66,17 @@ endif
BIN = longjmp
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -66,17 +66,17 @@ endif
BIN = mutex
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -66,17 +66,17 @@ endif
BIN = pthread
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -66,17 +66,17 @@ endif
BIN = signal
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -67,17 +67,17 @@ endif
BIN = struct
SRCS = struct_main.c struct_dummy.c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -66,17 +66,17 @@ endif
BIN = task
SRCS = $(BIN).c
OBJS = $(SRCS:.c=.o)
OBJS = $(SRCS:.c=$(OBJEXT))
all: $(BIN)
$(OBJS): %.o: %.c
$(OBJS): %$(OBJEXT): %.c
@echo "CC: $<"
$(Q) $(CC) -c $(CELFFLAGS) $< -o $@
$(BIN): $(OBJS)
@echo "LD: $<"
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $^ $(LDLIBS)
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) -o $@ $(ARCHCRT0OBJ) $^ $(LDLIBS)
clean:
$(call DELFILE, $(BIN))

View File

@ -155,10 +155,12 @@ ifeq ($(WINTOOL),y)
# Windows-native toolchains
ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include}"
ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include}" -isystem "${shell cygpath -w $(TOPDIR)$(DELIM)include$(DELIM)cxx}"
ARCHCRT0OBJ = "${shell cygpath -w $(TOPDIR)$(DELIM)startup$(DELIM)crt0$(OBJEXT)}"
else
# Linux/Cygwin-native toolchain
ARCHINCLUDES = -I. -isystem $(TOPDIR)$(DELIM)include
ARCHXXINCLUDES = -I. -isystem $(TOPDIR)$(DELIM)include -isystem $(TOPDIR)$(DELIM)include$(DELIM)cxx
ARCHCRT0OBJ = $(TOPDIR)$(DELIM)startup$(DELIM)crt0$(OBJEXT)
endif
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
@ -167,6 +169,11 @@ CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
# ELF module definitions
CELFFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
CXXELFFLAGS = $(CXXFLAGS) -mlong-calls # --target1-abs
# C Pre-processor
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
@ -192,3 +199,12 @@ ifneq ($(LIBGCC),)
LDLIBPATH += -L ${shell dirname $(LIBGCC)}
LDLIBS += -lgcc
endif
# ELF module definitions
LDELFFLAGS = -r -e _start -Bstatic
ifeq ($(WINTOOL),y)
LDELFFLAGS += -T "${shell cygpath -w $(TOPDIR)/scripts/gnu-elf.ld}"
else
LDELFFLAGS += -T $(TOPDIR)/scripts/gnu-elf.ld
endif