forked from gameblabla/llama2c_Dreamcast
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.dreamcast
80 lines (62 loc) · 2.34 KB
/
Makefile.dreamcast
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
# Compiler Definitions
CC = kos-cc
CXX = kos-c++
# Compiler Flags
CFLAGS += -DLSB_FIRST -DALIGN_DWORD -DDREAMCAST -DNOMUTEX -Ofast -std=gnu11 -flto
CFLAGS += -Isrc -Isrc/dc
CXXFLAGS = $(CFLAGS) -std=gnu17 -fno-exceptions -fno-rtti
# Linker Flags
LDFLAGS = -lc -lm -lSDL -lz -s -flto -Wl,--as-needed -Wl,--gc-sections
# Output Executable
OUTPUT = llama_dc.elf
# Source Directories
SRCDIR = ./src ./src/dc
VPATH = $(SRCDIR)
# Source Files
SRC_C = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c))
SRC_CP = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.cpp))
# Object Files
OBJ_C = $(notdir $(patsubst %.c, %.o, $(SRC_C)))
OBJ_CP = $(notdir $(patsubst %.cpp, %.o, $(SRC_CP)))
OBJS = $(OBJ_C) $(OBJ_CP)
# Assembly Files
ASM_S = $(patsubst %.c, %.s, $(SRC_C)) $(patsubst %.cpp, %.s, $(SRC_CP))
# Assembly Generation Flags for C and C++ (Lower Optimization, No LTO)
ASFLAGS_C = -O0 -std=gnu11 -S
ASFLAGS_CPP = -O0 -std=gnu17 -S -fno-exceptions -fno-rtti
# Default Target
all: $(OUTPUT) asm
# Linking the Final Executable
$(OUTPUT): $(OBJS)
$(CXX) $(CXXFLAGS) -o $(OUTPUT) $(OBJS) $(LDFLAGS)
# Pattern Rule to Compile C Source Files to Object Files
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# Pattern Rule to Compile C++ Source Files to Object Files
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# Pattern Rules to Generate Assembly Files from C and C++ Source Files
%.s: %.c
$(CC) $(CFLAGS) $(ASFLAGS_C) $< -o $@
%.s: %.cpp
$(CXX) $(CXXFLAGS) $(ASFLAGS_CPP) $< -o $@
# Target to Generate All Assembly Files
asm: $(ASM_S)
# Packaging Targets
pack_unused_cdda:
rm -f IP.BIN
sh-elf-objcopy -R .stack -O binary $(OUTPUT) main.bin
${KOS_BASE}/utils/scramble/scramble main.bin ./cd/1ST_READ.BIN
makeip ip.txt IP.BIN
mkisofs -C 0,$(shell lbacalc track1.raw track2.raw track3.raw) -V OVERHEATED -G IP.BIN -joliet -rock -l -o "llama.iso" ./cd
mds4dc -c llama.mds llama.iso track1.raw track2.raw track3.raw
pack:
rm -f IP.BIN
sh-elf-objcopy -R .stack -O binary $(OUTPUT) main.bin
${KOS_BASE}/utils/scramble/scramble main.bin ./cd/1ST_READ.BIN
makeip ip.txt IP.BIN
mkisofs -V llama -G IP.BIN -joliet -rock -l -x cd -o "llama.iso" ./cd
cdi4dc llama.iso llama.cdi -d
# Clean Target to Remove Generated Files
clean:
rm -f *.o *.img src/*.o src/sdl/*.o src/dc/*.o src/enemies/*.o $(OUTPUT) *.BIN *.iso *.mds *.mdf *.s