10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# Copyright (C) 2009 Kevin Ollivier All rights reserved. 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# Redistribution and use in source and binary forms, with or without 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# modification, are permitted provided that the following conditions 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# are met: 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 1. Redistributions of source code must retain the above copyright 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# notice, this list of conditions and the following disclaimer. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 2. Redistributions in binary form must reproduce the above copyright 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# notice, this list of conditions and the following disclaimer in the 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# documentation and/or other materials provided with the distribution. 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22cad810f21b803229eb11403f9209855525a25d57Steve Block# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# Common elements of the waf build system shared by all projects. 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochimport commands 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochimport os 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochimport platform 29231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockimport re 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochimport sys 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockimport Options 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfrom build_utils import * 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfrom waf_extensions import * 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch# to be moved to wx when it supports more configs 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochfrom wxpresets import * 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochwk_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../..')) 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif sys.platform.startswith('win'): 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if not 'WXWIN' in os.environ: 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch print "Please set WXWIN to the directory containing wxWidgets." 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch sys.exit(1) 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wx_root = os.environ['WXWIN'] 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochelse: 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch wx_root = commands.getoutput('wx-config --prefix') 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 51cad810f21b803229eb11403f9209855525a25d57Steve Blockjscore_dir = os.path.join(wk_root, 'Source', 'JavaScriptCore') 52cad810f21b803229eb11403f9209855525a25d57Steve Blockwebcore_dir = os.path.join(wk_root, 'Source', 'WebCore') 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochwklibs_dir = os.path.join(wk_root, 'WebKitLibraries') 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_defines = [] 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_cxxflags = [] 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_includes = [] 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_libs = [] 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_libpaths = [] 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochcommon_frameworks = [] 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockports = [ 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 'Brew', 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'Chromium', 65cad810f21b803229eb11403f9209855525a25d57Steve Block 'Gtk', 66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'Haiku', 67cad810f21b803229eb11403f9209855525a25d57Steve Block 'Mac', 68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'None', 69231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'Qt', 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'Safari', 71cad810f21b803229eb11403f9209855525a25d57Steve Block 'Win', 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'Wince', 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 'wx', 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block] 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockport_uses = { 77d0825bca7fe65beaee391d30da42e937db621564Steve Block 'wx': ['CURL', 'WXGC'], 78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochjscore_dirs = [ 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'API', 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'bytecode', 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'bytecompiler', 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'debugger', 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'DerivedSources', 862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 'heap', 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'interpreter', 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'jit', 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'parser', 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'profiler', 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'runtime', 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'wtf', 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 'wtf/text', 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'wtf/unicode', 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'wtf/unicode/icu', 965e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 'yarr', 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch] 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochwebcore_dirs = [ 100cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/accessibility', 101cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bindings', 102cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bindings/cpp', 103cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bindings/generic', 104cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bindings/js', 105cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bridge', 106cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bridge/c', 107cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/bridge/jsc', 108cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/css', 109cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/DerivedSources', 110cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/dom', 111cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/dom/default', 112cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/editing', 113cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/fileapi', 114cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/history', 115cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/html', 116cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/html/canvas', 117cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/html/parser', 1182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 'Source/WebCore/html/shadow', 119cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/inspector', 120cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/loader', 121cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/loader/appcache', 122cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/loader/archive', 123cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/loader/cache', 124cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/loader/icon', 125cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/notifications', 126cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/page', 127cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/page/animation', 128cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform', 129cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/animation', 130cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/graphics', 131cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/graphics/filters', 132cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/graphics/transforms', 133cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders', 134cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/bmp', 135cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/gif', 136cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/ico', 137cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/jpeg', 138cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/png', 139cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/image-decoders/webp', 140cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/mock', 141cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/network', 142cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/sql', 143cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/text', 144cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/platform/text/transcoder', 145cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/plugins', 146cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/rendering', 147cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/rendering/style', 148cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/rendering/svg', 149cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/storage', 150cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/svg', 151cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/svg/animation', 152cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/svg/graphics', 153cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/svg/graphics/filters', 154cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/svg/properties', 155cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/websockets', 156cad810f21b803229eb11403f9209855525a25d57Steve Block 'Source/WebCore/xml', 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch] 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 159cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockconfig = get_config(wk_root) 160cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockconfig_dir = config + git_branch_name() 161231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 162231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockoutput_dir = os.path.join(wk_root, 'WebKitBuild', config_dir) 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbuild_port = "wx" 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbuilding_on_win32 = sys.platform.startswith('win') 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 167231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockdef get_config(): 168231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block waf_configname = config.upper().strip() 169231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if building_on_win32: 170231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block isReleaseCRT = (config == 'Release') 171231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if build_port == 'wx': 172231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if Options.options.wxpython: 173231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block isReleaseCRT = True 174cad810f21b803229eb11403f9209855525a25d57Steve Block 175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if isReleaseCRT: 176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL' 177231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else: 178231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL_DBG' 1790617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 180231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return waf_configname 1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 182cad810f21b803229eb11403f9209855525a25d57Steve Blockcreate_hash_table = wk_root + "/Source/JavaScriptCore/create_hash_table" 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochif building_on_win32: 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch create_hash_table = get_output('cygpath --unix "%s"' % create_hash_table) 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochos.environ['CREATE_HASH_TABLE'] = create_hash_table 1860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1870617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenfeature_defines = ['ENABLE_DATABASE', 'ENABLE_XSLT', 'ENABLE_JAVASCRIPT_DEBUGGER', 1880617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 'ENABLE_SVG', 'ENABLE_SVG_USE', 'ENABLE_FILTERS', 'ENABLE_SVG_FONTS', 1890617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 'ENABLE_SVG_ANIMATION', 'ENABLE_SVG_AS_IMAGE', 'ENABLE_SVG_FOREIGN_OBJECT', 1902bde8e466a4451c7319e3a072d118917957d6554Steve Block 'ENABLE_DOM_STORAGE', 'BUILDING_%s' % build_port.upper()] 1910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 192231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockmsvc_version = 'msvc2008' 193231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 194231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockmsvclibs_dir = os.path.join(wklibs_dir, msvc_version, 'win') 195231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 196231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockdef get_path_to_wxconfig(): 197231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if 'WX_CONFIG' in os.environ: 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return os.environ['WX_CONFIG'] 199231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else: 200231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return 'wx-config' 201231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochdef common_set_options(opt): 2030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch """ 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Initialize common options provided to the user. 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch """ 2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.tool_options('compiler_cxx') 2070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.tool_options('compiler_cc') 2080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.tool_options('python') 209cad810f21b803229eb11403f9209855525a25d57Steve Block 2100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch opt.add_option('--wxpython', action='store_true', default=False, help='Create the wxPython bindings.') 211231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block opt.add_option('--wx-compiler-prefix', action='store', default='vc', 212231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block help='Specify a different compiler prefix (do this if you used COMPILER_PREFIX when building wx itself)') 213cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block opt.add_option('--macosx-version', action='store', default='', help="Version of OS X to build for.") 214e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke opt.add_option('--msvc-version', action='store', default='', help="MSVC version to use to build. Use 8 for 2005, 9 for 2008") 2150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochdef common_configure(conf): 2170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch """ 2180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Configuration used by all targets, called from the target's configure() step. 2190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch """ 220cad810f21b803229eb11403f9209855525a25d57Steve Block 221231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.env['MSVC_TARGETS'] = ['x86'] 222cad810f21b803229eb11403f9209855525a25d57Steve Block 223e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke if Options.options.msvc_version and Options.options.msvc_version != '': 224e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke print "msvc version = %s" % Options.options.msvc_version 225e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke conf.env['MSVC_VERSIONS'] = ['msvc %s.0' % Options.options.msvc_version] 226e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke else: 227e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke print "msvc not set!" 228e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke conf.env['MSVC_VERSIONS'] = ['msvc 9.0', 'msvc 8.0'] 229cad810f21b803229eb11403f9209855525a25d57Steve Block 230231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if sys.platform.startswith('cygwin'): 231231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block print "ERROR: You must use the Win32 Python from python.org, not Cygwin Python, when building on Windows." 232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block sys.exit(1) 233cad810f21b803229eb11403f9209855525a25d57Steve Block 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.check_tool('compiler_cxx') 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.check_tool('compiler_cc') 236cad810f21b803229eb11403f9209855525a25d57Steve Block 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if sys.platform.startswith('darwin'): 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.check_tool('osx') 239cad810f21b803229eb11403f9209855525a25d57Steve Block 240231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block global msvc_version 241231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block global msvclibs_dir 242cad810f21b803229eb11403f9209855525a25d57Steve Block 24321939df44de1705786c545cd1bf519d47250322dBen Murdoch libprefix = '' 24421939df44de1705786c545cd1bf519d47250322dBen Murdoch 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if building_on_win32: 24621939df44de1705786c545cd1bf519d47250322dBen Murdoch libprefix = 'lib' 24721939df44de1705786c545cd1bf519d47250322dBen Murdoch 248e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke found = conf.get_msvc_versions() 249e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke found_versions = [] 250e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke for version in found: 251e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke found_versions.append(version[0]) 252cad810f21b803229eb11403f9209855525a25d57Steve Block 253e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke if 'msvc 9.0' in conf.env['MSVC_VERSIONS'] and 'msvc 9.0' in found_versions: 2540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch msvc_version = 'msvc2008' 255e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke elif 'msvc 8.0' in conf.env['MSVC_VERSIONS'] and 'msvc 8.0' in found_versions: 2560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch msvc_version = 'msvc2005' 257cad810f21b803229eb11403f9209855525a25d57Steve Block 2580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch msvclibs_dir = os.path.join(wklibs_dir, msvc_version, 'win') 259cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 260cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # Disable several warnings which occur many times during the build. 261cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # Some of them are harmless (4099, 4344, 4396, 4800) and working around 262cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # them in WebKit code is probably just not worth it. We can simply do 263cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # nothing about the others (4503). A couple are possibly valid but 264cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # there are just too many of them in the code so fixing them is 265cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # impossible in practice and just results in tons of distracting output 266cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # (4244, 4291). Finally 4996 is actively harmful as it is given for 267cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # just about any use of standard C/C++ library facilities. 268cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('CXXFLAGS', [ 269cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4099', # type name first seen using 'struct' now seen using 'class' 270cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4244', # conversion from 'xxx' to 'yyy', possible loss of data: 271cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4291', # no matching operator delete found (for placement new) 272cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4344', # behaviour change in template deduction 273cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4396', # inline can't be used in friend declaration 274cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4503', # decorated name length exceeded, name was truncated 275cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4800', # forcing value to bool 'true' or 'false' 276cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block '/wd4996', # deprecated function 277cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block ]) 278cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 279cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # This one also occurs in C code, so disable it there as well. 280cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('CCFLAGS', ['/wd4996']) 281cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if build_port == "wx": 283231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block update_wx_deps(conf, wk_root, msvc_version) 284cad810f21b803229eb11403f9209855525a25d57Steve Block 285d0825bca7fe65beaee391d30da42e937db621564Steve Block conf.env.append_value('CXXDEFINES', ['BUILDING_WX__=1', 'JS_NO_EXPORT']) 2860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if building_on_win32: 2880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('LIBPATH', os.path.join(msvclibs_dir, 'lib')) 2890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch # wx settings 290231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block global config 291231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block is_debug = (config == 'Debug') 292231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block wxdefines, wxincludes, wxlibs, wxlibpaths = get_wxmsw_settings(wx_root, shared=True, unicode=True, debug=is_debug, wxPython=Options.options.wxpython) 2930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['CXXDEFINES_WX'] = wxdefines 2940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['CPPPATH_WX'] = wxincludes 2950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_WX'] = wxlibs 2960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIBPATH_WX'] = wxlibpaths 297cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 2980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if sys.platform.startswith('darwin'): 2990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_ICU'] = ['icucore'] 300cad810f21b803229eb11403f9209855525a25d57Steve Block 3010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CPPPATH', wklibs_dir) 3020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('LIBPATH', wklibs_dir) 303cad810f21b803229eb11403f9209855525a25d57Steve Block 304cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block min_version = None 305cad810f21b803229eb11403f9209855525a25d57Steve Block 306231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block mac_target = 'MACOSX_DEPLOYMENT_TARGET' 307cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if Options.options.macosx_version != '': 308cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block min_version = Options.options.macosx_version 309cad810f21b803229eb11403f9209855525a25d57Steve Block 310cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block # WebKit only supports 10.4+, but ppc systems often set this to earlier systems 311cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if not min_version: 312cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block min_version = commands.getoutput('sw_vers -productVersion')[:4] 313cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if min_version in ['10.1','10.2','10.3']: 314cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block min_version = '10.4' 315cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 316cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block sdk_version = min_version 317cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if min_version == "10.4": 318cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block sdk_version += "u" 319f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick conf.env.append_value('LIB_WKINTERFACE', ['WebKitSystemInterfaceTiger']) 32021939df44de1705786c545cd1bf519d47250322dBen Murdoch else: 32121939df44de1705786c545cd1bf519d47250322dBen Murdoch # NOTE: There is a WebKitSystemInterfaceSnowLeopard, but when we use that 32221939df44de1705786c545cd1bf519d47250322dBen Murdoch # on 10.6, we get a strange missing symbol error, and this library seems to 32321939df44de1705786c545cd1bf519d47250322dBen Murdoch # work fine for wx's purposes. 324f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick conf.env.append_value('LIB_WKINTERFACE', ['WebKitSystemInterfaceLeopard']) 325cad810f21b803229eb11403f9209855525a25d57Steve Block 326cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block sdkroot = '/Developer/SDKs/MacOSX%s.sdk' % sdk_version 327cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block sdkflags = ['-arch', 'i386', '-isysroot', sdkroot] 328cad810f21b803229eb11403f9209855525a25d57Steve Block 329cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('CPPFLAGS', sdkflags) 330cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('LINKFLAGS', sdkflags) 3312bde8e466a4451c7319e3a072d118917957d6554Steve Block 3322bde8e466a4451c7319e3a072d118917957d6554Steve Block conf.env.append_value('LINKFLAGS', ['-framework', 'Security']) 3332bde8e466a4451c7319e3a072d118917957d6554Steve Block 334cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('CPPPATH_SQLITE3', [os.path.join(wklibs_dir, 'WebCoreSQLite3')]) 335cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.env.append_value('LIB_SQLITE3', ['WebCoreSQLite3']) 336cad810f21b803229eb11403f9209855525a25d57Steve Block 3372bde8e466a4451c7319e3a072d118917957d6554Steve Block # NOTE: The order here is important, because python sets the MACOSX_DEPLOYMENT_TARGET to 3382bde8e466a4451c7319e3a072d118917957d6554Steve Block # 10.3 even on intel. So we must first set the SDK and arch flags, then load Python's config, 3392bde8e466a4451c7319e3a072d118917957d6554Steve Block # and finally override the value Python set for MACOSX_DEPLOYMENT_TARGET 3402bde8e466a4451c7319e3a072d118917957d6554Steve Block if Options.options.wxpython: 3412bde8e466a4451c7319e3a072d118917957d6554Steve Block conf.check_tool('python') 3422bde8e466a4451c7319e3a072d118917957d6554Steve Block conf.check_python_headers() 3432bde8e466a4451c7319e3a072d118917957d6554Steve Block 3442bde8e466a4451c7319e3a072d118917957d6554Steve Block if sys.platform.startswith('darwin'): 3452bde8e466a4451c7319e3a072d118917957d6554Steve Block os.environ[mac_target] = conf.env[mac_target] = min_version 3462bde8e466a4451c7319e3a072d118917957d6554Steve Block 3470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CXXDEFINES', feature_defines) 3480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if config == 'Release': 3490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CPPDEFINES', 'NDEBUG') 350cad810f21b803229eb11403f9209855525a25d57Steve Block 3510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if building_on_win32: 3520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CPPPATH', [ 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch os.path.join(jscore_dir, 'os-win32'), 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch os.path.join(msvclibs_dir, 'include'), 3550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch os.path.join(msvclibs_dir, 'include', 'pthreads'), 3560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch os.path.join(msvclibs_dir, 'lib'), 3570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ]) 358cad810f21b803229eb11403f9209855525a25d57Steve Block 3590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('LIB', ['libpng', 'libjpeg', 'pthreadVC2']) 3600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch # common win libs 3610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('LIB', [ 3620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 'kernel32', 'user32','gdi32','comdlg32','winspool','winmm', 363cad810f21b803229eb11403f9209855525a25d57Steve Block 'shell32', 'shlwapi', 'comctl32', 'ole32', 'oleaut32', 'uuid', 'advapi32', 3648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 'wsock32', 'gdiplus', 'usp10','version']) 3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_ICU'] = ['icudt', 'icule', 'iculx', 'icuuc', 'icuin', 'icuio', 'icutu'] 367cad810f21b803229eb11403f9209855525a25d57Steve Block 3680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch #curl 3690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_CURL'] = ['libcurl'] 370cad810f21b803229eb11403f9209855525a25d57Steve Block 3710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch #sqlite3 3720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['CPPPATH_SQLITE3'] = [os.path.join(msvclibs_dir, 'include', 'SQLite')] 3730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_SQLITE3'] = ['sqlite3'] 374cad810f21b803229eb11403f9209855525a25d57Steve Block 3750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch #libxml2 3760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_XML'] = ['libxml2'] 377cad810f21b803229eb11403f9209855525a25d57Steve Block 3780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch #libxslt 3790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env['LIB_XSLT'] = ['libxslt'] 380cad810f21b803229eb11403f9209855525a25d57Steve Block else: 3810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if build_port == 'wx': 382d0825bca7fe65beaee391d30da42e937db621564Steve Block port_uses['wx'].append('PTHREADS') 383231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.env.append_value('LIB', ['jpeg', 'png', 'pthread']) 3840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('LIBPATH', os.path.join(wklibs_dir, 'unix', 'lib')) 3850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CPPPATH', os.path.join(wklibs_dir, 'unix', 'include')) 3860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch conf.env.append_value('CXXFLAGS', ['-fPIC', '-DPIC']) 387cad810f21b803229eb11403f9209855525a25d57Steve Block 388231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(path=get_path_to_wxconfig(), args='--cxxflags --libs', package='', uselib_store='WX', mandatory=True) 389cad810f21b803229eb11403f9209855525a25d57Steve Block 390231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(msg='Checking for libxslt', path='xslt-config', args='--cflags --libs', package='', uselib_store='XSLT', mandatory=True) 391231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(path='xml2-config', args='--cflags --libs', package='', uselib_store='XML', mandatory=True) 392cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if sys.platform.startswith('darwin') and min_version and min_version == '10.4': 393cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.check_cfg(path=os.path.join(wklibs_dir, 'unix', 'bin', 'curl-config'), args='--cflags --libs', package='', uselib_store='CURL', mandatory=True) 394cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block else: 395cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block conf.check_cfg(path='curl-config', args='--cflags --libs', package='', uselib_store='CURL', mandatory=True) 396cad810f21b803229eb11403f9209855525a25d57Steve Block 3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if not sys.platform.startswith('darwin'): 398231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(package='cairo', args='--cflags --libs', uselib_store='WX', mandatory=True) 399231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(package='pango', args='--cflags --libs', uselib_store='WX', mandatory=True) 400231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='WX', mandatory=True) 401231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(package='sqlite3', args='--cflags --libs', uselib_store='SQLITE3', mandatory=True) 402231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block conf.check_cfg(path='icu-config', args='--cflags --ldflags', package='', uselib_store='ICU', mandatory=True) 403d0825bca7fe65beaee391d30da42e937db621564Steve Block 404d0825bca7fe65beaee391d30da42e937db621564Steve Block for use in port_uses[build_port]: 405d0825bca7fe65beaee391d30da42e937db621564Steve Block conf.env.append_value('CXXDEFINES', ['WTF_USE_%s' % use]) 406