|
#--------------------------------------------------------------------------------- |
|
# Clear the implicit built in rules |
|
#--------------------------------------------------------------------------------- |
|
.SUFFIXES: |
|
.SECONDARY: |
|
#--------------------------------------------------------------------------------- |
|
ifeq ($(strip $(DEVKITPPC)),) |
|
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC") |
|
endif |
|
|
|
include $(DEVKITPPC)/wii_rules |
|
|
|
#--------------------------------------------------------------------------------- |
|
# 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 |
|
# INCLUDES is a list of directories containing extra header files |
|
#--------------------------------------------------------------------------------- |
|
TARGET := $(notdir $(CURDIR)) |
|
BUILD := build |
|
SOURCES := . |
|
DATA := |
|
TEXTURES := . |
|
INCLUDES := |
|
|
|
#--------------------------------------------------------------------------------- |
|
# options for code generation |
|
#--------------------------------------------------------------------------------- |
|
|
|
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) |
|
CXXFLAGS = $(CFLAGS) |
|
|
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map |
|
|
|
#--------------------------------------------------------------------------------- |
|
# any extra libraries we wish to link with the project |
|
#--------------------------------------------------------------------------------- |
|
LIBS := -logc -lm |
|
|
|
#--------------------------------------------------------------------------------- |
|
# list of directories containing libraries, this must be the top level containing |
|
# include and lib |
|
#--------------------------------------------------------------------------------- |
|
LIBDIRS := |
|
|
|
#--------------------------------------------------------------------------------- |
|
# no real need to edit anything past this point unless you need to add additional |
|
# rules for different file extensions |
|
#--------------------------------------------------------------------------------- |
|
ifneq ($(BUILD),$(notdir $(CURDIR))) |
|
#--------------------------------------------------------------------------------- |
|
|
|
export OUTPUT := $(CURDIR)/$(TARGET) |
|
|
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ |
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \ |
|
$(foreach dir,$(TEXTURES),$(CURDIR)/$(dir)) |
|
|
|
export DEPSDIR := $(CURDIR)/$(BUILD) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# automatically build a list of object files for our project |
|
#--------------------------------------------------------------------------------- |
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) |
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) |
|
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) |
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) |
|
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) |
|
SCFFILES := $(foreach dir,$(TEXTURES),$(notdir $(wildcard $(dir)/*.scf))) |
|
TPLFILES := $(SCFFILES:.scf=.tpl) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# use CXX for linking C++ projects, CC for standard C |
|
#--------------------------------------------------------------------------------- |
|
ifeq ($(strip $(CPPFILES)),) |
|
export LD := $(CC) |
|
else |
|
export LD := $(CXX) |
|
endif |
|
|
|
export OFILES_BIN := $(addsuffix .o,$(BINFILES)) $(addsuffix .o,$(TPLFILES)) |
|
export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) |
|
export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) |
|
|
|
export HFILES := $(addsuffix .h,$(subst .,_,$(BINFILES))) $(addsuffix .h,$(subst .,_,$(TPLFILES))) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# build a list of include paths |
|
#--------------------------------------------------------------------------------- |
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ |
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ |
|
-I$(CURDIR)/$(BUILD) \ |
|
-I$(LIBOGC_INC) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# build a list of library paths |
|
#--------------------------------------------------------------------------------- |
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ |
|
-L$(LIBOGC_LIB) |
|
|
|
export OUTPUT := $(CURDIR)/$(TARGET) |
|
.PHONY: $(BUILD) clean |
|
|
|
#--------------------------------------------------------------------------------- |
|
$(BUILD): |
|
@[ -d $@ ] || mkdir -p $@ |
|
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile |
|
|
|
#--------------------------------------------------------------------------------- |
|
clean: |
|
@echo clean ... |
|
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol |
|
|
|
#--------------------------------------------------------------------------------- |
|
else |
|
|
|
#--------------------------------------------------------------------------------- |
|
# main targets |
|
#--------------------------------------------------------------------------------- |
|
$(OUTPUT).dol: $(OUTPUT).elf |
|
$(OUTPUT).elf: $(OFILES) |
|
|
|
$(OFILES_SOURCES) : $(HFILES) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# This rule links in binary data with the .bin extension |
|
#--------------------------------------------------------------------------------- |
|
%.bin.o %_bin.h : %.bin |
|
#--------------------------------------------------------------------------------- |
|
@echo $(notdir $<) |
|
@$(bin2o) |
|
|
|
#--------------------------------------------------------------------------------- |
|
%.tpl.o %_tpl.h : %.tpl |
|
#--------------------------------------------------------------------------------- |
|
@echo $(notdir $<) |
|
@$(bin2o) |
|
|
|
|
|
-include $(DEPSDIR)/*.d |
|
|
|
#--------------------------------------------------------------------------------- |
|
endif |
|
#--------------------------------------------------------------------------------- |
|
|
|
#--------------------------------------------------------------------------------- |
|
run: |
|
wiiload $(TARGET).dol |