# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
declare_args() {
# Full path to the Windows SDK, not including a backslash at the end.
windows_sdk_path = "C:\Program Files (x86)\Windows Kits\8.0"
# Full path to the Visual Studio installation, not including a backslash
# at the end.
visual_studio_path = "C:\Program Files (x86)\Microsoft Visual Studio 10.0"
}
# Compiler setup for the Windows SDK. Applied to all targets.
config("sdk") {
# The include path is the stuff returned by the script.
#include_dirs = msvc_config[0] TODO(brettw) make this work.
defines = [
"_ATL_NO_OPENGL",
"_SECURE_ATL",
"_WIN32_WINNT=0x0602",
"_WINDOWS",
"CERT_CHAIN_PARA_HAS_EXTRA_FIELDS",
"NOMINMAX",
"NTDDI_VERSION=0x06020000",
"PSAPI_VERSION=1",
"WIN32",
"WIN32_LEAN_AND_MEAN",
"WINVER=0x0602",
]
# The Windows SDK include directories must be first. They both have a sal.h,
# and the SDK one is newer and the SDK uses some newer features from it not
# present in the Visual Studio one.
include_dirs = [
"$windows_sdk_path\Include\shared",
"$windows_sdk_path\Include\um",
"$windows_sdk_path\Include\winrt",
"$visual_studio_path\VC\include",
"$visual_studio_path\VC\atlmfc\include",
]
}
# Linker flags for Windows SDK setup, this is applied only to EXEs and DLLs.
config("sdk_link") {
if (cpu_arch == "ia64") {
ldflags = [ "/MACHINE:X64" ]
lib_dirs = [
"$windows_sdk_path\Lib\win8\um\x64",
"$visual_studio_path\VC\lib\amd64",
"$visual_studio_path\VC\atlmfc\lib\amd64",
]
} else {
ldflags = [
"/MACHINE:X86",
"/SAFESEH", # Not compatible with x64 so use only for x86.
]
lib_dirs = [
"$windows_sdk_path\Lib\win8\um\x86",
"$visual_studio_path\VC\lib",
"$visual_studio_path\VC\atlmfc\lib",
]
#if (!is_asan) { TODO(brettw) Address Sanitizer
# ldflags += "/largeaddressaware"
#}
}
}
# This default linker setup is provided separately from the SDK setup so
# targets who want different libraries linked can remove this and specify their
# own.
config("common_linker_setup") {
ldflags = [
"/FIXED:NO",
"/ignore:4199",
"/ignore:4221",
"/NXCOMPAT",
]
# ASLR makes debugging with windbg difficult because Chrome.exe and
# Chrome.dll share the same base name. As result, windbg will name the
# Chrome.dll module like chrome_, where
# typically changes with each launch. This in turn means that breakpoints in
# Chrome.dll don't stick from one launch to the next. For this reason, we
# turn ASLR off in debug builds.
if (is_debug) {
ldflags += "/DYNAMICBASE:NO"
} else {
ldflags += "/DYNAMICBASE"
}
# Common libraries.
libs = [
"advapi32.lib",
"comdlg32.lib",
"dbghelp.lib",
"delayimp.lib",
"dnsapi.lib",
"gdi32.lib",
"kernel32.lib",
"msimg32.lib",
"odbc32.lib",
"odbccp32.lib",
"ole32.lib",
"oleaut32.lib",
"psapi.lib",
"shell32.lib",
"shlwapi.lib",
"user32.lib",
"usp10.lib",
"uuid.lib",
"version.lib",
"wininet.lib",
"winmm.lib",
"winspool.lib",
"ws2_32.lib",
]
# Delay loaded DLLs.
ldflags += [
"/DELAYLOAD:dbghelp.dll",
"/DELAYLOAD:dwmapi.dll",
"/DELAYLOAD:shell32.dll",
"/DELAYLOAD:uxtheme.dll",
]
}
# Subsystem --------------------------------------------------------------------
config("console") {
ldflags = [ "/SUBSYSTEM:CONSOLE" ]
}
config("windowed") {
ldflags = [ "/SUBSYSTEM:WINDOWS" ]
}
# Incremental linking ----------------------------------------------------------
config("incremental_linking") {
ldflags = [ "/INCREMENTAL" ]
}
config("no_incremental_linking") {
ldflags = [ "/INCREMENTAL:NO" ]
}