• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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