# # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/.
# # Configuration common to all versions of Windows NT # and Windows 95 #
DEFAULT_COMPILER = cl
ifdef NS_USE_GCC
CC = gcc
CCC = g++
LD = ld
AR = ar
AR += cr $@
RANLIB = ranlib
BSDECHO = echo
RC = windres.exe -O coff --use-temp-file
LINK_DLL = $(CC) $(OS_DLLFLAGS) $(DLLFLAGS) else
CC = cl
CCC = cl
LD = link
LDFLAGS += -nologo
AR = lib
AR += -nologo -OUT:$@
RANLIB = echo
BSDECHO = echo
RC = rc.exe
MT = mt.exe # Check for clang-cl
CLANG_CL := $(shell expr `$(CC) -? 2>&1 | grep -w clang | wc -l` \> 0) # Determine compiler version ifeq ($(CLANG_CL),1) # clang-cl pretends to be MSVC 2012.
CC_VERSION := 17.00.00.00 else
CC_VERSION := $(shell $(CC) 2>&1 | sed -ne \ 's|.* \([0-9]\+\.[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?\).*|\1|p') endif # Change the dots to spaces.
_CC_VERSION_WORDS := $(subst ., ,$(CC_VERSION))
_CC_VMAJOR := $(word 1,$(_CC_VERSION_WORDS))
_CC_VMINOR := $(word 2,$(_CC_VERSION_WORDS))
_CC_RELEASE := $(word 3,$(_CC_VERSION_WORDS))
_CC_BUILD := $(word 4,$(_CC_VERSION_WORDS))
_MSC_VER = $(_CC_VMAJOR)$(_CC_VMINOR)
_MSC_VER_6 = 1200 # VC10 (2010) is 16.00.30319.01, VC10SP1 is 16.00.40219.01.
_MSC_VER_GE_10SP1 := $(shell expr $(_MSC_VER) \> 1600 \| \
$(_MSC_VER) = 1600 \& $(_CC_RELEASE) \>= 40219) # VC11 (2012).
_MSC_VER_GE_11 := $(shell expr $(_MSC_VER) \>= 1700) # VC12 (2013).
_MSC_VER_GE_12 := $(shell expr $(_MSC_VER) \>= 1800) # VC14 (2015).
_MSC_VER_GE_14 := $(shell expr $(_MSC_VER) \>= 1900) ifeq ($(_CC_VMAJOR),14) # -DYNAMICBASE is only supported on VC8SP1 or newer, # so be very specific here! # VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762 ifeq ($(_CC_RELEASE).$(_CC_BUILD),50727.42)
USE_DYNAMICBASE = else ifeq ($(_CC_RELEASE).$(_CC_BUILD),50727.762)
USE_DYNAMICBASE = 1 else
_LOSER := $(error Unknown compiler version $(CC_VERSION)) endif endif endif # if $(_CC_VMAJOR) >= 15 # NOTE: 'sort' sorts the words in lexical order, so this test works # only if $(_CC_VMAJOR) is two digits. ifeq ($(firstword $(sort $(_CC_VMAJOR) 15)),15)
USE_DYNAMICBASE = 1 endif endif
ifeq (,$(filter-out x386 x86_64,$(CPU_ARCH)))
ifdef USE_64
DEFINES += -D_AMD64_ # Use subsystem 5.02 to allow running on Windows XP. ifeq ($(_MSC_VER_GE_11),1)
LDFLAGS += -SUBSYSTEM:CONSOLE,5.02 endif
CPU_ARCH = x86_64 else
DEFINES += -D_X86_ # VS2012 defaults to -arch:SSE2. Use -arch:IA32 to avoid requiring # SSE2. Clang-cl gets confused by -arch:IA32, so don't add it. # (See https://llvm.org/bugs/show_bug.cgi?id=24335) # Use subsystem 5.01 to allow running on Windows XP. ifeq ($(_MSC_VER_GE_11),1) ifneq ($(CLANG_CL),1)
OS_CFLAGS += -arch:IA32 endif
LDFLAGS += -SUBSYSTEM:CONSOLE,5.01 endif
CPU_ARCH = x386 endif endif ifeq ($(CPU_ARCH), ALPHA)
DEFINES += -D_ALPHA_=1 endif
ifdef MAPFILE
ifndef NS_USE_GCC
DLLFLAGS += -DEF:$(MAPFILE) endif endif # Change PROCESS to put the mapfile in the correct format for this platform
PROCESS_MAP_FILE = cp $< $@
# # The following is NOT needed for the NSPR 2.0 library. #
DEFINES += -D_WINDOWS
# override default, which is ASFLAGS = CFLAGS
ifdef NS_USE_GCC
AS = $(CC)
ASFLAGS = $(INCLUDES) else
ifdef USE_64
AS = ml64.exe
ASFLAGS = -nologo -Cp -Sn -Zi $(INCLUDES) else
AS = ml.exe
ASFLAGS = -nologo -Cp -Sn -Zi -coff -safeseh $(INCLUDES) endif endif
# clear any CSTD and CXXSTD unless we're using GCC
ifndef NS_USE_GCC
CSTD =
CXXSTD = endif
# # override the definitions of RELEASE_TREE found in tree.mk #
ifndef RELEASE_TREE
ifdef BUILD_SHIP
ifdef USE_SHIPS
RELEASE_TREE = $(NTBUILD_SHIP) else
RELEASE_TREE = //redbuild/components endif else
RELEASE_TREE = //redbuild/components endif endif
# # override the definitions of IMPORT_LIB_PREFIX, LIB_PREFIX, and # DLL_PREFIX in prefix.mk #
# # When the processor is NOT 386-based on Windows NT, override the # value of $(CPU_TAG). For WinNT, 95, 16, not CE. # ifneq ($(CPU_ARCH),x386)
CPU_TAG = _$(CPU_ARCH) endif
# # override the TARGETS defined in ruleset.mk, adding IMPORT_LIBRARY #
ifndef TARGETS
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(PROGRAM) endif
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.14Bemerkung:
(vorverarbeitet am 2026-06-09)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.