303dc8b98974694101e628a6bd414b291b7fde47
[platform/upstream/freetype2.git] / builds / windows / detect.mk
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
19 ifeq ($(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
64 endif # test PLATFORM ansi
65
66 ifeq ($(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
199 endif   # test PLATFORM windows
200
201
202 # EOF