-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
86 lines (63 loc) · 2.21 KB
/
Makefile
File metadata and controls
86 lines (63 loc) · 2.21 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
SOURCEDIR = src
BUILDDIR = obj
OUTDIR = dist
DEPDIR = .deps
AS:=sh4a_nofpueb-elf-gcc
AS_FLAGS:=-gdwarf-5
SDK_DIR?=/sdk
DEPFLAGS=-MT $@ -MMD -MP -MF $(DEPDIR)/$*.d
WARNINGS=-Wall -Wextra -pedantic -Werror -pedantic-errors
INCLUDES=-I$(SDK_DIR)/include #-I$(SOURCEDIR)
DEFINES=
FUNCTION_FLAGS=-flto=auto -ffat-lto-objects -fno-builtin -ffunction-sections -fdata-sections -gdwarf-5 -O2
COMMON_FLAGS=$(FUNCTION_FLAGS) $(INCLUDES) $(WARNINGS) $(DEFINES)
CC:=sh4a_nofpueb-elf-gcc
CC_FLAGS=-std=c23 $(COMMON_FLAGS)
CXX:=sh4a_nofpueb-elf-g++
CXX_FLAGS=-std=c++20 $(COMMON_FLAGS)
LD:=sh4a_nofpueb-elf-g++
LD_FLAGS:=$(FUNCTION_FLAGS) -Wl,--gc-sections
LIBS:=-L$(SDK_DIR) -lsdk
READELF:=sh4a_nofpueb-elf-readelf
OBJCOPY:=sh4a_nofpueb-elf-objcopy
STRIP:=sh4a_nofpueb-elf-strip
APP_ELF := $(OUTDIR)/CPapp.elf
APP_HH3 := $(APP_ELF:.elf=.hh3)
AS_SOURCES:=$(shell find $(SOURCEDIR) -name '*.S')
CC_SOURCES:=$(shell find $(SOURCEDIR) -name '*.c')
CXX_SOURCES:=$(shell find $(SOURCEDIR) -name '*.cpp')
OBJECTS := $(addprefix $(BUILDDIR)/,$(AS_SOURCES:.S=.o)) \
$(addprefix $(BUILDDIR)/,$(CC_SOURCES:.c=.o)) \
$(addprefix $(BUILDDIR)/,$(CXX_SOURCES:.cpp=.o))
NOLTOOBJS := $(foreach obj, $(OBJECTS), $(if $(findstring /nolto/, $(obj)), $(obj)))
DEPFILES := $(OBJECTS:$(BUILDDIR)/%.o=$(DEPDIR)/%.d)
hh3: $(APP_HH3) Makefile
elf: $(APP_ELF) Makefile
all: elf hh3
.DEFAULT_GOAL := all
.SECONDARY: # Prevents intermediate files from being deleted
.NOTPARALLEL: clean
clean:
rm -rf $(BUILDDIR) $(OUTDIR) $(DEPDIR)
%.hh3: %.elf
$(STRIP) -o $@ $^
$(APP_ELF): $(OBJECTS)
@mkdir -p $(dir $@)
$(LD) -Wl,-Map $@.map -o $@ $(LD_FLAGS) $^ $(LIBS)
$(NOLTOOBJS): FUNCTION_FLAGS+=-fno-lto
$(BUILDDIR)/%.o: %.S
@mkdir -p $(dir $@)
$(AS) -c $< -o $@ $(AS_FLAGS)
$(BUILDDIR)/%.o: %.c
@mkdir -p $(dir $@)
@mkdir -p $(dir $(DEPDIR)/$<)
+$(CC) -c $< -o $@ $(CC_FLAGS) $(DEPFLAGS)
$(BUILDDIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@mkdir -p $(dir $(DEPDIR)/$<)
+$(CXX) -c $< -o $@ $(CXX_FLAGS) $(DEPFLAGS)
compile_commands.json:
$(MAKE) $(MAKEFLAGS) clean
bear -- sh -c "$(MAKE) $(MAKEFLAGS) --keep-going all || exit 0"
.PHONY: elf hh3 all clean compile_commands.json
-include $(DEPFILES)