Created
January 10, 2025 00:43
-
-
Save khlorghaal/4e1d05d379c8d9fbbe238dcbe90fd262 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.DEFAULT_GOAL:= ide | |
PLATFORM= x11 | |
CC= clang -std=c20 $(flags) | |
CX= clang++ -std=c++23 $(flags) | |
flags:= \ | |
-Wno-parentheses -Wno-deprecated-declarations -Wno-microsoft-template -Wno-ambiguous-reversed-operator -Wno-string-compare \ | |
-Werror=return-stack-address -Werror=uninitialized\ | |
-I"deps/gl3w" -I"deps/glfw/include/GLFW"\ | |
-ferror-limit=1 | |
#-fcaret-diagnostics-max-lines=4 -ftemplate-backtrace-limit=2\ | |
flags_dbg:= -O0 -ggdb3 -fsanitize=address | |
flags_rls:= -O3 -gmlt | |
linkage:= -fuse-ld=lld -lGL | |
.PRECIOUS: %.a | |
ar= llvm-ar -rc $@ $^ | |
cco= $(CC) -c $< -o $@#objects | |
ccs= $(CC) -S $< -o $@#assemblies | |
cxo= $(CX) -c $< -o $@ | |
cxs= $(CX) -S $< -o $@ | |
glfw_args:= -I"deps/glfw/deps" -D_POSIX_C_SOURCE=200809L | |
glfw_files:= init context platform null_init null_window null_monitor null_joystick input monitor window glx_context vulkan | |
ifeq ($(PLATFORM),x11) | |
glfw_args+= -D_GLFW_X11 | |
glfw_files+= osmesa_context glx_context egl_context x11_init x11_monitor x11_window xkb_unicode linux_joystick posix_module posix_time posix_poll posix_thread | |
endif | |
ifeq ($(PLATFORM),win32) | |
glfw_args+= -D_GLFW_WIN32 | |
glfw_files+= wgl_context glx_context win32_init win32_joystick win32_monitor win32_time win32_tls win32_window | |
endif | |
glfw_srcs:= $(glfw_files:%=deps/glfw/src/%.c) | |
glfw_objs:= $(glfw_files:%=build/dbg/%.o) | |
glfw_asms:= $(glfw_files:%=build/rel/%.s) | |
build/dbg/%.o: deps/glfw/src/%.c | |
$(cco) $(glfw_args) | |
build/dbg/%.s: deps/glfw/src/%.c | |
$(ccs) $(glfw_args) | |
build/dbg/gl3w.o: deps/gl3w/gl3w.c | |
$(cco) | |
build/rel/gl3w.s: deps/gl3w/gl3w.c | |
$(ccs) | |
doots_objs:= \ | |
build/dbg/doot_wrap_std.o \ | |
build/dbg/doot_wrap_os.o | |
doots_asms:= \ | |
build/rls/doot_wrap_std.s \ | |
build/rls/doot_wrap_os.s | |
build/dbg/doot_wrap_std.o: src/doot/wrap_std.cpp | |
$(cxo) | |
build/dbg/doot_wrap_os.o: src/doot/wrap_os.cpp | |
$(cxo) | |
build/rls/doot_wrap_std.s: src/doot/wrap_std.cpp | |
$(cxs) | |
build/rls/doot_wrap_os.s: src/doot/wrap_os.cpp | |
$(cxs) | |
build/dbg/doot.o: src/doot/doot.cpp src/doot/* | |
$(cxo) | |
build/rel/doot.s: src/doot/doot.cpp src/doot/* | |
$(cxs) | |
build/dbg/deps_cln.a: $(doots_objs) $(glfw_objs) build/dbg/gl3w.o | |
$(ar) | |
build/rel/deps_cln.a: $(doots_asms) $(glfw_asms) build/rel/gl3w.s | |
$(ar) | |
build/dbg/deps_srv.a: $(doots_objs); | |
$(ar) | |
build/rel/deps_srv.a: $(doots_asms);#reserved | |
$(ar) | |
tst: flags+=$(flags_dbg) | |
tst: build/dbg/doot.o build/dbg/deps_cln.a build/dbg/deps_srv.a | |
$(CX) $(linkage) -DTEST -DSERVER -DCLIENT $^ src/test.cpp -o build/dbg/test | |
san: tst | |
./build/dbg/test | |
ide: tst | |
gdb ./build/dbg/test -ex run -x gdb.cfg | |
dbg: flags+=$(flags_dbg) | |
dbg: build/dbg/doot.o build/dbg/deps_cln.a build/dbg/deps_srv.a | |
$(CX) $(linkage) -DSERVER $< build/dbg/deps_srv.a src/server/server.cpp -o build/dbg/server | |
$(CX) $(linkage) -DCLIENT $< build/dbg/deps_cln.a src/client/client.cpp -o build/dbg/client | |
rls: flags+=$(flags_rls) | |
rls: build/rls/doot.s build/rls/deps_cln.a build/rls/deps_srv.a | |
$(CX) $(linkage) -DSERVER $< build/rel/deps_srv.a src/server/server.cpp -o build/rel/server | |
$(CX) $(linkage) -DCLIENT $< build/rel/deps_cln.a src/client/client.cpp -o build/rel/client | |
cp -r glsl build/rel/glsl | |
cp -r image build/rel/image | |
cp -r audio build/rel/audio | |
re: clean | |
headerlol: | |
echo "#include <math.h>" | clang++ -e - | clip | |
deploy: | |
rm build/rel/(*.a,*.s,*.o) | |
clean: | |
rm -rdf build/dbg/* | |
rm -rdf build/rel/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment