140 lines
5.2 KiB
Makefile
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}
|