diff --git a/src/build/Common.gmake b/src/build/Common.gmake index 7180d7dad715617ef4e2698aacad108eb2de7524..adececc56a61ba2ddee4b17c8cbc26d5a5fb6a20 100644 --- a/src/build/Common.gmake +++ b/src/build/Common.gmake @@ -68,6 +68,7 @@ # OBJODIR - Object output dir # # LIBODIR - Library output dir # # EXEODIR - Executable output dir # +# SRCODIR - Source code output dir # # DEBUG - Set for debug builds # # RELEASE - Set for release builds # # One of DEBUG or RELEASE is always set! # @@ -273,6 +274,7 @@ LIBODIR := $(CCPRE).$(machine).lib.$(BUILDPATH) OBJODIR := $(CCPRE).$(machine).obj.$(BUILDPATH) MTOBJODIR := $(CCPRE).$(machine).obj.$(BUILDPATH)-mt EXEODIR := $(CCPRE).$(machine).exe.$(BUILDPATH) +SRCODIR := $(CCPRE).$(machine).src.$(BUILDPATH) LDFLAGS += -L$(LIBODIR) ifeq ($(os),openbsd) @@ -487,6 +489,7 @@ depend: $(QUIET)$(DELETE) $(MTOBJODIR)/.depend $(QUIET)$(DELETE) $(LIBODIR)/.depend $(QUIET)$(DELETE) $(EXEODIR)/.depend + $(QUIET)$(DELETE) $(SRCODIR)/.depend $(QUIET)$(MAKE) BUILD_DEPENDS=FORCE FORCE: @@ -495,10 +498,12 @@ FORCE: -include $(OBJODIR)/.depend -include $(LIBODIR)/.depend -include $(EXEODIR)/.depend +-include $(SRCODIR)/.depend -include $(MTOBJODIR)/*.d -include $(OBJODIR)/*.d -include $(LIBODIR)/*.d -include $(EXEODIR)/*.d +-include $(SRCODIR)/*.d $(XPDEV_LIB): xpdev xpdev: diff --git a/src/build/rules.mk b/src/build/rules.mk index 6c5aaabee0b80d96f642eea70e84b6ff7f6ca165..684b81d6a74ec906bdd4a91bfaaacc3032eafe7e 100644 --- a/src/build/rules.mk +++ b/src/build/rules.mk @@ -16,6 +16,9 @@ $(LIBODIR): $(EXEODIR): $(QUIET)$(IFNOTEXIST) mkdir $(EXEODIR) +$(SRCODIR): + $(QUIET)$(IFNOTEXIST) mkdir $(SRCODIR) + clean: clean: @echo Deleting $(OBJODIR)$(DIRSEP) @@ -26,3 +29,5 @@ clean: -$(QUIET)$(DELETE) $(LIBODIR)$(DIRSEP)* @echo Deleting $(EXEODIR)$(DIRSEP) -$(QUIET)$(DELETE) $(EXEODIR)$(DIRSEP)* + @echo Deleting $(SRCODIR)$(DIRSEP) + -$(QUIET)$(DELETE) $(SRCODIR)$(DIRSEP)* diff --git a/src/conio/Common.make b/src/conio/Common.make index 9ce1653e2f728f2c044ac4f62b8becca80953a21..b9d627dd25caba969b2fa3b8612ec15c7ad8c3fd 100644 --- a/src/conio/Common.make +++ b/src/conio/Common.make @@ -1,5 +1,5 @@ CIOLIB-MT = $(CIOLIB_SRC)$(DIRSEP)$(LIBODIR)$(DIRSEP)$(LIBPREFIX)ciolib_mt$(LIBFILE) -CIOLIB-MT_CFLAGS = -I$(CIOLIB_SRC) +CIOLIB-MT_CFLAGS = -I$(CIOLIB_SRC) -I$(CIOLIB_SRC)$(DIRSEP)$(SRCODIR) CIOLIB-MT_LDFLAGS = -L$(CIOLIB_SRC)$(DIRSEP)$(LIBODIR) CIOLIB-MT_LIBS = $(UL_PRE)ciolib_mt$(UL_SUF) diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile index 82e045acbc9f43a535999df5204e0f31d4b05182..c0726a1c81ae118d43d678b13b4338aff512f6e2 100644 --- a/src/conio/GNUmakefile +++ b/src/conio/GNUmakefile @@ -3,6 +3,7 @@ SRC_ROOT = .. include $(SRC_ROOT)/build/Common.gmake # defines clean and output directory rules CFLAGS += $(XPDEV-MT_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(CIOLIB-MT_CFLAGS) +VPATH = $(SRCODIR) ifeq ($(os),win32) ifndef WITHOUT_GDI @@ -48,7 +49,8 @@ endif # CIOLIB Library Link Rule -$(CIOLIB-MT_BUILD): $(MTOBJODIR) $(OBJS) $(CIOLIB_INTERPOLATE_TARGET) +$(CIOLIB-MT_BUILD): $(MTOBJODIR) $(OBJS) $(CIOLIB_INTERPOLATE_TARGET) $(MTOBJODIR)$(DIRSEP)rgbmap$(OFILE) + @echo Creating $@ ... $(QUIET)$(AR) rc $@ $(OBJS) $(QUIET)$(RANLIB) $@ @@ -69,13 +71,13 @@ endif $(EXEODIR)$(DIRSEP)genmap$(EXEFILE): $(EXEODIR) -rgbmap.s: $(EXEODIR)$(DIRSEP)genmap$(EXEFILE) +$(SRCODIR)$(DIRSEP)rgbmap.s: $(EXEODIR)$(DIRSEP)genmap$(EXEFILE) $(SRCODIR) @echo Creating $@... - $(QUIET)$(EXEODIR)$(DIRSEP)genmap$(EXEFILE) $(os) + $(QUIET)$(EXEODIR)$(DIRSEP)genmap$(EXEFILE) $(os) $(SRCODIR) -rgbmap.h: rgbmap.s +$(SRCODIR)$(DIRSEP)rgbmap.h: $(SRCODIR)$(DIRSEP)rgbmap.s -$(MTOBJODIR)$(DIRSEP)rgbmap$(OFILE): rgbmap.s rgbmap.h +$(MTOBJODIR)$(DIRSEP)rgbmap$(OFILE): $(SRCODIR)$(DIRSEP)rgbmap.s $(SRCODIR)$(DIRSEP)rgbmap.h $(EXEODIR)$(DIRSEP)genmap$(EXEFILE): genmap.c @echo Compiling $@... diff --git a/src/conio/genmap.c b/src/conio/genmap.c index ef71103749cdd4047e4671c3b01cd56cd76d74ed..150aed5c9ff468d910d3e0ab3e47f8bf8641a9fe 100644 --- a/src/conio/genmap.c +++ b/src/conio/genmap.c @@ -1,4 +1,5 @@ #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <inttypes.h> @@ -56,12 +57,22 @@ init_r2y(void) int main(int argc, char **argv) { - FILE *s = fopen("rgbmap.s", "w"); - FILE *h = fopen("rgbmap.h", "w"); - FILE *r = fopen("r2y.bin", "wb"); - FILE *y = fopen("y2r.bin", "wb"); + FILE *s, *h, *r, *y; + char path[1024]; char *mangle = ""; + if (argc != 3) { + fprintf(stderr, "Usage: %s <os> <path>\n", argv[0]); + return EXIT_FAILURE; + } + sprintf(path, "%s/rgbmap.s", argv[2]); + s = fopen(path, "w"); + sprintf(path, "%s/rgbmap.h", argv[2]); + h = fopen(path, "w"); + sprintf(path, "%s/r2y.bin", argv[2]); + r = fopen(path, "wb"); + sprintf(path, "%s/y2r.bin", argv[2]); + y = fopen(path, "wb"); init_r2y(); if (argc > 1 && strcmp(argv[1], "win32") == 0) mangle = "_"; @@ -91,5 +102,5 @@ main(int argc, char **argv) fclose(h); fclose(r); fclose(y); - return 0; + return EXIT_SUCCESS; }