# 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", ] }