summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2012-11-23 10:47:34 +0200
committerEli Zaretskii <eliz@gnu.org>2012-11-23 10:47:34 +0200
commita879f0eaae49460a29c840e3e35acdb84aa9aa7e (patch)
treedf2221d70468dc78e247b9b11e960b19b3b44f1a
parent930a6273b85ca1bd9a1406f50f52845637fc10ea (diff)
downloademacs-a879f0eaae49460a29c840e3e35acdb84aa9aa7e.tar.gz
Fix bug #12955 with building under MSYS Bash.
src/makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead of a literal "/". (gl-stamp): Invoke fc.exe directly, not through cmd.
-rw-r--r--nt/ChangeLog7
-rw-r--r--nt/gmake.defs8
-rw-r--r--nt/nmake.defs1
-rw-r--r--src/ChangeLog6
-rw-r--r--src/makefile.w32-in4
5 files changed, 24 insertions, 2 deletions
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 6737f952a43..ae6cb231614 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,10 @@
+2012-11-23 Eli Zaretskii <eliz@gnu.org>
+
+ * gmake.defs (SWITCHCHAR): Define to // under MSYS, / otherwise.
+ (Bug#12955)
+
+ * nmake.defs (SWITCHCHAR): Define to /.
+
2012-11-23 Paul Eggert <eggert@cs.ucla.edu>
Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
diff --git a/nt/gmake.defs b/nt/gmake.defs
index 358c262db28..3d545fab975 100644
--- a/nt/gmake.defs
+++ b/nt/gmake.defs
@@ -69,10 +69,18 @@ sh_output := $(shell echo)
ifeq "$(findstring ECHO, $(sh_output))" "ECHO"
THE_SHELL = $(COMSPEC)$(ComSpec)
SHELLTYPE=CMD
+SWITCHCHAR=/
else
USING_SH = 1
THE_SHELL = $(SHELL)
SHELLTYPE=SH
+# MSYS needs to double the slash in cmd-style switches to avoid
+# interpreting /x as a Posix style file name reference
+ifneq ($(MSYSTEM),)
+SWITCHCHAR=//
+else
+SWITCHCHAR=/
+endif
endif
MAKETYPE=gmake
diff --git a/nt/nmake.defs b/nt/nmake.defs
index 16a787ea30a..2c6bc66b673 100644
--- a/nt/nmake.defs
+++ b/nt/nmake.defs
@@ -22,6 +22,7 @@ all:
THE_SHELL = $(COMSPEC)
SHELLTYPE=CMD
+SWITCHCHAR=/
MAKETYPE=nmake
diff --git a/src/ChangeLog b/src/ChangeLog
index 5566b623cec..45df517eff5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2012-11-23 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead
+ of a literal "/". (Bug#12955)
+ (gl-stamp): Invoke fc.exe directly, not through cmd.
+
2012-11-23 Paul Eggert <eggert@cs.ucla.edu>
Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 5d0c6e72146..a296f6eb393 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -229,12 +229,12 @@ SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
obj = $(GLOBAL_SOURCES:.c=.o)
globals.h: gl-stamp
- @cmd /c rem true
+ @cmd $(SWITCHCHAR)c rem true
gl-stamp: ../lib-src/$(BLD)/make-docfile.exe $(GLOBAL_SOURCES)
- $(DEL) gl-tmp
"$(THISDIR)/../lib-src/$(BLD)/make-docfile" -d . -g $(SOME_MACHINE_OBJECTS) $(obj) > gl-tmp
- cmd /c "fc /b gl-tmp globals.h >nul 2>&1 || $(CP) gl-tmp globals.h"
+ fc.exe $(SWITCHCHAR)b gl-tmp globals.h >nul 2>&1 || $(CP) gl-tmp globals.h
- $(DEL) gl-tmp
echo timestamp > $@