1
by Andrew Shadura
Import upstream version 3.1.9 |
1 |
#---------------------------------------------------------------------------------
|
2 |
.SUFFIXES: |
|
3 |
#---------------------------------------------------------------------------------
|
|
4 |
||
5 |
ifeq ($(strip $(DEVKITARM)),)
|
|
6 |
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") |
|
7 |
endif
|
|
8 |
||
9 |
include $(DEVKITARM)/ds_rules
|
|
10 |
||
11 |
#---------------------------------------------------------------------------------
|
|
12 |
# TARGET is the name of the output
|
|
13 |
# BUILD is the directory where object files & intermediate files will be placed
|
|
14 |
# SOURCES is a list of directories containing source code
|
|
15 |
# DATA is a list of directories containing data files
|
|
16 |
# INCLUDES is a list of directories containing header files
|
|
17 |
#---------------------------------------------------------------------------------
|
|
18 |
TARGET := $(shell basename $(CURDIR)) |
|
19 |
BUILD := build |
|
20 |
SOURCES := ../../ |
|
21 |
DATA := data |
|
22 |
INCLUDES := include |
|
23 |
||
24 |
#---------------------------------------------------------------------------------
|
|
25 |
# options for code generation
|
|
26 |
#---------------------------------------------------------------------------------
|
|
27 |
ARCH := -mthumb -mthumb-interwork |
|
28 |
||
29 |
CFLAGS := -Wall -O2\ |
|
30 |
-march=armv5te -mtune=arm946e-s \ |
|
31 |
-fomit-frame-pointer -ffast-math \
|
|
32 |
$(ARCH) |
|
33 |
||
34 |
CFLAGS += $(INCLUDE) -DARM9 |
|
35 |
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions |
|
36 |
||
37 |
ASFLAGS := $(ARCH) -march=armv5te -mtune=arm946e-s |
|
38 |
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) |
|
39 |
||
40 |
#---------------------------------------------------------------------------------
|
|
41 |
# list of directories containing libraries, this must be the top level containing
|
|
42 |
# include and lib
|
|
43 |
#---------------------------------------------------------------------------------
|
|
44 |
LIBDIRS := $(LIBNDS) |
|
45 |
||
46 |
#---------------------------------------------------------------------------------
|
|
47 |
# no real need to edit anything past this point unless you need to add additional
|
|
48 |
# rules for different file extensions
|
|
49 |
#---------------------------------------------------------------------------------
|
|
50 |
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
51 |
#---------------------------------------------------------------------------------
|
|
52 |
||
53 |
export OUTPUT := $(CURDIR)/lib/libz.a |
|
54 |
||
55 |
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ |
|
56 |
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) |
|
57 |
||
58 |
export DEPSDIR := $(CURDIR)/$(BUILD) |
|
59 |
||
60 |
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) |
|
61 |
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) |
|
62 |
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) |
|
63 |
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) |
|
64 |
||
65 |
#---------------------------------------------------------------------------------
|
|
66 |
# use CXX for linking C++ projects, CC for standard C
|
|
67 |
#---------------------------------------------------------------------------------
|
|
68 |
ifeq ($(strip $(CPPFILES)),)
|
|
69 |
#---------------------------------------------------------------------------------
|
|
70 |
export LD := $(CC) |
|
71 |
#---------------------------------------------------------------------------------
|
|
72 |
else
|
|
73 |
#---------------------------------------------------------------------------------
|
|
74 |
export LD := $(CXX) |
|
75 |
#---------------------------------------------------------------------------------
|
|
76 |
endif
|
|
77 |
#---------------------------------------------------------------------------------
|
|
78 |
||
79 |
export OFILES := $(addsuffix .o,$(BINFILES)) \ |
|
80 |
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) |
|
81 |
||
82 |
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ |
|
83 |
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ |
|
84 |
-I$(CURDIR)/$(BUILD) |
|
85 |
||
86 |
.PHONY: $(BUILD) clean all |
|
87 |
||
88 |
#---------------------------------------------------------------------------------
|
|
89 |
all: $(BUILD) |
|
90 |
@[ -d $@ ] || mkdir -p include |
|
91 |
@cp ../../*.h include |
|
92 |
||
93 |
lib: |
|
94 |
@[ -d $@ ] || mkdir -p $@ |
|
95 |
||
96 |
$(BUILD): lib |
|
97 |
@[ -d $@ ] || mkdir -p $@ |
|
98 |
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile |
|
99 |
||
100 |
#---------------------------------------------------------------------------------
|
|
101 |
clean: |
|
102 |
@echo clean ... |
|
103 |
@rm -fr $(BUILD) lib |
|
104 |
||
105 |
#---------------------------------------------------------------------------------
|
|
106 |
else
|
|
107 |
||
108 |
DEPENDS := $(OFILES:.o=.d) |
|
109 |
||
110 |
#---------------------------------------------------------------------------------
|
|
111 |
# main targets
|
|
112 |
#---------------------------------------------------------------------------------
|
|
113 |
$(OUTPUT) : $(OFILES) |
|
114 |
||
115 |
#---------------------------------------------------------------------------------
|
|
116 |
%.bin.o : %.bin |
|
117 |
#---------------------------------------------------------------------------------
|
|
118 |
@echo $(notdir $<) |
|
119 |
@$(bin2o) |
|
120 |
||
121 |
||
122 |
-include $(DEPENDS)
|
|
123 |
||
124 |
#---------------------------------------------------------------------------------------
|
|
125 |
endif
|
|
126 |
#---------------------------------------------------------------------------------------
|