diff options
author | Ben Murdoch <benm@google.com> | 2011-06-02 12:07:03 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-10 10:47:21 +0100 |
commit | 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch) | |
tree | e4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/gyp | |
parent | 87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff) | |
download | external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2 |
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Source/gyp')
-rwxr-xr-x | Source/gyp/configure | 75 |
1 files changed, 56 insertions, 19 deletions
diff --git a/Source/gyp/configure b/Source/gyp/configure index 28d6677..b4e4ac5 100755 --- a/Source/gyp/configure +++ b/Source/gyp/configure @@ -40,6 +40,7 @@ def chdir_to_source(): def gyp(): return os.path.join('ThirdParty', 'gyp', 'gyp') + class Project: def __init__(self, name): self._name = name @@ -47,44 +48,77 @@ class Project: def name(self): return self._name - def inputs(self): + def _gyp_directory(self): + return os.path.join(self._name, 'gyp') + + def _gyp_file_for_port(self, port): + # Gyp uses the gyp file name as the XCode proj file name, so for now "apple-mac" must be ProjectName.gyp + if port == "mac": + return '%s.gyp' % self._name + return "%s.gyp" % port + + def inputs(self, port): return [ - os.path.join(self._name, 'gyp', self._name + '.gyp'), + os.path.join(self._gyp_directory(), self._gyp_file_for_port(port)), os.path.join(self._name, self._name + '.gypi'), os.path.join('gyp', 'common.gypi'), ] - def output(self): - return os.path.join(self._name, 'gyp', self._name + '.xcodeproj', 'project.pbxproj') + def _output_for_port(self, port): + format = format_for_port(port) + return { + 'filelist': '%s.am' % port, + 'xcode': os.path.join(self._name + '.xcodeproj', 'project.pbxproj'), + }[format] - def should_generate(self): - if not os.path.exists(self.output()): + def output(self, port): + return os.path.join(self._gyp_directory(), self._output_for_port(port)) + + def should_generate(self, port): + if not os.path.exists(self.output(port)): return True - return os.path.getmtime(self.output()) < self._newest(self.inputs()) + return os.path.getmtime(self.output(port)) < self._newest(self.inputs(port)) + + def _extra_args_for_format(self, format): + if format == "xcode": + return ['-G', 'xcode_list_excluded_files=0'] + return [] - def generate(self): - subprocess.call([ + def generate(self, port): + args = [ gyp(), - self.inputs()[0], - '-G', - 'xcode_list_excluded_files=0', + self.inputs(port)[0], '--depth=.', - ]) + ] + format = format_for_port(port) + args.append('--format=%s' % format) + args += self._extra_args_for_format(format) + + subprocess.call(args) # GYP doesn't always touch the output file, but we want to touch the # file so that we don't keep trying to regenerate it. - os.utime(self.output(), None) + os.utime(self.output(port), None) @staticmethod def _newest(paths): return max([os.path.getmtime(path) for path in paths]) + +def format_for_port(port): + return { + 'mac': 'xcode', + 'gtk': 'filelist', + 'win': 'msvs', + }[port] # Valid port is required. + + PROJECTS = [ Project("JavaScriptCore"), Project("WebCore"), ] -def projects_to_generate(): - should_generate = [project for project in PROJECTS if project.should_generate()] +def projects_to_generate(port): + should_generate = [project for project in PROJECTS if project.should_generate(port)] already_generated = [project.name() for project in set(PROJECTS) - set(should_generate)] if already_generated: @@ -93,11 +127,13 @@ def projects_to_generate(): return should_generate + def main(): chdir_to_source() parser = OptionParser() - # FIXME: The user should be able to pass which port on the command line. + parser.add_option("--port", dest="port", action="store", default="mac", # Default to Mac for now + help="Which port to generate for.") parser.add_option("--regenerate-projects", dest="regenerate_projects", default=False, action="store_true", help="Generate all project files even if they appear to be up to date.") @@ -105,11 +141,12 @@ def main(): projects = PROJECTS if not options.regenerate_projects: - projects = projects_to_generate() + projects = projects_to_generate(options.port) for project in projects: print "Generating %s." % project.name() - project.generate() + project.generate(options.port) + if __name__ == "__main__": main() |