| #!/usr/bin/env python |
| # |
| # Copyright 2014 PDFium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This script is wrapper for PDFium that adds some support for how GYP |
| # is invoked by PDFium beyond what can be done in the gclient hooks. |
| |
| import os |
| import platform |
| import sys |
| |
| script_dir = os.path.dirname(os.path.realpath(__file__)) |
| pdfium_root = os.path.abspath(os.path.join(script_dir, os.pardir)) |
| output_rel_dir = 'out' |
| |
| sys.path.insert(0, os.path.join(pdfium_root, 'tools', 'gyp', 'pylib')) |
| import gyp |
| |
| # vs_toolchain needs to be after gyp path setting since it also uses gyp. |
| sys.path.insert(0, os.path.join(pdfium_root, 'build')) |
| import vs_toolchain |
| |
| def run_gyp(args): |
| rc = gyp.main(args) |
| |
| # Copy Windows toolchain DLLs. |
| vs_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs() |
| if vs_runtime_dll_dirs: |
| x64_runtime, x86_runtime = vs_runtime_dll_dirs |
| vs_toolchain.CopyVsRuntimeDlls( |
| os.path.join(pdfium_root, output_rel_dir), (x86_runtime, x64_runtime)) |
| |
| if rc != 0: |
| print 'Error running GYP' |
| sys.exit(rc) |
| |
| |
| def main(): |
| if int(os.environ.get('GYP_PDFIUM_NO_ACTION', 0)): |
| print 'Skipping gyp_pdfium due to GYP_PDFIUM_NO_ACTION env var.' |
| sys.exit(0) |
| |
| args = sys.argv[1:] |
| args.append(os.path.join(pdfium_root, 'build_gyp', 'all.gyp')) |
| |
| args.append('-I') |
| args.append(os.path.join(pdfium_root, 'build_gyp', 'standalone.gypi')) |
| |
| args.extend(['-D', 'gyp_output_dir=' + output_rel_dir]) |
| |
| # Set the GYP DEPTH variable to the root of the PDFium project. |
| args.append('--depth=' + os.path.relpath(pdfium_root)) |
| |
| # GYP does not default to ninja, but PDFium should. |
| if not os.environ.get('GYP_GENERATORS', ''): |
| print 'GYP_GENERATORS is not set, defaulting to ninja' |
| os.environ['GYP_GENERATORS'] = 'ninja' |
| |
| # Set up the environment variables. |
| vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs() |
| |
| print 'Updating projects from gyp files...' |
| sys.stdout.flush() |
| |
| run_gyp(args) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |