Compare commits
4 Commits
NETSCAPE_7
...
SUN_LDAP_C
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
88b6f2e5a6 | ||
|
|
856f9252bf | ||
|
|
2b077b6c62 | ||
|
|
2dc3c47bd5 |
@@ -1,80 +0,0 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Simon Fraser <sfraser@netscape.com>
|
||||
#
|
||||
|
||||
require 5.004;
|
||||
|
||||
use strict;
|
||||
|
||||
use Cwd;
|
||||
use Moz::BuildUtils;
|
||||
use Moz::BuildCore;
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# Where have the build options gone?
|
||||
#
|
||||
# The various build flags have been centralized into one place.
|
||||
# The master list of options is in MozBuildFlags.txt. However,
|
||||
# you should never need to edit that file, or this one.
|
||||
#
|
||||
# To customize what gets built, or where to start the build,
|
||||
# edit the $prefs_file_name file in
|
||||
# System Folder:Preferences:Mozilla build prefs:
|
||||
# Documentation is provided in that file.
|
||||
#-------------------------------------------------------------
|
||||
|
||||
my($prefs_file_name) = "Mozilla opt build prefs";
|
||||
my($config_header_file_name) = ":mozilla:config:mac:DefinesOptions.h";
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# hashes to hold build options
|
||||
#-------------------------------------------------------------
|
||||
my(%build);
|
||||
my(%options);
|
||||
my(%filepaths);
|
||||
my(%optiondefines);
|
||||
|
||||
# Hash of input files for this build. Eventually, there will be
|
||||
# input files for manifests, and projects too.
|
||||
my(%inputfiles) = (
|
||||
"buildflags", "MozillaBuildFlags.txt",
|
||||
"checkoutdata", "MozillaCheckoutList.txt",
|
||||
"buildprogress", "¥ Mozilla opt progress",
|
||||
"buildmodule", "MozillaBuildList.pm",
|
||||
"checkouttime", "Mozilla last checkout"
|
||||
);
|
||||
#-------------------------------------------------------------
|
||||
# end build hashes
|
||||
#-------------------------------------------------------------
|
||||
|
||||
# set the build root directory, which is the the dir above mozilla
|
||||
SetupBuildRootDir(":mozilla:build:mac:build_scripts");
|
||||
|
||||
# Set up all the flags on $main::, like DEBUG, CARBON etc.
|
||||
# Override the defaults using the preferences files.
|
||||
SetupDefaultBuildOptions(0, ":mozilla:dist:viewer:", $config_header_file_name);
|
||||
|
||||
my($do_checkout) = 0;
|
||||
my($do_build) = 1;
|
||||
|
||||
RunBuild($do_checkout, $do_build, \%inputfiles, $prefs_file_name);
|
||||
@@ -1,80 +0,0 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Simon Fraser <sfraser@netscape.com>
|
||||
#
|
||||
|
||||
require 5.004;
|
||||
|
||||
use strict;
|
||||
|
||||
use Cwd;
|
||||
use Moz::BuildUtils;
|
||||
use Moz::BuildCore;
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# Where have the build options gone?
|
||||
#
|
||||
# The various build flags have been centralized into one place.
|
||||
# The master list of options is in MozBuildFlags.txt. However,
|
||||
# you should never need to edit that file, or this one.
|
||||
#
|
||||
# To customize what gets built, or where to start the build,
|
||||
# edit the $prefs_file_name file in
|
||||
# System Folder:Preferences:Mozilla build prefs:
|
||||
# Documentation is provided in that file.
|
||||
#-------------------------------------------------------------
|
||||
|
||||
my($prefs_file_name) = "Mozilla debug build prefs";
|
||||
my($config_header_file_name) = ":mozilla:config:mac:DefinesOptionsDebug.h";
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# hashes to hold build options
|
||||
#-------------------------------------------------------------
|
||||
my(%build);
|
||||
my(%options);
|
||||
my(%filepaths);
|
||||
my(%optiondefines);
|
||||
|
||||
# Hash of input files for this build. Eventually, there will be
|
||||
# input files for manifests, and projects too.
|
||||
my(%inputfiles) = (
|
||||
"buildflags", "MozillaBuildFlags.txt",
|
||||
"checkoutdata", "MozillaCheckoutList.txt",
|
||||
"buildprogress", "¥ Mozilla debug progress",
|
||||
"buildmodule", "MozillaBuildList.pm",
|
||||
"checkouttime", "Mozilla last checkout"
|
||||
);
|
||||
#-------------------------------------------------------------
|
||||
# end build hashes
|
||||
#-------------------------------------------------------------
|
||||
|
||||
# set the build root directory, which is the the dir above mozilla
|
||||
SetupBuildRootDir(":mozilla:build:mac:build_scripts");
|
||||
|
||||
# Set up all the flags on $main::, like DEBUG, CARBON etc.
|
||||
# Override the defaults using the preferences files.
|
||||
SetupDefaultBuildOptions(1, ":mozilla:dist:viewer_debug:", $config_header_file_name);
|
||||
|
||||
my($do_pull) = 0; # overridden by flags and prefs
|
||||
my($do_build) = 1;
|
||||
|
||||
RunBuild($do_pull, $do_build, \%inputfiles, $prefs_file_name);
|
||||
@@ -1,595 +0,0 @@
|
||||
#!perl -w
|
||||
package Moz::BuildCore;
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
use strict;
|
||||
use vars qw( @ISA @EXPORT );
|
||||
|
||||
# perl includes
|
||||
use Cwd;
|
||||
use POSIX;
|
||||
use Time::Local;
|
||||
use File::Basename;
|
||||
use LWP::Simple;
|
||||
|
||||
# homegrown
|
||||
use Moz::Moz;
|
||||
use Moz::Jar;
|
||||
use Moz::BuildFlags;
|
||||
use Moz::BuildUtils;
|
||||
use Moz::CodeWarriorLib;
|
||||
|
||||
# use MozillaBuildList; # eventually, this should go away, and be replaced by data input
|
||||
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(
|
||||
RunBuild
|
||||
);
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// DoPrebuildCheck
|
||||
#//
|
||||
#// Check the build tools etc before running the build.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub DoPrebuildCheck()
|
||||
{
|
||||
SanityCheckBuildOptions();
|
||||
|
||||
# launch codewarrior and persist its location. Have to call this before first
|
||||
# call to getCodeWarriorPath().
|
||||
my($ide_path_file) = $main::filepaths{"idepath"};
|
||||
$ide_path_file = full_path_to($ide_path_file);
|
||||
LaunchCodeWarrior($ide_path_file);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SanityCheckBuildOptions
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SanityCheckBuildOptions()
|
||||
{
|
||||
my($bad_options) = 0;
|
||||
|
||||
# Jar options
|
||||
if (!$main::options{chrome_jars} && !$main::options{chrome_files})
|
||||
{
|
||||
print "Warning: Both \$options{chrome_jars} and \$options{chrome_files} are off. You won't get any chrome.\n";
|
||||
$bad_options = 1;
|
||||
}
|
||||
|
||||
if (!$main::options{chrome_jars} && $main::options{use_jars})
|
||||
{
|
||||
print "Warning: \$options{chrome_jars} is off but \$options{use_jars} is on. Your build won't run (expects jars, got files).\n";
|
||||
$bad_options = 1;
|
||||
}
|
||||
|
||||
if (!$main::options{chrome_files} && !$main::options{use_jars})
|
||||
{
|
||||
print "Warning: \$options{chrome_jars} is off but \$options{chrome_files} is on. Your build won't run (expects files, got jars).\n";
|
||||
$bad_options = 1;
|
||||
}
|
||||
|
||||
if ($main::options{ldap_experimental} && !$main::options{ldap})
|
||||
{
|
||||
print "Warning: \$options{ldap_experimental} is on but \$options{ldap} is off. LDAP experimental features will not be built.\n";
|
||||
$bad_options = 1;
|
||||
}
|
||||
|
||||
if ($main::options{wsp} && !$main::options{xmlextras})
|
||||
{
|
||||
print "Warning: \$options{wsp} is on but \$options{xmlextras} is off. wsp will not be built.\n";
|
||||
$bad_options = 1;
|
||||
}
|
||||
|
||||
if ($bad_options) {
|
||||
print "Build will start in 5 seconds. Press command-. to stop\n";
|
||||
|
||||
DelayFor(5);
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GenBuildSystemInfo
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub GenBuildSystemInfo()
|
||||
{
|
||||
# always rebuild the configuration program.
|
||||
BuildProjectClean(":mozilla:build:mac:tools:BuildSystemInfo:BuildSystemInfo.mcp", "BuildSystemInfo");
|
||||
|
||||
# delete the configuration file.
|
||||
unlink(":mozilla:build:mac:BuildSystemInfo.pm");
|
||||
|
||||
# run the program.
|
||||
system(":mozilla:build:mac:BuildSystemInfo");
|
||||
|
||||
# wait for the file to be created.
|
||||
while (!(-e ":mozilla:build:mac:BuildSystemInfo.pm")) { WaitNextEvent(); }
|
||||
|
||||
# wait for BuildSystemInfo to finish, so that we see correct results.
|
||||
while (IsProcessRunning("BuildSystemInfo")) { WaitNextEvent(); }
|
||||
|
||||
# now, evaluate the contents of the file.
|
||||
open(F, ":mozilla:build:mac:BuildSystemInfo.pm");
|
||||
while (<F>) { eval; }
|
||||
close(F);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Make library aliases
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub MakeLibAliases()
|
||||
{
|
||||
my($dist_dir) = GetBinDirectory();
|
||||
|
||||
#// ProfilerLib
|
||||
if ($main::PROFILE)
|
||||
{
|
||||
my($profilerlibpath) = Moz::CodeWarriorLib::getCodeWarriorPath("MacOS Support:Profiler:Profiler Common:ProfilerLib");
|
||||
MakeAlias("$profilerlibpath", "$dist_dir"."Essential Files:");
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ConfigureBuildSystem
|
||||
#//
|
||||
#// defines some build-system configuration variables.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ConfigureBuildSystem()
|
||||
{
|
||||
#// In the future, we may want to do configurations based on the actual build system itself.
|
||||
#// GenBuildSystemInfo();
|
||||
|
||||
#// For now, if we discover a newer header file than existed in Universal Interfaces 3.2,
|
||||
#// we'll assume that 3.3 or later is in use.
|
||||
my($universal_interfaces) = Moz::CodeWarriorLib::getCodeWarriorPath("MacOS Support:Universal:Interfaces:CIncludes:");
|
||||
if (-e ($universal_interfaces . "ControlDefinitions.h")) {
|
||||
$main::UNIVERSAL_INTERFACES_VERSION = 0x0330;
|
||||
}
|
||||
|
||||
#// Rename IC SDK folder in the Mac OS Support folder
|
||||
my($ic_sdk_folder) = Moz::CodeWarriorLib::getCodeWarriorPath("MacOS Support:ICProgKit2.0.2");
|
||||
if( -e $ic_sdk_folder)
|
||||
{
|
||||
my($new_ic_folder_name) = Moz::CodeWarriorLib::getCodeWarriorPath("MacOS Support:(ICProgKit2.0.2)");
|
||||
rename ($ic_sdk_folder, $new_ic_folder_name);
|
||||
# note that CodeWarrior doesn't descend into folders with () the name
|
||||
print "Mozilla no longer needs the Internet Config SDK to build:\n Renaming the 'ICProgKit2.0.2' folder to '(ICProgKit2.0.2)'\n";
|
||||
}
|
||||
|
||||
printf("UNIVERSAL_INTERFACES_VERSION = 0x%04X\n", $main::UNIVERSAL_INTERFACES_VERSION);
|
||||
|
||||
# alias required CodeWarrior libs into the Essential Files folder (only the Profiler lib now)
|
||||
MakeLibAliases();
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// CheckOutModule. Takes variable number of args; first two are required
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub CheckOutModule($$$$)
|
||||
{
|
||||
my($session, $module, $revision, $date) = @_;
|
||||
|
||||
my($result) = $session->checkout($module, $revision, $date);
|
||||
|
||||
# result of 1 is success
|
||||
if ($result) { return; }
|
||||
|
||||
my($checkout_err) = $session->getLastError();
|
||||
if ($checkout_err == 708) {
|
||||
die "Error: Checkout was cancelled.\n";
|
||||
} elsif ($checkout_err == 911) {
|
||||
die "Error: CVS session settings are incorrect. Check your password, and the CVS root settings.\n";
|
||||
} elsif ($checkout_err == 703) {
|
||||
die "Error: CVS checkout failed. Unknown module, unknown tag, bad username, or other CVS error.\n";
|
||||
} elsif ($checkout_err == 711) {
|
||||
print "Checkout of '$module' failed.\n";
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getScriptFolder
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getScriptFolder()
|
||||
{
|
||||
return dirname($0);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getScriptFolder
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub get_url_contents($)
|
||||
{
|
||||
my($url) = @_;
|
||||
|
||||
my($url_contents) = LWP::Simple::get($url);
|
||||
$url_contents =~ s/\r\n/\n/g; # normalize linebreaks
|
||||
$url_contents =~ s/\r/\n/g; # normalize linebreaks
|
||||
return $url_contents;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// get_files_from_content
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub uniq
|
||||
{
|
||||
my $lastval;
|
||||
grep(($_ ne $lastval, $lastval = $_)[$[], @_);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// get_files_from_content
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub get_files_from_content($)
|
||||
{
|
||||
my($content) = @_;
|
||||
|
||||
my(@jscalls) = grep (/return js_file_menu[^{]*/, split(/\n/, $content));
|
||||
my $i;
|
||||
|
||||
for ($i = 0; $i < @jscalls ; $i++)
|
||||
{
|
||||
$jscalls[$i] =~ s/.*\(|\).*//g;
|
||||
my(@callparams) = split(/,/, $jscalls[$i]);
|
||||
my ($repos, $dir, $file, $rev) = grep(s/['\s]//g, @callparams);
|
||||
$jscalls[$i] = "$dir/$file";
|
||||
}
|
||||
|
||||
&uniq(sort(@jscalls));
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getLastUpdateTime
|
||||
#//
|
||||
#// Get the last time we updated. Return 0 on failure
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getLastUpdateTime($)
|
||||
{
|
||||
my($timestamp_file) = @_;
|
||||
|
||||
my($time_string);
|
||||
|
||||
local(*TIMESTAMP_FILE);
|
||||
unless (open(TIMESTAMP_FILE, "< $timestamp_file")) { return 0; }
|
||||
|
||||
while (<TIMESTAMP_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
# ignore comments and empty lines
|
||||
if ($line =~ /^\#/ || $line =~ /^\s*$/) {
|
||||
next;
|
||||
}
|
||||
|
||||
$time_string = $line;
|
||||
}
|
||||
|
||||
# get the epoch seconds
|
||||
my($last_update_secs) = $time_string;
|
||||
$last_update_secs =~ s/\s#.+$//;
|
||||
|
||||
print "FAST_UPDATE found that you last updated at ".localtime($last_update_secs)."\n";
|
||||
|
||||
# how long ago was this, in hours?
|
||||
my($gm_now) = time();
|
||||
my($update_hours) = 1 + ceil(($gm_now - $last_update_secs) / (60 * 60));
|
||||
|
||||
return $update_hours;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// saveCheckoutTimestamp
|
||||
#//
|
||||
#// Create a file on disk containing the current time. Param is time(), which is an Epoch seconds
|
||||
#// (and therefore in GMT).
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub saveCheckoutTimestamp($$)
|
||||
{
|
||||
my($gm_secs, $timestamp_file) = @_;
|
||||
|
||||
local(*TIMESTAMP_FILE);
|
||||
open(TIMESTAMP_FILE, ">$timestamp_file") || die "Failed to open $timestamp_file\n";
|
||||
print(TIMESTAMP_FILE "# time of last checkout or update, in GMT. Used by FAST_UPDATE\n");
|
||||
print(TIMESTAMP_FILE "$gm_secs \# around ".localtime()." local time\n");
|
||||
close(TIMESTAMP_FILE);
|
||||
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// FastUpdate
|
||||
#//
|
||||
#// Use Bonsai url data to update only those dirs which have new files
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub FastUpdate($$)
|
||||
{
|
||||
my($modules, $timestamp_file) = @_; # list of modules to check out
|
||||
|
||||
my($num_hours) = getLastUpdateTime($timestamp_file);
|
||||
if ($num_hours == 0 || $num_hours > 170) {
|
||||
print "Can't fast_update; last update was too long ago, or never. Doing normal checkout.\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Doing fast update, pulling files changed in the last $num_hours hours\n";
|
||||
|
||||
my($cvsfile) = AskAndPersistFile($main::filepaths{"sessionpath"});
|
||||
my($session) = Moz::MacCVS->new( $cvsfile );
|
||||
unless (defined($session)) { die "Error: Checkout aborted. Cannot create session file: $session" }
|
||||
|
||||
# activate MacCVS
|
||||
ActivateApplication('Mcvs');
|
||||
|
||||
my($checkout_start_time) = time();
|
||||
|
||||
#print "Time now is $checkout_start_time ($checkout_start_time + 0)\n";
|
||||
|
||||
my($this_co);
|
||||
foreach $this_co (@$modules)
|
||||
{
|
||||
my($module, $revision, $date) = ($this_co->[0], $this_co->[1], $this_co->[2]);
|
||||
|
||||
# assume that things pulled by date wont change
|
||||
if ($date ne "") {
|
||||
print "$module is pulled by date, so ignoring in FastUpdate.\n";
|
||||
next;
|
||||
}
|
||||
|
||||
my($search_type) = "hours";
|
||||
my($min_date) = "";
|
||||
my($max_date) = "";
|
||||
my($url) = "http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=${module}&branch=${revision}&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=${num_hours}&date=${search_type}&mindate=${min_date}&maxdate=${max_date}&cvsroot=%2Fcvsroot";
|
||||
|
||||
if ($revision eq "") {
|
||||
print "Getting list of checkins to $module from Bonsai...\n";
|
||||
} else {
|
||||
print "Getting list of checkins to $module on branch $revision from Bonsai...\n";
|
||||
}
|
||||
my(@files) = &get_files_from_content(&get_url_contents($url));
|
||||
|
||||
if ($#files > 0)
|
||||
{
|
||||
my(@cvs_co_list);
|
||||
|
||||
my($co_file);
|
||||
foreach $co_file (@files)
|
||||
{
|
||||
print "Updating $co_file\n";
|
||||
push(@cvs_co_list, $co_file);
|
||||
}
|
||||
|
||||
my($result) = $session->update($revision, \@cvs_co_list);
|
||||
# result of 1 is success
|
||||
if (!$result) { die "Error: Fast update failed\n"; }
|
||||
} else {
|
||||
print "No files in this module changed\n";
|
||||
}
|
||||
}
|
||||
|
||||
saveCheckoutTimestamp($checkout_start_time, $timestamp_file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Checkout
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub CheckoutModules($$$)
|
||||
{
|
||||
my($modules, $pull_date, $timestamp_file) = @_; # list of modules to check out
|
||||
|
||||
my($start_time) = TimeStart();
|
||||
|
||||
# assertRightDirectory();
|
||||
my($cvsfile) = AskAndPersistFile($main::filepaths{"sessionpath"});
|
||||
my($session) = Moz::MacCVS->new( $cvsfile );
|
||||
unless (defined($session)) { die "Error: Checkout aborted. Cannot create session file: $session" }
|
||||
|
||||
my($checkout_start_time) = time();
|
||||
|
||||
# activate MacCVS
|
||||
ActivateApplication('Mcvs');
|
||||
|
||||
my($this_co);
|
||||
foreach $this_co (@$modules)
|
||||
{
|
||||
my($module, $revision, $date) = ($this_co->[0], $this_co->[1], $this_co->[2]);
|
||||
if ($date eq "") {
|
||||
$date = $pull_date;
|
||||
}
|
||||
CheckOutModule($session, $module, $revision, $date);
|
||||
# print "Checking out $module with ref $revision, date $date\n";
|
||||
}
|
||||
|
||||
saveCheckoutTimestamp($checkout_start_time, $timestamp_file);
|
||||
TimeEnd($start_time, "Checkout");
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ReadCheckoutModulesFile
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ReadCheckoutModulesFile($$)
|
||||
{
|
||||
my($modules_file, $co_list) = @_;
|
||||
|
||||
my($checkout_file) = getScriptFolder().":".$modules_file;
|
||||
local(*CHECKOUT_FILE);
|
||||
open(CHECKOUT_FILE, "< $checkout_file") || die "Error: failed to open checkout list $checkout_file\n";
|
||||
while (<CHECKOUT_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
# ignore comments and empty lines
|
||||
if ($line =~ /^\#/ || $line =~ /^\s*$/) {
|
||||
next;
|
||||
}
|
||||
|
||||
my(@cvs_co) = ["", "", ""];
|
||||
|
||||
my($module, $revision, $date) = (0, 1, 2);
|
||||
|
||||
if ($line =~ /\s*([^#,\s]+)\s*\,\s*([^#,\s]+)\s*\,\s*([^#]+)/)
|
||||
{
|
||||
@cvs_co[$module] = $1;
|
||||
@cvs_co[$revision] = $2;
|
||||
@cvs_co[$date] = $3;
|
||||
}
|
||||
elsif ($line =~ /\s*([^#,\s]+)\s*\,\s*([^#,\s]+)\s*(#.+)?/)
|
||||
{
|
||||
@cvs_co[$module] = $1;
|
||||
@cvs_co[$revision] = $2;
|
||||
}
|
||||
elsif ($line =~ /\s*([^#,\s]+)\s*\,\s*,\s*([^#,]+)/)
|
||||
{
|
||||
@cvs_co[$module] = $1;
|
||||
@cvs_co[$date] = $2;
|
||||
}
|
||||
elsif ($line =~ /\s*([^#,\s]+)/)
|
||||
{
|
||||
@cvs_co[$module] = $1;
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Error: unrecognized line '$line' in $modules_file\n";
|
||||
}
|
||||
|
||||
# strip surrounding space from date
|
||||
@cvs_co[$date] =~ s/^\s*|\s*$//g;
|
||||
|
||||
# print "Going to check out '@cvs_co[$module]', '@cvs_co[$revision]', '@cvs_co[$date]'\n";
|
||||
push(@$co_list, \@cvs_co);
|
||||
}
|
||||
|
||||
close(CHECKOUT_FILE);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// PullFromCVS
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub PullFromCVS($$)
|
||||
{
|
||||
unless ( $main::build{pull} ) { return; }
|
||||
|
||||
my($modules_file, $timestamp_file) = @_;
|
||||
|
||||
StartBuildModule("pull");
|
||||
|
||||
my(@cvs_co_list);
|
||||
ReadCheckoutModulesFile($modules_file, \@cvs_co_list);
|
||||
|
||||
if ($main::FAST_UPDATE && $main::options{pull_by_date})
|
||||
{
|
||||
die "Error: you can't use FAST_UPDATE if you are pulling by date.\n";
|
||||
}
|
||||
|
||||
my($did_fast_update) = $main::FAST_UPDATE && FastUpdate(\@cvs_co_list, $timestamp_file);
|
||||
if (!$did_fast_update)
|
||||
{
|
||||
my($pull_date) = "";
|
||||
if ($main::options{pull_by_date})
|
||||
{
|
||||
# acceptable CVS date formats are (in local time):
|
||||
# ISO8601 (e.g. "1972-09-24 20:05") and Internet (e.g. "24 Sep 1972 20:05").
|
||||
# Perl's localtime() string format also seems to work.
|
||||
$pull_date = localtime().""; # force string interp.
|
||||
print "Pulling by date $pull_date\n";
|
||||
}
|
||||
|
||||
CheckoutModules(\@cvs_co_list, $pull_date, $timestamp_file);
|
||||
}
|
||||
|
||||
EndBuildModule("pull");
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// RunBuild
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub RunBuild($$$$)
|
||||
{
|
||||
my($do_pull, $do_build, $input_files, $build_prefs) = @_;
|
||||
|
||||
InitBuildProgress($input_files->{"buildprogress"});
|
||||
|
||||
# if we are pulling, we probably want to do a full build, so clear the build progress
|
||||
if ($do_pull) {
|
||||
ClearBuildProgress();
|
||||
}
|
||||
|
||||
# read local prefs, and the build progress file, and set flags to say what to build
|
||||
SetupBuildParams(\%main::build,
|
||||
\%main::options,
|
||||
\%main::optiondefines,
|
||||
\%main::filepaths,
|
||||
$input_files->{"buildflags"},
|
||||
$build_prefs);
|
||||
|
||||
# If we were told to pull, make sure we do, overriding prefs etc.
|
||||
if ($do_pull)
|
||||
{
|
||||
$main::build{"pull"} = 1;
|
||||
}
|
||||
|
||||
# transfer this flag
|
||||
$CodeWarriorLib::CLOSE_PROJECTS_FIRST = $main::CLOSE_PROJECTS_FIRST;
|
||||
|
||||
# setup the build log
|
||||
SetupBuildLog($main::filepaths{"buildlogfilepath"}, $main::USE_TIMESTAMPED_LOGS);
|
||||
StopForErrors();
|
||||
|
||||
if ($main::LOG_TO_FILE) {
|
||||
RedirectOutputToFile($main::filepaths{"scriptlogfilepath"});
|
||||
}
|
||||
|
||||
# run a pre-build check to see that the tools etc are in order
|
||||
DoPrebuildCheck();
|
||||
|
||||
# do the pull
|
||||
PullFromCVS($input_files->{"checkoutdata"}, $input_files->{"checkouttime"});
|
||||
|
||||
unless ($do_build) { return; }
|
||||
|
||||
my($build_start) = TimeStart();
|
||||
|
||||
# check the build environment
|
||||
ConfigureBuildSystem();
|
||||
|
||||
# here we load and call methods in the build module indirectly.
|
||||
# we have to use indirection because the build module can be named
|
||||
# differently for different builds.
|
||||
chdir(dirname($0)); # change to the script dir
|
||||
my($build_module) = $input_files->{"buildmodule"};
|
||||
# load the build module
|
||||
require $build_module;
|
||||
{ # scope for no strict 'refs'
|
||||
no strict 'refs';
|
||||
|
||||
my($package_name) = $build_module;
|
||||
$package_name =~ s/\.pm$//;
|
||||
|
||||
chdir($main::MOZ_SRC);
|
||||
&{$package_name."::BuildDist"}();
|
||||
|
||||
chdir($main::MOZ_SRC);
|
||||
&{$package_name."::BuildProjects"}();
|
||||
}
|
||||
|
||||
# the build finished, so clear the build progress state
|
||||
ClearBuildProgress();
|
||||
|
||||
TimeEnd($build_start, "Build");
|
||||
print "Build complete\n";
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,425 +0,0 @@
|
||||
#!perl -w
|
||||
package Moz::BuildFlags;
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
# Package that attempts to read a file from the Preferences folder,
|
||||
# and get build settings out of it
|
||||
|
||||
use strict;
|
||||
use Exporter;
|
||||
|
||||
use Cwd;
|
||||
use File::Basename;
|
||||
|
||||
use Moz::Moz;
|
||||
use Moz::Prefs;
|
||||
|
||||
use vars qw(@ISA @EXPORT);
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(
|
||||
SetupBuildParams
|
||||
InitBuildProgress
|
||||
WriteBuildProgress
|
||||
ClearBuildProgress
|
||||
ReadBuildProgress
|
||||
);
|
||||
|
||||
|
||||
my(@build_flags);
|
||||
my(@options_flags);
|
||||
my(@filepath_flags);
|
||||
|
||||
my(%arrays_list) = (
|
||||
"build_flags", \@build_flags,
|
||||
"options_flags", \@options_flags,
|
||||
"filepath_flags", \@filepath_flags
|
||||
);
|
||||
|
||||
my($progress_file) = "¥ÊBuild progress";
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# appendArrayFlag
|
||||
#
|
||||
# Set a flag in the array
|
||||
#-------------------------------------------------------------------------------
|
||||
sub appendArrayFlag(@)
|
||||
{
|
||||
my($array_name) = shift;
|
||||
my($setting) = shift;
|
||||
my($value) = shift;
|
||||
|
||||
my(@optional_values);
|
||||
foreach (@_) {
|
||||
push(@optional_values, $_);
|
||||
}
|
||||
|
||||
my(@this_flag) = [$setting, $value, @optional_values];
|
||||
my($flags_array) = $arrays_list{$array_name};
|
||||
if ($flags_array)
|
||||
{
|
||||
push(@{$flags_array}, @this_flag) || die "Failed to append\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Error: unknown build flags array $array_name\n";
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# readFlagsFile
|
||||
#
|
||||
# Read the file of build flags from disk. File path is relative to the
|
||||
# script directory.
|
||||
#-------------------------------------------------------------------------------
|
||||
sub readFlagsFile($)
|
||||
{
|
||||
my($flags_file) = @_;
|
||||
|
||||
my($file_path) = $0;
|
||||
$file_path =~ s/[^:]+$/$flags_file/;
|
||||
|
||||
print "Reading build flags from '$file_path'\n";
|
||||
|
||||
local(*FLAGS_FILE);
|
||||
open(FLAGS_FILE, "< $file_path") || die "Error: failed to open flags file $file_path\n";
|
||||
|
||||
my($cur_array) = "";
|
||||
|
||||
while(<FLAGS_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
# ignore comments and empty lines
|
||||
if ($line =~ /^\#/ || $line =~ /^\s*$/) {
|
||||
next;
|
||||
}
|
||||
|
||||
# 1-word line, probably array name
|
||||
if ($line =~ /^([^#\s]+)\s*$/)
|
||||
{
|
||||
$cur_array = $1;
|
||||
next;
|
||||
}
|
||||
elsif ($line =~ /^([^#\s]+)\s+\"(.+)\"(\s+#.+)?$/) # quoted option, possible comment
|
||||
{
|
||||
my($flag) = $1;
|
||||
my($setting) = $2;
|
||||
|
||||
appendArrayFlag($cur_array, $flag, $setting);
|
||||
}
|
||||
elsif ($line =~ /^([^#\s]+)((\s+[^#\s]+)+)(\s+#.+)?$/) # multiple word line, possible comment
|
||||
{
|
||||
my($flag) = $1;
|
||||
|
||||
appendArrayFlag($cur_array, $flag, split(' ', $2));
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Error: unknown build flag at '$line'\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
close(FLAGS_FILE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# flagsArrayToHash
|
||||
#
|
||||
# Utility routine to migrate flag from a 2D array to a hash, where
|
||||
# item[n][0] is the hash entry name, and item[n][1] is the hash entry value.
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub flagsArrayToHash($$)
|
||||
{
|
||||
my($src_array, $dest_hash) = @_;
|
||||
|
||||
my($item);
|
||||
foreach $item (@$src_array)
|
||||
{
|
||||
$dest_hash->{$item->[0]} = $item->[1];
|
||||
}
|
||||
}
|
||||
|
||||
#-----------------------------------------------
|
||||
# printHash
|
||||
#
|
||||
# Utility routine to print a hash
|
||||
#-----------------------------------------------
|
||||
sub printHash($)
|
||||
{
|
||||
my($hash_ref) = @_;
|
||||
|
||||
print "Printing hash:\n";
|
||||
|
||||
my($key, $value);
|
||||
|
||||
while (($key, $value) = each (%$hash_ref))
|
||||
{
|
||||
print " $key $value\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-----------------------------------------------
|
||||
# printBuildArray
|
||||
#
|
||||
# Utility routine to print a 2D array
|
||||
#-----------------------------------------------
|
||||
sub printBuildArray($)
|
||||
{
|
||||
my($build_array) = @_;
|
||||
|
||||
my($entry);
|
||||
foreach $entry (@$build_array)
|
||||
{
|
||||
print "$entry->[0] = $entry->[1]\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SetBuildFlags
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetBuildFlags($)
|
||||
{
|
||||
my($build) = @_;
|
||||
|
||||
flagsArrayToHash(\@build_flags, $build);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SetBuildOptions
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetBuildOptions($)
|
||||
{
|
||||
my($options) = @_;
|
||||
|
||||
flagsArrayToHash(\@options_flags, $options);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SetFilepathFlags
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetFilepathFlags($)
|
||||
{
|
||||
my($filepath) = @_;
|
||||
|
||||
flagsArrayToHash(\@filepath_flags, $filepath);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SetOptionDefines
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetOptionDefines($)
|
||||
{
|
||||
my($optiondefines) = @_;
|
||||
|
||||
foreach my $entry (@options_flags)
|
||||
{
|
||||
if (defined($entry->[2])) {
|
||||
$optiondefines->{$entry->[0]}{$entry->[2]} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# PropagateAllFlags
|
||||
#-------------------------------------------------------------------------------
|
||||
sub PropagateAllFlags($)
|
||||
{
|
||||
my($build_array) = @_;
|
||||
|
||||
# if "all" is set, set all the flags to 1
|
||||
unless ($build_array->[0][0] eq "all") { die "Error: 'all' must come first in the flags array\n"; }
|
||||
|
||||
if ($build_array->[0][1] == 1)
|
||||
{
|
||||
my($index);
|
||||
foreach $index (@$build_array)
|
||||
{
|
||||
$index->[1] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// _getBuildProgressFile
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub _getBuildProgressFile()
|
||||
{
|
||||
return $progress_file;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// setBuildProgressStart
|
||||
#//
|
||||
#// This automagically sets $build{"all"} to 0
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub setBuildProgressStart($$)
|
||||
{
|
||||
my($build_array, $name) = @_;
|
||||
|
||||
my($index);
|
||||
foreach $index (@$build_array)
|
||||
{
|
||||
$index->[1] = 0;
|
||||
if ($index->[0] eq $name) {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
print "Building from module after $name, as specified by build progress\n";
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// InitBuildProgress
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub InitBuildProgress($)
|
||||
{
|
||||
my($prog_file) = @_;
|
||||
if ($prog_file ne "") {
|
||||
$progress_file = full_path_to($prog_file);
|
||||
print "Writing build progress to $progress_file\n";
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// WriteBuildProgress
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub WriteBuildProgress($)
|
||||
{
|
||||
my($module_built) = @_;
|
||||
|
||||
my($progress_file) = _getBuildProgressFile();
|
||||
|
||||
if ($progress_file ne "")
|
||||
{
|
||||
open(PROGRESS_FILE, ">>$progress_file") || die "Failed to open $progress_file\n";
|
||||
print(PROGRESS_FILE "$module_built\n");
|
||||
close(PROGRESS_FILE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ClearBuildProgress
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ClearBuildProgress()
|
||||
{
|
||||
my($progress_file) = _getBuildProgressFile();
|
||||
if ($progress_file ne "") {
|
||||
unlink $progress_file;
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// WipeBuildProgress
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub WipeBuildProgress()
|
||||
{
|
||||
print "Ignoring build progress\n";
|
||||
ClearBuildProgress();
|
||||
$progress_file = "";
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ReadBuildProgress
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ReadBuildProgress($)
|
||||
{
|
||||
my($build_array) = @_;
|
||||
my($progress_file) = _getBuildProgressFile();
|
||||
|
||||
my($last_module);
|
||||
|
||||
if (open(PROGRESS_FILE, "< $progress_file"))
|
||||
{
|
||||
print "Getting build progress from $progress_file\n";
|
||||
|
||||
while (<PROGRESS_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
$last_module = $line;
|
||||
}
|
||||
|
||||
close(PROGRESS_FILE);
|
||||
}
|
||||
|
||||
if ($last_module)
|
||||
{
|
||||
setBuildProgressStart($build_array, $last_module);
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# clearOldBuildSettings
|
||||
#-------------------------------------------------------------------------------
|
||||
sub clearOldBuildSettings($$$$)
|
||||
{
|
||||
my($build, $options, $optiondefines, $filepaths) = @_;
|
||||
|
||||
# empty the arrays in case we're being called twice
|
||||
@build_flags = ();
|
||||
@options_flags = ();
|
||||
@filepath_flags = ();
|
||||
|
||||
# and empty the hashes
|
||||
%$build = ();
|
||||
%$options = ();
|
||||
%$optiondefines = ();
|
||||
%$filepaths = ();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SetupBuildParams
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetupBuildParams($$$$$$)
|
||||
{
|
||||
my($build, $options, $optiondefines, $filepaths, $flags_file, $prefs_file) = @_;
|
||||
|
||||
# Empty the hashes and arrays, to wipe out any stale data.
|
||||
# Needed because these structures persist across two build scripts
|
||||
# called using 'do' from a parent script.
|
||||
clearOldBuildSettings($build, $options, $optiondefines, $filepaths);
|
||||
|
||||
# Read from the flags file, which sets up the various arrays
|
||||
readFlagsFile($flags_file);
|
||||
|
||||
# If 'all' is set in the build array, propagate that to all entries
|
||||
PropagateAllFlags(\@build_flags);
|
||||
|
||||
# read the user pref file, that can change values in the array
|
||||
ReadMozUserPrefs($prefs_file, \@build_flags, \@options_flags, \@filepath_flags);
|
||||
|
||||
# If build progress exists, this clears flags in the array up to a certain point
|
||||
if ($main::USE_BUILD_PROGRESS) {
|
||||
ReadBuildProgress(\@build_flags);
|
||||
} else {
|
||||
WipeBuildProgress();
|
||||
}
|
||||
|
||||
# printBuildArray(\@build_flags);
|
||||
# printBuildArray(\@options_flags);
|
||||
|
||||
SetBuildFlags($build);
|
||||
SetBuildOptions($options);
|
||||
SetOptionDefines($optiondefines);
|
||||
SetFilepathFlags($filepaths);
|
||||
|
||||
# printHash($build);
|
||||
# printHash($options);
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
@@ -1,786 +0,0 @@
|
||||
|
||||
package Moz::BuildUtils;
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
# Package that contains build util functions specific to the Mozilla build
|
||||
# process.
|
||||
|
||||
use strict;
|
||||
use Exporter;
|
||||
|
||||
use Cwd;
|
||||
use File::Path;
|
||||
use File::Basename;
|
||||
|
||||
use Mac::Events;
|
||||
use Mac::StandardFile;
|
||||
|
||||
use Moz::Moz;
|
||||
use Moz::BuildFlags;
|
||||
use Moz::MacCVS;
|
||||
#use Moz::ProjectXML; #optional; required for static build only
|
||||
|
||||
use vars qw(@ISA @EXPORT);
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(
|
||||
SetupDefaultBuildOptions
|
||||
SetupBuildRootDir
|
||||
StartBuildModule
|
||||
EndBuildModule
|
||||
GetBinDirectory
|
||||
BuildOneProjectWithOutput
|
||||
BuildOneProject
|
||||
BuildProject
|
||||
BuildProjectClean
|
||||
BuildIDLProject
|
||||
BuildFolderResourceAliases
|
||||
AskAndPersistFile
|
||||
DelayFor
|
||||
TimeStart
|
||||
TimeEnd
|
||||
EmptyTree
|
||||
SetupBuildLog
|
||||
SetBuildNumber
|
||||
SetTimeBomb
|
||||
UpdateConfigHeader
|
||||
);
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SetupDefaultBuildOptions
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SetupDefaultBuildOptions($$$)
|
||||
{
|
||||
my($debug, $bin_dir, $config_header_file_name) = @_;
|
||||
|
||||
# Here we set up defaults for the various build flags.
|
||||
# If you want to override any of these, it's best to do
|
||||
# so via the relevant preferences file, which lives in
|
||||
# System Folder:Preferences:Mozilla build prefs:{build prefs file}.
|
||||
# For the name of the prefs file, see the .pl script that you
|
||||
# run to start this build. The prefs files are created when
|
||||
# you run the build, and contain some documentation.
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# configuration variables that globally affect what is built
|
||||
#-------------------------------------------------------------
|
||||
$main::DEBUG = $debug;
|
||||
$main::PROFILE = 0;
|
||||
$main::RUNTIME = 0; # turn on to just build runtime support and NSPR projects
|
||||
$main::GC_LEAK_DETECTOR = 0; # turn on to use GC leak detection
|
||||
$main::MOZILLA_OFFICIAL = 0; # generate build number
|
||||
$main::LOG_TO_FILE = 0; # write perl output to a file
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# configuration variables that affect the manner of building,
|
||||
# but possibly affecting the outcome.
|
||||
#-------------------------------------------------------------
|
||||
$main::ALIAS_SYM_FILES = $main::DEBUG;
|
||||
$main::CLOBBER_LIBS = 1; # turn on to clobber existing libs and .xSYM files before
|
||||
# building each project
|
||||
# The following two options will delete all dist files (if you have $main::build{dist} turned on),
|
||||
# but leave the directory structure intact.
|
||||
$main::CLOBBER_DIST_ALL = 1; # turn on to clobber all aliases/files inside dist (headers/xsym/libs)
|
||||
$main::CLOBBER_DIST_LIBS = 0; # turn on to clobber only aliases/files for libraries/sym files in dist
|
||||
$main::CLOBBER_IDL_PROJECTS = 0; # turn on to clobber all IDL projects.
|
||||
$main::CLOBBER_PROJECTS = 0; # turn on to remove object code from each project before building it
|
||||
|
||||
$main::UNIVERSAL_INTERFACES_VERSION = 0x0320;
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# configuration variables that are preferences for the build,
|
||||
# style and do not affect what is built.
|
||||
#-------------------------------------------------------------
|
||||
$main::CLOSE_PROJECTS_FIRST = 0;
|
||||
# 1 = close then make (for development),
|
||||
# 0 = make then close (for tinderbox).
|
||||
$main::USE_TIMESTAMPED_LOGS = 0;
|
||||
$main::USE_BUILD_PROGRESS = 1; # track build progress for restartable builds
|
||||
#-------------------------------------------------------------
|
||||
# END OF CONFIG SWITCHES
|
||||
#-------------------------------------------------------------
|
||||
|
||||
$main::BIN_DIRECTORY = $bin_dir;
|
||||
$main::DEFINESOPTIONS_FILE = $config_header_file_name;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SetupBuildRootDir
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SetupBuildRootDir($)
|
||||
{
|
||||
my($rel_path_to_script) = @_;
|
||||
|
||||
my($cur_dir) = cwd();
|
||||
$cur_dir =~ s/$rel_path_to_script$//;
|
||||
chdir($cur_dir) || die "Error: failed to set build root directory to '$cur_dir'.\nYou probably need to put 'mozilla' one level down (in a folder).\n";
|
||||
$main::MOZ_SRC = cwd();
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// StartBuildModule
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub StartBuildModule($)
|
||||
{
|
||||
my($module) = @_;
|
||||
|
||||
print("---- Start of $module ----\n");
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// EndBuildModule
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub EndBuildModule($)
|
||||
{
|
||||
my($module) = @_;
|
||||
WriteBuildProgress($module);
|
||||
print("---- End of $module ----\n");
|
||||
}
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# GetBinDirectory
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
sub GetBinDirectory()
|
||||
{
|
||||
if ($main::BIN_DIRECTORY eq "") { die "Dist directory not set\n"; }
|
||||
return $main::BIN_DIRECTORY;
|
||||
}
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# AskAndPersistFile stores the information about the user pick inside
|
||||
# the file $session_storage
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
sub AskAndPersistFile($)
|
||||
{
|
||||
my ($sessionStorage) = @_;
|
||||
my $cvsfile;
|
||||
|
||||
if (( -e $sessionStorage) &&
|
||||
open( SESSIONFILE, $sessionStorage ))
|
||||
{
|
||||
# Read in the path if available
|
||||
$cvsfile = <SESSIONFILE>;
|
||||
chomp $cvsfile;
|
||||
close SESSIONFILE;
|
||||
if ( ! -e $cvsfile )
|
||||
{
|
||||
print STDERR "$cvsfile has disappeared\n";
|
||||
undef $cvsfile;
|
||||
}
|
||||
}
|
||||
unless (defined ($cvsfile))
|
||||
{
|
||||
# make sure that MacPerl is a front process
|
||||
ActivateApplication('McPL');
|
||||
MacPerl::Answer("Could not find your MacCVS session file. Please choose one", "OK");
|
||||
|
||||
# prompt user for the file name, and store it
|
||||
my $macFile = StandardGetFile( 0, "McvD");
|
||||
if ( $macFile->sfGood() )
|
||||
{
|
||||
$cvsfile = $macFile->sfFile();
|
||||
# save the choice if we can
|
||||
if ( open (SESSIONFILE, ">" . $sessionStorage))
|
||||
{
|
||||
printf SESSIONFILE $cvsfile, "\n";
|
||||
close SESSIONFILE;
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR "Could not open storage file $sessionStorage for saving $cvsfile\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
return $cvsfile;
|
||||
}
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# BuildIDLProject
|
||||
#
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildIDLProject($$)
|
||||
{
|
||||
my ($project_path, $module_name) = @_;
|
||||
|
||||
if ($main::CLOBBER_IDL_PROJECTS)
|
||||
{
|
||||
my (@suffix_list) = (".mcp", ".xml");
|
||||
my ($project_name, $project_dir, $suffix) = fileparse($project_path, @suffix_list);
|
||||
if ($suffix eq "") { die "Error: Project, $project_path must end in .xml or .mcp\n"; }
|
||||
|
||||
my($datafolder_path);
|
||||
if ($suffix eq ".xml")
|
||||
{
|
||||
$datafolder_path = $project_dir . "_" . $project_name . " Data:";
|
||||
}
|
||||
else {
|
||||
$datafolder_path = $project_dir . $project_name . " Data:";
|
||||
}
|
||||
|
||||
print STDERR "Deleting IDL data folder: $datafolder_path\n";
|
||||
EmptyTree($datafolder_path);
|
||||
}
|
||||
|
||||
BuildOneProject($project_path, "headers", 0, 0, 0);
|
||||
BuildOneProject($project_path, $module_name.".xpt", 1, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# CreateStaticLibTargets
|
||||
#
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
sub CreateXMLStaticLibTargets($)
|
||||
{
|
||||
my($xml_path) = @_;
|
||||
|
||||
my (@suffix_list) = (".xml");
|
||||
my ($project_name, $project_dir, $suffix) = fileparse($xml_path, @suffix_list);
|
||||
if ($suffix eq "") { die "XML munging: $xml_path must end in .xml\n"; }
|
||||
|
||||
#sniff the file to see if we need to fix up broken Pro5-exported XML
|
||||
print "Parsing $xml_path\n";
|
||||
|
||||
my $ide_version = Moz::ProjectXML::SniffProjectXMLIDEVersion($xml_path);
|
||||
if ($ide_version eq "4.0")
|
||||
{
|
||||
my $new_file = $project_dir.$project_name."2.xml";
|
||||
|
||||
print "Cleaning up Pro 5 xml to $new_file\n";
|
||||
|
||||
Moz::ProjectXML::CleanupPro5XML($xml_path, $new_file);
|
||||
|
||||
unlink $xml_path;
|
||||
rename ($new_file, $xml_path);
|
||||
}
|
||||
|
||||
my $doc = Moz::ProjectXML::ParseXMLDocument($xml_path);
|
||||
my @target_list = Moz::ProjectXML::GetTargetsList($doc);
|
||||
my $target;
|
||||
|
||||
my %target_hash; # for easy lookups below
|
||||
foreach $target (@target_list) { $target_hash{$target} = 1; }
|
||||
|
||||
foreach $target (@target_list)
|
||||
{
|
||||
if ($target =~ /(.+).shlb$/) # if this is a shared lib target
|
||||
{
|
||||
my $target_base = $1;
|
||||
my $static_target = $target_base.".o";
|
||||
|
||||
# ensure that this does not exist already
|
||||
if ($target_hash{$static_target}) {
|
||||
print "Static target $static_target already exists in project. Not making\n";
|
||||
next;
|
||||
}
|
||||
|
||||
print "Making static target '$static_target' from target '$target'\n";
|
||||
|
||||
Moz::ProjectXML::CloneTarget($doc, $target, $static_target);
|
||||
Moz::ProjectXML::SetAsStaticLibraryTarget($doc, $static_target, $static_target);
|
||||
}
|
||||
}
|
||||
|
||||
print "Writing XML file to $xml_path\n";
|
||||
my $temp_path = $project_dir."_".$project_name.".xml";
|
||||
Moz::ProjectXML::WriteXMLDocument($doc, $temp_path, $ide_version);
|
||||
Moz::ProjectXML::DisposeXMLDocument($doc);
|
||||
|
||||
if (-e $temp_path)
|
||||
{
|
||||
unlink $xml_path;
|
||||
rename ($temp_path, $xml_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Error: Failed to add new targets to XML project\n";
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ProcessProjectXML
|
||||
#//
|
||||
#// Helper routine to allow for XML pre-processing. This should read in the XML, process it,
|
||||
#// and replace the original file with the processed version.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ProcessProjectXML($)
|
||||
{
|
||||
my($xml_path) = @_;
|
||||
|
||||
# we need to manually load Moz::ProjectXML, becaues not everyone will have the
|
||||
# required perl modules in their distro.
|
||||
my($cur_dir) = cwd();
|
||||
|
||||
chdir(dirname($0)); # change to the script dir
|
||||
eval "require Moz::ProjectXML";
|
||||
if ($@) { die "Error: could not do Project XML munging because you do not have the correct XML modules installed. Error is:\n################\n $@################"; }
|
||||
|
||||
chdir($cur_dir);
|
||||
|
||||
CreateXMLStaticLibTargets($xml_path);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Build one project, and make the alias. Parameters are project path, target name, shared library
|
||||
#// name, make shlb alias (boolean), make xSYM alias (boolean), and is component (boolean).
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildOneProjectWithOutput($$$$$$)
|
||||
{
|
||||
my ($project_path, $target_name, $output_name, $alias_lib, $alias_xSYM, $component) = @_;
|
||||
|
||||
unless ($project_path =~ m/^$main::BUILD_ROOT.+/) { return; }
|
||||
|
||||
my (@suffix_list) = (".mcp", ".xml");
|
||||
my ($project_name, $project_dir, $suffix) = fileparse($project_path, @suffix_list);
|
||||
if ($suffix eq "") { die "Error: Project, $project_path must end in .xml or .mcp\n"; }
|
||||
|
||||
my($dist_dir) = GetBinDirectory();
|
||||
|
||||
# Put libraries in "Essential Files" folder, Components in "Components" folder
|
||||
my($output_dir) = $component ? "Components:" : "Essential Files:";
|
||||
my($output_path) = $dist_dir.$output_dir;
|
||||
|
||||
if ($main::options{static_build})
|
||||
{
|
||||
if ($output_name =~ /\.o$/ || $output_name =~ /\.[Ll]ib$/)
|
||||
{
|
||||
$alias_xSYM = 0;
|
||||
$alias_lib = 1;
|
||||
$output_path = $main::DEBUG ? ":mozilla:dist:static_libs_debug:" : ":mozilla:dist:static_libs:";
|
||||
}
|
||||
}
|
||||
|
||||
# if the flag is on to export projects to XML, export and munge them
|
||||
if ($main::EXPORT_PROJECTS && !($project_path =~ /IDL\.mcp$/))
|
||||
{
|
||||
my $xml_out_path = $project_path;
|
||||
|
||||
$xml_out_path =~ s/\.mcp$/\.xml/;
|
||||
|
||||
# only do this if project is newer?
|
||||
if (! -e $xml_out_path)
|
||||
{
|
||||
ExportProjectToXML(full_path_to($project_path), full_path_to($xml_out_path));
|
||||
ProcessProjectXML($xml_out_path);
|
||||
}
|
||||
}
|
||||
|
||||
# if the flag is set to use XML projects, default to XML if the file
|
||||
# is present.
|
||||
if ($main::USE_XML_PROJECTS && !($project_path =~ /IDL\.mcp$/))
|
||||
{
|
||||
my $xml_project_path = $project_dir.$project_name.".xml";
|
||||
if (-e $xml_project_path)
|
||||
{
|
||||
$project_path = $xml_project_path;
|
||||
$suffix = ".xml";
|
||||
}
|
||||
}
|
||||
|
||||
if ($suffix eq ".xml")
|
||||
{
|
||||
my($xml_path) = $project_path;
|
||||
# Prepend an "_" onto the name of the generated project file so it doesn't conflict
|
||||
$project_path = $project_dir . "_" . $project_name . ".mcp";
|
||||
my($project_modtime) = (-e $project_path ? GetFileModDate($project_path) : 0);
|
||||
my($xml_modtime) = (-e $xml_path ? GetFileModDate($xml_path) : 0);
|
||||
|
||||
if ($xml_modtime > $project_modtime)
|
||||
{
|
||||
print("Importing $project_path from $project_name.xml.\n");
|
||||
unlink($project_path);
|
||||
# Might want to delete the "xxx.mcp Data" dir ???
|
||||
ImportXMLProject(full_path_to($xml_path), full_path_to($project_path));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($main::CLOBBER_LIBS)
|
||||
{
|
||||
unlink "$project_dir$output_name"; # it's OK if these fail
|
||||
unlink "$project_dir$output_name.xSYM";
|
||||
}
|
||||
|
||||
DoBuildProject($project_path, $target_name, $main::CLOBBER_PROJECTS);
|
||||
|
||||
$alias_lib ? MakeAlias("$project_dir$output_name", "$output_path") : 0;
|
||||
$alias_xSYM ? MakeAlias("$project_dir$output_name.xSYM", "$output_path") : 0;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// For compatiblity with existing scripts, BuildOneProject now just calls
|
||||
#// BuildOneProjectWithOutput, with the output name and target name identical.
|
||||
#// Note that this routine assumes that the target name and the shared libary name
|
||||
#// are the same.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildOneProject($$$$$)
|
||||
{
|
||||
my ($project_path, $target_name, $alias_lib, $alias_xSYM, $component) = @_;
|
||||
|
||||
BuildOneProjectWithOutput($project_path, $target_name, $target_name,
|
||||
$alias_lib, $alias_xSYM, $component);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// For compatiblity with existing scripts, BuildProject now just calls
|
||||
#// BuildOneProjectWithOutput, with the output name and target name identical.
|
||||
#// Note that this routine assumes that the target name and the shared libary name
|
||||
#// are the same. No aliases of the output are made.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildProject($$)
|
||||
{
|
||||
my ($project_path, $target_name) = @_;
|
||||
|
||||
BuildOneProjectWithOutput($project_path, $target_name, $target_name, 0, 0, 0);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Identical to BuildProject but clobbers the project before building it.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildProjectClean($$)
|
||||
{
|
||||
my ($project_path, $target_name) = @_;
|
||||
my ($save_clobber_flag) = $main::CLOBBER_PROJECTS;
|
||||
$main::CLOBBER_PROJECTS = 1;
|
||||
BuildOneProjectWithOutput($project_path, $target_name, $target_name, 0, 0, 0);
|
||||
$main::CLOBBER_PROJECTS = $save_clobber_flag;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Make resource aliases for one directory
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub BuildFolderResourceAliases($$)
|
||||
{
|
||||
my($src_dir, $dest_dir) = @_;
|
||||
|
||||
# get a list of all the resource files
|
||||
opendir(SRCDIR, $src_dir) || die("can't open $src_dir");
|
||||
my(@resource_files) = readdir(SRCDIR);
|
||||
closedir(SRCDIR);
|
||||
|
||||
# make aliases for each one into the dest directory
|
||||
print("Placing aliases to all files from $src_dir in $dest_dir\n");
|
||||
for ( @resource_files )
|
||||
{
|
||||
next if $_ eq "CVS";
|
||||
#print(" Doing $_\n");
|
||||
if (-l $src_dir.$_)
|
||||
{
|
||||
print(" $_ is an alias\n");
|
||||
next;
|
||||
}
|
||||
my($file_name) = $src_dir . $_;
|
||||
MakeAlias($file_name, $dest_dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// DelayFor
|
||||
#//
|
||||
#// Delay for the given number of seconds, allowing the script to be cancelled
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub DelayFor($)
|
||||
{
|
||||
my($delay_secs) = @_;
|
||||
|
||||
STDOUT->autoflush(1);
|
||||
|
||||
my($end_time) = time() + $delay_secs;
|
||||
|
||||
my($last_time) = 0;
|
||||
my($cur_time) = time();
|
||||
|
||||
while ($cur_time < $end_time)
|
||||
{
|
||||
$cur_time = time();
|
||||
if ($cur_time > $last_time)
|
||||
{
|
||||
print ".";
|
||||
$last_time = $cur_time;
|
||||
}
|
||||
|
||||
WaitNextEvent();
|
||||
}
|
||||
|
||||
print "\n";
|
||||
STDOUT->autoflush(0);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// TimeStart
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub TimeStart()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// TimeEnd
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub TimeEnd($$)
|
||||
{
|
||||
use integer;
|
||||
|
||||
my($start_time, $operation_name) = @_;
|
||||
my($end_time) = time();
|
||||
|
||||
my($tot_sec) = $end_time - $start_time;
|
||||
|
||||
my($seconds) = $tot_sec;
|
||||
|
||||
my($hours) = $seconds / (60 * 60);
|
||||
$seconds -= $hours * (60 * 60);
|
||||
|
||||
my($minutes) = $seconds / 60;
|
||||
$seconds -= $minutes * 60;
|
||||
|
||||
print "$operation_name took $hours hours $minutes minutes and $seconds seconds\n";
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Remove all files from a tree, leaving directories intact (except "CVS").
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub EmptyTree($)
|
||||
{
|
||||
my ($root) = @_;
|
||||
#print "EmptyTree($root)\n";
|
||||
opendir(DIR, $root);
|
||||
my $sub;
|
||||
foreach $sub (readdir(DIR))
|
||||
{
|
||||
my $fullpathname = $root.$sub; # -f, -d only work on full paths
|
||||
|
||||
# Don't call empty tree for the alias of a directory.
|
||||
# -d returns true for the alias of a directory, false for a broken alias)
|
||||
|
||||
if (-d $fullpathname)
|
||||
{
|
||||
if (-l $fullpathname) # delete aliases
|
||||
{
|
||||
unlink $fullpathname;
|
||||
next;
|
||||
}
|
||||
EmptyTree($fullpathname.":");
|
||||
if ($sub eq "CVS")
|
||||
{
|
||||
#print "rmdir $fullpathname\n";
|
||||
rmdir $fullpathname;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unless (unlink $fullpathname) { die "Failed to delete $fullpathname\n"; }
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Recurse through a directory hierarchy, looking for MANIFEST files.
|
||||
#// Currently unused.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub ScanForManifestFiles($$$$)
|
||||
{
|
||||
my($dir, $theme_root, $theme_name, $dist_dir) = @_;
|
||||
|
||||
opendir(DIR, $dir) or die "Cannot open dir $dir\n";
|
||||
my @files = readdir(DIR);
|
||||
closedir DIR;
|
||||
|
||||
my $file;
|
||||
|
||||
foreach $file (@files)
|
||||
{
|
||||
my $filepath = $dir.":".$file;
|
||||
|
||||
if (-d $filepath)
|
||||
{
|
||||
# print "Looking for MANIFEST files in $filepath\n";
|
||||
ScanForManifestFiles($filepath, $theme_root, $theme_name, $dist_dir);
|
||||
}
|
||||
elsif ($file eq "MANIFEST")
|
||||
{
|
||||
# print "Doing manifest file $filepath\n";
|
||||
|
||||
# Get the dest path from the first line of the file
|
||||
|
||||
open(MANIFEST, $filepath) || die "Could not open file $file";
|
||||
# Read in the path if available
|
||||
my($dest_line) = <MANIFEST>;
|
||||
chomp $dest_line;
|
||||
close MANIFEST;
|
||||
|
||||
$dest_line =~ s|^#!dest[\t ]+|| || die "No destination line found in $filepath\n";
|
||||
|
||||
my($dest_path) = $dist_dir."chrome:skins:$theme_name:$dest_line";
|
||||
# print " Destination is $dest_path\n";
|
||||
|
||||
InstallResources($filepath, "$dest_path", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-----------------------------------------------
|
||||
# SetupBuildLog
|
||||
#-----------------------------------------------
|
||||
sub SetupBuildLog($$)
|
||||
{
|
||||
my($logfile_path, $timestamped_log) = @_;
|
||||
|
||||
my($logdir) = "";
|
||||
my($logfile) = $logfile_path;
|
||||
|
||||
if ($logfile_path =~ /(.+?:)([^:]+)$/) # ? for non-greedy match
|
||||
{
|
||||
$logdir = $1;
|
||||
$logfile = $2;
|
||||
|
||||
mkpath($logdir);
|
||||
}
|
||||
|
||||
if ($timestamped_log)
|
||||
{
|
||||
#Use time-stamped names so that you don't clobber your previous log file!
|
||||
my $now = localtime();
|
||||
while ($now =~ s@:@.@) {} # replace all colons by periods
|
||||
OpenErrorLog("${logdir}${now}");
|
||||
}
|
||||
else
|
||||
{
|
||||
OpenErrorLog("${logdir}${logfile}");
|
||||
}
|
||||
}
|
||||
|
||||
#-----------------------------------------------
|
||||
# SetBuildNumber
|
||||
#-----------------------------------------------
|
||||
sub SetBuildNumber($$)
|
||||
{
|
||||
my($build_num_file, $files_to_touch) = @_;
|
||||
|
||||
# Make sure we add the config dir to search, to pick up mozBDate.pm
|
||||
# Need to do this dynamically, because this module can be used before
|
||||
# mozilla/config has been checked out.
|
||||
|
||||
my ($inc_path) = $0; # $0 is the path to the parent script
|
||||
$inc_path =~ s/:build:mac:build_scripts:.+$/:config/;
|
||||
push(@INC, $inc_path);
|
||||
|
||||
require mozBDate;
|
||||
|
||||
mozBDate::UpdateBuildNumber($build_num_file, $main::MOZILLA_OFFICIAL);
|
||||
|
||||
my($file);
|
||||
foreach $file (@$files_to_touch)
|
||||
{
|
||||
print "Writing build number to $file from ${file}.in\n";
|
||||
mozBDate::SubstituteBuildNumber($file, $build_num_file, "${file}.in");
|
||||
}
|
||||
}
|
||||
|
||||
#-----------------------------------------------
|
||||
# SetTimeBomb
|
||||
#-----------------------------------------------
|
||||
sub SetTimeBomb($$)
|
||||
{
|
||||
my ($warn_days, $bomb_days) = @_;
|
||||
|
||||
system("perl :mozilla:config:mac-set-timebomb.pl $warn_days $bomb_days");
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Regenerate a configuration header file if necessary
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub UpdateConfigHeader($)
|
||||
{
|
||||
my($config_path) = @_;
|
||||
|
||||
my($config, $oldconfig) = ("", "");
|
||||
my($define, $definevalue, $defines);
|
||||
my($k, $l,);
|
||||
|
||||
foreach $k (keys(%main::options))
|
||||
{
|
||||
if ($main::options{$k})
|
||||
{
|
||||
foreach $l (keys(%{$main::optiondefines{$k}}))
|
||||
{
|
||||
$my::defines{$l} = $main::optiondefines{$k}{$l};
|
||||
print "Setting up my::defines{$l}\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $config_headerfile = current_directory().$config_path;
|
||||
if (-e $config_headerfile)
|
||||
{
|
||||
open(CONFIG_HEADER, "< $config_headerfile") || die "$config_headerfile: $!\n";
|
||||
my($line);
|
||||
while ($line = <CONFIG_HEADER>)
|
||||
{
|
||||
if ($line =~ m/#define\s+([^\s]*)\s+([^\s]*)\s*\n/)
|
||||
{
|
||||
$define = $1;
|
||||
$definevalue = $2;
|
||||
|
||||
#canonicalize so that whitespace changes are not significant
|
||||
my $canon_value = "#define " . $define . " " . $definevalue . "\n";
|
||||
$oldconfig .= $canon_value;
|
||||
|
||||
if (exists ($my::defines{$define}) and ($my::defines{$define} == $definevalue))
|
||||
{
|
||||
delete $my::defines{$define};
|
||||
$config .= $canon_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(CONFIG_HEADER);
|
||||
}
|
||||
|
||||
if (%my::defines)
|
||||
{
|
||||
foreach $k (keys(%my::defines))
|
||||
{
|
||||
$config .= "#define " . $k . " " . $my::defines{$k} . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
my $file_name = basename($config_headerfile);
|
||||
if (($config ne $oldconfig) || (!-e $config_headerfile))
|
||||
{
|
||||
printf("Writing new configuration header $file_name\n");
|
||||
open(CONFIG_HEADER, "> $config_headerfile") || die "$config_headerfile: $!\n";
|
||||
print(CONFIG_HEADER "/* This file is auto-generated based on build options. Do not edit. */\n");
|
||||
print CONFIG_HEADER ($config);
|
||||
close(CONFIG_HEADER);
|
||||
|
||||
MacPerl::SetFileInfo("CWIE", "TEXT", $config_headerfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Configuration header $file_name is up-to-date\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
@@ -1,660 +0,0 @@
|
||||
#!perl
|
||||
package Moz::CodeWarriorLib;
|
||||
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
CodeWarriorLib - supply interface to CodeWarrior
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#!perl
|
||||
use CodeWarriorLib;
|
||||
CodeWarriorLib::activate();
|
||||
$had_errors = CodeWarriorLib::build_project(
|
||||
$project_path, $target_name, $recent_errors_file, $clean_build
|
||||
);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Replaces the AppleScript library I<CodeWarriorLib>.
|
||||
|
||||
=over 4
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
|
||||
use Cwd;
|
||||
use File::Basename;
|
||||
|
||||
use Mac::Types;
|
||||
use Mac::Events;
|
||||
use Mac::AppleEvents;
|
||||
use Mac::AppleEvents::Simple;
|
||||
use Mac::Processes;
|
||||
use Mac::MoreFiles;
|
||||
use Mac::StandardFile;
|
||||
|
||||
|
||||
use vars qw($VERSION);
|
||||
$VERSION = '1.02';
|
||||
|
||||
my($app) = 'CWIE';
|
||||
my($scriptDir) = cwd(); # could use $0 for this
|
||||
my($ide_loc_file) = "";
|
||||
|
||||
# 0 == don't switch CWIE to front app in do_event(), 1 == do switch
|
||||
# note: activate() still switches when called
|
||||
$Mac::AppleEvents::Simple::SWITCH = 0;
|
||||
# $Mac::AppleEvents::Simple::WARN = 1;
|
||||
|
||||
# supply your own path to the source here
|
||||
#_test('PowerPudgeIV:mozilla:mozilla:');
|
||||
|
||||
# If you want to understand the gobbldeygook that's used to build Apple Events,
|
||||
# you should start by reading the AEGizmos documentation.
|
||||
|
||||
=pod
|
||||
|
||||
=item _get_project($full_path)
|
||||
|
||||
A private routine returning a reference to the open project with the given name,
|
||||
or else the empty string (when that project is not open)
|
||||
|
||||
full_path is a string identifying the project to be built and is of the form,
|
||||
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
|
||||
|
||||
=cut
|
||||
|
||||
sub _get_project ($) {
|
||||
my(
|
||||
$full_path, $candidate_projects
|
||||
) = @_;
|
||||
$candidate_projects = _doc_named(basename($full_path, '*'));
|
||||
if ($candidate_projects) {
|
||||
my($cps) = _get_dobj($candidate_projects);
|
||||
my($num) = AECountItems($cps);
|
||||
if ($num) { # is a list
|
||||
foreach (1 .. AECountItems($cps)) {
|
||||
my($cp) = AEGetNthDesc($cps, $_);
|
||||
if (lc $full_path eq lc _full_path($cp)) {
|
||||
return($cp);
|
||||
}
|
||||
}
|
||||
} else { # is only one, not a list
|
||||
if (lc $full_path eq lc _full_path($cps)) {
|
||||
return($cps);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item build_project
|
||||
|
||||
Build a selected target of a project, saving any errors to a file, if supplied.
|
||||
|
||||
full_path is a string identifying the project to be built and is of the form,
|
||||
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
|
||||
|
||||
If target_name is the empty string, the current target of the selected project
|
||||
will be built, else, target_name should be a string matching a target name in
|
||||
the selected project.
|
||||
|
||||
If error_path is the empty string, errors will not be saved to a file,
|
||||
else, error_path should be the full path of a file to save error messages into.
|
||||
|
||||
=cut
|
||||
|
||||
$CodeWarriorLib::CLOSE_PROJECTS_FIRST = 0; # If true we close then make. If false, make then close.
|
||||
my $last_project_built = "";
|
||||
my $last_project_was_closed = 0;
|
||||
|
||||
sub build_project ($;$$$) {
|
||||
my(
|
||||
$full_path, $target_name, $error_path,
|
||||
$remove_object, $p, $project_was_closed, $had_errors
|
||||
) = @_;
|
||||
_close_errors_window();
|
||||
|
||||
if ($CodeWarriorLib::CLOSE_PROJECTS_FIRST && ($last_project_built ne $full_path))
|
||||
{
|
||||
# If we're in "close first" mode, we don't close if the current project
|
||||
# is the same as the previous one.
|
||||
if ($last_project_was_closed) {
|
||||
$p = _get_project($last_project_built);
|
||||
_close($p);
|
||||
}
|
||||
$last_project_built = $full_path;
|
||||
$last_project_was_closed = 0; # now refers to the new project
|
||||
}
|
||||
$project_was_closed = 0;
|
||||
while (1) {
|
||||
$p = _get_project($full_path);
|
||||
if (!$p) {
|
||||
if ($project_was_closed) {
|
||||
print "### Error - request for project document failed after opening\n";
|
||||
die "### possibly CW Pro 4 bug: be sure to close your Find window\n";
|
||||
}
|
||||
$project_was_closed = 1;
|
||||
$last_project_was_closed = 1;
|
||||
_open_file($full_path);
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
$had_errors = 0;
|
||||
if ($target_name eq '') {
|
||||
if ($remove_object) {_remove_object($p)}
|
||||
_build($p);
|
||||
} else {
|
||||
if ($remove_object) {_remove_object($p, $target_name)}
|
||||
_build($p, $target_name);
|
||||
}
|
||||
|
||||
if ($error_path ne '') {
|
||||
_save_errors_window($error_path);
|
||||
}
|
||||
$had_errors = _close_errors_window();
|
||||
|
||||
if (!$CodeWarriorLib::CLOSE_PROJECTS_FIRST)
|
||||
{
|
||||
if ($project_was_closed) {
|
||||
$p = _get_project($full_path);
|
||||
_close($p);
|
||||
}
|
||||
}
|
||||
|
||||
return($had_errors);
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item appIsRunning()
|
||||
|
||||
=cut
|
||||
sub _appIsRunning($)
|
||||
{
|
||||
my ($appSignature) = @_;
|
||||
my ($psi);
|
||||
my ($found) = 0;
|
||||
my ($appPSN);
|
||||
|
||||
foreach $psi (values(%Process))
|
||||
{
|
||||
if ($psi->processSignature() eq $appSignature)
|
||||
{
|
||||
$appPSN = $psi->processNumber();
|
||||
$found = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
return $found;
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item appIsFrontmost()
|
||||
|
||||
=cut
|
||||
sub _appIsFrontmost($)
|
||||
{
|
||||
my ($appSignature) = @_;
|
||||
my ($psi);
|
||||
my ($found) = 0;
|
||||
my ($appPSN);
|
||||
|
||||
foreach $psi (values(%Process))
|
||||
{
|
||||
if ($psi->processSignature() eq $appSignature)
|
||||
{
|
||||
$appPSN = $psi->processNumber();
|
||||
$found = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
return (GetFrontProcess() == $appPSN);
|
||||
}
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
=item activate()
|
||||
|
||||
Launches CodeWarrior and brings it to the front.
|
||||
|
||||
Once found, path will be saved in $idepath_file for future reference.
|
||||
Edit or delete this file to change the location of the IDE. If app is
|
||||
moved, C<activate()> will prompt for a new location.
|
||||
|
||||
First looks for an open CodeWarrior app. Second, tries to open previously
|
||||
saved location in ':idepath.txt'. Third, tries to find it and allow user
|
||||
to choose it with Navigation Services (if present). Fourth, uses good old
|
||||
GUSI routines built-in to MacPerl for a Choose Directory dialog box.
|
||||
|
||||
=cut
|
||||
|
||||
sub activate ($) {
|
||||
|
||||
$ide_loc_file = $_[0]; # save in global
|
||||
|
||||
my($filepath, $appath, $psi) = ($ide_loc_file);
|
||||
|
||||
foreach $psi (values(%Process)) {
|
||||
if ($psi->processSignature() eq $app) {
|
||||
$appath = $psi->processAppSpec();
|
||||
_save_appath($filepath, $appath);
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$appath || !-x $appath) {
|
||||
$appath = _read_appath($filepath);
|
||||
}
|
||||
|
||||
if (!$appath || ! -x $appath)
|
||||
{
|
||||
# make sure that MacPerl is a front process
|
||||
#ActivateApplication('McPL');
|
||||
MacPerl::Answer("Please locate the CodeWarrior application.", "OK");
|
||||
|
||||
# prompt user for the file name, and store it
|
||||
my $macFile = StandardGetFile( 0, "APPL");
|
||||
if ( $macFile->sfGood() )
|
||||
{
|
||||
$appath = $macFile->sfFile();
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Operation canceled\n";
|
||||
}
|
||||
|
||||
# if (eval {require Mac::Navigation}) {
|
||||
# my($options, $nav);
|
||||
# Mac::Navigation->import();
|
||||
# $options = NavGetDefaultDialogOptions();
|
||||
# $options->message('Where is CodeWarrior IDE?');
|
||||
# $options->windowTitle('Find CodeWarrior IDE');
|
||||
# $nav = NavChooseObject($Application{$app}, $options);
|
||||
# die "CodeWarrior IDE not found.\n" if (!$nav || !$nav->file(1));
|
||||
# $appath = $nav->file(1);
|
||||
# } else {
|
||||
# local(*D);
|
||||
# my $cwd = `pwd`;
|
||||
# $appath = _get_folder(
|
||||
# 'Where is the CW IDE folder?',
|
||||
# dirname($Application{$app})
|
||||
# );
|
||||
# die "CodeWarrior IDE not found.\n" if !$appath;
|
||||
# opendir(D, $appath) or die $!;
|
||||
# chdir($appath);
|
||||
# foreach my $file (sort readdir (D)) {
|
||||
# my(@app) = MacPerl::GetFileInfo($file);
|
||||
# if ($app[0] && $app[1] &&
|
||||
# $app[1] eq 'APPL' && $app[0] eq $app
|
||||
# ) {
|
||||
# $appath .= $file;
|
||||
# last;
|
||||
# }
|
||||
# }
|
||||
# chomp($cwd);
|
||||
# chdir($cwd);
|
||||
# }
|
||||
_save_appath($filepath, $appath);
|
||||
}
|
||||
|
||||
my($lp) = LaunchParam->new(
|
||||
launchAppSpec => $appath,
|
||||
launchControlFlags => launchContinue() + launchNoFileFlags()
|
||||
);
|
||||
|
||||
unless (LaunchApplication($lp)) {
|
||||
unlink($filepath);
|
||||
die $^E;
|
||||
}
|
||||
|
||||
# wait for CodeWarrior to show up in the list of processes
|
||||
while (!_appIsRunning('CWIE'))
|
||||
{
|
||||
WaitNextEvent();
|
||||
}
|
||||
|
||||
# wait for CodeWarrior to come to the front
|
||||
while (!_appIsFrontmost('CWIE'))
|
||||
{
|
||||
WaitNextEvent();
|
||||
}
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=item getCodeWarriorPath()
|
||||
|
||||
Returns a file path relative to the CodeWarrior folder
|
||||
|
||||
=cut
|
||||
|
||||
sub getCodeWarriorPath($)
|
||||
{
|
||||
my($subfolder)=@_;
|
||||
|
||||
my($app_path) = _read_appath($ide_loc_file);
|
||||
if ($app_path eq "") { die "Error: Failed to get CodeWarrior IDE path\n"; }
|
||||
|
||||
my($codewarrior_root) = $app_path;
|
||||
$codewarrior_root =~ s/[^:]*$//;
|
||||
return ($codewarrior_root . $subfolder);
|
||||
}
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
=item getCodeWarriorIDEName()
|
||||
|
||||
Returns the name of the CodeWarrior application
|
||||
|
||||
=cut
|
||||
|
||||
sub getCodeWarriorIDEName()
|
||||
{
|
||||
my($subfolder)=@_;
|
||||
|
||||
my($app_path) = _read_appath($ide_loc_file);
|
||||
if ($app_path eq "") { die "Error: Failed to get CodeWarrior IDE path\n"; }
|
||||
|
||||
my(@codewarrior_path) = split(/:/, $app_path);
|
||||
return pop(@codewarrior_path);
|
||||
}
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
=item quit()
|
||||
|
||||
Quits CodeWarrior.
|
||||
|
||||
=cut
|
||||
|
||||
sub quit() {
|
||||
|
||||
$last_project_built = "";
|
||||
$last_project_was_closed = 0;
|
||||
|
||||
my($evt) = do_event(qw/aevt quit/, $app);
|
||||
}
|
||||
|
||||
|
||||
sub _build ($;$) {
|
||||
my($evt);
|
||||
if ($_[1]) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
|
||||
AEPrint($_[0]) . '}';
|
||||
$evt = do_event(qw/CWIE MAKE/, $app, $prm, $_[1]);
|
||||
} else {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
$evt = do_event(qw/CWIE MAKE/, $app, $prm);
|
||||
}
|
||||
}
|
||||
|
||||
sub _remove_object ($;$) {
|
||||
my($evt);
|
||||
if ($_[1]) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
|
||||
AEPrint($_[0]) . '}';
|
||||
$evt = do_event(qw/CWIE RMOB/, $app, $prm, $_[1]);
|
||||
} else {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
$evt = do_event(qw/CWIE RMOB/, $app, $prm);
|
||||
}
|
||||
}
|
||||
|
||||
sub _open_file ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(alis), " .
|
||||
q"seld:TEXT(@), from:'null'()}";
|
||||
|
||||
do_event(qw/aevt odoc/, $app, $prm, $_[0]);
|
||||
}
|
||||
|
||||
sub import_project ($$) {
|
||||
my($xml_file, $project_path) = @_;
|
||||
|
||||
my($prm) = "kocl:type(PRJD), rtyp:TEXT(@), data:TEXT(@), &subj:'null'()";
|
||||
|
||||
my($evt) = do_event(qw/core crel/, $app, $prm, $project_path, $xml_file);
|
||||
my($result) = _get_event_result($evt);
|
||||
|
||||
if ($result eq "") {
|
||||
_close(_get_project($project_path));
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
sub export_project ($$) {
|
||||
my($project_path, $xml_out_path) = @_;
|
||||
my($p, $project_was_closed);
|
||||
|
||||
$project_was_closed = 0;
|
||||
while (1) {
|
||||
$p = _get_project($project_path);
|
||||
if (!$p) {
|
||||
if ($project_was_closed) {
|
||||
print "### Error - request for project document failed after opening\n";
|
||||
die "### possibly CW bug: be sure to close your Find window\n";
|
||||
}
|
||||
$project_was_closed = 1;
|
||||
_open_file($project_path);
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
# avoid problems with the Project Messages window
|
||||
_close_named_window("Project Messages");
|
||||
|
||||
my($prm) =
|
||||
q"'----':obj {form:indx, want:type(PRJD), " .
|
||||
q"seld:1, from:'null'()}, kfil:TEXT(@)";
|
||||
|
||||
my($evt) = do_event(qw/CWIE EXPT/, $app, $prm, $xml_out_path);
|
||||
|
||||
if ($project_was_closed) {
|
||||
$p = _get_project($project_path);
|
||||
_close($p);
|
||||
}
|
||||
|
||||
return _get_event_result($evt);
|
||||
}
|
||||
|
||||
sub _doc_named ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:test, want:type(docu), from:'null'(), " .
|
||||
q"seld:cmpd{relo:'= ', 'obj1':obj {form:prop, want:type" .
|
||||
q"(prop), seld:type(pnam), from:'exmn'()}, 'obj2':TEXT(@)}}";
|
||||
|
||||
my($evt) = do_event(qw/core getd/, $app, $prm, $_[0]);
|
||||
return($evt->{REPLY} eq 'aevt\ansr{}' ? undef : $evt);
|
||||
}
|
||||
|
||||
sub _full_path ($) {
|
||||
my($obj) = $_[0];
|
||||
my($prm) =
|
||||
q"'----':obj {form:prop, want:type(prop), seld:type(FILE), " .
|
||||
q"from:" . AEPrint($_[0]) . q"}, rtyp:type(TEXT)";
|
||||
my($evt) = do_event(qw/core getd/, $app, $prm);
|
||||
|
||||
return MacPerl::MakePath(
|
||||
MacUnpack('fss ', (
|
||||
AEGetParamDesc($evt->{REP}, keyDirectObject()))->data()->get()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
sub _save_errors_window ($) {
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(alis), seld:TEXT(@), from:'null'()}";
|
||||
do_event(qw/MMPR SvMs/, $app, $prm, $_[0]);
|
||||
}
|
||||
|
||||
|
||||
sub _close_errors_window () {
|
||||
return _close_named_window('Errors & Warnings');
|
||||
}
|
||||
|
||||
|
||||
sub _close_named_window ($) {
|
||||
my($window_name) = @_;
|
||||
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(cwin), " .
|
||||
q"seld:TEXT(@), from:'null'()}";
|
||||
|
||||
my($evt) = do_event(qw/core clos/, $app, $prm, $window_name);
|
||||
return($evt->{REPLY} eq 'aevt\ansr{}' ? 1 : 0);
|
||||
}
|
||||
|
||||
sub _close () {
|
||||
my($prm) = q"'----':" . AEPrint($_[0]);
|
||||
do_event(qw/core clos/, $app, $prm);
|
||||
}
|
||||
|
||||
sub _get_dobj ($) {
|
||||
return(AEGetParamDesc($_[0]->{REP}, keyDirectObject()));
|
||||
}
|
||||
|
||||
sub _get_folder ($$) {
|
||||
require 'GUSI.ph';
|
||||
my($prompt, $default) = @_;
|
||||
MacPerl::Choose(
|
||||
GUSI::AF_FILE(), 0, $prompt, '',
|
||||
GUSI::CHOOSE_DIR() + ($default ? &GUSI::CHOOSE_DEFAULT : 0),
|
||||
$default
|
||||
);
|
||||
}
|
||||
|
||||
sub _get_event_result ($)
|
||||
{
|
||||
my($evt) = @_;
|
||||
|
||||
my($result) = $evt->{ERROR};
|
||||
|
||||
if ( $result eq "" && $evt->{ERRNO} != 0 )
|
||||
{
|
||||
$result = "unknown error (".$evt->{ERRNO}.")";
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
sub _save_appath ($$) {
|
||||
|
||||
my($cwd) = cwd(); # remember the current working dir
|
||||
chdir($scriptDir); # change dir to the script dir
|
||||
|
||||
local(*F);
|
||||
open(F, '>' . $_[0]) or die $!;
|
||||
print F $_[1];
|
||||
close(F);
|
||||
|
||||
chdir($cwd); # restore the cwd
|
||||
}
|
||||
|
||||
sub _read_appath ($) {
|
||||
|
||||
my($filepath) = @_;
|
||||
|
||||
my($cwd) = cwd(); # remember the current working dir
|
||||
chdir($scriptDir); # change dir to the script dir
|
||||
|
||||
if (! -e $filepath) {
|
||||
return "";
|
||||
}
|
||||
|
||||
local(*F);
|
||||
open(F, $filepath);
|
||||
my($appath) = <F>;
|
||||
close(F);
|
||||
|
||||
chdir($cwd); # restore the cwd
|
||||
return($appath);
|
||||
}
|
||||
|
||||
|
||||
sub _test ($) {
|
||||
activate($ide_loc_file);
|
||||
my($path) = $_[0];
|
||||
build_project(
|
||||
"${path}modules:xml:macbuild:XML.mcp", '',
|
||||
"${path}build:mac:Mozilla.BuildLog.part"
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
|
||||
=back
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
=over 4
|
||||
|
||||
=item v1.02, September 23, 1998
|
||||
|
||||
Made fixes in finding and saving location of CodeWarrior IDE.
|
||||
|
||||
=item v1.01, June 1, 1998
|
||||
|
||||
Made fixes to C<chdir()> in C<activate()>, made C<activate()> more robust
|
||||
in finding CodeWarrior IDE, added global variable to NOT switch to IDE
|
||||
for each sent event, a few other fixes.
|
||||
|
||||
=item v1.00, May 30, 1998
|
||||
|
||||
First shot
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Chris Nandor F<E<lt>pudge@pobox.comE<gt>>, and the author of the
|
||||
original I<CodeWarriorLib>, Scott Collins F<E<lt>scc@netscape.comE<gt>>.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
BuildProject L<Moz>.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
The contents of this file are subject to the Netscape Public
|
||||
License Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may obtain a copy of
|
||||
the License at http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS
|
||||
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
implied. See the License for the specific language governing
|
||||
rights and limitations under the License.
|
||||
|
||||
The Original Code is Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
=cut
|
||||
@@ -1,573 +0,0 @@
|
||||
#!perl -w
|
||||
package Moz::Jar;
|
||||
|
||||
#
|
||||
# Module for creating jar files, either using a jar manifest, or
|
||||
# simply jarring up folders on disk.
|
||||
#
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
use strict;
|
||||
use Archive::Zip;
|
||||
use File::Path;
|
||||
|
||||
use Mac::Files;
|
||||
|
||||
use Moz::Moz;
|
||||
|
||||
use vars qw( @ISA @EXPORT );
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(
|
||||
CreateJarFileFromDirectory
|
||||
CreateJarFromManifest
|
||||
WriteOutJarFiles
|
||||
SanityCheckJarOptions
|
||||
);
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Add the contents of a directory to the zip file
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub _addDirToJar($$$$)
|
||||
{
|
||||
my($dir, $jar_root, $zip, $compress) = @_;
|
||||
|
||||
opendir(DIR, $dir) or die "Error: Cannot open dir $dir\n";
|
||||
my @files = readdir(DIR);
|
||||
closedir DIR;
|
||||
|
||||
my $unix_jar_root = $jar_root;
|
||||
$unix_jar_root =~ s|:|/|g; # colon to slash conversion
|
||||
|
||||
my $file;
|
||||
|
||||
foreach $file (@files)
|
||||
{
|
||||
my $filepath = $dir.":".$file;
|
||||
|
||||
if (-d $filepath)
|
||||
{
|
||||
print "Adding files to jar from $filepath\n";
|
||||
_addDirToJar($filepath, $jar_root, $zip, $compress);
|
||||
}
|
||||
else
|
||||
{
|
||||
my $member = Archive::Zip::Member->newFromFile($filepath);
|
||||
die "Error: Failed to create zip file member $filepath\n" unless $member;
|
||||
|
||||
my $unixName = $filepath;
|
||||
$unixName =~ s|:|/|g; # colon to slash conversion
|
||||
$unixName =~ s|^$unix_jar_root||; # relativise
|
||||
|
||||
$member->fileName($unixName);
|
||||
|
||||
# print "Adding $file as $unixName\n";
|
||||
|
||||
if ($compress) {
|
||||
$member->desiredCompressionMethod(Archive::Zip::COMPRESSION_DEFLATED);
|
||||
} else {
|
||||
$member->desiredCompressionMethod(Archive::Zip::COMPRESSION_STORED);
|
||||
}
|
||||
|
||||
$zip->addMember($member);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Add the contents of a directory to the zip file
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub CreateJarFileFromDirectory($$$)
|
||||
{
|
||||
my($srcdir, $jarpath, $compress) = @_;
|
||||
|
||||
my $zip = Archive::Zip->new();
|
||||
|
||||
_addDirToJar($srcdir, $srcdir, $zip, $compress);
|
||||
|
||||
print "Saving zip file...\n";
|
||||
my $status = $zip->writeToFileNamed($jarpath);
|
||||
if ($status == 0) {
|
||||
print "Zipping completed successfully\n";
|
||||
} else {
|
||||
print "Error saving zip file\n";
|
||||
}
|
||||
|
||||
# set the file type/creator to something reasonable
|
||||
MacPerl::SetFileInfo("ZIP ", "ZIP ", $jarpath);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# printZipContents
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub printZipContents($)
|
||||
{
|
||||
my($zip) = @_;
|
||||
|
||||
my(@members) = $zip->memberNames();
|
||||
|
||||
print "Zip contains:\n";
|
||||
|
||||
my($member);
|
||||
foreach $member (@members)
|
||||
{
|
||||
print " $member\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# safeSaveJarFile
|
||||
#
|
||||
# Archive::Zip has a problem where you cannot save a zip file on top of
|
||||
# an existing zip file that it has open, because it holds references
|
||||
# into that zip. So we have to save to a temp file, then do a swap.
|
||||
#
|
||||
# Note that the zip will become invalid after this operation.
|
||||
# If you want to do further operations on it, you'll have to reread it.
|
||||
#-------------------------------------------------------------------------------
|
||||
sub safeSaveJarFile($$)
|
||||
{
|
||||
my($zip, $full_dest_path) = @_;
|
||||
|
||||
my($temp_file_name) = $full_dest_path."_temp";
|
||||
|
||||
($zip->writeToFileNamed($temp_file_name) == Archive::Zip::AZ_OK) || die "Error: died writing jar to temp file $temp_file_name\n";
|
||||
|
||||
unlink $full_dest_path;
|
||||
|
||||
(rename $temp_file_name, $full_dest_path) || die "Error: Failed to rename $temp_file_name\n";
|
||||
|
||||
MacPerl::SetFileInfo("ZIP ", "ZIP ", $full_dest_path);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# addToJarFile
|
||||
#
|
||||
# Add a file to a jar file
|
||||
#
|
||||
# Parameters:
|
||||
# 1. Jar ID. Unix path of jar file inside chrome.
|
||||
# 2. Abs path to jar.mn file (i.e. source) (mac breaks)
|
||||
# 3. File source, relative to jar.mn path (mac breaks)
|
||||
# 4. Abs path to the resulting .jar file (mac breaks)
|
||||
# 5. Relative file path within the jar (unix breaks)
|
||||
# 6. Reference to hash of jar files
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub addToJarFile($$$$$$$)
|
||||
{
|
||||
my($jar_id, $jar_man_dir, $file_src, $jar_path, $file_jar_path, $override, $jars) = @_;
|
||||
|
||||
# print "addToJarFile with:\n $jar_man_dir\n $file_src\n $jar_path\n $file_jar_path\n";
|
||||
|
||||
unless ($jar_path =~ m/(.+:)([^:]+)$/) { die "Error: Bad jar path $jar_path\n"; }
|
||||
|
||||
my($target_dir) = $1;
|
||||
my($jar_name) = $2;
|
||||
|
||||
$target_dir =~ s/[^:]+$//;
|
||||
|
||||
# print "¥ $target_dir $jar_name\n";
|
||||
|
||||
# find the source file
|
||||
my($src) = $jar_man_dir.":".$file_src;
|
||||
if ((!-e $src) && ($file_src =~ m/.+:([^:]+)$/)) # src does not exist. Fall back to looking for src in jar.mn dir
|
||||
{
|
||||
$file_src = $1;
|
||||
$src = $jar_man_dir.":".$file_src;
|
||||
|
||||
if (!-e $src) {
|
||||
die "Error: Can't find chrome file $src\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($main::options{chrome_jars})
|
||||
{
|
||||
my($zip) = $jars->{$jar_id};
|
||||
unless ($zip) { die "Error: Can't find Zip entry for $jar_id\n"; }
|
||||
|
||||
# print "Adding $file_src to jar file $jar_path at $file_jar_path\n";
|
||||
my($member) = Archive::Zip::Member->newFromFile($src);
|
||||
unless ($member) { die "Error: Failed to create zip file member $src\n"; }
|
||||
|
||||
$member->fileName($file_jar_path);
|
||||
|
||||
my($compress) = 1;
|
||||
if ($compress) {
|
||||
$member->desiredCompressionMethod(Archive::Zip::COMPRESSION_DEFLATED);
|
||||
$member->desiredCompressionLevel(Archive::Zip::COMPRESSION_LEVEL_DEFAULT); # defaults to 6
|
||||
} else {
|
||||
$member->desiredCompressionMethod(Archive::Zip::COMPRESSION_STORED);
|
||||
}
|
||||
|
||||
my($old_member) = $zip->memberNamed($file_jar_path);
|
||||
|
||||
if ($override)
|
||||
{
|
||||
if ($old_member)
|
||||
{
|
||||
# print "Overriding $file_jar_path in jar file $jar_id\n";
|
||||
# need to compare mod dates or use the + here
|
||||
$zip->removeMember($old_member);
|
||||
}
|
||||
|
||||
$zip->addMember($member);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($old_member)
|
||||
{
|
||||
#compare dates here
|
||||
my($member_moddate) = $old_member->lastModTime();
|
||||
my($file_moddate) = GetFileModDate($src);
|
||||
|
||||
if ($file_moddate > $member_moddate)
|
||||
{
|
||||
print "Updating older file $file_jar_path in $jar_id\n";
|
||||
$zip->removeMember($old_member);
|
||||
$zip->addMember($member);
|
||||
}
|
||||
else
|
||||
{
|
||||
print "File $file_jar_path in $jar_id is more recent. Not updating.\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$zip->addMember($member);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($main::options{chrome_files}) # we install raw files too
|
||||
{
|
||||
my($rel_path) = $file_jar_path;
|
||||
$rel_path =~ s|/|:|g; # slash to colons
|
||||
|
||||
my($dir_name) = $jar_name;
|
||||
$dir_name =~ s/\.jar$//;
|
||||
|
||||
my($dst) = $target_dir.$dir_name.":".$rel_path;
|
||||
|
||||
# print "Aliassing $src\n to\n$dst\n";
|
||||
if ($override)
|
||||
{
|
||||
unlink $dst;
|
||||
MakeAlias($src, $dst); # don't check errors, otherwise we fail on replacement
|
||||
}
|
||||
else
|
||||
{
|
||||
if (-e $dst)
|
||||
{
|
||||
#compare dates here
|
||||
my($dst_moddate) = GetFileModDate($dst);
|
||||
my($file_moddate) = GetFileModDate($src);
|
||||
|
||||
if ($file_moddate > $dst_moddate)
|
||||
{
|
||||
print "Updating older file $rel_path in $dir_name\n";
|
||||
unlink $dst;
|
||||
MakeAlias($src, $dst);
|
||||
}
|
||||
else
|
||||
{
|
||||
print "File $file_jar_path in $jar_id is more recent. Not updating.\n";
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
MakeAlias($src, $dst);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# setupJarFile
|
||||
#
|
||||
# setup a zip for writing
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub setupJarFile($$$)
|
||||
{
|
||||
my($jar_id, $dest_path, $jar_hash) = @_;
|
||||
|
||||
# print "Creating jar file $jar_id at $jar_path\n";
|
||||
|
||||
my($jar_file) = $jar_id;
|
||||
$jar_file =~ s|/|:|g; # slash to colons
|
||||
my($full_jar_path) = full_path_to($dest_path.":".$jar_file);
|
||||
|
||||
if ($main::options{chrome_jars})
|
||||
{
|
||||
my($zip) = $jar_hash->{$jar_id};
|
||||
if (!$zip) # if we haven't made it already, do so
|
||||
{
|
||||
my($zip) = Archive::Zip->new();
|
||||
$jar_hash->{$jar_id} = $zip;
|
||||
|
||||
# does the jar file exist already? If so, read it in
|
||||
if (-e $full_jar_path)
|
||||
{
|
||||
print "Reading in jar file $jar_id\n";
|
||||
if ($zip->read($full_jar_path) != Archive::Zip::AZ_OK) { die "Error: Failed to re-read $full_jar_path\n"; }
|
||||
|
||||
# printZipContents($zip);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# installing files.
|
||||
# nothing to do. MakeAlias creates dirs as needed.
|
||||
|
||||
# add this jar to the list
|
||||
$jar_hash->{$jar_id} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# closeJarFile
|
||||
#
|
||||
# We're done with this jar file _for this jar.mn_. We may add more entries
|
||||
# to it later, so keep it open in the hash.
|
||||
#-------------------------------------------------------------------------------
|
||||
sub closeJarFile($$)
|
||||
{
|
||||
my($jar_path, $jar_hash) = @_;
|
||||
|
||||
# print "Closing jar file $jar_path\n";
|
||||
|
||||
if ($main::options{chrome_jars})
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
# installing files.
|
||||
# nothing to do
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# WriteOutJarFiles
|
||||
#
|
||||
# Now we dump out the jars
|
||||
#-------------------------------------------------------------------------------
|
||||
sub WriteOutJarFiles($$)
|
||||
{
|
||||
my($chrome_dir, $jars) = @_;
|
||||
|
||||
unless ($main::options{chrome_jars}) { return; }
|
||||
|
||||
my($full_chrome_path) = full_path_to($chrome_dir);
|
||||
|
||||
my($key);
|
||||
foreach $key (keys %$jars)
|
||||
{
|
||||
my($zip) = $jars->{$key};
|
||||
|
||||
my($rel_path) = $key;
|
||||
$rel_path =~ s/\//:/g;
|
||||
|
||||
my($output_path) = $full_chrome_path.":".$rel_path;
|
||||
|
||||
print "Writing zip file $key to $output_path\n";
|
||||
|
||||
# ensure the target dirs exist
|
||||
my($path) = $output_path;
|
||||
$path =~ s/[^:]+$//;
|
||||
mkpath($path);
|
||||
|
||||
# unlink $output_path; # remove any existing jar
|
||||
safeSaveJarFile($zip, $output_path);
|
||||
# $zip is invalid after this operation, so nuke it here
|
||||
$jars->{$key} = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# registerChromePackage
|
||||
#
|
||||
# Enter a chrome package into the installed-chrome.txt file
|
||||
#-------------------------------------------------------------------------------
|
||||
sub registerChromePackage($$$$$$)
|
||||
{
|
||||
my($jar_file, $file_path, $chrome_dir, $jar_hash, $chrome_type, $pkg_name) = @_;
|
||||
|
||||
my($manifest_subdir) = $jar_file;
|
||||
$manifest_subdir =~ s/:/\//g;
|
||||
|
||||
my($chrome_entry);
|
||||
|
||||
if ($main::options{use_jars}) {
|
||||
$chrome_entry = "$chrome_type,install,url,jar:resource:/chrome/$manifest_subdir!/$chrome_type/$pkg_name";
|
||||
} else {
|
||||
$manifest_subdir =~ s/\.jar$//;
|
||||
$chrome_entry = "$chrome_type,install,url,resource:/chrome/$manifest_subdir/$chrome_type/$pkg_name";
|
||||
}
|
||||
|
||||
# print "Entering $chrome_entry in installed-chrome.txt\n";
|
||||
|
||||
# ensure chrome_dir exists
|
||||
mkpath($chrome_dir);
|
||||
|
||||
my($inst_chrome) = ${chrome_dir}.":installed-chrome.txt";
|
||||
|
||||
if (open(CHROMEFILE, "<$inst_chrome")) {
|
||||
while (<CHROMEFILE>) {
|
||||
chomp;
|
||||
if ($_ eq $chrome_entry) {
|
||||
# $chrome_entry already appears in installed-chrome.txt file
|
||||
# just update the mod date
|
||||
my $now = time;
|
||||
utime($now, $now, $inst_chrome) || die "Error: Couldn't touch $inst_chrome";
|
||||
print "+++ updating chrome $inst_chrome\n+++\t\t$chrome_entry\n";
|
||||
close(CHROMEFILE) || die "Error: can't close $inst_chrome: $!";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
close(CHROMEFILE) || die "Error: can't close $inst_chrome: $!";
|
||||
}
|
||||
open(CHROMEFILE, ">>${inst_chrome}") || die "Error: Failed to open $inst_chrome\n";
|
||||
print(CHROMEFILE "${chrome_entry}\n");
|
||||
close(CHROMEFILE) || die "Error: Failed to close $inst_chrome\n";
|
||||
print "+++ adding chrome $inst_chrome\n+++\t\t$chrome_entry\n";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Create or add to a jar file from a jar.mn file.
|
||||
# Both arguments are relative to the mozilla root dir.
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub CreateJarFromManifest($$$)
|
||||
{
|
||||
my($jar_man_path, $dest_path, $jars) = @_;
|
||||
|
||||
if ($main::options{chrome_jars}) {
|
||||
print "Jarring from $jar_man_path\n";
|
||||
}
|
||||
if ($main::options{chrome_files}) {
|
||||
print "Installing files from $jar_man_path\n";
|
||||
}
|
||||
|
||||
$jar_man_path = full_path_to($jar_man_path);
|
||||
$dest_path = full_path_to($dest_path);
|
||||
|
||||
# if the jars hash is empty, nuke installed-chrome.txt
|
||||
if (! scalar(%$jars))
|
||||
{
|
||||
print "Nuking installed-chrome.txt\n";
|
||||
my($installed_chrome) = $dest_path.":installed-chrome.txt";
|
||||
# unlink $installed_chrome;
|
||||
}
|
||||
|
||||
my $jar_man_dir = "";
|
||||
my $jar_man_file = "";
|
||||
|
||||
if ($jar_man_path =~ /(.+):([^:]+)$/)
|
||||
{
|
||||
$jar_man_dir = $1; # no trailing :
|
||||
$jar_man_file = $2;
|
||||
}
|
||||
|
||||
# Keep a hash of jar files, keyed on relative jar path (e.g. "packages/core.jar")
|
||||
# Entries are open Archive::Zips (if zipping), and installed-chrome entries.
|
||||
|
||||
my($jar_id) = ""; # Current foo/bar.jar from jar.mn file
|
||||
my($jar_file) = ""; # relative path to jar file (from $dest_path), with mac separators
|
||||
my($full_jar_path);
|
||||
|
||||
open(FILE, "<$jar_man_path") || die "Error: could not open \"$jar_man_path\": $!";
|
||||
while (<FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
# print "$line\n";
|
||||
|
||||
if ($line =~ /^\s*\#.*$/) { # skip comments
|
||||
next;
|
||||
}
|
||||
|
||||
if ($line =~/^([\w\d.\-\_\\\/]+)\:\s*$/) # line start jar file entries
|
||||
{
|
||||
$jar_id = $1;
|
||||
$jar_file = $jar_id;
|
||||
$jar_file =~ s|/|:|g; # slash to colons
|
||||
$full_jar_path = $dest_path.":".$jar_file;
|
||||
|
||||
setupJarFile($jar_id, $dest_path, $jars);
|
||||
|
||||
}
|
||||
elsif ($line =~ /^(\+?)\s+([\w\d.\-\_\\\/]+)\s*(\([\w\d.\-\_\\\/]+\))?$\s*/) # jar file entry
|
||||
{
|
||||
my($override) = ($1 eq "+");
|
||||
my($file_dest) = $2;
|
||||
my($file_src) = $3;
|
||||
|
||||
if ($file_src) {
|
||||
$file_src = substr($file_src, 1, -1); #strip the ()
|
||||
} else {
|
||||
$file_src = $file_dest;
|
||||
}
|
||||
|
||||
$file_src =~ s|/|:|g;
|
||||
|
||||
if ($jar_file ne "") # if jar is open, add to jar
|
||||
{
|
||||
if ($file_dest =~ /([\w\d.\-\_]+)\/([\w\d.\-\_\\\/]+)contents.rdf/)
|
||||
{
|
||||
my $chrome_type = $1;
|
||||
my $pkg_name = $2;
|
||||
registerChromePackage($jar_file, $file_dest, $dest_path, $jars, $chrome_type, $pkg_name);
|
||||
}
|
||||
|
||||
addToJarFile($jar_id, $jar_man_dir, $file_src, $full_jar_path, $file_dest, $override, $jars);
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Error: bad jar.mn format at $line\n";
|
||||
}
|
||||
}
|
||||
elsif ($line =~ /^\s*$/ ) # blank line
|
||||
{
|
||||
if ($jar_file ne "") #if a jar file is open, close it
|
||||
{
|
||||
closeJarFile($full_jar_path, $jars);
|
||||
|
||||
$jar_file = "";
|
||||
$full_jar_path = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close(FILE);
|
||||
|
||||
if ($jar_file ne "") #if a jar file is open, close it
|
||||
{
|
||||
closeJarFile($full_jar_path, $jars);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,228 +0,0 @@
|
||||
#!perl -w
|
||||
package Moz::MacCVS;
|
||||
|
||||
# package Mac::Apps::MacCVS; this should really be the name of the package
|
||||
# but due to our directory hierarchy in mozilla, I am not doing it
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
use strict;
|
||||
use Exporter;
|
||||
|
||||
use vars qw($VERSION @ISA @EXPORT);
|
||||
|
||||
use Cwd;
|
||||
|
||||
use File::Basename;
|
||||
|
||||
use Mac::StandardFile;
|
||||
use Mac::AppleEvents;
|
||||
use Mac::AppleEvents::Simple;
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(new describe checkout update);
|
||||
$VERSION = "1.00";
|
||||
|
||||
# If you want to understand the gobbldeygook that's used to build Apple Events,
|
||||
# you should start by reading the AEGizmos documentation.
|
||||
|
||||
|
||||
# Architecture:
|
||||
# cvs session object:
|
||||
# name - session name
|
||||
# session_file - session file
|
||||
#
|
||||
#
|
||||
|
||||
my($last_error) = 0;
|
||||
my($gAppSig) = 'Mcvs'; # MacCVS Pro
|
||||
|
||||
#
|
||||
# utility routines
|
||||
#
|
||||
|
||||
|
||||
sub _checkForEventError($)
|
||||
{
|
||||
my($evt) = @_;
|
||||
|
||||
if ($evt->{ERRNO} != 0)
|
||||
{
|
||||
print STDERR "Error. Script returned '$evt->{ERROR} (error $evt->{ERRNO})\n";
|
||||
$last_error = $evt->{ERRNO};
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1; # success
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Session object methods
|
||||
#
|
||||
|
||||
sub new
|
||||
{
|
||||
my ( $proto, $session_file) = @_;
|
||||
my $class = ref($proto) || $proto;
|
||||
my $self = {};
|
||||
|
||||
if ( defined($session_file) && ( -e $session_file) )
|
||||
{
|
||||
$self->{"name"} = basename( $session_file );
|
||||
$self->{"session_file"} = $session_file;
|
||||
bless $self, $class;
|
||||
return $self;
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR "MacCVS->new cvs file < $session_file > does not exist\n";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
# makes sure that the session is open
|
||||
# assertSessionOpen()
|
||||
# returns 1 on success
|
||||
sub assertSessionOpen()
|
||||
{
|
||||
my ($self) = shift;
|
||||
|
||||
$last_error = 0;
|
||||
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(alis), seld:TEXT(@), from:'null'()}";
|
||||
|
||||
my($evt) = do_event(qw/aevt odoc/, $gAppSig, $prm, $self->{session_file});
|
||||
return _checkForEventError($evt);
|
||||
}
|
||||
|
||||
# prints the cvs object, used mostly for debugging
|
||||
sub describe
|
||||
{
|
||||
my($self) = shift;
|
||||
$last_error = 0;
|
||||
print "MacCVS:: name: ", $self->{name}, " session file: ", $self->{session_file}, "\n";
|
||||
}
|
||||
|
||||
# checkout( self, module, revision, date)
|
||||
# MacCVS checkout command
|
||||
# returns 1 on success.
|
||||
sub checkout()
|
||||
{
|
||||
my($self, $module, $revision, $date ) = @_;
|
||||
unless( defined ($module) ) { $module = ""; } # get rid of the pesky undefined warnings
|
||||
unless( defined ($revision) ) { $revision = ""; }
|
||||
unless( defined ($date) ) { $date = ""; }
|
||||
|
||||
$last_error = 0;
|
||||
|
||||
$self->assertSessionOpen() || die "Error: failed to open MacCVS session file at $self->{session_file}\n";
|
||||
|
||||
my($revstring) = ($revision ne "") ? $revision : "(none)";
|
||||
my($datestring) = ($date ne "") ? $date : "(none)";
|
||||
|
||||
print "Checking out $module with revision $revstring, date $datestring\n";
|
||||
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(docu), seld:TEXT(@), from:'null'()}, ".
|
||||
q"modl:'TEXT'(@), tagr:'TEXT'(@), tagd:'TEXT'(@) ";
|
||||
|
||||
my($evt) = do_event(qw/MCvs cout/, $gAppSig, $prm, $self->{name}, $module, $revision, $date);
|
||||
return _checkForEventError($evt);
|
||||
}
|
||||
|
||||
|
||||
# update( self, branch tag, list of paths)
|
||||
# MacCVS udate command
|
||||
# returns 1 on success.
|
||||
# NOTE: MacCVS Pro does not correctly support this stuff yet (as of version 2.7d5).
|
||||
sub update()
|
||||
{
|
||||
my($self, $branch, $paths ) = @_;
|
||||
|
||||
$last_error = 0;
|
||||
|
||||
$self->assertSessionOpen() || die "Error: failed to open MacCVS session file at $self->{session_file}\n";
|
||||
|
||||
if ($branch eq "HEAD") {
|
||||
$branch = "";
|
||||
}
|
||||
|
||||
my($paths_list) = "";
|
||||
|
||||
my($path);
|
||||
foreach $path (@$paths)
|
||||
{
|
||||
if ($paths_list ne "") {
|
||||
$paths_list = $paths_list.", ";
|
||||
}
|
||||
|
||||
$paths_list = $paths_list."Ò".$path."Ó";
|
||||
}
|
||||
|
||||
my($prm) =
|
||||
q"'----':obj {form:name, want:type(docu), seld:TEXT(@), from:'null'()}, ".
|
||||
q"tagr:'TEXT'(@), tFls:[";
|
||||
|
||||
$prm = $prm.$paths_list."]";
|
||||
|
||||
my($evt) = do_event(qw/MCvs updt/, $gAppSig, $prm, $self->{name}, $branch);
|
||||
return _checkForEventError($evt);
|
||||
};
|
||||
|
||||
|
||||
sub getLastError()
|
||||
{
|
||||
return $last_error;
|
||||
}
|
||||
|
||||
1;
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
MacCVS - Interface to MacCVS
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use MacCVS;
|
||||
$session = MacCVS->new( <session_file_path>) || die "cannot create session";
|
||||
$session->checkout([module] [revision] [date]) || die "Could not check out";
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This is a MacCVS interface for talking to MacCVS Pro client.
|
||||
MacCVSSession is the class used to manipulate the session
|
||||
|
||||
=item new
|
||||
MacCVS->new( <cvs session file path>);
|
||||
|
||||
Creates a new session. Returns undef on failure.
|
||||
|
||||
=item checkout( <module> [revision] [date] )
|
||||
|
||||
cvs checkout command. Revision and date are optional
|
||||
returns 0 on failure
|
||||
|
||||
=cut
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
=over
|
||||
|
||||
=item MacCVS Home Page
|
||||
|
||||
http://www.maccvs.org/
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Aleks Totic atotic@netscape.com
|
||||
Simon Fraser sfraser@netscape.com
|
||||
|
||||
=cut
|
||||
|
||||
__END__
|
||||
@@ -1,603 +0,0 @@
|
||||
=head1 NAME
|
||||
|
||||
B<Moz> - routines for automating CodeWarrior builds, and some extra-curricular
|
||||
activities related to building Mozilla
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Moz;
|
||||
|
||||
OpenErrorLog(":::BuildLog");
|
||||
StopForErrors();
|
||||
|
||||
$Moz::QUIET = 1;
|
||||
InstallFromManifest(":projects:MANIFEST", $dist_dir);
|
||||
|
||||
BuildProjectClean(":projects:SomeProject.mcp", "SomeTarget");
|
||||
MakeAlias(":projects:SomeProject.shlb", $dist_dir);
|
||||
|
||||
DontStopForErrors();
|
||||
|
||||
BuildProject(":projects:SomeOtherProject.mcp", "SomeTarget");
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
B<Moz> comprises the routines needed to slap CodeWarrior around, force it
|
||||
to build a sequence of projects, report the results, and a few other things.
|
||||
This module should only contain functions that are generic to any build,
|
||||
not just the Mozilla build.
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
package Moz::Moz;
|
||||
require Exporter;
|
||||
|
||||
use Cwd;
|
||||
|
||||
use File::Copy;
|
||||
use File::Path;
|
||||
use File::Basename;
|
||||
|
||||
use Mac::Types;
|
||||
use Mac::Events;
|
||||
use Mac::Processes;
|
||||
|
||||
use ExtUtils::Manifest 'maniread';
|
||||
|
||||
use Moz::CodeWarriorLib;
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
|
||||
@EXPORT = qw( LaunchCodeWarrior
|
||||
GetCodeWarriorRelativePath
|
||||
current_directory
|
||||
full_path_to
|
||||
DoBuildProject
|
||||
ImportXMLProject
|
||||
ExportProjectToXML
|
||||
OpenErrorLog
|
||||
MakeAlias
|
||||
GetFileModDate
|
||||
StopForErrors
|
||||
DontStopForErrors
|
||||
InstallFromManifest
|
||||
InstallResources
|
||||
RedirectOutputToFile
|
||||
Delay
|
||||
ActivateApplication
|
||||
IsProcessRunning);
|
||||
|
||||
@EXPORT_OK = qw(CloseErrorLog QUIET);
|
||||
|
||||
|
||||
sub current_directory()
|
||||
{
|
||||
my $current_directory = cwd();
|
||||
chop($current_directory) if ( $current_directory =~ m/:$/ );
|
||||
return $current_directory;
|
||||
}
|
||||
|
||||
sub full_path_to($)
|
||||
{
|
||||
my ($path) = @_;
|
||||
if ( $path =~ m/^[^:]+$/ )
|
||||
{
|
||||
$path = ":" . $path;
|
||||
}
|
||||
|
||||
if ( $path =~ m/^:/ )
|
||||
{
|
||||
$path = current_directory() . $path;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
$logging = 0;
|
||||
$recent_errors_file = "";
|
||||
$stop_on_1st_error = 1;
|
||||
$QUIET = 0;
|
||||
|
||||
|
||||
|
||||
=head2 Logging all the errors and warnings - C<OpenErrorLog($log_file)>, C<CloseErrorLog()>
|
||||
|
||||
The warnings and errors generated in the course of building projects can be logged to a file.
|
||||
Tinderbox uses this facility to show why a remote build failed.
|
||||
|
||||
Logging is off by default.
|
||||
Start logging at any point in your build process with C<OpenErrorLog($log_file)>.
|
||||
Stop with C<CloseErrorLog()>.
|
||||
You never need to close the log explicitly, unless you want to just log a couple of projects in the middle of a big list.
|
||||
C<CloseErrorLog()> is not exported by default.
|
||||
|
||||
=cut
|
||||
|
||||
sub CloseErrorLog()
|
||||
{
|
||||
if ( $logging )
|
||||
{
|
||||
close(ERROR_LOG);
|
||||
$logging = 0;
|
||||
StopForErrors() if $stop_on_1st_error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub OpenErrorLog($)
|
||||
{
|
||||
my ($log_file) = @_;
|
||||
|
||||
CloseErrorLog();
|
||||
if ( $log_file )
|
||||
{
|
||||
$log_file = full_path_to($log_file);
|
||||
|
||||
open(ERROR_LOG, ">$log_file") || die "Error: Can't open $log_file\n";
|
||||
MacPerl::SetFileInfo("CWIE", "TEXT", $log_file);
|
||||
|
||||
$log_file =~ m/.+:(.+)/;
|
||||
$recent_errors_file = full_path_to("$1.part");
|
||||
$logging = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
=head2 Stopping before it's too late - C<StopForErrors()>, C<DontStopForErrors()>
|
||||
|
||||
When building a long list of projects, you decide whether to continue building subsequent projects when one fails.
|
||||
By default, your build script will C<die> after the first project that generates an error while building.
|
||||
Change this behavior with C<DontStopForErrors()>.
|
||||
Re-enable it with C<StopForErrors()>.
|
||||
|
||||
=cut
|
||||
|
||||
sub StopForErrors()
|
||||
{
|
||||
$stop_on_1st_error = 1;
|
||||
|
||||
# Can't stop for errors unless we notice them.
|
||||
# Can't notice them unless we are logging.
|
||||
# If the user didn't explicitly request logging, log to a temporary file.
|
||||
|
||||
if ( ! $recent_errors_file )
|
||||
{
|
||||
OpenErrorLog("${TMPDIR}BuildResults");
|
||||
}
|
||||
}
|
||||
|
||||
sub DontStopForErrors()
|
||||
{
|
||||
$stop_on_1st_error = 0;
|
||||
}
|
||||
|
||||
sub log_message($)
|
||||
{
|
||||
if ( $logging )
|
||||
{
|
||||
my ($message) = @_;
|
||||
print ERROR_LOG $message;
|
||||
}
|
||||
}
|
||||
|
||||
sub log_message_with_time($)
|
||||
{
|
||||
if ( $logging )
|
||||
{
|
||||
my ($message) = @_;
|
||||
my $time_stamp = localtime();
|
||||
log_message("$message ($time_stamp)\n");
|
||||
}
|
||||
}
|
||||
|
||||
sub log_recent_errors($)
|
||||
{
|
||||
my ($project_name) = @_;
|
||||
my $found_errors = 0;
|
||||
|
||||
if ( $logging )
|
||||
{
|
||||
open(RECENT_ERRORS, "<$recent_errors_file");
|
||||
|
||||
while( <RECENT_ERRORS> )
|
||||
{
|
||||
if ( /^Error/ || /^CouldnÕt find project file/ || /^Link Error/ )
|
||||
{
|
||||
# if (!$found_errors)
|
||||
# print $_;
|
||||
$found_errors = 1;
|
||||
}
|
||||
print ERROR_LOG $_;
|
||||
}
|
||||
|
||||
close(RECENT_ERRORS);
|
||||
unlink("$recent_errors_file");
|
||||
}
|
||||
|
||||
if ( $stop_on_1st_error && $found_errors )
|
||||
{
|
||||
print ERROR_LOG "### Build failed.\n";
|
||||
die "### Errors encountered building \"$project_name\".\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub DoBuildProject($$$)
|
||||
{
|
||||
my ($project_path, $target_name, $clean_build) = @_;
|
||||
$project_path = full_path_to($project_path);
|
||||
|
||||
# $project_path =~ m/.+:(.+)/;
|
||||
# my $project_name = $1;
|
||||
|
||||
log_message_with_time("### Building \"$project_path\"");
|
||||
|
||||
# Check that the given project exists
|
||||
if (! -e $project_path)
|
||||
{
|
||||
print ERROR_LOG "### Build failed.\n";
|
||||
die "### Can't find project file \"$project_path\".\n";
|
||||
}
|
||||
|
||||
print "Building \"$project_path\[$target_name\]\"\n";
|
||||
|
||||
$had_errors = Moz::CodeWarriorLib::build_project(
|
||||
$project_path, $target_name, $recent_errors_file, $clean_build
|
||||
);
|
||||
WaitNextEvent();
|
||||
|
||||
# $had_errors =
|
||||
#MacPerl::DoAppleScript(<<END_OF_APPLESCRIPT);
|
||||
# tell (load script file "$CodeWarriorLib") to BuildProject("$project_path", "$project_name", "$target_name", "$recent_errors_file", $clean_build)
|
||||
#END_OF_APPLESCRIPT
|
||||
|
||||
# Append any errors to the globally accumulated log file
|
||||
# if ( $had_errors ) # Removed this test, because we want warnings, too. -- jrm
|
||||
{
|
||||
log_recent_errors($project_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub ImportXMLProject($$)
|
||||
{
|
||||
my ($xml_path, $project_path) = @_;
|
||||
|
||||
# my ($codewarrior_ide_name) = Moz::CodeWarriorLib::getCodeWarriorIDEName();
|
||||
# my $ascript = <<EOS;
|
||||
# tell application "$codewarrior_ide_name"
|
||||
# make new (project document) as ("$project_path") with data ("$xml_path")
|
||||
# end tell
|
||||
#EOS
|
||||
# print $ascript."\n";
|
||||
# my($result) = MacPerl::DoAppleScript($ascript);
|
||||
# unless ($result) { die "Error: ImportXMLProject AppleScript failed $^E $result\n"; }
|
||||
#
|
||||
|
||||
my($import_error) = Moz::CodeWarriorLib::import_project($xml_path, $project_path);
|
||||
if ($import_error ne "") {
|
||||
die "Error: ImportXMLProject failed with error $import_error\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub ExportProjectToXML($$)
|
||||
{
|
||||
my ($project_path, $xml_path) = @_;
|
||||
|
||||
my (@suffix_list) = (".mcp");
|
||||
my ($project_name, $project_dir, $suffix) = fileparse($project_path, @suffix_list);
|
||||
if ($suffix eq "") { die "Project: $project_path doesn't look like a project file.\n"; }
|
||||
|
||||
if (-e $xml_path) {
|
||||
print "$xml_path exists - not exporting $project_path\n";
|
||||
}
|
||||
else {
|
||||
print "Exporting $project_path to $xml_path\n";
|
||||
my($export_error) = Moz::CodeWarriorLib::export_project($project_path, $xml_path);
|
||||
if ($export_error ne "") {
|
||||
die "Error: export_project failed with error '$export_error'\n";
|
||||
}
|
||||
|
||||
if (! -e $xml_path) {
|
||||
die "Error: XML export to $xml_path failed\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
=head2 Miscellaneous
|
||||
|
||||
C<MakeAlias($old_file, $new_file)> functions like C<symlink()>, except with better argument defaulting and more explicit error messages.
|
||||
|
||||
=cut
|
||||
|
||||
sub MakeAlias($$)
|
||||
{
|
||||
my ($old_file, $new_file) = @_;
|
||||
|
||||
# if the directory to hold $new_file doesn't exist, create it
|
||||
if ( ($new_file =~ m/(.+:)/) && !-d $1 )
|
||||
{
|
||||
mkpath($1);
|
||||
}
|
||||
|
||||
# if a leaf name wasn't specified for $new_file, use the leaf from $old_file
|
||||
if ( ($new_file =~ m/:$/) && ($old_file =~ m/.+:(.+)/) )
|
||||
{
|
||||
$new_file .= $1;
|
||||
}
|
||||
|
||||
my $message = "Can't create a Finder alias (at \"$new_file\")\n for \"$old_file\"; because ";
|
||||
|
||||
die "Error: $message \"$old_file\" doesn't exist.\n" unless -e $old_file;
|
||||
die "Error: $message I won't replace an existing (non-alias) file with an alias.\n" if ( -e $new_file && ! -l $new_file );
|
||||
|
||||
# now: $old_file exists; $new_file doesn't (or else, is an alias already)
|
||||
|
||||
if ( -l $new_file )
|
||||
{
|
||||
# ...then see if it already points to $old_file
|
||||
my $current_target = full_path_to(readlink($new_file));
|
||||
my $new_target = full_path_to($old_file);
|
||||
|
||||
return if ( $current_target eq $new_target );
|
||||
# if the desired alias already exists and points to the right thing, then we're done
|
||||
|
||||
unlink $new_file;
|
||||
}
|
||||
|
||||
symlink($old_file, $new_file) || die "Error: $message symlink returned an unexpected error.\n";
|
||||
}
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
C<InstallFromManifest()>
|
||||
|
||||
=cut
|
||||
|
||||
sub InstallFromManifest($;$$)
|
||||
{
|
||||
my ($manifest_file, $dest_dir, $flat) = @_;
|
||||
|
||||
$flat = 0 unless defined($flat); # if $flat, all rel. paths in MANIFEST get aliased to the root of $dest_dir
|
||||
|
||||
$dest_dir ||= ":";
|
||||
|
||||
$manifest_file =~ m/(.+):/;
|
||||
my $source_dir = $1;
|
||||
|
||||
chop($dest_dir) if $dest_dir =~ m/:$/;
|
||||
|
||||
#Mac::Events->import();
|
||||
WaitNextEvent();
|
||||
if ($flat)
|
||||
{
|
||||
print "Doing manifest on \"$manifest_file\" FLAT\n" unless $QUIET;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Doing manifest on \"$manifest_file\"\n" unless $QUIET;
|
||||
}
|
||||
|
||||
my $read = maniread(full_path_to($manifest_file));
|
||||
foreach $file (keys %$read)
|
||||
{
|
||||
next unless $file;
|
||||
|
||||
$subdir = ":";
|
||||
if (!$flat && ($file =~ /:.+:/ ))
|
||||
{
|
||||
$subdir = $&;
|
||||
}
|
||||
|
||||
$file = ":$file" unless $file =~ m/^:/;
|
||||
MakeAlias("$source_dir$file", "$dest_dir$subdir");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
=pod
|
||||
|
||||
C<InstallResources()>
|
||||
|
||||
=cut
|
||||
|
||||
# parameters are path to MANIFEST file, destination dir, true (to make copies) or false (to make aliases)
|
||||
sub InstallResources($;$;$)
|
||||
{
|
||||
my ($manifest_file, $dest_dir, $copy_files) = @_;
|
||||
|
||||
$dest_dir ||= ":";
|
||||
mkpath($dest_dir) if !-d $dest_dir;
|
||||
|
||||
$manifest_file =~ m/(.+):/;
|
||||
my $source_dir = $1;
|
||||
|
||||
chop($dest_dir) if $dest_dir =~ m/:$/;
|
||||
|
||||
WaitNextEvent();
|
||||
print "Installing resources from \"$manifest_file\"\n" unless $QUIET;
|
||||
|
||||
my $read = maniread(full_path_to($manifest_file));
|
||||
foreach $file (keys %$read)
|
||||
{
|
||||
next unless $file;
|
||||
|
||||
if ($copy_files)
|
||||
{
|
||||
copy("$source_dir:$file", "$dest_dir:$file");
|
||||
}
|
||||
else
|
||||
{
|
||||
MakeAlias("$source_dir:$file", "$dest_dir:$file");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// Delay
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub Delay($)
|
||||
{
|
||||
my ($delay_seconds) = @_;
|
||||
|
||||
$now = time;
|
||||
|
||||
$exit_time = $now + $delay_seconds;
|
||||
|
||||
while ($exit_time > $now) {
|
||||
$now = time;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetFileModDate
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetFileModDate($)
|
||||
{
|
||||
my($filePath)=@_;
|
||||
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
|
||||
$atime,$mtime,$ctime,$blksize,$blocks) = stat($filePath);
|
||||
return $mtime;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// LaunchCodeWarrior
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub LaunchCodeWarrior($)
|
||||
{
|
||||
my($idepath_file) = @_; # full path to IDE location file
|
||||
my($cur_dir) = cwd();
|
||||
|
||||
# this both launches and writes the IDE path file
|
||||
Moz::CodeWarriorLib::activate($idepath_file);
|
||||
|
||||
chdir($cur_dir);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetCodeWarriorRelativePath
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetCodeWarriorRelativePath($)
|
||||
{
|
||||
my($rel_path) = @_;
|
||||
return Moz::CodeWarriorLib::getCodeWarriorPath($rel_path);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// RedirectOutputToFile
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub RedirectOutputToFile($)
|
||||
{
|
||||
my($log_file) = @_;
|
||||
|
||||
# ensure that folders in the path exist
|
||||
my($logdir) = "";
|
||||
my($logfile) = $log_file;
|
||||
|
||||
if ($log_file =~ /(.+?:)([^:]+)$/) # ? for non-greedy match
|
||||
{
|
||||
$logdir = $1;
|
||||
$logfile = $2;
|
||||
|
||||
mkpath($logdir);
|
||||
}
|
||||
|
||||
print "Output is now being redirected to the file '$log_file'\n";
|
||||
|
||||
open(STDOUT, "> $log_file") || die "Can't redirect stdout";
|
||||
open(STDERR, ">&STDOUT") || die "Can't dup stdout";
|
||||
select(STDERR); $| = 1; # make unbuffered
|
||||
select(STDOUT); $| = 1; # make unbuffered
|
||||
|
||||
MacPerl::SetFileInfo("CWIE", "TEXT", $log_file);
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ActivateApplication
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub ActivateApplication($)
|
||||
{
|
||||
my ($appSignature) = @_;
|
||||
my ($psi, $found);
|
||||
my ($appPSN);
|
||||
|
||||
$found = 0;
|
||||
|
||||
foreach $psi (values(%Process))
|
||||
{
|
||||
if ($psi->processSignature() eq $appSignature)
|
||||
{
|
||||
$appPSN = $psi->processNumber();
|
||||
$found = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
if ($found == 0 || SameProcess($appPSN, GetFrontProcess()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SetFrontProcess($appPSN);
|
||||
|
||||
while (GetFrontProcess() != $appPSN)
|
||||
{
|
||||
WaitNextEvent();
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// IsProcessRunning
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub IsProcessRunning($)
|
||||
{
|
||||
my($processName, $psn, $psi) = @_;
|
||||
while ( ($psn, $psi) = each(%Process) ) {
|
||||
if ($psi->processName eq $processName) { return 1; }
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Scott Collins <scc@netscape.com>, Simon Fraser <sfraser@netscape.com>, Chris Yeh <cyeh@netscape.com>
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
BuildMozillaDebug.pl (et al), BuildList.pm, CodeWarriorLib (an AppleScript library)
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
The contents of this file are subject to the Netscape Public
|
||||
License Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may obtain a copy of
|
||||
the License at http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS
|
||||
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
implied. See the License for the specific language governing
|
||||
rights and limitations under the License.
|
||||
|
||||
The Original Code is Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
=cut
|
||||
@@ -1,272 +0,0 @@
|
||||
|
||||
package Moz::Prefs;
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
# Package that attempts to read a file from the Preferences folder,
|
||||
# and get build settings out of it
|
||||
|
||||
use strict;
|
||||
|
||||
use Exporter;
|
||||
use File::Path;
|
||||
|
||||
use Mac::Files;
|
||||
|
||||
use vars qw(@ISA @EXPORT);
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(ReadMozUserPrefs);
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# GetPrefsFolder
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub GetPrefsFolder()
|
||||
{
|
||||
my($prefs_folder) = FindFolder(kOnSystemDisk, kPreferencesFolderType, 1);
|
||||
return $prefs_folder.":Mozilla build prefs";
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# SetArrayValue
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub SetArrayValue($$$)
|
||||
{
|
||||
my($array_ref, $index1, $index2) = @_;
|
||||
|
||||
my($index);
|
||||
foreach $index (@$array_ref)
|
||||
{
|
||||
if ($index->[0] eq $index1)
|
||||
{
|
||||
$index->[1] = $index2;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# WriteDefaultPrefsFile
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub WriteDefaultPrefsFile($)
|
||||
{
|
||||
my($file_path) = @_;
|
||||
|
||||
my($file_contents);
|
||||
$file_contents = <<'EOS';
|
||||
% You can use this file to customize the Mozilla build system.
|
||||
% The following kinds of lines are allowable:
|
||||
% Comment lines, which start with a '%' in the first column
|
||||
% Lines which modify the default build settings. For the list of flags,
|
||||
% see MozBuildFlags.pm. Examples are:
|
||||
%
|
||||
% build pull 0 % don't pull
|
||||
% options mng 1 % turn mng on
|
||||
%
|
||||
% Line containing the special 'buildfrom' flag, which specifies
|
||||
% where to start the build. Example:
|
||||
%
|
||||
% buildfrom nglayout % where to start the build
|
||||
%
|
||||
% Lines which specify the location of the files used to store paths
|
||||
% to the CodeWarrior IDE, and the MacCVS Pro session file. Note quoting
|
||||
% of paths containing whitespace. Examples:
|
||||
%
|
||||
% filepath idepath ::codewarrior.txt
|
||||
% filepath sessionpath ":Some folder:MacCVS session path.txt"
|
||||
%
|
||||
% Lines which modify the build settings like %main::DEBUG.
|
||||
% Any lines which do not match either of the above are assumed
|
||||
% to set variables on $main::. Examples:
|
||||
%
|
||||
% MOZILLA_OFFICIAL 1
|
||||
%
|
||||
EOS
|
||||
|
||||
$file_contents =~ s/%/#/g;
|
||||
|
||||
local(*PREFS_FILE);
|
||||
|
||||
open(PREFS_FILE, "> $file_path") || die "Could not write default prefs file\n";
|
||||
print PREFS_FILE ($file_contents);
|
||||
close(PREFS_FILE);
|
||||
|
||||
MacPerl::SetFileInfo("McPL", "TEXT", $file_path);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# HandlePrefSet
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub HandlePrefSet($$$$)
|
||||
{
|
||||
my($flags, $name, $value, $desc) = @_;
|
||||
|
||||
if (SetArrayValue($flags, $name, $value)) {
|
||||
print "Prefs set $desc flag '$name' to '$value'\n";
|
||||
} else {
|
||||
die "$desc setting '$name' is not a valid option\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# HandleBuildFromPref
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
sub HandleBuildFromPref($$)
|
||||
{
|
||||
my($build_array, $name) = @_;
|
||||
|
||||
my($setting) = 0;
|
||||
my($index);
|
||||
foreach $index (@$build_array)
|
||||
{
|
||||
if ($index->[0] eq $name) {
|
||||
$setting = 1;
|
||||
}
|
||||
|
||||
$index->[1] = $setting;
|
||||
}
|
||||
|
||||
if ($setting == 1) {
|
||||
print "Building from $name onwards, as specified by prefs\n";
|
||||
} else {
|
||||
printf "Failed to find buildfrom setting '$name'\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# ReadPrefsFile
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub ReadPrefsFile($$$$$)
|
||||
{
|
||||
my($file_path, $build_flags, $options_flags, $filepath_flags, $create_if_missing) = @_;
|
||||
|
||||
local(*PREFS_FILE);
|
||||
|
||||
if (open(PREFS_FILE, "< $file_path"))
|
||||
{
|
||||
print "Reading build prefs from '$file_path'\n";
|
||||
|
||||
while (<PREFS_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
if ($line =~ /^\#/ || $line =~ /^\s*$/) { # ignore comments and empty lines
|
||||
next;
|
||||
}
|
||||
|
||||
if (($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+\"(.+)\"(\s+#.+)?/) ||
|
||||
($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+\'(.+)\'(\s+#.+)?/) ||
|
||||
($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+([^#\s]+)(\s+#.+)?/))
|
||||
{
|
||||
my($array_name) = $1;
|
||||
my($option_name) = $2;
|
||||
my($option_value) = $3;
|
||||
|
||||
# print "Read '$array_name' '$option_name' '$option_value'\n";
|
||||
|
||||
if ($array_name eq "build")
|
||||
{
|
||||
HandlePrefSet($build_flags, $option_name, $option_value, "Build");
|
||||
}
|
||||
elsif ($array_name eq "options")
|
||||
{
|
||||
HandlePrefSet($options_flags, $option_name, $option_value, "Options");
|
||||
}
|
||||
elsif ($array_name eq "filepath" && $option_name && $option_value)
|
||||
{
|
||||
HandlePrefSet($filepath_flags, $option_name, $option_value, "Filepath");
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Unknown pref option at $line\n";
|
||||
}
|
||||
}
|
||||
elsif ($line =~ /^\s*buildfrom\s+([^#\s]+)(\s+#.+)?/)
|
||||
{
|
||||
my($build_start) = $1;
|
||||
HandleBuildFromPref($build_flags, $build_start);
|
||||
}
|
||||
elsif ($line =~ /^\s*([^#\s]+)\s+([^#\s]+)(\s+#.+)?/)
|
||||
{
|
||||
my($build_var) = $1;
|
||||
my($var_setting) = $2;
|
||||
|
||||
print "Setting \$main::$build_var to $var_setting\n";
|
||||
eval "\$main::$build_var = \"$var_setting\"";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Unrecognized input line at $line\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
close(PREFS_FILE);
|
||||
}
|
||||
elsif ($create_if_missing)
|
||||
{
|
||||
print "No prefs file found at $file_path; using defaults\n";
|
||||
|
||||
my($folder_path) = $file_path;
|
||||
$folder_path =~ s/[^:]+$//;
|
||||
mkpath($folder_path);
|
||||
WriteDefaultPrefsFile($file_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# ReadMozUserPrefs
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub ReadMozUserPrefs($$$$)
|
||||
{
|
||||
my($prefs_file_name, $build_flags, $options_flags, $filepath_flags) = @_;
|
||||
|
||||
if ($prefs_file_name eq "") { return; }
|
||||
|
||||
# if local prefs exist, just use those. Othewise, look in the prefs folder
|
||||
if (-e $prefs_file_name)
|
||||
{
|
||||
# read local prefs
|
||||
ReadPrefsFile($prefs_file_name, $build_flags, $options_flags, $filepath_flags, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
# first read prefs folder prefs
|
||||
my($prefs_path) = GetPrefsFolder();
|
||||
$prefs_path .= ":$prefs_file_name";
|
||||
|
||||
ReadPrefsFile($prefs_path, $build_flags, $options_flags, $filepath_flags, 1);
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,932 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Simon Fraser <sfraser@netscape.com>
|
||||
#
|
||||
|
||||
package Moz::ProjectXML;
|
||||
|
||||
require 5.004;
|
||||
require Exporter;
|
||||
|
||||
use strict;
|
||||
use Exporter;
|
||||
|
||||
use Cwd;
|
||||
use XML::DOM;
|
||||
|
||||
use vars qw(@ISA @EXPORT);
|
||||
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(
|
||||
ParseXMLDocument
|
||||
DisposeXMLDocument
|
||||
WriteXMLDocument
|
||||
CleanupPro5XML
|
||||
GetTargetsList
|
||||
CloneTarget
|
||||
SetAsSharedLibraryTarget
|
||||
SetAsStaticLibraryTarget
|
||||
AddTarget
|
||||
RemoveTarget
|
||||
GetTargetSetting
|
||||
SetTargetSetting
|
||||
getChildElementTextContents
|
||||
);
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# A module for reading, manipulating, and writing XML-format CodeWarrior project files.
|
||||
#
|
||||
# Sample usage:
|
||||
#
|
||||
# use ProjectXML;
|
||||
#
|
||||
# my $doc = ProjectXML::ParseXMLDocument("Test.mcp.xml");
|
||||
# ProjectXML::CloneTarget($doc, "Test.shlb", "Test.lib");
|
||||
# ProjectXML::SetAsStaticLibraryTarget($doc, "Test.lib", "TestOutput.lib");
|
||||
# ProjectXML::WriteXMLDocument($doc, "Test_out.xml");
|
||||
# ProjectXML::DisposeXMLDocument($doc);
|
||||
#
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// ParseXMLDocument
|
||||
#// Note that the caller must call DisposeXMLDocument on the returned doc
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub ParseXMLDocument($)
|
||||
{
|
||||
my($doc_path) = @_;
|
||||
|
||||
my $parser = new XML::DOM::Parser(ErrorContext => 2);
|
||||
my $doc = $parser->parsefile($doc_path);
|
||||
|
||||
return $doc;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// DisposeXMLDocument
|
||||
#// Needed to avoid memory leaks - cleanup circular references for garbage collection
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub DisposeXMLDocument($)
|
||||
{
|
||||
my($doc) = @_;
|
||||
|
||||
$doc->dispose();
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// WriteXMLDocument
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
|
||||
sub _pro5_tag_compression($$)
|
||||
{
|
||||
return 1; # Pro 5 is broken and can't import XML with <foo/> style tags
|
||||
}
|
||||
|
||||
sub _pro6plus_tag_compression($$)
|
||||
{
|
||||
return 0; # Pro 6 can deal with empty XML tags like <foo/>
|
||||
}
|
||||
|
||||
sub WriteXMLDocument($$$)
|
||||
{
|
||||
my($doc, $file_path, $ide_version) = @_;
|
||||
|
||||
if ($ide_version eq "4.0")
|
||||
{
|
||||
XML::DOM::setTagCompression(\&_pro5_tag_compression);
|
||||
}
|
||||
else
|
||||
{
|
||||
XML::DOM::setTagCompression(\&_pro6plus_tag_compression);
|
||||
}
|
||||
|
||||
$doc->printToFile($file_path);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// CleanupPro5XML
|
||||
#// XML Projects exported by Pro 5 contain garbage data under the MWMerge_MacOS_skipResources
|
||||
#// setting. This routine cleans this up, saving the result to a new file
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub CleanupPro5XML($$)
|
||||
{
|
||||
my($xml_path, $out_path) = @_;
|
||||
|
||||
local(*XML_FILE);
|
||||
open(XML_FILE, "< $xml_path") || die "Error: failed to open file $xml_path\n";
|
||||
|
||||
local(*CLEANED_FILE);
|
||||
open(CLEANED_FILE, "> $out_path") || die "Error: failed to open file $out_path for writing\n";
|
||||
|
||||
my $in_skip_resources_settings = 0;
|
||||
|
||||
while(<XML_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
|
||||
if ($line =~ /^<\?codewarrior/) # is processing inst line
|
||||
{
|
||||
my $test_line = $line;
|
||||
chomp($test_line);
|
||||
|
||||
my $out_line = $test_line;
|
||||
if ($test_line =~ /^<\?codewarrior\s+exportversion=\"(.+)\"\s+ideversion=\"(.+)\"\s*\?>$/)
|
||||
{
|
||||
my $export_version = $1;
|
||||
my $ide_version = $2;
|
||||
|
||||
$ide_version = "4.0_mozilla"; # pseudo IDE version so we know we touched it
|
||||
$out_line = "<?codewarrior exportversion=\"".$export_version."\" ideversion=\"".$ide_version."\"?>";
|
||||
}
|
||||
|
||||
print CLEANED_FILE "$out_line\n";
|
||||
next;
|
||||
}
|
||||
|
||||
if ($line =~ /MWMerge_MacOS_skipResources/)
|
||||
{
|
||||
$in_skip_resources_settings = 1;
|
||||
print CLEANED_FILE "$line";
|
||||
}
|
||||
elsif($in_skip_resources_settings && $line =~ /<!-- Settings for/)
|
||||
{
|
||||
# leaving bad settings lines. Write closing tag
|
||||
print CLEANED_FILE " <!-- Corrupted setting entries removed by script -->\n";
|
||||
print CLEANED_FILE " </SETTING>\n\n";
|
||||
|
||||
print CLEANED_FILE "$line";
|
||||
|
||||
$in_skip_resources_settings = 0;
|
||||
}
|
||||
elsif (!$in_skip_resources_settings)
|
||||
{
|
||||
print CLEANED_FILE "$line";
|
||||
}
|
||||
}
|
||||
|
||||
close(XML_FILE);
|
||||
close(CLEANED_FILE);
|
||||
|
||||
}
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
# SniffProjectXMLIDEVersion
|
||||
#
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
sub SniffProjectXMLIDEVersion($)
|
||||
{
|
||||
my($xml_path) = @_;
|
||||
|
||||
my $found_version = "";
|
||||
|
||||
local(*XML_FILE);
|
||||
open(XML_FILE, "< $xml_path") || die "Error: failed to open file $xml_path\n";
|
||||
|
||||
while(<XML_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
|
||||
if ($line =~ /^<\?codewarrior/) # is processing inst line
|
||||
{
|
||||
unless ($line =~ /^<\?codewarrior\s+exportversion=\"(.+)\"\s+ideversion=\"(.+)\"\s*\?>$/)
|
||||
{
|
||||
die "Error: Failed to find ideversion in $xml_path in line $line\n";
|
||||
}
|
||||
|
||||
my $export_version = $1;
|
||||
my $ide_version = $2;
|
||||
|
||||
$found_version = $ide_version;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
close(XML_FILE);
|
||||
|
||||
return $found_version;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetTargetsList
|
||||
#// Returns an array of target names
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetTargetsList($)
|
||||
{
|
||||
my($doc) = @_;
|
||||
|
||||
my $nodes = $doc->getElementsByTagName("TARGET");
|
||||
my $n = $nodes->getLength;
|
||||
|
||||
my @target_names;
|
||||
|
||||
for (my $i = 0; $i < $n; $i++)
|
||||
{
|
||||
my ($node) = $nodes->item($i);
|
||||
|
||||
my($target_name) = getChildElementTextContents($node, "NAME");
|
||||
push(@target_names, $target_name);
|
||||
}
|
||||
|
||||
return @target_names;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// CloneTarget
|
||||
#// Clone the named target, renaming it to 'new_name'
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub CloneTarget($$$)
|
||||
{
|
||||
my($doc, $target_name, $new_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
|
||||
# clone here
|
||||
my $target_clone = $target_node->cloneNode(1); # deep clone
|
||||
|
||||
# -- munge target settings --
|
||||
|
||||
# set the target name field
|
||||
setChildElementTextContents($doc, $target_clone, "NAME", $new_name);
|
||||
|
||||
# set the targetname pref
|
||||
setTargetNodeSetting($doc, $target_clone, "Targetname", $new_name);
|
||||
|
||||
# -- insert new target subtree --
|
||||
|
||||
my $target_list = $target_node->getParentNode();
|
||||
$target_list->appendChild($target_clone);
|
||||
|
||||
# -- now add to targetorder --
|
||||
my (@target_order_nodes) = getChildOfDocument($doc, "TARGETORDER");
|
||||
|
||||
my $target_order = @target_order_nodes[0];
|
||||
|
||||
my $new_order = $doc->createElement("ORDEREDTARGET");
|
||||
my $order_name = $doc->createElement("NAME");
|
||||
|
||||
$new_order->appendChild($order_name);
|
||||
|
||||
setChildElementTextContents($doc, $new_order, "NAME", $new_name);
|
||||
$target_order->appendChild($new_order);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SetAsSharedLibraryTarget
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SetAsSharedLibraryTarget($$$)
|
||||
{
|
||||
my($doc, $target_name, $output_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_type", "SharedLibrary");
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_filetype", "1936223330"); #'shlb'
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_outfile", $output_name);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// AddFileToTarget
|
||||
#//
|
||||
#// Add a file to the specified target(s).
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub AddFileToTarget($$$)
|
||||
{
|
||||
my($doc, $target_list, $file_name) = @_;
|
||||
|
||||
# the file must be added in 3 places:
|
||||
# 1. in <TARGET><FILELIST><FILE> (with linkage flags if necessary)
|
||||
# 2. in <TARGET><LINKORDER><FILEREF>
|
||||
# 3. in <GROUPLIST><GROUP><FILEREF>
|
||||
die "Write me\n";
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// RemoveFileFromTarget
|
||||
#//
|
||||
#// Remove a file from the specified target, removing it from the entire project
|
||||
#// if no other targets reference it.
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub RemoveFileFromTarget($$$)
|
||||
{
|
||||
my($doc, $target_node, $file_name) = @_;
|
||||
|
||||
# the file must be removed in 3 places:
|
||||
# 1. in <TARGET><FILELIST><FILE>
|
||||
# 2. in <TARGET><LINKORDER><FILEREF>
|
||||
# 3. in <GROUPLIST><GROUP><FILEREF>
|
||||
|
||||
# first, remove from <FILELIST>
|
||||
my $filelist_node = getFirstChildElement($target_node, "FILELIST");
|
||||
unless ($filelist_node) { die "Error: failed to find FILELIST node\n"; }
|
||||
|
||||
my $file_node = getChildNodeByGrandchildContents($doc, $filelist_node, "FILE", "PATH", $file_name);
|
||||
unless ($file_node) { return; }
|
||||
|
||||
$filelist_node->removeChild($file_node);
|
||||
|
||||
# next, remove from <LINKORDER>
|
||||
my $linkorder_node = getFirstChildElement($target_node, "LINKORDER");
|
||||
unless ($linkorder_node) { die "Error: failed to find LINKORDER node\n"; }
|
||||
|
||||
my $fileref_node = getChildNodeByGrandchildContents($doc, $linkorder_node, "FILEREF", "PATH", $file_name);
|
||||
unless ($fileref_node) { die "Error: link order node for file $file_name not found\n"; }
|
||||
|
||||
$linkorder_node->removeChild($fileref_node);
|
||||
|
||||
# last, remove from <GROUPLIST>
|
||||
# <GROUPLIST> is cross-target, so we have to be careful here.
|
||||
my $grouplist_node = getChildOfDocument($doc, "GROUPLIST");
|
||||
unless ($grouplist_node) { die "Error: failed to find GROUPLIST node\n"; }
|
||||
|
||||
# if the file isn't in any other targets, remove it from the groups
|
||||
if (!GetFileInUse($doc, $file_name))
|
||||
{
|
||||
print "File $file_name is in no other targest. Removing from project\n";
|
||||
|
||||
my @group_nodes;
|
||||
getChildElementsOfType($doc, $grouplist_node, "GROUP", \@group_nodes);
|
||||
my $group_node;
|
||||
foreach $group_node (@group_nodes)
|
||||
{
|
||||
my @fileref_nodes;
|
||||
getChildElementsOfType($doc, $group_node, "FILEREF", \@fileref_nodes);
|
||||
|
||||
my $fileref_node;
|
||||
foreach $fileref_node (@fileref_nodes)
|
||||
{
|
||||
my $path_name = getChildElementTextContents($fileref_node, "PATH");
|
||||
if ($path_name eq $file_name)
|
||||
{
|
||||
print "Removing $file_name from project group list\n";
|
||||
$group_node->removeChild($fileref_node);
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
# can a file appear in more than one group?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SetAsStaticLibraryTarget
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SetAsStaticLibraryTarget($$$)
|
||||
{
|
||||
my($doc, $target_name, $output_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_type", "Library");
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_filetype", "1061109567"); #'????'
|
||||
setTargetNodeSetting($doc, $target_node, "MWProject_PPC_outfile", $output_name);
|
||||
|
||||
# static targets don't need any library linkage, so we can remove linkage
|
||||
# with all .shlb and .Lib files.
|
||||
|
||||
my(@obsolete_files) = ("NSStdLibStubs", "InterfacesStubs", "InterfaceLib", "InternetConfigLib");
|
||||
|
||||
print " Removing libraries etc. from target\n";
|
||||
|
||||
# get all files in target
|
||||
my @target_files = GetTargetFilesList($doc, $target_name);
|
||||
my $target_file;
|
||||
foreach $target_file (@target_files)
|
||||
{
|
||||
if ($target_file =~ /(\.shlb|\.lib|\.Lib|\.o|\.exp)$/)
|
||||
{
|
||||
RemoveFileFromTarget($doc, $target_node, $target_file);
|
||||
}
|
||||
}
|
||||
|
||||
print " Removing stub libraries from target\n";
|
||||
|
||||
# then remove files with known names
|
||||
my $obs_file;
|
||||
foreach $obs_file (@obsolete_files)
|
||||
{
|
||||
RemoveFileFromTarget($doc, $target_node, $obs_file);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// AddTarget
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub AddTarget($$)
|
||||
{
|
||||
my($doc, $target_name) = @_;
|
||||
|
||||
die "Write me\n";
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// RemoveTarget
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub RemoveTarget($$)
|
||||
{
|
||||
my($doc, $target_name) = @_;
|
||||
|
||||
die "Write me\n";
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetTargetSetting
|
||||
#// Get the value for the specified setting in the specified target
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetTargetSetting($$$)
|
||||
{
|
||||
my($doc, $target_name, $setting_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
return getTargetNodeSetting($target_node, "VALUE");
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// SetTargetSetting
|
||||
#// Set the value for the specified setting in the specified target
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub SetTargetSetting($$$$)
|
||||
{
|
||||
my($doc, $target_name, $setting_name, $new_value) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
setTargetNodeSetting($doc, $target_node, "VALUE", $new_value);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetTargetFilesList
|
||||
#// Return an array of the files in the target (in filelist order)
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetTargetFilesList($$)
|
||||
{
|
||||
my($doc, $target_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
|
||||
my @files_list;
|
||||
|
||||
my $filelist_node = getFirstChildElement($target_node, "FILELIST");
|
||||
unless ($filelist_node) { die "Error: failed to find FILELIST node\n"; }
|
||||
|
||||
my @file_nodes;
|
||||
getChildElementsOfType($doc, $filelist_node, "FILE", \@file_nodes);
|
||||
|
||||
my $node;
|
||||
foreach $node (@file_nodes)
|
||||
{
|
||||
my $file_name = getChildElementTextContents($node, "PATH");
|
||||
push(@files_list, $file_name);
|
||||
}
|
||||
|
||||
return @files_list;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// FileIsInTarget
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub FileIsInTarget($$$)
|
||||
{
|
||||
my($doc, $file_name, $target_name) = @_;
|
||||
|
||||
my $target_node = getTargetNode($doc, $target_name);
|
||||
unless ($target_node) { die "Error: no target found called $target_name\n"; }
|
||||
|
||||
my $file_node = GetTargetFileNode($doc, $target_node, $file_name);
|
||||
if ($file_node) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetFileTargetsList
|
||||
#// Return an array of the targets that a file is in (expensive)
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetFileTargetsList($$)
|
||||
{
|
||||
my ($doc, $file_name) = @_;
|
||||
|
||||
my @target_list;
|
||||
|
||||
my @targets = GetTargetsList($doc);
|
||||
my $target;
|
||||
|
||||
foreach $target (@targets)
|
||||
{
|
||||
if (FileIsInTarget($doc, $file_name, $target))
|
||||
{
|
||||
push(@target_list, $target);
|
||||
}
|
||||
}
|
||||
|
||||
return @target_list;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetTargetFileNode
|
||||
#//
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetTargetFileNode($$$)
|
||||
{
|
||||
my($doc, $target_node, $file_name) = @_;
|
||||
|
||||
my $filelist_node = getFirstChildElement($target_node, "FILELIST");
|
||||
unless ($filelist_node) { die "Error: failed to find FILELIST node\n"; }
|
||||
|
||||
my $file_node = getChildNodeByGrandchildContents($doc, $filelist_node, "FILE", "PATH", $file_name);
|
||||
|
||||
return $file_node;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// GetFileInUse
|
||||
#// Return true if the file is used by any target
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub GetFileInUse($$)
|
||||
{
|
||||
my($doc, $file_name) = @_;
|
||||
|
||||
my $targetlist_node = getChildOfDocument($doc, "TARGETLIST");
|
||||
|
||||
my $target_node = $targetlist_node->getFirstChild();
|
||||
|
||||
while ($target_node)
|
||||
{
|
||||
if ($target_node->getNodeTypeName eq "ELEMENT_NODE" &&
|
||||
$target_node->getTagName() eq "TARGET")
|
||||
{
|
||||
# if this is a target node
|
||||
my $file_node = GetTargetFileNode($doc, $target_node, $file_name);
|
||||
if ($file_node) {
|
||||
return 1; # found it
|
||||
}
|
||||
}
|
||||
|
||||
$target_node = $target_node->getNextSibling();
|
||||
}
|
||||
|
||||
# not found
|
||||
return 0;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getChildOfDocument
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getChildOfDocument($$)
|
||||
{
|
||||
my($doc, $child_type) = @_;
|
||||
|
||||
return getFirstChildElement($doc->getDocumentElement(), $child_type);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getFirstChildElement
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getFirstChildElement($$)
|
||||
{
|
||||
my($node, $element_name) = @_;
|
||||
|
||||
my $found_node;
|
||||
|
||||
unless ($node) { die "getFirstChildElement called with empty node\n"; }
|
||||
|
||||
#look for the first "element_name" child
|
||||
|
||||
my $child_node = $node->getFirstChild();
|
||||
|
||||
while ($child_node)
|
||||
{
|
||||
if ($child_node->getNodeTypeName eq "ELEMENT_NODE" &&
|
||||
$child_node->getTagName() eq $element_name)
|
||||
{
|
||||
$found_node = $child_node;
|
||||
last;
|
||||
}
|
||||
|
||||
$child_node = $child_node->getNextSibling();
|
||||
}
|
||||
|
||||
return $found_node;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getChildElementsOfType
|
||||
#//
|
||||
#// Return an array of refs to child nodes of the given type
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getChildElementsOfType($$$$)
|
||||
{
|
||||
my($doc, $node, $child_type, $array_ref) = @_;
|
||||
|
||||
my $child_node = $node->getFirstChild();
|
||||
|
||||
while ($child_node)
|
||||
{
|
||||
if ($child_node->getNodeTypeName eq "ELEMENT_NODE" &&
|
||||
$child_node->getTagName() eq $child_type)
|
||||
{
|
||||
push(@$array_ref, $child_node);
|
||||
}
|
||||
|
||||
$child_node = $child_node->getNextSibling();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getChildElementTextContents
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#
|
||||
# Given <FOOPY><NERD>Hi!</NERD></FOOPY>, where $node is <FOOPY>,
|
||||
# returns "Hi!". If > 1 <NERD> node, returns the contents of the first.
|
||||
#
|
||||
sub getChildElementTextContents($$)
|
||||
{
|
||||
my($node, $tag_name) = @_;
|
||||
|
||||
my $first_element = getFirstChildElement($node, $tag_name);
|
||||
my $text_node = $first_element->getFirstChild();
|
||||
|
||||
my $text_contents = "";
|
||||
|
||||
# concat adjacent text nodes
|
||||
while ($text_node)
|
||||
{
|
||||
if ($text_node->getNodeTypeName() ne "TEXT_NODE")
|
||||
{
|
||||
last;
|
||||
}
|
||||
|
||||
$text_contents = $text_contents.$text_node->getData();
|
||||
$text_node = $text_node->getNextSibling();
|
||||
}
|
||||
|
||||
return $text_contents;
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// setChildElementTextContents
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub setChildElementTextContents($$$$)
|
||||
{
|
||||
my($doc, $node, $tag_name, $contents_text) = @_;
|
||||
|
||||
my $first_element = getFirstChildElement($node, $tag_name);
|
||||
my $new_text_node = $doc->createTextNode($contents_text);
|
||||
|
||||
# replace all child elements with a text element
|
||||
removeAllChildren($first_element);
|
||||
|
||||
$first_element->appendChild($new_text_node);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getChildNodeByContents
|
||||
#//
|
||||
#// Consider <foo><bar><baz>Foopy</baz></bar><bar><baz>Loopy</baz></bar></foo>
|
||||
#// This function, when called with getChildNodeByContents($foonode, "bar", "baz", "Loopy")
|
||||
#// returns the second <bar> node.
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getChildNodeByGrandchildContents($$$$$)
|
||||
{
|
||||
my($doc, $node, $child_type, $gc_type, $gc_contents) = @_; # gc = grandchild
|
||||
|
||||
my $found_node;
|
||||
my $child_node = $node->getFirstChild();
|
||||
while ($child_node)
|
||||
{
|
||||
if ($child_node->getNodeTypeName eq "ELEMENT_NODE" &&
|
||||
$child_node->getTagName() eq $child_type)
|
||||
{
|
||||
# check for a child of this node of type
|
||||
my $child_contents = getChildElementTextContents($child_node, $gc_type);
|
||||
|
||||
if ($child_contents eq $gc_contents)
|
||||
{
|
||||
$found_node = $child_node;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
$child_node = $child_node->getNextSibling();
|
||||
}
|
||||
|
||||
return $found_node;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getTargetNode
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getTargetNode($$)
|
||||
{
|
||||
my($doc, $target_name) = @_;
|
||||
|
||||
my $targetlist_node = getChildOfDocument($doc, "TARGETLIST");
|
||||
return getChildNodeByGrandchildContents($doc, $targetlist_node, "TARGET", "NAME", $target_name);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getTargetNamedSettingNode
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getTargetNamedSettingNode($$)
|
||||
{
|
||||
my($target_node, $setting_name) = @_;
|
||||
|
||||
my $setting_node;
|
||||
|
||||
my $settinglist_node = getFirstChildElement($target_node, "SETTINGLIST");
|
||||
my $child_node = $settinglist_node->getFirstChild();
|
||||
|
||||
while ($child_node)
|
||||
{
|
||||
if ($child_node->getNodeTypeName ne "ELEMENT_NODE")
|
||||
{
|
||||
$child_node = $child_node->getNextSibling();
|
||||
next;
|
||||
}
|
||||
|
||||
if ($child_node->getTagName() eq "SETTING")
|
||||
{
|
||||
my $set_name = getChildElementTextContents($child_node, "NAME");
|
||||
|
||||
if ($set_name eq $setting_name)
|
||||
{
|
||||
$setting_node = $child_node;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
$child_node = $child_node->getNextSibling();
|
||||
}
|
||||
|
||||
return $setting_node;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// getTargetNodeSetting
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub getTargetNodeSetting($$)
|
||||
{
|
||||
my($target_node, $setting_name) = @_;
|
||||
|
||||
my $setting_node = getTargetNamedSettingNode($target_node, $setting_name);
|
||||
return getChildElementTextContents($setting_node, "VALUE");
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// setTargetNodeSetting
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub setTargetNodeSetting($$$$)
|
||||
{
|
||||
my($doc, $target_node, $setting_name, $new_value) = @_;
|
||||
|
||||
my $setting_node = getTargetNamedSettingNode($target_node, $setting_name);
|
||||
|
||||
setChildElementTextContents($doc, $setting_node, "VALUE", $new_value);
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// elementInArray
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub elementInArray($$)
|
||||
{
|
||||
my($element, $array) = @_;
|
||||
my $test;
|
||||
foreach $test (@$array)
|
||||
{
|
||||
if ($test eq $element) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// removeAllChildren
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub removeAllChildren($)
|
||||
{
|
||||
my($node) = @_;
|
||||
|
||||
my $child_node = $node->getFirstChild();
|
||||
|
||||
while ($child_node)
|
||||
{
|
||||
$node->removeChild($child_node);
|
||||
$child_node = $node->getFirstChild();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// dumpNodeData
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub dumpNodeData($)
|
||||
{
|
||||
my($node) = @_;
|
||||
|
||||
unless ($node) { die "Null node passed to dumpNodeData\n"; }
|
||||
|
||||
print "Dumping node $node\n";
|
||||
|
||||
my($node_type) = $node->getNodeTypeName();
|
||||
|
||||
if ($node_type eq "ELEMENT_NODE")
|
||||
{
|
||||
my($node_name) = $node->getTagName();
|
||||
print "Element $node_name\n";
|
||||
}
|
||||
elsif ($node_type eq "TEXT_NODE")
|
||||
{
|
||||
my($node_data) = $node->getData;
|
||||
# my(@node_vals) = unpack("C*", $node_data);
|
||||
print "Text '$node_data'\n"; # may contain LF chars
|
||||
}
|
||||
else
|
||||
{
|
||||
print "Node $node_type\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
#// dumpNodeTree
|
||||
#//--------------------------------------------------------------------------------------------------
|
||||
sub dumpNodeTree($)
|
||||
{
|
||||
my($node) = @_;
|
||||
|
||||
my($child_node) = $node->getFirstChild();
|
||||
|
||||
unless ($child_node) { return; }
|
||||
|
||||
# recurse
|
||||
dumpNodeData($child_node);
|
||||
|
||||
# then go through child nodes
|
||||
while ($child_node)
|
||||
{
|
||||
dumpNodeTree($child_node);
|
||||
|
||||
$child_node = $child_node->getNextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
#-------------------------------------------------------------------------------
|
||||
# These 3 lists are the 'master lists' to control what gets built.
|
||||
#
|
||||
# Ordering in these arrays is important; it has to reflect the order in
|
||||
# which the build occurs.
|
||||
#
|
||||
# Setting containing spaces must be quoted with double quotes.
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
build_flags
|
||||
all 1
|
||||
pull 0
|
||||
dist 0
|
||||
config 0
|
||||
xpidl 0
|
||||
idl 0
|
||||
stubs 0
|
||||
runtime 0
|
||||
common 0
|
||||
imglib 0
|
||||
libimg2 0
|
||||
necko 0
|
||||
security 0
|
||||
browserutils 0
|
||||
intl 0
|
||||
nglayout 0
|
||||
accessiblity 0
|
||||
editor 0
|
||||
embedding 0
|
||||
viewer 0
|
||||
xpapp 0
|
||||
extensions 0
|
||||
plugins 0
|
||||
mailnews 0
|
||||
apprunner 0
|
||||
resources 0
|
||||
|
||||
options_flags
|
||||
pull_by_date 0
|
||||
chrome_jars 1
|
||||
chrome_files 0
|
||||
use_jars 1
|
||||
transformiix 1
|
||||
mathml 0 MOZ_MATHML
|
||||
svg 0 MOZ_SVG
|
||||
# svg requires libart, which is an lgpl library. You need to pull it
|
||||
# explicitly.
|
||||
libart_lgpl 0
|
||||
mng 1
|
||||
ldap 1 MOZ_LDAP_XPCOM
|
||||
ldap_experimental 0 MOZ_LDAP_XPCOM_EXPERIMENTAL
|
||||
xmlextras 1
|
||||
wsp 0 MOZ_WSP
|
||||
inspector 1
|
||||
mailextras 1
|
||||
xptlink 0
|
||||
psm 0 MOZ_PSM
|
||||
embedding_test 1
|
||||
embedding_chrome 0
|
||||
embedding_xulprefs 0
|
||||
embedding_xulsecurity 0
|
||||
carbon 0 TARGET_CARBON
|
||||
useimg2 1 USE_IMG2
|
||||
lowmem 0 MOZ_MAC_LOWMEM
|
||||
accessible 1 ACCESSIBILITY
|
||||
bidi 1 IBMBIDI
|
||||
p3p 0
|
||||
jsd 1
|
||||
venkman 1
|
||||
moz_logging 1 MOZ_LOGGING
|
||||
chatzilla 1
|
||||
content_packs 1
|
||||
xml_rpc 1
|
||||
cview 1
|
||||
help 1
|
||||
timeline 0 MOZ_TIMELINE
|
||||
static_build 0 MOZ_STATIC_COMPONENT_LIBS
|
||||
string_debug 0 DEBUG_STRING
|
||||
string_stats 0 DEBUG_STRING_STATS
|
||||
xpctools 0 XPC_TOOLS_SUPPORT
|
||||
smime 1
|
||||
mdn 1
|
||||
print_preview 1 NS_PRINT_PREVIEW
|
||||
moz_xul 1 MOZ_XUL
|
||||
|
||||
filepath_flags
|
||||
idepath ":CodeWarrior IDE Path.txt"
|
||||
sessionpath ":Mozilla session path.txt"
|
||||
buildlogfilepath ":Build Logs:Mozilla build log.txt" # this is a path
|
||||
scriptlogfilepath ":Build Logs:Mozilla script log.txt"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
||||
# List of modules to check out. Format is
|
||||
# module, (tag), (date)
|
||||
# where tag and date are optional (non-trailing commas are required)
|
||||
#
|
||||
# Examples:
|
||||
# mozilla/nsprpub, NSPRPUB_CLIENT_TAG
|
||||
# mozilla/gc, , 10/25/2000 12:00:00
|
||||
#
|
||||
|
||||
mozilla/nsprpub, NETSCAPE_7_0_RTM
|
||||
mozilla/security/nss, NETSCAPE_7_0_RTM
|
||||
mozilla/security/manager, NETSCAPE_7_0_RTM
|
||||
mozilla/accessible, NETSCAPE_7_0_RTM
|
||||
mozilla/directory/c-sdk, NETSCAPE_7_0_RTM
|
||||
mozilla/lib/mac/Instrumentation, NETSCAPE_7_0_RTM
|
||||
mozilla/gfx2, NETSCAPE_7_0_RTM
|
||||
mozilla/modules/libpr0n, NETSCAPE_7_0_RTM
|
||||
SeaMonkeyAll, NETSCAPE_7_0_RTM
|
||||
|
||||
## You need this if you want to be able to use SVG
|
||||
## Note that this library is under the LGPL, not the MPL
|
||||
#mozilla/other-licenses/libart_lgpl
|
||||
@@ -1,79 +0,0 @@
|
||||
#!perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Simon Fraser <sfraser@netscape.com>
|
||||
#
|
||||
|
||||
require 5.004;
|
||||
|
||||
use strict;
|
||||
|
||||
use Cwd;
|
||||
use Moz::BuildUtils;
|
||||
use Moz::BuildCore;
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# Where have the build options gone?
|
||||
#
|
||||
# The various build flags have been centralized into one place.
|
||||
# The master list of options is in MozBuildFlags.txt. However,
|
||||
# you should never need to edit that file, or this one.
|
||||
#
|
||||
# To customize what gets built, or where to start the build,
|
||||
# edit the $prefs_file_name file in
|
||||
# System Folder:Preferences:Mozilla build prefs:
|
||||
# Documentation is provided in that file.
|
||||
#-------------------------------------------------------------
|
||||
|
||||
my($prefs_file_name) = "Mozilla pull prefs";
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# hashes to hold build options
|
||||
#-------------------------------------------------------------
|
||||
my(%build);
|
||||
my(%options);
|
||||
my(%filepaths);
|
||||
my(%optiondefines);
|
||||
|
||||
# Hash of input files for this build. Eventually, there will be
|
||||
# input files for manifests, and projects too.
|
||||
my(%inputfiles) = (
|
||||
"buildflags", "MozillaBuildFlags.txt",
|
||||
"checkoutdata", "MozillaCheckoutList.txt",
|
||||
"buildprogress", "",
|
||||
"buildmodule", "MozillaBuildList.pm",
|
||||
"checkouttime", "Mozilla last checkout"
|
||||
);
|
||||
#-------------------------------------------------------------
|
||||
# end build hashes
|
||||
#-------------------------------------------------------------
|
||||
|
||||
# set the build root directory, which is the the dir above mozilla
|
||||
SetupBuildRootDir(":mozilla:build:mac:build_scripts");
|
||||
|
||||
# Set up all the flags on $main::, like DEBUG, CARBON etc.
|
||||
# Override the defaults using the preferences files.
|
||||
SetupDefaultBuildOptions(0, ":mozilla:dist:viewer:", "");
|
||||
|
||||
my($do_checkout) = 1;
|
||||
my($do_build) = 0;
|
||||
|
||||
RunBuild($do_checkout, $do_build, \%inputfiles, $prefs_file_name);
|
||||
@@ -1,511 +0,0 @@
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
|
||||
DEPTH=.
|
||||
|
||||
!if !defined(MOZ_TOP)
|
||||
#enable builds from changed top level directories
|
||||
MOZ_TOP=mozilla
|
||||
!endif
|
||||
|
||||
MOZ_SRC_FLIPPED = $(MOZ_SRC:\=/)
|
||||
MOZ_DIST_FLIPPED = $(MOZ_SRC_FLIPPED)/mozilla/dist
|
||||
!ifdef MOZ_DEBUG
|
||||
MOZ_OBJDIR = WIN32_D.OBJ
|
||||
!else
|
||||
MOZ_OBJDIR = WIN32_O.OBJ
|
||||
!endif
|
||||
|
||||
#
|
||||
# Command macro defines
|
||||
#
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to do the pull.
|
||||
#//------------------------------------------------------------------------
|
||||
# uncomment these, modify branch tag, and check in to branch for milestones
|
||||
MOZ_BRANCH=NETSCAPE_7_0_RTM
|
||||
NSPR_CO_TAG=NETSCAPE_7_0_RTM
|
||||
PSM_CO_TAG=NETSCAPE_7_0_RTM
|
||||
NSS_CO_TAG=NETSCAPE_7_0_RTM
|
||||
LDAPCSDK_CO_TAG=NETSCAPE_7_0_RTM
|
||||
ACCESSIBLE_CO_TAG=NETSCAPE_7_0_RTM
|
||||
IMGLIB2_CO_TAG=NETSCAPE_7_0_RTM
|
||||
GFX2_CO_TAG=NETSCAPE_7_0_RTM
|
||||
|
||||
|
||||
!ifdef MOZ_BRANCH
|
||||
CVS_BRANCH=-r $(MOZ_BRANCH)
|
||||
!endif
|
||||
|
||||
!ifdef MOZ_DATE
|
||||
CVS_BRANCH=$(CVS_BRANCH) -D "$(MOZ_DATE)"
|
||||
!endif
|
||||
|
||||
# default pull is "quiet" but it can be overridden with MOZ_CVS_VERBOSE
|
||||
!ifndef MOZ_CVS_VERBOSE
|
||||
CVS_FLAGS=-q
|
||||
!endif
|
||||
|
||||
# honor any user-defined CVS flags
|
||||
!ifdef MOZ_CVS_FLAGS
|
||||
CVS_FLAGS=$(CVS_FLAGS) $(MOZ_CVS_FLAGS)
|
||||
!endif
|
||||
|
||||
# let's be explicit about CVSROOT... some windows cvs clients
|
||||
# are too stupid to correctly work without the -d option
|
||||
#
|
||||
# if they are too stupid, they should fail. I am
|
||||
# commenting this out because this does not work
|
||||
# under 4nt. (%'s are evaluted differently)
|
||||
#
|
||||
# If it breaks you, mail dougt@netscape.com
|
||||
# and leaf@mozilla.org
|
||||
#
|
||||
!if 0
|
||||
!if defined(CVSROOT)
|
||||
CVS_FLAGS=$(CVS_FLAGS) -d "$(CVSROOT)"
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!ifndef MOZ_CO_FLAGS
|
||||
MOZ_CO_FLAGS = -P
|
||||
!endif
|
||||
|
||||
CVSCO = cvs $(CVS_FLAGS) co $(MOZ_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull NSPR.
|
||||
#// If no NSPR_CO_TAG is specified, use the default static tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!ifndef NSPR_CO_FLAGS
|
||||
NSPR_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
NSPR_CO_FLAGS=$(NSPR_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
|
||||
CVSCO_NSPR = cvs $(CVS_FLAGS) co $(NSPR_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull NSS and PSM libs.
|
||||
#// If no NSS_CO_TAG or PSM_CO_TAG is specified, use the default static tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!ifndef NSS_CO_FLAGS
|
||||
NSS_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
NSS_CO_FLAGS=$(NSS_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_NSS = cvs $(CVS_FLAGS) co $(NSS_CO_FLAGS)
|
||||
|
||||
!ifndef PSM_CO_FLAGS
|
||||
PSM_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
PSM_CO_FLAGS=$(PSM_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_PSM = cvs $(CVS_FLAGS) co $(PSM_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull LDAP C SDK client libs.
|
||||
#// If no LDAPCSDK_CO_TAG is specified, use the default tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
|
||||
!ifndef LDAPCSDK_CO_FLAGS
|
||||
LDAPCSDK_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
LDAPCSDK_CO_FLAGS=$(LDAPCSDK_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_LDAPCSDK = cvs $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull accessibility libs.
|
||||
#// If no ACCESSIBLE_CO_TAG is specified, use the default tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!ifndef ACCESSIBLE_CO_FLAGS
|
||||
ACCESSIBLE_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
ACCESSIBLE_CO_FLAGS=$(ACCESSIBLE_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_ACCESSIBLE = cvs $(CVS_FLAGS) co $(ACCESSIBLE_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull new image library.
|
||||
#// If no IMGLIB2_CO_TAG is specified, use the default tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!ifndef IMGLIB2_CO_FLAGS
|
||||
IMGLIB2_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
IMGLIB2_CO_FLAGS=$(IMGLIB2_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_IMGLIB2 = cvs $(CVS_FLAGS) co $(IMGLIB2_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull new image library.
|
||||
#// If no GFX2_CO_TAG is specified, use the default tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!ifndef GFX2_CO_FLAGS
|
||||
GFX2_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
GFX2_CO_FLAGS=$(GFX2_CO_FLAGS) $(CVS_BRANCH)
|
||||
|
||||
CVSCO_GFX2 = cvs $(CVS_FLAGS) co $(GFX2_CO_FLAGS)
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Figure out how to pull the internal libart
|
||||
#// (only pulled and built if MOZ_INTERNAL_LIBART_LGPL is set)
|
||||
#// If no MOZ_INTERNAL_LIBART_CO_TAG is specified, use the default tag
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!if defined(MOZ_SVG) && !defined(MOZ_INTERNAL_LIBART_LGPL)
|
||||
ERR_MESSAGE = ^
|
||||
You are trying to build Mozilla with SVG support (MOZ_SVG=1), but you ^
|
||||
haven not specified that mozilla/other-licenses/libart_lgpl should be ^
|
||||
pulled and built. At the moment Mozilla SVG builds need this patched ^
|
||||
version of libart. You either need to disable SVG support (unset MOZ_SVG) ^
|
||||
or enable pulling and building by setting MOZ_INTERNAL_LIBART_LGPL=1.^
|
||||
^
|
||||
If you choose to pull and build libart, note that it is only licensed^
|
||||
under the terms of the LGPL, not the MPL. (Which is why you have to opt^
|
||||
in explicitly.)
|
||||
!endif
|
||||
|
||||
!if defined(MOZ_INTERNAL_LIBART_LGPL)
|
||||
|
||||
!ifndef MOZ_INTERNAL_LIBART_CO_FLAGS
|
||||
MOZ_INTERNAL_LIBART_CO_FLAGS=$(MOZ_CO_FLAGS)
|
||||
!endif
|
||||
|
||||
!if "$(MOZ_INTERNAL_LIBART_CO_TAG)" != ""
|
||||
MOZ_INTERNAL_LIBART_CO_FLAGS=$(MOZ_INTERNAL_LIBART_CO_FLAGS) -r $(MOZ_INTERNAL_LIBART_CO_TAG)
|
||||
!else
|
||||
MOZ_INTERNAL_LIBART_CO_FLAGS=$(MOZ_INTERNAL_LIBART_CO_FLAGS) $(CVS_BRANCH)
|
||||
!endif
|
||||
|
||||
CVSCO_MOZ_INTERNAL_LIBART = cvs $(CVS_FLAGS) co $(MOZ_INTERNAL_LIBART_CO_FLAGS)
|
||||
|
||||
!endif
|
||||
|
||||
## The master target
|
||||
############################################################
|
||||
|
||||
pull_and_build_all: pull_all build_all_dep
|
||||
|
||||
|
||||
## Rules for pulling the source from the cvs repository
|
||||
############################################################
|
||||
|
||||
pull_clobber_and_build_all: pull_all clobber_all build_all
|
||||
|
||||
!if !defined(MOZ_INTERNAL_LIBART_LGPL)
|
||||
pull_all: pull_nspr pull_psm pull_ldapcsdk pull_accessible pull_gfx2 pull_imglib2 pull_seamonkey
|
||||
!else
|
||||
pull_all: pull_nspr pull_psm pull_ldapcsdk pull_accessible pull_gfx2 pull_imglib2 pull_moz_internal_libart pull_seamonkey
|
||||
!endif
|
||||
|
||||
pull_nspr: pull_clientmak
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_NSPR) mozilla/nsprpub
|
||||
|
||||
pull_nss:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_NSS) mozilla/security/coreconf
|
||||
$(CVSCO_NSS) mozilla/security/nss
|
||||
|
||||
pull_psm: pull_nss
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_PSM) mozilla/security/manager
|
||||
$(CVSCO_PSM) mozilla/security/makefile.win
|
||||
|
||||
pull_ldapcsdk:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_LDAPCSDK) mozilla/directory/c-sdk
|
||||
|
||||
pull_accessible:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_ACCESSIBLE) mozilla/accessible
|
||||
|
||||
pull_gfx2:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_GFX2) mozilla/gfx2
|
||||
|
||||
pull_imglib2:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_IMGLIB2) mozilla/modules/libpr0n
|
||||
|
||||
!if defined(MOZ_INTERNAL_LIBART_LGPL)
|
||||
pull_moz_internal_libart:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO_MOZ_INTERNAL_LIBART) mozilla/other-licenses/libart_lgpl
|
||||
!endif
|
||||
|
||||
pull_xpconnect: pull_nspr
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO) mozilla/include
|
||||
$(CVSCO) mozilla/config
|
||||
$(CVSCO) -l mozilla/js
|
||||
$(CVSCO) -l mozilla/js/src
|
||||
$(CVSCO) mozilla/js/src/fdlibm
|
||||
$(CVSCO) mozilla/js/src/xpconnect
|
||||
$(CVSCO) mozilla/modules/libreg
|
||||
$(CVSCO) mozilla/xpcom
|
||||
$(CVSCO) mozilla/string
|
||||
|
||||
# pull either layout only or seamonkey the browser
|
||||
pull_layout:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO) RaptorWin
|
||||
|
||||
pull_seamonkey: pull_clientmak
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO) SeaMonkeyAll
|
||||
|
||||
pull_clientmak:
|
||||
cd $(MOZ_SRC)\.
|
||||
$(CVSCO) mozilla/client.mak
|
||||
|
||||
############################################################
|
||||
|
||||
# nmake has to be hardcoded, or we have to depend on mozilla/config
|
||||
# being pulled already to figure out what $(NMAKE) should be.
|
||||
|
||||
clobber_all: clobber_nspr clobber_ldapcsdk clobber_psm clobber_seamonkey
|
||||
|
||||
build_all: build_nspr build_ldapcsdk build_seamonkey
|
||||
|
||||
build_all_dep: depend libs
|
||||
|
||||
distclean:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\directory\c-sdk
|
||||
gmake -f gmakefile.win distclean MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
|
||||
gmake -f gmakefile.win distclean MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)
|
||||
nmake /f client.mak clobber_psm
|
||||
nmake /f client.mak clobber_seamonkey
|
||||
|
||||
clobber_ldapcsdk:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\directory\c-sdk
|
||||
gmake -f gmakefile.win clobber_all MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED) \
|
||||
SHELL=sh
|
||||
|
||||
clobber_nspr:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
|
||||
gmake -f gmakefile.win clobber_all MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
|
||||
|
||||
clobber_psm:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\security
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
clobber_xpconnect:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
-rd /s /q dist
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
|
||||
gmake -f gmakefile.win clobber_all MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
|
||||
nmake -f makefile.win clobber_all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
|
||||
nmake -f makefile.win clobber_all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
|
||||
nmake -f makefile.win clobber_all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
|
||||
nmake -f makefile.win clobber_all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js
|
||||
nmake -f makefile.win clobber_all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src\xpconnect
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
clobber_seamonkey:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
-rd /s /q dist
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
depend: export
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
nmake -f makefile.win depend
|
||||
|
||||
depend_xpconnect:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
|
||||
nmake -f makefile.win depend
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
|
||||
nmake -f makefile.win depend
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
|
||||
nmake -f makefile.win depend
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
|
||||
nmake -f makefile.win depend
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src
|
||||
nmake -f makefile.win depend
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src\xpconnect
|
||||
nmake -f makefile.win depend
|
||||
|
||||
build_nspr:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
|
||||
gmake -f gmakefile.win MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
|
||||
|
||||
build_ldapcsdk:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\directory\c-sdk
|
||||
gmake -f gmakefile.win MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED) SHELL=sh
|
||||
|
||||
build_psm:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\security
|
||||
nmake -f makefile.win
|
||||
|
||||
build_xpconnect: build_nspr
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
|
||||
nmake -f makefile.win all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
|
||||
nmake -f makefile.win all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
|
||||
nmake -f makefile.win export
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
|
||||
nmake -f makefile.win all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
|
||||
nmake -f makefile.win libs
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src
|
||||
nmake -f makefile.win all
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src\xpconnect
|
||||
nmake -f makefile.win all
|
||||
|
||||
build_seamonkey:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
nmake -f makefile.win all
|
||||
|
||||
build_client:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win all
|
||||
|
||||
build_layout:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win all
|
||||
|
||||
build_dist:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win all
|
||||
|
||||
libs:
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
nmake -f makefile.win libs
|
||||
|
||||
export: build_nspr build_ldapcsdk
|
||||
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
|
||||
nmake -f makefile.win export
|
||||
|
||||
clobber_dist:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
clobber_client:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
clobber_layout:
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake -f makefile.win clobber_all
|
||||
|
||||
browse_info::
|
||||
cd $(MOZ_SRC)\$(MOZ_TOP)
|
||||
-dir /s /b *.sbr > sbrlist.tmp
|
||||
-bscmake /Es /o mozilla.bsc @sbrlist.tmp
|
||||
-rm sbrlist.tmp
|
||||
|
||||
regchrome::
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake /f makefile.win regchrome
|
||||
|
||||
deliver::
|
||||
@cd $(MOZ_SRC)\mozilla\.
|
||||
nmake /f makefile.win splitsymbols
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Utility stuff...
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
# Verify that MOZ_SRC is set correctly
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
# Check to see if it is set at all
|
||||
!if "$(MOZ_SRC)"==""
|
||||
MOZ_SRC = $(MAKEDIR)\..
|
||||
!endif
|
||||
|
||||
#
|
||||
# create a temp file at the root and make sure it is visible from MOZ_SRC
|
||||
#
|
||||
!if [copy $(MAKEDIR)\client.mak $(MAKEDIR)\xyzzy.tmp > NUL] == 0
|
||||
!endif
|
||||
|
||||
!if !EXIST( $(MOZ_SRC)\mozilla\xyzzy.tmp )
|
||||
ERR_MESSAGE=$(ERR_MESSAGE)^
|
||||
MOZ_SRC isn't set correctly: [$(MOZ_SRC)\mozilla]!=[$(MAKEDIR)]
|
||||
!endif
|
||||
|
||||
!if [del $(MAKEDIR)\xyzzy.tmp]
|
||||
!endif
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
# Verify that MOZ_BITS is set
|
||||
#//------------------------------------------------------------------------
|
||||
!if !defined(MOZ_BITS)
|
||||
ERR_MESSAGE=$(ERR_MESSAGE)^
|
||||
Environment variable MOZ_BITS isn't set.
|
||||
!endif
|
||||
|
||||
!if !defined(MOZ_TOOLS)
|
||||
ERR_MESSAGE=$(ERR_MESSAGE)^
|
||||
Environment variable MOZ_TOOLS isn't set.
|
||||
!endif
|
||||
|
||||
|
||||
#//------------------------------------------------------------------------
|
||||
#// Display error
|
||||
#//------------------------------------------------------------------------
|
||||
|
||||
!if "$(ERR_MESSAGE)" != ""
|
||||
ERR_MESSAGE = ^
|
||||
client.mak: ^
|
||||
$(ERR_MESSAGE) ^
|
||||
^
|
||||
client.mak: usage^
|
||||
^
|
||||
nmake -f client.mak [MOZ_BRANCH=<cvs_branch_name>] ^
|
||||
[MOZ_DATE=<cvs_date>]^
|
||||
[pull_and_build_all]^
|
||||
[pull_all]^
|
||||
[build_all]^
|
||||
^
|
||||
Environment variables:^
|
||||
^
|
||||
MOZ_BITS set to 32^
|
||||
MOZ_TOOLS set to the directory containing the needed tools ^
|
||||
|
||||
!ERROR $(ERR_MESSAGE)
|
||||
|
||||
!endif
|
||||
@@ -1,650 +0,0 @@
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Stephen Lamm
|
||||
|
||||
# Build the Mozilla client.
|
||||
#
|
||||
# This needs CVSROOT set to work, e.g.,
|
||||
# setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
|
||||
# or
|
||||
# setenv CVSROOT :pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot
|
||||
#
|
||||
# To checkout and build a tree,
|
||||
# 1. cvs co mozilla/client.mk
|
||||
# 2. cd mozilla
|
||||
# 3. gmake -f client.mk
|
||||
#
|
||||
# Other targets (gmake -f client.mk [targets...]),
|
||||
# checkout
|
||||
# build
|
||||
# clean (realclean is now the same as clean)
|
||||
# distclean
|
||||
#
|
||||
# See http://www.mozilla.org/build/unix.html for more information.
|
||||
#
|
||||
# Options:
|
||||
# MOZ_OBJDIR - Destination object directory
|
||||
# MOZ_CO_DATE - Date tag to use for checkout (default: none)
|
||||
# MOZ_CO_MODULE - Module to checkout (default: SeaMonkeyAll)
|
||||
# MOZ_CVS_FLAGS - Flags to pass cvs (default: -q -z3)
|
||||
# MOZ_CO_FLAGS - Flags to pass after 'cvs co' (default: -P)
|
||||
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
|
||||
# MOZ_CO_BRANCH - Branch tag (Deprecated. Use MOZ_CO_TAG below.)
|
||||
#
|
||||
|
||||
#######################################################################
|
||||
# Checkout Tags
|
||||
#
|
||||
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
|
||||
# and commit this file on that tag.
|
||||
MOZ_CO_TAG = NETSCAPE_7_0_RTM
|
||||
NSPR_CO_TAG = NETSCAPE_7_0_RTM
|
||||
PSM_CO_TAG = NETSCAPE_7_0_RTM
|
||||
NSS_CO_TAG = NETSCAPE_7_0_RTM
|
||||
LDAPCSDK_CO_TAG = NETSCAPE_7_0_RTM
|
||||
ACCESSIBLE_CO_TAG = NETSCAPE_7_0_RTM
|
||||
GFX2_CO_TAG = NETSCAPE_7_0_RTM
|
||||
IMGLIB2_CO_TAG = NETSCAPE_7_0_RTM
|
||||
BUILD_MODULES = all
|
||||
|
||||
#######################################################################
|
||||
# Defines
|
||||
#
|
||||
CVS = cvs
|
||||
|
||||
CWD := $(shell pwd)
|
||||
|
||||
ifeq "$(CWD)" "/"
|
||||
CWD := /.
|
||||
endif
|
||||
|
||||
ifneq (, $(wildcard client.mk))
|
||||
# Ran from mozilla directory
|
||||
ROOTDIR := $(shell dirname $(CWD))
|
||||
TOPSRCDIR := $(CWD)
|
||||
else
|
||||
# Ran from mozilla/.. directory (?)
|
||||
ROOTDIR := $(CWD)
|
||||
TOPSRCDIR := $(CWD)/mozilla
|
||||
endif
|
||||
|
||||
# on os2, TOPSRCDIR may have two forward slashes in a row, which doesn't
|
||||
# work; replace first instance with one forward slash
|
||||
TOPSRCDIR := $(shell echo "$(TOPSRCDIR)" | sed -e 's%//%/%')
|
||||
|
||||
ifndef TOPSRCDIR_MOZ
|
||||
TOPSRCDIR_MOZ=$(TOPSRCDIR)
|
||||
endif
|
||||
|
||||
# if ROOTDIR equals only drive letter (i.e. "C:"), set to "/"
|
||||
DIRNAME := $(shell echo "$(ROOTDIR)" | sed -e 's/^.://')
|
||||
ifeq ($(DIRNAME),)
|
||||
ROOTDIR := /.
|
||||
endif
|
||||
|
||||
AUTOCONF := autoconf
|
||||
MKDIR := mkdir
|
||||
SH := /bin/sh
|
||||
ifndef MAKE
|
||||
MAKE := gmake
|
||||
endif
|
||||
|
||||
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
|
||||
ifdef CONFIG_GUESS_SCRIPT
|
||||
CONFIG_GUESS = $(shell $(CONFIG_GUESS_SCRIPT))
|
||||
else
|
||||
_IS_FIRST_CHECKOUT := 1
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS
|
||||
|
||||
# Add the CVS root to CVS_FLAGS if needed
|
||||
CVS_ROOT_IN_TREE := $(shell cat $(TOPSRCDIR)/CVS/Root 2>/dev/null)
|
||||
ifneq ($(CVS_ROOT_IN_TREE),)
|
||||
ifneq ($(CVS_ROOT_IN_TREE),$(CVSROOT))
|
||||
CVS_FLAGS := -d $(CVS_ROOT_IN_TREE)
|
||||
endif
|
||||
endif
|
||||
|
||||
CVSCO = $(strip $(CVS) $(CVS_FLAGS) co $(CVS_CO_FLAGS))
|
||||
CVSCO_LOGFILE := $(ROOTDIR)/cvsco.log
|
||||
CVSCO_LOGFILE := $(shell echo $(CVSCO_LOGFILE) | sed s%//%/%)
|
||||
|
||||
ifdef MOZ_CO_TAG
|
||||
CVS_CO_FLAGS := -r $(MOZ_CO_TAG)
|
||||
endif
|
||||
|
||||
####################################
|
||||
# Load mozconfig Options
|
||||
|
||||
# See build pages, http://www.mozilla.org/build/unix.html,
|
||||
# for how to set up mozconfig.
|
||||
MOZCONFIG_LOADER := mozilla/build/autoconf/mozconfig2client-mk
|
||||
MOZCONFIG_FINDER := mozilla/build/autoconf/mozconfig-find
|
||||
MOZCONFIG_MODULES := mozilla/build/unix/modules.mk
|
||||
run_for_side_effects := \
|
||||
$(shell cd $(ROOTDIR); \
|
||||
if test "$(_IS_FIRST_CHECKOUT)"; then \
|
||||
$(CVSCO) $(MOZCONFIG_FINDER) $(MOZCONFIG_LOADER) $(MOZCONFIG_MODULES); \
|
||||
else true; \
|
||||
fi; \
|
||||
$(MOZCONFIG_LOADER) $(TOPSRCDIR) mozilla/.mozconfig.mk > mozilla/.mozconfig.out)
|
||||
include $(TOPSRCDIR)/.mozconfig.mk
|
||||
include $(TOPSRCDIR)/build/unix/modules.mk
|
||||
|
||||
####################################
|
||||
# Options that may come from mozconfig
|
||||
|
||||
# Change CVS flags if anonymous root is requested
|
||||
ifdef MOZ_CO_USE_MIRROR
|
||||
CVS_FLAGS := -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
|
||||
endif
|
||||
|
||||
# MOZ_CVS_FLAGS - Basic CVS flags
|
||||
ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
|
||||
CVS_FLAGS := $(CVS_FLAGS) -q -z 3
|
||||
else
|
||||
CVS_FLAGS := $(MOZ_CVS_FLAGS)
|
||||
endif
|
||||
|
||||
# This option is deprecated. The best way to have client.mk pull a tag
|
||||
# is to set MOZ_CO_TAG (see above) and commit that change on the tag.
|
||||
ifdef MOZ_CO_BRANCH
|
||||
$(warning Use MOZ_CO_TAG instead of MOZ_CO_BRANCH)
|
||||
CVS_CO_FLAGS := -r $(MOZ_CO_BRANCH)
|
||||
endif
|
||||
|
||||
# MOZ_CO_FLAGS - Anything that we should use on all checkouts
|
||||
ifeq "$(origin MOZ_CO_FLAGS)" "undefined"
|
||||
CVS_CO_FLAGS := $(CVS_CO_FLAGS) -P
|
||||
else
|
||||
CVS_CO_FLAGS := $(CVS_CO_FLAGS) $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
|
||||
ifdef MOZ_CO_DATE
|
||||
CVS_CO_DATE_FLAGS := -D "$(MOZ_CO_DATE)"
|
||||
endif
|
||||
|
||||
ifdef MOZ_OBJDIR
|
||||
OBJDIR := $(MOZ_OBJDIR)
|
||||
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
|
||||
else
|
||||
OBJDIR := $(TOPSRCDIR)
|
||||
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS)
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS defines for PSM
|
||||
#
|
||||
PSM_CO_MODULE= mozilla/security/manager
|
||||
PSM_CO_FLAGS := -P -A
|
||||
ifdef MOZ_CO_FLAGS
|
||||
PSM_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef PSM_CO_TAG
|
||||
PSM_CO_FLAGS := $(PSM_CO_FLAGS) -r $(PSM_CO_TAG)
|
||||
endif
|
||||
CVSCO_PSM = $(CVS) $(CVS_FLAGS) co $(PSM_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(PSM_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defines for NSS
|
||||
#
|
||||
NSS_CO_MODULE = mozilla/security/nss \
|
||||
mozilla/security/coreconf \
|
||||
$(NULL)
|
||||
|
||||
NSS_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
NSS_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef NSS_CO_TAG
|
||||
NSS_CO_FLAGS := $(NSS_CO_FLAGS) -r $(NSS_CO_TAG)
|
||||
endif
|
||||
# Cannot pull static tags by date
|
||||
ifeq ($(NSS_CO_TAG),NSS_CLIENT_TAG)
|
||||
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
|
||||
else
|
||||
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSS_CO_MODULE)
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS defines for NSPR
|
||||
#
|
||||
NSPR_CO_MODULE = mozilla/nsprpub
|
||||
NSPR_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
NSPR_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef NSPR_CO_TAG
|
||||
NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) -r $(NSPR_CO_TAG)
|
||||
endif
|
||||
# Cannot pull static tags by date
|
||||
ifeq ($(NSPR_CO_TAG),NSPRPUB_CLIENT_TAG)
|
||||
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
|
||||
else
|
||||
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSPR_CO_MODULE)
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS defines for the C LDAP SDK
|
||||
#
|
||||
LDAPCSDK_CO_MODULE = mozilla/directory/c-sdk
|
||||
LDAPCSDK_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
LDAPCSDK_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef LDAPCSDK_CO_TAG
|
||||
LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) -r $(LDAPCSDK_CO_TAG)
|
||||
endif
|
||||
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defines for the C LDAP SDK
|
||||
#
|
||||
ACCESSIBLE_CO_MODULE = mozilla/accessible
|
||||
ACCESSIBLE_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
ACCESSIBLE_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef ACCESSIBLE_CO_TAG
|
||||
ACCESSIBLE_CO_FLAGS := $(ACCESSIBLE_CO_FLAGS) -r $(ACCESSIBLE_CO_TAG)
|
||||
endif
|
||||
CVSCO_ACCESSIBLE = $(CVS) $(CVS_FLAGS) co $(ACCESSIBLE_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(ACCESSIBLE_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defines for gfx2
|
||||
#
|
||||
GFX2_CO_MODULE = mozilla/gfx2
|
||||
GFX2_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
GFX2_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef GFX2_CO_TAG
|
||||
GFX2_CO_FLAGS := $(GFX2_CO_FLAGS) -r $(GFX2_CO_TAG)
|
||||
endif
|
||||
CVSCO_GFX2 = $(CVS) $(CVS_FLAGS) co $(GFX2_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(GFX2_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defines for new image library
|
||||
#
|
||||
IMGLIB2_CO_MODULE = mozilla/modules/libpr0n
|
||||
IMGLIB2_CO_FLAGS := -P
|
||||
ifdef MOZ_CO_FLAGS
|
||||
IMGLIB2_CO_FLAGS := $(MOZ_CO_FLAGS)
|
||||
endif
|
||||
ifdef IMGLIB2_CO_TAG
|
||||
IMGLIB2_CO_FLAGS := $(IMGLIB2_CO_FLAGS) -r $(IMGLIB2_CO_TAG)
|
||||
endif
|
||||
CVSCO_IMGLIB2 = $(CVS) $(CVS_FLAGS) co $(IMGLIB2_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(IMGLIB2_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defines for standalone modules
|
||||
#
|
||||
ifneq ($(BUILD_MODULES),all)
|
||||
MOZ_CO_MODULE := $(filter-out $(NSPRPUB_DIR) security directory/c-sdk, $(BUILD_MODULE_CVS))
|
||||
MOZ_CO_MODULE += allmakefiles.sh client.mk aclocal.m4 configure configure.in
|
||||
MOZ_CO_MODULE += Makefile.in
|
||||
MOZ_CO_MODULE := $(addprefix mozilla/, $(MOZ_CO_MODULE))
|
||||
|
||||
NOSUBDIRS_MODULE := $(addprefix mozilla/, $(BUILD_MODULE_CVS_NS))
|
||||
ifneq ($(NOSUBDIRS_MODULE),)
|
||||
CVSCO_NOSUBDIRS := $(CVSCO) -l $(CVS_CO_DATE_FLAGS) $(NOSUBDIRS_MODULE)
|
||||
endif
|
||||
|
||||
ifeq (,$(filter $(NSPRPUB_DIR), $(BUILD_MODULE_CVS)))
|
||||
CVSCO_NSPR :=
|
||||
endif
|
||||
ifeq (,$(filter security security/manager, $(BUILD_MODULE_CVS)))
|
||||
CVSCO_PSM :=
|
||||
CVSCO_NSS :=
|
||||
endif
|
||||
ifeq (,$(filter directory/c-sdk, $(BUILD_MODULE_CVS)))
|
||||
CVSCO_LDAPCSDK :=
|
||||
endif
|
||||
ifeq (,$(filter accessible, $(BUILD_MODULE_CVS)))
|
||||
CVSCO_ACCESSIBLE :=
|
||||
endif
|
||||
ifeq (,$(filter gfx2, $(BUILD_MODULE_CVS)))
|
||||
CVSCO_GFX2 :=
|
||||
endif
|
||||
ifeq (,$(filter modules/libpr0n, $(BUILD_MODULE_CVS)))
|
||||
CVSCO_IMGLIB2 :=
|
||||
endif
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS defines for SeaMonkey
|
||||
#
|
||||
ifeq ($(MOZ_CO_MODULE),)
|
||||
MOZ_CO_MODULE := SeaMonkeyAll
|
||||
endif
|
||||
CVSCO_SEAMONKEY := $(CVSCO) $(CVS_CO_DATE_FLAGS) $(MOZ_CO_MODULE)
|
||||
|
||||
####################################
|
||||
# CVS defined for libart (pulled and built if MOZ_INTERNAL_LIBART_LGPL is set)
|
||||
#
|
||||
CVSCO_LIBART := $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/other-licenses/libart_lgpl
|
||||
|
||||
ifdef MOZ_INTERNAL_LIBART_LGPL
|
||||
FASTUPDATE_LIBART := fast_update $(CVSCO_LIBART)
|
||||
CHECKOUT_LIBART := cvs_co $(CVSCO_LIBART)
|
||||
else
|
||||
CHECKOUT_LIBART := true
|
||||
FASTUPDATE_LIBART := true
|
||||
endif
|
||||
|
||||
####################################
|
||||
# CVS defines for Calendar (pulled and built if MOZ_CALENDAR is set)
|
||||
#
|
||||
CVSCO_CALENDAR := $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/calendar
|
||||
|
||||
ifdef MOZ_CALENDAR
|
||||
FASTUPDATE_CALENDAR := fast_update $(CVSCO_CALENDAR)
|
||||
CHECKOUT_CALENDAR := cvs_co $(CVSCO_CALENDAR)
|
||||
else
|
||||
CHECKOUT_CALENDAR := true
|
||||
FASTUPDATE_CALENDAR := true
|
||||
endif
|
||||
|
||||
|
||||
# because some cygwin tools can't handle native dos-drive paths & vice-versa
|
||||
# force configure to use a relative path for --srcdir
|
||||
# need a better check for win32
|
||||
# and we need to get OBJDIR earlier
|
||||
ifdef MOZ_TOOLS
|
||||
_tmpobjdir := $(shell cygpath -u $(OBJDIR))
|
||||
_abs2rel := $(shell cygpath -w $(TOPSRCDIR)/build/unix/abs2rel.pl | sed -e 's|\\|/|g')
|
||||
_OBJ2SRCPATH := $(shell $(_abs2rel) $(TOPSRCDIR) $(_tmpobjdir))
|
||||
endif
|
||||
|
||||
#######################################################################
|
||||
# Rules
|
||||
#
|
||||
|
||||
# Print out any options loaded from mozconfig.
|
||||
all build checkout clean depend distclean export libs install realclean::
|
||||
@if test -f .mozconfig.out; then \
|
||||
cat .mozconfig.out; \
|
||||
rm -f .mozconfig.out; \
|
||||
else true; \
|
||||
fi
|
||||
|
||||
ifdef _IS_FIRST_CHECKOUT
|
||||
all:: checkout build
|
||||
else
|
||||
all:: checkout alldep
|
||||
endif
|
||||
|
||||
# Windows equivalents
|
||||
pull_all: checkout
|
||||
build_all: build
|
||||
build_all_dep: alldep
|
||||
build_all_depend: alldep
|
||||
clobber clobber_all: clean
|
||||
pull_and_build_all: checkout alldep
|
||||
|
||||
# Do everything from scratch
|
||||
everything: checkout clean build
|
||||
|
||||
####################################
|
||||
# CVS checkout
|
||||
#
|
||||
checkout::
|
||||
# @: Backup the last checkout log.
|
||||
@if test -f $(CVSCO_LOGFILE) ; then \
|
||||
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
|
||||
else true; \
|
||||
fi
|
||||
ifdef RUN_AUTOCONF_LOCALLY
|
||||
@echo "Removing local configures" ; \
|
||||
cd $(ROOTDIR) && \
|
||||
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
|
||||
mozilla/directory/c-sdk/configure
|
||||
endif
|
||||
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
|
||||
@echo '$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk'; \
|
||||
cd $(ROOTDIR) && \
|
||||
$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk
|
||||
@cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_checkout
|
||||
|
||||
real_checkout:
|
||||
# @: Start the checkout. Split the output to the tty and a log file. \
|
||||
# : If it fails, touch an error file because "tee" hides the error.
|
||||
@failed=.cvs-failed.tmp; rm -f $$failed*; \
|
||||
cvs_co() { echo "$$@" ; \
|
||||
("$$@" || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
|
||||
if test -f $$failed; then false; else true; fi; }; \
|
||||
cvs_co $(CVSCO_NSPR) && \
|
||||
cvs_co $(CVSCO_NSS) && \
|
||||
cvs_co $(CVSCO_PSM) && \
|
||||
cvs_co $(CVSCO_LDAPCSDK) && \
|
||||
cvs_co $(CVSCO_ACCESSIBLE) && \
|
||||
cvs_co $(CVSCO_GFX2) && \
|
||||
cvs_co $(CVSCO_IMGLIB2) && \
|
||||
$(CHECKOUT_CALENDAR) && \
|
||||
$(CHECKOUT_LIBART) && \
|
||||
cvs_co $(CVSCO_SEAMONKEY) && \
|
||||
cvs_co $(CVSCO_NOSUBDIRS)
|
||||
@echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE)
|
||||
# @: Check the log for conflicts. ;
|
||||
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
|
||||
if test "$$conflicts" ; then \
|
||||
echo "$(MAKE): *** Conflicts during checkout." ;\
|
||||
echo "$$conflicts" ;\
|
||||
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
|
||||
false; \
|
||||
else true; \
|
||||
fi
|
||||
ifdef RUN_AUTOCONF_LOCALLY
|
||||
@echo Generating configures using $(AUTOCONF) ; \
|
||||
cd $(TOPSRCDIR) && $(AUTOCONF) && \
|
||||
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
|
||||
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
|
||||
endif
|
||||
|
||||
fast-update:
|
||||
# @: Backup the last checkout log.
|
||||
@if test -f $(CVSCO_LOGFILE) ; then \
|
||||
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
|
||||
else true; \
|
||||
fi
|
||||
ifdef RUN_AUTOCONF_LOCALLY
|
||||
@echo "Removing local configures" ; \
|
||||
cd $(ROOTDIR) && \
|
||||
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
|
||||
mozilla/directory/c-sdk/configure
|
||||
endif
|
||||
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
|
||||
@echo '$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk'; \
|
||||
cd $(ROOTDIR) && \
|
||||
$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk
|
||||
@cd $(TOPSRCDIR) && \
|
||||
$(MAKE) -f client.mk real_fast-update
|
||||
|
||||
real_fast-update:
|
||||
# @: Start the update. Split the output to the tty and a log file. \
|
||||
# : If it fails, touch an error file because "tee" hides the error.
|
||||
@failed=.fast_update-failed.tmp; rm -f $$failed*; \
|
||||
fast_update() { (config/cvsco-fast-update.pl $$@ || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
|
||||
if test -f $$failed; then false; else true; fi; }; \
|
||||
cvs_co() { echo "$$@" ; \
|
||||
("$$@" || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
|
||||
if test -f $$failed; then false; else true; fi; }; \
|
||||
fast_update $(CVSCO_NSPR) && \
|
||||
cd $(ROOTDIR) && \
|
||||
failed=mozilla/.fast_update-failed.tmp && \
|
||||
cvs_co $(CVSCO_NSS) && \
|
||||
failed=.fast_update-failed.tmp && \
|
||||
cd mozilla && \
|
||||
fast_update $(CVSCO_PSM) && \
|
||||
fast_update $(CVSCO_LDAPCSDK) && \
|
||||
fast_update $(CVSCO_ACCESSIBLE) && \
|
||||
fast_update $(CVSCO_GFX2) && \
|
||||
fast_update $(CVSCO_IMGLIB2) && \
|
||||
$(FASTUPDATE_CALENDAR) && \
|
||||
$(FASTUPDATE_LIBART) && \
|
||||
fast_update $(CVSCO_SEAMONKEY) && \
|
||||
fast_update $(CVSCO_NOSUBDIRS)
|
||||
@echo "fast_update finish: "`date` | tee -a $(CVSCO_LOGFILE)
|
||||
# @: Check the log for conflicts. ;
|
||||
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
|
||||
if test "$$conflicts" ; then \
|
||||
echo "$(MAKE): *** Conflicts during fast-update." ;\
|
||||
echo "$$conflicts" ;\
|
||||
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
|
||||
false; \
|
||||
else true; \
|
||||
fi
|
||||
ifdef RUN_AUTOCONF_LOCALLY
|
||||
@echo Generating configures using $(AUTOCONF) ; \
|
||||
cd $(TOPSRCDIR) && $(AUTOCONF) && \
|
||||
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
|
||||
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
|
||||
endif
|
||||
|
||||
####################################
|
||||
# Web configure
|
||||
|
||||
WEBCONFIG_FILE := $(HOME)/.mozconfig
|
||||
|
||||
MOZCONFIG2CONFIGURATOR := build/autoconf/mozconfig2configurator
|
||||
webconfig:
|
||||
@cd $(TOPSRCDIR); \
|
||||
url=`$(MOZCONFIG2CONFIGURATOR) $(TOPSRCDIR)`; \
|
||||
echo Running mozilla with the following url: ;\
|
||||
echo ;\
|
||||
echo $$url ;\
|
||||
mozilla -remote "openURL($$url)" || \
|
||||
netscape -remote "openURL($$url)" || \
|
||||
mozilla $$url || \
|
||||
netscape $$url ;\
|
||||
echo ;\
|
||||
echo 1. Fill out the form on the browser. ;\
|
||||
echo 2. Save the results to $(WEBCONFIG_FILE)
|
||||
|
||||
#####################################################
|
||||
# First Checkout
|
||||
|
||||
ifdef _IS_FIRST_CHECKOUT
|
||||
# First time, do build target in a new process to pick up new files.
|
||||
build::
|
||||
$(MAKE) -f $(TOPSRCDIR)/client.mk build
|
||||
else
|
||||
|
||||
#####################################################
|
||||
# After First Checkout
|
||||
|
||||
|
||||
####################################
|
||||
# Configure
|
||||
|
||||
CONFIG_STATUS := $(wildcard $(OBJDIR)/config.status)
|
||||
CONFIG_CACHE := $(wildcard $(OBJDIR)/config.cache)
|
||||
|
||||
ifdef RUN_AUTOCONF_LOCALLY
|
||||
EXTRA_CONFIG_DEPS := \
|
||||
$(TOPSRCDIR)/aclocal.m4 \
|
||||
$(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \
|
||||
$(NULL)
|
||||
|
||||
$(TOPSRCDIR)/configure: $(TOPSRCDIR)/configure.in $(EXTRA_CONFIG_DEPS)
|
||||
@echo Generating $@ using autoconf
|
||||
cd $(TOPSRCDIR); $(AUTOCONF)
|
||||
endif
|
||||
|
||||
CONFIG_STATUS_DEPS_L10N := $(wildcard $(TOPSRCDIR)/l10n/makefiles.all)
|
||||
|
||||
CONFIG_STATUS_DEPS := \
|
||||
$(TOPSRCDIR)/configure \
|
||||
$(TOPSRCDIR)/allmakefiles.sh \
|
||||
$(TOPSRCDIR)/.mozconfig.mk \
|
||||
$(wildcard $(TOPSRCDIR)/nsprpub/configure) \
|
||||
$(wildcard $(TOPSRCDIR)/directory/c-sdk/configure) \
|
||||
$(wildcard $(TOPSRCDIR)/mailnews/makefiles) \
|
||||
$(CONFIG_STATUS_DEPS_L10N) \
|
||||
$(wildcard $(TOPSRCDIR)/themes/makefiles) \
|
||||
$(NULL)
|
||||
|
||||
# configure uses the program name to determine @srcdir@. Calling it without
|
||||
# $(TOPSRCDIR) will set @srcdir@ to "."; otherwise, it is set to the full
|
||||
# path of $(TOPSRCDIR).
|
||||
ifeq ($(TOPSRCDIR),$(OBJDIR))
|
||||
CONFIGURE := ./configure
|
||||
else
|
||||
CONFIGURE := $(TOPSRCDIR)/configure
|
||||
endif
|
||||
|
||||
ifdef _OBJ2SRCPATH
|
||||
CONFIGURE_ARGS := --srcdir=$(_OBJ2SRCPATH) $(CONFIGURE_ARGS)
|
||||
endif
|
||||
|
||||
$(OBJDIR)/Makefile $(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
|
||||
@if test ! -d $(OBJDIR); then $(MKDIR) $(OBJDIR); else true; fi
|
||||
@echo cd $(OBJDIR);
|
||||
@echo $(CONFIGURE) $(CONFIGURE_ARGS)
|
||||
@cd $(OBJDIR) && $(CONFIGURE_ENV_ARGS) $(CONFIGURE) $(CONFIGURE_ARGS) \
|
||||
|| ( echo "*** Fix above errors and then restart with\
|
||||
\"$(MAKE) -f client.mk build\"" && exit 1 )
|
||||
@touch $(OBJDIR)/Makefile
|
||||
|
||||
ifdef CONFIG_STATUS
|
||||
$(OBJDIR)/config/autoconf.mk: $(TOPSRCDIR)/config/autoconf.mk.in
|
||||
cd $(OBJDIR); \
|
||||
CONFIG_FILES=config/autoconf.mk ./config.status
|
||||
endif
|
||||
|
||||
|
||||
####################################
|
||||
# Depend
|
||||
|
||||
depend:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
|
||||
$(MOZ_MAKE) export && $(MOZ_MAKE) depend
|
||||
|
||||
####################################
|
||||
# Build it
|
||||
|
||||
build:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
|
||||
$(MOZ_MAKE)
|
||||
|
||||
####################################
|
||||
# Other targets
|
||||
|
||||
# Pass these target onto the real build system
|
||||
install export libs clean realclean distclean alldep:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
|
||||
$(MOZ_MAKE) $@
|
||||
|
||||
cleansrcdir:
|
||||
@cd $(TOPSRCDIR); \
|
||||
if [ -f webshell/embed/gtk/Makefile ]; then \
|
||||
$(MAKE) -C webshell/embed/gtk distclean; \
|
||||
fi; \
|
||||
if [ -f Makefile ]; then \
|
||||
$(MAKE) distclean ; \
|
||||
else \
|
||||
echo "Removing object files from srcdir..."; \
|
||||
rm -fr `find . -type d \( -name .deps -print -o -name CVS \
|
||||
-o -exec test ! -d {}/CVS \; \) -prune \
|
||||
-o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
|
||||
build/autoconf/clean-config.sh; \
|
||||
fi;
|
||||
|
||||
# (! IS_FIRST_CHECKOUT)
|
||||
endif
|
||||
|
||||
.PHONY: checkout real_checkout depend build export libs alldep install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything
|
||||
543
mozilla/directory/c-sdk/build.mk
Normal file
543
mozilla/directory/c-sdk/build.mk
Normal file
@@ -0,0 +1,543 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator client code, released
|
||||
# March 31, 1998.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
COMPVERSIONDIR = $(DEPTH)/directory/c-sdk
|
||||
|
||||
DEFAULT_VENDOR_NAME="Sun Microsystems Inc."
|
||||
DEFAULT_VENDOR_VERSION=600
|
||||
|
||||
LDAPVERS = 60
|
||||
LDAPVERS_SUFFIX = 6.0
|
||||
|
||||
ifndef VENDOR_NAME
|
||||
VENDOR_NAME = $(DEFAULT_VENDOR_NAME)
|
||||
endif
|
||||
|
||||
ifndef VENDOR_VERSION
|
||||
VENDOR_VERSION = $(DEFAULT_VENDOR_VERSION)
|
||||
endif
|
||||
|
||||
__BUILD_MARKER = "\"$(VENDOR_VERSION) $(OS_ARCH)$(OS_RELEASE) \
|
||||
$(USER) $(BUILD_NOTE)\""
|
||||
DEFINES += -D__BUILD_MARKER=$(__BUILD_MARKER)
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
COMPONENT_PULL_METHOD=FTP
|
||||
endif
|
||||
|
||||
ifdef HAVE_CCONF
|
||||
# component tags for internal build only
|
||||
include $(COMPVERSIONDIR)/component_versions.mk
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG), full)
|
||||
DBG_OR_OPT = DBG
|
||||
else
|
||||
DBG_OR_OPT = OPT
|
||||
endif
|
||||
|
||||
# Ldap library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LDAP_LIBNAME = nsldap32v$(LDAPVERS)
|
||||
else
|
||||
LDAP_LIBNAME = ldap$(LDAPVERS)
|
||||
endif
|
||||
DIR_VERSION = $(LDAPVERS_SUFFIX)
|
||||
DIRSDK_VERSION = $(LDAPVERS_SUFFIX)
|
||||
|
||||
# PrLdap library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
PRLDAP_LIBNAME = nsldappr32v$(PRLDAPVERS)
|
||||
else
|
||||
PRLDAP_LIBNAME = prldap$(PRLDAPVERS)
|
||||
endif
|
||||
|
||||
# lber library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LBER_LIBNAME = nslber32v$(LBERVERS)
|
||||
else
|
||||
LBER_LIBNAME = lber$(LBERVERS)
|
||||
endif
|
||||
|
||||
# ldif library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LDIF_LIBNAME = nsldif32v$(LDIFVERS)
|
||||
else
|
||||
LDIF_LIBNAME = ldif$(LDIFVERS)
|
||||
endif
|
||||
|
||||
# iutil library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
IUTIL_LIBNAME = nsiutil32v$(IUTILVERS)
|
||||
else
|
||||
IUTIL_LIBNAME = iutil$(IUTILVERS)
|
||||
endif
|
||||
|
||||
# util library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
UTIL_LIBNAME = nsutil32v$(UTILVERS)
|
||||
else
|
||||
UTIL_LIBNAME = util$(UTILVERS)
|
||||
endif
|
||||
|
||||
# ssl library
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
SSLDAP_LIBNAME = nsldapssl32v$(SSLDAPVERS)
|
||||
else
|
||||
SSLDAP_LIBNAME = ssldap$(SSLDAPVERS)
|
||||
endif
|
||||
|
||||
# nss library
|
||||
NSS_LIBNAME = nss$(NSSVERS)
|
||||
SSL_LIBNAME = ssl$(NSSVERS)
|
||||
STKN_LIBNAME = softokn$(NSSVERS)
|
||||
HYBRID_LIBNAME = freebl_hybrid_$(NSSVERS)
|
||||
PURE32_LIBNAME = freebl_pure32_$(NSSVERS)
|
||||
FREEBL_LIBNAME = freebl*
|
||||
COPYFREEBL = 1
|
||||
|
||||
ifneq ($(USE_64), 1)
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
ifneq ($(OS_TEST),i86pc)
|
||||
COPYFREEBL = 1
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
COPYFREEBL = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
# svrcore library
|
||||
SVRCOREVERS =
|
||||
SVRCOREVERS_SUFFIX =
|
||||
SVRCORE_LIBNAME = svrcore$(SVRCOREVERS)
|
||||
|
||||
#
|
||||
# NSPR library
|
||||
#
|
||||
|
||||
ifeq ($(OS_TARGET), WIN95)
|
||||
PLC_BASENAME=plc$(NSPR_LIBVERSION)
|
||||
PLDS_BASENAME=plds$(NSPR_LIBVERSION)
|
||||
NSPR_BASENAME=nspr$(NSPR_LIBVERSION)
|
||||
else
|
||||
PLC_BASENAME=libplc$(NSPR_LIBVERSION)
|
||||
PLDS_BASENAME=libplds$(NSPR_LIBVERSION)
|
||||
NSPR_BASENAME=libnspr$(NSPR_LIBVERSION)
|
||||
endif
|
||||
|
||||
PLCBASE=plc$(NSPR_LIBVERSION)
|
||||
PLDSBASE=plds$(NSPR_LIBVERSION)
|
||||
NSPRBASE=nspr$(NSPR_LIBVERSION)
|
||||
|
||||
DYNAMICNSPR = -l$(PLCBASE) -l$(PLDSBASE) -l$(NSPRBASE)
|
||||
|
||||
PLC_LIBNAME=plc$(NSPR_LIBVERSION)
|
||||
PLDS_LIBNAME=plds$(NSPR_LIBVERSION)
|
||||
NSPR_LIBNAME=nspr$(NSPR_LIBVERSION)
|
||||
|
||||
#
|
||||
# SASL library
|
||||
#
|
||||
LIBSASL_INCLUDES_LOC = /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/include
|
||||
LIBSASL_LIB_LOC = /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/lib
|
||||
|
||||
ifeq ($(HAVE_SASL_LOCAL), 1)
|
||||
LIBSASL_INCLUDES = /usr/include/sasl
|
||||
LIBSASL_LIBDIR =
|
||||
else
|
||||
LIBSASL_INCLUDES =../../../../../dist/public/libsasl
|
||||
LIBSASL_LIBDIR =../../../../../dist/$(OBJDIR_NAME)/libsasl
|
||||
endif
|
||||
|
||||
SASL_LIBNAME=sasl
|
||||
SASL_BASENAME=sasl32
|
||||
|
||||
################################
|
||||
# LIB ICU (for I18N) #
|
||||
################################
|
||||
# default setting
|
||||
ICU_COMP_NAME = icu
|
||||
ICUOBJDIR=$(OBJDIR_NAME)
|
||||
|
||||
#ifeq ($(OS_ARCH), SunOS)
|
||||
# ifeq ($(OS_TEST),i86pc)
|
||||
# ICUOBJDIR = SunOS5.8_x86_$(DBG_OR_OPT).OBJ
|
||||
# endif
|
||||
#endif
|
||||
# because we don't have a real Win 95 ICU component...
|
||||
ifeq ($(OS_TARGET), WIN95)
|
||||
ICUOBJDIR = WINNT4.0_$(DBG_OR_OPT).OBJ
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
ifeq ($(USE_64), 1)
|
||||
ICUOBJDIR = $(OS_ARCH)$(OS_RELEASE)_64$(OBJDIR_TAG).OBJ
|
||||
else
|
||||
ICUOBJDIR = $(OS_ARCH)$(OS_RELEASE)$(OBJDIR_TAG).OBJ
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), AIX)
|
||||
ICU_VERS_NUM = 2.1
|
||||
ICU_LIBVERSION = 2.1.6
|
||||
LIBICU_RELDATE = 20040126_21.1
|
||||
ICU_RELDATE = 20040126_21.1
|
||||
else
|
||||
ICU_VERS_NUM = 3.2
|
||||
ICU_LIBVERSION = 3.2
|
||||
LIBICU_RELDATE = 20051214
|
||||
ICU_RELDATE = 20051214
|
||||
endif
|
||||
|
||||
ICU_VERSION = $(ICU_RELDATE)
|
||||
ICU_COMP_DIR = lib$(ICU_COMP_NAME)$(ICU_VERS_NUM)
|
||||
ICU_INT=
|
||||
ifeq ($(ICU_INT), 1)
|
||||
LIBICU_INCLUDES_LOC = /share/builds/components/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/include
|
||||
LIBICU_LIB_LOC = /share/builds/components/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/lib
|
||||
else
|
||||
LIBICU_INCLUDES_LOC = /share/builds/integration/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/include
|
||||
LIBICU_LIB_LOC = /share/builds/integration/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/lib
|
||||
endif
|
||||
|
||||
ifneq ($(HAVE_LIBICU_LOCAL), 1)
|
||||
LIBICU_DIR = ../../../../../dist/libicu$(ICU_LIBVERSION)
|
||||
LIBICU_INCLUDES =../../../../../dist/public/libicu
|
||||
LIBICU_LIBDIR =../../../../../dist/$(OBJDIR_NAME)/libicu
|
||||
else
|
||||
LIBICU_DIR =
|
||||
LIBICU_INCLUDES = /usr/include
|
||||
LIBICU_LIBDIR =
|
||||
endif
|
||||
|
||||
ICU_LIBPATH = $(LIBICU_LIBDIR)
|
||||
ICU_INCLUDE = $(LIBICU_INCLUDEDIR)
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
ICU_RELEASE = $(COMPONENTS_DIR)/icu/$(ICU_VERSION)/$(ICUOBJDIR)
|
||||
ICU_LIBNAMES = icuin icuuc icudt
|
||||
ICU_LIBS = $(addsuffix .lib, $(ICU_LIBNAMES))
|
||||
ICUDLL_NAMES = $(addsuffix .dll, $(ICU_LIBNAMES))
|
||||
LIBICU = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
|
||||
ICUOBJNAME = $(ICU_LIBNAMES)
|
||||
else # WINNT
|
||||
ICU_LIBNAMES = icudata icui18n icuuc
|
||||
ICU_SOLIB_NAMES = $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES))
|
||||
ICU_LIBS = $(addsuffix .a, $(ICU_SOLIB_NAMES))
|
||||
ICU_SOLIBS = $(addsuffix .$(DLL_SUFFIX), $(ICU_SOLIB_NAMES))
|
||||
ICUOBJNAME = $(ICU_SOLIBS)
|
||||
LIBICU = $(addprefix $(ICU_LIBPATH)/, $(ICU_SOLIBS))
|
||||
ICULINK = -L$(ICU_LIBPATH) $(addprefix -l, $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES)))
|
||||
ICULINK_STATIC = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
|
||||
|
||||
ifeq ($(OS_ARCH),SOLARIS)
|
||||
ICULINK += -lw
|
||||
endif # Solaris
|
||||
ifeq ($(OS_ARCH),HPUX)
|
||||
#linking with libC is *BAD* on HPUX11
|
||||
ICULINK = -L$(ICU_LIBPATH) $(addprefix -l, $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES)))
|
||||
ICULINK_STATIC = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
|
||||
endif # HPUX
|
||||
ifeq ($(OS_ARCH),Linux)
|
||||
ICULINK += -lresolv
|
||||
ICULINK_STATIC += -lresolv
|
||||
endif # Linux
|
||||
endif #WINNT
|
||||
|
||||
|
||||
RM = rm -f
|
||||
SED = sed
|
||||
|
||||
# uncomment to enable support for LDAP referrals
|
||||
LDAP_REFERRALS = -DLDAP_REFERRALS
|
||||
DEFNETSSL = -DNET_SSL
|
||||
NOLIBLCACHE = -DNO_LIBLCACHE
|
||||
NSDOMESTIC = -DNS_DOMESTIC
|
||||
|
||||
#for including SASL options
|
||||
ifdef HAVE_SASL
|
||||
HAVESASLOPTIONS = -DLDAP_SASLIO_HOOKS -DHAVE_SASL_OPTIONS -DHAVE_SASL_OPTIONS_2
|
||||
else
|
||||
HAVESASLOPTIONS =
|
||||
endif
|
||||
|
||||
ifdef BUILD_OPT
|
||||
LDAP_DEBUG =
|
||||
else
|
||||
LDAP_DEBUG = -DLDAP_DEBUG
|
||||
endif
|
||||
|
||||
ifdef HAVE_LIBICU
|
||||
HAVELIBICU = -DHAVE_LIBICU
|
||||
else
|
||||
HAVELIBICU =
|
||||
endif
|
||||
|
||||
ifdef BUILD_CLU
|
||||
BUILDCLU = 1
|
||||
else
|
||||
BUILDCLU =
|
||||
endif
|
||||
|
||||
#
|
||||
# DEFS are included in CFLAGS
|
||||
#
|
||||
DEFS = $(PLATFORMCFLAGS) $(LDAP_DEBUG) $(HAVELIBICU) \
|
||||
$(CLDAP) $(DEFNETSSL) $(NOLIBLCACHE) \
|
||||
$(LDAP_REFERRALS) $(LDAP_DNS) $(STR_TRANSLATION) \
|
||||
$(LIBLDAP_CHARSETS) $(LIBLDAP_DEF_CHARSET) \
|
||||
$(NSDOMESTIC) $(LDAPSSLIO) $(HAVESASLOPTIONS)
|
||||
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
DIRVER_PROG=$(COMMON_OBJDIR)/dirver.exe
|
||||
else
|
||||
DIRVER_PROG=$(COMMON_OBJDIR)/dirver
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
EXE_SUFFIX=.exe
|
||||
RSC=rc
|
||||
OFFLAG=/Fo
|
||||
else
|
||||
OFFLAG=-o
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
DEFS += -DLINUX2_0 -DLINUX1_2 -DLINUX2_1
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
DLLEXPORTS_PREFIX=/DEF:
|
||||
USE_DLL_EXPORTS_FILE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
DLLEXPORTS_PREFIX=-Blocal -M
|
||||
USE_DLL_EXPORTS_FILE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), IRIX)
|
||||
DLLEXPORTS_PREFIX=-exports_file
|
||||
USE_DLL_EXPORTS_FILE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
DEFS += -Dhpux -D_REENTRANT
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),AIX)
|
||||
DLLEXPORTS_PREFIX=-bE:
|
||||
DL=-ldl
|
||||
USE_DLL_EXPORTS_FILE = 1
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),OSF1)
|
||||
DEFS += -DOSF1V4
|
||||
DL=
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),ReliantUNIX)
|
||||
DL=-ldl
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),UnixWare)
|
||||
DL=
|
||||
endif
|
||||
|
||||
RPATHFLAG = ..:../lib:../../lib:../../../lib:../../../../lib:../lib-private
|
||||
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
# flag to pass to cc when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
|
||||
RPATHFLAG_PREFIX=-Wl,-R,
|
||||
|
||||
# flag to pass to ld when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
|
||||
LDRPATHFLAG_PREFIX=-R
|
||||
|
||||
# OS network libraries
|
||||
PLATFORMLIBS+=-lresolv -lsocket -lnsl -lgen -ldl -lposix4
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), OSF1)
|
||||
# flag to pass to cc when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
|
||||
RPATHFLAG_PREFIX=-Wl,-rpath,
|
||||
|
||||
# flag to pass to ld when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
|
||||
LDRPATHFLAG_PREFIX=-rpath
|
||||
|
||||
# allow for unresolved symbols
|
||||
DLL_LDFLAGS += -expect_unresolved "*"
|
||||
endif # OSF1
|
||||
|
||||
ifeq ($(OS_ARCH), AIX)
|
||||
# Flags to set runtime shared library search path. For example:
|
||||
# $(CC) $(RPATHFLAG_PREFIX)../..$(RPATHFLAG_EXTRAS)
|
||||
RPATHFLAG_PREFIX=-blibpath:
|
||||
RPATHFLAG_EXTRAS=:/usr/lib:/lib
|
||||
|
||||
# flag to pass to ld when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
|
||||
LDRPATHFLAG_PREFIX=-blibpath:/usr/lib:/lib:
|
||||
DLL_LDFLAGS= -bM:SRE -bnoentry \
|
||||
-L.:/usr/lib/threads:/usr/lpp/xlC/lib:/usr/lib:/lib
|
||||
DLL_EXTRA_LIBS= -bI:/usr/lib/lowsys.exp -lC_r -lC -lpthreads -lc_r -lm \
|
||||
/usr/lib/libc.a
|
||||
|
||||
EXE_EXTRA_LIBS= -bI:/usr/lib/syscalls.exp -lsvld -lpthreads
|
||||
endif # AIX
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
# flag to pass to cc when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
|
||||
RPATHFLAG_PREFIX=-Wl,+s,+b,
|
||||
|
||||
# flag to pass to ld when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
|
||||
LDRPATHFLAG_PREFIX=+s +b
|
||||
|
||||
# we need to link in the rt library to get sem_*()
|
||||
PLATFORMLIBS += -lrt
|
||||
PLATFORMCFLAGS=
|
||||
|
||||
endif # HP-UX
|
||||
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
# flag to pass to cc when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
|
||||
RPATHFLAG_PREFIX=-Wl,-rpath,
|
||||
|
||||
# flag to pass to ld when linking to set runtime shared library search path
|
||||
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
|
||||
# note, there is a trailing space
|
||||
LDRPATHFLAG_PREFIX=-rpath
|
||||
endif # Linux
|
||||
|
||||
#
|
||||
# XXX: does anyone know of a better way to solve the "LINK_LIB2" problem? -mcs
|
||||
#
|
||||
# Link to produce a console/windows exe on Windows
|
||||
#
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
|
||||
DEBUG_LINK_OPT=/DEBUG:FULL
|
||||
ifeq ($(BUILD_OPT), 1)
|
||||
DEBUG_LINK_OPT=
|
||||
endif
|
||||
|
||||
SUBSYSTEM=CONSOLE
|
||||
LINK_EXE = link $(DEBUG_LINK_OPT) -OUT:"$@" /MAP $(ALDFLAGS) $(LDFLAGS) $(ML_DEBUG) \
|
||||
$(LCFLAGS) /NOLOGO /PDB:NONE /DEBUGTYPE:BOTH /INCREMENTAL:NO \
|
||||
/NODEFAULTLIB:MSVCRTD /SUBSYSTEM:$(SUBSYSTEM) $(DEPLIBS) \
|
||||
$(EXTRA_LIBS) $(PLATFORMLIBS) $(OBJS)
|
||||
LINK_LIB = lib -OUT:"$@" $(OBJS)
|
||||
LINK_DLL = link $(DEBUG_LINK_OPT) /nologo /MAP /DLL /PDB:NONE /DEBUGTYPE:BOTH \
|
||||
$(ML_DEBUG) /SUBSYSTEM:$(SUBSYSTEM) $(LLFLAGS) $(DLL_LDFLAGS) \
|
||||
$(EXTRA_LIBS) /out:"$@" $(OBJS)
|
||||
else # WINNT
|
||||
#
|
||||
# UNIX link commands
|
||||
#
|
||||
LINK_LIB = $(RM) $@; $(AR) $(OBJS); $(RANLIB) $@
|
||||
LINK_LIB2 = $(RM) $@; $(AR) $@ $(OBJS2); $(RANLIB) $@
|
||||
ifdef SONAMEFLAG_PREFIX
|
||||
LINK_DLL = $(LD) $(DSO_LDOPTS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) $(ALDFLAGS) $(DLL_LDFLAGS) \
|
||||
$(DLL_EXPORT_FLAGS) -o $@ $(SONAMEFLAG_PREFIX)$(notdir $@) $(OBJS)
|
||||
else # SONAMEFLAG_PREFIX
|
||||
LINK_DLL = $(LD) $(RPATHFLAG_PREFIX)$(RPATHFLAG) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
|
||||
-o $@ $(OBJS)
|
||||
endif # SONAMEFLAG_PREFIX
|
||||
|
||||
ifeq ($(OS_ARCH), OSF1)
|
||||
# The linker on OSF/1 gets confused if it finds an so_locations file
|
||||
# that doesn't meet its expectations, so we arrange to remove it before
|
||||
# linking.
|
||||
SO_FILES_TO_REMOVE=so_locations
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
# On HPUX, we need a couple of changes:
|
||||
# 1) Use the C++ compiler for linking, which will pass the +eh flag on down to the
|
||||
# linker so the correct exception-handling-aware libC gets used (libnshttpd.sl
|
||||
# needs this).
|
||||
# 2) Add a "-Wl,-E" option so the linker gets a "-E" flag. This makes symbols
|
||||
# in an executable visible to shared libraries loaded at runtime.
|
||||
LINK_EXE = $(CCC) -AA -Wl,-E $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
|
||||
ifeq ($(USE_64), 1)
|
||||
LINK_EXE = $(CCC) -AA -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L +DA2.0W +DS2.0 -Wl,-E $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
endif
|
||||
|
||||
else # HP-UX
|
||||
# everything except HPUX
|
||||
ifeq ($(OS_ARCH), ReliantUNIX)
|
||||
# Use the C++ compiler for linking if at least ONE object is C++
|
||||
export LD_RUN_PATH=$(RPATHFLAG)
|
||||
LINK_EXE = $(CXX) $(ALDFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
|
||||
else # ReliantUNIX
|
||||
ifdef USE_LD_RUN_PATH
|
||||
#does RPATH differently. instead we export RPATHFLAG as LD_RUN_PATH
|
||||
#see ns/netsite/ldap/clients/tools/Makefile for an example
|
||||
export LD_RUN_PATH=$(RPATHFLAG)
|
||||
LINK_EXE = $(CC) $(ALDFLAGS) $(LDFLAGS) \
|
||||
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
LINK_EXE_NOLIBSOBJS = $(CC) $(ALDFLAGS) $(LDFLAGS) -o $@
|
||||
else # USE_LD_RUN_PATH
|
||||
LINK_EXE = $(CC) $(ALDFLAGS) $(LDFLAGS) \
|
||||
$(RPATHFLAG_PREFIX)$(RPATHFLAG)$(RPATHFLAG_EXTRAS) \
|
||||
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
LINK_EXE_NOLIBSOBJS = $(CC) $(ALDFLAGS) $(LDFLAGS) \
|
||||
$(RPATHFLAG_PREFIX)$(RPATHFLAG)$(RPATHFLAG_EXTRAS) -o $@
|
||||
endif # USE_LD_RUN_PATH
|
||||
endif # ReliantUNIX
|
||||
endif # HP-UX
|
||||
endif # WINNT
|
||||
|
||||
ifeq ($(OS_ARCH), OSF1)
|
||||
LINK_EXE = $(CCC) $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) \
|
||||
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
ifeq ($(USE_64), 1)
|
||||
LINK_EXE = $(CCC) $(ALDFLAGS) $(LDFLAGS) -R:$(RPATHFLAG)\
|
||||
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
PERL = perl
|
||||
#
|
||||
# shared library symbol export definitions
|
||||
#
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
GENEXPORTS=cmd /c $(PERL) $(LDAP_SRC)/build/genexports.pl
|
||||
else
|
||||
GENEXPORTS=$(PERL) $(LDAP_SRC)/build/genexports.pl
|
||||
endif
|
||||
|
||||
97
mozilla/directory/c-sdk/component_versions.mk
Normal file
97
mozilla/directory/c-sdk/component_versions.mk
Normal file
@@ -0,0 +1,97 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator client code, released
|
||||
# March 31, 1998.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
# NSPR - Netscape Portable Runtime
|
||||
NSPR_LIBVERSION = 4
|
||||
NSPR_RELEASE_TAG = v4.1.4
|
||||
|
||||
# NSS - Network Security Services
|
||||
NSSVERS = 3
|
||||
NSS_RELEASE_TAG = SECURITY_JES5_20060428
|
||||
|
||||
# SVRCORE - Client/server utility library
|
||||
# SVRCORE_RELEASE_TAG = SVRCORE_3_3_3_RTM
|
||||
|
||||
# LDAP library
|
||||
LDAPVERS = 60
|
||||
LDAPVERS_SUFFIX = 6.0
|
||||
|
||||
# PRLDAP library
|
||||
PRLDAPVERS = 60
|
||||
PRLDAPVERS_SUFFIX = 6.0
|
||||
|
||||
# LBER library
|
||||
LBERVERS = 60
|
||||
LBERVERS_SUFFIX = 6.0
|
||||
|
||||
# ldif library
|
||||
LDIFVERS = 60
|
||||
LDIFVERS_SUFFIX = 6.0
|
||||
|
||||
# iutil library
|
||||
IUTILVERS = 60
|
||||
IUTILVERS_SUFFIX = 6.0
|
||||
|
||||
# util library
|
||||
UTILVERS = 60
|
||||
UTILVERS_SUFFIX = 6.0
|
||||
|
||||
# ssl library
|
||||
SSLDAPVERS = 60
|
||||
SSLDAPVERS_SUFFIX = 6.0
|
||||
|
||||
# sasl library
|
||||
SASLVERS = 20
|
||||
SASL_RELEASE_TAG = 2.19_20051117
|
||||
|
||||
|
||||
# libICU - replaces National Language Support (NLS).
|
||||
# ICU_LIBVERSION = 2.1.6
|
||||
# LIBICU_RELDATE = 20040126_21.1
|
||||
|
||||
# Some components already had existing Solaris 5.8 symbolic
|
||||
# link to a Solaris 5.6 version. Hence, the new respun components
|
||||
# were put in in a forte6 directory in each of the component
|
||||
# respectively. For Solaris 5.8 only we have to pick up the components
|
||||
# from the forte6 directory. As we move forward with new components,
|
||||
# we can take the mess below out
|
||||
# Michael.....
|
||||
#ifeq ($(OS_ARCH), SunOS)
|
||||
# ifneq ($(USE_64), 1)
|
||||
# OS_VERS := $(shell uname -r)
|
||||
# ifeq ($(OS_VERS),5.8)
|
||||
# ifneq ($(OS_TEST),i86pc)
|
||||
# NSPR_RELEASE_TAG=v4.1.2/forte6
|
||||
# NSS_RELEASE_TAG =NSS_3_3_2_RTM/forte6
|
||||
# SVRCORE_RELEASE_TAG=SVRCORE_3_3_1_RTM/forte6
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifeq ($(OS_ARCH), Linux)
|
||||
# ifeq ($(OS_RELEASE), 2.4)
|
||||
# NSPR_RELEASE_TAG=v4.1.2/redhat7.2
|
||||
# NSS_RELEASE_TAG =NSS_3_3_2_RTM/redhat7.2
|
||||
# SVRCORE_RELEASE_TAG=SVRCORE_3_3_1_RTM/redhat7.2
|
||||
# endif
|
||||
#endif
|
||||
175
mozilla/directory/c-sdk/config/AIX.mk
Normal file
175
mozilla/directory/c-sdk/config/AIX.mk
Normal file
@@ -0,0 +1,175 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for AIX.
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# There are three implementation strategies available on AIX:
|
||||
# pthreads, classic, and pthreads-user.
|
||||
#
|
||||
# On AIX 3.2, classic nspr is the default (and only) implementation
|
||||
# strategy. On AIX 4.1 and later, the default is pthreads.
|
||||
#
|
||||
ifeq ($(OS_RELEASE),3.2)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
PTHREADS_USER =
|
||||
USE_PTHREADS =
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
ifeq ($(PTHREADS_USER),1)
|
||||
USE_PTHREADS =
|
||||
IMPL_STRATEGY = _PTH_USER
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
IMPL_STRATEGY =
|
||||
else
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# IPv6 support part of the standard AIX 4.3 release.
|
||||
ifneq (,$(filter-out 3.2 4.1 4.2,$(OS_RELEASE)))
|
||||
USE_IPV6 = 1
|
||||
endif
|
||||
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
CC = xlC
|
||||
CCC = xlC
|
||||
else
|
||||
CC = xlC_r
|
||||
CCC = xlC_r
|
||||
endif
|
||||
OS_CFLAGS = -qro -qroconst
|
||||
ifeq ($(USE_64),1)
|
||||
OBJECT_MODE = 64
|
||||
export OBJECT_MODE
|
||||
COMPILER_TAG = _64
|
||||
else
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
COMPILER_TAG =
|
||||
else
|
||||
COMPILER_TAG = _32
|
||||
endif
|
||||
endif
|
||||
|
||||
CPU_ARCH = rs6000
|
||||
|
||||
RANLIB = ranlib
|
||||
|
||||
OS_CFLAGS += -DAIX -DSYSV
|
||||
ifeq ($(CC),xlC_r)
|
||||
OS_CFLAGS += -qarch=com
|
||||
endif
|
||||
|
||||
ifneq ($(OS_RELEASE),3.2)
|
||||
OS_CFLAGS += -DAIX_HAVE_ATOMIC_OP_H -DAIX_TIMERS
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
|
||||
ifndef USE_PTHREADS
|
||||
OS_CFLAGS += -DAIX_RENAME_SELECT
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_PR_NO_LARGE_FILES
|
||||
else
|
||||
OS_CFLAGS += -D_PR_HAVE_OFF64_T -D_LARGEFILE64_SOURCE
|
||||
endif
|
||||
|
||||
ifeq ($(OS_RELEASE),4.1)
|
||||
OS_CFLAGS += -DAIX4_1
|
||||
else
|
||||
DSO_LDOPTS = -brtl -bM:SRE -bnoentry -bexpall
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
ifeq ($(OS_RELEASE),4.3)
|
||||
OS_CFLAGS += -DAIX4_3
|
||||
endif
|
||||
endif
|
||||
|
||||
# Have the socklen_t data type
|
||||
ifeq ($(OS_RELEASE),4.3)
|
||||
OS_CFLAGS += -DHAVE_SOCKLEN_T
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 4.2 4.3,$(OS_RELEASE)))
|
||||
# On these OS revisions, localtime_r() is declared if _THREAD_SAFE
|
||||
# is defined.
|
||||
ifneq ($(CLASSIC_NSPR),1)
|
||||
OS_CFLAGS += -DHAVE_POINTER_LOCALTIME_R
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 4.3,$(OS_RELEASE)))
|
||||
# On these OS revisions, gethostbyXXX() returns result in thread
|
||||
# specific storage.
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
OS_CFLAGS += -D_PR_HAVE_THREADSAFE_GETHOST
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Special link info for constructing AIX programs. On AIX we have to
|
||||
# statically link programs that use NSPR into a single .o, rewriting the
|
||||
# calls to select to call "aix". Once that is done we then can
|
||||
# link that .o with a .o built in nspr which implements the system call.
|
||||
#
|
||||
ifneq (,$(filter-out 3.2 4.1,$(OS_RELEASE)))
|
||||
AIX_LINK_OPTS = -brtl -bnso -berok
|
||||
else
|
||||
AIX_LINK_OPTS = -bnso -berok
|
||||
#AIX_LINK_OPTS = -bnso -berok -brename:.select,.wrap_select -brename:.poll,.wrap_poll -bI:/usr/lib/syscalls.exp
|
||||
endif
|
||||
|
||||
AIX_WRAP = $(DIST)/lib/aixwrap.o
|
||||
AIX_TMP = $(OBJDIR)/_aix_tmp.o
|
||||
91
mozilla/directory/c-sdk/config/BSD_OS.mk
Normal file
91
mozilla/directory/c-sdk/config/BSD_OS.mk
Normal file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for BSD/OS Unix.
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
ifeq (,$(filter-out 1.1 4.%,$(OS_RELEASE)))
|
||||
CC = gcc -Wall -Wno-format
|
||||
CCC = g++
|
||||
else
|
||||
CC = shlicc2
|
||||
CCC = shlicc2
|
||||
endif
|
||||
RANLIB = ranlib
|
||||
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
IMPL_STRATEGY = _PTH
|
||||
DEFINES += -D_PR_NEED_PTHREAD_INIT
|
||||
else
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
endif
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) -DBSDI -DHAVE_STRERROR -DNEED_BSDREGEX
|
||||
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
ifeq (sparc,$(findstring sparc,$(OS_TEST)))
|
||||
CPU_ARCH = sparc
|
||||
endif
|
||||
|
||||
ifeq ($(OS_RELEASE),2.1)
|
||||
OS_CFLAGS += -D_PR_TIMESPEC_HAS_TS_SEC
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 1.1 2.1,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_PR_BSDI_JMPBUF_IS_ARRAY
|
||||
else
|
||||
OS_CFLAGS += -D_PR_SELECT_CONST_TIMEVAL -D_PR_BSDI_JMPBUF_IS_STRUCT
|
||||
endif
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
ifeq ($(OS_RELEASE),1.1)
|
||||
OS_CFLAGS += -D_PR_STAT_HAS_ONLY_ST_ATIME -D_PR_NEED_H_ERRNO
|
||||
else
|
||||
OS_CFLAGS += -DHAVE_DLL -DUSE_DLFCN -D_PR_STAT_HAS_ST_ATIMESPEC
|
||||
OS_LIBS = -ldl
|
||||
ifeq (,$(filter-out 4.%,$(OS_RELEASE)))
|
||||
MKSHLIB = $(CC) $(DSO_LDOPTS)
|
||||
DSO_CFLAGS = -fPIC
|
||||
DSO_LDOPTS = -shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)
|
||||
else
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
DSO_LDOPTS = -r
|
||||
endif
|
||||
endif
|
||||
138
mozilla/directory/c-sdk/config/BeOS.mk
Normal file
138
mozilla/directory/c-sdk/config/BeOS.mk
Normal file
@@ -0,0 +1,138 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
|
||||
######################################################################
|
||||
# Config stuff for BeOS (all architectures)
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Version-independent
|
||||
######################################################################
|
||||
|
||||
DEFINES +=
|
||||
XP_DEFINE = -DXP_BEOS
|
||||
|
||||
OBJ_SUFFIX = o
|
||||
LIB_SUFFIX = a
|
||||
DLL_SUFFIX = so
|
||||
AR = ar cr $@
|
||||
|
||||
ifdef BUILD_OPT
|
||||
DEFINES = -UDEBUG -DNDEBUG
|
||||
OBJDIR_TAG = _OPT
|
||||
else
|
||||
DEFINES = -DDEBUG -UNDEBUG
|
||||
OBJDIR_TAG = _DBG
|
||||
endif
|
||||
|
||||
ifeq (PC,$(findstring PC,$(OS_TEST)))
|
||||
CPU_ARCH = x86
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
LD = gcc
|
||||
RANLIB = ranlib
|
||||
DSO_LDOPTS = -nostart
|
||||
PORT_FLAGS = -DHAVE_STRERROR
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O2
|
||||
LDFLAGS += -s
|
||||
else
|
||||
OPTIMIZER = -gdwarf-2 -O0
|
||||
endif
|
||||
else
|
||||
CPU_ARCH = ppc
|
||||
CC = mwcc
|
||||
CCC = mwcc
|
||||
LD = mwld
|
||||
RANLIB = ranlib
|
||||
DSO_LDOPTS = -xms -export pragma \
|
||||
-init _init_routine_ \
|
||||
-term _term_routine_ \
|
||||
-lroot -lnet \
|
||||
/boot/develop/lib/ppc/glue-noinit.a \
|
||||
/boot/develop/lib/ppc/init_term_dyn.o \
|
||||
/boot/develop/lib/ppc/start_dyn.o
|
||||
|
||||
PORT_FLAGS = -DHAVE_STRERROR -D_POSIX_SOURCE
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O2
|
||||
else
|
||||
OPTIMIZER = -g -O0
|
||||
endif
|
||||
endif
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
|
||||
OS_INCLUDES = -I- -I.
|
||||
#G++INCLUDES = -I/usr/include/g++
|
||||
|
||||
PLATFORM_FLAGS = -DBeOS -DBEOS $(OS_INCLUDES)
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(PLATFORM_FLAGS) $(PORT_FLAGS)
|
||||
|
||||
USE_BTHREADS = 1
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
OBJDIR_NAME = $(OS_CONFIG)_$(CPU_ARCH)$(OBJDIR_TAG).OBJ
|
||||
|
||||
####################################################################
|
||||
#
|
||||
# One can define the makefile variable NSDISTMODE to control
|
||||
# how files are published to the 'dist' directory. If not
|
||||
# defined, the default is "install using relative symbolic
|
||||
# links". The two possible values are "copy", which copies files
|
||||
# but preserves source mtime, and "absolute_symlink", which
|
||||
# installs using absolute symbolic links. The "absolute_symlink"
|
||||
# option requires NFSPWD.
|
||||
#
|
||||
####################################################################
|
||||
|
||||
NSINSTALL = $(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall
|
||||
|
||||
ifeq ($(NSDISTMODE),copy)
|
||||
# copy files, but preserve source mtime
|
||||
INSTALL = $(NSINSTALL) -t
|
||||
else
|
||||
ifeq ($(NSDISTMODE),absolute_symlink)
|
||||
# install using absolute symbolic links
|
||||
INSTALL = $(NSINSTALL) -L `$(NFSPWD)`
|
||||
else
|
||||
# install using relative symbolic links
|
||||
INSTALL = $(NSINSTALL) -R
|
||||
endif
|
||||
endif
|
||||
|
||||
define MAKE_OBJDIR
|
||||
if test ! -d $(@D); then rm -rf $(@D); $(NSINSTALL) -D $(@D); fi
|
||||
endef
|
||||
63
mozilla/directory/c-sdk/config/DGUX.mk
Normal file
63
mozilla/directory/c-sdk/config/DGUX.mk
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for Data General DG/UX
|
||||
#
|
||||
# Initial DG/UX port by Marc Fraioli <fraioli@dg-rtp.dg.com>
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
|
||||
RANLIB = true
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
OS_CFLAGS = -DSVR4 -DSYSV -DDGUX -D_DGUX_SOURCE -D_POSIX4A_DRAFT6_SOURCE
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
DSO_LDOPTS = -G
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCH = dgux
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O2
|
||||
else
|
||||
# -g would produce a huge executable.
|
||||
OPTIMIZER =
|
||||
endif
|
||||
82
mozilla/directory/c-sdk/config/FreeBSD.mk
Normal file
82
mozilla/directory/c-sdk/config/FreeBSD.mk
Normal file
@@ -0,0 +1,82 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for FreeBSD
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
RANLIB = ranlib
|
||||
|
||||
ifeq ($(OS_TEST),alpha)
|
||||
CPU_ARCH = alpha
|
||||
else
|
||||
OS_REL_CFLAGS = -Di386
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -pipe $(THREAD_FLAG) -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
|
||||
|
||||
#
|
||||
# The default implementation strategy for FreeBSD is pthreads.
|
||||
#
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
IMPL_STRATEGY = _PTH
|
||||
DEFINES += -D_THREAD_SAFE
|
||||
THREAD_FLAG += -pthread
|
||||
endif
|
||||
|
||||
ARCH = freebsd
|
||||
|
||||
MOZ_OBJFORMAT := $(shell test -x /usr/bin/objformat && /usr/bin/objformat || echo aout)
|
||||
|
||||
ifeq ($(MOZ_OBJFORMAT),elf)
|
||||
DLL_SUFFIX = so
|
||||
else
|
||||
DLL_SUFFIX = so.1.0
|
||||
endif
|
||||
|
||||
DSO_CFLAGS = -fPIC
|
||||
DSO_LDOPTS = -Bshareable
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
G++INCLUDES = -I/usr/include/g++
|
||||
240
mozilla/directory/c-sdk/config/HP-UX.mk
Normal file
240
mozilla/directory/c-sdk/config/HP-UX.mk
Normal file
@@ -0,0 +1,240 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for HP-UX
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
DLL_SUFFIX = sl
|
||||
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
OS_CFLAGS =
|
||||
COMPILER_TAG = _gcc
|
||||
else
|
||||
CC = cc -Ae
|
||||
CCC = CC -ext
|
||||
OS_CFLAGS = +ESlit
|
||||
endif
|
||||
|
||||
RANLIB = echo
|
||||
|
||||
CPU_ARCH = hppa
|
||||
|
||||
OS_CFLAGS += $(DSO_CFLAGS) -DHPUX -D$(CPU_ARCH) -D_HPUX_SOURCE
|
||||
|
||||
|
||||
ifeq ($(OS_RELEASE),B.11.11)
|
||||
OS_CFLAGS += -D_USE_BIG_FDS
|
||||
endif
|
||||
|
||||
#
|
||||
# The header netdb.h on HP-UX 9 does not declare h_errno.
|
||||
# On 10.10 and 10.20, netdb.h declares h_errno only if
|
||||
# _XOPEN_SOURCE_EXTENDED is defined. So we need to declare
|
||||
# h_errno ourselves.
|
||||
#
|
||||
ifeq ($(basename $(OS_RELEASE)),A.09)
|
||||
OS_CFLAGS += -D_PR_NEED_H_ERRNO
|
||||
endif
|
||||
ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_PR_NEED_H_ERRNO
|
||||
endif
|
||||
|
||||
# Do we have localtime_r()? Does it return 'int' or 'struct tm *'?
|
||||
ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -DHAVE_INT_LOCALTIME_R
|
||||
endif
|
||||
ifeq (,$(filter-out B.10.30 B.11.00 B.11.11,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -DHAVE_POINTER_LOCALTIME_R
|
||||
endif
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
|
||||
#
|
||||
# On HP-UX 9, the default (and only) implementation strategy is
|
||||
# classic nspr.
|
||||
#
|
||||
# On HP-UX 10.10 and 10.20, the default implementation strategy is
|
||||
# pthreads (actually DCE threads). Classic nspr is also available.
|
||||
#
|
||||
# On HP-UX 10.30 and 11.00, the default implementation strategy is
|
||||
# pthreads. Classic nspr and pthreads-user are also available.
|
||||
#
|
||||
ifeq ($(basename $(OS_RELEASE)),A.09)
|
||||
OS_CFLAGS += -DHPUX9
|
||||
DEFAULT_IMPL_STRATEGY = _EMU
|
||||
endif
|
||||
|
||||
ifeq ($(OS_RELEASE),B.10.01)
|
||||
OS_CFLAGS += -DHPUX10
|
||||
DEFAULT_IMPL_STRATEGY = _EMU
|
||||
endif
|
||||
|
||||
ifeq ($(OS_RELEASE),B.10.10)
|
||||
OS_CFLAGS += -DHPUX10 -DHPUX10_10
|
||||
DEFAULT_IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
ifeq ($(OS_RELEASE),B.10.20)
|
||||
OS_CFLAGS += -DHPUX10 -DHPUX10_20
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
OS_CFLAGS += +DAportable
|
||||
endif
|
||||
DEFAULT_IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
#
|
||||
# On 10.30 and 11.00, we use the new ANSI C++ compiler aCC.
|
||||
#
|
||||
|
||||
ifeq ($(OS_RELEASE),B.10.30)
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
CCC = /opt/aCC/bin/aCC -ext
|
||||
OS_CFLAGS += +DAportable +DS1.1
|
||||
endif
|
||||
OS_CFLAGS += -DHPUX10 -DHPUX10_30
|
||||
DEFAULT_IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
# 11.00 is similar to 10.30.
|
||||
ifeq ($(OS_RELEASE),B.11.00)
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
CCC = /opt/aCC/bin/aCC -ext
|
||||
ifeq ($(USE_64),1)
|
||||
OS_CFLAGS += +DA2.0W +DS2.0 +DD64
|
||||
COMPILER_TAG = _64
|
||||
else
|
||||
OS_CFLAGS += +DAportable +DS2.0
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
COMPILER_TAG =
|
||||
else
|
||||
COMPILER_TAG = _32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
OS_CFLAGS += -DHPUX10 -DHPUX11 -D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
DEFAULT_IMPL_STRATEGY =
|
||||
else
|
||||
DEFAULT_IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
endif
|
||||
|
||||
# 11.00 is similar to 10.30.
|
||||
ifeq ($(OS_RELEASE),B.11.11)
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
CCC = /opt/aCC/bin/aCC -ext
|
||||
ifeq ($(USE_64),1)
|
||||
OS_CFLAGS += +DA2.0W +DS2.0 +DD64
|
||||
COMPILER_TAG = _64
|
||||
else
|
||||
OS_CFLAGS += +DAportable +DS2.0
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
COMPILER_TAG =
|
||||
else
|
||||
COMPILER_TAG = _32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
OS_CFLAGS += -DHPUX10 -DHPUX11 -D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
DEFAULT_IMPL_STRATEGY =
|
||||
else
|
||||
DEFAULT_IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(DEFAULT_IMPL_STRATEGY),_EMU)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
|
||||
ifeq ($(DEFAULT_IMPL_STRATEGY),_PTH)
|
||||
USE_PTHREADS = 1
|
||||
IMPL_STRATEGY = _PTH
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
USE_PTHREADS =
|
||||
IMPL_STRATEGY = _EMU
|
||||
endif
|
||||
ifeq ($(PTHREADS_USER),1)
|
||||
USE_PTHREADS =
|
||||
IMPL_STRATEGY = _PTH_USER
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out A.09 B.10,$(basename $(OS_RELEASE))))
|
||||
DEFINES += -D_PR_NO_LARGE_FILES
|
||||
endif
|
||||
|
||||
#
|
||||
# To use the true pthread (kernel thread) library on 10.30 and
|
||||
# 11.00, we should define _POSIX_C_SOURCE to be 199506L.
|
||||
# The _REENTRANT macro is deprecated.
|
||||
#
|
||||
|
||||
ifdef USE_PTHREADS
|
||||
ifeq (,$(filter-out B.10.10 B.10.20,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_REENTRANT -D_PR_DCETHREADS
|
||||
else
|
||||
OS_CFLAGS += -D_POSIX_C_SOURCE=199506L -D_PR_HAVE_THREADSAFE_GETHOST
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PTHREADS_USER
|
||||
OS_CFLAGS += -D_POSIX_C_SOURCE=199506L
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
DSO_LDOPTS = -b +h $(notdir $@)
|
||||
|
||||
# -fPIC or +Z generates position independent code for use in shared
|
||||
# libraries.
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
DSO_CFLAGS = -fPIC
|
||||
else
|
||||
DSO_CFLAGS = +Z
|
||||
endif
|
||||
158
mozilla/directory/c-sdk/config/IRIX.mk
Normal file
158
mozilla/directory/c-sdk/config/IRIX.mk
Normal file
@@ -0,0 +1,158 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for IRIX
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# On IRIX 5.x, classic nspr (user-level threads on top of sprocs)
|
||||
# is the default (and only) implementation strategy.
|
||||
#
|
||||
# On IRIX 6.x and later, the default implementation strategy is
|
||||
# pthreads. Classic nspr is also available.
|
||||
#
|
||||
ifeq ($(basename $(OS_RELEASE)),5)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
IMPL_STRATEGY = _MxN
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
USE_N32 = 1
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
CC = gcc
|
||||
COMPILER_TAG = _gcc
|
||||
AS = $(CC) -x assembler-with-cpp -D_ASM -mips2
|
||||
ODD_CFLAGS = -Wall -Wno-format
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O6
|
||||
endif
|
||||
else
|
||||
CC = cc
|
||||
CCC = CC
|
||||
ODD_CFLAGS = -fullwarn -xansi
|
||||
ifdef BUILD_OPT
|
||||
ifneq ($(USE_N32),1)
|
||||
OPTIMIZER = -O -Olimit 4000
|
||||
else
|
||||
OPTIMIZER = -O -OPT:Olimit=4000
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# The default behavior is still -o32 generation, hence the explicit tests
|
||||
# for -n32 and -64 and implicitly assuming -o32. If that changes, ...
|
||||
#
|
||||
ifeq ($(basename $(OS_RELEASE)),6)
|
||||
ODD_CFLAGS += -multigot
|
||||
SHLIB_LD_OPTS = -no_unresolved
|
||||
ifeq ($(USE_N32),1)
|
||||
ODD_CFLAGS += -n32 -woff 1209
|
||||
COMPILER_TAG = _n32
|
||||
LDOPTS += -n32
|
||||
SHLIB_LD_OPTS += -n32
|
||||
ifeq ($(OS_RELEASE), 6_2)
|
||||
LDOPTS += -Wl,-woff,85
|
||||
SHLIB_LD_OPTS += -woff 85
|
||||
endif
|
||||
else
|
||||
ifeq ($(USE_64),1)
|
||||
ODD_CFLAGS += -64
|
||||
COMPILER_TAG = _64
|
||||
else
|
||||
ODD_CFLAGS += -32
|
||||
COMPILER_TAG = _o32
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ODD_CFLAGS += -xgot
|
||||
endif
|
||||
endif
|
||||
|
||||
ODD_CFLAGS += -DSVR4 -DIRIX
|
||||
|
||||
CPU_ARCH = mips
|
||||
|
||||
RANLIB = /bin/true
|
||||
|
||||
# For purify
|
||||
# XXX: should always define _SGI_MP_SOURCE
|
||||
NOMD_OS_CFLAGS = $(ODD_CFLAGS) -D_SGI_MP_SOURCE
|
||||
|
||||
ifeq ($(OS_RELEASE),5.3)
|
||||
OS_CFLAGS += -DIRIX5_3
|
||||
endif
|
||||
|
||||
ifneq ($(basename $(OS_RELEASE)),5)
|
||||
OS_CFLAGS += -D_PR_HAVE_SGI_PRDA_PROCMASK
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out 6.5,$(OS_RELEASE)))
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
OS_CFLAGS += -mips3
|
||||
endif
|
||||
OS_CFLAGS += -D_PR_HAVE_GETPROTO_R -D_PR_HAVE_GETPROTO_R_POINTER
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
OS_CFLAGS += -D_PR_HAVE_GETHOST_R -D_PR_HAVE_GETHOST_R_POINTER
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef NO_MDUPDATE
|
||||
OS_CFLAGS += $(NOMD_OS_CFLAGS) -MDupdate $(DEPENDENCIES)
|
||||
else
|
||||
OS_CFLAGS += $(NOMD_OS_CFLAGS)
|
||||
endif
|
||||
|
||||
# -rdata_shared is an ld option that puts string constants and
|
||||
# const data into the text segment, where they will be shared
|
||||
# across processes and be read-only.
|
||||
MKSHLIB = $(LD) $(SHLIB_LD_OPTS) -rdata_shared -shared -soname $(notdir $@)
|
||||
|
||||
DSO_LDOPTS = -elf -shared -all
|
||||
149
mozilla/directory/c-sdk/config/Linux.mk
Normal file
149
mozilla/directory/c-sdk/config/Linux.mk
Normal file
@@ -0,0 +1,149 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
######################################################################
|
||||
# Config stuff for Linux (all architectures)
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Version-independent
|
||||
######################################################################
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# The default implementation strategy for Linux is pthreads.
|
||||
#
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
IMPL_STRATEGY = _glibc_PTH
|
||||
else
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
DEFINES += -D_REENTRANT
|
||||
endif
|
||||
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
ifeq ($(USE_64),1)
|
||||
CPU_ARCH = x86_64
|
||||
ARCH_FLAG = -m64
|
||||
LDFLAGS += -m64
|
||||
DSO_LDFLAGS += -melf_x86_64
|
||||
EXTRA_LIBS += -L/usr/lib64
|
||||
else
|
||||
CPU_ARCH = x86
|
||||
ARCH_FLAG = -m32
|
||||
LDFLAGS += -m32
|
||||
DSO_LDFLAGS += -melf_i386
|
||||
EXTRA_LIBS += -L/usr/lib
|
||||
endif
|
||||
else
|
||||
ifeq (,$(filter-out arm% sa110,$(OS_TEST)))
|
||||
CPU_ARCH := arm
|
||||
else
|
||||
CPU_ARCH := $(OS_TEST)
|
||||
endif
|
||||
endif
|
||||
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
RANLIB = ranlib
|
||||
|
||||
OS_INCLUDES =
|
||||
G++INCLUDES = -I/usr/include/g++
|
||||
|
||||
PLATFORM_FLAGS = $(ARCH_FLAG) -ansi -Wall -pipe -DLINUX -Dlinux -D_LARGEFILE64_SOURCE
|
||||
PORT_FLAGS = -D_POSIX_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -DHAVE_STRERROR
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(PLATFORM_FLAGS) $(PORT_FLAGS)
|
||||
|
||||
######################################################################
|
||||
# Version-specific stuff
|
||||
######################################################################
|
||||
|
||||
ifeq ($(CPU_ARCH),alpha)
|
||||
PLATFORM_FLAGS += -D_ALPHA_ -D__alpha -mieee
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),x86-64)
|
||||
PLATFORM_FLAGS += -Dx86-64
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),x86)
|
||||
PLATFORM_FLAGS += -Di386
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),m68k)
|
||||
#
|
||||
# gcc on Linux/m68k either has a bug or triggers a code-sequence
|
||||
# bug in the 68060 which causes gcc to crash. The simplest way to
|
||||
# avoid this is to enable a minimum level of optimization.
|
||||
#
|
||||
ifndef BUILD_OPT
|
||||
OPTIMIZER += -O
|
||||
endif
|
||||
PLATFORM_FLAGS += -m68020-40
|
||||
endif
|
||||
|
||||
#
|
||||
# Linux 2.x has shared libraries.
|
||||
#
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS) -soname $(notdir $@)
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O2
|
||||
endif
|
||||
|
||||
######################################################################
|
||||
# Overrides for defaults in config.mk (or wherever)
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Other
|
||||
######################################################################
|
||||
|
||||
DSO_CFLAGS = -fPIC
|
||||
DSO_LDOPTS = -shared $(DSO_LDFLAGS)
|
||||
129
mozilla/directory/c-sdk/config/Makefile.in
Normal file
129
mozilla/directory/c-sdk/config/Makefile.in
Normal file
@@ -0,0 +1,129 @@
|
||||
#! gmake
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
MOD_DEPTH = ..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(MOD_DEPTH)/config/autoconf.mk
|
||||
|
||||
# Indicate that this directory builds build tools.
|
||||
INTERNAL_TOOLS = 1
|
||||
|
||||
# autoconf.mk must be deleted last (from the top-level directory)
|
||||
# because it is included by every makefile.
|
||||
DIST_GARBAGE = nsprincl.mk nsprincl.sh
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
CSRCS = nsinstall.c now.c
|
||||
|
||||
PLSRCS = nfspwd.pl
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
PROG_SUFFIX = .exe
|
||||
else
|
||||
PROG_SUFFIX =
|
||||
endif
|
||||
|
||||
# Temporary workaround to disable the generation of
|
||||
# library build time because now.c uses the 'long long'
|
||||
# data type that's not available on some platforms.
|
||||
ifeq (,$(filter-out NEC NEXTSTEP QNX SCOOS UNIXWARE,$(OS_ARCH)))
|
||||
DEFINES += -DOMIT_LIB_BUILD_TIME
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), IRIX)
|
||||
ifeq ($(basename $(OS_RELEASE)),6)
|
||||
ifeq ($(USE_N32),1)
|
||||
XLDOPTS += -n32 -Wl,-woff,85
|
||||
ifeq ($(OS_RELEASE), 6_2)
|
||||
XLDOPTS += -Wl,-woff,85
|
||||
endif
|
||||
else
|
||||
ifeq ($(USE_64),1)
|
||||
XLDOPTS += -64
|
||||
else
|
||||
XLDOPTS += -32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
ifeq ($(USE_64),1)
|
||||
XLDOPTS += +DA2.0W
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef XP_OS2_EMX
|
||||
XCFLAGS = $(OS_EXE_CFLAGS)
|
||||
XLDOPTS = -Zlinker /PM:VIO
|
||||
endif
|
||||
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
OS_CFLAGS = $(OS_EXE_CFLAGS)
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
PROGS = $(OBJDIR)/now$(PROG_SUFFIX)
|
||||
|
||||
ifeq ($(OS_ARCH),WINNT)
|
||||
TARGETS = $(PROGS)
|
||||
else
|
||||
PROGS += $(OBJDIR)/nsinstall$(PROG_SUFFIX)
|
||||
TARGETS = $(PROGS) $(PLSRCS:.pl=)
|
||||
endif
|
||||
|
||||
OUTOPTION = -o # end of the line
|
||||
ifeq (,$(filter-out WINNT WIN95,$(OS_TARGET)))
|
||||
OUTOPTION = /Fe
|
||||
endif
|
||||
|
||||
# Redefine MAKE_OBJDIR for just this directory
|
||||
define MAKE_OBJDIR
|
||||
if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); else true; fi
|
||||
endef
|
||||
|
||||
export:: $(TARGETS)
|
||||
|
||||
$(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
|
||||
@$(MAKE_OBJDIR)
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(LINK) $(EXEFLAGS) $<
|
||||
else
|
||||
$(CC) $(XCFLAGS) $< $(XLDOPTS) $(OUTOPTION)$@
|
||||
endif
|
||||
97
mozilla/directory/c-sdk/config/NCR.mk
Normal file
97
mozilla/directory/c-sdk/config/NCR.mk
Normal file
@@ -0,0 +1,97 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for NCR SVR4 MP-RAS
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
###
|
||||
NS_USE_NATIVE = 1
|
||||
|
||||
# NS_USE_GCC = 1
|
||||
|
||||
export PATH:=$(PATH):/opt/ncc/bin
|
||||
###
|
||||
|
||||
RANLIB = true
|
||||
GCC_FLAGS_EXTRA = -pipe
|
||||
|
||||
DEFINES += -DSVR4 -DSYSV -DHAVE_STRERROR -DNCR -D_PR_LOCAL_THREADS_ONLY
|
||||
|
||||
ifeq (,$(filter-out 2.03,$(OS_RELEASE)))
|
||||
DEFINES += -D_PR_STAT_HAS_ST_ATIM
|
||||
else
|
||||
DEFINES += -D_PR_STAT_HAS_ST_ATIM_UNION
|
||||
endif
|
||||
|
||||
ifdef NS_USE_NATIVE
|
||||
CC = cc
|
||||
CCC = ncc
|
||||
OS_CFLAGS = -Hnocopyr
|
||||
#OS_LIBS = -L/opt/ncc/lib
|
||||
else
|
||||
#OS_LIBS =
|
||||
endif
|
||||
|
||||
CCC = g++
|
||||
|
||||
#OS_LIBS += -lsocket -lnsl -ldl -lc
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
#DSO_LDOPTS = -G -z defs
|
||||
DSO_LDOPTS = -G
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCH = ncr
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
# now take care of default GCC (rus@5/5/97)
|
||||
|
||||
ifdef NS_USE_GCC
|
||||
# if gcc-settings are redefined already - don't touch it
|
||||
#
|
||||
ifeq (,$(findstring gcc, $(CC)))
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
CXX = g++
|
||||
COMPILER_TAG = _gcc
|
||||
# always use -fPIC - some makefiles are still broken and don't distinguish
|
||||
# situation when they build shared and static libraries
|
||||
CFLAGS += -fPIC -Wall $(GCC_FLAGS_EXTRA)
|
||||
#OS_LIBS += -L/usr/local/lib -lstdc++ -lg++ -lgcc
|
||||
endif
|
||||
endif
|
||||
###
|
||||
|
||||
61
mozilla/directory/c-sdk/config/NEC.mk
Normal file
61
mozilla/directory/c-sdk/config/NEC.mk
Normal file
@@ -0,0 +1,61 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for NEC Mips SYSV
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CPU_ARCH = mips
|
||||
|
||||
ifdef NS_USE_GCC
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
else
|
||||
CC = $(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000
|
||||
CCC = g++
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
RANLIB = /bin/true
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
OS_CFLAGS = $(ODD_CFLAGS) -DSVR4 -D__SVR4 -DNEC -Dnec_ews -DHAVE_STRERROR
|
||||
OS_LIBS = -lsocket -lnsl -ldl $(LDOPTIONS)
|
||||
LDOPTIONS = -lc -L/usr/ucblib -lucb
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
DSO_LDOPTS = -G
|
||||
74
mozilla/directory/c-sdk/config/NEWS-OS.mk
Normal file
74
mozilla/directory/c-sdk/config/NEWS-OS.mk
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
######################################################################
|
||||
# Config stuff for Sony NEWS-OS
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Version-independent
|
||||
######################################################################
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
ARCH := sony
|
||||
CPU_ARCH := mips
|
||||
|
||||
CC = cc
|
||||
CCC = CC
|
||||
RANLIB = /bin/true
|
||||
|
||||
OS_INCLUDES = -I/usr/include
|
||||
G++INCLUDES =
|
||||
#OS_LIBS = -lsocket -lnsl -lgen -lresolv
|
||||
|
||||
PLATFORM_FLAGS = -Xa -fullwarn -DSONY
|
||||
PORT_FLAGS = -DSYSV -DSVR4 -D__svr4 -D__svr4__ -D_PR_LOCAL_THREADS_ONLY -DHAVE_SVID_GETTOD
|
||||
|
||||
OS_CFLAGS = $(PLATFORM_FLAGS) $(PORT_FLAGS)
|
||||
|
||||
######################################################################
|
||||
# Version-specific stuff
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Overrides for defaults in config.mk (or wherever)
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
# Other
|
||||
######################################################################
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
DSO_LDOPTS = -G
|
||||
68
mozilla/directory/c-sdk/config/NEXTSTEP.mk
Normal file
68
mozilla/directory/c-sdk/config/NEXTSTEP.mk
Normal file
@@ -0,0 +1,68 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for NEXTSTEP
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = cc
|
||||
CCC = cc++
|
||||
|
||||
RANLIB = ranlib
|
||||
|
||||
OS_REL_CFLAGS = -D$(shell uname -p)
|
||||
CPU_ARCH := $(shell uname -p)
|
||||
|
||||
# "Commons" are tentative definitions in a global scope, like this:
|
||||
# int x;
|
||||
# The meaning of a common is ambiguous. It may be a true definition:
|
||||
# int x = 0;
|
||||
# or it may be a declaration of a symbol defined in another file:
|
||||
# extern int x;
|
||||
# Use the -fno-common option to force all commons to become true
|
||||
# definitions so that the linker can catch multiply-defined symbols.
|
||||
# Also, common symbols are not allowed with Rhapsody dynamic libraries.
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wall -fno-common -pipe -DNEXTSTEP -DHAVE_STRERROR -DHAVE_BSD_FLOCK -D_POSIX_SOURCE -traditional-cpp -posix
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
|
||||
ARCH = $(CPU_ARCH)
|
||||
|
||||
# May override this with -bundle to create a loadable module.
|
||||
#DSO_LDOPTS = -dynamiclib
|
||||
|
||||
#MKSHLIB = $(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS)
|
||||
DLL_SUFFIX = dylib
|
||||
90
mozilla/directory/c-sdk/config/NTO.mk
Normal file
90
mozilla/directory/c-sdk/config/NTO.mk
Normal file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
######################################################################
|
||||
# Config stuff for Neutrino
|
||||
######################################################################
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# The default implementation strategy for Linux is pthreads.
|
||||
#
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
IMPL_STRATEGY = _PTH
|
||||
DEFINES += -D_REENTRANT
|
||||
endif
|
||||
|
||||
|
||||
AR = qcc -Vgcc_ntox86 -M -a $@
|
||||
CC = qcc -Vgcc_ntox86
|
||||
LD = $(CC)
|
||||
CCC = $(CC)
|
||||
|
||||
# Old Flags -DNO_REGEX -DSTRINGS_ALIGNED
|
||||
|
||||
OS_CFLAGS = -Wc,-Wall -Wc,-Wno-parentheses -DNTO \
|
||||
-D_QNX_SOURCE -DHAVE_POINTER_LOCALTIME_R -shared
|
||||
|
||||
COMPILER_TAG = _qcc
|
||||
MKSHLIB = qcc -Vgcc_ntox86 -shared -Wl,-h$(@:$(OBJDIR)/%.so=%.so) -M
|
||||
|
||||
RANLIB = ranlib
|
||||
G++INCLUDES =
|
||||
OS_LIBS =
|
||||
EXTRA_LIBS = -lsocket
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O1
|
||||
else
|
||||
OPTIMIZER = -O1 -gstabs
|
||||
endif
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
GARBAGE += *.map
|
||||
|
||||
82
mozilla/directory/c-sdk/config/NetBSD.mk
Normal file
82
mozilla/directory/c-sdk/config/NetBSD.mk
Normal file
@@ -0,0 +1,82 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for NetBSD
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
RANLIB = ranlib
|
||||
|
||||
ifndef OBJECT_FMT
|
||||
OBJECT_FMT := $(shell if echo __ELF__ | $${CC:-cc} -E - | grep -q __ELF__ ; then echo a.out ; else echo ELF ; fi)
|
||||
endif
|
||||
|
||||
OS_REL_CFLAGS =
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
CPU_ARCH = x86
|
||||
else
|
||||
CPU_ARCH = $(OS_TEST)
|
||||
endif
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -pipe -DNETBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
|
||||
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
OS_LIBS = -lc_r
|
||||
# XXX probably should define _THREAD_SAFE too.
|
||||
else
|
||||
OS_LIBS = -lc
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
endif
|
||||
|
||||
ARCH = netbsd
|
||||
|
||||
ifeq ($(OBJECT_FMT),ELF)
|
||||
DLL_SUFFIX = so
|
||||
else
|
||||
DLL_SUFFIX = so.1.0
|
||||
endif
|
||||
|
||||
DSO_CFLAGS = -fPIC -DPIC
|
||||
DSO_LDOPTS = -x -shared
|
||||
|
||||
ifdef LIBRUNPATH
|
||||
DSO_LDOPTS += -R$(LIBRUNPATH)
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
G++INCLUDES = -I/usr/include/g++
|
||||
170
mozilla/directory/c-sdk/config/OS2.mk
Normal file
170
mozilla/directory/c-sdk/config/OS2.mk
Normal file
@@ -0,0 +1,170 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Configuration common to all (supported) versions of OS/2
|
||||
#
|
||||
# OS_CFLAGS is the command line options for the compiler when
|
||||
# building the .DLL object files.
|
||||
# OS_EXE_CFLAGS is the command line options for the compiler
|
||||
# when building the .EXE object files; this is for the test
|
||||
# programs.
|
||||
# the macro OS_CFLAGS is set to OS_EXE_CFLAGS inside of the
|
||||
# makefile for the pr/tests directory. ... Hack.
|
||||
|
||||
# Specify toolset. Default to EMX.
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
XP_OS2_VACPP = 1
|
||||
else
|
||||
ifeq ($(MOZ_OS2_TOOLS),PGCC)
|
||||
XP_OS2_EMX = 1
|
||||
else
|
||||
MOZ_OS2_TOOLS = EMX
|
||||
XP_OS2_EMX = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(XP_OS2_EMX),1)
|
||||
MOZ_EMXTAG = $(subst .,,$(MOZ_OS2_EMX_OBJECTFORMAT))
|
||||
endif
|
||||
|
||||
#
|
||||
# On OS/2 we proudly support gbash...
|
||||
#
|
||||
SHELL = GBASH.EXE
|
||||
|
||||
CC = icc -q -DXP_OS2 -N10
|
||||
CCC = icc -q -DXP_OS2 -DOS2=4 -N10
|
||||
LINK = -ilink
|
||||
AR = -ilib /noignorecase /nologo /Out:$(subst /,\\,$@)
|
||||
RANLIB = @echo RANLIB
|
||||
BSDECHO = @echo BSDECHO
|
||||
NSINSTALL = nsinstall
|
||||
INSTALL = $(NSINSTALL)
|
||||
MAKE_OBJDIR = if test ! -d $(OBJDIR); then mkdir $(OBJDIR); fi
|
||||
IMPLIB = implib -nologo -noignorecase
|
||||
FILTER = cppfilt -b -p -q
|
||||
RC = rc.exe
|
||||
|
||||
GARBAGE =
|
||||
|
||||
XP_DEFINE = -DXP_PC
|
||||
LIB_SUFFIX = lib
|
||||
DLL_SUFFIX = dll
|
||||
OBJ_SUFFIX = obj
|
||||
|
||||
OS_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4 -ge- -Mp
|
||||
OS_EXE_CFLAGS = -W3 -Wcnd- -gm -gd+ -sd- -su4 -Mp
|
||||
AR_EXTRA_ARGS =
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O+ -Oi
|
||||
DEFINES = -UDEBUG -U_DEBUG -DNDEBUG
|
||||
DLLFLAGS = -DLL -OUT:$@ -MAP:$(@:.dll=.map)
|
||||
EXEFLAGS = -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
|
||||
OBJDIR_TAG = _OPT
|
||||
else
|
||||
OPTIMIZER = -Ti+ -DE
|
||||
DEFINES = -DDEBUG -D_DEBUG -DDEBUGPRINTS
|
||||
DLLFLAGS = -DEBUG -DLL -OUT:$@ -MAP:$(@:.dll=.map)
|
||||
EXEFLAGS = -DEBUG -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
|
||||
OBJDIR_TAG = _DBG
|
||||
LDFLAGS = -DEBUG
|
||||
endif
|
||||
|
||||
DEFINES += -DOS2=4
|
||||
DEFINES += -D_X86_
|
||||
DEFINES += -D_PR_GLOBAL_THREADS_ONLY -DBSD_SELECT
|
||||
|
||||
# Name of the binary code directories
|
||||
ifdef MOZ_LITE
|
||||
OBJDIR_NAME = $(subst OS2,NAV,$(OS_CONFIG))_$(MOZ_OS2_TOOLS)$(MOZ_EMXTAG)$(OBJDIR_TAG).OBJ
|
||||
else
|
||||
OBJDIR_NAME = $(OS_CONFIG)_$(MOZ_OS2_TOOLS)$(MOZ_EMXTAG)$(OBJDIR_TAG).OBJ
|
||||
endif
|
||||
|
||||
OS_DLLFLAGS = -nologo -DLL -FREE -NOE
|
||||
|
||||
ifdef XP_OS2_VACPP
|
||||
|
||||
OS_LIBS = so32dll.lib tcp32dll.lib
|
||||
|
||||
DEFINES += -DXP_OS2_VACPP -DTCPV40HDRS
|
||||
|
||||
else
|
||||
CC = gcc
|
||||
CCC = gcc
|
||||
LINK = gcc
|
||||
RC = rc.exe
|
||||
FILTER = emxexp
|
||||
IMPLIB = emximp -o
|
||||
|
||||
# Determine which object format to use. Two choices:
|
||||
# a.out and omf. We default to omf.
|
||||
ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT), A.OUT)
|
||||
AR = ar -q $@
|
||||
LIB_SUFFIX = a
|
||||
else
|
||||
OMF_FLAG = -Zomf
|
||||
AR = emxomfar r $@
|
||||
LIB_SUFFIX = lib
|
||||
endif
|
||||
|
||||
OS_LIBS = -lsocket -lemxio
|
||||
|
||||
DEFINES += -DXP_OS2 -DXP_OS2_EMX -DOS2EMX_PLAIN_CHAR
|
||||
|
||||
OS_CFLAGS = $(OMF_FLAG) -Wall -Wno-unused -Zmtd
|
||||
OS_EXE_CFLAGS = $(OMF_FLAG) -Wall -Wno-unused -Zmtd
|
||||
OS_DLLFLAGS = $(OMF_FLAG) -Zmt -Zdll -Zcrtdll -o $@
|
||||
ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
|
||||
EXEFLAGS += -Zlinker /DE
|
||||
endif
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O3
|
||||
DLLFLAGS =
|
||||
EXEFLAGS = -Zmtd -o $@
|
||||
else
|
||||
OPTIMIZER = -g #-s
|
||||
DLLFLAGS = -g #-s
|
||||
EXEFLAGS = -g $(OMF_FLAG) -Zmtd -L$(DIST)/lib -o $@ # -s
|
||||
ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
|
||||
EXEFLAGS += -Zlinker /DE
|
||||
endif
|
||||
endif
|
||||
|
||||
AR_EXTRA_ARGS =
|
||||
endif
|
||||
|
||||
|
||||
131
mozilla/directory/c-sdk/config/OSF1.mk
Normal file
131
mozilla/directory/c-sdk/config/OSF1.mk
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for DEC OSF/1
|
||||
#
|
||||
|
||||
#
|
||||
# The Bourne shell (sh) on OSF1 doesn't handle "set -e" correctly,
|
||||
# which we use to stop LOOP_OVER_DIRS submakes as soon as any
|
||||
# submake fails. So we use the Korn shell instead.
|
||||
#
|
||||
SHELL = /usr/bin/ksh
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Prior to OSF1 V4.0, classic nspr is the default (and only) implementation
|
||||
# strategy.
|
||||
#
|
||||
# On OSF1 V4.0, pthreads is the default implementation strategy.
|
||||
# Classic nspr is also available.
|
||||
#
|
||||
ifeq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
|
||||
CLASSIC_NSPR = 1
|
||||
endif
|
||||
|
||||
ifeq ($(CLASSIC_NSPR), 1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
IMPL_STRATEGY =
|
||||
else
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
CC = cc $(NON_LD_FLAGS)
|
||||
else
|
||||
CC = cc $(NON_LD_FLAGS) -std1
|
||||
endif
|
||||
|
||||
ifneq ($(OS_RELEASE),V2.0)
|
||||
CC += -readonly_strings
|
||||
endif
|
||||
# The C++ compiler cxx has -readonly_strings on by default.
|
||||
CCC = cxx
|
||||
|
||||
RANLIB = /bin/true
|
||||
|
||||
CPU_ARCH = alpha
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER += -Olimit 4000
|
||||
endif
|
||||
|
||||
NON_LD_FLAGS = -ieee_with_inexact
|
||||
|
||||
OS_CFLAGS = -DOSF1 -D_REENTRANT
|
||||
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
OS_CFLAGS += -DIS_64 -DOSF1V4D -DOSF1
|
||||
endif
|
||||
|
||||
ifneq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -DOSF1_HAVE_MACHINE_BUILTINS_H
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -DHAVE_INT_LOCALTIME_R
|
||||
else
|
||||
OS_CFLAGS += -DHAVE_POINTER_LOCALTIME_R
|
||||
endif
|
||||
|
||||
ifeq (,$(filter-out V4.0%,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -DOSF1V4_MAP_PRIVATE_BUG
|
||||
endif
|
||||
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
OS_CFLAGS += -pthread
|
||||
ifneq (,$(filter-out V2.0 V3.2,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_PR_HAVE_THREADSAFE_GETHOST
|
||||
endif
|
||||
endif
|
||||
|
||||
# The command to build a shared library on OSF1.
|
||||
MKSHLIB = ld -shared -all -expect_unresolved "*" -soname $(notdir $@)
|
||||
DSO_LDOPTS = -shared
|
||||
78
mozilla/directory/c-sdk/config/OpenBSD.mk
Normal file
78
mozilla/directory/c-sdk/config/OpenBSD.mk
Normal file
@@ -0,0 +1,78 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for OpenBSD
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
RANLIB = ranlib
|
||||
|
||||
OS_REL_CFLAGS =
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
CPU_ARCH = x86
|
||||
else
|
||||
CPU_ARCH = $(OS_TEST)
|
||||
endif
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -pipe $(THREAD_FLAG) -DOPENBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
|
||||
|
||||
ifeq ($(USE_PTHREADS),1)
|
||||
THREAD_FLAG += -pthread
|
||||
# XXX probably should define _THREAD_SAFE too.
|
||||
else
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
endif
|
||||
|
||||
ARCH = openbsd
|
||||
|
||||
DLL_SUFFIX = so.1.0
|
||||
|
||||
DSO_CFLAGS = -fPIC
|
||||
DSO_LDOPTS = -Bshareable
|
||||
ifeq ($(OS_TEST),alpha)
|
||||
DSO_LDOPTS = -shared
|
||||
endif
|
||||
ifeq ($(OS_TEST),mips)
|
||||
DSO_LDOPTS = -shared
|
||||
endif
|
||||
ifeq ($(OS_TEST),pmax)
|
||||
DSO_LDOPTS = -shared
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
G++INCLUDES = -I/usr/include/g++
|
||||
67
mozilla/directory/c-sdk/config/OpenVMS.mk
Normal file
67
mozilla/directory/c-sdk/config/OpenVMS.mk
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for Compaq OpenVMS
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
ifdef INTERNAL_TOOLS
|
||||
CC = c89
|
||||
CCC = cxx
|
||||
OPTIMIZER = -O
|
||||
else
|
||||
CC = ccc
|
||||
CCC = ccc
|
||||
endif
|
||||
|
||||
RANLIB = /bin/true
|
||||
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
|
||||
OS_CFLAGS = -DVMS -DVMS_AS_IS -Wc,names=\(short,as\) \
|
||||
-DGENERIC_PTHREAD_REDEFINES
|
||||
OS_CXXFLAGS = -DVMS -DVMS_AS_IS -Wc,names=\(short,as\) \
|
||||
-DGENERIC_PTHREAD_REDEFINES
|
||||
|
||||
#
|
||||
# XCFLAGS are the only CFLAGS that are used during a link operation. Defining
|
||||
# OPTIMIZER in XCFLAGS means that each compilation line gets OPTIMIZER
|
||||
# included twice, but at least we get OPTIMIZER included in the link
|
||||
# operations; and OpenVMS needs it!
|
||||
#
|
||||
XCFLAGS += $(OPTIMIZER)
|
||||
|
||||
# The command to build a shared library in POSIX on OpenVMS.
|
||||
MKSHLIB = vmsld $(OPTIMIZER)
|
||||
57
mozilla/directory/c-sdk/config/QNX.mk
Normal file
57
mozilla/directory/c-sdk/config/QNX.mk
Normal file
@@ -0,0 +1,57 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
######################################################################
|
||||
# Config stuff for QNX.
|
||||
######################################################################
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CPU_ARCH = x86
|
||||
|
||||
ifndef NS_USE_GCC
|
||||
CC = cc
|
||||
CCC = cc
|
||||
endif
|
||||
RANLIB = true
|
||||
|
||||
G++INCLUDES =
|
||||
OS_LIBS =
|
||||
XLDOPTS = -lunix
|
||||
|
||||
OS_CFLAGS = -DQNX -Di386 -D_PR_LOCAL_THREADS_ONLY -D_PR_NEED_H_ERRNO
|
||||
#IMPL_STRATEGY = _EMU
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
GARBAGE = $(wildcard *.err)
|
||||
9
mozilla/directory/c-sdk/config/README
Normal file
9
mozilla/directory/c-sdk/config/README
Normal file
@@ -0,0 +1,9 @@
|
||||
This part of of the tree taken from NSPR 4.1. The
|
||||
NSPR config tree was tagged with:
|
||||
|
||||
cvs tag ldapcsdk_branch50-config
|
||||
|
||||
|
||||
The version of NSPR this was taken from:
|
||||
|
||||
NSPRPUB_RELEASE_4_1 (revision: 3.23)
|
||||
83
mozilla/directory/c-sdk/config/Rhapsody.mk
Normal file
83
mozilla/directory/c-sdk/config/Rhapsody.mk
Normal file
@@ -0,0 +1,83 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for Rhapsody
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# The default implementation strategy for Rhapsody is pthreads.
|
||||
#
|
||||
ifeq ($(CLASSIC_NSPR),1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
CC = cc
|
||||
CCC = c++
|
||||
RANLIB = ranlib
|
||||
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
OS_REL_CFLAGS = -mno-486 -Di386
|
||||
CPU_ARCH = i386
|
||||
else
|
||||
OS_REL_CFLAGS = -Dppc
|
||||
CPU_ARCH = ppc
|
||||
endif
|
||||
|
||||
# "Commons" are tentative definitions in a global scope, like this:
|
||||
# int x;
|
||||
# The meaning of a common is ambiguous. It may be a true definition:
|
||||
# int x = 0;
|
||||
# or it may be a declaration of a symbol defined in another file:
|
||||
# extern int x;
|
||||
# Use the -fno-common option to force all commons to become true
|
||||
# definitions so that the linker can catch multiply-defined symbols.
|
||||
# Also, common symbols are not allowed with Rhapsody dynamic libraries.
|
||||
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wmost -fno-common -pipe -DRHAPSODY -DHAVE_STRERROR -DHAVE_BSD_FLOCK
|
||||
|
||||
ARCH = rhapsody
|
||||
|
||||
# May override this with -bundle to create a loadable module.
|
||||
DSO_LDOPTS = -dynamiclib -compatibility_version 1 -current_version 1 -all_load
|
||||
|
||||
MKSHLIB = $(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS)
|
||||
DLL_SUFFIX = dylib
|
||||
|
||||
G++INCLUDES = -I/usr/include/g++
|
||||
63
mozilla/directory/c-sdk/config/SCOOS.mk
Normal file
63
mozilla/directory/c-sdk/config/SCOOS.mk
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SCO OpenServer for x86.
|
||||
# SCO OpenServer 5, based on SVR3.2, is intended for small to
|
||||
# medium customers.
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
CC = cc -b elf -KPIC
|
||||
CCC = $(NSDEPTH)/build/hcpp CC +.cpp +w
|
||||
RANLIB = /bin/true
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
#
|
||||
# -DSCO - Changes to Netscape source (consistent with AIX, LINUX, etc..)
|
||||
# -Dsco - Needed for /usr/include/X11/*
|
||||
#
|
||||
OS_CFLAGS = -DSYSV -D_SVID3 -DHAVE_STRERROR -D_PR_NEED_H_ERRNO -DSCO -Dsco
|
||||
#OS_LIBS = -lpmapi -lsocket -lc
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCH = sco
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
BSDECHO = /bin/echo
|
||||
|
||||
DSO_LDOPTS = -b elf -G
|
||||
108
mozilla/directory/c-sdk/config/SINIX.mk
Normal file
108
mozilla/directory/c-sdk/config/SINIX.mk
Normal file
@@ -0,0 +1,108 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SNI SINIX (aka ReliantUNIX)
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
ifeq (86,$(findstring 86,$(OS_TEST)))
|
||||
CPU_ARCH = x86
|
||||
else
|
||||
CPU_ARCH = mips
|
||||
endif
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
|
||||
# use gcc -tf-
|
||||
NS_USE_GCC = 1
|
||||
|
||||
ifeq ($(NS_USE_GCC),1)
|
||||
## gcc-2.7.2 homebrewn
|
||||
CC = gcc
|
||||
COMPILER_TAG = _gcc
|
||||
CCC = g++
|
||||
AS = $(CC) -x assembler-with-cpp
|
||||
ifeq ($(CPU_ARCH),mips)
|
||||
LD = gld
|
||||
endif
|
||||
ODD_CFLAGS = -Wall -Wno-format
|
||||
ifeq ($(CPU_ARCH),mips)
|
||||
# The -pipe flag only seems to work on the mips version of SINIX.
|
||||
ODD_CFLAGS += -pipe
|
||||
endif
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O
|
||||
#OPTIMIZER = -O6
|
||||
endif
|
||||
MKSHLIB = $(LD) -G -z defs -h $(@:$(OBJDIR)/%.so=%.so)
|
||||
#DSO_LDOPTS = -G -Xlinker -Blargedynsym
|
||||
else
|
||||
## native compiler (CDS++ 1.0)
|
||||
CC = /usr/bin/cc
|
||||
CCC = /usr/bin/CC
|
||||
AS = /usr/bin/cc
|
||||
#ODD_CFLAGS = -fullwarn -xansi
|
||||
ODD_CFLAGS =
|
||||
ifdef BUILD_OPT
|
||||
#OPTIMIZER = -Olimit 4000
|
||||
OPTIMIZER = -O -F Olimit,4000
|
||||
endif
|
||||
MKSHLIB = $(LD) -G -z defs -h $(@:$(OBJDIR)/%.so=%.so)
|
||||
#DSO_LDOPTS = -G -W l,-Blargedynsym
|
||||
endif
|
||||
|
||||
ifeq ($(CPU_ARCH),x86)
|
||||
DEFINES += -Di386
|
||||
endif
|
||||
|
||||
ODD_CFLAGS += -DSVR4 -DSNI -DRELIANTUNIX -Dsinix -DHAVE_SVID_GETTOD
|
||||
|
||||
# On SINIX 5.43, need to define IP_MULTICAST in order to get the
|
||||
# IP multicast macro and struct definitions in netinet/in.h.
|
||||
# (SINIX 5.42 does not have IP multicast at all.)
|
||||
ifeq ($(OS_RELEASE),5.43)
|
||||
ODD_CFLAGS += -DIP_MULTICAST
|
||||
endif
|
||||
|
||||
RANLIB = /bin/true
|
||||
|
||||
# For purify
|
||||
NOMD_OS_CFLAGS = $(ODD_CFLAGS)
|
||||
|
||||
# we do not have -MDupdate ...
|
||||
OS_CFLAGS = $(NOMD_OS_CFLAGS)
|
||||
OS_LIBS = -lsocket -lnsl -lresolv -ldl -lc
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
42
mozilla/directory/c-sdk/config/SunOS.mk
Normal file
42
mozilla/directory/c-sdk/config/SunOS.mk
Normal file
@@ -0,0 +1,42 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SunOS.
|
||||
# 4 and 5 are vastly different, so we use 2 different files.
|
||||
#
|
||||
ifeq ($(basename $(OS_RELEASE)),4.1)
|
||||
include $(MOD_DEPTH)/config/SunOS4.mk
|
||||
else
|
||||
include $(MOD_DEPTH)/config/SunOS5.mk
|
||||
endif
|
||||
68
mozilla/directory/c-sdk/config/SunOS4.mk
Normal file
68
mozilla/directory/c-sdk/config/SunOS4.mk
Normal file
@@ -0,0 +1,68 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SunOS4.1
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
# SunOS 4 _requires_ that shared libs have a version number.
|
||||
# XXX FIXME: Version number should use NSPR_VERSION_NUMBER?
|
||||
DLL_SUFFIX = so.1.0
|
||||
|
||||
CC = gcc
|
||||
CCC = g++
|
||||
COMPILER_TAG = _gcc
|
||||
|
||||
RANLIB = ranlib
|
||||
|
||||
CPU_ARCH = sparc
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
# Purify doesn't like -MDupdate
|
||||
NOMD_OS_CFLAGS = -Wall -Wno-format -DSUNOS4
|
||||
|
||||
ifdef NO_MDUPDATE
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(NOMD_OS_CFLAGS)
|
||||
else
|
||||
OS_CFLAGS = $(DSO_CFLAGS) $(NOMD_OS_CFLAGS) -MDupdate $(DEPENDENCIES)
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
DSO_LDOPTS =
|
||||
# -fPIC generates position-independent code for use in a shared library.
|
||||
DSO_CFLAGS = -fPIC
|
||||
48
mozilla/directory/c-sdk/config/SunOS5.8_i86pc.mk
Normal file
48
mozilla/directory/c-sdk/config/SunOS5.8_i86pc.mk
Normal file
@@ -0,0 +1,48 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape security libraries.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
# Config stuff for Solaris 8 on x86
|
||||
#
|
||||
|
||||
SOL_CFLAGS = -D_SVID_GETTOD
|
||||
|
||||
include $(CORE_DEPTH)/coreconf/SunOS5.mk
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCHFLAG =
|
||||
OS_DEFINES += -Di386
|
||||
|
||||
ifeq ($(OS_RELEASE),5.8_i86pc)
|
||||
OS_DEFINES += -DSOLARIS2_8
|
||||
endif
|
||||
|
||||
OS_LIBS += -lnsl -lsocket -lposix4 -ldl -lc
|
||||
44
mozilla/directory/c-sdk/config/SunOS5.9.mk
Executable file
44
mozilla/directory/c-sdk/config/SunOS5.9.mk
Executable file
@@ -0,0 +1,44 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape security libraries.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1994-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
# Config stuff for SunOS5.9
|
||||
#
|
||||
|
||||
SOL_CFLAGS += -D_SVID_GETTOD
|
||||
|
||||
include $(CORE_DEPTH)/coreconf/SunOS5.mk
|
||||
|
||||
ifeq ($(OS_RELEASE),5.9)
|
||||
OS_DEFINES += -DSOLARIS2_9
|
||||
endif
|
||||
|
||||
OS_LIBS += -lnsl -lsocket -lposix4 -ldl -lc
|
||||
48
mozilla/directory/c-sdk/config/SunOS5.9_i86pc.mk
Executable file
48
mozilla/directory/c-sdk/config/SunOS5.9_i86pc.mk
Executable file
@@ -0,0 +1,48 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape security libraries.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
# Config stuff for Solaris 9 on x86
|
||||
#
|
||||
|
||||
SOL_CFLAGS = -D_SVID_GETTOD
|
||||
|
||||
include $(CORE_DEPTH)/coreconf/SunOS5.mk
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCHFLAG =
|
||||
OS_DEFINES += -Di386
|
||||
|
||||
ifeq ($(OS_RELEASE),5.9_i86pc)
|
||||
OS_DEFINES += -DSOLARIS2_9
|
||||
endif
|
||||
|
||||
OS_LIBS += -lnsl -lsocket -lposix4 -ldl -lc
|
||||
223
mozilla/directory/c-sdk/config/SunOS5.mk
Normal file
223
mozilla/directory/c-sdk/config/SunOS5.mk
Normal file
@@ -0,0 +1,223 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SunOS 5.x on sparc and x86
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
#
|
||||
# XXX
|
||||
# Temporary define for the Client; to be removed when binary release is used
|
||||
#
|
||||
ifdef MOZILLA_CLIENT
|
||||
ifneq ($(USE_PTHREADS),1)
|
||||
LOCAL_THREADS_ONLY = 1
|
||||
endif
|
||||
ifndef NS_USE_NATIVE
|
||||
NS_USE_GCC = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# The default implementation strategy on Solaris is pthreads.
|
||||
# Global threads only and local threads only are also available.
|
||||
#
|
||||
ifeq ($(GLOBAL_THREADS_ONLY),1)
|
||||
IMPL_STRATEGY = _NATIVE
|
||||
DEFINES += -D_PR_GLOBAL_THREADS_ONLY
|
||||
else
|
||||
ifeq ($(LOCAL_THREADS_ONLY),1)
|
||||
IMPL_STRATEGY = _EMU
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
else
|
||||
USE_PTHREADS = 1
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
IMPL_STRATEGY =
|
||||
else
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
CC = gcc -Wall
|
||||
CCC = g++ -Wall
|
||||
ASFLAGS += -Wa,-P
|
||||
COMPILER_TAG = _gcc
|
||||
ifdef NO_MDUPDATE
|
||||
OS_CFLAGS = $(NOMD_OS_CFLAGS)
|
||||
else
|
||||
OS_CFLAGS = $(NOMD_OS_CFLAGS) -MDupdate $(DEPENDENCIES)
|
||||
endif
|
||||
else
|
||||
CC = cc -xstrconst
|
||||
# 'conststrings' enabled by default in CC standard mode
|
||||
CCC = CC
|
||||
ASFLAGS += -Wa,-P
|
||||
OS_CFLAGS = $(NOMD_OS_CFLAGS)
|
||||
#
|
||||
# If we are building for a release, we want to put all symbol
|
||||
# tables in the debug executable or share library instead of
|
||||
# the .o files, so that our clients can run dbx on the debug
|
||||
# library without having the .o files around.
|
||||
#
|
||||
ifdef BUILD_NUMBER
|
||||
ifndef BUILD_OPT
|
||||
OS_CFLAGS += -xs
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(USE_64),1)
|
||||
ifneq ($(NS_USE_GCC), 1)
|
||||
ifeq ($(CPU_ARCH),sparc)
|
||||
CC += -xarch=v9
|
||||
CCC += -xarch=v9
|
||||
COMPILER_TAG = _64
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),i386)
|
||||
CC += -xarch=amd64
|
||||
CCC += -xarch=amd64
|
||||
CPU_ARCH = x86_64
|
||||
COMPILER_TAG = _i86pc_64
|
||||
OS_DEFINES += -Dx86_64
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifeq ($(OS_TEST),i86pc)
|
||||
COMPILER_TAG = _i86pc
|
||||
else
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
COMPILER_TAG =
|
||||
else
|
||||
COMPILER_TAG = _32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
RANLIB = echo
|
||||
|
||||
OS_DEFINES = -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS
|
||||
|
||||
ifeq ($(OS_TEST),i86pc)
|
||||
# The default debug format, DWARF (-g), is not supported by gcc
|
||||
# on i386-ANY-sysv4/solaris, but the stabs format is. It is
|
||||
# assumed that the Solaris assembler /usr/ccs/bin/as is used.
|
||||
# If your gcc uses GNU as, you do not need the -Wa,-s option.
|
||||
ifndef BUILD_OPT
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
OPTIMIZER = -Wa,-s -gstabs
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
CPU_ARCH =
|
||||
else
|
||||
CPU_ARCH = sparc
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
CPU_ARCH_TAG =
|
||||
else
|
||||
CPU_ARCH_TAG = _$(CPU_ARCH)
|
||||
endif
|
||||
|
||||
ifeq (5.5,$(findstring 5.5,$(OS_RELEASE)))
|
||||
OS_DEFINES += -DSOLARIS2_5
|
||||
else
|
||||
ifeq (,$(filter-out 5.3 5.4,$(OS_RELEASE)))
|
||||
OS_DEFINES += -D_PR_NO_LARGE_FILES
|
||||
else
|
||||
OS_DEFINES += -D_PR_HAVE_OFF64_T
|
||||
# The lfcompile64(5) man page on Solaris 2.6 says:
|
||||
# For applications that do not wish to conform to the POSIX or
|
||||
# X/Open specifications, the 64-bit transitional interfaces
|
||||
# are available by default. No compile-time flags need to be
|
||||
# set.
|
||||
# But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
|
||||
# The native compiler, gcc 2.8.x, and egcs don't have this problem.
|
||||
#ifeq ($(NS_USE_GCC), 1)
|
||||
OS_DEFINES += -D_LARGEFILE64_SOURCE
|
||||
#endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(LOCAL_THREADS_ONLY),1)
|
||||
OS_DEFINES += -D_REENTRANT -DHAVE_POINTER_LOCALTIME_R
|
||||
endif
|
||||
|
||||
# Purify doesn't like -MDupdate
|
||||
NOMD_OS_CFLAGS = $(DSO_CFLAGS) $(OS_DEFINES) $(SOL_CFLAGS)
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
|
||||
# ld options:
|
||||
# -G: produce a shared object
|
||||
# -z defs: no unresolved symbols allowed
|
||||
DSO_LDOPTS = -G -h $(notdir $@)
|
||||
|
||||
# -KPIC generates position independent code for use in shared libraries.
|
||||
# (Similarly for -fPIC in case of gcc.)
|
||||
ifeq ($(NS_USE_GCC), 1)
|
||||
DSO_CFLAGS = -fPIC
|
||||
else
|
||||
DSO_CFLAGS = -KPIC
|
||||
endif
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
|
||||
#
|
||||
# Library of atomic functions for UltraSparc systems
|
||||
#
|
||||
# The nspr makefiles build ULTRASPARC_LIBRARY (which contains assembly language
|
||||
# implementation of the nspr atomic functions for UltraSparc systems) in addition
|
||||
# to libnspr.so. (The actual name of the library is
|
||||
# lib$(ULTRASPARC_LIBRARY)$(MOD_VERSION).so
|
||||
#
|
||||
# The actual name of the filter-library, recorded in libnspr.so, is set to the
|
||||
# value of $(ULTRASPARC_FILTER_LIBRARY).
|
||||
# For an application to use the assembly-language implementation, a link should be
|
||||
# made so that opening ULTRASPARC_FILTER_LIBRARY results in opening
|
||||
# ULTRASPARC_LIBRARY. This indirection requires the user to explicitly set up
|
||||
# library for use on UltraSparc systems, thereby helping to avoid using it by
|
||||
# accident on non-UltraSparc systems.
|
||||
# The directory containing the ultrasparc libraries should be in LD_LIBRARY_PATH.
|
||||
#
|
||||
ifeq ($(OS_TEST),sun4u)
|
||||
ULTRASPARC_LIBRARY = ultrasparc
|
||||
ULTRASPARC_FILTER_LIBRARY = libatomic.so
|
||||
DSO_LDOPTS += -f $(ULTRASPARC_FILTER_LIBRARY)
|
||||
endif
|
||||
91
mozilla/directory/c-sdk/config/UNIX.mk
Normal file
91
mozilla/directory/c-sdk/config/UNIX.mk
Normal file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
PR_UNIXOS = 1
|
||||
XP_DEFINE = -DXP_UNIX
|
||||
OBJ_SUFFIX = o
|
||||
LIB_SUFFIX = a
|
||||
DLL_SUFFIX = so
|
||||
AR = ar cr $@
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -O
|
||||
DEFINES = -UDEBUG -DNDEBUG
|
||||
OBJDIR_TAG = _OPT
|
||||
else
|
||||
OPTIMIZER = -g
|
||||
DEFINES = -DDEBUG -UNDEBUG
|
||||
OBJDIR_TAG = _DBG
|
||||
endif
|
||||
|
||||
# Name of the binary code directories
|
||||
ifdef MOZILLA_CLIENT
|
||||
OBJDIR_NAME = $(OS_CONFIG)$(CPU_ARCH_TAG)$(OBJDIR_TAG).OBJ
|
||||
else
|
||||
OBJDIR_NAME = $(OS_CONFIG)$(CPU_ARCH_TAG)$(COMPILER_TAG)$(IMPL_STRATEGY)$(OBJDIR_TAG).OBJ
|
||||
endif
|
||||
|
||||
MKDEPEND_DIR = $(DEPTH)/config/mkdepend
|
||||
MKDEPEND = $(MKDEPEND_DIR)/$(OBJDIR_NAME)/mkdepend
|
||||
MKDEPENDENCIES = $(OBJDIR)/depend.mk
|
||||
|
||||
####################################################################
|
||||
#
|
||||
# One can define the makefile variable NSDISTMODE to control
|
||||
# how files are published to the 'dist' directory. If not
|
||||
# defined, the default is "install using relative symbolic
|
||||
# links". The two possible values are "copy", which copies files
|
||||
# but preserves source mtime, and "absolute_symlink", which
|
||||
# installs using absolute symbolic links. The "absolute_symlink"
|
||||
# option requires NFSPWD.
|
||||
#
|
||||
####################################################################
|
||||
|
||||
NSINSTALL = $(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall
|
||||
|
||||
ifeq ($(NSDISTMODE),copy)
|
||||
# copy files, but preserve source mtime
|
||||
INSTALL = $(NSINSTALL) -t
|
||||
else
|
||||
ifeq ($(NSDISTMODE),absolute_symlink)
|
||||
# install using absolute symbolic links
|
||||
INSTALL = $(NSINSTALL) -L `$(NFSPWD)`
|
||||
else
|
||||
# install using relative symbolic links
|
||||
INSTALL = $(NSINSTALL) -R
|
||||
endif
|
||||
endif
|
||||
|
||||
define MAKE_OBJDIR
|
||||
if test ! -d $(@D); then rm -rf $(@D); $(NSINSTALL) -D $(@D); else true; fi
|
||||
endef
|
||||
71
mozilla/directory/c-sdk/config/UNIXWARE.mk
Normal file
71
mozilla/directory/c-sdk/config/UNIXWARE.mk
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for SCO UnixWare
|
||||
# UnixWare is intended for high-end enterprise customers.
|
||||
# UnixWare 2.1 and 2.1.1 are based on SVR4. (2.1.2 is a maintenance
|
||||
# release.)
|
||||
# UnixWare 7 (codename Gemini) is based on what SCO calls SVR5.
|
||||
# The somewhat odd version number 7 was chosen to suggest that
|
||||
# UnixWare 2 + OpenServer 5 = UnixWare 7
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/UNIX.mk
|
||||
|
||||
ifeq (,$(filter-out 2.1,$(OS_RELEASE)))
|
||||
CC = $(NSDEPTH)/build/hcc cc
|
||||
CCC = $(NSDEPTH)/build/hcpp CC
|
||||
else
|
||||
CC = cc
|
||||
CCC = CC
|
||||
endif
|
||||
|
||||
RANLIB = true
|
||||
|
||||
DEFINES += -D_PR_LOCAL_THREADS_ONLY
|
||||
OS_CFLAGS = -DSVR4 -DSYSV -DUNIXWARE
|
||||
|
||||
ifeq (,$(filter-out 2.1,$(OS_RELEASE)))
|
||||
OS_CFLAGS += -D_PR_NO_LARGE_FILES
|
||||
else
|
||||
OS_CFLAGS += -D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T -D_PR_HAVE_SOCKADDR_LEN
|
||||
endif
|
||||
|
||||
MKSHLIB = $(LD) $(DSO_LDOPTS)
|
||||
DSO_LDOPTS = -G
|
||||
|
||||
CPU_ARCH = x86
|
||||
ARCH = sco
|
||||
|
||||
NOSUCHFILE = /no-such-file
|
||||
175
mozilla/directory/c-sdk/config/WIN32.mk
Normal file
175
mozilla/directory/c-sdk/config/WIN32.mk
Normal file
@@ -0,0 +1,175 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Configuration common to all versions of Windows NT
|
||||
# and Windows 95.
|
||||
#
|
||||
|
||||
#
|
||||
# Client build: make sure we use the shmsdos.exe under $(MOZ_TOOLS).
|
||||
# $(MOZ_TOOLS_FLIPPED) is $(MOZ_TOOLS) with all the backslashes
|
||||
# flipped, so that gmake won't interpret them as escape characters.
|
||||
#
|
||||
ifdef PR_CLIENT_BUILD_WINDOWS
|
||||
SHELL = $(MOZ_TOOLS_FLIPPED)/bin/shmsdos.exe
|
||||
endif
|
||||
|
||||
CC = cl
|
||||
CCC = cl
|
||||
LINK = link
|
||||
AR = lib -NOLOGO -OUT:"$@"
|
||||
RANLIB = echo
|
||||
BSDECHO = echo
|
||||
NSINSTALL = nsinstall
|
||||
INSTALL = $(NSINSTALL)
|
||||
define MAKE_OBJDIR
|
||||
if test ! -d $(@D); then rm -rf $(@D); $(NSINSTALL) -D $(@D); fi
|
||||
endef
|
||||
RC = rc.exe
|
||||
|
||||
GARBAGE = $(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb
|
||||
|
||||
XP_DEFINE = -DXP_PC
|
||||
OBJ_SUFFIX = obj
|
||||
LIB_SUFFIX = lib
|
||||
DLL_SUFFIX = dll
|
||||
|
||||
OS_CFLAGS = -W3 -nologo -GF -Gy
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OS_CFLAGS += -MD
|
||||
OPTIMIZER = -O2
|
||||
DEFINES = -UDEBUG -U_DEBUG -DNDEBUG
|
||||
DLLFLAGS = -OUT:"$@"
|
||||
OBJDIR_TAG = _OPT
|
||||
|
||||
# Add symbolic information for use by a profiler
|
||||
ifdef MOZ_PROFILE
|
||||
OPTIMIZER += -Zi
|
||||
DLLFLAGS += -DEBUG -DEBUGTYPE:CV
|
||||
LDFLAGS += -DEBUG -DEBUGTYPE:CV
|
||||
endif
|
||||
|
||||
else
|
||||
#
|
||||
# Define USE_DEBUG_RTL if you want to use the debug runtime library
|
||||
# (RTL) in the debug build
|
||||
#
|
||||
ifdef USE_DEBUG_RTL
|
||||
OS_CFLAGS += -MDd
|
||||
else
|
||||
OS_CFLAGS += -MD
|
||||
endif
|
||||
OPTIMIZER = -Od -Zi
|
||||
#OPTIMIZER = -Zi -Fd$(OBJDIR)/ -Od
|
||||
DEFINES = -DDEBUG -D_DEBUG -UNDEBUG
|
||||
|
||||
DLLFLAGS = -DEBUG -DEBUGTYPE:CV -OUT:"$@"
|
||||
ifdef GLOWCODE
|
||||
DLLFLAGS = -DEBUG -DEBUGTYPE:both -INCLUDE:_GlowCode -OUT:"$@"
|
||||
endif
|
||||
|
||||
OBJDIR_TAG = _DBG
|
||||
LDFLAGS = -DEBUG -DEBUGTYPE:CV
|
||||
#
|
||||
# When PROFILE=1 is defined, set the compile and link options
|
||||
# to build targets for use by the ms-win32 profiler
|
||||
#
|
||||
ifdef PROFILE
|
||||
LDFLAGS += -PROFILE -MAP
|
||||
DLLFLAGS += -PROFILE -MAP
|
||||
endif
|
||||
endif
|
||||
|
||||
DEFINES += -DWIN32 -D_WINDOWS
|
||||
|
||||
#
|
||||
# On Win95, we use the TlsXXX() interface by default because that
|
||||
# allows us to load the NSPR DLL dynamically at run time.
|
||||
# If you want to use static thread-local storage (TLS) for better
|
||||
# performance, build the NSPR library with USE_STATIC_TLS=1.
|
||||
#
|
||||
ifeq ($(USE_STATIC_TLS),1)
|
||||
DEFINES += -D_PR_USE_STATIC_TLS
|
||||
endif
|
||||
|
||||
#
|
||||
# NSPR uses both fibers and static thread-local storage
|
||||
# (i.e., __declspec(thread) variables) on NT. We need the -GT
|
||||
# flag to turn off certain compiler optimizations so that fibers
|
||||
# can use static TLS safely.
|
||||
#
|
||||
# Also, we optimize for Pentium (-G5) on NT.
|
||||
#
|
||||
ifeq ($(OS_TARGET),WINNT)
|
||||
OS_CFLAGS += -GT
|
||||
ifeq ($(CPU_ARCH),x86)
|
||||
OS_CFLAGS += -G5
|
||||
endif
|
||||
DEFINES += -DWINNT
|
||||
else
|
||||
DEFINES += -DWIN95 -D_PR_GLOBAL_THREADS_ONLY
|
||||
endif
|
||||
|
||||
ifeq ($(CPU_ARCH),x86)
|
||||
DEFINES += -D_X86_
|
||||
else
|
||||
ifeq ($(CPU_ARCH),MIPS)
|
||||
DEFINES += -D_MIPS_
|
||||
else
|
||||
ifeq ($(CPU_ARCH),ALPHA)
|
||||
DEFINES += -D_ALPHA_=1
|
||||
else
|
||||
CPU_ARCH = processor_is_undefined
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Name of the binary code directories
|
||||
|
||||
ifeq ($(CPU_ARCH),x86)
|
||||
CPU_ARCH_TAG =
|
||||
else
|
||||
CPU_ARCH_TAG = $(CPU_ARCH)
|
||||
endif
|
||||
|
||||
ifdef USE_DEBUG_RTL
|
||||
OBJDIR_SUFFIX = OBJD
|
||||
else
|
||||
OBJDIR_SUFFIX = OBJ
|
||||
endif
|
||||
|
||||
OBJDIR_NAME = $(OS_CONFIG)$(CPU_ARCH_TAG)$(OBJDIR_TAG).$(OBJDIR_SUFFIX)
|
||||
|
||||
OS_DLLFLAGS = -nologo -DLL -SUBSYSTEM:WINDOWS -PDB:NONE
|
||||
38
mozilla/directory/c-sdk/config/WIN95.mk
Normal file
38
mozilla/directory/c-sdk/config/WIN95.mk
Normal file
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for WIN95
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/WIN32.mk
|
||||
38
mozilla/directory/c-sdk/config/WINNT.mk
Normal file
38
mozilla/directory/c-sdk/config/WINNT.mk
Normal file
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Config stuff for WINNT
|
||||
#
|
||||
|
||||
include $(MOD_DEPTH)/config/WIN32.mk
|
||||
307
mozilla/directory/c-sdk/config/arch.mk
Normal file
307
mozilla/directory/c-sdk/config/arch.mk
Normal file
@@ -0,0 +1,307 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#######################################################################
|
||||
# Master "Core Components" macros for getting the OS architecture #
|
||||
#######################################################################
|
||||
|
||||
#
|
||||
# Important internal static macros
|
||||
#
|
||||
|
||||
OS_ARCH := $(subst /,_,$(shell uname -s))
|
||||
OS_RELEASE := $(shell uname -r)
|
||||
OS_TEST := $(shell uname -m)
|
||||
|
||||
#
|
||||
# No -p option in HPUX uname and since we
|
||||
# do not build for Itanic skip it for now
|
||||
#
|
||||
|
||||
ifneq ($(OS_ARCH),HP-UX)
|
||||
CPU_ARCH := $(shell uname -p)
|
||||
endif
|
||||
|
||||
#
|
||||
# Tweak the default OS_ARCH and OS_RELEASE macros as needed.
|
||||
#
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
ifeq (2.6,$(findstring 2.6,$(OS_RELEASE)))
|
||||
OS_RELEASE :=2.6
|
||||
endif
|
||||
ifeq (2.4,$(findstring 2.4,$(OS_RELEASE)))
|
||||
OS_RELEASE :=2.4
|
||||
endif
|
||||
ifeq (2.2,$(findstring 2.2,$(OS_RELEASE)))
|
||||
OS_RELEASE :=2.2
|
||||
endif
|
||||
ifeq (2.1,$(findstring 2.1,$(OS_RELEASE)))
|
||||
OS_RELEASE :=2.1
|
||||
endif
|
||||
ifeq (2.0,$(findstring 2.0,$(OS_RELEASE)))
|
||||
OS_RELEASE :=2.0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH),AIX)
|
||||
OS_RELEASE := $(shell uname -v).$(shell uname -r)
|
||||
endif
|
||||
ifeq ($(OS_ARCH),BSD_386)
|
||||
OS_ARCH := BSD_OS
|
||||
endif
|
||||
ifeq ($(OS_ARCH),dgux)
|
||||
OS_ARCH := DGUX
|
||||
endif
|
||||
ifeq ($(OS_ARCH),IRIX64)
|
||||
OS_ARCH := IRIX
|
||||
endif
|
||||
ifeq ($(OS_ARCH),UNIX_SV)
|
||||
ifneq ($(findstring NCR,$(shell grep NCR /etc/bcheckrc | head -1 )),)
|
||||
OS_ARCH := NCR
|
||||
else
|
||||
OS_ARCH := UNIXWARE
|
||||
OS_RELEASE := $(shell uname -v)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH),Mac OS)
|
||||
OS_ARCH := Rhapsody
|
||||
endif
|
||||
ifeq ($(OS_ARCH),Darwin)
|
||||
OS_ARCH := Rhapsody
|
||||
endif
|
||||
ifeq ($(OS_ARCH),ncr)
|
||||
OS_ARCH := NCR
|
||||
endif
|
||||
# This is the only way to correctly determine the actual OS version on NCR boxes.
|
||||
ifeq ($(OS_ARCH),NCR)
|
||||
OS_RELEASE := $(shell awk '{print $$3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$$/\2.\3/')
|
||||
endif
|
||||
ifeq ($(OS_ARCH),UNIX_System_V)
|
||||
OS_ARCH := NEC
|
||||
endif
|
||||
ifneq (,$(findstring POSIX_for_OpenVMS,$(OS_ARCH)))
|
||||
OS_ARCH := OpenVMS
|
||||
CPU_ARCH := $(shell uname -Wh)
|
||||
OS_RELEASE := $(shell uname -v)
|
||||
endif
|
||||
ifeq ($(OS_ARCH),QNX)
|
||||
ifeq ($(OS_RELEASE),6.00)
|
||||
OS_ARCH := NTO
|
||||
OS_RELEASE := _$(OS_TEST)$(OS_RELEASE)
|
||||
else
|
||||
OS_RELEASE := $(shell uname -v | sed 's/^\([0-9]\)\([0-9]*\)$$/\1.\2/')
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH),SCO_SV)
|
||||
OS_ARCH := SCOOS
|
||||
OS_RELEASE := 5.0
|
||||
endif
|
||||
ifeq ($(OS_ARCH),SINIX-N)
|
||||
OS_ARCH := SINIX
|
||||
endif
|
||||
ifeq ($(OS_ARCH),SINIX-Y)
|
||||
OS_ARCH := SINIX
|
||||
endif
|
||||
ifeq ($(OS_ARCH),SINIX-Z)
|
||||
OS_ARCH := SINIX
|
||||
endif
|
||||
# SINIX changes name to ReliantUNIX with 5.43
|
||||
ifeq ($(OS_ARCH),ReliantUNIX-N)
|
||||
OS_ARCH := SINIX
|
||||
endif
|
||||
ifeq ($(OS_ARCH),UnixWare)
|
||||
OS_ARCH := UNIXWARE
|
||||
OS_RELEASE := $(shell uname -v)
|
||||
endif
|
||||
|
||||
#
|
||||
# Handle FreeBSD 2.2-STABLE and Linux 2.0.30-osfmach3
|
||||
#
|
||||
|
||||
ifeq (,$(filter-out Linux FreeBSD,$(OS_ARCH)))
|
||||
OS_RELEASE := $(shell echo "$(OS_RELEASE)" | sed 's/-.*//')
|
||||
endif
|
||||
|
||||
#
|
||||
# Distinguish between OSF1 V4.0B and V4.0D
|
||||
#
|
||||
|
||||
ifeq ($(OS_ARCH)$(OS_RELEASE),OSF1V4.0)
|
||||
OS_VERSION := $(shell uname -v)
|
||||
ifeq ($(OS_VERSION),564)
|
||||
OS_RELEASE := V4.0B
|
||||
endif
|
||||
ifeq ($(OS_VERSION),878)
|
||||
OS_RELEASE := V4.0D
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Handle uname variants for OS/2.
|
||||
#
|
||||
|
||||
ifeq ($(OS_ARCH),OS_2)
|
||||
OS_ARCH := OS2
|
||||
OS_RELEASE := 4.0
|
||||
endif
|
||||
|
||||
#######################################################################
|
||||
# Master "Core Components" macros for getting the OS target #
|
||||
#######################################################################
|
||||
|
||||
#
|
||||
# Note: OS_TARGET should be specified on the command line for gmake.
|
||||
# When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
|
||||
# The difference between the Win95 target and the WinNT target is that
|
||||
# the WinNT target uses Windows NT specific features not available
|
||||
# in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
|
||||
# at lesser performance (the Win95 target uses threads; the WinNT target
|
||||
# uses fibers).
|
||||
#
|
||||
# When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
|
||||
# is built. See: win16_3.11.mk for lots more about the Win16 target.
|
||||
#
|
||||
# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
|
||||
# cross-compilation.
|
||||
#
|
||||
|
||||
#
|
||||
# The following hack allows one to build on a WIN95 machine (as if
|
||||
# s/he were cross-compiling on a WINNT host for a WIN95 target).
|
||||
# It also accomodates for MKS's uname.exe. If you never intend
|
||||
# to do development on a WIN95 machine, you don't need this hack.
|
||||
#
|
||||
ifeq ($(OS_ARCH),WIN95)
|
||||
OS_ARCH := WINNT
|
||||
OS_TARGET := WIN95
|
||||
endif
|
||||
ifeq ($(OS_ARCH),Windows_95)
|
||||
OS_ARCH := Windows_NT
|
||||
OS_TARGET := WIN95
|
||||
endif
|
||||
ifeq ($(OS_ARCH),CYGWIN_95-4.0)
|
||||
OS_ARCH := CYGWIN_NT-4.0
|
||||
OS_TARGET := WIN95
|
||||
endif
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
OS_ARCH := OS2
|
||||
OS_TARGET := OS2
|
||||
endif
|
||||
|
||||
#
|
||||
# On WIN32, we also define the variable CPU_ARCH.
|
||||
#
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
ifneq ($(subst /,_,$(shell uname -s)),OS_2)
|
||||
CPU_ARCH := $(shell uname -p)
|
||||
else
|
||||
CPU_ARCH := $(shell uname -m)
|
||||
endif
|
||||
ifeq ($(CPU_ARCH),I386)
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
else
|
||||
#
|
||||
# If uname -s returns "Windows_NT", we assume that we are using
|
||||
# the uname.exe in MKS toolkit.
|
||||
#
|
||||
# The -r option of MKS uname only returns the major version number.
|
||||
# So we need to use its -v option to get the minor version number.
|
||||
# Moreover, it doesn't have the -p option, so we need to use uname -m.
|
||||
#
|
||||
ifeq ($(OS_ARCH), Windows_NT)
|
||||
OS_ARCH = WINNT
|
||||
OS_MINOR_RELEASE := $(shell uname -v)
|
||||
ifeq ($(OS_MINOR_RELEASE),00)
|
||||
OS_MINOR_RELEASE = 0
|
||||
endif
|
||||
OS_RELEASE := $(OS_RELEASE).$(OS_MINOR_RELEASE)
|
||||
CPU_ARCH := $(shell uname -m)
|
||||
#
|
||||
# MKS's uname -m returns "586" on a Pentium machine.
|
||||
#
|
||||
ifneq (,$(findstring 86,$(CPU_ARCH)))
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
else
|
||||
#
|
||||
# If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
|
||||
# the uname.exe in the Cygwin tools.
|
||||
#
|
||||
ifeq (CYGWIN_NT,$(findstring CYGWIN_NT,$(OS_ARCH)))
|
||||
OS_RELEASE := $(patsubst CYGWIN_NT-%,%,$(OS_ARCH))
|
||||
OS_ARCH = WINNT
|
||||
CPU_ARCH := $(shell uname -m)
|
||||
#
|
||||
# Cygwin's uname -m returns "i686" on a Pentium Pro machine.
|
||||
#
|
||||
ifneq (,$(findstring 86,$(CPU_ARCH)))
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
else
|
||||
#
|
||||
# Prior to the Beta 20 release, Cygwin was called GNU-Win32.
|
||||
# If uname -s returns "CYGWIN32/NT", we assume that we are using
|
||||
# the uname.exe in the GNU-Win32 tools.
|
||||
#
|
||||
ifeq ($(OS_ARCH), CYGWIN32_NT)
|
||||
OS_ARCH = WINNT
|
||||
CPU_ARCH := $(shell uname -m)
|
||||
#
|
||||
# GNU-Win32's uname -m returns "i686" on a Pentium Pro machine.
|
||||
#
|
||||
ifneq (,$(findstring 86,$(CPU_ARCH)))
|
||||
CPU_ARCH = x86
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef OS_TARGET
|
||||
OS_TARGET := $(OS_ARCH)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_TARGET), WIN95)
|
||||
OS_RELEASE := 4.0
|
||||
endif
|
||||
|
||||
ifeq ($(OS_TARGET), WIN16)
|
||||
OS_RELEASE :=
|
||||
# OS_RELEASE := _3.11
|
||||
endif
|
||||
|
||||
OS_CONFIG := $(OS_TARGET)$(OS_RELEASE)
|
||||
87
mozilla/directory/c-sdk/config/autoconf.mk.in
Normal file
87
mozilla/directory/c-sdk/config/autoconf.mk.in
Normal file
@@ -0,0 +1,87 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org LDAP SDK autoconf glue.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Commmunications Corp. Portions created by Netscape are
|
||||
# Copyright (C) 2000, Netscape Communications Corp. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
|
||||
#
|
||||
|
||||
USE_AUTOCONF = 1
|
||||
MOZILLA_CLIENT = @MOZILLA_CLIENT@
|
||||
DIST = @prefix@
|
||||
OBJDIR_NAME = .
|
||||
OBJDIR = .
|
||||
OBJ_SUFFIX = @OBJ_SUFFIX@
|
||||
LIB_SUFFIX = @LIB_SUFFIX@
|
||||
DLL_SUFFIX = @DLL_SUFFIX@
|
||||
MOD_VERSION = @NSPR_VERSION@
|
||||
MOD_NAME = @NSPR_MODNAME@
|
||||
|
||||
USE_CPLUS = @USE_CPLUS@
|
||||
USE_IPV6 = @USE_IPV6@
|
||||
USE_N32 = @USE_N32@
|
||||
USE_64 = @USE_64@
|
||||
|
||||
USE_PTHREADS = @USE_PTHREADS@
|
||||
USE_BTHREADS = @USE_BTHREADS@
|
||||
PTHREADS_USER = @USE_USER_PTHREADS@
|
||||
CLASSIC_NSPR = @USE_NSPR_THREADS@
|
||||
|
||||
AS = @AS@
|
||||
ASFLAGS = @ASFLAGS@
|
||||
CC = @CC@
|
||||
CCC = @CXX@
|
||||
AR = @AR@
|
||||
AR_FLAGS = @AR_FLAGS@
|
||||
LD = @LD@
|
||||
RANLIB = @RANLIB@
|
||||
PERL = @PERL@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
WINDRES = @WINDRES@
|
||||
RC = $(WINDRES)
|
||||
|
||||
OS_CFLAGS = @CFLAGS@ $(DSO_CFLAGS)
|
||||
OS_CXXFLAGS = @CXXFLAGS@ $(DSO_CFLAGS)
|
||||
OS_LIBS = @OS_LIBS@
|
||||
OS_LDFLAGS = @LDFLAGS@
|
||||
|
||||
MKSHLIB = @MKSHLIB@
|
||||
DSO_CFLAGS = @DSO_CFLAGS@
|
||||
DSO_LDOPTS = @DSO_LDOPTS@
|
||||
|
||||
RESOLVE_LINK_SYMBOLS = @RESOLVE_LINK_SYMBOLS@
|
||||
|
||||
HOST_CC = @HOST_CC@
|
||||
HOST_CFLAGS = @HOST_CFLAGS@
|
||||
|
||||
DEFINES = @DEFINES@ @DEFS@
|
||||
|
||||
MDCPUCFG_H = @MDCPUCFG_H@
|
||||
MOZ_TARGET = @MOZ_TARGET@
|
||||
PR_MD_CSRCS = @PR_MD_CSRCS@
|
||||
PR_MD_ASFILES = @PR_MD_ASFILES@
|
||||
PR_MD_ARCH_DIR = @PR_MD_ARCH_DIR@
|
||||
|
||||
OS_TARGET = @OS_TARGET@
|
||||
OS_ARCH = @OS_ARCH@
|
||||
OS_RELEASE = @OS_RELEASE@
|
||||
OS_TEST = @OS_TEST@
|
||||
|
||||
NOSUCHFILE = @NOSUCHFILE@
|
||||
AIX_LINK_OPTS = @AIX_LINK_OPTS@
|
||||
MOZ_OBJFORMAT = @MOZ_OBJFORMAT@
|
||||
ULTRASPARC_LIBRARY = @ULTRASPARC_LIBRARY@
|
||||
ULTRASPARC_FILTER_LIBRARY = @ULTRASPARC_FILTER_LIBRARY@
|
||||
237
mozilla/directory/c-sdk/config/config.mk
Normal file
237
mozilla/directory/c-sdk/config/config.mk
Normal file
@@ -0,0 +1,237 @@
|
||||
#! gmake
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
# Configuration information for building in the NSPR source module
|
||||
|
||||
# Define an include-at-most-once-flag
|
||||
NSPR_CONFIG_MK = 1
|
||||
|
||||
#
|
||||
# The variable definitions in this file are inputs to NSPR's
|
||||
# build system. This file, if present, is included at the
|
||||
# beginning of config.mk.
|
||||
#
|
||||
# For example:
|
||||
#
|
||||
# BUILD_OPT=1
|
||||
# USE_PTHREADS=1
|
||||
# NS_USE_GCC=
|
||||
#
|
||||
ifndef topsrcdir
|
||||
topsrcdir=$(MOD_DEPTH)
|
||||
endif
|
||||
|
||||
ifndef srcdir
|
||||
srcdir=.
|
||||
endif
|
||||
|
||||
ifdef USE_AUTOCONF
|
||||
|
||||
NFSPWD = $(MOD_DEPTH)/config/nfspwd
|
||||
|
||||
CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
CCCFLAGS = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
# For purify
|
||||
NOMD_CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
NOMD_CCFLAGS = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
|
||||
NSINSTALL = $(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall
|
||||
|
||||
ifeq ($(NSDISTMODE),copy)
|
||||
# copy files, but preserve source mtime
|
||||
INSTALL = $(NSINSTALL) -t
|
||||
else
|
||||
ifeq ($(NSDISTMODE),absolute_symlink)
|
||||
# install using absolute symbolic links
|
||||
INSTALL = $(NSINSTALL) -L `$(NFSPWD)`
|
||||
else
|
||||
# install using relative symbolic links
|
||||
INSTALL = $(NSINSTALL) -R
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef BUILD_DEBUG_GC
|
||||
DEFINES += -DDEBUG_GC
|
||||
endif
|
||||
|
||||
GARBAGE += $(DEPENDENCIES) core $(wildcard core.[0-9]*)
|
||||
|
||||
ifdef USE_AUTOCONF
|
||||
DIST_GARBAGE += Makefile
|
||||
endif
|
||||
|
||||
DEFINES += -DFORCE_PR_LOG
|
||||
|
||||
ifeq ($(_PR_NO_CLOCK_TIMER),1)
|
||||
DEFINES += -D_PR_NO_CLOCK_TIMER
|
||||
endif
|
||||
|
||||
ifeq ($(USE_PTHREADS), 1)
|
||||
DEFINES += -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM
|
||||
endif
|
||||
|
||||
ifeq ($(PTHREADS_USER), 1)
|
||||
DEFINES += -DPTHREADS_USER -UHAVE_CVAR_BUILT_ON_SEM
|
||||
endif
|
||||
|
||||
ifeq ($(USE_IPV6),1)
|
||||
DEFINES += -D_PR_INET6
|
||||
endif
|
||||
|
||||
else # ! USE_AUTOCONF
|
||||
|
||||
ifndef NSPR_MY_CONFIG_MK
|
||||
NSPR_MY_CONFIG_MK = $(MOD_DEPTH)/config/my_config.mk
|
||||
endif
|
||||
|
||||
#
|
||||
# The variable definitions in this file are used to
|
||||
# override variable values set by NSPR's build system.
|
||||
# This file, if present, is included at the end of config.mk.
|
||||
#
|
||||
# For example:
|
||||
#
|
||||
# DIST=/usr/local/nspr
|
||||
#
|
||||
ifndef NSPR_MY_OVERRIDES_MK
|
||||
NSPR_MY_OVERRIDES_MK = $(MOD_DEPTH)/config/my_overrides.mk
|
||||
endif
|
||||
|
||||
-include $(NSPR_MY_CONFIG_MK)
|
||||
|
||||
include $(MOD_DEPTH)/config/module.df
|
||||
|
||||
include $(MOD_DEPTH)/config/arch.mk
|
||||
|
||||
ifndef NSDEPTH
|
||||
NSDEPTH = $(MOD_DEPTH)/..
|
||||
endif
|
||||
|
||||
#
|
||||
# Default command macros; can be overridden in <arch>.mk.
|
||||
#
|
||||
# XXX FIXME: I removed CCF and LINKEXE.
|
||||
AS = $(CC)
|
||||
ASFLAGS = $(CFLAGS)
|
||||
PURIFY = purify $(PURIFYOPTIONS)
|
||||
LINK_DLL = $(LINK) $(OS_DLLFLAGS) $(DLLFLAGS)
|
||||
NFSPWD = $(MOD_DEPTH)/config/nfspwd
|
||||
|
||||
CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
CCCFLAGS = $(CCC_ONLY_FLAGS) $(OPTIMIZER) $(OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
# For purify
|
||||
NOMD_CFLAGS = $(CC_ONLY_FLAGS) $(OPTIMIZER) $(NOMD_OS_CFLAGS)\
|
||||
$(XP_DEFINE) $(DEFINES) $(INCLUDES) $(XCFLAGS)
|
||||
|
||||
include $(MOD_DEPTH)/config/$(OS_TARGET).mk
|
||||
|
||||
# Figure out where the binary code lives.
|
||||
BUILD = $(OBJDIR_NAME)
|
||||
OBJDIR = $(OBJDIR_NAME)
|
||||
DIST = $(NSDEPTH)/dist/$(OBJDIR_NAME)
|
||||
ifeq ($(MOZ_BITS),16)
|
||||
MOZ_INCL = $(NSDEPTH)/dist/public/win16
|
||||
MOZ_DIST = $(NSDEPTH)/dist/WIN16D_D.OBJ
|
||||
endif
|
||||
|
||||
VPATH = $(OBJDIR)
|
||||
DEPENDENCIES = $(OBJDIR)/.md
|
||||
|
||||
ifdef BUILD_DEBUG_GC
|
||||
DEFINES += -DDEBUG_GC
|
||||
endif
|
||||
|
||||
GARBAGE += $(DEPENDENCIES) core $(wildcard core.[0-9]*)
|
||||
|
||||
####################################################################
|
||||
#
|
||||
# The NSPR-specific configuration
|
||||
#
|
||||
####################################################################
|
||||
|
||||
OS_CFLAGS += -DFORCE_PR_LOG
|
||||
|
||||
ifeq ($(_PR_NO_CLOCK_TIMER),1)
|
||||
OS_CFLAGS += -D_PR_NO_CLOCK_TIMER
|
||||
endif
|
||||
|
||||
ifeq ($(USE_PTHREADS), 1)
|
||||
OS_CFLAGS += -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM
|
||||
endif
|
||||
|
||||
ifeq ($(PTHREADS_USER), 1)
|
||||
OS_CFLAGS += -DPTHREADS_USER -UHAVE_CVAR_BUILT_ON_SEM
|
||||
endif
|
||||
|
||||
ifeq ($(USE_IPV6),1)
|
||||
OS_CFLAGS += -D_PR_INET6
|
||||
endif
|
||||
|
||||
ifdef GC_LEAK_DETECTOR
|
||||
OS_CFLAGS += -DGC_LEAK_DETECTOR
|
||||
endif
|
||||
|
||||
####################################################################
|
||||
#
|
||||
# Configuration for the release process
|
||||
#
|
||||
####################################################################
|
||||
|
||||
ifeq ($(USE_INT), 1)
|
||||
MDIST = /share/builds/integration
|
||||
else
|
||||
MDIST = /share/builds/components
|
||||
endif
|
||||
ifeq ($(OS_ARCH),WINNT)
|
||||
MDIST = //helium/dist
|
||||
MDIST_DOS = $(subst /,\\,$(MDIST))
|
||||
endif
|
||||
|
||||
# RELEASE_DIR is ns/dist/<module name>
|
||||
|
||||
RELEASE_DIR = $(NSDEPTH)/dist/release/$(MOD_NAME)
|
||||
|
||||
RELEASE_INCLUDE_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/include
|
||||
RELEASE_BIN_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/bin
|
||||
RELEASE_LIB_DIR = $(RELEASE_DIR)/$(BUILD_NUMBER)/$(OBJDIR_NAME)/lib
|
||||
|
||||
-include $(NSPR_MY_OVERRIDES_MK)
|
||||
|
||||
endif # USE_AUTOCONF
|
||||
155
mozilla/directory/c-sdk/config/libc_r.h
Normal file
155
mozilla/directory/c-sdk/config/libc_r.h
Normal file
@@ -0,0 +1,155 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
/* libc_r.h -- macros, defines, etc. to make using reentrant libc calls */
|
||||
/* a bit easier. This was initially done for AIX pthreads, */
|
||||
/* but should be usable for anyone... */
|
||||
|
||||
/* Most of these use locally defined space instead of static library space. */
|
||||
/* Because of this, we use the _INIT_R to declare/allocate space (stack), */
|
||||
/* and the plain routines to actually do it..._WARNING_: avoid allocating */
|
||||
/* memory wherever possible. Memory allocation is fairly expensive, at */
|
||||
/* least on AIX...use arrays instead (which allocate from the stack.) */
|
||||
/* I know the names are a bit strange, but I wanted to be fairly certain */
|
||||
/* that we didn't have any namespace corruption...in general, the inits are */
|
||||
/* R_<name>_INIT_R(), and the actual calls are R_<name>_R(). */
|
||||
|
||||
#ifndef _LIBC_R_H
|
||||
#define _LIBC_R_H
|
||||
|
||||
/************/
|
||||
/* strtok */
|
||||
/************/
|
||||
#define R_STRTOK_INIT_R() \
|
||||
char *r_strtok_r=NULL
|
||||
|
||||
#define R_STRTOK_R(return,source,delim) \
|
||||
return=strtok_r(source,delim,&r_strtok_r)
|
||||
|
||||
#define R_STRTOK_NORET_R(source,delim) \
|
||||
strtok_r(source,delim,&r_strtok_r)
|
||||
|
||||
/**************/
|
||||
/* strerror */
|
||||
/**************/
|
||||
#define R_MAX_STRERROR_LEN_R 8192 /* Straight from limits.h */
|
||||
|
||||
#define R_STRERROR_INIT_R() \
|
||||
char r_strerror_r[R_MAX_STRERROR_LEN_R]
|
||||
|
||||
#define R_STRERROR_R(val) \
|
||||
strerror_r(val,r_strerror_r,R_MAX_STRERROR_LEN_R)
|
||||
|
||||
/*****************/
|
||||
/* time things */
|
||||
/*****************/
|
||||
#define R_ASCTIME_INIT_R() \
|
||||
char r_asctime_r[26]
|
||||
|
||||
#define R_ASCTIME_R(val) \
|
||||
asctime_r(val,r_asctime_r)
|
||||
|
||||
#define R_CTIME_INIT_R() \
|
||||
char r_ctime_r[26]
|
||||
|
||||
#define R_CTIME_R(val) \
|
||||
ctime_r(val,r_ctime_r)
|
||||
|
||||
#define R_GMTIME_INIT_R() \
|
||||
struct tm r_gmtime_r
|
||||
|
||||
#define R_GMTIME_R(time) \
|
||||
gmtime_r(time,&r_gmtime_r)
|
||||
|
||||
#define R_LOCALTIME_INIT_R() \
|
||||
struct tm r_localtime_r
|
||||
|
||||
#define R_LOCALTIME_R(val) \
|
||||
localtime_r(val,&r_localtime_r)
|
||||
|
||||
/***********/
|
||||
/* crypt */
|
||||
/***********/
|
||||
#include <crypt.h>
|
||||
#define R_CRYPT_INIT_R() \
|
||||
CRYPTD r_cryptd_r; \
|
||||
bzero(&r_cryptd_r,sizeof(CRYPTD))
|
||||
|
||||
#define R_CRYPT_R(pass,salt) \
|
||||
crypt_r(pass,salt,&r_cryptd_r)
|
||||
|
||||
/**************/
|
||||
/* pw stuff */
|
||||
/**************/
|
||||
#define R_MAX_PW_LEN_R 1024
|
||||
/* The following must be after the last declaration, but */
|
||||
/* before the first bit of code... */
|
||||
#define R_GETPWNAM_INIT_R(pw_ptr) \
|
||||
struct passwd r_getpwnam_pw_r; \
|
||||
char r_getpwnam_line_r[R_MAX_PW_LEN_R]; \
|
||||
pw_ptr = &r_getpwnam_pw_r
|
||||
|
||||
#define R_GETPWNAM_R(name) \
|
||||
getpwnam_r(name,&r_getpwnam_pw_r,r_getpwnam_line_r,R_MAX_PW_LEN_R)
|
||||
|
||||
/*******************/
|
||||
/* gethost stuff */
|
||||
/*******************/
|
||||
#define R_GETHOSTBYADDR_INIT_R() \
|
||||
struct hostent r_gethostbyaddr_r; \
|
||||
struct hostent_data r_gethostbyaddr_data_r
|
||||
|
||||
#define R_GETHOSTBYADDR_R(addr,len,type,xptr_ent) \
|
||||
bzero(&r_gethostbyaddr_r,sizeof(struct hostent)); \
|
||||
bzero(&r_gethostbyaddr_data_r,sizeof(struct hostent_data)); \
|
||||
xptr_ent = &r_gethostbyaddr_r; \
|
||||
if (gethostbyaddr_r(addr,len,type, \
|
||||
&r_gethostbyaddr_r,&r_gethostbyaddr_data_r) == -1) { \
|
||||
xptr_ent = NULL; \
|
||||
}
|
||||
|
||||
#define R_GETHOSTBYNAME_INIT_R() \
|
||||
struct hostent r_gethostbyname_r; \
|
||||
struct hostent_data r_gethostbyname_data_r
|
||||
|
||||
#define R_GETHOSTBYNAME_R(name,xptr_ent) \
|
||||
bzero(&r_gethostbyname_r,sizeof(struct hostent)); \
|
||||
bzero(&r_gethostbyname_data_r,sizeof(struct hostent_data)); \
|
||||
xptr_ent = &r_gethostbyname_r; \
|
||||
if (gethostbyname_r(name, \
|
||||
&r_gethostbyname_r,&r_gethostbyname_data_r) == -1) { \
|
||||
xptr_ent = NULL; \
|
||||
}
|
||||
|
||||
#endif /* _LIBC_R_H */
|
||||
40
mozilla/directory/c-sdk/config/module.df
Normal file
40
mozilla/directory/c-sdk/config/module.df
Normal file
@@ -0,0 +1,40 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# Module description file
|
||||
#
|
||||
# A module is also called a component or a subsystem.
|
||||
|
||||
MOD_NAME = nspr20
|
||||
MOD_VERSION = 4
|
||||
46
mozilla/directory/c-sdk/config/nfspwd
Executable file
46
mozilla/directory/c-sdk/config/nfspwd
Executable file
@@ -0,0 +1,46 @@
|
||||
#! perl
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
require "fastcwd.pl";
|
||||
|
||||
$_ = &fastcwd;
|
||||
if (m@^/[uh]/@o || s@^/tmp_mnt/@/@o) {
|
||||
print("$_\n");
|
||||
} elsif ((($user, $rest) = m@^/usr/people/(\w+)/(.*)@o)
|
||||
&& readlink("/u/$user") eq "/usr/people/$user") {
|
||||
print("/u/$user/$rest\n");
|
||||
} else {
|
||||
chop($host = `hostname`);
|
||||
print("/h/$host$_\n");
|
||||
}
|
||||
46
mozilla/directory/c-sdk/config/nfspwd.pl
Normal file
46
mozilla/directory/c-sdk/config/nfspwd.pl
Normal file
@@ -0,0 +1,46 @@
|
||||
#! perl
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
require "fastcwd.pl";
|
||||
|
||||
$_ = &fastcwd;
|
||||
if (m@^/[uh]/@o || s@^/tmp_mnt/@/@o) {
|
||||
print("$_\n");
|
||||
} elsif ((($user, $rest) = m@^/usr/people/(\w+)/(.*)@o)
|
||||
&& readlink("/u/$user") eq "/usr/people/$user") {
|
||||
print("/u/$user/$rest\n");
|
||||
} else {
|
||||
chop($host = `hostname`);
|
||||
print("/h/$host$_\n");
|
||||
}
|
||||
129
mozilla/directory/c-sdk/config/now.c
Normal file
129
mozilla/directory/c-sdk/config/now.c
Normal file
@@ -0,0 +1,129 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined(VMS)
|
||||
#include <sys/timeb.h>
|
||||
#elif defined(XP_UNIX) || defined(XP_OS2_EMX) || defined(XP_BEOS)
|
||||
#include <sys/time.h>
|
||||
#elif defined(WIN32) || defined(XP_OS2_VACPP)
|
||||
#include <sys/timeb.h>
|
||||
#else
|
||||
#error "Architecture not supported"
|
||||
#endif
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
#if defined(OMIT_LIB_BUILD_TIME)
|
||||
/*
|
||||
* Some platforms don't have any 64-bit integer type
|
||||
* such as 'long long'. Because we can't use NSPR's
|
||||
* PR_snprintf in this program, it is difficult to
|
||||
* print a static initializer for PRInt64 (a struct).
|
||||
* So we print nothing. The makefiles that build the
|
||||
* shared libraries will detect the empty output string
|
||||
* of this program and omit the library build time
|
||||
* in PRVersionDescription.
|
||||
*/
|
||||
#elif defined(VMS)
|
||||
long long now;
|
||||
struct timeb b;
|
||||
ftime(&b);
|
||||
now = b.time;
|
||||
now *= 1000000;
|
||||
now += (1000 * b.millitm);
|
||||
fprintf(stdout, "%Ld", now);
|
||||
#elif defined(XP_UNIX) || defined(XP_OS2_EMX) || defined(XP_BEOS)
|
||||
long long now;
|
||||
struct timeval tv;
|
||||
#ifdef HAVE_SVID_GETTOD
|
||||
gettimeofday(&tv);
|
||||
#else
|
||||
gettimeofday(&tv, NULL);
|
||||
#endif
|
||||
now = ((1000000LL) * tv.tv_sec) + (long long)tv.tv_usec;
|
||||
#if defined(OSF1)
|
||||
fprintf(stdout, "%ld", now);
|
||||
#elif defined(BEOS) && defined(__POWERPC__)
|
||||
fprintf(stdout, "%Ld", now); /* Metroworks on BeOS PPC */
|
||||
#else
|
||||
fprintf(stdout, "%lld", now);
|
||||
#endif
|
||||
|
||||
#elif defined(WIN32)
|
||||
__int64 now;
|
||||
struct timeb b;
|
||||
ftime(&b);
|
||||
now = b.time;
|
||||
now *= 1000000;
|
||||
now += (1000 * b.millitm);
|
||||
fprintf(stdout, "%I64d", now);
|
||||
|
||||
#elif defined(XP_OS2_VACPP)
|
||||
/* no long long or i64 so we use a string */
|
||||
#include <string.h>
|
||||
char buf[24];
|
||||
char tbuf[7];
|
||||
time_t now;
|
||||
long mtime;
|
||||
int i;
|
||||
|
||||
struct timeb b;
|
||||
ftime(&b);
|
||||
now = b.time;
|
||||
_ltoa(now, buf, 10);
|
||||
|
||||
mtime = b.millitm * 1000;
|
||||
if (mtime == 0){
|
||||
++now;
|
||||
strcat(buf, "000000");
|
||||
} else {
|
||||
_ltoa(mtime, tbuf, 10);
|
||||
for (i = strlen(tbuf); i < 6; ++i)
|
||||
strcat(buf, "0");
|
||||
strcat(buf, tbuf);
|
||||
}
|
||||
fprintf(stdout, "%s", buf);
|
||||
|
||||
#else
|
||||
#error "Architecture not supported"
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
} /* main */
|
||||
|
||||
/* now.c */
|
||||
592
mozilla/directory/c-sdk/config/nsinstall.c
Normal file
592
mozilla/directory/c-sdk/config/nsinstall.c
Normal file
@@ -0,0 +1,592 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
/*
|
||||
** Netscape portable install command.
|
||||
**
|
||||
** Brendan Eich, 7/20/95
|
||||
*/
|
||||
#include <stdio.h> /* OSF/1 requires this before grp.h, so put it first */
|
||||
#include <assert.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <utime.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#ifdef USE_REENTRANT_LIBC
|
||||
#include "libc_r.h"
|
||||
#endif /* USE_REENTRANT_LIBC */
|
||||
|
||||
#include "pathsub.h"
|
||||
|
||||
#define HAVE_LCHOWN
|
||||
|
||||
#if defined(AIX) || defined(BSDI) || defined(HPUX) || defined(LINUX) \
|
||||
|| defined(SUNOS4) || defined(SCO) || defined(UNIXWARE) \
|
||||
|| defined(RHAPSODY) || defined(NEXTSTEP) || defined(QNX) \
|
||||
|| defined(BEOS) || defined(VMS)
|
||||
#undef HAVE_LCHOWN
|
||||
#endif
|
||||
|
||||
#define HAVE_FCHMOD
|
||||
|
||||
#if defined(BEOS)
|
||||
#undef HAVE_FCHMOD
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Does getcwd() take NULL as the first argument and malloc
|
||||
* the result buffer?
|
||||
*/
|
||||
#if !defined(RHAPSODY) && !defined(NEXTSTEP) && !defined(VMS)
|
||||
#define GETCWD_CAN_MALLOC
|
||||
#endif
|
||||
|
||||
#ifdef NEXTSTEP
|
||||
#include <bsd/libc.h>
|
||||
|
||||
/*
|
||||
** balazs.pataki@sztaki.hu: The getcwd is broken in NEXTSTEP (returns 0),
|
||||
** when called on a mounted fs. Did anyone notice this? Here's an ugly
|
||||
** workaround ...
|
||||
*/
|
||||
#define getcwd(b,s) my_getcwd(b,s)
|
||||
|
||||
static char *
|
||||
my_getcwd (char *buf, size_t size)
|
||||
{
|
||||
FILE *pwd = popen("pwd", "r");
|
||||
char *result = fgets(buf, size, pwd);
|
||||
|
||||
if (result) {
|
||||
buf[strlen(buf)-1] = '\0';
|
||||
}
|
||||
pclose (pwd);
|
||||
return buf;
|
||||
}
|
||||
#endif /* NEXTSTEP */
|
||||
|
||||
#ifdef LINUX
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
|
||||
#if defined(SCO) || defined(UNIXWARE) || defined(SNI) || defined(NCR) || defined(NEC) || defined(NEXTSTEP)
|
||||
#if !defined(S_ISLNK) && defined(S_IFLNK)
|
||||
#define S_ISLNK(a) (((a) & S_IFMT) == S_IFLNK)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(SNI)
|
||||
extern int fchmod(int fildes, mode_t mode);
|
||||
#endif
|
||||
|
||||
#ifdef QNX
|
||||
#define d_ino d_stat.st_ino
|
||||
#endif
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: %s [-C cwd] [-L linkprefix] [-m mode] [-o owner] [-g group]\n"
|
||||
" %*s [-DdltR] file [file ...] directory\n",
|
||||
program, (int)strlen(program), "");
|
||||
exit(2);
|
||||
}
|
||||
|
||||
static int
|
||||
mkdirs(char *path, mode_t mode)
|
||||
{
|
||||
char *cp;
|
||||
struct stat sb;
|
||||
int res;
|
||||
|
||||
while (*path == '/' && path[1] == '/')
|
||||
path++;
|
||||
while ((cp = strrchr(path, '/')) && cp[1] == '\0')
|
||||
*cp = '\0';
|
||||
if (cp && cp != path) {
|
||||
*cp = '\0';
|
||||
if ((stat(path, &sb) < 0 || !S_ISDIR(sb.st_mode)) &&
|
||||
mkdirs(path, mode) < 0) {
|
||||
return -1;
|
||||
}
|
||||
*cp = '/';
|
||||
}
|
||||
res = mkdir(path, mode);
|
||||
if ((res != 0) && (errno == EEXIST))
|
||||
return 0;
|
||||
else
|
||||
return res;
|
||||
}
|
||||
|
||||
static uid_t
|
||||
touid(char *owner)
|
||||
{
|
||||
struct passwd *pw;
|
||||
uid_t uid;
|
||||
char *cp;
|
||||
|
||||
pw = getpwnam(owner);
|
||||
if (pw)
|
||||
return pw->pw_uid;
|
||||
uid = strtol(owner, &cp, 0);
|
||||
if (uid == 0 && cp == owner)
|
||||
fail("cannot find uid for %s", owner);
|
||||
return uid;
|
||||
}
|
||||
|
||||
static gid_t
|
||||
togid(char *group)
|
||||
{
|
||||
struct group *gr;
|
||||
gid_t gid;
|
||||
char *cp;
|
||||
|
||||
gr = getgrnam(group);
|
||||
if (gr)
|
||||
return gr->gr_gid;
|
||||
gid = strtol(group, &cp, 0);
|
||||
if (gid == 0 && cp == group)
|
||||
fail("cannot find gid for %s", group);
|
||||
return gid;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int onlydir, dodir, dolink, dorelsymlink, dotimes, opt, len, lplen, tdlen, bnlen, exists, fromfd, tofd, cc, wc;
|
||||
mode_t mode = 0755;
|
||||
char *linkprefix, *owner, *group, *cp, *cwd, *todir, *toname, *name, *base, *linkname, *bp, buf[BUFSIZ];
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
struct stat sb, tosb;
|
||||
struct utimbuf utb;
|
||||
|
||||
program = argv[0];
|
||||
cwd = linkname = linkprefix = owner = group = 0;
|
||||
onlydir = dodir = dolink = dorelsymlink = dotimes = lplen = 0;
|
||||
|
||||
while ((opt = getopt(argc, argv, "C:DdlL:Rm:o:g:t")) != EOF) {
|
||||
switch (opt) {
|
||||
case 'C':
|
||||
cwd = optarg;
|
||||
break;
|
||||
case 'D':
|
||||
onlydir = 1;
|
||||
break;
|
||||
case 'd':
|
||||
dodir = 1;
|
||||
break;
|
||||
case 'l':
|
||||
dolink = 1;
|
||||
break;
|
||||
case 'L':
|
||||
linkprefix = optarg;
|
||||
lplen = strlen(linkprefix);
|
||||
dolink = 1;
|
||||
break;
|
||||
case 'R':
|
||||
dolink = dorelsymlink = 1;
|
||||
break;
|
||||
case 'm':
|
||||
mode = strtoul(optarg, &cp, 8);
|
||||
if (mode == 0 && cp == optarg)
|
||||
usage();
|
||||
break;
|
||||
case 'o':
|
||||
owner = optarg;
|
||||
break;
|
||||
case 'g':
|
||||
group = optarg;
|
||||
break;
|
||||
case 't':
|
||||
dotimes = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
if (argc < 2 - onlydir)
|
||||
usage();
|
||||
|
||||
todir = argv[argc-1];
|
||||
if ((stat(todir, &sb) < 0 || !S_ISDIR(sb.st_mode)) &&
|
||||
mkdirs(todir, 0777) < 0) {
|
||||
fail("cannot make directory %s", todir);
|
||||
}
|
||||
if (onlydir)
|
||||
return 0;
|
||||
|
||||
if (!cwd) {
|
||||
#ifdef GETCWD_CAN_MALLOC
|
||||
cwd = getcwd(0, PATH_MAX);
|
||||
#else
|
||||
cwd = malloc(PATH_MAX + 1);
|
||||
cwd = getcwd(cwd, PATH_MAX);
|
||||
#endif
|
||||
}
|
||||
xchdir(todir);
|
||||
#ifdef GETCWD_CAN_MALLOC
|
||||
todir = getcwd(0, PATH_MAX);
|
||||
#else
|
||||
todir = malloc(PATH_MAX + 1);
|
||||
todir = getcwd(todir, PATH_MAX);
|
||||
#endif
|
||||
tdlen = strlen(todir);
|
||||
xchdir(cwd);
|
||||
tdlen = strlen(todir);
|
||||
|
||||
uid = owner ? touid(owner) : -1;
|
||||
gid = group ? togid(group) : -1;
|
||||
|
||||
while (--argc > 0) {
|
||||
name = *argv++;
|
||||
len = strlen(name);
|
||||
base = xbasename(name);
|
||||
bnlen = strlen(base);
|
||||
toname = (char*)xmalloc(tdlen + 1 + bnlen + 1);
|
||||
sprintf(toname, "%s/%s", todir, base);
|
||||
exists = (lstat(toname, &tosb) == 0);
|
||||
|
||||
if (dodir) {
|
||||
/* -d means create a directory, always */
|
||||
if (exists && !S_ISDIR(tosb.st_mode)) {
|
||||
(void) unlink(toname);
|
||||
exists = 0;
|
||||
}
|
||||
if (!exists && mkdir(toname, mode) < 0)
|
||||
fail("cannot make directory %s", toname);
|
||||
if ((owner || group) && chown(toname, uid, gid) < 0)
|
||||
fail("cannot change owner of %s", toname);
|
||||
} else if (dolink) {
|
||||
if (*name == '/') {
|
||||
/* source is absolute pathname, link to it directly */
|
||||
linkname = 0;
|
||||
} else {
|
||||
if (linkprefix) {
|
||||
/* -L implies -l and prefixes names with a $cwd arg. */
|
||||
len += lplen + 1;
|
||||
linkname = (char*)xmalloc(len + 1);
|
||||
sprintf(linkname, "%s/%s", linkprefix, name);
|
||||
} else if (dorelsymlink) {
|
||||
/* Symlink the relative path from todir to source name. */
|
||||
linkname = (char*)xmalloc(PATH_MAX);
|
||||
|
||||
if (*todir == '/') {
|
||||
/* todir is absolute: skip over common prefix. */
|
||||
lplen = relatepaths(todir, cwd, linkname);
|
||||
strcpy(linkname + lplen, name);
|
||||
} else {
|
||||
/* todir is named by a relative path: reverse it. */
|
||||
reversepath(todir, name, len, linkname);
|
||||
xchdir(cwd);
|
||||
}
|
||||
|
||||
len = strlen(linkname);
|
||||
}
|
||||
name = linkname;
|
||||
}
|
||||
|
||||
/* Check for a pre-existing symlink with identical content. */
|
||||
if (exists &&
|
||||
(!S_ISLNK(tosb.st_mode) ||
|
||||
readlink(toname, buf, sizeof buf) != len ||
|
||||
strncmp(buf, name, len) != 0)) {
|
||||
(void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname);
|
||||
exists = 0;
|
||||
}
|
||||
if (!exists && symlink(name, toname) < 0)
|
||||
fail("cannot make symbolic link %s", toname);
|
||||
#ifdef HAVE_LCHOWN
|
||||
if ((owner || group) && lchown(toname, uid, gid) < 0)
|
||||
fail("cannot change owner of %s", toname);
|
||||
#endif
|
||||
|
||||
if (linkname) {
|
||||
free(linkname);
|
||||
linkname = 0;
|
||||
}
|
||||
} else {
|
||||
/* Copy from name to toname, which might be the same file. */
|
||||
fromfd = open(name, O_RDONLY);
|
||||
if (fromfd < 0 || fstat(fromfd, &sb) < 0)
|
||||
fail("cannot access %s", name);
|
||||
if (exists && (!S_ISREG(tosb.st_mode) || access(toname, W_OK) < 0))
|
||||
(void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname);
|
||||
tofd = open(toname, O_CREAT | O_WRONLY, 0666);
|
||||
if (tofd < 0)
|
||||
fail("cannot create %s", toname);
|
||||
|
||||
bp = buf;
|
||||
while ((cc = read(fromfd, bp, sizeof buf)) > 0) {
|
||||
while ((wc = write(tofd, bp, cc)) > 0) {
|
||||
if ((cc -= wc) == 0)
|
||||
break;
|
||||
bp += wc;
|
||||
}
|
||||
if (wc < 0)
|
||||
fail("cannot write to %s", toname);
|
||||
}
|
||||
if (cc < 0)
|
||||
fail("cannot read from %s", name);
|
||||
|
||||
if (ftruncate(tofd, sb.st_size) < 0)
|
||||
fail("cannot truncate %s", toname);
|
||||
if (dotimes) {
|
||||
utb.actime = sb.st_atime;
|
||||
utb.modtime = sb.st_mtime;
|
||||
if (utime(toname, &utb) < 0)
|
||||
fail("cannot set times of %s", toname);
|
||||
}
|
||||
#ifdef HAVE_FCHMOD
|
||||
if (fchmod(tofd, mode) < 0)
|
||||
#else
|
||||
if (chmod(toname, mode) < 0)
|
||||
#endif
|
||||
fail("cannot change mode of %s", toname);
|
||||
if ((owner || group) && fchown(tofd, uid, gid) < 0)
|
||||
fail("cannot change owner of %s", toname);
|
||||
|
||||
/* Must check for delayed (NFS) write errors on close. */
|
||||
if (close(tofd) < 0)
|
||||
fail("cannot write to %s", toname);
|
||||
close(fromfd);
|
||||
}
|
||||
|
||||
free(toname);
|
||||
}
|
||||
|
||||
free(cwd);
|
||||
free(todir);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** Pathname subroutines.
|
||||
**
|
||||
** Brendan Eich, 8/29/95
|
||||
*/
|
||||
|
||||
char *program;
|
||||
|
||||
void
|
||||
fail(char *format, ...)
|
||||
{
|
||||
int error;
|
||||
va_list ap;
|
||||
|
||||
#ifdef USE_REENTRANT_LIBC
|
||||
R_STRERROR_INIT_R();
|
||||
#endif
|
||||
|
||||
error = errno;
|
||||
fprintf(stderr, "%s: ", program);
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
va_end(ap);
|
||||
if (error)
|
||||
|
||||
#ifdef USE_REENTRANT_LIBC
|
||||
R_STRERROR_R(errno);
|
||||
fprintf(stderr, ": %s", r_strerror_r);
|
||||
#else
|
||||
fprintf(stderr, ": %s", strerror(errno));
|
||||
#endif
|
||||
|
||||
putc('\n', stderr);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
char *
|
||||
getcomponent(char *path, char *name)
|
||||
{
|
||||
if (*path == '\0')
|
||||
return 0;
|
||||
if (*path == '/') {
|
||||
*name++ = '/';
|
||||
} else {
|
||||
do {
|
||||
*name++ = *path++;
|
||||
} while (*path != '/' && *path != '\0');
|
||||
}
|
||||
*name = '\0';
|
||||
while (*path == '/')
|
||||
path++;
|
||||
return path;
|
||||
}
|
||||
|
||||
#ifdef UNIXWARE_READDIR_BUFFER_TOO_SMALL
|
||||
/* Sigh. The static buffer in Unixware's readdir is too small. */
|
||||
struct dirent * readdir(DIR *d)
|
||||
{
|
||||
static struct dirent *buf = NULL;
|
||||
#define MAX_PATH_LEN 1024
|
||||
|
||||
|
||||
if(buf == NULL)
|
||||
buf = (struct dirent *) malloc(sizeof(struct dirent) + MAX_PATH_LEN)
|
||||
;
|
||||
return(readdir_r(d, buf));
|
||||
}
|
||||
#endif
|
||||
|
||||
char *
|
||||
ino2name(ino_t ino, char *dir)
|
||||
{
|
||||
DIR *dp;
|
||||
struct dirent *ep;
|
||||
char *name;
|
||||
|
||||
dp = opendir("..");
|
||||
if (!dp)
|
||||
fail("cannot read parent directory");
|
||||
for (;;) {
|
||||
if (!(ep = readdir(dp)))
|
||||
fail("cannot find current directory");
|
||||
if (ep->d_ino == ino)
|
||||
break;
|
||||
}
|
||||
name = xstrdup(ep->d_name);
|
||||
closedir(dp);
|
||||
return name;
|
||||
}
|
||||
|
||||
void *
|
||||
xmalloc(size_t size)
|
||||
{
|
||||
void *p = malloc(size);
|
||||
if (!p)
|
||||
fail("cannot allocate %u bytes", size);
|
||||
return p;
|
||||
}
|
||||
|
||||
char *
|
||||
xstrdup(char *s)
|
||||
{
|
||||
return strcpy((char*)xmalloc(strlen(s) + 1), s);
|
||||
}
|
||||
|
||||
char *
|
||||
xbasename(char *path)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
while ((cp = strrchr(path, '/')) && cp[1] == '\0')
|
||||
*cp = '\0';
|
||||
if (!cp) return path;
|
||||
return cp + 1;
|
||||
}
|
||||
|
||||
void
|
||||
xchdir(char *dir)
|
||||
{
|
||||
if (chdir(dir) < 0)
|
||||
fail("cannot change directory to %s", dir);
|
||||
}
|
||||
|
||||
int
|
||||
relatepaths(char *from, char *to, char *outpath)
|
||||
{
|
||||
char *cp, *cp2;
|
||||
int len;
|
||||
char buf[NAME_MAX];
|
||||
|
||||
assert(*from == '/' && *to == '/');
|
||||
for (cp = to, cp2 = from; *cp == *cp2; cp++, cp2++)
|
||||
if (*cp == '\0')
|
||||
break;
|
||||
while (cp[-1] != '/')
|
||||
cp--, cp2--;
|
||||
if (cp - 1 == to) {
|
||||
/* closest common ancestor is /, so use full pathname */
|
||||
len = strlen(strcpy(outpath, to));
|
||||
if (outpath[len] != '/') {
|
||||
outpath[len++] = '/';
|
||||
outpath[len] = '\0';
|
||||
}
|
||||
} else {
|
||||
len = 0;
|
||||
while ((cp2 = getcomponent(cp2, buf)) != 0) {
|
||||
strcpy(outpath + len, "../");
|
||||
len += 3;
|
||||
}
|
||||
while ((cp = getcomponent(cp, buf)) != 0) {
|
||||
sprintf(outpath + len, "%s/", buf);
|
||||
len += strlen(outpath + len);
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
void
|
||||
reversepath(char *inpath, char *name, int len, char *outpath)
|
||||
{
|
||||
char *cp, *cp2;
|
||||
char buf[NAME_MAX];
|
||||
struct stat sb;
|
||||
|
||||
cp = strcpy(outpath + PATH_MAX - (len + 1), name);
|
||||
cp2 = inpath;
|
||||
while ((cp2 = getcomponent(cp2, buf)) != 0) {
|
||||
if (strcmp(buf, ".") == 0)
|
||||
continue;
|
||||
if (strcmp(buf, "..") == 0) {
|
||||
if (stat(".", &sb) < 0)
|
||||
fail("cannot stat current directory");
|
||||
name = ino2name(sb.st_ino, "..");
|
||||
len = strlen(name);
|
||||
cp -= len + 1;
|
||||
strcpy(cp, name);
|
||||
cp[len] = '/';
|
||||
free(name);
|
||||
xchdir("..");
|
||||
} else {
|
||||
cp -= 3;
|
||||
strncpy(cp, "../", 3);
|
||||
xchdir(buf);
|
||||
}
|
||||
}
|
||||
strcpy(outpath, cp);
|
||||
}
|
||||
38
mozilla/directory/c-sdk/config/nsprincl.mk.in
Normal file
38
mozilla/directory/c-sdk/config/nsprincl.mk.in
Normal file
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
# Include in Makefiles to define NSPR variables
|
||||
|
||||
NSPR_VERSION = @NSPR_VERSION@
|
||||
NSPR_LIB = -lnspr@NSPR_VERSION@
|
||||
NSPR_EXTRA_LIBS = @EXTRA_LIBS@
|
||||
38
mozilla/directory/c-sdk/config/nsprincl.sh.in
Normal file
38
mozilla/directory/c-sdk/config/nsprincl.sh.in
Normal file
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
# Include in shell scripts to define NSPR variables
|
||||
|
||||
NSPR_VERSION=@NSPR_VERSION@
|
||||
NSPR_LIB=-lnspr$NSPR_VERSION
|
||||
NSPR_EXTRA_LIBS="@EXTRA_LIBS@"
|
||||
75
mozilla/directory/c-sdk/config/pathsub.h
Normal file
75
mozilla/directory/c-sdk/config/pathsub.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
#ifndef pathsub_h___
|
||||
#define pathsub_h___
|
||||
/*
|
||||
** Pathname subroutines.
|
||||
**
|
||||
** Brendan Eich, 8/29/95
|
||||
*/
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if SUNOS4
|
||||
#include "../pr/include/md/sunos4.h"
|
||||
#endif
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Just prevent stupidity
|
||||
*/
|
||||
#undef NAME_MAX
|
||||
#define NAME_MAX 256
|
||||
|
||||
extern char *program;
|
||||
|
||||
extern void fail(char *format, ...);
|
||||
extern char *getcomponent(char *path, char *name);
|
||||
extern char *ino2name(ino_t ino, char *dir);
|
||||
extern void *xmalloc(size_t size);
|
||||
extern char *xstrdup(char *s);
|
||||
extern char *xbasename(char *path);
|
||||
extern void xchdir(char *dir);
|
||||
|
||||
/* Relate absolute pathnames from and to returning the result in outpath. */
|
||||
extern int relatepaths(char *from, char *to, char *outpath);
|
||||
|
||||
/* XXX changes current working directory -- caveat emptor */
|
||||
extern void reversepath(char *inpath, char *name, int len, char *outpath);
|
||||
|
||||
#endif /* pathsub_h___ */
|
||||
42
mozilla/directory/c-sdk/config/prdepend.h
Normal file
42
mozilla/directory/c-sdk/config/prdepend.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
/*
|
||||
* A dummy header file that is a dependency for all the object files.
|
||||
* Used to force a full recompilation of NSPR in Mozilla's Tinderbox
|
||||
* depend builds. See comments in rules.mk.
|
||||
*/
|
||||
|
||||
#error "Do not include this header file."
|
||||
|
||||
18
mozilla/directory/c-sdk/config/prmkdir.bat
Executable file
18
mozilla/directory/c-sdk/config/prmkdir.bat
Executable file
@@ -0,0 +1,18 @@
|
||||
REM
|
||||
REM The contents of this file are subject to the Netscape Public License
|
||||
REM Version 1.1 (the "NPL"); you may not use this file except in
|
||||
REM compliance with the NPL. You may obtain a copy of the NPL at
|
||||
REM http://www.mozilla.org/NPL/
|
||||
REM
|
||||
REM Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
REM WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
REM for the specific language governing rights and limitations under the
|
||||
REM NPL.
|
||||
REM
|
||||
REM The Initial Developer of this code under the NPL is Netscape
|
||||
REM Communications Corporation. Portions created by Netscape are
|
||||
REM Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
REM Reserved.
|
||||
REM
|
||||
|
||||
mkdir %1
|
||||
480
mozilla/directory/c-sdk/config/rules.mk
Normal file
480
mozilla/directory/c-sdk/config/rules.mk
Normal file
@@ -0,0 +1,480 @@
|
||||
#! gmake
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# We have a 4 pass build process:
|
||||
#
|
||||
# Pass 1. export - Create generated headers and stubs. Publish public headers to
|
||||
# dist/<arch>/include.
|
||||
#
|
||||
# Pass 2. libs - Create libraries. Publish libraries to dist/<arch>/lib.
|
||||
#
|
||||
# Pass 3. all - Create programs.
|
||||
#
|
||||
# Pass 4. install - Publish programs to dist/<arch>/bin.
|
||||
#
|
||||
# Parameters to this makefile (set these before including):
|
||||
#
|
||||
# a)
|
||||
# TARGETS -- the target to create
|
||||
# (defaults to $LIBRARY $PROGRAM)
|
||||
# b)
|
||||
# DIRS -- subdirectories for make to recurse on
|
||||
# (the 'all' rule builds $TARGETS $DIRS)
|
||||
# c)
|
||||
# CSRCS -- .c files to compile
|
||||
# (used to define $OBJS)
|
||||
# d)
|
||||
# PROGRAM -- the target program name to create from $OBJS
|
||||
# ($OBJDIR automatically prepended to it)
|
||||
# e)
|
||||
# LIBRARY -- the target library name to create from $OBJS
|
||||
# ($OBJDIR automatically prepended to it)
|
||||
#
|
||||
################################################################################
|
||||
|
||||
ifndef topsrcdir
|
||||
topsrcdir=$(MOD_DEPTH)
|
||||
endif
|
||||
|
||||
ifndef srcdir
|
||||
srcdir=.
|
||||
endif
|
||||
|
||||
ifndef NSPR_CONFIG_MK
|
||||
include $(topsrcdir)/config/config.mk
|
||||
endif
|
||||
|
||||
ifdef USE_AUTOCONF
|
||||
ifdef CROSS_COMPILE
|
||||
ifdef INTERNAL_TOOLS
|
||||
CC=$(HOST_CC)
|
||||
CCC=$(HOST_CXX)
|
||||
CFLAGS=$(HOST_CFLAGS)
|
||||
CXXFLAGS=$(HOST_CXXFLAGS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# This makefile contains rules for building the following kinds of
|
||||
# libraries:
|
||||
# - LIBRARY: a static (archival) library
|
||||
# - SHARED_LIBRARY: a shared (dynamic link) library
|
||||
# - IMPORT_LIBRARY: an import library, used only on Windows and OS/2
|
||||
#
|
||||
# The names of these libraries can be generated by simply specifying
|
||||
# LIBRARY_NAME and LIBRARY_VERSION.
|
||||
#
|
||||
|
||||
ifdef LIBRARY_NAME
|
||||
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
|
||||
|
||||
#
|
||||
# Win95, Win16, and OS/2 require library names conforming to the 8.3 rule.
|
||||
# other platforms do not.
|
||||
#
|
||||
ifeq (,$(filter-out WIN95 WIN16 OS2,$(OS_TARGET)))
|
||||
LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)_s.$(LIB_SUFFIX)
|
||||
SHARED_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
|
||||
IMPORT_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX)
|
||||
else
|
||||
LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)_s.$(LIB_SUFFIX)
|
||||
SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
|
||||
IMPORT_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX)
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX)
|
||||
ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
|
||||
SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)_shr.a
|
||||
else
|
||||
ifdef MKSHLIB
|
||||
SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef TARGETS
|
||||
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
|
||||
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
|
||||
else
|
||||
TARGETS = $(LIBRARY) $(SHARED_LIBRARY)
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# OBJS is the list of object files. It can be constructed by
|
||||
# specifying CSRCS (list of C source files) and ASFILES (list
|
||||
# of assembly language source files).
|
||||
#
|
||||
|
||||
ifndef OBJS
|
||||
OBJS = $(addprefix $(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
|
||||
$(addprefix $(OBJDIR)/,$(ASFILES:.s=.$(OBJ_SUFFIX)))
|
||||
endif
|
||||
|
||||
ifeq ($(OS_TARGET), WIN16)
|
||||
comma := ,
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
W16OBJS = $(subst $(space),$(comma)$(space),$(strip $(OBJS)))
|
||||
W16TEMP =$(OS_LIBS) $(EXTRA_LIBS)
|
||||
ifeq ($(strip $(W16TEMP)),)
|
||||
W16LIBS =
|
||||
else
|
||||
W16LIBS = library $(subst $(space),$(comma)$(space),$(strip $(W16TEMP)))
|
||||
endif
|
||||
W16DEF = $(notdir $(basename $(SHARED_LIBRARY))).DEF
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
ifneq ($(OS_TARGET), WIN16)
|
||||
OBJS += $(RES)
|
||||
endif
|
||||
endif
|
||||
|
||||
ALL_TRASH = $(TARGETS) $(OBJS) $(filter-out . .., $(OBJDIR)) LOGS TAGS $(GARBAGE) \
|
||||
$(NOSUCHFILE) \
|
||||
so_locations
|
||||
|
||||
ifdef DIRS
|
||||
LOOP_OVER_DIRS = \
|
||||
@for d in $(DIRS); do \
|
||||
if test -d $$d; then \
|
||||
set -e; \
|
||||
echo "cd $$d; $(MAKE) $@"; \
|
||||
$(MAKE) -C $$d $@; \
|
||||
set +e; \
|
||||
else \
|
||||
echo "Skipping non-directory $$d..."; \
|
||||
fi; \
|
||||
done
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
all:: export libs install
|
||||
|
||||
export::
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
libs::
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
install::
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
clean::
|
||||
rm -rf $(OBJS) so_locations $(NOSUCHFILE) $(GARBAGE)
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
clobber::
|
||||
rm -rf $(OBJS) $(TARGETS) $(filter-out . ..,$(OBJDIR)) $(GARBAGE) so_locations $(NOSUCHFILE)
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
realclean clobber_all::
|
||||
rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH)
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
distclean::
|
||||
rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH) $(DIST_GARBAGE)
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
release:: export
|
||||
ifdef RELEASE_BINS
|
||||
@echo "Copying executable programs and scripts to release directory"
|
||||
@if test -z "$(BUILD_NUMBER)"; then \
|
||||
echo "BUILD_NUMBER must be defined"; \
|
||||
false; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
@if test ! -d $(RELEASE_BIN_DIR); then \
|
||||
rm -rf $(RELEASE_BIN_DIR); \
|
||||
$(NSINSTALL) -D $(RELEASE_BIN_DIR);\
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
cp $(RELEASE_BINS) $(RELEASE_BIN_DIR)
|
||||
endif
|
||||
ifdef RELEASE_LIBS
|
||||
@echo "Copying libraries to release directory"
|
||||
@if test -z "$(BUILD_NUMBER)"; then \
|
||||
echo "BUILD_NUMBER must be defined"; \
|
||||
false; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
@if test ! -d $(RELEASE_LIB_DIR); then \
|
||||
rm -rf $(RELEASE_LIB_DIR); \
|
||||
$(NSINSTALL) -D $(RELEASE_LIB_DIR);\
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
cp $(RELEASE_LIBS) $(RELEASE_LIB_DIR)
|
||||
endif
|
||||
ifdef RELEASE_HEADERS
|
||||
@echo "Copying header files to release directory"
|
||||
@if test -z "$(BUILD_NUMBER)"; then \
|
||||
echo "BUILD_NUMBER must be defined"; \
|
||||
false; \
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
@if test ! -d $(RELEASE_HEADERS_DEST); then \
|
||||
rm -rf $(RELEASE_HEADERS_DEST); \
|
||||
$(NSINSTALL) -D $(RELEASE_HEADERS_DEST);\
|
||||
else \
|
||||
true; \
|
||||
fi
|
||||
cp $(RELEASE_HEADERS) $(RELEASE_HEADERS_DEST)
|
||||
endif
|
||||
+$(LOOP_OVER_DIRS)
|
||||
|
||||
alltags:
|
||||
rm -f TAGS tags
|
||||
find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs etags -a
|
||||
find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs ctags -a
|
||||
|
||||
$(NFSPWD):
|
||||
cd $(@D); $(MAKE) $(@F)
|
||||
|
||||
$(PROGRAM): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
ifeq ($(OS_ARCH),WINNT)
|
||||
$(CC) $(OBJS) -Fe$@ -link $(LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS)
|
||||
else
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(CC) $(OBJS) -Fe$@ $(LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS)
|
||||
else
|
||||
$(CC) -o $@ $(CFLAGS) $(OBJS) $(LDFLAGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(LIBRARY): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
rm -f $@
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(AR) $(subst /,\\,$(OBJS)) $(AR_EXTRA_ARGS)
|
||||
else
|
||||
ifdef USE_AUTOCONF
|
||||
$(AR) $(AR_FLAGS) $(OBJS) $(AR_EXTRA_ARGS)
|
||||
else
|
||||
$(AR) $(OBJS) $(AR_EXTRA_ARGS)
|
||||
endif # USE_AUTOCONF
|
||||
endif
|
||||
$(RANLIB) $@
|
||||
|
||||
ifeq ($(OS_TARGET), WIN16)
|
||||
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
|
||||
wlib $(OS_LIB_FLAGS) $@ +$(SHARED_LIBRARY)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_TARGET), OS2)
|
||||
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
|
||||
$(IMPLIB) $@ $(SHARED_LIBRARY).def
|
||||
endif
|
||||
|
||||
$(SHARED_LIBRARY): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
rm -f $@
|
||||
ifdef USE_AUTOCONF
|
||||
$(MKSHLIB) $(OBJS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||
else
|
||||
ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
|
||||
echo "#!" > $(OBJDIR)/lib$(LIBRARY_NAME)_syms
|
||||
nm -B -C -g $(OBJS) \
|
||||
| awk '/ [T,D] / {print $$3}' \
|
||||
| sed -e 's/^\.//' \
|
||||
| sort -u >> $(OBJDIR)/lib$(LIBRARY_NAME)_syms
|
||||
$(LD) $(XCFLAGS) -o $@ $(OBJS) -bE:$(OBJDIR)/lib$(LIBRARY_NAME)_syms \
|
||||
-bM:SRE -bnoentry $(OS_LIBS) $(EXTRA_LIBS)
|
||||
else # AIX 4.1
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
ifeq ($(OS_TARGET), WIN16)
|
||||
echo system windows dll initinstance >w16link
|
||||
echo option map >>w16link
|
||||
echo option oneautodata >>w16link
|
||||
echo option heapsize=32K >>w16link
|
||||
echo option $(OS_DLL_OPTION) >>w16link
|
||||
echo debug $(DEBUGTYPE) all >>w16link
|
||||
echo name $@ >>w16link
|
||||
echo file >>w16link
|
||||
echo $(W16OBJS) >>w16link
|
||||
echo $(W16IMPORTS) >>w16link
|
||||
echo $(W16LIBS) >>w16link
|
||||
echo $(W16_EXPORTS) >>w16link
|
||||
echo libfile libentry >>w16link
|
||||
$(LINK) @w16link.
|
||||
rm w16link
|
||||
else # WIN16
|
||||
$(LINK_DLL) -MAP $(DLLBASE) $(OS_LIBS) $(EXTRA_LIBS) $(OBJS)
|
||||
endif # WINNT
|
||||
else
|
||||
ifeq ($(OS_ARCH),OS2)
|
||||
# append ( >> ) doesn't seem to be working under OS/2 gmake. Run through OS/2 shell instead.
|
||||
@cmd /C "echo LIBRARY $(notdir $(basename $(SHARED_LIBRARY))) INITINSTANCE TERMINSTANCE >$@.def"
|
||||
@cmd /C "echo PROTMODE >>$@.def"
|
||||
@cmd /C "echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@.def"
|
||||
@cmd /C "echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >>$@.def"
|
||||
@cmd /C "echo EXPORTS >>$@.def"
|
||||
@cmd /C "$(FILTER) $(LIBRARY) | grep -v _DLL_InitTerm >>$@.def"
|
||||
$(LINK_DLL) $(DLLBASE) $(OBJS) $(OS_LIBS) $(EXTRA_LIBS) $@.def
|
||||
else # OS2
|
||||
ifeq ($(OS_TARGET), OpenVMS)
|
||||
@if test ! -f $(OBJDIR)/VMSuni.opt; then \
|
||||
echo "Creating universal symbol option file $(OBJDIR)/VMSuni.opt";\
|
||||
create_opt_uni $(OBJS); \
|
||||
mv VMSuni.opt $(OBJDIR); \
|
||||
fi
|
||||
$(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(OS_LIBS) $(OBJDIR)/VMSuni.opt
|
||||
@echo "`translate $@`" > $(@:.$(DLL_SUFFIX)=.vms)
|
||||
else # OpenVMS
|
||||
$(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||
endif # OpenVMS
|
||||
endif # OS2
|
||||
endif # WINNT
|
||||
endif # AIX 4.1
|
||||
endif # USE_AUTOCONF
|
||||
|
||||
|
||||
ifeq (,$(filter-out WINNT OS2,$(OS_ARCH)))
|
||||
$(RES): $(RESNAME)
|
||||
@$(MAKE_OBJDIR)
|
||||
ifeq ($(OS_TARGET),OS2)
|
||||
$(RC) -DOS2 -r $(RESNAME) $(RES)
|
||||
else
|
||||
# The resource compiler does not understand the -U option.
|
||||
$(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES) -Fo$(RES) $(RESNAME)
|
||||
endif
|
||||
@echo $(RES) finished
|
||||
endif
|
||||
|
||||
$(OBJDIR)/%.$(OBJ_SUFFIX): %.cpp
|
||||
@$(MAKE_OBJDIR)
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
$(CCC) -Fo$@ -c $(CCCFLAGS) $<
|
||||
else
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(CCC) -Fo$@ -c $(CCCFLAGS) $<
|
||||
else
|
||||
$(CCC) -o $@ -c $(CCCFLAGS) $<
|
||||
endif
|
||||
endif
|
||||
|
||||
WCCFLAGS1 = $(subst /,\\,$(CFLAGS))
|
||||
WCCFLAGS2 = $(subst -I,-i=,$(WCCFLAGS1))
|
||||
WCCFLAGS3 = $(subst -D,-d,$(WCCFLAGS2))
|
||||
$(OBJDIR)/%.$(OBJ_SUFFIX): %.c
|
||||
@$(MAKE_OBJDIR)
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
ifeq ($(OS_TARGET), WIN16)
|
||||
# $(MOD_DEPTH)/config/w16opt $(WCCFLAGS3)
|
||||
echo $(WCCFLAGS3) >w16wccf
|
||||
$(CC) -zq -fo$(OBJDIR)\\$*.$(OBJ_SUFFIX) @w16wccf $*.c
|
||||
rm w16wccf
|
||||
else
|
||||
$(CC) -Fo$@ -c $(CFLAGS) $<
|
||||
endif
|
||||
else
|
||||
ifeq ($(MOZ_OS2_TOOLS),VACPP)
|
||||
$(CC) -Fo$@ -c $(CFLAGS) $<
|
||||
else
|
||||
$(CC) -o $@ -c $(CFLAGS) $<
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
$(OBJDIR)/%.$(OBJ_SUFFIX): %.s
|
||||
@$(MAKE_OBJDIR)
|
||||
$(AS) -o $@ $(ASFLAGS) -c $<
|
||||
|
||||
%.i: %.c
|
||||
$(CC) -C -E $(CFLAGS) $< > $*.i
|
||||
|
||||
%: %.pl
|
||||
rm -f $@; cp $< $@; chmod +x $@
|
||||
|
||||
#
|
||||
# HACK ALERT
|
||||
#
|
||||
# The only purpose of this rule is to pass Mozilla's Tinderbox depend
|
||||
# builds (http://tinderbox.mozilla.org/showbuilds.cgi). Mozilla's
|
||||
# Tinderbox builds NSPR continuously as part of the Mozilla client.
|
||||
# Because NSPR's make depend is not implemented, whenever we change
|
||||
# an NSPR header file, the depend build does not recompile the NSPR
|
||||
# files that depend on the header.
|
||||
#
|
||||
# This rule makes all the objects depend on a dummy header file.
|
||||
# Touch this dummy header file to force the depend build to recompile
|
||||
# everything.
|
||||
#
|
||||
# This rule should be removed when make depend is implemented.
|
||||
#
|
||||
|
||||
DUMMY_DEPEND_H = $(topsrcdir)/config/prdepend.h
|
||||
|
||||
$(filter $(OBJDIR)/%.$(OBJ_SUFFIX),$(OBJS)): $(OBJDIR)/%.$(OBJ_SUFFIX): $(DUMMY_DEPEND_H)
|
||||
|
||||
# END OF HACK
|
||||
|
||||
################################################################################
|
||||
# Special gmake rules.
|
||||
################################################################################
|
||||
|
||||
#
|
||||
# Re-define the list of default suffixes, so gmake won't have to churn through
|
||||
# hundreds of built-in suffix rules for stuff we don't need.
|
||||
#
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .a .$(OBJ_SUFFIX) .c .cpp .s .h .i .pl
|
||||
|
||||
#
|
||||
# Fake targets. Always run these rules, even if a file/directory with that
|
||||
# name already exists.
|
||||
#
|
||||
.PHONY: all alltags clean export install libs realclean release
|
||||
|
||||
#
|
||||
# List the target pattern of an implicit rule as a dependency of the
|
||||
# special target .PRECIOUS to preserve intermediate files made by
|
||||
# implicit rules whose target patterns match that file's name.
|
||||
# (See GNU Make documentation, Edition 0.51, May 1996, Sec. 10.4,
|
||||
# p. 107.)
|
||||
#
|
||||
.PRECIOUS: $(OBJDIR)/%.$(OBJ_SUFFIX)
|
||||
115
mozilla/directory/c-sdk/config/win16.mk
Normal file
115
mozilla/directory/c-sdk/config/win16.mk
Normal file
@@ -0,0 +1,115 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# win16_3.11.mk -- Make configuration for Win16
|
||||
#
|
||||
# This file configures gmake to build the Win16 variant of
|
||||
# NSPR 2.0. This file has the function of two files commonly
|
||||
# used on other platforms, for example: winnt.mk and
|
||||
# winnt4.0.mk. ... The packaging is easier and there is only
|
||||
# one variant of the Win16 target.
|
||||
#
|
||||
# Win16 is built using the Watcom C/C++ version 11.0
|
||||
# compiler. You gotta set up the compiler first. Follow the
|
||||
# directions in the manual (Ha! ... really, its not a
|
||||
# problem). The Watcom compiler depends on a few environment
|
||||
# variables; these environment variables define where the
|
||||
# compiler components are installed; they must be set before
|
||||
# running the make.
|
||||
#
|
||||
# Notes:
|
||||
# OS_CFLAGS is the command line options for the compiler when
|
||||
# building the .DLL object files.
|
||||
# OS_EXE_CFLAGS is the command line options for the compiler
|
||||
# when building the .EXE object files; this is for the test
|
||||
# programs.
|
||||
# the macro OS_CFLAGS is set to OS_EXE_CFLAGS inside of the
|
||||
# makefile for the pr/tests directory. ... Hack.
|
||||
#
|
||||
# USE_WATCOM_DEBUG_DATA environment variable causes the
|
||||
# watcom compiler flag to be set to -hw (otherwise
|
||||
# it is set to -hc (codeview debug data)) for debug builds.
|
||||
#
|
||||
|
||||
# -- configuration -----------------------------------------
|
||||
|
||||
CC = wcc
|
||||
CCC = wcl
|
||||
LINK = wlink
|
||||
AR = wlib -q $@
|
||||
RC = wrc.exe /r /dWIN16=1 /bt=windows
|
||||
RANLIB = echo
|
||||
BSDECHO = echo
|
||||
NSINSTALL = nsinstall
|
||||
INSTALL = $(NSINSTALL)
|
||||
MAKE_OBJDIR = mkdir $(OBJDIR)
|
||||
|
||||
XP_DEFINE = -DXP_PC
|
||||
OBJ_SUFFIX = obj
|
||||
LIB_SUFFIX = lib
|
||||
DLL_SUFFIX = dll
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OBJDIR_TAG = _O
|
||||
OPTIMIZER = -oneatx -oh -oi -ei -3 -fpi87 -fp3 -s
|
||||
else
|
||||
ifdef USE_WATCOM_DEBUG_DATA
|
||||
OPTIMIZER = -d2 -hw -s -DDEBUG
|
||||
DEBUGTYPE = watcom
|
||||
else
|
||||
OPTIMIZER = -d2 -hc -s -DDEBUG
|
||||
DEBUGTYPE = codeview
|
||||
endif
|
||||
OBJDIR_TAG = _D
|
||||
endif
|
||||
|
||||
# XXX FIXME: I doubt we use this. It is redundant with
|
||||
# SHARED_LIBRARY.
|
||||
ifdef DLL
|
||||
DLL := $(addprefix $(OBJDIR)/, $(DLL))
|
||||
endif
|
||||
|
||||
|
||||
CPU_ARCH = x86
|
||||
OS_CFLAGS = -ml -3 -bd -zc -zu -bt=windows -d_X86_ -dWIN16 -d_WINDLL
|
||||
OS_EXE_CFLAGS = -ml -3 -bt=windows -d_X86_ -dWIN16
|
||||
OS_LIB_FLAGS = -c -iro -n
|
||||
|
||||
# Name of the binary code directories
|
||||
OBJDIR_NAME = $(OS_CONFIG)$(OBJDIR_TAG).OBJ
|
||||
|
||||
OS_DLL_OPTION = CASEEXACT
|
||||
OS_DLLFLAGS =
|
||||
OS_LIBS =
|
||||
W16_EXPORTS = #
|
||||
62
mozilla/directory/c-sdk/ldap/Makefile.client
Normal file
62
mozilla/directory/c-sdk/ldap/Makefile.client
Normal file
@@ -0,0 +1,62 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator client code, released
|
||||
# March 31, 1998.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
NSPR_TREE = ..
|
||||
MOD_DEPTH = ..
|
||||
|
||||
include $(NSPR_TREE)/config/rules.mk
|
||||
include ../build.mk
|
||||
|
||||
SRCDIRS = build include libraries
|
||||
|
||||
ifeq ($(BUILDCLU), 1)
|
||||
SRCDIRS += clients/tools
|
||||
endif
|
||||
|
||||
all export:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo " cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) export"; \
|
||||
( cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) export ); \
|
||||
done
|
||||
|
||||
libs install:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) install"; \
|
||||
( cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) install ); \
|
||||
done
|
||||
|
||||
clean clobber:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) clean"; \
|
||||
( cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) clean ); \
|
||||
done
|
||||
cd clients/tools; $(MAKE) -f Makefile.client $(MFLAGS) clean
|
||||
|
||||
realclean clobber_all:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) realclean"; \
|
||||
( cd $$i; $(MAKE) -f Makefile.client $(MFLAGS) realclean ); \
|
||||
done
|
||||
|
||||
FORCE:
|
||||
|
||||
68
mozilla/directory/c-sdk/ldap/Makefile.in
Normal file
68
mozilla/directory/c-sdk/ldap/Makefile.in
Normal file
@@ -0,0 +1,68 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
srcdir = @srcdir@
|
||||
ldaptopsrcdir = @top_srcdir@
|
||||
|
||||
SRCDIRS = build include libraries
|
||||
|
||||
include build/autoconf.mk
|
||||
include $(NSPR_TREE)/config/rules.mk
|
||||
|
||||
all export:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo " cd $$i; $(MAKE) $(MFLAGS) export"; \
|
||||
( cd $$i; $(MAKE) $(MFLAGS) export ); \
|
||||
done
|
||||
|
||||
libs install:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) $(MFLAGS) install"; \
|
||||
( cd $$i; $(MAKE) $(MFLAGS) install ); \
|
||||
done
|
||||
|
||||
clean clobber:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) $(MFLAGS) clean"; \
|
||||
( cd $$i; $(MAKE) $(MFLAGS) clean ); \
|
||||
done
|
||||
|
||||
realclean clobber_all:: FORCE
|
||||
@for i in $(SRCDIRS); do \
|
||||
echo "cd $$i; $(MAKE) $(MFLAGS) realclean"; \
|
||||
( cd $$i; $(MAKE) $(MFLAGS) realclean ); \
|
||||
done
|
||||
|
||||
FORCE:
|
||||
|
||||
31
mozilla/directory/c-sdk/ldap/README.configure
Normal file
31
mozilla/directory/c-sdk/ldap/README.configure
Normal file
@@ -0,0 +1,31 @@
|
||||
The autoconf files here are the barest shim to allow the LDAP C SDK to
|
||||
build with autoconf, including in a --objdir. These are really just a
|
||||
wrapper around the existing (NSPR-based) build-system; they propagate
|
||||
very little information from the autconf command line or environment.
|
||||
The Makefile.in files are all just slightly edited forks of the
|
||||
Makefile.client files. These files are:
|
||||
|
||||
Makefile.in
|
||||
configure
|
||||
configure.in
|
||||
build/Makefile.in
|
||||
build/autoconf.mk.in
|
||||
build/my_overrides.mk
|
||||
include/Makefile.in
|
||||
libraries/Makefile.in
|
||||
libraries/liblber/Makefile.in
|
||||
libraries/libldap/Makefile.in
|
||||
|
||||
Note that as in the main browser tree, I've checked in the (generated)
|
||||
configure script so that autoconf isn't a prerequisite to build.
|
||||
|
||||
At some point after the most current LDAP SDK code lands in Mozilla,
|
||||
then perhaps it will be worth spending some time creating a more
|
||||
correctly autoconfified build process that isn't just a shim and
|
||||
doesn't depend on NSPR.
|
||||
|
||||
Comments to <news://news.mozilla.org/netscape.public.mozilla.directory>,
|
||||
please.
|
||||
|
||||
Dan Mosedale
|
||||
<dmose@mozilla.org>
|
||||
57
mozilla/directory/c-sdk/ldap/build/Makefile.client
Normal file
57
mozilla/directory/c-sdk/ldap/build/Makefile.client
Normal file
@@ -0,0 +1,57 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator client code, released
|
||||
# March 31, 1998.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../../../..
|
||||
MOD_DEPTH = ../..
|
||||
NSPR_TREE = ../..
|
||||
CSRCS = dirver.c
|
||||
|
||||
include $(NSPR_TREE)/config/rules.mk
|
||||
include ../../build.mk
|
||||
|
||||
TARGETS = $(OBJDIR)/dirver$(EXE_SUFFIX)
|
||||
|
||||
GARBAGE += $(TARGETS)
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
$(OBJS) = $(addprefix $(OBJDIR)/, $(CSRCS:.c=.o))
|
||||
$(TARGETS): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
$(LINK_EXE)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), OS2)
|
||||
$(OBJS) = $(addprefix $(OBJDIR)/, $(CSRCS:.c=.o))
|
||||
|
||||
$(TARGETS): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
$(LINK_EXE) -OUT:$@ $(OBJS)
|
||||
endif
|
||||
|
||||
export:: $(TARGETS)
|
||||
$(INSTALL) -m 555 $(TARGETS) ../$(DIST)/bin
|
||||
|
||||
install:: export
|
||||
|
||||
clean::
|
||||
rm -rf $(OBJDIR_NAME)
|
||||
|
||||
62
mozilla/directory/c-sdk/ldap/build/Makefile.in
Normal file
62
mozilla/directory/c-sdk/ldap/build/Makefile.in
Normal file
@@ -0,0 +1,62 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
DEPTH = ../../../..
|
||||
srcdir = @srcdir@
|
||||
ldaptopsrcdir = @top_srcdir@
|
||||
|
||||
CSRCS = dirver.c
|
||||
|
||||
include autoconf.mk
|
||||
include $(NSPR_TREE)/config/rules.mk
|
||||
|
||||
TARGETS = $(OBJDIR)/dirver$(BIN_SUFFIX)
|
||||
|
||||
GARBAGE += $(TARGETS)
|
||||
|
||||
ifeq ($(OS_ARCH), OS2)
|
||||
$(OBJS) = $(addprefix $(OBJDIR)/, $(CSRCS:.c=.o))
|
||||
|
||||
$(TARGETS): $(OBJS)
|
||||
@$(MAKE_OBJDIR)
|
||||
$(LINK_EXE) -OUT:$@ $(OBJS)
|
||||
endif
|
||||
|
||||
export:: $(TARGETS)
|
||||
$(INSTALL) -m 555 $(TARGETS) $(DIST)/bin
|
||||
|
||||
install:: export
|
||||
|
||||
clean::
|
||||
rm -rf $(OBJDIR_NAME)
|
||||
|
||||
57
mozilla/directory/c-sdk/ldap/build/autoconf.mk.in
Normal file
57
mozilla/directory/c-sdk/ldap/build/autoconf.mk.in
Normal file
@@ -0,0 +1,57 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org LDAP SDK autoconf glue.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Commmunications Corp. Portions created by Netscape are
|
||||
# Copyright (C) 2000, Netscape Communications Corp. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
|
||||
#
|
||||
|
||||
# this is used to override DIST and VPATH
|
||||
#
|
||||
NSPR_MY_OVERRIDES_MK = $(ldaptopsrcdir)/build/my_overrides.mk
|
||||
|
||||
# common to all the ldap sdk makefiles
|
||||
#
|
||||
NSPR_TREE = $(ldaptopsrcdir)/../../../nsprpub
|
||||
topsrcdir = $(ldaptopsrcdir)/../../../nsprpub
|
||||
|
||||
# various stuff from the ldap sdk documentation
|
||||
#
|
||||
MOZILLA_CLIENT = 1
|
||||
NO_MDUPDATE = 1
|
||||
MOZ_LDAP_SDK = 1
|
||||
MOZ_LI =
|
||||
MOZ_LITE =
|
||||
MOZ_MEDIUM =
|
||||
NO_SECURITY =
|
||||
|
||||
# we have to cope if nspr was built using autoconf (which we only know is
|
||||
# is true if our configure was passed --enable-nspr-autoconf -- which
|
||||
# the top-level configure does automagically, as appropriate).
|
||||
#
|
||||
NSPR_USE_AUTOCONF = @NSPR_USE_AUTOCONF@
|
||||
|
||||
ifeq ($(NSPR_USE_AUTOCONF), 1)
|
||||
|
||||
MOD_DEPTH = $(DEPTH)
|
||||
include $(DEPTH)/nsprpub/config/autoconf.mk
|
||||
VPATH = $(srcdir)
|
||||
DIST = $(DEPTH)/dist
|
||||
|
||||
else
|
||||
MOD_DEPTH = $(NSPR_TREE)
|
||||
|
||||
endif
|
||||
91
mozilla/directory/c-sdk/ldap/build/compver.sh
Executable file
91
mozilla/directory/c-sdk/ldap/build/compver.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
# compver.sh - a script to check if the correct component version is
|
||||
# available. If it is not available, it uses the nsftp.sh script to
|
||||
# download the component version. The component release is assumed
|
||||
# to be under /share/builds/components on a UNIX box.
|
||||
#
|
||||
COMP_ROOT=$1
|
||||
COMP_VERSION=$2
|
||||
COMP_VERSION_FILE=${COMP_ROOT}/Version
|
||||
COMPOBJDIR=$3
|
||||
MCOM_ROOT=$4
|
||||
MODULE=$5 # Module which needs this component
|
||||
COMP_RELEASE=$6 # Component release dir
|
||||
COMP_NAME=$7 # component name (e.g. ldapsdk, rouge)
|
||||
COMP_SUBDIRS=$8 # subdirs to ftp over
|
||||
TEST_FILE=$9 # to test if ftp was successful
|
||||
|
||||
if test -r ${COMP_VERSION_FILE}; then \
|
||||
CUR_VERSION=`cat ${COMP_VERSION_FILE}`; \
|
||||
|
||||
if test "${CUR_VERSION}" = "${COMP_VERSION}"; then \
|
||||
if test -d ${COMP_ROOT}/${COMPOBJDIR}; then \
|
||||
exit 0; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
echo "************************ WARNING *************************"
|
||||
echo "The MODULE ${MODULE} needs ${COMP_NAME} client libraries."
|
||||
echo "The ${COMP_NAME} client libraries are missing. "
|
||||
echo ""
|
||||
echo "Attempting to download..."
|
||||
|
||||
rm -rf ${COMP_ROOT}/${COMPOBJDIR} ${COMP_VERSION_FILE}
|
||||
mkdir -p ${COMP_ROOT}/${COMPOBJDIR}
|
||||
|
||||
sh ../../build/nsftp.sh ${COMP_NAME}/${COMP_VERSION}/${COMPOBJDIR} ${COMP_ROOT}/${COMPOBJDIR}
|
||||
|
||||
for d in ${COMP_SUBDIRS}; do \
|
||||
mkdir -p ${COMP_ROOT}/${COMPOBJDIR}/${d}; \
|
||||
sh ../../build/nsftp.sh ${COMP_NAME}/${COMP_VERSION}/${COMPOBJDIR}/${d} ${COMP_ROOT}/${COMPOBJDIR}/${d}
|
||||
done
|
||||
|
||||
if test -f ${TEST_FILE}; then \
|
||||
echo "${COMP_VERSION}" > ${COMP_VERSION_FILE}; \
|
||||
echo "************************ SUCCESS! ************************"; \
|
||||
else \
|
||||
echo ""; \
|
||||
echo "Attempt to ftp over ${COMP_NAME} failed!!!"; \
|
||||
echo "Please ftp over (${COMP_SUBDIRS}) subdirectories under:"; \
|
||||
echo " ${COMP_RELEASE}"; \
|
||||
echo "and put them under:"; \
|
||||
echo " ${COMP_ROOT}/${COMPOBJDIR}"; \
|
||||
echo "Also, execute the following command: "; \
|
||||
echo " echo \"${COMP_VERSION}\" > ${COMP_VERSION_FILE}"; \
|
||||
echo "Note: Above directories are w.r.t. the MODULE ${MODULE}"; \
|
||||
echo "**********************************************************"; \
|
||||
exit 1; \
|
||||
fi
|
||||
237
mozilla/directory/c-sdk/ldap/build/dirver.c
Normal file
237
mozilla/directory/c-sdk/ldap/build/dirver.c
Normal file
@@ -0,0 +1,237 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
/
|
||||
/ Name: Netscape File Version Generator
|
||||
/ Platforms: WIN32
|
||||
/ ......................................................................
|
||||
/ This program generates an ascii format of the 64-bit FILEVERSION
|
||||
/ resource identifier used by Windows executable binaries.
|
||||
/
|
||||
/ Usage Syntax:
|
||||
/ fversion <major.minor.patch> [mm/dd/yyyy] [outfile]
|
||||
/ If date is not specified, the current GMT date is used. yyyy must be
|
||||
/ greater than 1980
|
||||
/
|
||||
/ Usage Example:
|
||||
/ fversion 3.0.0
|
||||
/ fversion 6.5.4 1/30/2001
|
||||
/ fversion 6.5.4 1/30/2001 fileversion.h
|
||||
/
|
||||
/ see http://ntsbuild/sd/30ver.htm for specification
|
||||
/ ......................................................................
|
||||
/ Revision History:
|
||||
/ 01-30-97 Initial Version, Andy Hakim (ahakim@netscape.com)
|
||||
/ --------------------------------------------------------------------------*/
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#ifdef macintosh
|
||||
#include <console.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
unsigned _CalcVersion(unsigned nMajor, unsigned nMinor, unsigned nPatch)
|
||||
{
|
||||
unsigned nVersion;
|
||||
nVersion = nMajor;
|
||||
nVersion <<= 5;
|
||||
nVersion += nMinor;
|
||||
nVersion <<= 7;
|
||||
nVersion += nPatch;
|
||||
nVersion &= 0xFFFF;
|
||||
return(nVersion);
|
||||
}
|
||||
|
||||
|
||||
static void _GetVersions(char *szVer, unsigned *nMajor, unsigned *nMinor,
|
||||
unsigned *nPatch)
|
||||
{
|
||||
char szVersion[128];
|
||||
/* unsigned nReturn = 0; Unused? */
|
||||
char *szToken;
|
||||
*nMajor = 0;
|
||||
*nMinor = 0;
|
||||
*nPatch = 0;
|
||||
|
||||
strcpy(szVersion, szVer);
|
||||
if((szToken = strtok(szVersion, ".\n")) != NULL)
|
||||
{
|
||||
*nMajor = atoi(szToken);
|
||||
if((szToken = strtok(NULL, ".\n")) != NULL)
|
||||
{
|
||||
*nMinor = atoi(szToken);
|
||||
if((szToken = strtok(NULL, ".\n")) != NULL)
|
||||
{
|
||||
*nPatch = atoi(szToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned _CalcBuildDate(unsigned nYear, unsigned nMonth, unsigned nDay)
|
||||
{
|
||||
unsigned nBuildDate = 0;
|
||||
|
||||
if(nYear < 1900) /* they really mean 1900 + nYear */
|
||||
nYear += 1900;
|
||||
|
||||
nYear -= 1980;
|
||||
nBuildDate = nYear;
|
||||
/*
|
||||
nBuildDate <<= 5;
|
||||
*/
|
||||
nBuildDate <<= 4;
|
||||
nBuildDate += nMonth;
|
||||
/* nBuildDate <<= 4; */
|
||||
nBuildDate <<= 5;
|
||||
nBuildDate += nDay;
|
||||
nBuildDate &= 0xFFFF;
|
||||
return(nBuildDate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned _GenBuildDate(char *szBuildDate)
|
||||
{
|
||||
unsigned nReturn = 0;
|
||||
char *szToken;
|
||||
unsigned nYear = 0;
|
||||
unsigned nMonth = 0;
|
||||
unsigned nDay = 0;
|
||||
|
||||
if((szBuildDate) && (strchr(szBuildDate, '\\') || strchr(szBuildDate, '/')) && (szToken = strtok(szBuildDate, "\\/")))
|
||||
{
|
||||
nMonth = atoi(szToken);
|
||||
nMonth--; /* use months in the range [0..11], as in struct tm */
|
||||
if((szToken = strtok(NULL, "\\/")) != NULL)
|
||||
{
|
||||
nDay = atoi(szToken);
|
||||
if((szToken = strtok(NULL, "\\/")) != NULL)
|
||||
{
|
||||
nYear = atoi(szToken);
|
||||
if(nYear < 70) { /* handle 2 digit years like (20)00 */
|
||||
nYear += 100;
|
||||
}
|
||||
else if (nYear < 100) {
|
||||
}
|
||||
else if (nYear > 1900){
|
||||
nYear -= 1900;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
struct tm *newtime;
|
||||
time_t ltime;
|
||||
|
||||
time( <ime );
|
||||
|
||||
/* Obtain coordinated universal time: */
|
||||
newtime = gmtime( <ime );
|
||||
nYear = newtime->tm_year;
|
||||
nMonth = newtime->tm_mon;
|
||||
nDay = newtime->tm_mday;
|
||||
}
|
||||
|
||||
nReturn = _CalcBuildDate(nYear, nMonth, nDay);
|
||||
return(nReturn);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void ShowHelp(char *szFilename)
|
||||
{
|
||||
fprintf(stdout, "%s: Generates ascii format #define for FILEVERSION\n", szFilename);
|
||||
fprintf(stdout, " resource identifier used by Windows executable binaries.\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Usage: %s <major.minor.patch> [mm/dd/yy] [outfile]\n", szFilename);
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Examples:\n");
|
||||
fprintf(stdout, "%s 3.0.0\n", szFilename);
|
||||
fprintf(stdout, "%s 6.5.2 1/30/2001\n", szFilename);
|
||||
fprintf(stdout, "%s 6.5.2 1/30/2001 fileversion.h\n", szFilename);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
main(int nArgc, char **lpArgv)
|
||||
{
|
||||
int nReturn = 0;
|
||||
unsigned nVersion = 0;
|
||||
unsigned nBuildDate = 0;
|
||||
|
||||
#ifdef macintosh
|
||||
nArgc = ccommand( &lpArgv );
|
||||
#endif
|
||||
|
||||
if(nArgc < 2)
|
||||
{
|
||||
ShowHelp(lpArgv[0]);
|
||||
nReturn = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
char *szVersion = NULL;
|
||||
char *szDate = NULL;
|
||||
char *szOutput = NULL;
|
||||
FILE *f = stdout;
|
||||
unsigned nMajor = 0;
|
||||
unsigned nMinor = 0;
|
||||
unsigned nPatch = 0;
|
||||
|
||||
szVersion = (char *)lpArgv[1];
|
||||
szDate = (char *)lpArgv[2];
|
||||
szOutput = (char *)lpArgv[3];
|
||||
_GetVersions( szVersion, &nMajor, &nMinor, &nPatch );
|
||||
nVersion = _CalcVersion(nMajor, nMinor, nPatch);
|
||||
nBuildDate = _GenBuildDate(szDate);
|
||||
|
||||
if(nArgc >= 4) {
|
||||
if (( f = fopen(szOutput, "w")) == NULL ) {
|
||||
perror( szOutput );
|
||||
exit( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(f, "#define VI_PRODUCTVERSION %u.%u\n", nMajor, nMinor);
|
||||
fprintf(f, "#define PRODUCTTEXT \"%s\"\n", szVersion );
|
||||
fprintf(f, "#define VI_FILEVERSION %u, 0, 0,%u\n",
|
||||
nVersion, nBuildDate);
|
||||
fprintf(f, "#define VI_FileVersion \"%s Build %u\\0\"\n",
|
||||
szVersion, nBuildDate);
|
||||
|
||||
if(nArgc >= 4)
|
||||
fclose(f);
|
||||
nReturn = (nVersion && !nBuildDate);
|
||||
}
|
||||
return(nReturn);
|
||||
}
|
||||
|
||||
388
mozilla/directory/c-sdk/ldap/build/genexports.pl
Executable file
388
mozilla/directory/c-sdk/ldap/build/genexports.pl
Executable file
@@ -0,0 +1,388 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
#
|
||||
# genexports.pl: create up-to-date export and .def files
|
||||
#
|
||||
# created 31 August 1997 by Mark Smith <mcs@netscape.com>
|
||||
|
||||
$type = $ARGV[0];
|
||||
$tmplfile = $ARGV[1];
|
||||
$expfile = $ARGV[2];
|
||||
$buildtype = $ARGV[3];
|
||||
|
||||
if ( $type ne "Win16" && $type ne "Win16Rev" && $type ne "Win32" &&
|
||||
$type ne "WinBC" && $type ne "AIX" && $type ne "IRIX" &&
|
||||
$type ne "MacOS" && $type ne "SOLARIS" && $type ne "SunOS" )
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( $tmplfile eq "" || $expfile eq "" )
|
||||
{
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( $tmplfile ne "Standard" )
|
||||
{
|
||||
open( TMPL, $tmplfile );
|
||||
while(<TMPL>)
|
||||
{
|
||||
$line = $_;
|
||||
|
||||
&process_line( $type, $expfile, $line, $ARGV[3+1], $ARGV[3+2],
|
||||
$ARGV[3+3] );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( substr( $type, 0, 3 ) eq "Win" )
|
||||
{
|
||||
&windows_std( $type, $expfile, $ARGV[3+1], $ARGV[3+2], $ARGV[3+3] );
|
||||
}
|
||||
elsif ( $type eq "SOLARIS" || $type eq "SunOS" )
|
||||
{
|
||||
&solaris_std( $type, $expfile, $ARGV[3+1], $ARGV[3+2], $ARGV[3+3] );
|
||||
}
|
||||
else
|
||||
{
|
||||
# Simple standard template just includes exports; this works for all others.
|
||||
&simple_std( $type, $expfile, $ARGV[3+1], $ARGV[3+2], $ARGV[3+3] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# process_line( type, expfile, line, arg1, arg2, arg3 )
|
||||
sub
|
||||
process_line
|
||||
{
|
||||
local( $type, $expfile, $line, $arg1, $arg2, $arg3 ) = @_;
|
||||
|
||||
if ( $line eq "\$EXPORTS\n" )
|
||||
{
|
||||
&print_exports( $type, $expfile );
|
||||
}
|
||||
else
|
||||
{
|
||||
$line =~ s/\$1/$arg1/;
|
||||
$line =~ s/\$2/$arg2/;
|
||||
$line =~ s/\$3/$arg3/;
|
||||
print $line;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# usage()
|
||||
sub
|
||||
usage
|
||||
{
|
||||
print STDERR "usage: genexports.pl TYPE TMPLFILE|Standard EXPFILE BUILDTYPE [ARG1 [[ARG2] [ARG3]]] > OUTFILE\n";
|
||||
print STDERR " where TYPE is Win16, Win16Rev, Win32, WinBC, AIX, IRIX, MacOS, or SOLARIS.\n";
|
||||
print STDERR " and where BUILDTYPE is matched against last field in export file.\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
|
||||
# print_exports( type, exports-file )
|
||||
sub
|
||||
print_exports
|
||||
{
|
||||
local( $type, $expfile ) = @_;
|
||||
|
||||
$SunOSType = "<SunOS>";
|
||||
$SunOSType_len = length($SunOSType);
|
||||
$SolarisType = "<SOLARIS>";
|
||||
$SolarisType_len = length($SolarisType);
|
||||
$curType = "<" . $type . ">";
|
||||
$curType_len = length($curType);
|
||||
$SASLType = "<SASL>";
|
||||
$SASLType_len = length($SASLType);
|
||||
$OS_Version = `uname -r`;
|
||||
|
||||
open( EXP, $expfile );
|
||||
&print_comment( $type, "\n" );
|
||||
&print_comment( $type, "exports list (generated by genexports.pl)\n" );
|
||||
&print_comment( $type, "\n" );
|
||||
while( <EXP> )
|
||||
{
|
||||
$line = $_;
|
||||
if ( substr( $line, 0, 1 ) eq "#" )
|
||||
{
|
||||
# --------------------------------------------------------------------
|
||||
# special processing for output embedded in the comments
|
||||
# Any line in the ex file starts with "#" and follows immediately
|
||||
# with "<".$type.">" will have the this prefix striped off and
|
||||
# the rest of that line sent to output.
|
||||
# for example:
|
||||
# #<SunOS>abcdefg
|
||||
# where # is the first character of the comment line
|
||||
# abcdefg will be sent to the output if the $type is SunOS
|
||||
# #<SunOS>abcdefg will be sent unchanged to the output if
|
||||
# the $type is not SunOS
|
||||
#
|
||||
# Allowing embedded output in the comment makes it possible to
|
||||
# generate platform specific output.
|
||||
#
|
||||
# If the type is SunOS or SOLARIS, the two are treated as
|
||||
# interchangable in the comment line by this script. Thus,
|
||||
# if the type is "SunOS" or "SOLARIS", either "#<SunOS>" or
|
||||
# "#<SOLARIS>" as leading prefix is considered matched.
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
# determine if the current comment line is for embedded output
|
||||
|
||||
$embeddedOutput = false;
|
||||
|
||||
if ( $type eq "SunOS" || $type eq "SOLARIS" )
|
||||
{ # for SunOS and SOLAIRS, the two are treated as interchangable
|
||||
if ( (substr( $line, 1, $SunOSType_len ) eq $SunOSType) )
|
||||
{
|
||||
$embeddedOutput = true;
|
||||
$line = substr( $line, $SunOSType_len + 1 );
|
||||
}
|
||||
elsif ( (substr( $line, 1, $SolarisType_len ) eq $SolarisType) )
|
||||
{
|
||||
$embeddedOutput = true;
|
||||
$line = substr( $line, $SolarisType_len + 1 );
|
||||
}
|
||||
}
|
||||
else
|
||||
{ # any other type
|
||||
if ((substr( $line, 1, $curType_len ) eq $curType) )
|
||||
{
|
||||
$embeddedOutput = true;
|
||||
$line = substr( $line, $curType_len + 1 );
|
||||
}
|
||||
}
|
||||
|
||||
if (substr( $line, 1, $SASLType_len ) eq $SASLType)
|
||||
{
|
||||
if ( ($type eq "SunOS" || $type eq "SOLARIS") && (substr($OS_Version, 0, 3) eq "5.6") )
|
||||
{
|
||||
print STDERR "Ignoring SASL symbol:\t",$line;
|
||||
}
|
||||
else
|
||||
{
|
||||
# remove SASL symbols in Solaris 5.6
|
||||
$line = substr( $line, $SASLType_len + 1 );
|
||||
&print_export( $type, $line );
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# generate the output
|
||||
|
||||
if ( $embeddedOutput eq true )
|
||||
{
|
||||
process_line( $type, $expfile, $line );
|
||||
}
|
||||
else
|
||||
{
|
||||
$line = substr( $line, 1 );
|
||||
$_ = $line;
|
||||
if ( /^[0-9]+[\t ]/ )
|
||||
{
|
||||
&print_comment( $type, "" );
|
||||
&print_export( $type, $line );
|
||||
}
|
||||
else
|
||||
{
|
||||
&print_comment( $type, $line );
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif ( length( $line ) eq 1 && substr( $line, 0, 1 ) eq "\n" )
|
||||
{
|
||||
print "\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
&print_export( $type, $line );
|
||||
}
|
||||
}
|
||||
|
||||
&print_comment( $type, "\n" );
|
||||
&print_comment( $type, "end of generated exports list.\n" );
|
||||
}
|
||||
|
||||
|
||||
# print_comment( type, s )
|
||||
sub
|
||||
print_comment
|
||||
{
|
||||
local( $type, $s ) = @_;
|
||||
|
||||
if ( $type eq "AIX" )
|
||||
{
|
||||
$prefix = "* ";
|
||||
}
|
||||
elsif ( substr( $type, 0, 3 ) ne "Win" )
|
||||
{
|
||||
$prefix = "# ";
|
||||
}
|
||||
else
|
||||
{
|
||||
$prefix = "; ";
|
||||
}
|
||||
|
||||
print $prefix,$s
|
||||
}
|
||||
|
||||
|
||||
# print_export( type, expline )
|
||||
sub
|
||||
print_export
|
||||
{
|
||||
local( $type, $expline ) = @_;
|
||||
|
||||
# strip trailing newline
|
||||
$expline =~ s/\n$//;
|
||||
|
||||
# split into pieces
|
||||
# lines look like: ORDINAL SYMBOL [SYMTYPE] [BUILDTYPE]
|
||||
# where SYMTYPE is "P" (for Pascal), "C", or "G" (for globals).
|
||||
# P is the default.
|
||||
($ordinal,$symbol,$symtype,$bldtype) = split( /[ \t]+/, $expline, 4 );
|
||||
$upcase_symbol = $symbol;
|
||||
$upcase_symbol =~ tr/a-z/A-Z/;
|
||||
if ( $symtype eq "" )
|
||||
{
|
||||
$symtype = "P";
|
||||
}
|
||||
|
||||
if ( $bldtype ne "" && $bldtype ne $buildtype )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
# finally, print out an appropriate export line
|
||||
if ( $type eq "Win32" )
|
||||
{
|
||||
if ( $symtype ne "G" )
|
||||
{
|
||||
print "\t$symbol\t\t\@$ordinal\n";
|
||||
}
|
||||
}
|
||||
elsif ( $type eq "Win16" )
|
||||
{
|
||||
if ( $symtype eq "C" )
|
||||
{
|
||||
print "\t_$symbol\t\t\@$ordinal\n";
|
||||
}
|
||||
elsif ( $symtype eq "P" )
|
||||
{
|
||||
print "\t_$symbol=$upcase_symbol\t\t\@$ordinal\n";
|
||||
}
|
||||
}
|
||||
elsif ( $type eq "Win16Rev" )
|
||||
{
|
||||
if ( $symtype ne "G" )
|
||||
{
|
||||
print "\t$upcase_symbol=_$symbol\t\t\@$ordinal\n";
|
||||
}
|
||||
}
|
||||
elsif ( $type eq "WinBC" )
|
||||
{
|
||||
if ( $symtype ne "G" )
|
||||
{
|
||||
print "\t_$symbol=$symbol\t\t\@$ordinal\n";
|
||||
}
|
||||
}
|
||||
elsif ( $type eq "MacOS" )
|
||||
{
|
||||
if ( $symtype ne "G" )
|
||||
{
|
||||
print "$symbol\n";
|
||||
}
|
||||
}
|
||||
elsif ( $type eq "AIX" || $type eq "IRIX" )
|
||||
{
|
||||
print "$symbol\n";
|
||||
}
|
||||
elsif ( $type eq "SOLARIS" || $type eq "SunOS")
|
||||
{
|
||||
print "\t$symbol;\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print STDERR "print_export: unknown type <$type>\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# windows_std( type, expfile, arg1, arg2, arg3 )
|
||||
sub
|
||||
windows_std
|
||||
{
|
||||
local( $type, $expfile, $arg1, $arg2, $arg3 ) = @_;
|
||||
|
||||
process_line( $type, $expfile, "LIBRARY\tNSLIB\$1\n" );
|
||||
if ( substr( $type, 0, 5 ) eq "Win16" )
|
||||
{
|
||||
process_line( $type, $expfile, "CODE\tPRELOAD MOVEABLE DISCARDABLE\n" );
|
||||
process_line( $type, $expfile, "DATA\tPRELOAD MOVEABLE SINGLE\n" );
|
||||
}
|
||||
process_line( $type, $expfile, "VERSION\t\$2\n" );
|
||||
process_line( $type, $expfile, "HEAPSIZE\t4096\n" );
|
||||
process_line( $type, $expfile, "EXPORTS\n" );
|
||||
process_line( $type, $expfile, "\$EXPORTS\n" );
|
||||
}
|
||||
|
||||
|
||||
# solaris_std( type, expfile, arg1, arg2, arg3 )
|
||||
sub
|
||||
solaris_std
|
||||
{
|
||||
local( $type, $expfile, $arg1, $arg2, $arg3 ) = @_;
|
||||
|
||||
# process_line( $type, $expfile, "{\n" );
|
||||
# process_line( $type, $expfile, "global:\n" );
|
||||
process_line( $type, $expfile, "\$EXPORTS\n" );
|
||||
process_line( $type, $expfile, "\n" );
|
||||
# process_line( $type, $expfile, "local:\n" );
|
||||
# process_line( $type, $expfile, "\t*;\n" );
|
||||
# process_line( $type, $expfile, "};\n" );
|
||||
}
|
||||
|
||||
|
||||
# simple_std( type, expfile, arg1, arg2, arg3 )
|
||||
sub
|
||||
simple_std
|
||||
{
|
||||
local( $type, $expfile, $arg1, $arg2, $arg3 ) = @_;
|
||||
|
||||
process_line( $type, $expfile, "\$EXPORTS\n" );
|
||||
}
|
||||
|
||||
23
mozilla/directory/c-sdk/ldap/build/my_overrides.mk
Normal file
23
mozilla/directory/c-sdk/ldap/build/my_overrides.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org LDAP SDK autoconf glue.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Commmunications Corp. Portions created by Netscape are
|
||||
# Copyright (C) 2000, Netscape Communications Corp. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
|
||||
#
|
||||
|
||||
DIST = $(DEPTH)/dist
|
||||
VPATH = $(srcdir)
|
||||
72
mozilla/directory/c-sdk/ldap/build/nsftp.sh
Normal file
72
mozilla/directory/c-sdk/ldap/build/nsftp.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Netscape Portable Runtime (NSPR).
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
# FTP script for downloading /share/builds/components stuff.
|
||||
#
|
||||
# syntax:
|
||||
# nsftp <srcdir-relative to /share/builds/components> <destdir>
|
||||
#
|
||||
# Example
|
||||
#
|
||||
# nsftp ldapsdk/19961108 c:\3.0\ns\components\ldapsdk
|
||||
#
|
||||
|
||||
#JSERVER=ftp-rel
|
||||
#SERVER=gaida
|
||||
SERVER=$COMPONENT_FTP_SERVER
|
||||
USER=ftpman
|
||||
PASSWD=ftpman
|
||||
TMPFILE=tmp.foo
|
||||
|
||||
SRC=$1
|
||||
DEST=$2
|
||||
if [ -z "$3" ]; then
|
||||
FILENAME=*
|
||||
else
|
||||
FILENAME=$3
|
||||
fi
|
||||
|
||||
echo ${USER} contents of ${SRC} to ${DEST}
|
||||
|
||||
cd ${DEST}
|
||||
ftp -n ${SERVER} << -=EOF=-
|
||||
user ${USER} ${PASSWD}
|
||||
binary
|
||||
hash
|
||||
prompt
|
||||
cd ${SRC}
|
||||
mget ${FILENAME}
|
||||
quit
|
||||
-=EOF=-
|
||||
|
||||
69
mozilla/directory/c-sdk/ldap/build/replace.pl
Executable file
69
mozilla/directory/c-sdk/ldap/build/replace.pl
Executable file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the
|
||||
# terms of the GNU General Public License Version 2 or later (the
|
||||
# "GPL"), in which case the provisions of the GPL are applicable
|
||||
# instead of those above. If you wish to allow use of your
|
||||
# version of this file only under the terms of the GPL and not to
|
||||
# allow others to use your version of this file under the MPL,
|
||||
# indicate your decision by deleting the provisions above and
|
||||
# replace them with the notice and other provisions required by
|
||||
# the GPL. If you do not delete the provisions above, a recipient
|
||||
# may use your version of this file under either the MPL or the
|
||||
# GPL.
|
||||
#
|
||||
|
||||
# replace.pl: perform simple string substitution on a file
|
||||
# the first line in the input (template) file is also discarded.
|
||||
#
|
||||
# usage: perl replace.pl KEYWORD=VALUE... < TMPLFILE > OUTFILE
|
||||
#
|
||||
# created 17 October 2001 by Mark Smith <mcs@netscape.com>
|
||||
|
||||
@keywords = ();
|
||||
@values = ();
|
||||
|
||||
$count = 0;
|
||||
foreach $str (@ARGV) {
|
||||
($key,$val) = split( "=", $str, 2 );
|
||||
push (@keywords, $key);
|
||||
push (@values, $val);
|
||||
++$count;
|
||||
}
|
||||
|
||||
$first_line = 1;
|
||||
|
||||
while(<STDIN>) {
|
||||
$line = $_;
|
||||
$count = 0;
|
||||
foreach $str (@keywords) {
|
||||
$line =~ s/{{$str}}/$values[$count]/g;
|
||||
++$count;
|
||||
}
|
||||
|
||||
if ( ! $first_line ) {
|
||||
print $line;
|
||||
} else {
|
||||
$first_line = 0;
|
||||
}
|
||||
}
|
||||
|
||||
exit 0;
|
||||
522
mozilla/directory/c-sdk/ldap/clients/tools/Makefile.client
Normal file
522
mozilla/directory/c-sdk/ldap/clients/tools/Makefile.client
Normal file
@@ -0,0 +1,522 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator client code, released
|
||||
# March 31, 1998.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
NS_DEPTH = ../../../..
|
||||
DEPTH = ../../../../..
|
||||
LDAP_SRC = ../..
|
||||
NSCP_DISTDIR = ../../../../../dist
|
||||
NSPR_TREE = ../../..
|
||||
MOD_DEPTH = ../../..
|
||||
|
||||
include $(NSPR_TREE)/config/rules.mk
|
||||
include ../../../build.mk
|
||||
|
||||
INSTALLDIR = $(NSCP_DISTDIR)/$(OBJDIR_NAME)/bin
|
||||
HEADERDIR = $(DEPTH)/dist/$(OBJDIR_NAME)
|
||||
|
||||
INCLUDES += -I$(HEADERDIR)/include \
|
||||
-I../../../../../dist/include/obsolete \
|
||||
-I../../../../../dist/include \
|
||||
-I../../../../../dist/public/security \
|
||||
-I../../../../../dist/public/nss \
|
||||
-I$(NSCP_DISTDIR)/public/ldap \
|
||||
-I../../../ldap/include
|
||||
ifdef HAVE_SASL
|
||||
INCLUDES += -I$(LIBSASL_INCLUDES)
|
||||
endif
|
||||
|
||||
#for including SASL options
|
||||
ifdef HAVE_SASL
|
||||
HAVESASLOPTIONS = -DHAVE_SASL_OPTIONS
|
||||
# we don't need the -2 version of sasl any more.
|
||||
#HAVESASLOPTIONS += -DHAVE_SASL_OPTIONS_2
|
||||
else
|
||||
HAVESASLOPTIONS =
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_CCONF), 1)
|
||||
COMPS_FROM_OBJDIR=1
|
||||
endif
|
||||
|
||||
#
|
||||
# keep this defined for ldapssl_pkcs_init->NSS_Initialize
|
||||
# so that custom NSS secdb filenames/prefixes can be used
|
||||
#
|
||||
CFLAGS+=-DLDAP_TOOL_PKCS11
|
||||
|
||||
ifdef HAVE_LIBICU
|
||||
INCLUDES += -I$(LIBICU_INCLUDES)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
DEFS += -DXP_WIN -DXP_WIN32
|
||||
endif
|
||||
DEFINES += $(DEFS)
|
||||
|
||||
CXXSRCS = convutf8.cpp
|
||||
|
||||
OBJDEST = $(OBJDIR_NAME)
|
||||
BINDIR = $(OBJDIR_NAME)/bin
|
||||
LIBDIR = $(OBJDIR_NAME)/lib
|
||||
|
||||
ifneq ($(OS_ARCH), WINNT)
|
||||
ifeq ($(USE_64), 1)
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib/64
|
||||
else
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib
|
||||
endif
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
ifeq ($(USE_64), 1)
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/usr/lib/mps/sasl2/64:/usr/lib/mps/secv1/64:/usr/lib/mps/64
|
||||
else
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/usr/lib/mps/sasl2:/usr/lib/mps/secv1:/usr/lib/mps
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
ifeq ($(USE_64), 1)
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib64
|
||||
else
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
ifeq ($(USE_64), 1)
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib/64
|
||||
else
|
||||
RPATHFLAG = '$$'ORIGIN/../lib:/opt/sun/private/lib
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH), AIX)
|
||||
ifeq ($(USE_64), 1)
|
||||
RPATHFLAG = ../lib:/opt/sun/private/lib/64
|
||||
else
|
||||
RPATHFLAG = ../lib:/opt/sun/private/lib
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LDAPDELETE_OBJ = $(addprefix $(OBJDEST)/, ldapdelete.obj)
|
||||
LDAPMODIFY_OBJ = $(addprefix $(OBJDEST)/, ldapmodify.obj)
|
||||
LDAPSEARCH_OBJ = $(addprefix $(OBJDEST)/, ldapsearch.obj)
|
||||
LDAPCOMPARE_OBJ = $(addprefix $(OBJDEST)/, ldapcompare.obj)
|
||||
LDAPCMP_OBJ = $(addprefix $(OBJDEST)/, ldapcmp.obj)
|
||||
LDAPPASSWD_OBJ = $(addprefix $(OBJDEST)/, ldappasswd.obj)
|
||||
LDAPTOOLCOMMON_OBJ = $(addprefix $(OBJDEST)/, common.obj) \
|
||||
$(addprefix $(OBJDEST)/, convutf8.obj) \
|
||||
$(addprefix $(OBJDEST)/, fileurl.obj)
|
||||
ifdef HAVE_SASL
|
||||
LDAPTOOLCOMMON_OBJ += $(addprefix $(OBJDEST)/, ldaptool-sasl.obj)
|
||||
endif
|
||||
else
|
||||
LDAPDELETE_OBJ = $(addprefix $(OBJDEST)/, ldapdelete.o)
|
||||
LDAPMODIFY_OBJ = $(addprefix $(OBJDEST)/, ldapmodify.o)
|
||||
LDAPSEARCH_OBJ = $(addprefix $(OBJDEST)/, ldapsearch.o)
|
||||
LDAPCOMPARE_OBJ = $(addprefix $(OBJDEST)/, ldapcompare.o)
|
||||
LDAPCMP_OBJ = $(addprefix $(OBJDEST)/, ldapcmp.o)
|
||||
LDAPPASSWD_OBJ = $(addprefix $(OBJDEST)/, ldappasswd.o)
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
LDAPTOOLCOMMON_OBJ = $(addprefix $(OBJDEST)/, common.o) \
|
||||
$(addprefix $(OBJDEST)/, fileurl.o)
|
||||
else
|
||||
LDAPTOOLCOMMON_OBJ = $(addprefix $(OBJDEST)/, common.o) \
|
||||
$(addprefix $(OBJDEST)/, convutf8.o) \
|
||||
$(addprefix $(OBJDEST)/, fileurl.o)
|
||||
endif
|
||||
ifdef HAVE_SASL
|
||||
LDAPTOOLCOMMON_OBJ += $(addprefix $(OBJDEST)/, ldaptool-sasl.o)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
LDAPTOOLCPPCOMMON_OBJ = $(addprefix $(OBJDEST)/, convutf8.o)
|
||||
endif
|
||||
|
||||
CLIENT_OBJS = $(LDAPDELETE_OBJ) $(LDAPMODIFY_OBJ) \
|
||||
$(LDAPSEARCH_OBJ) $(LDAPCOMPARE_OBJ) $(LDAPCMP_OBJ) $(LDAPPASSWD_OBJ) $(LDAPTOOLCOMMON_OBJ)
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LDAPCOMPARE_RES = $(addprefix $(OBJDEST)/, ldapcompare.res)
|
||||
LDAPCOMPARE_OBJS_RES = $(LDAPCOMPARE_RES)
|
||||
LDAPDELETE_RES = $(addprefix $(OBJDEST)/, ldapdelete.res)
|
||||
LDAPDELETE_OBJS_RES = $(LDAPDELETE_RES)
|
||||
LDAPMODIFY_RES = $(addprefix $(OBJDEST)/, ldapmodify.res)
|
||||
LDAPMODIFY_OBJS_RES = $(LDAPMODIFY_RES)
|
||||
LDAPSEARCH_RES = $(addprefix $(OBJDEST)/, ldapsearch.res)
|
||||
LDAPSEARCH_OBJS_RES = $(LDAPSEARCH_RES)
|
||||
LDAPCMP_RES = $(addprefix $(OBJDEST)/, ldapcmp.res)
|
||||
LDAPCMP_OBJS_RES = $(LDAPCMP_RES)
|
||||
LDAPPASSWD_RES = $(addprefix $(OBJDEST)/, ldappasswd.res)
|
||||
LDAPPASSWD_OBJS_RES = $(LDAPPASSWD_RES)
|
||||
endif
|
||||
|
||||
LDAPDELETE = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldapdelete))
|
||||
LDAPMODIFY = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldapmodify))
|
||||
LDAPSEARCH = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldapsearch))
|
||||
LDAPCOMPARE = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldapcompare))
|
||||
LDAPCMP = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldapcmp))
|
||||
LDAPPASSWD = $(addsuffix $(EXE_SUFFIX), $(addprefix $(BINDIR)/, ldappasswd))
|
||||
|
||||
BINS= $(LDAPDELETE) $(LDAPMODIFY) $(LDAPSEARCH) $(LDAPCOMPARE) $(LDAPCMP) $(LDAPPASSWD)
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
LDTOOLS_LIBS += $(LIBNSPR)
|
||||
else
|
||||
LDTOOLS_LIBS += $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
EXTRA_LIBS = -L$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib -l$(LDAP_LIBNAME) \
|
||||
-l$(LDIF_LIBNAME) -l$(SSLDAP_LIBNAME) -l$(PRLDAP_LIBNAME) \
|
||||
-L$(NSCP_DISTDIR)/lib $(SVRCORE_LINK) \
|
||||
-l$(SSL_LIBNAME) -l$(NSS_LIBNAME) \
|
||||
-lposix4 -lsocket -lnsl \
|
||||
-ldl -lresolv -lgen
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/lib $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
EXTRA_LIBS =wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
|
||||
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
|
||||
rpcrt4.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(LBER_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(LDAP_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(LDIF_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(PLC_BASENAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(PLDS_BASENAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(NSPR_BASENAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(UTIL_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(SSLDAP_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(PRLDAP_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(NSS_LIBNAME).lib
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(SSL_LIBNAME).lib
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), OSF1)
|
||||
EXTRA_LIBS = -L$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib -l$(LDAP_LIBNAME) \
|
||||
-l$(LDIF_LIBNAME) -l$(SSLDAP_LIBNAME) -l$(PRLDAP_LIBNAME) \
|
||||
-L$(NSCP_DISTDIR)/lib $(SVRCORE_LINK) \
|
||||
-l$(SSL_LIBNAME) -l$(NSS_LIBNAME) \
|
||||
-lcxx -lpthread -lrt -lmach -lexc
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/lib $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), Linux)
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib -l$(LDAP_LIBNAME) \
|
||||
-l$(LDIF_LIBNAME) -l$(SSLDAP_LIBNAME) -l$(PRLDAP_LIBNAME) \
|
||||
-L$(NSCP_DISTDIR)/lib $(SVRCORE_LINK) \
|
||||
-l$(SSL_LIBNAME) -l$(NSS_LIBNAME) \
|
||||
-l$(STKN_LIBNAME) -l$(LBER_LIBNAME) \
|
||||
-ldl -lresolv -lc -lstdc++
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/lib $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
EXTRA_LIBS = -ldld -lm -lrt \
|
||||
-L$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib -l$(LDAP_LIBNAME) \
|
||||
-l$(LDIF_LIBNAME) -l$(SSLDAP_LIBNAME) -l$(PRLDAP_LIBNAME) \
|
||||
-L$(NSCP_DISTDIR)/lib $(SVRCORE_LINK) \
|
||||
-l$(SSL_LIBNAME) -l$(NSS_LIBNAME) -l$(LBER_LIBNAME)
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/lib $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), AIX)
|
||||
EXTRA_LIBS = -L$(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib -l$(LDAP_LIBNAME) \
|
||||
-l$(LDIF_LIBNAME) -l$(SSLDAP_LIBNAME) -l$(PRLDAP_LIBNAME) \
|
||||
-L$(NSCP_DISTDIR)/lib $(SVRCORE_LINK) \
|
||||
-l$(SSL_LIBNAME) -l$(NSS_LIBNAME) \
|
||||
-ldl -brtl -lpthreads -lc_r -lm
|
||||
EXTRA_LIBS += -L$(NSCP_DISTDIR)/lib $(DYNAMICNSPR)
|
||||
endif
|
||||
|
||||
ifdef HAVE_SASL
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
EXTRA_LIBS += $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/sasl32.lib
|
||||
else
|
||||
EXTRA_LIBS += -lsasl
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef HAVE_LIBICU
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
OS_VERS := $(shell uname -r)
|
||||
ifeq ($(OS_VERS),5.6)
|
||||
EXTRA_LIBS += -lC
|
||||
else
|
||||
EXTRA_LIBS += -lCrun
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
EXTRA_LIBS += $(LIBICU)
|
||||
else
|
||||
EXTRA_LIBS += $(ICULINK)
|
||||
endif
|
||||
|
||||
LDTOOLS_LIBS += $(EXTRA_LIBS)
|
||||
LIBLOCATION = $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib
|
||||
|
||||
###########################################################################
|
||||
|
||||
all:: $(BINS) $(OBJDEST) linklibicu libdir $(BINS)
|
||||
|
||||
libdir: linklibicu
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
@echo "Install libldap provided libraries - NT only"
|
||||
$(NSINSTALL) $(LIBLOCATION)/$(LDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(LIBLOCATION)/$(PRLDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(LIBLOCATION)/$(SSLDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
else
|
||||
@echo "Install libldap provided libraries - Unix'es"
|
||||
$(NSINSTALL) $(LIBLOCATION)/lib$(LDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(LIBLOCATION)/lib$(PRLDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(LIBLOCATION)/lib$(SSLDAP_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
ifeq ($(COMPS_FROM_OBJDIR), 1)
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
@echo "Install libraries from specified location - NT only"
|
||||
ifeq ($(HAVE_SASL), 1)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(SASL_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(PLC_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(PLDS_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(NSPR_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(SSL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(NSS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
else
|
||||
@echo "Install libraries from specified location - Unix'es"
|
||||
ifeq ($(HAVE_SASL), 1)
|
||||
ifneq ($(HAVE_SASL_LOCAL), 1)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(SASL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
endif
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(PLC_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(PLDS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(NSPR_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(SSL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(NSS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
else
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
@echo "Install libraries needed by libldap - NT only"
|
||||
ifeq ($(HAVE_SASL), 1)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(SASL_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(PLC_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(PLDS_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(NSPR_BASENAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(SSL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/$(NSS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
else
|
||||
@echo "Install libraries needed by libldap - UNIX'es only"
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(SASL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(PLC_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(PLDS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(NSPR_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(SSL_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/lib/lib$(NSS_LIBNAME).$(DLL_SUFFIX) $(LIBDIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(COPYFREEBL), 1)
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/$(FREEBL_LIBNAME) $(LIBDIR)
|
||||
else
|
||||
$(NSINSTALL) $(NSCP_DISTDIR)/$(OBJDIR_NAME)/lib/lib$(FREEBL_LIBNAME) $(LIBDIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
linklibsasl: FORCE
|
||||
ifeq ($(HAVE_SASL), 1)
|
||||
ifneq ($(HAVE_SASL_LOCAL), 1)
|
||||
ifneq ($(COMPONENT_PULL_METHOD), FTP)
|
||||
@echo ""
|
||||
@echo "IMPORTING .... libsasl"
|
||||
@echo ""
|
||||
$(RM) -f $(LIBSASL_INCLUDES)
|
||||
$(RM) -f $(LIBSASL_LIBDIR)
|
||||
ln -s $(LIBSASL_INCLUDES_LOC) $(LIBSASL_INCLUDES)
|
||||
ln -s $(LIBSASL_LIB_LOC) $(LIBSASL_LIBDIR)
|
||||
else
|
||||
@echo ""
|
||||
@echo "IMPORTING .... libsasl"
|
||||
@echo ""
|
||||
$(NSINSTALL) -D ../../../../../dist/$(OBJDIR_NAME)/libsasl
|
||||
$(NSINSTALL) -D ../../../../../dist/public
|
||||
$(NSINSTALL) -D ../../../../../dist/public/libsasl
|
||||
sh ../../build/nsftp.sh /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/lib ../../../../../dist/$(OBJDIR_NAME)/libsasl
|
||||
sh ../../build/nsftp.sh /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/include ../../../../../dist/public/libsasl
|
||||
endif
|
||||
ifeq ($(OS_ARCH),WINNT)
|
||||
$(NSINSTALL) $(LIBSASL_LIBDIR)/$(SASL_BASENAME).* ../../../../../dist/$(OBJDIR_NAME)/lib
|
||||
else
|
||||
$(NSINSTALL) $(LIBSASL_LIBDIR)/lib$(SASL_LIBNAME).$(DLL_SUFFIX) ../../../../../dist/$(OBJDIR_NAME)/lib
|
||||
endif
|
||||
else
|
||||
@echo ""
|
||||
@echo "WARNING: HAVE_SASL_LOCAL is set for libsasl; default to local version provided by OS"
|
||||
@echo ""
|
||||
endif
|
||||
endif
|
||||
|
||||
linklibicu: FORCE
|
||||
ifneq ($(COMPONENT_PULL_METHOD), FTP)
|
||||
ifeq ($(HAVE_LIBICU), 1)
|
||||
ifneq ($(HAVE_LIBICU_LOCAL), 1)
|
||||
@echo ""
|
||||
@echo "IMPORTING .... libicu"
|
||||
@echo ""
|
||||
$(RM) -f $(LIBICU_INCLUDES)
|
||||
$(RM) -f $(LIBICU_LIBDIR)
|
||||
ln -s $(LIBICU_INCLUDES_LOC) $(LIBICU_INCLUDES)
|
||||
ln -s $(LIBICU_LIB_LOC) $(LIBICU_LIBDIR)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifeq ($(HAVE_LIBICU), 1)
|
||||
ifneq ($(HAVE_LIBICU_LOCAL), 1)
|
||||
@echo ""
|
||||
@echo "IMPORTING .... libicu"
|
||||
@echo ""
|
||||
# The following shell script recalculates $(ICU_INCLUDE), $(ICU_LIBPATH)
|
||||
ifeq ($(USE_INT), 1)
|
||||
sh ../../build/compver.sh $(LIBICU_DIR) $(LIBICU_RELDATE) \
|
||||
$(OBJDIR_NAME) ../../../../dist ldapsdk \
|
||||
/share/builds/components/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(OBJDIR_NAME) \
|
||||
libicu$(ICU_LIBVERSION) \
|
||||
"include lib"
|
||||
else
|
||||
$(NSINSTALL) -D ../../../../../dist/$(OBJDIR_NAME)/libicu
|
||||
$(NSINSTALL) -D ../../../../../dist/public
|
||||
$(NSINSTALL) -D ../../../../../dist/public/libicu
|
||||
$(NSINSTALL) -D ../../../../../dist/public/libicu/unicode
|
||||
$(NSINSTALL) -D ../../../../../dist/public/libicu/layout
|
||||
sh ../../build/nsftp.sh /share/builds/integration/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(ICUOBJDIR)/lib ../../../../../dist/$(OBJDIR_NAME)/libicu
|
||||
ifeq ($(OS_ARCH), WINNT)
|
||||
sh ../../build/nsftp.sh /share/builds/integration/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(ICUOBJDIR)/bin ../../../../../dist/$(OBJDIR_NAME)/libicu
|
||||
endif
|
||||
sh ../../build/nsftp.sh /share/builds/integration/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(ICUOBJDIR)/include ../../../../../dist/public/libicu
|
||||
sh ../../build/nsftp.sh /share/builds/integration/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(ICUOBJDIR)/include/unicode ../../../../../dist/public/libicu/unicode
|
||||
sh ../../build/nsftp.sh /share/builds/integration/icu/$(ICU_LIBVERSION)/$(LIBICU_RELDATE)/$(ICUOBJDIR)/include/layout ../../../../../dist/public/libicu/layout
|
||||
endif
|
||||
else
|
||||
@echo ""
|
||||
@echo "WARNING: HAVE_LIBICU_LOCAL is set for libicu; default to local version provided by OS"
|
||||
@echo ""
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifeq ($(OS_ARCH), SunOS)
|
||||
ifneq ($(HAVE_LIBICU_LOCAL), 1)
|
||||
$(NSINSTALL) -D $(LIBDIR)
|
||||
cp ../../../../../dist/$(OBJDIR_NAME)/libicu/libicu* $(LIBDIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(LDAPTOOLCOMMON_OBJ):
|
||||
|
||||
ifeq ($(OS_ARCH), HP-UX)
|
||||
$(LDAPTOOLCPPCOMMON_OBJ): convutf8.cpp
|
||||
ifneq ($(USE_64), 1)
|
||||
/opt/aCC/bin/aCC -ext -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L -c -DHPUX11 -DHPUX11_00 +DAportable +DS1.1 -D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T -DNO_NODELOCK -DNO_LIBLCACHE -DXP_UNIX -DHPUX -DMCC_HTTPD -DNS_DOMESTIC -DNET_SSL -DCLIENT_AUTH -DNSPR20 -D_PR_NTHREAD -D_PR_USECPU -D_REENTRANT -DNS_DS -DSPAPI20 -DBUILD_NUM=\"01.081.1519\" -DCPU_hppa -DOS_hpux -D_NO_THREADS_ -Dhpux -Dhpux -D_HPUX_SOURCE -D_REENTRANT -Aa -DLDAP_REFERRALS -DLDAP_LDBM -DLDAP_LDIF -DLDBM_USE_DBBTREE -DSLAPD_PASSWD_SHA1 -D__DBINTERFACE_PRIVATE -DNO_LIBLCACHE -DNS_DIRECTORY -DNET_SSL -DUSE_NSPR_MT -O $(INCLUDES) convutf8.cpp -o $(OBJDIR_NAME)/convutf8.o
|
||||
else
|
||||
/opt/aCC/bin/aCC -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L +DA2.0W +DS2.0 -c -DHPUX11 -DHPUX11_00 -DIS_64 +e +DA2.0W +DS2.0 -D_LARGEFILE64_SOURCE -D_PR_HAVE_OFF64_T -DNO_NODELOCK -DNO_LIBLCACHE -DXP_UNIX -DHPUX -DMCC_DEBUG -g -DMCC_HTTPD -DNS_DOMESTIC -DNET_SSL -DCLIENT_AUTH -DNSPR20 -D_PR_NTHREAD -D_PR_USECPU -D_REENTRANT -DNS_DS -DSPAPI20 -DBUILD_NUM=\"01.081.1617\" -DCPU_hppa -DOS_hpux -D_NO_THREADS_ -Dhpux -Dhpux -D_HPUX_SOURCE -D_REENTRANT -Aa -DLDAP_DEBUG -DLDAP_REFERRALS -DLDAP_LDBM -DLDAP_LDIF -DLDBM_USE_DBBTREE -DSLAPD_PASSWD_SHA1 -D__DBINTERFACE_PRIVATE -DNO_LIBLCACHE -DNS_DIRECTORY -DNET_SSL -DUSE_NSPR_MT $(INCLUDES) -g convutf8.cpp -o $(OBJDIR_NAME)/convutf8.o
|
||||
endif
|
||||
else
|
||||
$(LDAPTOOLCPPCOMMON_OBJ):
|
||||
|
||||
endif
|
||||
|
||||
$(LDAPCOMPARE_RES) $(LDAPDELETE_RES) $(LDAPMODIFY_RES) $(LDAPSEARCH_RES) $(LDAPCMP_RES) $(LDAPPASSWD_RES): ldaptools.rc
|
||||
$(RSC) -fo $@ -d LDAP_TOOLNAME=$(LDAP_TOOLNAME) \
|
||||
-d YY=`date +%y` -d MMDD=`date +%m%d` -d HH=`date +%H` \
|
||||
-d MMSS=`date +%M%S` -d DEBUG=$(DEBUG) \
|
||||
-i ../../../../../dist/public/ldap $<
|
||||
|
||||
$(LDAPCOMPARE): LDAP_TOOLNAME = ldapcompare
|
||||
$(LDAPCOMPARE): $(LDAPCOMPARE_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPCOMPARE_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPCOMPARE_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPCOMPARE_OBJS_RES)
|
||||
|
||||
$(LDAPDELETE): LDAP_TOOLNAME = ldapdelete
|
||||
$(LDAPDELETE): $(LDAPDELETE_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPDELETE_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPDELETE_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPDELETE_OBJS_RES)
|
||||
|
||||
$(LDAPMODIFY): LDAP_TOOLNAME = ldapmodify
|
||||
$(LDAPMODIFY): $(LDAPMODIFY_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPMODIFY_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPMODIFY_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPMODIFY_OBJS_RES)
|
||||
|
||||
$(LDAPSEARCH): LDAP_TOOLNAME = ldapsearch
|
||||
$(LDAPSEARCH): $(LDAPSEARCH_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPSEARCH_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPSEARCH_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPSEARCH_OBJS_RES)
|
||||
|
||||
$(LDAPCMP): LDAP_TOOLNAME = ldapcmp
|
||||
$(LDAPCMP): $(LDAPCMP_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPCMP_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPCMP_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPCMP_OBJS_RES)
|
||||
|
||||
$(LDAPPASSWD): LDAP_TOOLNAME = ldappasswd
|
||||
$(LDAPPASSWD): $(LDAPPASSWD_OBJ) $(LDAPTOOLCOMMON_OBJ) \
|
||||
$(LDAPTOOLCPPCOMMON_OBJ) $(LDAPPASSWD_RES) $(LDTOOLS_LIBS_DEP)
|
||||
$(LINK_EXE) $(LDAPPASSWD_OBJ) $(LDAPTOOLCOMMON_OBJ) $(LDAPTOOLCPPCOMMON_OBJ) \
|
||||
$(LDTOOLS_LIBS) $(LDAPPASSWD_OBJS_RES)
|
||||
|
||||
$(OBJDEST):
|
||||
$(NSINSTALL) -D $(OBJDEST)
|
||||
$(NSINSTALL) -D $(BINDIR)
|
||||
$(NSINSTALL) -D $(LIBDIR)
|
||||
|
||||
clean::
|
||||
$(RM) -rf $(OBJDEST)
|
||||
|
||||
install:: $(OBJDEST) libdir $(BINS)
|
||||
$(NSINSTALL) $(LDAPDELETE) $(INSTALLDIR)
|
||||
$(NSINSTALL) $(LDAPSEARCH) $(INSTALLDIR)
|
||||
$(NSINSTALL) $(LDAPMODIFY) $(INSTALLDIR)
|
||||
$(NSINSTALL) $(LDAPCOMPARE) $(INSTALLDIR)
|
||||
$(NSINSTALL) $(LDAPCMP) $(INSTALLDIR)
|
||||
$(NSINSTALL) $(LDAPPASSWD) $(INSTALLDIR)
|
||||
|
||||
#
|
||||
# Simple, local dependencies
|
||||
#
|
||||
LDAPTOOL_COMMON_DEPS = ldaptool.h Makefile
|
||||
$(LDAPTOOLCOMMON_OBJ): $(LDAPTOOL_COMMON_DEPS)
|
||||
$(LDAPDELETE_OBJ): $(LDAPTOOL_COMMON_DEPS)
|
||||
$(LDAPMODIFY_OBJ): $(LDAPTOOL_COMMON_DEPS) fileurl.h
|
||||
$(LDAPSEARCH_OBJ): $(LDAPTOOL_COMMON_DEPS) fileurl.h
|
||||
$(LDAPCOMPARE_OBJ): $(LDAPTOOL_COMMON_DEPS)
|
||||
$(LDAPCMP_OBJ): $(LDAPTOOL_COMMON_DEPS)
|
||||
$(LDAPPASSWD_OBJ): $(LDAPTOOL_COMMON_DEPS)
|
||||
|
||||
FORCE:
|
||||
59
mozilla/directory/c-sdk/ldap/clients/tools/Options.txt
Normal file
59
mozilla/directory/c-sdk/ldap/clients/tools/Options.txt
Normal file
@@ -0,0 +1,59 @@
|
||||
Summary of options used by the LDAP tools
|
||||
|
||||
Updated 5-May-2000 by Mark Smith <mcs@netscape.com>
|
||||
|
||||
|
||||
Only single letter options in the sets [0-9], [A-Z], and [a-z] are
|
||||
listed.
|
||||
|
||||
The "raw" lists are taken from the calls to getopt() and
|
||||
ldaptool_process_args().
|
||||
|
||||
The "sorted" lists are just that -- sorted versions of the raw list.
|
||||
|
||||
The "all" lists include options from common.c as well as the tool-specific
|
||||
options.
|
||||
|
||||
The "avail" lists included options that are available for use.
|
||||
|
||||
|
||||
common.c (supported by all of the tools):
|
||||
raw: nvEMRHZ0d:D:f:h:I:j:K:N:O:P:p:Q:W:w:V:X:m:i:k:y:Y:J:
|
||||
sorted: 0 DEHIJKMNOPQRVWXYZ dfhikmnpvwy
|
||||
avail: 2 [4-9] g (not used by any of the tools)
|
||||
|
||||
ldapcmp.c:
|
||||
raw: Bb:l:s:z:
|
||||
sorted: B blsz
|
||||
all: 0 BDHIKMNOPQRVWXYZ bdfhiklmnpsvwyz
|
||||
avail: [12] [4-9] ACFGLSTU acegjoqrtu
|
||||
|
||||
ldapcompare.c:
|
||||
raw: cq
|
||||
sorted: cq
|
||||
all: 0 DEHIKMNOPQRVWXYZ cdfhikmnpqvwy
|
||||
avail: [12] [4-9] ABCFLSTU abegjlorstuxz
|
||||
|
||||
ldapdelete.c (deprecated)
|
||||
raw: c
|
||||
sorted: c
|
||||
all: 0 DHIKMNOPQRVWXYZ cdfhikmnpvwy
|
||||
avail: [12] [4-9] ABCFGLSTU abegjloqrstuxz
|
||||
|
||||
ldapmodify.c
|
||||
raw: aAbcFe:B:q
|
||||
sorted: ABF abceq
|
||||
all: 0 ABDFHIKMNOPQRVWXYZ abcdefhikmnpqvwy
|
||||
avail: [12] [4-9] CGLSTU gjlorstuxz
|
||||
|
||||
ldapmodrdn.c (deprecated)
|
||||
raw: cr
|
||||
sorted: cr
|
||||
all: 0 DHIKMNOPQRVWXYZ cdfhikmnprvwy
|
||||
avail: [12] [4-9] ABCFGLSTU abegjloqstuxz
|
||||
|
||||
ldapsearch.c
|
||||
raw: ABLTU1eotuxa:b:F:G:l:S:s:z:C:
|
||||
sorted: 1 ABCFGLSTU abeostuxz
|
||||
all: 01 ABCDFGHIKLMNOPQRSTUVWXYZ abdefhikmnopstuvwxyz
|
||||
avail: 2 [4-9] cgjlqr
|
||||
147
mozilla/directory/c-sdk/ldap/clients/tools/argpin.c
Normal file
147
mozilla/directory/c-sdk/ldap/clients/tools/argpin.c
Normal file
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/******************************************************
|
||||
*
|
||||
* argpin.c - Returns pin for token specified in a
|
||||
* command line paramenter.
|
||||
*
|
||||
******************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "argpin.h"
|
||||
|
||||
struct SVRCOREArgPinObj
|
||||
{
|
||||
SVRCOREPinObj base;
|
||||
|
||||
char *tokenName;
|
||||
char *password;
|
||||
SVRCOREPinObj *alt;
|
||||
};
|
||||
static const struct SVRCOREPinMethods vtable;
|
||||
|
||||
/* XXXceb these are two hacks to fix a problem with the debug builds
|
||||
* of svrcore. With the optimizer turned off, there is a situation
|
||||
* in user.c, where these two functions need to be available for the
|
||||
* linker (they are imported, and no lib exports them, since they are
|
||||
* declared static on XP_UNIX platforms) The short term hack solution
|
||||
* is to define them here. Yeah, it is ugly but, it will need to be
|
||||
* here, until a new version of svrcore is done.
|
||||
*/
|
||||
|
||||
|
||||
void echoOff(int fd)
|
||||
{
|
||||
}
|
||||
|
||||
void echoOn(int fd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
SVRCOREError
|
||||
SVRCORE_CreateArgPinObj(SVRCOREArgPinObj **out, const char * tokenName, const char *password, SVRCOREPinObj *pinObj)
|
||||
{
|
||||
SVRCOREError err = 0;
|
||||
SVRCOREArgPinObj *obj = 0;
|
||||
|
||||
do {
|
||||
obj = (SVRCOREArgPinObj*)malloc(sizeof (SVRCOREArgPinObj));
|
||||
if (!obj) { err = 1; break; }
|
||||
|
||||
obj->base.methods = &vtable;
|
||||
obj->tokenName=NULL;
|
||||
obj->password=NULL;
|
||||
obj->alt=pinObj;
|
||||
|
||||
if ( tokenName == NULL) {
|
||||
PK11SlotInfo *slot = PK11_GetInternalKeySlot();
|
||||
|
||||
obj->tokenName = strdup(PK11_GetTokenName(slot));
|
||||
PK11_FreeSlot(slot);
|
||||
}
|
||||
else
|
||||
{
|
||||
obj->tokenName = strdup(tokenName);
|
||||
}
|
||||
if (obj->tokenName == NULL) { err = 1; break; }
|
||||
|
||||
obj->password = strdup(password);
|
||||
if (obj->password == NULL) { err = 1; break; }
|
||||
} while(0);
|
||||
|
||||
if (err)
|
||||
{
|
||||
SVRCORE_DestroyArgPinObj(obj);
|
||||
obj = 0;
|
||||
}
|
||||
|
||||
*out = obj;
|
||||
return err;
|
||||
}
|
||||
|
||||
void
|
||||
SVRCORE_DestroyArgPinObj(SVRCOREArgPinObj *obj)
|
||||
{
|
||||
if (obj->tokenName) free(obj->tokenName);
|
||||
if (obj->password)
|
||||
{
|
||||
memset(obj->password, 0, strlen(obj->password));
|
||||
free(obj->password);
|
||||
}
|
||||
if (obj) free(obj);
|
||||
}
|
||||
|
||||
static void destroyObject(SVRCOREPinObj *obj)
|
||||
{
|
||||
SVRCORE_DestroyArgPinObj((SVRCOREArgPinObj*)obj);
|
||||
}
|
||||
|
||||
static char *getPin(SVRCOREPinObj *obj, const char *tokenName, PRBool retry)
|
||||
{
|
||||
SVRCOREArgPinObj *p = (SVRCOREArgPinObj*)obj;
|
||||
|
||||
if (tokenName == NULL) return NULL;
|
||||
|
||||
/* On first attempt, return the password if the token name
|
||||
* matches.
|
||||
*/
|
||||
if (!retry && strcmp(p->tokenName, tokenName) == 0)
|
||||
{
|
||||
return strdup(p->password);
|
||||
}
|
||||
|
||||
if (p->alt != NULL) return SVRCORE_GetPin(p->alt, tokenName, retry);
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* VTable
|
||||
*/
|
||||
static const SVRCOREPinMethods vtable =
|
||||
{ 0, 0, destroyObject, getPin };
|
||||
|
||||
36
mozilla/directory/c-sdk/ldap/clients/tools/argpin.h
Normal file
36
mozilla/directory/c-sdk/ldap/clients/tools/argpin.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef __ARGPIN_H__
|
||||
#define __ARGPIN_H__
|
||||
|
||||
#include <svrcore.h>
|
||||
|
||||
typedef struct SVRCOREArgPinObj SVRCOREArgPinObj;
|
||||
|
||||
SVRCOREError
|
||||
SVRCORE_CreateArgPinObj(SVRCOREArgPinObj **out, const char * tokenName, const char *password, SVRCOREPinObj *pinObj);
|
||||
|
||||
void
|
||||
SVRCORE_DestroyArgPinObj(SVRCOREArgPinObj *obj);
|
||||
|
||||
#endif
|
||||
2295
mozilla/directory/c-sdk/ldap/clients/tools/common.c
Normal file
2295
mozilla/directory/c-sdk/ldap/clients/tools/common.c
Normal file
File diff suppressed because it is too large
Load Diff
615
mozilla/directory/c-sdk/ldap/clients/tools/convutf8.cpp
Normal file
615
mozilla/directory/c-sdk/ldap/clients/tools/convutf8.cpp
Normal file
@@ -0,0 +1,615 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <locale.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifndef HAVE_LIBICU
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char *ldaptool_charset;
|
||||
char *ldaptool_convdir = NULL;
|
||||
static int charsetset = 0;
|
||||
char *ldaptool_local2UTF8( const char *src );
|
||||
|
||||
char *
|
||||
ldaptool_local2UTF8( const char *src )
|
||||
{
|
||||
char *utf8;
|
||||
|
||||
charsetset = 0;
|
||||
|
||||
if (src == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
utf8 = strdup(src);
|
||||
|
||||
return ( utf8 );
|
||||
}
|
||||
|
||||
#else /* HAVE_LIBICU */
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/ucnv.h"
|
||||
|
||||
#define NSPR20
|
||||
|
||||
#ifdef XP_WIN32
|
||||
#define VC_EXTRALEAN
|
||||
#include <afxwin.h>
|
||||
#include <winnls.h>
|
||||
#endif
|
||||
|
||||
extern char *ldaptool_charset;
|
||||
static int charsetset = 0;
|
||||
static int icu_err_once = 0;
|
||||
|
||||
extern "C" {
|
||||
char *ldaptool_convdir = NULL;
|
||||
char *ldaptool_local2UTF8( const char * );
|
||||
}
|
||||
|
||||
#ifndef XP_WIN32
|
||||
char * GetNormalizedLocaleName(void);
|
||||
|
||||
|
||||
char *
|
||||
GetNormalizedLocaleName(void)
|
||||
{
|
||||
#ifdef _HPUX_SOURCE
|
||||
|
||||
int len;
|
||||
char *locale;
|
||||
|
||||
locale = setlocale(LC_CTYPE, "");
|
||||
if (locale && *locale) {
|
||||
len = strlen(locale);
|
||||
} else {
|
||||
locale = (char *)"C";
|
||||
len = 1;
|
||||
}
|
||||
|
||||
if ((!strncmp(locale, "/\x03:", 3)) &&
|
||||
(!strcmp(&locale[len - 2], ";/"))) {
|
||||
locale += 3;
|
||||
len -= 5;
|
||||
}
|
||||
|
||||
locale = strdup(locale);
|
||||
if (locale) {
|
||||
locale[len] = 0;
|
||||
}
|
||||
|
||||
return locale;
|
||||
|
||||
#else
|
||||
|
||||
char *locale;
|
||||
|
||||
locale = setlocale(LC_CTYPE, "");
|
||||
if (locale && *locale) {
|
||||
return strdup(locale);
|
||||
}
|
||||
|
||||
return strdup("C");
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(IRIX)
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"cs: ISO_8859-2:1987",
|
||||
"da: ISO_8859-1:1987",
|
||||
"de: ISO_8859-1:1987",
|
||||
"de_AT: ISO_8859-1:1987",
|
||||
"de_CH: ISO_8859-1:1987",
|
||||
"en: ISO_8859-1:1987",
|
||||
"en_AU: ISO_8859-1:1987",
|
||||
"en_CA: ISO_8859-1:1987",
|
||||
"en_TH: ISO_8859-1:1987",
|
||||
"en_US: ISO_8859-1:1987",
|
||||
"es: ISO_8859-1:1987",
|
||||
"fi: ISO_8859-1:1987",
|
||||
"fr: ISO_8859-1:1987",
|
||||
"fr_BE: ISO_8859-1:1987",
|
||||
"fr_CA: ISO_8859-1:1987",
|
||||
"fr_CH: ISO_8859-1:1987",
|
||||
"is: ISO_8859-1:1987",
|
||||
"it: ISO_8859-1:1987",
|
||||
"it_CH: ISO_8859-1:1987",
|
||||
"ja_JP.EUC: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ko_KR.euc: EUC-KR",
|
||||
"nl: ISO_8859-1:1987",
|
||||
"nl_BE: ISO_8859-1:1987",
|
||||
"no: ISO_8859-1:1987",
|
||||
"pl: ISO_8859-2:1987",
|
||||
"pt: ISO_8859-1:1987",
|
||||
"sh: ISO_8859-2:1987",
|
||||
"sk: ISO_8859-2:1987",
|
||||
"sv: ISO_8859-1:1987",
|
||||
"zh_CN.ugb: GB2312",
|
||||
"zh_TW.ucns: cns11643_1",
|
||||
NULL
|
||||
};
|
||||
#elif defined(SOLARIS)
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"ja: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP.EUC: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP.PCK: Shift_JIS",
|
||||
"en: ISO_8859-1:1987",
|
||||
"en_AU: ISO_8859-1:1987",
|
||||
"en_CA: ISO_8859-1:1987",
|
||||
"en_UK: ISO_8859-1:1987",
|
||||
"en_US: ISO_8859-1:1987",
|
||||
"es: ISO_8859-1:1987",
|
||||
"es_AR: ISO_8859-1:1987",
|
||||
"es_BO: ISO_8859-1:1987",
|
||||
"es_CL: ISO_8859-1:1987",
|
||||
"es_CO: ISO_8859-1:1987",
|
||||
"es_CR: ISO_8859-1:1987",
|
||||
"es_EC: ISO_8859-1:1987",
|
||||
"es_GT: ISO_8859-1:1987",
|
||||
"es_MX: ISO_8859-1:1987",
|
||||
"es_NI: ISO_8859-1:1987",
|
||||
"es_PA: ISO_8859-1:1987",
|
||||
"es_PE: ISO_8859-1:1987",
|
||||
"es_PY: ISO_8859-1:1987",
|
||||
"es_SV: ISO_8859-1:1987",
|
||||
"es_UY: ISO_8859-1:1987",
|
||||
"es_VE: ISO_8859-1:1987",
|
||||
"fr: ISO_8859-1:1987",
|
||||
"fr_BE: ISO_8859-1:1987",
|
||||
"fr_CA: ISO_8859-1:1987",
|
||||
"fr_CH: ISO_8859-1:1987",
|
||||
"de: ISO_8859-1:1987",
|
||||
"de_AT: ISO_8859-1:1987",
|
||||
"de_CH: ISO_8859-1:1987",
|
||||
"nl: ISO_8859-1:1987",
|
||||
"nl_BE: ISO_8859-1:1987",
|
||||
"it: ISO_8859-1:1987",
|
||||
"sv: ISO_8859-1:1987",
|
||||
"no: ISO_8859-1:1987",
|
||||
"da: ISO_8859-1:1987",
|
||||
"iso_8859_1: ISO_8859-1:1987",
|
||||
"japanese: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ko: EUC-KR",
|
||||
"zh: GB2312",
|
||||
"zh_TW: cns11643_1",
|
||||
NULL
|
||||
};
|
||||
#elif defined(OSF1)
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"cs_CZ.ISO8859-2: ISO_8859-2:1987",
|
||||
"cs_CZ: ISO_8859-2:1987",
|
||||
"da_DK.ISO8859-1: ISO_8859-1:1987",
|
||||
"de_CH.ISO8859-1: ISO_8859-1:1987",
|
||||
"de_DE.ISO8859-1: ISO_8859-1:1987",
|
||||
"en_GB.ISO8859-1: ISO_8859-1:1987",
|
||||
"en_US.ISO8859-1: ISO_8859-1:1987",
|
||||
"es_ES.ISO8859-1: ISO_8859-1:1987",
|
||||
"fi_FI.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_BE.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_CA.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_CH.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_FR.ISO8859-1: ISO_8859-1:1987",
|
||||
"hu_HU.ISO8859-2: ISO_8859-2:1987",
|
||||
"hu_HU: ISO_8859-2:1987",
|
||||
"is_IS.ISO8859-1: ISO_8859-1:1987",
|
||||
"it_IT.ISO8859-1: ISO_8859-1:1987",
|
||||
"ja_JP.SJIS: Shift_JIS",
|
||||
"ja_JP.eucJP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ko_KR.eucKR: EUC-KR",
|
||||
"ko_KR: EUC-KR",
|
||||
"nl_BE.ISO8859-1: ISO_8859-1:1987",
|
||||
"nl_NL.ISO8859-1: ISO_8859-1:1987",
|
||||
"no_NO.ISO8859-1: ISO_8859-1:1987",
|
||||
"pl_PL.ISO8859-2: ISO_8859-2:1987",
|
||||
"pl_PL: ISO_8859-2:1987",
|
||||
"pt_PT.ISO8859-1: ISO_8859-1:1987",
|
||||
"sk_SK.ISO8859-2: ISO_8859-2:1987",
|
||||
"sk_SK: ISO_8859-2:1987",
|
||||
"sv_SE.ISO8859-1: ISO_8859-1:1987",
|
||||
"zh_CN: GB2312",
|
||||
"zh_HK.big5: Big5",
|
||||
"zh_HK.eucTW: cns11643_1",
|
||||
"zh_TW.big5: Big5",
|
||||
"zh_TW.big5@chuyin: Big5",
|
||||
"zh_TW.big5@radical: Big5",
|
||||
"zh_TW.big5@stroke: Big5",
|
||||
"zh_TW.eucTW: cns11643_1",
|
||||
"zh_TW.eucTW@chuyin: cns11643_1",
|
||||
"zh_TW.eucTW@radical: cns11643_1",
|
||||
"zh_TW.eucTW@stroke: cns11643_1",
|
||||
"zh_TW: cns11643_1",
|
||||
NULL
|
||||
};
|
||||
#elif defined(HPUX)
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"ja_JP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP.SJIS: Shift_JIS",
|
||||
"ja_JP.eucJP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"es_ES: ISO_8859-1:1987",
|
||||
"es_ES.iso88591: ISO_8859-1:1987",
|
||||
"sv_SE: ISO_8859-1:1987",
|
||||
"sv_SE.iso88591: ISO_8859-1:1987",
|
||||
"da_DK: ISO_8859-1:1987",
|
||||
"da_DK.iso88591: ISO_8859-1:1987",
|
||||
"nl_NL: ISO_8859-1:1987",
|
||||
"nl_NL.iso88591: ISO_8859-1:1987",
|
||||
"en: ISO_8859-1:1987",
|
||||
"en_GB: ISO_8859-1:1987",
|
||||
"en_GB.iso88591: ISO_8859-1:1987",
|
||||
"en_US: ISO_8859-1:1987",
|
||||
"en_US.iso88591: ISO_8859-1:1987",
|
||||
"fi_FI: ISO_8859-1:1987",
|
||||
"fi_FI.iso88591: ISO_8859-1:1987",
|
||||
"fr_CA: ISO_8859-1:1987",
|
||||
"fr_CA.iso88591: ISO_8859-1:1987",
|
||||
"fr_FR: ISO_8859-1:1987",
|
||||
"fr_FR.iso88591: ISO_8859-1:1987",
|
||||
"de_DE: ISO_8859-1:1987",
|
||||
"de_DE.iso88591: ISO_8859-1:1987",
|
||||
"is_IS: ISO_8859-1:1987",
|
||||
"is_IS.iso88591: ISO_8859-1:1987",
|
||||
"it_IT: ISO_8859-1:1987",
|
||||
"it_IT.iso88591: ISO_8859-1:1987",
|
||||
"no_NO: ISO_8859-1:1987",
|
||||
"no_NO.iso88591: ISO_8859-1:1987",
|
||||
"pt_PT: ISO_8859-1:1987",
|
||||
"pt_PT.iso88591: ISO_8859-1:1987",
|
||||
"hu_HU: ISO_8859-2:1987",
|
||||
"hu_HU.iso88592: ISO_8859-2:1987",
|
||||
"cs_CZ: ISO_8859-2:1987",
|
||||
"cs_CZ.iso88592: ISO_8859-2:1987",
|
||||
"pl_PL: ISO_8859-2:1987",
|
||||
"pl_PL.iso88592: ISO_8859-2:1987",
|
||||
"ro_RO: ISO_8859-2:1987",
|
||||
"ro_RO.iso88592: ISO_8859-2:1987",
|
||||
"hr_HR: ISO_8859-2:1987",
|
||||
"hr_HR.iso88592: ISO_8859-2:1987",
|
||||
"sk_SK: ISO_8859-2:1987",
|
||||
"sk_SK.iso88592: ISO_8859-2:1987",
|
||||
"sl_SI: ISO_8859-2:1987",
|
||||
"sl_SI.iso88592: ISO_8859-2:1987",
|
||||
"american.iso88591: ISO_8859-1:1987",
|
||||
"bulgarian: ISO_8859-2:1987",
|
||||
"c-french.iso88591: ISO_8859-1:1987",
|
||||
"chinese-s: GB2312",
|
||||
"chinese-t.big5: Big5",
|
||||
"czech: ISO_8859-2:1987",
|
||||
"danish.iso88591: ISO_8859-1:1987",
|
||||
"dutch.iso88591: ISO_8859-1:1987",
|
||||
"english.iso88591: ISO_8859-1:1987",
|
||||
"finnish.iso88591: ISO_8859-1:1987",
|
||||
"french.iso88591: ISO_8859-1:1987",
|
||||
"german.iso88591: ISO_8859-1:1987",
|
||||
"hungarian: ISO_8859-2:1987",
|
||||
"icelandic.iso88591: ISO_8859-1:1987",
|
||||
"italian.iso88591: ISO_8859-1:1987",
|
||||
"japanese.euc: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"japanese: Shift_JIS",
|
||||
"katakana: Shift_JIS",
|
||||
"korean: EUC-KR",
|
||||
"norwegian.iso88591: ISO_8859-1:1987",
|
||||
"polish: ISO_8859-2:1987",
|
||||
"portuguese.iso88591: ISO_8859-1:1987",
|
||||
"rumanian: ISO_8859-2:1987",
|
||||
"serbocroatian: ISO_8859-2:1987",
|
||||
"slovene: ISO_8859-2:1987",
|
||||
"spanish.iso88591: ISO_8859-1:1987",
|
||||
"swedish.iso88591: ISO_8859-1:1987",
|
||||
NULL
|
||||
};
|
||||
#elif defined(AIX)
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"En_JP.IBM-932: Shift_JIS",
|
||||
"En_JP: Shift_JIS",
|
||||
"Ja_JP.IBM-932: Shift_JIS",
|
||||
"Ja_JP: Shift_JIS",
|
||||
"da_DK.ISO8859-1: ISO_8859-1:1987",
|
||||
"da_DK: ISO_8859-1:1987",
|
||||
"de_CH.ISO8859-1: ISO_8859-1:1987",
|
||||
"de_CH: ISO_8859-1:1987",
|
||||
"de_DE.ISO8859-1: ISO_8859-1:1987",
|
||||
"de_DE: ISO_8859-1:1987",
|
||||
"en_GB.ISO8859-1: ISO_8859-1:1987",
|
||||
"en_GB: ISO_8859-1:1987",
|
||||
"en_JP.IBM-eucJP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"en_JP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"en_KR.IBM-eucKR: EUC-KR",
|
||||
"en_KR: EUC-KR",
|
||||
"en_TW.IBM-eucTW: cns11643_1",
|
||||
"en_TW: cns11643_1",
|
||||
"en_US.ISO8859-1: ISO_8859-1:1987",
|
||||
"en_US: ISO_8859-1:1987",
|
||||
"es_ES.ISO8859-1: ISO_8859-1:1987",
|
||||
"es_ES: ISO_8859-1:1987",
|
||||
"fi_FI.ISO8859-1: ISO_8859-1:1987",
|
||||
"fi_FI: ISO_8859-1:1987",
|
||||
"fr_BE.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_BE: ISO_8859-1:1987",
|
||||
"fr_CA.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_CA: ISO_8859-1:1987",
|
||||
"fr_CH.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_CH: ISO_8859-1:1987",
|
||||
"fr_FR.ISO8859-1: ISO_8859-1:1987",
|
||||
"fr_FR: ISO_8859-1:1987",
|
||||
"is_IS.ISO8859-1: ISO_8859-1:1987",
|
||||
"is_IS: ISO_8859-1:1987",
|
||||
"it_IT.ISO8859-1: ISO_8859-1:1987",
|
||||
"it_IT: ISO_8859-1:1987",
|
||||
"ja_JP.IBM-eucJP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ko_KR.IBM-eucKR: EUC-KR",
|
||||
"ko_KR: EUC-KR",
|
||||
"nl_BE.ISO8859-1: ISO_8859-1:1987",
|
||||
"nl_BE: ISO_8859-1:1987",
|
||||
"nl_NL.ISO8859-1: ISO_8859-1:1987",
|
||||
"nl_NL: ISO_8859-1:1987",
|
||||
"no_NO.ISO8859-1: ISO_8859-1:1987",
|
||||
"no_NO: ISO_8859-1:1987",
|
||||
"pt_PT.ISO8859-1: ISO_8859-1:1987",
|
||||
"pt_PT: ISO_8859-1:1987",
|
||||
"sv_SE.ISO8859-1: ISO_8859-1:1987",
|
||||
"sv_SE: ISO_8859-1:1987",
|
||||
"zh_TW.IBM-eucTW: cns11643_1",
|
||||
"zh_TW: cns11643_1",
|
||||
NULL
|
||||
};
|
||||
#else // sunos by default
|
||||
const char *CHARCONVTABLE[] =
|
||||
{
|
||||
"! This table maps the host's locale names to IANA charsets",
|
||||
"!",
|
||||
"C: ISO_8859-1:1987",
|
||||
"de: ISO_8859-1:1987",
|
||||
"en_US: ISO_8859-1:1987",
|
||||
"es: ISO_8859-1:1987",
|
||||
"fr: ISO_8859-1:1987",
|
||||
"iso_8859_1: ISO_8859-1:1987",
|
||||
"it: ISO_8859-1:1987",
|
||||
"ja: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ja_JP.EUC: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"japanese: Extended_UNIX_Code_Packed_Format_for_Japanese",
|
||||
"ko: EUC-KR",
|
||||
"sv: ISO_8859-1:1987",
|
||||
"zh: GB2312",
|
||||
"zh_TW: cns11643_1",
|
||||
NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
#define BSZ 256
|
||||
|
||||
char *
|
||||
GetCharsetFromLocale(char *locale)
|
||||
{
|
||||
char *tmpcharset = NULL;
|
||||
char buf[BSZ];
|
||||
char *p;
|
||||
const char *line;
|
||||
int i=0;
|
||||
|
||||
line = CHARCONVTABLE[i];
|
||||
while (line != NULL)
|
||||
{
|
||||
if (*line == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
strcpy(buf, line);
|
||||
line = CHARCONVTABLE[++i];
|
||||
|
||||
if (strlen(buf) == 0 || buf[0] == '!')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
p = strchr(buf, ':');
|
||||
if (p == NULL)
|
||||
{
|
||||
tmpcharset = NULL;
|
||||
break;
|
||||
}
|
||||
*p = 0;
|
||||
if (strcmp(buf, locale) == 0) {
|
||||
while (*++p == ' ' || *p == '\t')
|
||||
;
|
||||
if (isalpha(*p)) {
|
||||
tmpcharset = strdup(p);
|
||||
} else
|
||||
tmpcharset = NULL;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
return tmpcharset;
|
||||
}
|
||||
|
||||
#endif /* Not defined XP_WIN32 */
|
||||
|
||||
#ifdef XP_WIN32
|
||||
char *_convertor(const char *instr, int bFromUTF8)
|
||||
{
|
||||
char *outstr = NULL;
|
||||
int inlen, wclen, outlen;
|
||||
LPWSTR wcstr;
|
||||
|
||||
if (instr == NULL)
|
||||
return NULL;
|
||||
|
||||
if ((inlen = strlen(instr)) <= 0)
|
||||
return NULL;
|
||||
|
||||
/* output never becomes longer than input,
|
||||
* thus we don't have to ask for the length
|
||||
*/
|
||||
wcstr = (LPWSTR) malloc( sizeof( WCHAR ) * (inlen+1) );
|
||||
if (!wcstr)
|
||||
return NULL;
|
||||
|
||||
wclen = MultiByteToWideChar(bFromUTF8 ? CP_UTF8 : CP_ACP, 0, instr,
|
||||
inlen, wcstr, inlen);
|
||||
outlen = WideCharToMultiByte(bFromUTF8 ? CP_ACP : CP_UTF8, 0, wcstr,
|
||||
wclen, NULL, 0, NULL, NULL);
|
||||
|
||||
if (outlen > 0) {
|
||||
outstr = (char *) malloc(outlen + 2);
|
||||
outlen = WideCharToMultiByte(bFromUTF8 ? CP_ACP : CP_UTF8, 0, wcstr,
|
||||
wclen, outstr, outlen, NULL, NULL);
|
||||
if (outlen > 0)
|
||||
*(outstr+outlen) = _T('\0');
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
free( wcstr );
|
||||
return outstr;
|
||||
}
|
||||
#endif
|
||||
|
||||
char *
|
||||
ldaptool_local2UTF8( const char *src )
|
||||
{
|
||||
char *utf8;
|
||||
#ifndef XP_WIN32
|
||||
char *locale, *newcharset;
|
||||
size_t outLen, resultLen;
|
||||
UErrorCode err = U_ZERO_ERROR;
|
||||
UConverter *cnv;
|
||||
|
||||
if (src == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
else if (*src == 0 || (ldaptool_charset == NULL)
|
||||
|| (!strcmp( ldaptool_charset, "" )))
|
||||
{
|
||||
/* no charset specified, lets try to get charset from locale */
|
||||
newcharset = (char *)ucnv_getDefaultName();
|
||||
if (newcharset != NULL) {
|
||||
/* the default codepage lives in ICU */
|
||||
ldaptool_charset = strdup(newcharset);
|
||||
if (ldaptool_charset == NULL) {
|
||||
utf8 = strdup(src);
|
||||
return utf8;
|
||||
}
|
||||
}
|
||||
charsetset = 1;
|
||||
}
|
||||
|
||||
if( !strcmp( ldaptool_charset, "0" ) && (!charsetset) ) {
|
||||
/* zero option specified to override any conversions */
|
||||
utf8 = strdup(src);
|
||||
return utf8;
|
||||
}
|
||||
else
|
||||
if( strcmp( ldaptool_charset, "" ) && (!charsetset) ) {
|
||||
/* -i option specified with charset name */
|
||||
charsetset = 1;
|
||||
}
|
||||
|
||||
/* do the preflight - get the size needed for the target buffer */
|
||||
outLen = (size_t) ucnv_convert( "utf-8", ldaptool_charset, NULL, 0, src,
|
||||
strlen( src ) * sizeof(char), &err);
|
||||
|
||||
if ( ( U_FAILURE(err) ) && ( !icu_err_once ) ) {
|
||||
if ( err == U_FILE_ACCESS_ERROR ) {
|
||||
fprintf( stderr,
|
||||
"\nWARNING: no converter found for charset: %s\n\n",
|
||||
ldaptool_charset );
|
||||
} else if ( err != U_BUFFER_OVERFLOW_ERROR) {
|
||||
fprintf( stderr,
|
||||
"\nWARNING: charset conversion failed in preflight: %s\n\n",
|
||||
u_errorName(err) );
|
||||
}
|
||||
icu_err_once = 1;
|
||||
}
|
||||
if ((err != U_BUFFER_OVERFLOW_ERROR) || (outLen == 0)) {
|
||||
/* default to just a copy of the string - this covers
|
||||
the case of an illegal charset also */
|
||||
return strdup(src);
|
||||
}
|
||||
|
||||
utf8 = (char *) malloc( outLen + 1);
|
||||
if( utf8 == NULL ) {
|
||||
/* if we're already out of memory, does strdup just return NULL? */
|
||||
return strdup(src);
|
||||
}
|
||||
|
||||
/* do the actual conversion this time */
|
||||
err = U_ZERO_ERROR;
|
||||
resultLen = ucnv_convert( "utf-8", ldaptool_charset, utf8, (outLen + 1), src,
|
||||
strlen(src) * sizeof(char), &err );
|
||||
|
||||
if (!U_SUCCESS(err)) {
|
||||
if ( !icu_err_once ) {
|
||||
fprintf( stderr, "\nWARNING: charset conversion failed: %s\n\n",
|
||||
u_errorName(err) );
|
||||
icu_err_once = 1;
|
||||
}
|
||||
free(utf8);
|
||||
return strdup(src);
|
||||
}
|
||||
|
||||
#else
|
||||
utf8 = _convertor(src, FALSE);
|
||||
if( utf8 == NULL )
|
||||
utf8 = strdup(src);
|
||||
#endif
|
||||
|
||||
return utf8;
|
||||
}
|
||||
#endif /* HAVE_LIBICU */
|
||||
|
||||
#ifndef HAVE_LIBICU
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,181 @@
|
||||
# LDIF examples, taken from the specification which was found at:
|
||||
# http://www.ietf.org/internet-drafts/draft-good-ldap-ldif-03.txt
|
||||
|
||||
# Example 1: An simple LDAP file with two entries
|
||||
version: 1
|
||||
dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
cn: Barbara Jensen
|
||||
cn: Barbara J Jensen
|
||||
cn: Babs Jensen
|
||||
sn: Jensen
|
||||
uid: bjensen
|
||||
telephonenumber: +1 408 555 1212
|
||||
description: A big sailing fan.
|
||||
|
||||
dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
cn: Bjorn Jensen
|
||||
sn: Jensen
|
||||
telephonenumber: +1 408 555 1212
|
||||
|
||||
# Example 2: A file containing an entry with a folded attribute value
|
||||
version: 1
|
||||
dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
|
||||
objectclass:top
|
||||
objectclass:person
|
||||
objectclass:organizationalPerson
|
||||
cn:Barbara Jensen
|
||||
cn:Barbara J Jensen
|
||||
cn:Babs Jensen
|
||||
sn:Jensen
|
||||
uid:bjensen
|
||||
telephonenumber:+1 408 555 1212
|
||||
description:Babs is a big sailing fan, and travels extensively in search of
|
||||
perfect sailing conditions.
|
||||
title:Product Manager, Rod and Reel Division
|
||||
|
||||
# Example 3: A file containing a base-64-encoded value
|
||||
version: 1
|
||||
dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
cn: Gern Jensen
|
||||
cn: Gern O Jensen
|
||||
sn: Jensen
|
||||
uid: gernj
|
||||
telephonenumber: +1 408 555 1212
|
||||
description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVlIGlzIGJ
|
||||
hc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdGVyIGluIGl0ICh
|
||||
hIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQgb3V0IG1vcmUu
|
||||
|
||||
# Example 4: A file containing an entries with UTF-8-encoded attribute
|
||||
# values, including language tags. Comments indicate the contents
|
||||
# of UTF-8-encoded attributes and distinguished names.
|
||||
version: 1
|
||||
dn:: b3U95Za25qWt6YOoLG89QWlyaXVz
|
||||
# dn:: ou=<JapaneseOU>,o=Airius
|
||||
objectclass: top
|
||||
objectclass: organizationalUnit
|
||||
ou:: 5Za25qWt6YOo
|
||||
# ou:: <JapaneseOU>
|
||||
ou;lang-ja:: 5Za25qWt6YOo
|
||||
# ou;lang-ja:: <JapaneseOU>
|
||||
ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2
|
||||
# ou;lang-ja:: <JapaneseOU_in_phonetic_representation>
|
||||
ou;lang-en: Sales
|
||||
description: Japanese office
|
||||
|
||||
dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz
|
||||
# dn:: uid=<uid>,ou=<JapaneseOU>,o=Airius
|
||||
userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
objectclass: inetOrgPerson
|
||||
uid: rogasawara
|
||||
mail: rogasawara@airius.co.jp
|
||||
givenname;lang-ja:: 44Ot44OJ44OL44O8
|
||||
# givenname;lang-ja:: <JapaneseGivenname>
|
||||
sn;lang-ja:: 5bCP56yg5Y6f
|
||||
# sn;lang-ja:: <JapaneseSn>
|
||||
cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
|
||||
# cn;lang-ja:: <JapaneseCn>
|
||||
title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw==
|
||||
# title;lang-ja:: <JapaneseTitle>
|
||||
preferredlanguage: ja
|
||||
givenname:: 44Ot44OJ44OL44O8
|
||||
# givenname:: <JapaneseGivenname>
|
||||
sn:: 5bCP56yg5Y6f
|
||||
# sn:: <JapaneseSn>
|
||||
cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
|
||||
# cn:: <JapaneseCn>
|
||||
title:: 5Za25qWt6YOoIOmDqOmVtw==
|
||||
# title:: <JapaneseTitle>
|
||||
givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8
|
||||
# givenname;lang-ja;phonetic:: <JapaneseGivenname_in_phonetic_representation_kana>
|
||||
sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ
|
||||
# sn;lang-ja;phonetic:: <JapaneseSn_in_phonetic_representation_kana>
|
||||
cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA==
|
||||
# cn;lang-ja;phonetic:: <JapaneseCn_in_phonetic_representation_kana>
|
||||
title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg==
|
||||
# title;lang-ja;phonetic:: <JapaneseTitle_in_phonetic_representation_kana>
|
||||
givenname;lang-en: Rodney
|
||||
sn;lang-en: Ogasawara
|
||||
cn;lang-en: Rodney Ogasawara
|
||||
title;lang-en: Sales, Director
|
||||
|
||||
# Example 5: A file containing a reference to an external file
|
||||
version: 1
|
||||
dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
cn: Horatio Jensen
|
||||
cn: Horatio N Jensen
|
||||
sn: Jensen
|
||||
uid: hjensen
|
||||
telephonenumber: +1 408 555 1212
|
||||
# XXXmcs: In the spec, the following line reads:
|
||||
# jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg
|
||||
# I changed the file URL to point to a more generic directory.
|
||||
jpegphoto:< file:///tmp/hjensen.jpg
|
||||
|
||||
# Example 6: A file containing a series of change records and comments
|
||||
version: 1
|
||||
# Add a new entry
|
||||
dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com
|
||||
changetype: add
|
||||
objectclass: top
|
||||
objectclass: person
|
||||
objectclass: organizationalPerson
|
||||
cn: Fiona Jensen
|
||||
sn: Jensen
|
||||
uid: fiona
|
||||
telephonenumber: +1 408 555 1212
|
||||
# XXXmcs: In the spec, the following line reads:
|
||||
# jpegphoto:< file:///usr/local/directory/photos/fiona.jpg
|
||||
# I changed the file URL to point to a more generic directory.
|
||||
jpegphoto:< file:///tmp/fiona.jpg
|
||||
|
||||
# Delete an existing entry
|
||||
dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com
|
||||
changetype: delete
|
||||
|
||||
# Modify an entry's relative distinguished name
|
||||
dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com
|
||||
changetype: modrdn
|
||||
newrdn: cn=Paula Jensen
|
||||
deleteoldrdn: 1
|
||||
|
||||
# Rename an entry and move all of its children to a new location in
|
||||
# the directory tree (only implemented by LDAPv3 servers).
|
||||
dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com
|
||||
changetype: modrdn
|
||||
newrdn: ou=Product Development Accountants
|
||||
deleteoldrdn: 0
|
||||
newsuperior: ou=Accounting, dc=airius, dc=com
|
||||
|
||||
# Modify an entry: add an additional value to the postaladdress attribute,
|
||||
# completely delete the description attribute, replace the telephonenumber
|
||||
# attribute with two values, and delete a specific value from the
|
||||
# facsimiletelephonenumber attribute
|
||||
dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com
|
||||
changetype: modify
|
||||
add: postaladdress
|
||||
postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
|
||||
-
|
||||
delete: description
|
||||
-
|
||||
replace: telephonenumber
|
||||
telephonenumber: +1 408 555 1234
|
||||
telephonenumber: +1 408 555 5678
|
||||
-
|
||||
delete: facsimiletelephonenumber
|
||||
facsimiletelephonenumber: +1 408 555 9876
|
||||
-
|
||||
501
mozilla/directory/c-sdk/ldap/clients/tools/fileurl.c
Normal file
501
mozilla/directory/c-sdk/ldap/clients/tools/fileurl.c
Normal file
@@ -0,0 +1,501 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/*
|
||||
* LDAP tools fileurl.c -- functions for handling file URLs.
|
||||
* Used by ldapmodify.
|
||||
*/
|
||||
|
||||
#include "ldaptool.h"
|
||||
#include "fileurl.h"
|
||||
#include <ctype.h> /* for isalpha() */
|
||||
|
||||
static int str_starts_with( const char *s, char *prefix );
|
||||
static void hex_unescape( char *s );
|
||||
static int unhex( char c );
|
||||
static void strcpy_escaped_and_convert( char *s1, char *s2 );
|
||||
static int berval_from_file( const char *path, struct berval *bvp,
|
||||
int reporterrs );
|
||||
|
||||
/*
|
||||
* Convert a file URL to a local path.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and *localpathp is
|
||||
* set point to an allocated string. If not, an different LDAPTOOL_FILEURL_
|
||||
* error code is returned.
|
||||
*
|
||||
* See RFCs 1738 and 2396 for a specification for file URLs... but
|
||||
* Netscape Navigator seems to be a bit more lenient in what it will
|
||||
* accept, especially on Windows).
|
||||
*
|
||||
* This function parses file URLs of these three forms:
|
||||
*
|
||||
* file:///path
|
||||
* file:/path
|
||||
* file://localhost/path
|
||||
* file://host/path (rejected with a ...NONLOCAL error)
|
||||
*
|
||||
* On Windows, we convert leading drive letters of the form C| to C:
|
||||
* and if a drive letter is present we strip off the slash that precedes
|
||||
* path. Otherwise, the leading slash is returned.
|
||||
*
|
||||
*/
|
||||
int
|
||||
ldaptool_fileurl2path( const char *fileurl, char **localpathp )
|
||||
{
|
||||
const char *path;
|
||||
char *pathcopy;
|
||||
|
||||
/*
|
||||
* Make sure this is a file URL we can handle.
|
||||
*/
|
||||
if ( !str_starts_with( fileurl, "file:" )) {
|
||||
return( LDAPTOOL_FILEURL_NOTAFILEURL );
|
||||
}
|
||||
|
||||
path = fileurl + 5; /* skip past "file:" scheme prefix */
|
||||
|
||||
if ( *path != '/' ) {
|
||||
return( LDAPTOOL_FILEURL_MISSINGPATH );
|
||||
}
|
||||
|
||||
++path; /* skip past '/' at end of "file:/" */
|
||||
|
||||
if ( *path == '/' ) {
|
||||
++path; /* remainder is now host/path or /path */
|
||||
if ( *path != '/' ) {
|
||||
/*
|
||||
* Make sure it is for the local host.
|
||||
*/
|
||||
if ( str_starts_with( path, "localhost/" )) {
|
||||
path += 9;
|
||||
} else {
|
||||
return( LDAPTOOL_FILEURL_NONLOCAL );
|
||||
}
|
||||
}
|
||||
} else { /* URL is of the form file:/path */
|
||||
--path;
|
||||
}
|
||||
|
||||
/*
|
||||
* The remainder is now of the form /path. On Windows, skip past the
|
||||
* leading slash if a drive letter is present.
|
||||
*/
|
||||
#ifdef _WINDOWS
|
||||
if ( isalpha( path[1] ) && ( path[2] == '|' || path[2] == ':' )) {
|
||||
++path;
|
||||
}
|
||||
#endif /* _WINDOWS */
|
||||
|
||||
/*
|
||||
* Duplicate the path so we can safely alter it.
|
||||
* Unescape any %HH sequences.
|
||||
*/
|
||||
if (( pathcopy = strdup( path )) == NULL ) {
|
||||
return( LDAPTOOL_FILEURL_NOMEMORY );
|
||||
}
|
||||
hex_unescape( pathcopy );
|
||||
|
||||
#ifdef _WINDOWS
|
||||
/*
|
||||
* Convert forward slashes to backslashes for Windows. Also,
|
||||
* if we see a drive letter / vertical bar combination (e.g., c|)
|
||||
* at the beginning of the path, replace the '|' with a ':'.
|
||||
*/
|
||||
{
|
||||
char *p;
|
||||
|
||||
for ( p = pathcopy; *p != '\0'; ++p ) {
|
||||
if ( *p == '/' ) {
|
||||
*p = '\\';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isalpha( pathcopy[0] ) && pathcopy[1] == '|' ) {
|
||||
pathcopy[1] = ':';
|
||||
}
|
||||
#endif /* _WINDOWS */
|
||||
|
||||
*localpathp = pathcopy;
|
||||
return( LDAPTOOL_FILEURL_SUCCESS );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Convert a local path to a file URL.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and *urlp is
|
||||
* set point to an allocated string. If not, an different LDAPTOOL_FILEURL_
|
||||
* error code is returned. At present, the only possible error is
|
||||
* LDAPTOOL_FILEURL_NOMEMORY.
|
||||
*
|
||||
* This function produces file URLs of the form file:path.
|
||||
*
|
||||
* On Windows, we convert leading drive letters to C|.
|
||||
*
|
||||
*/
|
||||
int
|
||||
ldaptool_path2fileurl( char *path, char **urlp )
|
||||
{
|
||||
char *p, *url, *prefix ="file:";
|
||||
|
||||
if ( NULL == path ) {
|
||||
path = "/";
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate space for the URL, taking into account that path may
|
||||
* expand during the hex escaping process.
|
||||
*/
|
||||
if (( url = malloc( strlen( prefix ) + 3 * strlen( path ) + 1 )) == NULL ) {
|
||||
return( LDAPTOOL_FILEURL_NOMEMORY );
|
||||
}
|
||||
|
||||
strcpy( url, prefix );
|
||||
p = url + strlen( prefix );
|
||||
|
||||
#ifdef _WINDOWS
|
||||
/*
|
||||
* On Windows, convert leading drive letters (e.g., C:) to the correct URL
|
||||
* syntax (e.g., C|).
|
||||
*/
|
||||
if ( isalpha( path[0] ) && path[1] == ':' ) {
|
||||
*p++ = path[0];
|
||||
*p++ = '|';
|
||||
path += 2;
|
||||
*p = '\0';
|
||||
}
|
||||
#endif /* _WINDOWS */
|
||||
|
||||
/*
|
||||
* Append the path, encoding any URL-special characters using the %HH
|
||||
* convention.
|
||||
* On Windows, convert backwards slashes in the path to forward ones.
|
||||
*/
|
||||
strcpy_escaped_and_convert( p, path );
|
||||
|
||||
*urlp = url;
|
||||
return( LDAPTOOL_FILEURL_SUCCESS );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Populate *bvp from "value" of length "vlen."
|
||||
*
|
||||
* If recognize_url_syntax is non-zero, :<fileurl is recognized.
|
||||
* If always_try_file is recognized and no file URL was found, an
|
||||
* attempt is made to stat and read the value as if it were the name
|
||||
* of a file.
|
||||
*
|
||||
* If reporterrs is non-zero, specific error messages are printed to
|
||||
* stderr.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and bvp->bv_len
|
||||
* and bvp->bv_val are set (the latter is set to malloc'd memory).
|
||||
* Upon failure, a different LDAPTOOL_FILEURL_ error code is returned.
|
||||
*/
|
||||
int
|
||||
ldaptool_berval_from_ldif_value( const char *value, int vlen,
|
||||
struct berval *bvp, int recognize_url_syntax, int always_try_file,
|
||||
int reporterrs )
|
||||
{
|
||||
int rc = LDAPTOOL_FILEURL_SUCCESS; /* optimistic */
|
||||
const char *url = NULL;
|
||||
struct stat fstats;
|
||||
|
||||
/* recognize "attr :< url" syntax if LDIF version is >= 1 */
|
||||
|
||||
#ifdef notdef
|
||||
if ( ldaptool_verbose ) {
|
||||
fprintf( stderr, "%s: ldaptool_berval_from_ldif_value: value: %s\n",
|
||||
ldaptool_progname, value);
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( recognize_url_syntax && *value == '<' ) {
|
||||
for ( url = value + 1; isspace( *url ); ++url ) {
|
||||
; /* NULL */
|
||||
}
|
||||
|
||||
if (strlen(url) > 7 && strncasecmp(url, "file://", 7) != 0) {
|
||||
/*
|
||||
* We only support file:// URLs for now.
|
||||
*/
|
||||
url = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if ( NULL != url ) {
|
||||
char *path;
|
||||
|
||||
rc = ldaptool_fileurl2path( url, &path );
|
||||
switch( rc ) {
|
||||
case LDAPTOOL_FILEURL_NOTAFILEURL:
|
||||
if ( reporterrs ) fprintf( stderr, "%s: unsupported URL \"%s\";"
|
||||
" use a file:// URL instead.\n", ldaptool_progname, url );
|
||||
break;
|
||||
|
||||
case LDAPTOOL_FILEURL_MISSINGPATH:
|
||||
if ( reporterrs ) fprintf( stderr,
|
||||
"%s: unable to process URL \"%s\" --"
|
||||
" missing path.\n", ldaptool_progname, url );
|
||||
break;
|
||||
|
||||
case LDAPTOOL_FILEURL_NONLOCAL:
|
||||
if ( reporterrs ) fprintf( stderr,
|
||||
"%s: unable to process URL \"%s\" -- only"
|
||||
" local file:// URLs are supported.\n",
|
||||
ldaptool_progname, url );
|
||||
break;
|
||||
|
||||
case LDAPTOOL_FILEURL_NOMEMORY:
|
||||
if ( reporterrs ) perror( "ldaptool_fileurl2path" );
|
||||
break;
|
||||
|
||||
case LDAPTOOL_FILEURL_SUCCESS:
|
||||
if ( stat( path, &fstats ) != 0 ) {
|
||||
if ( reporterrs ) perror( path );
|
||||
} else if ( fstats.st_mode & S_IFDIR ) {
|
||||
if ( reporterrs ) fprintf( stderr,
|
||||
"%s: %s is a directory, not a file\n",
|
||||
ldaptool_progname, path );
|
||||
rc = LDAPTOOL_FILEURL_FILEIOERROR;
|
||||
} else {
|
||||
rc = berval_from_file( path, bvp, reporterrs );
|
||||
}
|
||||
free( path );
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( reporterrs ) fprintf( stderr,
|
||||
"%s: unable to process URL \"%s\""
|
||||
" -- unknown error\n", ldaptool_progname, url );
|
||||
}
|
||||
} else if ( always_try_file && (stat( value, &fstats ) == 0) &&
|
||||
!(fstats.st_mode & S_IFDIR)) { /* get value from file */
|
||||
rc = berval_from_file( value, bvp, reporterrs );
|
||||
} else {
|
||||
bvp->bv_len = vlen;
|
||||
if (( bvp->bv_val = (char *)malloc( vlen + 1 )) == NULL ) {
|
||||
if ( reporterrs ) perror( "malloc" );
|
||||
rc = LDAPTOOL_FILEURL_NOMEMORY;
|
||||
} else {
|
||||
SAFEMEMCPY( bvp->bv_val, value, vlen );
|
||||
bvp->bv_val[ vlen ] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Map an LDAPTOOL_FILEURL_ error code to an LDAP error code (crude).
|
||||
*/
|
||||
int
|
||||
ldaptool_fileurlerr2ldaperr( int lderr )
|
||||
{
|
||||
int rc;
|
||||
|
||||
switch( lderr ) {
|
||||
case LDAPTOOL_FILEURL_SUCCESS:
|
||||
rc = LDAP_SUCCESS;
|
||||
break;
|
||||
case LDAPTOOL_FILEURL_NOMEMORY:
|
||||
rc = LDAP_NO_MEMORY;
|
||||
break;
|
||||
default:
|
||||
rc = LDAP_PARAM_ERROR;
|
||||
}
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Populate *bvp with the contents of the file named by "path".
|
||||
*
|
||||
* If reporterrs is non-zero, specific error messages are printed to
|
||||
* stderr.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and bvp->bv_len
|
||||
* and bvp->bv_val are set (the latter is set to malloc'd memory).
|
||||
* Upon failure, a different LDAPTOOL_FILEURL_ error code is returned.
|
||||
*/
|
||||
|
||||
static int
|
||||
berval_from_file( const char *path, struct berval *bvp, int reporterrs )
|
||||
{
|
||||
FILE *fp;
|
||||
long rlen;
|
||||
int eof;
|
||||
#if defined( XP_WIN32 )
|
||||
char mode[20] = "r+b";
|
||||
#else
|
||||
char mode[20] = "r";
|
||||
#endif
|
||||
|
||||
if (( fp = ldaptool_open_file( path, mode )) == NULL ) {
|
||||
if ( reporterrs ) perror( path );
|
||||
return( LDAPTOOL_FILEURL_FILEIOERROR );
|
||||
}
|
||||
|
||||
if ( fseek( fp, 0L, SEEK_END ) != 0 ) {
|
||||
if ( reporterrs ) perror( path );
|
||||
fclose( fp );
|
||||
return( LDAPTOOL_FILEURL_FILEIOERROR );
|
||||
}
|
||||
|
||||
bvp->bv_len = ftell( fp );
|
||||
|
||||
if (( bvp->bv_val = (char *)malloc( bvp->bv_len + 1 )) == NULL ) {
|
||||
if ( reporterrs ) perror( "malloc" );
|
||||
fclose( fp );
|
||||
return( LDAPTOOL_FILEURL_NOMEMORY );
|
||||
}
|
||||
|
||||
if ( fseek( fp, 0L, SEEK_SET ) != 0 ) {
|
||||
if ( reporterrs ) perror( path );
|
||||
fclose( fp );
|
||||
return( LDAPTOOL_FILEURL_FILEIOERROR );
|
||||
}
|
||||
|
||||
rlen = fread( bvp->bv_val, 1, bvp->bv_len, fp );
|
||||
eof = feof( fp );
|
||||
fclose( fp );
|
||||
|
||||
if ( rlen != (long)bvp->bv_len ) {
|
||||
if ( reporterrs ) perror( path );
|
||||
free( bvp->bv_val );
|
||||
return( LDAPTOOL_FILEURL_FILEIOERROR );
|
||||
}
|
||||
|
||||
bvp->bv_val[ bvp->bv_len ] = '\0';
|
||||
return( LDAPTOOL_FILEURL_SUCCESS );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return a non-zero value if the string s begins with prefix and zero if not.
|
||||
*/
|
||||
static int
|
||||
str_starts_with( const char *s, char *prefix )
|
||||
{
|
||||
size_t prefix_len;
|
||||
|
||||
if ( s == NULL || prefix == NULL ) {
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
prefix_len = strlen( prefix );
|
||||
if ( strlen( s ) < prefix_len ) {
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
return( strncmp( s, prefix, prefix_len ) == 0 );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Remove URL hex escapes from s... done in place. The basic concept for
|
||||
* this routine is borrowed from the WWW library HTUnEscape() routine.
|
||||
*
|
||||
* A similar function called nsldapi_hex_unescape can be found in
|
||||
* ../../libraries/libldap/unescape.c
|
||||
*/
|
||||
static void
|
||||
hex_unescape( char *s )
|
||||
{
|
||||
char *p;
|
||||
|
||||
for ( p = s; *s != '\0'; ++s ) {
|
||||
if ( *s == '%' ) {
|
||||
if ( *++s != '\0' ) {
|
||||
*p = unhex( *s ) << 4;
|
||||
}
|
||||
if ( *++s != '\0' ) {
|
||||
*p++ += unhex( *s );
|
||||
}
|
||||
} else {
|
||||
*p++ = *s;
|
||||
}
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return the integer equivalent of one hex digit (in c).
|
||||
*
|
||||
* A similar function can be found in ../../libraries/libldap/unescape.c
|
||||
*/
|
||||
static int
|
||||
unhex( char c )
|
||||
{
|
||||
return( c >= '0' && c <= '9' ? c - '0'
|
||||
: c >= 'A' && c <= 'F' ? c - 'A' + 10
|
||||
: c - 'a' + 10 );
|
||||
}
|
||||
|
||||
|
||||
#define HREF_CHAR_ACCEPTABLE( c ) (( c >= '-' && c <= '9' ) || \
|
||||
( c >= '@' && c <= 'Z' ) || \
|
||||
( c == '_' ) || \
|
||||
( c >= 'a' && c <= 'z' ))
|
||||
|
||||
/*
|
||||
* Like strcat(), except if any URL-special characters are found in s2
|
||||
* they are escaped using the %HH convention and backslash characters are
|
||||
* converted to forward slashes on Windows.
|
||||
*
|
||||
* Maximum space needed in s1 is 3 * strlen( s2 ) + 1.
|
||||
*
|
||||
* A similar function that does not convert the slashes called
|
||||
* strcat_escaped() can be found in ../../libraries/libldap/tmplout.c
|
||||
*/
|
||||
static void
|
||||
strcpy_escaped_and_convert( char *s1, char *s2 )
|
||||
{
|
||||
char *p, *q;
|
||||
char *hexdig = "0123456789ABCDEF";
|
||||
|
||||
p = s1 + strlen( s1 );
|
||||
for ( q = s2; *q != '\0'; ++q ) {
|
||||
#ifdef _WINDOWS
|
||||
if ( *q == '\\' ) {
|
||||
*p++ = '/';
|
||||
} else
|
||||
#endif /* _WINDOWS */
|
||||
|
||||
if ( HREF_CHAR_ACCEPTABLE( *q )) {
|
||||
*p++ = *q;
|
||||
} else {
|
||||
*p++ = '%';
|
||||
*p++ = hexdig[ 0x0F & ((*(unsigned char*)q) >> 4) ];
|
||||
*p++ = hexdig[ 0x0F & *q ];
|
||||
}
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
}
|
||||
84
mozilla/directory/c-sdk/ldap/clients/tools/fileurl.h
Normal file
84
mozilla/directory/c-sdk/ldap/clients/tools/fileurl.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/*
|
||||
* LDAP tools fileurl.h -- defines for file URL functions.
|
||||
* Used by ldapmodify.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ldaptool_fileurl2path() convert a file URL to a local path.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and *localpathp is
|
||||
* set point to an allocated string. If not, a different LDAPTOOL_FILEURL_
|
||||
* error code is returned.
|
||||
*/
|
||||
int ldaptool_fileurl2path( const char *fileurl, char **localpathp );
|
||||
|
||||
|
||||
/*
|
||||
* Convert a local path to a file URL.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and *urlp is
|
||||
* set point to an allocated string. If not, a different LDAPTOOL_FILEURL_
|
||||
* error code is returned. At present, the only possible error is
|
||||
* LDAPTOOL_FILEURL_NOMEMORY.
|
||||
*
|
||||
*/
|
||||
int ldaptool_path2fileurl( char *path, char **urlp );
|
||||
|
||||
|
||||
/*
|
||||
* Populate *bvp from "value" of length "vlen."
|
||||
*
|
||||
* If recognize_url_syntax is non-zero, :<fileurl is recognized.
|
||||
* If always_try_file is recognized and no file URL was found, an
|
||||
* attempt is made to stat and read the value as if it were the name
|
||||
* of a file.
|
||||
*
|
||||
* If reporterrs is non-zero, specific error messages are printed to
|
||||
* stderr.
|
||||
*
|
||||
* If successful, LDAPTOOL_FILEURL_SUCCESS is returned and bvp->bv_len
|
||||
* and bvp->bv_val are set (the latter is set to malloc'd memory).
|
||||
* Upon failure, a different LDAPTOOL_FILEURL_ error code is returned.
|
||||
*/
|
||||
int ldaptool_berval_from_ldif_value( const char *value, int vlen,
|
||||
struct berval *bvp, int recognize_url_syntax, int always_try_file,
|
||||
int reporterrs );
|
||||
|
||||
|
||||
/*
|
||||
* Map an LDAPTOOL_FILEURL_ error code to an LDAP error code (crude).
|
||||
*/
|
||||
int ldaptool_fileurlerr2ldaperr( int lderr );
|
||||
|
||||
|
||||
/*
|
||||
* Possible return codes for the functions declared in this file:
|
||||
*/
|
||||
#define LDAPTOOL_FILEURL_SUCCESS 0
|
||||
#define LDAPTOOL_FILEURL_NOTAFILEURL 1
|
||||
#define LDAPTOOL_FILEURL_MISSINGPATH 2
|
||||
#define LDAPTOOL_FILEURL_NONLOCAL 3
|
||||
#define LDAPTOOL_FILEURL_NOMEMORY 4
|
||||
#define LDAPTOOL_FILEURL_FILEIOERROR 5
|
||||
607
mozilla/directory/c-sdk/ldap/clients/tools/ldapcmp.c
Normal file
607
mozilla/directory/c-sdk/ldap/clients/tools/ldapcmp.c
Normal file
@@ -0,0 +1,607 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* tool to compare the contents of two LDAP directory subtrees */
|
||||
|
||||
#include <__version.h>
|
||||
|
||||
#include "ldaptool.h"
|
||||
|
||||
typedef struct attr {
|
||||
char *name;
|
||||
char **vals;
|
||||
struct attr *next;
|
||||
} ATTR; /* used for comparing two entries */
|
||||
|
||||
static void options_callback( int option, char *optarg );
|
||||
static int docompare( LDAP *ld1, LDAP *ld2, char *base );
|
||||
static int cmp2(LDAP *ld1, LDAP *ld2, LDAPMessage *e1, int findonly );
|
||||
static void notfound(char *base, int dbaseno);
|
||||
ATTR* get_attrs( LDAP *ld, LDAPMessage *e );
|
||||
char* cmp_attrs( ATTR *a1, ATTR *a2 );
|
||||
static void attr_free(ATTR *at);
|
||||
#if 0 /* these functions are not used */
|
||||
static void print_entry( LDAP *ld, LDAPMessage *entry, int attrsonly );
|
||||
static void print_dn( LDAP *ld, LDAPMessage *entry );
|
||||
static int write_ldif_value( char *type, char *value, unsigned long vallen );
|
||||
#endif /* 0 */
|
||||
|
||||
static void
|
||||
usage( void )
|
||||
{
|
||||
fprintf( stderr,
|
||||
"usage: %s -b basedn [options]\nwhere:\n",
|
||||
ldaptool_progname );
|
||||
fprintf( stderr, " basedn\tbase dn for search\n" );
|
||||
fprintf( stderr, "\t\t(if the environment variable LDAP_BASEDN is set,\n" );
|
||||
fprintf( stderr, "\t\tthen the -b flag is not required)\n" );
|
||||
fprintf( stderr, "options:\n" );
|
||||
fprintf( stderr, " -s scope\tone of base, one, or sub (default is sub)\n" );
|
||||
fprintf( stderr, " -l timelim\ttime limit (in seconds) for search (default is no limit)\n" );
|
||||
fprintf( stderr, " -z sizelim\tsize limit (in entries) for search (default is no limit)\n" );
|
||||
ldaptool_common_usage( 1 );
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
static char *base = NULL;
|
||||
static int allow_binary, vals2tmp, ldif, scope, deref, differ=0;
|
||||
static int attrsonly, timelimit, sizelimit;
|
||||
#if 0 /* these statics are referenced only by unused functions */
|
||||
static char *sep = LDAPTOOL_DEFSEP;
|
||||
static char **sortattr = NULL;
|
||||
static int *skipsortattr = NULL;
|
||||
static int includeufn;
|
||||
#endif /* 0 */
|
||||
|
||||
|
||||
int
|
||||
main( int argc, char **argv )
|
||||
{
|
||||
int rc, optind;
|
||||
LDAP *ld1, *ld2;
|
||||
|
||||
#ifdef notdef
|
||||
#ifdef HPUX11
|
||||
#ifndef __LP64__
|
||||
_main( argc, argv);
|
||||
#endif /* __LP64_ */
|
||||
#endif /* HPUX11 */
|
||||
#endif
|
||||
|
||||
deref = LDAP_DEREF_NEVER;
|
||||
allow_binary = vals2tmp = attrsonly = 0;
|
||||
ldif = 1;
|
||||
sizelimit = timelimit = 0;
|
||||
scope = LDAP_SCOPE_SUBTREE;
|
||||
|
||||
optind = ldaptool_process_args( argc, argv, "Bb:l:s:z:", 0,
|
||||
options_callback );
|
||||
|
||||
if ( optind == -1 ) {
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( base == NULL ) {
|
||||
if (( base = getenv( "LDAP_BASEDN" )) == NULL ) {
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
ld1 = ldaptool_ldap_init( 0 );
|
||||
|
||||
ldap_set_option( ld1, LDAP_OPT_DEREF, &deref );
|
||||
ldap_set_option( ld1, LDAP_OPT_TIMELIMIT, &timelimit );
|
||||
ldap_set_option( ld1, LDAP_OPT_SIZELIMIT, &sizelimit );
|
||||
|
||||
ldaptool_bind( ld1 );
|
||||
|
||||
ld2 = ldaptool_ldap_init( 1 );
|
||||
|
||||
ldap_set_option( ld2, LDAP_OPT_DEREF, &deref );
|
||||
ldap_set_option( ld2, LDAP_OPT_TIMELIMIT, &timelimit );
|
||||
ldap_set_option( ld2, LDAP_OPT_SIZELIMIT, &sizelimit );
|
||||
|
||||
ldaptool_bind( ld2 );
|
||||
if ( ldaptool_verbose ) {
|
||||
printf( "Connections to servers established. Beginning comparison.\n" );
|
||||
}
|
||||
|
||||
rc = docompare( ld1, ld2, base );
|
||||
|
||||
ldaptool_cleanup( ld1 );
|
||||
ldaptool_cleanup( ld2 );
|
||||
if ( ldaptool_verbose && !rc ) {
|
||||
if ( !differ ) {
|
||||
printf( "compare completed: no differences found\n" );
|
||||
} else {
|
||||
printf( "compare completed: ****differences were found****\n" );
|
||||
}
|
||||
}
|
||||
return( rc );
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
options_callback( int option, char *optarg )
|
||||
{
|
||||
switch( option ) {
|
||||
case 'B': /* allow binary values to be printed */
|
||||
++allow_binary;
|
||||
break;
|
||||
case 's': /* search scope */
|
||||
if ( strncasecmp( optarg, "base", 4 ) == 0 ) {
|
||||
scope = LDAP_SCOPE_BASE;
|
||||
} else if ( strncasecmp( optarg, "one", 3 ) == 0 ) {
|
||||
scope = LDAP_SCOPE_ONELEVEL;
|
||||
} else if ( strncasecmp( optarg, "sub", 3 ) == 0 ) {
|
||||
scope = LDAP_SCOPE_SUBTREE;
|
||||
} else {
|
||||
fprintf( stderr, "scope should be base, one, or sub\n" );
|
||||
usage();
|
||||
}
|
||||
break;
|
||||
case 'b': /* searchbase */
|
||||
base = strdup( optarg );
|
||||
break;
|
||||
case 'l': /* time limit */
|
||||
timelimit = atoi( optarg );
|
||||
break;
|
||||
case 'z': /* size limit */
|
||||
sizelimit = atoi( optarg );
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Returns an LDAP error code.
|
||||
*/
|
||||
static int
|
||||
docompare( LDAP *ld1, LDAP *ld2, char *base )
|
||||
{
|
||||
int rc, msgid;
|
||||
LDAPMessage *res, *e;
|
||||
LDAPControl *ctrls[2], **serverctrls;
|
||||
|
||||
if ( ldaptool_verbose ) {
|
||||
printf( "Base: %s\n\n", base );
|
||||
}
|
||||
if ( ldaptool_not ) {
|
||||
return( LDAP_SUCCESS );
|
||||
}
|
||||
|
||||
if (( ctrls[0] = ldaptool_create_manage_dsait_control()) != NULL ) {
|
||||
ctrls[1] = NULL;
|
||||
serverctrls = ctrls;
|
||||
} else {
|
||||
serverctrls = NULL;
|
||||
}
|
||||
|
||||
if ( ldap_search_ext( ld1, base, scope, "objectClass=*", NULL,
|
||||
0, serverctrls, NULL, NULL, -1, &msgid ) != LDAP_SUCCESS ) {
|
||||
return( ldaptool_print_lderror( ld1, "ldap_search",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
/* XXXmcs: this code should be modified to display referrals and references */
|
||||
while ( (rc = ldap_result( ld1, LDAP_RES_ANY, 0, NULL, &res )) ==
|
||||
LDAP_RES_SEARCH_ENTRY ) {
|
||||
e = ldap_first_entry( ld1, res );
|
||||
rc = cmp2( ld1, ld2, e , 0);
|
||||
ldap_msgfree( res );
|
||||
}
|
||||
if ( rc == -1 ) {
|
||||
return( ldaptool_print_lderror( ld1, "ldap_result",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
if (( rc = ldap_result2error( ld1, res, 0 )) != LDAP_SUCCESS ) {
|
||||
ldaptool_print_lderror( ld1, "ldap_search",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP );
|
||||
}
|
||||
ldap_msgfree( res );
|
||||
|
||||
if ( ldap_search_ext( ld2, base, scope, "objectClass=*", NULL,
|
||||
0, serverctrls, NULL, NULL, -1, &msgid ) == -1 ) {
|
||||
return( ldaptool_print_lderror( ld2, "ldap_search",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
/* XXXmcs: this code should be modified to display referrals and references */
|
||||
while ( (rc = ldap_result( ld2, LDAP_RES_ANY, 0, NULL, &res )) ==
|
||||
LDAP_RES_SEARCH_ENTRY ) {
|
||||
e = ldap_first_entry( ld2, res );
|
||||
rc = cmp2( ld2, ld1, e , 1);
|
||||
ldap_msgfree( res );
|
||||
}
|
||||
if ( rc == -1 ) {
|
||||
return( ldaptool_print_lderror( ld2, "ldap_result",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
if (( rc = ldap_result2error( ld1, res, 0 )) != LDAP_SUCCESS ) {
|
||||
ldaptool_print_lderror( ld1, "ldap_search",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP );
|
||||
}
|
||||
ldap_msgfree( res );
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Returns an LDAP error code.
|
||||
*/
|
||||
static int
|
||||
cmp2( LDAP *ld1, LDAP *ld2, LDAPMessage *e1, int findonly)
|
||||
{
|
||||
LDAPMessage *e2, *res;
|
||||
char *dn, *attrcmp;
|
||||
int found=0, rc;
|
||||
ATTR *a1, *a2;
|
||||
|
||||
dn = ldap_get_dn( ld1, e1 );
|
||||
|
||||
if ( ldaptool_verbose ) {
|
||||
if ( findonly ) {
|
||||
printf( "Checking that %s exists on both servers\n", dn );
|
||||
} else {
|
||||
printf("Comparing entry %s on both servers\n", dn );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ldap_search( ld2, dn, LDAP_SCOPE_BASE, "objectClass=*", NULL, 0 ) == -1 ) {
|
||||
return( ldaptool_print_lderror( ld2, "ldap_search",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
/* XXXmcs: this code should be modified to display referrals and references */
|
||||
while ( (rc = ldap_result( ld2, LDAP_RES_ANY, 0, NULL, &res )) ==
|
||||
LDAP_RES_SEARCH_ENTRY ) {
|
||||
e2 = ldap_first_entry( ld1, res );
|
||||
found = 1;
|
||||
if ( !findonly ) {
|
||||
a1 = get_attrs( ld1, e1 );
|
||||
a2 = get_attrs( ld2, e2 );
|
||||
attrcmp = cmp_attrs( a1, a2 );
|
||||
if ( strcmp( attrcmp, "") != 0 ) {
|
||||
printf("\n%s%s\n", dn, attrcmp);
|
||||
}
|
||||
}
|
||||
ldap_msgfree( res );
|
||||
}
|
||||
if ( !found ) {
|
||||
notfound( dn, findonly );
|
||||
differ = 1;
|
||||
}
|
||||
if ( rc == -1 ) {
|
||||
return( ldaptool_print_lderror( ld2, "ldap_result",
|
||||
LDAPTOOL_CHECK4SSL_IF_APPROP ));
|
||||
}
|
||||
ldap_msgfree( res );
|
||||
ldap_memfree( dn );
|
||||
return(rc);
|
||||
}
|
||||
|
||||
|
||||
ATTR*
|
||||
get_attrs( LDAP *ld, LDAPMessage *e )
|
||||
{
|
||||
char *a;
|
||||
ATTR *head, *tail, *tmp;
|
||||
BerElement *ber;
|
||||
|
||||
head=tail=tmp=NULL;
|
||||
for ( a = ldap_first_attribute( ld, e, &ber ); a != NULL;
|
||||
a = ldap_next_attribute( ld, e, ber ) ) {
|
||||
tmp = (ATTR*)malloc(sizeof(ATTR));
|
||||
if(head == NULL)
|
||||
head = tail = tmp;
|
||||
else {
|
||||
tail->next = tmp;
|
||||
tail = tmp;
|
||||
}
|
||||
tmp->name = a;
|
||||
tmp->vals = ldap_get_values( ld, e, a );
|
||||
tmp->next = NULL;
|
||||
}
|
||||
if ( ber != NULL ) {
|
||||
ber_free( ber, 0 );
|
||||
}
|
||||
/* used for debugging
|
||||
tmp=head;
|
||||
while(tmp!= NULL) {
|
||||
printf("\n%s :", tmp->name);
|
||||
for(i=0; tmp->vals[i] != NULL; i++)
|
||||
printf("\n\t%d %s", i, tmp->vals[i]);
|
||||
tmp = tmp->next;
|
||||
}
|
||||
*/
|
||||
return(head);
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
cmp_attrs( ATTR *a1, ATTR *a2 )
|
||||
{
|
||||
static char result[5000];
|
||||
char res[1000], partial[1000], *name = "";
|
||||
ATTR *head1, *head2, *tmp, *prev, *start;
|
||||
int i, j, found;
|
||||
|
||||
head1 = a1;
|
||||
head2 = a2;
|
||||
tmp = a2;
|
||||
prev = NULL;
|
||||
strcpy(result, "");
|
||||
while(head1 != NULL) {
|
||||
name = head1->name;
|
||||
if(head2 == NULL) {
|
||||
while(head1 != NULL) {
|
||||
sprintf(partial, "\ndifferent: %s(*)", head1->name);
|
||||
strcat(result, partial);
|
||||
for(i=0; head1->vals[i] != NULL; i++) {
|
||||
sprintf(partial,"\n\t1: %s", head1->vals[i]);
|
||||
strcat(result, partial);
|
||||
}
|
||||
tmp = head1;
|
||||
head1 = head1->next;
|
||||
attr_free(tmp);
|
||||
}
|
||||
differ = 1;
|
||||
break;
|
||||
}
|
||||
name = head1->name;
|
||||
start = tmp;
|
||||
while(tmp != NULL) {
|
||||
if(!strcmp(name, tmp->name)) { /* attr found */
|
||||
strcpy(res, "");
|
||||
for(i=0; (head1->vals[i]) != NULL; i++) {
|
||||
found = 0;
|
||||
for(j=0; (tmp->vals[j]) != NULL; j++)
|
||||
if(!strcmp(head1->vals[i], tmp->vals[j])) {
|
||||
found = 1;
|
||||
tmp->vals[j][0] = 7;
|
||||
break;
|
||||
}
|
||||
if(!found) {
|
||||
sprintf(partial, "\n\t1: %s", head1->vals[i]);
|
||||
strcat(res, partial);
|
||||
}
|
||||
}
|
||||
for(j=0; tmp->vals[j] != NULL; j++)
|
||||
if(tmp->vals[j][0] != 7){
|
||||
sprintf(partial, "\n\t2: %s", tmp->vals[j]);
|
||||
strcat(res, partial);
|
||||
}
|
||||
|
||||
if(strcmp(res, "")) {
|
||||
sprintf(partial, "\ndifferent: %s%s", name, res);
|
||||
differ = 1;
|
||||
strcat(result, partial);
|
||||
}
|
||||
if(prev == NULL) { /* tmp = head2 */
|
||||
head2 = head2->next;
|
||||
attr_free(tmp);
|
||||
tmp = head2;
|
||||
}
|
||||
else {
|
||||
prev->next = tmp->next;
|
||||
attr_free(tmp);
|
||||
tmp = prev->next;
|
||||
if(tmp == NULL) {
|
||||
tmp = head2;
|
||||
prev = NULL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else { /* attr not found */
|
||||
if(prev == NULL)
|
||||
prev = head2;
|
||||
else
|
||||
prev = tmp;
|
||||
tmp = tmp->next;
|
||||
if(tmp == NULL) { /* end of list */
|
||||
tmp = head2;
|
||||
prev = NULL;
|
||||
}
|
||||
if(tmp == start) { /* attr !exist in 2 */
|
||||
sprintf(partial, "\ndifferent: %s(*)", name);
|
||||
differ = 1;
|
||||
strcat(result, partial);
|
||||
for(i=0; head1->vals[i] != NULL; i++) {
|
||||
sprintf(partial, "\n\t1: %s", head1->vals[i]);
|
||||
strcat(result, partial);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
start = head1;
|
||||
head1 = head1->next;
|
||||
attr_free(start);
|
||||
}
|
||||
while(head2 != NULL) {
|
||||
sprintf(partial, "\ndifferent: %s(*)", head2->name);
|
||||
differ = 1;
|
||||
strcat(result, partial);
|
||||
for(i=0; head2->vals[i] != NULL; i++) {
|
||||
sprintf(partial, "\n\t2: %s", head2->vals[i]);
|
||||
strcat(result, partial);
|
||||
}
|
||||
tmp = head2;
|
||||
head2 = head2->next;
|
||||
attr_free(tmp);
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
attr_free(ATTR *at)
|
||||
{
|
||||
ldap_memfree(at->name);
|
||||
ldap_value_free(at->vals);
|
||||
free(at);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
notfound(char *base, int dbaseno)
|
||||
{
|
||||
printf("%donly: %s\n", dbaseno+1, base);
|
||||
}
|
||||
|
||||
|
||||
#if 0 /* these function is not used */
|
||||
/* used for debugging */
|
||||
static void
|
||||
print_dn( LDAP *ld, LDAPMessage *entry )
|
||||
{
|
||||
char *dn, *ufn;
|
||||
|
||||
dn = ldap_get_dn( ld, entry );
|
||||
if ( ldif ) {
|
||||
write_ldif_value( "dn", dn, strlen( dn ));
|
||||
} else {
|
||||
printf( "%s\n", dn );
|
||||
}
|
||||
if ( includeufn ) {
|
||||
ufn = ldap_dn2ufn( dn );
|
||||
if ( ldif ) {
|
||||
write_ldif_value( "ufn", ufn, strlen( ufn ));
|
||||
} else {
|
||||
printf( "%s\n", ufn );
|
||||
}
|
||||
free( ufn );
|
||||
}
|
||||
ldap_memfree( dn );
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
print_entry( ld, entry, attrsonly )
|
||||
LDAP *ld;
|
||||
LDAPMessage *entry;
|
||||
int attrsonly;
|
||||
{
|
||||
char *a, *dn, *ufn, tmpfname[ 256 ];
|
||||
int i, notascii;
|
||||
BerElement *ber;
|
||||
struct berval **bvals;
|
||||
FILE *tmpfp;
|
||||
#if defined( XP_WIN32 )
|
||||
char mode[20] = "w+b";
|
||||
#else
|
||||
char mode[20] = "w";
|
||||
#endif
|
||||
|
||||
dn = ldap_get_dn( ld, entry );
|
||||
if ( ldif ) {
|
||||
write_ldif_value( "dn", dn, strlen( dn ));
|
||||
} else {
|
||||
printf( "%s\n", dn );
|
||||
}
|
||||
if ( includeufn ) {
|
||||
ufn = ldap_dn2ufn( dn );
|
||||
if ( ldif ) {
|
||||
write_ldif_value( "ufn", ufn, strlen( ufn ));
|
||||
} else {
|
||||
printf( "%s\n", ufn );
|
||||
}
|
||||
free( ufn );
|
||||
}
|
||||
ldap_memfree( dn );
|
||||
|
||||
for ( a = ldap_first_attribute( ld, entry, &ber ); a != NULL;
|
||||
a = ldap_next_attribute( ld, entry, ber ) ) {
|
||||
if ( ldap_charray_inlist(sortattr, a) && /* in the list*/
|
||||
skipsortattr[ldap_charray_position(sortattr, a)] ) {/* and skip it*/
|
||||
continue; /* so skip it! */
|
||||
}
|
||||
if ( attrsonly ) {
|
||||
if ( ldif ) {
|
||||
write_ldif_value( a, "", 0 );
|
||||
} else {
|
||||
printf( "%s\n", a );
|
||||
}
|
||||
} else if (( bvals = ldap_get_values_len( ld, entry, a )) != NULL ) {
|
||||
for ( i = 0; bvals[i] != NULL; i++ ) {
|
||||
if ( vals2tmp ) {
|
||||
sprintf( tmpfname, "%s/ldapcmp-%s-XXXXXX",
|
||||
ldaptool_get_tmp_dir(), a );
|
||||
tmpfp = NULL;
|
||||
|
||||
if ( LDAPTOOL_MKTEMP( tmpfname ) == NULL ) {
|
||||
perror( tmpfname );
|
||||
} else if (( tmpfp = fopen( tmpfname, mode)) == NULL ) {
|
||||
perror( tmpfname );
|
||||
} else if ( fwrite( bvals[ i ]->bv_val,
|
||||
bvals[ i ]->bv_len, 1, tmpfp ) == 0 ) {
|
||||
perror( tmpfname );
|
||||
} else if ( ldif ) {
|
||||
write_ldif_value( a, tmpfname, strlen( tmpfname ));
|
||||
} else {
|
||||
printf( "%s%s%s\n", a, sep, tmpfname );
|
||||
}
|
||||
|
||||
if ( tmpfp != NULL ) {
|
||||
fclose( tmpfp );
|
||||
}
|
||||
} else {
|
||||
notascii = 0;
|
||||
if ( !ldif && !allow_binary ) {
|
||||
notascii = !ldaptool_berval_is_ascii( bvals[ i ] );
|
||||
}
|
||||
|
||||
if ( ldif ) {
|
||||
write_ldif_value( a, bvals[ i ]->bv_val,
|
||||
bvals[ i ]->bv_len );
|
||||
} else {
|
||||
printf( "%s%s%s\n", a, sep,
|
||||
notascii ? "NOT ASCII" : bvals[ i ]->bv_val );
|
||||
}
|
||||
}
|
||||
}
|
||||
ber_bvecfree( bvals );
|
||||
}
|
||||
}
|
||||
if ( ber != NULL ) {
|
||||
ber_free( ber, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
write_ldif_value( char *type, char *value, unsigned long vallen )
|
||||
{
|
||||
char *ldif;
|
||||
|
||||
if (( ldif = ldif_type_and_value( type, value, (int)vallen )) == NULL ) {
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
fputs( ldif, stdout );
|
||||
free( ldif );
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
#endif /* 0 */
|
||||
221
mozilla/directory/c-sdk/ldap/clients/tools/ldapcompare.c
Normal file
221
mozilla/directory/c-sdk/ldap/clients/tools/ldapcompare.c
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* ldapdelete.c - simple program to delete an entry using LDAP */
|
||||
|
||||
#include <__version.h>
|
||||
|
||||
#include "ldaptool.h"
|
||||
#include "fileurl.h"
|
||||
|
||||
static int contoper = 0;
|
||||
static LDAP *ld;
|
||||
static int ldapcompare_quiet = 0;
|
||||
|
||||
static int docompare( LDAP *ld, const char *dn, const char *attrtype,
|
||||
const struct berval *bvalue, LDAPControl **serverctrls );
|
||||
static void options_callback( int option, char *optarg );
|
||||
static int typeval2berval( char *typeval, char **typep, struct berval *bvp );
|
||||
|
||||
|
||||
static void
|
||||
usage( int rc )
|
||||
{
|
||||
fprintf( stderr, "usage: %s [options] attributetype:value [dn...]\n",
|
||||
ldaptool_progname );
|
||||
fprintf( stderr, " %s [options] attributetype::base64value [dn...]\n",
|
||||
ldaptool_progname );
|
||||
fprintf( stderr, " %s [options] attributetype:<fileurl [dn...]\n",
|
||||
ldaptool_progname );
|
||||
fprintf( stderr, "options:\n" );
|
||||
ldaptool_common_usage( 0 );
|
||||
fprintf( stderr, " -c\t\tcontinuous mode (do not stop on errors)\n" );
|
||||
fprintf( stderr, " -f file\tread DNs to compare against from file\n" );
|
||||
fprintf( stderr, " -q\t\tbe quiet when comparing entries\n" );
|
||||
exit( rc );
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main( int argc, char **argv )
|
||||
{
|
||||
char buf[ 4096 ], *typeval = NULL, *type = NULL;
|
||||
struct berval bv;
|
||||
int rc, optind;
|
||||
LDAPControl *ldctrl;
|
||||
|
||||
#ifdef notdef
|
||||
#ifdef HPUX11
|
||||
#ifndef __LP64__
|
||||
_main( argc, argv);
|
||||
#endif /* __LP64_ */
|
||||
#endif /* HPUX11 */
|
||||
#endif
|
||||
|
||||
optind = ldaptool_process_args( argc, argv, "cq", 0, options_callback );
|
||||
|
||||
if ( optind == -1 ) {
|
||||
usage ( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
if ( ldaptool_fp == NULL && optind >= argc ) {
|
||||
ldaptool_fp = stdin;
|
||||
}
|
||||
|
||||
ld = ldaptool_ldap_init( 0 );
|
||||
|
||||
ldaptool_bind( ld );
|
||||
|
||||
if (( ldctrl = ldaptool_create_manage_dsait_control()) != NULL ) {
|
||||
ldaptool_add_control_to_array( ldctrl, ldaptool_request_ctrls);
|
||||
}
|
||||
|
||||
if ((ldctrl = ldaptool_create_proxyauth_control(ld)) !=NULL) {
|
||||
ldaptool_add_control_to_array( ldctrl, ldaptool_request_ctrls);
|
||||
}
|
||||
|
||||
if ( optind >= argc ) {
|
||||
usage( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
typeval = ldaptool_local2UTF8( argv[optind] );
|
||||
if (( rc = typeval2berval( typeval, &type, &bv )) != LDAP_SUCCESS ) {
|
||||
fprintf( stderr, "%s: unable to parse \"%s\"\n",
|
||||
ldaptool_progname, argv[optind] );
|
||||
usage( rc );
|
||||
free( typeval );
|
||||
}
|
||||
++optind;
|
||||
|
||||
rc = 0;
|
||||
if ( ldaptool_fp == NULL ) {
|
||||
for ( ; optind < argc &&
|
||||
( contoper || !LDAPTOOL_RESULT_IS_AN_ERROR( rc ) );
|
||||
++optind ) {
|
||||
char *conv;
|
||||
|
||||
conv = ldaptool_local2UTF8( argv[ optind ] );
|
||||
rc = docompare( ld, conv, type, &bv, ldaptool_request_ctrls );
|
||||
if ( conv != NULL ) {
|
||||
free( conv );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while (( contoper || !LDAPTOOL_RESULT_IS_AN_ERROR( rc )) &&
|
||||
fgets(buf, sizeof(buf), ldaptool_fp) != NULL) {
|
||||
buf[ strlen( buf ) - 1 ] = '\0'; /* remove trailing newline */
|
||||
if ( *buf != '\0' ) {
|
||||
rc = docompare( ld, buf, type, &bv, ldaptool_request_ctrls );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ldaptool_reset_control_array( ldaptool_request_ctrls );
|
||||
ldaptool_cleanup( ld );
|
||||
if ( typeval != NULL ) free( typeval );
|
||||
if ( bv.bv_val != NULL ) free( bv.bv_val );
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
static void
|
||||
options_callback( int option, char *optarg )
|
||||
{
|
||||
switch( option ) {
|
||||
case 'c': /* continuous operation mode */
|
||||
++contoper;
|
||||
break;
|
||||
case 'q': /* continuous operation mode */
|
||||
++ldapcompare_quiet;
|
||||
break;
|
||||
default:
|
||||
usage( LDAP_PARAM_ERROR );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
docompare( LDAP *ld, const char *dn, const char *attrtype,
|
||||
const struct berval *bvalue, LDAPControl **serverctrls )
|
||||
{
|
||||
int rc;
|
||||
|
||||
if ( !ldapcompare_quiet ) {
|
||||
char *valuestr, tmpbuf[256];
|
||||
|
||||
if ( ldaptool_berval_is_ascii( bvalue )) {
|
||||
valuestr = bvalue->bv_val;
|
||||
} else {
|
||||
#ifdef HAVE_SNPRINTF
|
||||
snprintf( tmpbuf, sizeof(tmpbuf), "NOT ASCII (%ld bytes)",
|
||||
bvalue->bv_len );
|
||||
#else
|
||||
sprintf( tmpbuf, "NOT ASCII (%ld bytes)",
|
||||
bvalue->bv_len );
|
||||
#endif
|
||||
valuestr = tmpbuf;
|
||||
}
|
||||
printf( "%scomparing type: \"%s\" value: \"%s\" in entry \"%s\"\n",
|
||||
ldaptool_not ? "!" : "", attrtype, valuestr, dn );
|
||||
}
|
||||
if ( ldaptool_not ) {
|
||||
rc = LDAP_COMPARE_TRUE;
|
||||
} else {
|
||||
rc = ldaptool_compare_ext_s( ld, dn, attrtype, bvalue,
|
||||
serverctrls, NULL, "ldap_compare" );
|
||||
if ( !ldapcompare_quiet ) {
|
||||
if ( rc == LDAP_COMPARE_TRUE ) {
|
||||
puts( "compare TRUE" );
|
||||
} else if ( rc == LDAP_COMPARE_FALSE ) {
|
||||
puts( "compare FALSE" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Parse an ldapcompare type:value or type::value argument.
|
||||
*
|
||||
* The *typep is set to point into the typeval string.
|
||||
* bvp->bv_val is created from malloc'd memory.
|
||||
*
|
||||
* This function returns an LDAP error code (LDAP_SUCCESS if all goes well).
|
||||
*/
|
||||
static int
|
||||
typeval2berval( char *typeval, char **typep, struct berval *bvp )
|
||||
{
|
||||
char *value;
|
||||
int vlen, rc;
|
||||
|
||||
if ( ldif_parse_line( typeval, typep, &value, &vlen ) != 0 ) {
|
||||
return( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
rc = ldaptool_berval_from_ldif_value( value, vlen, bvp,
|
||||
1 /* recognize file URLs */, 0 /* always try file */,
|
||||
1 /* report errors */ );
|
||||
|
||||
return( ldaptool_fileurlerr2ldaperr( rc ));
|
||||
}
|
||||
221
mozilla/directory/c-sdk/ldap/clients/tools/ldapdelete.c
Normal file
221
mozilla/directory/c-sdk/ldap/clients/tools/ldapdelete.c
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* ldapdelete.c - simple program to delete an entry using LDAP */
|
||||
|
||||
#include <__version.h>
|
||||
|
||||
#include "ldaptool.h"
|
||||
|
||||
static int contoper;
|
||||
|
||||
#ifdef later
|
||||
static int delbypasscmd, yestodelete;
|
||||
#endif
|
||||
|
||||
static LDAP *ld;
|
||||
|
||||
LDAPMessage *result, *e;
|
||||
char *my_filter = "(objectclass=*)";
|
||||
|
||||
static int dodelete( LDAP *ld, char *dn, LDAPControl **serverctrls );
|
||||
static void options_callback( int option, char *optarg );
|
||||
|
||||
static void
|
||||
usage( void )
|
||||
{
|
||||
fprintf( stderr, "usage: %s [options] [dn...]\n", ldaptool_progname );
|
||||
fprintf( stderr, "options:\n" );
|
||||
ldaptool_common_usage( 0 );
|
||||
#ifdef later
|
||||
fprintf( stderr, " -a\t\tBy-pass confirmation question when deleting a branch\n" );
|
||||
#endif
|
||||
fprintf( stderr, " -c\t\tcontinuous mode (do not stop on errors)\n" );
|
||||
fprintf( stderr, " -f file\tread DNs to delete from file (default: standard input)\n" );
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main( int argc, char **argv )
|
||||
{
|
||||
char buf[ 4096 ];
|
||||
int rc, deref, optind;
|
||||
LDAPControl *ldctrl;
|
||||
|
||||
#ifdef notdef
|
||||
#ifdef HPUX11
|
||||
#ifndef __LP64__
|
||||
_main( argc, argv);
|
||||
#endif /* __LP64_ */
|
||||
#endif /* HPUX11 */
|
||||
#endif
|
||||
|
||||
contoper = 0;
|
||||
|
||||
#ifdef later
|
||||
delbypasscmd = 0;
|
||||
#endif
|
||||
|
||||
optind = ldaptool_process_args( argc, argv, "c", 0, options_callback );
|
||||
|
||||
if ( optind == -1 ) {
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( ldaptool_fp == NULL && optind >= argc ) {
|
||||
ldaptool_fp = stdin;
|
||||
}
|
||||
|
||||
ld = ldaptool_ldap_init( 0 );
|
||||
|
||||
deref = LDAP_DEREF_NEVER; /* prudent, but probably unnecessary */
|
||||
ldap_set_option( ld, LDAP_OPT_DEREF, &deref );
|
||||
|
||||
ldaptool_bind( ld );
|
||||
|
||||
if (( ldctrl = ldaptool_create_manage_dsait_control()) != NULL ) {
|
||||
ldaptool_add_control_to_array( ldctrl, ldaptool_request_ctrls);
|
||||
}
|
||||
|
||||
if ((ldctrl = ldaptool_create_proxyauth_control(ld)) !=NULL) {
|
||||
ldaptool_add_control_to_array( ldctrl, ldaptool_request_ctrls);
|
||||
}
|
||||
|
||||
if ( ldaptool_fp == NULL ) {
|
||||
for ( ; optind < argc; ++optind ) {
|
||||
char *conv;
|
||||
|
||||
conv = ldaptool_local2UTF8( argv[ optind ] );
|
||||
rc = dodelete( ld, conv, ldaptool_request_ctrls );
|
||||
if( conv != NULL ) {
|
||||
free( conv );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
rc = 0;
|
||||
while ((rc == 0 || contoper) &&
|
||||
fgets(buf, sizeof(buf), ldaptool_fp) != NULL) {
|
||||
buf[ strlen( buf ) - 1 ] = '\0'; /* remove trailing newline */
|
||||
if ( *buf != '\0' ) {
|
||||
rc = dodelete( ld, buf, ldaptool_request_ctrls );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ldaptool_reset_control_array( ldaptool_request_ctrls );
|
||||
ldaptool_cleanup( ld );
|
||||
return( rc );
|
||||
}
|
||||
|
||||
static void
|
||||
options_callback( int option, char *optarg )
|
||||
{
|
||||
switch( option ) {
|
||||
case 'c': /* continuous operation mode */
|
||||
++contoper;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
dodelete( LDAP *ld, char *dn, LDAPControl **serverctrls )
|
||||
{
|
||||
int rc;
|
||||
|
||||
if ( ldaptool_verbose ) {
|
||||
printf( "%sdeleting entry %s\n", ldaptool_not ? "!" : "", dn );
|
||||
}
|
||||
if ( ldaptool_not ) {
|
||||
rc = LDAP_SUCCESS;
|
||||
} else if (( rc = ldaptool_delete_ext_s( ld, dn, serverctrls, NULL,
|
||||
"ldap_delete" )) == LDAP_SUCCESS && ldaptool_verbose ) {
|
||||
printf( "entry removed\n" );
|
||||
}
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
#ifdef later
|
||||
|
||||
/* This code broke iDS.....it will have to be revisited */
|
||||
static int
|
||||
dodelete( LDAP *ld, char *dn, LDAPControl **serverctrls )
|
||||
{
|
||||
int rc;
|
||||
Head HeadNode;
|
||||
Element *datalist;
|
||||
char ch;
|
||||
|
||||
if ( ldaptool_verbose ) {
|
||||
printf( "%sdeleting entry %s\n", ldaptool_not ? "!" : "", dn );
|
||||
}
|
||||
if ( ldaptool_not ) {
|
||||
rc = LDAP_SUCCESS;
|
||||
}
|
||||
else { /* else 1 */
|
||||
L_Init(&HeadNode);
|
||||
|
||||
if ( (rc = ldap_search_s( ld, dn, LDAP_SCOPE_SUBTREE, my_filter, NULL, 0, &result )) != LDAP_SUCCESS ) {
|
||||
ldaptool_print_lderror( ld, "ldap_search", LDAPTOOL_CHECK4SSL_IF_APPROP );
|
||||
}
|
||||
else { /* else 2 */
|
||||
for ( e = ldap_first_entry( ld, result ); e != NULL; e = ldap_next_entry( ld, e ) ) {
|
||||
if ( ( dn = ldap_get_dn( ld, e ) ) != NULL ) {
|
||||
datalist = (Element *)malloc(sizeof(Element));
|
||||
datalist->data = dn;
|
||||
L_Insert(datalist, &HeadNode);
|
||||
}
|
||||
}
|
||||
if ( ((Head *)&HeadNode)->count > 1 ) {
|
||||
yestodelete = 0;
|
||||
if ( delbypasscmd == 0 ) {
|
||||
printf( "Are you sure you want to delete the entire branch rooted at %s? [no]\n", (char *)((Element *)(((Head *)&HeadNode)->first))->data);
|
||||
ch = getchar();
|
||||
if ( (ch == 'Y') || (ch == 'y')) {
|
||||
yestodelete = 1;
|
||||
}
|
||||
} else {
|
||||
yestodelete = 1;
|
||||
}
|
||||
} else {
|
||||
yestodelete = 1;
|
||||
}
|
||||
if ( yestodelete == 1 ) {
|
||||
for ( datalist = ((Head *)&HeadNode)->last; datalist; datalist = datalist->left ) {
|
||||
if (datalist) {
|
||||
if ((rc = ldaptool_delete_ext_s( ld, (char *)datalist->data, serverctrls, NULL, "ldap_delete" )) == LDAP_SUCCESS && ldaptool_verbose ) {
|
||||
printf( "%s entry removed\n", (char *)datalist->data );
|
||||
}
|
||||
L_Remove(datalist, (Head *)&HeadNode);
|
||||
ldap_memfree(datalist->data);
|
||||
free ( datalist );
|
||||
}
|
||||
}
|
||||
} /* end if (yestodelete) */
|
||||
} /* else 2 */
|
||||
} /* else 1 */
|
||||
return (rc);
|
||||
} /* function end bracket */
|
||||
#endif
|
||||
1033
mozilla/directory/c-sdk/ldap/clients/tools/ldapmodify.c
Normal file
1033
mozilla/directory/c-sdk/ldap/clients/tools/ldapmodify.c
Normal file
File diff suppressed because it is too large
Load Diff
170
mozilla/directory/c-sdk/ldap/clients/tools/ldapmodrdn.c
Normal file
170
mozilla/directory/c-sdk/ldap/clients/tools/ldapmodrdn.c
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released
|
||||
* March 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* ldapmodrdn.c - generic program to modify an entry's RDN using LDAP */
|
||||
|
||||
#include "ldaptool.h"
|
||||
|
||||
static int domodrdn( LDAP *ld, char *dn, char *rdn, int remove,
|
||||
LDAPControl **serverctrls);
|
||||
static void options_callback( int option, char *optarg );
|
||||
|
||||
static int contoper, remove_oldrdn;
|
||||
static LDAP *ld;
|
||||
|
||||
|
||||
static void
|
||||
usage( void )
|
||||
{
|
||||
fprintf( stderr, "usage: %s [options] [dn rdn]\n", ldaptool_progname );
|
||||
fprintf( stderr, "options:\n" );
|
||||
ldaptool_common_usage( 0 );
|
||||
fprintf( stderr, " -c\t\tcontinuous mode (do not stop on errors)\n" );
|
||||
fprintf( stderr, " -r\t\tremove old RDN\n" );
|
||||
fprintf( stderr, " -f file\tread changes from file\n" );
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
char *entrydn, *rdn, buf[ 4096 ];
|
||||
int rc, havedn, deref, optind;
|
||||
LDAPControl *ctrls[2], **serverctrls;
|
||||
|
||||
contoper = remove_oldrdn = 0;
|
||||
|
||||
optind = ldaptool_process_args( argc, argv, "cr", 0, options_callback );
|
||||
|
||||
if ( optind == -1 ) {
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( ldaptool_fp == NULL ) {
|
||||
ldaptool_fp = stdin;
|
||||
}
|
||||
|
||||
havedn = 0;
|
||||
if (argc - optind == 2) {
|
||||
if (( rdn = strdup( argv[argc - 1] )) == NULL ) {
|
||||
perror( "strdup" );
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
if (( entrydn = strdup( argv[argc - 2] )) == NULL ) {
|
||||
perror( "strdup" );
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
++havedn;
|
||||
} else if ( argc - optind != 0 ) {
|
||||
fprintf( stderr, "%s: invalid number of arguments, only two allowed\n",
|
||||
ldaptool_progname );
|
||||
usage();
|
||||
}
|
||||
|
||||
ld = ldaptool_ldap_init( 0 );
|
||||
|
||||
if ( !ldaptool_not ) {
|
||||
deref = LDAP_DEREF_NEVER; /* this seems prudent */
|
||||
ldap_set_option( ld, LDAP_OPT_DEREF, &deref );
|
||||
}
|
||||
|
||||
ldaptool_bind( ld );
|
||||
|
||||
if (( ctrls[0] = ldaptool_create_manage_dsait_control()) != NULL ) {
|
||||
ctrls[1] = NULL;
|
||||
serverctrls = ctrls;
|
||||
} else {
|
||||
serverctrls = NULL;
|
||||
}
|
||||
|
||||
rc = 0;
|
||||
if (havedn) {
|
||||
rc = domodrdn(ld, entrydn, rdn, remove_oldrdn, serverctrls);
|
||||
} else while ((rc == 0 || contoper) &&
|
||||
fgets(buf, sizeof(buf), ldaptool_fp) != NULL) {
|
||||
if ( *buf != '\0' && *buf != '\n' ) { /* skip blank lines */
|
||||
buf[ strlen( buf ) - 1 ] = '\0'; /* remove nl */
|
||||
|
||||
if ( havedn ) { /* have DN, get RDN */
|
||||
if (( rdn = strdup( buf )) == NULL ) {
|
||||
perror( "strdup" );
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
rc = domodrdn(ld, entrydn, rdn, remove_oldrdn, serverctrls);
|
||||
havedn = 0;
|
||||
} else if ( !havedn ) { /* don't have DN yet */
|
||||
if (( entrydn = strdup( buf )) == NULL ) {
|
||||
perror( "strdup" );
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
++havedn;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ldaptool_cleanup( ld );
|
||||
exit( rc );
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
options_callback( int option, char *optarg )
|
||||
{
|
||||
switch( option ) {
|
||||
case 'c': /* continuous operation mode */
|
||||
++contoper;
|
||||
break;
|
||||
case 'r': /* remove old RDN */
|
||||
++remove_oldrdn;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
domodrdn( LDAP *ld, char *dn, char *rdn, int remove_oldrdn,
|
||||
LDAPControl **serverctrls )
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( ldaptool_verbose ) {
|
||||
printf( "modrdn %s:\n\t%s\n", dn, rdn );
|
||||
if (remove_oldrdn)
|
||||
printf("removing old RDN\n");
|
||||
else
|
||||
printf("keeping old RDN\n");
|
||||
}
|
||||
|
||||
if ( !ldaptool_not ) {
|
||||
if (( i = ldaptool_rename_s( ld, dn, rdn, NULL, remove_oldrdn,
|
||||
serverctrls, NULL, "ldap_rename" )) == LDAP_SUCCESS
|
||||
&& ldaptool_verbose ) {
|
||||
printf( "modrdn complete\n" );
|
||||
}
|
||||
} else {
|
||||
i = LDAP_SUCCESS;
|
||||
}
|
||||
|
||||
return( i );
|
||||
}
|
||||
256
mozilla/directory/c-sdk/ldap/clients/tools/ldappasswd.c
Normal file
256
mozilla/directory/c-sdk/ldap/clients/tools/ldappasswd.c
Normal file
@@ -0,0 +1,256 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Sun LDAP C SDK.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems, Inc.
|
||||
*
|
||||
* Portions created by Sun Microsystems, Inc are Copyright (C) 2005
|
||||
* Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s): abobrov
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/*
|
||||
* ldappasswd.c - generic program to change LDAP users password
|
||||
* by using password modify extended operation.
|
||||
*/
|
||||
|
||||
#include <__version.h>
|
||||
|
||||
#include "ldaptool.h"
|
||||
#include "fileurl.h"
|
||||
|
||||
static int prompt_old_password = 0;
|
||||
static int prompt_new_password = 0;
|
||||
static int is_file_old = 0;
|
||||
static int is_file_new = 0;
|
||||
static FILE *old_password_fp = NULL;
|
||||
static FILE *new_password_fp = NULL;
|
||||
static char *old_password_string = "Old Password: ";
|
||||
static char *new_password_string = "New Password: ";
|
||||
static char *re_new_password_string = "Re-enter new Password: ";
|
||||
static struct berval genpasswd = { 0, NULL };
|
||||
static struct berval oldpasswd = { 0, NULL };
|
||||
static struct berval newpasswd = { 0, NULL };
|
||||
static struct berval userid = { 0, NULL };
|
||||
|
||||
static void usage( void );
|
||||
static void options_callback( int option, char *optarg );
|
||||
|
||||
static void
|
||||
usage( void )
|
||||
{
|
||||
fprintf( stderr, "usage: %s [options] [user]\n", ldaptool_progname );
|
||||
fprintf( stderr, "where:\n" );
|
||||
fprintf( stderr, " user\tauthentication id\n" );
|
||||
fprintf( stderr, " \te.g, uid=bjensen,dc=example,dc=com\n" );
|
||||
fprintf( stderr, "options:\n" );
|
||||
ldaptool_common_usage( 0 );
|
||||
fprintf( stderr, " -a passwd\told password\n" );
|
||||
fprintf( stderr, " -A\t\tprompt for old password\n" );
|
||||
fprintf( stderr, " -t file\tread old password from 'file'\n" );
|
||||
fprintf( stderr, " -s passwd\tnew password\n" );
|
||||
fprintf( stderr, " -S\t\tprompt for new password\n" );
|
||||
fprintf( stderr, " -T file\tread new password from 'file'\n" );
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
|
||||
int
|
||||
main( int argc, char **argv )
|
||||
{
|
||||
int optind;
|
||||
int rc = LDAP_SUCCESS; /* being superoptimistic for -n */
|
||||
LDAP *ld;
|
||||
|
||||
#ifdef notdef
|
||||
#ifdef HPUX11
|
||||
#ifndef __LP64__
|
||||
_main( argc, argv);
|
||||
#endif /* __LP64_ */
|
||||
#endif /* HPUX11 */
|
||||
#endif
|
||||
|
||||
optind = ldaptool_process_args( argc, argv, "ASa:t:s:T:", 0, options_callback );
|
||||
|
||||
if ( (optind == -1) || (argc <= 1) ) {
|
||||
usage();
|
||||
}
|
||||
if ( (argc - optind) >= 1 ) {
|
||||
if ( argv[ optind ] ) {
|
||||
if ( (userid.bv_val = ldaptool_local2UTF8(argv[ optind ]) ) == NULL ) {
|
||||
fprintf( stderr, "%s: not enough memory\n", ldaptool_progname );
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
userid.bv_len = strlen( userid.bv_val );
|
||||
++optind;
|
||||
}
|
||||
}
|
||||
|
||||
ld = ldaptool_ldap_init( 0 );
|
||||
ldaptool_bind( ld );
|
||||
|
||||
if ( ldaptool_nobind && (userid.bv_val == NULL) && (userid.bv_len == 0) ) {
|
||||
usage();
|
||||
}
|
||||
|
||||
if ( !ldaptool_not ) {
|
||||
rc = ldap_passwd_s( ld, userid.bv_val ? &userid : NULL,
|
||||
oldpasswd.bv_val ? &oldpasswd : NULL,
|
||||
newpasswd.bv_val ? &newpasswd : NULL,
|
||||
&genpasswd, NULL, NULL );
|
||||
if ( rc != LDAP_SUCCESS ) {
|
||||
fprintf( stderr, "ldap_passwd_s: %s\n",
|
||||
ldap_err2string( rc ) );
|
||||
} else {
|
||||
fprintf( stderr, "%s: password successfully changed\n",
|
||||
ldaptool_progname );
|
||||
}
|
||||
|
||||
if ( (genpasswd.bv_val != NULL) && (genpasswd.bv_len != 0) ) {
|
||||
fprintf( stderr, "New password: %s\n", genpasswd.bv_val );
|
||||
}
|
||||
}
|
||||
|
||||
ldaptool_cleanup( ld );
|
||||
|
||||
return( rc );
|
||||
}
|
||||
|
||||
static void
|
||||
options_callback( int option, char *optarg )
|
||||
{
|
||||
char *old_passwd = NULL;
|
||||
char *new_passwd = NULL;
|
||||
char *re_newpasswd = NULL;
|
||||
|
||||
switch( option ) {
|
||||
case 'a': /* old password */
|
||||
old_passwd = strdup( optarg );
|
||||
if (NULL == old_passwd)
|
||||
{
|
||||
perror("malloc");
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
break;
|
||||
case 'A': /* prompt old password */
|
||||
prompt_old_password = 1;
|
||||
break;
|
||||
case 't': /* old password from file */
|
||||
if ((old_password_fp = fopen( optarg, "r" )) == NULL ) {
|
||||
fprintf(stderr, "%s: Unable to open '%s' file\n",
|
||||
ldaptool_progname, optarg);
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
is_file_old = 1;
|
||||
break;
|
||||
case 's': /* new password */
|
||||
new_passwd = strdup( optarg );
|
||||
if (NULL == new_passwd)
|
||||
{
|
||||
perror("malloc");
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
break;
|
||||
case 'S': /* prompt new password */
|
||||
prompt_new_password = 1;
|
||||
break;
|
||||
case 'T': /* new password from file */
|
||||
if ((new_password_fp = fopen( optarg, "r" )) == NULL ) {
|
||||
fprintf(stderr, "%s: Unable to open '%s' file\n",
|
||||
ldaptool_progname, optarg);
|
||||
exit( LDAP_PARAM_ERROR );
|
||||
}
|
||||
is_file_new = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
}
|
||||
|
||||
if ( (oldpasswd.bv_val == NULL) && (oldpasswd.bv_len == 0)
|
||||
&& (prompt_old_password) ) {
|
||||
old_passwd = ldaptool_prompt_password( old_password_string );
|
||||
} else if ( (oldpasswd.bv_val == NULL) && (oldpasswd.bv_len == 0)
|
||||
&& (is_file_old) ) {
|
||||
old_passwd = ldaptool_read_password( old_password_fp );
|
||||
}
|
||||
|
||||
if ( old_passwd ) {
|
||||
if ( !ldaptool_noconv_passwd ) {
|
||||
oldpasswd.bv_val = ldaptool_local2UTF8( old_passwd );
|
||||
} else {
|
||||
oldpasswd.bv_val = strdup( old_passwd );
|
||||
}
|
||||
if (NULL == oldpasswd.bv_val)
|
||||
{
|
||||
perror("malloc");
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
oldpasswd.bv_len = strlen( oldpasswd.bv_val );
|
||||
}
|
||||
|
||||
if ( (newpasswd.bv_val == NULL) && (newpasswd.bv_len == 0)
|
||||
&& (prompt_new_password) ) {
|
||||
try_again:
|
||||
new_passwd = ldaptool_prompt_password( new_password_string );
|
||||
re_newpasswd = ldaptool_prompt_password( re_new_password_string );
|
||||
if ( (NULL == new_passwd) || (NULL == re_newpasswd) )
|
||||
{
|
||||
perror("malloc");
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
if ( (strncmp( new_passwd, re_newpasswd,
|
||||
strlen( new_passwd ) ) ) ) {
|
||||
fprintf( stderr,
|
||||
"%s: They don't match.\n\nPlease try again\n",
|
||||
ldaptool_progname );
|
||||
free( re_newpasswd );
|
||||
free( new_passwd );
|
||||
re_newpasswd = NULL;
|
||||
new_passwd = NULL;
|
||||
goto try_again;
|
||||
}
|
||||
} else if ( (newpasswd.bv_val == NULL) && (newpasswd.bv_len == 0)
|
||||
&& (is_file_new) ) {
|
||||
new_passwd = ldaptool_read_password( new_password_fp );
|
||||
}
|
||||
|
||||
if ( new_passwd ) {
|
||||
if ( !ldaptool_noconv_passwd ) {
|
||||
newpasswd.bv_val = ldaptool_local2UTF8( new_passwd );
|
||||
} else {
|
||||
newpasswd.bv_val = strdup( new_passwd );
|
||||
}
|
||||
if (NULL == newpasswd.bv_val) {
|
||||
perror("malloc");
|
||||
exit( LDAP_NO_MEMORY );
|
||||
}
|
||||
newpasswd.bv_len = strlen( newpasswd.bv_val );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1267
mozilla/directory/c-sdk/ldap/clients/tools/ldapsearch.c
Normal file
1267
mozilla/directory/c-sdk/ldap/clients/tools/ldapsearch.c
Normal file
File diff suppressed because it is too large
Load Diff
219
mozilla/directory/c-sdk/ldap/clients/tools/ldaptool-sasl.c
Executable file
219
mozilla/directory/c-sdk/ldap/clients/tools/ldaptool-sasl.c
Executable file
@@ -0,0 +1,219 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Sun LDAP C SDK.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems, Inc.
|
||||
*
|
||||
* Portions created by Sun Microsystems, Inc are Copyright (C) 2005
|
||||
* Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/*
|
||||
* File for ldaptool routines for SASL
|
||||
*/
|
||||
|
||||
#include <ldap.h>
|
||||
#include "ldaptool.h"
|
||||
#include "ldaptool-sasl.h"
|
||||
#include <sasl.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef HAVE_SASL_OPTIONS
|
||||
|
||||
#define SASL_PROMPT "SASL"
|
||||
|
||||
typedef struct {
|
||||
char *mech;
|
||||
char *authid;
|
||||
char *username;
|
||||
char *passwd;
|
||||
char *realm;
|
||||
} ldaptoolSASLdefaults;
|
||||
|
||||
static int get_default(ldaptoolSASLdefaults *defaults, sasl_interact_t *interact);
|
||||
static int get_new_value(sasl_interact_t *interact, unsigned flags);
|
||||
|
||||
void *
|
||||
ldaptool_set_sasl_defaults ( LDAP *ld, char *mech, char *authid, char *username,
|
||||
char *passwd, char *realm )
|
||||
{
|
||||
ldaptoolSASLdefaults *defaults;
|
||||
|
||||
if ((defaults = calloc(sizeof(defaults[0]), 1)) == NULL)
|
||||
return NULL;
|
||||
|
||||
if (mech)
|
||||
defaults->mech = mech;
|
||||
else
|
||||
ldap_get_option(ld, LDAP_OPT_X_SASL_MECH, &defaults->mech);
|
||||
|
||||
if (authid)
|
||||
defaults->authid = authid;
|
||||
else
|
||||
ldap_get_option(ld, LDAP_OPT_X_SASL_AUTHCID, &defaults->authid);
|
||||
|
||||
if (username)
|
||||
defaults->username = username;
|
||||
else
|
||||
ldap_get_option(ld, LDAP_OPT_X_SASL_AUTHZID, &defaults->username);
|
||||
|
||||
defaults->passwd = passwd;
|
||||
|
||||
if (realm)
|
||||
defaults->realm = realm;
|
||||
else
|
||||
ldap_get_option(ld, LDAP_OPT_X_SASL_REALM, &defaults->realm);
|
||||
|
||||
return defaults;
|
||||
}
|
||||
|
||||
int
|
||||
ldaptool_sasl_interact( LDAP *ld, unsigned flags, void *defaults, void *prompts ) {
|
||||
sasl_interact_t *interact;
|
||||
ldaptoolSASLdefaults *sasldefaults = defaults;
|
||||
int rc;
|
||||
|
||||
if (prompts == NULL || flags != LDAP_SASL_INTERACTIVE)
|
||||
return (LDAP_PARAM_ERROR);
|
||||
|
||||
for (interact = prompts; interact->id != SASL_CB_LIST_END; interact++) {
|
||||
/* Obtain the default value */
|
||||
if ((rc = get_default(sasldefaults, interact)) != LDAP_SUCCESS)
|
||||
return (rc);
|
||||
|
||||
/* If no default, get the new value from stdin */
|
||||
if (interact->result == NULL) {
|
||||
if ((rc = get_new_value(interact, flags)) != LDAP_SUCCESS)
|
||||
return (rc);
|
||||
}
|
||||
|
||||
}
|
||||
return (LDAP_SUCCESS);
|
||||
}
|
||||
|
||||
static int
|
||||
get_default(ldaptoolSASLdefaults *defaults, sasl_interact_t *interact) {
|
||||
const char *defvalue = interact->defresult;
|
||||
|
||||
if (defaults != NULL) {
|
||||
switch( interact->id ) {
|
||||
case SASL_CB_AUTHNAME:
|
||||
defvalue = defaults->authid;
|
||||
break;
|
||||
case SASL_CB_USER:
|
||||
defvalue = defaults->username;
|
||||
break;
|
||||
case SASL_CB_PASS:
|
||||
defvalue = defaults->passwd;
|
||||
break;
|
||||
case SASL_CB_GETREALM:
|
||||
defvalue = defaults->realm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (defvalue != NULL) {
|
||||
interact->result = (char *)malloc(strlen(defvalue)+1);
|
||||
strcpy((char *)interact->result,defvalue);
|
||||
|
||||
/* Clear passwd */
|
||||
if (interact->id == SASL_CB_PASS && defaults != NULL) {
|
||||
/* At this point defaults->passwd is not NULL */
|
||||
memset( defaults->passwd, '\0', strlen(defaults->passwd));
|
||||
defaults->passwd = NULL;
|
||||
}
|
||||
|
||||
if ((char *)interact->result == NULL)
|
||||
return (LDAP_NO_MEMORY);
|
||||
interact->len = strlen((char *)(interact->result));
|
||||
}
|
||||
return (LDAP_SUCCESS);
|
||||
}
|
||||
|
||||
static int
|
||||
get_new_value(sasl_interact_t *interact, unsigned flags) {
|
||||
char *newvalue, str[1024];
|
||||
int len;
|
||||
|
||||
if (interact->id == SASL_CB_ECHOPROMPT || interact->id == SASL_CB_NOECHOPROMPT) {
|
||||
if (interact->challenge)
|
||||
fprintf(stderr, "Challenge:%s\n", interact->challenge);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SNPRINTF
|
||||
snprintf(str, sizeof(str), "%s:", interact->prompt?interact->prompt:SASL_PROMPT);
|
||||
#else
|
||||
sprintf(str, "%s:", interact->prompt?interact->prompt:SASL_PROMPT);
|
||||
#endif
|
||||
|
||||
/* Get the new value */
|
||||
if (interact->id == SASL_CB_PASS || interact->id == SASL_CB_NOECHOPROMPT) {
|
||||
#if defined(_WIN32)
|
||||
char pbuf[257];
|
||||
fputs(str,stdout);
|
||||
fflush(stdout);
|
||||
if (fgets(pbuf,256,stdin) == NULL) {
|
||||
newvalue = NULL;
|
||||
} else {
|
||||
char *tmp;
|
||||
|
||||
tmp = strchr(pbuf,'\n');
|
||||
if (tmp) *tmp = '\0';
|
||||
tmp = strchr(pbuf,'\r');
|
||||
if (tmp) *tmp = '\0';
|
||||
newvalue = strdup(pbuf);
|
||||
}
|
||||
if ( newvalue == NULL) {
|
||||
#else
|
||||
#if defined(SOLARIS)
|
||||
if ((newvalue = (char *)getpassphrase(str)) == NULL) {
|
||||
#else
|
||||
if ((newvalue = (char *)getpass(str)) == NULL) {
|
||||
#endif
|
||||
#endif
|
||||
return (LDAP_UNAVAILABLE);
|
||||
}
|
||||
len = strlen(newvalue);
|
||||
} else {
|
||||
fputs(str, stderr);
|
||||
if ((newvalue = fgets(str, sizeof(str), stdin)) == NULL)
|
||||
return (LDAP_UNAVAILABLE);
|
||||
len = strlen(str);
|
||||
if (len > 0 && str[len - 1] == '\n')
|
||||
str[len - 1] = 0;
|
||||
}
|
||||
|
||||
interact->result = (char *) strdup(newvalue);
|
||||
memset(newvalue, '\0', len);
|
||||
if (interact->result == NULL)
|
||||
return (LDAP_NO_MEMORY);
|
||||
interact->len = len;
|
||||
return (LDAP_SUCCESS);
|
||||
}
|
||||
#endif /* HAVE_SASL_OPTIONS */
|
||||
46
mozilla/directory/c-sdk/ldap/clients/tools/ldaptool-sasl.h
Normal file
46
mozilla/directory/c-sdk/ldap/clients/tools/ldaptool-sasl.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Sun LDAP C SDK.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems, Inc.
|
||||
*
|
||||
* Portions created by Sun Microsystems, Inc are Copyright (C) 2005
|
||||
* Sun Microsystems, Inc. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _LDAPTOOL_SASL_H
|
||||
#define _LDAPTOOL_SASL_H
|
||||
|
||||
/*
|
||||
* Include file for ldaptool routines for SASL
|
||||
*/
|
||||
|
||||
void *ldaptool_set_sasl_defaults ( LDAP *ld, char *mech, char *authid, char *username, char *passwd, char *realm );
|
||||
int ldaptool_sasl_interact ( LDAP *ld, unsigned flags, void *defaults, void *p );
|
||||
#endif /* _LDAPTOOL_SASL_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user