.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}