diff --git a/Makefile b/Makefile index 766f6f9..e166107 100644 --- a/Makefile +++ b/Makefile @@ -519,6 +519,10 @@ ifneq ($(BUILD_GAME_QVM),0) endif endif +ifneq ($(BUILD_GAME_PK3),0) + TARGETS += $(B)/baseia/pak0.pk3 +endif + ifdef DEFAULT_BASEDIR BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" endif @@ -622,152 +626,7 @@ makedirs: ############################################################################# # QVM BUILD TOOLS ############################################################################# - -TOOLS_OPTIMIZE = -g -O2 -Wall -fno-strict-aliasing -TOOLS_CFLAGS = $(TOOLS_OPTIMIZE) \ - -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \ - -I$(Q3LCCSRCDIR) \ - -I$(LBURGDIR) -TOOLS_LIBS = -TOOLS_LDFLAGS = - -ifeq ($(GENERATE_DEPENDENCIES),1) - TOOLS_CFLAGS += -MMD -endif - -define DO_TOOLS_CC -$(echo_cmd) "TOOLS_CC $<" -$(Q)$(CC) $(TOOLS_CFLAGS) -o $@ -c $< -endef - -define DO_TOOLS_CC_DAGCHECK -$(echo_cmd) "TOOLS_CC_DAGCHECK $<" -$(Q)$(CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< -endef - -LBURG = $(B)/tools/lburg/lburg$(BINEXT) -DAGCHECK_C = $(B)/tools/rcc/dagcheck.c -Q3RCC = $(B)/tools/q3rcc$(BINEXT) -Q3CPP = $(B)/tools/q3cpp$(BINEXT) -Q3LCC = $(B)/tools/q3lcc$(BINEXT) -Q3ASM = $(B)/tools/q3asm$(BINEXT) - -LBURGOBJ= \ - $(B)/tools/lburg/lburg.o \ - $(B)/tools/lburg/gram.o - -$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c - $(DO_TOOLS_CC) - -$(LBURG): $(LBURGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3RCCOBJ = \ - $(B)/tools/rcc/alloc.o \ - $(B)/tools/rcc/bind.o \ - $(B)/tools/rcc/bytecode.o \ - $(B)/tools/rcc/dag.o \ - $(B)/tools/rcc/dagcheck.o \ - $(B)/tools/rcc/decl.o \ - $(B)/tools/rcc/enode.o \ - $(B)/tools/rcc/error.o \ - $(B)/tools/rcc/event.o \ - $(B)/tools/rcc/expr.o \ - $(B)/tools/rcc/gen.o \ - $(B)/tools/rcc/init.o \ - $(B)/tools/rcc/inits.o \ - $(B)/tools/rcc/input.o \ - $(B)/tools/rcc/lex.o \ - $(B)/tools/rcc/list.o \ - $(B)/tools/rcc/main.o \ - $(B)/tools/rcc/null.o \ - $(B)/tools/rcc/output.o \ - $(B)/tools/rcc/prof.o \ - $(B)/tools/rcc/profio.o \ - $(B)/tools/rcc/simp.o \ - $(B)/tools/rcc/stmt.o \ - $(B)/tools/rcc/string.o \ - $(B)/tools/rcc/sym.o \ - $(B)/tools/rcc/symbolic.o \ - $(B)/tools/rcc/trace.o \ - $(B)/tools/rcc/tree.o \ - $(B)/tools/rcc/types.o - -$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md - $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" - $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ - -$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) - $(DO_TOOLS_CC_DAGCHECK) - -$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3RCC): $(Q3RCCOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3CPPOBJ = \ - $(B)/tools/cpp/cpp.o \ - $(B)/tools/cpp/lex.o \ - $(B)/tools/cpp/nlist.o \ - $(B)/tools/cpp/tokens.o \ - $(B)/tools/cpp/macro.o \ - $(B)/tools/cpp/eval.o \ - $(B)/tools/cpp/include.o \ - $(B)/tools/cpp/hideset.o \ - $(B)/tools/cpp/getopt.o \ - $(B)/tools/cpp/unix.o - -$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3CPP): $(Q3CPPOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3LCCOBJ = \ - $(B)/tools/etc/lcc.o \ - $(B)/tools/etc/bytecode.o - -$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) - -define DO_Q3LCC -$(echo_cmd) "Q3LCC $<" -$(Q)$(Q3LCC) -o $@ $< -endef - -define DO_CGAME_Q3LCC -$(echo_cmd) "CGAME_Q3LCC $<" -$(Q)$(Q3LCC) -DCGAME -o $@ $< -endef - -define DO_GAME_Q3LCC -$(echo_cmd) "GAME_Q3LCC $<" -$(Q)$(Q3LCC) -DQAGAME -o $@ $< -endef - -define DO_UI_Q3LCC -$(echo_cmd) "UI_Q3LCC $<" -$(Q)$(Q3LCC) -DUI -o $@ $< -endef - -Q3ASMOBJ = \ - $(B)/tools/asm/q3asm.o \ - $(B)/tools/asm/cmdlib.o - -$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3ASM): $(Q3ASMOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) +include include/qvm.mk ############################################################################# ## BASEQ3 CGAME @@ -835,6 +694,7 @@ Q3GOBJ_ = \ $(B)/baseia/game/g_bot.o \ $(B)/baseia/game/g_client.o \ $(B)/baseia/game/g_cmds.o \ + $(B)/baseia/game/g_cmds_cs.o \ $(B)/baseia/game/g_cmds_ext.o \ $(B)/baseia/game/g_combat.o \ $(B)/baseia/game/g_items.o \ @@ -945,42 +805,12 @@ $(B)/baseia/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) ############################################################################# ## GAME MODULE RULES ############################################################################# +include include/game.mk -$(B)/baseia/cgame/bg_%.o: $(GDIR)/bg_%.c - $(DO_CGAME_CC) - -$(B)/baseia/cgame/%.o: $(CGDIR)/%.c - $(DO_CGAME_CC) - -$(B)/baseia/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) - $(DO_CGAME_Q3LCC) - -$(B)/baseia/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) - $(DO_CGAME_Q3LCC) - -$(B)/baseia/game/%.o: $(GDIR)/%.c - $(DO_GAME_CC) - -$(B)/baseia/game/%.asm: $(GDIR)/%.c $(Q3LCC) - $(DO_GAME_Q3LCC) - -$(B)/baseia/ui/bg_%.o: $(GDIR)/bg_%.c - $(DO_UI_CC) - -$(B)/baseia/ui/%.o: $(Q3UIDIR)/%.c - $(DO_UI_CC) - -$(B)/baseia/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) - $(DO_UI_Q3LCC) - -$(B)/baseia/ui/%.asm: $(Q3UIDIR)/%.c $(Q3LCC) - $(DO_UI_Q3LCC) - -$(B)/baseia/qcommon/%.o: $(CMDIR)/%.c - $(DO_SHLIB_CC) - -$(B)/baseia/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) - $(DO_Q3LCC) +############################################################################# +# GAME DATA FILES +############################################################################# +include include/pk3.mk ############################################################################# # MISC diff --git a/include/game.mk b/include/game.mk new file mode 100644 index 0000000..e737610 --- /dev/null +++ b/include/game.mk @@ -0,0 +1,35 @@ +$(B)/baseia/cgame/bg_%.o: $(GDIR)/bg_%.c + $(DO_CGAME_CC) + +$(B)/baseia/cgame/%.o: $(CGDIR)/%.c + $(DO_CGAME_CC) + +$(B)/baseia/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) + $(DO_CGAME_Q3LCC) + +$(B)/baseia/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) + $(DO_CGAME_Q3LCC) + +$(B)/baseia/game/%.o: $(GDIR)/%.c + $(DO_GAME_CC) + +$(B)/baseia/game/%.asm: $(GDIR)/%.c $(Q3LCC) + $(DO_GAME_Q3LCC) + +$(B)/baseia/ui/bg_%.o: $(GDIR)/bg_%.c + $(DO_UI_CC) + +$(B)/baseia/ui/%.o: $(Q3UIDIR)/%.c + $(DO_UI_CC) + +$(B)/baseia/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) + $(DO_UI_Q3LCC) + +$(B)/baseia/ui/%.asm: $(Q3UIDIR)/%.c $(Q3LCC) + $(DO_UI_Q3LCC) + +$(B)/baseia/qcommon/%.o: $(CMDIR)/%.c + $(DO_SHLIB_CC) + +$(B)/baseia/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) + $(DO_Q3LCC) diff --git a/include/pk3.mk b/include/pk3.mk new file mode 100644 index 0000000..48b7838 --- /dev/null +++ b/include/pk3.mk @@ -0,0 +1,4 @@ +$(B)/baseia/pak0.pk3: $(B)/baseia/vm/cgame.qvm $(B)/baseia/vm/qagame.qvm $(B)/baseia/vm/ui.qvm + @rm -f $@ + $(echo_cmd) "ZIP $@" + @cd $(B)/baseia && zip -0r $(notdir $@) vm diff --git a/include/qvm.mk b/include/qvm.mk new file mode 100644 index 0000000..b6592a4 --- /dev/null +++ b/include/qvm.mk @@ -0,0 +1,145 @@ +TOOLS_CFLAGS = -g -O2 -Wall -fno-strict-aliasing \ + -DSYSTEM=\"\" -DTEMPDIR=\"${TEMPDIR}\" \ + -I${Q3LCCSRCDIR} -I${LBURGDIR} +TOOLS_LDFLAGS = +TOOLS_LIBS = + +ifeq ($(GENERATE_DEPENDENCIES),1) + TOOLS_CFLAGS += -MMD +endif + +define DO_TOOLS_CC +$(echo_cmd) "TOOLS_CC $<" +$(Q)$(CC) $(TOOLS_CFLAGS) -o $@ -c $< +endef + +define DO_TOOLS_CC_DAGCHECK +$(echo_cmd) "TOOLS_CC_DAGCHECK $<" +$(Q)$(CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< +endef + +LBURG = $(B)/tools/lburg/lburg$(BINEXT) +DAGCHECK_C = $(B)/tools/rcc/dagcheck.c +Q3RCC = $(B)/tools/q3rcc$(BINEXT) +Q3CPP = $(B)/tools/q3cpp$(BINEXT) +Q3LCC = $(B)/tools/q3lcc$(BINEXT) +Q3ASM = $(B)/tools/q3asm$(BINEXT) + +LBURGOBJ= \ + $(B)/tools/lburg/lburg.o \ + $(B)/tools/lburg/gram.o + +$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c + $(DO_TOOLS_CC) + +$(LBURG): $(LBURGOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + + +Q3RCCOBJ = \ + $(B)/tools/rcc/alloc.o \ + $(B)/tools/rcc/bind.o \ + $(B)/tools/rcc/bytecode.o \ + $(B)/tools/rcc/dag.o \ + $(B)/tools/rcc/dagcheck.o \ + $(B)/tools/rcc/decl.o \ + $(B)/tools/rcc/enode.o \ + $(B)/tools/rcc/error.o \ + $(B)/tools/rcc/event.o \ + $(B)/tools/rcc/expr.o \ + $(B)/tools/rcc/gen.o \ + $(B)/tools/rcc/init.o \ + $(B)/tools/rcc/inits.o \ + $(B)/tools/rcc/input.o \ + $(B)/tools/rcc/lex.o \ + $(B)/tools/rcc/list.o \ + $(B)/tools/rcc/main.o \ + $(B)/tools/rcc/null.o \ + $(B)/tools/rcc/output.o \ + $(B)/tools/rcc/prof.o \ + $(B)/tools/rcc/profio.o \ + $(B)/tools/rcc/simp.o \ + $(B)/tools/rcc/stmt.o \ + $(B)/tools/rcc/string.o \ + $(B)/tools/rcc/sym.o \ + $(B)/tools/rcc/symbolic.o \ + $(B)/tools/rcc/trace.o \ + $(B)/tools/rcc/tree.o \ + $(B)/tools/rcc/types.o + +$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md + $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" + $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ + +$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) + $(DO_TOOLS_CC_DAGCHECK) + +$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3RCC): $(Q3RCCOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +Q3CPPOBJ = \ + $(B)/tools/cpp/cpp.o \ + $(B)/tools/cpp/lex.o \ + $(B)/tools/cpp/nlist.o \ + $(B)/tools/cpp/tokens.o \ + $(B)/tools/cpp/macro.o \ + $(B)/tools/cpp/eval.o \ + $(B)/tools/cpp/include.o \ + $(B)/tools/cpp/hideset.o \ + $(B)/tools/cpp/getopt.o \ + $(B)/tools/cpp/unix.o + +$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3CPP): $(Q3CPPOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +Q3LCCOBJ = \ + $(B)/tools/etc/lcc.o \ + $(B)/tools/etc/bytecode.o + +$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) + + +define DO_Q3LCC +$(echo_cmd) "Q3LCC $<" +$(Q)$(Q3LCC) -o $@ $< +endef + +define DO_CGAME_Q3LCC +$(echo_cmd) "CGAME_Q3LCC $<" +$(Q)$(Q3LCC) -DCGAME -o $@ $< +endef + +define DO_GAME_Q3LCC +$(echo_cmd) "GAME_Q3LCC $<" +$(Q)$(Q3LCC) -DQAGAME -o $@ $< +endef + +define DO_UI_Q3LCC +$(echo_cmd) "UI_Q3LCC $<" +$(Q)$(Q3LCC) -DUI -o $@ $< +endef + +Q3ASMOBJ = \ + $(B)/tools/asm/q3asm.o \ + $(B)/tools/asm/cmdlib.o + +$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3ASM): $(Q3ASMOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS)