initial commit
This commit is contained in:
@@ -0,0 +1,222 @@
|
||||
ifeq ($(OS),Windows_NT)
|
||||
CLOCK_SRC := src/platform/clock/win32.c
|
||||
INPUT_SRC := src/platform/client/input/sdl.c
|
||||
else
|
||||
CLOCK_SRC := src/platform/clock/posix.c
|
||||
INPUT_SRC := src/platform/client/input/sdl.c
|
||||
endif
|
||||
|
||||
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)
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
SHELL := cmd.exe
|
||||
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.exe
|
||||
GLSKELE_BIN := $(BIN_DIR)/debug/glskele_client.exe
|
||||
SERVER_BIN := $(BIN_DIR)/debug/skele_server.exe
|
||||
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.exe
|
||||
GLSKELE_BIN_R := $(BIN_DIR)/release/glskele_client.exe
|
||||
SERVER_BIN_R := $(BIN_DIR)/release/skele_server.exe
|
||||
LDFLAGS_PLAT :=
|
||||
CFLAGS_PLAT :=
|
||||
MKDIR = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1))
|
||||
RMDIR = if exist $(subst /,\,$(1)) rd /s /q $(subst /,\,$(1))
|
||||
else
|
||||
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 :=
|
||||
CFLAGS_PLAT :=
|
||||
MKDIR = mkdir -p $(1)
|
||||
RMDIR = rm -rf $(1)
|
||||
endif
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
GL_LIB := -lopengl32
|
||||
LDFLAGS_PLAT :=
|
||||
CFLAGS_PLAT :=
|
||||
else ifeq ($(shell uname),FreeBSD)
|
||||
GL_LIB := -lGL
|
||||
LDFLAGS_PLAT := -L/usr/local/lib
|
||||
CFLAGS_PLAT := -I/usr/local/include
|
||||
else
|
||||
GL_LIB := -lGL
|
||||
LDFLAGS_PLAT :=
|
||||
CFLAGS_PLAT :=
|
||||
endif
|
||||
LINK_STK := -Wl,-Bstatic -lstk -Wl,-Bdynamic
|
||||
RELEASE_LDFLAGS := -s
|
||||
CFLAGS_BASE := -Wall -Wpedantic -I$(INC_DIR) -std=c99 $(CFLAGS_PLAT) $(DEBUG_FLAGS) \
|
||||
-DGL_MAJOR=$(GL_MAJOR) -DGL_MINOR=$(GL_MINOR)
|
||||
|
||||
LIBSKELE_DEBUG_OBJS := $(LIBSKELE_SRCS:%.c=obj/debug/soft/%.o)
|
||||
LIBGLSKELE_DEBUG_OBJS := $(LIBGLSKELE_SRCS:%.c=obj/debug/gl/%.o)
|
||||
LIBSKELE_SRV_DEBUG_OBJS := $(LIBSKELE_SRV_SRCS:%.c=obj/debug/server/%.o)
|
||||
SOFT_CLIENT_DEBUG_OBJS := $(SOFT_CLIENT_SRCS:%.c=obj/debug/soft/%.o)
|
||||
GL_CLIENT_DEBUG_OBJS := $(GL_CLIENT_SRCS:%.c=obj/debug/gl/%.o)
|
||||
SERVER_DEBUG_OBJS := $(SERVER_EXAMPLE:%.c=obj/debug/server/%.o)
|
||||
|
||||
LIBSKELE_RELEASE_OBJS := $(LIBSKELE_SRCS:%.c=obj/release/soft/%.o)
|
||||
LIBGLSKELE_RELEASE_OBJS := $(LIBGLSKELE_SRCS:%.c=obj/release/gl/%.o)
|
||||
LIBSKELE_SRV_RELEASE_OBJS := $(LIBSKELE_SRV_SRCS:%.c=obj/release/server/%.o)
|
||||
SOFT_CLIENT_RELEASE_OBJS := $(SOFT_CLIENT_SRCS:%.c=obj/release/soft/%.o)
|
||||
GL_CLIENT_RELEASE_OBJS := $(GL_CLIENT_SRCS:%.c=obj/release/gl/%.o)
|
||||
SERVER_RELEASE_OBJS := $(SERVER_EXAMPLE:%.c=obj/release/server/%.o)
|
||||
|
||||
PREFIX ?= /usr
|
||||
MODE ?= debug
|
||||
|
||||
.PHONY: all debug release skele glskele server libs \
|
||||
install uninstall clean run run_gl
|
||||
|
||||
all: debug
|
||||
|
||||
debug: \
|
||||
$(LIBSKELE) \
|
||||
$(LIBGLSKELE) \
|
||||
$(LIBSKELE_SRV) \
|
||||
$(SKELE_BIN) \
|
||||
$(GLSKELE_BIN) \
|
||||
$(SERVER_BIN)
|
||||
|
||||
release: \
|
||||
$(LIBSKELE_R) \
|
||||
$(LIBGLSKELE_R) \
|
||||
$(LIBSKELE_SRV_R) \
|
||||
$(SKELE_BIN_R) \
|
||||
$(GLSKELE_BIN_R) \
|
||||
$(SERVER_BIN_R)
|
||||
|
||||
libs: $(LIBSKELE) $(LIBGLSKELE) $(LIBSKELE_SRV)
|
||||
skele: $(LIBSKELE) $(SKELE_BIN)
|
||||
glskele: $(LIBGLSKELE) $(GLSKELE_BIN)
|
||||
server: $(LIBSKELE_SRV) $(SERVER_BIN)
|
||||
|
||||
run: skele
|
||||
$(SKELE_BIN)
|
||||
|
||||
run_gl: glskele
|
||||
$(GLSKELE_BIN)
|
||||
|
||||
$(LIBSKELE): $(LIBSKELE_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBGLSKELE): $(LIBGLSKELE_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBSKELE_SRV): $(LIBSKELE_SRV_DEBUG_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBSKELE_R): $(LIBSKELE_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBGLSKELE_R): $(LIBGLSKELE_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(LIBSKELE_SRV_R): $(LIBSKELE_SRV_RELEASE_OBJS)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
$(SKELE_BIN): $(SOFT_CLIENT_DEBUG_OBJS) $(LIBSKELE)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $(SOFT_CLIENT_DEBUG_OBJS) -L$(BIN_DIR)/debug -lskele $(LINK_STK) -lSDL3 $(LDFLAGS_PLAT)
|
||||
|
||||
$(GLSKELE_BIN): $(GL_CLIENT_DEBUG_OBJS) $(LIBGLSKELE)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $(GL_CLIENT_DEBUG_OBJS) -L$(BIN_DIR)/debug -lglskele $(LINK_STK) -lSDL3 $(GL_LIB) $(LDFLAGS_PLAT)
|
||||
|
||||
$(SERVER_BIN): $(SERVER_DEBUG_OBJS) $(LIBSKELE_SRV)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) -o $@ $(SERVER_DEBUG_OBJS) -L$(BIN_DIR)/debug -lskeleserver $(LINK_STK) $(LDFLAGS_PLAT)
|
||||
|
||||
$(SKELE_BIN_R): $(SOFT_CLIENT_RELEASE_OBJS) $(LIBSKELE_R)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $(SOFT_CLIENT_RELEASE_OBJS) -L$(BIN_DIR)/release -lskele $(LINK_STK) -lSDL3 $(LDFLAGS_PLAT)
|
||||
|
||||
$(GLSKELE_BIN_R): $(GL_CLIENT_RELEASE_OBJS) $(LIBGLSKELE_R)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $(GL_CLIENT_RELEASE_OBJS) -L$(BIN_DIR)/release -lglskele $(LINK_STK) -lSDL3 $(GL_LIB) $(LDFLAGS_PLAT)
|
||||
|
||||
$(SERVER_BIN_R): $(SERVER_RELEASE_OBJS) $(LIBSKELE_SRV_R)
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(RELEASE_LDFLAGS) -o $@ $(SERVER_RELEASE_OBJS) -L$(BIN_DIR)/release -lskeleserver $(LINK_STK) $(LDFLAGS_PLAT)
|
||||
|
||||
obj/debug/soft/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/debug/gl/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/debug/server/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -g -O0 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/soft/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/gl/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
obj/release/server/%.o: %.c
|
||||
@$(call MKDIR,$(@D))
|
||||
$(CC) $(CFLAGS_BASE) -O2 -MMD -MP -c $< -o $@
|
||||
|
||||
-include $(wildcard obj/debug/soft/*.d)
|
||||
-include $(wildcard obj/debug/gl/*.d)
|
||||
-include $(wildcard obj/debug/server/*.d)
|
||||
-include $(wildcard obj/release/soft/*.d)
|
||||
-include $(wildcard obj/release/gl/*.d)
|
||||
-include $(wildcard obj/release/server/*.d)
|
||||
|
||||
install: release
|
||||
install -d $(PREFIX)/lib
|
||||
install -d $(PREFIX)/include/skele
|
||||
install -m 644 $(LIBSKELE_R) $(PREFIX)/lib/libskele.a
|
||||
install -m 644 $(LIBGLSKELE_R) $(PREFIX)/lib/libglskele.a
|
||||
install -m 644 $(LIBSKELE_SRV_R) $(PREFIX)/lib/libskeleserver.a
|
||||
cp -r 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:
|
||||
@$(call RMDIR,$(OBJ_DIR))
|
||||
@$(call RMDIR,$(BIN_DIR))
|
||||
Reference in New Issue
Block a user