summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-09-02 16:37:51 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-09-02 16:37:51 -0400
commit4d027a94570f63a4a76d80d62bfd9a8d2bd2c290 (patch)
treea839d32f30fa6a894189bc30a9015327286e2788
pke-at: initial commit, builds and runs
-rw-r--r--Makefile56
-rw-r--r--config.mk51
-rw-r--r--src/pke-at.cpp18
3 files changed, 125 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..158ca72
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,56 @@
+# pke-at
+
+PROJ=pke-at
+
+-include config.mk
+
+FLAGS_DEBUG = -O0 -g -DDEBUG
+FLAGS_RELEASE_DEBUG = -O2 -g -DDEBUG
+FLAGS_RELEASE = -O2 -s -DNDEBUG
+BUILD_MODE_FLAGS = $(FLAGS_DEBUG)
+
+define cc-command
+ $(CC) -std=c2x -c -o $@ $(BUILD_MODE_FLAGS) $(CFLAGS) $(INCS) $<
+endef
+
+define cxx-command
+ $(CXX) -std=c++23 -c -o $@ $(BUILD_MODE_FLAGS) $(CXXFLAGS) $(INCS) $<
+endef
+
+.PHONY: default
+default: options .WAIT bin/pke-at
+
+.PHONY: prepare
+prepare: ## Set up the current directory to build
+ mkdir -p bin
+ mkdir -p obj
+
+.PHONY: options
+options: prepare .WAIT
+ @echo "$(PROJ)" build options:
+ @echo "CFLAGS = $(CFLAGS)"
+ @echo "CXXFLAGS = $(CXXFLAGS)"
+ @echo "BUILD_MODE_FLAGS = $(BUILD_MODE_FLAGS)"
+ @echo "LDFLAGS = $(LDFLAGS)"
+ @echo "CC = $(CC)"
+ @echo "CXX = $(CXX)"
+
+obj/%.o : src/%.c | prepare
+ $(cc-command)
+obj/%.o : src/%.cpp | prepare
+ $(cxx-command)
+
+bin/pke-at: ## Builds the pke-at executable
+bin/pke-at: obj/pke-at.o
+ $(CXX) -v -std=c++23 $(BUILD_MODE_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@
+
+.PHONY: clean
+clean:
+ rm -rf bin
+ rm -rf obj
+ rm -rf *.plist
+
+.PHONY: help
+help: ## Prints help for targets with comments
+ @cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..34122a9
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,51 @@
+# version
+PKE_AT_VERSION_MAJ=0
+PKE_AT_VERSION_MIN=1
+PKE_AT_VERSION_BLD=0
+PKE_AT_VERSION=$(PKE_AT_VERSION_MAJ).$(PKE_AT_VERSION_MIN).$(PKE_AT_VERSION_BLD)
+
+# paths
+PREFIX ?= /usr/local
+MANPREFIX = /usr/local
+
+# exes
+PKG_CONFIG = pkg-config
+CMAKE = /usr/bin/cmake
+GLSLC = /usr/bin/glslc
+
+#includes and libs
+# vulkan \
+# glfw3 \
+# glm \
+# libpipewire-0.3 \
+# libspa-0.2 \
+
+USED_STATIC_LIBS = pke
+
+USED_LIBS =
+
+INCS = `$(PKG_CONFIG) --static --cflags $(USED_STATIC_LIBS)`
+
+LIBS = -lm `$(PKG_CONFIG) --static --libs $(USED_STATIC_LIBS)` -lpthread
+
+# flags
+# -fsanitize=address \
+
+SHARED_FLAGS = \
+ -D_DEFAULT_SOURCE \
+ -D_POSIX_C_SOURCE=200809L \
+ -D_PKE_AT_VERSION=\"$(PKE_AT_VERSION)\" \
+ -pedantic \
+ -fPIC \
+ -pthread \
+ -rdynamic \
+ -finstrument-functions \
+
+CFLAGS += -Wall -Wextra $(SHARED_FLAGS)
+CXXFLAGS += -Wall -Wextra $(SHARED_FLAGS)
+CPPFLAGS = $(SHARED_FLAGS)
+LDFLAGS = $(LIBS)
+
+# compiler & linker
+CC ?= /usr/bin/gcc
+CXX ?= /usr/bin/g++
diff --git a/src/pke-at.cpp b/src/pke-at.cpp
new file mode 100644
index 0000000..2e26370
--- /dev/null
+++ b/src/pke-at.cpp
@@ -0,0 +1,18 @@
+
+#include <csignal>
+
+#include <pke/pke.hpp>
+
+void signal_handler(int signal_num) {
+ fprintf(stdout, "Received signal: %d - shutting down\n", signal_num);
+ pkeSettings.isGameRunning = false;
+}
+
+int main(int argc, char *argv[]) {
+ signal(SIGTERM, signal_handler);
+ fprintf(stdout, "PKE_AT ENTERING\n");
+ PkeArgs_Parse(argc, argv);
+ Game_Main({}, argv[0]);
+ fprintf(stdout, "PKE_AT EXITING\n");
+ return 0;
+}