.PHONY: setup
ifeq ($(PLATFORM),ansi)
# Detecting Windows NT is easy, as the OS variable must be defined and # contains `Windows_NT'. This also works with Windows 2000 and XP. # ifeq ($(OS),Windows_NT)
PLATFORM := windows
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 (the MS-DOS version that lies below Windows) without actually # launching the GUI. # # A better test is to check whether there are both the environment # variables `winbootdir' and `windir'. The first indicates an # underlying DOS 7.x, while the second is set only if windows is # available. # # Note that on Windows NT, such an environment variable will not be seen # from DOS-based tools like DJGPP's make; this is not actually a problem # since NT is detected independently above. But do not try to be clever! # ifdef winbootdir ifdef windir PLATFORM := windows endif endif
endif # test NT
endif # test PLATFORM ansi
ifeq ($(PLATFORM),windows)
DELETE := del CAT := type SEP := $(BACKSLASH)
# Setting COPY is a bit trickier. Plain COPY on NT will not work
# correctly, because it will uppercase 8.3 filenames, creating a
# CONFIG.MK' file which isn't found later on by
make'.
# Since we do not want that, we need to force execution of CMD.EXE.
# Unfortunately, CMD.EXE is not available on Windows 9X.
# So we need to hack.
#
# Kudos to Eli Zaretskii (DJGPP guru) that helped debug it.
# Details are available in threads of the freetype mailing list
# (2004-11-11), and then in the 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) CC := gcc endif
ifneq ($(findstring list,$(MAKECMDGOALS)),) # test for the "list" target dump_target_list: @echo ÿ @echo $(PROJECT_TITLE) build system -- supported compilers @echo ÿ @echo Several command-line compilers are supported on Win32: @echo ÿ @echo ÿÿmake setupÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgcc (with Mingw) @echo ÿÿmake setup visualcÿÿÿÿÿÿÿÿÿÿÿÿÿMicrosoft Visual C++ @echo ÿÿmake setup bcc32ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBorland C/C++ @echo ÿÿmake setup lccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWin32-LCC @echo ÿÿmake setup intelcÿÿÿÿÿÿÿÿÿÿÿÿÿÿIntel C/C++ @echo ÿ
setup: dump_target_list .PHONY: dump_target_list list
else setup: dos_setup endif
# additionally, we provide hooks for various other compilers # ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ CONFIG_FILE := w32-vcc.mk CC := cl visualc: setup .PHONY: visualc endif
ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++ CONFIG_FILE := w32-intl.mk CC := cl visualc: setup .PHONY: intelc endif
ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ CONFIG_FILE := w32-wat.mk CC := wcc386 watcom: setup .PHONY: watcom endif
ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ CONFIG_FILE := w32-icc.mk CC := icc visualage: setup .PHONY: visualage endif
ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 CONFIG_FILE := w32-lcc.mk CC := lcc lcc: setup .PHONY: lcc endif
ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32 CONFIG_FILE := w32-mingw32.mk CC := gcc mingw32: setup .PHONY: mingw32 endif
ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++ CONFIG_FILE := w32-bcc.mk CC := bcc32 bcc32: setup .PHONY: bcc32 endif
ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target CONFIG_FILE := w32-bccd.mk CC := bcc32 devel-bcc: setup .PHONY: devel-bcc endif
ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target CONFIG_FILE := w32-dev.mk CC := gcc devel-gcc: setup .PHONY: devel-gcc endif
endif # test PLATFORM windows