Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  WIN32.mk   Sprache: Shell

 
#
# 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

ifdef BUILD_TREE
NSINSTALL_DIR  = $(BUILD_TREE)/nss
else
NSINSTALL_DIR  = $(CORE_DEPTH)/coreconf/nsinstall
endif
NSINSTALL      = nsinstall

INSTALL      = $(NSINSTALL)
GARBAGE     += $(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb
XP_DEFINE   += -DXP_PC
ifdef NS_USE_GCC
LIB_SUFFIX   = a
else
LIB_SUFFIX   = lib
endif
DLL_SUFFIX   = dll

define MAKE_OBJDIR
if test ! -d $(@D); then mkdir -p $(@D); fi
endef

ifdef NS_USE_GCC
    OS_CFLAGS += -mwindows
    _GEN_IMPORT_LIB=-Wl,--out-implib,$(IMPORT_LIBRARY)
    DLLFLAGS  += -mwindows -o $@ -shared -Wl,--export-all-symbols $(if $(IMPORT_LIBRARY),$(_GEN_IMPORT_LIB))
    ifdef BUILD_OPT
 ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
  OPTIMIZER += -Os
 else
  OPTIMIZER += -O2
 endif
 DEFINES    += -UDEBUG -DNDEBUG
    else
 OPTIMIZER  += -g
 DEFINES    += -DDEBUG -UNDEBUG
    endif
else # !NS_USE_GCC
    WARNING_CFLAGS = -W3 -nologo -D_CRT_SECURE_NO_WARNINGS \
                      -D_CRT_NONSTDC_NO_WARNINGS
    OS_DLLFLAGS += -nologo -DLL -SUBSYSTEM:WINDOWS
    ifndef NSS_ENABLE_WERROR
        NSS_ENABLE_WERROR = 1
    endif
    ifeq ($(NSS_ENABLE_WERROR),1)
        WARNING_CFLAGS += -WX
    endif
    ifeq ($(_MSC_VER),$(_MSC_VER_6))
    ifndef MOZ_DEBUG_SYMBOLS
 OS_DLLFLAGS += -PDB:NONE
    endif
    endif
    ifdef USE_DYNAMICBASE
 OS_DLLFLAGS += -DYNAMICBASE
    endif
    #
    # Define USE_DEBUG_RTL if you want to use the debug runtime library
    # (RTL) in the debug build.
    # Define USE_STATIC_RTL if you want to use the static RTL.
    #
    ifdef USE_DEBUG_RTL
 ifdef USE_STATIC_RTL
  OS_CFLAGS += -MTd
 else
  OS_CFLAGS += -MDd
 endif
 OS_CFLAGS += -D_CRTDBG_MAP_ALLOC
    else
 ifdef USE_STATIC_RTL
  OS_CFLAGS += -MT
 else
  OS_CFLAGS += -MD
 endif
    endif
    ifdef BUILD_OPT
 ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
  OPTIMIZER += -O1
 else
  OPTIMIZER += -O2
 endif
 DEFINES    += -UDEBUG -DNDEBUG
 DLLFLAGS   += -OUT:$@
 ifdef MOZ_DEBUG_SYMBOLS
  ifdef MOZ_DEBUG_FLAGS
   OPTIMIZER += $(MOZ_DEBUG_FLAGS) -Fd$(OBJDIR)/
  else
   OPTIMIZER += -Zi -Fd$(OBJDIR)/
  endif
  DLLFLAGS += -DEBUG -OPT:REF
  LDFLAGS += -DEBUG -OPT:REF
 endif
    else
 OPTIMIZER += -Zi -Fd$(OBJDIR)/ -Od
 NULLSTRING :=
 DEFINES    += -DDEBUG -UNDEBUG
 DLLFLAGS   += -DEBUG -OUT:$@
 LDFLAGS    += -DEBUG 
ifeq ($(_MSC_VER),$(_MSC_VER_6))
ifndef MOZ_DEBUG_SYMBOLS
 LDFLAGS    += -PDB:NONE 
endif
endif
 # Purify requires /FIXED:NO when linking EXEs.
 LDFLAGS    += /FIXED:NO
 # So the linker will find main in the gtestutil library
 LDFLAGS    += -SUBSYSTEM:CONSOLE
    endif
ifneq ($(_MSC_VER),$(_MSC_VER_6))
    # NSS has too many of these to fix, downgrade the warning
    # Disable C4267: conversion from 'size_t' to 'type', possible loss of data
    # Disable C4244: conversion from 'type1' to 'type2', possible loss of data
    # Disable C4018: 'expression' : signed/unsigned mismatch
    # Disable C4312: 'type cast': conversion from 'type1' to 'type2' of greater size
    OS_CFLAGS += -w44267 -w44244 -w44018 -w44312
    ifeq ($(_MSC_VER_GE_12),1)
 OS_CFLAGS += -FS
    endif
endif # !MSVC6
endif # NS_USE_GCC

ifdef USE_64
DEFINES += -DWIN64
else
DEFINES += -DWIN32
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
#

ifndef IMPORT_LIB_PREFIX
    ifdef NS_USE_GCC
 IMPORT_LIB_PREFIX = lib
    else
 IMPORT_LIB_PREFIX = $(NULL)
    endif
endif

ifndef LIB_PREFIX
    ifdef NS_USE_GCC
 LIB_PREFIX = lib
    else
 LIB_PREFIX = $(NULL)
    endif
endif

ifndef DLL_PREFIX
    DLL_PREFIX =  $(NULL)
endif

#
# override the definitions of various _SUFFIX symbols in suffix.mk
#

#
# Object suffixes
#
ifndef OBJ_SUFFIX
    ifdef NS_USE_GCC
 OBJ_SUFFIX = .o
    else
 OBJ_SUFFIX = .obj
    endif
endif

#
# Assembler source suffixes
#
ifndef ASM_SUFFIX
    ifdef NS_USE_GCC
 ASM_SUFFIX = .s
    else
 ASM_SUFFIX = .asm
    endif
endif

#
# Library suffixes
#

ifndef IMPORT_LIB_SUFFIX
    IMPORT_LIB_SUFFIX = .$(LIB_SUFFIX)
endif

ifndef DYNAMIC_LIB_SUFFIX_FOR_LINKING
    DYNAMIC_LIB_SUFFIX_FOR_LINKING = $(IMPORT_LIB_SUFFIX)
endif

#
# Program suffixes
#
ifndef PROG_SUFFIX
    PROG_SUFFIX = .exe
endif

#
# 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
C=94 H=93 G=93

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge