#!/usr/bin/env python import optparse import os import pprint import re import shlex import subprocess import sys root_dir = os.path.dirname(__file__) # parse our options parser = optparse.OptionParser() parser.add_option("--debug", action="store_true", dest="debug", help="Also build debug build") parser.add_option("--pkg-config-root", action="store", dest="pkgconfig_root", help="Path to pkg-config directory") parser.add_option("--boost", action="store", dest="boost_root", help="Path to boost (defaults to /usr/local)") (options, args) = parser.parse_args() def pkg_config(pkg, pkgconfig_root): env = os.environ.copy() if pkgconfig_root: env["PKG_CONFIG_PATH"] = pkgconfig_root cmd = subprocess.Popen(['pkg-config', '--static', '--libs', pkg], stdout=subprocess.PIPE, env=env) libs, ret = cmd.communicate() if (ret): return None cmd = subprocess.Popen(['pkg-config', '--cflags', pkg], stdout=subprocess.PIPE, env=env) cflags, red = cmd.communicate() if (ret): return None return (libs, cflags) def configure_llmr(o): if options.boost_root: o['variables']['boost_root'] = options.boost_root else: o['variables']['boost_root'] = '/usr/local' o['target_defaults']['default_configuration'] = 'Debug' if options.debug else 'Release' def configure_glfw3(o): ret = pkg_config('glfw3', options.pkgconfig_root) if not ret: sys.stderr.write('could not find glfw3 with pkg-config') sys.exit(-1) o['variables']['glfw3_libraries'] = ret[0].split() o['variables']['glfw3_cflags'] = ret[1].split() def configure_uv(o): ret = pkg_config('libuv', options.pkgconfig_root) if not ret: sys.stderr.write('could not find uv with pkg-config') sys.exit(-1) o['variables']['uv_libraries'] = ret[0].split() o['variables']['uv_cflags'] = ret[1].split() def configure_png(o): ret = pkg_config('libpng', options.pkgconfig_root) if not ret: sys.stderr.write('could not find png with pkg-config') sys.exit(-1) o['variables']['png_libraries'] = ret[0].split() o['variables']['png_cflags'] = ret[1].split() def configure_curl(o): ret = pkg_config('libcurl', options.pkgconfig_root) if not ret: sys.stderr.write('could not find curl with pkg-config') sys.exit(-1) o['variables']['curl_libraries'] = ret[0].split() o['variables']['curl_cflags'] = ret[1].split() def write(filename, data): filename = os.path.join(root_dir, filename) print "creating ", filename f = open(filename, 'w+') f.write(data) output = { 'variables': { 'python': sys.executable }, 'target_defaults' : { 'include_dirs': [], 'libraries': [], 'defines': [], 'cflags': [] } } if __name__ == '__main__': configure_llmr(output) configure_glfw3(output) configure_uv(output) configure_png(output) configure_curl(output) pprint.pprint(output, indent=2) write('config.gypi', "# Do not edit. Generated by the configure script.\n" + pprint.pformat(output, indent=2) + "\n") config = { 'BUILDTYPE': 'Debug' if options.debug else 'Release', 'PYTHON': sys.executable, } config = '\n'.join(map('='.join, config.iteritems())) + '\n' write('config.mk', '# Do not edit. Generated by the configure script.\n' + config)