CLOCK_SRC = src/platform/clock/posix.c INPUT_SRC = src/platform/client/input/sdl.c .include "config.mk" ENGINE_SRCS = src/skele.c ${CLOCK_SRC} SOFT_PLAT_SRCS = src/platform/client/video/sdl.c ${INPUT_SRC} GL_PLAT_SRCS = src/platform/client/video/gl.c ${INPUT_SRC} SOFT_CLIENT_SRCS = example/client/main.c GL_CLIENT_SRCS = example/gl_client/main.c SERVER_EXAMPLE = example/server/main.c LIBSKELE_SRCS = ${ENGINE_SRCS} ${SOFT_PLAT_SRCS} LIBGLSKELE_SRCS = ${ENGINE_SRCS} ${GL_PLAT_SRCS} LIBSKELE_SRV_SRCS = ${ENGINE_SRCS} LIBSKELE = ${BIN_DIR}/debug/libskele.a LIBGLSKELE = ${BIN_DIR}/debug/libglskele.a LIBSKELE_SRV = ${BIN_DIR}/debug/libskeleserver.a SKELE_BIN = ${BIN_DIR}/debug/skele_client GLSKELE_BIN = ${BIN_DIR}/debug/glskele_client SERVER_BIN = ${BIN_DIR}/debug/skele_server LIBSKELE_R = ${BIN_DIR}/release/libskele.a LIBGLSKELE_R = ${BIN_DIR}/release/libglskele.a LIBSKELE_SRV_R = ${BIN_DIR}/release/libskeleserver.a SKELE_BIN_R = ${BIN_DIR}/release/skele_client GLSKELE_BIN_R = ${BIN_DIR}/release/glskele_client SERVER_BIN_R = ${BIN_DIR}/release/skele_server LDFLAGS_PLAT = -L/usr/local/lib CFLAGS_PLAT = -I/usr/local/include CFLAGS_BASE = -Wall -Wpedantic -I${.CURDIR}/${INC_DIR} -std=c99 ${CFLAGS_PLAT} ${DEBUG_FLAGS} \ -DGL_MAJOR=${GL_MAJOR} -DGL_MINOR=${GL_MINOR} LINK_STK = -Wl,-Bstatic -lstk -Wl,-Bdynamic LIBSKELE_DEBUG_OBJS = ${LIBSKELE_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/soft\//} LIBGLSKELE_DEBUG_OBJS = ${LIBGLSKELE_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/gl\//} LIBSKELE_SRV_DEBUG_OBJS = ${LIBSKELE_SRV_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/server\//} SOFT_CLIENT_DEBUG_OBJS = ${SOFT_CLIENT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/soft\//} GL_CLIENT_DEBUG_OBJS = ${GL_CLIENT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/gl\//} SERVER_DEBUG_OBJS = ${SERVER_EXAMPLE:S/.c$/.o/:S/^/${.CURDIR}\/obj\/debug\/server\//} LIBSKELE_RELEASE_OBJS = ${LIBSKELE_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/soft\//} LIBGLSKELE_RELEASE_OBJS = ${LIBGLSKELE_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/gl\//} LIBSKELE_SRV_RELEASE_OBJS = ${LIBSKELE_SRV_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/server\//} SOFT_CLIENT_RELEASE_OBJS = ${SOFT_CLIENT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/soft\//} GL_CLIENT_RELEASE_OBJS = ${GL_CLIENT_SRCS:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/gl\//} SERVER_RELEASE_OBJS = ${SERVER_EXAMPLE:S/.c$/.o/:S/^/${.CURDIR}\/obj\/release\/server\//} ALL_SOFT_SRCS = ${LIBSKELE_SRCS} ${SOFT_CLIENT_SRCS} ALL_GL_SRCS = ${LIBGLSKELE_SRCS} ${GL_CLIENT_SRCS} ALL_SERVER_SRCS = ${LIBSKELE_SRV_SRCS} ${SERVER_EXAMPLE} PREFIX ?= /usr/local GL_MAJOR ?= 3 GL_MINOR ?= 3 .PHONY: all debug release skele glskele server libs install uninstall clean run run_gl all: debug debug: ${.CURDIR}/${LIBSKELE} ${.CURDIR}/${LIBGLSKELE} ${.CURDIR}/${LIBSKELE_SRV} \ ${.CURDIR}/${SKELE_BIN} ${.CURDIR}/${GLSKELE_BIN} ${.CURDIR}/${SERVER_BIN} release: ${.CURDIR}/${LIBSKELE_R} ${.CURDIR}/${LIBGLSKELE_R} ${.CURDIR}/${LIBSKELE_SRV_R} \ ${.CURDIR}/${SKELE_BIN_R} ${.CURDIR}/${GLSKELE_BIN_R} ${.CURDIR}/${SERVER_BIN_R} libs: ${.CURDIR}/${LIBSKELE} ${.CURDIR}/${LIBGLSKELE} ${.CURDIR}/${LIBSKELE_SRV} skele: ${.CURDIR}/${LIBSKELE} ${.CURDIR}/${SKELE_BIN} glskele: ${.CURDIR}/${LIBGLSKELE} ${.CURDIR}/${GLSKELE_BIN} server: ${.CURDIR}/${LIBSKELE_SRV} ${.CURDIR}/${SERVER_BIN} run: skele ${.CURDIR}/${SKELE_BIN} run_gl: glskele ${.CURDIR}/${GLSKELE_BIN} ${.CURDIR}/${LIBSKELE}: ${LIBSKELE_DEBUG_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${LIBGLSKELE}: ${LIBGLSKELE_DEBUG_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${LIBSKELE_SRV}: ${LIBSKELE_SRV_DEBUG_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${LIBSKELE_R}: ${LIBSKELE_RELEASE_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${LIBGLSKELE_R}: ${LIBGLSKELE_RELEASE_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${LIBSKELE_SRV_R}: ${LIBSKELE_SRV_RELEASE_OBJS} @mkdir -p ${.TARGET:H} ar rcs ${.TARGET} ${.ALLSRC} ${.CURDIR}/${SKELE_BIN}: ${SOFT_CLIENT_DEBUG_OBJS} ${.CURDIR}/${LIBSKELE} @mkdir -p ${.TARGET:H} ${CC} -o ${.TARGET} ${SOFT_CLIENT_DEBUG_OBJS} -L${.CURDIR}/${BIN_DIR}/debug -lskele ${LINK_STK} -lSDL3 ${LDFLAGS_PLAT} ${.CURDIR}/${GLSKELE_BIN}: ${GL_CLIENT_DEBUG_OBJS} ${.CURDIR}/${LIBGLSKELE} @mkdir -p ${.TARGET:H} ${CC} -o ${.TARGET} ${GL_CLIENT_DEBUG_OBJS} -L${.CURDIR}/${BIN_DIR}/debug -lglskele ${LINK_STK} -lSDL3 -lGL ${LDFLAGS_PLAT} ${.CURDIR}/${SERVER_BIN}: ${SERVER_DEBUG_OBJS} ${.CURDIR}/${LIBSKELE_SRV} @mkdir -p ${.TARGET:H} ${CC} -o ${.TARGET} ${SERVER_DEBUG_OBJS} -L${.CURDIR}/${BIN_DIR}/debug -lskeleserver ${LINK_STK} ${LDFLAGS_PLAT} ${.CURDIR}/${SKELE_BIN_R}: ${SOFT_CLIENT_RELEASE_OBJS} ${.CURDIR}/${LIBSKELE_R} @mkdir -p ${.TARGET:H} ${CC} -s -o ${.TARGET} ${SOFT_CLIENT_RELEASE_OBJS} -L${.CURDIR}/${BIN_DIR}/release -lskele ${LINK_STK} -lSDL3 ${LDFLAGS_PLAT} ${.CURDIR}/${GLSKELE_BIN_R}: ${GL_CLIENT_RELEASE_OBJS} ${.CURDIR}/${LIBGLSKELE_R} @mkdir -p ${.TARGET:H} ${CC} -s -o ${.TARGET} ${GL_CLIENT_RELEASE_OBJS} -L${.CURDIR}/${BIN_DIR}/release -lglskele ${LINK_STK} -lSDL3 -lGL ${LDFLAGS_PLAT} ${.CURDIR}/${SERVER_BIN_R}: ${SERVER_RELEASE_OBJS} ${.CURDIR}/${LIBSKELE_SRV_R} @mkdir -p ${.TARGET:H} ${CC} -s -o ${.TARGET} ${SERVER_RELEASE_OBJS} -L${.CURDIR}/${BIN_DIR}/release -lskeleserver ${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: release install -d ${PREFIX}/lib install -d ${PREFIX}/include/skele install -m 644 ${.CURDIR}/${LIBSKELE_R} ${PREFIX}/lib/libskele.a install -m 644 ${.CURDIR}/${LIBGLSKELE_R} ${PREFIX}/lib/libglskele.a install -m 644 ${.CURDIR}/${LIBSKELE_SRV_R} ${PREFIX}/lib/libskeleserver.a cp -r ${.CURDIR}/include/ ${PREFIX}/include/skele/ install -d ${PREFIX}/bin uninstall: rm -f ${PREFIX}/lib/libskele.a rm -f ${PREFIX}/lib/libglskele.a rm -f ${PREFIX}/lib/libskeleserver.a rm -rf ${PREFIX}/include/skele clean: rm -rf ${.CURDIR}/${OBJ_DIR} ${.CURDIR}/${BIN_DIR}