From: Oliver Schmidt 
Date: Thu, 6 Mar 2014 21:32:24 +0000 (+0100)
Subject: Moved from VS2013 to MinGW(-w64).
X-Git-Tag: V2.15~116
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=30125afcc1e35059a815852656e8ab27b62e1be8;p=cc65
Moved from VS2013 to MinGW(-w64).
---
diff --git a/.gitignore b/.gitignore
index 5de976c32..3e65003e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 /html/
 /joy/
 /lib/
+/libwrk/
 /mou/
 /ser/
 /targetutil/
diff --git a/.travis.yml b/.travis.yml
index 3a0ee09a1..1ae62cd1c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,7 +4,7 @@ install:
   - sudo apt-get install linuxdoc-tools linuxdoc-tools-info binutils-mingw-w64-i686 gcc-mingw-w64-i686
 script:
   - make all doc
-  - make -C src clean all CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar PROGEXT=.exe
+  - make -C src clean all CROSS_COMPILE=i686-w64-mingw32-
 after_success:
   - make -C doc gh-pages
 env:
diff --git a/doc/Makefile b/doc/Makefile
index 8c2bb902c..02028e66e 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,8 +1,18 @@
-.PHONY: all doc html info gh-pages mostlyclean clean install
+ifneq ($(shell echo),)
+  CMD_EXE = 1
+endif
+
+.PHONY: all mostlyclean clean install doc html info gh-pages
 
 .SUFFIXES:
 
-ifeq ($(shell echo),)
+all mostlyclean install:
+
+ifdef CMD_EXE
+
+clean doc:
+
+else # CMD_EXE
 
 SGMLS := $(wildcard *.sgml)
 
@@ -13,7 +23,8 @@ TOC_LEVEL = 2
 
 GH_PAGES = ../../gh-pages
 
-all mostlyclean install:
+clean:
+	$(RM) -r ../html ../info
 
 doc: html info
 
@@ -21,9 +32,6 @@ html: $(addprefix ../html/,$(SGMLS:.sgml=.html) doc.css doc.png)
 
 info: $(addprefix ../info/,$(SGMLS:.sgml=.info))
 
-clean:
-	$(RM) -r ../html ../info
-
 ../html ../info:
 	@mkdir $@
 
@@ -50,8 +58,4 @@ ifdef GH_TOKEN
 	git --work-tree=$(GH_PAGES) --git-dir=$(GH_PAGES)/.git push
 endif
 
-else # cmd.exe
-
-all doc mostlyclean clean install:
-
-endif # cmd.exe
+endif # CMD_EXE
diff --git a/libsrc/Makefile b/libsrc/Makefile
index 0a8c844b6..24a958972 100644
--- a/libsrc/Makefile
+++ b/libsrc/Makefile
@@ -1,3 +1,11 @@
+ifneq ($(shell echo),)
+  CMD_EXE = 1
+endif
+
+.PHONY: all mostlyclean clean install lib $(TARGETS)
+
+.SUFFIXES:
+
 CBMS = c128   \
        c16    \
        c64    \
@@ -29,6 +37,15 @@ DRVTYPES = emd \
            ser \
            tgi
 
+ifdef CMD_EXE
+  DIRLIST = $(strip $(foreach dir,$1,$(wildcard $(dir))))
+  MKDIR = mkdir $(subst /,\,$1)
+  RMDIR = $(if $(DIRLIST),rmdir /s /q $(subst /,\,$(DIRLIST)))
+else
+  MKDIR = mkdir -p $1
+  RMDIR = $(RM) -r $1
+endif
+
 # Every target requires its individual vpath setting but the vpath directive
 # acts globally. Therefore each target is built in a separate make instance.
 
@@ -38,45 +55,29 @@ ifeq ($(words $(MAKECMDGOALS)),1)
   endif
 endif
 
-DIRLIST = $(strip $(foreach dir,$1,$(wildcard $(dir))))
-
-ifeq ($(shell echo),)
-  MKDIR = mkdir -p $1
-  RMDIR = $(RM) -r $1
-else
-  MKDIR = mkdir $(subst /,\,$1)
-  RMDIR = $(if $(DIRLIST),rmdir /s /q $(subst /,\,$(DIRLIST)))
-endif
-
-.SUFFIXES:
-
-.PHONY: all lib $(TARGETS) mostlyclean clean install
-
 ifndef TARGET
 
 datadir = $(prefix)/share/cc65
 
