1# 2# FreeType 2 configuration file to detect a Win32 host platform. 3# 4 5 6# Copyright (C) 1996-2020 by 7# David Turner, Robert Wilhelm, and Werner Lemberg. 8# 9# This file is part of the FreeType project, and may only be used, modified, 10# and distributed under the terms of the FreeType project license, 11# LICENSE.TXT. By continuing to use, modify, or distribute this file you 12# indicate that you have read the license and understand and accept it 13# fully. 14 15 16.PHONY: setup 17 18 19ifeq ($(PLATFORM),ansi) 20 21 # Detecting Windows NT is easy, as the OS variable must be defined and 22 # contains `Windows_NT'. This also works with Windows 2000 and XP. 23 # 24 ifeq ($(OS),Windows_NT) 25 26 PLATFORM := windows 27 28 else 29 30 # Detecting Windows 9X 31 32 # We used to run the `ver' command to see if its output contains the 33 # word `Windows'. If this is true, we are running Windows 95 or later: 34 # 35 # ifdef COMSPEC 36 # # First, check if we have the COMSPEC environment variable, which 37 # # indicates we can use COMMAND.COM's internal commands 38 # is_windows := $(findstring Windows,$(strip $(shell ver))) 39 # endif 40 # 41 # Unfortunately, this also detects the case when one is running 42 # DOS 7.x (the MS-DOS version that lies below Windows) without actually 43 # launching the GUI. 44 # 45 # A better test is to check whether there are both the environment 46 # variables `winbootdir' and `windir'. The first indicates an 47 # underlying DOS 7.x, while the second is set only if windows is 48 # available. 49 # 50 # Note that on Windows NT, such an environment variable will not be seen 51 # from DOS-based tools like DJGPP's make; this is not actually a problem 52 # since NT is detected independently above. But do not try to be clever! 53 # 54 ifdef winbootdir 55 ifdef windir 56 57 PLATFORM := windows 58 59 endif 60 endif 61 62 endif # test NT 63 64endif # test PLATFORM ansi 65 66ifeq ($(PLATFORM),windows) 67 68 DELETE := del 69 CAT := type 70 SEP := $(BACKSLASH) 71 72 # Setting COPY is a bit trickier. Plain COPY on NT will not work 73 # correctly, because it will uppercase 8.3 filenames, creating a 74 # `CONFIG.MK' file which isn't found later on by `make'. 75 # Since we do not want that, we need to force execution of CMD.EXE. 76 # Unfortunately, CMD.EXE is not available on Windows 9X. 77 # So we need to hack. 78 # 79 # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it. 80 # Details are available in threads of the FreeType mailing list 81 # (2004-11-11), and then in the devel mailing list (2004-11-20 to -23). 82 # 83 ifeq ($(OS),Windows_NT) 84 COPY := cmd.exe /c copy 85 else 86 COPY := copy 87 endif # test NT 88 89 90 # gcc Makefile by default 91 CONFIG_FILE := w32-gcc.mk 92 ifeq ($(firstword $(CC)),cc) 93 CC := gcc 94 endif 95 96 ifneq ($(findstring list,$(MAKECMDGOALS)),) # test for the "list" target 97 dump_target_list: 98 $(info ) 99 $(info $(PROJECT_TITLE) build system -- supported compilers) 100 $(info ) 101 $(info Several command-line compilers are supported on Win32:) 102 $(info ) 103 $(info $(empty) make setup gcc (with Mingw)) 104 $(info $(empty) make setup visualc Microsoft Visual C++) 105 $(info $(empty) make setup bcc32 Borland C/C++) 106 $(info $(empty) make setup lcc Win32-LCC) 107 $(info $(empty) make setup intelc Intel C/C++) 108 $(info ) 109 110 setup: dump_target_list 111 .PHONY: dump_target_list list 112 else 113 setup: std_setup 114 endif 115 116 # additionally, we provide hooks for various other compilers 117 # 118 ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ 119 CONFIG_FILE := w32-vcc.mk 120 CC := cl 121 122 .PHONY: visualc 123 visualc: setup 124 @cd . 125 endif 126 127 ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++ 128 CONFIG_FILE := w32-intl.mk 129 CC := cl 130 131 .PHONY: intelc 132 visualc: setup 133 @cd . 134 endif 135 136 ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ 137 CONFIG_FILE := w32-wat.mk 138 CC := wcc386 139 140 .PHONY: watcom 141 watcom: setup 142 @cd . 143 endif 144 145 ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ 146 CONFIG_FILE := w32-icc.mk 147 CC := icc 148 149 .PHONY: visualage 150 visualage: setup 151 @cd . 152 endif 153 154 ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 155 CONFIG_FILE := w32-lcc.mk 156 CC := lcc 157 158 .PHONY: lcc 159 lcc: setup 160 @cd . 161 endif 162 163 ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32 164 CONFIG_FILE := w32-mingw32.mk 165 CC := gcc 166 167 .PHONY: mingw32 168 mingw32: setup 169 @cd . 170 endif 171 172 ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++ 173 CONFIG_FILE := w32-bcc.mk 174 CC := bcc32 175 176 .PHONY: bcc32 177 bcc32: setup 178 @cd . 179 endif 180 181 ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target 182 CONFIG_FILE := w32-bccd.mk 183 CC := bcc32 184 185 .PHONY: devel-bcc 186 devel-bcc: setup 187 @cd . 188 endif 189 190 ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target 191 CONFIG_FILE := w32-dev.mk 192 CC := gcc 193 194 .PHONY: devel-gcc 195 devel-gcc: setup 196 @cd . 197 endif 198 199endif # test PLATFORM windows 200 201 202# EOF 203