diff options
Diffstat (limited to 'WebKitTools/wx/build')
-rw-r--r-- | WebKitTools/wx/build/build_utils.py | 188 | ||||
-rw-r--r-- | WebKitTools/wx/build/settings.py | 405 | ||||
-rw-r--r-- | WebKitTools/wx/build/waf_extensions.py | 83 | ||||
-rw-r--r-- | WebKitTools/wx/build/wxpresets.py | 120 |
4 files changed, 0 insertions, 796 deletions
diff --git a/WebKitTools/wx/build/build_utils.py b/WebKitTools/wx/build/build_utils.py deleted file mode 100644 index a6962e2..0000000 --- a/WebKitTools/wx/build/build_utils.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (C) 2009 Kevin Ollivier All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Helper functions for the WebKit build. - -import commands -import glob -import os -import platform -import re -import shutil -import sys -import urllib -import urlparse - -def get_output(command): - """ - Windows-compatible function for getting output from a command. - """ - if sys.platform.startswith('win'): - f = os.popen(command) - return f.read().strip() - else: - return commands.getoutput(command) - -def get_excludes(root, patterns): - """ - Get a list of exclude patterns going down several dirs. - TODO: Make this fully recursive. - """ - excludes = [] - - for pattern in patterns: - subdir_pattern = os.sep + '*' - for subdir in [subdir_pattern, subdir_pattern*2, subdir_pattern*3]: - adir = root + subdir + os.sep + pattern - files = glob.glob(adir) - for afile in files: - excludes.append(os.path.basename(afile)) - - return excludes - -def get_dirs_for_features(root, features, dirs): - """ - Find which directories to include in the list of build dirs based upon the - enabled port(s) and features. - """ - outdirs = dirs - for adir in dirs: - for feature in features: - relpath = os.path.join(adir, feature) - featuredir = os.path.join(root, relpath) - if os.path.exists(featuredir) and not relpath in outdirs: - outdirs.append(relpath) - - return outdirs - -def download_if_newer(url, destdir): - """ - Checks if the file on the server is newer than the one in the user's tree, - and if so, downloads it. - - Returns the filename of the downloaded file if downloaded, or None if - the existing file matches the one on the server. - """ - obj = urlparse.urlparse(url) - filename = os.path.basename(obj.path) - destfile = os.path.join(destdir, filename) - - urlobj = urllib.urlopen(url) - size = long(urlobj.info().getheader('Content-Length')) - - def download_callback(downloaded, block_size, total_size): - downloaded = block_size * downloaded - if downloaded > total_size: - downloaded = total_size - sys.stdout.write('%s %d of %d bytes downloaded\r' % (filename, downloaded, total_size)) - - # NB: We don't check modified time as Python doesn't yet handle timezone conversion - # properly when converting strings to time objects. - if not os.path.exists(destfile) or os.path.getsize(destfile) != size: - urllib.urlretrieve(url, destfile, download_callback) - print '' - return destfile - - return None - -def update_wx_deps(conf, wk_root, msvc_version='msvc2008'): - """ - Download and update tools needed to build the wx port. - """ - import Logs - Logs.info('Ensuring wxWebKit dependencies are up-to-date.') - - wklibs_dir = os.path.join(wk_root, 'WebKitLibraries') - waf = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/waf', os.path.join(wk_root, 'WebKitTools', 'wx')) - if waf: - # TODO: Make the build restart itself after an update. - Logs.warn('Build system updated, please restart build.') - sys.exit(1) - - # since this module is still experimental - wxpy_dir = os.path.join(wk_root, 'WebKit', 'wx', 'bindings', 'python') - swig_module = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/swig.py.txt', wxpy_dir) - if swig_module: - shutil.copy(os.path.join(wxpy_dir, 'swig.py.txt'), os.path.join(wxpy_dir, 'swig.py')) - - if sys.platform.startswith('win'): - Logs.info('downloading deps package') - archive = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/wxWebKitDeps-%s.zip' % msvc_version, wklibs_dir) - if archive and os.path.exists(archive): - os.system('unzip -o %s -d %s' % (archive, os.path.join(wklibs_dir, msvc_version))) - - elif sys.platform.startswith('darwin'): - # export the right compiler for building the dependencies - if platform.release().startswith('10'): # Snow Leopard - os.environ['CC'] = conf.env['CC'][0] - os.environ['CXX'] = conf.env['CXX'][0] - os.system('%s/WebKitTools/wx/install-unix-extras' % wk_root) - -def includeDirsForSources(sources): - include_dirs = [] - for group in sources: - for source in group: - dirname = os.path.dirname(source) - if not dirname in include_dirs: - include_dirs.append(dirname) - - return include_dirs - -def flattenSources(sources): - flat_sources = [] - for group in sources: - flat_sources.extend(group) - - return flat_sources - -def git_branch_name(): - try: - branches = commands.getoutput("git branch --no-color") - match = re.search('^\* (.*)', branches, re.MULTILINE) - if match: - return ".%s" % match.group(1) - except: - pass - - return "" - -def get_config(wk_root): - config_file = os.path.join(wk_root, 'WebKitBuild', 'Configuration') - config = 'Debug' - - if os.path.exists(config_file): - config = open(config_file).read() - - return config - -def svn_revision(): - if os.system("git-svn info") == 0: - info = commands.getoutput("git-svn info ../..") - else: - info = commands.getoutput("svn info") - - for line in info.split("\n"): - if line.startswith("Revision: "): - return line.replace("Revision: ", "").strip() - - return "" diff --git a/WebKitTools/wx/build/settings.py b/WebKitTools/wx/build/settings.py deleted file mode 100644 index cd3358c..0000000 --- a/WebKitTools/wx/build/settings.py +++ /dev/null @@ -1,405 +0,0 @@ -# Copyright (C) 2009 Kevin Ollivier All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Common elements of the waf build system shared by all projects. - -import commands -import os -import platform -import re -import sys - -import Options - -from build_utils import * -from waf_extensions import * - -# to be moved to wx when it supports more configs -from wxpresets import * - -wk_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../..')) - -if sys.platform.startswith('win'): - if not 'WXWIN' in os.environ: - print "Please set WXWIN to the directory containing wxWidgets." - sys.exit(1) - - wx_root = os.environ['WXWIN'] -else: - wx_root = commands.getoutput('wx-config --prefix') - -jscore_dir = os.path.join(wk_root, 'JavaScriptCore') -webcore_dir = os.path.join(wk_root, 'WebCore') -wklibs_dir = os.path.join(wk_root, 'WebKitLibraries') - -common_defines = [] -common_cxxflags = [] -common_includes = [] -common_libs = [] -common_libpaths = [] -common_frameworks = [] - -ports = [ - 'Brew', - 'Chromium', - 'Gtk', - 'Haiku', - 'Mac', - 'None', - 'Qt', - 'Safari', - 'Win', - 'Wince', - 'wx', -] - -port_uses = { - 'wx': ['CURL', 'WXGC'], -} - -jscore_dirs = [ - 'API', - 'bytecode', - 'bytecompiler', - 'debugger', - 'DerivedSources', - 'interpreter', - 'jit', - 'parser', - 'pcre', - 'profiler', - 'runtime', - 'wtf', - 'wtf/text', - 'wtf/unicode', - 'wtf/unicode/icu', - 'yarr', -] - -webcore_dirs = [ - 'WebCore/accessibility', - 'WebCore/bindings', - 'WebCore/bindings/cpp', - 'WebCore/bindings/generic', - 'WebCore/bindings/js', - 'WebCore/bindings/js/specialization', - 'WebCore/bridge', - 'WebCore/bridge/c', - 'WebCore/bridge/jsc', - 'WebCore/css', - 'WebCore/DerivedSources', - 'WebCore/dom', - 'WebCore/dom/default', - 'WebCore/editing', - 'WebCore/fileapi', - 'WebCore/history', - 'WebCore/html', - 'WebCore/html/canvas', - 'WebCore/html/parser', - 'WebCore/inspector', - 'WebCore/loader', - 'WebCore/loader/appcache', - 'WebCore/loader/archive', - 'WebCore/loader/icon', - 'WebCore/notifications', - 'WebCore/page', - 'WebCore/page/animation', - 'WebCore/platform', - 'WebCore/platform/animation', - 'WebCore/platform/graphics', - 'WebCore/platform/graphics/filters', - 'WebCore/platform/graphics/transforms', - 'WebCore/platform/image-decoders', - 'WebCore/platform/image-decoders/bmp', - 'WebCore/platform/image-decoders/gif', - 'WebCore/platform/image-decoders/ico', - 'WebCore/platform/image-decoders/jpeg', - 'WebCore/platform/image-decoders/png', - 'WebCore/platform/mock', - 'WebCore/platform/network', - 'WebCore/platform/sql', - 'WebCore/platform/text', - 'WebCore/platform/text/transcoder', - 'WebCore/plugins', - 'WebCore/rendering', - 'WebCore/rendering/style', - 'WebCore/rendering/svg', - 'WebCore/storage', - 'WebCore/svg', - 'WebCore/svg/animation', - 'WebCore/svg/graphics', - 'WebCore/svg/graphics/filters', - - 'WebCore/websockets', - 'WebCore/xml' -] - -config = get_config(wk_root) -config_dir = config + git_branch_name() - -output_dir = os.path.join(wk_root, 'WebKitBuild', config_dir) - -build_port = "wx" -building_on_win32 = sys.platform.startswith('win') - -def get_config(): - waf_configname = config.upper().strip() - if building_on_win32: - isReleaseCRT = (config == 'Release') - if build_port == 'wx': - if Options.options.wxpython: - isReleaseCRT = True - - if isReleaseCRT: - waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL' - else: - waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL_DBG' - - return waf_configname - -create_hash_table = wk_root + "/JavaScriptCore/create_hash_table" -if building_on_win32: - create_hash_table = get_output('cygpath --unix "%s"' % create_hash_table) -os.environ['CREATE_HASH_TABLE'] = create_hash_table - -feature_defines = ['ENABLE_DATABASE', 'ENABLE_XSLT', 'ENABLE_JAVASCRIPT_DEBUGGER', - 'ENABLE_SVG', 'ENABLE_SVG_USE', 'ENABLE_FILTERS', 'ENABLE_SVG_FONTS', - 'ENABLE_SVG_ANIMATION', 'ENABLE_SVG_AS_IMAGE', 'ENABLE_SVG_FOREIGN_OBJECT', - 'ENABLE_JIT', 'BUILDING_%s' % build_port.upper()] - -msvc_version = 'msvc2008' - -msvclibs_dir = os.path.join(wklibs_dir, msvc_version, 'win') - -def get_path_to_wxconfig(): - if 'WX_CONFIG' in os.environ: - return os.environ['WX_CONFIG'] - else: - return 'wx-config' - -def common_set_options(opt): - """ - Initialize common options provided to the user. - """ - opt.tool_options('compiler_cxx') - opt.tool_options('compiler_cc') - opt.tool_options('python') - - opt.add_option('--wxpython', action='store_true', default=False, help='Create the wxPython bindings.') - opt.add_option('--wx-compiler-prefix', action='store', default='vc', - help='Specify a different compiler prefix (do this if you used COMPILER_PREFIX when building wx itself)') - opt.add_option('--macosx-version', action='store', default='', help="Version of OS X to build for.") - opt.add_option('--msvc-version', action='store', default='', help="MSVC version to use to build. Use 8 for 2005, 9 for 2008") - -def common_configure(conf): - """ - Configuration used by all targets, called from the target's configure() step. - """ - - conf.env['MSVC_TARGETS'] = ['x86'] - - if Options.options.msvc_version and Options.options.msvc_version != '': - print "msvc version = %s" % Options.options.msvc_version - conf.env['MSVC_VERSIONS'] = ['msvc %s.0' % Options.options.msvc_version] - else: - print "msvc not set!" - conf.env['MSVC_VERSIONS'] = ['msvc 9.0', 'msvc 8.0'] - - if sys.platform.startswith('cygwin'): - print "ERROR: You must use the Win32 Python from python.org, not Cygwin Python, when building on Windows." - sys.exit(1) - - if sys.platform.startswith('darwin') and build_port == 'wx': - import platform - if platform.release().startswith('10'): # Snow Leopard - # wx currently only supports 32-bit compilation, so we want gcc-4.0 instead of 4.2 on Snow Leopard - # unless the user has explicitly set a different compiler. - if not "CC" in os.environ: - conf.env['CC'] = 'gcc-4.0' - if not "CXX" in os.environ: - conf.env['CXX'] = 'g++-4.0' - conf.check_tool('compiler_cxx') - conf.check_tool('compiler_cc') - if Options.options.wxpython: - conf.check_tool('python') - conf.check_python_headers() - - if sys.platform.startswith('darwin'): - conf.check_tool('osx') - - global msvc_version - global msvclibs_dir - - libprefix = '' - - if building_on_win32: - libprefix = 'lib' - - found = conf.get_msvc_versions() - found_versions = [] - for version in found: - found_versions.append(version[0]) - - if 'msvc 9.0' in conf.env['MSVC_VERSIONS'] and 'msvc 9.0' in found_versions: - msvc_version = 'msvc2008' - elif 'msvc 8.0' in conf.env['MSVC_VERSIONS'] and 'msvc 8.0' in found_versions: - msvc_version = 'msvc2005' - - msvclibs_dir = os.path.join(wklibs_dir, msvc_version, 'win') - - # Disable several warnings which occur many times during the build. - # Some of them are harmless (4099, 4344, 4396, 4800) and working around - # them in WebKit code is probably just not worth it. We can simply do - # nothing about the others (4503). A couple are possibly valid but - # there are just too many of them in the code so fixing them is - # impossible in practice and just results in tons of distracting output - # (4244, 4291). Finally 4996 is actively harmful as it is given for - # just about any use of standard C/C++ library facilities. - conf.env.append_value('CXXFLAGS', [ - '/wd4099', # type name first seen using 'struct' now seen using 'class' - '/wd4244', # conversion from 'xxx' to 'yyy', possible loss of data: - '/wd4291', # no matching operator delete found (for placement new) - '/wd4344', # behaviour change in template deduction - '/wd4396', # inline can't be used in friend declaration - '/wd4503', # decorated name length exceeded, name was truncated - '/wd4800', # forcing value to bool 'true' or 'false' - '/wd4996', # deprecated function - ]) - - # This one also occurs in C code, so disable it there as well. - conf.env.append_value('CCFLAGS', ['/wd4996']) - - if build_port == "wx": - update_wx_deps(conf, wk_root, msvc_version) - - conf.env.append_value('CXXDEFINES', ['BUILDING_WX__=1', 'JS_NO_EXPORT']) - - if building_on_win32: - conf.env.append_value('LIBPATH', os.path.join(msvclibs_dir, 'lib')) - # wx settings - global config - is_debug = (config == 'Debug') - wxdefines, wxincludes, wxlibs, wxlibpaths = get_wxmsw_settings(wx_root, shared=True, unicode=True, debug=is_debug, wxPython=Options.options.wxpython) - conf.env['CXXDEFINES_WX'] = wxdefines - conf.env['CPPPATH_WX'] = wxincludes - conf.env['LIB_WX'] = wxlibs - conf.env['LIBPATH_WX'] = wxlibpaths - - if sys.platform.startswith('darwin'): - conf.env['LIB_ICU'] = ['icucore'] - - conf.env.append_value('CPPPATH', wklibs_dir) - conf.env.append_value('LIBPATH', wklibs_dir) - - min_version = None - - mac_target = 'MACOSX_DEPLOYMENT_TARGET' - if Options.options.macosx_version != '': - min_version = Options.options.macosx_version - - # WebKit only supports 10.4+, but ppc systems often set this to earlier systems - if not min_version: - min_version = commands.getoutput('sw_vers -productVersion')[:4] - if min_version in ['10.1','10.2','10.3']: - min_version = '10.4' - - os.environ[mac_target] = conf.env[mac_target] = min_version - - sdk_version = min_version - if min_version == "10.4": - sdk_version += "u" - conf.env.append_value('LIB_WKINTERFACE', ['WebKitSystemInterfaceTiger']) - else: - # NOTE: There is a WebKitSystemInterfaceSnowLeopard, but when we use that - # on 10.6, we get a strange missing symbol error, and this library seems to - # work fine for wx's purposes. - conf.env.append_value('LIB_WKINTERFACE', ['WebKitSystemInterfaceLeopard']) - - sdkroot = '/Developer/SDKs/MacOSX%s.sdk' % sdk_version - sdkflags = ['-arch', 'i386', '-isysroot', sdkroot] - - conf.env.append_value('CPPFLAGS', sdkflags) - conf.env.append_value('LINKFLAGS', sdkflags) - - conf.env.append_value('CPPPATH_SQLITE3', [os.path.join(wklibs_dir, 'WebCoreSQLite3')]) - conf.env.append_value('LIB_SQLITE3', ['WebCoreSQLite3']) - - conf.env.append_value('CXXDEFINES', feature_defines) - if config == 'Release': - conf.env.append_value('CPPDEFINES', 'NDEBUG') - - if building_on_win32: - conf.env.append_value('CPPPATH', [ - os.path.join(jscore_dir, 'os-win32'), - os.path.join(msvclibs_dir, 'include'), - os.path.join(msvclibs_dir, 'include', 'pthreads'), - os.path.join(msvclibs_dir, 'lib'), - ]) - - conf.env.append_value('LIB', ['libpng', 'libjpeg', 'pthreadVC2']) - # common win libs - conf.env.append_value('LIB', [ - 'kernel32', 'user32','gdi32','comdlg32','winspool','winmm', - 'shell32', 'shlwapi', 'comctl32', 'ole32', 'oleaut32', 'uuid', 'advapi32', - 'wsock32', 'gdiplus', 'usp10','version']) - - conf.env['LIB_ICU'] = ['icudt', 'icule', 'iculx', 'icuuc', 'icuin', 'icuio', 'icutu'] - - #curl - conf.env['LIB_CURL'] = ['libcurl'] - - #sqlite3 - conf.env['CPPPATH_SQLITE3'] = [os.path.join(msvclibs_dir, 'include', 'SQLite')] - conf.env['LIB_SQLITE3'] = ['sqlite3'] - - #libxml2 - conf.env['LIB_XML'] = ['libxml2'] - - #libxslt - conf.env['LIB_XSLT'] = ['libxslt'] - else: - if build_port == 'wx': - port_uses['wx'].append('PTHREADS') - conf.env.append_value('LIB', ['jpeg', 'png', 'pthread']) - conf.env.append_value('LIBPATH', os.path.join(wklibs_dir, 'unix', 'lib')) - conf.env.append_value('CPPPATH', os.path.join(wklibs_dir, 'unix', 'include')) - conf.env.append_value('CXXFLAGS', ['-fPIC', '-DPIC']) - - conf.check_cfg(path=get_path_to_wxconfig(), args='--cxxflags --libs', package='', uselib_store='WX', mandatory=True) - - conf.check_cfg(msg='Checking for libxslt', path='xslt-config', args='--cflags --libs', package='', uselib_store='XSLT', mandatory=True) - conf.check_cfg(path='xml2-config', args='--cflags --libs', package='', uselib_store='XML', mandatory=True) - if sys.platform.startswith('darwin') and min_version and min_version == '10.4': - conf.check_cfg(path=os.path.join(wklibs_dir, 'unix', 'bin', 'curl-config'), args='--cflags --libs', package='', uselib_store='CURL', mandatory=True) - else: - conf.check_cfg(path='curl-config', args='--cflags --libs', package='', uselib_store='CURL', mandatory=True) - - if not sys.platform.startswith('darwin'): - conf.check_cfg(package='cairo', args='--cflags --libs', uselib_store='WX', mandatory=True) - conf.check_cfg(package='pango', args='--cflags --libs', uselib_store='WX', mandatory=True) - conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='WX', mandatory=True) - conf.check_cfg(package='sqlite3', args='--cflags --libs', uselib_store='SQLITE3', mandatory=True) - conf.check_cfg(path='icu-config', args='--cflags --ldflags', package='', uselib_store='ICU', mandatory=True) - - for use in port_uses[build_port]: - conf.env.append_value('CXXDEFINES', ['WTF_USE_%s' % use]) diff --git a/WebKitTools/wx/build/waf_extensions.py b/WebKitTools/wx/build/waf_extensions.py deleted file mode 100644 index f50f264..0000000 --- a/WebKitTools/wx/build/waf_extensions.py +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright (C) 2009 Kevin Ollivier All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# This module is for code where we override waf's default behavior or extend waf - -import os -import subprocess -import sys - -import Utils - -# version of exec_command that handles Windows command lines longer than 32000 chars -def exec_command(s, **kw): - filename = '' - if sys.platform.startswith('win') and len(' '.join(s)) > 32000: - import tempfile - (fd, filename) = tempfile.mkstemp() - t = [] - for i in s: - if i.find(" ") != -1: - i = '"%s"' % i - t.append(i) - os.write(fd, ' '.join(t[1:])) - os.close(fd) - - s = [s[0], '@' + filename] - - if 'log' in kw: - kw['stdout'] = kw['stderr'] = kw['log'] - del(kw['log']) - kw['shell'] = isinstance(s, str) - - def cleanup(): - try: - if os.path.exists(filename): - os.remove(filename) - except: - pass - - try: - proc = subprocess.Popen(s, **kw) - result = proc.wait() - cleanup() - return result - - except OSError: - cleanup() - raise - -Utils.exec_command = exec_command - -# Better performing h_file to keep hashing from consuming lots of time -import stat -def h_file(filename): - st = os.stat(filename) - if stat.S_ISDIR(st[stat.ST_MODE]): raise IOError('not a file') - m = Utils.md5() - m.update(str(st.st_mtime)) - m.update(str(st.st_size)) - m.update(filename) - return m.digest() - -Utils.h_file = h_file diff --git a/WebKitTools/wx/build/wxpresets.py b/WebKitTools/wx/build/wxpresets.py deleted file mode 100644 index 3d6b693..0000000 --- a/WebKitTools/wx/build/wxpresets.py +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright (C) 2009 Kevin Ollivier All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Library for functions to determine wx settings based on configuration - -import os -import re - -import Options - -def parse_build_cfg(filename): - cfg_file = open(filename, 'r') - cfg = {} - for cfg_line in cfg_file.readlines(): - key = None - value = None - parts = cfg_line.split('=') - if len(parts) >= 1: - key = parts[0].strip() - - if len(parts) >= 2: - value = parts[1].strip() - if value.isdigit(): - value = int(value) - - if key: - cfg[key] = value - - return cfg - -def get_wx_version(wx_root): - versionText = open(os.path.join(wx_root, "include", "wx", "version.h"), "r").read() - - majorVersion = re.search("#define\swxMAJOR_VERSION\s+(\d+)", versionText).group(1) - minorVersion = re.search("#define\swxMINOR_VERSION\s+(\d+)", versionText).group(1) - - return (majorVersion, minorVersion) - -def get_wxmsw_settings(wx_root, shared = False, unicode = False, debug = False, wxPython=False): - if not os.path.exists(wx_root): - print "Directory %s does not exist." % wx_root - sys.exit(1) - - defines = ['__WXMSW__'] - includes = [os.path.join(wx_root, 'include')] - cxxflags = [] - libs = [] - libpaths = [] - - libdir = os.path.join(wx_root, 'lib') - ext = '' - postfix = 'vc' - - version_str_nodot = ''.join(get_wx_version(wx_root)) - - if shared: - defines.append('WXUSINGDLL') - libdir = os.path.join(libdir, Options.options.wx_compiler_prefix + '_dll') - else: - libdir = os.path.join(libdir, Options.options.wx_compiler_prefix + '_lib') - - if unicode: - defines.append('_UNICODE') - ext += 'u' - - depext = '' - if wxPython: - ext += 'h' - depext += 'h' - elif debug: - ext += 'd' - depext += 'd' - - configdir = os.path.join(libdir, 'msw' + ext) - - monolithic = False - cfg_file = os.path.join(configdir, 'build.cfg') - if os.path.exists(cfg_file): - cfg = parse_build_cfg(cfg_file) - if "MONOLITHIC" in cfg: - monolithic = cfg["MONOLITHIC"] - libpaths.append(libdir) - includes.append(configdir) - - def get_wxlib_name(name): - if name == 'base': - return 'wxbase%s%s' % (version_str_nodot, ext) - - return "wxmsw%s%s_%s" % (version_str_nodot, ext, name) - - libs.extend(['wxzlib' + depext, 'wxjpeg' + depext, 'wxpng' + depext, 'wxexpat' + depext]) - if monolithic: - libs.extend(["wxmsw%s%s" % (version_str_nodot, ext)]) - else: - libs.extend([get_wxlib_name('base'), get_wxlib_name('core')]) - - if wxPython or debug: - defines.append('__WXDEBUG__') - - return (defines, includes, libs, libpaths) |