1a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#!/usr/bin/perl -w
2a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# Copyright (C) 2010 Apple Inc. All rights reserved.
4a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#
5a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# Redistribution and use in source and binary forms, with or without
6a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# modification, are permitted provided that the following conditions
7a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# are met:
8a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# 1. Redistributions of source code must retain the above copyright
9a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#    notice, this list of conditions and the following disclaimer.
10a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# 2. Redistributions in binary form must reproduce the above copyright
11a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#    notice, this list of conditions and the following disclaimer in the
12a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#    documentation and/or other materials provided with the distribution.
13a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#
14a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
15a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
18a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
24a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# THE POSSIBILITY OF SUCH DAMAGE.
25a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
26a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse strict;
27a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse File::Basename;
28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse FindBin;
29a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse Getopt::Long qw(:config pass_through);
30a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse lib $FindBin::Bin;
31a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse webkitdirs;
32a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochuse POSIX;
33a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmy $showHelp = 0;
35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmy $clean = 0;
36a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
37a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmy $programName = basename($0);
38a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmy $usage = <<EOF;
39a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochUsage: $programName [options] [options to pass to build system]
40a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch  --help        Show this help message
41a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch  --clean       Clean up the build directory
42a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochEOF
43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
44a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochGetOptions(
45a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    'help' => \$showHelp,
46a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    'clean' => \$clean,
47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch);
48a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
49a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochif ($showHelp) {
50a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch   print STDERR $usage;
51a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch   exit 1;
52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
54a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochcheckRequiredSystemConfig();
55a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochsetConfiguration();
56a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochchdirWebKit();
57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch# Build
59f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochchdir "Tools/TestWebKitAPI" or die;
60a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochmy $result;
62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochif (isAppleMacWebKit()) {
63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    $result = buildXCodeProject("TestWebKitAPI", $clean, XcodeOptions(), @ARGV);
64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} elsif (isAppleWinWebKit()) {
65a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    $result = buildVisualStudioProject("win/TestWebKitAPI.sln", $clean);
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} else {
67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    die "TestWebKitAPI is not supported on this platform.\n";
68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
69a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
70a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochexit exitStatus($result);
71