# -*- makefile -*-
#
# mv.nmk: NMAKE FRAGMENT FOR MICROSOFT VISUAL C/C++
#
# $Id: //info.ravenbrook.com/project/mps/master/code/mv.nmk#6 $
# Copyright (c) 2014-2020 Ravenbrook Limited.  See end of file for license.
#
# This file is included by platform nmake files that use the Microsoft
# Visual C/C+ compiler. It defines the compiler-specific variables
# that the common nmake file fragment (<code/commpost.nmk>) requires.

CC = cl
LIBMAN = lib
LINKER = link

# /D_CRT_SECURE_NO_WARNINGS suppresses "This function or variable may
# be unsafe" warnings for standard C library functions fopen, getenv,
# snprintf, sscanf, strcpy, and so on.
#
# /Gs appears to be necessary to suppress stack checks.  Stack checks
# (if not suppressed) generate a dependency on the C library, __chkesp,
# which causes the linker step to fail when building the DLL, mpsdy.dll.
#
# /W4 /WX might be enabled by clients <design/config/#.warning.impl>.
CFLAGSCOMMONPRE = $(CFLAGSCOMMONPRE) /D_CRT_SECURE_NO_WARNINGS /W4 /WX /Gs /Fd$(PFM)\$(VARIETY)
LIBFLAGSCOMMON = $(LIBFLAGSCOMMON) /nologo

# /MD means compile for multi-threaded environment with separate C library DLL.
# /MT means compile for multi-threaded environment.
# /ML means compile for single-threaded environment.
# A 'd' at the end means compile for debugging.
CRTFLAGSHOT = $(CRTFLAGSHOT) /MT
CRTFLAGSCOOL = $(CRTFLAGSCOOL) /MTd

CFLAGSCOOL = $(CFLAGSCOOL) /Od

LINKFLAGSCOMMON = $(LINKFLAGSCOMMON) /PDB:$*.pdb
LINKFLAGSHOT = $(LINKFLAGSHOT) libcmt.lib
LINKFLAGSCOOL = $(LINKFLAGSCOOL) libcmtd.lib


# C. COPYRIGHT AND LICENSE
#
# Copyright (C) 2001-2020 Ravenbrook Limited <https://www.ravenbrook.com/>.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.