forked from 0xGlitchbyte/TinyNightmare64
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGNUmakefile
103 lines (75 loc) · 3.55 KB
/
GNUmakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
################################################################
# THIS MAKEFILE IS MEANT FOR THE N64 SDK FOR LINUX #
# BY CRASHOVERIDE. IF USING Partner-N64 SDK PLEASE #
# USE THE OTHER makefile!!!!!!!!!!!!!!!!!!!!!!!!!! #
################################################################
################################################################
# Code files and ROM name #
################################################################
ASMFILES = asm/entry.s asm/rom_header.s
ASMOBJECTS = $(ASMFILES:.s=.o)
CODECFILES = nuboot.c main.c graphic.c helper.c stage00.c sausage64.c
CODEHFILES =
DEBUGFILES =
ELF = sausage.elf
TARGETS = sausage.z64
MAP = sausage.map
LD_SCRIPT = sausage.ld
CP_LD_SCRIPT = sausage_cp.ld
################################################################
# Nusys Config #
################################################################
NUSYSINC = /usr/include/n64/nusys
NUSYSLIB = /usr/lib/n64/nusys
#NUOBJ = $(NUSYSLIB)/nusys_rom.o
################################################################
# Make Commands #
################################################################
default: $(TARGETS)
################################################################
# Don't touch below unless you know what you're doing! #
################################################################
include $(N64_ROOT)/usr/include/make/PRdefs
BOOT = /usr/lib/n64/PR/bootcode/boot.6102
BOOT_OBJ = boot.6102.o
CODESEGMENT = codesegment.o
OBJECTS = $(ASMOBJECTS) $(BOOT_OBJ) $(CODESEGMENT)
################################################################
# ROM debug mode check #
################################################################
ifeq ($(DEBUG_MODE), 0)
CODEOBJECTS = $(CODECFILES:.c=.o) $(NUOBJ)
OPTIMIZER = -O2
LCDEFS = -D_FINALROM -DNDEBUG -DF3DEX_GBI_2
N64LIB = -lnusys -lultra_rom
MAKEROMFLAGS =
else
CODEOBJECTS = $(CODECFILES:.c=.o) $(NUOBJ) $(DEBUGFILES:.c=.o)
OPTIMIZER = -g
LCDEFS = -DDEBUG -DF3DEX_GBI_2
N64LIB = -lnusys_d -lultra_d
MAKEROMFLAGS = -d
endif
################################################################
# Linker Settings #
################################################################
LCINCS = -I. -I$(N64_ROOT)/usr/include/PR -I $(N64_ROOT)/usr/include -I$(NUSYSINC) -I $(N64_ROOT)/usr/include/nustd
LCOPTS = -G 0
LDIRT = $(ELF) $(CP_LD_SCRIPT) $(TARGETS) $(MAP) $(ASMOBJECTS)
LDFLAGS= $(MKDEPOPT) -L$(N64_ROOT)/usr/lib -L$(N64_ROOT)/usr/lib/PR -L$(NUSYSLIB) $(N64LIB) -L$(N64_LIBGCCDIR) -lgcc -lnustd
################################################################
# Compilation #
################################################################
include $(COMMONRULES)
.s.o:
$(AS) -Wa,-Iasm -o $@ $<
$(CODESEGMENT): $(CODEOBJECTS)
$(LD) -o $(CODESEGMENT) -r $(CODEOBJECTS) $(LDFLAGS)
$(BOOT_OBJ): $(BOOT)
$(OBJCOPY) -I binary -B mips -O elf32-bigmips $< $@
$(CP_LD_SCRIPT): $(LD_SCRIPT)
cpp -P -Wno-trigraphs -I$(NUSYSINC) -o $@ $<
$(TARGETS): $(OBJECTS) $(CP_LD_SCRIPT)
$(LD) -L. -T $(CP_LD_SCRIPT) -Map $(MAP) -o $(ELF)
$(OBJCOPY) --pad-to=0x100000 --gap-fill=0xFF $(ELF) $(TARGETS) -O binary
makemask $(TARGETS)