initial scaffold structure
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
||||
*.d
|
||||
*.o
|
||||
*.a
|
||||
*.lib
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
*.exe
|
||||
*.out
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
obj/
|
||||
bin/
|
||||
@@ -0,0 +1,139 @@
|
||||
.include "config.mk"
|
||||
|
||||
GL_LIB = -lGL
|
||||
LDFLAGS_PLAT = -L/usr/local/lib
|
||||
CFLAGS_PLAT = -I/usr/local/include
|
||||
SKELE_INC =
|
||||
SKELE_LIB =
|
||||
|
||||
CLIENT_BIN = ${GAME_NAME}_client
|
||||
GLCLIENT_BIN = ${GAME_NAME}_glclient
|
||||
SERVER_BIN = ${GAME_NAME}_server
|
||||
|
||||
.if ${LINK_TYPE:Ustatic} == "dynamic"
|
||||
LINK_SKELE = -lskele
|
||||
LINK_GLSKELE = -lglskele
|
||||
LINK_SKELESRV = -lskeleserver
|
||||
LINK_STK = -lstk
|
||||
.else
|
||||
LINK_SKELE = -Wl,-Bstatic -lskele -Wl,-Bdynamic
|
||||
LINK_GLSKELE = -Wl,-Bstatic -lglskele -Wl,-Bdynamic
|
||||
LINK_SKELESRV = -Wl,-Bstatic -lskeleserver -Wl,-Bdynamic
|
||||
LINK_STK = -Wl,-Bstatic -lstk -Wl,-Bdynamic
|
||||
.endif
|
||||
|
||||
CFLAGS_BASE = -Wall -Wpedantic -I${.CURDIR}/${INC_DIR} ${SKELE_INC} \
|
||||
-std=c99 ${CFLAGS_PLAT} ${DEBUG_FLAGS}
|
||||
|
||||
SOFT_CLIENT_SRCS = src/client/main.c
|
||||
GL_CLIENT_SRCS = src/gl_client/main.c
|
||||
SERVER_SRCS = src/server/main.c
|
||||
|
||||
ALL_SOFT_SRCS = ${GAME_SRCS} ${SOFT_CLIENT_SRCS}
|
||||
ALL_GL_SRCS = ${GAME_SRCS} ${GL_CLIENT_SRCS}
|
||||
ALL_SERVER_SRCS = ${GAME_SRCS} ${SERVER_SRCS}
|
||||
|
||||
SOFT_DEBUG_OBJS = ${ALL_SOFT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/soft\//}
|
||||
GL_DEBUG_OBJS = ${ALL_GL_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/gl\//}
|
||||
SERVER_DEBUG_OBJS = ${ALL_SERVER_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/server\//}
|
||||
|
||||
SOFT_RELEASE_OBJS = ${ALL_SOFT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/soft\//}
|
||||
GL_RELEASE_OBJS = ${ALL_GL_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/gl\//}
|
||||
SERVER_RELEASE_OBJS = ${ALL_SERVER_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/server\//}
|
||||
|
||||
PREFIX ?= /usr/local
|
||||
MODE ?= debug
|
||||
|
||||
.PHONY: all debug release client glclient server install uninstall clean run run_gl
|
||||
|
||||
all: debug
|
||||
|
||||
debug: ${.CURDIR}/${BIN_DIR}/debug/${CLIENT_BIN} \
|
||||
${.CURDIR}/${BIN_DIR}/debug/${GLCLIENT_BIN} \
|
||||
${.CURDIR}/${BIN_DIR}/debug/${SERVER_BIN}
|
||||
|
||||
release: ${.CURDIR}/${BIN_DIR}/release/${CLIENT_BIN} \
|
||||
${.CURDIR}/${BIN_DIR}/release/${GLCLIENT_BIN} \
|
||||
${.CURDIR}/${BIN_DIR}/release/${SERVER_BIN}
|
||||
|
||||
client: ${.CURDIR}/${BIN_DIR}/debug/${CLIENT_BIN}
|
||||
glclient: ${.CURDIR}/${BIN_DIR}/debug/${GLCLIENT_BIN}
|
||||
server: ${.CURDIR}/${BIN_DIR}/debug/${SERVER_BIN}
|
||||
|
||||
run: client
|
||||
${.CURDIR}/${BIN_DIR}/debug/${CLIENT_BIN}
|
||||
|
||||
run_gl: glclient
|
||||
${.CURDIR}/${BIN_DIR}/debug/${GLCLIENT_BIN}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/debug/${CLIENT_BIN}: ${SOFT_DEBUG_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_SKELE} ${LINK_STK} -lSDL3 ${LDFLAGS_PLAT}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/debug/${GLCLIENT_BIN}: ${GL_DEBUG_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_GLSKELE} ${LINK_STK} -lSDL3 ${GL_LIB} ${LDFLAGS_PLAT}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/debug/${SERVER_BIN}: ${SERVER_DEBUG_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_SKELESRV} ${LINK_STK} ${LDFLAGS_PLAT}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/release/${CLIENT_BIN}: ${SOFT_RELEASE_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -s -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_SKELE} ${LINK_STK} -lSDL3 ${LDFLAGS_PLAT}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/release/${GLCLIENT_BIN}: ${GL_RELEASE_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -s -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_GLSKELE} ${LINK_STK} -lSDL3 ${GL_LIB} ${LDFLAGS_PLAT}
|
||||
|
||||
${.CURDIR}/${BIN_DIR}/release/${SERVER_BIN}: ${SERVER_RELEASE_OBJS}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} -s -o ${.TARGET} ${.ALLSRC} ${SKELE_LIB} ${LINK_SKELESRV} ${LINK_STK} ${LDFLAGS_PLAT}
|
||||
|
||||
.for _src in ${ALL_SOFT_SRCS}
|
||||
${.CURDIR}/obj/debug/soft/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -g -O0 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
${.CURDIR}/obj/release/soft/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -O2 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
.endfor
|
||||
|
||||
.for _src in ${ALL_GL_SRCS}
|
||||
${.CURDIR}/obj/debug/gl/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -g -O0 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
${.CURDIR}/obj/release/gl/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -O2 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
.endfor
|
||||
|
||||
.for _src in ${ALL_SERVER_SRCS}
|
||||
${.CURDIR}/obj/debug/server/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -g -O0 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
${.CURDIR}/obj/release/server/${_src:S/.c$/.o/}: ${_src}
|
||||
@mkdir -p ${.TARGET:H}
|
||||
${CC} ${CFLAGS_BASE} -O2 -MMD -MP -MT ${.TARGET} -MF ${.TARGET:S/.o$/.d/} -c ${.ALLSRC} -o ${.TARGET}
|
||||
.endfor
|
||||
|
||||
.-include "obj/debug/soft/*.d"
|
||||
.-include "obj/debug/gl/*.d"
|
||||
.-include "obj/debug/server/*.d"
|
||||
.-include "obj/release/soft/*.d"
|
||||
.-include "obj/release/gl/*.d"
|
||||
.-include "obj/release/server/*.d"
|
||||
|
||||
install:
|
||||
install -d ${PREFIX}/bin
|
||||
install -m 755 ${.CURDIR}/${BIN_DIR}/release/${CLIENT_BIN} ${PREFIX}/bin/${CLIENT_BIN}
|
||||
install -m 755 ${.CURDIR}/${BIN_DIR}/release/${GLCLIENT_BIN} ${PREFIX}/bin/${GLCLIENT_BIN}
|
||||
install -m 755 ${.CURDIR}/${BIN_DIR}/release/${SERVER_BIN} ${PREFIX}/bin/${SERVER_BIN}
|
||||
|
||||
uninstall:
|
||||
rm -f ${PREFIX}/bin/${CLIENT_BIN}
|
||||
rm -f ${PREFIX}/bin/${GLCLIENT_BIN}
|
||||
rm -f ${PREFIX}/bin/${SERVER_BIN}
|
||||
|
||||
clean:
|
||||
rm -rf ${.CURDIR}/${OBJ_DIR} ${.CURDIR}/${BIN_DIR}
|
||||
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
if "%1"=="run" (
|
||||
if "%2"=="" (
|
||||
make -f gmake.mk run MODE=debug
|
||||
) else (
|
||||
make -f gmake.mk run MODE=%2
|
||||
)
|
||||
) else if "%1"=="run_gl" (
|
||||
if "%2"=="" (
|
||||
make -f gmake.mk run_gl MODE=debug
|
||||
) else (
|
||||
make -f gmake.mk run_gl MODE=%2
|
||||
)
|
||||
) else (
|
||||
make -f gmake.mk %*
|
||||
)
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
|
||||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
if [ "$OS" = "freebsd" ]; then
|
||||
MK_FILE="bmake.mk"
|
||||
else
|
||||
MK_FILE="gmake.mk"
|
||||
fi
|
||||
|
||||
if grep -q "Raspberry Pi 5" /proc/device-tree/model 2>/dev/null; then
|
||||
GL_MAJOR=3
|
||||
GL_MINOR=1
|
||||
else
|
||||
GL_MAJOR=3
|
||||
GL_MINOR=3
|
||||
fi
|
||||
|
||||
HAS_INSTALL=0
|
||||
HAS_UNINSTALL=0
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
install) HAS_INSTALL=1 ;;
|
||||
uninstall) HAS_UNINSTALL=1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$HAS_INSTALL" = "1" ] || [ "$HAS_UNINSTALL" = "1" ]; then
|
||||
if [ "$HAS_INSTALL" = "1" ]; then
|
||||
make -f "$MK_FILE" release GL_MAJOR=$GL_MAJOR GL_MINOR=$GL_MINOR
|
||||
fi
|
||||
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
PRIV=""
|
||||
elif command -v doas > /dev/null 2>&1; then
|
||||
PRIV="doas"
|
||||
elif command -v sudo > /dev/null 2>&1; then
|
||||
PRIV="sudo"
|
||||
else
|
||||
echo "error: install requires root. neither doas nor sudo found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$PRIV make -f "$MK_FILE" "$@" GL_MAJOR=$GL_MAJOR GL_MINOR=$GL_MINOR
|
||||
elif [ "$1" = "run" ]; then
|
||||
make -f "$MK_FILE" run GL_MAJOR=$GL_MAJOR GL_MINOR=$GL_MINOR
|
||||
elif [ "$1" = "run_gl" ]; then
|
||||
make -f "$MK_FILE" run_gl GL_MAJOR=$GL_MAJOR GL_MINOR=$GL_MINOR
|
||||
else
|
||||
make -f "$MK_FILE" "$@" GL_MAJOR=$GL_MAJOR GL_MINOR=$GL_MINOR
|
||||
fi
|
||||
@@ -0,0 +1,6 @@
|
||||
-std=c99
|
||||
-Wall
|
||||
-Wpedantic
|
||||
-Iinclude
|
||||
-I/usr/include/skele
|
||||
-I/usr/local/include/skele
|
||||
@@ -0,0 +1,13 @@
|
||||
GAME_NAME = game
|
||||
|
||||
SRC_DIR = src
|
||||
INC_DIR = include
|
||||
OBJ_DIR = obj
|
||||
BIN_DIR = bin
|
||||
|
||||
LINK_TYPE ?= static
|
||||
|
||||
GAME_SRCS = \
|
||||
src/game.c
|
||||
|
||||
DEBUG_FLAGS ?=
|
||||
@@ -0,0 +1,174 @@
|
||||
ifeq ($(OS),Windows_NT)
|
||||
CLOCK_SRC := src/platform/clock/win32.c
|
||||
else
|
||||
CLOCK_SRC := src/platform/clock/posix.c
|
||||
endif
|
||||
|
||||
include config.mk
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
SHELL := cmd.exe
|
||||
GL_LIB := -lopengl32
|
||||
LDFLAGS_PLAT :=
|
||||
CFLAGS_PLAT :=
|
||||
SKELE_INC := -I"C:/mingw64/include"
|
||||
SKELE_LIB := -L"C:/mingw64/lib"
|
||||
CLIENT_BIN := $(GAME_NAME)_client.exe
|
||||
GLCLIENT_BIN := $(GAME_NAME)_glclient.exe
|
||||
SERVER_BIN := $(GAME_NAME)_server.exe
|
||||
MKDIR = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1))
|
||||
RMDIR = if exist $(subst /,\,$(1)) rd /s /q $(subst /,\,$(1))
|
||||
else ifeq ($(shell uname),FreeBSD)
|
||||
GL_LIB := -lGL
|
||||
LDFLAGS_PLAT := -L/usr/local/lib
|
||||
CFLAGS_PLAT := -I/usr/local/include
|
||||
SKELE_INC :=
|
||||
SKELE_LIB :=
|
||||
CLIENT_BIN := $(GAME_NAME)_client
|
||||
GLCLIENT_BIN := $(GAME_NAME)_glclient
|
||||
SERVER_BIN := $(GAME_NAME)_server
|
||||
MKDIR = mkdir -p $(1)
|
||||
RMDIR = rm -rf $(1)
|
||||
else
|
||||
GL_LIB := -lGL
|
||||
LDFLAGS_PLAT :=
|
||||
CFLAGS_PLAT :=
|
||||
SKELE_INC :=
|
||||
SKELE_LIB :=
|
||||
CLIENT_BIN := $(GAME_NAME)_client
|
||||
GLCLIENT_BIN := $(GAME_NAME)_glclient
|
||||
SERVER_BIN := $(GAME_NAME)_server
|
||||
MKDIR = mkdir -p $(1)
|
||||
RMDIR = rm -rf $(1)
|
||||
endif
|
||||
|
||||
# linking
|
||||
ifeq ($(LINK_TYPE),dynamic)
|
||||
LINK_SKELE := -lskele
|
||||
LINK_GLSKELE := -lglskele
|
||||
LINK_SKELESRV := -lskeleserver
|
||||
LINK_STK := -lstk
|
||||
else
|
||||
LINK_SKELE := -Wl,-Bstatic -lskele -Wl,-Bdynamic
|
||||
LINK_GLSKELE := -Wl,-Bstatic -lglskele -Wl,-Bdynamic
|
||||
LINK_SKELESRV := -Wl,-Bstatic -lskeleserver -Wl,-Bdynamic
|
||||
LINK_STK := -Wl,-Bstatic -lstk -Wl,-Bdynamic
|
||||
endif
|
||||
|
||||
RELEASE_LDFLAGS := -s
|
||||
CFLAGS_BASE := -Wall -Wpedantic -I$(INC_DIR) -Iskele/include $(SKELE_INC) \
|
||||
-std=c99 $(CFLAGS_PLAT) $(DEBUG_FLAGS)
|
||||
|
||||
SOFT_CLIENT_SRCS := src/client/main.c
|
||||
GL_CLIENT_SRCS := src/gl_client/main.c
|
||||
SERVER_SRCS := src/server/main.c
|
||||
|
||||
ALL_SOFT_SRCS := $(GAME_SRCS) $(SOFT_CLIENT_SRCS)
|
||||
ALL_GL_SRCS := $(GAME_SRCS) $(GL_CLIENT_SRCS)
|
||||
ALL_SERVER_SRCS := $(GAME_SRCS) $(SERVER_SRCS)
|
||||
|
||||
SOFT_DEBUG_OBJS := $(ALL_SOFT_SRCS:%.c=obj/debug/soft/%.o)
|
||||
GL_DEBUG_OBJS := $(ALL_GL_SRCS:%.c=obj/debug/gl/%.o)
|
||||
SERVER_DEBUG_OBJS := $(ALL_SERVER_SRCS:%.c=obj/debug/server/%.o)
|
||||
|
||||
SOFT_RELEASE_OBJS := $(ALL_SOFT_SRCS:%.c=obj/release/soft/%.o)
|
||||
GL_RELEASE_OBJS := $(ALL_GL_SRCS:%.c=obj/release/gl/%.o)
|
||||
SERVER_RELEASE_OBJS := $(ALL_SERVER_SRCS:%.c=obj/release/server/%.o)
|
||||
|
||||
PREFIX ?= /usr
|
||||
MODE ?= debug
|
||||
|
||||
.PHONY: all debug release client glclient server \
|
||||
install uninstall clean run run_gl
|
||||
|
||||
all: debug
|
||||
|
||||
debug: \
|
||||
$(BIN_DIR)/debug/$(CLIENT_BIN) \
|
||||
$(BIN_DIR)/debug/$(GLCLIENT_BIN) \
|
||||
$(BIN_DIR)/debug/$(SERVER_BIN)
|
||||
|
||||
release: \
|
||||
$(BIN_DIR)/release/$(CLIENT_BIN) \
|
||||
$(BIN_DIR)/release/$(GLCLIENT_BIN) \
|
||||
$(BIN_DIR)/release/$(SERVER_BIN)
|
||||
|
||||
client: $(BIN_DIR)/debug/$(CLIENT_BIN)
|
||||
glclient: $(BIN_DIR)/debug/$(GLCLIENT_BIN)
|
||||
server: $(BIN_DIR)/debug/$(SERVER_BIN)
|
||||
|
||||
run: client
|
||||
$(BIN_DIR)/debug/$(CLIENT_BIN)
|
||||
|
||||
run_gl: glclient
|
||||
$(BIN_DIR)/debug/$(GLCLIENT_BIN)
|
||||
|
||||
$(BIN_DIR)/debug/$(CLIENT_BIN): $(SOFT_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $^ $(SKELE_LIB) $(LINK_SKELE) $(LINK_STK) -lSDL3 $(LDFLAGS_PLAT)
|
||||
|
||||
$(BIN_DIR)/debug/$(GLCLIENT_BIN): $(GL_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $^ $(SKELE_LIB) $(LINK_GLSKELE) $(LINK_STK) -lSDL3 $(GL_LIB) $(LDFLAGS_PLAT)
|
||||
|
||||
$(BIN_DIR)/debug/$(SERVER_BIN): $(SERVER_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $^ $(SKELE_LIB) $(LINK_SKELESRV) $(LINK_STK) $(LDFLAGS_PLAT)
|
||||
|
||||
$(BIN_DIR)/release/$(CLIENT_BIN): $(SOFT_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $^ $(SKELE_LIB) $(LINK_SKELE) $(LINK_STK) -lSDL3 $(LDFLAGS_PLAT)
|
||||
|
||||
$(BIN_DIR)/release/$(GLCLIENT_BIN): $(GL_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $^ $(SKELE_LIB) $(LINK_GLSKELE) $(LINK_STK) -lSDL3 $(GL_LIB) $(LDFLAGS_PLAT)
|
||||
|
||||
$(BIN_DIR)/release/$(SERVER_BIN): $(SERVER_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $^ $(SKELE_LIB) $(LINK_SKELESRV) $(LINK_STK) $(LDFLAGS_PLAT)
|
||||
|
||||
obj/debug/soft/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/debug/gl/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/debug/server/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/soft/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/gl/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/server/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
-include $(wildcard obj/debug/soft/*.d)
|
||||
-include $(wildcard obj/debug/gl/*.d)
|
||||
-include $(wildcard obj/debug/server/*.d)
|
||||
-include $(wildcard obj/release/soft/*.d)
|
||||
-include $(wildcard obj/release/gl/*.d)
|
||||
-include $(wildcard obj/release/server/*.d)
|
||||
|
||||
install:
|
||||
install -d $(PREFIX)/bin
|
||||
install -m 755 $(BIN_DIR)/release/$(CLIENT_BIN) $(PREFIX)/bin/$(CLIENT_BIN)
|
||||
install -m 755 $(BIN_DIR)/release/$(GLCLIENT_BIN) $(PREFIX)/bin/$(GLCLIENT_BIN)
|
||||
install -m 755 $(BIN_DIR)/release/$(SERVER_BIN) $(PREFIX)/bin/$(SERVER_BIN)
|
||||
|
||||
uninstall:
|
||||
rm -f $(PREFIX)/bin/$(CLIENT_BIN)
|
||||
rm -f $(PREFIX)/bin/$(GLCLIENT_BIN)
|
||||
rm -f $(PREFIX)/bin/$(SERVER_BIN)
|
||||
|
||||
clean:
|
||||
@$(call RMDIR,$(OBJ_DIR))
|
||||
@$(call RMDIR,$(BIN_DIR))
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef GAME_H
|
||||
#define GAME_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
uint8_t game_init(void);
|
||||
void game_shutdown(void);
|
||||
void game_tick(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GAME_H */
|
||||
@@ -0,0 +1,75 @@
|
||||
#include "game.h"
|
||||
#include <skele/client/input.h>
|
||||
#include <skele/client/video.h>
|
||||
#include <skele/clock.h>
|
||||
#include <skele/skele.h>
|
||||
#include <stk/stk.h>
|
||||
|
||||
static uint8_t running = 1;
|
||||
|
||||
static void on_signal(void) { running = 0; }
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
skele_video_config_t video_cfg;
|
||||
uint64_t last, now, elapsed;
|
||||
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
||||
skele_clock_init(on_signal);
|
||||
|
||||
if (skele_stk_setup() != SKELE_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
if (skele_init() != SKELE_INIT_SUCCESS) {
|
||||
skele_stk_teardown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
video_cfg.render_width = SKELE_DEFAULT_RENDER_WIDTH;
|
||||
video_cfg.render_height = SKELE_DEFAULT_RENDER_HEIGHT;
|
||||
video_cfg.window_width = 0;
|
||||
video_cfg.window_height = 0;
|
||||
video_cfg.flags = 0;
|
||||
|
||||
if (skele_video_init(video_cfg) != SKELE_INIT_SUCCESS) {
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
skele_video_set_title("game");
|
||||
|
||||
if (!game_init()) {
|
||||
skele_video_shutdown();
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
last = skele_time_ns();
|
||||
|
||||
while (running) {
|
||||
if (!skele_input_poll())
|
||||
break;
|
||||
|
||||
stk_poll();
|
||||
|
||||
now = skele_time_ns();
|
||||
elapsed = now - last;
|
||||
|
||||
if (elapsed >= skele_tick_ns) {
|
||||
game_tick();
|
||||
last = now;
|
||||
}
|
||||
|
||||
skele_video_present();
|
||||
}
|
||||
|
||||
game_shutdown();
|
||||
skele_video_shutdown();
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
#include "game.h"
|
||||
|
||||
uint8_t game_init(void) { return 1; }
|
||||
void game_shutdown(void) {}
|
||||
void game_tick(void) {}
|
||||
@@ -0,0 +1,75 @@
|
||||
#include "game.h"
|
||||
#include <skele/client/input.h>
|
||||
#include <skele/client/video.h>
|
||||
#include <skele/clock.h>
|
||||
#include <skele/skele.h>
|
||||
#include <stk/stk.h>
|
||||
|
||||
static uint8_t running = 1;
|
||||
|
||||
static void on_signal(void) { running = 0; }
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
skele_video_config_t video_cfg;
|
||||
uint64_t last, now, elapsed;
|
||||
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
||||
skele_clock_init(on_signal);
|
||||
|
||||
if (skele_stk_setup() != SKELE_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
if (skele_init() != SKELE_INIT_SUCCESS) {
|
||||
skele_stk_teardown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
video_cfg.render_width = SKELE_DEFAULT_RENDER_WIDTH;
|
||||
video_cfg.render_height = SKELE_DEFAULT_RENDER_HEIGHT;
|
||||
video_cfg.window_width = 0;
|
||||
video_cfg.window_height = 0;
|
||||
video_cfg.flags = 0;
|
||||
|
||||
if (skele_video_init(video_cfg) != SKELE_INIT_SUCCESS) {
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
skele_video_set_title("game");
|
||||
|
||||
if (!game_init()) {
|
||||
skele_video_shutdown();
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
last = skele_time_ns();
|
||||
|
||||
while (running) {
|
||||
if (!skele_input_poll())
|
||||
break;
|
||||
|
||||
stk_poll();
|
||||
|
||||
now = skele_time_ns();
|
||||
elapsed = now - last;
|
||||
|
||||
if (elapsed >= skele_tick_ns) {
|
||||
game_tick();
|
||||
last = now;
|
||||
}
|
||||
|
||||
skele_video_present();
|
||||
}
|
||||
|
||||
game_shutdown();
|
||||
skele_video_shutdown();
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
#include "game.h"
|
||||
#include <skele/clock.h>
|
||||
#include <skele/skele.h>
|
||||
#include <stk/stk.h>
|
||||
|
||||
static uint8_t running = 1;
|
||||
|
||||
static void on_signal(void) { running = 0; }
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
uint64_t tick_start;
|
||||
uint64_t elapsed;
|
||||
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
|
||||
skele_clock_init(on_signal);
|
||||
|
||||
if (skele_stk_setup() != SKELE_INIT_SUCCESS)
|
||||
return 1;
|
||||
|
||||
if (skele_init() != SKELE_INIT_SUCCESS) {
|
||||
skele_stk_teardown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!game_init()) {
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (running) {
|
||||
tick_start = skele_time_ns();
|
||||
|
||||
stk_poll();
|
||||
game_tick();
|
||||
|
||||
elapsed = skele_time_ns() - tick_start;
|
||||
if (elapsed < skele_tick_ns)
|
||||
skele_sleep_ns(skele_tick_ns - elapsed);
|
||||
}
|
||||
|
||||
game_shutdown();
|
||||
skele_stk_teardown();
|
||||
skele_shutdown();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user