Permalink
Newer
Older
100644 71 lines (54 sloc) 1.91 KB
Jul 22, 2018
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
17
dir_sysmod := NX_Sysmodules
Jul 22, 2018
18
19
ARCH := -march=armv4t -mtune=arm7tdmi -mthumb -mthumb-interwork
Jul 24, 2018
20
CFLAGS = $(ARCH) -Os -nostdlib -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-inline -fno-builtin -std=gnu11# -Wall
Jul 22, 2018
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
Jul 22, 2018
39
40
.PHONY: clean
41
clean:
Jul 24, 2018
42
@echo "clean ..."
Jul 22, 2018
43
@rm -rf $(dir_build)
44
@rm -rf $(dir_out)
45
@$(MAKE) -C $(dir_sysmod) clean
46
47
$(dir_out)/sysmodules: $(dir_sysmod)
48
@$(MAKE) -C $(dir_sysmod)
Jul 22, 2018
49
50
$(dir_out)/$(name).bin: $(dir_build)/$(name).elf
51
@mkdir -p "$(@D)"
52
@mkdir -p "$(dir_out)/ReiNX/sysmodules"
Aug 4, 2018
53
@mkdir -p "$(dir_out)/ReiNX/patches"
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/
Jul 22, 2018
57
@cp -R $(dir_data)/*.bin $(dir_out)/ReiNX/
Aug 4, 2018
58
@cp -R $(dir_data)/*.rxp $(dir_out)/ReiNX/patches
Jul 22, 2018
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)"
Jul 24, 2018
70
$(CC) $(CFLAGS) -c $< -o $@