Shuriken SDK
Overview
The software below as a simple software development environment its aimed at the gamecube and it designed to be a cut down version of devkitpro PPC. Its not as complex as devkitpro nor does it have all the features of devkitpro I had these goals in mind while designing the SDK.
Small footprint
Simple software
To keep things simple its single thread (ie no OS). To keep the dol foot print small the SDK does not support / use c++ code.
Software
Here is SDK a simple small software dev environment for the cube :-) and the pre-compiled example dols are here
Tool chain / IDE setup
The tool chain used for the SDK is SysGCC power pc tool chain and the IDE I use is eclipse to set them both up follow this guide
Makefile
Like devkitpro make is used to create the final elf / dol image however unlike devkitpro I have tried to keep the build system simple only one makefile is used too create the elf / dol. Below is break down of how the makefile works
# build name
PRGNAME = os
This declares the output name of the dol /
bin file to create.
# The name of the output elf
TARGET = $(PRGNAME).elf
This declares output name of the elf image to create.
# header file include path
INCS = -I"./include"
Declares paths to header files to include in the build.
# include list of files to build
-include makeobj.list
makeobj.list holds a list of objects files that need to be created so that the dol / elf image can be created.
# define names for compile, assembler etc
PREFIX := ../powerpc-eabi/bin/powerpc-eabi-
Where to find the tool chain from the current directory ie up on directory ../ then into powerpc-eabi/bin/ all the tool chain binaries start with powerpc-eabi-
# define tools
TOOLS := ./tools/
Directories that contain resources that maybe used during the build process
AS := $(PREFIX)as
CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
AR := $(PREFIX)ar
LD := $(PREFIX)ld
OBJCOPY := $(PREFIX)objcopy
Tool chain tools that are used to compile the dol / elf image
ELF2DOL := $(TOOLS)elf2dol
GCUBE := $(TOOLS)gcube
External tools that maybe used to help build the dol / elf image
MACHDEP = -DGEKKO -mcpu=750 -meabi -mhard-float
CFLAGS = -ggdb -O1 -Wall $(MACHDEP) $(INCS) -nostartfiles
ASFLAGS = $(INCS) -meabi -msdata=eabi
Flags passed to the compile / assembler at build time.
#library include paths
LIB_PATHS = -L../powerpc-eabi/powerpc-eabi/lib -L../powerpc-eabi/lib/gcc/powerpc-eabi/4.8.0
#libs to include
LIBS = -lm -lc -lgcc
libraries used to to compile the object files
#---------------------------------------------------------------------------------
# build the main target
#---------------------------------------------------------------------------------
$(TARGET): $(OBJECT_LIST)
@echo linking ... $(notdir $@)
@$(LD) $^ $(LDFLAGS) $(LIB_PATHS) $(LIBS) -o $@
@echo creating binary image ... $(PRGNAME).bin
@$(OBJCOPY) -O binary $(TARGET) $(PRGNAME).bin
@echo creating dol ... $(PRGNAME).dol
@$(ELF2DOL) $(TARGET) $(PRGNAME).dol
This make rules say make the objects included from the makeobj.list file then link them all together to create an elf image after that create a *.bin and *.dol image from the elf file.