freetype2/builds/windows/detect.mk

203 lines
5.1 KiB
Makefile
Raw Normal View History

#
# FreeType 2 configuration file to detect a Win32 host platform.
#
2023-01-17 09:18:25 +01:00
# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
# and distributed under the terms of the FreeType project license,
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
.PHONY: setup
ifeq ($(PLATFORM),ansi)
# Detecting Windows NT is easy, as the OS variable must be defined and
2004-11-23 22:38:16 +01:00
# contains `Windows_NT'. This also works with Windows 2000 and XP.
#
ifeq ($(OS),Windows_NT)
2000-10-31 21:42:18 +01:00
PLATFORM := windows
else
2004-11-23 22:38:16 +01:00
# Detecting Windows 9X
# We used to run the `ver' command to see if its output contains the
2004-11-23 22:38:16 +01:00
# 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
2004-11-23 22:38:16 +01:00
# DOS 7.x (the MS-DOS version that lies below Windows) without actually
# launching the GUI.
2004-11-23 22:38:16 +01:00
#
# 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.
2004-11-23 22:38:16 +01:00
#
# 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!
2004-11-23 22:38:16 +01:00
#
ifdef winbootdir
ifdef windir
PLATFORM := windows
endif
endif
endif # test NT
endif # test PLATFORM ansi
ifeq ($(PLATFORM),windows)
DELETE := del
CAT := type
SEP := $(BACKSLASH)
2004-11-23 22:38:16 +01:00
# 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.
2004-11-23 22:38:16 +01:00
#
# Kudos to Eli Zaretskii (DJGPP guru) that helped debug it.
2017-09-08 04:36:02 +02:00
# Details are available in threads of the FreeType mailing list
2004-11-23 22:38:16 +01:00
# (2004-11-11), and then in the devel mailing list (2004-11-20 to -23).
#
ifeq ($(OS),Windows_NT)
COPY := >nul cmd.exe /c copy
else
COPY := >nul 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:
$(info )
$(info $(PROJECT_TITLE) build system -- supported compilers)
$(info )
$(info Several command-line compilers are supported on Win32:)
$(info )
$(info $(empty) make setup gcc (with Mingw))
$(info $(empty) make setup visualc Microsoft Visual C++)
$(info $(empty) make setup bcc32 Borland C/C++)
$(info $(empty) make setup lcc Win32-LCC)
$(info $(empty) make setup intelc Intel C/C++)
$(info )
setup: dump_target_list
.PHONY: dump_target_list list
else
setup: std_setup
endif
# additionally, we provide hooks for various other compilers
#
ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++
CONFIG_FILE := w32-vcc.mk
CC := cl
.PHONY: visualc
visualc: setup
@cd .
endif
* builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. Renamed "ftnames.h" to "ftsnames.h", and FT_NAMES_H to FT_SFNT_NAMES_H. * docs/docmaker.py: Added generation of INDEX link in table of contents. * INSTALL, docs/BUILD: Updated documentation to indicate that the compilation process has changed slightly (no more `src' required in * builds/*/*-def.mk: Changed the objects directory from "obj" to "objs". * include/freetype/config/ftheader.h: Removed obsolete macros like FT_SOURCE_FILE, etc. and added cache-specific macro definitions that were previously defined in <freetype/ftcache.h>. Added comments to be included in a new API Reference section. * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each component needs to add its own directory to the include path at compile time. Modified all "rules.mk" and "descrip.mms" accordingly. * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove compiler warnings in pedantic modes. * include/config/ft2build.h, include/config/ftheader.h: The file top-level <ft2build.h>. * include/config/ftheader.h: Added new section describing the #include macros. the Type 2 glyph charstring (used by conversion programs). * docs/docmaker.py: Added cross-references generation as well as seac emulation provided by the Type 2 endchar operator. * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, Added support for clipped direct rendering in the smooth renderer. * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set
2001-03-20 23:58:56 +01:00
ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++
CONFIG_FILE := w32-intl.mk
CC := cl
* builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. Renamed "ftnames.h" to "ftsnames.h", and FT_NAMES_H to FT_SFNT_NAMES_H. * docs/docmaker.py: Added generation of INDEX link in table of contents. * INSTALL, docs/BUILD: Updated documentation to indicate that the compilation process has changed slightly (no more `src' required in * builds/*/*-def.mk: Changed the objects directory from "obj" to "objs". * include/freetype/config/ftheader.h: Removed obsolete macros like FT_SOURCE_FILE, etc. and added cache-specific macro definitions that were previously defined in <freetype/ftcache.h>. Added comments to be included in a new API Reference section. * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each component needs to add its own directory to the include path at compile time. Modified all "rules.mk" and "descrip.mms" accordingly. * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove compiler warnings in pedantic modes. * include/config/ft2build.h, include/config/ftheader.h: The file top-level <ft2build.h>. * include/config/ftheader.h: Added new section describing the #include macros. the Type 2 glyph charstring (used by conversion programs). * docs/docmaker.py: Added cross-references generation as well as seac emulation provided by the Type 2 endchar operator. * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, Added support for clipped direct rendering in the smooth renderer. * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set
2001-03-20 23:58:56 +01:00
.PHONY: intelc
visualc: setup
@cd .
endif
ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++
CONFIG_FILE := w32-wat.mk
CC := wcc386
.PHONY: watcom
watcom: setup
@cd .
endif
ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++
CONFIG_FILE := w32-icc.mk
CC := icc
.PHONY: visualage
visualage: setup
@cd .
endif
ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32
CONFIG_FILE := w32-lcc.mk
CC := lcc
.PHONY: lcc
lcc: setup
@cd .
endif
ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32
CONFIG_FILE := w32-mingw32.mk
CC := gcc
.PHONY: mingw32
mingw32: setup
@cd .
endif
ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++
CONFIG_FILE := w32-bcc.mk
CC := bcc32
.PHONY: bcc32
bcc32: setup
@cd .
endif
ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target
CONFIG_FILE := w32-bccd.mk
CC := bcc32
.PHONY: devel-bcc
devel-bcc: setup
@cd .
endif
ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target
CONFIG_FILE := w32-dev.mk
CC := gcc
.PHONY: devel-gcc
devel-gcc: setup
@cd .
endif
endif # test PLATFORM windows
# EOF