Mozilla/mozilla/build/mac/build_scripts/MozillaBuildList.pm
dougt%netscape.com fed2927b2c Create a new xpcom obsolete library (and component library).
Moved nsFileSpec and related classes into this obsolete library.
  Moved nsRegistry and related libreg functionality into the obsolete library.

Updated many callers using the obsolete nsFile spec to use nsIFile and Necko to do file IO.

Combined the following DLLs (source -> dest)
  uriloader -> docshell
  shistory -> docshell
  jsurl -> jsdom
  gkview -> gklayout

Moved nsAdapterEnumerator out of xpcom/ds and into mailnews, since they're the only consumer

Modifed the xpt_link tool so that you can specify a “only include” cid list that can mask CID’s that you are not interested in.

Added build options:
Prevent the building of xpinstall (--disable-xpinstall)
Prevent the building js component loader (--disable-jsloader)
A build option to only build a single profile (--enable-single-profile)
A build flag to only built the required xpfe components (--disable-xpfe-components).

Removal or hiding of unused functions and classes including nsEscape*, nsDequeIterator, nsRecyclingAllocatorImpl, nsDiscriminatedUnion, nsOpaqueKey, nsCRT::strlen, NS_NewCommandLineService

Bug 194240, r/sr = darin, alec.


git-svn-id: svn://10.0.0.236/trunk@139480 18797224-902f-48f8-a5cc-f745e15eee43
2003-03-15 01:04:32 +00:00

2636 lines
126 KiB
Perl

