diff --git a/Makefile b/Makefile index dfc022f1..816f253d 100644 --- a/Makefile +++ b/Makefile @@ -264,6 +264,7 @@ VORBISDIR=$(MOUNT_DIR)/libvorbis-1.3.6 OPUSDIR=$(MOUNT_DIR)/opus-1.2.1 OPUSFILEDIR=$(MOUNT_DIR)/opusfile-0.9 ZDIR=$(MOUNT_DIR)/zlib +TOOLSDIR=$(MOUNT_DIR)/tools Q3ASMDIR=$(MOUNT_DIR)/tools/asm LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp @@ -1222,9 +1223,7 @@ endef define DO_REF_STR $(echo_cmd) "REF_STR $<" $(Q)rm -f $@ -$(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@ -$(Q)cat $< | sed -e 's/^\(.*\)$$/\"\1\\n\"/' >> $@ -$(Q)echo ";" >> $@ +$(Q)$(STRINGIFY) $< $@ endef define DO_BOT_CC @@ -1490,6 +1489,7 @@ Q3RCC = $(B)/tools/q3rcc$(TOOLS_BINEXT) Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT) Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT) Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT) +STRINGIFY = $(B)/tools/stringify$(TOOLS_BINEXT) LBURGOBJ= \ $(B)/tools/lburg/lburg.o \ @@ -1583,6 +1583,10 @@ $(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) $(echo_cmd) "LD $@" $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) +$(STRINGIFY): $(TOOLSDIR)/stringify.c + $(echo_cmd) "CC $@" + $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(TOOLSDIR)/stringify.c $(TOOLS_LIBS) + define DO_Q3LCC $(echo_cmd) "Q3LCC $<" $(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -o $@ $< @@ -2725,7 +2729,7 @@ $(B)/renderergl1/%.o: $(RGL1DIR)/%.c $(B)/renderergl1/tr_altivec.o: $(RGL1DIR)/tr_altivec.c $(DO_REF_CC_ALTIVEC) -$(B)/renderergl2/glsl/%.c: $(RGL2DIR)/glsl/%.glsl +$(B)/renderergl2/glsl/%.c: $(RGL2DIR)/glsl/%.glsl $(STRINGIFY) $(DO_REF_STR) $(B)/renderergl2/glsl/%.o: $(B)/renderergl2/glsl/%.c @@ -2950,7 +2954,7 @@ toolsclean2: @echo "TOOLS_CLEAN $(B)" @rm -f $(TOOLSOBJ) @rm -f $(TOOLSOBJ_D_FILES) - @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) + @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) $(STRINGIFY) distclean: clean toolsclean @rm -rf $(BUILD_DIR) diff --git a/code/tools/stringify.c b/code/tools/stringify.c new file mode 100644 index 00000000..a5ce84b0 --- /dev/null +++ b/code/tools/stringify.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + FILE *ifp; + FILE *ofp; + char buffer[1024]; + + if(argc < 3) + return 1; + + char *inFile = argv[1]; + char *outFile = argv[2]; + + ifp = fopen(inFile, "r"); + if(!ifp) + return 2; + + ofp = fopen(outFile, "w"); + if(!ofp) + return 3; + + // Strip extension + char *base = basename(inFile); + *strrchr(base, '.') = '\0'; + + fprintf(ofp, "const char *fallbackShader_%s =\n", base); + + while(fgets(buffer, sizeof(buffer), ifp)) + { + // Strip trailing whitespace from line + char *end = buffer + strlen(buffer) - 1; + while(end >= buffer && isspace(*end)) + end--; + + end[1] = '\0'; + + // Write line enquoted, with a newline + fprintf(ofp, "\"%s\\n\"\n", buffer); + } + + fprintf(ofp, ";\n"); + + fclose(ifp); + fclose(ofp); + + return 0; +}