Files
scaffold/bmake.mk
T
2026-04-06 13:48:06 -04:00

140 lines
5.2 KiB
Makefile

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