initial scaffold structure
This commit is contained in:
@@ -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}
|
||||
Reference in New Issue
Block a user