Home | History | Annotate | Download | only in win
      1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # Should only be running on Windows.
      6 assert(is_win)
      7 
      8 # Setup the Visual Studio state.
      9 #
     10 # Its argument is the location to write the environment files.
     11 # It will write "environment.x86" and "environment.x64" to this directory,
     12 # and return a list to us.
     13 #
     14 # The list contains the include path as its only element. (I'm expecting to
     15 # add more so it's currently a list inside a list.)
     16 msvc_config = [["foo"]]
     17 #exec_script("get_msvc_config.py",
     18                      #     [relative_root_output_dir],
     19                      #     "value")
     20 
     21 # 32-bit toolchain -------------------------------------------------------------
     22 
     23 toolchain("32") {
     24   tool("cc") {
     25     command = "ninja -t msvc -e \$arch -- cl.exe /nologo /showIncludes /FC @\$out.rsp /c \$in /Fo\$out /Fd\$pdbname"
     26     description = "CC \$out"
     27     rspfile = "\$out.rsp"
     28     rspfile_content = "\$defines \$includes \$cflags \$cflags_c"
     29     deps = "msvc"
     30   }
     31   tool("cxx") {
     32     command = "ninja -t msvc -e \$arch -- cl.exe /nologo /showIncludes /FC @\$out.rsp /c \$in /Fo\$out /Fd\$pdbname"
     33     description = "CXX \$out"
     34     rspfile = "\$out.rsp"
     35     rspfile_content = "\$defines \$includes \$cflags \$cflags_cc"
     36     deps = "msvc"
     37   }
     38   #tool("idl") {
     39   #  command = $python_path gyp-win-tool midl-wrapper \$arch \$outdir \$tlb \$h \$dlldata \$iid \$
     40   #      \$proxy \$in \$idlflags
     41   #  description = IDL \$in
     42   #}
     43   #tool("rc") {
     44   #  command = $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$defines \$includes \$rcflags \$
     45   #      /fo\$out \$in
     46   #  description = RC \$in
     47   #}
     48   #tool("asm") {
     49   #  command = $python_path gyp-win-tool asm-wrapper \$arch ml.exe \$defines \$includes /c /Fo \$
     50   #      \$out \$in
     51   #  description = ASM \$in
     52   #}
     53   tool("alink") {
     54     command = "$python_path gyp-win-tool link-wrapper \$arch lib.exe /nologo /ignore:4221 /OUT:\$out @\$out.rsp"
     55     description = "LIB \$out"
     56     rspfile = "\$out.rsp"
     57     rspfile_content = "\$in_newline \$libflags"
     58   }
     59   #tool("solink_embed_inc") {
     60   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
     61   #      /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
     62   #      manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
     63   #      $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
     64   #      -out:\$dll.manifest && $python_path gyp-win-tool manifest-to-rc \$arch \$dll.manifest \$
     65   #      \$dll.manifest.rc 2 && $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$
     66   #      \$dll.manifest.rc && $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$
     67   #      \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp \$dll.manifest.res
     68   #  description = LINK_EMBED_INC(DLL) \$dll
     69   #  restat = 1
     70   #  rspfile = \$dll.rsp
     71   #  rspfile_content = \$libs \$in_newline \$ldflags
     72   #}
     73   #tool("solink_module_embed_inc") {
     74   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
     75   #      /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
     76   #      manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
     77   #      $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
     78   #      -out:\$dll.manifest && $python_path gyp-win-tool manifest-to-rc \$arch \$dll.manifest \$
     79   #      \$dll.manifest.rc 2 && $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$
     80   #      \$dll.manifest.rc && $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$
     81   #      \$implibflag /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp \$dll.manifest.res
     82   #  description = LINK_EMBED_INC(DLL) \$dll
     83   #  restat = 1
     84   #  rspfile = \$dll.rsp
     85   #  rspfile_content = \$libs \$in_newline \$ldflags
     86   #}
     87   #rule link_embed_inc
     88   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out \$
     89   #      /PDB:\$out.pdb @\$out.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c \$
     90   #      if exist \$out.manifest del \$out.manifest && $python_path gyp-win-tool \$
     91   #      manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -out:\$out.manifest && \$
     92   #      $python_path gyp-win-tool manifest-to-rc \$arch \$out.manifest \$out.manifest.rc 1 && \$
     93   #      $python_path gyp-win-tool rc-wrapper \$arch rc.exe \$out.manifest.rc && \$
     94   #      $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out /PDB:\$out.pdb \$
     95   #      @\$out.rsp \$out.manifest.res
     96   #  description = LINK_EMBED_INC \$out
     97   #  rspfile = \$out.rsp
     98   #  rspfile_content = \$in_newline \$libs \$ldflags
     99   #rule solink_embed
    100   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
    101   #      /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
    102   #      manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
    103   #      $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
    104   #      -outputresource:\$dll;2
    105   #  description = LINK_EMBED(DLL) \$dll
    106   #  restat = 1
    107   #  rspfile = \$dll.rsp
    108   #  rspfile_content = \$libs \$in_newline \$ldflags
    109   #rule solink_module_embed
    110   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo \$implibflag \$
    111   #      /DLL /OUT:\$dll /PDB:\$dll.pdb @\$dll.rsp && $python_path gyp-win-tool \$
    112   #      manifest-wrapper \$arch cmd /c if exist \$dll.manifest del \$dll.manifest && \$
    113   #      $python_path gyp-win-tool manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests \$
    114   #      -outputresource:\$dll;2
    115   #  description = LINK_EMBED(DLL) \$dll
    116   #  restat = 1
    117   #  rspfile = \$dll.rsp
    118   #  rspfile_content = \$libs \$in_newline \$ldflags
    119   #rule link_embed
    120   #  command = cmd /c $python_path gyp-win-tool link-wrapper \$arch link.exe /nologo /OUT:\$out \$
    121   #      /PDB:\$out.pdb @\$out.rsp && $python_path gyp-win-tool manifest-wrapper \$arch cmd /c \$
    122   #      if exist \$out.manifest del \$out.manifest && $python_path gyp-win-tool \$
    123   #      manifest-wrapper \$arch mt.exe -nologo -manifest \$manifests -outputresource:\$out;1
    124   #  description = LINK_EMBED \$out
    125   #  rspfile = \$out.rsp
    126   #  rspfile_content = \$in_newline \$libs \$ldflags
    127   tool("solink") {
    128     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"
    129     description = "LINK(DLL) \$dll"
    130     restat = "1"
    131     rspfile = "\$dll.rsp"
    132     rspfile_content = "\$libs \$in_newline \$ldflags"
    133   }
    134   tool("solink_module") {
    135     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"
    136     description = "LINK(DLL) \$dll"
    137     restat = "1"
    138     rspfile = "\$dll.rsp"
    139     rspfile_content = "\$libs \$in_newline \$ldflags"
    140   }
    141   tool("link") {
    142     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"
    143     description = "LINK \$out"
    144     rspfile = "\$out.rsp"
    145     rspfile_content = "\$in_newline \$libs \$ldflags"
    146   }
    147   tool("stamp") {
    148     command = "$python_path gyp-win-tool stamp \$out"
    149     description = "STAMP \$out"
    150   }
    151   tool("copy") {
    152     command = "$python_path gyp-win-tool recursive-mirror \$in \$out"
    153     description = "COPY \$in \$out"
    154   }
    155 }
    156 
    157 # 64-bit toolchain -------------------------------------------------------------
    158 
    159 toolchain("64") {
    160 }
    161 
    162 # SDK setup --------------------------------------------------------------------
    163 
    164 config("sdk") {
    165   # The include path is the stuff returned by the script plus out own WTL
    166   # checkout.
    167   # TODO(brettw) should adding WTL be at this level or should it be more on
    168   # a per-project basis?
    169   includes = msvc_config[0] + "../../third_party/wtl/include"
    170 
    171   defines = [
    172     "_ATL_NO_OPENGL",
    173     "_SECURE_ATL",
    174     "_WIN32_WINNT=0x0602",
    175     "_WINDOWS",
    176     "CERT_CHAIN_PARA_HAS_EXTRA_FIELDS",
    177     "NOMINMAX",
    178     "NTDDI_VERSION=0x06020000",
    179     "PSAPI_VERSION=1",
    180     "WIN32",
    181     "WIN32_LEAN_AND_MEAN",
    182     "WINVER=0x0602",
    183   ]
    184 }
    185