Fix MinGW configure bootstrap
authorJonathan Liu <net147@gmail.com>
Fri, 24 Feb 2012 11:36:59 +0000 (22:36 +1100)
committerQt by Nokia <qt-info@nokia.com>
Sat, 25 Feb 2012 14:28:11 +0000 (15:28 +0100)
Makefile.mingw was using the test command which requires sh.exe. This
adds support for bootstrap using cmd.exe instead.

Change-Id: Ieb67843170d2745ce119cc8feaa5433aa82fd7d7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
tools/configure/Makefile.mingw

index 5951cb4..086dd71 100644 (file)
@@ -74,10 +74,38 @@ $(TARGET): $(OBJECTS)
 
 $(OBJECTS): $(PCH)
 
-CHK_DIR_EXISTS = test -d
-MKDIR=mkdir -p
+# SHELL is the full path of sh.exe, unless
+# 1) it is found in the current directory
+# 2) it is not found at all
+# 3) it is overridden on the command line with an existing file
+# ... otherwise it is always sh.exe. Specifically, SHELL from the
+# environment has no effect.
+#
+# This check will fail if SHELL is explicitly set to a not
+# sh-compatible shell. This is not a problem, because configure.bat
+# will not do that.
+ifeq ($(SHELL), sh.exe)
+    ifeq ($(wildcard $(CURDIR)/sh.exe), )
+        SH = 0
+    else
+        SH = 1
+    endif
+else
+    SH = 1
+endif
+
+ifeq ($(SH), 1)
+    CHK_DIR_EXISTS = test -d
+    CHK_DIR_EXISTS_GLUE = ||
+    MKDIR = mkdir -p
+else
+    CHK_DIR_EXISTS = if not exist
+    CHK_DIR_EXISTS_GLUE =
+    MKDIR = md
+endif
+
 $(PCH): $(CONFSRC)/configure_pch.h
-       @$(CHK_DIR_EXISTS) $(RAW_PCH).gch || $(MKDIR) $(RAW_PCH).gch
+       @$(CHK_DIR_EXISTS) $(RAW_PCH).gch $(CHK_DIR_EXISTS_GLUE) $(MKDIR) $(RAW_PCH).gch
        $(CXX) -x c++-header -c $(CXXFLAGS_BARE) -o $@ $<
 
 VPATH = $(CONFSRC):$(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin