From: archshift Date: Mon, 27 Oct 2014 00:08:55 +0000 (-0700) Subject: Get sdmc example building again X-Git-Tag: v0.2.0~80^2 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=746e8e12c16e1ce9e1b6d75c3abf82d59f24fb6a;p=corbenik%2Fctrulib.git Get sdmc example building again --- diff --git a/examples/sdmc/Makefile b/examples/sdmc/Makefile index 197fe4e..9a74360 100644 --- a/examples/sdmc/Makefile +++ b/examples/sdmc/Makefile @@ -1,63 +1,139 @@ -CC = arm-none-eabi-gcc -LINK = arm-none-eabi-ld -AS = arm-none-eabi-as -OBJCOPY = arm-none-eabi-objcopy -CTRULIB = ../libctru -CFLAGS += -Wall -std=c99 -march=armv6 -O3 -I"$(CTRULIB)/include" -I$(DEVKITPRO)/libnds/include -LDFLAGS += --script=ccd00.ld -L"$(DEVKITARM)/arm-none-eabi/lib" -L"$(CTRULIB)/lib" +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") +endif -CFILES = $(wildcard source/*.c) -BINFILES = $(wildcard data/*.bin) -OFILES = $(BINFILES:data/%.bin=build/%.bin.o) -OFILES += $(CFILES:source/%.c=build/%.o) -DFILES = $(CFILES:source/%.c=build/%.d) -SFILES = $(wildcard source/*.s) -OFILES += $(SFILES:source/%.s=build/%.o) -PROJECTNAME = ${shell basename "$(CURDIR)"} -CWD = "$(CURDIR)"" +ifeq ($(strip $(CTRULIB)),) +# THIS IS TEMPORARY - in the future it should be at $(DEVKITPRO)/libctru +$(error "Please set CTRULIB in your environment. export CTRULIB=libctru") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITARM)/3ds_rules #--------------------------------------------------------------------------------- -# canned command sequence for binary data, taken from devkitARM +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# SPECS is the directory containing the important build and link files #--------------------------------------------------------------------------------- -define bin2o - bin2s $< | $(AS) -o $(@) - echo "extern const u8" `(echo $( source/`(echo $(> source/`(echo $(> source/`(echo $( build/$*.d +export DEPSDIR := $(CURDIR)/$(BUILD) -build/%.o: source/%.s - $(CC) $(CFLAGS) -c $< -o $@ - @$(CC) -MM $< > build/$*.d +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) -build/%.bin.o: data/%.bin +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES := $(addsuffix .o,$(BINFILES)) \ + $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(TARGET).3dsx $(TARGET).elf + + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).3dsx : $(OUTPUT).elf +$(OUTPUT).elf : $(OFILES) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o : %.bin +#--------------------------------------------------------------------------------- @echo $(notdir $<) - @$(bin2o) + $(bin2o) +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/examples/sdmc/source/crt0.s b/examples/sdmc/source/crt0.s deleted file mode 100644 index 557c327..0000000 --- a/examples/sdmc/source/crt0.s +++ /dev/null @@ -1,12 +0,0 @@ -.section ".init" -.arm -.align 4 -.global _init -.global _start - -_start: - blx __libc_init_array - blx main - -_init: - bx lr diff --git a/examples/sdmc/source/main.c b/examples/sdmc/source/main.c index cce8d51..68f9b5c 100644 --- a/examples/sdmc/source/main.c +++ b/examples/sdmc/source/main.c @@ -1,11 +1,11 @@ #include <3ds/types.h> #include <3ds/srv.h> -#include <3ds/APT.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/HID.h> -#include <3ds/FS.h> #include <3ds/svc.h> +#include <3ds/gpu/gx.h> +#include <3ds/services/apt.h> +#include <3ds/services/gsp.h> +#include <3ds/services/hid.h> +#include <3ds/services/fs.h> #include "costable.h" u8* gspHeap; @@ -44,7 +44,7 @@ void gspGpuInit() svcControlMemory((u32*)&gspHeap, 0x0, 0x0, 0x2000000, 0x10003, 0x3); //wait until we can write stuff to it - svcWaitSynchronization1(gspEvent, 0x55bcb0); + svcWaitSynchronization(gspEvent, 0x55bcb0); //GSP shared mem : 0x2779F000 gxCmdBuf=(u32*)(0x10002000+0x800+threadID*0x200);