Permalink
Newer
100644
71 lines (54 sloc)
1.91 KB
1
rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2))
2
3
ifeq ($(strip $(DEVKITARM)),)
4
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
5
endif
6
7
CC = $(DEVKITARM)/bin/arm-none-eabi-gcc
8
LD = $(DEVKITARM)/bin/arm-none-eabi-ld
9
OBJCOPY = $(DEVKITARM)/bin/arm-none-eabi-objcopy
10
11
name := ReiNX
12
13
dir_source := src
14
dir_data := data
15
dir_build := build
16
dir_out := out
20
CFLAGS = $(ARCH) -Os -nostdlib -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-inline -fno-builtin -std=gnu11# -Wall
21
LDFLAGS = $(ARCH) -nostartfiles -lgcc -Wl,--nmagic,--gc-sections
22
23
objects = $(patsubst $(dir_source)/%.s, $(dir_build)/%.o, \
24
$(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \
25
$(call rwildcard, $(dir_source), *.s *.c)))
26
27
define bin2o
28
bin2s $< | $(AS) -o $(@)
29
endef
30
31
.PHONY: all
32
all: sysmod reinx
33
34
.PHONY: sysmod
35
sysmod: $(dir_out)/sysmodules
36
37
.PHONY: reinx
38
reinx: $(dir_out)/$(name).bin
45
@$(MAKE) -C $(dir_sysmod) clean
46
47
$(dir_out)/sysmodules: $(dir_sysmod)
48
@$(MAKE) -C $(dir_sysmod)
49
50
$(dir_out)/$(name).bin: $(dir_build)/$(name).elf
51
@mkdir -p "$(@D)"
52
@mkdir -p "$(dir_out)/ReiNX/sysmodules"
54
@cp $(dir_sysmod)/loader/loader.kip $(dir_out)/ReiNX/sysmodules/
55
@cp $(dir_sysmod)/sm/sm.kip $(dir_out)/ReiNX/sysmodules/
56
@cp $(dir_sysmod)/fs_mitm/fs_mitm.kip $(dir_out)/ReiNX/sysmodules/
59
$(OBJCOPY) -S -O binary $< $@
60
61
$(dir_build)/$(name).elf: $(objects)
62
$(CC) $(LDFLAGS) -T link.ld $^ -o $@
63
64
$(dir_build)/%.o: $(dir_source)/%.c
65
@mkdir -p "$(@D)"
66
$(CC) $(CFLAGS) -c $< -o $@
67
68
$(dir_build)/%.o: $(dir_source)/%.s
69
@mkdir -p "$(@D)"