blob: 955504a5ef397350d8dca1019bad7df110d24c1c [file] [log] [blame]
# 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.
# Should only be running on Windows.
assert(is_win)
# Setup the Visual Studio state.
#
# Its argument is the location to write the environment files.
# It will write "environment.x86" and "environment.x64" to this directory,
# and return a list to us.
#
# The list contains the include path as its only element. (I'm expecting to
# add more so it's currently a list inside a list.)
msvc_config = [["foo"]]
#exec_script("get_msvc_config.py",
# [relative_root_output_dir],
# "value")
# 32-bit toolchain -------------------------------------------------------------
toolchain("32") {
tool("cc") {
command = "ninja -t msvc -e \$arch -- cl.exe /nologo /showIncludes /FC @\$out.rsp /c \$in /Fo\$out /Fd\$pdbname"
description = "CC \$out"
rspfile = "\$out.rsp"
rspfile_content = "\$defines \$includes \$cflags \$cflags_c"
deps = "msvc"
}
tool("cxx") {
command = "ninja -t msvc -e \$arch -- cl.exe /nologo /showIncludes /FC @\$out.rsp /c \$in /Fo\$out /Fd\$pdbname"
description = "CXX \$out"
rspfile = "\$out.rsp"
rspfile_content = "\$defines \$includes \$cflags \$cflags_cc"
deps = "msvc"
}
#tool("idl") {
# command = $python_path gyp-win-tool midl-wrapper \$arch \$outdir \$tlb \$h \$dlldata \$iid \$
# \$proxy \$in \$idlflags
# description = IDL \$in
#}
#tool("rc") {
# command = $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$defines \$includes \$rcflags \$
# /fo\$out \$in
# description = RC \$in
#}
#tool("asm") {
# command = $python_path gyp-win-tool asm-wrapper \$arch ml.exe \$defines \$includes /c /Fo \$
# \$out \$in
# description = ASM \$in
#}
tool("alink") {
command = "$python_path gyp-win-tool link-wrapper \$arch lib.exe /nologo /ignore:4221 /OUT:\$out @\$out.rsp"
description = "LIB \$out"
rspfile = "\$out.rsp"
rspfile_content = "\$in_newline \$libflags"
}
#tool("solink_embed_inc") {
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
# /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
# manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
# $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
# -out:\$dll.manifest && $python_path gyp-win-tool manifest-to-rc \$arch \$dll.manifest \$
# \$dll.manifest.rc 2 && $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$
# \$dll.manifest.rc && $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$
# \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp \$dll.manifest.res
# description = LINK_EMBED_INC(DLL) \$dll
# restat = 1
# rspfile = \$dll.rsp
# rspfile_content = \$libs \$in_newline \$ldflags
#}
#tool("solink_module_embed_inc") {
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
# /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
# manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
# $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
# -out:\$dll.manifest && $python_path gyp-win-tool manifest-to-rc \$arch \$dll.manifest \$
# \$dll.manifest.rc 2 && $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$
# \$dll.manifest.rc && $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$
# \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp \$dll.manifest.res
# description = LINK_EMBED_INC(DLL) \$dll
# restat = 1
# rspfile = \$dll.rsp
# rspfile_content = \$libs \$in_newline \$ldflags
#}
#rule link_embed_inc
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out \$
# /PDB:\$out.pdb @\$out.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c \$
# if exist \$out.manifest del \$out.manifest && $python_path gyp-win-tool \$
# manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -out:\$out.manifest && \$
# $python_path gyp-win-tool manifest-to-rc \$arch \$out.manifest \$out.manifest.rc 1 && \$
# $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$out.manifest.rc && \$
# $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out /PDB:\$out.pdb \$
# @\$out.rsp \$out.manifest.res
# description = LINK_EMBED_INC \$out
# rspfile = \$out.rsp
# rspfile_content = \$in_newline \$libs \$ldflags
#rule solink_embed
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
# /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
# manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
# $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
# -outputresource:\$dll;2
# description = LINK_EMBED(DLL) \$dll
# restat = 1
# rspfile = \$dll.rsp
# rspfile_content = \$libs \$in_newline \$ldflags
#rule solink_module_embed
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
# /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
# manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
# $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
# -outputresource:\$dll;2
# description = LINK_EMBED(DLL) \$dll
# restat = 1
# rspfile = \$dll.rsp
# rspfile_content = \$libs \$in_newline \$ldflags
#rule link_embed
# command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out \$
# /PDB:\$out.pdb @\$out.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c \$
# if exist \$out.manifest del \$out.manifest && $python_path gyp-win-tool \$
# manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -outputresource:\$out;1
# description = LINK_EMBED \$out
# rspfile = \$out.rsp
# rspfile_content = \$in_newline \$libs \$ldflags
tool("solink") {
command = "cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -out:\$dll.manifest"
description = "LINK(DLL) \$dll"
restat = "1"
rspfile = "\$dll.rsp"
rspfile_content = "\$libs \$in_newline \$ldflags"
}
tool("solink_module") {
command = "cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -out:\$dll.manifet"
description = "LINK(DLL) \$dll"
restat = "1"
rspfile = "\$dll.rsp"
rspfile_content = "\$libs \$in_newline \$ldflags"
}
tool("link") {
command = "cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out /PDB:\$out.pdb @\$out.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c if exist \$out.manifest del \$out.manifest && $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -out:\$out.manifest"
description = "LINK \$out"
rspfile = "\$out.rsp"
rspfile_content = "\$in_newline \$libs \$ldflags"
}
tool("stamp") {
command = "$python_path gyp-win-tool stamp \$out"
description = "STAMP \$out"
}
tool("copy") {
command = "$python_path gyp-win-tool recursive-mirror \$in \$out"
description = "COPY \$in \$out"
}
}
# 64-bit toolchain -------------------------------------------------------------
toolchain("64") {
}
# SDK setup --------------------------------------------------------------------
config("sdk") {
# The include path is the stuff returned by the script plus out own WTL
# checkout.
# TODO(brettw) should adding WTL be at this level or should it be more on
# a per-project basis?
includes = msvc_config[0] + "../../third_party/wtl/include"
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",
]
}