1# rezerwar Wii Makefile for GNU Make, modified from the default template Makefile
2#
3#---------------------------------------------------------------------------------
4# Clear the implicit built in rules
5#---------------------------------------------------------------------------------
6.SUFFIXES:
7#---------------------------------------------------------------------------------
8ifeq ($(strip $(DEVKITPPC)),)
9$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
10endif
11
12include $(DEVKITPPC)/wii_rules
13
14#---------------------------------------------------------------------------------
15# TARGET is the name of the output
16# BUILD is the directory where object files & intermediate files will be placed
17# SOURCES is a list of directories containing source code
18# INCLUDES is a list of directories containing extra header files
19#---------------------------------------------------------------------------------
20TARGET		:=	rezerwar
21BUILD		:=	build_wii
22SOURCES		:=	.
23INCLUDES	:=	.
24
25#---------------------------------------------------------------------------------
26# options for code generation
27#---------------------------------------------------------------------------------
28
29CFLAGS	= -g -O2 -Wall $(MACHDEP) $(INCLUDE)
30CXXFLAGS	=	$(CFLAGS)
31LDFLAGS	=	-g $(MACHDEP) -Wl,-Map,$(notdir $@).map
32
33#---------------------------------------------------------------------------------
34# any extra libraries we wish to link with the project
35#---------------------------------------------------------------------------------
36
37LIBS :=	-lSDL_mixer -lsmpeg -lSDL_image -lSDL_net -lSDL -lpng -ljpeg -lz -lwiiuse \
38		-lfat -lbte -lm -lstdc++ -logc -ltremor -lfreetype -lwiikeyboard
39#---------------------------------------------------------------------------------
40# list of directories containing libraries, this must be the top level containing
41# include and lib
42#---------------------------------------------------------------------------------
43LIBDIRS	:= $(CURDIR)
44
45#---------------------------------------------------------------------------------
46# no real need to edit anything past this point unless you need to add additional
47# rules for different file extensions
48#---------------------------------------------------------------------------------
49ifneq ($(BUILD),$(notdir $(CURDIR)))
50#---------------------------------------------------------------------------------
51
52export OUTPUT	:=	$(CURDIR)/$(TARGET)
53export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
54export DEPSDIR	:=	$(CURDIR)/$(BUILD)
55
56#---------------------------------------------------------------------------------
57# automatically build a list of object files for our project
58#---------------------------------------------------------------------------------
59CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
60
61#---------------------------------------------------------------------------------
62# use CXX for linking C++ projects, CC for standard C
63#---------------------------------------------------------------------------------
64ifeq ($(strip $(CPPFILES)),)
65	export LD	:=	$(CC)
66else
67	export LD	:=	$(CXX)
68endif
69
70export OFILES	:=	$(CFILES:.c=.o)
71
72#---------------------------------------------------------------------------------
73# build a list of include paths
74#---------------------------------------------------------------------------------
75export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
76					$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
77					-I$(CURDIR)/$(BUILD) \
78					-I$(LIBOGC_INC) -I$(LIBOGC_INC)/SDL
79
80#---------------------------------------------------------------------------------
81# build a list of library paths
82#---------------------------------------------------------------------------------
83export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
84					-L$(LIBOGC_LIB)
85
86export OUTPUT	:=	$(CURDIR)/$(TARGET)
87.PHONY: $(BUILD) clean
88
89#---------------------------------------------------------------------------------
90$(BUILD):
91	@[ -d $@ ] || mkdir -p $@
92	make -C $(BUILD) -f $(CURDIR)/Makefile
93	mkdir -p wii_final
94	cp $(TARGET).dol wii_final/boot.dol
95	cp -f ../data/wii/* wii_final/
96
97#---------------------------------------------------------------------------------
98clean:
99	rm -rf $(BUILD) $(OUTPUT).elf $(OUTPUT).dol wii_final
100
101#---------------------------------------------------------------------------------
102distclean: clean
103	rm -f Makefile config.h
104#---------------------------------------------------------------------------------
105run:
106	wiiload $(TARGET).dol
107
108
109#---------------------------------------------------------------------------------
110else
111
112DEPENDS	:=	$(OFILES:.o=.d)
113
114#---------------------------------------------------------------------------------
115# main targets
116#---------------------------------------------------------------------------------
117$(OUTPUT).dol: $(OUTPUT).elf
118$(OUTPUT).elf: $(OFILES)
119
120-include $(DEPENDS)
121
122#---------------------------------------------------------------------------------
123endif
124#---------------------------------------------------------------------------------
125