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.

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.