⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webkitdirs.pm

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 PM
📖 第 1 页 / 共 3 页
字号:
# Copyright (C) 2005, 2006, 2007 Apple Inc. 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. # 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of#     its contributors may be used to endorse or promote products derived#     from this software without specific prior written permission. ## THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "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 OR ITS 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.# Module to share code to get to WebKit directories.use strict;use warnings;use FindBin;use File::Basename;use POSIX;use VCSUtils;BEGIN {   use Exporter   ();   our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);   $VERSION     = 1.00;   @ISA         = qw(Exporter);   @EXPORT      = qw(&chdirWebKit &baseProductDir &productDir &XcodeOptions &XcodeOptionString &XcodeOptionStringNoConfig &passedConfiguration &setConfiguration &safariPath &checkFrameworks &currentSVNRevision);   %EXPORT_TAGS = ( );   @EXPORT_OK   = ();}our @EXPORT_OK;my $baseProductDir;my @baseProductDirOption;my $configuration;my $configurationForVisualStudio;my $configurationProductDir;my $sourceDir;my $currentSVNRevision;my $osXVersion;my $isQt;my $isGtk;my $isWx;my @wxArgs;my $isChromium;my $forceRun64Bit;# Variables for Win32 supportmy $vcBuildPath;my $windowsTmpPath;sub determineSourceDir{    return if $sourceDir;    $sourceDir = $FindBin::Bin;    $sourceDir =~ s|/+$||; # Remove trailing '/' as we would die later    # walks up path checking each directory to see if it is the main WebKit project dir,     # defined by containing JavaScriptCore, WebCore, and WebKit    until ((-d "$sourceDir/JavaScriptCore" && -d "$sourceDir/WebCore" && -d "$sourceDir/WebKit") || (-d "$sourceDir/Internal" && -d "$sourceDir/OpenSource"))    {        if ($sourceDir !~ s|/[^/]+$||) {            die "Could not find top level webkit directory above source directory using FindBin.\n";        }    }    $sourceDir = "$sourceDir/OpenSource" if -d "$sourceDir/OpenSource";}# used for scripts which are stored in a non-standard locationsub setSourceDir($){    ($sourceDir) = @_;}sub determineBaseProductDir{    return if defined $baseProductDir;    determineSourceDir();    if (isAppleMacWebKit()) {        open PRODUCT, "defaults read com.apple.Xcode PBXApplicationwideBuildSettings 2> /dev/null |" or die;        $baseProductDir = join '', <PRODUCT>;        close PRODUCT;        $baseProductDir = $1 if $baseProductDir =~ /SYMROOT\s*=\s*\"(.*?)\";/s;        undef $baseProductDir unless $baseProductDir =~ /^\//;        if (!defined($baseProductDir)) {            open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory 2> /dev/null |" or die;            $baseProductDir = <PRODUCT>;            close PRODUCT;            if ($baseProductDir) {                chomp $baseProductDir;                undef $baseProductDir unless $baseProductDir =~ /^\//;            }        }    } else {        $baseProductDir = $ENV{"WEBKITOUTPUTDIR"};        if (isAppleWinWebKit() && $baseProductDir) {            my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`;            chomp $unixBuildPath;            $baseProductDir = $unixBuildPath;        }    }    if ($baseProductDir && isAppleMacWebKit()) {        $baseProductDir =~ s|^\Q$(SRCROOT)/..\E$|$sourceDir|;        $baseProductDir =~ s|^\Q$(SRCROOT)/../|$sourceDir/|;        $baseProductDir =~ s|^~/|$ENV{HOME}/|;        die "Can't handle Xcode product directory with a ~ in it.\n" if $baseProductDir =~ /~/;        die "Can't handle Xcode product directory with a variable in it.\n" if $baseProductDir =~ /\$/;        @baseProductDirOption = ();    }    if (!defined($baseProductDir)) {        $baseProductDir = "$sourceDir/WebKitBuild";        if (isGit() && isGitBranchBuild()) {            my $branch = gitBranch();            $baseProductDir = "$baseProductDir/$branch";        }        @baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir") if (isAppleMacWebKit());        if (isCygwin()) {            my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`;            chomp $dosBuildPath;            $ENV{"WEBKITOUTPUTDIR"} = $dosBuildPath;        }    }}sub setBaseProductDir($){    ($baseProductDir) = @_;}sub determineConfiguration{    return if defined $configuration;    determineBaseProductDir();    if (open CONFIGURATION, "$baseProductDir/Configuration") {        $configuration = <CONFIGURATION>;        close CONFIGURATION;    }    if ($configuration) {        chomp $configuration;        # compatibility for people who have old Configuration files        $configuration = "Release" if $configuration eq "Deployment";        $configuration = "Debug" if $configuration eq "Development";    } else {        $configuration = "Release";    }}sub argumentsForConfiguration(){    determineConfiguration();    my @args = ();    push(@args, '--debug') if $configuration eq "Debug";    push(@args, '--release') if $configuration eq "Release";    push(@args, '--qt') if isQt();    push(@args, '--gtk') if isGtk();    push(@args, '--wx') if isWx();    push(@args, '--chromium') if isChromium();    return @args;}sub determineConfigurationForVisualStudio{    return if defined $configurationForVisualStudio;    determineConfiguration();    $configurationForVisualStudio = $configuration;    return unless $configuration eq "Debug";    setupCygwinEnv();    chomp(my $dir = `cygpath -ua '$ENV{WEBKITLIBRARIESDIR}'`);    $configurationForVisualStudio = "Debug_Internal" if -f "$dir/bin/CoreFoundation_debug.dll";}sub determineConfigurationProductDir{    return if defined $configurationProductDir;    determineBaseProductDir();    determineConfiguration();    if (isAppleWinWebKit() && !isWx()) {        $configurationProductDir = "$baseProductDir/bin";    } else {        $configurationProductDir = "$baseProductDir/$configuration";    }}sub setConfigurationProductDir($){    ($configurationProductDir) = @_;}sub determineCurrentSVNRevision{    return if defined $currentSVNRevision;    determineSourceDir();    $currentSVNRevision = svnRevisionForDirectory($sourceDir);    return $currentSVNRevision;}sub chdirWebKit{    determineSourceDir();    chdir $sourceDir or die;}sub baseProductDir{    determineBaseProductDir();    return $baseProductDir;}sub sourceDir{    determineSourceDir();    return $sourceDir;}sub productDir{    determineConfigurationProductDir();    return $configurationProductDir;}sub configuration(){    determineConfiguration();    return $configuration;}sub configurationForVisualStudio(){    determineConfigurationForVisualStudio();    return $configurationForVisualStudio;}sub currentSVNRevision{    determineCurrentSVNRevision();    return $currentSVNRevision;}sub XcodeOptions{    determineBaseProductDir();    determineConfiguration();    return (@baseProductDirOption, "-configuration", $configuration);}sub XcodeOptionString{    return join " ", XcodeOptions();}sub XcodeOptionStringNoConfig{    return join " ", @baseProductDirOption;}sub XcodeCoverageSupportOptions(){    my @coverageSupportOptions = ();    push @coverageSupportOptions, "GCC_GENERATE_TEST_COVERAGE_FILES=YES";    push @coverageSupportOptions, "GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES";    push @coverageSupportOptions, "EXTRA_LINK= -ftest-coverage -fprofile-arcs";    push @coverageSupportOptions, "OTHER_CFLAGS= -MD";    push @coverageSupportOptions, "OTHER_LDFLAGS=\$(OTHER_LDFLAGS) -ftest-coverage -fprofile-arcs -framework AppKit";    return @coverageSupportOptions;}my $passedConfiguration;my $searchedForPassedConfiguration;sub determinePassedConfiguration{    return if $searchedForPassedConfiguration;    $searchedForPassedConfiguration = 1;    my $isWinCairo = checkForArgumentAndRemoveFromARGV("--cairo-win32");    for my $i (0 .. $#ARGV) {        my $opt = $ARGV[$i];        if ($opt =~ /^--debug$/i || $opt =~ /^--devel/i) {            splice(@ARGV, $i, 1);            $passedConfiguration = "Debug";            $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());            return;        }        if ($opt =~ /^--release$/i || $opt =~ /^--deploy/i) {            splice(@ARGV, $i, 1);            $passedConfiguration = "Release";            $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());            return;        }        if ($opt =~ /^--profil(e|ing)$/i) {            splice(@ARGV, $i, 1);            $passedConfiguration = "Profiling";            $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());            return;        }    }    $passedConfiguration = undef;}sub passedConfiguration{    determinePassedConfiguration();    return $passedConfiguration;}sub setConfiguration{    if (my $config = shift @_) {        $configuration = $config;        return;    }    determinePassedConfiguration();    $configuration = $passedConfiguration if $passedConfiguration;}sub safariPathFromSafariBundle{    my ($safariBundle) = @_;    return "$safariBundle/Contents/MacOS/Safari" if isAppleMacWebKit();    return $safariBundle if isAppleWinWebKit();}sub installedSafariPath{    my $safariBundle;    if (isAppleMacWebKit()) {        $safariBundle = "/Applications/Safari.app";    } elsif (isAppleWinWebKit()) {        $safariBundle = `"$configurationProductDir/FindSafari.exe"`;        $safariBundle =~ s/[\r\n]+$//;        $safariBundle = `cygpath -u '$safariBundle'`;        $safariBundle =~ s/[\r\n]+$//;        $safariBundle .= "Safari.exe";    }    return safariPathFromSafariBundle($safariBundle);}# Locate Safari.sub safariPath{    # Use WEBKIT_SAFARI environment variable if present.    my $safariBundle = $ENV{WEBKIT_SAFARI};    if (!$safariBundle) {        determineConfigurationProductDir();        # Use Safari.app in product directory if present (good for Safari development team).        if (isAppleMacWebKit() && -d "$configurationProductDir/Safari.app") {            $safariBundle = "$configurationProductDir/Safari.app";        } elsif (isAppleWinWebKit() && -x "$configurationProductDir/bin/Safari.exe") {            $safariBundle = "$configurationProductDir/bin/Safari.exe";        } else {            return installedSafariPath();        }    }    my $safariPath = safariPathFromSafariBundle($safariBundle);    die "Can't find executable at $safariPath.\n" if isAppleMacWebKit() && !-x $safariPath;    return $safariPath;}sub builtDylibPathForName{    my $libraryName = shift;    determineConfigurationProductDir();    if (isQt() or isChromium()) {        return "$configurationProductDir/$libraryName";    }    if (isGtk()) {        return "$configurationProductDir/$libraryName/../.libs/libwebkit-1.0.so";    }    if (isAppleMacWebKit()) {        return "$configurationProductDir/$libraryName.framework/Versions/A/$libraryName";    }    if (isAppleWinWebKit()) {        if ($libraryName eq "JavaScriptCore") {            return "$baseProductDir/lib/$libraryName.lib";        } else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -