shithub: freetype+ttf2subf

Download patch

ref: b58191ccf2117f6c76d183f590a28c298f1e7c5e
parent: 360c271c17994b3f10ef8fcee03c3902458a6923
author: Antoine Leca <[email protected]>
date: Tue Nov 23 12:48:52 EST 2004

* builds/win32/detect.mk: Corrected logic that detects
Windows NT to use the previous change even when win32 is
forced. Corrected detection of win32 on Win9X.

git/fs: mount .git/fs: mount/attach disallowed
--- a/builds/win32/detect.mk
+++ b/builds/win32/detect.mk
@@ -19,34 +19,47 @@
 ifeq ($(PLATFORM),ansi)
 
   # Detecting Windows NT is easy, as the OS variable must be defined and
-  # contains `Windows_NT'.  This also works with W2K, XP, and Windows 98.
+  # contains `Windows_NT'.  This also works with Windows 2000, XP.
   #
   ifeq ($(OS),Windows_NT)
 
-    is_windows := 1
+    PLATFORM := win32
 
-    # We have to use the shell for copying files to preserve the case of
-    # file names.  Without this, we get a `CONFIG.MK' file which isn't
-    # found later on by `make'.
-    COPY := cmd.exe /c copy
-
   else
-    # We test for the COMSPEC environment variable, then run the `ver'
-    # command-line program to see if its output contains the word `Windows'.
-    #
-    # If this is true, we are running a win32 platform (or an emulation).
-    #
-    ifdef COMSPEC
-      is_windows := $(findstring Windows,$(strip $(shell ver)))
-      COPY := copy
-    endif
-  endif  # test NT
 
-  ifdef is_windows
+  # Detecting Windows 9X
 
-    PLATFORM := win32
+    # We used to run the `ver' command to see if its output contains the
+    # word `Windows'. If this is true, we are running Windows 95 or later.
 
-  endif
+    ###ifdef COMSPEC
+    ### First, check if we have the COMSPEC environment variable, which
+    ### indicates we can use COMMAND.COM's internal commands
+    ###  is_windows := $(findstring Windows,$(strip $(shell ver)))
+    ###endif
+
+    # Unfortunately, this also detects the case when one is running
+    # DOS 7.x (MS-DOS version that lies below Windows) without actually
+    # launching the GUI.
+
+    # A better test is to check is there are both %winbootdir% and %windir%
+    # environment variables. The first indicates underlying DOS 7.x, and
+    # the second is set only when Win32 is available.
+
+    # Note that on Windows NT, such environment variable will not be seen
+    # from DOS-based tools like DJGPP make; this is not actually a problem
+    # since NT is detected independantly above. But do not try to be clever!
+
+    ifdef winbootdir
+      ifdef windir
+
+        PLATFORM := win32
+
+      endif
+    endif
+
+  endif  # test NT
+
 endif # test PLATFORM ansi
 
 ifeq ($(PLATFORM),win32)
@@ -53,6 +66,24 @@
 
   DELETE := del
   SEP    := $(BACKSLASH)
+
+  # Setting COPY is a bit trickier. Plain COPY on NT will not work
+  # correctly, because it will uppercase 8.3 filenames, so we will get
+  # a `CONFIG.MK' file which isn't found later on by `make'.
+  # And we do not want that. So we need to force execution of CMD.EXE.
+  # Unfortunately this latter is not available on Windows 9X...
+  # So we need to hack.
+
+  # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it.
+  # Details available in threads in freetype mailing list (2004-11-11)
+  # and then devel mailing list (2004-11-20 to -23).
+
+  ifeq ($(OS),Windows_NT)
+    COPY := cmd.exe /c copy
+  else
+    COPY := copy
+  endif  # test NT
+
 
   # gcc Makefile by default
   CONFIG_FILE := w32-gcc.mk