-INSTALLDIRS = ../asminc ../cfg ../include \
-              $(filter-out $(wildcard ../include/*.*),$(wildcard ../include/*)) \
-              ../lib ../targetutil $(addprefix ../,$(DRVTYPES))
-
-INSTALL = install
-
 all lib: $(TARGETS)
 
-$(TARGETS):
-	@$(MAKE) --no-print-directory $@
-
 mostlyclean:
 	$(call RMDIR,../libwrk)
 
 clean:
 	$(call RMDIR,../libwrk ../lib ../targetutil $(addprefix ../,$(DRVTYPES)))
 
+ifdef CMD_EXE
+
 install:
-	$(foreach dir,$(INSTALLDIRS),$(INSTALL_recipe))
 
-##########
+else # CMD_EXE
+
+INSTALL = install
+
+INSTALLDIRS = ../asminc ../cfg ../include \
+              $(filter-out $(wildcard ../include/*.*),$(wildcard ../include/*)) \
+              ../lib ../targetutil $(addprefix ../,$(DRVTYPES))
 
 define INSTALL_recipe
 
@@ -84,9 +85,15 @@ $(if $(prefix),,$(error variable `prefix' must be set))
 $(INSTALL) -d $(subst ..,$(DESTDIR)$(datadir),$(dir))
 $(INSTALL) -m644 $(dir)/*.* $(subst ..,$(DESTDIR)$(datadir),$(dir))
 
-endef
+endef # INSTALL_recipe
+
+install:
+	$(foreach dir,$(INSTALLDIRS),$(INSTALL_recipe))
+
+endif # CMD_EXE
 
-##########
+$(TARGETS):
+	@$(MAKE) --no-print-directory $@
 
 else # TARGET
 
@@ -183,8 +190,6 @@ ifeq ($(TARGET),$(filter $(TARGET),$(TARGETUTIL)))
   include $(SRCDIR)/targetutil/Makefile.inc
 endif
 
-##########
-
 define DRVTYPE_template
 
 $1_SRCDIR = $$(SRCDIR)/$1
@@ -221,9 +226,7 @@ OBJS += $$($1_STCS)
 
 DEPS += $$($1_OBJS:.o=.d)
 
-endef
-
-##########
+endef # DRVTYPE_template
 
 $(foreach drvtype,$(DRVTYPES),$(eval $(call DRVTYPE_template,$(drvtype))))
 
@@ -235,16 +238,12 @@ LD65 := $(if $(wildcard ../bin/ld65*),../bin/ld65,ld65)
 
 export CC65_HOME := $(abspath ..)
 
-##########
-
 define ASSEMBLE_recipe
 
 $(if $(TRAVIS),,@echo $(TARGET) - $<)
 @$(CA65) -t $(TARGET) $(CA65FLAGS) --create-dep $(@:.o=.d) -o $@ $<
 
-endef
-
-##########
+endef # ASSEMBLE_recipe
 
 define COMPILE_recipe
 
@@ -252,9 +251,7 @@ $(if $(TRAVIS),,@echo $(TARGET) - $<)
 @$(CC65) -t $(TARGET) $(CC65FLAGS) --create-dep $(@:.o=.d) --dep-target $@ -o $(@:.o=.s) $<
 @$(CA65) -t $(TARGET) -o $@ $(@:.o=.s)
 
-endef
-
-##########
+endef # COMPILE_recipe
 
 ../libwrk/$(TARGET)/%.o: %.s | ../libwrk/$(TARGET)
 	$(ASSEMBLE_recipe)
diff --git a/src/Makefile b/src/Makefile
index 844f81ca4..87548628b 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,8 +1,10 @@
-.SUFFIXES:
+ifneq ($(shell echo),)
+  CMD_EXE = 1
+endif
 
-.PHONY: all bin $(PROGS) mostlyclean clean install avail unavail
+.PHONY: all mostlyclean clean install avail unavail bin $(PROGS)
 
-ifeq ($(shell echo),)
+.SUFFIXES:
 
 PROGS = ar65  \
         ca65  \
@@ -25,6 +27,9 @@ LD65_LIB = $(datadir)/lib
 LD65_OBJ = $(datadir)/lib
 LD65_CFG = $(datadir)/cfg
 
+CC = $(CROSS_COMPILE)gcc
+AR = $(CROSS_COMPILE)ar
+
 CFLAGS += -MMD -MP -O -I common $(USER_CFLAGS) \
           -Wall -Wextra -Wno-char-subscripts \
           -DCA65_INC=$(CA65_INC) -DCC65_INC=$(CC65_INC) \
@@ -34,44 +39,63 @@ CFLAGS += $(if $(TRAVIS),-Werror)
 
 LDLIBS += -lm
 
-INSTALL = install
+ifdef CMD_EXE
+  EXE_SUFFIX=.exe
+endif
+
+ifdef CROSS_COMPILE
+  EXE_SUFFIX=.exe
+endif
+
+ifdef CMD_EXE
+  DIRLIST = $(strip $(foreach dir,$1,$(wildcard $(dir))))
+  MKDIR = mkdir $(subst /,\,$1)
+  RMDIR = $(if $(DIRLIST),rmdir /s /q $(subst /,\,$(DIRLIST)))
+else
+  MKDIR = mkdir -p $1
+  RMDIR = $(RM) -r $1
+endif
 
 all bin: $(PROGS)
 
 mostlyclean:
-	$(RM) -r ../wrk
+	$(call RMDIR,../wrk)
 
 clean:
-	$(RM) -r ../wrk ../bin
+	$(call RMDIR,../wrk ../bin)
 
-install:
-	$(if $(prefix),,$(error variable `prefix' must be set))
-	$(INSTALL) -d $(DESTDIR)$(bindir)
-	$(INSTALL) ../bin/* $(DESTDIR)$(bindir)
+ifdef CMD_EXE
 
-avail:
-	$(foreach prog,$(PROGS),$(AVAIL_recipe))
+install avail unavail:
 
-unavail:
-	$(foreach prog,$(PROGS),$(UNAVAIL_recipe))
+else # CMD_EXE
 
-##########
+INSTALL = install
 
 define AVAIL_recipe
 
 ln -s $(abspath ../bin/$(prog)) /usr/local/bin/$(prog)
 
-endef
-
-##########
+endef # AVAIL_recipe
 
 define UNAVAIL_recipe
 
 $(RM) /usr/local/bin/$(prog)
 
-endef
+endef # UNAVAIL_recipe
+
+install:
+	$(if $(prefix),,$(error variable `prefix' must be set))
+	$(INSTALL) -d $(DESTDIR)$(bindir)
+	$(INSTALL) ../bin/* $(DESTDIR)$(bindir)
+
+avail:
+	$(foreach prog,$(PROGS),$(AVAIL_recipe))
+
+unavail:
+	$(foreach prog,$(PROGS),$(UNAVAIL_recipe))
 
-##########
+endif # CMD_EXE
 
 define OBJS_template
 
@@ -80,53 +104,35 @@ $1_OBJS := $$(patsubst %.c,../wrk/%.o,$$(wildcard $1/*.c))
 $$($1_OBJS): | ../wrk/$1
 
 ../wrk/$1:
-	@mkdir -p $$@
+	@$$(call MKDIR,$$@)
 
 DEPS += $$($1_OBJS:.o=.d)
 
-endef
-
-##########
+endef # OBJS_template
 
 define PROG_template
 
 $$(eval $$(call OBJS_template,$1))
 
-../bin/$1$(PROGEXT): $$($1_OBJS) ../wrk/common/common.a | ../bin
+../bin/$1$(EXE_SUFFIX): $$($1_OBJS) ../wrk/common/common.a | ../bin
 	$$(CC) $$(LDFLAGS) -o $$@ $$^ $$(LDLIBS)
 
-$1: ../bin/$1$(PROGEXT)
-
-endef
+$1: ../bin/$1$(EXE_SUFFIX)
 
-##########
+endef # PROG_template
 
 ../wrk/%.o: %.c
 	@echo $<
 	@$(CC) -c $(CFLAGS) -o $@ $<
 
 ../bin:
-	@mkdir $@
+	@$(call MKDIR,$@)
 
 $(eval $(call OBJS_template,common))
+
 ../wrk/common/common.a: $(common_OBJS)
 	$(AR) r $@ $?
 
 $(foreach prog,$(PROGS),$(eval $(call PROG_template,$(prog))))
 
 -include $(DEPS)
-
-else # cmd.exe
-
-all bin:
-	msbuild cc65.sln /p:configuration=release /consoleloggerparameters:disableconsolecolor
-
-mostlyclean:
-	$(if $(wildcard ../wrk),rmdir /s /q ..\wrk)
-
-clean:
-	msbuild cc65.sln /p:configuration=release /consoleloggerparameters:disableconsolecolor /target:$@
-
-install avail unavail:
-
-endif # cmd.exe