summaryrefslogtreecommitdiff
path: root/build_gyp/gyp_pdfium
blob: 23b1c719c29d6692c217f8b65459512867b96b40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/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.
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())