Home | History | Annotate | Download | only in swig
      1 #!/usr/bin/env python
      2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 """Wrapper around swig.
      7 
      8 Sets the SWIG_LIB environment var to point to Lib dir
      9 and defers control to the platform-specific swig binary.
     10 
     11 Depends on swig binaries being available at ../../third_party/swig.
     12 """
     13 
     14 import os
     15 import subprocess
     16 import sys
     17 
     18 
     19 def main():
     20   swig_dir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]),
     21                              os.pardir, os.pardir, 'third_party', 'swig'))
     22   lib_dir = os.path.join(swig_dir, "Lib")
     23   os.putenv("SWIG_LIB", lib_dir)
     24   dir_map = {
     25       'darwin': 'mac',
     26       'linux2': 'linux',
     27       'linux3': 'linux',
     28       'win32':  'win',
     29   }
     30   # Swig documentation lies that platform macros are provided to swig
     31   # preprocessor. Provide them ourselves.
     32   platform_flags = {
     33       'darwin': '-DSWIGMAC',
     34       'linux2': '-DSWIGLINUX',
     35       'linux3': '-DSWIGLINUX',
     36       'win32':  '-DSWIGWIN',
     37   }
     38   swig_bin = os.path.join(swig_dir, dir_map[sys.platform], 'swig')
     39   args = [swig_bin, platform_flags[sys.platform]] + sys.argv[1:]
     40   args = [x.replace('/', os.sep) for x in args]
     41   return subprocess.call(args)
     42 
     43 
     44 if __name__ == "__main__":
     45   sys.exit(main())
     46