#!perl -w
package MozillaBuildList;
require 5.004;
require Exporter;
use strict;
use vars qw( @ISA @EXPORT );
# perl includes
use Mac::Processes;
use Mac::Events;
use Mac::Files;
use Cwd;
use Mac::MoreFiles;
use FileHandle;
use File::Path;
use File::Copy;
use File::Basename;
# homegrown
use Moz::Moz;
use Moz::BuildUtils;
use Moz::Jar;
use Moz::MacCVS;
@ISA = qw(Exporter);
@EXPORT = qw(
BuildDist
BuildProjects
);
#//--------------------------------------------------------------------------------------------------
#// assert that we are in the correct directory for the build
#//--------------------------------------------------------------------------------------------------
sub assertRightDirectory()
{
unless (-e ":mozilla")
{
my($dir) = cwd();
print STDERR "MozillaBuildList called from incorrect directory: $dir";
}
}
#//--------------------------------------------------------------------------------------------------
#// UpdateBuildNumberFiles
#//--------------------------------------------------------------------------------------------------
sub UpdateBuildNumberFiles()
{
my(@gen_files) = (
":mozilla:config:nsBuildID.h",
":mozilla:xpfe:global:build.dtd"
);
SetBuildNumber(":mozilla:config:build_number", \@gen_files);
}
#//--------------------------------------------------------------------------------------------------
#// UpdateGeneratedChromeFiles
#//--------------------------------------------------------------------------------------------------
sub UpdateGeneratedChromeFiles()
{
UpdateBuildNumberFiles();
my ($file) = (":mozilla:xpfe:global:buildconfig.html");
my $tmp;
open (IN, "${file}.in") || die("${file}.in: $!\n");
open (OUT, ">$file") || die ("$file: $!\n");
while ($tmp=<IN>) {
$tmp =~ s/\@target\@/Mac CFM/;
$tmp =~ s/\@CC\@/CodeWarrior/;
$tmp =~ s/\@CXX\@/CodeWarrior/;
$tmp =~ s/\@\S+\@//;
print OUT "$tmp";
}
close(OUT);
close(IN);
}
#//--------------------------------------------------------------------------------------------------
#// Select a default skin
#//--------------------------------------------------------------------------------------------------
sub SetDefaultSkin($)
{
my($skin) = @_;
assertRightDirectory();
my($dist_dir) = GetBinDirectory();
my($chrome_subdir) = $dist_dir."Chrome";
print "Setting default skin to $skin\n";
local(*CHROMEFILE);
open(CHROMEFILE, ">>${chrome_subdir}:installed-chrome.txt") || die "Failed to open installed_chrome.txt\n";
print(CHROMEFILE "skin,install,select,$skin\n");
close(CHROMEFILE);
}
#//--------------------------------------------------------------------------------------------------
#// Select a default locale
#//--------------------------------------------------------------------------------------------------
sub SetDefaultLocale($$)
{
my($locale, $chrome_dir) = @_;
print "Setting default locale to $locale\n";
local(*CHROMEFILE);
open(CHROMEFILE, ">>${chrome_dir}:installed-chrome.txt") || die "Failed to open installed_chrome.txt\n";
print(CHROMEFILE "locale,install,select,$locale\n");
close(CHROMEFILE);
}
#//--------------------------------------------------------------------------------------------------
#// InstallDefaultsFiles
#//--------------------------------------------------------------------------------------------------
sub InstallDefaultsFiles()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = GetBinDirectory();
print("--- Starting Defaults copying ----\n");
# default folder
my($defaults_dir) = "$dist_dir" . "Defaults:";
mkdir($defaults_dir, 0);
{
my($default_wallet_dir) = "$defaults_dir"."wallet:";
mkdir($default_wallet_dir, 0);
InstallResources(":mozilla:extensions:wallet:src:MANIFEST", "$default_wallet_dir");
}
# Default _profile_ directory stuff
{
my($default_profile_dir) = "$defaults_dir"."Profile:";
mkdir($default_profile_dir, 0);
InstallResources(":mozilla:profile:defaults:MANIFEST", "$default_profile_dir", 1);
my($default_profile_chrome_dir) = "$default_profile_dir"."chrome:";
mkdir($default_profile_chrome_dir, 0);
InstallResources(":mozilla:profile:defaults:chrome:MANIFEST", "$default_profile_chrome_dir", 1);
# make a dup in US
my($default_profile_dir_US) = "$default_profile_dir"."US:";
mkdir($default_profile_dir_US, 0);
InstallResources(":mozilla:profile:defaults:MANIFEST", "$default_profile_dir_US", 1);
my($default_profile_chrome_dir_US) = "$default_profile_dir_US"."chrome:";
mkdir($default_profile_chrome_dir_US, 0);
InstallResources(":mozilla:profile:defaults:chrome:MANIFEST", "$default_profile_chrome_dir_US", 1);
}
# Default _messenger_ directory stuff
my($default_messenger_dir) = "$defaults_dir"."messenger:";
mkdir($default_messenger_dir, 0);
InstallResources(":mozilla:mailnews:extensions:mailviews:resources:content:MANIFEST", "$default_messenger_dir", 1);
# make a dup in US dir
my($default_messenger_dir_US) = "$default_messenger_dir"."US:";
mkdir($default_messenger_dir_US, 0);
InstallResources(":mozilla:mailnews:extensions:mailviews:resources:content:MANIFEST", "$default_messenger_dir_US", 1);
# Default _pref_ directory stuff
{
my($default_pref_dir) = "$defaults_dir"."Pref:";
mkdir($default_pref_dir, 0);
InstallResources(":mozilla:xpinstall:public:MANIFEST_PREFS", "$default_pref_dir", 0);
InstallResources(":mozilla:modules:libpref:src:init:MANIFEST", "$default_pref_dir", 0);
InstallResources(":mozilla:modules:libpref:src:mac:MANIFEST", "$default_pref_dir", 0);
InstallResources(":mozilla:netwerk:base:public:MANIFEST_PREFS", "$default_pref_dir", 0);
if ($main::options{inspector})
{
InstallResources(":mozilla:extensions:inspector:resources:content:prefs:MANIFEST", "$default_pref_dir", 0);
}
if ($main::options{typeaheadfind})
{
InstallResources(":mozilla:extensions:typeaheadfind:resources:content:prefs:MANIFEST", "$default_pref_dir", 0);
}
if ($main::options{mdn}) {
InstallResources(":mozilla:mailnews:extensions:mdn:resources:content:MANIFEST_PREFS", "$default_pref_dir", 0);
}
}
{
my($default_autoconfig_dir) = "$defaults_dir"."autoconfig:";
mkdir($default_autoconfig_dir, 0);
InstallResources(":mozilla:extensions:pref:autoconfig:src:MANIFEST", "$default_autoconfig_dir");
InstallResources(":mozilla:extensions:pref:autoconfig:src:mac:MANIFEST", "$default_autoconfig_dir");
}
print("--- Defaults copying complete ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// InstallNonChromeResources
#//--------------------------------------------------------------------------------------------------
sub InstallNonChromeResources()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = GetBinDirectory();
print("--- Starting Resource copying ----\n");
#//
#// Most resources should all go into the chrome dir eventually
#//
my($resource_dir) = "$dist_dir" . "res:";
my($samples_dir) = "$resource_dir" . "samples:";
my($builtin_dir) = "$resource_dir" . "builtin:";
#//
#// Make aliases of resource files
#//
MakeAlias(":mozilla:content:xml:content:src:xhtml11.dtd", "$resource_dir"."dtd:");
if ($main::options{svg})
{
MakeAlias(":mozilla:layout:svg:base:src:svg.dtd", "$resource_dir"."dtd:");
}
if ($main::options{mathml})
{
MakeAlias(":mozilla:layout:mathml:content:src:mathml.dtd", "$resource_dir"."dtd:");
MakeAlias(":mozilla:layout:mathml:content:src:mathml.css", "$resource_dir");
InstallResources(":mozilla:layout:mathml:base:src:MANIFEST", "$resource_dir"."fonts:");
}
MakeAlias(":mozilla:layout:html:document:src:ua.css", "$resource_dir");
MakeAlias(":mozilla:layout:html:document:src:html.css", "$resource_dir");
MakeAlias(":mozilla:layout:html:document:src:forms.css", "$resource_dir");
MakeAlias(":mozilla:layout:html:document:src:quirk.css", "$resource_dir");
MakeAlias(":mozilla:layout:html:document:src:viewsource.css", "$resource_dir");
MakeAlias(":mozilla:layout:html:document:src:arrow.gif", "$resource_dir");
MakeAlias(":mozilla:layout:html:base:src:loading-image.gif", "$resource_dir");
MakeAlias(":mozilla:layout:html:base:src:broken-image.gif", "$resource_dir");
MakeAlias(":mozilla:webshell:tests:viewer:resources:viewer.properties", "$resource_dir");
MakeAlias(":mozilla:intl:uconv:src:charsetalias.properties", "$resource_dir");
MakeAlias(":mozilla:intl:uconv:src:maccharset.properties", "$resource_dir");
MakeAlias(":mozilla:intl:uconv:src:charsetData.properties", "$resource_dir");
MakeAlias(":mozilla:intl:locale:src:langGroups.properties", "$resource_dir");
MakeAlias(":mozilla:intl:locale:src:language.properties", "$resource_dir");
MakeAlias(":mozilla:gfx:src:mac:fontEncoding.properties", "$resource_dir"."fonts:");
my($entitytab_dir) = "$resource_dir" . "entityTables";
InstallResources(":mozilla:intl:unicharutil:tables:MANIFEST", "$entitytab_dir");
my($html_dir) = "$resource_dir" . "html:";
InstallResources(":mozilla:layout:html:base:src:MANIFEST_RES", "$html_dir");
my($throbber_dir) = "$resource_dir" . "throbber:";
BuildFolderResourceAliases(":mozilla:webshell:tests:viewer:throbber:", "$throbber_dir");
BuildFolderResourceAliases(":mozilla:webshell:tests:viewer:samples:", "$samples_dir");
BuildFolderResourceAliases(":mozilla:webshell:tests:viewer:resources:", "$samples_dir");
BuildFolderResourceAliases(":mozilla:xpfe:browser:samples:", "$samples_dir");
InstallResources(":mozilla:xpfe:browser:src:MANIFEST", "$samples_dir");
MakeAlias(":mozilla:xpfe:browser:samples:sampleimages:", "$samples_dir");
my($rdf_dir) = "$resource_dir" . "rdf:";
BuildFolderResourceAliases(":mozilla:rdf:resources:", "$rdf_dir");
# Search - make copies (not aliases) of the various search files
my($searchPlugins) = "${dist_dir}Search Plugins";
print("--- Starting Search Plugins copying: $searchPlugins\n");
InstallResources(":mozilla:xpfe:components:search:datasets:MANIFEST", "$searchPlugins", 1);
# QA Menu
InstallResources(":mozilla:intl:strres:tests:MANIFEST", "$resource_dir");
# install builtin XBL bindings
MakeAlias(":mozilla:content:xbl:builtin:htmlbindings.xml", "$builtin_dir");
MakeAlias(":mozilla:content:xbl:builtin:mac:platformHTMLBindings.xml", "$builtin_dir");
if ($main::options{inspector})
{
InstallResources(":mozilla:extensions:inspector:resources:content:res:MANIFEST", "$resource_dir" . "inspector:");
}
if ($main::options{typeaheadfind})
{
MakeAlias(":mozilla:extensions:typeaheadfind:resources:locale:en-US:typeaheadfind.properties", "$resource_dir");
}
print("--- End Resource copying ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// InstallComponentFiles
#//--------------------------------------------------------------------------------------------------
sub InstallComponentFiles()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = GetBinDirectory();
print("--- Starting Text Components copying ----\n");
my($components_dir) = "$dist_dir" . "Components:";
# console
InstallResources(":mozilla:xpfe:components:console:MANIFEST", "$components_dir", 0);
# sidebar
InstallResources(":mozilla:xpfe:components:sidebar:src:MANIFEST", "$components_dir");
# update notifications
InstallResources(":mozilla:xpfe:components:updates:src:MANIFEST", "$components_dir");
# download manager
InstallResources(":mozilla:xpfe:components:download-manager:src:MANIFEST_COMPONENTS", "$components_dir");
# embedding UI
InstallResources(":mozilla:embedding:components:ui:helperAppDlg:MANIFEST", "$components_dir");
InstallResources(":mozilla:embedding:components:ui:progressDlg:MANIFEST", "$components_dir");
# resetPref
InstallResources(":mozilla:xpfe:components:resetPref:MANIFEST", "$components_dir");
print("--- Done Text Components copying ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// MakeNonChromeAliases
#//--------------------------------------------------------------------------------------------------
sub MakeNonChromeAliases()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
InstallNonChromeResources();
InstallDefaultsFiles();
InstallComponentFiles();
}
#//--------------------------------------------------------------------------------------------------
#// DumpChromeToTemp
#//
#// Iterates over all the .jar files in $chrome_dir and unzips them into a temp
#// directory organized by the name of the jar file. This matches the expected
#// format in the embedding jar manifest.
#//--------------------------------------------------------------------------------------------------
sub DumpChromeToTemp($$$$)
{
my($dist_dir, $chrome_dir, $temp_chrome_dir, $verbose) = @_;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
opendir(CHROMEDIR, $chrome_dir);
my(@jarList) = readdir(CHROMEDIR);
closedir(CHROMEDIR);
# the jar manifest generator expects the dumped files to be in
# a certain hierarchy:
# <jar name>/<...path within jar...>
mkpath($temp_chrome_dir, $verbose, 0777);
my($file);
foreach $file ( @jarList ) {
if ( $file =~ /\.jar/ ) {
print "-- unzipping $file\n" if $verbose;
# pull everything from the jar's name (eg: classic.jar) up to the
# last "." and make that the foldername that everything in this
# jar file goes into
my($foldername) = substr($file, 0, rindex($file,".")) . ":";
my($zip) = Archive::Zip->new("$chrome_dir:$file");
my(@members) = $zip->members();
my($item);
foreach $item ( @members ) {
my($name) = $item->fileName();
$name =~ s/\//:/g;
# print("+ extracting $name\n") if $verbose;
die "extract error" if $item->extractToFileNamed($temp_chrome_dir . $foldername . $name) != AZ_OK;
}
}
}
}
#//--------------------------------------------------------------------------------------------------
#// ProcessEmbedJarManifest
#//
#// Pick up an embedding manifest specified by $jar_file. We first need to do some extra processing on
#// it to get the correct locale.
#//--------------------------------------------------------------------------------------------------
sub ProcessEmbedJarManifest ( $$$$$$$ )
{
my($top_path, $inc_path, $temp_chrome_dir, $jar_file, $locale, $platform, $jars) = @_;
# copy over our manifest so that it's also at the root
# of our chrome tree then run it through the jar machine. We need to
# use GenerateManifest to get the locales correct.
copy("$inc_path$jar_file", "$temp_chrome_dir:$jar_file") || die "can't copy $jar_file manifest";
my($temp_manifest) = "$temp_chrome_dir:$jar_file.tmp.mn";
local(*TMPMANIFEST);
open(TMPMANIFEST, ">$temp_manifest") || die "couldn't create embed jar manifest";
GenerateManifest::GenerateManifest($top_path, "$inc_path$jar_file", $temp_chrome_dir,
$locale, $platform, *TMPMANIFEST, ":", 1);
close(TMPMANIFEST);
CreateJarFromManifest($temp_manifest, "$temp_chrome_dir:", $jars);
# clean up our temp files
unlink("$temp_chrome_dir:$jar_file");
unlink($temp_manifest);
}
#//--------------------------------------------------------------------------------------------------
#// PackageEmbeddingChrome
#//
#// Make use of mozilla/embedding/config's jar packaging scripts to build embed.jar
#// with the bare-minimum chrome required for embedding. This process is unpleasant and
#// suboptimal, but it allows us to reuse scripts and manifests so as to not get
#// out of sync when changes are made for win/unix.
#//
#// Basically, this takes all the jar files in mozilla/viewer/Chrome, unzips them,
#// runs a script to generate a manifest file with some substiutions, then rejars
#// based on the new, minimal manifest.
#//--------------------------------------------------------------------------------------------------
sub PackageEmbeddingChrome($$)
{
my($dist_dir, $chrome_dir) = @_;
# we prefer not to use the jars when packaging, since it adds a lot of time and
# effort to the build process. use the raw files if they're at all available.
my($must_use_jars) = !$main::options{chrome_files};
my($embed_dir) = $dist_dir . ":Embed";
mkdir($embed_dir, 0);
# unzip the existing jar files and dump them in a tempdir or point our
# tempdir at the existing chrome files.
my($temp_chrome_dir) = "$embed_dir:tempchrome";
if ( $must_use_jars ) {
DumpChromeToTemp($dist_dir, $chrome_dir, "$temp_chrome_dir:", 1);
}
else {
$temp_chrome_dir = $chrome_dir;
}
# Make sure we add the config dir to search, to pick up GenerateManifest.pm
# Need to do this dynamically, because this module can be used before
# mozilla/config has been checked out.
my ($top_path) = $0; # $0 is the path to the parent script
$top_path =~ s/:build:mac:build_scripts:.+$//;
my($inc_path) = $top_path . ":embedding:config:";
push(@INC, $inc_path);
require GenerateManifest;
# generate the embedding manifest from the template in embedding/config. The
# resulting manifest must go at the root of the tree it describes. The paths
# in the manifest are local to that location. As a result, we dump it
# in our temp chrome dir.
my($temp_manifest) = "$temp_chrome_dir:embed-jar.tmp.mn";
local(*MANIFEST);
open(MANIFEST, ">$temp_manifest") || die "couldn't create embed jar manifest";
GenerateManifest::GenerateManifest($top_path, $inc_path . "embed-jar.mn", $temp_chrome_dir,
"en-US", "en-mac", *MANIFEST, ":", 1);
close(MANIFEST);
# make embed.jar from the above manifest, adding in any other manifests if the
# right options are set.
my(%jars);
CreateJarFromManifest($temp_manifest, "$temp_chrome_dir:", \%jars);
if ($main::options{embedding_xulprefs}) {
ProcessEmbedJarManifest($top_path, $inc_path, $temp_chrome_dir, "xulprefs.mn", "en-US", "en-mac", \%jars);
}
if ($main::options{embedding_xulsecurity}) {
ProcessEmbedJarManifest($top_path, $inc_path, $temp_chrome_dir, "xulsecurity.mn", "en-US", "en-mac", \%jars);
}
WriteOutJarFiles("$temp_chrome_dir:", \%jars);
# clean up after ourselves and move everything to the right locations. The embed.jar
# and resulting installed-chrome need to end up in dist/Embed in either case.
if ( $must_use_jars ) {
print("deleting temp chrome dir $temp_chrome_dir\n");
rmtree($temp_chrome_dir, 0, 0);
}
else {
# since we used chrome files from $dist_dir, our new jar needs to be moved and
# we need to clean up the copied chrome files
move($dist_dir . "Embed.jar", $embed_dir);
move($dist_dir . "installed-chrome.txt", $embed_dir);
rmtree($dist_dir . "embed");
unlink($temp_manifest);
}
# we have to select a default locale, otherwise we won't know about a bunch
# of files in embed.jar if the app doesn't call the code to auto-detect the locale.
SetDefaultLocale("en-US", $embed_dir);
}
#//--------------------------------------------------------------------------------------------------
#// BuildEmbeddingPackage
#//
#// Run through the basebrowser manifest file and copy all the files into dist/Embed
#//--------------------------------------------------------------------------------------------------
sub BuildEmbeddingPackage
{
unless ($main::options{embedding_chrome}) { return; }
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = GetBinDirectory();
# Make sure we add the config dir to search, to pick up Packager.pm
# Need to do this dynamically, because this module can be used before
# mozilla/xpinstall has been checked out.
my($top_path) = $0; # $0 is the path to the parent script
$top_path =~ s/:build:mac:build_scripts:.+$//;
my($inc_path) = "$top_path:xpinstall:packager:";
push(@INC, $inc_path);
require Packager;
# final destination will be a sibling of $dist_dir in dist
my($destination) = "$top_path:dist";
my($manifest) = "$top_path:embedding:config:basebrowser-mac-cfm$D";
chop $dist_dir; # Copy() expects the src/dest dirs not to have a ':' at the end
Packager::Copy($dist_dir, $destination, $manifest, "mac", 0, 0, 0, () );
# the Embed.jar is in the wrong place, move it into the chrome dir
mkdir("$destination:Embed:Chrome", 0);
move("$destination:Embed:embed.jar", "$destination:Embed:Chrome:embed.jar");
move("$destination:Embed:installed-chrome.txt", "$destination:Embed:Chrome:installed-chrome.txt");
# copy PPEmbed into our new package
print("-- copying PPEmbed to embed package\n");
copy("$dist_dir:PPEmbed$D", "$destination:Embed:PPEmbed$D");
}
#//--------------------------------------------------------------------------------------------------
#// ProcessJarManifests
#//--------------------------------------------------------------------------------------------------
sub ProcessJarManifests()
{
my($dist_dir) = GetBinDirectory();
my($chrome_dir) = "$dist_dir"."Chrome";
my($resource_dir) = "$dist_dir" . "res:";
# a hash of jars passed as context to the following calls
my(%jars);
if ($main::options{chatzilla})
{
CreateJarFromManifest(":mozilla:extensions:irc:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{content_packs})
{
CreateJarFromManifest(":mozilla:extensions:content-packs:resources:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{cview})
{
CreateJarFromManifest(":mozilla:extensions:cview:resources:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{ldap})
{
CreateJarFromManifest(":mozilla:directory:xpcom:base:resources:jar.mn", $chrome_dir, \%jars);
if ($main::options{ldap_experimental})
{
CreateJarFromManifest(":mozilla:directory:xpcom:tests:jar.mn", $chrome_dir, \%jars);
}
}
if ($main::options{help})
{
CreateJarFromManifest(":mozilla:extensions:help:resources:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{inspector})
{
CreateJarFromManifest(":mozilla:extensions:inspector:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{jsd} && $main::options{venkman})
{
CreateJarFromManifest(":mozilla:extensions:venkman:resources:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{typeaheadfind})
{
CreateJarFromManifest(":mozilla:extensions:typeaheadfind:resources:jar.mn", $chrome_dir, \%jars);
}
CreateJarFromManifest(":mozilla:accessible:src:base:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:caps:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:content:html:style:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:docshell:resources:content:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:docshell:resources:locale:en-US:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:editor:ui:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:embedding:browser:chrome:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:embedding:browser:chrome:locale:en-US:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:extensions:cookie:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:extensions:pref:autoconfig:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:extensions:irc:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:extensions:wallet:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:intl:uconv:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:htmlparser:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:layout:html:document:src:xbl-marquee:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:layout:html:forms:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:layout:html:base:src:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:mailnews:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:mailnews:base:resources:content:mac:jar.mn", $chrome_dir, \%jars);
if ($main::options{smime} && $main::options{psm}) {
CreateJarFromManifest(":mozilla:mailnews:extensions:smime:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{mdn}) {
CreateJarFromManifest(":mozilla:mailnews:extensions:mdn:jar.mn", $chrome_dir, \%jars);
}
CreateJarFromManifest(":mozilla:mailnews:extensions:mailviews:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:netwerk:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:profile:pref-migrator:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:profile:resources:jar.mn", $chrome_dir, \%jars);
# use different css files for scrollbars on OSX and OS9 in classic skin. On OSX, use
# ones that specify native scrollbars via xbl. OS9 can't use these because of
# mousewheel driver problems that would be exacerbated by using native scrollbars
# everywhere
if ($main::options{carbon}) {
MakeAlias(":mozilla:themes:classic:global:mac:nativescrollbars.css", ":mozilla:themes:classic:global:mac:scrollbars.css");
}
else {
MakeAlias(":mozilla:themes:classic:global:mac:xulscrollbars.css", ":mozilla:themes:classic:global:mac:scrollbars.css");
}
CreateJarFromManifest(":mozilla:content:xml:document:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:themes:classic:global:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:themes:classic:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:themes:modern:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpcom:base:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:browser:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:browser:resources:content:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:browser:resources:locale:en-US:unix:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:browser:resources:locale:en-US:win:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:browser:resources:locale:en-US:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:communicator:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:communicator:resources:content:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:bookmarks:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:download-manager:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:download-manager:resources:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:prefwindow:resources:content:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:prefwindow:resources:locale:en-US:unix:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:prefwindow:resources:locale:en-US:win:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:components:prefwindow:resources:locale:en-US:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:global:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpfe:global:resources:content:mac:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:xpinstall:res:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:embedding:components:webbrowserpersist:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:embedding:components:ui:jar.mn", $chrome_dir, \%jars);
if ($main::options{psm}) {
CreateJarFromManifest(":mozilla:security:manager:ssl:resources:jar.mn", $chrome_dir, \%jars);
CreateJarFromManifest(":mozilla:security:manager:pki:resources:jar.mn", $chrome_dir, \%jars);
}
if ($main::options{calendar})
{
CreateJarFromManifest(":mozilla:calendar:resources:jar.mn", $chrome_dir, \%jars);
}
# bad jar.mn files
# CreateJarFromManifest(":mozilla:extensions:xmlterm:jar.mn", $chrome_dir, \%jars);
WriteOutJarFiles($chrome_dir, \%jars);
# generate a jar manifest for embedding and package it. This needs to be done _after_
# all of the other jar files are created.
if ($main::options{embedding_chrome}) {
PackageEmbeddingChrome($dist_dir, $chrome_dir);
}
}
#//--------------------------------------------------------------------------------------------------
#// BuildJarFiles
#//--------------------------------------------------------------------------------------------------
sub BuildJarFiles()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
print("--- Starting JAR building ----\n");
ProcessJarManifests();
print("--- JAR building done ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// BuildResources
#//--------------------------------------------------------------------------------------------------
sub BuildResources()
{
unless( $main::build{resources} ) { return; }
assertRightDirectory();
StartBuildModule("resources");
#just copy this plugin to this directory.. temporary solution until the plug in is part of the build
my($dist_dir) = GetBinDirectory();
my($essentials_dir) = "$dist_dir" . "Essential Files:";
my($existing_plugin) = $essentials_dir."PrintDialogPDE.plugin";
if (-e $existing_plugin)
{
my $deadPlugin = full_path_to($existing_plugin);
my $ascript = <<EOS;
tell application "Finder"
delete alias "$deadPlugin"
end tell
EOS
MacPerl::DoAppleScript($ascript) or die($^E);
}
FSpDirectoryCopy(":mozilla:gfx:src:mac:printerplugin:PrintDialogPDE.plugin:","$essentials_dir", 0);
ActivateApplication('McPL');
MakeNonChromeAliases(); # Defaults, JS components etc.
BuildJarFiles();
BuildEmbeddingPackage();
# Set the default skin to be classic
SetDefaultSkin("classic/1.0");
EndBuildModule("resources");
}
#//--------------------------------------------------------------------------------------------------
#// Build the runtime 'dist' directories
#//--------------------------------------------------------------------------------------------------
sub BuildRuntimeDist()
{
unless ( $main::build{dist} ) { return;}
assertRightDirectory();
my $distdirectory = ":mozilla:dist"; # the parent directory in dist, including all the headers
print("--- Starting Runtime Dist export ----\n");
#MAC_COMMON
InstallFromManifest(":mozilla:build:mac:MANIFEST", "$distdirectory:mac:common:");
InstallFromManifest(":mozilla:lib:mac:NSRuntime:include:MANIFEST", "$distdirectory:mac:common:");
InstallFromManifest(":mozilla:lib:mac:NSStdLib:include:MANIFEST", "$distdirectory:mac:common:");
InstallFromManifest(":mozilla:lib:mac:MoreFiles:MANIFEST", "$distdirectory:mac:common:morefiles:");
InstallFromManifest(":mozilla:lib:mac:NSStartup:MANIFEST", "$distdirectory:mac:common:");
#GC_LEAK_DETECTOR
InstallFromManifest(":mozilla:gc:boehm:MANIFEST", "$distdirectory:gc:");
#INCLUDE
InstallFromManifest(":mozilla:config:MANIFEST_xpfe", "$distdirectory:xpfe:");
InstallFromManifest(":mozilla:config:mac:MANIFEST", "$distdirectory:config:");
#NSPR
InstallFromManifest(":mozilla:nsprpub:pr:include:MANIFEST", "$distdirectory:nspr:");
InstallFromManifest(":mozilla:nsprpub:pr:src:md:mac:MANIFEST", "$distdirectory:nspr:mac:");
InstallFromManifest(":mozilla:nsprpub:lib:ds:MANIFEST", "$distdirectory:nspr:");
InstallFromManifest(":mozilla:nsprpub:lib:libc:include:MANIFEST", "$distdirectory:nspr:");
InstallFromManifest(":mozilla:nsprpub:lib:msgc:include:MANIFEST", "$distdirectory:nspr:");
print("--- Runtime Dist export complete ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// Build the client 'dist' directories
#//--------------------------------------------------------------------------------------------------
sub BuildClientDist()
{
unless ( $main::build{dist} ) { return;}
assertRightDirectory();
my $distdirectory = ":mozilla:dist"; # the parent directory in dist, including all the headers
my $dist_dir = GetBinDirectory(); # the subdirectory with the libs and executable.
print("--- Starting Client Dist export ----\n");
InstallFromManifest(":mozilla:lib:mac:Misc:MANIFEST", "$distdirectory:mac:common:");
InstallFromManifest(":mozilla:lib:mac:Instrumentation:MANIFEST", "$distdirectory:mac:inst:");
#INCLUDE
InstallFromManifest(":mozilla:include:MANIFEST", "$distdirectory:include:");
#INTL
#CHARDET
InstallFromManifest(":mozilla:intl:chardet:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:intl:chardet:public:MANIFEST", "$distdirectory:chardet");
#UCONV
InstallFromManifest(":mozilla:intl:uconv:idl:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:intl:uconv:public:MANIFEST", "$distdirectory:uconv:");
#UNICHARUTIL
InstallFromManifest(":mozilla:intl:unicharutil:public:MANIFEST", "$distdirectory:unicharutil");
InstallFromManifest(":mozilla:intl:unicharutil:util:MANIFEST",
"$distdirectory:unicharutil");
# InstallFromManifest(":mozilla:intl:unicharutil:public:MANIFEST_IDL", "$distdirectory:idl:");
#LOCALE
InstallFromManifest(":mozilla:intl:locale:public:MANIFEST", "$distdirectory:locale:");
InstallFromManifest(":mozilla:intl:locale:idl:MANIFEST_IDL", "$distdirectory:idl:");
#LWBRK
InstallFromManifest(":mozilla:intl:lwbrk:public:MANIFEST", "$distdirectory:lwbrk:");
InstallFromManifest(":mozilla:intl:lwbrk:idl:MANIFEST_IDL", "$distdirectory:idl:");
#STRRES
InstallFromManifest(":mozilla:intl:strres:public:MANIFEST_IDL", "$distdirectory:idl:");
#JPEG
InstallFromManifest(":mozilla:jpeg:MANIFEST", "$distdirectory:jpeg:");
#LIBREG
InstallFromManifest(":mozilla:modules:libreg:include:MANIFEST", "$distdirectory:libreg:");
InstallFromManifest(":mozilla:modules:libreg:xpcom:MANIFEST", "$distdirectory:mozreg:");
InstallFromManifest(":mozilla:modules:libreg:xpcom:MANIFEST_IDL", "$distdirectory:idl:");
#STRING
InstallFromManifest(":mozilla:string:public:MANIFEST", "$distdirectory:string:");
InstallFromManifest(":mozilla:string:obsolete:MANIFEST", "$distdirectory:string:");
#XPCOM
InstallFromManifest(":mozilla:xpcom:base:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:io:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:ds:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:threads:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:components:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:build:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:glue:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:base:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:components:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:ds:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:io:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:threads:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:proxy:public:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:reflect:xptinfo:public:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:reflect:xptinfo:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpcom:reflect:xptcall:public:MANIFEST", "$distdirectory:xpcom:");
InstallFromManifest(":mozilla:xpcom:typelib:xpt:public:MANIFEST", "$distdirectory:xpcom:");
#ZLIB
InstallFromManifest(":mozilla:modules:zlib:src:MANIFEST", "$distdirectory:zlib:");
#LIBJAR
InstallFromManifest(":mozilla:modules:libjar:MANIFEST", "$distdirectory:libjar:");
InstallFromManifest(":mozilla:modules:libjar:MANIFEST_IDL", "$distdirectory:idl:");
#LIBUTIL
InstallFromManifest(":mozilla:modules:libutil:public:MANIFEST", "$distdirectory:libutil:");
#SUN_JAVA
InstallFromManifest(":mozilla:sun-java:stubs:include:MANIFEST", "$distdirectory:sun-java:");
InstallFromManifest(":mozilla:sun-java:stubs:macjri:MANIFEST", "$distdirectory:sun-java:");
#JS
InstallFromManifest(":mozilla:js:src:MANIFEST", "$distdirectory:js:");
#LIVECONNECT
InstallFromManifest(":mozilla:js:src:liveconnect:MANIFEST", "$distdirectory:liveconnect:");
#XPCONNECT
InstallFromManifest(":mozilla:js:src:xpconnect:idl:MANIFEST", "$distdirectory:idl:");
InstallFromManifest(":mozilla:js:src:xpconnect:public:MANIFEST", "$distdirectory:xpconnect:");
#CAPS
InstallFromManifest(":mozilla:caps:include:MANIFEST", "$distdirectory:caps:");
InstallFromManifest(":mozilla:caps:idl:MANIFEST", "$distdirectory:idl:");
#LIBPREF
InstallFromManifest(":mozilla:modules:libpref:public:MANIFEST", "$distdirectory:libpref:");
InstallFromManifest(":mozilla:modules:libpref:public:MANIFEST_IDL", "$distdirectory:idl:");
#PROFILE
InstallFromManifest(":mozilla:profile:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:profile:dirserviceprovider:public:MANIFEST", "$distdirectory:profdirserviceprovider:");
#PREF_MIGRATOR
InstallFromManifest(":mozilla:profile:pref-migrator:public:MANIFEST", "$distdirectory:profile:");
#LIBIMAGE
InstallFromManifest(":mozilla:modules:libimg:png:MANIFEST", "$distdirectory:libimg:");
InstallFromManifest(":mozilla:modules:libimg:mng:MANIFEST", "$distdirectory:libimg:");
#LIBIMG2
InstallFromManifest(":mozilla:modules:libpr0n:public:MANIFEST_IDL", "$distdirectory:libimg2:");
InstallFromManifest(":mozilla:modules:libpr0n:decoders:icon:MANIFEST_IDL", "$distdirectory:icondecoder:");
#PLUGIN
InstallFromManifest(":mozilla:modules:plugin:base:public:MANIFEST", "$distdirectory:plugin:");
InstallFromManifest(":mozilla:modules:plugin:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:modules:oji:src:MANIFEST", "$distdirectory:oji:");
InstallFromManifest(":mozilla:modules:oji:public:MANIFEST", "$distdirectory:oji:");
InstallFromManifest(":mozilla:modules:oji:public:MANIFEST_IDL", "$distdirectory:idl:");
#DB
InstallFromManifest(":mozilla:db:mdb:public:MANIFEST", "$distdirectory:db:");
InstallFromManifest(":mozilla:db:mork:build:MANIFEST", "$distdirectory:db:");
#DBM
InstallFromManifest(":mozilla:dbm:include:MANIFEST", "$distdirectory:dbm:");
#URILOADER
InstallFromManifest(":mozilla:uriloader:base:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:uriloader:exthandler:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:uriloader:prefetch:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:uriloader:prefetch:MANIFEST", "$distdirectory:uriloader:");
#NETWERK
InstallFromManifest(":mozilla:netwerk:build:MANIFEST", "$distdirectory:netwerk:");
InstallFromManifest(":mozilla:netwerk:base:public:MANIFEST", "$distdirectory:netwerk:");
InstallFromManifest(":mozilla:netwerk:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:socket:base:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:protocol:about:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:protocol:data:public:MANIFEST_IDL", "$distdirectory:idl:");
#InstallFromManifest(":mozilla:netwerk:protocol:file:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:protocol:http:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:protocol:http:public:MANIFEST", "$distdirectory:netwerk:");
InstallFromManifest(":mozilla:netwerk:protocol:ftp:public:MANIFEST", "$distdirectory:netwerk:");
InstallFromManifest(":mozilla:netwerk:protocol:jar:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:protocol:res:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:netwerk:mime:public:MANIFEST", "$distdirectory:netwerk:");
InstallFromManifest(":mozilla:netwerk:cookie:public:MANIFEST_IDL", "$distdirectory:idl:");
#EXTENSIONS
InstallFromManifest(":mozilla:extensions:cookie:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:cookie:MANIFEST", "$distdirectory:cookie:");
InstallFromManifest(":mozilla:extensions:wallet:public:MANIFEST", "$distdirectory:wallet:");
#WEBSHELL
InstallFromManifest(":mozilla:webshell:public:MANIFEST", "$distdirectory:webshell:");
InstallFromManifest(":mozilla:webshell:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:webshell:tests:viewer:public:MANIFEST", "$distdirectory:webshell:");
#CONTENT
InstallFromManifest(":mozilla:content:base:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:content:base:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:events:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:events:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:content:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:content:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:content:html:content:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:document:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:document:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:content:html:document:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:style:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:html:style:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:shared:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xbl:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xml:content:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xml:document:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xsl:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xsl:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:content:xul:content:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xul:document:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xul:document:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:content:xul:templates:public:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:content:xul:templates:public:MANIFEST_IDL", "$distdirectory:idl:");
#LAYOUT
InstallFromManifest(":mozilla:layout:build:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:base:public:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:layout:html:style:src:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:html:base:src:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:html:forms:public:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:html:table:public:MANIFEST", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:xul:base:public:Manifest", "$distdirectory:layout:");
InstallFromManifest(":mozilla:layout:xul:base:src:MANIFEST", "$distdirectory:layout:");
if ($main::options{layout_debug})
{
#LAYOUT-DEBUG
InstallFromManifest(":mozilla:extensions:layout-debug:idl:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:layout-debug:public:MANIFEST", "$distdirectory:layout-debug:");
InstallFromManifest(":mozilla:extensions:layout-debug:plugin:MANIFEST_IDL", "$distdirectory:idl:");
}
#GFX
InstallFromManifest(":mozilla:gfx:public:MANIFEST", "$distdirectory:gfx:");
InstallFromManifest(":mozilla:gfx:idl:MANIFEST_IDL", "$distdirectory:idl:");
#VIEW
InstallFromManifest(":mozilla:view:public:MANIFEST", "$distdirectory:view:");
#DOM
InstallFromManifest(":mozilla:dom:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:base:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:core:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:css:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:events:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:html:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:traversal:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:range:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:stylesheets:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:views:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:xbl:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:xpath:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:dom:public:idl:xul:MANIFEST_IDL", "$distdirectory:idl:");
# SVG
if ($main::options{libart_lgpl}) {
InstallFromManifest(":mozilla:other-licenses:libart_lgpl:MANIFEST", "$distdirectory:include:");
}
if ($main::options{svg}) {
InstallFromManifest(":mozilla:content:svg:content:src:MANIFEST", "$distdirectory:content:");
InstallFromManifest(":mozilla:layout:svg:base:src:MANIFEST", "$distdirectory:layout:");
}
InstallFromManifest(":mozilla:dom:public:MANIFEST", "$distdirectory:dom:");
InstallFromManifest(":mozilla:dom:public:base:MANIFEST", "$distdirectory:dom:");
InstallFromManifest(":mozilla:dom:public:coreEvents:MANIFEST", "$distdirectory:dom:");
InstallFromManifest(":mozilla:dom:src:jsurl:MANIFEST", "$distdirectory:dom:");
InstallFromManifest(":mozilla:dom:src:base:MANIFEST", "$distdirectory:dom:");
#ACCESSIBLE
if ($main::options{accessible})
{
InstallFromManifest(":mozilla:accessible:public:MANIFEST", "$distdirectory:accessible:");
}
#JSURL
InstallFromManifest(":mozilla:dom:src:jsurl:MANIFEST_IDL", "$distdirectory:idl:");
#HTMLPARSER
InstallFromManifest(":mozilla:htmlparser:public:MANIFEST", "$distdirectory:htmlparser:");
InstallFromManifest(":mozilla:htmlparser:public:MANIFEST_IDL", "$distdirectory:idl:");
#EXPAT
InstallFromManifest(":mozilla:expat:xmlparse:MANIFEST", "$distdirectory:expat:");
#DOCSHELL
InstallFromManifest(":mozilla:docshell:base:MANIFEST_IDL", "$distdirectory:idl:");
#EMBEDDING
InstallFromManifest(":mozilla:embedding:base:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:browser:webbrowser:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:components:windowwatcher:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:components:jsconsole:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:components:appstartup:src:MANIFEST", "$distdirectory:embedding:components:");
InstallFromManifest(":mozilla:embedding:components:find:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:components:ui:helperAppDlg:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:embedding:components:ui:progressDlg:MANIFEST_IDL", "$distdirectory:idl:");
#WIDGET
InstallFromManifest(":mozilla:widget:public:MANIFEST", "$distdirectory:widget:");
InstallFromManifest(":mozilla:widget:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:widget:src:mac:MANIFEST", "$distdirectory:widget:");
#RDF
InstallFromManifest(":mozilla:rdf:base:idl:MANIFEST", "$distdirectory:idl:");
InstallFromManifest(":mozilla:rdf:base:public:MANIFEST", "$distdirectory:rdf:");
InstallFromManifest(":mozilla:rdf:util:public:MANIFEST", "$distdirectory:rdf:");
InstallFromManifest(":mozilla:rdf:datasource:public:MANIFEST", "$distdirectory:rdf:");
InstallFromManifest(":mozilla:rdf:build:MANIFEST", "$distdirectory:rdf:");
#CHROME
InstallFromManifest(":mozilla:rdf:chrome:public:MANIFEST", "$distdirectory:idl:");
#EDITOR
InstallFromManifest(":mozilla:editor:idl:MANIFEST", "$distdirectory:idl:");
InstallFromManifest(":mozilla:editor:txmgr:idl:MANIFEST", "$distdirectory:idl:");
InstallFromManifest(":mozilla:editor:public:MANIFEST", "$distdirectory:editor:");
InstallFromManifest(":mozilla:editor:txmgr:public:MANIFEST", "$distdirectory:editor:txmgr:");
InstallFromManifest(":mozilla:editor:txtsvc:public:MANIFEST", "$distdirectory:editor:txtsvc:");
InstallFromManifest(":mozilla:editor:txtsvc:public:MANIFEST_IDL", "$distdirectory:idl:");
#SILENTDL
#InstallFromManifest(":mozilla:silentdl:MANIFEST", "$distdirectory:silentdl:");
#XPINSTALL (the one and only!)
InstallFromManifest(":mozilla:xpinstall:public:MANIFEST", "$distdirectory:xpinstall:");
InstallFromManifest(":mozilla:xpinstall:cleanup:MANIFEST", "$distdirectory:xpinstall:");
my $dir = '';
for $dir (qw(autocomplete bookmarks download-manager find history related search shistory sidebar urlbarhistory))
{
InstallFromManifest(":mozilla:xpfe:components:$dir:public:MANIFEST_IDL", "$distdirectory:idl:");
}
InstallFromManifest(":mozilla:xpfe:components:timebomb:MANIFEST", "$distdirectory:xpfe:");
InstallFromManifest(":mozilla:xpfe:components:timebomb:MANIFEST_IDL", "$distdirectory:idl:");
# directory
InstallFromManifest(":mozilla:xpfe:components:directory:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpfe:components:intl:MANIFEST", "$distdirectory:xpfe:");
# XPAPPS
InstallFromManifest(":mozilla:xpfe:appshell:public:MANIFEST", "$distdirectory:xpfe:");
InstallFromManifest(":mozilla:xpfe:appshell:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpfe:browser:public:MANIFEST_IDL", "$distdirectory:idl:");
# XML-RPC
InstallFromManifest(":mozilla:extensions:xml-rpc:idl:MANIFEST_IDL", "$distdirectory:idl:");
#LDAP
if ($main::options{ldap})
{
# Create the ldap-standard.h file from the template
#
my($template) = ":mozilla:directory:c-sdk:ldap:include:ldap-standard-tmpl.h";
my($template_modtime) = GetFileModDate($template);
my($header) = ":mozilla:directory:c-sdk:ldap:include:ldap-standard.h";
my($header_modtime) = (-e $header ? GetFileModDate($header) : 0);
if ($template_modtime > $header_modtime) {
# Make sure we add the config dir to search, to pick up GenerateManifest.pm
# Need to do this dynamically, because this module can be used before
# mozilla/directory/c-sdk has been checked out.
my($top_path) = $0; # $0 is the path to the parent script
$top_path =~ s/:build:mac:build_scripts:.+$//;
my($inc_path) = $top_path . ":directory:c-sdk:ldap:build:";
push(@INC, $inc_path);
require replace;
local(*TEMPLATE);
open(TEMPLATE, "<$template") || die "couldn't open ldap header template";
local(*HEADER);
open(HEADER, ">$header") || die "couldn't create ldap header";
replace::GenerateHeader(*TEMPLATE, *HEADER, {"LDAP_VENDOR_NAME" => "mozilla.org", "LDAP_VENDOR_VERSION" => "500"});
close(TEMPLATE);
close(HEADER);
}
InstallFromManifest(":mozilla:directory:c-sdk:ldap:include:MANIFEST", "$distdirectory:directory:");
InstallFromManifest(":mozilla:directory:xpcom:base:public:MANIFEST", "$distdirectory:directory:");
InstallFromManifest(":mozilla:directory:xpcom:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:xpfe:components:autocomplete:public:MANIFEST_IDL", "$distdirectory:idl:");
}
# MAILNEWS
InstallFromManifest(":mozilla:mailnews:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:base:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:base:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:base:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:base:util:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:base:search:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:base:search:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:compose:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:compose:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:compose:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:db:msgdb:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:db:msgdb:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:local:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:local:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:local:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:imap:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:imap:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:imap:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:mime:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:mime:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:mime:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:mime:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:mime:emitters:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:news:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:news:build:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:addrbook:public:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:addrbook:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:mailnews:addrbook:src:MANIFEST", "$distdirectory:mailnews:");
InstallFromManifest(":mozilla:mailnews:addrbook:build:MANIFEST", "$distdirectory:mailnews:");
if ($main::options{smime} && $main::options{psm}) {
InstallFromManifest(":mozilla:mailnews:extensions:smime:public:MANIFEST_IDL", "$distdirectory:idl:");
}
#IIEXTRAS
if ($main::options{iiextras})
{
InstallFromManifest(":mozilla:extensions:interfaceinfo:public:MANIFEST_IDL", "$distdirectory:idl:");
}
#XMLEXTRAS
if ($main::options{xmlextras})
{
InstallFromManifest(":mozilla:extensions:xmlextras:base:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:xmlextras:schema:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:xmlextras:soap:public:MANIFEST_IDL", "$distdirectory:idl:");
if ($main::options{wsp})
{
InstallFromManifest(":mozilla:extensions:xmlextras:proxy:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:xmlextras:wsdl:public:MANIFEST_IDL", "$distdirectory:idl:");
}
}
#DOCUMENT INSPECTOR
if ($main::options{inspector})
{
InstallFromManifest(":mozilla:extensions:inspector:base:public:MANIFEST_IDL", "$distdirectory:idl:");
}
#TYPE AHEAD FIND
if ($main::options{typeaheadfind})
{
InstallFromManifest(":mozilla:extensions:typeaheadfind:public:MANIFEST_IDL", "$distdirectory:idl:");
}
#P3P
if ($main::options{p3p})
{
InstallFromManifest(":mozilla:extensions:p3p:public:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:extensions:p3p:public:MANIFEST", "$distdirectory:p3p:");
}
#JS DEBUGGER
if ($main::options{jsd})
{
InstallFromManifest(":mozilla:js:jsd:idl:MANIFEST_IDL", "$distdirectory:idl:");
InstallFromManifest(":mozilla:js:jsd:MANIFEST", "$distdirectory:jsdebug:");
}
#LIBICAL
if ($main::options{libical})
{
InstallFromManifest(":mozilla:other-licenses:libical:src:libical:autogenex:MANIFEST", "$distdirectory:libical:");
InstallFromManifest(":mozilla:other-licenses:libical:src:libicalss:MANIFEST", "$distdirectory:libical:");
}
#CALENDAR
if ($main::options{calendar})
{
InstallFromManifest(":mozilla:calendar:libxpical:MANIFEST_IDL", "$distdirectory:idl:");
}
print("--- Client Dist export complete ----\n");
}
#//--------------------------------------------------------------------------------------------------
#// Build the 'dist' directory
#//--------------------------------------------------------------------------------------------------
sub BuildDist()
{
unless ( $main::build{dist} ) { return;}
assertRightDirectory();
# activate MacPerl
ActivateApplication('McPL');
StartBuildModule("dist");
my $distdirectory = ":mozilla:dist"; # the parent directory in dist, including all the headers
my $dist_dir = GetBinDirectory(); # the subdirectory with the libs and executable.
if ($main::CLOBBER_DIST_ALL)
{
print "Clobbering dist in 5 seconds. Press command-. to stop\n";
DelayFor(5);
print "Clobbering all files inside :mozilla:dist:\n";
EmptyTree($distdirectory.":");
}
else
{
if ($main::CLOBBER_DIST_LIBS)
{
print "Clobbering library aliases and executables inside ".$dist_dir."\n";
EmptyTree($dist_dir);
}
}
# we really do not need all these paths, but many client projects include them
mkpath([ ":mozilla:dist:", ":mozilla:dist:client_stubs:" ]);
mkpath([ ":mozilla:dist:static_libs:", ":mozilla:dist:static_libs_debug:" ]);
mkpath([ ":mozilla:dist:viewer:", ":mozilla:dist:viewer_debug:" ]);
#make default plugins folder so that apprunner won't go looking for 3.0 and 4.0 plugins.
mkpath([ ":mozilla:dist:viewer:Plug-ins", ":mozilla:dist:viewer_debug:Plug-ins"]);
#mkpath([ ":mozilla:dist:client:Plugins", ":mozilla:dist:client_debug:Plugins"]);
UpdateGeneratedChromeFiles();
BuildRuntimeDist();
if (!$main::RUNTIME) {
BuildClientDist();
}
EndBuildModule("dist");
}
#//--------------------------------------------------------------------------------------------------
#// Do some stuff between exporting dist and compilation
#//--------------------------------------------------------------------------------------------------
sub PrepareBuild()
{
unless( $main::build{config} ) { return; }
assertRightDirectory();
StartBuildModule("config");
UpdateConfigHeader($main::DEFINESOPTIONS_FILE);
my($file_name) = basename($main::DEFINESOPTIONS_FILE);
MakeAlias($main::DEFINESOPTIONS_FILE, ":mozilla:dist:config:$file_name");
EndBuildModule("config");
}
#//--------------------------------------------------------------------------------------------------
#// Build stub projects
#//--------------------------------------------------------------------------------------------------
sub BuildStubs()
{
unless( $main::build{stubs} ) { return; }
assertRightDirectory();
my($distdirectory) = ":mozilla:dist";
StartBuildModule("stubs");
#//
#// Clean projects
#//
BuildProjectClean(":mozilla:lib:mac:NSStdLib:NSStdLib.xml", "Stubs");
EndBuildModule("stubs");
}
#//--------------------------------------------------------------------------------------------------
#// Build the CodeWarrior XPIDL plugins
#//--------------------------------------------------------------------------------------------------
sub BuildXPIDLCompiler()
{
unless( $main::build{xpidl} ) { return; }
assertRightDirectory();
StartBuildModule("xpidl");
#// see if the xpidl compiler/linker has been rebuilt by comparing modification dates.
my($codewarrior_plugins) = GetCodeWarriorRelativePath("CodeWarrior Plugins:");
my($compiler_path) = $codewarrior_plugins . "Compilers:xpidl";
my($linker_path) = $codewarrior_plugins . "Linkers:xpt Linker";
my($compiler_modtime) = (-e $compiler_path ? GetFileModDate($compiler_path) : 0);
my($linker_modtime) = (-e $linker_path ? GetFileModDate($linker_path) : 0);
#// build the IDL compiler itself.
BuildProject(":mozilla:xpcom:typelib:xpidl:macbuild:xpidl.xml", "build all");
#// was the compiler/linker rebuilt? if so, then clobber IDL projects as we go.
if (GetFileModDate($compiler_path) > $compiler_modtime || GetFileModDate($linker_path) > $linker_modtime)
{
$main::CLOBBER_IDL_PROJECTS = 1;
print("XPIDL tools have been updated, will clobber all IDL data folders.\n");
}
# xpt_link MPW tool, needed for merging xpt files (release build)
if ($main::options{xptlink})
{
my($codewarrior_msl) = GetCodeWarriorRelativePath("MSL:MSL_C:MSL_MacOS:");
if ( ! -e $codewarrior_msl . "Lib:PPC:MSL_C_PPC_MPW.Lib") {
print("MSL_C_PPC_MPW.Lib not found... Let's build it.\n");
BuildProject($codewarrior_msl . "Project:PPC:MSL C.PPC.MTrgt.mcp", "MSL C PPC MPW (NL)");
}
BuildOneProject(":mozilla:xpcom:typelib:xpidl:macbuild:xpidl.xml", "xpt_link", 0, 0, 0);
}
EndBuildModule("xpidl");
}
#//--------------------------------------------------------------------------------------------------
#// Build IDL projects
#//--------------------------------------------------------------------------------------------------
sub BuildIDLProjects()
{
unless( $main::build{idl} ) { return; }
assertRightDirectory();
StartBuildModule("idl");
# XPCOM
BuildIDLProject(":mozilla:xpcom:macbuild:XPCOMIDL.xml", "xpcom");
# necko
BuildIDLProject(":mozilla:netwerk:macbuild:netwerkIDL.xml","necko");
BuildIDLProject(":mozilla:uriloader:macbuild:uriLoaderIDL.xml", "uriLoader");
BuildIDLProject(":mozilla:netwerk:macbuild:cacheIDL.xml", "cache");
if ($main::options{psm}) {
BuildIDLProject(":mozilla:security:manager:ssl:macbuild:pipnssIDL.xml", "pipnss");
BuildIDLProject(":mozilla:security:manager:pki:macbuild:pippkiIDL.xml", "pippki");
BuildIDLProject(":mozilla:security:manager:boot:macbuild:pipbootIDL.xml", "pipboot");
}
BuildIDLProject(":mozilla:modules:libreg:xpcom:macbuild:mozregIDL.xml", "mozreg");
BuildIDLProject(":mozilla:modules:libpref:macbuild:libprefIDL.xml", "libpref");
BuildIDLProject(":mozilla:modules:libutil:macbuild:libutilIDL.xml", "libutil");
BuildIDLProject(":mozilla:modules:libjar:macbuild:libjarIDL.xml", "libjar");
BuildIDLProject(":mozilla:modules:libpr0n:macbuild:libimg2IDL.xml", "libimg2");
BuildIDLProject(":mozilla:modules:libpr0n:macbuild:icondecoderIDL.xml", "icondecoder");
BuildIDLProject(":mozilla:modules:plugin:base:macbuild:pluginIDL.xml", "plugin");
BuildIDLProject(":mozilla:modules:oji:macbuild:ojiIDL.xml", "oji");
BuildIDLProject(":mozilla:js:macbuild:XPConnectIDL.xml", "xpconnect");
if ($main::options{xpctools}) {
BuildIDLProject(":mozilla:js:macbuild:XPCToolsIDL.xml", "xpctools");
}
BuildIDLProject(":mozilla:dom:macbuild:domIDL.xml", "dom");
BuildIDLProject(":mozilla:dom:macbuild:dom_baseIDL.xml", "dom_base");
BuildIDLProject(":mozilla:dom:macbuild:dom_coreIDL.xml", "dom_core");
BuildIDLProject(":mozilla:dom:macbuild:dom_cssIDL.xml", "dom_css");
BuildIDLProject(":mozilla:dom:macbuild:dom_eventsIDL.xml", "dom_events");
BuildIDLProject(":mozilla:dom:macbuild:dom_htmlIDL.xml", "dom_html");
BuildIDLProject(":mozilla:dom:macbuild:dom_rangeIDL.xml", "dom_range");
BuildIDLProject(":mozilla:dom:macbuild:dom_traversalIDL.xml", "dom_traversal");
BuildIDLProject(":mozilla:dom:macbuild:dom_stylesheetsIDL.xml", "dom_stylesheets");
BuildIDLProject(":mozilla:dom:macbuild:dom_viewsIDL.xml", "dom_views");
BuildIDLProject(":mozilla:dom:macbuild:dom_xblIDL.xml", "dom_xbl");
BuildIDLProject(":mozilla:dom:macbuild:dom_xpathIDL.xml", "dom_xpath");
BuildIDLProject(":mozilla:dom:macbuild:dom_xulIDL.xml", "dom_xul");
if ($main::options{svg}) {
BuildIDLProject(":mozilla:dom:macbuild:dom_svgIDL.xml", "dom_svg");
}
BuildIDLProject(":mozilla:dom:src:jsurl:macbuild:JSUrlDL.xml", "jsurl");
BuildIDLProject(":mozilla:gfx:macbuild:gfxIDL.xml", "gfx");
BuildIDLProject(":mozilla:widget:macbuild:widgetIDL.xml", "widget");
BuildIDLProject(":mozilla:editor:macbuild:EditorIDL.xml", "editor");
BuildIDLProject(":mozilla:editor:txmgr:macbuild:txmgrIDL.xml", "txmgr");
BuildIDLProject(":mozilla:editor:txtsvc:macbuild:txtsvcIDL.xml", "txtsvc");
BuildIDLProject(":mozilla:profile:macbuild:ProfileServicesIDL.xml", "profileservices");
BuildIDLProject(":mozilla:profile:pref-migrator:macbuild:prefmigratorIDL.xml", "prefm");
BuildIDLProject(":mozilla:htmlparser:macbuild:htmlparserIDL.xml", "htmlparser");
BuildIDLProject(":mozilla:content:macbuild:contentIDL.xml", "content");
BuildIDLProject(":mozilla:layout:macbuild:layoutIDL.xml", "layout");
if ($main::options{accessible})
{
BuildIDLProject(":mozilla:accessible:macbuild:accessibleIDL.xml", "accessible");
}
BuildIDLProject(":mozilla:rdf:macbuild:RDFIDL.xml", "rdf");
BuildIDLProject(":mozilla:rdf:chrome:build:chromeIDL.xml", "chrome");
BuildIDLProject(":mozilla:webshell:macbuild:webshellIDL.xml", "webshell");
BuildIDLProject(":mozilla:docshell:macbuild:docshellIDL.xml", "docshell");
BuildIDLProject(":mozilla:embedding:base:macbuild:EmbedIDL.xml", "EmbedBase");
BuildIDLProject(":mozilla:embedding:browser:macbuild:browserIDL.xml", "embeddingbrowser");
BuildIDLProject(":mozilla:embedding:components:build:macbuild:EmbedComponentsIDL.xml", "EmbedComponents");
BuildIDLProject(":mozilla:extensions:cookie:macbuild:cookieIDL.xml", "cookie");
BuildIDLProject(":mozilla:extensions:pref:macbuild:prefextrasIDL.xml", "prefextras");
BuildIDLProject(":mozilla:extensions:wallet:macbuild:walletIDL.xml","wallet");
BuildIDLProject(":mozilla:extensions:xml-rpc:macbuild:xml-rpcIDL.xml","xml-rpc");
BuildIDLProject(":mozilla:xpfe:components:bookmarks:macbuild:BookmarksIDL.xml", "bookmarks");
BuildIDLProject(":mozilla:xpfe:components:directory:DirectoryIDL.xml", "Directory");
BuildIDLProject(":mozilla:xpfe:components:history:macbuild:historyIDL.xml", "history");
BuildIDLProject(":mozilla:xpfe:components:shistory:macbuild:shistoryIDL.xml", "shistory");
BuildIDLProject(":mozilla:xpfe:components:related:macbuild:RelatedIDL.xml", "related");
BuildIDLProject(":mozilla:xpfe:components:search:macbuild:SearchIDL.xml", "search");
BuildIDLProject(":mozilla:xpfe:components:macbuild:mozcompsIDL.xml", "mozcomps");
BuildIDLProject(":mozilla:xpfe:components:timebomb:macbuild:timebombIDL.xml", "tmbm");
BuildIDLProject(":mozilla:xpfe:components:urlbarhistory:macbuild:urlbarhistoryIDL.xml", "urlbarhistory");
BuildIDLProject(":mozilla:xpfe:components:autocomplete:macbuild:AutoCompleteIDL.xml", "autocomplete");
BuildIDLProject(":mozilla:xpfe:components:download-manager:macbuild:DownloadManagerIDL.xml", "downloadmanager");
BuildIDLProject(":mozilla:xpfe:appshell:macbuild:appshellIDL.xml", "appshell");
BuildIDLProject(":mozilla:xpfe:browser:macbuild:mozBrowserIDL.xml", "mozBrowser");
BuildIDLProject(":mozilla:xpinstall:macbuild:xpinstallIDL.xml", "xpinstall");
if ($main::options{ldap})
{
BuildIDLProject(":mozilla:directory:xpcom:macbuild:mozldapIDL.xml", "mozldap");
BuildIDLProject(":mozilla:xpfe:components:autocomplete:macbuild:ldapAutoCompleteIDL.xml", "ldapAutoComplete");
}
BuildIDLProject(":mozilla:mailnews:base:macbuild:msgCoreIDL.xml", "mailnews");
BuildIDLProject(":mozilla:mailnews:compose:macbuild:msgComposeIDL.xml", "MsgCompose");
BuildIDLProject(":mozilla:mailnews:local:macbuild:msglocalIDL.xml", "MsgLocal");
BuildIDLProject(":mozilla:mailnews:news:macbuild:msgnewsIDL.xml", "MsgNews");
BuildIDLProject(":mozilla:mailnews:addrbook:macbuild:msgAddrbookIDL.xml", "MsgAddrbook");
BuildIDLProject(":mozilla:mailnews:db:macbuild:msgDBIDL.xml", "MsgDB");
BuildIDLProject(":mozilla:mailnews:imap:macbuild:msgimapIDL.xml", "MsgImap");
BuildIDLProject(":mozilla:mailnews:mime:macbuild:mimeIDL.xml", "Mime");
BuildIDLProject(":mozilla:mailnews:import:macbuild:msgImportIDL.xml", "msgImport");
BuildIDLProject(":mozilla:mailnews:import:comm4x:macbuild:msgImportComm4xMIDL.xml", "msgImportComm4xM");
if ($main::options{smime} && $main::options{psm}) {
BuildIDLProject(":mozilla:mailnews:extensions:smime:macbuild:msgsmimeIDL.xml", "msgsmime");
}
BuildIDLProject(":mozilla:mailnews:extensions:mailviews:macbuild:mailviewsIDL.xml", "mailviews");
BuildIDLProject(":mozilla:caps:macbuild:CapsIDL.xml", "caps");
BuildIDLProject(":mozilla:intl:locale:macbuild:nsLocaleIDL.xml", "nsLocale");
BuildIDLProject(":mozilla:intl:strres:macbuild:strresIDL.xml", "nsIStringBundle");
BuildIDLProject(":mozilla:intl:unicharutil:macbuild:unicharutilIDL.xml", "unicharutil");
BuildIDLProject(":mozilla:intl:uconv:macbuild:uconvIDL.xml", "uconv");
BuildIDLProject(":mozilla:intl:chardet:macbuild:chardetIDL.xml", "chardet");
BuildIDLProject(":mozilla:intl:lwbrk:macbuild:lwbrkIDL.xml", "lwbrk");
if ($main::options{iiextras})
{
BuildIDLProject(":mozilla:extensions:interfaceinfo:macbuild:iiextrasIDL.xml", "iiextras");
}
if ($main::options{xmlextras})
{
BuildIDLProject(":mozilla:extensions:xmlextras:macbuild:xmlextrasIDL.xml", "xmlextras");
BuildIDLProject(":mozilla:extensions:xmlextras:macbuild:xmlschemaIDL.xml", "xmlschema");
BuildIDLProject(":mozilla:extensions:xmlextras:macbuild:xmlsoapIDL.xml", "xmlsoap");
if ($main::options{wsp})
{
BuildIDLProject(":mozilla:extensions:xmlextras:macbuild:xmlwsproxyIDL.xml", "wsproxy");
BuildIDLProject(":mozilla:extensions:xmlextras:macbuild:xmlwsdlIDL.xml", "wsdl");
}
}
if ($main::options{inspector})
{
BuildIDLProject(":mozilla:extensions:inspector:macbuild:inspectorIDL.xml", "inspector");
}
if ($main::options{typeaheadfind})
{
BuildIDLProject(":mozilla:extensions:typeaheadfind:macbuild:typeaheadfindIDL.xml", "typeaheadfind");
}
if ($main::options{p3p})
{
BuildIDLProject(":mozilla:extensions:p3p:macbuild:p3pIDL.xml", "p3p");
}
if ($main::options{jsd})
{
BuildIDLProject(":mozilla:js:jsd:macbuild:jsdIDL.xml", "jsdservice");
}
if ($main::options{layout_debug})
{
# layout-debug component headers/xpt
my($layout_debug_path) = ":mozilla:extensions:layout-debug:mac:";
BuildIDLProject($layout_debug_path . "lytDbgCmpIDL.xml", "layoutDebugComponent");
# layout-debug plugin headers/xpt
# BuildIDLProject() won't do the right thing with plugins, so we roll our own
if ($main::CLOBBER_IDL_PROJECTS)
{
print STDERR "Deleting IDL data folder: mozilla:extensions:layout-debug:mac:_lytDbgCmpIDL Data\n";
EmptyTree($layout_debug_path . "_lytDbgCmpIDL Data:");
}
my($plugin_dist) = GetBinDirectory() . "Plug-ins:";
BuildOneProject($layout_debug_path . "lytDbgPlgIDL.xml", "headers", 0, 0, 0);
BuildOneProject($layout_debug_path . "lytDbgPlgIDL.xml", "layoutDebugPlugin.xpt", 0, 0, 0);
MakeAlias($layout_debug_path . "LayoutDebugPlugin.xpt", $plugin_dist);
}
if ($main::options{calendar})
{
BuildIDLProject(":mozilla:calendar:macbuild:calendarIDL.xml", "calendar");
}
EndBuildModule("idl");
}
#//--------------------------------------------------------------------------------------------------
#// Build runtime projects
#//--------------------------------------------------------------------------------------------------
sub BuildRuntimeProjects()
{
unless( $main::build{runtime} ) { return; }
assertRightDirectory();
StartBuildModule("runtime");
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
my($P) = $main::PROFILE ? "Profil" : "";
#//
#// Shared libraries
#//
if ( $main::options{carbon} )
{
BuildProject(":mozilla:lib:mac:InterfaceLib:Interface.xml", "Carbon Interfaces");
BuildProject(":mozilla:lib:mac:InterfaceLib:InterfaceOSX.xml", "MacOS X Interfaces");
}
else
{
BuildProject(":mozilla:lib:mac:InterfaceLib:Interface.xml", "MacOS Interfaces");
BuildProject(":mozilla:lib:mac:InterfaceLib:InterfaceOSX.xml", "MacOS Interfaces");
}
#// Build all of the startup libraries, for Application, Component, and Shared Libraries. These are
#// required for all subsequent libraries in the system.
BuildProject(":mozilla:lib:mac:NSStartup:NSStartup.xml", "NSStartup.all");
BuildOneProjectWithOutput(":mozilla:lib:mac:NSRuntime:NSRuntime.xml", "NSRuntime$C$P$D.shlb", "NSRuntime$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildProject(":mozilla:lib:mac:MoreFiles:build:MoreFilesPPC.xml", "MoreFiles$D.o");
if ($main::GC_LEAK_DETECTOR && !$main::options{carbon}) {
BuildProject(":mozilla:gc:boehm:macbuild:gc.xml", "gc.ppc.lib");
MakeAlias(":mozilla:gc:boehm:macbuild:gc.PPC.lib", ":mozilla:dist:gc:gc.PPC.lib");
BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.xml", "MemAllocatorGC.o");
} else {
BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.xml", "MemAllocator$C$D.o");
}
BuildOneProjectWithOutput(":mozilla:lib:mac:NSStdLib:NSStdLib.xml", "NSStdLib$D.shlb", "NSStdLib$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
if ($main::DEBUG) {
BuildOneProject(":mozilla:lib:mac:NSStdLib:NSConsole.xml", "NSConsoleDebug.shlb", 1, $main::ALIAS_SYM_FILES, 0);
}
BuildOneProjectWithOutput(":mozilla:nsprpub:macbuild:NSPR20PPC.xml", "NSPR20$C$D.shlb", "NSPR20$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
EndBuildModule("runtime");
}
#//--------------------------------------------------------------------------------------------------
#// Build common projects
#//--------------------------------------------------------------------------------------------------
sub BuildCommonProjects()
{
unless( $main::build{common} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my $dist_dir = GetBinDirectory();
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
StartBuildModule("common");
#//
#// Static libraries
#//
BuildProject(":mozilla:string:macbuild:string.xml", "string$D.o");
MakeAlias(":mozilla:string:macbuild:string$D.o", ":mozilla:dist:string:");
BuildProject(":mozilla:intl:unicharutil:macbuild:UnicharUtilsStaticLib.xml", "UnicharUtilsStatic$D.o");
MakeAlias(":mozilla:intl:unicharutil:macbuild:UnicharUtilsStatic$D.o", ":mozilla:dist:unicharutil:");
#//
#// Shared libraries
#//
BuildOneProject(":mozilla:modules:libreg:macbuild:libreg.xml", "libreg$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:xpcom:macbuild:xpcomPPC.xml", "xpcom$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:modules:libreg:xpcom:macbuild:mozreg.xml", "mozreg$D.shlb", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:js:macbuild:JavaScript.xml", "JavaScript$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:js:macbuild:LiveConnect.xml", "LiveConnect$D.$S", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:modules:zlib:macbuild:zlib.xml", "zlib$D.$S", 1, $main::ALIAS_SYM_FILES, 0);
BuildProject(":mozilla:modules:zlib:macbuild:zlib.xml", "zlib$D.Lib");
BuildOneProject(":mozilla:modules:libjar:macbuild:libjar.xml", "libjar$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildProject(":mozilla:modules:libjar:macbuild:libjar.xml", "libjar$D.Lib");
BuildOneProject(":mozilla:modules:oji:macbuild:oji.xml", "oji$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:caps:macbuild:Caps.xml", "Caps$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:modules:libpref:macbuild:libpref.xml", "libpref$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:js:macbuild:XPConnect.xml", "XPConnect$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{xpctools}) {
BuildOneProject(":mozilla:js:macbuild:XPCTools.xml", "XPCTools$D.shlb", 1, $main::ALIAS_SYM_FILES, 1);
}
BuildOneProject(":mozilla:modules:libutil:macbuild:libutil.xml", "libutil$D.$S", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:db:mork:macbuild:mork.xml", "Mork$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildProject(":mozilla:dbm:macbuild:DBM.xml", "DBM$D.o");
MakeAlias(":mozilla:dbm:macbuild:DBM$D.o", ":mozilla:dist:dbm:");
InstallFromManifest(":mozilla:xpcom:components:MANIFEST_COMPONENTS", "${dist_dir}Components:");
BuildOneProject(":mozilla:gfx:macbuild:gfx.xml", "gfx$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
EndBuildModule("common");
}
#//--------------------------------------------------------------------------------------------------
#// Build imglib projects
#//--------------------------------------------------------------------------------------------------
sub BuildImglibProjects()
{
unless( $main::build{imglib} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
StartBuildModule("imglib");
BuildProject(":mozilla:jpeg:macbuild:JPEG.xml", "JPEG$D.o");
MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.o", ":mozilla:dist:libimg:");
BuildProject(":mozilla:modules:libimg:macbuild:png.xml", "png$D.o");
MakeAlias(":mozilla:modules:libimg:macbuild:png$D.o", ":mozilla:dist:libimg:");
# MNG
if ($main::options{mng})
{
BuildProject(":mozilla:modules:libimg:macbuild:mng.xml", "mng$D.o");
MakeAlias(":mozilla:modules:libimg:macbuild:mng$D.o", ":mozilla:dist:libimg:");
}
EndBuildModule("imglib");
} # imglib
#//--------------------------------------------------------------------------------------------------
#// Build libimg2 projects
#//--------------------------------------------------------------------------------------------------
sub BuildImglib2Projects()
{
unless( $main::build{libimg2} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
StartBuildModule("libimg2");
BuildOneProject(":mozilla:modules:libpr0n:macbuild:libimg2.xml", "libimg2$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:modules:libpr0n:macbuild:icondecoder.xml", "icondecoder$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
# MNG
if ($main::options{mng})
{
BuildOneProject(":mozilla:modules:libpr0n:macbuild:mngdecoder.xml", "mngdecoder$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
EndBuildModule("libimg2");
} # imglib2
#//--------------------------------------------------------------------------------------------------
#// Build international projects
#//--------------------------------------------------------------------------------------------------
sub BuildInternationalProjects()
{
unless( $main::build{intl} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
StartBuildModule("intl");
BuildOneProject(":mozilla:intl:macbuild:i18n.xml", "i18n$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:intl:uconv:macbuild:uconv.xml", "uconv$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{mathml})
{
BuildOneProject(":mozilla:intl:uconv:macbuild:ucvmath.xml", "ucvmath$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
EndBuildModule("intl");
} # intl
#//--------------------------------------------------------------------------------------------------
#// Build Necko projects
#//--------------------------------------------------------------------------------------------------
sub BuildNeckoProjects()
{
unless( $main::build{necko} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my $dist_dir = GetBinDirectory();
StartBuildModule("necko");
BuildOneProjectWithOutput(":mozilla:netwerk:macbuild:netwerk.xml", "Necko$C$D.$S", "Necko$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:netwerk:macbuild:netwerk2.xml", "Necko2$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:dom:src:jsurl:macbuild:JSUrl.xml", "JSUrl$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
InstallFromManifest(":mozilla:netwerk:base:src:MANIFEST_COMPONENTS", "${dist_dir}Components:");
EndBuildModule("necko");
}
#//--------------------------------------------------------------------------------------------------
#// Build Security projects
#//--------------------------------------------------------------------------------------------------
sub CreateNSSExportList($$)
{
my ($source_def_file, $final_exp_file) = @_;
if (! -e $source_def_file) {
die "NSS file $source_def_file does not exist";
}
my($def_mod_time) = GetFileModDate($source_def_file);
my($exp_mod_time) = (-e $final_exp_file ? GetFileModDate($final_exp_file) : 0);
if ($exp_mod_time > $def_mod_time) {
return;
}
open (DEF_FILE, "< $source_def_file") || die "can't open NSS def file $!";
open (EXP_FILE, "> $final_exp_file");
print("Creating $final_exp_file from $source_def_file\n");
while (<DEF_FILE>) {
my ($line) = $_;
if ($line =~ /^;\+./) {
next;
}
if ($line =~ /^LIBRARY/) {
next;
}
if ($line =~ /^EXPORTS/) {
next;
}
if ($line =~ s/^;;(.*) DATA ;//) {
print EXP_FILE "$1\n";
}
if ($line =~ s/^(.*) DATA ;//) {
print EXP_FILE "$1\n";
}
if ($line =~ s/^(.*);//) {
print EXP_FILE "$1\n";
}
}
close DEF_FILE;
close EXP_FILE;
}
sub BuildSecurityProjects()
{
unless( $main::build{security} && $main::options{psm}) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my $dist_dir = GetBinDirectory(); # the subdirectory with the libs and executable.
StartBuildModule("security");
#First we need to build all of the NSS shared libraries now.
#The order is important because they link against each other.
BuildProject(":mozilla:security:nss:macbuild:util.xml","util$D.o");
BuildProject(":mozilla:security:nss:macbuild:crmf.xml","crmf$D.o");
CreateNSSExportList(":mozilla:security:nss:lib:softoken:softokn.def",
":mozilla:security:nss:macbuild:softoken.mcp.exp");
BuildOneProjectWithOutput(":mozilla:security:nss:macbuild:softoken.xml","Softoken3$D.shlb","Softoken3$D.shlb",1, $main::ALIAS_SYM_FILES, 0);
CreateNSSExportList(":mozilla:security:nss:lib:nss:nss.def",
":mozilla:security:nss:macbuild:NSS.mcp.exp");
BuildOneProjectWithOutput(":mozilla:security:nss:macbuild:NSS.xml","NSS3$D.shlb","NSS3$D.shlb",1, $main::ALIAS_SYM_FILES, 0);
CreateNSSExportList(":mozilla:security:nss:lib:ssl:ssl.def",
":mozilla:security:nss:macbuild:ssl.mcp.exp");
BuildOneProjectWithOutput(":mozilla:security:nss:macbuild:ssl.xml","SSL3$D.shlb","SSL3$D.shlb",1, $main::ALIAS_SYM_FILES, 0);
CreateNSSExportList(":mozilla:security:nss:lib:smime:smime.def",
":mozilla:security:nss:macbuild:smime.mcp.exp");
BuildOneProjectWithOutput(":mozilla:security:nss:macbuild:smime.xml","SMIME3$D.shlb","SMIME3$D.shlb",1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:security:manager:boot:macbuild:pipboot.xml", "pipboot$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:security:manager:ssl:macbuild:PIPNSS.xml", "PIPNSS$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:security:manager:pki:macbuild:PIPPKI.xml", "PIPPKI$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{static_build}) {
BuildOneProject(":mozilla:modules:staticmod:macbuild:cryptoComponent.xml", "MetaCrypto$D.shlb", 1, $main::ALIAS_SYM_FILES, 1);
}
#Build the loadable module that contains the root certs. This is always built as a shared lib, even in the static build.
BuildProject(":mozilla:security:nss:macbuild:NSSckfw.xml", "NSSckfw$D.o");
BuildProject(":mozilla:security:nss:macbuild:LoadableRoots.xml", "NSSckbi$D.shlb");
# NSS doesn't properly load the shared library created above if it's an alias, so we'll just copy it so that
# all builds will just work. It's 140K optimized and 164K debug so it's not too much disk space.
copy(":mozilla:security:nss:macbuild:NSSckbi$D.shlb",$dist_dir."Essential Files:NSSckbi$D.shlb");
EndBuildModule("security");
} # Security
#//--------------------------------------------------------------------------------------------------
#// Build Browser utils projects
#//--------------------------------------------------------------------------------------------------
sub BuildBrowserUtilsProjects()
{
unless( $main::build{browserutils} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
StartBuildModule("browserutils");
BuildOneProject(":mozilla:uriloader:macbuild:uriLoader.xml", "uriLoader$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildProject(":mozilla:profile:dirserviceprovider:macbuild:dirServiceProvider.xml", "profDirServiceProvider$D.o");
MakeAlias(":mozilla:profile:dirserviceprovider:macbuild:profDirServiceProvider$D.o", ":mozilla:dist:profdirserviceprovider:");
BuildOneProject(":mozilla:profile:macbuild:profile.xml", "profile$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:profile:pref-migrator:macbuild:prefmigrator.xml", "prefm$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:extensions:cookie:macbuild:cookie.xml", "Cookie$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:extensions:pref:macbuild:prefextras.xml", "prefExtras$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:extensions:wallet:macbuild:wallet.xml", "Wallet$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:extensions:wallet:macbuild:walletviewers.xml", "WalletViewers$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:extensions:universalchardet:macbuild:Universalchardet.xml", "Universalchardet$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:rdf:chrome:build:chrome.xml", "ChomeRegistry$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
EndBuildModule("browserutils");
}
#//--------------------------------------------------------------------------------------------------
#// Build NGLayout
#//--------------------------------------------------------------------------------------------------
sub BuildLayoutProjects()
{
unless( $main::build{nglayout} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my($dist_dir) = GetBinDirectory();
my($resource_dir) = "$dist_dir" . "res:";
StartBuildModule("nglayout");
open(OUTPUT, ">:mozilla:content:build:gbdate.h") || die "could not open gbdate.h";
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
# localtime returns year minus 1900
$year = $year + 1900;
printf(OUTPUT "#define PRODUCT_VERSION \"%04d%02d%02d\"\n", $year, 1+$mon, $mday);
close(OUTPUT);
#//
#// Build Layout projects
#//
BuildProject(":mozilla:expat:macbuild:expat.xml", "expat$D.o");
BuildOneProject(":mozilla:htmlparser:macbuild:htmlparser.xml", "htmlparser$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
my($dbg) = $main::DEBUG ? "Dbg" : "";
BuildOneProjectWithOutput(":mozilla:gfx:macbuild:gfxComponent.xml", "gfxComponent$C$dbg.$S", "gfxComponent$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:dom:macbuild:dom.xml", "dom$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:modules:plugin:base:macbuild:plugin.xml", "plugin$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:modules:plugin:base:macbuild:pluginClassic.xml", "pluginClassic$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
# Static library shared between different content- and layout-related libraries
BuildProject(":mozilla:content:macbuild:contentshared.xml", "contentshared$D.o");
MakeAlias(":mozilla:content:macbuild:contentshared$D.o", ":mozilla:dist:content:");
if ($main::options{svg})
{
BuildOneProject(":mozilla:content:macbuild:contentSVG.xml", "contentSVG$D.o", 0, 0, 0);
}
else
{
BuildOneProject(":mozilla:content:macbuild:contentSVG.xml", "contentSVG$D.o stub", 0, 0, 0);
}
BuildOneProject(":mozilla:content:macbuild:content.xml", "content$D.o", 0, 0, 0);
if ($main::options{mathml})
{
BuildProject(":mozilla:layout:macbuild:layoutmathml.xml", "layoutmathml$D.o");
}
else
{
BuildProject(":mozilla:layout:macbuild:layoutmathml.xml", "layoutmathml$D.o stub");
}
if ($main::options{libart_lgpl})
{
BuildOneProject(":mozilla:other-licenses:libart_lgpl:macbuild:libart.xml", "libart$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
}
if ($main::options{svg})
{
BuildProject(":mozilla:layout:macbuild:layoutsvg.xml", "layoutsvg$D.o");
}
else
{
BuildProject(":mozilla:layout:macbuild:layoutsvg.xml", "layoutsvg$D.o stub");
}
BuildOneProject(":mozilla:layout:macbuild:layout.xml", "layout$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:view:macbuild:view.xml", "view$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:widget:macbuild:WidgetSupport.xml", "WidgetSupport$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProjectWithOutput(":mozilla:widget:macbuild:widget.xml", "widget$C$D.$S", "widget$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:docshell:macbuild:docshell.xml", "docshell$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:rdf:macbuild:rdf.xml", "RDFLibrary$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:xpinstall:macbuild:xpinstall.xml", "xpinstall$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProjectWithOutput(":mozilla:xpinstall:cleanup:macbuild:XPICleanup.xml", "XPICleanup$D$C", "XPICleanup$D", 1, $main::ALIAS_SYM_FILES, 0);
InstallFromManifest(":mozilla:xpinstall:cleanup:MANIFEST_CMESSAGE", "$resource_dir");
BuildOneProject(":mozilla:xpinstall:macbuild:xpistub.xml", "xpistub$D.$S", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProject(":mozilla:xpinstall:wizard:libxpnet:macbuild:xpnet.xml", "xpnet$D.Lib", 0, 0, 0);
if (!($main::PROFILE)) {
BuildOneProject(":mozilla:xpinstall:wizard:mac:macbuild:MIW.xml", "Mozilla Installer$D", 0, 0, 0);
}
if ($main::options{layout_debug})
{
# make the component.
my($layout_debug_path) = ":mozilla:extensions:layout-debug:mac:";
BuildOneProject($layout_debug_path . "lytDbgComp.xml", "LayoutDebugComponent.shlb", 1, 0, 1);
# make the plugin. BuildOneProject isn't smart about plugins, so roll our own.
my($plugin_dist) = GetBinDirectory() . "Plug-ins:";
BuildProject($layout_debug_path . "lytDbgPlugin.xml", "LayoutDebugPlugin$C");
MakeAlias($layout_debug_path . "LayoutDebugPlugin", $plugin_dist);
}
EndBuildModule("nglayout");
}
#//--------------------------------------------------------------------------------------------------
#// Build Accessiblity Projects
#//--------------------------------------------------------------------------------------------------
sub BuildAccessiblityProjects()
{
unless( $main::build{accessiblity} ) { return; }
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
StartBuildModule("accessiblity");
if ($main::options{accessible})
{
if ($main::options{moz_xul})
{
BuildProject(":mozilla:accessible:macbuild:accessible_xul.xml", "accessible_xul$D.o");
}
else
{
BuildProject(":mozilla:accessible:macbuild:accessible_xul.xml", "accessible_xul$D.o stub");
}
BuildOneProject(":mozilla:accessible:macbuild:accessible.xml", "accessible$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
EndBuildModule("accessiblity");
}
#//--------------------------------------------------------------------------------------------------
#// Build Editor Projects
#//--------------------------------------------------------------------------------------------------
sub BuildEditorProjects()
{
unless( $main::build{editor} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my($dist_dir) = GetBinDirectory();
StartBuildModule("editor");
BuildOneProject(":mozilla:editor:txmgr:macbuild:txmgr.xml", "EditorTxmgr$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
# note: only build one of the following targets
BuildOneProject(":mozilla:editor:macbuild:editor.xml", "htmleditor$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
# BuildOneProject(":mozilla:editor:macbuild:editor.mcp", "texteditor$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:editor:macbuild:composer.xml", "Composer$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
EndBuildModule("editor");
}
#//--------------------------------------------------------------------------------------------------
#// Build Viewer Projects
#//--------------------------------------------------------------------------------------------------
sub BuildViewerProjects()
{
unless( $main::build{viewer} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
my($dist_dir) = GetBinDirectory();
StartBuildModule("viewer");
if (! $main::options{"static_build"})
{
BuildProject(":mozilla:webshell:tests:viewer:mac:viewer.xml", "viewer$C$D");
}
EndBuildModule("viewer");
}
#//--------------------------------------------------------------------------------------------------
#// Build Embedding Projects
#//--------------------------------------------------------------------------------------------------
sub BuildEmbeddingProjects()
{
unless( $main::build{embedding} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
my($dist_dir) = GetBinDirectory();
StartBuildModule("embedding");
# Since there are separate Carbon targets, but the name is the same.
unlink ":mozilla:embedding:components:printingui:macbuild:printingUI$D.o";
BuildProject(":mozilla:embedding:components:printingui:macbuild:printingUI.xml", "printingUI$C$D.o");
MakeAlias(":mozilla:embedding:components:printingui:macbuild:printingUI$D.o", ":mozilla:dist:embedding:components:");
BuildOneProject(":mozilla:embedding:components:build:macbuild:EmbedComponents.xml", "EmbedComponents$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:embedding:browser:macbuild:webBrowser.xml", "webBrowser$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildProject(":mozilla:embedding:base:macbuild:EmbedAPI.xml", "EmbedAPI$D.o");
MakeAlias(":mozilla:embedding:base:macbuild:EmbedAPI$D.o", ":mozilla:dist:embedding:");
if ($main::options{embedding_test})
{
my($PowerPlantPath) = "MacOS Support:PowerPlant";
if (-e GetCodeWarriorRelativePath($PowerPlantPath))
{
if (! $main::options{"static_build"})
{
# Build PowerPlant and export the lib and the precompiled header
BuildOneProject(":mozilla:lib:mac:PowerPlant:PowerPlant.xml", "PowerPlant$D.o", 0, 0, 0);
MakeAlias(":mozilla:lib:mac:PowerPlant:PowerPlant$D.o", ":mozilla:dist:mac:powerplant:");
MakeAlias(":mozilla:lib:mac:PowerPlant:pch:PPHeaders$D" . "_pch", ":mozilla:dist:mac:powerplant:");
BuildOneProject(":mozilla:embedding:browser:powerplant:PPBrowser.xml", "PPEmbed$C$D", 0, 0, 0);
}
}
else
{
print("$PowerPlantPath does not exist - embedding sample will not be built\n");
}
}
EndBuildModule("embedding");
}
#//--------------------------------------------------------------------------------------------------
#// Build XPApp Projects
#//--------------------------------------------------------------------------------------------------
sub BuildXPAppProjects()
{
unless( $main::build{xpapp} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my($dist_dir) = GetBinDirectory();
StartBuildModule("xpapp");
# Components
BuildOneProject(":mozilla:xpfe:components:find:macbuild:FindComponent.xml", "FindComponent$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:xpfe:components:shistory:macbuild:shistory.xml", "shistory$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:xpfe:components:macbuild:appcomps.xml", "appcomps$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
InstallFromManifest(":mozilla:xpfe:appshell:src:MANIFEST_COMPONENTS", "${dist_dir}Components:");
# Applications
BuildOneProject(":mozilla:xpfe:appshell:macbuild:AppShell.xml", "AppShell$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
EndBuildModule("xpapp");
}
#//--------------------------------------------------------------------------------------------------
#// Build Extensions Projects
#//--------------------------------------------------------------------------------------------------
sub BuildExtensionsProjects()
{
unless( $main::build{extensions} ) { return; }
assertRightDirectory();
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my($dist_dir) = GetBinDirectory();
StartBuildModule("extensions");
my($components_dir) = "$dist_dir" . "Components:";
my($chrome_subdir) = "Chrome:";
my($chrome_dir) = "$dist_dir"."$chrome_subdir";
my($packages_chrome_dir) = "$chrome_dir" . "packages:";
# Chatzilla
if ($main::options{chatzilla})
{
InstallResources(":mozilla:extensions:irc:js:lib:MANIFEST_COMPONENTS", "$components_dir");
}
# XML-RPC
if ($main::options{xml_rpc})
{
InstallFromManifest(":mozilla:extensions:xml-rpc:src:MANIFEST_COMPONENTS", "$components_dir");
}
# Transformiix
if ($main::options{transformiix})
{
BuildOneProject(":mozilla:extensions:transformiix:macbuild:transformiix.xml", "transformiix$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
# LDAP Client
if ($main::options{ldap})
{
my($experi) = $main::options{ldap_experimental} ? " experi" : "";
BuildOneProjectWithOutput(":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient.xml", "LDAPClient$C$D.shlb", "LDAPClient$D.shlb", 1, $main::ALIAS_SYM_FILES, 0);
BuildOneProjectWithOutput(":mozilla:directory:xpcom:macbuild:mozldap.xml", "mozldap$D.$S$experi", "mozldap$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{ldap_experimental})
{
InstallResources(":mozilla:directory:xpcom:datasource:MANIFEST_COMPONENTS", "$components_dir");
}
}
else
{
# build a project that outputs a dummy LDAPClient lib so that later projects (e.g. apprunner) have something
# to link against. This is really only needed for the static build, but there is no harm in building it anyway.
BuildOneProject(":mozilla:directory:xpcom:macbuild:LDAPClientDummyLib.xml", "LDAPClient$D.shlb", 1, 0, 0);
}
# InterfaceInfo Extras
if ($main::options{iiextras})
{
BuildOneProject(":mozilla:extensions:interfaceinfo:macbuild:iiextras.xml", "iiextras$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
InstallResources(":mozilla:extensions:interfaceinfo:src:MANIFEST_COMPONENTS", "$components_dir");
}
# XML Extras
if ($main::options{xmlextras})
{
if ($main::options{wsp}) {
BuildProject(":mozilla:extensions:xmlextras:macbuild:xmlwsp.xml", "xmlwsp$D.o");
}
else {
BuildProject(":mozilla:extensions:xmlextras:macbuild:xmlwsp.xml", "xmlwsp$D.o stub");
}
BuildOneProject(":mozilla:extensions:xmlextras:macbuild:xmlextras.xml", "xmlextras$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
# Document Inspector
if ($main::options{inspector})
{
BuildOneProject(":mozilla:extensions:inspector:macbuild:inspector.xml", "inspector$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
# Type Ahead Find
if ($main::options{typeaheadfind})
{
BuildOneProject(":mozilla:extensions:typeaheadfind:macbuild:typeaheadfind.xml", "typeaheadfind$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
# P3P
if ($main::options{p3p})
{
BuildOneProject(":mozilla:extensions:p3p:macbuild:p3p.xml", "p3p$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
# JS Debugger
if ($main::options{jsd})
{
BuildOneProject(":mozilla:js:jsd:macbuild:JSD.xml", "jsdService$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{venkman})
{
InstallResources(":mozilla:extensions:venkman:js:MANIFEST_COMPONENTS", "$components_dir");
}
}
if ($main::options{libical})
{
BuildProject(":mozilla:other-licenses:libical:macbuild:libical.xml", "libical$D.o");
MakeAlias(":mozilla:other-licenses:libical:macbuild:libical$D.o", ":mozilla:dist:libical:");
}
if ($main::options{calendar})
{
BuildOneProject(":mozilla:calendar:macbuild:calendar.xml", "xpical$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
EndBuildModule("extensions");
}
#//--------------------------------------------------------------------------------------------------
#// Build Plugins Projects
#//--------------------------------------------------------------------------------------------------
sub BuildPluginsProjects()
{
unless( $main::build{plugins} ) { return; }
StartBuildModule("plugins");
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
# as a temporary measure, make sure that the folder "MacOS Support:JNIHeaders" exists,
# before we attempt to build the MRJ plugin. This will allow a gradual transition.
if ($main::options{carbon} || -e GetCodeWarriorRelativePath("Java_Support:VM_Support:MRJ_Support"))
{
my($plugin_path) = ":mozilla:plugin:oji:MRJ$C:plugin:";
# Build MRJPlugin
BuildProject($plugin_path . "MRJPlugin$C.xml", "MRJPlugin$C");
# Build MRJPlugin.jar (if Java tools exist)
my($linker_path) = GetCodeWarriorRelativePath("CodeWarrior Plugins:Linkers:Java Linker");
if (-e $linker_path) {
print("CodeWarrior Java tools detected, building MRJPlugin.jar.\n");
BuildProject($plugin_path . "MRJPlugin$C.xml", "MRJPlugin.jar");
}
# Copy MRJPlugin, MRJPlugin.jar to appropriate plugins folder.
my($plugin_dist) = GetBinDirectory() . "Plug-ins:";
MakeAlias($plugin_path . "MRJPlugin$C", $plugin_dist);
MakeAlias($plugin_path . "MRJPlugin.jar", $plugin_dist);
if ($main::options{carbon}) {
MakeAlias($plugin_path . "MRJPlugin.policy", $plugin_dist);
MakeAlias($plugin_path . "MRJPlugin.properties", $plugin_dist);
}
}
# Build the Default Plug-in and place an alias in the appropriate plugins folder.
my($plugin_path) = ":mozilla:modules:plugin:samples:default:mac:";
my($plugin_dist) = GetBinDirectory() . "Plug-ins:";
BuildProject($plugin_path . "DefaultPlugin.xml", "DefaultPlugin$C");
MakeAlias($plugin_path . "Default Plug-in", $plugin_dist);
EndBuildModule("plugins");
}
#//--------------------------------------------------------------------------------------------------
#// Build MailNews Projects
#//--------------------------------------------------------------------------------------------------
sub BuildMailNewsProjects()
{
unless( $main::build{mailnews} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $S becomes the target suffix for the shared lib or static build.
my($S) = $main::options{static_build} ? "o" : "shlb";
my($dist_dir) = GetBinDirectory();
StartBuildModule("mailnews");
BuildOneProject(":mozilla:mailnews:base:util:macbuild:msgUtil.xml", "MsgUtil$D.lib", 0, 0, 0);
BuildOneProject(":mozilla:mailnews:base:macbuild:msgCore.xml", "mailnews$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:compose:macbuild:msgCompose.xml", "MsgCompose$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:db:macbuild:msgDB.xml", "MsgDB$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:local:macbuild:msglocal.xml", "MsgLocal$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:imap:macbuild:msgimap.xml", "MsgImap$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:news:macbuild:msgnews.xml", "MsgNews$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:addrbook:macbuild:msgAddrbook.xml", "MsgAddrbook$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:mime:macbuild:mime.xml", "Mime$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:mime:emitters:macbuild:mimeEmitter.xml", "mimeEmitter$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:mime:cthandlers:vcard:macbuild:vcard.xml", "vcard$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
# BuildOneProject(":mozilla:mailnews:mime:cthandlers:calendar:macbuild:calendar.mcp", "calendar$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:import:macbuild:msgImport.xml", "msgImport$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:import:text:macbuild:msgImportText.xml", "msgImportText$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:import:eudora:macbuild:msgImportEudora.xml", "msgImportEudora$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:import:comm4x:macbuild:msgImportComm4xM.xml", "msgImportComm4xM$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{static_build}) {
BuildOneProject(":mozilla:modules:staticmod:macbuild:mailnewsComponent.xml", "MetaMailNews$D.shlb", 1, $main::ALIAS_SYM_FILES, 1);
}
InstallResources(":mozilla:mailnews:addrbook:src:MANIFEST_COMPONENTS", "${dist_dir}Components");
if ($main::options{smime} && $main::options{psm}) {
BuildOneProject(":mozilla:mailnews:extensions:smime:macbuild:smime.xml", "msgsmime$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
InstallResources(":mozilla:mailnews:extensions:smime:src:MANIFEST", "${dist_dir}Components");
} else {
BuildOneProject(":mozilla:mailnews:mime:cthandlers:smimestub:macbuild:smime.xml", "smime$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
if ($main::options{mdn}) {
BuildOneProject(":mozilla:mailnews:extensions:mdn:macbuild:msgmdn.xml", "msgmdn$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
}
BuildOneProject(":mozilla:mailnews:extensions:mailviews:macbuild:mailviews.xml", "mailviews$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
BuildOneProject(":mozilla:mailnews:extensions:bayesian-spam-filter:macbuild:BayesianFilter.xml", "bayesianFilter$D.$S", 1, $main::ALIAS_SYM_FILES, 1);
if ($main::options{mdn}) {
InstallResources(":mozilla:mailnews:extensions:mdn:src:MANIFEST", "${dist_dir}Components");
}
EndBuildModule("mailnews");
}
#//--------------------------------------------------------------------------------------------------
#// Build Mozilla
#//--------------------------------------------------------------------------------------------------
sub BuildMozilla()
{
unless( $main::build{apprunner} ) { return; }
assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
# $C becomes a component of target names for selecting either the Carbon or non-Carbon target of a project
my($C) = $main::options{carbon} ? "Carbon" : "";
StartBuildModule("apprunner");
if ($main::options{static_build}) {
BuildProject(":mozilla:xpfe:bootstrap:macbuild:StaticMerge.xml", "StaticMerge$D.o");
} else {
BuildProject(":mozilla:xpfe:bootstrap:macbuild:StaticMerge.xml", "StaticMergeDummy$D.o");
}
BuildProject(":mozilla:xpfe:bootstrap:macbuild:apprunner.xml", "apprunner$C$D");
# build tool to create Component Registry in release builds only.
if (!($main::DEBUG)) {
BuildProject(":mozilla:xpcom:tools:registry:macbuild:RegXPCOM.xml", "RegXPCOM");
}
# build XPCShell to test the cache in debugging builds only.
if ($main::DEBUG) {
BuildProject(":mozilla:js:macbuild:XPCShell.xml", "XPCShellDebug");
}
# copy command line documents into the Apprunner folder and set correctly the signature
my($dist_dir) = GetBinDirectory();
my($cmd_file_path) = ":mozilla:xpfe:bootstrap:";
my($cmd_file) = "";
$cmd_file = "Mozilla Select Profile";
copy( $cmd_file_path . "Mozilla_Select_Profile", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Profile Wizard";
copy( $cmd_file_path . "Mozilla_Profile_Wizard", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Profile Manager";
copy( $cmd_file_path . "Mozilla_Profile_Manager", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Profile Migration";
copy( $cmd_file_path . "Mozilla_Installer", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Addressbook";
copy( $cmd_file_path . "Mozilla_Addressbook", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Editor";
copy( $cmd_file_path . "Mozilla_Editor", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Message Compose";
copy( $cmd_file_path . "Mozilla_Message_Compose", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Messenger";
copy( $cmd_file_path . "Mozilla_Messenger", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Preferences";
copy( $cmd_file_path . "Mozilla_Preference", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "NSPR Logging";
copy( $cmd_file_path . "Mozilla_NSPR_Log", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla JavaScript Console";
copy( $cmd_file_path . "Mozilla_JavaScript_Console", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
$cmd_file = "Mozilla Bloat URLs";
copy( $cmd_file_path . "Mozilla_Bloat_URLs", $dist_dir . $cmd_file );
MacPerl::SetFileInfo("MOZZ", "CMDL", $dist_dir . $cmd_file);
copy( ":mozilla:build:bloaturls.txt", $dist_dir . "bloaturls.txt" );
EndBuildModule("apprunner");
}
#//--------------------------------------------------------------------------------------------------
#// Build everything
#//--------------------------------------------------------------------------------------------------
sub BuildProjects()
{
# activate CodeWarrior
ActivateApplication('CWIE');
PrepareBuild();
if ($main::RUNTIME)
{
BuildStubs();
BuildRuntimeProjects();
return;
}
BuildXPIDLCompiler();
BuildIDLProjects();
BuildStubs();
BuildRuntimeProjects();
BuildCommonProjects();
BuildImglibProjects();
BuildImglib2Projects();
BuildNeckoProjects();
BuildSecurityProjects();
BuildBrowserUtilsProjects();
BuildInternationalProjects();
BuildLayoutProjects();
BuildAccessiblityProjects();
BuildEditorProjects();
BuildEmbeddingProjects();
BuildViewerProjects();
BuildXPAppProjects();
BuildExtensionsProjects();
BuildPluginsProjects();
BuildMailNewsProjects();
BuildMozilla();
# do this last so as not to pollute dist with
# non-include files before building projects.
BuildResources();
}
1;