From 24b76da4b087da6be205d0dff7eefd30d879afc8 Mon Sep 17 00:00:00 2001 From: mpabi Date: Thu, 4 Jul 2024 22:07:49 +0000 Subject: [PATCH] makefile fixed, c++ stl working :) --- makefile | 65 +++++++++++++++++++++++++++------------------------- src/main.cpp | 14 +++++++---- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/makefile b/makefile index 0785463..33dcaff 100644 --- a/makefile +++ b/makefile @@ -1,12 +1,12 @@ -PROJ_NAME=hello_world -DEBUG=no -BENCH=no -MULDIV=no +PROJ_NAME = hello_world +DEBUG = yes +BENCH = no +MULDIV = no -SRCS = $(wildcard src/*.c) \ - $(wildcard src/*.cpp) \ - $(wildcard src/*.S) \ - src/stub_stdlib.c +SRCS = $(wildcard src/*.c) \ + $(wildcard src/*.cpp) \ + $(wildcard src/*.S) \ + src/stub_stdlib.c OBJDIR = build @@ -20,46 +20,40 @@ GCC_PACK ?= yes ifeq ($(GCC_PACK),yes) RISCV_NAME ?= riscv32-unknown-elf - RISCV_PATH ?= /home/user/riscv/opt/rv32im/ + RISCV_PATH ?= /home/user/riscv/opt/rv32im/ endif -MABI=ilp32 +MABI = ilp32 MARCH := rv32i_zicsr ifeq ($(MULDIV),yes) - MARCH := $(MARCH)m + MARCH := $(MARCH)m endif -#CFLAGS += -march=$(MARCH) -mabi=$(MABI) -DNDEBUG -#LDFLAGS += -march=$(MARCH) -mabi=$(MABI) - ifeq ($(DEBUG),yes) - CFLAGS += -g3 -O0 +# CFLAGS += -g3 -O0 + CFLAGS += -g3 -gdwarf-3 -O0 -DDEBUG + CXXFLAGS += -g3 -gdwarf-3 -O0 -DDEBUG + LDFLAGS += -g3 -gdwarf-3 endif ifeq ($(DEBUG),no) - CFLAGS += -g -Os + CFLAGS += -g -Os endif ifeq ($(BENCH),yes) - CFLAGS += -fno-inline + CFLAGS += -fno-inline endif ifeq ($(SIFIVE_GCC_PACK),yes) - RISCV_CLIB=$(RISCV_PATH)/$(RISCV_NAME)/lib/$(MARCH)/$(MABI)/ + RISCV_CLIB=$(RISCV_PATH)/$(RISCV_NAME)/lib/$(MARCH)/$(MABI)/ else - RISCV_CLIB=$(RISCV_PATH)/$(RISCV_NAME)/lib/ + RISCV_CLIB=$(RISCV_PATH)/$(RISCV_NAME)/lib/ endif RISCV_OBJCOPY = $(RISCV_PATH)/bin/$(RISCV_NAME)-objcopy RISCV_OBJDUMP = $(RISCV_PATH)/bin/$(RISCV_NAME)-objdump -RISCV_CC=$(RISCV_PATH)/bin/$(RISCV_NAME)-g++ -#RISCV_CC=$(RISCV_PATH)/bin/$(RISCV_NAME)-gcc - -#CFLAGS += -MD -fstrict-volatile-bitfields -fno-strict-aliasing -#LDFLAGS += -nostdlib -lgcc -mcmodel=medany -nostartfiles -ffreestanding -Wl,-Bstatic,-T,$(LDSCRIPT),-Map,$(OBJDIR)/$(PROJ_NAME).map,--print-memory-usage - -#CFLAGS += -march=$(MARCH) -mabi=$(MABI) -DNDEBUG -std=c++11 -fno-pic -ffreestanding -MD -fstrict-volatile-bitfields -fno-strict-aliasing -#LDFLAGS += -march=$(MARCH) -mabi=$(MABI) -lc -lgcc -nostdlib -nostartfiles -mcmodel=medany -ffreestanding -Wl,-Bstatic,-T,$(LDSCRIPT),-Map,$(OBJDIR)/$(PROJ_NAME).map +RISCV_CC = $(RISCV_PATH)/bin/$(RISCV_NAME)-gcc +CXX = $(RISCV_PATH)/bin/$(RISCV_NAME)-g++ CFLAGS += -march=$(MARCH) \ -mabi=$(MABI) \ @@ -68,8 +62,17 @@ CFLAGS += -march=$(MARCH) \ -ffreestanding \ -MD \ -fstrict-volatile-bitfields \ - -fno-strict-aliasing \ - -std=c++11 + -fno-strict-aliasing + +CXXFLAGS += -march=$(MARCH) \ + -mabi=$(MABI) \ + -DNDEBUG \ + -fno-pic \ + -ffreestanding \ + -MD \ + -fstrict-volatile-bitfields \ + -fno-strict-aliasing \ + -std=c++11 LDFLAGS += -march=$(MARCH) \ -mabi=$(MABI) \ @@ -90,7 +93,7 @@ OBJS := $(addprefix $(OBJDIR)/,$(OBJS)) all: $(OBJDIR)/$(PROJ_NAME).elf $(OBJDIR)/$(PROJ_NAME).hex $(OBJDIR)/$(PROJ_NAME).asm $(OBJDIR)/$(PROJ_NAME).v $(OBJDIR)/%.elf: $(OBJS) | $(OBJDIR) - $(RISCV_CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBSINC) $(LIBS) + $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LIBSINC) $(LIBS) %.hex: %.elf $(RISCV_OBJCOPY) -O ihex $^ $@ @@ -110,7 +113,7 @@ $(OBJDIR)/%.o: %.c $(OBJDIR)/%.o: %.cpp mkdir -p $(dir $@) - $(RISCV_CC) -c $(CFLAGS) $(INC) -o $@ $^ + $(CXX) -c $(CXXFLAGS) $(INC) -o $@ $^ $(OBJDIR)/%.o: %.S mkdir -p $(dir $@) diff --git a/src/main.cpp b/src/main.cpp index e087ca3..ba584e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -87,19 +87,23 @@ int myfunc(const char *s) void test (std::initializer_list vals) { - char buffer[50]; + int buffer[50]; for (auto p = vals.begin(); p != vals.end(); ++p) { - std::sprintf(buffer, "%d\n", *p); + + int * i = buffer; + *i++ = *p; + // sprintf(buffer, "%d\n", *p); // printf("%s", buffer); } } + int main() { char str[10] = {1,2,3}; - myfunc(str); +/// myfunc(str); // println("hello world arty a7 v1"); @@ -118,7 +122,9 @@ int main() { // Thread 0 while( 1){ char * s = "11111111112222222222"; - ++ile; + + ++ile; + test({1,2,3,4,5}); // len (s); }