From b58191ccf2117f6c76d183f590a28c298f1e7c5e Mon Sep 17 00:00:00 2001 From: Antoine Leca Date: Tue, 23 Nov 2004 17:48:52 +0000 Subject: [PATCH] * 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. --- builds/win32/detect.mk | 77 +++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/builds/win32/detect.mk b/builds/win32/detect.mk index 7f55e2c46..a7de659c2 100644 --- 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 - - # 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 - PLATFORM := win32 - endif + else + + # Detecting Windows 9X + + # 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. + + ###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) @@ -54,6 +67,24 @@ ifeq ($(PLATFORM),win32) 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 ifeq ($(firstword $(CC)),cc)