Usermode - C++ support, crtbegin/crtend
authorJohn Hodge <[email protected]>
Sun, 9 Mar 2014 07:45:29 +0000 (15:45 +0800)
committerJohn Hodge <[email protected]>
Sun, 9 Mar 2014 07:45:29 +0000 (15:45 +0800)
Usermode/Applications/Makefile.cfg
Usermode/Applications/Makefile.tpl
Usermode/Libraries/Makefile.cfg
Usermode/Libraries/Makefile.tpl

index a1a0141..ef17a14 100644 (file)
@@ -25,4 +25,7 @@ LDFLAGS += -rpath-link $(OUTPUTDIR)Libs
 # Extra-verbose errors!
 #CFLAGS += -Wall -Wextra -Wwrite-strings -Wshadow -Wswitch-default -Wswitch-enum -Wstrict-overflow=5 -Wfloat-equal -Wundef -Wmissing-declarations -Wlogical-op  -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wsync-nand -Wunused -Wstrict-overflow=5 -Wfloat-equal -Wundef -Wno-endif-labels -Wshadow -Wunsafe-loop-optimizations -Wbad-function-cast -Wc++-compat -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wlogical-op -Waggregate-return -Wstrict-prototypes -Wold-style-definition -Wmissing-declarations -Wnormalized=nfc -Wpacked -Wpadded -Wredundant-decls -Wnested-externs -Winline -Winvalid-pch -Wdisabled-optimization -Woverlength-strings
 
+CRTBEGIN = $(shell $(CC) $(CFLAGS) -print-file-name=crtbegin.o)
+CRTEND = $(shell $(CC) $(CFLAGS) -print-file-name=crtend.o)
+
 DIR = Bin
index 4f9dde5..efcb57d 100644 (file)
@@ -48,7 +48,7 @@ install: $(_BIN)
 $(_BIN): $(OUTPUTDIR)Libs/acess.ld $(OUTPUTDIR)Libs/crt0.o $(_LIBS) $(OBJ)
        @mkdir -p $(dir $(_BIN))
        @echo [LD] -o $@
-       $V$(LD) -g $(LDFLAGS) -o $@ $(OBJ) $(LIBGCC_PATH)
+       $V$(LD) -g $(LDFLAGS) -o $@ $(CRTBEGIN) $(OBJ) $(LIBGCC_PATH) $(CRTEND)
        $V$(DISASM) $(_BIN) > $(_OBJPREFIX)$(BIN).dsm
 
 $(OBJ): $(_OBJPREFIX)%.o: %.c
index d134c85..5920059 100644 (file)
@@ -14,6 +14,7 @@ ifeq ($(ARCHDIR),native)
  else
   LDFLAGS += -Wl,-init,SoMain
   CFLAGS += -fPIC
+  CXXFLAGS += -fPIC
  endif
 else ifneq ($(HOST_ARCH),)
  ASFLAGS += -D ARCHDIR=$(ARCHDIR) -D __ASSEMBLER__=1
@@ -23,10 +24,12 @@ else ifneq ($(HOST_ARCH),)
  else
   LDFLAGS += -Wl,-init,SoMain
   CFLAGS += -fPIC
+  CXXFLAGS += -fPIC
  endif
 else
  CPPFLAGS := -ffreestanding
  CFLAGS   := -fno-stack-protector -fPIC
+ CXXFLAGS   := -fno-stack-protector -fPIC
  LDFLAGS  := -I/Acess/Libs/ld-acess.so -lld-acess `$(CC) -print-libgcc-file-name`
 endif
 LDFLAGS += -g -nostdlib -shared -eSoMain -x --no-undefined -L$(OUTPUTDIR)Libs/
index 00913ce..a99ff14 100644 (file)
@@ -92,6 +92,11 @@ $(_OBJPREFIX)%.o: %.c
        @mkdir -p $(dir $@)
        $V$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< -MMD -MP -MT $@ -MF [email protected]
 
+$(_OBJPREFIX)%.o: %.cc
+       @echo [CXX] -o $@
+       @mkdir -p $(dir $@)
+       $V$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $< -MMD -MP -MT $@ -MF [email protected]
+
 $(_OBJPREFIX)%.ao: %.$(ASSUFFIX)
        @echo [AS] -o $@
        @mkdir -p $(dir $@)

UCC git Repository :: git.ucc.asn.au