forked from ChrisAJS/lgx2userspace
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
106 lines (82 loc) · 2.15 KB
/
Makefile
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
104
105
106
CXX ?= g++
CC ?= gcc
LD := lld
AR := ar
FORMAT := clang-format-11
UNAME := $(shell uname)
UNAMEM := $(shell uname -m)
ASAN ?= 0
DEBUG ?= 1
OPTFLAGS ?= -O0
LTO ?= 0
WARN := \
-Wno-return-type \
-funsigned-char \
-fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-strict-aliasing -fno-inline-functions -fno-inline-small-functions -fno-toplevel-reorder -ffreestanding -fwrapv \
CXXFLAGS := $(WARN) -std=c++20 -D_GNU_SOURCE -fpermissive -no-pie -nostdlib
CFLAGS := $(WARN) -std=c99 -D_GNU_SOURCE -no-pie -nostdlib
LDFLAGS :=
ifeq ($(UNAME), Linux) #LINUX
CXXFLAGS += -mhard-float -msse2 -mfpmath=sse
CFLAGS += -mhard-float -msse2 -mfpmath=sse
endif
CPPFLAGS := -MMD
ifeq ($(UNAME), Linux) #LINUX
TARGET := lgxuserspace.elf
endif
INC_DIRS := $(addprefix -I, \
src \
utils \
Lib/ImGui \
Lib/SDL \
)
ifeq ($(UNAME), Linux) #LINUX
INC_DIRS += $(addprefix -I, \
/opt/X11/include \
)
endif
LDLIBS := \
$(addprefix -l, \
usb-1.0 \
pcap \
)
ifeq ($(UNAME), Linux) #LINUX
LDLIBS += \
$(addprefix -l, \
X11 \
SDL2 \
GL \
GLEW \
pulse-simple \
)
endif
CXX_FILES := \
$(shell find src -type f -name "*.cpp") \
$(shell find Lib/ImGui -type f -name "imgui.cpp") \
$(shell find Lib/ImGui -type f -name "imgui_draw.cpp") \
$(shell find Lib/ImGui -type f -name "imgui_widgets.cpp") \
$(shell find Lib/ImGui -type f -name "imgui_tables.cpp") \
$(shell find Lib/ImGui -type f -name "imgui_internal.cpp") \
$(shell find Lib/ImGui/backends -type f -name "imgui_impl_sdl.cpp") \
$(shell find Lib/ImGui/backends -type f -name "imgui_impl_opengl3.cpp")
C_FILES := \
$(shell find utils -type f -name "*.c")
O_FILES := \
$(C_FILES:%.c=build/%.o) \
$(CXX_FILES:%.cpp=build/%.o)
D_FILES := $(O_FILES:%.o=%.d)
# create build directory
SRC_DIRS := $(shell find . -type d -a -not -path "*build*")
$(shell mkdir -p $(SRC_DIRS:%=build/%))
all:
$(MAKE) $(TARGET)
clean:
rm -rf build $(TARGET)
.PHONY: all clean
build/%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $(OPTFLAGS) $(INC_DIRS) $< -o $@
build/%.o: %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $(OPTFLAGS) $(INC_DIRS) $< -o $@
$(TARGET): $(O_FILES)
$(CXX) $^ -o $@ $(LDFLAGS) $(LDDIRS) $(LDLIBS)
-include $(D_FILES)