-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
70 lines (54 loc) · 1.85 KB
/
Copy pathMakefile
File metadata and controls
70 lines (54 loc) · 1.85 KB
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
# Tools
CA65 = ca65
LD65 = ld65
AR65 = ar65
# Project Configuration
BASE_DIR = 6502_SOFTWARE
LIB_DIR = $(BASE_DIR)/LIB
SHELL_DIR = $(BASE_DIR)/SHELL
SHELL_BIN_DIR = $(SHELL_DIR)/bin
CONFIG = $(BASE_DIR)/eater.cfg
# Output the library to the LIB directory so build.sh finds it
LIB_NAME = $(LIB_DIR)/network.lib
# Flags
# -I . : Current directory
# -I $(BASE_DIR) : For network.inc
# -I $(SHELL_DIR): For wozmon.s (if included by bios) and shell includes
CA65_FLAGS = --cpu 65C02 -I . -I $(BASE_DIR) -I $(SHELL_DIR) -I $(SHELL_DIR)/builtins
# Library Sources
LIB_SOURCES = $(LIB_DIR)/net_init.s $(LIB_DIR)/net_io.s $(LIB_DIR)/net_utils.s
LIB_OBJECTS = $(LIB_SOURCES:.s=.o)
# BIOS Sources
BIOS_SOURCE = $(BASE_DIR)/bios.s
BIOS_OBJECT = $(BASE_DIR)/bios.o
# Shell Sources
SHELL_SOURCE = $(SHELL_DIR)/cmd_shell.s
SHELL_OBJECT = $(SHELL_DIR)/cmd_shell.o
SHELL_BIN = $(SHELL_BIN_DIR)/cmd_shell.bin
# Targets
.PHONY: all clean network.lib
all: $(SHELL_BIN_DIR) $(LIB_NAME) $(SHELL_BIN)
# Alias for build.sh which calls 'make network.lib'
network.lib: $(LIB_NAME)
# Create output directory for shell binary
$(SHELL_BIN_DIR):
mkdir -p $(SHELL_BIN_DIR)
# Build the Static Library
$(LIB_NAME): $(LIB_OBJECTS)
$(AR65) a $@ $^
# Assemble Library Files
$(LIB_DIR)/%.o: $(LIB_DIR)/%.s $(BASE_DIR)/network.inc
$(CA65) $(CA65_FLAGS) -o $@ $<
# Assemble BIOS
$(BIOS_OBJECT): $(BIOS_SOURCE) $(SHELL_DIR)/wozmon.s $(BASE_DIR)/network.inc
$(CA65) $(CA65_FLAGS) -o $@ $<
# Assemble Shell
$(SHELL_OBJECT): $(SHELL_SOURCE) $(BASE_DIR)/network.inc
$(CA65) $(CA65_FLAGS) -o $@ $<
# Link Shell Binary
$(SHELL_BIN): $(SHELL_OBJECT) $(BIOS_OBJECT) $(LIB_NAME) $(CONFIG)
$(LD65) -C $(CONFIG) -o $@ -Ln $(SHELL_BIN_DIR)/cmd_shell.lbl $(SHELL_OBJECT) $(LIB_NAME) $(BIOS_OBJECT)
# Clean Build Artifacts
clean:
rm -f $(LIB_OBJECTS) $(LIB_NAME) $(BIOS_OBJECT) $(SHELL_OBJECT)
rm -rf $(SHELL_BIN_DIR)