92 lines
2.3 KiB
Makefile
92 lines
2.3 KiB
Makefile
UNAME_M := $(shell uname -m)
|
|
|
|
ifeq ($(UNAME_M),x86_64)
|
|
ARCH := ARCHITECTURE_X64
|
|
else ifneq ($(filter $(UNAME_M),i686,i386),)
|
|
ARCH := ARCHITECTURE_X86
|
|
else ifneq ($(filter $(UNAME_M),aarch64 arm64),)
|
|
ARCH := ARCHITECTURE_ARM64
|
|
else ifneq ($(filter $(UNAME_M),armv7l armv6l),)
|
|
ARCH := ARCHITECTURE_ARM32
|
|
endif
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
OS := OS_MACOS
|
|
else ifeq ($(UNAME_S),Linux)
|
|
OS := OS_LINUX
|
|
endif
|
|
|
|
CC = clang
|
|
|
|
ifeq ($(CC),clang)
|
|
COMP := COMPILER_CLANG
|
|
else ifeq ($(CC),gcc)
|
|
COMP := COMPILER_GCC
|
|
endif
|
|
|
|
# printf '\x01\x00' | od -to2 | head -n 1
|
|
|
|
# -ansi -pedantic -pedantic-errors
|
|
CFLAGS = -Wno-long-long -Wall -Wextra \
|
|
-Wincompatible-pointer-types \
|
|
-Wint-conversion -Wimplicit-int-float-conversion -Wformat \
|
|
-Wno-strict-prototypes -Wno-missing-field-initializers \
|
|
-Wno-unused-function -Wno-unused-parameter -Wno-unused-variable \
|
|
-Wno-unused-but-set-variable \
|
|
-fno-show-column
|
|
|
|
ifeq ($(COMP),COMPILER_CLANG)
|
|
CFLAGS += -fno-caret-diagnostics
|
|
else ifeq ($(COMP),COMPILER_GCC)
|
|
CFLAGS += -fno-diagnostics-show-caret
|
|
endif
|
|
|
|
ifeq ($(OS),OS_MACOS)
|
|
FLAGS = -glldb
|
|
INCLUDE = -I./libs/include/
|
|
LIBS = ./libs/lib/arm-macos/libSDL3.a -lm
|
|
FRAMEWORKS = -framework Cocoa -framework IOKit -framework CoreAudio \
|
|
-framework AudioToolbox -framework ForceFeedback \
|
|
-framework Carbon -framework GameController \
|
|
-framework Metal -framework QuartzCore \
|
|
-framework CoreHaptics
|
|
else ifeq ($(OS),OS_LINUX)
|
|
FLAGS = -ggdb -D_POSIX_C_SOURCE=200809L -no-pie -fno-omit-frame-pointer
|
|
INCLUDE = -I./libs/include/
|
|
LIBS = ./libs/lib/x86_64-linux/libSDL3.a -lm -lX11
|
|
FRAMEWORKS =
|
|
endif
|
|
|
|
EXE=handmadehero
|
|
|
|
default: libhandmade $(EXE)
|
|
|
|
libhandmade: handmade.c
|
|
$(CC) $(CFLAGS) $(FLAGS) \
|
|
-D$(ARCH)=1 -D$(OS)=1 -D$(COMP)=1 \
|
|
-fPIC -shared $(INCLUDE) $^ $(LIBS) \
|
|
$(FRAMEWORKS) -o libhandmade.so
|
|
|
|
$(EXE): sdl_handmade.c libhandmade
|
|
$(CC) $(CFLAGS) $(FLAGS) \
|
|
-D$(ARCH)=1 -D$(OS)=1 -D$(COMP)=1 \
|
|
$(INCLUDE) $< $(LIBS) \
|
|
$(FRAMEWORKS) -o $@ $(ifneq $(filter $(OS), OS_MACOS OS_LINUX), \
|
|
/link /FORCE:MULTIPLE)
|
|
|
|
watch:
|
|
@ while true; do \
|
|
inotifywait -q -q -e 'modify' . && clear && make -B; \
|
|
done
|
|
|
|
perf:
|
|
perf record --call-graph dwarf ./$(EXE)
|
|
|
|
run:
|
|
@ clear; ./$(EXE)
|
|
|
|
clean:
|
|
@ rm -rf $(EXE) $(EXE).dSYM libhandmade.so libhandmade.so.dSYM
|