This commit was manufactured by cvs2svn to create tag 'nss34_20020321'.
git-svn-id: svn://10.0.0.236/tags/nss34_20020321@117037 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
88a1e88a2a
commit
e203f00e18
@ -1 +0,0 @@
|
|||||||
CVSROOT/history
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
If you change the modules file, you *MUST* run:
|
|
||||||
check-modules.pl modules
|
|
||||||
|
|
||||||
*before* cvs committing the new modules file.
|
|
||||||
@ -1,257 +0,0 @@
|
|||||||
#!/usr/bin/env 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 this file as it was released upon February 25, 1999.
|
|
||||||
#
|
|
||||||
# The Initial Developer of the Original Code is Netscape Communications
|
|
||||||
# Corporation. Portions created by Netscape are
|
|
||||||
# Copyright (C) 1999 Netscape Communications Corporation. All
|
|
||||||
# Rights Reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s):
|
|
||||||
|
|
||||||
#
|
|
||||||
# check-modules.pl - Check cvs modules file for duplicates and syntax errors.
|
|
||||||
#
|
|
||||||
# TODO:
|
|
||||||
# - Parse output of 'cvs co -c' command in addition to the raw file.
|
|
||||||
#
|
|
||||||
# Send comments, improvements, bugs to Steve Lamm (slamm@netscape.com).
|
|
||||||
|
|
||||||
# $Id: check-modules.pl,v 1.1 2000-06-01 11:03:22 leaf%mozilla.org Exp $
|
|
||||||
|
|
||||||
require 5.004;
|
|
||||||
|
|
||||||
use Getopt::Std;
|
|
||||||
|
|
||||||
sub usage
|
|
||||||
{
|
|
||||||
my ($progname) = $0 =~ /([^\/]+)$/;
|
|
||||||
die "Usage: $progname [options] [<module_file>]
|
|
||||||
Reads from stdin if no file is given.
|
|
||||||
Options:
|
|
||||||
-v Verbose. Print the modules and what they include.
|
|
||||||
-h Print this usage message.
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
&usage if !getopts('hv');
|
|
||||||
&usage if defined($opt_h);
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
# begin main
|
|
||||||
|
|
||||||
|
|
||||||
# The subroutine &parse_input creates the globals @module_names,
|
|
||||||
# %module_tree, and %line_number (described below).
|
|
||||||
&parse_input;
|
|
||||||
|
|
||||||
foreach $module (@module_names)
|
|
||||||
{
|
|
||||||
&check_module($module);
|
|
||||||
}
|
|
||||||
|
|
||||||
# end main
|
|
||||||
######################################################################
|
|
||||||
# begin subroutines
|
|
||||||
|
|
||||||
sub parse_input
|
|
||||||
{
|
|
||||||
# Globals created:
|
|
||||||
# @module_names - List of module names in the order they are seen.
|
|
||||||
# %module_tree - Hash table of lists. Keys are module names.
|
|
||||||
# Values are lists of module names and diretories.
|
|
||||||
# %line_number - Hash indexed by module name and module item.
|
|
||||||
# Values are line numbers.
|
|
||||||
|
|
||||||
@module_names = ();
|
|
||||||
%module_tree = ();
|
|
||||||
%line_number = ();
|
|
||||||
|
|
||||||
while (<>)
|
|
||||||
{
|
|
||||||
next if /^\#/ || /^\s*$/;
|
|
||||||
|
|
||||||
# Check for a module definition
|
|
||||||
if (/^([_a-zA-Z0-9]+)\s+(?:-l\s+)?-a\s*(.*)$/)
|
|
||||||
{
|
|
||||||
my ($module_name) = $1;
|
|
||||||
my (@sub_items) = ();
|
|
||||||
my ($line) = $2;
|
|
||||||
|
|
||||||
push @module_names, $module_name;
|
|
||||||
|
|
||||||
# Read line continuations (i.e. lines with '\' on the end).
|
|
||||||
while ($line =~ /\\$/)
|
|
||||||
{
|
|
||||||
chomp $line;
|
|
||||||
$line =~ s/^\s*(.*?)\s*\\$/$1/;
|
|
||||||
if (length($line) > 0)
|
|
||||||
{
|
|
||||||
my (@line_items) = split(/\s+/, $line);
|
|
||||||
push @sub_items, @line_items;
|
|
||||||
&save_line_numbers($module_name, $., @line_items);
|
|
||||||
}
|
|
||||||
$line = <>;
|
|
||||||
}
|
|
||||||
chomp $line;
|
|
||||||
$line =~ s/^\s*(.*?)\s*$/$1/;
|
|
||||||
my (@line_items) = split(/\s+/, $line);
|
|
||||||
push @sub_items, @line_items;
|
|
||||||
&save_line_numbers($module_name, $., @line_items);
|
|
||||||
|
|
||||||
$module_tree{$module_name} = \@sub_items;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
die "Unexpected input: line $.: $_\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub check_module
|
|
||||||
{
|
|
||||||
my ($module) = $_[0];
|
|
||||||
my ($sub_module, $sub_dir, $prev_module);
|
|
||||||
|
|
||||||
# Globals created:
|
|
||||||
# %have_checked - List of modules already checked.
|
|
||||||
# %full_list - All the directories for a module.
|
|
||||||
# Indexed by module and sub directory.
|
|
||||||
# Values are the module that added the directory.
|
|
||||||
|
|
||||||
return if defined($have_checked{$module});
|
|
||||||
|
|
||||||
$full_list{$module} = {};
|
|
||||||
|
|
||||||
foreach $sub_module ( &get_modules($module) )
|
|
||||||
{
|
|
||||||
&check_module($sub_module);
|
|
||||||
|
|
||||||
# Add the directories of the sub_module to this module
|
|
||||||
while (($sub_dir, $prev_module) = each %{$full_list{$sub_module}})
|
|
||||||
{
|
|
||||||
$full_list{$module}{$sub_dir} = $prev_module;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach $sub_dir ( &get_directories($module) )
|
|
||||||
{
|
|
||||||
if (defined($full_list{$module}{$sub_dir}))
|
|
||||||
{
|
|
||||||
my ($previous_module) = $full_list{$module}{$sub_dir};
|
|
||||||
|
|
||||||
&warn_multiple($sub_dir, $module, $previous_module);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$full_list{$module}{$sub_dir} = $module;
|
|
||||||
|
|
||||||
# Check if parent or child of directory was previously added
|
|
||||||
#
|
|
||||||
&check_inclusion($sub_dir, $module);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (defined($opt_v))
|
|
||||||
{
|
|
||||||
print "$module\n";
|
|
||||||
while (($sub_dir, $prev_module) = each %{$full_list{$module}})
|
|
||||||
{
|
|
||||||
print " $sub_dir, $prev_module\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$have_checked{$module} = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_modules
|
|
||||||
{
|
|
||||||
my ($module) = $_[0];
|
|
||||||
my (@output) = ();
|
|
||||||
my ($sub_item);
|
|
||||||
|
|
||||||
foreach $sub_item ( @{ $module_tree{$module} } )
|
|
||||||
{
|
|
||||||
push @output, $sub_item if defined($module_tree{$sub_item});
|
|
||||||
}
|
|
||||||
return @output;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_directories
|
|
||||||
{
|
|
||||||
my ($module) = $_[0];
|
|
||||||
my (@output) = ();
|
|
||||||
my ($sub_item);
|
|
||||||
|
|
||||||
foreach $sub_item ( @{ $module_tree{$module} } )
|
|
||||||
{
|
|
||||||
push @output, $sub_item unless defined($module_tree{$sub_item});
|
|
||||||
}
|
|
||||||
return @output;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub save_line_numbers
|
|
||||||
{
|
|
||||||
my ($module, $line_num, @sub_items) = @_;
|
|
||||||
my ($sub_item);
|
|
||||||
|
|
||||||
foreach $sub_item (@sub_items)
|
|
||||||
{
|
|
||||||
if (defined($line_number{$module}{$sub_item}))
|
|
||||||
{
|
|
||||||
$line_number{$module}{$sub_item} =
|
|
||||||
"$line_number{$module}{$sub_item}, $line_num";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$line_number{$module}{$sub_item} = $line_num;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub warn_multiple
|
|
||||||
{
|
|
||||||
my ($sub_item, $module, $previous_module) = @_;
|
|
||||||
my ($line_txt) = '';
|
|
||||||
|
|
||||||
my (@lines) = split(', ', $line_number{$module}{$sub_item});
|
|
||||||
|
|
||||||
push(@lines, split(', ', $line_number{$previous_module}{$sub_item}))
|
|
||||||
unless $previous_module eq $module;
|
|
||||||
|
|
||||||
$line_txt = "lines ".join(', ', sort { $a <=> $b } @lines);
|
|
||||||
|
|
||||||
warn "Error: Multiple listing: $line_txt: $sub_item.\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub check_inclusion
|
|
||||||
{
|
|
||||||
my ($sub_dir, $module) = @_;
|
|
||||||
my ($dir);
|
|
||||||
|
|
||||||
foreach $dir (keys %{$full_list{$module}})
|
|
||||||
{
|
|
||||||
next if $dir eq $sub_dir;
|
|
||||||
if (length($dir) < length($sub_dir))
|
|
||||||
{
|
|
||||||
my ($temp) = $sub_dir;
|
|
||||||
$sub_dir = $dir;
|
|
||||||
$dir = $temp;
|
|
||||||
}
|
|
||||||
if ($dir =~ /^$sub_dir\//)
|
|
||||||
{
|
|
||||||
warn "Warning: $dir (line "
|
|
||||||
.$line_number{$full_list{$module}{$dir}}{$dir}
|
|
||||||
.") pulled by $sub_dir (line "
|
|
||||||
.$line_number{$full_list{$module}{$sub_dir}}{$sub_dir}
|
|
||||||
.")\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
# The "checkoutlist" file is used to support additional version controlled
|
|
||||||
# administrative files in $CVSROOT/CVSROOT, such as template files.
|
|
||||||
#
|
|
||||||
# The first entry on a line is a filename which will be checked out from
|
|
||||||
# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
|
|
||||||
# The remainder of the line is an error message to use if the file cannot
|
|
||||||
# be checked out.
|
|
||||||
#
|
|
||||||
# File format:
|
|
||||||
#
|
|
||||||
# [<whitespace>]<filename><whitespace><error message><end-of-line>
|
|
||||||
#
|
|
||||||
# comment lines begin with '#'
|
|
||||||
passwd
|
|
||||||
readers
|
|
||||||
commitcheck.pl
|
|
||||||
dolog.pl
|
|
||||||
FilesToNotExport
|
|
||||||
cvsmailfilter.pl
|
|
||||||
sendnotification.pl
|
|
||||||
@ -1,494 +0,0 @@
|
|||||||
#!/tools/ns/bin/perl5.004 --
|
|
||||||
# DO NOT EDIT THIS FILE! You must instead go to http://despot.mozilla.org/, and
|
|
||||||
# tweak things from there.
|
|
||||||
|
|
||||||
$mode{'95'} = 'Open';
|
|
||||||
$branch{'95'} = 'HEAD';
|
|
||||||
$fullname{'95'} = '2-D Graphics';
|
|
||||||
$mode{'52'} = 'Open';
|
|
||||||
$branch{'52'} = 'HEAD';
|
|
||||||
$fullname{'52'} = 'Aurora/RDF BE';
|
|
||||||
$mode{'53'} = 'Open';
|
|
||||||
$branch{'53'} = 'HEAD';
|
|
||||||
$fullname{'53'} = 'Berkeley DB';
|
|
||||||
$mode{'55'} = 'Open';
|
|
||||||
$branch{'55'} = 'HEAD';
|
|
||||||
$fullname{'55'} = 'Build Config';
|
|
||||||
$mode{'164'} = 'Restricted';
|
|
||||||
$branch{'164'} = 'HEAD';
|
|
||||||
$fullname{'164'} = 'chimera';
|
|
||||||
$blessed{'164'} = ['brendan%mozilla.org',];
|
|
||||||
$super{'164'} = ['sfraser%netscape.com','pinkerton%netscape.com','ben%netscape.com','hyatt%netscape.com',];
|
|
||||||
$mode{'146'} = 'Restricted';
|
|
||||||
$branch{'146'} = 'NSPRPUB_PRE_4_2_CLIENT_BRANCH';
|
|
||||||
$fullname{'146'} = 'Client NSPR';
|
|
||||||
$blessed{'146'} = ['sfraser%netscape.com','sdagley%netscape.com','gordon%netscape.com','beard%netscape.com',];
|
|
||||||
$super{'146'} = ['wtc%netscape.com','seawood%netscape.com','leaf%mozilla.org',];
|
|
||||||
$mode{'96'} = 'Open';
|
|
||||||
$branch{'96'} = 'HEAD';
|
|
||||||
$fullname{'96'} = 'Clipping and Compositing';
|
|
||||||
$mode{'56'} = 'Open';
|
|
||||||
$branch{'56'} = 'HEAD';
|
|
||||||
$fullname{'56'} = 'Composer';
|
|
||||||
$mode{'4'} = 'Open';
|
|
||||||
$branch{'4'} = 'HEAD';
|
|
||||||
$fullname{'4'} = 'default';
|
|
||||||
$defaultid = '4';
|
|
||||||
$mode{'3'} = 'Closed';
|
|
||||||
$branch{'3'} = 'HEAD';
|
|
||||||
$fullname{'3'} = 'despotaccess';
|
|
||||||
$blessed{'3'} = [];
|
|
||||||
$super{'3'} = ['despotdaemon%netscape.com',];
|
|
||||||
$mode{'59'} = 'Closed';
|
|
||||||
$branch{'59'} = 'HEAD';
|
|
||||||
$fullname{'59'} = 'Directory SDK';
|
|
||||||
$blessed{'59'} = [];
|
|
||||||
$super{'59'} = ['leif%ogre.com','dmose%netscape.com','mhein%sun.com','mcs%netscape.com',];
|
|
||||||
$mode{'103'} = 'Open';
|
|
||||||
$branch{'103'} = 'HEAD';
|
|
||||||
$fullname{'103'} = 'Document Object Model';
|
|
||||||
$mode{'46'} = 'Open';
|
|
||||||
$branch{'46'} = 'HEAD';
|
|
||||||
$fullname{'46'} = 'ef';
|
|
||||||
$mode{'101'} = 'Open';
|
|
||||||
$branch{'101'} = 'HEAD';
|
|
||||||
$fullname{'101'} = 'Embeddable Web Browser';
|
|
||||||
$mode{'49'} = 'Open';
|
|
||||||
$branch{'49'} = 'HEAD';
|
|
||||||
$fullname{'49'} = 'GTK';
|
|
||||||
$mode{'144'} = 'Open';
|
|
||||||
$branch{'144'} = 'HEAD';
|
|
||||||
$fullname{'144'} = 'GTK Embedding Widget';
|
|
||||||
$mode{'62'} = 'Open';
|
|
||||||
$branch{'62'} = 'HEAD';
|
|
||||||
$fullname{'62'} = 'HTML to Text/PostScript Translation';
|
|
||||||
$mode{'67'} = 'Open';
|
|
||||||
$branch{'67'} = 'HEAD';
|
|
||||||
$fullname{'67'} = 'I18N Library';
|
|
||||||
$mode{'64'} = 'Open';
|
|
||||||
$branch{'64'} = 'HEAD';
|
|
||||||
$fullname{'64'} = 'Image Handling: JPEG';
|
|
||||||
$mode{'155'} = 'Open';
|
|
||||||
$branch{'155'} = 'HEAD';
|
|
||||||
$fullname{'155'} = 'Image Handling: MNG';
|
|
||||||
$mode{'65'} = 'Open';
|
|
||||||
$branch{'65'} = 'HEAD';
|
|
||||||
$fullname{'65'} = 'Image Handling: PNG';
|
|
||||||
$mode{'63'} = 'Open';
|
|
||||||
$branch{'63'} = 'HEAD';
|
|
||||||
$fullname{'63'} = 'ImageLib';
|
|
||||||
$mode{'69'} = 'Open';
|
|
||||||
$branch{'69'} = 'HEAD';
|
|
||||||
$fullname{'69'} = 'Java and JS Capability-Based Security';
|
|
||||||
$mode{'130'} = 'Open';
|
|
||||||
$branch{'130'} = 'HEAD';
|
|
||||||
$fullname{'130'} = 'Java APIs for DOM';
|
|
||||||
$mode{'127'} = 'Open';
|
|
||||||
$branch{'127'} = 'HEAD';
|
|
||||||
$fullname{'127'} = 'Java APIs to WebShell';
|
|
||||||
$mode{'68'} = 'Open';
|
|
||||||
$branch{'68'} = 'HEAD';
|
|
||||||
$fullname{'68'} = 'Java Stubs';
|
|
||||||
$mode{'128'} = 'Open';
|
|
||||||
$branch{'128'} = 'HEAD';
|
|
||||||
$fullname{'128'} = 'Java to XPCOM Bridge';
|
|
||||||
$mode{'133'} = 'Open';
|
|
||||||
$branch{'133'} = 'HEAD';
|
|
||||||
$fullname{'133'} = 'Java Utility Classes';
|
|
||||||
$mode{'129'} = 'Open';
|
|
||||||
$branch{'129'} = 'HEAD';
|
|
||||||
$fullname{'129'} = 'Java-Implemented Plugins';
|
|
||||||
$mode{'70'} = 'Open';
|
|
||||||
$branch{'70'} = 'HEAD';
|
|
||||||
$fullname{'70'} = 'JavaScript';
|
|
||||||
$mode{'71'} = 'Open';
|
|
||||||
$branch{'71'} = 'HEAD';
|
|
||||||
$fullname{'71'} = 'JavaScript Debugger';
|
|
||||||
$mode{'114'} = 'Open';
|
|
||||||
$branch{'114'} = 'HEAD';
|
|
||||||
$fullname{'114'} = 'js-tests';
|
|
||||||
$mode{'72'} = 'Open';
|
|
||||||
$branch{'72'} = 'HEAD';
|
|
||||||
$fullname{'72'} = 'LiveConnect';
|
|
||||||
$mode{'136'} = 'Closed';
|
|
||||||
$branch{'136'} = 'HEAD';
|
|
||||||
$fullname{'136'} = 'Locked-Content';
|
|
||||||
$blessed{'136'} = [];
|
|
||||||
$super{'136'} = ['hyatt%netscape.com',];
|
|
||||||
$mode{'123'} = 'Open';
|
|
||||||
$branch{'123'} = 'HEAD';
|
|
||||||
$fullname{'123'} = 'Mail/News';
|
|
||||||
$mode{'165'} = 'Open';
|
|
||||||
$branch{'165'} = 'HEAD';
|
|
||||||
$fullname{'165'} = 'MathML';
|
|
||||||
$mode{'124'} = 'Open';
|
|
||||||
$branch{'124'} = 'HEAD';
|
|
||||||
$fullname{'124'} = 'MIME';
|
|
||||||
$mode{'157'} = 'Open';
|
|
||||||
$branch{'157'} = 'HEAD';
|
|
||||||
$fullname{'157'} = 'Movemail';
|
|
||||||
$mode{'112'} = 'Open';
|
|
||||||
$branch{'112'} = 'HEAD';
|
|
||||||
$fullname{'112'} = 'Mozilla Tools';
|
|
||||||
$mode{'19'} = 'Open';
|
|
||||||
$branch{'19'} = 'HEAD';
|
|
||||||
$fullname{'19'} = 'mozilla-toplevel';
|
|
||||||
$mode{'147'} = 'Open';
|
|
||||||
$branch{'147'} = 'HEAD';
|
|
||||||
$fullname{'147'} = 'Mstone';
|
|
||||||
$mode{'77'} = 'Open';
|
|
||||||
$branch{'77'} = 'HEAD';
|
|
||||||
$fullname{'77'} = 'NetLib';
|
|
||||||
$mode{'102'} = 'Open';
|
|
||||||
$branch{'102'} = 'HEAD';
|
|
||||||
$fullname{'102'} = 'New HTML Parser';
|
|
||||||
$mode{'100'} = 'Open';
|
|
||||||
$branch{'100'} = 'HEAD';
|
|
||||||
$fullname{'100'} = 'New HTML Style System';
|
|
||||||
$mode{'98'} = 'Open';
|
|
||||||
$branch{'98'} = 'HEAD';
|
|
||||||
$fullname{'98'} = 'New Layout Engine';
|
|
||||||
$mode{'122'} = 'Open';
|
|
||||||
$branch{'122'} = 'HEAD';
|
|
||||||
$fullname{'122'} = 'News';
|
|
||||||
$mode{'78'} = 'Restricted';
|
|
||||||
$branch{'78'} = 'HEAD';
|
|
||||||
$fullname{'78'} = 'NSPR';
|
|
||||||
$blessed{'78'} = ['sfraser%netscape.com','sdagley%netscape.com','gordon%netscape.com','beard%netscape.com',];
|
|
||||||
$super{'78'} = ['srinivas%netscape.com','seawood%netscape.com','wtc%netscape.com',];
|
|
||||||
$mode{'163'} = 'Restricted';
|
|
||||||
$branch{'163'} = 'NSS_3_3_BRANCH';
|
|
||||||
$fullname{'163'} = 'NSS Stable Release Branch';
|
|
||||||
$blessed{'163'} = [];
|
|
||||||
$super{'163'} = ['tfox%netscape.com','sonja.mirtitsch%sun.com','nicolson%netscape.com','nelsonb%netscape.com','kirk.erickson%sun.com','jpierre%netscape.com','javi%netscape.com','ian.mcgreer%sun.com','glen.beasley%sun.com','ddrinan%netscape.com','bishakhabanerjee%netscape.com','wtc%netscape.com','relyea%netscape.com',];
|
|
||||||
$mode{'159'} = 'Open';
|
|
||||||
$branch{'159'} = 'HEAD';
|
|
||||||
$fullname{'159'} = 'NSS Trunk';
|
|
||||||
$mode{'162'} = 'Open';
|
|
||||||
$branch{'162'} = 'HEAD';
|
|
||||||
$fullname{'162'} = 'P3P';
|
|
||||||
$mode{'111'} = 'Open';
|
|
||||||
$branch{'111'} = 'HEAD';
|
|
||||||
$fullname{'111'} = 'PerlConnect';
|
|
||||||
$mode{'113'} = 'Open';
|
|
||||||
$branch{'113'} = 'HEAD';
|
|
||||||
$fullname{'113'} = 'Photon';
|
|
||||||
$mode{'81'} = 'Open';
|
|
||||||
$branch{'81'} = 'HEAD';
|
|
||||||
$fullname{'81'} = 'Plugins';
|
|
||||||
$mode{'82'} = 'Open';
|
|
||||||
$branch{'82'} = 'HEAD';
|
|
||||||
$fullname{'82'} = 'Preferences';
|
|
||||||
$mode{'120'} = 'Open';
|
|
||||||
$branch{'120'} = 'HEAD';
|
|
||||||
$fullname{'120'} = 'Profile Manager';
|
|
||||||
$mode{'83'} = 'Open';
|
|
||||||
$branch{'83'} = 'HEAD';
|
|
||||||
$fullname{'83'} = 'Progress Window';
|
|
||||||
$mode{'161'} = 'Open';
|
|
||||||
$branch{'161'} = 'HEAD';
|
|
||||||
$fullname{'161'} = 'Qt-based gfx and widget';
|
|
||||||
$mode{'84'} = 'Open';
|
|
||||||
$branch{'84'} = 'HEAD';
|
|
||||||
$fullname{'84'} = 'Registry';
|
|
||||||
$mode{'143'} = 'Open';
|
|
||||||
$branch{'143'} = 'HEAD';
|
|
||||||
$fullname{'143'} = 'Remote XPCOM';
|
|
||||||
$mode{'138'} = 'Open';
|
|
||||||
$branch{'138'} = 'HEAD';
|
|
||||||
$fullname{'138'} = 'Rhino';
|
|
||||||
$mode{'145'} = 'Restricted';
|
|
||||||
$branch{'145'} = 'HEAD';
|
|
||||||
$fullname{'145'} = 'security';
|
|
||||||
$blessed{'145'} = ['jgmyers%netscape.com','jaggernaut%netscape.com','cotter%netscape.com','cls%seawood.org','bryner%netscape.com','scc%mozilla.org','alecf%netscape.com',];
|
|
||||||
$super{'145'} = ['wtc%netscape.com','tfox%netscape.com','sonja.mirtitsch%sun.com','rangansen%netscape.com','nicolson%netscape.com','nelsonb%netscape.com','kirk.erickson%sun.com','kaie%netscape.com','jpierre%netscape.com','javi%netscape.com','ian.mcgreer%sun.com','glen.beasley%sun.com','chrisk%netscape.com','bishakhabanerjee%netscape.com','thayes%netscape.com','relyea%netscape.com','ddrinan%netscape.com',];
|
|
||||||
$mode{'151'} = 'Open';
|
|
||||||
$branch{'151'} = 'HEAD';
|
|
||||||
$fullname{'151'} = 'Security - Mozilla PSM Glue';
|
|
||||||
$mode{'86'} = 'Open';
|
|
||||||
$branch{'86'} = 'HEAD';
|
|
||||||
$fullname{'86'} = 'Security Stubs';
|
|
||||||
$mode{'110'} = 'Open';
|
|
||||||
$branch{'110'} = 'HEAD';
|
|
||||||
$fullname{'110'} = 'Silent Download';
|
|
||||||
$mode{'115'} = 'Open';
|
|
||||||
$branch{'115'} = 'HEAD';
|
|
||||||
$fullname{'115'} = 'small-devices';
|
|
||||||
$mode{'87'} = 'Open';
|
|
||||||
$branch{'87'} = 'HEAD';
|
|
||||||
$fullname{'87'} = 'SmartUpdate';
|
|
||||||
$mode{'160'} = 'Open';
|
|
||||||
$branch{'160'} = 'HEAD';
|
|
||||||
$fullname{'160'} = 'String';
|
|
||||||
$mode{'154'} = 'Open';
|
|
||||||
$branch{'154'} = 'HEAD';
|
|
||||||
$fullname{'154'} = 'tools';
|
|
||||||
$mode{'158'} = 'Open';
|
|
||||||
$branch{'158'} = 'HEAD';
|
|
||||||
$fullname{'158'} = 'URI Loader';
|
|
||||||
$mode{'156'} = 'Open';
|
|
||||||
$branch{'156'} = 'HEAD';
|
|
||||||
$fullname{'156'} = 'ViXEn';
|
|
||||||
$mode{'134'} = 'Open';
|
|
||||||
$branch{'134'} = 'HEAD';
|
|
||||||
$fullname{'134'} = 'Widgets';
|
|
||||||
$mode{'121'} = 'Open';
|
|
||||||
$branch{'121'} = 'HEAD';
|
|
||||||
$fullname{'121'} = 'Xlib-based gfx + widget';
|
|
||||||
$mode{'88'} = 'Open';
|
|
||||||
$branch{'88'} = 'HEAD';
|
|
||||||
$fullname{'88'} = 'XML';
|
|
||||||
$mode{'141'} = 'Open';
|
|
||||||
$branch{'141'} = 'HEAD';
|
|
||||||
$fullname{'141'} = 'xmlterm';
|
|
||||||
$mode{'90'} = 'Open';
|
|
||||||
$branch{'90'} = 'HEAD';
|
|
||||||
$fullname{'90'} = 'XP File Handling';
|
|
||||||
$mode{'137'} = 'Open';
|
|
||||||
$branch{'137'} = 'HEAD';
|
|
||||||
$fullname{'137'} = 'XPApps';
|
|
||||||
$mode{'89'} = 'Open';
|
|
||||||
$branch{'89'} = 'HEAD';
|
|
||||||
$fullname{'89'} = 'XPCOM';
|
|
||||||
$mode{'118'} = 'Open';
|
|
||||||
$branch{'118'} = 'HEAD';
|
|
||||||
$fullname{'118'} = 'XPConnect';
|
|
||||||
$mode{'117'} = 'Open';
|
|
||||||
$branch{'117'} = 'HEAD';
|
|
||||||
$fullname{'117'} = 'XPIDL';
|
|
||||||
$mode{'150'} = 'Open';
|
|
||||||
$branch{'150'} = 'HEAD';
|
|
||||||
$fullname{'150'} = 'XPInstall';
|
|
||||||
$mode{'106'} = 'Open';
|
|
||||||
$branch{'106'} = 'HEAD';
|
|
||||||
$fullname{'106'} = 'XPToolkit';
|
|
||||||
$mode{'140'} = 'Open';
|
|
||||||
$branch{'140'} = 'HEAD';
|
|
||||||
$fullname{'140'} = 'XSLT Processor';
|
|
||||||
$mode{'135'} = 'Open';
|
|
||||||
$branch{'135'} = 'HEAD';
|
|
||||||
$fullname{'135'} = 'xul.css';
|
|
||||||
$mode{'93'} = 'Open';
|
|
||||||
$branch{'93'} = 'HEAD';
|
|
||||||
$fullname{'93'} = 'Zlib';
|
|
||||||
sub GetT {
|
|
||||||
($b,$_) = (@_);
|
|
||||||
if ($b eq 'HEAD') {
|
|
||||||
if (m:^CVSROOT/commitcheck\.pl$:) {return '3';}
|
|
||||||
if (m:^CVSROOT/passwd$:) {return '3';}
|
|
||||||
if (m:^mozilla/security/coreconf/.*$:) {return '145';}
|
|
||||||
if (m:^mozilla/security/jss/.*$:) {return '145';}
|
|
||||||
if (m:^mozilla/security/nss/.*$:) {return '145';}
|
|
||||||
if (m:^mozilla/[^/]*$:) {return '19';}
|
|
||||||
if (m:^mozilla/gfx/src/xlib/.*$:) {return '121';}
|
|
||||||
if (m:^mozilla/widget/src/xlib/.*$:) {return '121';}
|
|
||||||
if (m:^mozilla/ef/.*$:) {return '46';}
|
|
||||||
if (m:^mozilla/gfx/src/gtk/.*$:) {return '49';}
|
|
||||||
if (m:^mozilla/widget/src/gtk/.*$:) {return '49';}
|
|
||||||
if (m:^mozilla/widget/timer/src/unix/gtk$:) {return '49';}
|
|
||||||
if (m:^mozilla/rdf/.*$:) {return '52';}
|
|
||||||
if (m:^mozilla/dbm/.*$:) {return '53';}
|
|
||||||
if (m:^mozilla/build/.*$:) {return '55';}
|
|
||||||
if (m:^mozilla/config/.*$:) {return '55';}
|
|
||||||
if (m:^mozilla/l10n/.*$:) {return '55';}
|
|
||||||
if (m:^mozilla/editor$:) {return '56';}
|
|
||||||
if (m:^mozilla/directory/buildsdk\.txt$:) {return '59';}
|
|
||||||
if (m:^mozilla/directory/c-sdk/.*$:) {return '59';}
|
|
||||||
if (m:^mozilla/directory/ldapsdk\.mak$:) {return '59';}
|
|
||||||
if (m:^mozilla/directory/ldapsdk\.mk$:) {return '59';}
|
|
||||||
if (m:^mozilla/directory/Makefile$:) {return '59';}
|
|
||||||
if (m:^gfx/src/ps/.*$:) {return '62';}
|
|
||||||
if (m:^mozilla/modules/libimg/.*$:) {return '63';}
|
|
||||||
if (m:^mozilla/modules/libutil/.*$:) {return '63';}
|
|
||||||
if (m:^mozilla/intl/.*$:) {return '67';}
|
|
||||||
if (m:^mozilla/modules/oji/.*$:) {return '68';}
|
|
||||||
if (m:^mozilla/nav-java/.*$:) {return '68';}
|
|
||||||
if (m:^mozilla/sun-java/.*$:) {return '68';}
|
|
||||||
if (m:^mozilla/caps/.*$:) {return '69';}
|
|
||||||
if (m:^js/src/*\.c$:) {return '70';}
|
|
||||||
if (m:^js/src/*\.h$:) {return '70';}
|
|
||||||
if (m:^mozilla/extensions/jsd/.*$:) {return '71';}
|
|
||||||
if (m:^mozilla/js/jsd/.*$:) {return '71';}
|
|
||||||
if (m:^js/src/liveconnect/.*$:) {return '72';}
|
|
||||||
if (m:^mozilla/netwerk/.*$:) {return '77';}
|
|
||||||
if (m:^mozilla/nsprpub/.*$:) {return '78';}
|
|
||||||
if (m:^mozilla/modules/plugin/.*$:) {return '81';}
|
|
||||||
if (m:^mozilla/modules/libpref/.*$:) {return '82';}
|
|
||||||
if (m:^mozilla/modules/progress/.*$:) {return '83';}
|
|
||||||
if (m:^mozilla/modules/libreg/.*$:) {return '84';}
|
|
||||||
if (m:^mozilla/modules/security/.*$:) {return '86';}
|
|
||||||
if (m:^mozilla/modules/softupdt/.*$:) {return '87';}
|
|
||||||
if (m:^mozilla/content/xml/.*$:) {return '88';}
|
|
||||||
if (m:^mozilla/expat/.*$:) {return '88';}
|
|
||||||
if (m:^mozilla/extensions/xmlextras/.*$:) {return '88';}
|
|
||||||
if (m:^mozilla/xpcom/.*$:) {return '89';}
|
|
||||||
if (m:^xpcom/io$:) {return '90';}
|
|
||||||
if (m:^mozilla/modules/zlib/.*$:) {return '93';}
|
|
||||||
if (m:^mozilla/gfx/public/.*$:) {return '95';}
|
|
||||||
if (m:^mozilla/gfx/src/windows/.*$:) {return '95';}
|
|
||||||
if (m:^mozilla/view/.*$:) {return '96';}
|
|
||||||
if (m:^mozilla/layout/.*$:) {return '98';}
|
|
||||||
if (m:^modules/libimg/mng/.*$:) {return '155';}
|
|
||||||
if (m:^modules/libimg/mngcom/.*$:) {return '155';}
|
|
||||||
if (m:^mozilla/embedding/.*$:) {return '101';}
|
|
||||||
if (m:^mozilla/webshell/.*$:) {return '101';}
|
|
||||||
if (m:^mozilla/htmlparser/.*$:) {return '102';}
|
|
||||||
if (m:^mozilla/dom/.*$:) {return '103';}
|
|
||||||
if (m:^mozilla/js/rhino/.*$:) {return '138';}
|
|
||||||
if (m:^mozilla/xpfe$:) {return '137';}
|
|
||||||
if (m:^mozilla/js/tests$:) {return '114';}
|
|
||||||
if (m:^js/src/perlconnect$:) {return '111';}
|
|
||||||
if (m:^mozilla/silentdl/.*$:) {return '110';}
|
|
||||||
if (m:^mozilla/extensions/transformiix/.*$:) {return '140';}
|
|
||||||
if (m:^base/src/photon/.*$:) {return '113';}
|
|
||||||
if (m:^gfx/src/photon/.*$:) {return '113';}
|
|
||||||
if (m:^widget/src/photon/.*$:) {return '113';}
|
|
||||||
if (m:^mozilla/widget/public/.*$:) {return '134';}
|
|
||||||
if (m:^mozilla/profile$:) {return '120';}
|
|
||||||
if (m:^mozilla/tools/.*$:) {return '112';}
|
|
||||||
if (m:^xpcom/typelib$:) {return '117';}
|
|
||||||
if (m:^js/src/xpconnect$:) {return '118';}
|
|
||||||
if (m:^xpcom/reflect/xptcall$:) {return '118';}
|
|
||||||
if (m:^xpcom/reflect/xptinfo$:) {return '118';}
|
|
||||||
if (m:^mozilla/mailnews/news/.*$:) {return '122';}
|
|
||||||
if (m:^mozilla/mailnews/[^/]*$:) {return '123';}
|
|
||||||
if (m:^mozilla/mailnews/mime/[^/]*$:) {return '124';}
|
|
||||||
if (m:^mozilla/java/xpcom/.*$:) {return '128';}
|
|
||||||
if (m:^mozilla/java/plugins/.*$:) {return '129';}
|
|
||||||
if (m:^mozilla/java/webclient/.*$:) {return '127';}
|
|
||||||
if (m:^mozilla/java/dom/.*$:) {return '130';}
|
|
||||||
if (m:^mozilla/java/util/.*$:) {return '133';}
|
|
||||||
if (m:^mozilla/extensions/xmlterm/.*$:) {return '141';}
|
|
||||||
if (m:^xpcom/remote$:) {return '143';}
|
|
||||||
if (m:^embedding/browser/gtk$:) {return '144';}
|
|
||||||
if (m:^mozilla/mstone/.*$:) {return '147';}
|
|
||||||
if (m:^mozilla/xpinstall/.*$:) {return '150';}
|
|
||||||
if (m:^mozilla/extensions/psm-glue/.*$:) {return '151';}
|
|
||||||
if (m:^mozilla/extensions/vixen/.*$:) {return '156';}
|
|
||||||
if (m:^mozilla/mailnews/movemail$:) {return '157';}
|
|
||||||
if (m:^mozilla/uriloader/.*$:) {return '158';}
|
|
||||||
if (m:^mozilla/string/.*$:) {return '160';}
|
|
||||||
if (m:^mozilla/gfx/src/qt/.*$:) {return '161';}
|
|
||||||
if (m:^mozilla/widget/src/qt/.*$:) {return '161';}
|
|
||||||
if (m:^mozilla/extensions/p3p/.*$:) {return '162';}
|
|
||||||
if (m:^mozilla/chimera/.*$:) {return '164';}
|
|
||||||
}
|
|
||||||
if ($b eq 'NSPRPUB_PRE_4_2_CLIENT_BRANCH') {
|
|
||||||
if (m:^mozilla/nsprpub/.*$:) {return '146';}
|
|
||||||
}
|
|
||||||
if ($b eq 'NSS_3_3_BRANCH') {
|
|
||||||
if (m:^mozilla/security/coreconf/.*$:) {return '163';}
|
|
||||||
if (m:^mozilla/security/nss/.*$:) {return '163';}
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$debug = 0;
|
|
||||||
|
|
||||||
$origrepository = shift(@ARGV);
|
|
||||||
@files = @ARGV;
|
|
||||||
|
|
||||||
|
|
||||||
$envcvsroot = $ENV{'CVSROOT'};
|
|
||||||
open( REP, "<CVS/Repository");
|
|
||||||
$repository = <REP>;
|
|
||||||
chop($repository);
|
|
||||||
close(REP);
|
|
||||||
$repository =~ s:^$envcvsroot/::;
|
|
||||||
|
|
||||||
|
|
||||||
$doit = 0;
|
|
||||||
|
|
||||||
$| = 1;
|
|
||||||
|
|
||||||
|
|
||||||
if( $debug){
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
print STDERR "files: @files\n";
|
|
||||||
print STDERR "origrepository: $origrepository\n";
|
|
||||||
print STDERR " repository: $repository\n";
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
open(ENT, "<CVS/Entries" );
|
|
||||||
while( <ENT> ){
|
|
||||||
chop;
|
|
||||||
($d,$fn,$rev,$mod_time,$sticky,$tag) = split(/\//);
|
|
||||||
if ($tag =~ /^T(.*)$/) {
|
|
||||||
$fbranch{$fn} = $1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close ENT;
|
|
||||||
|
|
||||||
foreach $f (@files) {
|
|
||||||
$b = "";
|
|
||||||
if (defined $fbranch{$f}) {$b = $fbranch{$f};}
|
|
||||||
if ($b eq "") {$b = "HEAD";}
|
|
||||||
$t = GetT($b, "$repository/$f");
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "GetT returned '$t' for '$repository/$f' branch '$b'\n";
|
|
||||||
}
|
|
||||||
if ($t eq "") {
|
|
||||||
$t = $defaultid;
|
|
||||||
}
|
|
||||||
if (!defined $mode{$t} || $mode{$t} eq "Open") {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "Checking twig $t\n";
|
|
||||||
}
|
|
||||||
# OK, we have a match. See if we're allowed to checkin here.
|
|
||||||
if ($username eq "") {
|
|
||||||
$username = $ENV{"CVS_USER"} || getlogin || (getpwuid($<))[0] || "nobody";
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "Username is $username\n";
|
|
||||||
print STDERR "getlogin returns " . getlogin . "\n";
|
|
||||||
print STDERR '(getpwuid($<))[0] returns ' . (getpwuid($<))[0] . "\n";
|
|
||||||
print STDERR "Environment:\n";
|
|
||||||
foreach $key (sort(keys %ENV)) {
|
|
||||||
print STDERR $key, '=', $ENV{$key}, "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$ok = 0;
|
|
||||||
$s = $super{$t};
|
|
||||||
foreach $u (@$s) {
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "Checking against super $u\n";
|
|
||||||
}
|
|
||||||
if ($u eq $username) {
|
|
||||||
$ok = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($mode{$t} eq "Restricted") {
|
|
||||||
my $b = $blessed{$t};
|
|
||||||
foreach $u (@$b) {
|
|
||||||
if ($debug) {
|
|
||||||
print STDERR "Checking against blessed $u\n";
|
|
||||||
}
|
|
||||||
if ($u eq $username) {
|
|
||||||
$ok = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$ok) {
|
|
||||||
print STDERR "You may not check into partition $fullname{$t}\n";
|
|
||||||
print STDERR "the file $repository/$f on branch $b\n";
|
|
||||||
print STDERR "If you think you should be allowed to, send mail to\n";
|
|
||||||
print STDERR "one of the below people:\n";
|
|
||||||
$s = $super{$t};
|
|
||||||
foreach $u (@$s) {
|
|
||||||
$u =~ s/%/@/;
|
|
||||||
print STDERR " $u\n";
|
|
||||||
}
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
# The "commitinfo" file is used to control pre-commit checks.
|
|
||||||
# The filter on the right is invoked with the repository and a list
|
|
||||||
# of files to check. A non-zero exit of the filter program will
|
|
||||||
# cause the commit to be aborted.
|
|
||||||
#
|
|
||||||
# The first entry on a line is a regular expression which is tested
|
|
||||||
# against the directory that the change is being committed to, relative
|
|
||||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
|
||||||
# of the line is the name of the filter to run.
|
|
||||||
#
|
|
||||||
# If the repository name does not match any of the regular expressions in this
|
|
||||||
# file, the "DEFAULT" line is used, if it is specified.
|
|
||||||
#
|
|
||||||
# If the name "ALL" appears as a regular expression it is always used
|
|
||||||
# in addition to the first matching regex or "DEFAULT".
|
|
||||||
ALL $CVSROOT/CVSROOT/commitcheck.pl
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
# Set this to "no" if pserver shouldn't check system users/passwords
|
|
||||||
#SystemAuth=no
|
|
||||||
|
|
||||||
# Set `PreservePermissions' to `yes' to save file status information
|
|
||||||
# in the repository.
|
|
||||||
#PreservePermissions=no
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
.gdbinit
|
|
||||||
.HSancillary
|
|
||||||
.Makedepend
|
|
||||||
.makedepend
|
|
||||||
.MCC_Cache_FAT
|
|
||||||
.MCC_Global_History
|
|
||||||
.md
|
|
||||||
.pure
|
|
||||||
made
|
|
||||||
make.log
|
|
||||||
make.dep
|
|
||||||
nuke
|
|
||||||
_jmc
|
|
||||||
*.class
|
|
||||||
.depends
|
|
||||||
.deps
|
|
||||||
.d
|
|
||||||
*.dylib
|
|
||||||
__.SYMDEF*
|
|
||||||
manifest.mnw
|
|
||||||
_gen
|
|
||||||
_stubs
|
|
||||||
*_DBG.OBJ
|
|
||||||
*_DBG_EDT.OBJ
|
|
||||||
*_OPT.OBJ
|
|
||||||
*_OPT_EDT.OBJ
|
|
||||||
*_DBG.OBJD
|
|
||||||
so_locations
|
|
||||||
*.flc
|
|
||||||
*.map
|
|
||||||
depend.mk
|
|
||||||
_xpidlgen
|
|
||||||
ti_files
|
|
||||||
*.rpo
|
|
||||||
.*.timestamp
|
|
||||||
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
PATH=/bin:/usr/bin:/sbin:/usr/sbin;export PATH
|
|
||||||
|
|
||||||
(
|
|
||||||
URL="subdir=`dirname $1`&files=`basename $1`"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo "Subject: $1"
|
|
||||||
echo 'Content-Type: text/html; charset=us-ascii'
|
|
||||||
echo 'Content-Transfer-Encoding: 7bit'
|
|
||||||
echo 'Content-Disposition: inline'
|
|
||||||
|
|
||||||
TMP=/tmp/cvsmf.$$
|
|
||||||
trap "rm -f $TMP" 0 1 2 15
|
|
||||||
cat > $TMP
|
|
||||||
BRANCH=`sed -n 's@^Revision/Branch: \(.*\)@\1@p' $TMP`
|
|
||||||
if test -n "$BRANCH"; then
|
|
||||||
URL="$URL&branch=$BRANCH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo '<A HREF="http://warp.netscape.com/webtools/bonsai/cvsview2.cgi?'$URL'&command=DIRECTORY">View differences</A><BR>\n'
|
|
||||||
|
|
||||||
) | mail $2
|
|
||||||
@ -1,163 +0,0 @@
|
|||||||
#! /tools/ns/bin/perl5.004
|
|
||||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
|
||||||
|
|
||||||
# Arguments:
|
|
||||||
#
|
|
||||||
# -a Only send checkin messages which contain added files. All other checkin
|
|
||||||
# messages will be ignored.
|
|
||||||
# -u <url> Base URL for the Bonsai directory; "/cvsview2.cgi" will get
|
|
||||||
# appended to this with appropriate args.
|
|
||||||
# -h <hostname> Host whose SMTP server we will contact to send mail.
|
|
||||||
# -s <string> String specifying dir and filenames. As generated by "%s"
|
|
||||||
# in a CVSROOT/loginfo file
|
|
||||||
# -f <file> A regexp. If present, then only checkins to files whose
|
|
||||||
# name (without the directory) matches the regexp will generate mail.
|
|
||||||
#
|
|
||||||
# The remaining args are email addresses of people who should get notified.
|
|
||||||
|
|
||||||
use Socket;
|
|
||||||
|
|
||||||
sub get_response_code {
|
|
||||||
my ($expecting) = @_;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: Waiting for code $expecting\n";
|
|
||||||
# }
|
|
||||||
while (1) {
|
|
||||||
my $line = <S>;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: $line";
|
|
||||||
# }
|
|
||||||
if ($line =~ /^[0-9]*-/) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
if ($line =~ /(^[0-9]*) /) {
|
|
||||||
my $code = $1;
|
|
||||||
if ($code == $expecting) {
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: got it.\n";
|
|
||||||
# }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
die "Bad response from SMTP -- $line";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
my $debug = 0;
|
|
||||||
my $addsonly = 0;
|
|
||||||
|
|
||||||
my $mailhost = "127.0.0.1";
|
|
||||||
my $urlbase = "";
|
|
||||||
my $cvsargs = "";
|
|
||||||
my $cvsroot = "";
|
|
||||||
my @mailto;
|
|
||||||
my $fileregexp = "";
|
|
||||||
|
|
||||||
|
|
||||||
while (@ARGV) {
|
|
||||||
my $arg = shift @ARGV;
|
|
||||||
|
|
||||||
if ($arg eq '-d') {
|
|
||||||
$debug = 1;
|
|
||||||
print STDERR "Debug turned on...\n";
|
|
||||||
} elsif ($arg eq '-r') {
|
|
||||||
$cvsroot = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-h') {
|
|
||||||
$mailhost = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-u') {
|
|
||||||
$urlbase = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-s') {
|
|
||||||
$cvsargs = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-f') {
|
|
||||||
$fileregexp = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-a') {
|
|
||||||
$addsonly = 1;
|
|
||||||
} else {
|
|
||||||
push(@mailto, $arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my $url = "";
|
|
||||||
if ($urlbase ne "" && $cvsargs ne "") {
|
|
||||||
my @list = split(/ /, $cvsargs);
|
|
||||||
my $dir = shift @list;
|
|
||||||
if ($fileregexp ne "") {
|
|
||||||
if (grep(m/$fileregexp/, @list) <= 0) {
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$url = $urlbase . "/cvsview2.cgi?command=DIRECTORY&subdir=$dir&files=" .
|
|
||||||
join('%2B', @list);
|
|
||||||
}
|
|
||||||
|
|
||||||
my $message = "";
|
|
||||||
my $filesadded = 0;
|
|
||||||
while (<>) {
|
|
||||||
my $line = $_;
|
|
||||||
if ($line =~ m@^Revision/Branch: (.*)$@) {
|
|
||||||
if ($url ne "") {
|
|
||||||
$url .= "&branch=$1";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# if we see that files have been added on this checkin, remember that fact
|
|
||||||
#
|
|
||||||
if ($line =~ m@^Added Files:@) {
|
|
||||||
$filesadded = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$message .= $line;
|
|
||||||
}
|
|
||||||
|
|
||||||
# bail out if this is an adds-only run and no files have been added
|
|
||||||
#
|
|
||||||
if ($addsonly == 1 && $filesadded == 0 ) {
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($url ne "") {
|
|
||||||
if ($cvsroot ne "") {
|
|
||||||
$url .= "&root=$cvsroot";
|
|
||||||
}
|
|
||||||
$message = "Diffs: $url\n\n" . $message;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
chop(my $hostname = `/bin/hostname`);
|
|
||||||
|
|
||||||
my ($remote,$port, $iaddr, $paddr, $proto, $line);
|
|
||||||
|
|
||||||
$remote = $mailhost;
|
|
||||||
$port = 25;
|
|
||||||
if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
|
|
||||||
die "No port" unless $port;
|
|
||||||
$iaddr = inet_aton($remote) || die "no host: $remote";
|
|
||||||
$paddr = sockaddr_in($port, $iaddr);
|
|
||||||
|
|
||||||
$proto = getprotobyname('tcp');
|
|
||||||
socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
|
|
||||||
connect(S, $paddr) || die "connect: $!";
|
|
||||||
select(S); $| = 1; select(STDOUT);
|
|
||||||
|
|
||||||
get_response_code(220);
|
|
||||||
print S "EHLO $hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "MAIL FROM: cvsmailfilter\@$hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
foreach $i (@mailto) {
|
|
||||||
print S "RCPT TO: $i\n";
|
|
||||||
get_response_code(250);
|
|
||||||
}
|
|
||||||
print S "DATA\n";
|
|
||||||
get_response_code(354);
|
|
||||||
print S "Subject: $cvsargs\n";
|
|
||||||
print S "\n";
|
|
||||||
|
|
||||||
print S $message . "\n";
|
|
||||||
print S ".\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "QUIT\n";
|
|
||||||
close(S);
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
# This file affects handling of files based on their names.
|
|
||||||
#
|
|
||||||
# The -t/-f options allow one to treat directories of files
|
|
||||||
# as a single file, or to transform a file in other ways on
|
|
||||||
# its way in and out of CVS.
|
|
||||||
#
|
|
||||||
# The -m option specifies whether CVS attempts to merge files.
|
|
||||||
#
|
|
||||||
# The -k option specifies keyword expansion (e.g. -kb for binary).
|
|
||||||
#
|
|
||||||
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
|
|
||||||
#
|
|
||||||
# wildcard [option value][option value]...
|
|
||||||
#
|
|
||||||
# where option is one of
|
|
||||||
# -f from cvs filter value: path to filter
|
|
||||||
# -t to cvs filter value: path to filter
|
|
||||||
# -m update methodology value: MERGE or COPY
|
|
||||||
# -k expansion mode value: b, o, kkv, &c
|
|
||||||
#
|
|
||||||
# and value is a single-quote delimited value.
|
|
||||||
# For example:
|
|
||||||
#*.gif -k 'b'
|
|
||||||
270
CVSROOT/dolog.pl
270
CVSROOT/dolog.pl
@ -1,270 +0,0 @@
|
|||||||
#! /tools/ns/bin/perl5
|
|
||||||
|
|
||||||
use Socket;
|
|
||||||
|
|
||||||
$username = $ENV{"CVS_USER"} || getlogin || (getpwuid($<))[0] || "nobody";
|
|
||||||
$envcvsroot = $ENV{'CVSROOT'};
|
|
||||||
$cvsroot = $envcvsroot;
|
|
||||||
$flag_debug = 0;
|
|
||||||
$flag_tagcmd = 0;
|
|
||||||
$repository = '';
|
|
||||||
$repository_tag = '';
|
|
||||||
$mailhost = 'localhost';
|
|
||||||
|
|
||||||
@mailto=();
|
|
||||||
@changed_files = ();
|
|
||||||
@added_files = ();
|
|
||||||
@removed_files = ();
|
|
||||||
@log_lines = ();
|
|
||||||
@outlist = ();
|
|
||||||
|
|
||||||
$STATE_NONE = 0;
|
|
||||||
$STATE_CHANGED = 1;
|
|
||||||
$STATE_ADDED = 2;
|
|
||||||
$STATE_REMOVED = 3;
|
|
||||||
$STATE_LOG = 4;
|
|
||||||
|
|
||||||
&process_args;
|
|
||||||
|
|
||||||
if ($flag_debug ){
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
print STDERR "LOGINFO:\n";
|
|
||||||
print STDERR " pwd:" . `pwd` . "\n";
|
|
||||||
print STDERR " Args @ARGV\n";
|
|
||||||
print STDERR " CVSROOT: $cvsroot\n";
|
|
||||||
print STDERR " who: $username\n";
|
|
||||||
print STDERR " Repository: $repository\n";
|
|
||||||
print STDERR " mailto: @mailto\n";
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($flag_tagcmd) {
|
|
||||||
&process_tag_command;
|
|
||||||
} else {
|
|
||||||
&get_loginfo;
|
|
||||||
&process_cvs_info;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( $flag_debug){
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
print STDERR @outlist;
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
&mail_notification;
|
|
||||||
|
|
||||||
0;
|
|
||||||
|
|
||||||
sub process_args {
|
|
||||||
while (@ARGV) {
|
|
||||||
$arg = shift @ARGV;
|
|
||||||
|
|
||||||
if ($arg eq '-d') {
|
|
||||||
$flag_debug = 1;
|
|
||||||
print STDERR "Debug turned on...\n";
|
|
||||||
} elsif ($arg eq '-r') {
|
|
||||||
$cvsroot = shift @ARGV;
|
|
||||||
} elsif ($arg eq '-t') {
|
|
||||||
$flag_tagcmd = 1;
|
|
||||||
last; # Keep the rest in ARGV; they're handled later.
|
|
||||||
} elsif ($arg eq '-h') {
|
|
||||||
$mailhost = shift @ARGV;
|
|
||||||
} else {
|
|
||||||
push(@mailto, $arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if( $repository eq '' ){
|
|
||||||
open( REP, "<CVS/Repository");
|
|
||||||
$repository = <REP>;
|
|
||||||
chop($repository);
|
|
||||||
close(REP);
|
|
||||||
}
|
|
||||||
$repository =~ s:^$cvsroot/::;
|
|
||||||
$repository =~ s:^$envcvsroot/::;
|
|
||||||
|
|
||||||
if (!$flag_tagcmd) {
|
|
||||||
if( open( REP, "<CVS/Tag") ) {
|
|
||||||
$repository_tag = <REP>;
|
|
||||||
chop($repository_tag);
|
|
||||||
close(REP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_loginfo {
|
|
||||||
|
|
||||||
if( $flag_debug){
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Iterate over the body of the message collecting information.
|
|
||||||
#
|
|
||||||
while (<STDIN>) {
|
|
||||||
chop; # Drop the newline
|
|
||||||
|
|
||||||
if( $flag_debug){
|
|
||||||
print STDERR "$_\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/^In directory/) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/^Modified Files/) { $state = $STATE_CHANGED; next; }
|
|
||||||
if (/^Added Files/) { $state = $STATE_ADDED; next; }
|
|
||||||
if (/^Removed Files/) { $state = $STATE_REMOVED; next; }
|
|
||||||
if (/^Log Message/) { $state = $STATE_LOG; next; }
|
|
||||||
|
|
||||||
s/^[ \t\n]+//; # delete leading whitespace
|
|
||||||
s/[ \t\n]+$//; # delete trailing whitespace
|
|
||||||
|
|
||||||
if ($state == $STATE_CHANGED) { push(@changed_files, split); }
|
|
||||||
if ($state == $STATE_ADDED) { push(@added_files, split); }
|
|
||||||
if ($state == $STATE_REMOVED) { push(@removed_files, split); }
|
|
||||||
if ($state == $STATE_LOG) { push(@log_lines, $_); }
|
|
||||||
}
|
|
||||||
|
|
||||||
if( $flag_debug){
|
|
||||||
print STDERR "----------------------------------------------\n"
|
|
||||||
. "changed files: @changed_files\n"
|
|
||||||
. "added files: @added_files\n"
|
|
||||||
. "removed files: @removed_files\n";
|
|
||||||
print STDERR "----------------------------------------------\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sub process_cvs_info {
|
|
||||||
local($d,$fn,$rev,$mod_time,$sticky,$tag,$stat,@d,$l,$rcsfile);
|
|
||||||
if (!open(ENT, "<CVS/Entries.Log" )) {
|
|
||||||
open(ENT, "<CVS/Entries");
|
|
||||||
}
|
|
||||||
$time = time;
|
|
||||||
while( <ENT> ){
|
|
||||||
chop;
|
|
||||||
($d,$fn,$rev,$mod_time,$sticky,$tag) = split(/\//);
|
|
||||||
$stat = 'C';
|
|
||||||
for $i (@changed_files, "BEATME.NOW", @added_files ) {
|
|
||||||
if( $i eq "BEATME.NOW" ){ $stat = 'A'; }
|
|
||||||
if($i eq $fn ){
|
|
||||||
$rcsfile = "$envcvsroot/$repository/$fn,v";
|
|
||||||
if( ! -r $rcsfile ){
|
|
||||||
$rcsfile = "$envcvsroot/$repository/Attic/$fn,v";
|
|
||||||
}
|
|
||||||
open(LOG, "/tools/ns/bin/rlog -N -r$rev $rcsfile |")
|
|
||||||
|| print STDERR "dolog.pl: Couldn't run rlog\n";
|
|
||||||
while(<LOG>){
|
|
||||||
if (/^date:.* author: ([^;]*);.*/) {
|
|
||||||
$username = $1;
|
|
||||||
if (/lines: \+([0-9]*) -([0-9]*)/) {
|
|
||||||
$lines_added = $1;
|
|
||||||
$lines_removed = $2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close( LOG );
|
|
||||||
push(@outlist, ("$stat|$time|$username|$cvsroot|$repository|$fn|$rev|$sticky|$tag|$lines_added|$lines_removed\n"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(ENT);
|
|
||||||
|
|
||||||
for $i (@removed_files) {
|
|
||||||
push( @outlist, ("R|$time|$username|$cvsroot|$repository|$i|||$repository_tag\n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
push (@outlist, "LOGCOMMENT\n");
|
|
||||||
push (@outlist, join("\n",@log_lines));
|
|
||||||
push (@outlist, "\n:ENDLOGCOMMENT\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub process_tag_command {
|
|
||||||
local($str,$part,$time);
|
|
||||||
$time = time;
|
|
||||||
$str = "Tag|$cvsroot|$time";
|
|
||||||
while (@ARGV) {
|
|
||||||
$part = shift @ARGV;
|
|
||||||
$str .= "|" . $part;
|
|
||||||
}
|
|
||||||
push (@outlist, ("$str\n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub do_commitinfo {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub get_response_code {
|
|
||||||
my ($expecting) = @_;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: Waiting for code $expecting\n";
|
|
||||||
# }
|
|
||||||
while (1) {
|
|
||||||
my $line = <S>;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: $line";
|
|
||||||
# }
|
|
||||||
if ($line =~ /^[0-9]*-/) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
if ($line =~ /(^[0-9]*) /) {
|
|
||||||
my $code = $1;
|
|
||||||
if ($code == $expecting) {
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: got it.\n";
|
|
||||||
# }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
die "Bad response from SMTP -- $line";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sub mail_notification {
|
|
||||||
chop(my $hostname = `/bin/hostname`);
|
|
||||||
|
|
||||||
my ($remote,$port, $iaddr, $paddr, $proto, $line);
|
|
||||||
|
|
||||||
$remote = $mailhost;
|
|
||||||
$port = 25;
|
|
||||||
if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
|
|
||||||
die "No port" unless $port;
|
|
||||||
$iaddr = inet_aton($remote) || die "no host: $remote";
|
|
||||||
$paddr = sockaddr_in($port, $iaddr);
|
|
||||||
|
|
||||||
$proto = getprotobyname('tcp');
|
|
||||||
socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
|
|
||||||
connect(S, $paddr) || die "connect: $!";
|
|
||||||
select(S); $| = 1; select(STDOUT);
|
|
||||||
|
|
||||||
get_response_code(220);
|
|
||||||
print S "EHLO $hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "MAIL FROM: bonsai-daemon\@$hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
foreach $i (@mailto) {
|
|
||||||
print S "RCPT TO: $i\n";
|
|
||||||
get_response_code(250);
|
|
||||||
}
|
|
||||||
print S "DATA\n";
|
|
||||||
get_response_code(354);
|
|
||||||
# Get one line starting with "354 ".
|
|
||||||
if ($flag_tagcmd) {
|
|
||||||
print S "Subject: cvs tag in $repository\n";
|
|
||||||
} else {
|
|
||||||
print S "Subject: cvs commit to $repository\n";
|
|
||||||
}
|
|
||||||
print S "\n";
|
|
||||||
print S @outlist, "\n";
|
|
||||||
print S ".\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "QUIT\n";
|
|
||||||
close(S);
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
# The "editinfo" file is used to allow verification of logging
|
|
||||||
# information. It works best when a template (as specified in the
|
|
||||||
# rcsinfo file) is provided for the logging procedure. Given a
|
|
||||||
# template with locations for, a bug-id number, a list of people who
|
|
||||||
# reviewed the code before it can be checked in, and an external
|
|
||||||
# process to catalog the differences that were code reviewed, the
|
|
||||||
# following test can be applied to the code:
|
|
||||||
#
|
|
||||||
# Making sure that the entered bug-id number is correct.
|
|
||||||
# Validating that the code that was reviewed is indeed the code being
|
|
||||||
# checked in (using the bug-id number or a seperate review
|
|
||||||
# number to identify this particular code set.).
|
|
||||||
#
|
|
||||||
# If any of the above test failed, then the commit would be aborted.
|
|
||||||
#
|
|
||||||
# Actions such as mailing a copy of the report to each reviewer are
|
|
||||||
# better handled by an entry in the loginfo file.
|
|
||||||
#
|
|
||||||
# One thing that should be noted is the the ALL keyword is not
|
|
||||||
# supported. There can be only one entry that matches a given
|
|
||||||
# repository.
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
# The "loginfo" file controls where "cvs commit" log information
|
|
||||||
# is sent. The first entry on a line is a regular expression which must match
|
|
||||||
# the directory that the change is being made to, relative to the
|
|
||||||
# $CVSROOT. If a match is found, then the remainder of the line is a filter
|
|
||||||
# program that should expect log information on its standard input.
|
|
||||||
#
|
|
||||||
# If the repository name does not match any of the regular expressions in this
|
|
||||||
# file, the "DEFAULT" line is used, if it is specified.
|
|
||||||
#
|
|
||||||
# If the name ALL appears as a regular expression it is always used
|
|
||||||
# in addition to the first matching regex or DEFAULT.
|
|
||||||
#
|
|
||||||
# You may specify a format string as part of the
|
|
||||||
# filter. The string is composed of a `%' followed
|
|
||||||
# by a single format character, or followed by a set of format
|
|
||||||
# characters surrounded by `{' and `}' as separators. The format
|
|
||||||
# characters are:
|
|
||||||
#
|
|
||||||
# s = file name
|
|
||||||
# V = old version number (pre-checkin)
|
|
||||||
# v = new version number (post-checkin)
|
|
||||||
#
|
|
||||||
ALL $CVSROOT/CVSROOT/dolog.pl -h 127.0.0.1 -r /cvsroot bonsai-new-checkin-daemon@lounge.mozilla.org
|
|
||||||
ALL $CVSROOT/CVSROOT/cvsmailfilter.pl -a -u http://bonsai.mozilla.org -r /cvsroot -s %s cvs-adds@mozilla.org
|
|
||||||
mozilla/security $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/extensions/psm-glue $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/netwerk/security $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/netwerk/protocol/http/src $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/netwerk/socket/ssl $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/netwerk/socket/tests $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s mozilla-crypto-checkins@mozilla.org
|
|
||||||
mozilla/webtools $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s webtools-changed@warp.mcom.com
|
|
||||||
CVSROOT $CVSROOT/CVSROOT/cvsmailfilter.pl -u http://bonsai.mozilla.org -r /cvsroot -s %s -f modules cyeh@netscape.com leaf@netscape.com
|
|
||||||
731
CVSROOT/modules
731
CVSROOT/modules
@ -1,731 +0,0 @@
|
|||||||
# Three different line formats are valid:
|
|
||||||
# key -a aliases...
|
|
||||||
# key [options] directory
|
|
||||||
# key [options] directory files...
|
|
||||||
#
|
|
||||||
# Where "options" are composed of:
|
|
||||||
# -i prog Run "prog" on "cvs commit" from top-level of module.
|
|
||||||
# -o prog Run "prog" on "cvs checkout" of module.
|
|
||||||
# -e prog Run "prog" on "cvs export" of module.
|
|
||||||
# -t prog Run "prog" on "cvs rtag" of module.
|
|
||||||
# -u prog Run "prog" on "cvs update" of module.
|
|
||||||
# -d dir Place module in directory "dir" instead of module name.
|
|
||||||
# -l Top-level directory only -- do not recurse.
|
|
||||||
#
|
|
||||||
# NOTE: If you change any of the "Run" options above, you'll have to
|
|
||||||
# release and re-checkout any working directories of these modules.
|
|
||||||
#
|
|
||||||
# And "directory" is a path to a directory relative to $CVSROOT.
|
|
||||||
#
|
|
||||||
# The "-a" option specifies an alias. An alias is interpreted as if
|
|
||||||
# everything on the right of the "-a" had been typed on the command line.
|
|
||||||
#
|
|
||||||
# You can encode a module within a module by using the special '&'
|
|
||||||
# character to interpose another module into the current module. This
|
|
||||||
# can be useful for creating a module that consists of many directories
|
|
||||||
# spread out over the entire source repository.
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
#
|
|
||||||
# Module that contains the LEGAL and the LICENSE file. This should be
|
|
||||||
# a part of every logical source pull for a component. Care should
|
|
||||||
# be given so that this module is not specified twice for a given
|
|
||||||
# source pull.
|
|
||||||
#
|
|
||||||
|
|
||||||
MozillaLicense -a \
|
|
||||||
mozilla/LEGAL \
|
|
||||||
mozilla/LICENSE
|
|
||||||
|
|
||||||
Grendel -a \
|
|
||||||
MozillaLicense \
|
|
||||||
mozilla/grendel
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
#
|
|
||||||
# Modules for the MozillaClassic Browser, based on the original
|
|
||||||
# layout engine. If you wish to develop on the Mozilla Classic
|
|
||||||
# codebase, pull using these modules and using the branch tag
|
|
||||||
# MozillaSourceClassic_19981026_BRANCH.
|
|
||||||
# These modules should be considered obsolete.
|
|
||||||
#
|
|
||||||
|
|
||||||
MozillaSource -a \
|
|
||||||
MozillaSourceWin \
|
|
||||||
MozillaSourceMac \
|
|
||||||
MozillaSourceUnix
|
|
||||||
|
|
||||||
MozillaSourceWin -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
MozillaSourceWinOnly
|
|
||||||
|
|
||||||
MozillaSourceMac -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
MozillaSourceMacOnly
|
|
||||||
|
|
||||||
MozillaSourceUnix -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
MozillaSourceUnixOnly \
|
|
||||||
mozilla/cmd/xfe \
|
|
||||||
mozilla/cmd/gnomefe \
|
|
||||||
mozilla/cmd/qtfe \
|
|
||||||
mozilla/cmd/ybfe
|
|
||||||
|
|
||||||
MozillaSourceMotif -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
mozilla/cmd/xfe \
|
|
||||||
MozillaSourceUnixOnly
|
|
||||||
|
|
||||||
MozillaSourceQtfe -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
mozilla/cmd/qtfe \
|
|
||||||
MozillaSourceUnixOnly
|
|
||||||
|
|
||||||
MozillaSourceGnomefe -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
mozilla/cmd/gnomefe \
|
|
||||||
MozillaSourceUnixOnly
|
|
||||||
|
|
||||||
MozillaSourceYbfe -a \
|
|
||||||
MozillaSourceCommon \
|
|
||||||
mozilla/cmd/ybfe \
|
|
||||||
MozillaSourceUnixOnly
|
|
||||||
|
|
||||||
MozillaSourceCommon -a \
|
|
||||||
mozilla/LEGAL \
|
|
||||||
mozilla/LICENSE \
|
|
||||||
mozilla/base \
|
|
||||||
mozilla/build \
|
|
||||||
!mozilla/build/mac/client.mac \
|
|
||||||
mozilla/include \
|
|
||||||
mozilla/caps \
|
|
||||||
mozilla/jpeg \
|
|
||||||
mozilla/js \
|
|
||||||
mozilla/lib/htmldlgs \
|
|
||||||
mozilla/lib/layout \
|
|
||||||
mozilla/lib/libcnv \
|
|
||||||
mozilla/lib/libdom \
|
|
||||||
mozilla/lib/libi18n \
|
|
||||||
mozilla/lib/liblayer \
|
|
||||||
mozilla/lib/libmisc \
|
|
||||||
mozilla/lib/libmime \
|
|
||||||
mozilla/lib/libmocha \
|
|
||||||
mozilla/lib/libnet \
|
|
||||||
mozilla/lib/libparse \
|
|
||||||
mozilla/lib/libpics \
|
|
||||||
mozilla/lib/libpwcac \
|
|
||||||
mozilla/lib/libstyle \
|
|
||||||
mozilla/lib/mailto \
|
|
||||||
mozilla/lib/plugin \
|
|
||||||
mozilla/lib/xlate \
|
|
||||||
mozilla/lib/xp \
|
|
||||||
mozilla/modules/calendar \
|
|
||||||
mozilla/modules/edtplug/classes \
|
|
||||||
mozilla/modules/edtplug/src \
|
|
||||||
mozilla/modules/edtplug/include \
|
|
||||||
mozilla/modules/libfont/classes \
|
|
||||||
mozilla/modules/libfont/public \
|
|
||||||
mozilla/modules/libfont/src \
|
|
||||||
mozilla/modules/libhook \
|
|
||||||
mozilla/modules/libimg \
|
|
||||||
mozilla/modules/libnls \
|
|
||||||
mozilla/modules/libpref \
|
|
||||||
mozilla/modules/libreg \
|
|
||||||
mozilla/modules/libutil \
|
|
||||||
mozilla/modules/oji \
|
|
||||||
mozilla/modules/plugin \
|
|
||||||
mozilla/modules/progress/src \
|
|
||||||
mozilla/modules/rdf \
|
|
||||||
mozilla/modules/schedulr \
|
|
||||||
mozilla/modules/security/freenav \
|
|
||||||
mozilla/modules/softupdt/classes \
|
|
||||||
mozilla/modules/softupdt/include \
|
|
||||||
mozilla/modules/softupdt/src \
|
|
||||||
mozilla/modules/xml \
|
|
||||||
mozilla/modules/zlib/src \
|
|
||||||
mozilla/nav-java/stubs \
|
|
||||||
mozilla/network \
|
|
||||||
mozilla/nsprpub \
|
|
||||||
mozilla/privacy \
|
|
||||||
mozilla/xpcom \
|
|
||||||
mozilla/l10n \
|
|
||||||
mozilla/dbm \
|
|
||||||
mozilla/README
|
|
||||||
|
|
||||||
MozillaSourceWinOnly -a \
|
|
||||||
mozilla/client.mak \
|
|
||||||
mozilla/cmd/makefile.win \
|
|
||||||
mozilla/cmd/wincom \
|
|
||||||
mozilla/cmd/winfe \
|
|
||||||
mozilla/config \
|
|
||||||
mozilla/lib/makefile.win \
|
|
||||||
mozilla/modules/coreincl \
|
|
||||||
mozilla/modules/edtplug/makefile.win \
|
|
||||||
mozilla/makefile.win \
|
|
||||||
mozilla/modules/libfont/jmcgen \
|
|
||||||
mozilla/modules/libfont/makefile.win \
|
|
||||||
mozilla/modules/libfont/producers/makefile.win \
|
|
||||||
mozilla/modules/libfont/producers/win \
|
|
||||||
mozilla/modules/libfont/producers/win/classes \
|
|
||||||
mozilla/modules/libfont/producers/win/classes/netscape \
|
|
||||||
mozilla/modules/libfont/producers/win/classes/netscape/fonts \
|
|
||||||
mozilla/modules/libfont/producers/win/src \
|
|
||||||
mozilla/modules/makefile.win \
|
|
||||||
mozilla/modules/progress/makefile.win \
|
|
||||||
mozilla/modules/progress/public \
|
|
||||||
mozilla/modules/security/makefile.win \
|
|
||||||
mozilla/modules/softupdt/makefile.win \
|
|
||||||
mozilla/modules/zlib/makefile.win \
|
|
||||||
mozilla/nav-java/makefile.win \
|
|
||||||
JavaStubWin
|
|
||||||
|
|
||||||
MozillaSourceUnixOnly -a \
|
|
||||||
mozilla/.cvsignore \
|
|
||||||
mozilla/Makefile \
|
|
||||||
mozilla/Makefile.in \
|
|
||||||
mozilla/configure \
|
|
||||||
mozilla/configure.in \
|
|
||||||
mozilla/allmakefiles.sh \
|
|
||||||
mozilla/cmd/Makefile \
|
|
||||||
mozilla/cmd/Makefile.in \
|
|
||||||
mozilla/cmd/stubfe \
|
|
||||||
mozilla/cmd/unixfe \
|
|
||||||
mozilla/config/.cvsignore \
|
|
||||||
mozilla/config/AIX.mk \
|
|
||||||
mozilla/config/BSD_OS.mk \
|
|
||||||
mozilla/config/DGUX.mk \
|
|
||||||
mozilla/config/FreeBSD.mk \
|
|
||||||
mozilla/config/HP-UX.mk \
|
|
||||||
mozilla/config/IRIX.mk \
|
|
||||||
mozilla/config/Linux.mk \
|
|
||||||
mozilla/config/NCR.mk \
|
|
||||||
mozilla/config/NEC.mk \
|
|
||||||
mozilla/config/NEWS-OS.mk \
|
|
||||||
mozilla/config/NEXTSTEP.mk \
|
|
||||||
mozilla/config/NetBSD.mk \
|
|
||||||
mozilla/config/OSF1.mk \
|
|
||||||
mozilla/config/OpenBSD.mk \
|
|
||||||
mozilla/config/QNX.mk \
|
|
||||||
mozilla/config/Rhapsody.mk \
|
|
||||||
mozilla/config/SCOOS.mk \
|
|
||||||
mozilla/config/SINIX.mk \
|
|
||||||
mozilla/config/SunOS.mk \
|
|
||||||
mozilla/config/SunOS4.mk \
|
|
||||||
mozilla/config/SunOS5.mk \
|
|
||||||
mozilla/config/UNIXWARE.mk \
|
|
||||||
mozilla/config/common.mk \
|
|
||||||
mozilla/config/config.mk \
|
|
||||||
mozilla/config/coreconf.mk \
|
|
||||||
mozilla/config/rules.mk \
|
|
||||||
mozilla/config/Makefile \
|
|
||||||
mozilla/config/Makefile.in \
|
|
||||||
mozilla/config/autoconf.mk.in \
|
|
||||||
mozilla/config/bdate.c \
|
|
||||||
mozilla/config/bdate.pl \
|
|
||||||
mozilla/config/aboutime.pl \
|
|
||||||
mozilla/config/bsdecho.c \
|
|
||||||
mozilla/config/clobber_miss.pl \
|
|
||||||
mozilla/config/config.guess \
|
|
||||||
mozilla/config/cvsco.pl \
|
|
||||||
mozilla/config/fastcwd.pl \
|
|
||||||
mozilla/config/gtscc.c \
|
|
||||||
mozilla/config/makecopy.c \
|
|
||||||
mozilla/config/mangle.c \
|
|
||||||
mozilla/config/mantomak.c \
|
|
||||||
mozilla/config/mkdepend \
|
|
||||||
mozilla/config/mkdetect \
|
|
||||||
mozilla/config/nfspwd.pl \
|
|
||||||
mozilla/config/nodl.pl \
|
|
||||||
mozilla/config/nsinstall.c \
|
|
||||||
mozilla/config/outofdate.pl \
|
|
||||||
mozilla/config/pathsub.c \
|
|
||||||
mozilla/config/pathsub.h \
|
|
||||||
mozilla/config/pkg2dpth.pl \
|
|
||||||
mozilla/config/ports \
|
|
||||||
mozilla/config/revdepth.pl \
|
|
||||||
mozilla/config/set-timebomb.pl \
|
|
||||||
mozilla/config/sj.pl \
|
|
||||||
mozilla/lib/Makefile \
|
|
||||||
mozilla/lib/Makefile.in \
|
|
||||||
mozilla/modules/edtplug/Makefile \
|
|
||||||
mozilla/modules/edtplug/Makefile.in \
|
|
||||||
mozilla/modules/libfont/jmcgen \
|
|
||||||
mozilla/modules/libfont/Makefile \
|
|
||||||
mozilla/modules/libfont/Makefile.in \
|
|
||||||
mozilla/modules/libfont/producers/Makefile \
|
|
||||||
mozilla/modules/libfont/producers/Makefile.in \
|
|
||||||
mozilla/modules/Makefile \
|
|
||||||
mozilla/modules/Makefile.in \
|
|
||||||
mozilla/modules/progress/Makefile \
|
|
||||||
mozilla/modules/progress/Makefile.in \
|
|
||||||
mozilla/modules/progress/public \
|
|
||||||
mozilla/modules/security/Makefile \
|
|
||||||
mozilla/modules/security/Makefile.in \
|
|
||||||
mozilla/modules/softupdt/Makefile \
|
|
||||||
mozilla/modules/softupdt/Makefile.in \
|
|
||||||
mozilla/modules/zlib/Makefile \
|
|
||||||
mozilla/modules/zlib/Makefile.in \
|
|
||||||
mozilla/nav-java/Makefile \
|
|
||||||
mozilla/nav-java/Makefile.in \
|
|
||||||
mozilla/lib/mariner \
|
|
||||||
JavaStubUnix
|
|
||||||
|
|
||||||
MozillaSourceMacOnly -a \
|
|
||||||
mozilla/config/mac \
|
|
||||||
mozilla/config/bdate.pl \
|
|
||||||
mozilla/config/aboutime.pl \
|
|
||||||
mozilla/config/mac-set-timebomb.pl \
|
|
||||||
mozilla/cmd/macfe \
|
|
||||||
mozilla/lib/mac/AutoAdmin \
|
|
||||||
mozilla/lib/mac/Includes \
|
|
||||||
mozilla/lib/mac/MacMemoryAllocator \
|
|
||||||
mozilla/lib/mac/Misc \
|
|
||||||
mozilla/lib/mac/MoreFiles \
|
|
||||||
mozilla/lib/mac/NSRuntime \
|
|
||||||
mozilla/lib/mac/NSStdLib \
|
|
||||||
mozilla/lib/mac/patches \
|
|
||||||
mozilla/lib/mac/PowerPlant \
|
|
||||||
mozilla/lib/mac/UserInterface \
|
|
||||||
mozilla/modules/coreincl \
|
|
||||||
mozilla/modules/edtplug/macbuild \
|
|
||||||
mozilla/modules/libfont \
|
|
||||||
mozilla/modules/progress/macbuild \
|
|
||||||
mozilla/modules/progress/public \
|
|
||||||
mozilla/modules/softupdt/macbuild \
|
|
||||||
mozilla/modules/zlib/macbuild \
|
|
||||||
mozilla/lib/mariner \
|
|
||||||
JavaStubMac
|
|
||||||
|
|
||||||
JavaStubAll -a \
|
|
||||||
JavaStubWin \
|
|
||||||
JavaStubMac \
|
|
||||||
JavaStubUnix
|
|
||||||
|
|
||||||
JavaStubCore -a \
|
|
||||||
mozilla/sun-java/stubs/include \
|
|
||||||
mozilla/sun-java/stubs/src
|
|
||||||
|
|
||||||
JavaStubMac -a \
|
|
||||||
JavaStubCore \
|
|
||||||
mozilla/sun-java/stubs/macbuild \
|
|
||||||
mozilla/sun-java/stubs/macjri
|
|
||||||
|
|
||||||
JavaStubUnix -a \
|
|
||||||
JavaStubCore \
|
|
||||||
mozilla/sun-java/Makefile \
|
|
||||||
mozilla/sun-java/Makefile.in \
|
|
||||||
mozilla/sun-java/stubs/jri \
|
|
||||||
mozilla/sun-java/stubs/Makefile \
|
|
||||||
mozilla/sun-java/stubs/Makefile.in
|
|
||||||
|
|
||||||
JavaStubWin -a \
|
|
||||||
JavaStubCore \
|
|
||||||
mozilla/sun-java/makefile.win \
|
|
||||||
mozilla/sun-java/stubs/jri \
|
|
||||||
mozilla/sun-java/stubs/makefile.win
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
#
|
|
||||||
# Modules for the raptor layout effort. Note that raptor dist is temporary
|
|
||||||
# until raptor is integrated into the mainline build.
|
|
||||||
#
|
|
||||||
|
|
||||||
RaptorDoc -a \
|
|
||||||
mozilla/LICENSE \
|
|
||||||
mozilla/LEGAL \
|
|
||||||
mozilla/README/nglayout
|
|
||||||
|
|
||||||
RaptorDist -a \
|
|
||||||
mozilla/configure.in \
|
|
||||||
mozilla/allmakefiles.sh \
|
|
||||||
mozilla/Makefile.in \
|
|
||||||
mozilla/makefile.win \
|
|
||||||
mozilla/build \
|
|
||||||
!mozilla/build/mac/client.mac \
|
|
||||||
mozilla/caps \
|
|
||||||
mozilla/config \
|
|
||||||
mozilla/dbm \
|
|
||||||
mozilla/editor \
|
|
||||||
mozilla/include \
|
|
||||||
mozilla/intl \
|
|
||||||
mozilla/jpeg \
|
|
||||||
JSClient \
|
|
||||||
mozilla/lib/liblayer \
|
|
||||||
mozilla/lib/libpwcac \
|
|
||||||
mozilla/lib/xp \
|
|
||||||
mozilla/modules/libimg \
|
|
||||||
mozilla/modules/libjar \
|
|
||||||
mozilla/modules/libpref \
|
|
||||||
mozilla/modules/libreg \
|
|
||||||
mozilla/modules/libutil \
|
|
||||||
mozilla/modules/oji \
|
|
||||||
mozilla/modules/plugin \
|
|
||||||
mozilla/modules/security/freenav \
|
|
||||||
mozilla/modules/zlib \
|
|
||||||
mozilla/nav-java \
|
|
||||||
mozilla/network \
|
|
||||||
mozilla/nsprpub \
|
|
||||||
mozilla/rdf \
|
|
||||||
mozilla/silentdl \
|
|
||||||
mozilla/sun-java \
|
|
||||||
mozilla/xpcom
|
|
||||||
|
|
||||||
RaptorLayout -a \
|
|
||||||
mozilla/base \
|
|
||||||
mozilla/dom \
|
|
||||||
mozilla/gfx \
|
|
||||||
mozilla/expat \
|
|
||||||
mozilla/htmlparser \
|
|
||||||
mozilla/layout \
|
|
||||||
mozilla/view \
|
|
||||||
mozilla/webshell \
|
|
||||||
mozilla/widget
|
|
||||||
|
|
||||||
Raptor -a \
|
|
||||||
RaptorDoc \
|
|
||||||
RaptorDist \
|
|
||||||
RaptorLayout
|
|
||||||
|
|
||||||
RaptorWin -a \
|
|
||||||
Raptor
|
|
||||||
|
|
||||||
RaptorUnix -a \
|
|
||||||
Raptor \
|
|
||||||
mozilla/aclocal.m4 \
|
|
||||||
mozilla/nglayout.mk
|
|
||||||
|
|
||||||
RaptorMac -a \
|
|
||||||
Raptor \
|
|
||||||
mozilla/build/mac \
|
|
||||||
mozilla/cmd/macfe/applevnt \
|
|
||||||
mozilla/cmd/macfe/central \
|
|
||||||
mozilla/cmd/macfe/gui \
|
|
||||||
mozilla/cmd/macfe/include \
|
|
||||||
mozilla/cmd/macfe/pch \
|
|
||||||
mozilla/cmd/macfe/projects \
|
|
||||||
mozilla/cmd/macfe/utility \
|
|
||||||
mozilla/lib/mac/MacMemoryAllocator \
|
|
||||||
mozilla/lib/mac/Misc \
|
|
||||||
mozilla/lib/mac/MoreFiles \
|
|
||||||
mozilla/lib/mac/NSRuntime \
|
|
||||||
mozilla/lib/mac/NSStdLib \
|
|
||||||
mozilla/lib/mac/PowerPlant
|
|
||||||
|
|
||||||
#####################
|
|
||||||
# An all inclusive modules for tinderbox to use
|
|
||||||
#####################
|
|
||||||
|
|
||||||
RaptorAll -a \
|
|
||||||
RaptorWin \
|
|
||||||
RaptorUnix \
|
|
||||||
RaptorMac
|
|
||||||
|
|
||||||
#####################
|
|
||||||
# Transformiix module (xslt processor)
|
|
||||||
#####################
|
|
||||||
|
|
||||||
TransformiixStandalone -a \
|
|
||||||
mozilla/config \
|
|
||||||
mozilla/expat \
|
|
||||||
mozilla/extensions/transformiix
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Modules for the Directory SDK. There are two users of the libldap
|
|
||||||
# Mozilla and the DirectorySDK. Maintained by Chuck Boatwright
|
|
||||||
# cboatwri@netscape.com
|
|
||||||
#
|
|
||||||
|
|
||||||
DirectorySDKSource -a \
|
|
||||||
DirectorySDKSourceCommon \
|
|
||||||
DirectorySDKSourceBuild
|
|
||||||
|
|
||||||
DirectorySDKSourceC -a \
|
|
||||||
mozilla/directory/ldapsdk.mak \
|
|
||||||
mozilla/directory/ldapsdk.mk \
|
|
||||||
mozilla/directory/buildsdk.txt \
|
|
||||||
mozilla/directory/Makefile \
|
|
||||||
mozilla/directory/c-sdk
|
|
||||||
|
|
||||||
DirectorySDKSourceJava -a \
|
|
||||||
mozilla/directory/buildjsdk.txt \
|
|
||||||
mozilla/directory/java-sdk
|
|
||||||
|
|
||||||
DirectorySDKSourceCommon -a \
|
|
||||||
DirectorySDKSourceC \
|
|
||||||
DirectorySDKSourceJava
|
|
||||||
|
|
||||||
DirectorySDKSourceBuild -a \
|
|
||||||
mozilla/config \
|
|
||||||
mozilla/nsprpub
|
|
||||||
|
|
||||||
PerLDAP -a \
|
|
||||||
mozilla/directory/perldap
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Modules for the Messenging Server SDK. Code maintained by Prasad Yendluri
|
|
||||||
# (prasad@netscape.com)
|
|
||||||
#
|
|
||||||
|
|
||||||
MessagingSDK -a \
|
|
||||||
mozilla/msgsdk
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Modules for Calendar client.
|
|
||||||
# (spider@netscape.com)
|
|
||||||
#
|
|
||||||
|
|
||||||
CalendarClient -a \
|
|
||||||
mozilla/calendar \
|
|
||||||
mozilla/modules/calendar \
|
|
||||||
mozilla/htmlparser \
|
|
||||||
mozilla/gconfig \
|
|
||||||
mozilla/gfx \
|
|
||||||
mozilla/widget \
|
|
||||||
mozilla/xpfc \
|
|
||||||
mozilla/view
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Modules for the JavaScript
|
|
||||||
# (fur@netscape.com)
|
|
||||||
#
|
|
||||||
|
|
||||||
JSRef -a \
|
|
||||||
mozilla/js/src
|
|
||||||
|
|
||||||
#
|
|
||||||
# Can't pull all of js/src, because the server-style config filenames
|
|
||||||
# are illegal on some operating systems.
|
|
||||||
#
|
|
||||||
JSClient -a \
|
|
||||||
mozilla/js/Makefile.in \
|
|
||||||
mozilla/js/makefile.win \
|
|
||||||
mozilla/js/macbuild \
|
|
||||||
mozilla/js/src \
|
|
||||||
mozilla/js/.cvsignore \
|
|
||||||
!mozilla/js/src/config \
|
|
||||||
!mozilla/js/src/editline \
|
|
||||||
!mozilla/js/src/liveconnect/config \
|
|
||||||
!mozilla/js/src/mininspr \
|
|
||||||
!mozilla/js/src/os \
|
|
||||||
!mozilla/js/src/perlconnect \
|
|
||||||
!mozilla/js/src/sh \
|
|
||||||
!mozilla/js/src/xpcom
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Modules for SeaMonkey
|
|
||||||
# (5.0 Browser and 5.0 Mail/News based on nglayout)
|
|
||||||
#
|
|
||||||
# Initial wild ass guess: cyeh@netscape.com
|
|
||||||
# Second guess: mcafee@netscape.com
|
|
||||||
#
|
|
||||||
# We might want to do the platform-specific stuff like:
|
|
||||||
# SeaMonkeyCoreFoo = SeaMonkeyCore + <stuff for platform Foo>
|
|
||||||
# and so on, for each module.
|
|
||||||
#
|
|
||||||
|
|
||||||
NSPR -a \
|
|
||||||
mozilla/nsprpub
|
|
||||||
|
|
||||||
SeaMonkeyCore -a \
|
|
||||||
mozilla/.cvsignore \
|
|
||||||
mozilla/README \
|
|
||||||
mozilla/README.txt \
|
|
||||||
mozilla/client.mk \
|
|
||||||
mozilla/client.mak \
|
|
||||||
mozilla/configure \
|
|
||||||
mozilla/configure.in \
|
|
||||||
mozilla/allmakefiles.sh \
|
|
||||||
mozilla/Makefile.in \
|
|
||||||
mozilla/makefile.win \
|
|
||||||
mozilla/aclocal.m4 \
|
|
||||||
mozilla/build \
|
|
||||||
!mozilla/build/mac/client.mac \
|
|
||||||
mozilla/caps \
|
|
||||||
mozilla/config \
|
|
||||||
mozilla/dbm \
|
|
||||||
mozilla/db/.cvsignore \
|
|
||||||
mozilla/db/Makefile.in \
|
|
||||||
mozilla/db/makefile.win \
|
|
||||||
mozilla/db/mork \
|
|
||||||
mozilla/db/mdb \
|
|
||||||
mozilla/docshell \
|
|
||||||
mozilla/embedding \
|
|
||||||
mozilla/gc/boehm \
|
|
||||||
mozilla/include \
|
|
||||||
mozilla/intl \
|
|
||||||
mozilla/jpeg \
|
|
||||||
mozilla/js/jsd \
|
|
||||||
!mozilla/js/jsd/jsdb \
|
|
||||||
!mozilla/js/jsd/classes \
|
|
||||||
!mozilla/js/jsd/corba \
|
|
||||||
!mozilla/js/jsd/java \
|
|
||||||
!mozilla/js/jsd/javawrap \
|
|
||||||
JSClient \
|
|
||||||
mozilla/lib/mac/MacMemoryAllocator \
|
|
||||||
mozilla/lib/mac/Misc \
|
|
||||||
mozilla/lib/mac/MoreFiles \
|
|
||||||
mozilla/lib/mac/NSRuntime \
|
|
||||||
mozilla/lib/mac/NSStdLib \
|
|
||||||
mozilla/lib/mac/NSStartup \
|
|
||||||
mozilla/lib/mac/PowerPlant \
|
|
||||||
mozilla/lib/mac/InterfaceLib \
|
|
||||||
mozilla/lib/mac/embedding \
|
|
||||||
mozilla/modules/appfilelocprovider \
|
|
||||||
mozilla/modules/libimg \
|
|
||||||
mozilla/modules/libjar \
|
|
||||||
mozilla/modules/libpref \
|
|
||||||
mozilla/modules/libreg \
|
|
||||||
mozilla/modules/libutil \
|
|
||||||
mozilla/modules/mpfilelocprovider \
|
|
||||||
mozilla/modules/oji \
|
|
||||||
mozilla/modules/plugin \
|
|
||||||
mozilla/modules/security/freenav \
|
|
||||||
mozilla/modules/staticmod \
|
|
||||||
mozilla/modules/zlib \
|
|
||||||
mozilla/nav-java \
|
|
||||||
mozilla/network \
|
|
||||||
mozilla/netwerk \
|
|
||||||
mozilla/nglayout.mk \
|
|
||||||
mozilla/plugin/oji/MRJ \
|
|
||||||
mozilla/profile \
|
|
||||||
mozilla/rdf \
|
|
||||||
mozilla/string \
|
|
||||||
mozilla/sun-java \
|
|
||||||
mozilla/tools/leaky \
|
|
||||||
mozilla/tools/preloader \
|
|
||||||
mozilla/tools/elf-dynstr-gc \
|
|
||||||
mozilla/uriloader \
|
|
||||||
mozilla/xpcom \
|
|
||||||
mozilla/xpinstall \
|
|
||||||
MozillaLicense
|
|
||||||
|
|
||||||
SeaMonkeyLayout -a \
|
|
||||||
SeaMonkeyCore \
|
|
||||||
mozilla/content \
|
|
||||||
mozilla/dom \
|
|
||||||
mozilla/gfx \
|
|
||||||
mozilla/htmlparser \
|
|
||||||
mozilla/layout \
|
|
||||||
mozilla/view \
|
|
||||||
mozilla/webshell \
|
|
||||||
mozilla/widget \
|
|
||||||
mozilla/expat
|
|
||||||
|
|
||||||
SeaMonkeyXPToolKit -a \
|
|
||||||
SeaMonkeyLayout \
|
|
||||||
mozilla/themes \
|
|
||||||
mozilla/xpfe
|
|
||||||
|
|
||||||
SeaMonkeyBrowser -a \
|
|
||||||
mozilla/directory/xpcom \
|
|
||||||
mozilla/editor/Makefile.in \
|
|
||||||
mozilla/editor/public \
|
|
||||||
mozilla/extensions \
|
|
||||||
SeaMonkeyXPToolKit
|
|
||||||
|
|
||||||
# This needs work!
|
|
||||||
SeaMonkeyMailNews -a \
|
|
||||||
SeaMonkeyLayout \
|
|
||||||
mozilla/mailnews \
|
|
||||||
!mozilla/mailnews/db/mdb \
|
|
||||||
!mozilla/mailnews/db/mork \
|
|
||||||
|
|
||||||
SeaMonkeyEditor -a \
|
|
||||||
SeaMonkeyBrowser \
|
|
||||||
mozilla/editor \
|
|
||||||
mozilla/mailnews
|
|
||||||
|
|
||||||
SeaMonkeyL10n -a \
|
|
||||||
mozilla/l10n/makefile.win \
|
|
||||||
mozilla/l10n/makefiles.all \
|
|
||||||
mozilla/l10n/Makefile.in \
|
|
||||||
mozilla/l10n/langpacks/makefile.win \
|
|
||||||
mozilla/l10n/langpacks/Makefile.in \
|
|
||||||
mozilla/l10n/langpacks/en-DE \
|
|
||||||
mozilla/l10n/langpacks/en-GB
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
# This module is the whole banana, and this
|
|
||||||
# is the module that tinderbox and bonsai should
|
|
||||||
# track.
|
|
||||||
#
|
|
||||||
# Right now Editor pulls Browser which pulls XPToolKit
|
|
||||||
# which pulls Layout which pulls Core. But eventually,
|
|
||||||
# there will be more differentiation and uniqueness so
|
|
||||||
# All will need to contain more than Editor. Perhaps it
|
|
||||||
# will contain SeaMonkeyUnix, SeaMonkeyMac, SeaMonkeyWin
|
|
||||||
# et cetera, et cetera, et cetera. But that is in the
|
|
||||||
# future. --sarah
|
|
||||||
#
|
|
||||||
|
|
||||||
SeaMonkeyAll -a \
|
|
||||||
SeaMonkeyEditor \
|
|
||||||
SeaMonkeyL10n
|
|
||||||
|
|
||||||
Blackwood -a \
|
|
||||||
mozilla/java
|
|
||||||
|
|
||||||
SeaMonkeyBlackwood -a \
|
|
||||||
SeaMonkeyAll \
|
|
||||||
Blackwood
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
#
|
|
||||||
# Alexander Larsson's GTK+ widget for embedding mozilla into
|
|
||||||
# gtk applications.
|
|
||||||
#
|
|
||||||
#############################################################
|
|
||||||
GtkMozilla -a \
|
|
||||||
mozilla/webshell/embed/gtk
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
#
|
|
||||||
# Modules For Webtools
|
|
||||||
#
|
|
||||||
#############################################################
|
|
||||||
Bugzilla -a \
|
|
||||||
mozilla/webtools/bugzilla
|
|
||||||
Bonsai -a \
|
|
||||||
mozilla/webtools/bonsai
|
|
||||||
LXR -a \
|
|
||||||
mozilla/webtools/lxr
|
|
||||||
Tinderbox -a \
|
|
||||||
mozilla/webtools/tinderbox
|
|
||||||
Webtools -a \
|
|
||||||
Bugzilla \
|
|
||||||
Bonsai \
|
|
||||||
LXR \
|
|
||||||
Tinderbox
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
#
|
|
||||||
# Module for iPlanet Network Security Services
|
|
||||||
#
|
|
||||||
#############################################################
|
|
||||||
NSS -a \
|
|
||||||
mozilla/security/nss \
|
|
||||||
mozilla/security/coreconf
|
|
||||||
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
#
|
|
||||||
# Module for Mozilla Tinderbox
|
|
||||||
#
|
|
||||||
#############################################################
|
|
||||||
MozillaTinderboxAll -a \
|
|
||||||
SeaMonkeyAll \
|
|
||||||
mozilla/security/psm \
|
|
||||||
mozilla/accessible \
|
|
||||||
mozilla/gfx2 \
|
|
||||||
mozilla/modules/libpr0n
|
|
||||||
# commenting out NSS because the client uses a static tag so watching
|
|
||||||
# checkins as they happen is of no use to us
|
|
||||||
# NSS \
|
|
||||||
# commenting out NSPR because tinderbox is broken in such a way that
|
|
||||||
# checkins to the branch (which we care about) do not show up but
|
|
||||||
# checkins do the tip (which we don't care about) do. Getting rid of
|
|
||||||
# this so its not 100% false positives.
|
|
||||||
# NSPR \
|
|
||||||
# same with ldap
|
|
||||||
# mozilla/directory/c-sdk
|
|
||||||
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
# The "notify" file controls where notifications from watches set by
|
|
||||||
# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
|
|
||||||
# a regular expression which is tested against the directory that the
|
|
||||||
# change is being made to, relative to the $CVSROOT. If it matches,
|
|
||||||
# then the remainder of the line is a filter program that should contain
|
|
||||||
# one occurrence of %s for the user to notify, and information on its
|
|
||||||
# standard input.
|
|
||||||
#
|
|
||||||
# "ALL" or "DEFAULT" can be used in place of the regular expression.
|
|
||||||
#
|
|
||||||
# For example:
|
|
||||||
#ALL mail %s -s "CVS notification"
|
|
||||||
|
|
||||||
ALL $CVSROOT/CVSROOT/sendnotification.pl %s
|
|
||||||
379
CVSROOT/passwd
379
CVSROOT/passwd
@ -1,379 +0,0 @@
|
|||||||
# DO NOT EDIT THIS FILE! You must instead go to http://warp/mozilla.org, and
|
|
||||||
# tweak things from there.
|
|
||||||
aaronl%netscape.com:S0MUPohMWfaMo:cvsuser
|
|
||||||
agulbra%troll.no:lETTiVluCyWos:cvsuser
|
|
||||||
akhil.arora%sun.com:tG7tQfICukUNg:cvsuser
|
|
||||||
akkana%netscape.com:/6KEK8AoMvE26:cvsuser
|
|
||||||
alecf%netscape.com:xY/EzwiSEg43U:cvsuser
|
|
||||||
alex.fritze%crocodile-clips.com:.qnz.iJA.rUaQ:cvsuser
|
|
||||||
alexsavulov%netscape.com:NL.2.L.pOoEE.:cvsuser
|
|
||||||
alla%lysator.liu.se:PfaCJJD7S/Vyc:cvsuser
|
|
||||||
amardare%qnx.com:p3TTBfjz3CQ1A:cvsuser
|
|
||||||
amusil%netscape.com:WOEqI48Qb5sRw:cvsuser
|
|
||||||
anatoliya%netscape.com:gzzdCC45etLpk:cvsuser
|
|
||||||
andreas.otte%debitel.net:kydQ2aAIGwhkA:cvsuser
|
|
||||||
andrew%redhat.com:Q5vhhvO.ksq/E:cvsuser
|
|
||||||
andreww%netscape.com:VDb/gyVOKB8gg:cvsuser
|
|
||||||
ann.adamcik%sun.com:McRIlR2v7WMXQ:cvsuser
|
|
||||||
ann.sunhachawee%eng.sun.com:acFpiClWrngnU:cvsuser
|
|
||||||
anthonyd%netscape.com:3cZ8Ug3ggdAfE:cvsuser
|
|
||||||
aoki%netscape.com:eU12jN9/L2XPw:cvsuser
|
|
||||||
arielb%rice.edu:18fBUQf4tjW/Y:cvsuser
|
|
||||||
arik%netscape.com:45a5ceCCif2A6:cvsuser
|
|
||||||
arougthopher%lizardland.net:A/x64t5yyAkWE:cvsuser
|
|
||||||
arshad%netscape.com:FdntM58EL9wNI:cvsuser
|
|
||||||
asa%mozilla.org:KwQFH5YHrDGVw:cvsuser
|
|
||||||
ashishbhatt%netscape.com:hAtS/UPSRHvCg:cvsuser
|
|
||||||
ashuk%eng.sun.com:QrgopBbFpT10Y:cvsuser
|
|
||||||
attinasi%netscape.com:KQdxTI4aFdReA:cvsuser
|
|
||||||
av%netscape.com:GZ3mu2MifoZiU:cvsuser
|
|
||||||
axel%pike.org:mbSWqS64YZTQw:cvsuser
|
|
||||||
badami%netscape.com:EHJb/laen2MnI:cvsuser
|
|
||||||
bae%sparc.spb.su:Q2qzYOL6zE5.I:cvsuser
|
|
||||||
bbaetz%student.usyd.edu.au:JhmLaLDTsT/h2:cvsuser
|
|
||||||
beard%netscape.com:2Eed7KIBNPtL6:cvsuser
|
|
||||||
ben%netscape.com:7l9euazKDQhxk:cvsuser
|
|
||||||
bernd.mielke%snafu.de:diOpGSeH3syIs:cvsuser
|
|
||||||
bhart00%yahoo.com:I8ZZbYIQL/1O2:cvsuser
|
|
||||||
bienvenu%netscape.com:dzcEj09V1HQLg:cvsuser
|
|
||||||
bishakhabanerjee%netscape.com:bLgNOlaDbR.lc:cvsuser
|
|
||||||
bjorn%netscape.com:AXNpUjWR2SG7w:cvsuser
|
|
||||||
blakeross%telocity.com:iecsxCayirMQw:cvsuser
|
|
||||||
blizzard%redhat.com:W86ZbnavsJzxk:cvsuser
|
|
||||||
blythe%netscape.com:UXnssIXpwUtBU:cvsuser
|
|
||||||
bmartin%netscape.com:VDvmT5ew0s2Uk:cvsuser
|
|
||||||
bnesse%netscape.com:.a3I0OvXR0BaQ:cvsuser
|
|
||||||
bobj%netscape.com:7.JSRfZiKATA2:cvsuser
|
|
||||||
braddr%puremagic.com:Tzs8cIqrzzC/I:cvsuser
|
|
||||||
brade%netscape.com:ouetdVzWLzsWs:cvsuser
|
|
||||||
bratell%lysator.liu.se:GLG2cm83vaqBk:cvsuser
|
|
||||||
brendan%mozilla.org:q5aR3MqARGBMA:cvsuser
|
|
||||||
briane%qnx.com:pKLtqULcssSZo:cvsuser
|
|
||||||
bruce%cubik.org:.VcS8pxE3d5rQ:cvsuser
|
|
||||||
bryner%netscape.com:gy5stVpStoVNw:cvsuser
|
|
||||||
bsharma%netscape.com:vjlb1xJC7MsAk:cvsuser
|
|
||||||
bstell%ix.netcom.com:/ZdK7gz9SA/RU:cvsuser
|
|
||||||
bzbarsky%mit.edu:YySJ0ECW0UqcM:cvsuser
|
|
||||||
caillon%returnzero.com:crXJoEJGqOt1c:cvsuser
|
|
||||||
carl.wong%intel.com:60H5NoMHeEpvI:cvsuser
|
|
||||||
cathleen%netscape.com:g4oBIcfbxZzt.:cvsuser
|
|
||||||
cavin%netscape.com:.z6/IPC/6uaFo:cvsuser
|
|
||||||
cbiesinger%web.de:SmMxtOg6tGNJg:cvsuser
|
|
||||||
ccarlen%netscape.com:KYg00rzfYX4vs:cvsuser
|
|
||||||
chak%netscape.com:muP/8gmdIYQgM:cvsuser
|
|
||||||
chofmann%netscape.com:cz7t9v10f9566:cvsuser
|
|
||||||
Chris.Yeh%nokia.com:98WX9EeAZIt/6:cvsadm
|
|
||||||
chrisk%netscape.com:iAECHtKFagLSw:cvsuser
|
|
||||||
chuang%netscape.com:fLaH9mJOJ5IE.:cvsuser
|
|
||||||
claudius%netscape.com:gJezy23y0r4wI:cvsuser
|
|
||||||
cls%seawood.org:YLAr7ajnaXezg:cvsuser
|
|
||||||
cltbld%netscape.com:mla4CZgCloBSU:cvsuser
|
|
||||||
cmanske%netscape.com:wZ2fFz6Y4JIkk:cvsuser
|
|
||||||
colin%theblakes.com:1fbT0DKTKXTsk:cvsuser
|
|
||||||
colinp%oeone.com:o4A5a8g5U/tO2:cvsuser
|
|
||||||
cotter%netscape.com:JZ1rqINZKa.Ig:cvsuser
|
|
||||||
curt%netscape.com:qV4ICuSHeRnOw:cvsuser
|
|
||||||
dac%x.cx:xZwzT4et.TSYY:cvsuser
|
|
||||||
Dale.Stansberry%Nexwarecorp.com:iFmg8YUyFSpA.:cvsuser
|
|
||||||
danm%netscape.com:3h6FdkzmMqnyA:cvsuser
|
|
||||||
darin%netscape.com:BFlqb/kSuCdKo:cvsuser
|
|
||||||
dbaron%fas.harvard.edu:z3R2dyupEH6yk:cvsuser
|
|
||||||
dbradley%netscape.com:EOOl4wp9MNcU6:cvsuser
|
|
||||||
dbragg%netscape.com:k34vc.FRrLRYI:cvsuser
|
|
||||||
dcone%netscape.com:dWcV1sBlGlAHU:cvsuser
|
|
||||||
ddrinan%netscape.com:4vs6JokcLeYkQ:cvsuser
|
|
||||||
dean.jackson%cmis.csiro.au:CP7hJzztTs3Es:cvsuser
|
|
||||||
dean_tessman%hotmail.com:AM2BZ7M0nDhlM:cvsuser
|
|
||||||
depstein%netscape.com:nMGeNsPMko07s:cvsuser
|
|
||||||
despotdaemon%netscape.com:zJJgZOGMRo/FE:cvsadm
|
|
||||||
dianesun%netscape.com:xSYSoEpExmrLU:cvsuser
|
|
||||||
dinglis%qnx.com:ox85zqaZiiSk6:cvsuser
|
|
||||||
dkl%redhat.com:Jb37f1UZbg4g2:cvsuser
|
|
||||||
dmose%mozilla.org:sTIo1zYddteQc:cvsadm
|
|
||||||
dmose%netscape.com:kskyAAnpkNv6c:cvsadm
|
|
||||||
don%netscape.com:WNOsUIYwq8aSw:cvsuser
|
|
||||||
donley%tekka.wwa.com:ZdWwac/UPNyG.:cvsuser
|
|
||||||
donm%bluemartini.com:bKHsN8gBK/fp2:cvsuser
|
|
||||||
dougt%netscape.com:6Dpld8jLb0Mcg:cvsuser
|
|
||||||
dp%netscape.com:jt.S0eDMnQVDo:cvsuser
|
|
||||||
dprice%netscape.com:rGU08EfoiqRFk:cvsuser
|
|
||||||
dr%sleepy.at:vG1uOW9SKYi0o:cvsuser
|
|
||||||
drapeau%eng.sun.com:c3eJX2LEODkpI:cvsuser
|
|
||||||
drepper%cygnus.com:p/CH9PcK4BRCs:cvsuser
|
|
||||||
driehuis%playbeing.org:BbR6IahGk6yGc:cvsuser
|
|
||||||
dsirnapalli%netscape.com:hbQy6f/ZU4m7o:cvsuser
|
|
||||||
ducarroz%netscape.com:B9ih04P7FDhrg:cvsuser
|
|
||||||
duncan%be.com:Y6cnDOpZS9W0.:cvsuser
|
|
||||||
dveditz%netscape.com:S1X7iuOVZr0tI:cvsuser
|
|
||||||
dwhoward%earthling.net:Fll3t.CIpLlCU:cvsuser
|
|
||||||
edburns%acm.org:z7zqfOtPH9oic:cvsuser
|
|
||||||
eddyk%netscape.com:dwAKpPCedFZos:cvsuser
|
|
||||||
edwin%woudt.nl:8dZB6Qv1GFw4E:cvsuser
|
|
||||||
endico%mozilla.org:yXO.M/SUdhzAc:cvsadm
|
|
||||||
eric%droidlogic.com:G0SdDP5pMwVew:cvsuser
|
|
||||||
ericb%neoplanet.com:D63L651L6w.a2:cvsuser
|
|
||||||
erik%netscape.com:.yO3dSzx4Ixf.:cvsuser
|
|
||||||
exv%randomc.com:TuqUP2cz/Q0gU:cvsuser
|
|
||||||
eyork%netscape.com:VrUopS3iDoSJc:cvsuser
|
|
||||||
friedman%splode.com:mZ5UQ4/qb5h3E:cvsadm
|
|
||||||
ftang%netscape.com:cjA4Oe7qangyQ:cvsuser
|
|
||||||
gagan%netscape.com:aJDYc91m7tmpI:cvsuser
|
|
||||||
gayatrib%netscape.com:ELHSlB.ndtTwI:cvsuser
|
|
||||||
german%netscape.com:vDZXBxE0m3/5w:cvsuser
|
|
||||||
gerv%gerv.net:/3awrKKpfLPvQ:cvsuser
|
|
||||||
girish.manwani%eng.sun.com:0Nm63TloVl5Rw:cvsuser
|
|
||||||
glazman%netscape.com:voZRrCYpgF9AU:cvsuser
|
|
||||||
glen.beasley%sun.com:Bg3n.ccr13OvI:cvsuser
|
|
||||||
gordon%netscape.com:MCComT.xg8/GM:cvsuser
|
|
||||||
grail%cafebabe.org:KsBL5nzVbWFC6:cvsuser
|
|
||||||
granrose%netscape.com:xndKEgLhYUUUY:cvsuser
|
|
||||||
guru%startrek.com:FeXuLzEvXT132:cvsuser
|
|
||||||
hangas%netscape.com:jKdYm.LiDEW2c:cvsuser
|
|
||||||
harish%netscape.com:6NzUiwHrF2piQ:cvsuser
|
|
||||||
harishd%netscape.com:A0zdbDQ36sqs.:cvsuser
|
|
||||||
heikki%netscape.com:52AbDkgxmkRfY:cvsuser
|
|
||||||
hewitt%netscape.com:pE1RTplEofSd2:cvsuser
|
|
||||||
hidday%geocities.com:A1nFYdvMQRKDI:cvsuser
|
|
||||||
hong.lu%eng.sun.com:ub28mE.N622oQ:cvsuser
|
|
||||||
hwaara%chello.se:74eCB7AZi/Bm2:cvsuser
|
|
||||||
hyatt%netscape.com:/Sepj5wnpvupA:cvsuser
|
|
||||||
ian.mcgreer%sun.com:86YhVbbpm8aZ2:cvsuser
|
|
||||||
ian%hixie.ch:nibu2mA5/kgco:cvsuser
|
|
||||||
idk%eng.sun.com:hGFoMfxrF7eCM:cvsuser
|
|
||||||
igor%mir2.org:MM9XCaPQ9hSyA:cvsuser
|
|
||||||
inaky.gonzalez%intel.com:S7JSies.2wToc:cvsuser
|
|
||||||
inn%sparc.spb.su:YAofF66Hjffik:cvsuser
|
|
||||||
jab%atdot.org:EQ0cIL6giNkWw:cvsuser
|
|
||||||
jaggernaut%netscape.com:JfxrrkZerNZv.:cvsuser
|
|
||||||
jake%acutex.net:mjldF4ES.KxbI:cvsuser
|
|
||||||
janc%netscape.com:Cv4z.zALqxr1M:cvsuser
|
|
||||||
jar%netscape.com:kgQFLFiUh0hoc:cvsuser
|
|
||||||
jat%princeton.edu:0P0EK1s5q3OCk:cvsuser
|
|
||||||
javi%netscape.com:WkJc6UpXUyLVw:cvsuser
|
|
||||||
jayashri.visvanathan%sun.com:7fdqZHWKclkck:cvsuser
|
|
||||||
jband%netscape.com:jc1KB4qvBDWxE:cvsuser
|
|
||||||
jcgriggs%sympatico.ca:hQ/ITeFfitEvw:cvsuser
|
|
||||||
jdunn%netscape.com:nwle/bqcCtTMA:cvsuser
|
|
||||||
jeff.dyer%compilercompany.com:O.dwVxqCyvmqQ:cvsuser
|
|
||||||
jefft%netscape.com:uEhLAvoBHSlBc:cvsuser
|
|
||||||
jelwell%netscape.com:phAeFbVmVsIFg:cvsuser
|
|
||||||
Jerry.Kirk%Nexwarecorp.com:iSvw9A.T6nH6w:cvsuser
|
|
||||||
jfrancis%netscape.com:n8gH7es/9NB6U:cvsuser
|
|
||||||
jg%meer.net:gimPrIwXcAep2:cvsuser
|
|
||||||
jgaunt%netscape.com:bwZbPN1gYEnPo:cvsuser
|
|
||||||
jglick%netscape.com:MW7f8SLLptnEw:cvsuser
|
|
||||||
jgmyers%netscape.com:tj/q7ALULIlLM:cvsuser
|
|
||||||
jhuntley%julian.uwo.ca:0Kp/QUcK6Vb26:cvsuser
|
|
||||||
jimmylee%netscape.com:QRGr4KRc3Bjvc:cvsuser
|
|
||||||
jim_nance%yahoo.com:MW2pItooimXQc:cvsuser
|
|
||||||
jj%netscape.com:Slemj8mwbIPao:cvsadm
|
|
||||||
jkeiser%netscape.com:7BrSo3.f8G5Gw:cvsuser
|
|
||||||
jmas%softcatala.org:PmaWVAdMzkM7A:cvsuser
|
|
||||||
joe.chou%sun.com:peT1nWrch0xGo:cvsuser
|
|
||||||
john.marmion%ireland.sun.com:c6A3GBlY0bSbU:cvsuser
|
|
||||||
John.Wilson%Nexwarecorp.com:hfzTdvMI7KleY:cvsuser
|
|
||||||
joki%netscape.com:MnZq0Nx3SCImc:cvsuser
|
|
||||||
jonas.utterstrom%vittran.norrnod.se:Yq1pP.nR9EEcY:cvsuser
|
|
||||||
jpierre%netscape.com:2ebjC0cACURyU:cvsuser
|
|
||||||
jrgm%netscape.com:3ix9Y5PU9Qruw:cvsuser
|
|
||||||
jruderman%hmc.edu:g7P13IEb8ACms:cvsuser
|
|
||||||
jshin%mailaps.org:j6/TcPcy/KYgg:cvsuser
|
|
||||||
jst%netscape.com:ry1WSdsxrYVhg:cvsuser
|
|
||||||
jsun%netscape.com:coq.3Xx7ARTjs:cvsuser
|
|
||||||
justdave%syndicomm.com:gH/q.1W.wLBGQ:cvsuser
|
|
||||||
jwz%mozilla.org:OdVBvbcKAZC5c:cvsuser
|
|
||||||
kaie%netscape.com:.hgVIsvtes.Fw:cvsuser
|
|
||||||
karnaze%netscape.com:C.H2iRqFy7CnY:cvsuser
|
|
||||||
katakai%japan.sun.com:qJPfrx26UNm2.:cvsuser
|
|
||||||
kbaker%eb.com:jQBbk4NHGcX0I:cvsuser
|
|
||||||
kestes%walrus.com:5Ld0f8MhzQggw:cvsuser
|
|
||||||
kevin%perldap.org:OR9AnICPijq1g:cvsuser
|
|
||||||
khanson%netscape.com:TFWnuwfuYSFnI:cvsuser
|
|
||||||
kiko%async.com.br:Uz8pBMTzv6gpo:cvsuser
|
|
||||||
kin%netscape.com:RexUJ7MbhHOeE:cvsuser
|
|
||||||
kirk.erickson%sun.com:2ju/p7xptfkFQ:cvsuser
|
|
||||||
kmcclusk%netscape.com:KiXYwpHlCP1nE:cvsuser
|
|
||||||
koehler%mythrium.com:0vfTLcKn6XhV6:cvsuser
|
|
||||||
kvisco%ziplink.net:7u.twuUBsFGJA:cvsuser
|
|
||||||
laa%sparc.spb.su:xaXKTqerGGoxE:cvsuser
|
|
||||||
law%netscape.com:QQU7Gc4FME9Ek:cvsuser
|
|
||||||
leaf%mozilla.org:u8bmgbEVjQQ6k:cvsadm
|
|
||||||
leaf%netscape.com:mpuxvp6/BLA02:cvsuser
|
|
||||||
leif%ogre.com:T8QO0FEdoLHd2:cvsuser
|
|
||||||
leila.garin%eng.sun.com:Cz4LcsTHYzTwk:cvsuser
|
|
||||||
loadrunner%betak.net:IUk5X6IaJ5fTM:cvsuser
|
|
||||||
locka%iol.ie:Odt22ztoqh7Pc:cvsuser
|
|
||||||
lordpixel%mac.com:5d2.szagWZ00M:cvsuser
|
|
||||||
louis.martin%eng.sun.com:QsJ91Lm0/Y/0Y:cvsuser
|
|
||||||
lpham%netscape.com:E06CUoNSPOyqg:cvsuser
|
|
||||||
lsv%sparc.spb.su:owGMQKmCe2l1M:cvsuser
|
|
||||||
malini%eng.sun.com:V9F6kZpJe8HNc:cvsuser
|
|
||||||
mang%subcarrier.org:VuSc/CvF/y94A:cvsuser
|
|
||||||
manpreet.singh%sun.com:BWz7bfdfwrbEI:cvsuser
|
|
||||||
maolson%earthlink.net:k1eI.1dDx/fkI:cvsuser
|
|
||||||
margaret.chan%sun.com:W3v8XaNRwpmZY:cvsuser
|
|
||||||
martinl%netscape.com:AeYccd2rbGj7.:cvsuser
|
|
||||||
matt%netscape.com:HV1zrCvpyT7Mk:cvsuser
|
|
||||||
matthias%sorted.org:OzME313V9XMNo:cvsuser
|
|
||||||
matty%chariot.net.au:c/z7/vNQ/Vv1I:cvsuser
|
|
||||||
mbarnson%sisna.com:hRMbA3bW5q6Ak:cvsuser
|
|
||||||
mcafee%netscape.com:Y/0zK7Dff2W8.:cvsadm
|
|
||||||
mcs%netscape.com:1K9aYq1ivwd6s:cvsuser
|
|
||||||
mhammond%skippinet.com.au:T1kpFNZuhvQ0I:cvsuser
|
|
||||||
mhein%sun.com:zDB.Gdg/nMOq6:cvsuser
|
|
||||||
Michael.Kedl%Nexwarecorp.com:/vumJNxEIWQnk:cvsuser
|
|
||||||
michael.lowe%bigfoot.com:SUFJXqQg3gpwo:cvsuser
|
|
||||||
michaelp%meer.net:jB2yR8pV9vSN2:cvsuser
|
|
||||||
mike+mozilla%meer.net:3rKv1ZMBpeR36:cvsuser
|
|
||||||
mike%neoplanet.com:BXgJNsh4IWFgQ:cvsuser
|
|
||||||
mike%wynholds.com:P8iDbiX0p6xzQ:cvsuser
|
|
||||||
mikep%oeone.com:fxxKFOIsaxlQs:cvsuser
|
|
||||||
miodrag%netscape.com:6t6mBrr0.woK6:cvsuser
|
|
||||||
mitchf%netscape.com:SpJhZNzzTZL5E:cvsuser
|
|
||||||
mitesh%netscape.com:i.sMzCUWtOLIA:cvsuser
|
|
||||||
mj%digicool.com:.QcUkkqXQe9kE:cvsuser
|
|
||||||
mjudge%netscape.com:jBw1nVC8B7WBc:cvsuser
|
|
||||||
mkaply%us.ibm.com:7AlaMZqXustsg:cvsuser
|
|
||||||
momoi%netscape.com:cTHpmapFPYprI:cvsuser
|
|
||||||
morse%netscape.com:1f8Ob4wB7JJ5I:cvsuser
|
|
||||||
mostafah%oeone.com:DaYs.xDcUaa72:cvsuser
|
|
||||||
mozilla.BenB%bucksch.org:7/oOTh8e41HmY:cvsuser
|
|
||||||
msanz%netscape.com:llz7R0dXZuYhg:cvsuser
|
|
||||||
mscott%netscape.com:dHLGTClZyMWG6:cvsuser
|
|
||||||
mstoltz%netscape.com:4Ddf36CZMroWw:cvsuser
|
|
||||||
msw%gimp.org:KB4CGqyGWzK5w:cvsuser
|
|
||||||
mwyner%ogre.com:YTb.PSMPtP7Sw:cvsuser
|
|
||||||
myk%mozilla.org:18.V6xy5IQ3Fc:cvsadm
|
|
||||||
m_kato%ga2.so-net.ne.jp:FoloD5kECUuTo:cvsuser
|
|
||||||
namachi%netscape.com:zKBxsBBzgM18s:cvsuser
|
|
||||||
naving%netscape.com:TqK9Ipga8KNA6:cvsuser
|
|
||||||
nboyd%atg.com:hbKSEw6zIzn8A:cvsuser
|
|
||||||
neeti%netscape.com:q2ekT3ZhwHrKg:cvsuser
|
|
||||||
nelsonb%netscape.com:AVyk3HXWf.ujs:cvsuser
|
|
||||||
newt%pobox.com:OZl987F6kbJt2:cvsuser
|
|
||||||
nhotta%netscape.com:7PCA6ZeTK24HQ:cvsuser
|
|
||||||
nicolson%netscape.com:NbXo/Njwl3DYE:cvsuser
|
|
||||||
nis%sparc.spb.su:qaN5w8ws/GMOI:cvsuser
|
|
||||||
nisheeth%netscape.com:e69IbM7hbpN1c:cvsuser
|
|
||||||
nitinp%netscape.com:k5DQngWmCXDCs:cvsuser
|
|
||||||
nivedita%netscape.com:wKf69WbT9Da8w:cvsuser
|
|
||||||
nsaini%netscape.com:odh8juPJDmNHY:cvsuser
|
|
||||||
oeschger%netscape.com:VbgM7ZeTrBdQc:cvsuser
|
|
||||||
pavel%gingerall.cz:m.6fruuSee/fA:cvsuser
|
|
||||||
pavlov%netscape.com:Wm/3gCaQhXNLo:cvsuser
|
|
||||||
paw%netscape.com:ICTEEvGvrow86:cvsuser
|
|
||||||
pchen%netscape.com:KtnZrWgBfSi/Y:cvsuser
|
|
||||||
pete%alphanumerica.com:8I2QCUKNKooqA:cvsuser
|
|
||||||
peterb%oeone.com:TxT4Q17V0YIp6:cvsuser
|
|
||||||
peterl%netscape.com:8x3YXhSeI77Sc:cvsuser
|
|
||||||
peterlubczynski%netscape.com:kSPTyFx/Yg.0M:cvsuser
|
|
||||||
peterv%netscape.com:tknmYRfnctNHY:cvsuser
|
|
||||||
petitta%netscape.com:4cZ7bPpdZU2Mo:cvsuser
|
|
||||||
pierre%netscape.com:/6xa.CBcV07tE:cvsuser
|
|
||||||
pinkerton%netscape.com:SXjRJmDJDtb1U:cvsuser
|
|
||||||
pnunn%netscape.com:VjAEnG0V6mLLY:cvsuser
|
|
||||||
pp%ludusdesign.com:G0MYIuYvwPznk:cvsuser
|
|
||||||
prass%netscape.com:FR60OL5/QxDWQ:cvsuser
|
|
||||||
pschwan%cmu.edu:UDRUgnwe0.8YM:cvsuser
|
|
||||||
pschwartau%netscape.com:MEim3s/EIZWs6:cvsuser
|
|
||||||
putterman%netscape.com:CRfRGZi9Nrtg6:cvsuser
|
|
||||||
quy%igelaus.com.au:x9H1aMz3jpYUA:cvsuser
|
|
||||||
racham%netscape.com:G3oNVDE5uCV0o:cvsuser
|
|
||||||
radha%netscape.com:E8m/i8B0sIO5k:cvsuser
|
|
||||||
ramiro%eazel.com:04T/4Hcs1Yr/c:cvsadm
|
|
||||||
rangansen%netscape.com:cLfMytTA8Q.aY:cvsuser
|
|
||||||
rayw%netscape.com:tnMNnv234muWY:cvsuser
|
|
||||||
rbs%maths.uq.edu.au:2urVlBcTziPaA:cvsuser
|
|
||||||
rcassin%supernova.org:LN6o5SKL3Eh3E:cvsuser
|
|
||||||
rchen%netscape.com:aur8LEiFViHB2:cvsuser
|
|
||||||
rdayal%netscape.com:wS397S9STmKn6:cvsuser
|
|
||||||
realpeterv%mac.com:03s6xSCMxEKx.:cvsuser
|
|
||||||
relyea%netscape.com:SnAaVLpexLWKw:cvsuser
|
|
||||||
rginda%netscape.com:TRTBrAIOV/zck:cvsuser
|
|
||||||
rhess%engr.sgi.com:ARe9YxMtWywa2:cvsuser
|
|
||||||
rich.burridge%sun.com:ZNt/CGSk1djmE:cvsuser
|
|
||||||
rjc%netscape.com:RVRRe0F5Be03c:cvsuser
|
|
||||||
rjesup%wgate.com:5Ccmc2hO67zAk:cvsuser
|
|
||||||
rko%netscape.com:erIlm8Cr.fpeM:cvsadm
|
|
||||||
robinf%netscape.com:qsizhSBd/KLxw:cvsuser
|
|
||||||
roc+%cs.cmu.edu:T9D7Sx1LV49k6:cvsuser
|
|
||||||
rods%netscape.com:0IcCge9UaI6V6:cvsuser
|
|
||||||
rogc%netscape.com:ggq89u2RGdGyc:cvsuser
|
|
||||||
rogerl%netscape.com:EOrmrYUfmdcOk:cvsuser
|
|
||||||
rpotts%netscape.com:S0L.1Z15bd0qA:cvsuser
|
|
||||||
rth%cygnus.com:PgrJbhkbkSaXM:cvsuser
|
|
||||||
ruslan%netscape.com:D.VKkgUzl9qmo:cvsuser
|
|
||||||
rusty.lynch%intel.com:DhYR6Z5RXyqSk:cvsuser
|
|
||||||
rweltman%netscape.com:sXP4ymRl/iKBg:cvsuser
|
|
||||||
saari%netscape.com:8QO4pF72fYVFo:cvsuser
|
|
||||||
samuel%sieb.net:UyA4IG.2.LceA:cvsuser
|
|
||||||
scc%mozilla.org:rSANuSFML82vc:cvsuser
|
|
||||||
scosta%julian.uwo.ca:S.NZiK1hVwS.Q:cvsuser
|
|
||||||
sdagley%netscape.com:PvYFZiRMRKuG.:cvsuser
|
|
||||||
sdv%sparc.spb.su:o7qyUidRy0Ixw:cvsuser
|
|
||||||
sean%beatnik.com:PUH1uLgUkOHK6:cvsuser
|
|
||||||
seawood%netscape.com:NoNERGlI7IujM:cvsuser
|
|
||||||
selmer%netscape.com:0a0Zn2Mtb9RMM:cvsuser
|
|
||||||
sep%sparc.spb.su:VkGBO1LZNqmcE:cvsuser
|
|
||||||
serge%netscape.com:.fjhetVN42Gtc:cvsuser
|
|
||||||
seth%cs.brandeis.edu:NZh2SXUWQwca2:cvsuser
|
|
||||||
sford3%swbell.net:qiBgt92c4q9VE:cvsuser
|
|
||||||
sfraser%netscape.com:2mFWUaEqjN7lE:cvsuser
|
|
||||||
sgehani%netscape.com:6GHPo3hAIJqxg:cvsuser
|
|
||||||
shanjian%netscape.com:QB8g/ScTxKRkI:cvsuser
|
|
||||||
shannond%netscape.com:oMNCZEJ1DPSKc:cvsuser
|
|
||||||
shaver%mozilla.org:I4.grysVnENVM:cvsadm
|
|
||||||
shawnp%earthling.net:Nkv1/z1WuxbSc:cvsuser
|
|
||||||
sherry.shen%sun.com:NsxfPnTNAkIiA:cvsuser
|
|
||||||
shliang%netscape.com:KO.gzVLb9PrLU:cvsuser
|
|
||||||
shrutiv%netscape.com:3Ve5mvMx.Ze1M:cvsuser
|
|
||||||
sicking%bigfoot.com:HmAX9bYyCA47k:cvsuser
|
|
||||||
sman%netscape.com:gHR2VdSKyaV0Q:cvsuser
|
|
||||||
smeredith%netscape.com:y4A/cyjrQKlq6:cvsuser
|
|
||||||
smontagu%netscape.com:GR7KUGsPjdY/6:cvsuser
|
|
||||||
sonja.mirtitsch%sun.com:wchMbWjVfFXxM:cvsuser
|
|
||||||
srilatha%netscape.com:vn.P0HO0ippg2:cvsuser
|
|
||||||
srinivas%netscape.com:S7u05VkFOtTeQ:cvsuser
|
|
||||||
ssaux%netscape.com:tpL9Gf.XBvolU:cvsuser
|
|
||||||
sspitzer%netscape.com:JlQHq8F/C8kV6:cvsuser
|
|
||||||
ssu%netscape.com:cfNlpxCKVXQtQ:cvsuser
|
|
||||||
stephend%netscape.com:MPo74xU9kvo/M:cvsuser
|
|
||||||
stever%netscape.com:veCWvWkeusc5o:cvsuser
|
|
||||||
subbarao%computer.org:7JjQ.DwpYmX5U:cvsuser
|
|
||||||
suresh%netscape.com:XUIUMLGJA3RZ2:cvsuser
|
|
||||||
svn%xmlterm.org:jJ1wJYK5mkg5M:cvsuser
|
|
||||||
syd%netscape.com:CUkm3PbBnrIsk:cvsuser
|
|
||||||
taek%netscape.com:7oZpC0ix52epo:cvsuser
|
|
||||||
tajima%eng.sun.com:/sI8qG0LRP1mk:cvsuser
|
|
||||||
taka%netscape.com:jPPzAmrbNd1wg:cvsuser
|
|
||||||
talisman%anamorphic.com:KB7aseh1Ssuyg:cvsuser
|
|
||||||
tao%netscape.com:gM5BUf7j12EIc:cvsuser
|
|
||||||
tara%tequilarista.org:tVcSLekcNJsk2:cvsuser
|
|
||||||
tcrowe%netscape.com:mq7wUMii.8yag:cvsuser
|
|
||||||
terry%mozilla.org:sYyehWIbexkrI:cvsadm
|
|
||||||
tfox%netscape.com:tQPZKESPZltZ2:cvsuser
|
|
||||||
tgl%sss.pgh.pa.us:rr7pe1GPkjIw6:cvsuser
|
|
||||||
thayes%netscape.com:CLgsFPZnRpuhM:cvsuser
|
|
||||||
thesteve%netscape.com:35.Khy1IDl2VE:cvsuser
|
|
||||||
timeless%mac.com:oJ1sqLvoXLp7I:cvsuser
|
|
||||||
tingley%sundell.net:dJuhpDRtS9J..:cvsuser
|
|
||||||
tonyr%fbdesigns.com:B1mFZmEmKdg4E:cvsuser
|
|
||||||
tor%cs.brown.edu:.GLVprG/lOpjM:cvsuser
|
|
||||||
toshok%hungry.com:45BYKXpLObZ..:cvsuser
|
|
||||||
troy%netscape.com:Vr9m0vnQR52kY:cvsuser
|
|
||||||
trudelle%netscape.com:kguEx2XoA/qOQ:cvsuser
|
|
||||||
val4%cornell.edu:.MA49sSDjYK66:cvsuser
|
|
||||||
valeski%netscape.com:UQIy1R23X0tnc:cvsuser
|
|
||||||
varada%netscape.com:/PHzlvLt1d/Pk:cvsuser
|
|
||||||
varga%utcru.sk:itS5ZJXFiEJC2:cvsuser
|
|
||||||
vidur%netscape.com:QSvSExpE4HwEE:cvsuser
|
|
||||||
waldemar%netscape.com:hrfmZUyM.cQqw:cvsuser
|
|
||||||
warren%zodiacnetworks.com:b0lSiwRxkyoKE:cvsuser
|
|
||||||
waterson%netscape.com:UMOoIwsZgkNEM:cvsuser
|
|
||||||
wtc%netscape.com:qv4XOpmSQjJG2:cvsuser
|
|
||||||
Xiaobin.Lu%eng.Sun.com:MrrYDdtVNWvV6:cvsuser
|
|
||||||
yixiong.zou%intel.com:O30ptkPuaOOrY:cvsuser
|
|
||||||
yokoyama%netscape.com:zC32qkz2JNuTc:cvsuser
|
|
||||||
yueheng.xu%intel.com:oRvjQhWXcyCIU:cvsuser
|
|
||||||
zach%zachlipton.com:GLozolSujiqSo:cvsuser
|
|
||||||
zuperdee%yahoo.com:ltcWrFvUEUYTY:cvsuser
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
# The "rcsinfo" file is used to control templates with which the editor
|
|
||||||
# is invoked on commit and import.
|
|
||||||
#
|
|
||||||
# The first entry on a line is a regular expression which is tested
|
|
||||||
# against the directory that the change is being made to, relative to the
|
|
||||||
# $CVSROOT. For the first match that is found, then the remainder of the
|
|
||||||
# line is the name of the file that contains the template.
|
|
||||||
#
|
|
||||||
# If the repository name does not match any of the regular expressions in this
|
|
||||||
# file, the "DEFAULT" line is used, if it is specified.
|
|
||||||
#
|
|
||||||
# If the name "ALL" appears as a regular expression it is always used
|
|
||||||
# in addition to the first matching regex or "DEFAULT".
|
|
||||||
@ -1,78 +0,0 @@
|
|||||||
#! /tools/ns/bin/perl5
|
|
||||||
|
|
||||||
use Socket;
|
|
||||||
|
|
||||||
sub get_response_code {
|
|
||||||
my ($expecting) = @_;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: Waiting for code $expecting\n";
|
|
||||||
# }
|
|
||||||
while (1) {
|
|
||||||
my $line = <S>;
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: $line";
|
|
||||||
# }
|
|
||||||
if ($line =~ /^[0-9]*-/) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
if ($line =~ /(^[0-9]*) /) {
|
|
||||||
my $code = $1;
|
|
||||||
if ($code == $expecting) {
|
|
||||||
# if ($flag_debug) {
|
|
||||||
# print STDERR "SMTP: got it.\n";
|
|
||||||
# }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
die "Bad response from SMTP -- $line";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
my @mailto;
|
|
||||||
my $i;
|
|
||||||
foreach $i (@ARGV) {
|
|
||||||
# Deal with our "%" encoding of email addresses.
|
|
||||||
if ($i !~ /\@/) {
|
|
||||||
$i =~ s/%/\@/;
|
|
||||||
}
|
|
||||||
push(@mailto, $i);
|
|
||||||
}
|
|
||||||
|
|
||||||
chop(my $hostname = `/bin/hostname`);
|
|
||||||
|
|
||||||
my ($remote,$port, $iaddr, $paddr, $proto, $line);
|
|
||||||
|
|
||||||
$remote = $mailhost;
|
|
||||||
$port = 25;
|
|
||||||
if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
|
|
||||||
die "No port" unless $port;
|
|
||||||
$iaddr = inet_aton($remote) || die "no host: $remote";
|
|
||||||
$paddr = sockaddr_in($port, $iaddr);
|
|
||||||
|
|
||||||
$proto = getprotobyname('tcp');
|
|
||||||
socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
|
|
||||||
connect(S, $paddr) || die "connect: $!";
|
|
||||||
select(S); $| = 1; select(STDOUT);
|
|
||||||
|
|
||||||
get_response_code(220);
|
|
||||||
print S "EHLO $hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "MAIL FROM: cvs-notify-daemon\@$hostname\n";
|
|
||||||
get_response_code(250);
|
|
||||||
foreach $i (@mailto) {
|
|
||||||
print S "RCPT TO: $i\n";
|
|
||||||
get_response_code(250);
|
|
||||||
}
|
|
||||||
print S "DATA\n";
|
|
||||||
get_response_code(354);
|
|
||||||
# Get one line starting with "354 ".
|
|
||||||
print S "Subject: CVS notification\n";
|
|
||||||
print S "To: " . join(',', @mailto) . "\n";
|
|
||||||
print S "\n";
|
|
||||||
while (<STDIN>) {
|
|
||||||
print S $_;
|
|
||||||
}
|
|
||||||
print S ".\n";
|
|
||||||
get_response_code(250);
|
|
||||||
print S "QUIT\n";
|
|
||||||
close(S);
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
# The "taginfo" file is used to control pre-tag checks.
|
|
||||||
# The filter on the right is invoked with the following arguments:
|
|
||||||
#
|
|
||||||
# $1 -- tagname
|
|
||||||
# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
|
|
||||||
# $3 -- repository
|
|
||||||
# $4-> file revision [file revision ...]
|
|
||||||
#
|
|
||||||
# A non-zero exit of the filter program will cause the tag to be aborted.
|
|
||||||
#
|
|
||||||
# The first entry on a line is a regular expression which is tested
|
|
||||||
# against the directory that the change is being committed to, relative
|
|
||||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
|
||||||
# of the line is the name of the filter to run.
|
|
||||||
#
|
|
||||||
# If the repository name does not match any of the regular expressions in this
|
|
||||||
# file, the "DEFAULT" line is used, if it is specified.
|
|
||||||
#
|
|
||||||
# If the name "ALL" appears as a regular expression it is always used
|
|
||||||
# in addition to the first matching regex or "DEFAULT".
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
# The "verifymsg" file is used to allow verification of logging
|
|
||||||
# information. It works best when a template (as specified in the
|
|
||||||
# rcsinfo file) is provided for the logging procedure. Given a
|
|
||||||
# template with locations for, a bug-id number, a list of people who
|
|
||||||
# reviewed the code before it can be checked in, and an external
|
|
||||||
# process to catalog the differences that were code reviewed, the
|
|
||||||
# following test can be applied to the code:
|
|
||||||
#
|
|
||||||
# Making sure that the entered bug-id number is correct.
|
|
||||||
# Validating that the code that was reviewed is indeed the code being
|
|
||||||
# checked in (using the bug-id number or a seperate review
|
|
||||||
# number to identify this particular code set.).
|
|
||||||
#
|
|
||||||
# If any of the above test failed, then the commit would be aborted.
|
|
||||||
#
|
|
||||||
# Actions such as mailing a copy of the report to each reviewer are
|
|
||||||
# better handled by an entry in the loginfo file.
|
|
||||||
#
|
|
||||||
# One thing that should be noted is the the ALL keyword is not
|
|
||||||
# supported. There can be only one entry that matches a given
|
|
||||||
# repository.
|
|
||||||
@ -1,727 +0,0 @@
|
|||||||
/*
|
|
||||||
* The nsinstall command for OS/2
|
|
||||||
*
|
|
||||||
* Our gmake makefiles use the nsinstall command to create the
|
|
||||||
* object directories or installing headers and libs to ns/dist.
|
|
||||||
* The shmsdos shell has nsinstall as a built-in command. However,
|
|
||||||
* if we use another shell like MKS toolkit's sh, we need to have
|
|
||||||
* the nsinstall command separately.
|
|
||||||
*
|
|
||||||
* This file was generated by modifying the Windows nsinstall.c.
|
|
||||||
*
|
|
||||||
* To build, say
|
|
||||||
* icc nsinstall.c
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <direct.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#define INCL_DOSFILEMGR
|
|
||||||
#define INCL_DOSERRORS
|
|
||||||
#include <os2.h>
|
|
||||||
#pragma hdrstop
|
|
||||||
|
|
||||||
/*
|
|
||||||
* sh_FileFcn --
|
|
||||||
*
|
|
||||||
* A function that operates on a file. The pathname is either
|
|
||||||
* absolute or relative to the current directory, and contains
|
|
||||||
* no wildcard characters such as * and ?. Additional arguments
|
|
||||||
* can be passed to the function via the arg pointer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef BOOL (*sh_FileFcn)(
|
|
||||||
char *pathName,
|
|
||||||
FILEFINDBUF3 *fileData,
|
|
||||||
void *arg);
|
|
||||||
|
|
||||||
static int shellCp (char **pArgv);
|
|
||||||
static int shellNsinstall (char **pArgv);
|
|
||||||
static int shellMkdir (char **pArgv);
|
|
||||||
static BOOL sh_EnumerateFiles(const char *pattern, const char *where,
|
|
||||||
sh_FileFcn fileFcn, void *arg, int *nFiles);
|
|
||||||
static const char *sh_GetLastErrorMessage(void);
|
|
||||||
static BOOL sh_DoCopy(char *srcFileName, ULONG srcFileAttributes,
|
|
||||||
char *dstFileName, ULONG dstFileAttributes,
|
|
||||||
int force, int recursive);
|
|
||||||
|
|
||||||
static ULONG GetFileAttributes(PSZ pszFileName);
|
|
||||||
static APIRET SetFileAttributes(PSZ pszFileName, ULONG ulFileAttributes);
|
|
||||||
|
|
||||||
/* changes all forward slashes in token to back slashes */
|
|
||||||
void changeForwardSlashesTpBackSlashes ( char *arg )
|
|
||||||
{
|
|
||||||
if ( arg == NULL )
|
|
||||||
return;
|
|
||||||
|
|
||||||
while ( *arg ) {
|
|
||||||
if ( *arg == '/' )
|
|
||||||
*arg = '\\';
|
|
||||||
arg++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[ ])
|
|
||||||
{
|
|
||||||
return shellNsinstall ( argv + 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
shellNsinstall (char **pArgv)
|
|
||||||
{
|
|
||||||
int retVal = 0; /* exit status */
|
|
||||||
int dirOnly = 0; /* 1 if and only if -D is specified */
|
|
||||||
char **pSrc;
|
|
||||||
char **pDst;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Process the command-line options. We ignore the
|
|
||||||
* options except for -D. Some options, such as -m,
|
|
||||||
* are followed by an argument. We need to skip the
|
|
||||||
* argument too.
|
|
||||||
*/
|
|
||||||
while ( *pArgv && **pArgv == '-' ) {
|
|
||||||
char c = (*pArgv)[1]; /* The char after '-' */
|
|
||||||
|
|
||||||
if ( c == 'D' ) {
|
|
||||||
dirOnly = 1;
|
|
||||||
} else if ( c == 'm' ) {
|
|
||||||
pArgv++; /* skip the next argument */
|
|
||||||
}
|
|
||||||
pArgv++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !dirOnly ) {
|
|
||||||
/* There are files to install. Get source files */
|
|
||||||
if ( *pArgv ) {
|
|
||||||
pSrc = pArgv++;
|
|
||||||
} else {
|
|
||||||
fprintf( stderr, "nsinstall: not enough arguments\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get to last token to find destination directory */
|
|
||||||
if ( *pArgv ) {
|
|
||||||
pDst = pArgv++;
|
|
||||||
if ( dirOnly && *pArgv ) {
|
|
||||||
fprintf( stderr, "nsinstall: too many arguments with -D\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fprintf( stderr, "nsinstall: not enough arguments\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
while ( *pArgv )
|
|
||||||
pDst = pArgv++;
|
|
||||||
|
|
||||||
retVal = shellMkdir ( pDst );
|
|
||||||
if ( retVal )
|
|
||||||
return retVal;
|
|
||||||
if ( !dirOnly )
|
|
||||||
retVal = shellCp ( pSrc );
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
shellMkdir (char **pArgv)
|
|
||||||
{
|
|
||||||
int retVal = 0; /* assume valid return */
|
|
||||||
char *arg;
|
|
||||||
char *pArg;
|
|
||||||
char path[CCHMAXPATH];
|
|
||||||
char tmpPath[CCHMAXPATH];
|
|
||||||
char *pTmpPath = tmpPath;
|
|
||||||
|
|
||||||
/* All the options are simply ignored in this implementation */
|
|
||||||
while ( *pArgv && **pArgv == '-' ) {
|
|
||||||
if ( (*pArgv)[1] == 'm' ) {
|
|
||||||
pArgv++; /* skip the next argument (mode) */
|
|
||||||
}
|
|
||||||
pArgv++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ( *pArgv ) {
|
|
||||||
arg = *pArgv;
|
|
||||||
changeForwardSlashesTpBackSlashes ( arg );
|
|
||||||
pArg = arg;
|
|
||||||
pTmpPath = tmpPath;
|
|
||||||
while ( 1 ) {
|
|
||||||
/* create part of path */
|
|
||||||
while ( *pArg ) {
|
|
||||||
*pTmpPath++ = *pArg++;
|
|
||||||
if ( *pArg == '\\' )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
*pTmpPath = '\0';
|
|
||||||
|
|
||||||
/* check if directory alreay exists */
|
|
||||||
_getcwd ( path, sizeof (path) );
|
|
||||||
if (( _chdir ( tmpPath ) != -1 ) || ((tmpPath[1] == ':') && (tmpPath[2] == '\0'))) {
|
|
||||||
_chdir ( path );
|
|
||||||
} else {
|
|
||||||
if ( _mkdir ( tmpPath ) == -1 ) {
|
|
||||||
// while ( waitForDebug );
|
|
||||||
printf ( "%s: ", tmpPath );
|
|
||||||
perror ( "Could not create the directory" );
|
|
||||||
retVal = 3;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( *pArg == '\0' ) /* complete path? */
|
|
||||||
break;
|
|
||||||
/* loop for next directory */
|
|
||||||
}
|
|
||||||
|
|
||||||
pArgv++;
|
|
||||||
}
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
sh_GetLastErrorMessage()
|
|
||||||
{
|
|
||||||
static char buf[128];
|
|
||||||
|
|
||||||
#ifdef OLDCODE
|
|
||||||
FormatMessage(
|
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
|
||||||
NULL,
|
|
||||||
GetLastError(),
|
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* default language */
|
|
||||||
buf,
|
|
||||||
sizeof(buf),
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* struct sh_FileData --
|
|
||||||
*
|
|
||||||
* A pointer to the sh_FileData structure is passed into sh_RecordFileData,
|
|
||||||
* which will fill in the fields.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct sh_FileData {
|
|
||||||
char pathName[CCHMAXPATH];
|
|
||||||
ULONG attrFile;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* sh_RecordFileData --
|
|
||||||
*
|
|
||||||
* Record the pathname and attributes of the file in
|
|
||||||
* the sh_FileData structure pointed to by arg.
|
|
||||||
*
|
|
||||||
* Always return TRUE (successful completion).
|
|
||||||
*
|
|
||||||
* This function is intended to be passed into sh_EnumerateFiles
|
|
||||||
* to see if a certain pattern expands to exactly one file/directory,
|
|
||||||
* and if so, record its pathname and attributes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static BOOL
|
|
||||||
sh_RecordFileData(char *pathName, FILEFINDBUF3 *findData, void *arg)
|
|
||||||
{
|
|
||||||
struct sh_FileData *fData = (struct sh_FileData *) arg;
|
|
||||||
|
|
||||||
strcpy(fData->pathName, pathName);
|
|
||||||
fData->attrFile = findData->attrFile;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static BOOL
|
|
||||||
sh_DoCopy(char *srcFileName,
|
|
||||||
ULONG srcFileAttributes,
|
|
||||||
char *dstFileName,
|
|
||||||
ULONG dstFileAttributes,
|
|
||||||
int force,
|
|
||||||
int recursive
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if (dstFileAttributes != 0xFFFFFFFF) {
|
|
||||||
if ((dstFileAttributes & FILE_READONLY) && force) {
|
|
||||||
dstFileAttributes &= ~FILE_READONLY;
|
|
||||||
SetFileAttributes(dstFileName, dstFileAttributes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (srcFileAttributes & FILE_DIRECTORY) {
|
|
||||||
fprintf(stderr, "nsinstall: %s is a directory\n",
|
|
||||||
srcFileName);
|
|
||||||
return FALSE;
|
|
||||||
} else {
|
|
||||||
if (DosCopy(srcFileName, dstFileName, DCPY_EXISTING) != NO_ERROR) {
|
|
||||||
fprintf(stderr, "nsinstall: cannot copy %s to %s: %s\n",
|
|
||||||
srcFileName, dstFileName, sh_GetLastErrorMessage());
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* struct sh_CpCmdArg --
|
|
||||||
*
|
|
||||||
* A pointer to the sh_CpCmdArg structure is passed into sh_CpFileCmd.
|
|
||||||
* The sh_CpCmdArg contains information about the cp command, and
|
|
||||||
* provide a buffer for constructing the destination file name.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct sh_CpCmdArg {
|
|
||||||
int force; /* -f option, ok to overwrite an existing
|
|
||||||
* read-only destination file */
|
|
||||||
int recursive; /* -r or -R option, recursively copy
|
|
||||||
* directories. Note: this field is not used
|
|
||||||
* by nsinstall and should always be 0. */
|
|
||||||
char *dstFileName; /* a buffer for constructing the destination
|
|
||||||
* file name */
|
|
||||||
char *dstFileNameMarker; /* points to where in the dstFileName buffer
|
|
||||||
* we should write the file component of the
|
|
||||||
* destination file */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* sh_CpFileCmd --
|
|
||||||
*
|
|
||||||
* Copy a file to the destination directory
|
|
||||||
*
|
|
||||||
* This function is intended to be passed into sh_EnumerateFiles to
|
|
||||||
* copy all the files specified by the pattern to the destination
|
|
||||||
* directory.
|
|
||||||
*
|
|
||||||
* Return TRUE if the file is successfully copied, and FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static BOOL
|
|
||||||
sh_CpFileCmd(char *pathName, FILEFINDBUF3 *findData, void *cpArg)
|
|
||||||
{
|
|
||||||
BOOL retVal = TRUE;
|
|
||||||
struct sh_CpCmdArg *arg = (struct sh_CpCmdArg *) cpArg;
|
|
||||||
|
|
||||||
strcpy(arg->dstFileNameMarker, findData->achName);
|
|
||||||
return sh_DoCopy(pathName, findData->attrFile,
|
|
||||||
arg->dstFileName, GetFileAttributes(arg->dstFileName),
|
|
||||||
arg->force, arg->recursive);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
shellCp (char **pArgv)
|
|
||||||
{
|
|
||||||
int retVal = 0;
|
|
||||||
char **pSrc;
|
|
||||||
char **pDst;
|
|
||||||
struct sh_CpCmdArg arg;
|
|
||||||
struct sh_FileData dstData;
|
|
||||||
int dstIsDir = 0;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
arg.force = 0;
|
|
||||||
arg.recursive = 0;
|
|
||||||
arg.dstFileName = dstData.pathName;
|
|
||||||
arg.dstFileNameMarker = 0;
|
|
||||||
|
|
||||||
while (*pArgv && **pArgv == '-') {
|
|
||||||
char *p = *pArgv;
|
|
||||||
|
|
||||||
while (*(++p)) {
|
|
||||||
if (*p == 'f') {
|
|
||||||
arg.force = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pArgv++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the first source file */
|
|
||||||
if (*pArgv) {
|
|
||||||
pSrc = pArgv++;
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "nsinstall: not enough arguments\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get to the last token to find destination */
|
|
||||||
if (*pArgv) {
|
|
||||||
pDst = pArgv++;
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "nsinstall: not enough arguments\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
while (*pArgv) {
|
|
||||||
pDst = pArgv++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The destination pattern must unambiguously expand to exactly
|
|
||||||
* one file or directory.
|
|
||||||
*/
|
|
||||||
|
|
||||||
changeForwardSlashesTpBackSlashes(*pDst);
|
|
||||||
sh_EnumerateFiles(*pDst, *pDst, sh_RecordFileData, &dstData, &n);
|
|
||||||
assert(n >= 0);
|
|
||||||
if (n == 1) {
|
|
||||||
/*
|
|
||||||
* Is the destination a file or directory?
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (dstData.attrFile & FILE_DIRECTORY) {
|
|
||||||
dstIsDir = 1;
|
|
||||||
}
|
|
||||||
} else if (n > 1) {
|
|
||||||
fprintf(stderr, "nsinstall: %s: ambiguous destination file "
|
|
||||||
"or directory\n", *pDst);
|
|
||||||
return 3;
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* n == 0, meaning that destination file or directory does
|
|
||||||
* not exist. In this case the destination file directory
|
|
||||||
* name must be fully specified.
|
|
||||||
*/
|
|
||||||
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
for (p = *pDst; *p; p++) {
|
|
||||||
if (*p == '*' || *p == '?') {
|
|
||||||
fprintf(stderr, "nsinstall: %s: No such file or directory\n",
|
|
||||||
*pDst);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Do not include the trailing \, if any, unless it is a root
|
|
||||||
* directory (\ or X:\).
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (p > *pDst && p[-1] == '\\' && p != *pDst + 1 && p[-2] != ':') {
|
|
||||||
p[-1] = '\0';
|
|
||||||
}
|
|
||||||
strcpy(dstData.pathName, *pDst);
|
|
||||||
dstData.attrFile = 0xFFFFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If there are two or more source files, the destination has
|
|
||||||
* to be a directory.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (pDst - pSrc > 1 && !dstIsDir) {
|
|
||||||
fprintf(stderr, "nsinstall: cannot copy more than"
|
|
||||||
" one file to the same destination file\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dstIsDir) {
|
|
||||||
arg.dstFileNameMarker = arg.dstFileName + strlen(arg.dstFileName);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Now arg.dstFileNameMarker is pointing to the null byte at the
|
|
||||||
* end of string. We want to make sure that there is a \ at the
|
|
||||||
* end of string, and arg.dstFileNameMarker should point right
|
|
||||||
* after that \.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (arg.dstFileNameMarker[-1] != '\\') {
|
|
||||||
*(arg.dstFileNameMarker++) = '\\';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!dstIsDir) {
|
|
||||||
struct sh_FileData srcData;
|
|
||||||
|
|
||||||
assert(pDst - pSrc == 1);
|
|
||||||
changeForwardSlashesTpBackSlashes(*pSrc);
|
|
||||||
sh_EnumerateFiles(*pSrc, *pSrc, sh_RecordFileData, &srcData, &n);
|
|
||||||
if (n == 0) {
|
|
||||||
fprintf(stderr, "nsinstall: %s: No such file or directory\n",
|
|
||||||
*pSrc);
|
|
||||||
retVal = 3;
|
|
||||||
} else if (n > 1) {
|
|
||||||
fprintf(stderr, "nsinstall: cannot copy more than one file or "
|
|
||||||
"directory to the same destination\n");
|
|
||||||
retVal = 3;
|
|
||||||
} else {
|
|
||||||
assert(n == 1);
|
|
||||||
if (sh_DoCopy(srcData.pathName, srcData.attrFile,
|
|
||||||
dstData.pathName, dstData.attrFile,
|
|
||||||
arg.force, arg.recursive) == FALSE) {
|
|
||||||
retVal = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( ; *pSrc != *pDst; pSrc++) {
|
|
||||||
BOOL rv;
|
|
||||||
|
|
||||||
changeForwardSlashesTpBackSlashes(*pSrc);
|
|
||||||
rv = sh_EnumerateFiles(*pSrc, *pSrc, sh_CpFileCmd, &arg, &n);
|
|
||||||
if (rv == FALSE) {
|
|
||||||
retVal = 3;
|
|
||||||
} else {
|
|
||||||
if (n == 0) {
|
|
||||||
fprintf(stderr, "nsinstall: %s: No such file or directory\n",
|
|
||||||
*pSrc);
|
|
||||||
retVal = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* sh_EnumerateFiles --
|
|
||||||
*
|
|
||||||
* Enumerate all the files in the specified pattern, which is a pathname
|
|
||||||
* containing possibly wildcard characters such as * and ?. fileFcn
|
|
||||||
* is called on each file, passing the expanded file name, a pointer
|
|
||||||
* to the file's FILEFINDBUF3, and the arg pointer.
|
|
||||||
*
|
|
||||||
* It is assumed that there are no wildcard characters before the
|
|
||||||
* character pointed to by 'where'.
|
|
||||||
*
|
|
||||||
* On return, *nFiles stores the number of files enumerated. *nFiles is
|
|
||||||
* set to this number whether sh_EnumerateFiles or 'fileFcn' succeeds
|
|
||||||
* or not.
|
|
||||||
*
|
|
||||||
* Return TRUE if the files are successfully enumerated and all
|
|
||||||
* 'fileFcn' invocations succeeded. Return FALSE if something went
|
|
||||||
* wrong.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static BOOL sh_EnumerateFiles(
|
|
||||||
const char *pattern,
|
|
||||||
const char *where,
|
|
||||||
sh_FileFcn fileFcn,
|
|
||||||
void *arg,
|
|
||||||
int *nFiles
|
|
||||||
)
|
|
||||||
{
|
|
||||||
FILEFINDBUF3 fileData = {0};
|
|
||||||
HDIR hSearch;
|
|
||||||
APIRET ulrc;
|
|
||||||
ULONG ulFindCount = 1;
|
|
||||||
const char *src;
|
|
||||||
char *dst;
|
|
||||||
char fileName[CCHMAXPATH];
|
|
||||||
char *fileNameMarker = fileName;
|
|
||||||
char *oldFileNameMarker;
|
|
||||||
BOOL hasWildcard = FALSE;
|
|
||||||
BOOL retVal = TRUE;
|
|
||||||
BOOL patternEndsInDotStar = FALSE;
|
|
||||||
BOOL patternEndsInDot = FALSE; /* a special case of
|
|
||||||
* patternEndsInDotStar */
|
|
||||||
int numDotsInPattern;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Windows expands patterns ending in ".", ".*", ".**", etc.
|
|
||||||
* differently from the glob expansion on Unix. For example,
|
|
||||||
* both "foo." and "foo.*" match "foo", and "*.*" matches
|
|
||||||
* everything, including filenames with no dots. So we need
|
|
||||||
* to throw away extra files returned by the FindNextFile()
|
|
||||||
* function. We require that a matched filename have at least
|
|
||||||
* the number of dots in the pattern.
|
|
||||||
*/
|
|
||||||
len = strlen(pattern);
|
|
||||||
if (len >= 2) {
|
|
||||||
/* Start from the end of pattern and go backward */
|
|
||||||
const char *p = &pattern[len - 1];
|
|
||||||
|
|
||||||
/* We can have zero or more *'s */
|
|
||||||
while (p >= pattern && *p == '*') {
|
|
||||||
p--;
|
|
||||||
}
|
|
||||||
if (p >= pattern && *p == '.') {
|
|
||||||
patternEndsInDotStar = TRUE;
|
|
||||||
if (p == &pattern[len - 1]) {
|
|
||||||
patternEndsInDot = TRUE;
|
|
||||||
}
|
|
||||||
p--;
|
|
||||||
numDotsInPattern = 1;
|
|
||||||
while (p >= pattern && *p != '\\') {
|
|
||||||
if (*p == '.') {
|
|
||||||
numDotsInPattern++;
|
|
||||||
}
|
|
||||||
p--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*nFiles = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copy pattern to fileName, but only up to and not including
|
|
||||||
* the first \ after the first wildcard letter.
|
|
||||||
*
|
|
||||||
* Make fileNameMarker point to one of the following:
|
|
||||||
* - the start of fileName, if fileName does not contain any \.
|
|
||||||
* - right after the \ before the first wildcard letter, if there is
|
|
||||||
* a wildcard character.
|
|
||||||
* - right after the last \, if there is no wildcard character.
|
|
||||||
*/
|
|
||||||
|
|
||||||
dst = fileName;
|
|
||||||
src = pattern;
|
|
||||||
while (src < where) {
|
|
||||||
if (*src == '\\') {
|
|
||||||
oldFileNameMarker = fileNameMarker;
|
|
||||||
fileNameMarker = dst + 1;
|
|
||||||
}
|
|
||||||
*(dst++) = *(src++);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (*src && *src != '*' && *src != '?') {
|
|
||||||
if (*src == '\\') {
|
|
||||||
oldFileNameMarker = fileNameMarker;
|
|
||||||
fileNameMarker = dst + 1;
|
|
||||||
}
|
|
||||||
*(dst++) = *(src++);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*src) {
|
|
||||||
/*
|
|
||||||
* Must have seen the first wildcard letter
|
|
||||||
*/
|
|
||||||
|
|
||||||
hasWildcard = TRUE;
|
|
||||||
while (*src && *src != '\\') {
|
|
||||||
*(dst++) = *(src++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now src points to either null or \ */
|
|
||||||
|
|
||||||
assert(*src == '\0' || *src == '\\');
|
|
||||||
assert(hasWildcard || *src == '\0');
|
|
||||||
*dst = '\0';
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If the pattern does not contain any wildcard characters, then
|
|
||||||
* we don't need to go the FindFirstFile route.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!hasWildcard) {
|
|
||||||
/*
|
|
||||||
* See if it is the root directory, \, or X:\.
|
|
||||||
*/
|
|
||||||
|
|
||||||
assert(!strcmp(fileName, pattern));
|
|
||||||
assert(strlen(fileName) >= 1);
|
|
||||||
if (dst[-1] == '\\' && (dst == fileName + 1 || dst[-2] == ':')) {
|
|
||||||
fileData.achName[0] = '\0';
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Do not include the trailing \, if any
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (dst[-1] == '\\') {
|
|
||||||
assert(*fileNameMarker == '\0');
|
|
||||||
dst[-1] = '\0';
|
|
||||||
fileNameMarker = oldFileNameMarker;
|
|
||||||
}
|
|
||||||
strcpy(fileData.achName, fileNameMarker);
|
|
||||||
}
|
|
||||||
fileData.attrFile = GetFileAttributes(fileName);
|
|
||||||
if (fileData.attrFile == 0xFFFFFFFF) {
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
*nFiles = 1;
|
|
||||||
return (*fileFcn)(fileName, &fileData, arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
hSearch = HDIR_CREATE;
|
|
||||||
ulrc = DosFindFirst(fileName, &hSearch, FILE_NORMAL, &fileData, sizeof(fileData),
|
|
||||||
&ulFindCount, FIL_STANDARD);
|
|
||||||
if (ulrc == ERROR_INVALID_HANDLE) {
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
if (!strcmp(fileData.achName, ".")
|
|
||||||
|| !strcmp(fileData.achName, "..")) {
|
|
||||||
/*
|
|
||||||
* Skip over . and ..
|
|
||||||
*/
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (patternEndsInDotStar) {
|
|
||||||
int nDots = 0;
|
|
||||||
char *p = fileData.achName;
|
|
||||||
while (*p) {
|
|
||||||
if (*p == '.') {
|
|
||||||
nDots++;
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
/* Now p points to the null byte at the end of file name */
|
|
||||||
if (patternEndsInDot && (p == fileData.achName
|
|
||||||
|| p[-1] != '.')) {
|
|
||||||
/*
|
|
||||||
* File name does not end in dot. Skip this file.
|
|
||||||
* Note: windows file name probably cannot end in dot,
|
|
||||||
* but we do this check anyway.
|
|
||||||
*/
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (nDots < numDotsInPattern) {
|
|
||||||
/*
|
|
||||||
* Not enough dots in file name. Must be an extra
|
|
||||||
* file in matching .* pattern. Skip this file.
|
|
||||||
*/
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(fileNameMarker, fileData.achName);
|
|
||||||
if (*src && *(src + 1)) {
|
|
||||||
/*
|
|
||||||
* More to go. Recurse.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int n;
|
|
||||||
|
|
||||||
assert(*src == '\\');
|
|
||||||
where = fileName + strlen(fileName);
|
|
||||||
strcat(fileName, src);
|
|
||||||
sh_EnumerateFiles(fileName, where, fileFcn, arg, &n);
|
|
||||||
*nFiles += n;
|
|
||||||
} else {
|
|
||||||
assert(strchr(fileName, '*') == NULL);
|
|
||||||
assert(strchr(fileName, '?') == NULL);
|
|
||||||
(*nFiles)++;
|
|
||||||
if ((*fileFcn)(fileName, &fileData, arg) == FALSE) {
|
|
||||||
retVal = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (DosFindNext(hSearch, &fileData, sizeof(fileData), &ulFindCount) == NO_ERROR);
|
|
||||||
|
|
||||||
DosFindClose(hSearch);
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG GetFileAttributes(PSZ pszFileName)
|
|
||||||
{
|
|
||||||
FILESTATUS3 fsts3;
|
|
||||||
APIRET rc;
|
|
||||||
|
|
||||||
rc = DosQueryPathInfo(pszFileName,
|
|
||||||
FIL_STANDARD,
|
|
||||||
&fsts3,
|
|
||||||
sizeof(FILESTATUS3));
|
|
||||||
if (rc != NO_ERROR) {
|
|
||||||
return -1;
|
|
||||||
} /* endif */
|
|
||||||
return fsts3.attrFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
static APIRET SetFileAttributes(PSZ pszFileName, ULONG ulFileAttributes)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
rem * To set up your local build read and customize this batch file.
|
|
||||||
rem * You shouldn't have to touch anything but "set" statements
|
|
||||||
rem * Batch file contributed by Lucas Gonze (lucas@gonze.com) and
|
|
||||||
rem * Rick Ekle (rele@iconect.net)
|
|
||||||
|
|
||||||
rem * This stuff forces us to not reset the environment variables more
|
|
||||||
rem * than once. It would cause some vars to get longer than 127 chars
|
|
||||||
rem * (the longest possible batch line) to run this stuff more than once.
|
|
||||||
if "%1%" == "-force" goto skiptest
|
|
||||||
if "%MOZBUILD%" == "ALREADYDONE" goto alldone
|
|
||||||
:skiptest
|
|
||||||
echo setting up environment...
|
|
||||||
set MOZBUILD=ALREADYDONE
|
|
||||||
|
|
||||||
rem * if this isn't set properly your build will get
|
|
||||||
rem * "file './config/WIN' not found"
|
|
||||||
set MOZ_BITS=32
|
|
||||||
|
|
||||||
set MOZ_GOLD=1
|
|
||||||
set MOZ_MEDIUM=1
|
|
||||||
set NO_SECURITY=1
|
|
||||||
set NSPR20=1
|
|
||||||
|
|
||||||
rem * don't set this if you want to make an optimized release build
|
|
||||||
set MOZ_DEBUG=1
|
|
||||||
|
|
||||||
rem * set if running NT 3.51, don't set otherwise
|
|
||||||
rem * set MOZ_NT=351
|
|
||||||
|
|
||||||
rem * location of resulting executable and totally optional.
|
|
||||||
rem * If you don't set this, mozilla.exe will be generated into
|
|
||||||
rem * mozilla\cmd\winfe\mkfiles32\x86dbg (or x86rel for optimized builds)
|
|
||||||
rem * set MOZ_OUT=d:\bin
|
|
||||||
|
|
||||||
rem * top of your tree, drive letter and path, i.e. set d:\mozilla_src.
|
|
||||||
rem * The topmost directory under this should be mozilla
|
|
||||||
rem * so if you extracted zip file to z:\foo, this should be z:\foo
|
|
||||||
set MOZ_SRC=d:\moz\
|
|
||||||
|
|
||||||
rem * location of the bin directory containing your GNU tools. The build
|
|
||||||
|
|
||||||
rem * looks for MOZ_TOOLS\bin\gmake.exe, so after you download and unpack
|
|
||||||
rem * wintools.zip, make some directory called "bin", put your new
|
|
||||||
rem * uname.exe, shmsdos.exe, and gmake.exe in it, and set MOZ_TOOLS to
|
|
||||||
rem * the place where you put it.
|
|
||||||
set MOZ_TOOLS=d:
|
|
||||||
|
|
||||||
rem * where to find cp.exe and rm.exe, aka gnu tools for windows
|
|
||||||
set gnuTools=D:\CDK\H-I386~1\bin
|
|
||||||
|
|
||||||
rem * the important thing is that your new moz tools should be first
|
|
||||||
SET PATH=%MOZ_TOOLS%\bin;%gnuTools%;%PATH%
|
|
||||||
|
|
||||||
rem * if you are running VC++ 5.0 or higher, this will prevent the build
|
|
||||||
|
|
||||||
rem * from trying to pick up uuid2.lib, which only exists in previous
|
|
||||||
rem * versions of vc++.
|
|
||||||
set _MSC_VER=1100
|
|
||||||
|
|
||||||
rem * vcvars32.bat is created by visual c++ install to
|
|
||||||
rem * enable command line builds
|
|
||||||
echo setting up visual c++ environment...
|
|
||||||
call d:\bin\vcvars32.bat
|
|
||||||
|
|
||||||
:alldone
|
|
||||||
@echo environment set up, building mozilla...
|
|
||||||
|
|
||||||
rem * uncomment these to make the script build as well
|
|
||||||
|
|
||||||
rem cd %MOZ_SRC%
|
|
||||||
rem cd mozilla
|
|
||||||
rem nmake -f client.mak
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
Building NSPR on Windows NT Using Netscape's gmake and Other Tools
|
|
||||||
|
|
||||||
This directory contains the following tools:
|
|
||||||
- gmake.exe: GNU make 3.74, modified to use shmsdos.exe as the shell
|
|
||||||
- shmsdos.exe: a lightweight shell developed by Netscape programmers.
|
|
||||||
It has most of the file manipulation operations (such as cp,
|
|
||||||
rm, mkdir as well as Netscape's own nsinstall) as built-in
|
|
||||||
commands, so even if you have these
|
|
||||||
file utilities installed on your NT machine, they won't be invoked
|
|
||||||
by gmake and shmsdos. Also, since shmsdos is not a full-blown
|
|
||||||
shell and its built-in file commands are not fully compatible
|
|
||||||
with the true Unix file utilities, our makefiles have had to
|
|
||||||
avoid some features of sh and work around the incompatibilities
|
|
||||||
on Windows NT.
|
|
||||||
- uname.exe: this uname.exe returns the OS as "WINNT", which is what
|
|
||||||
our makefiles assume. Do not use a uname.exe that returns other
|
|
||||||
strings, such as "Windows_NT".
|
|
||||||
|
|
||||||
Binaries for the x86 processors can be found in the 'x86' subdirectory.
|
|
||||||
Binaries for the alpha processors can be found in the 'alpha'
|
|
||||||
subdirectory.
|
|
||||||
|
|
||||||
INSTALLATION:
|
|
||||||
|
|
||||||
Install gmake.exe, shmsdos.exe, and uname.exe in any directory.
|
|
||||||
Add that directory to your Path environment variable.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,107 +0,0 @@
|
|||||||
/* GLIB - Library of useful routines for C programming
|
|
||||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the
|
|
||||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
* Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
/* acconfig.h
|
|
||||||
This file is in the public domain.
|
|
||||||
|
|
||||||
Descriptive text for the C preprocessor macros that
|
|
||||||
the distributed Autoconf macros can define.
|
|
||||||
No software package will use all of them; autoheader copies the ones
|
|
||||||
your configure.in uses into your configuration header file templates.
|
|
||||||
|
|
||||||
The entries are in sort -df order: alphabetical, case insensitive,
|
|
||||||
ignoring punctuation (such as underscores). Although this order
|
|
||||||
can split up related entries, it makes it easier to check whether
|
|
||||||
a given entry is in the file.
|
|
||||||
|
|
||||||
Leave the following blank line there!! Autoheader needs it. */
|
|
||||||
|
|
||||||
|
|
||||||
/* Other stuff */
|
|
||||||
|
|
||||||
#undef ENABLE_MEM_CHECK
|
|
||||||
#undef ENABLE_MEM_PROFILE
|
|
||||||
|
|
||||||
#undef G_COMPILED_WITH_DEBUGGING
|
|
||||||
#undef G_THREADS_ENABLED
|
|
||||||
|
|
||||||
#undef GLIB_SIZEOF_GMUTEX
|
|
||||||
#undef GLIB_BYTE_CONTENTS_GMUTEX
|
|
||||||
|
|
||||||
#undef HAVE_BROKEN_WCTYPE
|
|
||||||
#undef HAVE_DOPRNT
|
|
||||||
#undef HAVE_FLOAT_H
|
|
||||||
#undef HAVE_GETPWUID_R
|
|
||||||
#undef HAVE_GETPWUID_R_POSIX
|
|
||||||
#undef HAVE_LIMITS_H
|
|
||||||
#undef HAVE_LONG_DOUBLE
|
|
||||||
#undef HAVE_POLL
|
|
||||||
#undef HAVE_PTHREAD_GETSPECIFIC_POSIX
|
|
||||||
#undef HAVE_PWD_H
|
|
||||||
#undef HAVE_SYS_PARAM_H
|
|
||||||
#undef HAVE_SYS_POLL_H
|
|
||||||
#undef HAVE_SYS_SELECT_H
|
|
||||||
#undef HAVE_SYS_TIME_H
|
|
||||||
#undef HAVE_SYS_TIMES_H
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
#undef HAVE_STRSIGNAL
|
|
||||||
#undef HAVE_UNISTD_H
|
|
||||||
#undef HAVE_VALUES_H
|
|
||||||
#undef HAVE_WCHAR_H
|
|
||||||
#undef HAVE_WCTYPE_H
|
|
||||||
|
|
||||||
#undef NO_FD_SET
|
|
||||||
#undef NO_SYS_ERRLIST
|
|
||||||
#undef NO_SYS_SIGLIST
|
|
||||||
#undef NO_SYS_SIGLIST_DECL
|
|
||||||
|
|
||||||
#undef WITH_SYMBOL_UNDERSCORE
|
|
||||||
|
|
||||||
#undef SIZEOF_CHAR
|
|
||||||
#undef SIZEOF_SHORT
|
|
||||||
#undef SIZEOF_LONG
|
|
||||||
#undef SIZEOF_INT
|
|
||||||
#undef SIZEOF_VOID_P
|
|
||||||
|
|
||||||
#undef G_VA_COPY
|
|
||||||
#undef G_VA_COPY_AS_ARRAY
|
|
||||||
#undef G_HAVE___INLINE
|
|
||||||
#undef G_HAVE___INLINE__
|
|
||||||
#undef G_HAVE_INLINE
|
|
||||||
|
|
||||||
#undef GLIB_MAJOR_VERSION
|
|
||||||
#undef GLIB_MINOR_VERSION
|
|
||||||
#undef GLIB_MICRO_VERSION
|
|
||||||
#undef GLIB_INTERFACE_AGE
|
|
||||||
#undef GLIB_BINARY_AGE
|
|
||||||
|
|
||||||
#undef WIN32
|
|
||||||
#undef NATIVE_WIN32
|
|
||||||
|
|
||||||
#undef G_THREAD_SOURCE
|
|
||||||
|
|
||||||
/* #undef PACKAGE */
|
|
||||||
/* #undef VERSION */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Leave that blank line there!! Autoheader needs it.
|
|
||||||
If you're adding to this file, keep in mind:
|
|
||||||
The entries are in sort -df order: alphabetical, case insensitive,
|
|
||||||
ignoring punctuation (such as underscores). */
|
|
||||||
@ -1,138 +0,0 @@
|
|||||||
/* config.h.win32. Handcrafted for Microsoft C */
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
/* #undef const */
|
|
||||||
|
|
||||||
/* Define if you don't have vprintf but do have _doprnt. */
|
|
||||||
/* #undef HAVE_DOPRNT */
|
|
||||||
|
|
||||||
/* Define if you have <unistd.h>. */
|
|
||||||
/* #undef HAVE_UNISTD_H */
|
|
||||||
|
|
||||||
/* Define if you have the vprintf function. */
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Define if your processor stores words with the most significant
|
|
||||||
byte first (like Motorola and SPARC, unlike Intel and VAX). */
|
|
||||||
/* #undef WORDS_BIGENDIAN */
|
|
||||||
|
|
||||||
/* #undef ENABLE_MEM_CHECK */
|
|
||||||
/* #undef ENABLE_MEM_PROFILE */
|
|
||||||
|
|
||||||
#define G_COMPILED_WITH_DEBUGGING "minimum"
|
|
||||||
|
|
||||||
/* #undef HAVE_BROKEN_WCTYPE */
|
|
||||||
/* #undef HAVE_DOPRNT */
|
|
||||||
#define HAVE_FLOAT_H 1
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
/* #undef HAVE_LOCALTIME_R */
|
|
||||||
/* #undef HAVE_LONG_DOUBLE */
|
|
||||||
/* #undef HAVE_POLL */
|
|
||||||
/* #undef HAVE_PWD_H */
|
|
||||||
/* #undef HAVE_SYS_PARAM_H */
|
|
||||||
/* #undef HAVE_SYS_POLL_H */
|
|
||||||
/* #undef HAVE_SYS_SELECT_H */
|
|
||||||
/* #undef HAVE_SYS_TIME_H */
|
|
||||||
/* #undef HAVE_SYS_TIMES_H */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
/* #undef HAVE_STRSIGNAL */
|
|
||||||
/* #undef HAVE_UNISTD_H */
|
|
||||||
/* #undef HAVE_VSNPRINTF */
|
|
||||||
/* #undef HAVE_VALUES_H */
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
#define HAVE_WCHAR_H 1
|
|
||||||
#define HAVE_WCTYPE_H 1
|
|
||||||
|
|
||||||
/* #undef NO_FD_SET */
|
|
||||||
/* #undef NO_SYS_ERRLIST */
|
|
||||||
#define NO_SYS_SIGLIST 1
|
|
||||||
|
|
||||||
/* #undef G_VA_COPY */
|
|
||||||
/* #undef G_VA_COPY_AS_ARRAY */
|
|
||||||
#define G_HAVE___INLINE 1
|
|
||||||
|
|
||||||
#define GLIB_MAJOR_VERSION 1
|
|
||||||
#define GLIB_MINOR_VERSION 2
|
|
||||||
#define GLIB_MICRO_VERSION 0
|
|
||||||
#define GLIB_INTERFACE_AGE 0
|
|
||||||
#define GLIB_BINARY_AGE 0
|
|
||||||
|
|
||||||
#define G_THREAD_SOURCE "gthread-posix.c"
|
|
||||||
#define G_THREADS_IMPL_POSIX
|
|
||||||
#define HAVE_PTHREAD_GETSPECIFIC_POSIX 1
|
|
||||||
|
|
||||||
/* The number of bytes in a char. */
|
|
||||||
#define SIZEOF_CHAR 1
|
|
||||||
|
|
||||||
/* The number of bytes in a int. */
|
|
||||||
#define SIZEOF_INT 4
|
|
||||||
|
|
||||||
/* The number of bytes in a long. */
|
|
||||||
#define SIZEOF_LONG 4
|
|
||||||
|
|
||||||
/* The number of bytes in a long long. */
|
|
||||||
#define SIZEOF_LONG_LONG 8
|
|
||||||
|
|
||||||
/* The number of bytes in a short. */
|
|
||||||
#define SIZEOF_SHORT 2
|
|
||||||
|
|
||||||
/* The number of bytes in a void *. */
|
|
||||||
#define SIZEOF_VOID_P 4
|
|
||||||
|
|
||||||
/* Define if you have the atexit function. */
|
|
||||||
#define HAVE_ATEXIT 1
|
|
||||||
|
|
||||||
/* Define if you have the lstat function. */
|
|
||||||
/* #undef HAVE_LSTAT */
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the on_exit function. */
|
|
||||||
/* #undef HAVE_ON_EXIT */
|
|
||||||
|
|
||||||
/* Define if you have the strcasecmp function. */
|
|
||||||
/* #undef HAVE_STRCASECMP ^*/
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strsignal function. */
|
|
||||||
/* #undef HAVE_STRSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the vsnprintf function. */
|
|
||||||
/* #undef HAVE_VSNPRINTF */
|
|
||||||
|
|
||||||
/* Define if you have the <float.h> header file. */
|
|
||||||
#define HAVE_FLOAT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <limits.h> header file. */
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <pwd.h> header file. */
|
|
||||||
/* #undef HAVE_PWD_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_PARAM_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/select.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_SELECT_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/time.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_TIME_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/times.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_TIMES_H */
|
|
||||||
|
|
||||||
/* Define if you have the <unistd.h> header file. */
|
|
||||||
/* #undef HAVE_UNISTD_H */
|
|
||||||
|
|
||||||
/* Define if you have the <values.h> header file. */
|
|
||||||
/* #undef HAVE_VALUES_H */
|
|
||||||
|
|
||||||
/* Define if you have the w library (-lw). */
|
|
||||||
/* #undef HAVE_LIBW */
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,173 +0,0 @@
|
|||||||
/* glibconfig.h.win32 */
|
|
||||||
/* Handcrafted for Microsoft C. */
|
|
||||||
|
|
||||||
#ifndef GLIBCONFIG_H
|
|
||||||
#define GLIBCONFIG_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
/* Make MSVC more pedantic, this is a recommended pragma list
|
|
||||||
* from _Win32_Programming_ by Rector and Newcomer.
|
|
||||||
*/
|
|
||||||
#pragma warning(error:4002)
|
|
||||||
#pragma warning(error:4003)
|
|
||||||
#pragma warning(1:4010)
|
|
||||||
#pragma warning(error:4013)
|
|
||||||
#pragma warning(1:4016)
|
|
||||||
#pragma warning(error:4020)
|
|
||||||
#pragma warning(error:4021)
|
|
||||||
#pragma warning(error:4027)
|
|
||||||
#pragma warning(error:4029)
|
|
||||||
#pragma warning(error:4033)
|
|
||||||
#pragma warning(error:4035)
|
|
||||||
#pragma warning(error:4045)
|
|
||||||
#pragma warning(error:4047)
|
|
||||||
#pragma warning(error:4049)
|
|
||||||
#pragma warning(error:4053)
|
|
||||||
#pragma warning(error:4071)
|
|
||||||
#pragma warning(disable:4101)
|
|
||||||
#pragma warning(error:4150)
|
|
||||||
|
|
||||||
#pragma warning(disable:4244) /* No possible loss of data warnings */
|
|
||||||
#pragma warning(disable:4305) /* No truncation from int to char warnings */
|
|
||||||
#endif /* _MSC_VER */
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
#include <float.h>
|
|
||||||
|
|
||||||
#define G_MINFLOAT FLT_MIN
|
|
||||||
#define G_MAXFLOAT FLT_MAX
|
|
||||||
#define G_MINDOUBLE DBL_MIN
|
|
||||||
#define G_MAXDOUBLE DBL_MAX
|
|
||||||
#define G_MINSHORT SHRT_MIN
|
|
||||||
#define G_MAXSHORT SHRT_MAX
|
|
||||||
#define G_MININT INT_MIN
|
|
||||||
#define G_MAXINT INT_MAX
|
|
||||||
#define G_MINLONG LONG_MIN
|
|
||||||
#define G_MAXLONG LONG_MAX
|
|
||||||
|
|
||||||
typedef signed char gint8;
|
|
||||||
typedef unsigned char guint8;
|
|
||||||
typedef signed short gint16;
|
|
||||||
typedef unsigned short guint16;
|
|
||||||
typedef signed int gint32;
|
|
||||||
typedef unsigned int guint32;
|
|
||||||
|
|
||||||
#define G_HAVE_GINT64 1
|
|
||||||
|
|
||||||
typedef __int64 gint64;
|
|
||||||
typedef unsigned __int64 guint64;
|
|
||||||
|
|
||||||
#define G_GINT64_CONSTANT(val) (val##i64)
|
|
||||||
|
|
||||||
#define GPOINTER_TO_INT(p) ((gint)(p))
|
|
||||||
#define GPOINTER_TO_UINT(p) ((guint)(p))
|
|
||||||
|
|
||||||
#define GINT_TO_POINTER(i) ((gpointer)(i))
|
|
||||||
#define GUINT_TO_POINTER(u) ((gpointer)(u))
|
|
||||||
|
|
||||||
#define g_ATEXIT(proc) (atexit (proc))
|
|
||||||
|
|
||||||
#define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END
|
|
||||||
|
|
||||||
#define G_HAVE_ALLOCA 1
|
|
||||||
#define alloca _alloca
|
|
||||||
|
|
||||||
#define GLIB_MAJOR_VERSION 1
|
|
||||||
#define GLIB_MINOR_VERSION 2
|
|
||||||
#define GLIB_MICRO_VERSION 0
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define G_HAVE_INLINE 1
|
|
||||||
#else /* !__cplusplus */
|
|
||||||
#define G_HAVE___INLINE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define G_THREADS_ENABLED
|
|
||||||
/*
|
|
||||||
* The following program can be used to determine the magic values below:
|
|
||||||
* #include <stdio.h>
|
|
||||||
* #include <pthread.h>
|
|
||||||
* main(int argc, char **argv)
|
|
||||||
* {
|
|
||||||
* int i;
|
|
||||||
* pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
|
|
||||||
* printf ("sizeof (pthread_mutex_t) = %d\n", sizeof (pthread_mutex_t));
|
|
||||||
* printf ("PTHREAD_MUTEX_INITIALIZER = ");
|
|
||||||
* for (i = 0; i < sizeof (pthread_mutex_t); i++)
|
|
||||||
* printf ("%u, ", (unsigned) ((char *) &m)[i]);
|
|
||||||
* printf ("\n");
|
|
||||||
* exit(0);
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct _GStaticMutex GStaticMutex;
|
|
||||||
struct _GStaticMutex
|
|
||||||
{
|
|
||||||
struct _GMutex *runtime_mutex;
|
|
||||||
union {
|
|
||||||
/* The size of the pad array should be sizeof (pthread_mutext_t) */
|
|
||||||
/* This value corresponds to the 1999-01-24 version of pthreads-win32 */
|
|
||||||
char pad[36];
|
|
||||||
double dummy_double;
|
|
||||||
void *dummy_pointer;
|
|
||||||
long dummy_long;
|
|
||||||
} aligned_pad_u;
|
|
||||||
};
|
|
||||||
/* This should be NULL followed by the bytes in PTHREAD_MUTEX_INITIALIZER */
|
|
||||||
#define G_STATIC_MUTEX_INIT { NULL, { { 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } }
|
|
||||||
#define g_static_mutex_get_mutex(mutex) \
|
|
||||||
(g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
|
|
||||||
g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
|
|
||||||
|
|
||||||
#define G_BYTE_ORDER G_LITTLE_ENDIAN
|
|
||||||
|
|
||||||
#define GINT16_TO_LE(val) ((gint16) (val))
|
|
||||||
#define GUINT16_TO_LE(val) ((guint16) (val))
|
|
||||||
#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val))
|
|
||||||
#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val))
|
|
||||||
|
|
||||||
#define GINT32_TO_LE(val) ((gint32) (val))
|
|
||||||
#define GUINT32_TO_LE(val) ((guint32) (val))
|
|
||||||
#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val))
|
|
||||||
#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val))
|
|
||||||
|
|
||||||
#define GINT64_TO_LE(val) ((gint64) (val))
|
|
||||||
#define GUINT64_TO_LE(val) ((guint64) (val))
|
|
||||||
#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val))
|
|
||||||
#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val))
|
|
||||||
|
|
||||||
#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val))
|
|
||||||
#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val))
|
|
||||||
#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val))
|
|
||||||
#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val))
|
|
||||||
|
|
||||||
#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val))
|
|
||||||
#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val))
|
|
||||||
#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val))
|
|
||||||
#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val))
|
|
||||||
|
|
||||||
#define GLIB_SYSDEF_POLLIN = 1
|
|
||||||
#define GLIB_SYSDEF_POLLOUT = 4
|
|
||||||
#define GLIB_SYSDEF_POLLPRI = 2
|
|
||||||
#define GLIB_SYSDEF_POLLERR = 8
|
|
||||||
#define GLIB_SYSDEF_POLLHUP = 16
|
|
||||||
#define GLIB_SYSDEF_POLLNVAL = 32
|
|
||||||
|
|
||||||
#define G_HAVE_WCHAR_H 1
|
|
||||||
#define G_HAVE_WCTYPE_H 1
|
|
||||||
|
|
||||||
/* Define if this is Win32, possibly using the Cygwin emulation layer. */
|
|
||||||
#define WIN32 1
|
|
||||||
|
|
||||||
/* Define if this is Win32 without Cygwin. */
|
|
||||||
#define NATIVE_WIN32 1
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#endif /* GLIBCONFIG_H */
|
|
||||||
@ -1,827 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
|
|
||||||
IDL.h (IDL parse tree and namespace components)
|
|
||||||
|
|
||||||
Include wide character support before this, if necessary.
|
|
||||||
|
|
||||||
Copyright (C) 1998, 1999 Andrew T. Veliath
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with this library; if not, write to the Free
|
|
||||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
$Id: IDL.h,v 1.1 1999-04-08 20:04:26 mccabe%netscape.com Exp $
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
#ifndef __IDL_H
|
|
||||||
#define __IDL_H
|
|
||||||
|
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* version */
|
|
||||||
#define LIBIDL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
|
||||||
#define LIBIDL_MAJOR_VERSION 0
|
|
||||||
#define LIBIDL_MINOR_VERSION 6
|
|
||||||
#define LIBIDL_MICRO_VERSION 3
|
|
||||||
#define LIBIDL_VERSION_CODE LIBIDL_VERSION(0,6,3)
|
|
||||||
|
|
||||||
/* miscellaneous constants */
|
|
||||||
#define IDL_SUCCESS 0
|
|
||||||
#define IDL_ERROR 1
|
|
||||||
#define IDL_WARNING1 2
|
|
||||||
#define IDL_WARNING2 3
|
|
||||||
#define IDL_WARNING3 4
|
|
||||||
#define IDL_WARNINGMAX IDL_WARNING3
|
|
||||||
|
|
||||||
/* general parse flags */
|
|
||||||
#define IDLF_VERBOSE (1UL << 0)
|
|
||||||
#define IDLF_NO_EVAL_CONST (1UL << 1)
|
|
||||||
#define IDLF_COMBINE_REOPENED_MODULES (1UL << 2)
|
|
||||||
#define IDLF_PREFIX_FILENAME (1UL << 3)
|
|
||||||
#define IDLF_IGNORE_FORWARDS (1UL << 4)
|
|
||||||
#define IDLF_PEDANTIC (1UL << 5)
|
|
||||||
|
|
||||||
/* syntax extension parse flags */
|
|
||||||
#define IDLF_TYPECODES (1UL << 16)
|
|
||||||
#define IDLF_XPIDL (1UL << 17)
|
|
||||||
|
|
||||||
/* declaration specification flags */
|
|
||||||
#define IDLF_DECLSPEC_EXIST (1UL << 0)
|
|
||||||
#define IDLF_DECLSPEC_INHIBIT (1UL << 1)
|
|
||||||
|
|
||||||
/* output flags */
|
|
||||||
#define IDLF_OUTPUT_NO_NEWLINES (1UL << 0)
|
|
||||||
#define IDLF_OUTPUT_NO_QUALIFY_IDENTS (1UL << 1)
|
|
||||||
#define IDLF_OUTPUT_PROPERTIES (1UL << 2)
|
|
||||||
#define IDLF_OUTPUT_CODEFRAGS (1UL << 3)
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
# define IDL_EXPORT __declspec (dllexport)
|
|
||||||
# define IDL_IMPORT __declspec (dllimport)
|
|
||||||
#else
|
|
||||||
# define IDL_EXPORT /* empty */
|
|
||||||
# define IDL_IMPORT extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* type casting checks */
|
|
||||||
#define IDL_check_cast_enable(boolean) do { \
|
|
||||||
IDL_IMPORT int __IDL_check_type_casts; \
|
|
||||||
__IDL_check_type_casts = (boolean); \
|
|
||||||
} while (0)
|
|
||||||
#define IDL_CHECK_CAST(tree, thetype, name) \
|
|
||||||
(IDL_check_type_cast(tree, thetype, \
|
|
||||||
__FILE__, __LINE__, \
|
|
||||||
G_GNUC_PRETTY_FUNCTION)->u.name)
|
|
||||||
|
|
||||||
#ifdef G_HAVE_GINT64
|
|
||||||
# if G_MAXLONG > 0xffffffffUL
|
|
||||||
# define IDL_LL "l"
|
|
||||||
# else
|
|
||||||
# define IDL_LL "ll"
|
|
||||||
# endif
|
|
||||||
typedef gint64 IDL_longlong_t;
|
|
||||||
typedef guint64 IDL_ulonglong_t;
|
|
||||||
#else
|
|
||||||
# define IDL_LL "l"
|
|
||||||
typedef long IDL_longlong_t;
|
|
||||||
typedef unsigned long IDL_ulonglong_t;
|
|
||||||
# warning 64-bit integer type not available, using 32-bit instead
|
|
||||||
#endif /* G_HAVE_GINT64 */
|
|
||||||
|
|
||||||
typedef unsigned int IDL_declspec_t;
|
|
||||||
typedef struct _IDL_tree_node IDL_tree_node;
|
|
||||||
typedef struct _IDL_tree_node * IDL_tree;
|
|
||||||
|
|
||||||
struct _IDL_LIST {
|
|
||||||
IDL_tree data;
|
|
||||||
IDL_tree prev;
|
|
||||||
IDL_tree next;
|
|
||||||
IDL_tree _tail; /* Internal use, may not be valid */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define IDL_LIST(a) IDL_CHECK_CAST(a, IDLN_LIST, idl_list)
|
|
||||||
extern IDL_tree IDL_list_new (IDL_tree data);
|
|
||||||
extern IDL_tree IDL_list_concat (IDL_tree orig,
|
|
||||||
IDL_tree append);
|
|
||||||
extern IDL_tree IDL_list_remove (IDL_tree list,
|
|
||||||
IDL_tree p);
|
|
||||||
extern int IDL_list_length (IDL_tree list);
|
|
||||||
extern IDL_tree IDL_list_nth (IDL_tree list,
|
|
||||||
int n);
|
|
||||||
|
|
||||||
struct _IDL_GENTREE {
|
|
||||||
IDL_tree data;
|
|
||||||
GHashTable *siblings;
|
|
||||||
GHashTable *children;
|
|
||||||
GHashFunc hash_func;
|
|
||||||
GCompareFunc key_compare_func;
|
|
||||||
IDL_tree _import; /* Internal use, do not recurse */
|
|
||||||
char *_cur_prefix; /* Internal use */
|
|
||||||
};
|
|
||||||
#define IDL_GENTREE(a) IDL_CHECK_CAST(a, IDLN_GENTREE, idl_gentree)
|
|
||||||
extern IDL_tree IDL_gentree_new (GHashFunc hash_func,
|
|
||||||
GCompareFunc key_compare_func,
|
|
||||||
IDL_tree data);
|
|
||||||
extern IDL_tree IDL_gentree_new_sibling (IDL_tree from,
|
|
||||||
IDL_tree data);
|
|
||||||
extern IDL_tree IDL_gentree_chain_sibling (IDL_tree from,
|
|
||||||
IDL_tree data);
|
|
||||||
extern IDL_tree IDL_gentree_chain_child (IDL_tree from,
|
|
||||||
IDL_tree data);
|
|
||||||
|
|
||||||
struct _IDL_INTEGER {
|
|
||||||
IDL_longlong_t value;
|
|
||||||
};
|
|
||||||
#define IDL_INTEGER(a) IDL_CHECK_CAST(a, IDLN_INTEGER, idl_integer)
|
|
||||||
extern IDL_tree IDL_integer_new (IDL_longlong_t value);
|
|
||||||
|
|
||||||
struct _IDL_STRING {
|
|
||||||
char *value;
|
|
||||||
};
|
|
||||||
#define IDL_STRING(a) IDL_CHECK_CAST(a, IDLN_STRING, idl_string)
|
|
||||||
extern IDL_tree IDL_string_new (char *value);
|
|
||||||
|
|
||||||
struct _IDL_WIDE_STRING {
|
|
||||||
wchar_t *value;
|
|
||||||
};
|
|
||||||
#define IDL_WIDE_STRING(a) IDL_CHECK_CAST(a, IDLN_WIDE_STRING, idl_wide_string)
|
|
||||||
extern IDL_tree IDL_wide_string_new (wchar_t *value);
|
|
||||||
|
|
||||||
struct _IDL_CHAR {
|
|
||||||
char *value;
|
|
||||||
};
|
|
||||||
#define IDL_CHAR(a) IDL_CHECK_CAST(a, IDLN_CHAR, idl_char)
|
|
||||||
extern IDL_tree IDL_char_new (char *value);
|
|
||||||
|
|
||||||
struct _IDL_WIDE_CHAR {
|
|
||||||
wchar_t *value;
|
|
||||||
};
|
|
||||||
#define IDL_WIDE_CHAR(a) IDL_CHECK_CAST(a, IDLN_WIDE_CHAR, idl_wide_char)
|
|
||||||
extern IDL_tree IDL_wide_char_new (wchar_t *value);
|
|
||||||
|
|
||||||
struct _IDL_FIXED {
|
|
||||||
char *value;
|
|
||||||
};
|
|
||||||
#define IDL_FIXED(a) IDL_CHECK_CAST(a, IDLN_FIXED, idl_fixed)
|
|
||||||
extern IDL_tree IDL_fixed_new (char *value);
|
|
||||||
|
|
||||||
struct _IDL_FLOAT {
|
|
||||||
double value;
|
|
||||||
};
|
|
||||||
#define IDL_FLOAT(a) IDL_CHECK_CAST(a, IDLN_FLOAT, idl_float)
|
|
||||||
extern IDL_tree IDL_float_new (double value);
|
|
||||||
|
|
||||||
struct _IDL_BOOLEAN {
|
|
||||||
unsigned value;
|
|
||||||
};
|
|
||||||
#define IDL_BOOLEAN(a) IDL_CHECK_CAST(a, IDLN_BOOLEAN, idl_boolean)
|
|
||||||
extern IDL_tree IDL_boolean_new (unsigned value);
|
|
||||||
|
|
||||||
struct _IDL_IDENT {
|
|
||||||
char *str;
|
|
||||||
char *repo_id;
|
|
||||||
GSList *comments;
|
|
||||||
IDL_tree _ns_ref; /* Internal use, do not recurse */
|
|
||||||
unsigned _flags; /* Internal use */
|
|
||||||
#define IDLF_IDENT_CASE_MISMATCH_HIT (1UL << 0)
|
|
||||||
};
|
|
||||||
#define IDL_IDENT(a) IDL_CHECK_CAST(a, IDLN_IDENT, idl_ident)
|
|
||||||
#define IDL_IDENT_TO_NS(a) IDL_CHECK_CAST(a, IDLN_IDENT, idl_ident._ns_ref)
|
|
||||||
#define IDL_IDENT_REPO_ID(a) IDL_CHECK_CAST(a, IDLN_IDENT, idl_ident.repo_id)
|
|
||||||
extern IDL_tree IDL_ident_new (char *str);
|
|
||||||
extern void IDL_queue_new_ident_comment (const char *str);
|
|
||||||
|
|
||||||
enum IDL_float_type {
|
|
||||||
IDL_FLOAT_TYPE_FLOAT,
|
|
||||||
IDL_FLOAT_TYPE_DOUBLE,
|
|
||||||
IDL_FLOAT_TYPE_LONGDOUBLE
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _IDL_TYPE_FLOAT {
|
|
||||||
enum IDL_float_type f_type;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_FLOAT(a) IDL_CHECK_CAST(a, IDLN_TYPE_FLOAT, idl_type_float)
|
|
||||||
extern IDL_tree IDL_type_float_new (enum IDL_float_type f_type);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_FIXED {
|
|
||||||
IDL_tree positive_int_const;
|
|
||||||
IDL_tree integer_lit;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_FIXED(a) IDL_CHECK_CAST(a, IDLN_TYPE_FIXED, idl_type_fixed)
|
|
||||||
extern IDL_tree IDL_type_fixed_new (IDL_tree positive_int_const,
|
|
||||||
IDL_tree integer_lit);
|
|
||||||
|
|
||||||
enum IDL_integer_type {
|
|
||||||
IDL_INTEGER_TYPE_SHORT,
|
|
||||||
IDL_INTEGER_TYPE_LONG,
|
|
||||||
IDL_INTEGER_TYPE_LONGLONG
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _IDL_TYPE_INTEGER {
|
|
||||||
unsigned f_signed : 1;
|
|
||||||
enum IDL_integer_type f_type;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_INTEGER(a) IDL_CHECK_CAST(a, IDLN_TYPE_INTEGER, idl_type_integer)
|
|
||||||
extern IDL_tree IDL_type_integer_new (unsigned f_signed,
|
|
||||||
enum IDL_integer_type f_type);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_type_char_new (void);
|
|
||||||
extern IDL_tree IDL_type_wide_char_new (void);
|
|
||||||
extern IDL_tree IDL_type_boolean_new (void);
|
|
||||||
extern IDL_tree IDL_type_octet_new (void);
|
|
||||||
extern IDL_tree IDL_type_any_new (void);
|
|
||||||
extern IDL_tree IDL_type_object_new (void);
|
|
||||||
extern IDL_tree IDL_type_typecode_new (void);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_STRING {
|
|
||||||
IDL_tree positive_int_const;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_STRING(a) IDL_CHECK_CAST(a, IDLN_TYPE_STRING, idl_type_string)
|
|
||||||
extern IDL_tree IDL_type_string_new (IDL_tree positive_int_const);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_WIDE_STRING {
|
|
||||||
IDL_tree positive_int_const;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_WIDE_STRING(a) IDL_CHECK_CAST(a, IDLN_TYPE_WIDE_STRING, idl_type_wide_string)
|
|
||||||
extern IDL_tree IDL_type_wide_string_new (IDL_tree positive_int_const);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_ENUM {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree enumerator_list;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_ENUM(a) IDL_CHECK_CAST(a, IDLN_TYPE_ENUM, idl_type_enum)
|
|
||||||
extern IDL_tree IDL_type_enum_new (IDL_tree ident,
|
|
||||||
IDL_tree enumerator_list);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_ARRAY {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree size_list;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_ARRAY(a) IDL_CHECK_CAST(a, IDLN_TYPE_ARRAY, idl_type_array)
|
|
||||||
extern IDL_tree IDL_type_array_new (IDL_tree ident,
|
|
||||||
IDL_tree size_list);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_SEQUENCE {
|
|
||||||
IDL_tree simple_type_spec;
|
|
||||||
IDL_tree positive_int_const;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_SEQUENCE(a) IDL_CHECK_CAST(a, IDLN_TYPE_SEQUENCE, idl_type_sequence)
|
|
||||||
extern IDL_tree IDL_type_sequence_new (IDL_tree simple_type_spec,
|
|
||||||
IDL_tree positive_int_const);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_STRUCT {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree member_list;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_STRUCT(a) IDL_CHECK_CAST(a, IDLN_TYPE_STRUCT, idl_type_struct)
|
|
||||||
extern IDL_tree IDL_type_struct_new (IDL_tree ident,
|
|
||||||
IDL_tree member_list);
|
|
||||||
|
|
||||||
struct _IDL_TYPE_UNION {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree switch_type_spec;
|
|
||||||
IDL_tree switch_body;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_UNION(a) IDL_CHECK_CAST(a, IDLN_TYPE_UNION, idl_type_union)
|
|
||||||
extern IDL_tree IDL_type_union_new (IDL_tree ident,
|
|
||||||
IDL_tree switch_type_spec,
|
|
||||||
IDL_tree switch_body);
|
|
||||||
struct _IDL_MEMBER {
|
|
||||||
IDL_tree type_spec;
|
|
||||||
IDL_tree dcls;
|
|
||||||
};
|
|
||||||
#define IDL_MEMBER(a) IDL_CHECK_CAST(a, IDLN_MEMBER, idl_member)
|
|
||||||
extern IDL_tree IDL_member_new (IDL_tree type_spec,
|
|
||||||
IDL_tree dcls);
|
|
||||||
|
|
||||||
struct _IDL_NATIVE {
|
|
||||||
IDL_tree ident;
|
|
||||||
char *user_type; /* XPIDL extension */
|
|
||||||
};
|
|
||||||
#define IDL_NATIVE(a) IDL_CHECK_CAST(a, IDLN_NATIVE, idl_native)
|
|
||||||
extern IDL_tree IDL_native_new (IDL_tree ident);
|
|
||||||
|
|
||||||
|
|
||||||
struct _IDL_TYPE_DCL {
|
|
||||||
IDL_tree type_spec;
|
|
||||||
IDL_tree dcls;
|
|
||||||
};
|
|
||||||
#define IDL_TYPE_DCL(a) IDL_CHECK_CAST(a, IDLN_TYPE_DCL, idl_type_dcl)
|
|
||||||
extern IDL_tree IDL_type_dcl_new (IDL_tree type_spec,
|
|
||||||
IDL_tree dcls);
|
|
||||||
|
|
||||||
struct _IDL_CONST_DCL {
|
|
||||||
IDL_tree const_type;
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree const_exp;
|
|
||||||
};
|
|
||||||
#define IDL_CONST_DCL(a) IDL_CHECK_CAST(a, IDLN_CONST_DCL, idl_const_dcl)
|
|
||||||
extern IDL_tree IDL_const_dcl_new (IDL_tree const_type,
|
|
||||||
IDL_tree ident,
|
|
||||||
IDL_tree const_exp);
|
|
||||||
|
|
||||||
struct _IDL_EXCEPT_DCL {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree members;
|
|
||||||
};
|
|
||||||
#define IDL_EXCEPT_DCL(a) IDL_CHECK_CAST(a, IDLN_EXCEPT_DCL, idl_except_dcl)
|
|
||||||
extern IDL_tree IDL_except_dcl_new (IDL_tree ident,
|
|
||||||
IDL_tree members);
|
|
||||||
|
|
||||||
struct _IDL_ATTR_DCL {
|
|
||||||
unsigned f_readonly : 1;
|
|
||||||
IDL_tree param_type_spec;
|
|
||||||
IDL_tree simple_declarations;
|
|
||||||
};
|
|
||||||
#define IDL_ATTR_DCL(a) IDL_CHECK_CAST(a, IDLN_ATTR_DCL, idl_attr_dcl)
|
|
||||||
extern IDL_tree IDL_attr_dcl_new (unsigned f_readonly,
|
|
||||||
IDL_tree param_type_spec,
|
|
||||||
IDL_tree simple_declarations);
|
|
||||||
|
|
||||||
struct _IDL_OP_DCL {
|
|
||||||
unsigned f_noscript : 1;
|
|
||||||
unsigned f_oneway : 1;
|
|
||||||
/* XPIDL extension (varags) */
|
|
||||||
unsigned f_varargs : 1;
|
|
||||||
IDL_tree op_type_spec;
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree parameter_dcls;
|
|
||||||
IDL_tree raises_expr;
|
|
||||||
IDL_tree context_expr;
|
|
||||||
};
|
|
||||||
#define IDL_OP_DCL(a) IDL_CHECK_CAST(a, IDLN_OP_DCL, idl_op_dcl)
|
|
||||||
extern IDL_tree IDL_op_dcl_new (unsigned f_oneway,
|
|
||||||
IDL_tree op_type_spec,
|
|
||||||
IDL_tree ident,
|
|
||||||
IDL_tree parameter_dcls,
|
|
||||||
IDL_tree raises_expr,
|
|
||||||
IDL_tree context_expr);
|
|
||||||
|
|
||||||
enum IDL_param_attr {
|
|
||||||
IDL_PARAM_IN,
|
|
||||||
IDL_PARAM_OUT,
|
|
||||||
IDL_PARAM_INOUT
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _IDL_PARAM_DCL {
|
|
||||||
enum IDL_param_attr attr;
|
|
||||||
IDL_tree param_type_spec;
|
|
||||||
IDL_tree simple_declarator;
|
|
||||||
};
|
|
||||||
#define IDL_PARAM_DCL(a) IDL_CHECK_CAST(a, IDLN_PARAM_DCL, idl_param_dcl)
|
|
||||||
extern IDL_tree IDL_param_dcl_new (enum IDL_param_attr attr,
|
|
||||||
IDL_tree param_type_spec,
|
|
||||||
IDL_tree simple_declarator);
|
|
||||||
|
|
||||||
struct _IDL_CASE_STMT {
|
|
||||||
IDL_tree labels;
|
|
||||||
IDL_tree element_spec;
|
|
||||||
};
|
|
||||||
#define IDL_CASE_STMT(a) IDL_CHECK_CAST(a, IDLN_CASE_STMT, idl_case_stmt)
|
|
||||||
extern IDL_tree IDL_case_stmt_new (IDL_tree labels,
|
|
||||||
IDL_tree element_spec);
|
|
||||||
|
|
||||||
struct _IDL_INTERFACE {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree inheritance_spec;
|
|
||||||
IDL_tree body;
|
|
||||||
};
|
|
||||||
#define IDL_INTERFACE(a) IDL_CHECK_CAST(a, IDLN_INTERFACE, idl_interface)
|
|
||||||
extern IDL_tree IDL_interface_new (IDL_tree ident,
|
|
||||||
IDL_tree inheritance_spec,
|
|
||||||
IDL_tree body);
|
|
||||||
|
|
||||||
struct _IDL_FORWARD_DCL {
|
|
||||||
IDL_tree ident;
|
|
||||||
};
|
|
||||||
#define IDL_FORWARD_DCL(a) IDL_CHECK_CAST(a, IDLN_FORWARD_DCL, idl_forward_dcl)
|
|
||||||
extern IDL_tree IDL_forward_dcl_new (IDL_tree ident);
|
|
||||||
|
|
||||||
struct _IDL_MODULE {
|
|
||||||
IDL_tree ident;
|
|
||||||
IDL_tree definition_list;
|
|
||||||
};
|
|
||||||
#define IDL_MODULE(a) IDL_CHECK_CAST(a, IDLN_MODULE, idl_module)
|
|
||||||
extern IDL_tree IDL_module_new (IDL_tree ident,
|
|
||||||
IDL_tree definition_list);
|
|
||||||
|
|
||||||
enum IDL_binop {
|
|
||||||
IDL_BINOP_OR,
|
|
||||||
IDL_BINOP_XOR,
|
|
||||||
IDL_BINOP_AND,
|
|
||||||
IDL_BINOP_SHR,
|
|
||||||
IDL_BINOP_SHL,
|
|
||||||
IDL_BINOP_ADD,
|
|
||||||
IDL_BINOP_SUB,
|
|
||||||
IDL_BINOP_MULT,
|
|
||||||
IDL_BINOP_DIV,
|
|
||||||
IDL_BINOP_MOD
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _IDL_BINOP {
|
|
||||||
enum IDL_binop op;
|
|
||||||
IDL_tree left, right;
|
|
||||||
};
|
|
||||||
#define IDL_BINOP(a) IDL_CHECK_CAST(a, IDLN_BINOP, idl_binop)
|
|
||||||
extern IDL_tree IDL_binop_new (enum IDL_binop op,
|
|
||||||
IDL_tree left,
|
|
||||||
IDL_tree right);
|
|
||||||
|
|
||||||
enum IDL_unaryop {
|
|
||||||
IDL_UNARYOP_PLUS,
|
|
||||||
IDL_UNARYOP_MINUS,
|
|
||||||
IDL_UNARYOP_COMPLEMENT
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _IDL_UNARYOP {
|
|
||||||
enum IDL_unaryop op;
|
|
||||||
IDL_tree operand;
|
|
||||||
};
|
|
||||||
#define IDL_UNARYOP(a) IDL_CHECK_CAST(a, IDLN_UNARYOP, idl_unaryop)
|
|
||||||
extern IDL_tree IDL_unaryop_new (enum IDL_unaryop op,
|
|
||||||
IDL_tree operand);
|
|
||||||
|
|
||||||
/* XPIDL code fragments extension. */
|
|
||||||
struct _IDL_CODEFRAG {
|
|
||||||
char *desc;
|
|
||||||
GSList *lines;
|
|
||||||
};
|
|
||||||
#define IDL_CODEFRAG(a) IDL_CHECK_CAST(a, IDLN_CODEFRAG, idl_codefrag)
|
|
||||||
extern IDL_tree IDL_codefrag_new (char *desc,
|
|
||||||
GSList *lines);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IDL_tree_type - Enumerations of node types
|
|
||||||
*
|
|
||||||
* Note this enumerator list is subject to change in the future. A program should not need
|
|
||||||
* more than a recompilation to adjust for a change in this list, so instead of using a
|
|
||||||
* statically initialized jumptable, allocate an array of size IDLN_LAST and assign the
|
|
||||||
* elements manually.
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
IDLN_NONE,
|
|
||||||
IDLN_ANY,
|
|
||||||
|
|
||||||
IDLN_LIST,
|
|
||||||
IDLN_GENTREE,
|
|
||||||
IDLN_INTEGER,
|
|
||||||
IDLN_STRING,
|
|
||||||
IDLN_WIDE_STRING,
|
|
||||||
IDLN_CHAR,
|
|
||||||
IDLN_WIDE_CHAR,
|
|
||||||
IDLN_FIXED,
|
|
||||||
IDLN_FLOAT,
|
|
||||||
IDLN_BOOLEAN,
|
|
||||||
IDLN_IDENT,
|
|
||||||
IDLN_TYPE_DCL,
|
|
||||||
IDLN_CONST_DCL,
|
|
||||||
IDLN_EXCEPT_DCL,
|
|
||||||
IDLN_ATTR_DCL,
|
|
||||||
IDLN_OP_DCL,
|
|
||||||
IDLN_PARAM_DCL,
|
|
||||||
IDLN_FORWARD_DCL,
|
|
||||||
IDLN_TYPE_INTEGER,
|
|
||||||
IDLN_TYPE_FLOAT,
|
|
||||||
IDLN_TYPE_FIXED,
|
|
||||||
IDLN_TYPE_CHAR,
|
|
||||||
IDLN_TYPE_WIDE_CHAR,
|
|
||||||
IDLN_TYPE_STRING,
|
|
||||||
IDLN_TYPE_WIDE_STRING,
|
|
||||||
IDLN_TYPE_BOOLEAN,
|
|
||||||
IDLN_TYPE_OCTET,
|
|
||||||
IDLN_TYPE_ANY,
|
|
||||||
IDLN_TYPE_OBJECT,
|
|
||||||
IDLN_TYPE_TYPECODE,
|
|
||||||
IDLN_TYPE_ENUM,
|
|
||||||
IDLN_TYPE_SEQUENCE,
|
|
||||||
IDLN_TYPE_ARRAY,
|
|
||||||
IDLN_TYPE_STRUCT,
|
|
||||||
IDLN_TYPE_UNION,
|
|
||||||
IDLN_MEMBER,
|
|
||||||
IDLN_NATIVE,
|
|
||||||
IDLN_CASE_STMT,
|
|
||||||
IDLN_INTERFACE,
|
|
||||||
IDLN_MODULE,
|
|
||||||
IDLN_BINOP,
|
|
||||||
IDLN_UNARYOP,
|
|
||||||
IDLN_CODEFRAG,
|
|
||||||
|
|
||||||
IDLN_LAST
|
|
||||||
} IDL_tree_type;
|
|
||||||
IDL_IMPORT const char * IDL_tree_type_names[];
|
|
||||||
|
|
||||||
struct _IDL_tree_node {
|
|
||||||
IDL_tree_type _type;
|
|
||||||
IDL_tree up; /* Do not recurse */
|
|
||||||
IDL_declspec_t declspec;
|
|
||||||
/* properties is an XPIDL extension. It is a hash table of
|
|
||||||
* case-insensitive string keys to string values. */
|
|
||||||
GHashTable *properties;
|
|
||||||
int refs;
|
|
||||||
char *_file; /* Internal use */
|
|
||||||
int _line; /* Internal use */
|
|
||||||
union {
|
|
||||||
struct _IDL_LIST idl_list;
|
|
||||||
struct _IDL_GENTREE idl_gentree;
|
|
||||||
struct _IDL_INTEGER idl_integer;
|
|
||||||
struct _IDL_STRING idl_string;
|
|
||||||
struct _IDL_WIDE_STRING idl_wide_string;
|
|
||||||
struct _IDL_CHAR idl_char;
|
|
||||||
struct _IDL_WIDE_CHAR idl_wide_char;
|
|
||||||
struct _IDL_FIXED idl_fixed;
|
|
||||||
struct _IDL_FLOAT idl_float;
|
|
||||||
struct _IDL_BOOLEAN idl_boolean;
|
|
||||||
struct _IDL_IDENT idl_ident;
|
|
||||||
struct _IDL_TYPE_DCL idl_type_dcl;
|
|
||||||
struct _IDL_CONST_DCL idl_const_dcl;
|
|
||||||
struct _IDL_EXCEPT_DCL idl_except_dcl;
|
|
||||||
struct _IDL_ATTR_DCL idl_attr_dcl;
|
|
||||||
struct _IDL_OP_DCL idl_op_dcl;
|
|
||||||
struct _IDL_PARAM_DCL idl_param_dcl;
|
|
||||||
struct _IDL_FORWARD_DCL idl_forward_dcl;
|
|
||||||
struct _IDL_TYPE_FLOAT idl_type_float;
|
|
||||||
struct _IDL_TYPE_FIXED idl_type_fixed;
|
|
||||||
struct _IDL_TYPE_INTEGER idl_type_integer;
|
|
||||||
struct _IDL_TYPE_ENUM idl_type_enum;
|
|
||||||
struct _IDL_TYPE_STRING idl_type_string;
|
|
||||||
struct _IDL_TYPE_WIDE_STRING idl_type_wide_string;
|
|
||||||
struct _IDL_TYPE_SEQUENCE idl_type_sequence;
|
|
||||||
struct _IDL_TYPE_ARRAY idl_type_array;
|
|
||||||
struct _IDL_TYPE_STRUCT idl_type_struct;
|
|
||||||
struct _IDL_TYPE_UNION idl_type_union;
|
|
||||||
struct _IDL_MEMBER idl_member;
|
|
||||||
struct _IDL_NATIVE idl_native;
|
|
||||||
struct _IDL_CASE_STMT idl_case_stmt;
|
|
||||||
struct _IDL_INTERFACE idl_interface;
|
|
||||||
struct _IDL_MODULE idl_module;
|
|
||||||
struct _IDL_BINOP idl_binop;
|
|
||||||
struct _IDL_UNARYOP idl_unaryop;
|
|
||||||
struct _IDL_CODEFRAG idl_codefrag;
|
|
||||||
} u;
|
|
||||||
};
|
|
||||||
#define IDL_NODE_TYPE(a) ((a)->_type)
|
|
||||||
#define IDL_NODE_TYPE_NAME(a) ((a)?IDL_tree_type_names[IDL_NODE_TYPE(a)]:"NULL")
|
|
||||||
#define IDL_NODE_UP(a) ((a)->up)
|
|
||||||
#define IDL_NODE_PROPERTIES(a) ((a)->properties)
|
|
||||||
#define IDL_NODE_DECLSPEC(a) ((a)->declspec)
|
|
||||||
#define IDL_NODE_REFS(a) ((a)->refs)
|
|
||||||
#define IDL_NODE_IS_LITERAL(a) \
|
|
||||||
(IDL_NODE_TYPE(a) == IDLN_INTEGER || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_STRING || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_WIDE_STRING || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_CHAR || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_WIDE_CHAR || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_FIXED || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_FLOAT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_BOOLEAN)
|
|
||||||
#define IDL_NODE_IS_TYPE(a) \
|
|
||||||
(IDL_NODE_TYPE(a) == IDLN_TYPE_INTEGER || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_STRING || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_WIDE_STRING || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_CHAR || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_WIDE_CHAR || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_FIXED || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_FLOAT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_BOOLEAN || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_OCTET || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_ANY || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_OBJECT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_TYPECODE || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_ENUM || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_ARRAY || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_SEQUENCE || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_STRUCT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_UNION)
|
|
||||||
#define IDL_NODE_IS_SCOPED(a) \
|
|
||||||
(IDL_NODE_TYPE(a) == IDLN_IDENT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_INTERFACE || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_MODULE || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_EXCEPT_DCL || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_OP_DCL || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_ENUM || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_STRUCT || \
|
|
||||||
IDL_NODE_TYPE(a) == IDLN_TYPE_UNION)
|
|
||||||
|
|
||||||
typedef struct _IDL_ns * IDL_ns;
|
|
||||||
|
|
||||||
struct _IDL_ns {
|
|
||||||
IDL_tree global;
|
|
||||||
IDL_tree file;
|
|
||||||
IDL_tree current;
|
|
||||||
GHashTable *inhibits;
|
|
||||||
GHashTable *filename_hash;
|
|
||||||
};
|
|
||||||
#define IDL_NS(a) (*(a))
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
IDL_INPUT_REASON_INIT,
|
|
||||||
IDL_INPUT_REASON_FILL,
|
|
||||||
IDL_INPUT_REASON_ABORT,
|
|
||||||
IDL_INPUT_REASON_FINISH
|
|
||||||
} IDL_input_reason;
|
|
||||||
|
|
||||||
union IDL_input_data {
|
|
||||||
struct {
|
|
||||||
const char *filename;
|
|
||||||
} init;
|
|
||||||
struct {
|
|
||||||
char *buffer;
|
|
||||||
size_t max_size;
|
|
||||||
} fill;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef int (*IDL_input_callback) (IDL_input_reason reason,
|
|
||||||
union IDL_input_data *data,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
typedef int (*IDL_msg_callback) (int level,
|
|
||||||
int num,
|
|
||||||
int line,
|
|
||||||
const char *filename,
|
|
||||||
const char *message);
|
|
||||||
|
|
||||||
typedef struct _IDL_tree_func_state IDL_tree_func_state;
|
|
||||||
typedef struct _IDL_tree_func_data IDL_tree_func_data;
|
|
||||||
|
|
||||||
/* Traversal state data. Recursive walks chain states. */
|
|
||||||
struct _IDL_tree_func_state {
|
|
||||||
IDL_tree_func_state *up;
|
|
||||||
IDL_tree start;
|
|
||||||
IDL_tree_func_data *bottom;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This holds a list of the up hierarchy traversed, beginning from traversal. This is
|
|
||||||
* useful since nodes referenced after initial definition will have a different traversal
|
|
||||||
* path than the actual up path. */
|
|
||||||
struct _IDL_tree_func_data {
|
|
||||||
IDL_tree_func_state *state;
|
|
||||||
IDL_tree_func_data *up;
|
|
||||||
IDL_tree tree;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef gboolean (*IDL_tree_func) (IDL_tree_func_data *tnfd,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_check_type_cast (const IDL_tree var,
|
|
||||||
IDL_tree_type type,
|
|
||||||
const char *file,
|
|
||||||
int line,
|
|
||||||
const char *function);
|
|
||||||
|
|
||||||
extern const char * IDL_get_libver_string (void);
|
|
||||||
|
|
||||||
extern const char * IDL_get_IDLver_string (void);
|
|
||||||
|
|
||||||
extern int IDL_parse_filename (const char *filename,
|
|
||||||
const char *cpp_args,
|
|
||||||
IDL_msg_callback msg_cb,
|
|
||||||
IDL_tree *tree, IDL_ns *ns,
|
|
||||||
unsigned long parse_flags,
|
|
||||||
int max_msg_level);
|
|
||||||
|
|
||||||
extern int IDL_parse_filename_with_input (const char *filename,
|
|
||||||
IDL_input_callback input_cb,
|
|
||||||
gpointer input_cb_user_data,
|
|
||||||
IDL_msg_callback msg_cb,
|
|
||||||
IDL_tree *tree, IDL_ns *ns,
|
|
||||||
unsigned long parse_flags,
|
|
||||||
int max_msg_level);
|
|
||||||
|
|
||||||
extern int IDL_ns_prefix (IDL_ns ns,
|
|
||||||
const char *s);
|
|
||||||
|
|
||||||
extern void IDL_ns_ID (IDL_ns ns,
|
|
||||||
const char *s);
|
|
||||||
|
|
||||||
extern void IDL_ns_version (IDL_ns ns,
|
|
||||||
const char *s);
|
|
||||||
|
|
||||||
extern int IDL_inhibit_get (void);
|
|
||||||
|
|
||||||
extern void IDL_inhibit_push (void);
|
|
||||||
|
|
||||||
extern void IDL_inhibit_pop (void);
|
|
||||||
|
|
||||||
extern void IDL_file_set (const char *filename,
|
|
||||||
int line);
|
|
||||||
|
|
||||||
extern void IDL_file_get (const char **filename,
|
|
||||||
int *line);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_get_parent_node (IDL_tree p,
|
|
||||||
IDL_tree_type type,
|
|
||||||
int *scope_levels);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_tree_get_scope (IDL_tree p);
|
|
||||||
|
|
||||||
extern int IDL_tree_get_node_info (IDL_tree tree,
|
|
||||||
char **who,
|
|
||||||
char **what);
|
|
||||||
|
|
||||||
extern void IDL_tree_error (IDL_tree p,
|
|
||||||
const char *fmt,
|
|
||||||
...);
|
|
||||||
|
|
||||||
extern void IDL_tree_warning (IDL_tree p,
|
|
||||||
int level,
|
|
||||||
const char *fmt,
|
|
||||||
...);
|
|
||||||
|
|
||||||
extern const char * IDL_tree_property_get (IDL_tree tree,
|
|
||||||
const char *key);
|
|
||||||
|
|
||||||
extern void IDL_tree_property_set (IDL_tree tree,
|
|
||||||
const char *key,
|
|
||||||
const char *value);
|
|
||||||
|
|
||||||
extern gboolean IDL_tree_property_remove (IDL_tree tree,
|
|
||||||
const char *key);
|
|
||||||
|
|
||||||
extern void IDL_tree_properties_copy (IDL_tree from_tree,
|
|
||||||
IDL_tree to_tree);
|
|
||||||
|
|
||||||
extern void IDL_tree_walk (IDL_tree p,
|
|
||||||
IDL_tree_func_data *current,
|
|
||||||
IDL_tree_func pre_tree_func,
|
|
||||||
IDL_tree_func post_tree_func,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
extern void IDL_tree_walk_in_order (IDL_tree p,
|
|
||||||
IDL_tree_func tree_func,
|
|
||||||
gpointer user_data);
|
|
||||||
|
|
||||||
extern void IDL_tree_free (IDL_tree root);
|
|
||||||
|
|
||||||
extern void IDL_tree_to_IDL (IDL_tree p,
|
|
||||||
IDL_ns ns,
|
|
||||||
FILE *output,
|
|
||||||
unsigned long output_flags);
|
|
||||||
|
|
||||||
extern char * IDL_do_escapes (const char *s);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_resolve_const_exp (IDL_tree p,
|
|
||||||
IDL_tree_type type);
|
|
||||||
|
|
||||||
extern IDL_ns IDL_ns_new (void);
|
|
||||||
|
|
||||||
extern void IDL_ns_free (IDL_ns ns);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_resolve_this_scope_ident (IDL_ns ns,
|
|
||||||
IDL_tree scope,
|
|
||||||
IDL_tree ident);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_resolve_ident (IDL_ns ns,
|
|
||||||
IDL_tree ident);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_lookup_this_scope (IDL_ns ns,
|
|
||||||
IDL_tree scope,
|
|
||||||
IDL_tree ident,
|
|
||||||
gboolean *conflict);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_lookup_cur_scope (IDL_ns ns,
|
|
||||||
IDL_tree ident,
|
|
||||||
gboolean *conflict);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_place_new (IDL_ns ns,
|
|
||||||
IDL_tree ident);
|
|
||||||
|
|
||||||
extern void IDL_ns_push_scope (IDL_ns ns,
|
|
||||||
IDL_tree ident);
|
|
||||||
|
|
||||||
extern void IDL_ns_pop_scope (IDL_ns ns);
|
|
||||||
|
|
||||||
extern IDL_tree IDL_ns_qualified_ident_new (IDL_tree nsid);
|
|
||||||
|
|
||||||
extern char * IDL_ns_ident_to_qstring (IDL_tree ns_ident,
|
|
||||||
const char *join,
|
|
||||||
int scope_levels);
|
|
||||||
|
|
||||||
extern int IDL_ns_scope_levels_from_here (IDL_ns ns,
|
|
||||||
IDL_tree ident,
|
|
||||||
IDL_tree parent);
|
|
||||||
|
|
||||||
extern char * IDL_ns_ident_make_repo_id (IDL_ns ns,
|
|
||||||
IDL_tree p,
|
|
||||||
const char *p_prefix,
|
|
||||||
int *major,
|
|
||||||
int *minor);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __IDL_H */
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
@echo off
|
|
||||||
if "%MOZ_TOOLS%" == "" goto no_moz_tools
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo MOZ_TOOLS is set to %MOZ_TOOLS%
|
|
||||||
echo It should NOT be set to anything in your cygwin
|
|
||||||
echo directory, such as c:\cygwin or c:\cygwin\bin
|
|
||||||
echo where C:\cygwin represents where you installed cygwin.
|
|
||||||
echo In that case files will be overwritten.
|
|
||||||
echo.
|
|
||||||
echo It should be set to some empty directory.
|
|
||||||
echo. e.g.
|
|
||||||
echo. mkdir c:\moz_tools
|
|
||||||
echo. set MOZ_TOOLS=c:\moz_tools
|
|
||||||
echo.
|
|
||||||
echo Please verify this.
|
|
||||||
echo.
|
|
||||||
|
|
||||||
pause
|
|
||||||
|
|
||||||
echo copying exes and dlls to %MOZ_TOOLS%\bin
|
|
||||||
if not exist %MOZ_TOOLS%\bin\NUL mkdir %MOZ_TOOLS%\bin >NUL
|
|
||||||
copy bin\x86\* %MOZ_TOOLS%\bin >NUL
|
|
||||||
|
|
||||||
echo copying include files to %MOZ_TOOLS%\include
|
|
||||||
if not exist %MOZ_TOOLS%\include\NUL mkdir %MOZ_TOOLS%\include >NUL
|
|
||||||
copy include\* %MOZ_TOOLS%\include >NUL
|
|
||||||
|
|
||||||
echo copying include files to %MOZ_TOOLS%\include\libIDL
|
|
||||||
if not exist %MOZ_TOOLS%\include\libIDL\NUL mkdir %MOZ_TOOLS%\include\libIDL >NUL
|
|
||||||
copy include\libIDL\* %MOZ_TOOLS%\include\libIDL >NUL
|
|
||||||
|
|
||||||
echo copying lib files to %MOZ_TOOLS%\lib
|
|
||||||
if not exist %MOZ_TOOLS%\lib\NUL mkdir %MOZ_TOOLS%\lib >NUL
|
|
||||||
copy lib\* %MOZ_TOOLS%\lib >NUL
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo done copying
|
|
||||||
echo.
|
|
||||||
echo make sure that MOZ_TOOLS\bin is on your path
|
|
||||||
echo.
|
|
||||||
goto done
|
|
||||||
|
|
||||||
:no_moz_tools
|
|
||||||
echo.
|
|
||||||
echo. ERROR!
|
|
||||||
echo.
|
|
||||||
echo You need to set MOZ_TOOLS in your environment.
|
|
||||||
echo MOZ_TOOLS should be the name of a directory that
|
|
||||||
echo you create to hold these tools.
|
|
||||||
echo.
|
|
||||||
echo. e.g.
|
|
||||||
echo. mkdir c:\moz_tools
|
|
||||||
echo. set MOZ_TOOLS=c:\moz_tools
|
|
||||||
echo.
|
|
||||||
echo MOZ_TOOLS should be set permanently so that it is
|
|
||||||
echo available to the build system whenever mozilla is building.
|
|
||||||
echo.
|
|
||||||
echo.
|
|
||||||
echo Please set MOZ_TOOLS and run install.bat again
|
|
||||||
echo.
|
|
||||||
|
|
||||||
:done
|
|
||||||
pause
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
Sources for glib are available from gnome.org via cvs. See cvs
|
|
||||||
checkout instructions at http://www.gnome.org - or use
|
|
||||||
|
|
||||||
export CVSROOT=:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome
|
|
||||||
cvs login (no password)
|
|
||||||
cvs -z3 checkout glib
|
|
||||||
|
|
||||||
or grap a package of the sources we're currently using from
|
|
||||||
ftp://ftp.mozilla.org/pub/mozilla/libraries/source/
|
|
||||||
|
|
||||||
These sources correspond to the GLIB_1_2_0 tag on the gnome cvs
|
|
||||||
server.
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
Sources for libIDL are available from gnome.org via cvs. See cvs
|
|
||||||
checkout instructions at http://www.gnome.org - or use
|
|
||||||
|
|
||||||
export CVSROOT=:pserver:anonymous@anoncvs.gnome.org:/cvs/gnome
|
|
||||||
cvs login (no password)
|
|
||||||
cvs -z3 checkout ORBit
|
|
||||||
|
|
||||||
(libIDL files are in ORBit/libIDL)
|
|
||||||
|
|
||||||
or grap a package of the sources we're currently using from
|
|
||||||
ftp://ftp.mozilla.org/pub/mozilla/libraries/source/
|
|
||||||
|
|
||||||
These sources correspond to the LIBIDL_V0_6_3 tag on the gnome cvs
|
|
||||||
server.
|
|
||||||
@ -1,226 +0,0 @@
|
|||||||
Notes on the Free Translation Project
|
|
||||||
*************************************
|
|
||||||
|
|
||||||
Free software is going international! The Free Translation Project
|
|
||||||
is a way to get maintainers of free software, translators, and users all
|
|
||||||
together, so that will gradually become able to speak many languages.
|
|
||||||
A few packages already provide translations for their messages.
|
|
||||||
|
|
||||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
|
||||||
assume that the distributed package does use GNU `gettext' internally,
|
|
||||||
itself available at your nearest GNU archive site. But you do *not*
|
|
||||||
need to install GNU `gettext' prior to configuring, installing or using
|
|
||||||
this package with messages translated.
|
|
||||||
|
|
||||||
Installers will find here some useful hints. These notes also
|
|
||||||
explain how users should proceed for getting the programs to use the
|
|
||||||
available translations. They tell how people wanting to contribute and
|
|
||||||
work at translations should contact the appropriate team.
|
|
||||||
|
|
||||||
When reporting bugs in the `intl/' directory or bugs which may be
|
|
||||||
related to internationalization, you should tell about the version of
|
|
||||||
`gettext' which is used. The information can be found in the
|
|
||||||
`intl/VERSION' file, in internationalized packages.
|
|
||||||
|
|
||||||
One advise in advance
|
|
||||||
=====================
|
|
||||||
|
|
||||||
If you want to exploit the full power of internationalization, you
|
|
||||||
should configure it using
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to force usage of internationalizing routines provided within this
|
|
||||||
package, despite the existence of internationalizing capabilities in the
|
|
||||||
operating system where this package is being installed. So far, only
|
|
||||||
the `gettext' implementation in the GNU C library version 2 provides as
|
|
||||||
many features (such as locale alias or message inheritance) as the
|
|
||||||
implementation here. It is also not possible to offer this additional
|
|
||||||
functionality on top of a `catgets' implementation. Future versions of
|
|
||||||
GNU `gettext' will very likely convey even more functionality. So it
|
|
||||||
might be a good idea to change to GNU `gettext' as soon as possible.
|
|
||||||
|
|
||||||
So you need not provide this option if you are using GNU libc 2 or
|
|
||||||
you have installed a recent copy of the GNU gettext package with the
|
|
||||||
included `libintl'.
|
|
||||||
|
|
||||||
INSTALL Matters
|
|
||||||
===============
|
|
||||||
|
|
||||||
Some packages are "localizable" when properly installed; the
|
|
||||||
programs they contain can be made to speak your own native language.
|
|
||||||
Most such packages use GNU `gettext'. Other packages have their own
|
|
||||||
ways to internationalization, predating GNU `gettext'.
|
|
||||||
|
|
||||||
By default, this package will be installed to allow translation of
|
|
||||||
messages. It will automatically detect whether the system provides
|
|
||||||
usable `catgets' (if using this is selected by the installer) or
|
|
||||||
`gettext' functions. If neither is available, the GNU `gettext' own
|
|
||||||
library will be used. This library is wholly contained within this
|
|
||||||
package, usually in the `intl/' subdirectory, so prior installation of
|
|
||||||
the GNU `gettext' package is *not* required. Installers may use
|
|
||||||
special options at configuration time for changing the default
|
|
||||||
behaviour. The commands:
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
./configure --with-catgets
|
|
||||||
./configure --disable-nls
|
|
||||||
|
|
||||||
will respectively bypass any pre-existing `catgets' or `gettext' to use
|
|
||||||
the internationalizing routines provided within this package, enable
|
|
||||||
the use of the `catgets' functions (if found on the locale system), or
|
|
||||||
else, *totally* disable translation of messages.
|
|
||||||
|
|
||||||
When you already have GNU `gettext' installed on your system and run
|
|
||||||
configure without an option for your new package, `configure' will
|
|
||||||
probably detect the previously built and installed `libintl.a' file and
|
|
||||||
will decide to use this. This might be not what is desirable. You
|
|
||||||
should use the more recent version of the GNU `gettext' library. I.e.
|
|
||||||
if the file `intl/VERSION' shows that the library which comes with this
|
|
||||||
package is more recent, you should use
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to prevent auto-detection.
|
|
||||||
|
|
||||||
By default the configuration process will not test for the `catgets'
|
|
||||||
function and therefore they will not be used. The reasons are already
|
|
||||||
given above: the emulation on top of `catgets' cannot provide all the
|
|
||||||
extensions provided by the GNU `gettext' library. If you nevertheless
|
|
||||||
want to use the `catgets' functions use
|
|
||||||
|
|
||||||
./configure --with-catgets
|
|
||||||
|
|
||||||
to enable the test for `catgets' (this causes no harm if `catgets' is
|
|
||||||
not available on your system). If you really select this option we
|
|
||||||
would like to hear about the reasons because we cannot think of any
|
|
||||||
good one ourself.
|
|
||||||
|
|
||||||
Internationalized packages have usually many `po/LL.po' files, where
|
|
||||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
|
||||||
translations have been forbidden at `configure' time by using the
|
|
||||||
`--disable-nls' switch, all available translations are installed
|
|
||||||
together with the package. However, the environment variable `LINGUAS'
|
|
||||||
may be set, prior to configuration, to limit the installed set.
|
|
||||||
`LINGUAS' should then contain a space separated list of two-letter
|
|
||||||
codes, stating which languages are allowed.
|
|
||||||
|
|
||||||
Using This Package
|
|
||||||
==================
|
|
||||||
|
|
||||||
As a user, if your language has been installed for this package, you
|
|
||||||
only have to set the `LANG' environment variable to the appropriate
|
|
||||||
ISO 639 `LL' two-letter code prior to using the programs in the
|
|
||||||
package. For example, let's suppose that you speak German. At the
|
|
||||||
shell prompt, merely execute `setenv LANG de' (in `csh'),
|
|
||||||
`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This
|
|
||||||
can be done from your `.login' or `.profile' file, once and for all.
|
|
||||||
|
|
||||||
An operating system might already offer message localization for
|
|
||||||
many of its programs, while other programs have been installed locally
|
|
||||||
with the full capabilities of GNU `gettext'. Just using `gettext'
|
|
||||||
extended syntax for `LANG' would break proper localization of already
|
|
||||||
available operating system programs. In this case, users should set
|
|
||||||
both `LANGUAGE' and `LANG' variables in their environment, as programs
|
|
||||||
using GNU `gettext' give preference to `LANGUAGE'. For example, some
|
|
||||||
Swedish users would rather read translations in German than English for
|
|
||||||
when Swedish is not available. This is easily accomplished by setting
|
|
||||||
`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
|
|
||||||
|
|
||||||
Translating Teams
|
|
||||||
=================
|
|
||||||
|
|
||||||
For the Free Translation Project to be a success, we need interested
|
|
||||||
people who like their own language and write it well, and who are also
|
|
||||||
able to synergize with other translators speaking the same language.
|
|
||||||
Each translation team has its own mailing list, courtesy of Linux
|
|
||||||
International. You may reach your translation team at the address
|
|
||||||
`LL@li.org', replacing LL by the two-letter ISO 639 code for your
|
|
||||||
language. Language codes are *not* the same as the country codes given
|
|
||||||
in ISO 3166. The following translation teams exist, as of December
|
|
||||||
1997:
|
|
||||||
|
|
||||||
Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
|
|
||||||
Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
|
|
||||||
`hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
|
|
||||||
Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
|
|
||||||
`pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
|
|
||||||
Swedish `sv', and Turkish `tr'.
|
|
||||||
|
|
||||||
For example, you may reach the Chinese translation team by writing to
|
|
||||||
`zh@li.org'.
|
|
||||||
|
|
||||||
If you'd like to volunteer to *work* at translating messages, you
|
|
||||||
should become a member of the translating team for your own language.
|
|
||||||
The subscribing address is *not* the same as the list itself, it has
|
|
||||||
`-request' appended. For example, speakers of Swedish can send a
|
|
||||||
message to `sv-request@li.org', having this message body:
|
|
||||||
|
|
||||||
subscribe
|
|
||||||
|
|
||||||
Keep in mind that team members are expected to participate
|
|
||||||
*actively* in translations, or at solving translational difficulties,
|
|
||||||
rather than merely lurking around. If your team does not exist yet and
|
|
||||||
you want to start one, or if you are unsure about what to do or how to
|
|
||||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
|
||||||
coordinator for all translator teams.
|
|
||||||
|
|
||||||
The English team is special. It works at improving and uniformizing
|
|
||||||
the terminology in use. Proven linguistic skill are praised more than
|
|
||||||
programming skill, here.
|
|
||||||
|
|
||||||
Available Packages
|
|
||||||
==================
|
|
||||||
|
|
||||||
Languages are not equally supported in all packages. The following
|
|
||||||
matrix shows the current state of internationalization, as of December
|
|
||||||
1997. The matrix shows, in regard of each package, for which languages
|
|
||||||
PO files have been submitted to translation coordination.
|
|
||||||
|
|
||||||
Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
|
|
||||||
.----------------------------------------------------.
|
|
||||||
bash | [] [] [] | 3
|
|
||||||
bison | [] [] [] | 3
|
|
||||||
clisp | [] [] [] [] | 4
|
|
||||||
cpio | [] [] [] [] [] [] | 6
|
|
||||||
diffutils | [] [] [] [] [] | 5
|
|
||||||
enscript | [] [] [] [] [] [] | 6
|
|
||||||
fileutils | [] [] [] [] [] [] [] [] [] [] | 10
|
|
||||||
findutils | [] [] [] [] [] [] [] [] [] | 9
|
|
||||||
flex | [] [] [] [] | 4
|
|
||||||
gcal | [] [] [] [] [] | 5
|
|
||||||
gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
|
|
||||||
grep | [] [] [] [] [] [] [] [] [] [] | 10
|
|
||||||
hello | [] [] [] [] [] [] [] [] [] [] [] | 11
|
|
||||||
id-utils | [] [] [] | 3
|
|
||||||
indent | [] [] [] [] [] | 5
|
|
||||||
libc | [] [] [] [] [] [] [] | 7
|
|
||||||
m4 | [] [] [] [] [] [] | 6
|
|
||||||
make | [] [] [] [] [] [] | 6
|
|
||||||
music | [] [] | 2
|
|
||||||
ptx | [] [] [] [] [] [] [] [] | 8
|
|
||||||
recode | [] [] [] [] [] [] [] [] [] | 9
|
|
||||||
sh-utils | [] [] [] [] [] [] [] [] | 8
|
|
||||||
sharutils | [] [] [] [] [] [] | 6
|
|
||||||
tar | [] [] [] [] [] [] [] [] [] [] [] | 11
|
|
||||||
texinfo | [] [] [] | 3
|
|
||||||
textutils | [] [] [] [] [] [] [] [] [] | 9
|
|
||||||
wdiff | [] [] [] [] [] [] [] [] | 8
|
|
||||||
`----------------------------------------------------'
|
|
||||||
17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
|
|
||||||
27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
|
|
||||||
|
|
||||||
Some counters in the preceding matrix are higher than the number of
|
|
||||||
visible blocks let us expect. This is because a few extra PO files are
|
|
||||||
used for implementing regional variants of languages, or language
|
|
||||||
dialects.
|
|
||||||
|
|
||||||
For a PO file in the matrix above to be effective, the package to
|
|
||||||
which it applies should also have been internationalized and
|
|
||||||
distributed as such by its maintainer. There might be an observable
|
|
||||||
lag between the mere existence a PO file and its wide availability in a
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
If December 1997 seems to be old, you may fetch a more recent copy
|
|
||||||
of this `ABOUT-NLS' file on most GNU archive sites.
|
|
||||||
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
-----------------------------------
|
|
||||||
|
|
||||||
GNU make development up to version 3.75 by:
|
|
||||||
Roland McGrath <roland@gnu.org>
|
|
||||||
|
|
||||||
|
|
||||||
Development starting with GNU make 3.76 by:
|
|
||||||
Paul D. Smith <psmith@gnu.org>
|
|
||||||
|
|
||||||
|
|
||||||
GNU Make User's Manual
|
|
||||||
Written by:
|
|
||||||
Richard M. Stallman <rms@gnu.org>
|
|
||||||
|
|
||||||
Edited by:
|
|
||||||
Roland McGrath <roland@gnu.org>
|
|
||||||
Bob Chassell <bob@gnu.org>
|
|
||||||
Melissa Weisshaus <melissa@gnu.org>
|
|
||||||
Paul D. Smith <psmith@gnu.org>
|
|
||||||
|
|
||||||
-----------------------------------
|
|
||||||
GNU make porting efforts:
|
|
||||||
|
|
||||||
Port to VMS by:
|
|
||||||
Klaus Kaempf <kkaempf@progis.de>
|
|
||||||
Archive support/Bug fixes by:
|
|
||||||
John W. Eaton <jwe@bevo.che.wisc.edu>
|
|
||||||
Martin Zinser <zinser@decus.decus.de>
|
|
||||||
|
|
||||||
Port to Amiga by:
|
|
||||||
Aaron Digulla <digulla@fh-konstanz.de>
|
|
||||||
|
|
||||||
|
|
||||||
Port to MS-DOS (DJGPP) and MS-Windows 95/NT by:
|
|
||||||
DJ Delorie <dj@delorie.com>
|
|
||||||
Rob Tulloh <rob_tulloh@tivoli.com>
|
|
||||||
Eli Zaretskii <eliz@is.elta.co.il>
|
|
||||||
|
|
||||||
-----------------------------------
|
|
||||||
Other contributors:
|
|
||||||
|
|
||||||
Janet Carson <janet_carson@tivoli.com>
|
|
||||||
Howard Chu <hyc@highlandsun.com>
|
|
||||||
Paul Eggert <eggert@twinsun.com>
|
|
||||||
Klaus Heinz <kamar@ease.rhein-main.de>
|
|
||||||
Michael Joosten
|
|
||||||
Jim Kelton <jim_kelton@tivoli.com>
|
|
||||||
David Lubbren <uhay@rz.uni-karlsruhe.de>
|
|
||||||
Tim Magill <tim.magill@telops.gte.com>
|
|
||||||
Han-Wen Nienhuys <hanwen@cs.uu.nl>
|
|
||||||
Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
|
||||||
Carl Staelin (Princeton University)
|
|
||||||
Ian Stewartson (Data Logic Limited)
|
|
||||||
|
|
||||||
With suggestions/comments/bug reports from a cast of ... well ...
|
|
||||||
hundreds, anyway :)
|
|
||||||
@ -1,340 +0,0 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330, Boston, MA
|
|
||||||
02111-1307, USA.
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must show them these terms so they know their
|
|
||||||
rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
|
||||||
a notice placed by the copyright holder saying it may be distributed
|
|
||||||
under the terms of this General Public License. The "Program", below,
|
|
||||||
refers to any such program or work, and a "work based on the Program"
|
|
||||||
means either the Program or any derivative work under copyright law:
|
|
||||||
that is to say, a work containing the Program or a portion of it,
|
|
||||||
either verbatim or with modifications and/or translated into another
|
|
||||||
language. (Hereinafter, translation is included without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running the Program is not restricted, and the output from the Program
|
|
||||||
is covered only if its contents constitute a work based on the
|
|
||||||
Program (independent of having been made by running the Program).
|
|
||||||
Whether that is true depends on what the Program does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Program's
|
|
||||||
source code as you receive it, in any medium, provided that you
|
|
||||||
conspicuously and appropriately publish on each copy an appropriate
|
|
||||||
copyright notice and disclaimer of warranty; keep intact all the
|
|
||||||
notices that refer to this License and to the absence of any warranty;
|
|
||||||
and give any other recipients of the Program a copy of this License
|
|
||||||
along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and
|
|
||||||
you may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion
|
|
||||||
of it, thus forming a work based on the Program, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in
|
|
||||||
whole or in part contains or is derived from the Program or any
|
|
||||||
part thereof, to be licensed as a whole at no charge to all third
|
|
||||||
parties under the terms of this License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively
|
|
||||||
when run, you must cause it, when started running for such
|
|
||||||
interactive use in the most ordinary way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a
|
|
||||||
notice that there is no warranty (or else, saying that you provide
|
|
||||||
a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this
|
|
||||||
License. (Exception: if the Program itself is interactive but
|
|
||||||
does not normally print such an announcement, your work based on
|
|
||||||
the Program is not required to print an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Program,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Program, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program
|
|
||||||
with the Program (or with a work based on the Program) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it,
|
|
||||||
under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of Sections
|
|
||||||
1 and 2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party, for a charge no more than your
|
|
||||||
cost of physically performing source distribution, a complete
|
|
||||||
machine-readable copy of the corresponding source code, to be
|
|
||||||
distributed under the terms of Sections 1 and 2 above on a medium
|
|
||||||
customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer
|
|
||||||
to distribute corresponding source code. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form with such
|
|
||||||
an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For an executable work, complete source
|
|
||||||
code means all the source code for all modules it contains, plus any
|
|
||||||
associated interface definition files, plus the scripts used to
|
|
||||||
control compilation and installation of the executable. However, as a
|
|
||||||
special exception, the source code distributed need not include
|
|
||||||
anything that is normally distributed (in either source or binary
|
|
||||||
form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component
|
|
||||||
itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering
|
|
||||||
access to copy from a designated place, then offering equivalent
|
|
||||||
access to copy the source code from the same place counts as
|
|
||||||
distribution of the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
|
||||||
except as expressly provided under this License. Any attempt
|
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
|
||||||
void, and will automatically terminate your rights under this License.
|
|
||||||
However, parties who have received copies, or rights, from you under
|
|
||||||
this License will not have their licenses terminated so long as such
|
|
||||||
parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Program or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Program (or any work based on the
|
|
||||||
Program), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute or modify the Program subject to
|
|
||||||
these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Program at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Program by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system, which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Program under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding
|
|
||||||
those countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Program
|
|
||||||
specifies a version number of this License which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
this License, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
||||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
||||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
||||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
||||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
||||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
||||||
REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
||||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
||||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
||||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
Appendix: How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) 19yy <name of author>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This General Public License does not permit incorporating your program into
|
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
|
||||||
consider it more useful to permit linking proprietary applications with the
|
|
||||||
library. If this is what you want to do, use the GNU Library General
|
|
||||||
Public License instead of this License.
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,187 +0,0 @@
|
|||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
|
||||||
various system-dependent variables used during compilation. It uses
|
|
||||||
those values to create a `Makefile' in each directory of the package.
|
|
||||||
It may also create one or more `.h' files containing system-dependent
|
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
|
||||||
you can run in the future to recreate the current configuration, a file
|
|
||||||
`config.cache' that saves the results of its tests to speed up
|
|
||||||
reconfiguring, and a file `config.log' containing compiler output
|
|
||||||
(useful mainly for debugging `configure').
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
|
||||||
diffs or instructions to the address given in the `README' so they can
|
|
||||||
be considered for the next release. If at some point `config.cache'
|
|
||||||
contains results you don't want to keep, you may remove or edit it.
|
|
||||||
|
|
||||||
The file `configure.in' is used to create `configure' by a program
|
|
||||||
called `autoconf'. You only need `configure.in' if you want to change
|
|
||||||
it or regenerate `configure' using a newer version of `autoconf'.
|
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
|
||||||
`./configure' to configure the package for your system. If you're
|
|
||||||
using `csh' on an old version of System V, you might need to type
|
|
||||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
|
||||||
`configure' itself.
|
|
||||||
|
|
||||||
Running `configure' takes awhile. While running, it prints some
|
|
||||||
messages telling which features it is checking for.
|
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
|
||||||
|
|
||||||
If you're building GNU make on a system which does not already have
|
|
||||||
a `make', you can use the build.sh shell script to compile. Run
|
|
||||||
`sh ./build.sh'. This should compile the program in the current
|
|
||||||
directory. Then you will have a Make program that you can use for
|
|
||||||
`make install', or whatever else.
|
|
||||||
|
|
||||||
3. Optionally, type `./make check' to run any self-tests that come with
|
|
||||||
the package.
|
|
||||||
|
|
||||||
4. Type `make install' to install the programs and any data files and
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
5. You can remove the program binaries and object files from the
|
|
||||||
source code directory by typing `make clean'. To also remove the
|
|
||||||
files that `configure' created (so you can compile the package for
|
|
||||||
a different kind of computer), type `make distclean'. There is
|
|
||||||
also a `make maintainer-clean' target, but that is intended mainly
|
|
||||||
for the package's developers. If you use it, you may have to get
|
|
||||||
all sorts of other programs in order to regenerate files that came
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
Compilers and Options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that
|
|
||||||
the `configure' script does not know about. You can give `configure'
|
|
||||||
initial values for variables by setting them in the environment. Using
|
|
||||||
a Bourne-compatible shell, you can do that on the command line like
|
|
||||||
this:
|
|
||||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
|
||||||
|
|
||||||
Or on systems that have the `env' program, you can do it like this:
|
|
||||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
|
||||||
|
|
||||||
Compiling For Multiple Architectures
|
|
||||||
====================================
|
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
|
||||||
same time, by placing the object files for each architecture in their
|
|
||||||
own directory. To do this, you must use a version of `make' that
|
|
||||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
|
||||||
directory where you want the object files and executables to go and run
|
|
||||||
the `configure' script. `configure' automatically checks for the
|
|
||||||
source code in the directory that `configure' is in and in `..'.
|
|
||||||
|
|
||||||
If you have to use a `make' that does not supports the `VPATH'
|
|
||||||
variable, you have to compile the package for one architecture at a time
|
|
||||||
in the source code directory. After you have installed the package for
|
|
||||||
one architecture, use `make distclean' before reconfiguring for another
|
|
||||||
architecture.
|
|
||||||
|
|
||||||
Installation Names
|
|
||||||
==================
|
|
||||||
|
|
||||||
By default, `make install' will install the package's files in
|
|
||||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
|
||||||
installation prefix other than `/usr/local' by giving `configure' the
|
|
||||||
option `--prefix=PATH'.
|
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
|
||||||
architecture-specific files and architecture-independent files. If you
|
|
||||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
|
||||||
PATH as the prefix for installing programs and libraries.
|
|
||||||
Documentation and other data files will still use the regular prefix.
|
|
||||||
|
|
||||||
In addition, if you use an unusual directory layout you can give
|
|
||||||
options like `--bindir=PATH' to specify different values for particular
|
|
||||||
kinds of files. Run `configure --help' for a list of the directories
|
|
||||||
you can set and what kinds of files go in them.
|
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|
||||||
|
|
||||||
Optional Features
|
|
||||||
=================
|
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
|
||||||
package recognizes.
|
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
|
||||||
find the X include and library files automatically, but if it doesn't,
|
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
|
||||||
`--x-libraries=DIR' to specify their locations.
|
|
||||||
|
|
||||||
Specifying the System Type
|
|
||||||
==========================
|
|
||||||
|
|
||||||
There may be some features `configure' can not figure out
|
|
||||||
automatically, but needs to determine by the type of host the package
|
|
||||||
will run on. Usually `configure' can figure that out, but if it prints
|
|
||||||
a message saying it can not guess the host type, give it the
|
|
||||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
|
||||||
type, such as `sun4', or a canonical name with three fields:
|
|
||||||
CPU-COMPANY-SYSTEM
|
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
|
||||||
need to know the host type.
|
|
||||||
|
|
||||||
If you are building compiler tools for cross-compiling, you can also
|
|
||||||
use the `--target=TYPE' option to select the type of system they will
|
|
||||||
produce code for and the `--build=TYPE' option to select the type of
|
|
||||||
system on which you are compiling the package.
|
|
||||||
|
|
||||||
Sharing Defaults
|
|
||||||
================
|
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share,
|
|
||||||
you can create a site shell script called `config.site' that gives
|
|
||||||
default values for variables like `CC', `cache_file', and `prefix'.
|
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
|
||||||
A warning: not all `configure' scripts look for a site script.
|
|
||||||
|
|
||||||
Operation Controls
|
|
||||||
==================
|
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it
|
|
||||||
operates.
|
|
||||||
|
|
||||||
`--cache-file=FILE'
|
|
||||||
Use and save the results of the tests in FILE instead of
|
|
||||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
|
||||||
debugging `configure'.
|
|
||||||
|
|
||||||
`--help'
|
|
||||||
Print a summary of the options to `configure', and exit.
|
|
||||||
|
|
||||||
`--quiet'
|
|
||||||
`--silent'
|
|
||||||
`-q'
|
|
||||||
Do not print messages saying which checks are being made. To
|
|
||||||
suppress all normal output, redirect it to `/dev/null' (any error
|
|
||||||
messages will still be shown).
|
|
||||||
|
|
||||||
`--srcdir=DIR'
|
|
||||||
Look for the package's source code in directory DIR. Usually
|
|
||||||
`configure' can determine that directory automatically.
|
|
||||||
|
|
||||||
`--version'
|
|
||||||
Print the version of Autoconf used to generate the `configure'
|
|
||||||
script, and exit.
|
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options.
|
|
||||||
|
|
||||||
@ -1,586 +0,0 @@
|
|||||||
# -*-Makefile-*- template for DJGPP
|
|
||||||
# Makefile.in generated automatically by automake 1.2 from Makefile.am
|
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-1998, 1999 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.DOS is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy, distribute and modify it.
|
|
||||||
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
srcdir = .
|
|
||||||
VPATH = $(srcdir)
|
|
||||||
# $DJDIR is defined automatically by DJGPP to point
|
|
||||||
# to the root of the DJGPP installation tree.
|
|
||||||
prefix = /dev/env/DJDIR
|
|
||||||
exec_prefix = ${prefix}
|
|
||||||
|
|
||||||
bindir = /bin
|
|
||||||
datadir = /share
|
|
||||||
libdir = /lib
|
|
||||||
infodir = /info
|
|
||||||
mandir = /man
|
|
||||||
includedir = /include
|
|
||||||
oldincludedir = c:/djgpp/include
|
|
||||||
|
|
||||||
DESTDIR = /dev/env/DJDIR
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/make
|
|
||||||
pkglibdir = $(libdir)/make
|
|
||||||
pkgincludedir = $(includedir)/make
|
|
||||||
localedir = $(datadir)/locale
|
|
||||||
|
|
||||||
INSTALL = ${exec_prefix}/bin/ginstall -c
|
|
||||||
INSTALL_PROGRAM = ${exec_prefix}/bin/ginstall -c
|
|
||||||
INSTALL_DATA = ${exec_prefix}/bin/ginstall -c -m 644
|
|
||||||
INSTALL_SCRIPT = ${exec_prefix}/bin/ginstall -c
|
|
||||||
transform = s,x,x,
|
|
||||||
|
|
||||||
# This will fail even if they don't have a Unix-like shell (stock DOS
|
|
||||||
# shell doesn't know about `false'). The only difference is that they
|
|
||||||
# get "Error -1" instead of "Error 1".
|
|
||||||
EXIT_FAIL = false
|
|
||||||
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
AR = ar
|
|
||||||
CC = gcc
|
|
||||||
CPP = gcc -E
|
|
||||||
LIBOBJS =
|
|
||||||
MAKEINFO = ${exec_prefix}/bin/makeinfo
|
|
||||||
PACKAGE = make
|
|
||||||
PERL = perl
|
|
||||||
RANLIB = ranlib
|
|
||||||
REMOTE = stub
|
|
||||||
VERSION = 3.79.1
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.2
|
|
||||||
|
|
||||||
bin_PROGRAMS = make
|
|
||||||
|
|
||||||
make_SOURCES = ar.c arscan.c commands.c dir.c expand.c file.c function.c getopt.c implicit.c job.c main.c misc.c read.c remake.c rule.c signame.c variable.c vpath.c default.c version.c getopt1.c remote-$(REMOTE).c
|
|
||||||
# This should include the glob/ prefix
|
|
||||||
libglob_a_SOURCES = glob/fnmatch.c glob/glob.c glob/fnmatch.h glob/glob.h
|
|
||||||
make_LDADD = glob/libglob.a
|
|
||||||
|
|
||||||
info_TEXINFOS = make.texinfo
|
|
||||||
man_MANS = make.1
|
|
||||||
|
|
||||||
INCLUDES = -I$(srcdir)/glob -DLIBDIR=\"c:/djgpp/lib\" -DINCLUDEDIR=\"c:/djgpp/include\" -DLOCALEDIR=\"$(localedir)\"
|
|
||||||
|
|
||||||
BUILT_SOURCES = README build.sh-in
|
|
||||||
|
|
||||||
EXTRA_DIST = $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c make-stds.texi texinfo.tex SCOPTIONS SMakefile Makefile.ami README.Amiga config.ami amiga.c amiga.h NMakefile README.DOS configh.dos configure.bat makefile.com README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk config.h-vms makefile.vms readme.vms vmsdir.h vmsfunctions.c vmsify.c
|
|
||||||
|
|
||||||
SUBDIRS = glob
|
|
||||||
mkinstalldirs = ${exec_prefix}/bin/gmkdir -p
|
|
||||||
CONFIG_HEADER = config.h
|
|
||||||
CONFIG_CLEAN_FILES = build.sh
|
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
MAKE_HOST = i386-pc-msdosdjgpp
|
|
||||||
|
|
||||||
|
|
||||||
DEFS = -I. -I$(srcdir) -I.
|
|
||||||
CPPFLAGS = -DHAVE_CONFIG_H
|
|
||||||
LDFLAGS =
|
|
||||||
LIBS =
|
|
||||||
make_OBJECTS = ar.o arscan.o commands.o dir.o expand.o file.o function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o vpath.o default.o version.o getopt1.o remote-$(REMOTE).o
|
|
||||||
make_DEPENDENCIES = glob/libglob.a
|
|
||||||
make_LDFLAGS =
|
|
||||||
libglob_a_LIBADD =
|
|
||||||
libglob_a_OBJECTS = fnmatch.o glob.o
|
|
||||||
noinst_LIBRARIES = glob/libglob.a
|
|
||||||
CFLAGS = -O2 -g
|
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
|
||||||
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
TEXI2DVI = texi2dvi
|
|
||||||
TEXINFO_TEX = $(srcdir)/texinfo.tex
|
|
||||||
INFO_DEPS = make.info
|
|
||||||
DVIS = make.dvi
|
|
||||||
TEXINFOS = make.texinfo
|
|
||||||
man1dir = $(mandir)/man1
|
|
||||||
MANS = $(man_MANS)
|
|
||||||
|
|
||||||
NROFF = nroff
|
|
||||||
DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 alloca.c build.sh.in config.h.in configure configure.in getloadavg.c gettext.c install-sh missing mkinstalldirs stamp-h.in texinfo.tex
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = gtar
|
|
||||||
GZIP = --best
|
|
||||||
SOURCES = $(make_SOURCES)
|
|
||||||
OBJECTS = $(make_OBJECTS)
|
|
||||||
HEADERS = $(wildcard $(srcdir)/*.h)
|
|
||||||
|
|
||||||
default: all
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .S .c .dvi .info .o .ps .s .texi .texinfo .txi
|
|
||||||
|
|
||||||
mostlyclean-hdr:
|
|
||||||
|
|
||||||
clean-hdr:
|
|
||||||
|
|
||||||
distclean-hdr:
|
|
||||||
-rm -f config.h
|
|
||||||
|
|
||||||
maintainer-clean-hdr:
|
|
||||||
|
|
||||||
mostlyclean-binPROGRAMS:
|
|
||||||
|
|
||||||
clean-binPROGRAMS:
|
|
||||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
distclean-binPROGRAMS:
|
|
||||||
|
|
||||||
maintainer-clean-binPROGRAMS:
|
|
||||||
|
|
||||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
|
||||||
@list='$(bin_PROGRAMS)'; for p in $$list; do if test -f $$p; then echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`"; $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; else :; fi; done
|
|
||||||
|
|
||||||
uninstall-binPROGRAMS:
|
|
||||||
$(NORMAL_UNINSTALL)
|
|
||||||
list='$(bin_PROGRAMS)'; for p in $$list; do rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`.exe; done
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
.s.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
.S.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
clean-noinstLIBRARIES:
|
|
||||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
|
||||||
|
|
||||||
mostlyclean-compile:
|
|
||||||
-rm -f *.o *.exe make.new core
|
|
||||||
|
|
||||||
clean-compile:
|
|
||||||
|
|
||||||
distclean-compile:
|
|
||||||
-rm -f *.tab.c *_tab.c
|
|
||||||
|
|
||||||
maintainer-clean-compile:
|
|
||||||
|
|
||||||
make: $(make_OBJECTS) $(make_DEPENDENCIES)
|
|
||||||
@command.com /c if exist make del make
|
|
||||||
@command.com /c if exist make.exe del make.exe
|
|
||||||
$(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
|
|
||||||
|
|
||||||
make.info: make.texinfo
|
|
||||||
make.dvi: make.texinfo
|
|
||||||
|
|
||||||
|
|
||||||
DVIPS = dvips
|
|
||||||
|
|
||||||
.texi.info:
|
|
||||||
$(MAKEINFO) $(srcdir)/$< -o ./$@
|
|
||||||
|
|
||||||
.texi.dvi:
|
|
||||||
TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.texi:
|
|
||||||
$(MAKEINFO) $(srcdir)/$< -o ./$@
|
|
||||||
|
|
||||||
.texinfo.info:
|
|
||||||
$(MAKEINFO) $(srcdir)/$< -o ./$@
|
|
||||||
|
|
||||||
.texinfo:
|
|
||||||
$(MAKEINFO) $(srcdir)/$< -o ./$@
|
|
||||||
|
|
||||||
.texinfo.dvi:
|
|
||||||
TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.txi.info:
|
|
||||||
$(MAKEINFO) $(srcdir)/$< -o ./$@
|
|
||||||
|
|
||||||
.txi.dvi:
|
|
||||||
TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.dvi.ps:
|
|
||||||
$(DVIPS) $< -o $@
|
|
||||||
|
|
||||||
install-info-am: $(INFO_DEPS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
|
||||||
@for file in $(INFO_DEPS) make.i; do d=$(srcdir); for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9] $$file[0-9] $$file[0-9][0-9]`; do if test -f $$d/$$ifile; then echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; else : ; fi; done; done
|
|
||||||
@$(POST_INSTALL)
|
|
||||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then for file in $(INFO_DEPS); do echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file"; install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :; done; else : ; fi
|
|
||||||
|
|
||||||
uninstall-info:
|
|
||||||
$(PRE_UNINSTALL)
|
|
||||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then ii=yes; else ii=; fi; for file in $(INFO_DEPS); do test -z $ii || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; done
|
|
||||||
$(NORMAL_UNINSTALL)
|
|
||||||
for file in $(INFO_DEPS) make.i; do (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9] $$file[0-9] $$file[0-9][0-9]); done
|
|
||||||
|
|
||||||
dist-info: $(INFO_DEPS)
|
|
||||||
for base in $(INFO_DEPS); do d=$(srcdir); for file in `cd $$d && eval echo $$base*`; do test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; done
|
|
||||||
|
|
||||||
mostlyclean-aminfo:
|
|
||||||
-rm -f make.aux make.cp make.cps make.dvi make.fn make.fns make.ky \
|
|
||||||
make.kys make.ps make.log make.pg make.toc make.tp make.tps \
|
|
||||||
make.vr make.vrs make.op make.tr make.cv make.cn
|
|
||||||
|
|
||||||
clean-aminfo:
|
|
||||||
|
|
||||||
distclean-aminfo:
|
|
||||||
|
|
||||||
maintainer-clean-aminfo:
|
|
||||||
for i in $(INFO_DEPS) make.i; do rm -f `eval echo $$i*`; done
|
|
||||||
|
|
||||||
install-man1:
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
|
||||||
@list='$(man1_MANS)'; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do \
|
|
||||||
case "$$i" in \
|
|
||||||
*.1*) list="$$list $$i" ;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do \
|
|
||||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
|
||||||
else file=$$i; fi; \
|
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-man1:
|
|
||||||
@list='$(man1_MANS)'; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do \
|
|
||||||
case "$$i" in \
|
|
||||||
*.1*) list="$$list $$i" ;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do \
|
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
rm -f $(DESTDIR)$(man1dir)/$$inst; \
|
|
||||||
done
|
|
||||||
install-man: $(MANS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(MAKE) install-man1
|
|
||||||
uninstall-man:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
$(MAKE) uninstall-man1
|
|
||||||
|
|
||||||
# Assume that the only thing to do in glob is to build libglob.a,
|
|
||||||
# but do a sanity check: if $SUBDIRS will ever have more than
|
|
||||||
# a single directory, yell bloody murder.
|
|
||||||
all-recursive:
|
|
||||||
ifeq ($(words $(SUBDIRS)), 1)
|
|
||||||
@command.com /c if not exist glob\\nul md glob
|
|
||||||
@echo Making all in $(SUBDIRS)
|
|
||||||
$(MAKE) -C $(SUBDIRS) -f ../Makefile INCLUDES='-I$(srcdir) -I$(srcdir)/glob' DEFS='-I.. -I$(srcdir)' VPATH=$(srcdir)/glob libglob.a
|
|
||||||
else
|
|
||||||
@echo FATAL: There is more than one directory in "($(SUBDIRS))"
|
|
||||||
@$(EXIT_FAIL)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(SUBDIRS):
|
|
||||||
command.com /c md $@
|
|
||||||
|
|
||||||
libglob.a: $(libglob_a_OBJECTS)
|
|
||||||
command.com /c if exist libglob.a del libglob.a
|
|
||||||
$(AR) cru libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
|
|
||||||
$(RANLIB) libglob.a
|
|
||||||
|
|
||||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
|
||||||
maintainer-clean-recursive check-recursive:
|
|
||||||
ifeq ($(words $(SUBDIRS)), 1)
|
|
||||||
@echo Making $(shell echo $@ | sed s/-recursive//) in $(SUBDIRS)
|
|
||||||
$(MAKE) -C $(SUBDIRS) -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
|
|
||||||
else
|
|
||||||
@echo FATAL: There is more than one directory in "($(SUBDIRS))"
|
|
||||||
@$(EXIT_FAIL)
|
|
||||||
endif
|
|
||||||
|
|
||||||
tags-in-glob: $(libglob_a_SOURCES)
|
|
||||||
etags $(addprefix $(srcdir)/,$^) -o ./glob/TAGS
|
|
||||||
|
|
||||||
tags-recursive:
|
|
||||||
ifeq ($(words $(SUBDIRS)), 1)
|
|
||||||
$(MAKE) tags-in-glob
|
|
||||||
else
|
|
||||||
@echo FATAL: There is more than one directory in "($(SUBDIRS))"
|
|
||||||
@$(EXIT_FAIL)
|
|
||||||
endif
|
|
||||||
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES)
|
|
||||||
mkid $(srcdir)/$(SOURCES) $(srcdir)/$(libglob_a_SOURCES) ./config.h $(HEADERS)
|
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(srcdir)/$(SOURCES) config.h $(TAGS_DEPENDENCIES)
|
|
||||||
etags -i ./glob/TAGS $(ETAGS_ARGS) $(srcdir)/$(SOURCES) ./config.h $(HEADERS)
|
|
||||||
|
|
||||||
mostlyclean-tags:
|
|
||||||
|
|
||||||
clean-tags:
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID
|
|
||||||
|
|
||||||
maintainer-clean-tags:
|
|
||||||
|
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
|
||||||
top_distdir = $(distdir)
|
|
||||||
|
|
||||||
# This target untars the dist file and tries a VPATH configuration. Then
|
|
||||||
# it guarantees that the distribution is self-contained by making another
|
|
||||||
# tarfile.
|
|
||||||
distcheck: dist
|
|
||||||
rm -rf $(distdir)
|
|
||||||
GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
|
|
||||||
mkdir $(distdir)/=build
|
|
||||||
mkdir $(distdir)/=inst
|
|
||||||
dc_install_base=`cd $(distdir)/=inst && pwd`; cd $(distdir)/=build && ../configure --srcdir=.. --prefix=$$dc_install_base && $(MAKE) && $(MAKE) dvi && $(MAKE) check && $(MAKE) install && $(MAKE) installcheck && $(MAKE) dist
|
|
||||||
rm -rf $(distdir)
|
|
||||||
@echo "========================"; echo "$(distdir).tar.gz is ready for distribution"; echo "========================"
|
|
||||||
dist: distdir
|
|
||||||
-chmod -R a+r $(distdir)
|
|
||||||
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
||||||
rm -rf $(distdir)
|
|
||||||
dist-all: distdir
|
|
||||||
-chmod -R a+r $(distdir)
|
|
||||||
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
||||||
rm -rf $(distdir)
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
rm -rf $(distdir)
|
|
||||||
mkdir $(distdir)
|
|
||||||
-chmod 777 $(distdir)
|
|
||||||
@for file in $(DISTFILES); do d=$(srcdir); test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; for subdir in $(SUBDIRS); do test -d $(distdir)/$$subdir || mkdir $(distdir)/$$subdir || exit 1; chmod 777 $(distdir)/$$subdir; (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir)/$$subdir distdir=../$(distdir)/$$subdir distdir) || exit 1; done
|
|
||||||
$(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
|
|
||||||
$(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
|
|
||||||
|
|
||||||
info: $(INFO_DEPS) info-recursive
|
|
||||||
dvi: $(DVIS) dvi-recursive
|
|
||||||
check: all-am check-recursive check-local
|
|
||||||
@:
|
|
||||||
installcheck: installcheck-recursive
|
|
||||||
all-recursive-am: config.h
|
|
||||||
$(MAKE) all-recursive
|
|
||||||
|
|
||||||
all-am: Makefile $(INFO_DEPS) $(PROGRAMS) config.h
|
|
||||||
|
|
||||||
install-exec-am: install-binPROGRAMS
|
|
||||||
|
|
||||||
install-data-am: install-info-am
|
|
||||||
|
|
||||||
uninstall-am: uninstall-binPROGRAMS uninstall-info
|
|
||||||
|
|
||||||
install-exec: install-exec-recursive install-exec-am
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
|
|
||||||
install-data: install-data-recursive install-data-am
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
|
|
||||||
install-recursive uninstall-recursive:
|
|
||||||
@:
|
|
||||||
|
|
||||||
install: install-recursive install-exec-am install-data-am
|
|
||||||
@:
|
|
||||||
|
|
||||||
uninstall: uninstall-recursive uninstall-am
|
|
||||||
|
|
||||||
all: all-recursive-am all-am
|
|
||||||
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
|
||||||
installdirs: installdirs-recursive
|
|
||||||
$(mkinstalldirs) $(bindir) $(infodir)
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean-generic:
|
|
||||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(DISTCLEANFILES)
|
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
|
||||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
|
||||||
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS mostlyclean-compile mostlyclean-aminfo mostlyclean-tags mostlyclean-generic
|
|
||||||
|
|
||||||
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-aminfo clean-tags clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile distclean-aminfo distclean-tags distclean-generic clean-am
|
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS maintainer-clean-compile maintainer-clean-aminfo maintainer-clean-tags maintainer-clean-generic distclean-am
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-recursive mostlyclean-am
|
|
||||||
|
|
||||||
clean: clean-noinstLIBRARIES clean-recursive clean-am
|
|
||||||
|
|
||||||
distclean: distclean-recursive distclean-am
|
|
||||||
rm -f config.status
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive maintainer-clean-am
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
rm -f config.status
|
|
||||||
|
|
||||||
.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \
|
|
||||||
maintainer-clean-hdr mostlyclean-binPROGRAMS distclean-binPROGRAMS \
|
|
||||||
clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
|
|
||||||
install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
|
|
||||||
maintainer-clean-compile install-info-am uninstall-info \
|
|
||||||
mostlyclean-aminfo distclean-aminfo clean-aminfo \
|
|
||||||
maintainer-clean-aminfo install-data-recursive uninstall-data-recursive \
|
|
||||||
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
|
|
||||||
uninstalldirs-recursive all-recursive check-recursive check-am \
|
|
||||||
installcheck-recursive info-recursive dvi-recursive \
|
|
||||||
mostlyclean-recursive distclean-recursive clean-recursive \
|
|
||||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
|
||||||
distclean-tags clean-tags maintainer-clean-tags distdir \
|
|
||||||
mostlyclean-depend distclean-depend clean-depend \
|
|
||||||
maintainer-clean-depend info dvi check-local installcheck \
|
|
||||||
all-recursive-am all-am install-exec-am install-data-am uninstall-am \
|
|
||||||
install-exec install-data install uninstall all installdirs \
|
|
||||||
mostlyclean-generic distclean-generic clean-generic \
|
|
||||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Local DIST Section
|
|
||||||
|
|
||||||
# Install the w32 subdirectory
|
|
||||||
#
|
|
||||||
dist-hook:
|
|
||||||
(cd $(srcdir); \
|
|
||||||
w32=`find w32 -follow \( -name CVS -prune \) -o -type f -print`; \
|
|
||||||
tar chf - $$w32) \
|
|
||||||
| (cd $(distdir); tar xfBp -)
|
|
||||||
|
|
||||||
# --------------- Local CHECK Section
|
|
||||||
|
|
||||||
# Note: check-loadavg is NOT a prerequisite of check-local, since
|
|
||||||
# there's no uptime utility, and the test it does doesn't make sense
|
|
||||||
# on MSDOS anyway.
|
|
||||||
check-local: check-shell check-regression
|
|
||||||
@banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
|
|
||||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
|
||||||
echo; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo "$$banner"; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo
|
|
||||||
|
|
||||||
.PHONY: check-loadavg check-shell check-regression
|
|
||||||
|
|
||||||
# > check-shell
|
|
||||||
#
|
|
||||||
# check-shell is designed to fail if they don't have a Unixy shell
|
|
||||||
# installed. The test suite requires such a shell.
|
|
||||||
check-shell:
|
|
||||||
@echo If Make says Error -1, you do not have Unix-style shell installed
|
|
||||||
@foo=bar.exe :
|
|
||||||
|
|
||||||
# > check-loadavg
|
|
||||||
#
|
|
||||||
loadavg: loadavg.c config.h
|
|
||||||
@rm -f loadavg
|
|
||||||
$(LINK) -DTEST $(make_LDFLAGS) loadavg.c $(LIBS)
|
|
||||||
# We copy getloadavg.c into a different file rather than compiling it
|
|
||||||
# directly because some compilers clobber getloadavg.o in the process.
|
|
||||||
loadavg.c: getloadavg.c
|
|
||||||
ln $(srcdir)/getloadavg.c loadavg.c || \
|
|
||||||
cp $(srcdir)/getloadavg.c loadavg.c
|
|
||||||
check-loadavg: loadavg
|
|
||||||
@echo The system uptime program believes the load average to be:
|
|
||||||
-uptime
|
|
||||||
@echo The GNU load average checking code believes:
|
|
||||||
-./loadavg
|
|
||||||
|
|
||||||
# > check-regression
|
|
||||||
#
|
|
||||||
# Look for the make test suite, and run it if found. Look in MAKE_TEST if
|
|
||||||
# specified, or else in the srcdir or the distdir, their parents, and _their_
|
|
||||||
# parents.
|
|
||||||
#
|
|
||||||
check-regression:
|
|
||||||
@if test -f "$(srcdir)/tests/run_make_tests"; then \
|
|
||||||
if $(PERL) -v >/dev/null 2>&1; then \
|
|
||||||
case `cd $(srcdir); pwd` in `pwd`) : ;; \
|
|
||||||
*) test -d tests || mkdir tests; \
|
|
||||||
for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
|
|
||||||
rm -rf tests/$$f; cp -pr $(srcdir)/tests/$$f tests; \
|
|
||||||
done ;; \
|
|
||||||
esac; \
|
|
||||||
echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS)"; \
|
|
||||||
cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS); \
|
|
||||||
else \
|
|
||||||
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --------------- Maintainer's Section
|
|
||||||
|
|
||||||
# Note this requires GNU make. Not to worry, since it will only be included
|
|
||||||
# in the Makefile if we're in the maintainer's environment.
|
|
||||||
#include $(srcdir)/maintMakefile
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
|
|
||||||
# --------------- DEPENDENCIES
|
|
||||||
#
|
|
||||||
alloca.o: alloca.c config.h
|
|
||||||
ar.o: ar.c make.h config.h gettext.h filedef.h dep.h glob/fnmatch.h
|
|
||||||
arscan.o: arscan.c make.h config.h gettext.h
|
|
||||||
commands.o: commands.c make.h config.h gettext.h dep.h filedef.h \
|
|
||||||
variable.h job.h commands.h
|
|
||||||
default.o: default.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h
|
|
||||||
dir.o: dir.c make.h config.h gettext.h glob/glob.h
|
|
||||||
expand.o: expand.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
variable.h rule.h
|
|
||||||
file.o: file.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h
|
|
||||||
function.o: function.c make.h config.h gettext.h filedef.h variable.h \
|
|
||||||
dep.h job.h commands.h debug.h
|
|
||||||
getloadavg.o: getloadavg.c config.h
|
|
||||||
getopt.o: getopt.c config.h gettext.h getopt.h
|
|
||||||
getopt1.o: getopt1.c config.h getopt.h
|
|
||||||
gettext.o: gettext.c config.h gettext.h
|
|
||||||
implicit.o: implicit.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
debug.h
|
|
||||||
job.o: job.c make.h config.h gettext.h job.h debug.h filedef.h \
|
|
||||||
commands.h variable.h
|
|
||||||
main.o: main.c make.h config.h gettext.h dep.h filedef.h variable.h \
|
|
||||||
job.h commands.h rule.h debug.h getopt.h
|
|
||||||
misc.o: misc.c make.h config.h gettext.h dep.h debug.h
|
|
||||||
read.o: read.c make.h config.h gettext.h glob/glob.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h rule.h debug.h
|
|
||||||
remake.o: remake.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
dep.h variable.h debug.h
|
|
||||||
remote-stub.o: remote-stub.c make.h config.h gettext.h filedef.h job.h \
|
|
||||||
commands.h
|
|
||||||
rule.o: rule.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
signame.o: signame.c make.h config.h gettext.h signame.h
|
|
||||||
variable.o: variable.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
version.o: version.c config.h
|
|
||||||
vpath.o: vpath.c make.h config.h gettext.h filedef.h variable.h
|
|
||||||
|
|
||||||
@ -1,170 +0,0 @@
|
|||||||
# This is a -*-Makefile-*-, or close enough
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.4
|
|
||||||
|
|
||||||
SUBDIRS = $(GLOBDIR) i18n
|
|
||||||
|
|
||||||
bin_PROGRAMS = make
|
|
||||||
|
|
||||||
# These source files also have gettext references
|
|
||||||
SRCS = ar.c arscan.c commands.c dir.c expand.c file.c function.c \
|
|
||||||
getopt.c implicit.c job.c main.c misc.c read.c remake.c \
|
|
||||||
rule.c signame.c variable.c vpath.c
|
|
||||||
|
|
||||||
make_SOURCES = $(SRCS) default.c remote-$(REMOTE).c version.c \
|
|
||||||
getopt1.c
|
|
||||||
|
|
||||||
noinst_HEADERS = commands.h dep.h filedef.h job.h make.h rule.h variable.h \
|
|
||||||
debug.h signame.h getopt.h gettext.h
|
|
||||||
|
|
||||||
make_LDADD = $(LIBOBJS) @ALLOCA@ $(GLOBLIB)
|
|
||||||
|
|
||||||
man_MANS = make.1
|
|
||||||
info_TEXINFOS = make.texinfo
|
|
||||||
|
|
||||||
DEFS = -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
|
|
||||||
|
|
||||||
INCLUDES = -I. -I$(srcdir) $(GLOBINC)
|
|
||||||
|
|
||||||
EXTRA_DIST = README build.sh.in $(man_MANS) README.customs remote-cstms.c\
|
|
||||||
make-stds.texi SCOPTIONS SMakefile\
|
|
||||||
README.Amiga Makefile.ami config.ami make.lnk amiga.c amiga.h\
|
|
||||||
README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
|
|
||||||
README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat\
|
|
||||||
readme.vms makefile.vms makefile.com config.h-vms vmsdir.h\
|
|
||||||
vmsfunctions.c vmsify.c\
|
|
||||||
gettext.c\
|
|
||||||
glob/COPYING.LIB glob/ChangeLog glob/Makefile.am\
|
|
||||||
glob/Makefile.ami glob/Makefile.in glob/SCOPTIONS\
|
|
||||||
glob/SMakefile glob/configure.bat glob/fnmatch.c\
|
|
||||||
glob/fnmatch.h glob/glob.c glob/glob.h
|
|
||||||
|
|
||||||
MOSTLYCLEANFILES = loadavg.c
|
|
||||||
CLEANFILES = loadavg
|
|
||||||
|
|
||||||
MAKE_HOST = @MAKE_HOST@
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Internationalization Section
|
|
||||||
|
|
||||||
POTFILES = $(SRCS) remote-cstms.c vmsfunctions.c
|
|
||||||
|
|
||||||
localedir = $(prefix)/share/locale
|
|
||||||
aliaspath = $(localedir):.
|
|
||||||
|
|
||||||
all-local: $(srcdir)/stamp-pot
|
|
||||||
|
|
||||||
$(srcdir)/stamp-pot: $(POTFILES)
|
|
||||||
@echo "$(POTFILES)" > $@
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Local INSTALL Section
|
|
||||||
|
|
||||||
# If necessary, change the gid of the app and turn on the setgid flag.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Whether or not make needs to be installed setgid.
|
|
||||||
# The value should be either `true' or `false'.
|
|
||||||
# On many systems, the getloadavg function (used to implement the `-l'
|
|
||||||
# switch) will not work unless make is installed setgid kmem.
|
|
||||||
#
|
|
||||||
inst_setgid = @NEED_SETGID@
|
|
||||||
|
|
||||||
# Install make setgid to this group so it can get the load average.
|
|
||||||
#
|
|
||||||
inst_group = @KMEM_GROUP@
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
@if $(inst_setgid); then \
|
|
||||||
app=$(DESTDIR)$(bindir)/`echo $(bin_PROGRAMS)|sed '$(transform)'`; \
|
|
||||||
if chgrp $(inst_group) $$app && chmod g+s $$app; then \
|
|
||||||
echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
|
|
||||||
else \
|
|
||||||
echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
|
|
||||||
echo "otherwise the \`-l' option will probably not work."; \
|
|
||||||
echo "You may need special privileges to complete the installation"; \
|
|
||||||
echo "of $$app."; \
|
|
||||||
fi; \
|
|
||||||
else true; fi
|
|
||||||
|
|
||||||
# --------------- Local DIST Section
|
|
||||||
|
|
||||||
# Install the w32 and tests subdirectories
|
|
||||||
#
|
|
||||||
dist-hook:
|
|
||||||
(cd $(srcdir); \
|
|
||||||
sub=`find w32 tests -follow \( -name CVS -prune -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
|
|
||||||
tar chf - $$sub) \
|
|
||||||
| (cd $(distdir); tar xfBp -)
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Local CHECK Section
|
|
||||||
|
|
||||||
check-local: check-regression check-loadavg
|
|
||||||
@banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
|
|
||||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
|
||||||
echo; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo "$$banner"; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo
|
|
||||||
|
|
||||||
.PHONY: check-loadavg check-regression
|
|
||||||
|
|
||||||
# > check-loadavg
|
|
||||||
#
|
|
||||||
loadavg: loadavg.c config.h
|
|
||||||
@rm -f loadavg
|
|
||||||
$(LINK) -DTEST $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(make_LDFLAGS) loadavg.c $(LIBS)
|
|
||||||
|
|
||||||
# We copy getloadavg.c into a different file rather than compiling it
|
|
||||||
# directly because some compilers clobber getloadavg.o in the process.
|
|
||||||
#
|
|
||||||
loadavg.c: getloadavg.c
|
|
||||||
ln $(srcdir)/getloadavg.c loadavg.c || \
|
|
||||||
cp $(srcdir)/getloadavg.c loadavg.c
|
|
||||||
|
|
||||||
check-loadavg: loadavg
|
|
||||||
@echo The system uptime program believes the load average to be:
|
|
||||||
-uptime
|
|
||||||
@echo The GNU load average checking code believes:
|
|
||||||
-./loadavg
|
|
||||||
|
|
||||||
# > check-regression
|
|
||||||
#
|
|
||||||
# Look for the make test suite, and run it if found and we can find perl.
|
|
||||||
# If we're building outside the tree, we use symlinks to make a local copy of
|
|
||||||
# the test suite. Unfortunately the test suite itself isn't localizable yet.
|
|
||||||
#
|
|
||||||
MAKETESTFLAGS =
|
|
||||||
|
|
||||||
check-regression:
|
|
||||||
@if test -f "$(srcdir)/tests/run_make_tests"; then \
|
|
||||||
if $(PERL) -v >/dev/null 2>&1; then \
|
|
||||||
case `cd $(srcdir); pwd` in `pwd`) : ;; \
|
|
||||||
*) test -d tests || mkdir tests; \
|
|
||||||
rm -f srctests; \
|
|
||||||
if ln -s "$(srcdir)/tests" srctests; then \
|
|
||||||
for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
|
|
||||||
rm -f tests/$$f; ln -s ../srctests/$$f tests; \
|
|
||||||
done; fi ;; \
|
|
||||||
esac; \
|
|
||||||
echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS)"; \
|
|
||||||
cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS); \
|
|
||||||
else \
|
|
||||||
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Local CLEAN section
|
|
||||||
|
|
||||||
maintainer-clean-local:
|
|
||||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
|
||||||
|
|
||||||
|
|
||||||
# --------------- Maintainer's Section
|
|
||||||
|
|
||||||
@MAINT_MAKEFILE@
|
|
||||||
@ -1,305 +0,0 @@
|
|||||||
# NOTE: If you have no `make' program at all to process this makefile, run
|
|
||||||
# `build.sh' instead.
|
|
||||||
#
|
|
||||||
# Copyright (C) 1988, 89, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
|
|
||||||
# This file is part of GNU Make.
|
|
||||||
#
|
|
||||||
# GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# GNU Make is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Makefile for GNU Make
|
|
||||||
#
|
|
||||||
|
|
||||||
CC = sc
|
|
||||||
RM = delete
|
|
||||||
|
|
||||||
CFLAGS =
|
|
||||||
CPPFLAGS =
|
|
||||||
LDFLAGS =
|
|
||||||
|
|
||||||
# Define these for your system as follows:
|
|
||||||
# -DNO_ARCHIVES To disable `ar' archive support.
|
|
||||||
# -DNO_FLOAT To avoid using floating-point numbers.
|
|
||||||
# -DENUM_BITFIELDS If the compiler isn't GCC but groks enum foo:2.
|
|
||||||
# Some compilers apparently accept this
|
|
||||||
# without complaint but produce losing code,
|
|
||||||
# so beware.
|
|
||||||
# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
|
|
||||||
# See also `config.h'.
|
|
||||||
defines =
|
|
||||||
|
|
||||||
# Which flavor of remote job execution support to use.
|
|
||||||
# The code is found in `remote-$(REMOTE).c'.
|
|
||||||
REMOTE = stub
|
|
||||||
|
|
||||||
# If you are using the GNU C library, or have the GNU getopt functions in
|
|
||||||
# your C library, you can comment these out.
|
|
||||||
GETOPT = getopt.o getopt1.o
|
|
||||||
GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h
|
|
||||||
|
|
||||||
# If you are using the GNU C library, or have the GNU glob functions in
|
|
||||||
# your C library, you can comment this out. GNU make uses special hooks
|
|
||||||
# into the glob functions to be more efficient (by using make's directory
|
|
||||||
# cache for globbing), so you must use the GNU functions even if your
|
|
||||||
# system's C library has the 1003.2 glob functions already. Also, the glob
|
|
||||||
# functions in the AIX and HPUX C libraries are said to be buggy.
|
|
||||||
GLOB = glob/glob.lib
|
|
||||||
|
|
||||||
# If your system doesn't have alloca, or the one provided is bad, define this.
|
|
||||||
ALLOCA = alloca.o
|
|
||||||
ALLOCA_SRC = $(srcdir)alloca.c
|
|
||||||
|
|
||||||
# If your system needs extra libraries loaded in, define them here.
|
|
||||||
# System V probably need -lPW for alloca. HP-UX 7.0's alloca in
|
|
||||||
# libPW.a is broken on HP9000s300 and HP9000s400 machines. Use
|
|
||||||
# alloca.c instead on those machines.
|
|
||||||
LOADLIBES =
|
|
||||||
|
|
||||||
# Any extra object files your system needs.
|
|
||||||
extras = amiga.o
|
|
||||||
|
|
||||||
# Common prefix for machine-independent installed files.
|
|
||||||
prefix =
|
|
||||||
# Common prefix for machine-dependent installed files.
|
|
||||||
exec_prefix =
|
|
||||||
|
|
||||||
# Directory to install `make' in.
|
|
||||||
bindir = sc:c
|
|
||||||
# Directory to find libraries in for `-lXXX'.
|
|
||||||
libdir = lib:
|
|
||||||
# Directory to search by default for included makefiles.
|
|
||||||
includedir = include:
|
|
||||||
# Directory to install the Info files in.
|
|
||||||
infodir = doc:
|
|
||||||
# Directory to install the man page in.
|
|
||||||
mandir = t:
|
|
||||||
# Number to put on the man page filename.
|
|
||||||
manext = 1
|
|
||||||
# Prefix to put on installed `make' binary file name.
|
|
||||||
binprefix =
|
|
||||||
# Prefix to put on installed `make' man page file name.
|
|
||||||
manprefix = $(binprefix)
|
|
||||||
|
|
||||||
# Whether or not make needs to be installed setgid.
|
|
||||||
# The value should be either `true' or `false'.
|
|
||||||
# On many systems, the getloadavg function (used to implement the `-l'
|
|
||||||
# switch) will not work unless make is installed setgid kmem.
|
|
||||||
install_setgid = false
|
|
||||||
# Install make setgid to this group so it can read /dev/kmem.
|
|
||||||
group = sys
|
|
||||||
|
|
||||||
# Program to install `make'.
|
|
||||||
INSTALL_PROGRAM = copy
|
|
||||||
# Program to install the man page.
|
|
||||||
INSTALL_DATA = copy
|
|
||||||
# Generic install program.
|
|
||||||
INSTALL = copy
|
|
||||||
|
|
||||||
# Program to format Texinfo source into Info files.
|
|
||||||
MAKEINFO = makeinfo
|
|
||||||
# Program to format Texinfo source into DVI files.
|
|
||||||
TEXI2DVI = texi2dvi
|
|
||||||
|
|
||||||
# Programs to make tags files.
|
|
||||||
ETAGS = etags -w
|
|
||||||
CTAGS = ctags -w
|
|
||||||
|
|
||||||
objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o \
|
|
||||||
rule.o implicit.o default.o variable.o expand.o function.o \
|
|
||||||
vpath.o version.o ar.o arscan.o signame.o remote-$(REMOTE).o \
|
|
||||||
$(GETOPT) $(ALLOCA) $(extras)
|
|
||||||
srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c \
|
|
||||||
$(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c \
|
|
||||||
$(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c \
|
|
||||||
$(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c \
|
|
||||||
$(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c \
|
|
||||||
$(srcdir)vpath.c $(srcdir)version.c \
|
|
||||||
$(srcdir)remote-$(REMOTE).c \
|
|
||||||
$(srcdir)ar.c $(srcdir)arscan.c \
|
|
||||||
$(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC) \
|
|
||||||
$(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h \
|
|
||||||
$(srcdir)job.h $(srcdir)make.h $(srcdir)rule.h \
|
|
||||||
$(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
|
|
||||||
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .o .c .h .ps .dvi .info .texinfo
|
|
||||||
|
|
||||||
all: make
|
|
||||||
info: make.info
|
|
||||||
dvi: make.dvi
|
|
||||||
# Some makes apparently use .PHONY as the default goal if it is before `all'.
|
|
||||||
.PHONY: all check info dvi
|
|
||||||
|
|
||||||
make.info: make.texinfo
|
|
||||||
$(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info
|
|
||||||
|
|
||||||
make.dvi: make.texinfo
|
|
||||||
$(TEXI2DVI) $(srcdir)make.texinfo
|
|
||||||
|
|
||||||
make.ps: make.dvi
|
|
||||||
dvi2ps make.dvi > make.ps
|
|
||||||
|
|
||||||
make: $(objs) $(GLOB)
|
|
||||||
$(CC) Link $(LDFLAGS) $(objs) Lib $(GLOB) $(LOADLIBES) To make.new
|
|
||||||
-delete make
|
|
||||||
rename make.new make
|
|
||||||
|
|
||||||
TMPFILE = t:Make$$
|
|
||||||
|
|
||||||
$(GLOB):
|
|
||||||
cd glob @@\
|
|
||||||
$(MAKE) -$(MAKEFLAGS) -f Makefile
|
|
||||||
|
|
||||||
# -I. is needed to find config.h in the build directory.
|
|
||||||
OUTPUT_OPTION =
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(defines) IDir "" IDir glob \
|
|
||||||
$(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
|
|
||||||
|
|
||||||
# For some losing Unix makes.
|
|
||||||
SHELL = /bin/sh
|
|
||||||
#@SET_MAKE@
|
|
||||||
|
|
||||||
glob/libglob.a: FORCE config.h
|
|
||||||
cd glob; $(MAKE) libglob.a
|
|
||||||
FORCE:
|
|
||||||
|
|
||||||
tagsrcs = $(srcs) $(srcdir)remote-*.c
|
|
||||||
|
|
||||||
.PHONY: install installdirs
|
|
||||||
install: installdirs \
|
|
||||||
$(bindir)$(binprefix)make $(infodir)make.info \
|
|
||||||
$(mandir)$(manprefix)make.$(manext)
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
$(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(mandir)
|
|
||||||
|
|
||||||
$(bindir)$(binprefix)make: make
|
|
||||||
$(INSTALL_PROGRAM) make $@.new
|
|
||||||
@if $(install_setgid); then \
|
|
||||||
if chgrp $(group) $@.new && chmod g+s $@.new; then \
|
|
||||||
echo "chgrp $(group) $@.new && chmod g+s $@.new"; \
|
|
||||||
else \
|
|
||||||
echo "$@ needs to be owned by group $(group) and setgid;"; \
|
|
||||||
echo "otherwise the \`-l' option will probably not work."; \
|
|
||||||
echo "You may need special privileges to install $@."; \
|
|
||||||
fi; \
|
|
||||||
else true; fi
|
|
||||||
# Some systems can't deal with renaming onto a running binary.
|
|
||||||
-$(RM) $@.old
|
|
||||||
-mv $@ $@.old
|
|
||||||
mv $@.new $@
|
|
||||||
|
|
||||||
$(infodir)make.info: make.info
|
|
||||||
if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
|
|
||||||
for file in $${dir}/make.info*; do \
|
|
||||||
name="`basename $$file`"; \
|
|
||||||
$(INSTALL_DATA) $$file \
|
|
||||||
`echo $@ | sed "s,make.info\$$,$$name,"`; \
|
|
||||||
done
|
|
||||||
# Run install-info only if it exists.
|
|
||||||
# Use `if' instead of just prepending `-' to the
|
|
||||||
# line so we notice real errors from install-info.
|
|
||||||
# We use `$(SHELL) -c' because some shells do not
|
|
||||||
# fail gracefully when there is an unknown command.
|
|
||||||
if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
|
|
||||||
if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
|
|
||||||
install-info --infodir=$(infodir) $$dir/make.info; \
|
|
||||||
else true; fi
|
|
||||||
|
|
||||||
$(mandir)$(manprefix)make.$(manext): make.man
|
|
||||||
$(INSTALL_DATA) $(srcdir)make.man $@
|
|
||||||
|
|
||||||
|
|
||||||
loadavg: loadavg.c config.h
|
|
||||||
$(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
|
|
||||||
loadavg.c $(LOADLIBES) -o $@
|
|
||||||
# We copy getloadavg.c into a different file rather than compiling it
|
|
||||||
# directly because some compilers clobber getloadavg.o in the process.
|
|
||||||
loadavg.c: getloadavg.c
|
|
||||||
ln $(srcdir)getloadavg.c loadavg.c || \
|
|
||||||
cp $(srcdir)getloadavg.c loadavg.c
|
|
||||||
check-loadavg: loadavg
|
|
||||||
@echo The system uptime program believes the load average to be:
|
|
||||||
-uptime
|
|
||||||
@echo The GNU load average checking code believes:
|
|
||||||
./loadavg
|
|
||||||
check: check-loadavg
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean realclean distclean mostlyclean
|
|
||||||
clean: glob-clean
|
|
||||||
-$(RM) make loadavg "#?.o" core make.dvi
|
|
||||||
|
|
||||||
distclean: clean glob-realclean
|
|
||||||
-$(RM) Makefile config.h config.status build.sh
|
|
||||||
-$(RM) config.log config.cache
|
|
||||||
-$(RM) TAGS tags
|
|
||||||
-$(RM) make.?? make.??s make.log make.toc make.*aux
|
|
||||||
-$(RM) loadavg.c
|
|
||||||
|
|
||||||
realclean: distclean
|
|
||||||
-$(RM) make.info*
|
|
||||||
mostlyclean: clean
|
|
||||||
|
|
||||||
.PHONY: glob-clean glob-realclean
|
|
||||||
glob-clean glob-realclean:
|
|
||||||
cd glob @@\
|
|
||||||
$(MAKE) $@
|
|
||||||
|
|
||||||
# This tells versions [3.59,3.63) of GNU make not to export all variables.
|
|
||||||
.NOEXPORT:
|
|
||||||
|
|
||||||
# The automatically generated dependencies below may omit config.h
|
|
||||||
# because it is included with ``#include <config.h>'' rather than
|
|
||||||
# ``#include "config.h"''. So we add the explicit dependency to make sure.
|
|
||||||
$(objs): config.h
|
|
||||||
|
|
||||||
# Automatically generated dependencies will be put at the end of the file.
|
|
||||||
|
|
||||||
# Automatically generated dependencies.
|
|
||||||
commands.o: commands.c make.h dep.h filedef.h variable.h job.h \
|
|
||||||
commands.h
|
|
||||||
job.o: job.c make.h job.h filedef.h commands.h variable.h
|
|
||||||
dir.o: dir.c make.h
|
|
||||||
file.o: file.c make.h dep.h filedef.h job.h commands.h variable.h
|
|
||||||
misc.o: misc.c make.h dep.h
|
|
||||||
main.o: main.c make.h dep.h filedef.h variable.h job.h commands.h \
|
|
||||||
getopt.h
|
|
||||||
read.o: read.c make.h dep.h filedef.h job.h commands.h variable.h \
|
|
||||||
glob/glob.h
|
|
||||||
remake.o: remake.c make.h filedef.h job.h commands.h dep.h
|
|
||||||
rule.o: rule.c make.h dep.h filedef.h job.h commands.h variable.h \
|
|
||||||
rule.h
|
|
||||||
implicit.o: implicit.c make.h rule.h dep.h filedef.h
|
|
||||||
default.o: default.c make.h rule.h dep.h filedef.h job.h commands.h \
|
|
||||||
variable.h
|
|
||||||
variable.o: variable.c make.h dep.h filedef.h job.h commands.h \
|
|
||||||
variable.h
|
|
||||||
expand.o: expand.c make.h filedef.h job.h commands.h variable.h
|
|
||||||
function.o: function.c make.h filedef.h variable.h dep.h job.h \
|
|
||||||
commands.h amiga.h
|
|
||||||
vpath.o: vpath.c make.h filedef.h variable.h
|
|
||||||
version.o: version.c
|
|
||||||
ar.o: ar.c make.h filedef.h dep.h
|
|
||||||
arscan.o: arscan.c make.h
|
|
||||||
signame.o: signame.c signame.h
|
|
||||||
remote-stub.o: remote-stub.c make.h filedef.h job.h commands.h
|
|
||||||
getopt.o: getopt.c
|
|
||||||
getopt1.o : getopt1.c getopt.h
|
|
||||||
getloadavg.o: getloadavg.c
|
|
||||||
amiga.o: amiga.c make.h variable.h amiga.h
|
|
||||||
@ -1,815 +0,0 @@
|
|||||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
# This is a -*-Makefile-*-, or close enough
|
|
||||||
|
|
||||||
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
|
|
||||||
top_builddir = .
|
|
||||||
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
transform = @program_transform_name@
|
|
||||||
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_triplet = @host@
|
|
||||||
ALL_LINGUAS = @ALL_LINGUAS@
|
|
||||||
ALL_MOFILES = @ALL_MOFILES@
|
|
||||||
ALL_POFILES = @ALL_POFILES@
|
|
||||||
AR = @AR@
|
|
||||||
CC = @CC@
|
|
||||||
CPP = @CPP@
|
|
||||||
GETCONF = @GETCONF@
|
|
||||||
GLOBDIR = @GLOBDIR@
|
|
||||||
GLOBINC = @GLOBINC@
|
|
||||||
GLOBLIB = @GLOBLIB@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MOFILES = @MOFILES@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PERL = @PERL@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
REMOTE = @REMOTE@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.4
|
|
||||||
|
|
||||||
SUBDIRS = $(GLOBDIR) i18n
|
|
||||||
|
|
||||||
bin_PROGRAMS = make
|
|
||||||
|
|
||||||
# These source files also have gettext references
|
|
||||||
SRCS = ar.c arscan.c commands.c dir.c expand.c file.c function.c getopt.c implicit.c job.c main.c misc.c read.c remake.c rule.c signame.c variable.c vpath.c
|
|
||||||
|
|
||||||
|
|
||||||
make_SOURCES = $(SRCS) default.c remote-$(REMOTE).c version.c getopt1.c
|
|
||||||
|
|
||||||
|
|
||||||
noinst_HEADERS = commands.h dep.h filedef.h job.h make.h rule.h variable.h debug.h signame.h getopt.h gettext.h
|
|
||||||
|
|
||||||
|
|
||||||
make_LDADD = $(LIBOBJS) @ALLOCA@ $(GLOBLIB)
|
|
||||||
|
|
||||||
man_MANS = make.1
|
|
||||||
info_TEXINFOS = make.texinfo
|
|
||||||
|
|
||||||
DEFS = -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
|
|
||||||
|
|
||||||
INCLUDES = -I. -I$(srcdir) $(GLOBINC)
|
|
||||||
|
|
||||||
EXTRA_DIST = README build.sh.in $(man_MANS) README.customs remote-cstms.c make-stds.texi SCOPTIONS SMakefile README.Amiga Makefile.ami config.ami make.lnk amiga.c amiga.h README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat readme.vms makefile.vms makefile.com config.h-vms vmsdir.h vmsfunctions.c vmsify.c gettext.c glob/COPYING.LIB glob/ChangeLog glob/Makefile.am glob/Makefile.ami glob/Makefile.in glob/SCOPTIONS glob/SMakefile glob/configure.bat glob/fnmatch.c glob/fnmatch.h glob/glob.c glob/glob.h
|
|
||||||
|
|
||||||
|
|
||||||
MOSTLYCLEANFILES = loadavg.c
|
|
||||||
CLEANFILES = loadavg
|
|
||||||
|
|
||||||
MAKE_HOST = @MAKE_HOST@
|
|
||||||
|
|
||||||
# --------------- Internationalization Section
|
|
||||||
|
|
||||||
POTFILES = $(SRCS) remote-cstms.c vmsfunctions.c
|
|
||||||
|
|
||||||
localedir = $(prefix)/share/locale
|
|
||||||
aliaspath = $(localedir):.
|
|
||||||
|
|
||||||
# --------------- Local INSTALL Section
|
|
||||||
|
|
||||||
# If necessary, change the gid of the app and turn on the setgid flag.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Whether or not make needs to be installed setgid.
|
|
||||||
# The value should be either `true' or `false'.
|
|
||||||
# On many systems, the getloadavg function (used to implement the `-l'
|
|
||||||
# switch) will not work unless make is installed setgid kmem.
|
|
||||||
#
|
|
||||||
inst_setgid = @NEED_SETGID@
|
|
||||||
|
|
||||||
# Install make setgid to this group so it can get the load average.
|
|
||||||
#
|
|
||||||
inst_group = @KMEM_GROUP@
|
|
||||||
|
|
||||||
# > check-regression
|
|
||||||
#
|
|
||||||
# Look for the make test suite, and run it if found and we can find perl.
|
|
||||||
# If we're building outside the tree, we use symlinks to make a local copy of
|
|
||||||
# the test suite. Unfortunately the test suite itself isn't localizable yet.
|
|
||||||
#
|
|
||||||
MAKETESTFLAGS =
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = config.h
|
|
||||||
CONFIG_CLEAN_FILES = build.sh
|
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
make_OBJECTS = ar.o arscan.o commands.o dir.o expand.o file.o \
|
|
||||||
function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o \
|
|
||||||
rule.o signame.o variable.o vpath.o default.o remote-$(REMOTE).o \
|
|
||||||
version.o getopt1.o
|
|
||||||
make_DEPENDENCIES = @LIBOBJS@ @ALLOCA@
|
|
||||||
make_LDFLAGS =
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
TEXI2DVI = texi2dvi
|
|
||||||
INFO_DEPS = make.info
|
|
||||||
DVIS = make.dvi
|
|
||||||
TEXINFOS = make.texinfo
|
|
||||||
man1dir = $(mandir)/man1
|
|
||||||
MANS = $(man_MANS)
|
|
||||||
|
|
||||||
NROFF = nroff
|
|
||||||
HEADERS = $(noinst_HEADERS)
|
|
||||||
|
|
||||||
DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
|
|
||||||
INSTALL Makefile.am Makefile.in NEWS acconfig.h acinclude.m4 aclocal.m4 \
|
|
||||||
alloca.c build.sh.in config.guess config.h.in config.sub configure \
|
|
||||||
configure.in getloadavg.c gettext.c install-sh missing mkinstalldirs \
|
|
||||||
texinfo.tex
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = tar
|
|
||||||
GZIP_ENV = --best
|
|
||||||
SOURCES = $(make_SOURCES)
|
|
||||||
OBJECTS = $(make_OBJECTS)
|
|
||||||
|
|
||||||
all: all-redirect
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .S .c .dvi .info .o .ps .s .texi .texinfo .txi
|
|
||||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
|
|
||||||
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) \
|
|
||||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
$(ACLOCAL_M4): configure.in acinclude.m4
|
|
||||||
cd $(srcdir) && $(ACLOCAL)
|
|
||||||
|
|
||||||
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
$(SHELL) ./config.status --recheck
|
|
||||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
|
||||||
cd $(srcdir) && $(AUTOCONF)
|
|
||||||
|
|
||||||
config.h: stamp-h
|
|
||||||
@if test ! -f $@; then \
|
|
||||||
rm -f stamp-h; \
|
|
||||||
$(MAKE) stamp-h; \
|
|
||||||
else :; fi
|
|
||||||
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) \
|
|
||||||
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
|
|
||||||
$(SHELL) ./config.status
|
|
||||||
@echo timestamp > stamp-h 2> /dev/null
|
|
||||||
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
|
|
||||||
@if test ! -f $@; then \
|
|
||||||
rm -f $(srcdir)/stamp-h.in; \
|
|
||||||
$(MAKE) $(srcdir)/stamp-h.in; \
|
|
||||||
else :; fi
|
|
||||||
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
|
|
||||||
cd $(top_srcdir) && $(AUTOHEADER)
|
|
||||||
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
|
|
||||||
|
|
||||||
mostlyclean-hdr:
|
|
||||||
|
|
||||||
clean-hdr:
|
|
||||||
|
|
||||||
distclean-hdr:
|
|
||||||
-rm -f config.h
|
|
||||||
|
|
||||||
maintainer-clean-hdr:
|
|
||||||
build.sh: $(top_builddir)/config.status build.sh.in
|
|
||||||
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
mostlyclean-binPROGRAMS:
|
|
||||||
|
|
||||||
clean-binPROGRAMS:
|
|
||||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
distclean-binPROGRAMS:
|
|
||||||
|
|
||||||
maintainer-clean-binPROGRAMS:
|
|
||||||
|
|
||||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
|
||||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
|
||||||
if test -f $$p; then \
|
|
||||||
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
|
|
||||||
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
|
||||||
else :; fi; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-binPROGRAMS:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
list='$(bin_PROGRAMS)'; for p in $$list; do \
|
|
||||||
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
|
||||||
done
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
.s.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
.S.o:
|
|
||||||
$(COMPILE) -c $<
|
|
||||||
|
|
||||||
mostlyclean-compile:
|
|
||||||
-rm -f *.o core *.core
|
|
||||||
|
|
||||||
clean-compile:
|
|
||||||
|
|
||||||
distclean-compile:
|
|
||||||
-rm -f *.tab.c
|
|
||||||
|
|
||||||
maintainer-clean-compile:
|
|
||||||
|
|
||||||
make: $(make_OBJECTS) $(make_DEPENDENCIES)
|
|
||||||
@rm -f make
|
|
||||||
$(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
|
|
||||||
|
|
||||||
make.info: make.texinfo
|
|
||||||
make.dvi: make.texinfo
|
|
||||||
|
|
||||||
|
|
||||||
DVIPS = dvips
|
|
||||||
|
|
||||||
.texi.info:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
|
|
||||||
.texi.dvi:
|
|
||||||
TEXINPUTS=.:$$TEXINPUTS \
|
|
||||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.texi:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
|
|
||||||
.texinfo.info:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
|
|
||||||
.texinfo:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
|
|
||||||
.texinfo.dvi:
|
|
||||||
TEXINPUTS=.:$$TEXINPUTS \
|
|
||||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.txi.info:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
|
|
||||||
.txi.dvi:
|
|
||||||
TEXINPUTS=.:$$TEXINPUTS \
|
|
||||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
|
|
||||||
|
|
||||||
.txi:
|
|
||||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
|
||||||
cd $(srcdir) \
|
|
||||||
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
|
|
||||||
.dvi.ps:
|
|
||||||
$(DVIPS) $< -o $@
|
|
||||||
|
|
||||||
install-info-am: $(INFO_DEPS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
|
||||||
@list='$(INFO_DEPS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
d=$(srcdir); \
|
|
||||||
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
|
|
||||||
if test -f $$d/$$ifile; then \
|
|
||||||
echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
|
|
||||||
$(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
|
|
||||||
else : ; fi; \
|
|
||||||
done; \
|
|
||||||
done
|
|
||||||
@$(POST_INSTALL)
|
|
||||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
|
|
||||||
list='$(INFO_DEPS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
|
||||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
|
|
||||||
done; \
|
|
||||||
else : ; fi
|
|
||||||
|
|
||||||
uninstall-info:
|
|
||||||
$(PRE_UNINSTALL)
|
|
||||||
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
|
|
||||||
ii=yes; \
|
|
||||||
else ii=; fi; \
|
|
||||||
list='$(INFO_DEPS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
test -z "$ii" \
|
|
||||||
|| install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
|
|
||||||
done
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
list='$(INFO_DEPS)'; \
|
|
||||||
for file in $$list; do \
|
|
||||||
(cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
|
|
||||||
done
|
|
||||||
|
|
||||||
dist-info: $(INFO_DEPS)
|
|
||||||
list='$(INFO_DEPS)'; \
|
|
||||||
for base in $$list; do \
|
|
||||||
d=$(srcdir); \
|
|
||||||
for file in `cd $$d && eval echo $$base*`; do \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
done
|
|
||||||
|
|
||||||
mostlyclean-aminfo:
|
|
||||||
-rm -f make.aux make.cp make.cps make.dvi make.fn make.fns make.ky \
|
|
||||||
make.kys make.ps make.log make.pg make.toc make.tp make.tps \
|
|
||||||
make.vr make.vrs make.op make.tr make.cv make.cn
|
|
||||||
|
|
||||||
clean-aminfo:
|
|
||||||
|
|
||||||
distclean-aminfo:
|
|
||||||
|
|
||||||
maintainer-clean-aminfo:
|
|
||||||
cd $(srcdir) && for i in $(INFO_DEPS); do \
|
|
||||||
rm -f $$i; \
|
|
||||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
|
||||||
rm -f $$i-[0-9]*; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
|
|
||||||
install-man1:
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
|
||||||
@list='$(man1_MANS)'; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do \
|
|
||||||
case "$$i" in \
|
|
||||||
*.1*) list="$$list $$i" ;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do \
|
|
||||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
|
||||||
else file=$$i; fi; \
|
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-man1:
|
|
||||||
@list='$(man1_MANS)'; \
|
|
||||||
l2='$(man_MANS)'; for i in $$l2; do \
|
|
||||||
case "$$i" in \
|
|
||||||
*.1*) list="$$list $$i" ;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do \
|
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
rm -f $(DESTDIR)$(man1dir)/$$inst; \
|
|
||||||
done
|
|
||||||
install-man: $(MANS)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) install-man1
|
|
||||||
uninstall-man:
|
|
||||||
@$(NORMAL_UNINSTALL)
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
|
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
|
||||||
# into them and run `make' without going through this Makefile.
|
|
||||||
# To change the values of `make' variables: instead of editing Makefiles,
|
|
||||||
# (1) if the variable is set in `config.status', edit `config.status'
|
|
||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
all-recursive install-data-recursive install-exec-recursive \
|
|
||||||
installdirs-recursive install-recursive uninstall-recursive \
|
|
||||||
check-recursive installcheck-recursive info-recursive dvi-recursive:
|
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
|
||||||
dot_seen=no; \
|
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
echo "Making $$target in $$subdir"; \
|
|
||||||
if test "$$subdir" = "."; then \
|
|
||||||
dot_seen=yes; \
|
|
||||||
local_target="$$target-am"; \
|
|
||||||
else \
|
|
||||||
local_target="$$target"; \
|
|
||||||
fi; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|
||||||
done; \
|
|
||||||
if test "$$dot_seen" = "no"; then \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
|
||||||
fi; test -z "$$fail"
|
|
||||||
|
|
||||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
|
||||||
maintainer-clean-recursive:
|
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
|
||||||
dot_seen=no; \
|
|
||||||
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
rev="$$subdir $$rev"; \
|
|
||||||
test "$$subdir" = "." && dot_seen=yes; \
|
|
||||||
done; \
|
|
||||||
test "$$dot_seen" = "no" && rev=". $$rev"; \
|
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
|
||||||
for subdir in $$rev; do \
|
|
||||||
echo "Making $$target in $$subdir"; \
|
|
||||||
if test "$$subdir" = "."; then \
|
|
||||||
local_target="$$target-am"; \
|
|
||||||
else \
|
|
||||||
local_target="$$target"; \
|
|
||||||
fi; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|
||||||
done && test -z "$$fail"
|
|
||||||
tags-recursive:
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
|
||||||
done
|
|
||||||
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
here=`pwd` && cd $(srcdir) \
|
|
||||||
&& mkid -f$$here/ID $$unique $(LISP)
|
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
if test "$$subdir" = .; then :; else \
|
|
||||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|
|
||||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
|
|
||||||
|
|
||||||
mostlyclean-tags:
|
|
||||||
|
|
||||||
clean-tags:
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID
|
|
||||||
|
|
||||||
maintainer-clean-tags:
|
|
||||||
|
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
|
||||||
top_distdir = $(distdir)
|
|
||||||
|
|
||||||
# This target untars the dist file and tries a VPATH configuration. Then
|
|
||||||
# it guarantees that the distribution is self-contained by making another
|
|
||||||
# tarfile.
|
|
||||||
distcheck: dist
|
|
||||||
-rm -rf $(distdir)
|
|
||||||
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
|
||||||
mkdir $(distdir)/=build
|
|
||||||
mkdir $(distdir)/=inst
|
|
||||||
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
|
||||||
cd $(distdir)/=build \
|
|
||||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
|
||||||
-rm -rf $(distdir)
|
|
||||||
@banner="$(distdir).tar.gz is ready for distribution"; \
|
|
||||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo "$$banner"; \
|
|
||||||
echo "$$dashes"
|
|
||||||
dist: distdir
|
|
||||||
-chmod -R a+r $(distdir)
|
|
||||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
||||||
-rm -rf $(distdir)
|
|
||||||
dist-all: distdir
|
|
||||||
-chmod -R a+r $(distdir)
|
|
||||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
||||||
-rm -rf $(distdir)
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
-rm -rf $(distdir)
|
|
||||||
mkdir $(distdir)
|
|
||||||
-chmod 777 $(distdir)
|
|
||||||
$(mkinstalldirs) $(distdir)/glob
|
|
||||||
@for file in $(DISTFILES); do \
|
|
||||||
d=$(srcdir); \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
cp -pr $$/$$file $(distdir)/$$file; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
for subdir in $(SUBDIRS); do \
|
|
||||||
if test "$$subdir" = .; then :; else \
|
|
||||||
test -d $(distdir)/$$subdir \
|
|
||||||
|| mkdir $(distdir)/$$subdir \
|
|
||||||
|| exit 1; \
|
|
||||||
chmod 777 $(distdir)/$$subdir; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
|
|
||||||
alloca.o: alloca.c config.h
|
|
||||||
ar.o: ar.c make.h config.h gettext.h filedef.h dep.h glob/fnmatch.h
|
|
||||||
arscan.o: arscan.c make.h config.h gettext.h
|
|
||||||
commands.o: commands.c make.h config.h gettext.h dep.h filedef.h \
|
|
||||||
variable.h job.h commands.h
|
|
||||||
default.o: default.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h
|
|
||||||
dir.o: dir.c make.h config.h gettext.h glob/glob.h
|
|
||||||
expand.o: expand.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
variable.h rule.h
|
|
||||||
file.o: file.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h
|
|
||||||
function.o: function.c make.h config.h gettext.h filedef.h variable.h \
|
|
||||||
dep.h job.h commands.h debug.h
|
|
||||||
getloadavg.o: getloadavg.c config.h
|
|
||||||
getopt.o: getopt.c config.h gettext.h getopt.h
|
|
||||||
getopt1.o: getopt1.c config.h getopt.h
|
|
||||||
gettext.o: gettext.c config.h gettext.h
|
|
||||||
implicit.o: implicit.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
debug.h
|
|
||||||
job.o: job.c make.h config.h gettext.h job.h debug.h filedef.h \
|
|
||||||
commands.h variable.h
|
|
||||||
main.o: main.c make.h config.h gettext.h dep.h filedef.h variable.h \
|
|
||||||
job.h commands.h rule.h debug.h getopt.h
|
|
||||||
misc.o: misc.c make.h config.h gettext.h dep.h debug.h
|
|
||||||
read.o: read.c make.h config.h gettext.h glob/glob.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h rule.h debug.h
|
|
||||||
remake.o: remake.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
dep.h variable.h debug.h
|
|
||||||
remote-stub.o: remote-stub.c make.h config.h gettext.h filedef.h job.h \
|
|
||||||
commands.h
|
|
||||||
rule.o: rule.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
signame.o: signame.c make.h config.h gettext.h signame.h
|
|
||||||
variable.o: variable.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
version.o: version.c config.h
|
|
||||||
vpath.o: vpath.c make.h config.h gettext.h filedef.h variable.h
|
|
||||||
|
|
||||||
info-am: $(INFO_DEPS)
|
|
||||||
info: info-recursive
|
|
||||||
dvi-am: $(DVIS)
|
|
||||||
dvi: dvi-recursive
|
|
||||||
check-am: all-am
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) check-local
|
|
||||||
check: check-recursive
|
|
||||||
installcheck-am:
|
|
||||||
installcheck: installcheck-recursive
|
|
||||||
all-recursive-am: config.h
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
|
||||||
|
|
||||||
install-exec-am: install-binPROGRAMS install-exec-local
|
|
||||||
install-exec: install-exec-recursive
|
|
||||||
|
|
||||||
install-data-am: install-info-am install-man
|
|
||||||
install-data: install-data-recursive
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
install: install-recursive
|
|
||||||
uninstall-am: uninstall-binPROGRAMS uninstall-info uninstall-man
|
|
||||||
uninstall: uninstall-recursive
|
|
||||||
all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) $(HEADERS) config.h \
|
|
||||||
all-local
|
|
||||||
all-redirect: all-recursive-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
|
||||||
installdirs: installdirs-recursive
|
|
||||||
installdirs-am:
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(infodir) \
|
|
||||||
$(DESTDIR)$(mandir)/man1
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean-generic:
|
|
||||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \
|
|
||||||
mostlyclean-compile mostlyclean-aminfo mostlyclean-tags \
|
|
||||||
mostlyclean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-recursive
|
|
||||||
|
|
||||||
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-aminfo \
|
|
||||||
clean-tags clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
clean: clean-recursive
|
|
||||||
|
|
||||||
distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \
|
|
||||||
distclean-aminfo distclean-tags distclean-generic \
|
|
||||||
clean-am
|
|
||||||
|
|
||||||
distclean: distclean-recursive
|
|
||||||
-rm -f config.status
|
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \
|
|
||||||
maintainer-clean-compile maintainer-clean-aminfo \
|
|
||||||
maintainer-clean-tags maintainer-clean-generic \
|
|
||||||
distclean-am maintainer-clean-local
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
|
||||||
-rm -f config.status
|
|
||||||
|
|
||||||
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
|
|
||||||
mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
|
|
||||||
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
|
|
||||||
mostlyclean-compile distclean-compile clean-compile \
|
|
||||||
maintainer-clean-compile install-info-am uninstall-info \
|
|
||||||
mostlyclean-aminfo distclean-aminfo clean-aminfo \
|
|
||||||
maintainer-clean-aminfo install-man1 uninstall-man1 install-man \
|
|
||||||
uninstall-man install-data-recursive uninstall-data-recursive \
|
|
||||||
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
|
|
||||||
uninstalldirs-recursive all-recursive check-recursive \
|
|
||||||
installcheck-recursive info-recursive dvi-recursive \
|
|
||||||
mostlyclean-recursive distclean-recursive clean-recursive \
|
|
||||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
|
||||||
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
|
|
||||||
dvi-am dvi check-local check check-am installcheck-am installcheck \
|
|
||||||
all-recursive-am install-exec-local install-exec-am install-exec \
|
|
||||||
install-data-am install-data install-am install uninstall-am uninstall \
|
|
||||||
all-local all-redirect all-am all installdirs-am installdirs \
|
|
||||||
mostlyclean-generic distclean-generic clean-generic \
|
|
||||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
|
||||||
all-local: $(srcdir)/stamp-pot
|
|
||||||
|
|
||||||
$(srcdir)/stamp-pot: $(POTFILES)
|
|
||||||
@echo "$(POTFILES)" > $@
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
@if $(inst_setgid); then \
|
|
||||||
app=$(DESTDIR)$(bindir)/`echo $(bin_PROGRAMS)|sed '$(transform)'`; \
|
|
||||||
if chgrp $(inst_group) $$app && chmod g+s $$app; then \
|
|
||||||
echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
|
|
||||||
else \
|
|
||||||
echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
|
|
||||||
echo "otherwise the \`-l' option will probably not work."; \
|
|
||||||
echo "You may need special privileges to complete the installation"; \
|
|
||||||
echo "of $$app."; \
|
|
||||||
fi; \
|
|
||||||
else true; fi
|
|
||||||
|
|
||||||
# --------------- Local DIST Section
|
|
||||||
|
|
||||||
# Install the w32 and tests subdirectories
|
|
||||||
#
|
|
||||||
dist-hook:
|
|
||||||
(cd $(srcdir); \
|
|
||||||
sub=`find w32 tests -follow \( -name CVS -prune -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
|
|
||||||
tar chf - $$sub) \
|
|
||||||
| (cd $(distdir); tar xfBp -)
|
|
||||||
|
|
||||||
# --------------- Local CHECK Section
|
|
||||||
|
|
||||||
check-local: check-regression check-loadavg
|
|
||||||
@banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
|
|
||||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
|
||||||
echo; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo "$$banner"; \
|
|
||||||
echo "$$dashes"; \
|
|
||||||
echo
|
|
||||||
|
|
||||||
.PHONY: check-loadavg check-regression
|
|
||||||
|
|
||||||
# > check-loadavg
|
|
||||||
#
|
|
||||||
loadavg: loadavg.c config.h
|
|
||||||
@rm -f loadavg
|
|
||||||
$(LINK) -DTEST $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(make_LDFLAGS) loadavg.c $(LIBS)
|
|
||||||
|
|
||||||
# We copy getloadavg.c into a different file rather than compiling it
|
|
||||||
# directly because some compilers clobber getloadavg.o in the process.
|
|
||||||
#
|
|
||||||
loadavg.c: getloadavg.c
|
|
||||||
ln $(srcdir)/getloadavg.c loadavg.c || \
|
|
||||||
cp $(srcdir)/getloadavg.c loadavg.c
|
|
||||||
|
|
||||||
check-loadavg: loadavg
|
|
||||||
@echo The system uptime program believes the load average to be:
|
|
||||||
-uptime
|
|
||||||
@echo The GNU load average checking code believes:
|
|
||||||
-./loadavg
|
|
||||||
|
|
||||||
check-regression:
|
|
||||||
@if test -f "$(srcdir)/tests/run_make_tests"; then \
|
|
||||||
if $(PERL) -v >/dev/null 2>&1; then \
|
|
||||||
case `cd $(srcdir); pwd` in `pwd`) : ;; \
|
|
||||||
*) test -d tests || mkdir tests; \
|
|
||||||
rm -f srctests; \
|
|
||||||
if ln -s "$(srcdir)/tests" srctests; then \
|
|
||||||
for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
|
|
||||||
rm -f tests/$$f; ln -s ../srctests/$$f tests; \
|
|
||||||
done; fi ;; \
|
|
||||||
esac; \
|
|
||||||
echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS)"; \
|
|
||||||
cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS); \
|
|
||||||
else \
|
|
||||||
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --------------- Local CLEAN section
|
|
||||||
|
|
||||||
maintainer-clean-local:
|
|
||||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
|
||||||
|
|
||||||
# --------------- Maintainer's Section
|
|
||||||
|
|
||||||
@MAINT_MAKEFILE@
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
@ -1,785 +0,0 @@
|
|||||||
GNU make NEWS -*-indented-text-*-
|
|
||||||
History of user-visible changes.
|
|
||||||
23 Jun 2000
|
|
||||||
|
|
||||||
Copyright (C) 1992,93,94,95,96,97,98,99,2000 Free Software Foundation, Inc.
|
|
||||||
See the end for copying conditions.
|
|
||||||
|
|
||||||
All changes mentioned here are more fully described in the GNU make
|
|
||||||
manual, which is contained in this distribution as the file make.texinfo.
|
|
||||||
|
|
||||||
Please send GNU make bug reports to <bug-make@gnu.org>.
|
|
||||||
See the README file and the GNU make manual for details on sending bug
|
|
||||||
reports.
|
|
||||||
|
|
||||||
Version 3.79.1
|
|
||||||
|
|
||||||
* .SECONDARY with no prerequisites now prevents any target from being
|
|
||||||
removed because make thinks it's an intermediate file, not just those
|
|
||||||
listed in the makefile.
|
|
||||||
|
|
||||||
* New configure option --disable-nsec-timestamps will keep make from
|
|
||||||
using sub-second timestamps on systems which support it. If your
|
|
||||||
build process depends on proper timestamp-preserving behavior of tools
|
|
||||||
like "cp -p" you might need this option, since "cp -p" (right now)
|
|
||||||
doesn't preserve the sub-second portion of the timestamp.
|
|
||||||
|
|
||||||
Version 3.79
|
|
||||||
|
|
||||||
* GNU make optionally supports internationalization and locales via the
|
|
||||||
GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS
|
|
||||||
file for more information on configuring GNU make for NLS.
|
|
||||||
|
|
||||||
* Previously, GNU make quoted variables such as MAKEFLAGS and
|
|
||||||
MAKEOVERRIDES for proper parsing by the shell. This allowed them to
|
|
||||||
be used within make build scripts. However, using them there is not
|
|
||||||
proper behavior: they are meant to be passed to subshells via the
|
|
||||||
environment. Unfortunately the values were not quoted properly to be
|
|
||||||
passed through the environment. This meant that make didn't properly
|
|
||||||
pass some types of command line values to submakes.
|
|
||||||
|
|
||||||
With this version we change that behavior: now these variables are
|
|
||||||
quoted properly for passing through the environment, which is the
|
|
||||||
correct way to do it. If you previously used these variables
|
|
||||||
explicitly within a make rule you may need to re-examine your use for
|
|
||||||
correctness given this change.
|
|
||||||
|
|
||||||
* A new psuedo-target .NOTPARALLEL is available. If defined, the
|
|
||||||
current makefile is run serially regardless of the value of -j.
|
|
||||||
However, submakes are still eligible for parallel execution.
|
|
||||||
|
|
||||||
* The --debug option has changed: it now allows optional flags
|
|
||||||
controlling the amount and type of debugging output. By default only
|
|
||||||
a minimal amount information is generated, displaying the names of
|
|
||||||
"normal" targets (not makefiles) that were deemed out of date and in
|
|
||||||
need of being rebuilt.
|
|
||||||
|
|
||||||
Note that the -d option behaves as before: it takes no arguments and
|
|
||||||
all debugging information is generated.
|
|
||||||
|
|
||||||
* The `-p' (print database) output now includes filename and linenumber
|
|
||||||
information for variable definitions, to aid debugging.
|
|
||||||
|
|
||||||
* The wordlist function no longer reverses its arguments if the "start"
|
|
||||||
value is greater than the "end" value. If that's true, nothing is
|
|
||||||
returned.
|
|
||||||
|
|
||||||
* Hartmut Becker provided many updates for the VMS port of GNU make.
|
|
||||||
See the readme.vms file for more details.
|
|
||||||
|
|
||||||
Version 3.78
|
|
||||||
|
|
||||||
* Two new functions, $(error ...) and $(warning ...) are available. The
|
|
||||||
former will cause make to fail and exit immediately upon expansion of
|
|
||||||
the function, with the text provided as the error message. The latter
|
|
||||||
causes the text provided to be printed as a warning message, but make
|
|
||||||
proceeds normally.
|
|
||||||
|
|
||||||
* A new function $(call ...) is available. This allows users to create
|
|
||||||
their own parameterized macros and invoke them later. Original
|
|
||||||
implementation of this function was provided by Han-Wen Nienhuys
|
|
||||||
<hanwen@cs.uu.nl>.
|
|
||||||
|
|
||||||
* A new function $(if ...) is available. It provides if-then-else
|
|
||||||
capabilities in a builtin function. Original implementation of this
|
|
||||||
function was provided by Han-Wen Nienhuys <hanwen@cs.uu.nl>.
|
|
||||||
|
|
||||||
* Make defines a new variable, .LIBPATTERNS. This variable controls how
|
|
||||||
library dependency expansion (dependencies like ``-lfoo'') is performed.
|
|
||||||
|
|
||||||
* Make accepts CRLF sequences as well as traditional LF, for
|
|
||||||
compatibility with makefiles created on other operating systems.
|
|
||||||
|
|
||||||
* Make accepts a new option: -R, or --no-builtin-variables. This option
|
|
||||||
disables the definition of the rule-specific builtin variables (CC,
|
|
||||||
LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules)
|
|
||||||
as well.
|
|
||||||
|
|
||||||
* A "job server" feature, suggested by Howard Chu <hyc@highlandsun.com>.
|
|
||||||
|
|
||||||
On systems that support POSIX pipe(2) semantics, GNU make can now pass
|
|
||||||
-jN options to submakes rather than forcing them all to use -j1. The
|
|
||||||
top make and all its sub-make processes use a pipe to communicate with
|
|
||||||
each other to ensure that no more than N jobs are started across all
|
|
||||||
makes. To get the old behavior of -j back, you can configure make
|
|
||||||
with the --disable-job-server option.
|
|
||||||
|
|
||||||
* The confusing term "dependency" has been replaced by the more accurate
|
|
||||||
and standard term "prerequisite", both in the manual and in all GNU make
|
|
||||||
output.
|
|
||||||
|
|
||||||
* GNU make supports the "big archive" library format introduced in AIX 4.3.
|
|
||||||
|
|
||||||
* GNU make supports large files on AIX, HP-UX, and IRIX. These changes
|
|
||||||
were provided by Paul Eggert <eggert@twinsun.com>. (Large file
|
|
||||||
support for Solaris and Linux was introduced in 3.77, but the
|
|
||||||
configuration had issues: these have also been resolved).
|
|
||||||
|
|
||||||
* The Windows 95/98/NT (W32) version of GNU make now has native support
|
|
||||||
for the Cygnus Cygwin release B20.1 shell (bash).
|
|
||||||
|
|
||||||
* The GNU make regression test suite, long available separately "under
|
|
||||||
the table", has been integrated into the release. You can invoke it
|
|
||||||
by running "make check" in the distribution. Note that it requires
|
|
||||||
Perl (either Perl 4 or Perl 5) to run.
|
|
||||||
|
|
||||||
Version 3.77
|
|
||||||
|
|
||||||
* Implement BSD make's "?=" variable assignment operator. The variable
|
|
||||||
is assigned the specified value only if that variable is not already
|
|
||||||
defined.
|
|
||||||
|
|
||||||
* Make defines a new variable, "CURDIR", to contain the current working
|
|
||||||
directory (after the -C option, if any, has been processed).
|
|
||||||
Modifying this variable has no effect on the operation of make.
|
|
||||||
|
|
||||||
* Make defines a new default RCS rule, for new-style master file
|
|
||||||
storage: ``% :: RCS/%'' (note no ``,v'' suffix).
|
|
||||||
|
|
||||||
Make defines new default rules for DOS-style C++ file naming
|
|
||||||
conventions, with ``.cpp'' suffixes. All the same rules as for
|
|
||||||
``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and
|
|
||||||
COMPILE.cpp macros (which default to the same value as LINK.cc and
|
|
||||||
COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should
|
|
||||||
use CXXFLAGS to change C++ compiler flags.
|
|
||||||
|
|
||||||
* A new feature, "target-specific variable values", has been added.
|
|
||||||
This is a large change so please see the appropriate sections of the
|
|
||||||
manual for full details. Briefly, syntax like this:
|
|
||||||
|
|
||||||
TARGET: VARIABLE = VALUE
|
|
||||||
|
|
||||||
defines VARIABLE as VALUE within the context of TARGET. This is
|
|
||||||
similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note
|
|
||||||
that the assignment may be of any type, not just recursive, and that
|
|
||||||
the override keyword is available.
|
|
||||||
|
|
||||||
COMPATIBILITY: This new syntax means that if you have any rules where
|
|
||||||
the first or second dependency has an equal sign (=) in its name,
|
|
||||||
you'll have to escape them with a backslash: "foo : bar\=baz".
|
|
||||||
Further, if you have any dependencies which already contain "\=",
|
|
||||||
you'll have to escape both of them: "foo : bar\\\=baz".
|
|
||||||
|
|
||||||
* A new appendix listing the most common error and warning messages
|
|
||||||
generated by GNU make, with some explanation, has been added to the
|
|
||||||
GNU make User's Manual.
|
|
||||||
|
|
||||||
* Updates to the GNU make Customs library support (see README.customs).
|
|
||||||
|
|
||||||
* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
|
|
||||||
and to the DOS port from Eli Zaretski (see README.DOS).
|
|
||||||
|
|
||||||
Version 3.76.1
|
|
||||||
|
|
||||||
* Small (but serious) bug fix. Quick rollout to get into the GNU source CD.
|
|
||||||
|
|
||||||
Version 3.76
|
|
||||||
|
|
||||||
* GNU make now uses automake to control Makefile.in generation. This
|
|
||||||
should make it more consistent with the GNU standards.
|
|
||||||
|
|
||||||
* VPATH functionality has been changed to incorporate the VPATH+ patch,
|
|
||||||
previously maintained by Paul Smith <psmith@baynetworks.com>. See the
|
|
||||||
manual.
|
|
||||||
|
|
||||||
* Make defines a new variable, `MAKECMDGOALS', to contain the goals that
|
|
||||||
were specified on the command line, if any. Modifying this variable
|
|
||||||
has no effect on the operation of make.
|
|
||||||
|
|
||||||
* A new function, `$(wordlist S,E,TEXT)', is available: it returns a
|
|
||||||
list of words from number S to number E (inclusive) of TEXT.
|
|
||||||
|
|
||||||
* Instead of an error, detection of future modification times gives a
|
|
||||||
warning and continues. The warning is repeated just before GNU make
|
|
||||||
exits, so it is less likely to be lost.
|
|
||||||
|
|
||||||
* Fix the $(basename) and $(suffix) functions so they only operate on
|
|
||||||
the last filename, not the entire string:
|
|
||||||
|
|
||||||
Command Old Result New Result
|
|
||||||
------- ---------- ----------
|
|
||||||
$(basename a.b) a a
|
|
||||||
$(basename a.b/c) a a.b/c
|
|
||||||
$(suffix a.b) b b
|
|
||||||
$(suffix a.b/c) b/c <empty>
|
|
||||||
|
|
||||||
* The $(strip) function now removes newlines as well as TABs and spaces.
|
|
||||||
|
|
||||||
* The $(shell) function now changes CRLF (\r\n) pairs to a space as well
|
|
||||||
as newlines (\n).
|
|
||||||
|
|
||||||
* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32).
|
|
||||||
|
|
||||||
* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS
|
|
||||||
and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler
|
|
||||||
and utilities. See README.DOS for details, and direct all questions
|
|
||||||
concerning this port to Eli Zaretskii <eliz@is.elta.co.il> or DJ
|
|
||||||
Delorie <dj@delorie.com>.
|
|
||||||
|
|
||||||
* John W. Eaton has updated the VMS port to support libraries and VPATH.
|
|
||||||
|
|
||||||
Version 3.75
|
|
||||||
|
|
||||||
* The directory messages printed by `-w' and implicitly in sub-makes,
|
|
||||||
are now omitted if Make runs no commands and has no other messages to print.
|
|
||||||
|
|
||||||
* Make now detects files that for whatever reason have modification times
|
|
||||||
in the future and gives an error. Files with such impossible timestamps
|
|
||||||
can result from unsynchronized clocks, or archived distributions
|
|
||||||
containing bogus timestamps; they confuse Make's dependency engine
|
|
||||||
thoroughly.
|
|
||||||
|
|
||||||
* The new directive `sinclude' is now recognized as another name for
|
|
||||||
`-include', for compatibility with some other Makes.
|
|
||||||
|
|
||||||
* Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for
|
|
||||||
details, and direct all Amiga-related questions to <digulla@fh-konstanz.de>.
|
|
||||||
|
|
||||||
* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95.
|
|
||||||
See README.W32 for details, and direct all Windows-related questions to
|
|
||||||
<rob_tulloh@tivoli.com>.
|
|
||||||
|
|
||||||
Version 3.73
|
|
||||||
|
|
||||||
* Converted to use Autoconf version 2, so `configure' has some new options.
|
|
||||||
See INSTALL for details.
|
|
||||||
|
|
||||||
* You can now send a SIGUSR1 signal to Make to toggle printing of debugging
|
|
||||||
output enabled by -d, at any time during the run.
|
|
||||||
|
|
||||||
Version 3.72
|
|
||||||
|
|
||||||
* DJ Delorie has ported Make to MS-DOS using the GO32 extender.
|
|
||||||
He is maintaining the DOS port, not the GNU Make maintainer;
|
|
||||||
please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>.
|
|
||||||
MS-DOS binaries are available for FTP from ftp.simtel.net in
|
|
||||||
/pub/simtelnet/gnu/djgpp/.
|
|
||||||
|
|
||||||
* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
|
|
||||||
contain variable definitions itself; these are treated just like
|
|
||||||
command-line variable definitions. Make will automatically insert any
|
|
||||||
variable definitions from the environment value of `MAKEFLAGS' or from
|
|
||||||
the command line, into the `MAKEFLAGS' value exported to children. The
|
|
||||||
`MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
|
|
||||||
for sub-makes is now included in `MAKEFLAGS' instead. As before, you can
|
|
||||||
reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
|
|
||||||
in the environment when its size is limited.
|
|
||||||
|
|
||||||
* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
|
|
||||||
a rule if it has changed when its commands exit with a nonzero status,
|
|
||||||
just as when the commands get a signal.
|
|
||||||
|
|
||||||
* The automatic variable `$+' is new. It lists all the dependencies like
|
|
||||||
`$^', but preserves duplicates listed in the makefile. This is useful
|
|
||||||
for linking rules, where library files sometimes need to be listed twice
|
|
||||||
in the link order.
|
|
||||||
|
|
||||||
* You can now specify the `.IGNORE' and `.SILENT' special targets with
|
|
||||||
dependencies to limit their effects to those files. If a file appears as
|
|
||||||
a dependency of `.IGNORE', then errors will be ignored while running the
|
|
||||||
commands to update that file. Likewise if a file appears as a dependency
|
|
||||||
of `.SILENT', then the commands to update that file will not be printed
|
|
||||||
before they are run. (This change was made to conform to POSIX.2.)
|
|
||||||
|
|
||||||
Version 3.71
|
|
||||||
|
|
||||||
* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
|
|
||||||
`$(^D)' now omit the trailing slash from the directory name. (This change
|
|
||||||
was made to comply with POSIX.2.)
|
|
||||||
|
|
||||||
* The source distribution now includes the Info files for the Make manual.
|
|
||||||
There is no longer a separate distribution containing Info and DVI files.
|
|
||||||
|
|
||||||
* You can now set the variables `binprefix' and/or `manprefix' in
|
|
||||||
Makefile.in (or on the command line when installing) to install GNU make
|
|
||||||
under a name other than `make' (i.e., ``make binprefix=g install''
|
|
||||||
installs GNU make as `gmake').
|
|
||||||
|
|
||||||
* The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
|
|
||||||
flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
|
|
||||||
Makeinfo program.
|
|
||||||
|
|
||||||
* The exit status of Make when it runs into errors is now 2 instead of 1.
|
|
||||||
The exit status is 1 only when using -q and some target is not up to date.
|
|
||||||
(This change was made to comply with POSIX.2.)
|
|
||||||
|
|
||||||
Version 3.70
|
|
||||||
|
|
||||||
* It is no longer a fatal error to have a NUL character in a makefile.
|
|
||||||
You should never put a NUL in a makefile because it can have strange
|
|
||||||
results, but otherwise empty lines full of NULs (such as produced by
|
|
||||||
the `xmkmf' program) will always work fine.
|
|
||||||
|
|
||||||
* The error messages for nonexistent included makefiles now refer to the
|
|
||||||
makefile name and line number where the `include' appeared, so Emacs's
|
|
||||||
C-x ` command takes you there (in case it's a typo you need to fix).
|
|
||||||
|
|
||||||
Version 3.69
|
|
||||||
|
|
||||||
* Implicit rule search for archive member references is now done in the
|
|
||||||
opposite order from previous versions: the whole target name `LIB(MEM)'
|
|
||||||
first, and just the member name and parentheses `(MEM)' second.
|
|
||||||
|
|
||||||
* Make now gives an error for an unterminated variable or function reference.
|
|
||||||
For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
|
|
||||||
|
|
||||||
* The new default variable `MAKE_VERSION' gives the version number of
|
|
||||||
Make, and a string describing the remote job support compiled in (if any).
|
|
||||||
Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
|
|
||||||
|
|
||||||
* Commands in an invocation of the `shell' function are no longer run with
|
|
||||||
a modified environment like target commands are. As in versions before
|
|
||||||
3.68, they now run with the environment that `make' started with. We
|
|
||||||
have reversed the change made in version 3.68 because it turned out to
|
|
||||||
cause a paradoxical situation in cases like:
|
|
||||||
|
|
||||||
export variable = $(shell echo value)
|
|
||||||
|
|
||||||
When Make attempted to put this variable in the environment for a target
|
|
||||||
command, it would try expand the value by running the shell command
|
|
||||||
`echo value'. In version 3.68, because it constructed an environment
|
|
||||||
for that shell command in the same way, Make would begin to go into an
|
|
||||||
infinite loop and then get a fatal error when it detected the loop.
|
|
||||||
|
|
||||||
* The commands given for `.DEFAULT' are now used for phony targets with no
|
|
||||||
commands.
|
|
||||||
|
|
||||||
Version 3.68
|
|
||||||
|
|
||||||
* You can list several archive member names inside parenthesis:
|
|
||||||
`lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
|
|
||||||
|
|
||||||
* You can use wildcards inside archive member references. For example,
|
|
||||||
`lib(*.o)' expands to all existing members of `lib' whose names end in
|
|
||||||
`.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
|
|
||||||
of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
|
|
||||||
foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
|
|
||||||
|
|
||||||
* A suffix rule `.X.a' now produces two pattern rules:
|
|
||||||
(%.o): %.X # Previous versions produced only this.
|
|
||||||
%.a: %.X # Now produces this as well, just like other suffixes.
|
|
||||||
|
|
||||||
* The new flag `--warn-undefined-variables' says to issue a warning message
|
|
||||||
whenever Make expands a reference to an undefined variable.
|
|
||||||
|
|
||||||
* The new `-include' directive is just like `include' except that there is
|
|
||||||
no error (not even a warning) for a nonexistent makefile.
|
|
||||||
|
|
||||||
* Commands in an invocation of the `shell' function are now run with a
|
|
||||||
modified environment like target commands are, so you can use `export' et
|
|
||||||
al to set up variables for them. They used to run with the environment
|
|
||||||
that `make' started with.
|
|
||||||
|
|
||||||
Version 3.66
|
|
||||||
|
|
||||||
* `make --version' (or `make -v') now exits immediately after printing
|
|
||||||
the version number.
|
|
||||||
|
|
||||||
Version 3.65
|
|
||||||
|
|
||||||
* Make now supports long-named members in `ar' archive files.
|
|
||||||
|
|
||||||
Version 3.64
|
|
||||||
|
|
||||||
* Make now supports the `+=' syntax for a variable definition which appends
|
|
||||||
to the variable's previous value. See the section `Appending More Text
|
|
||||||
to Variables' in the manual for full details.
|
|
||||||
|
|
||||||
* The new option `--no-print-directory' inhibits the `-w' or
|
|
||||||
`--print-directory' feature. Make turns on `--print-directory'
|
|
||||||
automatically if you use `-C' or `--directory', and in sub-makes; some
|
|
||||||
users have found this behavior undesirable.
|
|
||||||
|
|
||||||
* The built-in implicit rules now support the alternative extension
|
|
||||||
`.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
|
|
||||||
|
|
||||||
Version 3.63
|
|
||||||
|
|
||||||
* Make now uses a standard GNU `configure' script. See the new file
|
|
||||||
INSTALL for the new (and much simpler) installation procedure.
|
|
||||||
|
|
||||||
* There is now a shell script to build Make the first time, if you have no
|
|
||||||
other `make' program. `build.sh' is created by `configure'; see README.
|
|
||||||
|
|
||||||
* GNU Make now completely conforms to the POSIX.2 specification for `make'.
|
|
||||||
|
|
||||||
* Elements of the `$^' and `$?' automatic variables that are archive
|
|
||||||
member references now list only the member name, as in Unix and POSIX.2.
|
|
||||||
|
|
||||||
* You should no longer ever need to specify the `-w' switch, which prints
|
|
||||||
the current directory before and after Make runs. The `-C' switch to
|
|
||||||
change directory, and recursive use of Make, now set `-w' automatically.
|
|
||||||
|
|
||||||
* Multiple double-colon rules for the same target will no longer have their
|
|
||||||
commands run simultaneously under -j, as this could result in the two
|
|
||||||
commands trying to change the file at the same time and interfering with
|
|
||||||
one another.
|
|
||||||
|
|
||||||
* The `SHELL' variable is now never taken from the environment.
|
|
||||||
Each makefile that wants a shell other than the default (/bin/sh) must
|
|
||||||
set SHELL itself. SHELL is always exported to child processes.
|
|
||||||
This change was made for compatibility with POSIX.2.
|
|
||||||
|
|
||||||
* Make now accepts long options. There is now an informative usage message
|
|
||||||
that tells you what all the options are and what they do. Try `make --help'.
|
|
||||||
|
|
||||||
* There are two new directives: `export' and `unexport'. All variables are
|
|
||||||
no longer automatically put into the environments of the commands that
|
|
||||||
Make runs. Instead, only variables specified on the command line or in
|
|
||||||
the environment are exported by default. To export others, use:
|
|
||||||
export VARIABLE
|
|
||||||
or you can define variables with:
|
|
||||||
export VARIABLE = VALUE
|
|
||||||
or:
|
|
||||||
export VARIABLE := VALUE
|
|
||||||
You can use just:
|
|
||||||
export
|
|
||||||
or:
|
|
||||||
.EXPORT_ALL_VARIABLES:
|
|
||||||
to get the old behavior. See the node `Variables/Recursion' in the manual
|
|
||||||
for a full description.
|
|
||||||
|
|
||||||
* The commands from the `.DEFAULT' special target are only applied to
|
|
||||||
targets which have no rules at all, not all targets with no commands.
|
|
||||||
This change was made for compatibility with Unix make.
|
|
||||||
|
|
||||||
* All fatal error messages now contain `***', so they are easy to find in
|
|
||||||
compilation logs.
|
|
||||||
|
|
||||||
* Dependency file names like `-lNAME' are now replaced with the actual file
|
|
||||||
name found, as with files found by normal directory search (VPATH).
|
|
||||||
The library file `libNAME.a' may now be found in the current directory,
|
|
||||||
which is checked before VPATH; the standard set of directories (/lib,
|
|
||||||
/usr/lib, /usr/local/lib) is now checked last.
|
|
||||||
See the node `Libraries/Search' in the manual for full details.
|
|
||||||
|
|
||||||
* A single `include' directive can now specify more than one makefile to
|
|
||||||
include, like this:
|
|
||||||
include file1 file2
|
|
||||||
You can also use shell file name patterns in an `include' directive:
|
|
||||||
include *.mk
|
|
||||||
|
|
||||||
* The default directories to search for included makefiles, and for
|
|
||||||
libraries specified with `-lNAME', are now set by configuration.
|
|
||||||
|
|
||||||
* You can now use blanks as well as colons to separate the directories in a
|
|
||||||
search path for the `vpath' directive or the `VPATH' variable.
|
|
||||||
|
|
||||||
* You can now use variables and functions in the left hand side of a
|
|
||||||
variable assignment, as in "$(foo)bar = value".
|
|
||||||
|
|
||||||
* The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
|
|
||||||
The `MAKE_COMMAND' variable is now defined to the name with which make
|
|
||||||
was invoked.
|
|
||||||
|
|
||||||
* The built-in rules for C++ compilation now use the variables `$(CXX)' and
|
|
||||||
`$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'. The old names had
|
|
||||||
problems with shells that cannot have `+' in environment variable names.
|
|
||||||
|
|
||||||
* The value of a recursively expanded variable is now expanded when putting
|
|
||||||
it into the environment for child processes. This change was made for
|
|
||||||
compatibility with Unix make.
|
|
||||||
|
|
||||||
* A rule with no targets before the `:' is now accepted and ignored.
|
|
||||||
This change was made for compatibility with SunOS 4 make.
|
|
||||||
We do not recommend that you write your makefiles to take advantage of this.
|
|
||||||
|
|
||||||
* The `-I' switch can now be used in MAKEFLAGS, and are put there
|
|
||||||
automatically just like other switches.
|
|
||||||
|
|
||||||
Version 3.61
|
|
||||||
|
|
||||||
* Built-in rules for C++ source files with the `.C' suffix.
|
|
||||||
We still recommend that you use `.cc' instead.
|
|
||||||
|
|
||||||
* If commands are given too many times for a single target,
|
|
||||||
the last set given is used, and a warning message is printed.
|
|
||||||
|
|
||||||
* Error messages about makefiles are in standard GNU error format,
|
|
||||||
so C-x ` in Emacs works on them.
|
|
||||||
|
|
||||||
* Dependencies of pattern rules which contain no % need not actually exist
|
|
||||||
if they can be created (just like dependencies which do have a %).
|
|
||||||
|
|
||||||
Version 3.60
|
|
||||||
|
|
||||||
* A message is always printed when Make decides there is nothing to be done.
|
|
||||||
It used to be that no message was printed for top-level phony targets
|
|
||||||
(because "`phony' is up to date" isn't quite right). Now a different
|
|
||||||
message "Nothing to be done for `phony'" is printed in that case.
|
|
||||||
|
|
||||||
* Archives on AIX now supposedly work.
|
|
||||||
|
|
||||||
* When the commands specified for .DEFAULT are used to update a target,
|
|
||||||
the $< automatic variable is given the same value as $@ for that target.
|
|
||||||
This is how Unix make behaves, and this behavior is mandated by POSIX.2.
|
|
||||||
|
|
||||||
Version 3.59
|
|
||||||
|
|
||||||
* The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
|
|
||||||
variables while remaking makefiles, so recursive makes done while remaking
|
|
||||||
makefiles will behave properly.
|
|
||||||
|
|
||||||
* If the special target `.NOEXPORT' is specified in a makefile,
|
|
||||||
only variables that came from the environment and variables
|
|
||||||
defined on the command line are exported.
|
|
||||||
|
|
||||||
Version 3.58
|
|
||||||
|
|
||||||
* Suffix rules may have dependencies (which are ignored).
|
|
||||||
|
|
||||||
Version 3.57
|
|
||||||
|
|
||||||
* Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
|
|
||||||
as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
|
|
||||||
|
|
||||||
Version 3.55
|
|
||||||
|
|
||||||
* There is now a Unix man page for GNU Make. It is certainly not a replacement
|
|
||||||
for the Texinfo manual, but it documents the basic functionality and the
|
|
||||||
switches. For full documentation, you should still read the Texinfo manual.
|
|
||||||
Thanks to Dennis Morse of Stanford University for contributing the initial
|
|
||||||
version of this.
|
|
||||||
|
|
||||||
* Variables which are defined by default (e.g., `CC') will no longer be put
|
|
||||||
into the environment for child processes. (If these variables are reset by the
|
|
||||||
environment, makefiles, or the command line, they will still go into the
|
|
||||||
environment.)
|
|
||||||
|
|
||||||
* Makefiles which have commands but no dependencies (and thus are always
|
|
||||||
considered out of date and in need of remaking), will not be remade (if they
|
|
||||||
were being remade only because they were makefiles). This means that GNU
|
|
||||||
Make will no longer go into an infinite loop when fed the makefiles that
|
|
||||||
`imake' (necessary to build X Windows) produces.
|
|
||||||
|
|
||||||
* There is no longer a warning for using the `vpath' directive with an explicit
|
|
||||||
pathname (instead of a `%' pattern).
|
|
||||||
|
|
||||||
Version 3.51
|
|
||||||
|
|
||||||
* When removing intermediate files, only one `rm' command line is printed,
|
|
||||||
listing all file names.
|
|
||||||
|
|
||||||
* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
|
|
||||||
These are the directory-only and file-only versions of `$^' and `$?'.
|
|
||||||
|
|
||||||
* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
|
|
||||||
directory if it exists.
|
|
||||||
|
|
||||||
* The automatic variable `$($/)' is no longer defined.
|
|
||||||
|
|
||||||
* Leading `+' characters on a command line make that line be executed even
|
|
||||||
under -n, -t, or -q (as if the line contained `$(MAKE)').
|
|
||||||
|
|
||||||
* For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
|
|
||||||
only those lines are executed, not their entire rules.
|
|
||||||
(This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
|
|
||||||
|
|
||||||
Version 3.50
|
|
||||||
|
|
||||||
* Filenames in rules will now have ~ and ~USER expanded.
|
|
||||||
|
|
||||||
* The `-p' output has been changed so it can be used as a makefile.
|
|
||||||
(All information that isn't specified by makefiles is prefaced with comment
|
|
||||||
characters.)
|
|
||||||
|
|
||||||
Version 3.49
|
|
||||||
|
|
||||||
* The % character can be quoted with backslash in implicit pattern rules,
|
|
||||||
static pattern rules, `vpath' directives, and `patsubst', `filter', and
|
|
||||||
`filter-out' functions. A warning is issued if a `vpath' directive's
|
|
||||||
pattern contains no %.
|
|
||||||
|
|
||||||
* The `wildcard' variable expansion function now expands ~ and ~USER.
|
|
||||||
|
|
||||||
* Messages indicating failed commands now contain the target name:
|
|
||||||
make: *** [target] Error 1
|
|
||||||
|
|
||||||
* The `-p' output format has been changed somewhat to look more like
|
|
||||||
makefile rules and to give all information that Make has about files.
|
|
||||||
|
|
||||||
Version 3.48
|
|
||||||
|
|
||||||
Version 3.47
|
|
||||||
|
|
||||||
* The `-l' switch with no argument removes any previous load-average limit.
|
|
||||||
|
|
||||||
* When the `-w' switch is in effect, and Make has updated makefiles,
|
|
||||||
it will write a `Leaving directory' messagfe before re-executing itself.
|
|
||||||
This makes the `directory change tracking' changes to Emacs's compilation
|
|
||||||
commands work properly.
|
|
||||||
|
|
||||||
Version 3.46
|
|
||||||
|
|
||||||
* The automatic variable `$*' is now defined for explicit rules,
|
|
||||||
as it is in Unix make.
|
|
||||||
|
|
||||||
Version 3.45
|
|
||||||
|
|
||||||
* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
|
|
||||||
specified without an argument (indicating infinite jobs).
|
|
||||||
The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
|
|
||||||
|
|
||||||
* Make no longer checks hashed directories after running commands.
|
|
||||||
The behavior implemented in 3.41 caused too much slowdown.
|
|
||||||
|
|
||||||
Version 3.44
|
|
||||||
|
|
||||||
* A dependency is NOT considered newer than its dependent if
|
|
||||||
they have the same modification time. The behavior implemented
|
|
||||||
in 3.43 conflicts with RCS.
|
|
||||||
|
|
||||||
Version 3.43
|
|
||||||
|
|
||||||
* Dependency loops are no longer fatal errors.
|
|
||||||
|
|
||||||
* A dependency is considered newer than its dependent if
|
|
||||||
they have the same modification time.
|
|
||||||
|
|
||||||
Version 3.42
|
|
||||||
|
|
||||||
* The variables F77 and F77FLAGS are now set by default to $(FC) and
|
|
||||||
$(FFLAGS). Makefiles designed for System V make may use these variables in
|
|
||||||
explicit rules and expect them to be set. Unfortunately, there is no way to
|
|
||||||
make setting these affect the Fortran implicit rules unless FC and FFLAGS
|
|
||||||
are not used (and these are used by BSD make).
|
|
||||||
|
|
||||||
Version 3.41
|
|
||||||
|
|
||||||
* Make now checks to see if its hashed directories are changed by commands.
|
|
||||||
Other makes that hash directories (Sun, 4.3 BSD) don't do this.
|
|
||||||
|
|
||||||
Version 3.39
|
|
||||||
|
|
||||||
* The `shell' function no longer captures standard error output.
|
|
||||||
|
|
||||||
Version 3.32
|
|
||||||
|
|
||||||
* A file beginning with a dot can be the default target if it also contains
|
|
||||||
a slash (e.g., `../bin/foo'). (Unix make allows this as well.)
|
|
||||||
|
|
||||||
Version 3.31
|
|
||||||
|
|
||||||
* Archive member names are truncated to 15 characters.
|
|
||||||
|
|
||||||
* Yet more USG stuff.
|
|
||||||
|
|
||||||
* Minimal support for Microport System V (a 16-bit machine and a
|
|
||||||
brain-damaged compiler). This has even lower priority than other USG
|
|
||||||
support, so if it gets beyond trivial, I will take it out completely.
|
|
||||||
|
|
||||||
* Revamped default implicit rules (not much visible change).
|
|
||||||
|
|
||||||
* The -d and -p options can come from the environment.
|
|
||||||
|
|
||||||
Version 3.30
|
|
||||||
|
|
||||||
* Improved support for USG and HPUX (hopefully).
|
|
||||||
|
|
||||||
* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
|
|
||||||
equivalent to `$(patsubst a,b,$(foo))'.
|
|
||||||
|
|
||||||
* Defining .DEFAULT with no deps or commands clears its commands.
|
|
||||||
|
|
||||||
* New default implicit rules for .S (cpp, then as), and .sh (copy and make
|
|
||||||
executable). All default implicit rules that use cpp (even indirectly), use
|
|
||||||
$(CPPFLAGS).
|
|
||||||
|
|
||||||
Version 3.29
|
|
||||||
|
|
||||||
* Giving the -j option with no arguments gives you infinite jobs.
|
|
||||||
|
|
||||||
Version 3.28
|
|
||||||
|
|
||||||
* New option: "-l LOAD" says not to start any new jobs while others are
|
|
||||||
running if the load average is not below LOAD (a floating-point number).
|
|
||||||
|
|
||||||
* There is support in place for implementations of remote command execution
|
|
||||||
in Make. See the file remote.c.
|
|
||||||
|
|
||||||
Version 3.26
|
|
||||||
|
|
||||||
* No more than 10 directories will be kept open at once.
|
|
||||||
(This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
|
|
||||||
|
|
||||||
Version 3.25
|
|
||||||
|
|
||||||
* Archive files will have their modification times recorded before doing
|
|
||||||
anything that might change their modification times by updating an archive
|
|
||||||
member.
|
|
||||||
|
|
||||||
Version 3.20
|
|
||||||
|
|
||||||
* The `MAKELEVEL' variable is defined for use by makefiles.
|
|
||||||
|
|
||||||
Version 3.19
|
|
||||||
|
|
||||||
* The recursion level indications in error messages are much shorter than
|
|
||||||
they were in version 3.14.
|
|
||||||
|
|
||||||
Version 3.18
|
|
||||||
|
|
||||||
* Leading spaces before directives are ignored (as documented).
|
|
||||||
|
|
||||||
* Included makefiles can determine the default goal target.
|
|
||||||
(System V Make does it this way, so we are being compatible).
|
|
||||||
|
|
||||||
Version 3.14.
|
|
||||||
|
|
||||||
* Variables that are defaults built into Make will not be put in the
|
|
||||||
environment for children. This just saves some environment space and,
|
|
||||||
except under -e, will be transparent to sub-makes.
|
|
||||||
|
|
||||||
* Error messages from sub-makes will indicate the level of recursion.
|
|
||||||
|
|
||||||
* Hopefully some speed-up for large directories due to a change in the
|
|
||||||
directory hashing scheme.
|
|
||||||
|
|
||||||
* One child will always get a standard input that is usable.
|
|
||||||
|
|
||||||
* Default makefiles that don't exist will be remade and read in.
|
|
||||||
|
|
||||||
Version 3.13.
|
|
||||||
|
|
||||||
* Count parentheses inside expansion function calls so you can
|
|
||||||
have nested calls: `$(sort $(foreach x,a b,$(x)))'.
|
|
||||||
|
|
||||||
Version 3.12.
|
|
||||||
|
|
||||||
* Several bug fixes, including USG and Sun386i support.
|
|
||||||
|
|
||||||
* `shell' function to expand shell commands a la `
|
|
||||||
|
|
||||||
* If the `-d' flag is given, version information will be printed.
|
|
||||||
|
|
||||||
* The `-c' option has been renamed to `-C' for compatibility with tar.
|
|
||||||
|
|
||||||
* The `-p' option no longer inhibits other normal operation.
|
|
||||||
|
|
||||||
* Makefiles will be updated and re-read if necessary.
|
|
||||||
|
|
||||||
* Can now run several commands at once (parallelism), -j option.
|
|
||||||
|
|
||||||
* Error messages will contain the level of Make recursion, if any.
|
|
||||||
|
|
||||||
* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
|
|
||||||
makefiles are read.
|
|
||||||
|
|
||||||
* A double-colon rule with no dependencies will always have its commands run.
|
|
||||||
(This is how both the BSD and System V versions of Make do it.)
|
|
||||||
|
|
||||||
Version 3.05
|
|
||||||
|
|
||||||
(Changes from versions 1 through 3.05 were never recorded. Sorry.)
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
Copyright information:
|
|
||||||
|
|
||||||
Permission is granted to anyone to make or distribute verbatim copies
|
|
||||||
of this document as received, in any medium, provided that the
|
|
||||||
copyright notice and this permission notice are preserved, thus
|
|
||||||
giving the recipient permission to redistribute in turn.
|
|
||||||
|
|
||||||
Permission is granted to distribute modified versions of this
|
|
||||||
document, or of portions of it, under the above conditions, provided
|
|
||||||
also that they carry prominent notices stating who last changed them.
|
|
||||||
@ -1,165 +0,0 @@
|
|||||||
# NOTE: If you have no `make' program at all to process this makefile, run
|
|
||||||
# `build_w32.bat' instead.
|
|
||||||
#
|
|
||||||
# Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
|
|
||||||
# This file is part of GNU Make.
|
|
||||||
#
|
|
||||||
# GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# GNU Make is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
#
|
|
||||||
# NMakefile for GNU Make
|
|
||||||
#
|
|
||||||
|
|
||||||
LINK = link
|
|
||||||
CC = cl
|
|
||||||
|
|
||||||
OUTDIR=.
|
|
||||||
MAKEFILE=NMakefile
|
|
||||||
SUBPROC_MAKEFILE=NMakefile
|
|
||||||
|
|
||||||
CFLAGS_any = /nologo /MT /W3 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H /D MOZILLA
|
|
||||||
CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb
|
|
||||||
CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
|
|
||||||
|
|
||||||
LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\
|
|
||||||
/INCREMENTAL:no /PDB:WinDebug/make.pdb /MACHINE:I386 \
|
|
||||||
/OUT:WinDebug/make.exe /DEBUG
|
|
||||||
LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\
|
|
||||||
/INCREMENTAL:no /MACHINE:I386 /OUT:WinRel/make.exe
|
|
||||||
|
|
||||||
all: config.h subproc Release Debug
|
|
||||||
|
|
||||||
#
|
|
||||||
# Make sure we build the subproc library first. It has it's own
|
|
||||||
# makefile. To be portable to Windows 95, we put the instructions
|
|
||||||
# on how to build the library into a batch file. On NT, we could
|
|
||||||
# simply have done foo && bar && dog, but this doesn't port.
|
|
||||||
#
|
|
||||||
subproc: w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib
|
|
||||||
|
|
||||||
w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib: w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c
|
|
||||||
subproc.bat $(SUBPROC_MAKEFILE) $(MAKE)
|
|
||||||
if exist WinDebug\make.exe erase WinDebug\make.exe
|
|
||||||
if exist WinRel\make.exe erase WinRel\make.exe
|
|
||||||
|
|
||||||
config.h: config.h.W32
|
|
||||||
copy $? $@
|
|
||||||
|
|
||||||
Release:
|
|
||||||
$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_release)" CFLAGS="$(CFLAGS_release)" OUTDIR=WinRel WinRel/make.exe
|
|
||||||
Debug:
|
|
||||||
$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_debug)" CFLAGS="$(CFLAGS_debug)" OUTDIR=WinDebug WinDebug/make.exe
|
|
||||||
|
|
||||||
clean:
|
|
||||||
if exist WinDebug\nul rmdir /s /q WinDebug
|
|
||||||
if exist WinRel\nul rmdir /s /q WinRel
|
|
||||||
if exist w32\subproc\WinDebug\nul rmdir /s /q w32\subproc\WinDebug
|
|
||||||
if exist w32\subproc\WinRel\nul rmdir /s /q w32\subproc\WinRel
|
|
||||||
if exist config.h erase config.h
|
|
||||||
erase *.pdb
|
|
||||||
|
|
||||||
$(OUTDIR):
|
|
||||||
if not exist .\$@\nul mkdir .\$@
|
|
||||||
|
|
||||||
LIBS = kernel32.lib user32.lib advapi32.lib
|
|
||||||
|
|
||||||
OBJS = \
|
|
||||||
$(OUTDIR)/ar.obj \
|
|
||||||
$(OUTDIR)/arscan.obj \
|
|
||||||
$(OUTDIR)/commands.obj \
|
|
||||||
$(OUTDIR)/default.obj \
|
|
||||||
$(OUTDIR)/dir.obj \
|
|
||||||
$(OUTDIR)/expand.obj \
|
|
||||||
$(OUTDIR)/file.obj \
|
|
||||||
$(OUTDIR)/function.obj \
|
|
||||||
$(OUTDIR)/getloadavg.obj \
|
|
||||||
$(OUTDIR)/getopt.obj \
|
|
||||||
$(OUTDIR)/getopt1.obj \
|
|
||||||
$(OUTDIR)/implicit.obj \
|
|
||||||
$(OUTDIR)/job.obj \
|
|
||||||
$(OUTDIR)/main.obj \
|
|
||||||
$(OUTDIR)/misc.obj \
|
|
||||||
$(OUTDIR)/read.obj \
|
|
||||||
$(OUTDIR)/remake.obj \
|
|
||||||
$(OUTDIR)/remote-stub.obj \
|
|
||||||
$(OUTDIR)/rule.obj \
|
|
||||||
$(OUTDIR)/signame.obj \
|
|
||||||
$(OUTDIR)/variable.obj \
|
|
||||||
$(OUTDIR)/version.obj \
|
|
||||||
$(OUTDIR)/vpath.obj \
|
|
||||||
$(OUTDIR)/glob.obj \
|
|
||||||
$(OUTDIR)/fnmatch.obj \
|
|
||||||
$(OUTDIR)/dirent.obj \
|
|
||||||
$(OUTDIR)/pathstuff.obj
|
|
||||||
|
|
||||||
$(OUTDIR)/make.exe: $(OUTDIR) $(OBJS)
|
|
||||||
$(LINK) @<<
|
|
||||||
$(LDFLAGS) $(LIBS) $(OBJS)
|
|
||||||
<<
|
|
||||||
|
|
||||||
.c{$(OUTDIR)}.obj:
|
|
||||||
$(CC) $(CFLAGS) /c $<
|
|
||||||
|
|
||||||
$(OUTDIR)/glob.obj : glob/glob.c
|
|
||||||
$(CC) $(CFLAGS) /c $?
|
|
||||||
$(OUTDIR)/fnmatch.obj : glob/fnmatch.c
|
|
||||||
$(CC) $(CFLAGS) /c $?
|
|
||||||
$(OUTDIR)/dirent.obj : w32/compat/dirent.c
|
|
||||||
$(CC) $(CFLAGS) /c $?
|
|
||||||
$(OUTDIR)/pathstuff.obj : w32/pathstuff.c
|
|
||||||
$(CC) $(CFLAGS) /c $?
|
|
||||||
|
|
||||||
# --------------- DEPENDENCIES
|
|
||||||
#
|
|
||||||
$(OUTDIR)/alloca.obj: alloca.c config.h
|
|
||||||
$(OUTDIR)/ar.obj: ar.c make.h config.h gettext.h filedef.h dep.h glob/fnmatch.h
|
|
||||||
$(OUTDIR)/arscan.obj: arscan.c make.h config.h gettext.h
|
|
||||||
$(OUTDIR)/commands.obj: commands.c make.h config.h gettext.h dep.h filedef.h \
|
|
||||||
variable.h job.h commands.h
|
|
||||||
$(OUTDIR)/default.obj: default.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h
|
|
||||||
$(OUTDIR)/dir.obj: dir.c make.h config.h gettext.h glob/glob.h
|
|
||||||
$(OUTDIR)/expand.obj: expand.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
variable.h rule.h
|
|
||||||
$(OUTDIR)/file.obj: file.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h
|
|
||||||
$(OUTDIR)/function.obj: function.c make.h config.h gettext.h filedef.h variable.h \
|
|
||||||
dep.h job.h commands.h debug.h
|
|
||||||
$(OUTDIR)/getloadavg.obj: getloadavg.c config.h
|
|
||||||
$(OUTDIR)/getopt.obj: getopt.c config.h gettext.h getopt.h
|
|
||||||
$(OUTDIR)/getopt1.obj: getopt1.c config.h getopt.h
|
|
||||||
$(OUTDIR)/gettext.obj: gettext.c config.h gettext.h
|
|
||||||
$(OUTDIR)/implicit.obj: implicit.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
debug.h
|
|
||||||
$(OUTDIR)/job.obj: job.c make.h config.h gettext.h job.h debug.h filedef.h \
|
|
||||||
commands.h variable.h
|
|
||||||
$(OUTDIR)/main.obj: main.c make.h config.h gettext.h dep.h filedef.h variable.h \
|
|
||||||
job.h commands.h rule.h debug.h getopt.h
|
|
||||||
$(OUTDIR)/misc.obj: misc.c make.h config.h gettext.h dep.h debug.h
|
|
||||||
$(OUTDIR)/read.obj: read.c make.h config.h gettext.h glob/glob.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h rule.h debug.h
|
|
||||||
$(OUTDIR)/remake.obj: remake.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
dep.h variable.h debug.h
|
|
||||||
$(OUTDIR)/remote-stub.obj: remote-stub.c make.h config.h gettext.h filedef.h job.h \
|
|
||||||
commands.h
|
|
||||||
$(OUTDIR)/rule.obj: rule.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
$(OUTDIR)/signame.obj: signame.c make.h config.h gettext.h signame.h
|
|
||||||
$(OUTDIR)/variable.obj: variable.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
$(OUTDIR)/version.obj: version.c config.h
|
|
||||||
$(OUTDIR)/vpath.obj: vpath.c make.h config.h gettext.h filedef.h variable.h
|
|
||||||
|
|
||||||
@ -1,134 +0,0 @@
|
|||||||
This directory contains the 3.79.1 release of GNU Make.
|
|
||||||
|
|
||||||
See the file NEWS for the user-visible changes from previous releases.
|
|
||||||
In addition, there have been bugs fixed.
|
|
||||||
|
|
||||||
Please check the system-specific notes below for any caveats related to
|
|
||||||
your operating system.
|
|
||||||
|
|
||||||
For general building and installation instructions, see the file INSTALL.
|
|
||||||
|
|
||||||
If you need to build GNU Make and have no other `make' program to use,
|
|
||||||
you can use the shell script `build.sh' instead. To do this, first run
|
|
||||||
`configure' as described in INSTALL. Then, instead of typing `make' to
|
|
||||||
build the program, type `sh build.sh'. This should compile the program
|
|
||||||
in the current directory. Then you will have a Make program that you can
|
|
||||||
use for `./make install', or whatever else.
|
|
||||||
|
|
||||||
Some systems' Make programs are broken and cannot process the Makefile for
|
|
||||||
GNU Make. If you get errors from your system's Make when building GNU
|
|
||||||
Make, try using `build.sh' instead.
|
|
||||||
|
|
||||||
|
|
||||||
GNU Make is free software. See the file COPYING for copying conditions.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
GNU make is fully documented in the GNU Make manual, which is contained
|
|
||||||
in this distribution as the file make.texinfo. You can also find
|
|
||||||
on-line and preformatted (PostScript and DVI) versions at the FSF's web
|
|
||||||
site. There is information there about ordering hardcopy documentation.
|
|
||||||
|
|
||||||
http://www.gnu.org/
|
|
||||||
http://www.gnu.org/doc/doc.html
|
|
||||||
http://www.gnu.org/manual/manual.html
|
|
||||||
|
|
||||||
You can also find the latest versions of GNU Make from there.
|
|
||||||
|
|
||||||
|
|
||||||
Bug Reporting
|
|
||||||
-------------
|
|
||||||
|
|
||||||
You can send GNU make bug reports to <bug-make@gnu.org>. Please see the
|
|
||||||
section of the GNU make manual entitled `Problems and Bugs' for
|
|
||||||
information on submitting useful and complete bug reports.
|
|
||||||
|
|
||||||
You can also use the FSF's online bug tracking system to submit new
|
|
||||||
problem reports or search for existing ones. A web interface is
|
|
||||||
available here:
|
|
||||||
|
|
||||||
http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl
|
|
||||||
|
|
||||||
Use the Category "make".
|
|
||||||
|
|
||||||
If you need help using GNU make, try these forums:
|
|
||||||
|
|
||||||
help-make@gnu.org
|
|
||||||
help-utils@gnu.org
|
|
||||||
news:gnu.utils.help
|
|
||||||
news:gnu.utils.bug
|
|
||||||
|
|
||||||
|
|
||||||
CVS Access
|
|
||||||
----------
|
|
||||||
|
|
||||||
The GNU make source repository is available via anonymous CVS from the
|
|
||||||
GNU Subversions CVS server; look here for details:
|
|
||||||
|
|
||||||
http://www.gnu.org/software/devel.html
|
|
||||||
|
|
||||||
Please note: you won't be able to build GNU make from CVS without
|
|
||||||
installing appropriate maintainer's tools, such as automake, autoconf,
|
|
||||||
GNU make, and GCC. There are no instructions on this included with the
|
|
||||||
tree, so you must be familiar with the installation and use of these
|
|
||||||
tools. We make no guarantees about the contents or quality of the
|
|
||||||
latest code in the CVS repository: it is not unheard of for code that is
|
|
||||||
known to be broken to be checked in. Use at your own risk.
|
|
||||||
|
|
||||||
|
|
||||||
Ports
|
|
||||||
-----
|
|
||||||
|
|
||||||
- See README.customs for details on integrating GNU make with the
|
|
||||||
Customs distributed build environment from the Pmake distribution.
|
|
||||||
|
|
||||||
- See readme.vms for details about GNU Make on OpenVMS.
|
|
||||||
|
|
||||||
- See README.Amiga for details about GNU Make on AmigaDOS.
|
|
||||||
|
|
||||||
- See README.W32 for details about GNU Make on Windows NT, 95, or 98.
|
|
||||||
|
|
||||||
- See README.DOS for compilation instructions on MS-DOS and MS-Windows
|
|
||||||
using DJGPP tools.
|
|
||||||
|
|
||||||
A precompiled binary of the MSDOS port of GNU Make is available as part
|
|
||||||
of DJGPP; see the WWW page http://www.delorie.com/djgpp/ for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
Please note there are two _separate_ ports of GNU make for Microsoft
|
|
||||||
systems: a native Windows tool built with (for example) MSVC or Cygwin,
|
|
||||||
and a DOS-based tool built with DJGPP. Please be sure you are looking
|
|
||||||
at the right README!
|
|
||||||
|
|
||||||
|
|
||||||
System-specific Notes
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
It has been reported that the XLC 1.2 compiler on AIX 3.2 is buggy such
|
|
||||||
that if you compile make with `cc -O' on AIX 3.2, it will not work correctly.
|
|
||||||
It is said that using `cc' without `-O' does work.
|
|
||||||
|
|
||||||
One area that is often a problem in configuration and porting is the code
|
|
||||||
to check the system's current load average. To make it easier to test and
|
|
||||||
debug this code, you can do `make check-loadavg' to see if it works
|
|
||||||
properly on your system. (You must run `configure' beforehand, but you
|
|
||||||
need not build Make itself to run this test.)
|
|
||||||
|
|
||||||
Another potential source of porting problems is the support for large
|
|
||||||
files (LFS) in configure for those operating systems that provide it.
|
|
||||||
Please report any bugs that you find in this area. If you run into
|
|
||||||
difficulties, then as a workaround you should be able to disable LFS by
|
|
||||||
adding the `--disable-largefile' option to the `configure' script.
|
|
||||||
|
|
||||||
On systems that support micro- and nano-second timestamp values and
|
|
||||||
where stat(2) provides this information, GNU make will use it when
|
|
||||||
comparing timestamps to get the most accurate possible result. However,
|
|
||||||
at the moment there is no system call (that I'm aware of) that will
|
|
||||||
allow you to *set* a timestamp to a micro- or nano-second granularity.
|
|
||||||
This means that "cp -p" and other similar tools (tar, etc.) cannot
|
|
||||||
exactly duplicate timestamps with micro- and nano-second granularity.
|
|
||||||
If your build system contains rules that depend on proper behavior of
|
|
||||||
tools like "cp -p", you should configure make to not use micro- and
|
|
||||||
nano-second timestamps with the --disable-nsec-timestamps flag.
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
Short: Port of GNU make with SAS/C (no ixemul.library required)
|
|
||||||
Author: GNU, Amiga port by Aaron "Optimizer" Digulla
|
|
||||||
Uploader: Aaron "Optimizer" Digulla (digulla@fh-konstanz.de)
|
|
||||||
Type: dev/c
|
|
||||||
|
|
||||||
This is a pure Amiga port of GNU make. It needs no extra libraries or
|
|
||||||
anything. It has the following features (in addition to any features of
|
|
||||||
GNU make):
|
|
||||||
|
|
||||||
- Runs Amiga-Commands with SystemTags() (Execute)
|
|
||||||
- Can run multi-line statements
|
|
||||||
- Allows to use Device-Names in targets:
|
|
||||||
|
|
||||||
c:make : make.o
|
|
||||||
|
|
||||||
is ok. To distinguish between device-names and target : or ::, MAKE
|
|
||||||
looks for spaces. If there are any around :, it's taken as a target
|
|
||||||
delimiter, if there are none, it's taken as the name of a device. Note
|
|
||||||
that "make:make.o" tries to create "make.o" on the device "make:".
|
|
||||||
- Replaces @@ by a newline in any command line:
|
|
||||||
|
|
||||||
if exists make @@\
|
|
||||||
delete make.bak quiet @@\
|
|
||||||
rename make make.bak @@\
|
|
||||||
endif @@\
|
|
||||||
$(CC) Link Make.o To make
|
|
||||||
|
|
||||||
works. Note that the @@ must stand alone (ie. "make@@\" is illegal).
|
|
||||||
Also be carefull that there is a space after the "\" (ie, at the
|
|
||||||
beginning of the next line).
|
|
||||||
- Can be made resident to save space and time
|
|
||||||
- Amiga specific wildcards can be used in $(wildcard ...)
|
|
||||||
|
|
||||||
BUGS:
|
|
||||||
- The line
|
|
||||||
|
|
||||||
dummy.h : src/*.c
|
|
||||||
|
|
||||||
tries to make dummy.h from "src/*.c" (ie. no wildcard-expansion takes
|
|
||||||
place). You have to use "$(wildcard src/*.c)" instead.
|
|
||||||
|
|
||||||
COMPILING FROM SCRATCH
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
To recompile, you need SAS/C 6.51. make itself is not neccessary, there
|
|
||||||
is an smakefile.
|
|
||||||
|
|
||||||
1. Copy config.ami to config.h
|
|
||||||
2. If you use make to compie, copy Makefile.ami to Makefile and
|
|
||||||
glob/Makefile.ami to glob/Makefile. Copy make into the current
|
|
||||||
directory.
|
|
||||||
|
|
||||||
3. Run smake/make
|
|
||||||
|
|
||||||
INSTALLATION
|
|
||||||
|
|
||||||
Copy make somewhere in your search path (eg. sc:c or sc:bin).
|
|
||||||
If you plan to use recursive makes, install make resident:
|
|
||||||
|
|
||||||
Resident make Add
|
|
||||||
|
|
||||||
@ -1,323 +0,0 @@
|
|||||||
Port of GNU Make to 32-bit protected mode on MSDOS and MS-Windows.
|
|
||||||
|
|
||||||
Builds with DJGPP v2 port of GNU C/C++ compiler and utilities.
|
|
||||||
|
|
||||||
|
|
||||||
New (since 3.74) DOS-specific features:
|
|
||||||
|
|
||||||
1. Supports long filenames when run from DOS box on Windows 9x.
|
|
||||||
|
|
||||||
2. Supports both stock DOS COMMAND.COM and Unix-style shells
|
|
||||||
(details in ``Notes'' below).
|
|
||||||
|
|
||||||
3. Supports DOS drive letters in dependencies and pattern rules.
|
|
||||||
|
|
||||||
4. Better support for DOS-style backslashes in pathnames (but see
|
|
||||||
``Notes'' below).
|
|
||||||
|
|
||||||
5. The $(shell) built-in can run arbitrary complex commands,
|
|
||||||
including pipes and redirection, even when COMMAND.COM is your
|
|
||||||
shell.
|
|
||||||
|
|
||||||
6. Can be built without floating-point code (see below).
|
|
||||||
|
|
||||||
7. Supports signals in child programs and restores the original
|
|
||||||
directory if the child was interrupted.
|
|
||||||
|
|
||||||
8. Can be built without (a previous version of) Make.
|
|
||||||
|
|
||||||
9. The build process requires only standard tools. (Optional
|
|
||||||
targets like "install:" and "clean:" still need additional
|
|
||||||
programs, though, see below.)
|
|
||||||
|
|
||||||
10. Beginning with v3.78, the test suite works in the DJGPP
|
|
||||||
environment (requires Perl and auxiliary tools; see below).
|
|
||||||
|
|
||||||
|
|
||||||
To install a binary distribution:
|
|
||||||
|
|
||||||
Simply unzip the makNNNb.zip file (where NNN is the version number)
|
|
||||||
preserving the directory structure (-d switch if you use PKUNZIP).
|
|
||||||
If you are installing Make on Windows 9X or Windows 2000, use an
|
|
||||||
unzip program that supports long filenames in zip files. After
|
|
||||||
unzipping, make sure the directory with make.exe is on your PATH,
|
|
||||||
and that's all you need to use Make.
|
|
||||||
|
|
||||||
|
|
||||||
To build from sources:
|
|
||||||
|
|
||||||
1. Unzip the archive, preserving the directory structure (-d switch
|
|
||||||
if you use PKUNZIP). If you build Make on Windows 9X or Windows
|
|
||||||
2000, use an unzip program that supports long filenames in zip
|
|
||||||
files.
|
|
||||||
|
|
||||||
If you are unpacking an official GNU source distribution, use
|
|
||||||
either DJTAR (which is part of the DJGPP development
|
|
||||||
environment), or the DJGPP port of GNU Tar.
|
|
||||||
|
|
||||||
2. Invoke the `configure.bat' batch file.
|
|
||||||
|
|
||||||
If you are building Make in-place, i.e. in the same directory
|
|
||||||
where its sources are kept, just type "configure.bat" and press
|
|
||||||
[Enter]. Otherwise, you need to supply the path to the source
|
|
||||||
directory as an argument to the batch file, like this:
|
|
||||||
|
|
||||||
c:\djgpp\gnu\make-3.79.1\configure.bat c:/djgpp/gnu/make-3.79.1
|
|
||||||
|
|
||||||
Note the forward slashes in the source path argument: you MUST
|
|
||||||
use them here.
|
|
||||||
|
|
||||||
3. If configure.bat doesn't find a working Make, it will suggest to
|
|
||||||
use the `dosbuild.bat' batch file to build Make. Either do as it
|
|
||||||
suggests or install another Make program (a pre-compiled binary
|
|
||||||
should be available from the usual DJGPP sites) and rerun
|
|
||||||
configure.bat.
|
|
||||||
|
|
||||||
4. If you will need to run Make on machines without an FPU, you
|
|
||||||
might consider building a version of Make which doesn't issue
|
|
||||||
floating-point instructions (they don't help much on MSDOS
|
|
||||||
anyway). To this end, edit the Makefile created by
|
|
||||||
configure.bat and add -DNO_FLOAT to the value of CPPFLAGS.
|
|
||||||
|
|
||||||
5. Invoke Make.
|
|
||||||
|
|
||||||
If you are building from outside of the source directory, you
|
|
||||||
need to tell Make where the sources are, like this:
|
|
||||||
|
|
||||||
make srcdir=c:/djgpp/gnu/make-3.79.1
|
|
||||||
|
|
||||||
(configure.bat will tell you this when it finishes). You MUST
|
|
||||||
use a full, not relative, name of the source directory here, or
|
|
||||||
else Make might fail.
|
|
||||||
|
|
||||||
6. After Make finishes, if you have a Unix-style shell installed,
|
|
||||||
you can use the `install' target to install the package. You
|
|
||||||
will also need GNU Fileutils and GNU Sed for this (they should
|
|
||||||
be available from the DJGPP sites).
|
|
||||||
|
|
||||||
By default, GNU make will install into your DJGPP installation
|
|
||||||
area. If you wish to use a different directory, override the
|
|
||||||
DESTDIR variable when invoking "make install", like this:
|
|
||||||
|
|
||||||
make install DESTDIR=c:/other/dir
|
|
||||||
|
|
||||||
This causes the make executable to be placed in c:/other/dir/bin,
|
|
||||||
the man pages in c:/other/dir/man, etc.
|
|
||||||
|
|
||||||
Without a Unix-style shell, you will have to install programs
|
|
||||||
and the docs manually. Copy make.exe to a directory on your
|
|
||||||
PATH, make.i* info files to your Info directory, and update the
|
|
||||||
file `dir' in your Info directory by adding the following item
|
|
||||||
to the main menu:
|
|
||||||
|
|
||||||
* Make: (make.info). The GNU make utility.
|
|
||||||
|
|
||||||
If you have the `install-info' program (from the GNU Texinfo
|
|
||||||
package), it will do that for you if you invoke it like this:
|
|
||||||
|
|
||||||
install-info --info-dir=c:/djgpp/info c:/djgpp/info/make.info
|
|
||||||
|
|
||||||
(If your Info directory is other than C:\DJGPP\INFO, change this
|
|
||||||
command accordingly.)
|
|
||||||
|
|
||||||
7. The `clean' targets also require Unix-style shell, and GNU Sed
|
|
||||||
and `rm' programs (the latter from Fileutils).
|
|
||||||
|
|
||||||
8. To run the test suite, type "make check". This requires a Unix
|
|
||||||
shell (I used the DJGPP port of Bash 2.03), Perl, Sed, Fileutils
|
|
||||||
and Sh-utils.
|
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
-----
|
|
||||||
|
|
||||||
1. The shell issue.
|
|
||||||
|
|
||||||
This is probably the most significant improvement, first
|
|
||||||
introduced in the port of GNU Make 3.75.
|
|
||||||
|
|
||||||
The original behavior of GNU Make is to invoke commands
|
|
||||||
directly, as long as they don't include characters special to
|
|
||||||
the shell or internal shell commands, because that is faster.
|
|
||||||
When shell features like redirection or filename wildcards are
|
|
||||||
involved, Make calls the shell.
|
|
||||||
|
|
||||||
This port supports both DOS shells (the stock COMMAND.COM and its
|
|
||||||
4DOS/NDOS replacements), and Unix-style shells (tested with the
|
|
||||||
venerable Stewartson's `ms_sh' 2.3 and the DJGPP port of `bash' by
|
|
||||||
Daisuke Aoyama <jack@st.rim.or.jp>).
|
|
||||||
|
|
||||||
When the $SHELL variable points to a Unix-style shell, Make
|
|
||||||
works just like you'd expect on Unix, calling the shell for any
|
|
||||||
command that involves characters special to the shell or
|
|
||||||
internal shell commands. The only difference is that, since
|
|
||||||
there is no standard way to pass command lines longer than the
|
|
||||||
infamous DOS 126-character limit, this port of Make writes the
|
|
||||||
command line to a temporary disk file and then invokes the shell
|
|
||||||
on that file.
|
|
||||||
|
|
||||||
If $SHELL points to a DOS-style shell, however, Make will not
|
|
||||||
call it automatically, as it does with Unix shells. Stock
|
|
||||||
COMMAND.COM is too dumb and would unnecessarily limit the
|
|
||||||
functionality of Make. For example, you would not be able to
|
|
||||||
use long command lines in commands that use redirection or
|
|
||||||
pipes. Therefore, when presented with a DOS shell, this port of
|
|
||||||
Make will emulate most of the shell functionality, like
|
|
||||||
redirection and pipes, and shall only call the shell when a
|
|
||||||
batch file or a command internal to the shell is invoked. (Even
|
|
||||||
when a command is an internal shell command, Make will first
|
|
||||||
search the $PATH for it, so that if a Makefile calls `mkdir',
|
|
||||||
you can install, say, a port of GNU `mkdir' and have it called
|
|
||||||
in that case.)
|
|
||||||
|
|
||||||
The key to all this is the extended functionality of `spawn' and
|
|
||||||
`system' functions from the DJGPP library; this port just calls
|
|
||||||
`system' where it would invoke the shell on Unix. The most
|
|
||||||
important aspect of these functions is that they use a special
|
|
||||||
mechanism to pass long (up to 16KB) command lines to DJGPP
|
|
||||||
programs. In addition, `system' emulates some internal
|
|
||||||
commands, like `cd' (so that you can now use forward slashes
|
|
||||||
with it, and can also change the drive if the directory is on
|
|
||||||
another drive). Another aspect worth mentioning is that you can
|
|
||||||
call Unix shell scripts directly, provided that the shell whose
|
|
||||||
name is mentioned on the first line of the script is installed
|
|
||||||
anywhere along the $PATH. It is impossible to tell here
|
|
||||||
everything about these functions; refer to the DJGPP library
|
|
||||||
reference for more details.
|
|
||||||
|
|
||||||
The $(shell) built-in is implemented in this port by calling
|
|
||||||
`popen'. Since `popen' calls `system', the above considerations
|
|
||||||
are valid for $(shell) as well. In particular, you can put
|
|
||||||
arbitrary complex commands, including pipes and redirection,
|
|
||||||
inside $(shell), which is in many cases a valid substitute for
|
|
||||||
the Unix-style command substitution (`command`) feature.
|
|
||||||
|
|
||||||
|
|
||||||
2. "SHELL=/bin/sh" -- or is it?
|
|
||||||
|
|
||||||
Many Unix Makefiles include a line which sets the SHELL, for
|
|
||||||
those versions of Make which don't have this as the default.
|
|
||||||
Since many DOS systems don't have `sh' installed (in fact, most
|
|
||||||
of them don't even have a `/bin' directory), this port takes
|
|
||||||
such directives with a grain of salt. It will only honor such a
|
|
||||||
directive if the basename of the shell name (like `sh' in the
|
|
||||||
above example) can indeed be found in the directory that is
|
|
||||||
mentioned in the SHELL= line (`/bin' in the above example), or
|
|
||||||
in the current working directory, or anywhere on the $PATH (in
|
|
||||||
that order). If the basename doesn't include a filename
|
|
||||||
extension, Make will look for any known extension that indicates
|
|
||||||
an executable file (.exe, .com, .bat, .btm, .sh, and even .sed
|
|
||||||
and .pl). If any such file is found, then $SHELL will be
|
|
||||||
defined to the exact pathname of that file, and that shell will
|
|
||||||
hence be used for the rest of processing. But if the named
|
|
||||||
shell is *not* found, the line which sets it will be effectively
|
|
||||||
ignored, leaving the value of $SHELL as it was before. Since a
|
|
||||||
lot of decisions that this port makes depend on the gender of
|
|
||||||
the shell, I feel it doesn't make any sense to tailor Make's
|
|
||||||
behavior to a shell which is nowhere to be found.
|
|
||||||
|
|
||||||
Note that the above special handling of "SHELL=" only happens
|
|
||||||
for Makefiles; if you set $SHELL in the environment or on the
|
|
||||||
Make command line, you are expected to give the complete
|
|
||||||
pathname of the shell, including the filename extension.
|
|
||||||
|
|
||||||
The default value of $SHELL is computed as on Unix (see the Make
|
|
||||||
manual for details), except that if $SHELL is not defined in the
|
|
||||||
environment, $COMSPEC is used. Also, if an environment variable
|
|
||||||
named $MAKESHELL is defined, it takes precedence over both
|
|
||||||
$COMSPEC and $SHELL. Note that, unlike Unix, $SHELL in the
|
|
||||||
environment *is* used to set the shell (since on MSDOS, it's
|
|
||||||
unlikely that the interactive shell will not be suitable for
|
|
||||||
Makefile processing).
|
|
||||||
|
|
||||||
The bottom line is that you can now write Makefiles where some
|
|
||||||
of the targets require a real (i.e. Unix-like) shell, which will
|
|
||||||
nevertheless work when such shell is not available (provided, of
|
|
||||||
course, that the commands which should always work, don't
|
|
||||||
require such a shell). More important, you can convert Unix
|
|
||||||
Makefiles to MSDOS and leave the line which sets the shell
|
|
||||||
intact, so that people who do have Unixy shell could use it for
|
|
||||||
targets which aren't converted to DOS (like `install' and
|
|
||||||
`uninstall', for example).
|
|
||||||
|
|
||||||
|
|
||||||
3. Default directories.
|
|
||||||
|
|
||||||
GNU Make knows about standard directories where it searches for
|
|
||||||
library and include files mentioned in the Makefile. Since
|
|
||||||
MSDOS machines don't have standard places for these, this port
|
|
||||||
will search ${DJDIR}/lib and ${DJDIR}/include respectively.
|
|
||||||
$DJDIR is defined automatically by the DJGPP startup code as the
|
|
||||||
root of the DJGPP installation tree (unless you've tampered with
|
|
||||||
the DJGPP.ENV file). This should provide reasonable default
|
|
||||||
values, unless you moved parts of DJGPP to other directories.
|
|
||||||
|
|
||||||
|
|
||||||
4. Letter-case in filenames.
|
|
||||||
|
|
||||||
If you run Make on Windows 9x, you should be aware of the
|
|
||||||
letter-case issue. Make is internally case-sensitive, but all
|
|
||||||
file operations are case-insensitive on Windows 9x, so
|
|
||||||
e.g. files `FAQ', `faq' and `Faq' all refer to the same file, as
|
|
||||||
far as Windows is concerned. The underlying DJGPP C library
|
|
||||||
functions honor the letter-case of the filenames they get from
|
|
||||||
the OS, except that by default, they down-case 8+3 DOS filenames
|
|
||||||
which are stored in upper case in the directory and would break
|
|
||||||
many Makefiles otherwise. (The details of which filenames are
|
|
||||||
converted to lower case are explained in the DJGPP libc docs,
|
|
||||||
under the `_preserve_fncase' and `_lfn_gen_short_fname'
|
|
||||||
functions, but as a thumb rule, any filename that is stored in
|
|
||||||
upper case in the directory, is a valid DOS 8+3 filename and
|
|
||||||
doesn't include characters invalid on MSDOS FAT filesystems,
|
|
||||||
will be automatically down-cased.) User reports that I have
|
|
||||||
indicate that this default behavior is generally what you'd
|
|
||||||
expect; however, your input is most welcome.
|
|
||||||
|
|
||||||
In any case, if you hit a situation where you must force Make to
|
|
||||||
get the 8+3 DOS filenames in upper case, set FNCASE=y in the
|
|
||||||
environment or in the Makefile.
|
|
||||||
|
|
||||||
|
|
||||||
5. DOS-style pathnames.
|
|
||||||
|
|
||||||
There are a lot of places throughout the program sources which
|
|
||||||
make implicit assumptions about the pathname syntax. In
|
|
||||||
particular, the directories are assumed to be separated by `/',
|
|
||||||
and any pathname which doesn't begin with a `/' is assumed to be
|
|
||||||
relative to the current directory. This port attempts to
|
|
||||||
support DOS-style pathnames which might include the drive letter
|
|
||||||
and use backslashes instead of forward slashes. However, this
|
|
||||||
support is not complete; I feel that pursuing this support too
|
|
||||||
far might break some more important features, particularly if
|
|
||||||
you use a Unix-style shell (where a backslash is a quote
|
|
||||||
character). I only consider support of backslashes desirable
|
|
||||||
because some Makefiles invoke non-DJGPP programs which don't
|
|
||||||
understand forward slashes. A notable example of such programs
|
|
||||||
is the standard programs which come with MSDOS. Otherwise, you
|
|
||||||
are advised to stay away from backslashes whenever possible. In
|
|
||||||
particular, filename globbing won't work on pathnames with
|
|
||||||
backslashes, because the GNU `glob' library doesn't support them
|
|
||||||
(backslash is special in filename wildcards, and I didn't want
|
|
||||||
to break that).
|
|
||||||
|
|
||||||
One feature which *does* work with backslashes is the filename-
|
|
||||||
related built-in functions such as $(dir), $(notdir), etc.
|
|
||||||
Drive letters in pathnames are also fully supported.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Bug reports:
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs that are clearly related to the MSDOS/DJGPP port should be
|
|
||||||
reported first on the comp.os.msdos.djgpp news group (if you cannot
|
|
||||||
post to Usenet groups, write to the DJGPP mailing list,
|
|
||||||
<djgpp@delorie.com>, which is an email gateway into the above news
|
|
||||||
group). For other bugs, please follow the procedure explained in
|
|
||||||
the "Bugs" chapter of the Info docs. If you don't have an Info
|
|
||||||
reader, look up that chapter in the `make.i1' file with any text
|
|
||||||
browser/editor.
|
|
||||||
|
|
||||||
|
|
||||||
Enjoy,
|
|
||||||
Eli Zaretskii <eliz@is.elta.co.il>
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
This directory contains the source files for the GNU make
|
|
||||||
that is used to build some components (e.g., NSPR) on Win32.
|
|
||||||
|
|
||||||
This GNU make is based on version 3.79.1. Its default shell
|
|
||||||
is shmsdos.exe, a lightweight shell written by Netscape engineers.
|
|
||||||
|
|
||||||
To build it, you need Microsoft Visual C++ and nmake. If
|
|
||||||
you want to change the build number, which is displayed by
|
|
||||||
the '-v' command line option, you can edit the value of the
|
|
||||||
macro BUILD_NUMBER in main.c. Then, issue the command:
|
|
||||||
nmake /f NMakefile
|
|
||||||
The outputs are WinDebug\make.exe and WinRel\make.exe.
|
|
||||||
Assuming you want to use the optmized executable file,
|
|
||||||
copy WinRel\make.exe to a directory on your Path and
|
|
||||||
rename it gmake.exe.
|
|
||||||
|
|
||||||
@ -1,241 +0,0 @@
|
|||||||
Port of GNU make to Windows NT and Windows 95
|
|
||||||
Builds natively with MSVC 2.x or MSVC 4.x compilers.
|
|
||||||
Should also build fine with MSVC 5.x and 6.x (though not confirmed).
|
|
||||||
|
|
||||||
This Windows 32-bit port of GNU make is maintained primarily by Rob
|
|
||||||
Tulloh, who is also the author of this README.
|
|
||||||
|
|
||||||
To build with nmake on Windows NT, Windows 95, or Windows 98:
|
|
||||||
|
|
||||||
1. Make sure cl.exe is in your %Path%. Example:
|
|
||||||
|
|
||||||
set Path=%Path%;c:/msdev/bin
|
|
||||||
|
|
||||||
2. Make sure %include% is set to msvc include directory. Example:
|
|
||||||
|
|
||||||
set include=c:/msdev/include
|
|
||||||
|
|
||||||
3. Make sure %lib% is set to msvc lib directory. Example:
|
|
||||||
|
|
||||||
set lib=c:/msdev/lib
|
|
||||||
|
|
||||||
4. nmake /f NMakefile
|
|
||||||
|
|
||||||
|
|
||||||
A short cut to steps 1, 2, and 3 is to run VCVARS32.bat before
|
|
||||||
invoking namke. For example:
|
|
||||||
|
|
||||||
c:
|
|
||||||
cd \msdev\bin
|
|
||||||
VCVARS32.bat
|
|
||||||
cd \path\to\make-3.79.1
|
|
||||||
nmake /f NMakefile
|
|
||||||
|
|
||||||
There is a bat file (build_w32.bat) for folks who have fear of nmake.
|
|
||||||
|
|
||||||
Outputs:
|
|
||||||
|
|
||||||
WinDebug/make.exe
|
|
||||||
WinRel/make.exe
|
|
||||||
|
|
||||||
|
|
||||||
-- Notes/Caveats --
|
|
||||||
|
|
||||||
GNU make on Windows 32-bit platforms:
|
|
||||||
|
|
||||||
This version of make is ported natively to Windows32 platforms
|
|
||||||
(Windows NT 3.51, Windows NT 4.0, Windows 95, and Windows 98). It
|
|
||||||
does not rely on any 3rd party software or add-on packages for
|
|
||||||
building. The only thing needed is a version of Visual C++,
|
|
||||||
which is the predominant compiler used on Windows32 platforms.
|
|
||||||
|
|
||||||
Do not confuse this port of GNU make with other Windows32 projects
|
|
||||||
which provide a GNU make binary. These are separate projects
|
|
||||||
and are not connected to this port effort.
|
|
||||||
|
|
||||||
GNU make and sh.exe:
|
|
||||||
|
|
||||||
This port prefers you have a working sh.exe somewhere on your
|
|
||||||
system. If you don't have sh.exe, the port falls back to
|
|
||||||
MSDOS mode for launching programs (via a batch file).
|
|
||||||
The MSDOS mode style execution has not been tested that
|
|
||||||
carefully though (The author uses GNU bash as sh.exe).
|
|
||||||
|
|
||||||
There are very few true ports of Bourne shell for NT right now.
|
|
||||||
There is a version of GNU bash available from Cygnus "Cygwin"
|
|
||||||
porting effort (http://sourceware.cygnus.com/cygwin).
|
|
||||||
Other possibilities are the MKS version of sh.exe, or building
|
|
||||||
your own with a package like NutCracker (DataFocus) or Portage
|
|
||||||
(Consensys).
|
|
||||||
|
|
||||||
GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL):
|
|
||||||
|
|
||||||
Some versions of Bourne shell does not behave well when invoked
|
|
||||||
as 'sh -c' from CreateProcess(). The main problem is they seem
|
|
||||||
to have a hard time handling quoted strings correctly. This can
|
|
||||||
be circumvented by writing commands to be executed to a batch
|
|
||||||
file and then executing the command by calling 'sh file'.
|
|
||||||
|
|
||||||
To work around this difficulty, this version of make supports
|
|
||||||
a batch mode. When BATCH_MODE_ONLY_SHELL is defined at compile
|
|
||||||
time, make forces all command lines to be executed via script
|
|
||||||
files instead of by command line.
|
|
||||||
|
|
||||||
A native Windows32 system with no Bourne shell will also run
|
|
||||||
in batch mode. All command lines will be put into batch files
|
|
||||||
and executed via $(COMSPEC) (%COMSPEC%).
|
|
||||||
|
|
||||||
GNU make and Cygnus GNU Windows32 tools:
|
|
||||||
|
|
||||||
Good news! Make now has native support for Cygwin sh. To enable,
|
|
||||||
define the HAVE_CYGWIN_SHELL in config.h and rebuild make
|
|
||||||
from scratch. This version of make tested with B20.1 of Cygwin.
|
|
||||||
Do not define BATCH_MODE_ONLY_SHELL if you use HAVE_CYGWIN_SHELL.
|
|
||||||
|
|
||||||
GNU make and the MKS shell:
|
|
||||||
|
|
||||||
There is now semi-official support for the MKS shell. To turn this
|
|
||||||
support on, define HAVE_MKS_SHELL in the config.h.W32 before you
|
|
||||||
build make. Do not define BATCH_MODE_ONLY_SHELL if you turn
|
|
||||||
on HAVE_MKS_SHELL.
|
|
||||||
|
|
||||||
GNU make handling of drive letters in pathnames (PATH, vpath, VPATH):
|
|
||||||
|
|
||||||
There is a caveat that should be noted with respect to handling
|
|
||||||
single character pathnames on Windows systems. When colon is
|
|
||||||
used in PATH variables, make tries to be smart about knowing when
|
|
||||||
you are using colon as a separator versus colon as a drive
|
|
||||||
letter. Unfortunately, something as simple as the string 'x:/'
|
|
||||||
could be interpreted 2 ways: (x and /) or (x:/).
|
|
||||||
|
|
||||||
Make chooses to interpret a letter plus colon (e.g. x:/) as a
|
|
||||||
drive letter pathname. If it is necessary to use single
|
|
||||||
character directories in paths (VPATH, vpath, Path, PATH), the
|
|
||||||
user must do one of two things:
|
|
||||||
|
|
||||||
a. Use semicolon as the separator to disambiguate colon. For
|
|
||||||
example use 'x;/' if you want to say 'x' and '/' are
|
|
||||||
separate components.
|
|
||||||
|
|
||||||
b. Qualify the directory name so that there is more than
|
|
||||||
one character in the path(s) used. For example, none
|
|
||||||
of these settings are ambiguous:
|
|
||||||
|
|
||||||
./x:./y
|
|
||||||
/some/path/x:/some/path/y
|
|
||||||
x:/some/path/x:x:/some/path/y
|
|
||||||
|
|
||||||
Please note that you are free to mix colon and semi-colon in the
|
|
||||||
specification of paths. Make is able to figure out the intended
|
|
||||||
result and convert the paths internally to the format needed
|
|
||||||
when interacting with the operating system.
|
|
||||||
|
|
||||||
You are encouraged to use colon as the separator character.
|
|
||||||
This should ease the pain of deciding how to handle various path
|
|
||||||
problems which exist between platforms. If colon is used on
|
|
||||||
both Unix and Windows systems, then no ifdef'ing will be
|
|
||||||
necessary in the makefile source.
|
|
||||||
|
|
||||||
GNU make test suite:
|
|
||||||
|
|
||||||
I verified all functionality with a slightly modified version
|
|
||||||
of make-test-3.79.1 (modifications to get test suite to run
|
|
||||||
on Windows NT). All tests pass in an environment that includes
|
|
||||||
sh.exe. Tests were performed on both Windows NT and Windows 95.
|
|
||||||
|
|
||||||
Building GNU make on Windows NT and Windows 95/98 with Microsoft Visual C:
|
|
||||||
|
|
||||||
I did not provide a Visual C project file with this port as
|
|
||||||
the project file would not be considered freely distributable
|
|
||||||
(or so I think). It is easy enough to create one, though, if
|
|
||||||
you know how to use Visual C.
|
|
||||||
|
|
||||||
I build the program statically to avoid problems locating DLL's
|
|
||||||
on machines that may not have MSVC runtime installed. If you
|
|
||||||
prefer, you can change make to build with shared libraries by
|
|
||||||
changing /MT to /MD in the NMakefile (or in build_w32.bat).
|
|
||||||
|
|
||||||
The program has not been built for non-Intel architectures (yet).
|
|
||||||
|
|
||||||
I have not tried to build with any other compilers than MSVC. I
|
|
||||||
have heard that this is possible though so don't be afraid to
|
|
||||||
notify me of your successes!
|
|
||||||
|
|
||||||
Pathnames and white space:
|
|
||||||
|
|
||||||
Unlike Unix, Windows 95/NT systems encourage pathnames which
|
|
||||||
contain white space (e.g. C:\Program Files\). These sorts of pathnames
|
|
||||||
are legal under Unix too, but are never encouraged. There is
|
|
||||||
at least one place in make (VPATH/vpath handling) where paths
|
|
||||||
containing white space will simply not work. There may be others
|
|
||||||
too. I chose to not try and port make in such a way so that
|
|
||||||
these sorts of paths could be handled. I offer these suggestions
|
|
||||||
as workarounds:
|
|
||||||
|
|
||||||
1. Use 8.3 notation
|
|
||||||
2. Rename the directory so it does not contain white space.
|
|
||||||
|
|
||||||
If you are unhappy with this choice, this is free software
|
|
||||||
and you are free to take a crack at making this work. The code
|
|
||||||
in w32/pathstuff.c and vpath.c would be the places to start.
|
|
||||||
|
|
||||||
Pathnames and Case insensitivity:
|
|
||||||
|
|
||||||
Unlike Unix, Windows 95/NT systems are case insensitive but case
|
|
||||||
preserving. For example if you tell the file system to create a
|
|
||||||
file named "Target", it will preserve the case. Subsequent access to
|
|
||||||
the file with other case permutations will succeed (i.e. opening a
|
|
||||||
file named "target" or "TARGET" will open the file "Target").
|
|
||||||
|
|
||||||
By default, GNU make retains its case sensitivity when comparing
|
|
||||||
target names and existing files or directories. It can be
|
|
||||||
configured, however, into a case preserving and case insensitive
|
|
||||||
mode by adding a define for HAVE_CASE_INSENSITIVE_FS to
|
|
||||||
config.h.W32.
|
|
||||||
|
|
||||||
For example, the following makefile will create a file named
|
|
||||||
Target in the directory subdir which will subsequently be used
|
|
||||||
to satisfy the dependency of SUBDIR/DepTarget on SubDir/TARGET.
|
|
||||||
Without HAVE_CASE_INSENSITIVE_FS configured, the dependency link
|
|
||||||
will not be made:
|
|
||||||
|
|
||||||
subdir/Target:
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
SUBDIR/DepTarget: SubDir/TARGET
|
|
||||||
cp $^ $@
|
|
||||||
|
|
||||||
Reliance on this behavior also eliminates the ability of GNU make
|
|
||||||
to use case in comparison of matching rules. For example, it is
|
|
||||||
not possible to set up a C++ rule using %.C that is different
|
|
||||||
than a C rule using %.c. GNU make will consider these to be the
|
|
||||||
same rule and will issue a warning.
|
|
||||||
|
|
||||||
SAMBA/NTFS/VFAT:
|
|
||||||
|
|
||||||
I have not had any success building the debug version of this
|
|
||||||
package using SAMBA as my file server. The reason seems to be
|
|
||||||
related to the way VC++ 4.0 changes the case name of the pdb
|
|
||||||
filename it is passed on the command line. It seems to change
|
|
||||||
the name always to to lower case. I contend that
|
|
||||||
the VC++ compiler should not change the casename of files that
|
|
||||||
are passed as arguments on the command line. I don't think this
|
|
||||||
was a problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.
|
|
||||||
|
|
||||||
The package builds fine on VFAT and NTFS filesystems.
|
|
||||||
|
|
||||||
Most all of the development I have done to date has been using
|
|
||||||
NTFS and long file names. I have not done any considerable work
|
|
||||||
under VFAT. VFAT users may wish to be aware that this port
|
|
||||||
of make does respect case sensitivity.
|
|
||||||
|
|
||||||
FAT:
|
|
||||||
|
|
||||||
Version 3.76 added support for FAT filesystems. Make
|
|
||||||
works around some difficulties with stat'ing of
|
|
||||||
files and caching of filenames and directories internally.
|
|
||||||
|
|
||||||
Bug reports:
|
|
||||||
|
|
||||||
Please submit bugs via the normal bug reporting mechanism which
|
|
||||||
is described in the GNU make manual and the base README.
|
|
||||||
@ -1,95 +0,0 @@
|
|||||||
-*-indented-text-*-
|
|
||||||
|
|
||||||
GNU make can utilize the Customs library, distributed with Pmake, to
|
|
||||||
provide builds distributed across multiple hosts.
|
|
||||||
|
|
||||||
In order to utilize this capability, you must first download and build
|
|
||||||
the Customs library. It is contained in the Pmake distribution, which
|
|
||||||
can be obtained at:
|
|
||||||
|
|
||||||
ftp://ftp.icsi.berkeley.edu/pub/ai/stolcke/software/
|
|
||||||
|
|
||||||
This integration was tested (superficially) with Pmake 2.1.33.
|
|
||||||
|
|
||||||
|
|
||||||
BUILDING CUSTOMS
|
|
||||||
----------------
|
|
||||||
|
|
||||||
First, build pmake and Customs. You need to build pmake first, because
|
|
||||||
Customs require pmake to build. Unfortunately, this is not trivial;
|
|
||||||
please see the pmake and Customs documentation for details. The best
|
|
||||||
place to look for instructions is in the pmake-2.1.33/INSTALL file.
|
|
||||||
|
|
||||||
Note that the 2.1.33 Pmake distribution comes with a set of patches to
|
|
||||||
GNU make, distributed in the pmake-2.1.33/etc/gnumake/ directory. These
|
|
||||||
patches are based on GNU make 3.75 (there are patches for earlier
|
|
||||||
versions of GNU make, also). The parts of this patchfile which relate
|
|
||||||
directly to Customs support have already been incorporated into this
|
|
||||||
version of GNU make, so you should _NOT_ apply the patch file.
|
|
||||||
|
|
||||||
However, there are a few non-Customs specific (as far as I could tell)
|
|
||||||
changes here which are not incorporated (for example, the modification
|
|
||||||
to try expanding -lfoo to libfoo.so). If you rely on these changes
|
|
||||||
you'll need to re-apply them by hand.
|
|
||||||
|
|
||||||
Install the Customs library and header files according to the
|
|
||||||
documentation. You should also install the man pages (contrary to
|
|
||||||
comments in the documentation, they weren't installed automatically for
|
|
||||||
me; I had to cd to the ``pmake-2.1.33/doc'' directory and run ``pmake
|
|
||||||
install'' there directly).
|
|
||||||
|
|
||||||
|
|
||||||
BUILDING GNU MAKE
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Once you've installed Customs, you can build GNU make to use it. When
|
|
||||||
configuring GNU make, merely use the ``--with-customs=DIR'' option.
|
|
||||||
Provide the directory containing the ``lib'' and ``include/customs''
|
|
||||||
subdirectories as DIR. For example, if you installed the customs
|
|
||||||
library in /usr/local/lib and the headers in /usr/local/include/customs,
|
|
||||||
then you'd pass ``--with-customs=/usr/local'' as an option to configure.
|
|
||||||
|
|
||||||
Run make (or use build.sh) normally to build GNU make as described in
|
|
||||||
the INSTALL file.
|
|
||||||
|
|
||||||
See the documentation for Customs for information on starting and
|
|
||||||
configuring Customs.
|
|
||||||
|
|
||||||
|
|
||||||
INVOKING CUSTOMS-IZED GNU MAKE
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
One thing you should be aware of is that the default build environment
|
|
||||||
for Customs requires root permissions. Practically, this means that GNU
|
|
||||||
make must be installed setuid root to use Customs.
|
|
||||||
|
|
||||||
If you don't want to do this, you can build Customs such that root
|
|
||||||
permissions are not necessary. Andreas Stolcke <stolcke@speech.sri.com>
|
|
||||||
writes:
|
|
||||||
|
|
||||||
> pmake, gnumake or any other customs client program is not required to
|
|
||||||
> be suid root if customs was compiled WITHOUT the USE_RESERVED_PORTS
|
|
||||||
> option in customs/config.h. Make sure the "customs" service in
|
|
||||||
> /etc/services is defined accordingly (port 8231 instead of 1001).
|
|
||||||
|
|
||||||
> Not using USE_RESERVED_PORTS means that a user with programming
|
|
||||||
> skills could impersonate another user by writing a fake customs
|
|
||||||
> client that pretends to be someone other than himself. See the
|
|
||||||
> discussion in etc/SECURITY.
|
|
||||||
|
|
||||||
|
|
||||||
PROBLEMS
|
|
||||||
--------
|
|
||||||
|
|
||||||
SunOS 4.1.x:
|
|
||||||
The customs/sprite.h header file #includes the <malloc.h> header
|
|
||||||
files; this conflicts with GNU make's configuration so you'll get a
|
|
||||||
compile error if you use GCC (or any other ANSI-capable C compiler).
|
|
||||||
|
|
||||||
I commented out the #include in sprite.h:107:
|
|
||||||
|
|
||||||
#if defined(sun) || defined(ultrix) || defined(hpux) || defined(sgi)
|
|
||||||
/* #include <malloc.h> */
|
|
||||||
#else
|
|
||||||
|
|
||||||
YMMV.
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
ERRORREXX
|
|
||||||
OPTIMIZE
|
|
||||||
NOVERSION
|
|
||||||
OPTIMIZERTIME
|
|
||||||
OPTIMIZERALIAS
|
|
||||||
DEFINE INCLUDEDIR="include:"
|
|
||||||
DEFINE LIBDIR="lib:"
|
|
||||||
DEFINE NO_ALLOCA
|
|
||||||
DEFINE NO_FLOAT
|
|
||||||
DEFINE NO_ARCHIVES
|
|
||||||
IGNORE=161
|
|
||||||
IGNORE=100
|
|
||||||
STARTUP=cres
|
|
||||||
@ -1,255 +0,0 @@
|
|||||||
# NOTE: If you have no `make' program at all to process this makefile, run
|
|
||||||
# `build.sh' instead.
|
|
||||||
#
|
|
||||||
# Copyright (C) 1988, 89, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
|
|
||||||
# This file is part of GNU Make.
|
|
||||||
#
|
|
||||||
# GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# GNU Make is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Makefile for GNU Make
|
|
||||||
#
|
|
||||||
|
|
||||||
# Ultrix 2.2 make doesn't expand the value of VPATH.
|
|
||||||
VPATH = /make-3.79.1/
|
|
||||||
# This must repeat the value, because configure will remove `VPATH = .'.
|
|
||||||
srcdir = /make-3.79.1/
|
|
||||||
|
|
||||||
CC = sc
|
|
||||||
RM = delete
|
|
||||||
MAKE = smake
|
|
||||||
|
|
||||||
CFLAGS =
|
|
||||||
CPPFLAGS =
|
|
||||||
LDFLAGS =
|
|
||||||
|
|
||||||
# Define these for your system as follows:
|
|
||||||
# -DNO_ARCHIVES To disable `ar' archive support.
|
|
||||||
# -DNO_FLOAT To avoid using floating-point numbers.
|
|
||||||
# -DENUM_BITFIELDS If the compiler isn't GCC but groks enum foo:2.
|
|
||||||
# Some compilers apparently accept this
|
|
||||||
# without complaint but produce losing code,
|
|
||||||
# so beware.
|
|
||||||
# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
|
|
||||||
# See also `config.h'.
|
|
||||||
defines =
|
|
||||||
|
|
||||||
# Which flavor of remote job execution support to use.
|
|
||||||
# The code is found in `remote-$(REMOTE).c'.
|
|
||||||
REMOTE = stub
|
|
||||||
|
|
||||||
# If you are using the GNU C library, or have the GNU getopt functions in
|
|
||||||
# your C library, you can comment these out.
|
|
||||||
GETOPT = getopt.o getopt1.o
|
|
||||||
GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h
|
|
||||||
|
|
||||||
# If you are using the GNU C library, or have the GNU glob functions in
|
|
||||||
# your C library, you can comment this out. GNU make uses special hooks
|
|
||||||
# into the glob functions to be more efficient (by using make's directory
|
|
||||||
# cache for globbing), so you must use the GNU functions even if your
|
|
||||||
# system's C library has the 1003.2 glob functions already. Also, the glob
|
|
||||||
# functions in the AIX and HPUX C libraries are said to be buggy.
|
|
||||||
GLOB = Lib glob/glob.lib
|
|
||||||
|
|
||||||
# If your system doesn't have alloca, or the one provided is bad, define this.
|
|
||||||
ALLOCA = alloca.o
|
|
||||||
ALLOCA_SRC = $(srcdir)alloca.c
|
|
||||||
|
|
||||||
# If your system needs extra libraries loaded in, define them here.
|
|
||||||
# System V probably need -lPW for alloca. HP-UX 7.0's alloca in
|
|
||||||
# libPW.a is broken on HP9000s300 and HP9000s400 machines. Use
|
|
||||||
# alloca.c instead on those machines.
|
|
||||||
LOADLIBES =
|
|
||||||
|
|
||||||
# Any extra object files your system needs.
|
|
||||||
extras = amiga.o
|
|
||||||
|
|
||||||
# Common prefix for machine-independent installed files.
|
|
||||||
prefix =
|
|
||||||
# Common prefix for machine-dependent installed files.
|
|
||||||
exec_prefix =
|
|
||||||
|
|
||||||
# Directory to install `make' in.
|
|
||||||
bindir = sc:c
|
|
||||||
# Directory to find libraries in for `-lXXX'.
|
|
||||||
libdir = lib:
|
|
||||||
# Directory to search by default for included makefiles.
|
|
||||||
includedir = include:
|
|
||||||
# Directory to install the Info files in.
|
|
||||||
infodir = doc:
|
|
||||||
# Directory to install the man page in.
|
|
||||||
mandir = t:
|
|
||||||
# Number to put on the man page filename.
|
|
||||||
manext = 1
|
|
||||||
# Prefix to put on installed `make' binary file name.
|
|
||||||
binprefix =
|
|
||||||
# Prefix to put on installed `make' man page file name.
|
|
||||||
manprefix = $(binprefix)
|
|
||||||
|
|
||||||
# Whether or not make needs to be installed setgid.
|
|
||||||
# The value should be either `true' or `false'.
|
|
||||||
# On many systems, the getloadavg function (used to implement the `-l'
|
|
||||||
# switch) will not work unless make is installed setgid kmem.
|
|
||||||
install_setgid = false
|
|
||||||
# Install make setgid to this group so it can read /dev/kmem.
|
|
||||||
group = sys
|
|
||||||
|
|
||||||
# Program to install `make'.
|
|
||||||
INSTALL_PROGRAM = copy
|
|
||||||
# Program to install the man page.
|
|
||||||
INSTALL_DATA = copy
|
|
||||||
# Generic install program.
|
|
||||||
INSTALL = copy
|
|
||||||
|
|
||||||
# Program to format Texinfo source into Info files.
|
|
||||||
MAKEINFO = makeinfo
|
|
||||||
# Program to format Texinfo source into DVI files.
|
|
||||||
TEXI2DVI = texi2dvi
|
|
||||||
|
|
||||||
# Programs to make tags files.
|
|
||||||
ETAGS = etags -w
|
|
||||||
CTAGS = ctags -w
|
|
||||||
|
|
||||||
objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o \
|
|
||||||
rule.o implicit.o default.o variable.o expand.o function.o \
|
|
||||||
vpath.o version.o ar.o arscan.o signame.o remote-$(REMOTE).o \
|
|
||||||
$(GLOB) $(GETOPT) $(ALLOCA) $(extras)
|
|
||||||
srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c \
|
|
||||||
$(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c \
|
|
||||||
$(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c \
|
|
||||||
$(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c \
|
|
||||||
$(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c \
|
|
||||||
$(srcdir)vpath.c $(srcdir)version.c \
|
|
||||||
$(srcdir)remote-$(REMOTE).c \
|
|
||||||
$(srcdir)ar.c $(srcdir)arscan.c \
|
|
||||||
$(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC) \
|
|
||||||
$(srcdir)commands.h $(srcdir)dep.h $(srcdir)file.h \
|
|
||||||
$(srcdir)job.h $(srcdir)make.h $(srcdir)rule.h \
|
|
||||||
$(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
|
|
||||||
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .o .c .h .ps .dvi .info .texinfo
|
|
||||||
|
|
||||||
all: make
|
|
||||||
info: make.info
|
|
||||||
dvi: make.dvi
|
|
||||||
# Some makes apparently use .PHONY as the default goal if it is before `all'.
|
|
||||||
.PHONY: all check info dvi
|
|
||||||
|
|
||||||
make.info: make.texinfo
|
|
||||||
$(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info
|
|
||||||
|
|
||||||
make.dvi: make.texinfo
|
|
||||||
$(TEXI2DVI) $(srcdir)make.texinfo
|
|
||||||
|
|
||||||
make.ps: make.dvi
|
|
||||||
dvi2ps make.dvi > make.ps
|
|
||||||
|
|
||||||
make: $(objs) glob/glob.lib
|
|
||||||
$(CC) Link $(LDFLAGS) $(objs) $(LOADLIBES) To make.new
|
|
||||||
-delete quiet make
|
|
||||||
rename make.new make
|
|
||||||
|
|
||||||
# -I. is needed to find config.h in the build directory.
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(defines) IDir "" IDir $(srcdir)glob \
|
|
||||||
$(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
|
|
||||||
|
|
||||||
glob/glob.lib:
|
|
||||||
execute <<
|
|
||||||
cd glob
|
|
||||||
smake
|
|
||||||
<
|
|
||||||
|
|
||||||
tagsrcs = $(srcs) $(srcdir)remote-*.c
|
|
||||||
TAGS: $(tagsrcs)
|
|
||||||
$(ETAGS) $(tagsrcs)
|
|
||||||
tags: $(tagsrcs)
|
|
||||||
$(CTAGS) $(tagsrcs)
|
|
||||||
|
|
||||||
.PHONY: install installdirs
|
|
||||||
install:
|
|
||||||
copy make sc:c
|
|
||||||
|
|
||||||
loadavg: loadavg.c config.h
|
|
||||||
$(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
|
|
||||||
loadavg.c $(LOADLIBES) -o $@
|
|
||||||
|
|
||||||
clean: glob-clean
|
|
||||||
-$(RM) -f make loadavg *.o core make.dvi
|
|
||||||
|
|
||||||
distclean: clean glob-realclean
|
|
||||||
-$(RM) -f Makefile config.h config.status build.sh
|
|
||||||
-$(RM) -f config.log config.cache
|
|
||||||
-$(RM) -f TAGS tags
|
|
||||||
-$(RM) -f make.?? make.??s make.log make.toc make.*aux
|
|
||||||
-$(RM) -f loadavg.c
|
|
||||||
|
|
||||||
realclean: distclean
|
|
||||||
-$(RM) -f make.info*
|
|
||||||
|
|
||||||
mostlyclean: clean
|
|
||||||
|
|
||||||
.PHONY: glob-clean glob-realclean
|
|
||||||
|
|
||||||
glob-clean glob-realclean:
|
|
||||||
execute <<
|
|
||||||
cd glob
|
|
||||||
smake $@
|
|
||||||
<
|
|
||||||
|
|
||||||
# --------------- DEPENDENCIES
|
|
||||||
#
|
|
||||||
alloca.o: alloca.c config.h
|
|
||||||
ar.o: ar.c make.h config.h gettext.h filedef.h dep.h glob/fnmatch.h
|
|
||||||
arscan.o: arscan.c make.h config.h gettext.h
|
|
||||||
commands.o: commands.c make.h config.h gettext.h dep.h filedef.h \
|
|
||||||
variable.h job.h commands.h
|
|
||||||
default.o: default.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h
|
|
||||||
dir.o: dir.c make.h config.h gettext.h glob/glob.h
|
|
||||||
expand.o: expand.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
variable.h rule.h
|
|
||||||
file.o: file.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h
|
|
||||||
function.o: function.c make.h config.h gettext.h filedef.h variable.h \
|
|
||||||
dep.h job.h commands.h debug.h
|
|
||||||
getloadavg.o: getloadavg.c config.h
|
|
||||||
getopt.o: getopt.c config.h gettext.h getopt.h
|
|
||||||
getopt1.o: getopt1.c config.h getopt.h
|
|
||||||
gettext.o: gettext.c config.h gettext.h
|
|
||||||
implicit.o: implicit.c make.h config.h gettext.h rule.h dep.h filedef.h \
|
|
||||||
debug.h
|
|
||||||
job.o: job.c make.h config.h gettext.h job.h debug.h filedef.h \
|
|
||||||
commands.h variable.h
|
|
||||||
main.o: main.c make.h config.h gettext.h dep.h filedef.h variable.h \
|
|
||||||
job.h commands.h rule.h debug.h getopt.h
|
|
||||||
misc.o: misc.c make.h config.h gettext.h dep.h debug.h
|
|
||||||
read.o: read.c make.h config.h gettext.h glob/glob.h dep.h filedef.h \
|
|
||||||
job.h commands.h variable.h rule.h debug.h
|
|
||||||
remake.o: remake.c make.h config.h gettext.h filedef.h job.h commands.h \
|
|
||||||
dep.h variable.h debug.h
|
|
||||||
remote-stub.o: remote-stub.c make.h config.h gettext.h filedef.h job.h \
|
|
||||||
commands.h
|
|
||||||
rule.o: rule.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
signame.o: signame.c make.h config.h gettext.h signame.h
|
|
||||||
variable.o: variable.c make.h config.h gettext.h dep.h filedef.h job.h \
|
|
||||||
commands.h variable.h rule.h
|
|
||||||
version.o: version.c config.h
|
|
||||||
vpath.o: vpath.c make.h config.h gettext.h filedef.h variable.h
|
|
||||||
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
/* Name of this package (needed by automake) */
|
|
||||||
#undef PACKAGE
|
|
||||||
|
|
||||||
/* Version of this package (needed by automake) */
|
|
||||||
#undef VERSION
|
|
||||||
|
|
||||||
/* Define if your locale.h file contains LC_MESSAGES. */
|
|
||||||
#undef HAVE_LC_MESSAGES
|
|
||||||
|
|
||||||
/* Define to the installation directory for locales. */
|
|
||||||
#undef LOCALEDIR
|
|
||||||
|
|
||||||
/* Define to the name of the SCCS `get' command. */
|
|
||||||
#undef SCCS_GET
|
|
||||||
|
|
||||||
/* Define to be the nanoseconds member of struct stat's st_mtim,
|
|
||||||
if it exists. */
|
|
||||||
#undef ST_MTIM_NSEC
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `sys_siglist'. */
|
|
||||||
#undef HAVE_SYS_SIGLIST
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
#undef HAVE__SYS_SIGLIST
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#undef uintmax_t
|
|
||||||
@ -1,536 +0,0 @@
|
|||||||
dnl acinclude.m4 -- Extra macros needed for GNU make.
|
|
||||||
dnl
|
|
||||||
dnl Automake will incorporate this into its generated aclocal.m4.
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Got this from the lynx 2.8 distribution.
|
|
||||||
dnl by T.E.Dickey <dickey@clark.net>
|
|
||||||
dnl and Jim Spath <jspath@mail.bcpl.lib.md.us>
|
|
||||||
dnl and Philippe De Muyter <phdm@macqel.be>
|
|
||||||
dnl
|
|
||||||
dnl Created: 1997/1/28
|
|
||||||
dnl Updated: 1997/12/23
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl After checking for functions in the default $LIBS, make a further check
|
|
||||||
dnl for the functions that are netlib-related (these aren't always in the
|
|
||||||
dnl libc, etc., and have to be handled specially because there are conflicting
|
|
||||||
dnl and broken implementations.
|
|
||||||
dnl Common library requirements (in order):
|
|
||||||
dnl -lresolv -lsocket -lnsl
|
|
||||||
dnl -lnsl -lsocket
|
|
||||||
dnl -lsocket
|
|
||||||
dnl -lbsd
|
|
||||||
AC_DEFUN([CF_NETLIBS],[
|
|
||||||
cf_test_netlibs=no
|
|
||||||
AC_MSG_CHECKING(for network libraries)
|
|
||||||
AC_CACHE_VAL(cf_cv_netlibs,[
|
|
||||||
AC_MSG_RESULT(working...)
|
|
||||||
cf_cv_netlibs=""
|
|
||||||
cf_test_netlibs=yes
|
|
||||||
AC_CHECK_FUNCS(gethostname,,[
|
|
||||||
CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[
|
|
||||||
CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])])
|
|
||||||
#
|
|
||||||
# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but
|
|
||||||
# I don't know the entrypoints - 97/7/22 TD
|
|
||||||
AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs")
|
|
||||||
#
|
|
||||||
if test "$ac_cv_func_lsocket" != no ; then
|
|
||||||
AC_CHECK_FUNCS(socket,,[
|
|
||||||
CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[
|
|
||||||
CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
AC_CHECK_FUNCS(gethostbyname,,[
|
|
||||||
CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)])
|
|
||||||
#
|
|
||||||
AC_CHECK_FUNCS(strcasecmp,,[
|
|
||||||
CF_RECHECK_FUNC(strcasecmp,resolv,cf_cv_netlibs)])
|
|
||||||
])
|
|
||||||
LIBS="$LIBS $cf_cv_netlibs"
|
|
||||||
test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG
|
|
||||||
])dnl
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Re-check on a function to see if we can pick it up by adding a library.
|
|
||||||
dnl $1 = function to check
|
|
||||||
dnl $2 = library to check in
|
|
||||||
dnl $3 = environment to update (e.g., $LIBS)
|
|
||||||
dnl $4 = what to do if this fails
|
|
||||||
dnl
|
|
||||||
dnl This uses 'unset' if the shell happens to support it, but leaves the
|
|
||||||
dnl configuration variable set to 'unknown' if not. This is a little better
|
|
||||||
dnl than the normal autoconf test, which gives misleading results if a test
|
|
||||||
dnl for the function is made (e.g., with AC_CHECK_FUNC) after this macro is
|
|
||||||
dnl used (autoconf does not distinguish between a null token and one that is
|
|
||||||
dnl set to 'no').
|
|
||||||
AC_DEFUN([CF_RECHECK_FUNC],[
|
|
||||||
AC_CHECK_LIB($2,$1,[
|
|
||||||
CF_UPPER(cf_tr_func,$1)
|
|
||||||
AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func)
|
|
||||||
ac_cv_func_$1=yes
|
|
||||||
$3="-l$2 [$]$3"],[
|
|
||||||
ac_cv_func_$1=unknown
|
|
||||||
unset ac_cv_func_$1 2>/dev/null
|
|
||||||
$4],
|
|
||||||
[[$]$3])
|
|
||||||
])dnl
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Make an uppercase version of a variable
|
|
||||||
dnl $1=uppercase($2)
|
|
||||||
AC_DEFUN([CF_UPPER],
|
|
||||||
[
|
|
||||||
changequote(,)dnl
|
|
||||||
$1=`echo $2 | tr '[a-z]' '[A-Z]'`
|
|
||||||
changequote([,])dnl
|
|
||||||
])dnl
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Got this from the GNU tar 1.13.11 distribution
|
|
||||||
dnl by Paul Eggert <eggert@twinsun.com>
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
dnl By default, many hosts won't let programs access large files;
|
|
||||||
dnl one must use special compiler options to get large-file access to work.
|
|
||||||
dnl For more details about this brain damage please see:
|
|
||||||
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
|
|
||||||
|
|
||||||
dnl Written by Paul Eggert <eggert@twinsun.com>.
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_FLAGS(FLAGSNAME)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_FLAGS,
|
|
||||||
[AC_CACHE_CHECK([for $1 value to request large file support],
|
|
||||||
ac_cv_sys_largefile_$1,
|
|
||||||
[if ($GETCONF LFS_$1) >conftest.1 2>conftest.2 && test ! -s conftest.2
|
|
||||||
then
|
|
||||||
ac_cv_sys_largefile_$1=`cat conftest.1`
|
|
||||||
else
|
|
||||||
ac_cv_sys_largefile_$1=no
|
|
||||||
ifelse($1, CFLAGS,
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 requires -D__STDC_EXT__ with gcc 2.95.1.
|
|
||||||
changequote(, )dnl
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
changequote([, ])dnl
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
ac_cv_sys_largefile_CFLAGS=-D__STDC_EXT__
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
# IRIX 6.2 and later require cc -n32.
|
|
||||||
changequote(, )dnl
|
|
||||||
irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)
|
|
||||||
changequote([, ])dnl
|
|
||||||
if test "$GCC" != yes; then
|
|
||||||
ac_cv_sys_largefile_CFLAGS=-n32
|
|
||||||
fi
|
|
||||||
esac
|
|
||||||
if test "$ac_cv_sys_largefile_CFLAGS" != no; then
|
|
||||||
ac_save_CC="$CC"
|
|
||||||
CC="$CC $ac_cv_sys_largefile_CFLAGS"
|
|
||||||
AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no)
|
|
||||||
CC="$ac_save_CC"
|
|
||||||
fi])
|
|
||||||
fi
|
|
||||||
rm -f conftest*])])
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_SPACE_APPEND(VAR, VAL)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_SPACE_APPEND,
|
|
||||||
[case $2 in
|
|
||||||
no) ;;
|
|
||||||
?*)
|
|
||||||
case "[$]$1" in
|
|
||||||
'') $1=$2 ;;
|
|
||||||
*) $1=[$]$1' '$2 ;;
|
|
||||||
esac ;;
|
|
||||||
esac])
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
|
|
||||||
[AC_CACHE_CHECK([for $1], $2,
|
|
||||||
[$2=no
|
|
||||||
changequote(, )dnl
|
|
||||||
$4
|
|
||||||
for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
|
|
||||||
case "$ac_flag" in
|
|
||||||
-D$1)
|
|
||||||
$2=1 ;;
|
|
||||||
-D$1=*)
|
|
||||||
$2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
changequote([, ])dnl
|
|
||||||
])
|
|
||||||
if test "[$]$2" != no; then
|
|
||||||
AC_DEFINE_UNQUOTED([$1], [$]$2, [$3])
|
|
||||||
fi])
|
|
||||||
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE,
|
|
||||||
[AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_ARG_ENABLE(largefile,
|
|
||||||
[ --disable-largefile omit support for large files])
|
|
||||||
if test "$enable_largefile" != no; then
|
|
||||||
AC_CHECK_TOOL(GETCONF, getconf)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(CFLAGS)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(LDFLAGS)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(LIBS)
|
|
||||||
|
|
||||||
for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
|
|
||||||
case "$ac_flag" in
|
|
||||||
no) ;;
|
|
||||||
-D_FILE_OFFSET_BITS=*) ;;
|
|
||||||
-D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;;
|
|
||||||
-D_LARGE_FILES | -D_LARGE_FILES=*) ;;
|
|
||||||
-D?* | -I?*)
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;;
|
|
||||||
*)
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(CFLAGS, "$ac_flag") ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(LDFLAGS, "$ac_cv_sys_largefile_LDFLAGS")
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(LIBS, "$ac_cv_sys_largefile_LIBS")
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS,
|
|
||||||
ac_cv_sys_file_offset_bits,
|
|
||||||
[Number of bits in a file offset, on hosts where this is settable.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 and later
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
ac_cv_sys_file_offset_bits=64 ;;
|
|
||||||
esac])
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE,
|
|
||||||
ac_cv_sys_largefile_source,
|
|
||||||
[Define to make fseeko etc. visible, on some hosts.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 and later
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
ac_cv_sys_largefile_source=1 ;;
|
|
||||||
esac])
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES,
|
|
||||||
ac_cv_sys_large_files,
|
|
||||||
[Define for large files, on AIX-style hosts.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# AIX 4.2 and later
|
|
||||||
aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
|
|
||||||
ac_cv_sys_large_files=1 ;;
|
|
||||||
esac])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
dnl Define HAVE_INTTYPES_H if <inttypes.h> exists,
|
|
||||||
dnl doesn't clash with <sys/types.h>, and declares uintmax_t.
|
|
||||||
|
|
||||||
AC_DEFUN(jm_AC_HEADER_INTTYPES_H,
|
|
||||||
[
|
|
||||||
if test x = y; then
|
|
||||||
dnl This code is deliberately never run via ./configure.
|
|
||||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
|
||||||
dnl for `HAVE_INTTYPES_H' in config.h.in.
|
|
||||||
AC_CHECK_FUNCS(INTTYPES_H)
|
|
||||||
fi
|
|
||||||
AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
|
|
||||||
[AC_TRY_COMPILE(
|
|
||||||
[#include <sys/types.h>
|
|
||||||
#include <inttypes.h>],
|
|
||||||
[uintmax_t i = (uintmax_t) -1;],
|
|
||||||
jm_ac_cv_header_inttypes_h=yes,
|
|
||||||
jm_ac_cv_header_inttypes_h=no)])
|
|
||||||
if test $jm_ac_cv_header_inttypes_h = yes; then
|
|
||||||
ac_kludge=HAVE_INTTYPES_H
|
|
||||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
AC_DEFUN(AC_STRUCT_ST_MTIM_NSEC,
|
|
||||||
[AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim],
|
|
||||||
ac_cv_struct_st_mtim_nsec,
|
|
||||||
[ac_save_CPPFLAGS="$CPPFLAGS"
|
|
||||||
ac_cv_struct_st_mtim_nsec=no
|
|
||||||
# tv_nsec -- the usual case
|
|
||||||
# _tv_nsec -- Solaris 2.6, if
|
|
||||||
# (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
|
|
||||||
# && !defined __EXTENSIONS__)
|
|
||||||
# st__tim.tv_nsec -- UnixWare 2.1.2
|
|
||||||
for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do
|
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
|
|
||||||
AC_TRY_COMPILE([#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>], [struct stat s; s.st_mtim.ST_MTIM_NSEC;],
|
|
||||||
[ac_cv_struct_st_mtim_nsec=$ac_val; break])
|
|
||||||
done
|
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS"])
|
|
||||||
|
|
||||||
if test $ac_cv_struct_st_mtim_nsec != no; then
|
|
||||||
AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec)
|
|
||||||
fi
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
dnl Define uintmax_t to `unsigned long' or `unsigned long long'
|
|
||||||
dnl if <inttypes.h> does not exist.
|
|
||||||
|
|
||||||
AC_DEFUN(jm_AC_TYPE_UINTMAX_T,
|
|
||||||
[
|
|
||||||
AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
|
|
||||||
if test $jm_ac_cv_header_inttypes_h = no; then
|
|
||||||
AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
|
|
||||||
[AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
|
|
||||||
[unsigned long long ullmax = (unsigned long long) -1;
|
|
||||||
return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
|
|
||||||
ac_cv_type_unsigned_long_long=yes,
|
|
||||||
ac_cv_type_unsigned_long_long=no)])
|
|
||||||
if test $ac_cv_type_unsigned_long_long = yes; then
|
|
||||||
AC_DEFINE(uintmax_t, unsigned long long)
|
|
||||||
else
|
|
||||||
AC_DEFINE(uintmax_t, unsigned long)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# The following is taken from automake 1.4,
|
|
||||||
# except that it prefers the compiler option -Ae to "-Aa -D_HPUX_SOURCE"
|
|
||||||
# because only the former supports 64-bit integral types on HP-UX 10.20.
|
|
||||||
|
|
||||||
## ----------------------------------------- ##
|
|
||||||
## ANSIfy the C compiler whenever possible. ##
|
|
||||||
## From Franc,ois Pinard ##
|
|
||||||
## ----------------------------------------- ##
|
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# @defmac AC_PROG_CC_STDC
|
|
||||||
# @maindex PROG_CC_STDC
|
|
||||||
# @ovindex CC
|
|
||||||
# If the C compiler in not in ANSI C mode by default, try to add an option
|
|
||||||
# to output variable @code{CC} to make it so. This macro tries various
|
|
||||||
# options that select ANSI C on some system or another. It considers the
|
|
||||||
# compiler to be in ANSI C mode if it handles function prototypes correctly.
|
|
||||||
#
|
|
||||||
# If you use this macro, you should check after calling it whether the C
|
|
||||||
# compiler has been set to accept ANSI C; if not, the shell variable
|
|
||||||
# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
|
|
||||||
# code in ANSI C, you can make an un-ANSIfied copy of it by using the
|
|
||||||
# program @code{ansi2knr}, which comes with Ghostscript.
|
|
||||||
# @end defmac
|
|
||||||
|
|
||||||
AC_DEFUN(AM_PROG_CC_STDC,
|
|
||||||
[AC_REQUIRE([AC_PROG_CC])
|
|
||||||
AC_BEFORE([$0], [AC_C_INLINE])
|
|
||||||
AC_BEFORE([$0], [AC_C_CONST])
|
|
||||||
dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
|
|
||||||
dnl a magic option to avoid problems with ANSI preprocessor commands
|
|
||||||
dnl like #elif.
|
|
||||||
dnl FIXME: can't do this because then AC_AIX won't work due to a
|
|
||||||
dnl circular dependency.
|
|
||||||
dnl AC_BEFORE([$0], [AC_PROG_CPP])
|
|
||||||
AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
|
|
||||||
AC_CACHE_VAL(am_cv_prog_cc_stdc,
|
|
||||||
[am_cv_prog_cc_stdc=no
|
|
||||||
ac_save_CC="$CC"
|
|
||||||
# Don't try gcc -ansi; that turns off useful extensions and
|
|
||||||
# breaks some systems' header files.
|
|
||||||
# AIX -qlanglvl=ansi
|
|
||||||
# Ultrix and OSF/1 -std1
|
|
||||||
# HP-UX -Aa -D_HPUX_SOURCE
|
|
||||||
# SVR4 -Xc -D__EXTENSIONS__
|
|
||||||
for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
|
|
||||||
do
|
|
||||||
CC="$ac_save_CC $ac_arg"
|
|
||||||
AC_TRY_COMPILE(
|
|
||||||
[#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
|
|
||||||
struct buf { int x; };
|
|
||||||
FILE * (*rcsopen) (struct buf *, struct stat *, int);
|
|
||||||
static char *e (p, i)
|
|
||||||
char **p;
|
|
||||||
int i;
|
|
||||||
{
|
|
||||||
return p[i];
|
|
||||||
}
|
|
||||||
static char *f (char * (*g) (char **, int), char **p, ...)
|
|
||||||
{
|
|
||||||
char *s;
|
|
||||||
va_list v;
|
|
||||||
va_start (v,p);
|
|
||||||
s = g (p, va_arg (v,int));
|
|
||||||
va_end (v);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
int test (int i, double x);
|
|
||||||
struct s1 {int (*f) (int a);};
|
|
||||||
struct s2 {int (*f) (double a);};
|
|
||||||
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
|
|
||||||
int argc;
|
|
||||||
char **argv;
|
|
||||||
], [
|
|
||||||
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
|
|
||||||
],
|
|
||||||
[am_cv_prog_cc_stdc="$ac_arg"; break])
|
|
||||||
done
|
|
||||||
CC="$ac_save_CC"
|
|
||||||
])
|
|
||||||
if test -z "$am_cv_prog_cc_stdc"; then
|
|
||||||
AC_MSG_RESULT([none needed])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT($am_cv_prog_cc_stdc)
|
|
||||||
fi
|
|
||||||
case "x$am_cv_prog_cc_stdc" in
|
|
||||||
x|xno) ;;
|
|
||||||
*) CC="$CC $am_cv_prog_cc_stdc" ;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Enable internationalization support for GNU make.
|
|
||||||
dnl Original obtained from the libit 0.7 distribution
|
|
||||||
dnl Rewritten by Paul D. Smith <psmith@gnu.org>
|
|
||||||
dnl This version is much more straightforward than the original (I think);
|
|
||||||
dnl If the user doesn't disable NLS, check whether she asked for the
|
|
||||||
dnl included gettext. If so, we use that. If not, test to see if the
|
|
||||||
dnl system gettext is GNU. If not, use the included gettext. If so,
|
|
||||||
dnl use the system gettext. We are very strict about testing for GNU
|
|
||||||
dnl gettext; not only must the library be GNU gettext, but the libintl.h
|
|
||||||
dnl file must also be GNU.
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(pds_CHECK_SYSTEM_GETTEXT, [
|
|
||||||
|
|
||||||
# OK. What we're going to do is see if the system gettext is really
|
|
||||||
# GNU gettext, and we're going to make _sure_ (as we can) that if
|
|
||||||
# it's not we'll use the included gettext.
|
|
||||||
|
|
||||||
pds_keep_LIBS="$LIBS"
|
|
||||||
|
|
||||||
# Look around for gettext() and libintl.h on the system
|
|
||||||
AC_CHECK_HEADERS(locale.h)
|
|
||||||
AC_SEARCH_LIBS(gettext, intl)
|
|
||||||
if test "$ac_cv_search_gettext" = no; then
|
|
||||||
with_included_gettext=yes
|
|
||||||
|
|
||||||
else
|
|
||||||
# We only want to deal with GNU's gettext; if we don't have that
|
|
||||||
# we'll just use our own, thanks very much.
|
|
||||||
AC_CACHE_CHECK([whether the system has GNU gettext],
|
|
||||||
pds_cv_system_gnu_gettext, [
|
|
||||||
AC_TRY_LINK([
|
|
||||||
#include <libintl.h>
|
|
||||||
#ifdef HAVE_LOCALE_H
|
|
||||||
#include <locale.h>
|
|
||||||
#endif
|
|
||||||
], [
|
|
||||||
#if __USE_GNU_GETTEXT
|
|
||||||
extern int _nl_msg_cat_cntr;
|
|
||||||
return _nl_msg_cat_cntr;
|
|
||||||
#else
|
|
||||||
not GNU gettext
|
|
||||||
#endif
|
|
||||||
],
|
|
||||||
pds_cv_system_gnu_gettext=yes, pds_cv_system_gnu_gettext=no)])
|
|
||||||
|
|
||||||
if test "x$pds_cv_system_gnu_gettext" = xyes; then
|
|
||||||
with_included_gettext=no
|
|
||||||
AC_DEFINE(HAVE_LIBINTL_H, 1, [Define if you have <libintl.h>.])
|
|
||||||
else
|
|
||||||
with_included_gettext=yes
|
|
||||||
LIBS="$pds_keep_LIBS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
AC_DEFUN(pds_WITH_GETTEXT, [
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether NLS is wanted)
|
|
||||||
AC_ARG_ENABLE(nls,
|
|
||||||
[ --disable-nls disallow Native Language Support],
|
|
||||||
enable_nls=$enableval, enable_nls=yes)
|
|
||||||
AC_MSG_RESULT($enable_nls)
|
|
||||||
use_nls=$enable_nls
|
|
||||||
AM_CONDITIONAL(USE_NLS, test $use_nls = yes)
|
|
||||||
|
|
||||||
if test $enable_nls = yes; then
|
|
||||||
AC_DEFINE(ENABLE_NLS, 1, [Define if NLS is requested.])
|
|
||||||
|
|
||||||
# We don't support catgets at all
|
|
||||||
if test "x$with_catgets" != x; then
|
|
||||||
AC_MSG_WARN([catgets not supported; --with-catgets ignored])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find out what the user wants.
|
|
||||||
|
|
||||||
AC_ARG_WITH(included-gettext,
|
|
||||||
[ --with-included-gettext use the GNU gettext library included here],
|
|
||||||
with_included_gettext=yes,
|
|
||||||
with_included_gettext=maybe)
|
|
||||||
|
|
||||||
if test "x$with_included_gettext" != xyes; then
|
|
||||||
pds_CHECK_SYSTEM_GETTEXT
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to use included gettext])
|
|
||||||
AC_MSG_RESULT($with_included_gettext)
|
|
||||||
|
|
||||||
if test "$with_included_gettext" = yes; then
|
|
||||||
LIBOBJS="$LIBOBJS gettext.o"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_DEFINE(HAVE_GETTEXT, 1, [Define if you have the gettext function.])
|
|
||||||
AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if you have the dcgettext function.])
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS(getcwd setlocale stpcpy)
|
|
||||||
AM_LC_MESSAGES
|
|
||||||
|
|
||||||
if test -z "$ALL_LINGUAS"; then
|
|
||||||
AC_MSG_WARN(This package does not install translations yet.)
|
|
||||||
else
|
|
||||||
ac_items="$ALL_LINGUAS"
|
|
||||||
for ac_item in $ac_items; do
|
|
||||||
ALL_POFILES="$ALL_POFILES $ac_item.po"
|
|
||||||
ALL_MOFILES="$ALL_MOFILES $ac_item.mo"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
AC_SUBST(ALL_LINGUAS)
|
|
||||||
AC_SUBST(ALL_POFILES)
|
|
||||||
AC_SUBST(ALL_MOFILES)
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(which translations to install)
|
|
||||||
if test -z "$LINGUAS"; then
|
|
||||||
ac_print="$ALL_LINGUAS"
|
|
||||||
MOFILES="$ALL_MOFILES"
|
|
||||||
else
|
|
||||||
ac_items="$LINGUAS"
|
|
||||||
for ac_item in $ac_items; do
|
|
||||||
case "$ALL_LINGUAS" in
|
|
||||||
*$ac_item*)
|
|
||||||
ac_print="$ac_print $ac_item"
|
|
||||||
MOFILES="$MOFILES $ac_item.mo"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
AC_SUBST(MOFILES)
|
|
||||||
if test -z "$ac_print"; then
|
|
||||||
AC_MSG_RESULT(none)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT($ac_print)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$prefix" = xNONE; then
|
|
||||||
AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale")
|
|
||||||
fi
|
|
||||||
fi])
|
|
||||||
693
buildtools/windows/source/make-3.79.1/aclocal.m4
vendored
693
buildtools/windows/source/make-3.79.1/aclocal.m4
vendored
@ -1,693 +0,0 @@
|
|||||||
dnl aclocal.m4 generated automatically by aclocal 1.4
|
|
||||||
|
|
||||||
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
dnl This program is distributed in the hope that it will be useful,
|
|
||||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
dnl PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
dnl acinclude.m4 -- Extra macros needed for GNU make.
|
|
||||||
dnl
|
|
||||||
dnl Automake will incorporate this into its generated aclocal.m4.
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Got this from the lynx 2.8 distribution.
|
|
||||||
dnl by T.E.Dickey <dickey@clark.net>
|
|
||||||
dnl and Jim Spath <jspath@mail.bcpl.lib.md.us>
|
|
||||||
dnl and Philippe De Muyter <phdm@macqel.be>
|
|
||||||
dnl
|
|
||||||
dnl Created: 1997/1/28
|
|
||||||
dnl Updated: 1997/12/23
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl After checking for functions in the default $LIBS, make a further check
|
|
||||||
dnl for the functions that are netlib-related (these aren't always in the
|
|
||||||
dnl libc, etc., and have to be handled specially because there are conflicting
|
|
||||||
dnl and broken implementations.
|
|
||||||
dnl Common library requirements (in order):
|
|
||||||
dnl -lresolv -lsocket -lnsl
|
|
||||||
dnl -lnsl -lsocket
|
|
||||||
dnl -lsocket
|
|
||||||
dnl -lbsd
|
|
||||||
AC_DEFUN([CF_NETLIBS],[
|
|
||||||
cf_test_netlibs=no
|
|
||||||
AC_MSG_CHECKING(for network libraries)
|
|
||||||
AC_CACHE_VAL(cf_cv_netlibs,[
|
|
||||||
AC_MSG_RESULT(working...)
|
|
||||||
cf_cv_netlibs=""
|
|
||||||
cf_test_netlibs=yes
|
|
||||||
AC_CHECK_FUNCS(gethostname,,[
|
|
||||||
CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[
|
|
||||||
CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])])
|
|
||||||
#
|
|
||||||
# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but
|
|
||||||
# I don't know the entrypoints - 97/7/22 TD
|
|
||||||
AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs")
|
|
||||||
#
|
|
||||||
if test "$ac_cv_func_lsocket" != no ; then
|
|
||||||
AC_CHECK_FUNCS(socket,,[
|
|
||||||
CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[
|
|
||||||
CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
AC_CHECK_FUNCS(gethostbyname,,[
|
|
||||||
CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)])
|
|
||||||
#
|
|
||||||
AC_CHECK_FUNCS(strcasecmp,,[
|
|
||||||
CF_RECHECK_FUNC(strcasecmp,resolv,cf_cv_netlibs)])
|
|
||||||
])
|
|
||||||
LIBS="$LIBS $cf_cv_netlibs"
|
|
||||||
test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG
|
|
||||||
])dnl
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Re-check on a function to see if we can pick it up by adding a library.
|
|
||||||
dnl $1 = function to check
|
|
||||||
dnl $2 = library to check in
|
|
||||||
dnl $3 = environment to update (e.g., $LIBS)
|
|
||||||
dnl $4 = what to do if this fails
|
|
||||||
dnl
|
|
||||||
dnl This uses 'unset' if the shell happens to support it, but leaves the
|
|
||||||
dnl configuration variable set to 'unknown' if not. This is a little better
|
|
||||||
dnl than the normal autoconf test, which gives misleading results if a test
|
|
||||||
dnl for the function is made (e.g., with AC_CHECK_FUNC) after this macro is
|
|
||||||
dnl used (autoconf does not distinguish between a null token and one that is
|
|
||||||
dnl set to 'no').
|
|
||||||
AC_DEFUN([CF_RECHECK_FUNC],[
|
|
||||||
AC_CHECK_LIB($2,$1,[
|
|
||||||
CF_UPPER(cf_tr_func,$1)
|
|
||||||
AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func)
|
|
||||||
ac_cv_func_$1=yes
|
|
||||||
$3="-l$2 [$]$3"],[
|
|
||||||
ac_cv_func_$1=unknown
|
|
||||||
unset ac_cv_func_$1 2>/dev/null
|
|
||||||
$4],
|
|
||||||
[[$]$3])
|
|
||||||
])dnl
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Make an uppercase version of a variable
|
|
||||||
dnl $1=uppercase($2)
|
|
||||||
AC_DEFUN([CF_UPPER],
|
|
||||||
[
|
|
||||||
changequote(,)dnl
|
|
||||||
$1=`echo $2 | tr '[a-z]' '[A-Z]'`
|
|
||||||
changequote([,])dnl
|
|
||||||
])dnl
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Got this from the GNU tar 1.13.11 distribution
|
|
||||||
dnl by Paul Eggert <eggert@twinsun.com>
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
dnl By default, many hosts won't let programs access large files;
|
|
||||||
dnl one must use special compiler options to get large-file access to work.
|
|
||||||
dnl For more details about this brain damage please see:
|
|
||||||
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
|
|
||||||
|
|
||||||
dnl Written by Paul Eggert <eggert@twinsun.com>.
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_FLAGS(FLAGSNAME)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_FLAGS,
|
|
||||||
[AC_CACHE_CHECK([for $1 value to request large file support],
|
|
||||||
ac_cv_sys_largefile_$1,
|
|
||||||
[if ($GETCONF LFS_$1) >conftest.1 2>conftest.2 && test ! -s conftest.2
|
|
||||||
then
|
|
||||||
ac_cv_sys_largefile_$1=`cat conftest.1`
|
|
||||||
else
|
|
||||||
ac_cv_sys_largefile_$1=no
|
|
||||||
ifelse($1, CFLAGS,
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 requires -D__STDC_EXT__ with gcc 2.95.1.
|
|
||||||
changequote(, )dnl
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
changequote([, ])dnl
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
ac_cv_sys_largefile_CFLAGS=-D__STDC_EXT__
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
# IRIX 6.2 and later require cc -n32.
|
|
||||||
changequote(, )dnl
|
|
||||||
irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)
|
|
||||||
changequote([, ])dnl
|
|
||||||
if test "$GCC" != yes; then
|
|
||||||
ac_cv_sys_largefile_CFLAGS=-n32
|
|
||||||
fi
|
|
||||||
esac
|
|
||||||
if test "$ac_cv_sys_largefile_CFLAGS" != no; then
|
|
||||||
ac_save_CC="$CC"
|
|
||||||
CC="$CC $ac_cv_sys_largefile_CFLAGS"
|
|
||||||
AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no)
|
|
||||||
CC="$ac_save_CC"
|
|
||||||
fi])
|
|
||||||
fi
|
|
||||||
rm -f conftest*])])
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_SPACE_APPEND(VAR, VAL)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_SPACE_APPEND,
|
|
||||||
[case $2 in
|
|
||||||
no) ;;
|
|
||||||
?*)
|
|
||||||
case "[$]$1" in
|
|
||||||
'') $1=$2 ;;
|
|
||||||
*) $1=[$]$1' '$2 ;;
|
|
||||||
esac ;;
|
|
||||||
esac])
|
|
||||||
|
|
||||||
dnl Internal subroutine of AC_SYS_LARGEFILE.
|
|
||||||
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT)
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
|
|
||||||
[AC_CACHE_CHECK([for $1], $2,
|
|
||||||
[$2=no
|
|
||||||
changequote(, )dnl
|
|
||||||
$4
|
|
||||||
for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
|
|
||||||
case "$ac_flag" in
|
|
||||||
-D$1)
|
|
||||||
$2=1 ;;
|
|
||||||
-D$1=*)
|
|
||||||
$2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
changequote([, ])dnl
|
|
||||||
])
|
|
||||||
if test "[$]$2" != no; then
|
|
||||||
AC_DEFINE_UNQUOTED([$1], [$]$2, [$3])
|
|
||||||
fi])
|
|
||||||
|
|
||||||
AC_DEFUN(AC_SYS_LARGEFILE,
|
|
||||||
[AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_ARG_ENABLE(largefile,
|
|
||||||
[ --disable-largefile omit support for large files])
|
|
||||||
if test "$enable_largefile" != no; then
|
|
||||||
AC_CHECK_TOOL(GETCONF, getconf)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(CFLAGS)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(LDFLAGS)
|
|
||||||
AC_SYS_LARGEFILE_FLAGS(LIBS)
|
|
||||||
|
|
||||||
for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
|
|
||||||
case "$ac_flag" in
|
|
||||||
no) ;;
|
|
||||||
-D_FILE_OFFSET_BITS=*) ;;
|
|
||||||
-D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;;
|
|
||||||
-D_LARGE_FILES | -D_LARGE_FILES=*) ;;
|
|
||||||
-D?* | -I?*)
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;;
|
|
||||||
*)
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(CFLAGS, "$ac_flag") ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(LDFLAGS, "$ac_cv_sys_largefile_LDFLAGS")
|
|
||||||
AC_SYS_LARGEFILE_SPACE_APPEND(LIBS, "$ac_cv_sys_largefile_LIBS")
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS,
|
|
||||||
ac_cv_sys_file_offset_bits,
|
|
||||||
[Number of bits in a file offset, on hosts where this is settable.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 and later
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
ac_cv_sys_file_offset_bits=64 ;;
|
|
||||||
esac])
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE,
|
|
||||||
ac_cv_sys_largefile_source,
|
|
||||||
[Define to make fseeko etc. visible, on some hosts.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# HP-UX 10.20 and later
|
|
||||||
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
|
|
||||||
ac_cv_sys_largefile_source=1 ;;
|
|
||||||
esac])
|
|
||||||
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES,
|
|
||||||
ac_cv_sys_large_files,
|
|
||||||
[Define for large files, on AIX-style hosts.],
|
|
||||||
[case "$host_os" in
|
|
||||||
# AIX 4.2 and later
|
|
||||||
aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
|
|
||||||
ac_cv_sys_large_files=1 ;;
|
|
||||||
esac])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
dnl Define HAVE_INTTYPES_H if <inttypes.h> exists,
|
|
||||||
dnl doesn't clash with <sys/types.h>, and declares uintmax_t.
|
|
||||||
|
|
||||||
AC_DEFUN(jm_AC_HEADER_INTTYPES_H,
|
|
||||||
[
|
|
||||||
if test x = y; then
|
|
||||||
dnl This code is deliberately never run via ./configure.
|
|
||||||
dnl FIXME: this is a gross hack to make autoheader put an entry
|
|
||||||
dnl for `HAVE_INTTYPES_H' in config.h.in.
|
|
||||||
AC_CHECK_FUNCS(INTTYPES_H)
|
|
||||||
fi
|
|
||||||
AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
|
|
||||||
[AC_TRY_COMPILE(
|
|
||||||
[#include <sys/types.h>
|
|
||||||
#include <inttypes.h>],
|
|
||||||
[uintmax_t i = (uintmax_t) -1;],
|
|
||||||
jm_ac_cv_header_inttypes_h=yes,
|
|
||||||
jm_ac_cv_header_inttypes_h=no)])
|
|
||||||
if test $jm_ac_cv_header_inttypes_h = yes; then
|
|
||||||
ac_kludge=HAVE_INTTYPES_H
|
|
||||||
AC_DEFINE_UNQUOTED($ac_kludge)
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
AC_DEFUN(AC_STRUCT_ST_MTIM_NSEC,
|
|
||||||
[AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim],
|
|
||||||
ac_cv_struct_st_mtim_nsec,
|
|
||||||
[ac_save_CPPFLAGS="$CPPFLAGS"
|
|
||||||
ac_cv_struct_st_mtim_nsec=no
|
|
||||||
# tv_nsec -- the usual case
|
|
||||||
# _tv_nsec -- Solaris 2.6, if
|
|
||||||
# (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
|
|
||||||
# && !defined __EXTENSIONS__)
|
|
||||||
# st__tim.tv_nsec -- UnixWare 2.1.2
|
|
||||||
for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do
|
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
|
|
||||||
AC_TRY_COMPILE([#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>], [struct stat s; s.st_mtim.ST_MTIM_NSEC;],
|
|
||||||
[ac_cv_struct_st_mtim_nsec=$ac_val; break])
|
|
||||||
done
|
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS"])
|
|
||||||
|
|
||||||
if test $ac_cv_struct_st_mtim_nsec != no; then
|
|
||||||
AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec)
|
|
||||||
fi
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl From Paul Eggert <eggert@twinsun.com>
|
|
||||||
|
|
||||||
dnl Define uintmax_t to `unsigned long' or `unsigned long long'
|
|
||||||
dnl if <inttypes.h> does not exist.
|
|
||||||
|
|
||||||
AC_DEFUN(jm_AC_TYPE_UINTMAX_T,
|
|
||||||
[
|
|
||||||
AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
|
|
||||||
if test $jm_ac_cv_header_inttypes_h = no; then
|
|
||||||
AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
|
|
||||||
[AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
|
|
||||||
[unsigned long long ullmax = (unsigned long long) -1;
|
|
||||||
return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
|
|
||||||
ac_cv_type_unsigned_long_long=yes,
|
|
||||||
ac_cv_type_unsigned_long_long=no)])
|
|
||||||
if test $ac_cv_type_unsigned_long_long = yes; then
|
|
||||||
AC_DEFINE(uintmax_t, unsigned long long)
|
|
||||||
else
|
|
||||||
AC_DEFINE(uintmax_t, unsigned long)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# The following is taken from automake 1.4,
|
|
||||||
# except that it prefers the compiler option -Ae to "-Aa -D_HPUX_SOURCE"
|
|
||||||
# because only the former supports 64-bit integral types on HP-UX 10.20.
|
|
||||||
|
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# @defmac AC_PROG_CC_STDC
|
|
||||||
# @maindex PROG_CC_STDC
|
|
||||||
# @ovindex CC
|
|
||||||
# If the C compiler in not in ANSI C mode by default, try to add an option
|
|
||||||
# to output variable @code{CC} to make it so. This macro tries various
|
|
||||||
# options that select ANSI C on some system or another. It considers the
|
|
||||||
# compiler to be in ANSI C mode if it handles function prototypes correctly.
|
|
||||||
#
|
|
||||||
# If you use this macro, you should check after calling it whether the C
|
|
||||||
# compiler has been set to accept ANSI C; if not, the shell variable
|
|
||||||
# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
|
|
||||||
# code in ANSI C, you can make an un-ANSIfied copy of it by using the
|
|
||||||
# program @code{ansi2knr}, which comes with Ghostscript.
|
|
||||||
# @end defmac
|
|
||||||
|
|
||||||
AC_DEFUN(AM_PROG_CC_STDC,
|
|
||||||
[AC_REQUIRE([AC_PROG_CC])
|
|
||||||
AC_BEFORE([$0], [AC_C_INLINE])
|
|
||||||
AC_BEFORE([$0], [AC_C_CONST])
|
|
||||||
dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
|
|
||||||
dnl a magic option to avoid problems with ANSI preprocessor commands
|
|
||||||
dnl like #elif.
|
|
||||||
dnl FIXME: can't do this because then AC_AIX won't work due to a
|
|
||||||
dnl circular dependency.
|
|
||||||
dnl AC_BEFORE([$0], [AC_PROG_CPP])
|
|
||||||
AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
|
|
||||||
AC_CACHE_VAL(am_cv_prog_cc_stdc,
|
|
||||||
[am_cv_prog_cc_stdc=no
|
|
||||||
ac_save_CC="$CC"
|
|
||||||
# Don't try gcc -ansi; that turns off useful extensions and
|
|
||||||
# breaks some systems' header files.
|
|
||||||
# AIX -qlanglvl=ansi
|
|
||||||
# Ultrix and OSF/1 -std1
|
|
||||||
# HP-UX -Aa -D_HPUX_SOURCE
|
|
||||||
# SVR4 -Xc -D__EXTENSIONS__
|
|
||||||
for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
|
|
||||||
do
|
|
||||||
CC="$ac_save_CC $ac_arg"
|
|
||||||
AC_TRY_COMPILE(
|
|
||||||
[#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
|
|
||||||
struct buf { int x; };
|
|
||||||
FILE * (*rcsopen) (struct buf *, struct stat *, int);
|
|
||||||
static char *e (p, i)
|
|
||||||
char **p;
|
|
||||||
int i;
|
|
||||||
{
|
|
||||||
return p[i];
|
|
||||||
}
|
|
||||||
static char *f (char * (*g) (char **, int), char **p, ...)
|
|
||||||
{
|
|
||||||
char *s;
|
|
||||||
va_list v;
|
|
||||||
va_start (v,p);
|
|
||||||
s = g (p, va_arg (v,int));
|
|
||||||
va_end (v);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
int test (int i, double x);
|
|
||||||
struct s1 {int (*f) (int a);};
|
|
||||||
struct s2 {int (*f) (double a);};
|
|
||||||
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
|
|
||||||
int argc;
|
|
||||||
char **argv;
|
|
||||||
], [
|
|
||||||
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
|
|
||||||
],
|
|
||||||
[am_cv_prog_cc_stdc="$ac_arg"; break])
|
|
||||||
done
|
|
||||||
CC="$ac_save_CC"
|
|
||||||
])
|
|
||||||
if test -z "$am_cv_prog_cc_stdc"; then
|
|
||||||
AC_MSG_RESULT([none needed])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT($am_cv_prog_cc_stdc)
|
|
||||||
fi
|
|
||||||
case "x$am_cv_prog_cc_stdc" in
|
|
||||||
x|xno) ;;
|
|
||||||
*) CC="$CC $am_cv_prog_cc_stdc" ;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
|
||||||
dnl Enable internationalization support for GNU make.
|
|
||||||
dnl Original obtained from the libit 0.7 distribution
|
|
||||||
dnl Rewritten by Paul D. Smith <psmith@gnu.org>
|
|
||||||
dnl This version is much more straightforward than the original (I think);
|
|
||||||
dnl If the user doesn't disable NLS, check whether she asked for the
|
|
||||||
dnl included gettext. If so, we use that. If not, test to see if the
|
|
||||||
dnl system gettext is GNU. If not, use the included gettext. If so,
|
|
||||||
dnl use the system gettext. We are very strict about testing for GNU
|
|
||||||
dnl gettext; not only must the library be GNU gettext, but the libintl.h
|
|
||||||
dnl file must also be GNU.
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(pds_CHECK_SYSTEM_GETTEXT, [
|
|
||||||
|
|
||||||
# OK. What we're going to do is see if the system gettext is really
|
|
||||||
# GNU gettext, and we're going to make _sure_ (as we can) that if
|
|
||||||
# it's not we'll use the included gettext.
|
|
||||||
|
|
||||||
pds_keep_LIBS="$LIBS"
|
|
||||||
|
|
||||||
# Look around for gettext() and libintl.h on the system
|
|
||||||
AC_CHECK_HEADERS(locale.h)
|
|
||||||
AC_SEARCH_LIBS(gettext, intl)
|
|
||||||
if test "$ac_cv_search_gettext" = no; then
|
|
||||||
with_included_gettext=yes
|
|
||||||
|
|
||||||
else
|
|
||||||
# We only want to deal with GNU's gettext; if we don't have that
|
|
||||||
# we'll just use our own, thanks very much.
|
|
||||||
AC_CACHE_CHECK([whether the system has GNU gettext],
|
|
||||||
pds_cv_system_gnu_gettext, [
|
|
||||||
AC_TRY_LINK([
|
|
||||||
#include <libintl.h>
|
|
||||||
#ifdef HAVE_LOCALE_H
|
|
||||||
#include <locale.h>
|
|
||||||
#endif
|
|
||||||
], [
|
|
||||||
#if __USE_GNU_GETTEXT
|
|
||||||
extern int _nl_msg_cat_cntr;
|
|
||||||
return _nl_msg_cat_cntr;
|
|
||||||
#else
|
|
||||||
not GNU gettext
|
|
||||||
#endif
|
|
||||||
],
|
|
||||||
pds_cv_system_gnu_gettext=yes, pds_cv_system_gnu_gettext=no)])
|
|
||||||
|
|
||||||
if test "x$pds_cv_system_gnu_gettext" = xyes; then
|
|
||||||
with_included_gettext=no
|
|
||||||
AC_DEFINE(HAVE_LIBINTL_H, 1, [Define if you have <libintl.h>.])
|
|
||||||
else
|
|
||||||
with_included_gettext=yes
|
|
||||||
LIBS="$pds_keep_LIBS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
AC_DEFUN(pds_WITH_GETTEXT, [
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether NLS is wanted)
|
|
||||||
AC_ARG_ENABLE(nls,
|
|
||||||
[ --disable-nls disallow Native Language Support],
|
|
||||||
enable_nls=$enableval, enable_nls=yes)
|
|
||||||
AC_MSG_RESULT($enable_nls)
|
|
||||||
use_nls=$enable_nls
|
|
||||||
AM_CONDITIONAL(USE_NLS, test $use_nls = yes)
|
|
||||||
|
|
||||||
if test $enable_nls = yes; then
|
|
||||||
AC_DEFINE(ENABLE_NLS, 1, [Define if NLS is requested.])
|
|
||||||
|
|
||||||
# We don't support catgets at all
|
|
||||||
if test "x$with_catgets" != x; then
|
|
||||||
AC_MSG_WARN([catgets not supported; --with-catgets ignored])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find out what the user wants.
|
|
||||||
|
|
||||||
AC_ARG_WITH(included-gettext,
|
|
||||||
[ --with-included-gettext use the GNU gettext library included here],
|
|
||||||
with_included_gettext=yes,
|
|
||||||
with_included_gettext=maybe)
|
|
||||||
|
|
||||||
if test "x$with_included_gettext" != xyes; then
|
|
||||||
pds_CHECK_SYSTEM_GETTEXT
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to use included gettext])
|
|
||||||
AC_MSG_RESULT($with_included_gettext)
|
|
||||||
|
|
||||||
if test "$with_included_gettext" = yes; then
|
|
||||||
LIBOBJS="$LIBOBJS gettext.o"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_DEFINE(HAVE_GETTEXT, 1, [Define if you have the gettext function.])
|
|
||||||
AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if you have the dcgettext function.])
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS(getcwd setlocale stpcpy)
|
|
||||||
AM_LC_MESSAGES
|
|
||||||
|
|
||||||
if test -z "$ALL_LINGUAS"; then
|
|
||||||
AC_MSG_WARN(This package does not install translations yet.)
|
|
||||||
else
|
|
||||||
ac_items="$ALL_LINGUAS"
|
|
||||||
for ac_item in $ac_items; do
|
|
||||||
ALL_POFILES="$ALL_POFILES $ac_item.po"
|
|
||||||
ALL_MOFILES="$ALL_MOFILES $ac_item.mo"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
AC_SUBST(ALL_LINGUAS)
|
|
||||||
AC_SUBST(ALL_POFILES)
|
|
||||||
AC_SUBST(ALL_MOFILES)
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(which translations to install)
|
|
||||||
if test -z "$LINGUAS"; then
|
|
||||||
ac_print="$ALL_LINGUAS"
|
|
||||||
MOFILES="$ALL_MOFILES"
|
|
||||||
else
|
|
||||||
ac_items="$LINGUAS"
|
|
||||||
for ac_item in $ac_items; do
|
|
||||||
case "$ALL_LINGUAS" in
|
|
||||||
*$ac_item*)
|
|
||||||
ac_print="$ac_print $ac_item"
|
|
||||||
MOFILES="$MOFILES $ac_item.mo"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
AC_SUBST(MOFILES)
|
|
||||||
if test -z "$ac_print"; then
|
|
||||||
AC_MSG_RESULT(none)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT($ac_print)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$prefix" = xNONE; then
|
|
||||||
AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale")
|
|
||||||
fi
|
|
||||||
fi])
|
|
||||||
|
|
||||||
# Define a conditional.
|
|
||||||
|
|
||||||
AC_DEFUN(AM_CONDITIONAL,
|
|
||||||
[AC_SUBST($1_TRUE)
|
|
||||||
AC_SUBST($1_FALSE)
|
|
||||||
if $2; then
|
|
||||||
$1_TRUE=
|
|
||||||
$1_FALSE='#'
|
|
||||||
else
|
|
||||||
$1_TRUE='#'
|
|
||||||
$1_FALSE=
|
|
||||||
fi])
|
|
||||||
|
|
||||||
# Check whether LC_MESSAGES is available in <locale.h>.
|
|
||||||
# Ulrich Drepper <drepper@cygnus.com>, 1995.
|
|
||||||
#
|
|
||||||
# This file can be copied and used freely without restrictions. It can
|
|
||||||
# be used in projects which are not available under the GNU Public License
|
|
||||||
# but which still want to provide support for the GNU gettext functionality.
|
|
||||||
# Please note that the actual code is *not* freely available.
|
|
||||||
|
|
||||||
# serial 1
|
|
||||||
|
|
||||||
AC_DEFUN(AM_LC_MESSAGES,
|
|
||||||
[if test $ac_cv_header_locale_h = yes; then
|
|
||||||
AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
|
|
||||||
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
|
|
||||||
am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
|
|
||||||
if test $am_cv_val_LC_MESSAGES = yes; then
|
|
||||||
AC_DEFINE(HAVE_LC_MESSAGES)
|
|
||||||
fi
|
|
||||||
fi])
|
|
||||||
|
|
||||||
# Do all the work for Automake. This macro actually does too much --
|
|
||||||
# some checks are only needed if your package does certain things.
|
|
||||||
# But this isn't really a big deal.
|
|
||||||
|
|
||||||
# serial 1
|
|
||||||
|
|
||||||
dnl Usage:
|
|
||||||
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
|
|
||||||
|
|
||||||
AC_DEFUN(AM_INIT_AUTOMAKE,
|
|
||||||
[AC_REQUIRE([AC_PROG_INSTALL])
|
|
||||||
PACKAGE=[$1]
|
|
||||||
AC_SUBST(PACKAGE)
|
|
||||||
VERSION=[$2]
|
|
||||||
AC_SUBST(VERSION)
|
|
||||||
dnl test to see if srcdir already configured
|
|
||||||
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
|
|
||||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
|
||||||
fi
|
|
||||||
ifelse([$3],,
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
|
||||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
|
|
||||||
AC_REQUIRE([AM_SANITY_CHECK])
|
|
||||||
AC_REQUIRE([AC_ARG_PROGRAM])
|
|
||||||
dnl FIXME This is truly gross.
|
|
||||||
missing_dir=`cd $ac_aux_dir && pwd`
|
|
||||||
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
|
|
||||||
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
|
||||||
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
|
|
||||||
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
|
||||||
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
|
||||||
AC_REQUIRE([AC_PROG_MAKE_SET])])
|
|
||||||
|
|
||||||
#
|
|
||||||
# Check to make sure that the build environment is sane.
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_DEFUN(AM_SANITY_CHECK,
|
|
||||||
[AC_MSG_CHECKING([whether build environment is sane])
|
|
||||||
# Just in case
|
|
||||||
sleep 1
|
|
||||||
echo timestamp > conftestfile
|
|
||||||
# Do `set' in a subshell so we don't clobber the current shell's
|
|
||||||
# arguments. Must try -L first in case configure is actually a
|
|
||||||
# symlink; some systems play weird games with the mod time of symlinks
|
|
||||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
|
||||||
# directory).
|
|
||||||
if (
|
|
||||||
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
|
|
||||||
if test "[$]*" = "X"; then
|
|
||||||
# -L didn't work.
|
|
||||||
set X `ls -t $srcdir/configure conftestfile`
|
|
||||||
fi
|
|
||||||
if test "[$]*" != "X $srcdir/configure conftestfile" \
|
|
||||||
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
|
|
||||||
|
|
||||||
# If neither matched, then we have a broken ls. This can happen
|
|
||||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
|
||||||
# broken ls alias from the environment. This has actually
|
|
||||||
# happened. Such a system could not be considered "sane".
|
|
||||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
|
||||||
alias in your environment])
|
|
||||||
fi
|
|
||||||
|
|
||||||
test "[$]2" = conftestfile
|
|
||||||
)
|
|
||||||
then
|
|
||||||
# Ok.
|
|
||||||
:
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
|
||||||
Check your system clock])
|
|
||||||
fi
|
|
||||||
rm -f conftest*
|
|
||||||
AC_MSG_RESULT(yes)])
|
|
||||||
|
|
||||||
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
|
|
||||||
dnl The program must properly implement --version.
|
|
||||||
AC_DEFUN(AM_MISSING_PROG,
|
|
||||||
[AC_MSG_CHECKING(for working $2)
|
|
||||||
# Run test in a subshell; some versions of sh will print an error if
|
|
||||||
# an executable is not found, even if stderr is redirected.
|
|
||||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
||||||
if ($2 --version) < /dev/null > /dev/null 2>&1; then
|
|
||||||
$1=$2
|
|
||||||
AC_MSG_RESULT(found)
|
|
||||||
else
|
|
||||||
$1="$3/missing $2"
|
|
||||||
AC_MSG_RESULT(missing)
|
|
||||||
fi
|
|
||||||
AC_SUBST($1)])
|
|
||||||
|
|
||||||
# Like AC_CONFIG_HEADER, but automatically create stamp file.
|
|
||||||
|
|
||||||
AC_DEFUN(AM_CONFIG_HEADER,
|
|
||||||
[AC_PREREQ([2.12])
|
|
||||||
AC_CONFIG_HEADER([$1])
|
|
||||||
dnl When config.status generates a header, we must update the stamp-h file.
|
|
||||||
dnl This file resides in the same directory as the config header
|
|
||||||
dnl that is generated. We must strip everything past the first ":",
|
|
||||||
dnl and everything past the last "/".
|
|
||||||
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
|
|
||||||
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
|
|
||||||
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
|
|
||||||
<<am_indx=1
|
|
||||||
for am_file in <<$1>>; do
|
|
||||||
case " <<$>>CONFIG_HEADERS " in
|
|
||||||
*" <<$>>am_file "*<<)>>
|
|
||||||
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
am_indx=`expr "<<$>>am_indx" + 1`
|
|
||||||
done<<>>dnl>>)
|
|
||||||
changequote([,]))])
|
|
||||||
|
|
||||||
@ -1,504 +0,0 @@
|
|||||||
/* alloca.c -- allocate automatically reclaimed memory
|
|
||||||
(Mostly) portable public-domain implementation -- D A Gwyn
|
|
||||||
|
|
||||||
This implementation of the PWB library alloca function,
|
|
||||||
which is used to allocate space off the run-time stack so
|
|
||||||
that it is automatically reclaimed upon procedure exit,
|
|
||||||
was inspired by discussions with J. Q. Johnson of Cornell.
|
|
||||||
J.Otto Tennant <jot@cray.com> contributed the Cray support.
|
|
||||||
|
|
||||||
There are some preprocessor constants that can
|
|
||||||
be defined when compiling for your specific system, for
|
|
||||||
improved efficiency; however, the defaults should be okay.
|
|
||||||
|
|
||||||
The general concept of this implementation is to keep
|
|
||||||
track of all alloca-allocated blocks, and reclaim any
|
|
||||||
that are found to be deeper in the stack than the current
|
|
||||||
invocation. This heuristic does not reclaim storage as
|
|
||||||
soon as it becomes invalid, but it will do so eventually.
|
|
||||||
|
|
||||||
As a special case, alloca(0) reclaims storage without
|
|
||||||
allocating any. It is a good idea to use alloca(0) in
|
|
||||||
your main control loop, etc. to force garbage collection. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_STRING_H
|
|
||||||
#include <string.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_STDLIB_H
|
|
||||||
#include <stdlib.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef emacs
|
|
||||||
#include "blockinput.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If compiling with GCC 2, this file's not needed. */
|
|
||||||
#if !defined (__GNUC__) || __GNUC__ < 2
|
|
||||||
|
|
||||||
/* If someone has defined alloca as a macro,
|
|
||||||
there must be some other way alloca is supposed to work. */
|
|
||||||
#ifndef alloca
|
|
||||||
|
|
||||||
#ifdef emacs
|
|
||||||
#ifdef static
|
|
||||||
/* actually, only want this if static is defined as ""
|
|
||||||
-- this is for usg, in which emacs must undefine static
|
|
||||||
in order to make unexec workable
|
|
||||||
*/
|
|
||||||
#ifndef STACK_DIRECTION
|
|
||||||
you
|
|
||||||
lose
|
|
||||||
-- must know STACK_DIRECTION at compile-time
|
|
||||||
#endif /* STACK_DIRECTION undefined */
|
|
||||||
#endif /* static */
|
|
||||||
#endif /* emacs */
|
|
||||||
|
|
||||||
/* If your stack is a linked list of frames, you have to
|
|
||||||
provide an "address metric" ADDRESS_FUNCTION macro. */
|
|
||||||
|
|
||||||
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
|
||||||
long i00afunc ();
|
|
||||||
#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
|
|
||||||
#else
|
|
||||||
#define ADDRESS_FUNCTION(arg) &(arg)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __STDC__
|
|
||||||
typedef void *pointer;
|
|
||||||
#else
|
|
||||||
typedef char *pointer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Different portions of Emacs need to call different versions of
|
|
||||||
malloc. The Emacs executable needs alloca to call xmalloc, because
|
|
||||||
ordinary malloc isn't protected from input signals. On the other
|
|
||||||
hand, the utilities in lib-src need alloca to call malloc; some of
|
|
||||||
them are very simple, and don't have an xmalloc routine.
|
|
||||||
|
|
||||||
Non-Emacs programs expect this to call use xmalloc.
|
|
||||||
|
|
||||||
Callers below should use malloc. */
|
|
||||||
|
|
||||||
#ifndef emacs
|
|
||||||
#define malloc xmalloc
|
|
||||||
#endif
|
|
||||||
extern pointer malloc ();
|
|
||||||
|
|
||||||
/* Define STACK_DIRECTION if you know the direction of stack
|
|
||||||
growth for your system; otherwise it will be automatically
|
|
||||||
deduced at run-time.
|
|
||||||
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
|
||||||
|
|
||||||
#ifndef STACK_DIRECTION
|
|
||||||
#define STACK_DIRECTION 0 /* Direction unknown. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if STACK_DIRECTION != 0
|
|
||||||
|
|
||||||
#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
|
|
||||||
|
|
||||||
#else /* STACK_DIRECTION == 0; need run-time code. */
|
|
||||||
|
|
||||||
static int stack_dir; /* 1 or -1 once known. */
|
|
||||||
#define STACK_DIR stack_dir
|
|
||||||
|
|
||||||
static void
|
|
||||||
find_stack_direction ()
|
|
||||||
{
|
|
||||||
static char *addr = NULL; /* Address of first `dummy', once known. */
|
|
||||||
auto char dummy; /* To get stack address. */
|
|
||||||
|
|
||||||
if (addr == NULL)
|
|
||||||
{ /* Initial entry. */
|
|
||||||
addr = ADDRESS_FUNCTION (dummy);
|
|
||||||
|
|
||||||
find_stack_direction (); /* Recurse once. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Second entry. */
|
|
||||||
if (ADDRESS_FUNCTION (dummy) > addr)
|
|
||||||
stack_dir = 1; /* Stack grew upward. */
|
|
||||||
else
|
|
||||||
stack_dir = -1; /* Stack grew downward. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* STACK_DIRECTION == 0 */
|
|
||||||
|
|
||||||
/* An "alloca header" is used to:
|
|
||||||
(a) chain together all alloca'ed blocks;
|
|
||||||
(b) keep track of stack depth.
|
|
||||||
|
|
||||||
It is very important that sizeof(header) agree with malloc
|
|
||||||
alignment chunk size. The following default should work okay. */
|
|
||||||
|
|
||||||
#ifndef ALIGN_SIZE
|
|
||||||
#define ALIGN_SIZE sizeof(double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef union hdr
|
|
||||||
{
|
|
||||||
char align[ALIGN_SIZE]; /* To force sizeof(header). */
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
union hdr *next; /* For chaining headers. */
|
|
||||||
char *deep; /* For stack depth measure. */
|
|
||||||
} h;
|
|
||||||
} header;
|
|
||||||
|
|
||||||
static header *last_alloca_header = NULL; /* -> last alloca header. */
|
|
||||||
|
|
||||||
/* Return a pointer to at least SIZE bytes of storage,
|
|
||||||
which will be automatically reclaimed upon exit from
|
|
||||||
the procedure that called alloca. Originally, this space
|
|
||||||
was supposed to be taken from the current stack frame of the
|
|
||||||
caller, but that method cannot be made to work for some
|
|
||||||
implementations of C, for example under Gould's UTX/32. */
|
|
||||||
|
|
||||||
pointer
|
|
||||||
alloca (size)
|
|
||||||
unsigned size;
|
|
||||||
{
|
|
||||||
auto char probe; /* Probes stack depth: */
|
|
||||||
register char *depth = ADDRESS_FUNCTION (probe);
|
|
||||||
|
|
||||||
#if STACK_DIRECTION == 0
|
|
||||||
if (STACK_DIR == 0) /* Unknown growth direction. */
|
|
||||||
find_stack_direction ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Reclaim garbage, defined as all alloca'd storage that
|
|
||||||
was allocated from deeper in the stack than currently. */
|
|
||||||
|
|
||||||
{
|
|
||||||
register header *hp; /* Traverses linked list. */
|
|
||||||
|
|
||||||
#ifdef emacs
|
|
||||||
BLOCK_INPUT;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (hp = last_alloca_header; hp != NULL;)
|
|
||||||
if ((STACK_DIR > 0 && hp->h.deep > depth)
|
|
||||||
|| (STACK_DIR < 0 && hp->h.deep < depth))
|
|
||||||
{
|
|
||||||
register header *np = hp->h.next;
|
|
||||||
|
|
||||||
free ((pointer) hp); /* Collect garbage. */
|
|
||||||
|
|
||||||
hp = np; /* -> next header. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break; /* Rest are not deeper. */
|
|
||||||
|
|
||||||
last_alloca_header = hp; /* -> last valid storage. */
|
|
||||||
|
|
||||||
#ifdef emacs
|
|
||||||
UNBLOCK_INPUT;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size == 0)
|
|
||||||
return NULL; /* No allocation required. */
|
|
||||||
|
|
||||||
/* Allocate combined header + user data storage. */
|
|
||||||
|
|
||||||
{
|
|
||||||
register pointer new = malloc (sizeof (header) + size);
|
|
||||||
/* Address of header. */
|
|
||||||
|
|
||||||
if (new == 0)
|
|
||||||
abort();
|
|
||||||
|
|
||||||
((header *) new)->h.next = last_alloca_header;
|
|
||||||
((header *) new)->h.deep = depth;
|
|
||||||
|
|
||||||
last_alloca_header = (header *) new;
|
|
||||||
|
|
||||||
/* User storage begins just after header. */
|
|
||||||
|
|
||||||
return (pointer) ((char *) new + sizeof (header));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
|
||||||
|
|
||||||
#ifdef DEBUG_I00AFUNC
|
|
||||||
#include <stdio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRAY_STACK
|
|
||||||
#define CRAY_STACK
|
|
||||||
#ifndef CRAY2
|
|
||||||
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
|
|
||||||
struct stack_control_header
|
|
||||||
{
|
|
||||||
long shgrow:32; /* Number of times stack has grown. */
|
|
||||||
long shaseg:32; /* Size of increments to stack. */
|
|
||||||
long shhwm:32; /* High water mark of stack. */
|
|
||||||
long shsize:32; /* Current size of stack (all segments). */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* The stack segment linkage control information occurs at
|
|
||||||
the high-address end of a stack segment. (The stack
|
|
||||||
grows from low addresses to high addresses.) The initial
|
|
||||||
part of the stack segment linkage control information is
|
|
||||||
0200 (octal) words. This provides for register storage
|
|
||||||
for the routine which overflows the stack. */
|
|
||||||
|
|
||||||
struct stack_segment_linkage
|
|
||||||
{
|
|
||||||
long ss[0200]; /* 0200 overflow words. */
|
|
||||||
long sssize:32; /* Number of words in this segment. */
|
|
||||||
long ssbase:32; /* Offset to stack base. */
|
|
||||||
long:32;
|
|
||||||
long sspseg:32; /* Offset to linkage control of previous
|
|
||||||
segment of stack. */
|
|
||||||
long:32;
|
|
||||||
long sstcpt:32; /* Pointer to task common address block. */
|
|
||||||
long sscsnm; /* Private control structure number for
|
|
||||||
microtasking. */
|
|
||||||
long ssusr1; /* Reserved for user. */
|
|
||||||
long ssusr2; /* Reserved for user. */
|
|
||||||
long sstpid; /* Process ID for pid based multi-tasking. */
|
|
||||||
long ssgvup; /* Pointer to multitasking thread giveup. */
|
|
||||||
long sscray[7]; /* Reserved for Cray Research. */
|
|
||||||
long ssa0;
|
|
||||||
long ssa1;
|
|
||||||
long ssa2;
|
|
||||||
long ssa3;
|
|
||||||
long ssa4;
|
|
||||||
long ssa5;
|
|
||||||
long ssa6;
|
|
||||||
long ssa7;
|
|
||||||
long sss0;
|
|
||||||
long sss1;
|
|
||||||
long sss2;
|
|
||||||
long sss3;
|
|
||||||
long sss4;
|
|
||||||
long sss5;
|
|
||||||
long sss6;
|
|
||||||
long sss7;
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* CRAY2 */
|
|
||||||
/* The following structure defines the vector of words
|
|
||||||
returned by the STKSTAT library routine. */
|
|
||||||
struct stk_stat
|
|
||||||
{
|
|
||||||
long now; /* Current total stack size. */
|
|
||||||
long maxc; /* Amount of contiguous space which would
|
|
||||||
be required to satisfy the maximum
|
|
||||||
stack demand to date. */
|
|
||||||
long high_water; /* Stack high-water mark. */
|
|
||||||
long overflows; /* Number of stack overflow ($STKOFEN) calls. */
|
|
||||||
long hits; /* Number of internal buffer hits. */
|
|
||||||
long extends; /* Number of block extensions. */
|
|
||||||
long stko_mallocs; /* Block allocations by $STKOFEN. */
|
|
||||||
long underflows; /* Number of stack underflow calls ($STKRETN). */
|
|
||||||
long stko_free; /* Number of deallocations by $STKRETN. */
|
|
||||||
long stkm_free; /* Number of deallocations by $STKMRET. */
|
|
||||||
long segments; /* Current number of stack segments. */
|
|
||||||
long maxs; /* Maximum number of stack segments so far. */
|
|
||||||
long pad_size; /* Stack pad size. */
|
|
||||||
long current_address; /* Current stack segment address. */
|
|
||||||
long current_size; /* Current stack segment size. This
|
|
||||||
number is actually corrupted by STKSTAT to
|
|
||||||
include the fifteen word trailer area. */
|
|
||||||
long initial_address; /* Address of initial segment. */
|
|
||||||
long initial_size; /* Size of initial segment. */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* The following structure describes the data structure which trails
|
|
||||||
any stack segment. I think that the description in 'asdef' is
|
|
||||||
out of date. I only describe the parts that I am sure about. */
|
|
||||||
|
|
||||||
struct stk_trailer
|
|
||||||
{
|
|
||||||
long this_address; /* Address of this block. */
|
|
||||||
long this_size; /* Size of this block (does not include
|
|
||||||
this trailer). */
|
|
||||||
long unknown2;
|
|
||||||
long unknown3;
|
|
||||||
long link; /* Address of trailer block of previous
|
|
||||||
segment. */
|
|
||||||
long unknown5;
|
|
||||||
long unknown6;
|
|
||||||
long unknown7;
|
|
||||||
long unknown8;
|
|
||||||
long unknown9;
|
|
||||||
long unknown10;
|
|
||||||
long unknown11;
|
|
||||||
long unknown12;
|
|
||||||
long unknown13;
|
|
||||||
long unknown14;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* CRAY2 */
|
|
||||||
#endif /* not CRAY_STACK */
|
|
||||||
|
|
||||||
#ifdef CRAY2
|
|
||||||
/* Determine a "stack measure" for an arbitrary ADDRESS.
|
|
||||||
I doubt that "lint" will like this much. */
|
|
||||||
|
|
||||||
static long
|
|
||||||
i00afunc (long *address)
|
|
||||||
{
|
|
||||||
struct stk_stat status;
|
|
||||||
struct stk_trailer *trailer;
|
|
||||||
long *block, size;
|
|
||||||
long result = 0;
|
|
||||||
|
|
||||||
/* We want to iterate through all of the segments. The first
|
|
||||||
step is to get the stack status structure. We could do this
|
|
||||||
more quickly and more directly, perhaps, by referencing the
|
|
||||||
$LM00 common block, but I know that this works. */
|
|
||||||
|
|
||||||
STKSTAT (&status);
|
|
||||||
|
|
||||||
/* Set up the iteration. */
|
|
||||||
|
|
||||||
trailer = (struct stk_trailer *) (status.current_address
|
|
||||||
+ status.current_size
|
|
||||||
- 15);
|
|
||||||
|
|
||||||
/* There must be at least one stack segment. Therefore it is
|
|
||||||
a fatal error if "trailer" is null. */
|
|
||||||
|
|
||||||
if (trailer == 0)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
/* Discard segments that do not contain our argument address. */
|
|
||||||
|
|
||||||
while (trailer != 0)
|
|
||||||
{
|
|
||||||
block = (long *) trailer->this_address;
|
|
||||||
size = trailer->this_size;
|
|
||||||
if (block == 0 || size == 0)
|
|
||||||
abort ();
|
|
||||||
trailer = (struct stk_trailer *) trailer->link;
|
|
||||||
if ((block <= address) && (address < (block + size)))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the result to the offset in this segment and add the sizes
|
|
||||||
of all predecessor segments. */
|
|
||||||
|
|
||||||
result = address - block;
|
|
||||||
|
|
||||||
if (trailer == 0)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (trailer->this_size <= 0)
|
|
||||||
abort ();
|
|
||||||
result += trailer->this_size;
|
|
||||||
trailer = (struct stk_trailer *) trailer->link;
|
|
||||||
}
|
|
||||||
while (trailer != 0);
|
|
||||||
|
|
||||||
/* We are done. Note that if you present a bogus address (one
|
|
||||||
not in any segment), you will get a different number back, formed
|
|
||||||
from subtracting the address of the first block. This is probably
|
|
||||||
not what you want. */
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* not CRAY2 */
|
|
||||||
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
|
|
||||||
Determine the number of the cell within the stack,
|
|
||||||
given the address of the cell. The purpose of this
|
|
||||||
routine is to linearize, in some sense, stack addresses
|
|
||||||
for alloca. */
|
|
||||||
|
|
||||||
static long
|
|
||||||
i00afunc (long address)
|
|
||||||
{
|
|
||||||
long stkl = 0;
|
|
||||||
|
|
||||||
long size, pseg, this_segment, stack;
|
|
||||||
long result = 0;
|
|
||||||
|
|
||||||
struct stack_segment_linkage *ssptr;
|
|
||||||
|
|
||||||
/* Register B67 contains the address of the end of the
|
|
||||||
current stack segment. If you (as a subprogram) store
|
|
||||||
your registers on the stack and find that you are past
|
|
||||||
the contents of B67, you have overflowed the segment.
|
|
||||||
|
|
||||||
B67 also points to the stack segment linkage control
|
|
||||||
area, which is what we are really interested in. */
|
|
||||||
|
|
||||||
stkl = CRAY_STACKSEG_END ();
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
|
|
||||||
/* If one subtracts 'size' from the end of the segment,
|
|
||||||
one has the address of the first word of the segment.
|
|
||||||
|
|
||||||
If this is not the first segment, 'pseg' will be
|
|
||||||
nonzero. */
|
|
||||||
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
|
|
||||||
this_segment = stkl - size;
|
|
||||||
|
|
||||||
/* It is possible that calling this routine itself caused
|
|
||||||
a stack overflow. Discard stack segments which do not
|
|
||||||
contain the target address. */
|
|
||||||
|
|
||||||
while (!(this_segment <= address && address <= stkl))
|
|
||||||
{
|
|
||||||
#ifdef DEBUG_I00AFUNC
|
|
||||||
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
|
|
||||||
#endif
|
|
||||||
if (pseg == 0)
|
|
||||||
break;
|
|
||||||
stkl = stkl - pseg;
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
this_segment = stkl - size;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = address - this_segment;
|
|
||||||
|
|
||||||
/* If you subtract pseg from the current end of the stack,
|
|
||||||
you get the address of the previous stack segment's end.
|
|
||||||
This seems a little convoluted to me, but I'll bet you save
|
|
||||||
a cycle somewhere. */
|
|
||||||
|
|
||||||
while (pseg != 0)
|
|
||||||
{
|
|
||||||
#ifdef DEBUG_I00AFUNC
|
|
||||||
fprintf (stderr, "%011o %011o\n", pseg, size);
|
|
||||||
#endif
|
|
||||||
stkl = stkl - pseg;
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
result += size;
|
|
||||||
}
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* not CRAY2 */
|
|
||||||
#endif /* CRAY */
|
|
||||||
|
|
||||||
#endif /* no alloca */
|
|
||||||
#endif /* not GCC version 2 */
|
|
||||||
@ -1,123 +0,0 @@
|
|||||||
/* Running commands on Amiga
|
|
||||||
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
|
||||||
MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
#include "variable.h"
|
|
||||||
#include "amiga.h"
|
|
||||||
#include <assert.h>
|
|
||||||
#include <exec/memory.h>
|
|
||||||
#include <dos/dostags.h>
|
|
||||||
#include <proto/exec.h>
|
|
||||||
#include <proto/dos.h>
|
|
||||||
|
|
||||||
static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n"
|
|
||||||
"Amiga Port by A. Digulla (digulla@home.lake.de)";
|
|
||||||
|
|
||||||
int
|
|
||||||
MyExecute (argv)
|
|
||||||
char ** argv;
|
|
||||||
{
|
|
||||||
char * buffer, * ptr;
|
|
||||||
char ** aptr;
|
|
||||||
int len = 0;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
for (aptr=argv; *aptr; aptr++)
|
|
||||||
{
|
|
||||||
len += strlen (*aptr) + 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
buffer = AllocMem (len, MEMF_ANY);
|
|
||||||
|
|
||||||
if (!buffer)
|
|
||||||
fatal (NILF, "MyExecute: Cannot allocate space for calling a command");
|
|
||||||
|
|
||||||
ptr = buffer;
|
|
||||||
|
|
||||||
for (aptr=argv; *aptr; aptr++)
|
|
||||||
{
|
|
||||||
if (((*aptr)[0] == ';' && !(*aptr)[1]))
|
|
||||||
{
|
|
||||||
*ptr ++ = '"';
|
|
||||||
strcpy (ptr, *aptr);
|
|
||||||
ptr += strlen (ptr);
|
|
||||||
*ptr ++ = '"';
|
|
||||||
}
|
|
||||||
else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2])
|
|
||||||
{
|
|
||||||
*ptr ++ = '\n';
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strcpy (ptr, *aptr);
|
|
||||||
ptr += strlen (ptr);
|
|
||||||
}
|
|
||||||
*ptr ++ = ' ';
|
|
||||||
*ptr = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr[-1] = '\n';
|
|
||||||
|
|
||||||
status = SystemTags (buffer,
|
|
||||||
SYS_UserShell, TRUE,
|
|
||||||
TAG_END);
|
|
||||||
|
|
||||||
FreeMem (buffer, len);
|
|
||||||
|
|
||||||
if (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
|
|
||||||
status = 20;
|
|
||||||
|
|
||||||
/* Warnings don't count */
|
|
||||||
if (status == 5)
|
|
||||||
status = 0;
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
wildcard_expansion (wc, o)
|
|
||||||
char * wc, * o;
|
|
||||||
{
|
|
||||||
# define PATH_SIZE 1024
|
|
||||||
struct AnchorPath * apath;
|
|
||||||
|
|
||||||
if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE,
|
|
||||||
MEMF_CLEAR))
|
|
||||||
)
|
|
||||||
{
|
|
||||||
apath->ap_Strlen = PATH_SIZE;
|
|
||||||
|
|
||||||
if (MatchFirst (wc, apath) == 0)
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
o = variable_buffer_output (o, apath->ap_Buf,
|
|
||||||
strlen (apath->ap_Buf));
|
|
||||||
o = variable_buffer_output (o, " ",1);
|
|
||||||
} while (MatchNext (apath) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
MatchEnd (apath);
|
|
||||||
FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
/* Definitions for amiga specific things
|
|
||||||
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
|
||||||
MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
extern int MyExecute PARAMS ((char ** argv));
|
|
||||||
extern char * wildcard_expansion PARAMS ((char * wc, char * o));
|
|
||||||
|
|
||||||
@ -1,323 +0,0 @@
|
|||||||
/* Interface to `ar' archives for GNU Make.
|
|
||||||
Copyright (C) 1988,89,90,91,92,93,97 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
|
|
||||||
#include "filedef.h"
|
|
||||||
#include "dep.h"
|
|
||||||
#include <fnmatch.h>
|
|
||||||
|
|
||||||
/* Defined in arscan.c. */
|
|
||||||
extern long int ar_scan PARAMS ((char *archive, long int (*function) (), long int arg));
|
|
||||||
extern int ar_name_equal PARAMS ((char *name, char *mem, int truncated));
|
|
||||||
#ifndef VMS
|
|
||||||
extern int ar_member_touch PARAMS ((char *arname, char *memname));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Return nonzero if NAME is an archive-member reference, zero if not.
|
|
||||||
An archive-member reference is a name like `lib(member)'.
|
|
||||||
If a name like `lib((entry))' is used, a fatal error is signaled at
|
|
||||||
the attempt to use this unsupported feature. */
|
|
||||||
|
|
||||||
int
|
|
||||||
ar_name (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
char *p = strchr (name, '('), *end = name + strlen (name) - 1;
|
|
||||||
|
|
||||||
if (p == 0 || p == name || *end != ')')
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (p[1] == '(' && end[-1] == ')')
|
|
||||||
fatal (NILF, _("attempt to use unsupported feature: `%s'"), name);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Parse the archive-member reference NAME into the archive and member names.
|
|
||||||
Put the malloc'd archive name in *ARNAME_P if ARNAME_P is non-nil;
|
|
||||||
put the malloc'd member name in *MEMNAME_P if MEMNAME_P is non-nil. */
|
|
||||||
|
|
||||||
void
|
|
||||||
ar_parse_name (name, arname_p, memname_p)
|
|
||||||
char *name, **arname_p, **memname_p;
|
|
||||||
{
|
|
||||||
char *p = strchr (name, '('), *end = name + strlen (name) - 1;
|
|
||||||
|
|
||||||
if (arname_p != 0)
|
|
||||||
*arname_p = savestring (name, p - name);
|
|
||||||
|
|
||||||
if (memname_p != 0)
|
|
||||||
*memname_p = savestring (p + 1, end - (p + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
static long int ar_member_date_1 PARAMS ((int desc, char *mem, int truncated, long int hdrpos,
|
|
||||||
long int datapos, long int size, long int date, int uid, int gid, int mode, char *name));
|
|
||||||
|
|
||||||
/* Return the modtime of NAME. */
|
|
||||||
|
|
||||||
time_t
|
|
||||||
ar_member_date (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
char *arname;
|
|
||||||
int arname_used = 0;
|
|
||||||
char *memname;
|
|
||||||
long int val;
|
|
||||||
|
|
||||||
ar_parse_name (name, &arname, &memname);
|
|
||||||
|
|
||||||
/* Make sure we know the modtime of the archive itself because we are
|
|
||||||
likely to be called just before commands to remake a member are run,
|
|
||||||
and they will change the archive itself.
|
|
||||||
|
|
||||||
But we must be careful not to enter_file the archive itself if it does
|
|
||||||
not exist, because pattern_search assumes that files found in the data
|
|
||||||
base exist or can be made. */
|
|
||||||
{
|
|
||||||
struct file *arfile;
|
|
||||||
arfile = lookup_file (arname);
|
|
||||||
if (arfile == 0 && file_exists_p (arname))
|
|
||||||
{
|
|
||||||
arfile = enter_file (arname);
|
|
||||||
arname_used = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arfile != 0)
|
|
||||||
(void) f_mtime (arfile, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = ar_scan (arname, ar_member_date_1, (long int) memname);
|
|
||||||
|
|
||||||
if (!arname_used)
|
|
||||||
free (arname);
|
|
||||||
free (memname);
|
|
||||||
|
|
||||||
return (val <= 0 ? (time_t) -1 : (time_t) val);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This function is called by `ar_scan' to find which member to look at. */
|
|
||||||
|
|
||||||
/* ARGSUSED */
|
|
||||||
static long int
|
|
||||||
ar_member_date_1 (desc, mem, truncated,
|
|
||||||
hdrpos, datapos, size, date, uid, gid, mode, name)
|
|
||||||
int desc;
|
|
||||||
char *mem;
|
|
||||||
int truncated;
|
|
||||||
long int hdrpos, datapos, size, date;
|
|
||||||
int uid, gid, mode;
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
return ar_name_equal (name, mem, truncated) ? date : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the archive-member NAME's modtime to now. */
|
|
||||||
|
|
||||||
#ifdef VMS
|
|
||||||
int
|
|
||||||
ar_touch (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
error (NILF, _("touch archive member is not available on VMS"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
int
|
|
||||||
ar_touch (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
char *arname, *memname;
|
|
||||||
int arname_used = 0;
|
|
||||||
register int val;
|
|
||||||
|
|
||||||
ar_parse_name (name, &arname, &memname);
|
|
||||||
|
|
||||||
/* Make sure we know the modtime of the archive itself before we
|
|
||||||
touch the member, since this will change the archive itself. */
|
|
||||||
{
|
|
||||||
struct file *arfile;
|
|
||||||
arfile = lookup_file (arname);
|
|
||||||
if (arfile == 0)
|
|
||||||
{
|
|
||||||
arfile = enter_file (arname);
|
|
||||||
arname_used = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
(void) f_mtime (arfile, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = 1;
|
|
||||||
switch (ar_member_touch (arname, memname))
|
|
||||||
{
|
|
||||||
case -1:
|
|
||||||
error (NILF, _("touch: Archive `%s' does not exist"), arname);
|
|
||||||
break;
|
|
||||||
case -2:
|
|
||||||
error (NILF, _("touch: `%s' is not a valid archive"), arname);
|
|
||||||
break;
|
|
||||||
case -3:
|
|
||||||
perror_with_name ("touch: ", arname);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
error (NILF,
|
|
||||||
_("touch: Member `%s' does not exist in `%s'"), memname, arname);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
val = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
error (NILF,
|
|
||||||
_("touch: Bad return code from ar_member_touch on `%s'"), name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!arname_used)
|
|
||||||
free (arname);
|
|
||||||
free (memname);
|
|
||||||
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
#endif /* !VMS */
|
|
||||||
|
|
||||||
/* State of an `ar_glob' run, passed to `ar_glob_match'. */
|
|
||||||
|
|
||||||
struct ar_glob_state
|
|
||||||
{
|
|
||||||
char *arname;
|
|
||||||
char *pattern;
|
|
||||||
unsigned int size;
|
|
||||||
struct nameseq *chain;
|
|
||||||
unsigned int n;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This function is called by `ar_scan' to match one archive
|
|
||||||
element against the pattern in STATE. */
|
|
||||||
|
|
||||||
static long int
|
|
||||||
ar_glob_match (desc, mem, truncated,
|
|
||||||
hdrpos, datapos, size, date, uid, gid, mode,
|
|
||||||
state)
|
|
||||||
int desc;
|
|
||||||
char *mem;
|
|
||||||
int truncated;
|
|
||||||
long int hdrpos, datapos, size, date;
|
|
||||||
int uid, gid, mode;
|
|
||||||
struct ar_glob_state *state;
|
|
||||||
{
|
|
||||||
if (fnmatch (state->pattern, mem, FNM_PATHNAME|FNM_PERIOD) == 0)
|
|
||||||
{
|
|
||||||
/* We have a match. Add it to the chain. */
|
|
||||||
struct nameseq *new = (struct nameseq *) xmalloc (state->size);
|
|
||||||
new->name = concat (state->arname, mem, ")");
|
|
||||||
new->next = state->chain;
|
|
||||||
state->chain = new;
|
|
||||||
++state->n;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0L;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return nonzero if PATTERN contains any metacharacters.
|
|
||||||
Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
||||||
static int
|
|
||||||
glob_pattern_p (pattern, quote)
|
|
||||||
const char *pattern;
|
|
||||||
const int quote;
|
|
||||||
{
|
|
||||||
register const char *p;
|
|
||||||
int open = 0;
|
|
||||||
|
|
||||||
for (p = pattern; *p != '\0'; ++p)
|
|
||||||
switch (*p)
|
|
||||||
{
|
|
||||||
case '?':
|
|
||||||
case '*':
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
if (quote)
|
|
||||||
++p;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '[':
|
|
||||||
open = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ']':
|
|
||||||
if (open)
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Glob for MEMBER_PATTERN in archive ARNAME.
|
|
||||||
Return a malloc'd chain of matching elements (or nil if none). */
|
|
||||||
|
|
||||||
struct nameseq *
|
|
||||||
ar_glob (arname, member_pattern, size)
|
|
||||||
char *arname, *member_pattern;
|
|
||||||
unsigned int size;
|
|
||||||
{
|
|
||||||
struct ar_glob_state state;
|
|
||||||
char **names;
|
|
||||||
struct nameseq *n;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
if (! glob_pattern_p (member_pattern, 1))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Scan the archive for matches.
|
|
||||||
ar_glob_match will accumulate them in STATE.chain. */
|
|
||||||
i = strlen (arname);
|
|
||||||
state.arname = (char *) alloca (i + 2);
|
|
||||||
bcopy (arname, state.arname, i);
|
|
||||||
state.arname[i] = '(';
|
|
||||||
state.arname[i + 1] = '\0';
|
|
||||||
state.pattern = member_pattern;
|
|
||||||
state.size = size;
|
|
||||||
state.chain = 0;
|
|
||||||
state.n = 0;
|
|
||||||
(void) ar_scan (arname, ar_glob_match, (long int) &state);
|
|
||||||
|
|
||||||
if (state.chain == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Now put the names into a vector for sorting. */
|
|
||||||
names = (char **) alloca (state.n * sizeof (char *));
|
|
||||||
i = 0;
|
|
||||||
for (n = state.chain; n != 0; n = n->next)
|
|
||||||
names[i++] = n->name;
|
|
||||||
|
|
||||||
/* Sort them alphabetically. */
|
|
||||||
qsort ((char *) names, i, sizeof (*names), alpha_compare);
|
|
||||||
|
|
||||||
/* Put them back into the chain in the sorted order. */
|
|
||||||
i = 0;
|
|
||||||
for (n = state.chain; n != 0; n = n->next)
|
|
||||||
n->name = names[i++];
|
|
||||||
|
|
||||||
return state.chain;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* Not NO_ARCHIVES. */
|
|
||||||
@ -1,857 +0,0 @@
|
|||||||
/* Library function for scanning an archive file.
|
|
||||||
Copyright (C) 1987,89,91,92,93,94,95,97 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_FCNTL_H
|
|
||||||
#include <fcntl.h>
|
|
||||||
#else
|
|
||||||
#include <sys/file.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
|
|
||||||
#ifdef VMS
|
|
||||||
#include <lbrdef.h>
|
|
||||||
#include <mhddef.h>
|
|
||||||
#include <credef.h>
|
|
||||||
#include <descrip.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#if __DECC
|
|
||||||
#include <unixlib.h>
|
|
||||||
#include <lbr$routines.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void *VMS_lib_idx;
|
|
||||||
|
|
||||||
static char *VMS_saved_memname;
|
|
||||||
|
|
||||||
static time_t VMS_member_date;
|
|
||||||
|
|
||||||
static long int (*VMS_function) ();
|
|
||||||
|
|
||||||
static int
|
|
||||||
VMS_get_member_info (module, rfa)
|
|
||||||
struct dsc$descriptor_s *module;
|
|
||||||
unsigned long *rfa;
|
|
||||||
{
|
|
||||||
int status, i;
|
|
||||||
long int fnval;
|
|
||||||
|
|
||||||
time_t val;
|
|
||||||
|
|
||||||
static struct dsc$descriptor_s bufdesc =
|
|
||||||
{ 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL };
|
|
||||||
|
|
||||||
struct mhddef *mhd;
|
|
||||||
char filename[128];
|
|
||||||
|
|
||||||
bufdesc.dsc$a_pointer = filename;
|
|
||||||
bufdesc.dsc$w_length = sizeof (filename);
|
|
||||||
|
|
||||||
status = lbr$set_module (&VMS_lib_idx, rfa, &bufdesc,
|
|
||||||
&bufdesc.dsc$w_length, 0);
|
|
||||||
if (! status)
|
|
||||||
{
|
|
||||||
error (NILF, _("lbr$set_module failed to extract module info, status = %d"),
|
|
||||||
status);
|
|
||||||
|
|
||||||
lbr$close (&VMS_lib_idx);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
mhd = (struct mhddef *) filename;
|
|
||||||
|
|
||||||
#ifdef __DECC
|
|
||||||
val = decc$fix_time (&mhd->mhd$l_datim);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (i = 0; i < module->dsc$w_length; i++)
|
|
||||||
filename[i] = _tolower ((unsigned char)module->dsc$a_pointer[i]);
|
|
||||||
|
|
||||||
filename[i] = '\0';
|
|
||||||
|
|
||||||
VMS_member_date = (time_t) -1;
|
|
||||||
|
|
||||||
fnval =
|
|
||||||
(*VMS_function) (-1, filename, 0, 0, 0, 0, val, 0, 0, 0,
|
|
||||||
VMS_saved_memname);
|
|
||||||
|
|
||||||
if (fnval)
|
|
||||||
{
|
|
||||||
VMS_member_date = fnval;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Takes three arguments ARCHIVE, FUNCTION and ARG.
|
|
||||||
|
|
||||||
Open the archive named ARCHIVE, find its members one by one,
|
|
||||||
and for each one call FUNCTION with the following arguments:
|
|
||||||
archive file descriptor for reading the data,
|
|
||||||
member name,
|
|
||||||
member name might be truncated flag,
|
|
||||||
member header position in file,
|
|
||||||
member data position in file,
|
|
||||||
member data size,
|
|
||||||
member date,
|
|
||||||
member uid,
|
|
||||||
member gid,
|
|
||||||
member protection mode,
|
|
||||||
ARG.
|
|
||||||
|
|
||||||
NOTE: on VMS systems, only name, date, and arg are meaningful!
|
|
||||||
|
|
||||||
The descriptor is poised to read the data of the member
|
|
||||||
when FUNCTION is called. It does not matter how much
|
|
||||||
data FUNCTION reads.
|
|
||||||
|
|
||||||
If FUNCTION returns nonzero, we immediately return
|
|
||||||
what FUNCTION returned.
|
|
||||||
|
|
||||||
Returns -1 if archive does not exist,
|
|
||||||
Returns -2 if archive has invalid format.
|
|
||||||
Returns 0 if have scanned successfully. */
|
|
||||||
|
|
||||||
long int
|
|
||||||
ar_scan (archive, function, arg)
|
|
||||||
char *archive;
|
|
||||||
long int (*function) ();
|
|
||||||
long int arg;
|
|
||||||
{
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
static struct dsc$descriptor_s libdesc =
|
|
||||||
{ 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL };
|
|
||||||
|
|
||||||
unsigned long func = LBR$C_READ;
|
|
||||||
unsigned long type = LBR$C_TYP_UNK;
|
|
||||||
unsigned long index = 1;
|
|
||||||
|
|
||||||
int status;
|
|
||||||
|
|
||||||
status = lbr$ini_control (&VMS_lib_idx, &func, &type, 0);
|
|
||||||
|
|
||||||
if (! status)
|
|
||||||
{
|
|
||||||
error (NILF, _("lbr$ini_control failed with status = %d"),status);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
libdesc.dsc$a_pointer = archive;
|
|
||||||
libdesc.dsc$w_length = strlen (archive);
|
|
||||||
|
|
||||||
status = lbr$open (&VMS_lib_idx, &libdesc, 0, 0, 0, 0, 0);
|
|
||||||
|
|
||||||
if (! status)
|
|
||||||
{
|
|
||||||
error (NILF, _("unable to open library `%s' to lookup member `%s'"),
|
|
||||||
archive, (char *)arg);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
VMS_saved_memname = (char *)arg;
|
|
||||||
|
|
||||||
/* For comparison, delete .obj from arg name. */
|
|
||||||
|
|
||||||
p = strrchr (VMS_saved_memname, '.');
|
|
||||||
if (p)
|
|
||||||
*p = '\0';
|
|
||||||
|
|
||||||
VMS_function = function;
|
|
||||||
|
|
||||||
VMS_member_date = (time_t) -1;
|
|
||||||
lbr$get_index (&VMS_lib_idx, &index, VMS_get_member_info, 0);
|
|
||||||
|
|
||||||
/* Undo the damage. */
|
|
||||||
if (p)
|
|
||||||
*p = '.';
|
|
||||||
|
|
||||||
lbr$close (&VMS_lib_idx);
|
|
||||||
|
|
||||||
return VMS_member_date > 0 ? VMS_member_date : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* !VMS */
|
|
||||||
|
|
||||||
/* SCO Unix's compiler defines both of these. */
|
|
||||||
#ifdef M_UNIX
|
|
||||||
#undef M_XENIX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* On the sun386i and in System V rel 3, ar.h defines two different archive
|
|
||||||
formats depending upon whether you have defined PORTAR (normal) or PORT5AR
|
|
||||||
(System V Release 1). There is no default, one or the other must be defined
|
|
||||||
to have a nonzero value. */
|
|
||||||
|
|
||||||
#if (!defined (PORTAR) || PORTAR == 0) && (!defined (PORT5AR) || PORT5AR == 0)
|
|
||||||
#undef PORTAR
|
|
||||||
#ifdef M_XENIX
|
|
||||||
/* According to Jim Sievert <jas1@rsvl.unisys.com>, for SCO XENIX defining
|
|
||||||
PORTAR to 1 gets the wrong archive format, and defining it to 0 gets the
|
|
||||||
right one. */
|
|
||||||
#define PORTAR 0
|
|
||||||
#else
|
|
||||||
#define PORTAR 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* On AIX, define these symbols to be sure to get both archive formats.
|
|
||||||
AIX 4.3 introduced the "big" archive format to support 64-bit object
|
|
||||||
files, so on AIX 4.3 systems we need to support both the "normal" and
|
|
||||||
"big" archive formats. An archive's format is indicated in the
|
|
||||||
"fl_magic" field of the "FL_HDR" structure. For a normal archive,
|
|
||||||
this field will be the string defined by the AIAMAG symbol. For a
|
|
||||||
"big" archive, it will be the string defined by the AIAMAGBIG symbol
|
|
||||||
(at least on AIX it works this way).
|
|
||||||
|
|
||||||
Note: we'll define these symbols regardless of which AIX version
|
|
||||||
we're compiling on, but this is okay since we'll use the new symbols
|
|
||||||
only if they're present. */
|
|
||||||
#ifdef _AIX
|
|
||||||
# define __AR_SMALL__
|
|
||||||
# define __AR_BIG__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef WINDOWS32
|
|
||||||
# ifndef __BEOS__
|
|
||||||
# include <ar.h>
|
|
||||||
# else
|
|
||||||
/* BeOS 5 doesn't have <ar.h> but has archives in the same format
|
|
||||||
* as many other Unices. This was taken from GNU binutils for BeOS.
|
|
||||||
*/
|
|
||||||
# define ARMAG "!<arch>\n" /* String that begins an archive file. */
|
|
||||||
# define SARMAG 8 /* Size of that string. */
|
|
||||||
# define ARFMAG "`\n" /* String in ar_fmag at end of each header. */
|
|
||||||
struct ar_hdr
|
|
||||||
{
|
|
||||||
char ar_name[16]; /* Member file name, sometimes / terminated. */
|
|
||||||
char ar_date[12]; /* File date, decimal seconds since Epoch. */
|
|
||||||
char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */
|
|
||||||
char ar_mode[8]; /* File mode, in ASCII octal. */
|
|
||||||
char ar_size[10]; /* File size, in ASCII decimal. */
|
|
||||||
char ar_fmag[2]; /* Always contains ARFMAG. */
|
|
||||||
};
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
/* These should allow us to read Windows (VC++) libraries (according to Frank
|
|
||||||
* Libbrecht <frankl@abzx.belgium.hp.com>)
|
|
||||||
*/
|
|
||||||
# include <windows.h>
|
|
||||||
# include <windef.h>
|
|
||||||
# include <io.h>
|
|
||||||
# define ARMAG IMAGE_ARCHIVE_START
|
|
||||||
# define SARMAG IMAGE_ARCHIVE_START_SIZE
|
|
||||||
# define ar_hdr _IMAGE_ARCHIVE_MEMBER_HEADER
|
|
||||||
# define ar_name Name
|
|
||||||
# define ar_mode Mode
|
|
||||||
# define ar_size Size
|
|
||||||
# define ar_date Date
|
|
||||||
# define ar_uid UserID
|
|
||||||
# define ar_gid GroupID
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Cray's <ar.h> apparently defines this. */
|
|
||||||
#ifndef AR_HDR_SIZE
|
|
||||||
# define AR_HDR_SIZE (sizeof (struct ar_hdr))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Takes three arguments ARCHIVE, FUNCTION and ARG.
|
|
||||||
|
|
||||||
Open the archive named ARCHIVE, find its members one by one,
|
|
||||||
and for each one call FUNCTION with the following arguments:
|
|
||||||
archive file descriptor for reading the data,
|
|
||||||
member name,
|
|
||||||
member name might be truncated flag,
|
|
||||||
member header position in file,
|
|
||||||
member data position in file,
|
|
||||||
member data size,
|
|
||||||
member date,
|
|
||||||
member uid,
|
|
||||||
member gid,
|
|
||||||
member protection mode,
|
|
||||||
ARG.
|
|
||||||
|
|
||||||
The descriptor is poised to read the data of the member
|
|
||||||
when FUNCTION is called. It does not matter how much
|
|
||||||
data FUNCTION reads.
|
|
||||||
|
|
||||||
If FUNCTION returns nonzero, we immediately return
|
|
||||||
what FUNCTION returned.
|
|
||||||
|
|
||||||
Returns -1 if archive does not exist,
|
|
||||||
Returns -2 if archive has invalid format.
|
|
||||||
Returns 0 if have scanned successfully. */
|
|
||||||
|
|
||||||
long int
|
|
||||||
ar_scan (archive, function, arg)
|
|
||||||
char *archive;
|
|
||||||
long int (*function) ();
|
|
||||||
long int arg;
|
|
||||||
{
|
|
||||||
#ifdef AIAMAG
|
|
||||||
FL_HDR fl_header;
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
int big_archive = 0;
|
|
||||||
FL_HDR_BIG fl_header_big;
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
int long_name = 0;
|
|
||||||
#endif
|
|
||||||
char *namemap = 0;
|
|
||||||
register int desc = open (archive, O_RDONLY, 0);
|
|
||||||
if (desc < 0)
|
|
||||||
return -1;
|
|
||||||
#ifdef SARMAG
|
|
||||||
{
|
|
||||||
char buf[SARMAG];
|
|
||||||
register int nread = read (desc, buf, SARMAG);
|
|
||||||
if (nread != SARMAG || bcmp (buf, ARMAG, SARMAG))
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#ifdef AIAMAG
|
|
||||||
{
|
|
||||||
register int nread = read (desc, (char *) &fl_header, FL_HSZ);
|
|
||||||
|
|
||||||
if (nread != FL_HSZ)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
/* If this is a "big" archive, then set the flag and
|
|
||||||
re-read the header into the "big" structure. */
|
|
||||||
if (!bcmp (fl_header.fl_magic, AIAMAGBIG, SAIAMAG))
|
|
||||||
{
|
|
||||||
big_archive = 1;
|
|
||||||
|
|
||||||
/* seek back to beginning of archive */
|
|
||||||
if (lseek (desc, 0, 0) < 0)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* re-read the header into the "big" structure */
|
|
||||||
nread = read (desc, (char *) &fl_header_big, FL_HSZ_BIG);
|
|
||||||
if (nread != FL_HSZ_BIG)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
/* Check to make sure this is a "normal" archive. */
|
|
||||||
if (bcmp (fl_header.fl_magic, AIAMAG, SAIAMAG))
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
#ifndef M_XENIX
|
|
||||||
int buf;
|
|
||||||
#else
|
|
||||||
unsigned short int buf;
|
|
||||||
#endif
|
|
||||||
register int nread = read(desc, &buf, sizeof (buf));
|
|
||||||
if (nread != sizeof (buf) || buf != ARMAG)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Now find the members one by one. */
|
|
||||||
{
|
|
||||||
#ifdef SARMAG
|
|
||||||
register long int member_offset = SARMAG;
|
|
||||||
#else
|
|
||||||
#ifdef AIAMAG
|
|
||||||
long int member_offset;
|
|
||||||
long int last_member_offset;
|
|
||||||
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
if ( big_archive )
|
|
||||||
{
|
|
||||||
sscanf (fl_header_big.fl_fstmoff, "%20ld", &member_offset);
|
|
||||||
sscanf (fl_header_big.fl_lstmoff, "%20ld", &last_member_offset);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
sscanf (fl_header.fl_fstmoff, "%12ld", &member_offset);
|
|
||||||
sscanf (fl_header.fl_lstmoff, "%12ld", &last_member_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (member_offset == 0)
|
|
||||||
{
|
|
||||||
/* Empty archive. */
|
|
||||||
close (desc);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#ifndef M_XENIX
|
|
||||||
register long int member_offset = sizeof (int);
|
|
||||||
#else /* Xenix. */
|
|
||||||
register long int member_offset = sizeof (unsigned short int);
|
|
||||||
#endif /* Not Xenix. */
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
register int nread;
|
|
||||||
struct ar_hdr member_header;
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
struct ar_hdr_big member_header_big;
|
|
||||||
#endif
|
|
||||||
#ifdef AIAMAG
|
|
||||||
char name[256];
|
|
||||||
int name_len;
|
|
||||||
long int dateval;
|
|
||||||
int uidval, gidval;
|
|
||||||
long int data_offset;
|
|
||||||
#else
|
|
||||||
char namebuf[sizeof member_header.ar_name + 1];
|
|
||||||
char *name;
|
|
||||||
int is_namemap; /* Nonzero if this entry maps long names. */
|
|
||||||
#endif
|
|
||||||
long int eltsize;
|
|
||||||
int eltmode;
|
|
||||||
long int fnval;
|
|
||||||
|
|
||||||
if (lseek (desc, member_offset, 0) < 0)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef AIAMAG
|
|
||||||
#define AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name))
|
|
||||||
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
if (big_archive)
|
|
||||||
{
|
|
||||||
nread = read (desc, (char *) &member_header_big,
|
|
||||||
AR_MEMHDR_SZ(member_header_big) );
|
|
||||||
|
|
||||||
if (nread != AR_MEMHDR_SZ(member_header_big))
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
sscanf (member_header_big.ar_namlen, "%4d", &name_len);
|
|
||||||
nread = read (desc, name, name_len);
|
|
||||||
|
|
||||||
if (nread != name_len)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
name[name_len] = 0;
|
|
||||||
|
|
||||||
sscanf (member_header_big.ar_date, "%12ld", &dateval);
|
|
||||||
sscanf (member_header_big.ar_uid, "%12d", &uidval);
|
|
||||||
sscanf (member_header_big.ar_gid, "%12d", &gidval);
|
|
||||||
sscanf (member_header_big.ar_mode, "%12o", &eltmode);
|
|
||||||
sscanf (member_header_big.ar_size, "%20ld", &eltsize);
|
|
||||||
|
|
||||||
data_offset = (member_offset + AR_MEMHDR_SZ(member_header_big)
|
|
||||||
+ name_len + 2);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
nread = read (desc, (char *) &member_header,
|
|
||||||
AR_MEMHDR_SZ(member_header) );
|
|
||||||
|
|
||||||
if (nread != AR_MEMHDR_SZ(member_header))
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
sscanf (member_header.ar_namlen, "%4d", &name_len);
|
|
||||||
nread = read (desc, name, name_len);
|
|
||||||
|
|
||||||
if (nread != name_len)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
name[name_len] = 0;
|
|
||||||
|
|
||||||
sscanf (member_header.ar_date, "%12ld", &dateval);
|
|
||||||
sscanf (member_header.ar_uid, "%12d", &uidval);
|
|
||||||
sscanf (member_header.ar_gid, "%12d", &gidval);
|
|
||||||
sscanf (member_header.ar_mode, "%12o", &eltmode);
|
|
||||||
sscanf (member_header.ar_size, "%12ld", &eltsize);
|
|
||||||
|
|
||||||
data_offset = (member_offset + AR_MEMHDR_SZ(member_header)
|
|
||||||
+ name_len + 2);
|
|
||||||
}
|
|
||||||
data_offset += data_offset % 2;
|
|
||||||
|
|
||||||
fnval =
|
|
||||||
(*function) (desc, name, 0,
|
|
||||||
member_offset, data_offset, eltsize,
|
|
||||||
dateval, uidval, gidval,
|
|
||||||
eltmode, arg);
|
|
||||||
|
|
||||||
#else /* Not AIAMAG. */
|
|
||||||
nread = read (desc, (char *) &member_header, AR_HDR_SIZE);
|
|
||||||
if (nread == 0)
|
|
||||||
/* No data left means end of file; that is OK. */
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (nread != AR_HDR_SIZE
|
|
||||||
#if defined(ARFMAG) || defined(ARFZMAG)
|
|
||||||
|| (
|
|
||||||
# ifdef ARFMAG
|
|
||||||
bcmp (member_header.ar_fmag, ARFMAG, 2)
|
|
||||||
# else
|
|
||||||
1
|
|
||||||
# endif
|
|
||||||
&&
|
|
||||||
# ifdef ARFZMAG
|
|
||||||
bcmp (member_header.ar_fmag, ARFZMAG, 2)
|
|
||||||
# else
|
|
||||||
1
|
|
||||||
# endif
|
|
||||||
)
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
name = namebuf;
|
|
||||||
bcopy (member_header.ar_name, name, sizeof member_header.ar_name);
|
|
||||||
{
|
|
||||||
register char *p = name + sizeof member_header.ar_name;
|
|
||||||
do
|
|
||||||
*p = '\0';
|
|
||||||
while (p > name && *--p == ' ');
|
|
||||||
|
|
||||||
#ifndef AIAMAG
|
|
||||||
/* If the member name is "//" or "ARFILENAMES/" this may be
|
|
||||||
a list of file name mappings. The maximum file name
|
|
||||||
length supported by the standard archive format is 14
|
|
||||||
characters. This member will actually always be the
|
|
||||||
first or second entry in the archive, but we don't check
|
|
||||||
that. */
|
|
||||||
is_namemap = (!strcmp (name, "//")
|
|
||||||
|| !strcmp (name, "ARFILENAMES/"));
|
|
||||||
#endif /* Not AIAMAG. */
|
|
||||||
/* On some systems, there is a slash after each member name. */
|
|
||||||
if (*p == '/')
|
|
||||||
*p = '\0';
|
|
||||||
|
|
||||||
#ifndef AIAMAG
|
|
||||||
/* If the member name starts with a space or a slash, this
|
|
||||||
is an index into the file name mappings (used by GNU ar).
|
|
||||||
Otherwise if the member name looks like #1/NUMBER the
|
|
||||||
real member name appears in the element data (used by
|
|
||||||
4.4BSD). */
|
|
||||||
if (! is_namemap
|
|
||||||
&& (name[0] == ' ' || name[0] == '/')
|
|
||||||
&& namemap != 0)
|
|
||||||
{
|
|
||||||
name = namemap + atoi (name + 1);
|
|
||||||
long_name = 1;
|
|
||||||
}
|
|
||||||
else if (name[0] == '#'
|
|
||||||
&& name[1] == '1'
|
|
||||||
&& name[2] == '/')
|
|
||||||
{
|
|
||||||
int namesize = atoi (name + 3);
|
|
||||||
|
|
||||||
name = (char *) alloca (namesize + 1);
|
|
||||||
nread = read (desc, name, namesize);
|
|
||||||
if (nread != namesize)
|
|
||||||
{
|
|
||||||
close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
name[namesize] = '\0';
|
|
||||||
|
|
||||||
long_name = 1;
|
|
||||||
}
|
|
||||||
#endif /* Not AIAMAG. */
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef M_XENIX
|
|
||||||
sscanf (member_header.ar_mode, "%o", &eltmode);
|
|
||||||
eltsize = atol (member_header.ar_size);
|
|
||||||
#else /* Xenix. */
|
|
||||||
eltmode = (unsigned short int) member_header.ar_mode;
|
|
||||||
eltsize = member_header.ar_size;
|
|
||||||
#endif /* Not Xenix. */
|
|
||||||
|
|
||||||
fnval =
|
|
||||||
(*function) (desc, name, ! long_name, member_offset,
|
|
||||||
member_offset + AR_HDR_SIZE, eltsize,
|
|
||||||
#ifndef M_XENIX
|
|
||||||
atol (member_header.ar_date),
|
|
||||||
atoi (member_header.ar_uid),
|
|
||||||
atoi (member_header.ar_gid),
|
|
||||||
#else /* Xenix. */
|
|
||||||
member_header.ar_date,
|
|
||||||
member_header.ar_uid,
|
|
||||||
member_header.ar_gid,
|
|
||||||
#endif /* Not Xenix. */
|
|
||||||
eltmode, arg);
|
|
||||||
|
|
||||||
#endif /* AIAMAG. */
|
|
||||||
|
|
||||||
if (fnval)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return fnval;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef AIAMAG
|
|
||||||
if (member_offset == last_member_offset)
|
|
||||||
/* End of the chain. */
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifdef AIAMAGBIG
|
|
||||||
if (big_archive)
|
|
||||||
sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
sscanf (member_header.ar_nxtmem, "%12ld", &member_offset);
|
|
||||||
|
|
||||||
if (lseek (desc, member_offset, 0) != member_offset)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* If this member maps archive names, we must read it in. The
|
|
||||||
name map will always precede any members whose names must
|
|
||||||
be mapped. */
|
|
||||||
if (is_namemap)
|
|
||||||
{
|
|
||||||
char *clear;
|
|
||||||
char *limit;
|
|
||||||
|
|
||||||
namemap = (char *) alloca (eltsize);
|
|
||||||
nread = read (desc, namemap, eltsize);
|
|
||||||
if (nread != eltsize)
|
|
||||||
{
|
|
||||||
(void) close (desc);
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The names are separated by newlines. Some formats have
|
|
||||||
a trailing slash. Null terminate the strings for
|
|
||||||
convenience. */
|
|
||||||
limit = namemap + eltsize;
|
|
||||||
for (clear = namemap; clear < limit; clear++)
|
|
||||||
{
|
|
||||||
if (*clear == '\n')
|
|
||||||
{
|
|
||||||
*clear = '\0';
|
|
||||||
if (clear[-1] == '/')
|
|
||||||
clear[-1] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
is_namemap = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
member_offset += AR_HDR_SIZE + eltsize;
|
|
||||||
if (member_offset % 2 != 0)
|
|
||||||
member_offset++;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close (desc);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* !VMS */
|
|
||||||
|
|
||||||
/* Return nonzero iff NAME matches MEM.
|
|
||||||
If TRUNCATED is nonzero, MEM may be truncated to
|
|
||||||
sizeof (struct ar_hdr.ar_name) - 1. */
|
|
||||||
|
|
||||||
int
|
|
||||||
ar_name_equal (name, mem, truncated)
|
|
||||||
char *name, *mem;
|
|
||||||
int truncated;
|
|
||||||
{
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
p = strrchr (name, '/');
|
|
||||||
if (p != 0)
|
|
||||||
name = p + 1;
|
|
||||||
|
|
||||||
#ifndef VMS
|
|
||||||
if (truncated)
|
|
||||||
{
|
|
||||||
#ifdef AIAMAG
|
|
||||||
/* TRUNCATED should never be set on this system. */
|
|
||||||
abort ();
|
|
||||||
#else
|
|
||||||
struct ar_hdr hdr;
|
|
||||||
#if !defined (__hpux) && !defined (cray)
|
|
||||||
return strneq (name, mem, sizeof(hdr.ar_name) - 1);
|
|
||||||
#else
|
|
||||||
return strneq (name, mem, sizeof(hdr.ar_name) - 2);
|
|
||||||
#endif /* !__hpux && !cray */
|
|
||||||
#endif /* !AIAMAG */
|
|
||||||
}
|
|
||||||
#endif /* !VMS */
|
|
||||||
|
|
||||||
return !strcmp (name, mem);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef VMS
|
|
||||||
/* ARGSUSED */
|
|
||||||
static long int
|
|
||||||
ar_member_pos (desc, mem, truncated,
|
|
||||||
hdrpos, datapos, size, date, uid, gid, mode, name)
|
|
||||||
int desc;
|
|
||||||
char *mem;
|
|
||||||
int truncated;
|
|
||||||
long int hdrpos, datapos, size, date;
|
|
||||||
int uid, gid, mode;
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
if (!ar_name_equal (name, mem, truncated))
|
|
||||||
return 0;
|
|
||||||
return hdrpos;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set date of member MEMNAME in archive ARNAME to current time.
|
|
||||||
Returns 0 if successful,
|
|
||||||
-1 if file ARNAME does not exist,
|
|
||||||
-2 if not a valid archive,
|
|
||||||
-3 if other random system call error (including file read-only),
|
|
||||||
1 if valid but member MEMNAME does not exist. */
|
|
||||||
|
|
||||||
int
|
|
||||||
ar_member_touch (arname, memname)
|
|
||||||
char *arname, *memname;
|
|
||||||
{
|
|
||||||
register long int pos = ar_scan (arname, ar_member_pos, (long int) memname);
|
|
||||||
register int fd;
|
|
||||||
struct ar_hdr ar_hdr;
|
|
||||||
register int i;
|
|
||||||
struct stat statbuf;
|
|
||||||
|
|
||||||
if (pos < 0)
|
|
||||||
return (int) pos;
|
|
||||||
if (!pos)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
fd = open (arname, O_RDWR, 0666);
|
|
||||||
if (fd < 0)
|
|
||||||
return -3;
|
|
||||||
/* Read in this member's header */
|
|
||||||
if (lseek (fd, pos, 0) < 0)
|
|
||||||
goto lose;
|
|
||||||
if (AR_HDR_SIZE != read (fd, (char *) &ar_hdr, AR_HDR_SIZE))
|
|
||||||
goto lose;
|
|
||||||
/* Write back the header, thus touching the archive file. */
|
|
||||||
if (lseek (fd, pos, 0) < 0)
|
|
||||||
goto lose;
|
|
||||||
if (AR_HDR_SIZE != write (fd, (char *) &ar_hdr, AR_HDR_SIZE))
|
|
||||||
goto lose;
|
|
||||||
/* The file's mtime is the time we we want. */
|
|
||||||
while (fstat (fd, &statbuf) < 0 && EINTR_SET)
|
|
||||||
;
|
|
||||||
#if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32)
|
|
||||||
/* Advance member's time to that time */
|
|
||||||
for (i = 0; i < sizeof ar_hdr.ar_date; i++)
|
|
||||||
ar_hdr.ar_date[i] = ' ';
|
|
||||||
sprintf (ar_hdr.ar_date, "%ld", (long int) statbuf.st_mtime);
|
|
||||||
#ifdef AIAMAG
|
|
||||||
ar_hdr.ar_date[strlen(ar_hdr.ar_date)] = ' ';
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
ar_hdr.ar_date = statbuf.st_mtime;
|
|
||||||
#endif
|
|
||||||
/* Write back this member's header */
|
|
||||||
if (lseek (fd, pos, 0) < 0)
|
|
||||||
goto lose;
|
|
||||||
if (AR_HDR_SIZE != write (fd, (char *) &ar_hdr, AR_HDR_SIZE))
|
|
||||||
goto lose;
|
|
||||||
close (fd);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
lose:
|
|
||||||
i = errno;
|
|
||||||
close (fd);
|
|
||||||
errno = i;
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TEST
|
|
||||||
|
|
||||||
long int
|
|
||||||
describe_member (desc, name, truncated,
|
|
||||||
hdrpos, datapos, size, date, uid, gid, mode)
|
|
||||||
int desc;
|
|
||||||
char *name;
|
|
||||||
int truncated;
|
|
||||||
long int hdrpos, datapos, size, date;
|
|
||||||
int uid, gid, mode;
|
|
||||||
{
|
|
||||||
extern char *ctime ();
|
|
||||||
|
|
||||||
printf (_("Member `%s'%s: %ld bytes at %ld (%ld).\n"),
|
|
||||||
name, truncated ? _(" (name might be truncated)") : "",
|
|
||||||
size, hdrpos, datapos);
|
|
||||||
printf (_(" Date %s"), ctime (&date));
|
|
||||||
printf (_(" uid = %d, gid = %d, mode = 0%o.\n"), uid, gid, mode);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
main (argc, argv)
|
|
||||||
int argc;
|
|
||||||
char **argv;
|
|
||||||
{
|
|
||||||
ar_scan (argv[1], describe_member);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* TEST. */
|
|
||||||
|
|
||||||
#endif /* NO_ARCHIVES. */
|
|
||||||
@ -1,80 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Shell script to build GNU Make in the absence of any `make' program.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
|
|
||||||
# This file is part of GNU Make.
|
|
||||||
#
|
|
||||||
# GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# GNU Make is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
# See Makefile.in for comments describing these variables.
|
|
||||||
|
|
||||||
srcdir='@srcdir@'
|
|
||||||
CC='@CC@'
|
|
||||||
CFLAGS='@CFLAGS@'
|
|
||||||
CPPFLAGS='@CPPFLAGS@'
|
|
||||||
LDFLAGS='@LDFLAGS@'
|
|
||||||
ALLOCA='@ALLOCA@'
|
|
||||||
LOADLIBES='@LIBS@'
|
|
||||||
extras='@LIBOBJS@'
|
|
||||||
REMOTE='@REMOTE@'
|
|
||||||
GLOBLIB='@GLOBLIB@'
|
|
||||||
|
|
||||||
# Common prefix for machine-independent installed files.
|
|
||||||
prefix='@prefix@'
|
|
||||||
# Common prefix for machine-dependent installed files.
|
|
||||||
exec_prefix=`eval echo @exec_prefix@`
|
|
||||||
# Directory to find libraries in for `-lXXX'.
|
|
||||||
libdir=${exec_prefix}/lib
|
|
||||||
# Directory to search by default for included makefiles.
|
|
||||||
includedir=${prefix}/include
|
|
||||||
|
|
||||||
localedir=${prefix}/share/locale
|
|
||||||
aliaspath=${localedir}:.
|
|
||||||
|
|
||||||
defines="-DALIASPATH=\"${aliaspath}\" -DLOCALEDIR=\"${localedir}\" -DLIBDIR=\"${libdir}\" -DINCLUDEDIR=\"${includedir}\""' @DEFS@'
|
|
||||||
|
|
||||||
# Exit as soon as any command fails.
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# These are all the objects we need to link together.
|
|
||||||
objs="ar.o arscan.o commands.o dir.o expand.o file.o function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o vpath.o default.o version.o getopt1.o remote-${REMOTE}.o ${extras} ${ALLOCA}"
|
|
||||||
|
|
||||||
if [ x"$GLOBLIB" != x ]; then
|
|
||||||
objs="$objs glob/fnmatch.o glob/glob.o"
|
|
||||||
globinc=-I${srcdir}/glob
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compile the source files into those objects.
|
|
||||||
for file in `echo ${objs} | sed 's/\.o/.c/g'`; do
|
|
||||||
echo compiling ${file}...
|
|
||||||
$CC $defines $CPPFLAGS $CFLAGS \
|
|
||||||
-c -I. -I${srcdir} ${globinc} ${srcdir}/$file
|
|
||||||
done
|
|
||||||
|
|
||||||
# The object files were actually all put in the current directory.
|
|
||||||
# Remove the source directory names from the list.
|
|
||||||
srcobjs="$objs"
|
|
||||||
objs=
|
|
||||||
for obj in $srcobjs; do
|
|
||||||
objs="$objs `basename $obj`"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Link all the objects together.
|
|
||||||
echo linking make...
|
|
||||||
$CC $LDFLAGS $objs $LOADLIBES -o make.new
|
|
||||||
echo done
|
|
||||||
mv -f make.new make
|
|
||||||
@ -1,137 +0,0 @@
|
|||||||
set make=gnumake
|
|
||||||
cd w32\subproc
|
|
||||||
echo "Creating the subproc library"
|
|
||||||
%ComSpec% /c build.bat
|
|
||||||
cd ..\..
|
|
||||||
del link.dbg link.rel
|
|
||||||
del config.h
|
|
||||||
copy config.h.W32 config.h
|
|
||||||
echo off
|
|
||||||
echo "Creating GNU make for Windows 95/NT"
|
|
||||||
echo on
|
|
||||||
if not exist .\WinDebug\nul mkdir .\WinDebug
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D TIVOLI /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c variable.c
|
|
||||||
echo WinDebug\variable.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c rule.c
|
|
||||||
echo WinDebug\rule.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remote-stub.c
|
|
||||||
echo WinDebug\remote-stub.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c commands.c
|
|
||||||
echo WinDebug\commands.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c file.c
|
|
||||||
echo WinDebug\file.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getloadavg.c
|
|
||||||
echo WinDebug\getloadavg.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c default.c
|
|
||||||
echo WinDebug\default.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c signame.c
|
|
||||||
echo WinDebug\signame.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c expand.c
|
|
||||||
echo WinDebug\expand.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c
|
|
||||||
echo WinDebug\dir.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c
|
|
||||||
echo WinDebug\main.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c
|
|
||||||
echo WinDebug\getopt1.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c
|
|
||||||
echo WinDebug\job.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c
|
|
||||||
echo WinDebug\read.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c
|
|
||||||
echo WinDebug\version.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt.c
|
|
||||||
echo WinDebug\getopt.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c arscan.c
|
|
||||||
echo WinDebug\arscan.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remake.c
|
|
||||||
echo WinDebug\remake.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c misc.c
|
|
||||||
echo WinDebug\misc.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c ar.c
|
|
||||||
echo WinDebug\ar.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c function.c
|
|
||||||
echo WinDebug\function.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c vpath.c
|
|
||||||
echo WinDebug\vpath.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c
|
|
||||||
echo WinDebug\implicit.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\compat\dirent.c
|
|
||||||
echo WinDebug\dirent.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\glob.c
|
|
||||||
echo WinDebug\glob.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\fnmatch.c
|
|
||||||
echo WinDebug\fnmatch.obj >>link.dbg
|
|
||||||
cl.exe /nologo /MT /W3 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\pathstuff.c
|
|
||||||
echo WinDebug\pathstuff.obj >>link.dbg
|
|
||||||
echo off
|
|
||||||
echo "Linking WinDebug/%make%.exe"
|
|
||||||
rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe .\WinDebug/variable.obj .\WinDebug/rule.obj .\WinDebug/remote-stub.obj .\WinDebug/commands.obj .\WinDebug/file.obj .\WinDebug/getloadavg.obj .\WinDebug/default.obj .\WinDebug/signame.obj .\WinDebug/expand.obj .\WinDebug/dir.obj .\WinDebug/main.obj .\WinDebug/getopt1.obj .\WinDebug/job.obj .\WinDebug/read.obj .\WinDebug/version.obj .\WinDebug/getopt.obj .\WinDebug/arscan.obj .\WinDebug/remake.obj .\WinDebug/misc.obj .\WinDebug/ar.obj .\WinDebug/function.obj .\WinDebug/vpath.obj .\WinDebug/implicit.obj .\WinDebug/dirent.obj .\WinDebug/glob.obj .\WinDebug/fnmatch.obj .\WinDebug/pathstuff.obj
|
|
||||||
echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib >>link.dbg
|
|
||||||
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe @link.dbg
|
|
||||||
if not exist .\WinDebug/%make%.exe echo "WinDebug build failed"
|
|
||||||
if exist .\WinDebug/%make%.exe echo "WinDebug build succeeded!"
|
|
||||||
if not exist .\WinRel\nul mkdir .\WinRel
|
|
||||||
echo on
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /D TIVOLI /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c variable.c
|
|
||||||
echo WinRel\variable.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c rule.c
|
|
||||||
echo WinRel\rule.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remote-stub.c
|
|
||||||
echo WinRel\remote-stub.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c commands.c
|
|
||||||
echo WinRel\commands.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c file.c
|
|
||||||
echo WinRel\file.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getloadavg.c
|
|
||||||
echo WinRel\getloadavg.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c default.c
|
|
||||||
echo WinRel\default.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c signame.c
|
|
||||||
echo WinRel\signame.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c expand.c
|
|
||||||
echo WinRel\expand.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c
|
|
||||||
echo WinRel\dir.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c
|
|
||||||
echo WinRel\main.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c
|
|
||||||
echo WinRel\getopt1.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c
|
|
||||||
echo WinRel\job.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c
|
|
||||||
echo WinRel\read.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c
|
|
||||||
echo WinRel\version.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt.c
|
|
||||||
echo WinRel\getopt.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c arscan.c
|
|
||||||
echo WinRel\arscan.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remake.c
|
|
||||||
echo WinRel\remake.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c misc.c
|
|
||||||
echo WinRel\misc.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c ar.c
|
|
||||||
echo WinRel\ar.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c function.c
|
|
||||||
echo WinRel\function.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c vpath.c
|
|
||||||
echo WinRel\vpath.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c
|
|
||||||
echo WinRel\implicit.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\compat\dirent.c
|
|
||||||
echo WinRel\dirent.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\glob.c
|
|
||||||
echo WinRel\glob.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\fnmatch.c
|
|
||||||
echo WinRel\fnmatch.obj >>link.rel
|
|
||||||
cl.exe /nologo /MT /W3 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\pathstuff.c
|
|
||||||
echo WinRel\pathstuff.obj >>link.rel
|
|
||||||
echo off
|
|
||||||
echo "Linking WinRel/%make%.exe"
|
|
||||||
rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe .\WinRel/variable.obj .\WinRel/rule.obj .\WinRel/remote-stub.obj .\WinRel/commands.obj .\WinRel/file.obj .\WinRel/getloadavg.obj .\WinRel/default.obj .\WinRel/signame.obj .\WinRel/expand.obj .\WinRel/dir.obj .\WinRel/main.obj .\WinRel/getopt1.obj .\WinRel/job.obj .\WinRel/read.obj .\WinRel/version.obj .\WinRel/getopt.obj .\WinRel/arscan.obj .\WinRel/remake.obj .\WinRel/misc.obj .\WinRel/ar.obj .\WinRel/function.obj .\WinRel/vpath.obj .\WinRel/implicit.obj .\WinRel/dirent.obj .\WinRel/glob.obj .\WinRel/fnmatch.obj .\WinRel/pathstuff.obj
|
|
||||||
echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib >>link.rel
|
|
||||||
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe @link.rel
|
|
||||||
if not exist .\WinRel/%make%.exe echo "WinRel build failed"
|
|
||||||
if exist .\WinRel/%make%.exe echo "WinRel build succeeded!"
|
|
||||||
echo on
|
|
||||||
@ -1,565 +0,0 @@
|
|||||||
/* Command processing for GNU Make.
|
|
||||||
Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
#include "dep.h"
|
|
||||||
#include "filedef.h"
|
|
||||||
#include "variable.h"
|
|
||||||
#include "job.h"
|
|
||||||
#include "commands.h"
|
|
||||||
|
|
||||||
extern int remote_kill PARAMS ((int id, int sig));
|
|
||||||
|
|
||||||
#ifndef HAVE_UNISTD_H
|
|
||||||
extern int getpid ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Set FILE's automatic variables up. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_file_variables (file)
|
|
||||||
register struct file *file;
|
|
||||||
{
|
|
||||||
register char *p;
|
|
||||||
char *at, *percent, *star, *less;
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
/* If the target is an archive member `lib(member)',
|
|
||||||
then $@ is `lib' and $% is `member'. */
|
|
||||||
|
|
||||||
if (ar_name (file->name))
|
|
||||||
{
|
|
||||||
unsigned int len;
|
|
||||||
p = strchr (file->name, '(');
|
|
||||||
at = (char *) alloca (p - file->name + 1);
|
|
||||||
bcopy (file->name, at, p - file->name);
|
|
||||||
at[p - file->name] = '\0';
|
|
||||||
len = strlen (p + 1);
|
|
||||||
percent = (char *) alloca (len);
|
|
||||||
bcopy (p + 1, percent, len - 1);
|
|
||||||
percent[len - 1] = '\0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif /* NO_ARCHIVES. */
|
|
||||||
{
|
|
||||||
at = file->name;
|
|
||||||
percent = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* $* is the stem from an implicit or static pattern rule. */
|
|
||||||
if (file->stem == 0)
|
|
||||||
{
|
|
||||||
/* In Unix make, $* is set to the target name with
|
|
||||||
any suffix in the .SUFFIXES list stripped off for
|
|
||||||
explicit rules. We store this in the `stem' member. */
|
|
||||||
register struct dep *d;
|
|
||||||
char *name;
|
|
||||||
unsigned int len;
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
if (ar_name (file->name))
|
|
||||||
{
|
|
||||||
name = strchr (file->name, '(') + 1;
|
|
||||||
len = strlen (name) - 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
name = file->name;
|
|
||||||
len = strlen (name);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (d = enter_file (".SUFFIXES")->deps; d != 0; d = d->next)
|
|
||||||
{
|
|
||||||
unsigned int slen = strlen (dep_name (d));
|
|
||||||
if (len > slen && strneq (dep_name (d), name + (len - slen), slen))
|
|
||||||
{
|
|
||||||
file->stem = savestring (name, len - slen);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (d == 0)
|
|
||||||
file->stem = "";
|
|
||||||
}
|
|
||||||
star = file->stem;
|
|
||||||
|
|
||||||
/* $< is the first dependency. */
|
|
||||||
less = file->deps != 0 ? dep_name (file->deps) : "";
|
|
||||||
|
|
||||||
if (file->cmds == default_file->cmds)
|
|
||||||
/* This file got its commands from .DEFAULT.
|
|
||||||
In this case $< is the same as $@. */
|
|
||||||
less = at;
|
|
||||||
|
|
||||||
#define DEFINE_VARIABLE(name, len, value) \
|
|
||||||
(void) define_variable_for_file (name,len,value,o_automatic,0,file)
|
|
||||||
|
|
||||||
/* Define the variables. */
|
|
||||||
|
|
||||||
DEFINE_VARIABLE ("<", 1, less);
|
|
||||||
DEFINE_VARIABLE ("*", 1, star);
|
|
||||||
DEFINE_VARIABLE ("@", 1, at);
|
|
||||||
DEFINE_VARIABLE ("%", 1, percent);
|
|
||||||
|
|
||||||
/* Compute the values for $^, $+, and $?. */
|
|
||||||
|
|
||||||
{
|
|
||||||
register unsigned int qmark_len, plus_len;
|
|
||||||
char *caret_value, *plus_value;
|
|
||||||
register char *cp;
|
|
||||||
char *qmark_value;
|
|
||||||
register char *qp;
|
|
||||||
register struct dep *d;
|
|
||||||
unsigned int len;
|
|
||||||
|
|
||||||
/* Compute first the value for $+, which is supposed to contain
|
|
||||||
duplicate dependencies as they were listed in the makefile. */
|
|
||||||
|
|
||||||
plus_len = 0;
|
|
||||||
for (d = file->deps; d != 0; d = d->next)
|
|
||||||
plus_len += strlen (dep_name (d)) + 1;
|
|
||||||
|
|
||||||
len = plus_len == 0 ? 1 : plus_len;
|
|
||||||
cp = plus_value = (char *) alloca (len);
|
|
||||||
|
|
||||||
qmark_len = plus_len; /* Will be this or less. */
|
|
||||||
for (d = file->deps; d != 0; d = d->next)
|
|
||||||
{
|
|
||||||
char *c = dep_name (d);
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
if (ar_name (c))
|
|
||||||
{
|
|
||||||
c = strchr (c, '(') + 1;
|
|
||||||
len = strlen (c) - 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
len = strlen (c);
|
|
||||||
|
|
||||||
bcopy (c, cp, len);
|
|
||||||
cp += len;
|
|
||||||
#if VMS
|
|
||||||
*cp++ = ',';
|
|
||||||
#else
|
|
||||||
*cp++ = ' ';
|
|
||||||
#endif
|
|
||||||
if (! d->changed)
|
|
||||||
qmark_len -= len + 1; /* Don't space in $? for this one. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Kill the last space and define the variable. */
|
|
||||||
|
|
||||||
cp[cp > plus_value ? -1 : 0] = '\0';
|
|
||||||
DEFINE_VARIABLE ("+", 1, plus_value);
|
|
||||||
|
|
||||||
/* Make sure that no dependencies are repeated. This does not
|
|
||||||
really matter for the purpose of updating targets, but it
|
|
||||||
might make some names be listed twice for $^ and $?. */
|
|
||||||
|
|
||||||
uniquize_deps (file->deps);
|
|
||||||
|
|
||||||
/* Compute the values for $^ and $?. */
|
|
||||||
|
|
||||||
cp = caret_value = plus_value; /* Reuse the buffer; it's big enough. */
|
|
||||||
len = qmark_len == 0 ? 1 : qmark_len;
|
|
||||||
qp = qmark_value = (char *) alloca (len);
|
|
||||||
|
|
||||||
for (d = file->deps; d != 0; d = d->next)
|
|
||||||
{
|
|
||||||
char *c = dep_name (d);
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
if (ar_name (c))
|
|
||||||
{
|
|
||||||
c = strchr (c, '(') + 1;
|
|
||||||
len = strlen (c) - 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
len = strlen (c);
|
|
||||||
|
|
||||||
bcopy (c, cp, len);
|
|
||||||
cp += len;
|
|
||||||
#if VMS
|
|
||||||
*cp++ = ',';
|
|
||||||
#else
|
|
||||||
*cp++ = ' ';
|
|
||||||
#endif
|
|
||||||
if (d->changed)
|
|
||||||
{
|
|
||||||
bcopy (c, qp, len);
|
|
||||||
qp += len;
|
|
||||||
#if VMS
|
|
||||||
*qp++ = ',';
|
|
||||||
#else
|
|
||||||
*qp++ = ' ';
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Kill the last spaces and define the variables. */
|
|
||||||
|
|
||||||
cp[cp > caret_value ? -1 : 0] = '\0';
|
|
||||||
DEFINE_VARIABLE ("^", 1, caret_value);
|
|
||||||
|
|
||||||
qp[qp > qmark_value ? -1 : 0] = '\0';
|
|
||||||
DEFINE_VARIABLE ("?", 1, qmark_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef DEFINE_VARIABLE
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Chop CMDS up into individual command lines if necessary.
|
|
||||||
Also set the `lines_flag' and `any_recurse' members. */
|
|
||||||
|
|
||||||
void
|
|
||||||
chop_commands (cmds)
|
|
||||||
register struct commands *cmds;
|
|
||||||
{
|
|
||||||
register char *p;
|
|
||||||
unsigned int nlines, idx;
|
|
||||||
char **lines;
|
|
||||||
|
|
||||||
/* If we don't have any commands,
|
|
||||||
or we already parsed them, never mind. */
|
|
||||||
|
|
||||||
if (!cmds || cmds->command_lines != 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Chop CMDS->commands up into lines in CMDS->command_lines.
|
|
||||||
Also set the corresponding CMDS->lines_flags elements,
|
|
||||||
and the CMDS->any_recurse flag. */
|
|
||||||
|
|
||||||
nlines = 5;
|
|
||||||
lines = (char **) xmalloc (5 * sizeof (char *));
|
|
||||||
idx = 0;
|
|
||||||
p = cmds->commands;
|
|
||||||
while (*p != '\0')
|
|
||||||
{
|
|
||||||
char *end = p;
|
|
||||||
find_end:;
|
|
||||||
end = strchr (end, '\n');
|
|
||||||
if (end == 0)
|
|
||||||
end = p + strlen (p);
|
|
||||||
else if (end > p && end[-1] == '\\')
|
|
||||||
{
|
|
||||||
int backslash = 1;
|
|
||||||
register char *b;
|
|
||||||
for (b = end - 2; b >= p && *b == '\\'; --b)
|
|
||||||
backslash = !backslash;
|
|
||||||
if (backslash)
|
|
||||||
{
|
|
||||||
++end;
|
|
||||||
goto find_end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (idx == nlines)
|
|
||||||
{
|
|
||||||
nlines += 2;
|
|
||||||
lines = (char **) xrealloc ((char *) lines,
|
|
||||||
nlines * sizeof (char *));
|
|
||||||
}
|
|
||||||
lines[idx++] = savestring (p, end - p);
|
|
||||||
p = end;
|
|
||||||
if (*p != '\0')
|
|
||||||
++p;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (idx != nlines)
|
|
||||||
{
|
|
||||||
nlines = idx;
|
|
||||||
lines = (char **) xrealloc ((char *) lines,
|
|
||||||
nlines * sizeof (char *));
|
|
||||||
}
|
|
||||||
|
|
||||||
cmds->ncommand_lines = nlines;
|
|
||||||
cmds->command_lines = lines;
|
|
||||||
|
|
||||||
cmds->any_recurse = 0;
|
|
||||||
cmds->lines_flags = (char *) xmalloc (nlines);
|
|
||||||
for (idx = 0; idx < nlines; ++idx)
|
|
||||||
{
|
|
||||||
int flags = 0;
|
|
||||||
|
|
||||||
for (p = lines[idx];
|
|
||||||
isblank ((unsigned char)*p) || *p == '-' || *p == '@' || *p == '+';
|
|
||||||
++p)
|
|
||||||
switch (*p)
|
|
||||||
{
|
|
||||||
case '+':
|
|
||||||
flags |= COMMANDS_RECURSE;
|
|
||||||
break;
|
|
||||||
case '@':
|
|
||||||
flags |= COMMANDS_SILENT;
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
flags |= COMMANDS_NOERROR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!(flags & COMMANDS_RECURSE))
|
|
||||||
{
|
|
||||||
unsigned int len = strlen (p);
|
|
||||||
if (sindex (p, len, "$(MAKE)", 7) != 0
|
|
||||||
|| sindex (p, len, "${MAKE}", 7) != 0)
|
|
||||||
flags |= COMMANDS_RECURSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmds->lines_flags[idx] = flags;
|
|
||||||
cmds->any_recurse |= flags & COMMANDS_RECURSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Execute the commands to remake FILE. If they are currently executing,
|
|
||||||
return or have already finished executing, just return. Otherwise,
|
|
||||||
fork off a child process to run the first command line in the sequence. */
|
|
||||||
|
|
||||||
void
|
|
||||||
execute_file_commands (file)
|
|
||||||
struct file *file;
|
|
||||||
{
|
|
||||||
register char *p;
|
|
||||||
|
|
||||||
/* Don't go through all the preparations if
|
|
||||||
the commands are nothing but whitespace. */
|
|
||||||
|
|
||||||
for (p = file->cmds->commands; *p != '\0'; ++p)
|
|
||||||
if (!isspace ((unsigned char)*p) && *p != '-' && *p != '@')
|
|
||||||
break;
|
|
||||||
if (*p == '\0')
|
|
||||||
{
|
|
||||||
/* If there are no commands, assume everything worked. */
|
|
||||||
set_command_state (file, cs_running);
|
|
||||||
file->update_status = 0;
|
|
||||||
notice_finished_file (file);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* First set the automatic variables according to this file. */
|
|
||||||
|
|
||||||
initialize_file_variables (file, 0);
|
|
||||||
|
|
||||||
set_file_variables (file);
|
|
||||||
|
|
||||||
/* Start the commands running. */
|
|
||||||
new_job (file);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This is set while we are inside fatal_error_signal,
|
|
||||||
so things can avoid nonreentrant operations. */
|
|
||||||
|
|
||||||
int handling_fatal_signal = 0;
|
|
||||||
|
|
||||||
/* Handle fatal signals. */
|
|
||||||
|
|
||||||
RETSIGTYPE
|
|
||||||
fatal_error_signal (sig)
|
|
||||||
int sig;
|
|
||||||
{
|
|
||||||
#ifdef __MSDOS__
|
|
||||||
extern int dos_status, dos_command_running;
|
|
||||||
|
|
||||||
if (dos_command_running)
|
|
||||||
{
|
|
||||||
/* That was the child who got the signal, not us. */
|
|
||||||
dos_status |= (sig << 8);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
remove_intermediates (1);
|
|
||||||
exit (EXIT_FAILURE);
|
|
||||||
#else /* not __MSDOS__ */
|
|
||||||
#ifdef _AMIGA
|
|
||||||
remove_intermediates (1);
|
|
||||||
if (sig == SIGINT)
|
|
||||||
fputs (_("*** Break.\n"), stderr);
|
|
||||||
|
|
||||||
exit (10);
|
|
||||||
#else /* not Amiga */
|
|
||||||
handling_fatal_signal = 1;
|
|
||||||
|
|
||||||
/* Set the handling for this signal to the default.
|
|
||||||
It is blocked now while we run this handler. */
|
|
||||||
signal (sig, SIG_DFL);
|
|
||||||
|
|
||||||
/* A termination signal won't be sent to the entire
|
|
||||||
process group, but it means we want to kill the children. */
|
|
||||||
|
|
||||||
if (sig == SIGTERM)
|
|
||||||
{
|
|
||||||
register struct child *c;
|
|
||||||
for (c = children; c != 0; c = c->next)
|
|
||||||
if (!c->remote)
|
|
||||||
(void) kill (c->pid, SIGTERM);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If we got a signal that means the user
|
|
||||||
wanted to kill make, remove pending targets. */
|
|
||||||
|
|
||||||
if (sig == SIGTERM || sig == SIGINT
|
|
||||||
#ifdef SIGHUP
|
|
||||||
|| sig == SIGHUP
|
|
||||||
#endif
|
|
||||||
#ifdef SIGQUIT
|
|
||||||
|| sig == SIGQUIT
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
|
||||||
register struct child *c;
|
|
||||||
|
|
||||||
/* Remote children won't automatically get signals sent
|
|
||||||
to the process group, so we must send them. */
|
|
||||||
for (c = children; c != 0; c = c->next)
|
|
||||||
if (c->remote)
|
|
||||||
(void) remote_kill (c->pid, sig);
|
|
||||||
|
|
||||||
for (c = children; c != 0; c = c->next)
|
|
||||||
delete_child_targets (c);
|
|
||||||
|
|
||||||
/* Clean up the children. We don't just use the call below because
|
|
||||||
we don't want to print the "Waiting for children" message. */
|
|
||||||
while (job_slots_used > 0)
|
|
||||||
reap_children (1, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
/* Wait for our children to die. */
|
|
||||||
while (job_slots_used > 0)
|
|
||||||
reap_children (1, 1);
|
|
||||||
|
|
||||||
/* Delete any non-precious intermediate files that were made. */
|
|
||||||
|
|
||||||
remove_intermediates (1);
|
|
||||||
|
|
||||||
#ifdef SIGQUIT
|
|
||||||
if (sig == SIGQUIT)
|
|
||||||
/* We don't want to send ourselves SIGQUIT, because it will
|
|
||||||
cause a core dump. Just exit instead. */
|
|
||||||
exit (EXIT_FAILURE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Signal the same code; this time it will really be fatal. The signal
|
|
||||||
will be unblocked when we return and arrive then to kill us. */
|
|
||||||
if (kill (getpid (), sig) < 0)
|
|
||||||
pfatal_with_name ("kill");
|
|
||||||
#endif /* not Amiga */
|
|
||||||
#endif /* not __MSDOS__ */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Delete FILE unless it's precious or not actually a file (phony),
|
|
||||||
and it has changed on disk since we last stat'd it. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
delete_target (file, on_behalf_of)
|
|
||||||
struct file *file;
|
|
||||||
char *on_behalf_of;
|
|
||||||
{
|
|
||||||
struct stat st;
|
|
||||||
|
|
||||||
if (file->precious || file->phony)
|
|
||||||
return;
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
if (ar_name (file->name))
|
|
||||||
{
|
|
||||||
time_t file_date = (file->last_mtime == NONEXISTENT_MTIME
|
|
||||||
? (time_t) -1
|
|
||||||
: (time_t) FILE_TIMESTAMP_S (file->last_mtime));
|
|
||||||
if (ar_member_date (file->name) != file_date)
|
|
||||||
{
|
|
||||||
if (on_behalf_of)
|
|
||||||
error (NILF, _("*** [%s] Archive member `%s' may be bogus; not deleted"),
|
|
||||||
on_behalf_of, file->name);
|
|
||||||
else
|
|
||||||
error (NILF, _("*** Archive member `%s' may be bogus; not deleted"),
|
|
||||||
file->name);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (stat (file->name, &st) == 0
|
|
||||||
&& S_ISREG (st.st_mode)
|
|
||||||
&& FILE_TIMESTAMP_STAT_MODTIME (file->name, st) != file->last_mtime)
|
|
||||||
{
|
|
||||||
if (on_behalf_of)
|
|
||||||
error (NILF, _("*** [%s] Deleting file `%s'"), on_behalf_of, file->name);
|
|
||||||
else
|
|
||||||
error (NILF, _("*** Deleting file `%s'"), file->name);
|
|
||||||
if (unlink (file->name) < 0
|
|
||||||
&& errno != ENOENT) /* It disappeared; so what. */
|
|
||||||
perror_with_name ("unlink: ", file->name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Delete all non-precious targets of CHILD unless they were already deleted.
|
|
||||||
Set the flag in CHILD to say they've been deleted. */
|
|
||||||
|
|
||||||
void
|
|
||||||
delete_child_targets (child)
|
|
||||||
struct child *child;
|
|
||||||
{
|
|
||||||
struct dep *d;
|
|
||||||
|
|
||||||
if (child->deleted)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Delete the target file if it changed. */
|
|
||||||
delete_target (child->file, (char *) 0);
|
|
||||||
|
|
||||||
/* Also remove any non-precious targets listed in the `also_make' member. */
|
|
||||||
for (d = child->file->also_make; d != 0; d = d->next)
|
|
||||||
delete_target (d->file, child->file->name);
|
|
||||||
|
|
||||||
child->deleted = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print out the commands in CMDS. */
|
|
||||||
|
|
||||||
void
|
|
||||||
print_commands (cmds)
|
|
||||||
register struct commands *cmds;
|
|
||||||
{
|
|
||||||
register char *s;
|
|
||||||
|
|
||||||
fputs (_("# commands to execute"), stdout);
|
|
||||||
|
|
||||||
if (cmds->fileinfo.filenm == 0)
|
|
||||||
puts (_(" (built-in):"));
|
|
||||||
else
|
|
||||||
printf (_(" (from `%s', line %lu):\n"),
|
|
||||||
cmds->fileinfo.filenm, cmds->fileinfo.lineno);
|
|
||||||
|
|
||||||
s = cmds->commands;
|
|
||||||
while (*s != '\0')
|
|
||||||
{
|
|
||||||
char *end;
|
|
||||||
|
|
||||||
while (isspace ((unsigned char)*s))
|
|
||||||
++s;
|
|
||||||
|
|
||||||
end = strchr (s, '\n');
|
|
||||||
if (end == 0)
|
|
||||||
end = s + strlen (s);
|
|
||||||
|
|
||||||
printf ("\t%.*s\n", (int) (end - s), s);
|
|
||||||
|
|
||||||
s = end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
/* Definition of data structures describing shell commands for GNU Make.
|
|
||||||
Copyright (C) 1988, 1989, 1991, 1993 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* Structure that gives the commands to make a file
|
|
||||||
and information about where these commands came from. */
|
|
||||||
|
|
||||||
struct commands
|
|
||||||
{
|
|
||||||
struct floc fileinfo; /* Where commands were defined. */
|
|
||||||
char *commands; /* Commands text. */
|
|
||||||
unsigned int ncommand_lines;/* Number of command lines. */
|
|
||||||
char **command_lines; /* Commands chopped up into lines. */
|
|
||||||
char *lines_flags; /* One set of flag bits for each line. */
|
|
||||||
int any_recurse; /* Nonzero if any `lines_recurse' elt has */
|
|
||||||
/* the COMMANDS_RECURSE bit set. */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Bits in `lines_flags'. */
|
|
||||||
#define COMMANDS_RECURSE 1 /* Recurses: + or $(MAKE). */
|
|
||||||
#define COMMANDS_SILENT 2 /* Silent: @. */
|
|
||||||
#define COMMANDS_NOERROR 4 /* No errors: -. */
|
|
||||||
|
|
||||||
extern void execute_file_commands PARAMS ((struct file *file));
|
|
||||||
extern void print_commands PARAMS ((struct commands *cmds));
|
|
||||||
extern void delete_child_targets PARAMS ((struct child *child));
|
|
||||||
extern void chop_commands PARAMS ((struct commands *cmds));
|
|
||||||
@ -1,317 +0,0 @@
|
|||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
/* #undef _ALL_SOURCE */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if using alloca.c. */
|
|
||||||
#define C_ALLOCA
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
/* #undef CLOSEDIR_VOID */
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
/* #undef const */
|
|
||||||
|
|
||||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
|
||||||
This function is required for alloca.c support on those systems. */
|
|
||||||
/* #undef CRAY_STACKSEG_END */
|
|
||||||
|
|
||||||
/* Define for DGUX with <sys/dg_sys_info.h>. */
|
|
||||||
/* #undef DGUX */
|
|
||||||
|
|
||||||
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
|
|
||||||
/* #undef GETLOADAVG_PRIVILEGED */
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#define uintmax_t unsigned long
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#define gid_t int
|
|
||||||
|
|
||||||
/* Define if you have alloca, as a function or macro. */
|
|
||||||
/* #undef HAVE_ALLOCA */
|
|
||||||
|
|
||||||
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
|
||||||
/* #undef HAVE_ALLOCA_H */
|
|
||||||
|
|
||||||
/* Define if you don't have vprintf but do have _doprnt. */
|
|
||||||
/* #undef HAVE_DOPRNT */
|
|
||||||
|
|
||||||
/* Define if your system has a working fnmatch function. */
|
|
||||||
/* #undef HAVE_FNMATCH */
|
|
||||||
|
|
||||||
/* Define if your system has its own `getloadavg' function. */
|
|
||||||
/* #undef HAVE_GETLOADAVG */
|
|
||||||
|
|
||||||
/* Define if you have the getmntent function. */
|
|
||||||
/* #undef HAVE_GETMNTENT */
|
|
||||||
|
|
||||||
/* Define if the `long double' type works. */
|
|
||||||
/* #undef HAVE_LONG_DOUBLE */
|
|
||||||
|
|
||||||
/* Define if you support file names longer than 14 characters. */
|
|
||||||
#define HAVE_LONG_FILE_NAMES 1
|
|
||||||
|
|
||||||
/* Define if you have a working `mmap' system call. */
|
|
||||||
/* #undef HAVE_MMAP */
|
|
||||||
|
|
||||||
/* Define if system calls automatically restart after interruption
|
|
||||||
by a signal. */
|
|
||||||
/* #undef HAVE_RESTARTABLE_SYSCALLS */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blksize. */
|
|
||||||
/* #undef HAVE_ST_BLKSIZE */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blocks. */
|
|
||||||
/* #undef HAVE_ST_BLOCKS */
|
|
||||||
|
|
||||||
/* Define if you have the strcoll function and it is properly defined. */
|
|
||||||
#define HAVE_STRCOLL 1
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_rdev. */
|
|
||||||
#define HAVE_ST_RDEV 1
|
|
||||||
|
|
||||||
/* Define if you have the strftime function. */
|
|
||||||
#define HAVE_STRFTIME 1
|
|
||||||
|
|
||||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if your struct tm has tm_zone. */
|
|
||||||
/* #undef HAVE_TM_ZONE */
|
|
||||||
|
|
||||||
/* Define if you don't have tm_zone but do have the external array
|
|
||||||
tzname. */
|
|
||||||
#define HAVE_TZNAME 1
|
|
||||||
|
|
||||||
/* Define if you have <unistd.h>. */
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
|
|
||||||
/* Define if utime(file, NULL) sets file's timestamp to the present. */
|
|
||||||
/* #undef HAVE_UTIME_NULL */
|
|
||||||
|
|
||||||
/* Define if you have <vfork.h>. */
|
|
||||||
/* #undef HAVE_VFORK_H */
|
|
||||||
|
|
||||||
/* Define if you have the vprintf function. */
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
|
|
||||||
/* Define if you have the wait3 system call. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if on MINIX. */
|
|
||||||
/* #undef _MINIX */
|
|
||||||
|
|
||||||
/* Define if your struct nlist has an n_un member. */
|
|
||||||
/* #undef NLIST_NAME_UNION */
|
|
||||||
|
|
||||||
/* Define if you have <nlist.h>. */
|
|
||||||
/* #undef NLIST_STRUCT */
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
/* #undef NO_MINUS_C_MINUS_O */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#define pid_t int
|
|
||||||
|
|
||||||
/* Define if the system does not provide POSIX.1 features except
|
|
||||||
with this defined. */
|
|
||||||
/* #undef _POSIX_1_SOURCE */
|
|
||||||
|
|
||||||
/* Define if you need to in order for stat and other things to work. */
|
|
||||||
/* #undef _POSIX_SOURCE */
|
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (int or void). */
|
|
||||||
#define RETSIGTYPE void
|
|
||||||
|
|
||||||
/* Define if the setvbuf function takes the buffering type as its second
|
|
||||||
argument and the buffer pointer as the third, as on System V
|
|
||||||
before release 3. */
|
|
||||||
/* #undef SETVBUF_REVERSED */
|
|
||||||
|
|
||||||
/* If using the C implementation of alloca, define if you know the
|
|
||||||
direction of stack growth for your system; otherwise it will be
|
|
||||||
automatically deduced at run-time.
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown
|
|
||||||
*/
|
|
||||||
#define STACK_DIRECTION -1
|
|
||||||
|
|
||||||
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
|
||||||
/* #undef STAT_MACROS_BROKEN */
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS
|
|
||||||
|
|
||||||
/* Define on System V Release 4. */
|
|
||||||
/* #undef SVR4 */
|
|
||||||
|
|
||||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
|
||||||
/* #undef SYS_SIGLIST_DECLARED */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#define uid_t int
|
|
||||||
|
|
||||||
/* Define for Encore UMAX. */
|
|
||||||
/* #undef UMAX */
|
|
||||||
|
|
||||||
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
|
|
||||||
instead of <sys/cpustats.h>. */
|
|
||||||
/* #undef UMAX4_3 */
|
|
||||||
|
|
||||||
/* Define vfork as fork if vfork does not work. */
|
|
||||||
/* #undef vfork */
|
|
||||||
|
|
||||||
/* Name of this package (needed by automake) */
|
|
||||||
#define PACKAGE "make"
|
|
||||||
|
|
||||||
/* Version of this package (needed by automake) */
|
|
||||||
#define VERSION "3.79.1"
|
|
||||||
|
|
||||||
/* Define to the name of the SCCS `get' command. */
|
|
||||||
#define SCCS_GET "get"
|
|
||||||
|
|
||||||
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
|
||||||
/* #undef SCCS_GET_MINUS_G */
|
|
||||||
|
|
||||||
/* Define this to enable job server support in GNU make. */
|
|
||||||
/* #undef MAKE_JOBSERVER */
|
|
||||||
|
|
||||||
/* Define to be the nanoseconds member of struct stat's st_mtim,
|
|
||||||
if it exists. */
|
|
||||||
/* #undef ST_MTIM_NSEC */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `sys_siglist'. */
|
|
||||||
/* #undef HAVE_SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
/* #undef HAVE__SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if you have the `union wait' type in <sys/wait.h>. */
|
|
||||||
/* #undef HAVE_UNION_WAIT */
|
|
||||||
|
|
||||||
/* Define if you have the dup2 function. */
|
|
||||||
/* #undef HAVE_DUP2 */
|
|
||||||
|
|
||||||
/* Define if you have the getcwd function. */
|
|
||||||
#define HAVE_GETCWD 1
|
|
||||||
|
|
||||||
/* Define if you have the getgroups function. */
|
|
||||||
/* #undef HAVE_GETGROUPS */
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname function. */
|
|
||||||
/* #undef HAVE_GETHOSTBYNAME */
|
|
||||||
|
|
||||||
/* Define if you have the gethostname function. */
|
|
||||||
/* #undef HAVE_GETHOSTNAME */
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mktemp function. */
|
|
||||||
#define HAVE_MKTEMP 1
|
|
||||||
|
|
||||||
/* Define if you have the psignal function. */
|
|
||||||
/* #undef HAVE_PSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the pstat_getdynamic function. */
|
|
||||||
/* #undef HAVE_PSTAT_GETDYNAMIC */
|
|
||||||
|
|
||||||
/* Define if you have the setegid function. */
|
|
||||||
/* #undef HAVE_SETEGID */
|
|
||||||
|
|
||||||
/* Define if you have the seteuid function. */
|
|
||||||
/* #undef HAVE_SETEUID */
|
|
||||||
|
|
||||||
/* Define if you have the setlinebuf function. */
|
|
||||||
/* #undef HAVE_SETLINEBUF */
|
|
||||||
|
|
||||||
/* Define if you have the setregid function. */
|
|
||||||
/* #undef HAVE_SETREGID */
|
|
||||||
|
|
||||||
/* Define if you have the setreuid function. */
|
|
||||||
/* #undef HAVE_SETREUID */
|
|
||||||
|
|
||||||
/* Define if you have the sigsetmask function. */
|
|
||||||
/* #undef HAVE_SIGSETMASK */
|
|
||||||
|
|
||||||
/* Define if you have the socket function. */
|
|
||||||
/* #undef HAVE_SOCKET */
|
|
||||||
|
|
||||||
/* Define if you have the strcasecmp function. */
|
|
||||||
/* #undef HAVE_STRCASECMP */
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strsignal function. */
|
|
||||||
/* #undef HAVE_STRSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the wait3 function. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if you have the waitpid function. */
|
|
||||||
/* #undef HAVE_WAITPID */
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#define HAVE_DIRENT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <fcntl.h> header file. */
|
|
||||||
#define HAVE_FCNTL_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <limits.h> header file. */
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <mach/mach.h> header file. */
|
|
||||||
/* #undef HAVE_MACH_MACH_H */
|
|
||||||
|
|
||||||
/* Define if you have the <memory.h> header file. */
|
|
||||||
/* #undef HAVE_MEMORY_H */
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
/* #undef HAVE_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <stdlib.h> header file. */
|
|
||||||
/* #undef HAVE_STDLIB_H */
|
|
||||||
|
|
||||||
/* Define if you have the <string.h> header file. */
|
|
||||||
#define HAVE_STRING_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#define HAVE_SYS_DIR_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_PARAM_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/timeb.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_TIMEB_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/wait.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if you have the <unistd.h> header file. */
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
|
|
||||||
/* Define if you have the dgc library (-ldgc). */
|
|
||||||
/* #undef HAVE_LIBDGC */
|
|
||||||
|
|
||||||
/* Define if you have the kstat library (-lkstat). */
|
|
||||||
/* #undef HAVE_LIBKSTAT */
|
|
||||||
|
|
||||||
/* Define if you have the sun library (-lsun). */
|
|
||||||
/* #undef HAVE_LIBSUN */
|
|
||||||
|
|
||||||
/* Define for Case Insensitve behavior */
|
|
||||||
#define HAVE_CASE_INSENSITIVE_FS
|
|
||||||
|
|
||||||
/* Build host information. */
|
|
||||||
#define MAKE_HOST "Amiga"
|
|
||||||
1273
buildtools/windows/source/make-3.79.1/config.guess
vendored
1273
buildtools/windows/source/make-3.79.1/config.guess
vendored
File diff suppressed because it is too large
Load Diff
@ -1,400 +0,0 @@
|
|||||||
/* config.h-vms. Generated by hand by Klaus Kämpf <kkaempf@rmi.de> */
|
|
||||||
/* config.h. Generated automatically by configure. */
|
|
||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
/* #undef _ALL_SOURCE */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if using alloca.c. */
|
|
||||||
/* #undef C_ALLOCA */
|
|
||||||
/* maybe this should be placed into make.h */
|
|
||||||
#if defined(__VAX) && defined(__DECC)
|
|
||||||
#define alloca(n) __ALLOCA(n)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define to 1 if NLS is requested. */
|
|
||||||
/* #undef ENABLE_NLS */
|
|
||||||
|
|
||||||
/* Define as 1 if you have dcgettext. */
|
|
||||||
/* #undef HAVE_DCGETTEXT */
|
|
||||||
|
|
||||||
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
|
|
||||||
/* #undef HAVE_GETTEXT */
|
|
||||||
|
|
||||||
/* Define if your locale.h file contains LC_MESSAGES. */
|
|
||||||
/* #undef HAVE_LC_MESSAGES */
|
|
||||||
|
|
||||||
/* Define to the installation directory for locales. */
|
|
||||||
#define LOCALEDIR ""
|
|
||||||
|
|
||||||
/* Define as 1 if you have the stpcpy function. */
|
|
||||||
/* #undef HAVE_STPCPY */
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
/* #undef CLOSEDIR_VOID */
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
/* #undef const */
|
|
||||||
|
|
||||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
|
||||||
This function is required for alloca.c support on those systems. */
|
|
||||||
/* #undef CRAY_STACKSEG_END */
|
|
||||||
|
|
||||||
/* Define for DGUX with <sys/dg_sys_info.h>. */
|
|
||||||
/* #undef DGUX */
|
|
||||||
|
|
||||||
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
|
|
||||||
/* #undef GETLOADAVG_PRIVILEGED */
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#define uintmax_t unsigned long
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
/* #undef gid_t */
|
|
||||||
|
|
||||||
/* Define if you have alloca, as a function or macro. */
|
|
||||||
#define HAVE_ALLOCA 1
|
|
||||||
|
|
||||||
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
|
||||||
/* #undef HAVE_ALLOCA_H */
|
|
||||||
|
|
||||||
/* Define if you don't have vprintf but do have _doprnt. */
|
|
||||||
/* #undef HAVE_DOPRNT */
|
|
||||||
|
|
||||||
/* Define if your system has a working fnmatch function. */
|
|
||||||
/* #undef HAVE_FNMATCH */
|
|
||||||
|
|
||||||
/* Define if your system has its own `getloadavg' function. */
|
|
||||||
/* #undef HAVE_GETLOADAVG */
|
|
||||||
|
|
||||||
/* Define if you have the getmntent function. */
|
|
||||||
/* #undef HAVE_GETMNTENT */
|
|
||||||
|
|
||||||
/* Define if the `long double' type works. */
|
|
||||||
/* #undef HAVE_LONG_DOUBLE */
|
|
||||||
|
|
||||||
/* Define if you support file names longer than 14 characters. */
|
|
||||||
#define HAVE_LONG_FILE_NAMES 1
|
|
||||||
|
|
||||||
/* Define if you have a working `mmap' system call. */
|
|
||||||
/* #undef HAVE_MMAP */
|
|
||||||
|
|
||||||
/* Define if system calls automatically restart after interruption
|
|
||||||
by a signal. */
|
|
||||||
/* #undef HAVE_RESTARTABLE_SYSCALLS */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blksize. */
|
|
||||||
/* #undef HAVE_ST_BLKSIZE */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blocks. */
|
|
||||||
/* #undef HAVE_ST_BLOCKS */
|
|
||||||
|
|
||||||
/* Define if you have the strcoll function and it is properly defined. */
|
|
||||||
/* #undef HAVE_STRCOLL */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_rdev. */
|
|
||||||
/* #undef HAVE_ST_RDEV */
|
|
||||||
|
|
||||||
/* Define if you have the strftime function. */
|
|
||||||
/* #undef HAVE_STRFTIME */
|
|
||||||
|
|
||||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if your struct tm has tm_zone. */
|
|
||||||
/* #undef HAVE_TM_ZONE */
|
|
||||||
|
|
||||||
/* Define if you don't have tm_zone but do have the external array
|
|
||||||
tzname. */
|
|
||||||
/* #undef HAVE_TZNAME */
|
|
||||||
|
|
||||||
/* Define if you have <unistd.h>. */
|
|
||||||
#ifdef __DECC
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if utime(file, NULL) sets file's timestamp to the present. */
|
|
||||||
/* #undef HAVE_UTIME_NULL */
|
|
||||||
|
|
||||||
/* Define if you have <vfork.h>. */
|
|
||||||
/* #undef HAVE_VFORK_H */
|
|
||||||
|
|
||||||
/* Define if you have the vprintf function. */
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
|
|
||||||
/* Define if you have the wait3 system call. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if on MINIX. */
|
|
||||||
/* #undef _MINIX */
|
|
||||||
|
|
||||||
/* Define if your struct nlist has an n_un member. */
|
|
||||||
/* #undef NLIST_NAME_UNION */
|
|
||||||
|
|
||||||
/* Define if you have <nlist.h>. */
|
|
||||||
/* #undef NLIST_STRUCT */
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
/* #undef NO_MINUS_C_MINUS_O */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
/* I assume types.h is available for all 5.0 cc/cxx compilers */
|
|
||||||
#if __DECC_VER < 50090000
|
|
||||||
#define pid_t int
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if the system does not provide POSIX.1 features except
|
|
||||||
with this defined. */
|
|
||||||
/* #undef _POSIX_1_SOURCE */
|
|
||||||
|
|
||||||
/* Define if you need to in order for stat and other things to work. */
|
|
||||||
/* #undef _POSIX_SOURCE */
|
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (int or void). */
|
|
||||||
#define RETSIGTYPE void
|
|
||||||
|
|
||||||
/* Define if the setvbuf function takes the buffering type as its second
|
|
||||||
argument and the buffer pointer as the third, as on System V
|
|
||||||
before release 3. */
|
|
||||||
/* #undef SETVBUF_REVERSED */
|
|
||||||
|
|
||||||
/* If using the C implementation of alloca, define if you know the
|
|
||||||
direction of stack growth for your system; otherwise it will be
|
|
||||||
automatically deduced at run-time.
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown
|
|
||||||
*/
|
|
||||||
/* #undef STACK_DIRECTION */
|
|
||||||
|
|
||||||
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
|
||||||
/* #undef STAT_MACROS_BROKEN */
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
/* #undef STDC_HEADERS */
|
|
||||||
|
|
||||||
/* Define on System V Release 4. */
|
|
||||||
/* #undef SVR4 */
|
|
||||||
|
|
||||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
|
||||||
/* #undef SYS_SIGLIST_DECLARED */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#if __DECC_VER < 50090000
|
|
||||||
#define uid_t int
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define for Encore UMAX. */
|
|
||||||
/* #undef UMAX */
|
|
||||||
|
|
||||||
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
|
|
||||||
instead of <sys/cpustats.h>. */
|
|
||||||
/* #undef UMAX4_3 */
|
|
||||||
|
|
||||||
/* Define vfork as fork if vfork does not work. */
|
|
||||||
/* #undef vfork */
|
|
||||||
|
|
||||||
/* Name of this package (needed by automake) */
|
|
||||||
#define PACKAGE "make"
|
|
||||||
|
|
||||||
/* Version of this package (needed by automake) */
|
|
||||||
#define VERSION "3.79.1"
|
|
||||||
|
|
||||||
/* Define to the name of the SCCS `get' command. */
|
|
||||||
/* #undef SCCS_GET */
|
|
||||||
|
|
||||||
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
|
||||||
/* #undef SCCS_GET_MINUS_G */
|
|
||||||
|
|
||||||
/* Define this to enable job server support in GNU make. */
|
|
||||||
/* #undef MAKE_JOBSERVER */
|
|
||||||
|
|
||||||
/* Define to be the nanoseconds member of struct stat's st_mtim,
|
|
||||||
if it exists. */
|
|
||||||
/* #undef ST_MTIM_NSEC */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `sys_siglist'. */
|
|
||||||
/* #undefine HAVE_SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
/* #undef HAVE__SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if you have the `union wait' type in <sys/wait.h>. */
|
|
||||||
/* #undef HAVE_UNION_WAIT */
|
|
||||||
|
|
||||||
/* Define if you have the dup2 function. */
|
|
||||||
#define HAVE_DUP2 1
|
|
||||||
|
|
||||||
/* Define if you have the getcwd function. */
|
|
||||||
#define HAVE_GETCWD 1
|
|
||||||
|
|
||||||
/* Define if you have the getgroups function. */
|
|
||||||
/* #undef HAVE_GETGROUPS */
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname function. */
|
|
||||||
/* #undef HAVE_GETHOSTBYNAME */
|
|
||||||
|
|
||||||
/* Define if you have the gethostname function. */
|
|
||||||
/* #undef HAVE_GETHOSTNAME */
|
|
||||||
|
|
||||||
/* Define if you have the getloadavg function. */
|
|
||||||
/* #undef HAVE_GETLOADAVG */
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mktemp function. */
|
|
||||||
#define HAVE_MKTEMP 1
|
|
||||||
|
|
||||||
/* Define if you have the psignal function. */
|
|
||||||
/* #undef HAVE_PSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the pstat_getdynamic function. */
|
|
||||||
/* #undef HAVE_PSTAT_GETDYNAMIC */
|
|
||||||
|
|
||||||
/* Define if you have the setegid function. */
|
|
||||||
/* #undef HAVE_SETEGID */
|
|
||||||
|
|
||||||
/* Define if you have the seteuid function. */
|
|
||||||
/* #undef HAVE_SETEUID */
|
|
||||||
|
|
||||||
/* Define if you have the setlinebuf function. */
|
|
||||||
/* #undef HAVE_SETLINEBUF */
|
|
||||||
|
|
||||||
/* Define if you have the setregid function. */
|
|
||||||
/* #undefine HAVE_SETREGID */
|
|
||||||
|
|
||||||
/* Define if you have the setreuid function. */
|
|
||||||
/* #define HAVE_SETREUID */
|
|
||||||
|
|
||||||
/* Define if you have the sigsetmask function. */
|
|
||||||
#define HAVE_SIGSETMASK 1
|
|
||||||
|
|
||||||
/* Define if you have the socket function. */
|
|
||||||
/* #undef HAVE_SOCKET */
|
|
||||||
|
|
||||||
/* Define if you have the strcasecmp function. */
|
|
||||||
/* #undef HAVE_STRCASECMP */
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strsignal function. */
|
|
||||||
/* #undef HAVE_STRSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the wait3 function. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if you have the waitpid function. */
|
|
||||||
/* #undef HAVE_WAITPID */
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#define HAVE_DIRENT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <fcntl.h> header file. */
|
|
||||||
#ifdef __DECC
|
|
||||||
#define HAVE_FCNTL_H 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if you have the <limits.h> header file. */
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <mach/mach.h> header file. */
|
|
||||||
/* #undef HAVE_MACH_MACH_H */
|
|
||||||
|
|
||||||
/* Define if you have the <memory.h> header file. */
|
|
||||||
/* #undef HAVE_MEMORY_H */
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
/* #undef HAVE_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <stdlib.h> header file. */
|
|
||||||
#define HAVE_STDLIB_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <string.h> header file. */
|
|
||||||
#define HAVE_STRING_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_DIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_PARAM_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/timeb.h> header file. */
|
|
||||||
#ifndef __GNUC__
|
|
||||||
#define HAVE_SYS_TIMEB_H 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if you have the <sys/wait.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if you have the dgc library (-ldgc). */
|
|
||||||
/* #undef HAVE_LIBDGC */
|
|
||||||
|
|
||||||
/* Define if you have the kstat library (-lkstat). */
|
|
||||||
/* #undef HAVE_LIBKSTAT *
|
|
||||||
|
|
||||||
/* Define if you have the sun library (-lsun). */
|
|
||||||
/* #undef HAVE_LIBSUN */
|
|
||||||
|
|
||||||
/* Define for case insensitve filenames */
|
|
||||||
#define HAVE_CASE_INSENSITIVE_FS 1
|
|
||||||
|
|
||||||
/* VMS specific, define it if you want to use case sensitve targets */
|
|
||||||
/* #undef WANT_CASE_SENSITIVE_TARGETS */
|
|
||||||
|
|
||||||
/* VMS specific, V7.0 has opendir() and friends, so it's undefined */
|
|
||||||
/* If you want to use non-VMS code for opendir() etc. on V7.0 and greater
|
|
||||||
define the first or both macros AND change the compile command to get the
|
|
||||||
non-VMS versions linked: (prefix=(all,except=(opendir,... */
|
|
||||||
/* #undef HAVE_VMSDIR_H */
|
|
||||||
/* #undef _DIRENT_HAVE_D_NAMLEN */
|
|
||||||
|
|
||||||
/* On older systems without 7.0 backport of CRTL the first one is defined */
|
|
||||||
#ifdef __CRTL_VER
|
|
||||||
# if __CRTL_VER < 70000000
|
|
||||||
# define HAVE_VMSDIR_H 1
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# if __VMS_VER < 70000000
|
|
||||||
# define HAVE_VMSDIR_H 1
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_VMSDIR_H) && defined(HAVE_DIRENT_H)
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define HAVE_STDLIB_H 1
|
|
||||||
#define INCLUDEDIR "sys$sysroot:[syslib]"
|
|
||||||
#define LIBDIR "sys$sysroot:[syslib]"
|
|
||||||
|
|
||||||
/* Don't use RTL functions of OpenVMS */
|
|
||||||
#ifdef __DECC
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#define getopt gnu_getopt
|
|
||||||
#define optarg gnu_optarg
|
|
||||||
#define optopt gnu_optopt
|
|
||||||
#define optind gnu_optind
|
|
||||||
#define opterr gnu_opterr
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
|
|
||||||
#undef PARAMS
|
|
||||||
#define PARAMS(protos) protos
|
|
||||||
#else /* Not C++ or ANSI C. */
|
|
||||||
#undef PARAMS
|
|
||||||
#define PARAMS(protos) ()
|
|
||||||
#endif /* C++ or ANSI C. */
|
|
||||||
|
|
||||||
/* Build host information. */
|
|
||||||
#define MAKE_HOST "VMS"
|
|
||||||
@ -1,392 +0,0 @@
|
|||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
/* #undef _ALL_SOURCE */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if using alloca.c. */
|
|
||||||
/* #undef C_ALLOCA */
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
/* #undef CLOSEDIR_VOID */
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
/* #undef const */
|
|
||||||
|
|
||||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
|
||||||
This function is required for alloca.c support on those systems. */
|
|
||||||
/* #undef CRAY_STACKSEG_END */
|
|
||||||
|
|
||||||
/* Define for DGUX with <sys/dg_sys_info.h>. */
|
|
||||||
/* #undef DGUX */
|
|
||||||
|
|
||||||
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
|
|
||||||
/* #undef GETLOADAVG_PRIVILEGED */
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#define uintmax_t unsigned long
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef gid_t
|
|
||||||
#define gid_t int
|
|
||||||
|
|
||||||
/* Define if you have alloca, as a function or macro. */
|
|
||||||
#undef HAVE_ALLOCA
|
|
||||||
#define HAVE_ALLOCA 1
|
|
||||||
|
|
||||||
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
|
||||||
/* #undef HAVE_ALLOCA_H */
|
|
||||||
|
|
||||||
/* Define if you don't have vprintf but do have _doprnt. */
|
|
||||||
/* #undef HAVE_DOPRNT */
|
|
||||||
|
|
||||||
/* Define if your system has a working fnmatch function. */
|
|
||||||
/* #undef HAVE_FNMATCH */
|
|
||||||
|
|
||||||
/* Define if your system has its own `getloadavg' function. */
|
|
||||||
/* #undef HAVE_GETLOADAVG */
|
|
||||||
|
|
||||||
/* Define if you have the getmntent function. */
|
|
||||||
/* #undef HAVE_GETMNTENT */
|
|
||||||
|
|
||||||
/* Define if the `long double' type works. */
|
|
||||||
/* #undef HAVE_LONG_DOUBLE */
|
|
||||||
|
|
||||||
/* Define if you support file names longer than 14 characters. */
|
|
||||||
#undef HAVE_LONG_FILE_NAMES
|
|
||||||
#define HAVE_LONG_FILE_NAMES 1
|
|
||||||
|
|
||||||
/* Define if you have a working `mmap' system call. */
|
|
||||||
/* #undef HAVE_MMAP */
|
|
||||||
|
|
||||||
/* Define if system calls automatically restart after interruption
|
|
||||||
by a signal. */
|
|
||||||
/* #undef HAVE_RESTARTABLE_SYSCALLS */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blksize. */
|
|
||||||
/* #undef HAVE_ST_BLKSIZE */
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blocks. */
|
|
||||||
/* #undef HAVE_ST_BLOCKS */
|
|
||||||
|
|
||||||
/* Define if you have the strcoll function and it is properly defined. */
|
|
||||||
#undef HAVE_STRCOLL
|
|
||||||
#define HAVE_STRCOLL 1
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_rdev. */
|
|
||||||
#undef HAVE_ST_RDEV
|
|
||||||
#define HAVE_ST_RDEV 1
|
|
||||||
|
|
||||||
/* Define if you have the strftime function. */
|
|
||||||
#undef HAVE_STRFTIME
|
|
||||||
#define HAVE_STRFTIME 1
|
|
||||||
|
|
||||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if your struct tm has tm_zone. */
|
|
||||||
/* #undef HAVE_TM_ZONE */
|
|
||||||
|
|
||||||
/* Define if you don't have tm_zone but do have the external array
|
|
||||||
tzname. */
|
|
||||||
#undef HAVE_TZNAME
|
|
||||||
#define HAVE_TZNAME 1
|
|
||||||
|
|
||||||
/* Define if you have <unistd.h>. */
|
|
||||||
/* #undef HAVE_UNISTD_H */
|
|
||||||
|
|
||||||
/* Define if utime(file, NULL) sets file's timestamp to the present. */
|
|
||||||
#undef HAVE_UTIME_NULL
|
|
||||||
#define HAVE_UTIME_NULL 1
|
|
||||||
|
|
||||||
/* Define if you have <vfork.h>. */
|
|
||||||
/* #undef HAVE_VFORK_H */
|
|
||||||
|
|
||||||
/* Define if you have the vprintf function. */
|
|
||||||
#undef HAVE_VPRINTF
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
|
|
||||||
/* Define if you have the wait3 system call. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if on MINIX. */
|
|
||||||
/* #undef _MINIX */
|
|
||||||
|
|
||||||
/* Define if your struct nlist has an n_un member. */
|
|
||||||
/* #undef NLIST_NAME_UNION */
|
|
||||||
|
|
||||||
/* Define if you have <nlist.h>. */
|
|
||||||
/* #undef NLIST_STRUCT */
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
/* #undef NO_MINUS_C_MINUS_O */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef pid_t
|
|
||||||
#define pid_t int
|
|
||||||
|
|
||||||
/* Define if the system does not provide POSIX.1 features except
|
|
||||||
with this defined. */
|
|
||||||
/* #undef _POSIX_1_SOURCE */
|
|
||||||
|
|
||||||
/* Define if you need to in order for stat and other things to work. */
|
|
||||||
#undef _POSIX_SOURCE
|
|
||||||
#define _POSIX_SOURCE 1
|
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (int or void). */
|
|
||||||
#undef RETSIGTYPE
|
|
||||||
#define RETSIGTYPE void
|
|
||||||
|
|
||||||
/* Define if the setvbuf function takes the buffering type as its second
|
|
||||||
argument and the buffer pointer as the third, as on System V
|
|
||||||
before release 3. */
|
|
||||||
/* #undef SETVBUF_REVERSED */
|
|
||||||
|
|
||||||
/* If using the C implementation of alloca, define if you know the
|
|
||||||
direction of stack growth for your system; otherwise it will be
|
|
||||||
automatically deduced at run-time.
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown
|
|
||||||
*/
|
|
||||||
/* #undef STACK_DIRECTION */
|
|
||||||
|
|
||||||
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
|
||||||
/* #undef STAT_MACROS_BROKEN */
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Define on System V Release 4. */
|
|
||||||
/* #undef SVR4 */
|
|
||||||
|
|
||||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
|
||||||
/* #undef SYS_SIGLIST_DECLARED */
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef uid_t
|
|
||||||
#define uid_t int
|
|
||||||
|
|
||||||
/* Define for Encore UMAX. */
|
|
||||||
/* #undef UMAX */
|
|
||||||
|
|
||||||
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
|
|
||||||
instead of <sys/cpustats.h>. */
|
|
||||||
/* #undef UMAX4_3 */
|
|
||||||
|
|
||||||
/* Define vfork as fork if vfork does not work. */
|
|
||||||
/* #undef vfork */
|
|
||||||
|
|
||||||
/* Name of this package (needed by automake) */
|
|
||||||
#define PACKAGE "make"
|
|
||||||
|
|
||||||
/* Version of this package (needed by automake) */
|
|
||||||
#define VERSION "3.79.1"
|
|
||||||
|
|
||||||
/* Define to the name of the SCCS `get' command. */
|
|
||||||
#undef SCCS_GET
|
|
||||||
#define SCCS_GET "echo no sccs get"
|
|
||||||
|
|
||||||
/* Define to 1 if NLS is requested. */
|
|
||||||
/* #undef ENABLE_NLS */
|
|
||||||
|
|
||||||
/* Define as 1 if you have dcgettext. */
|
|
||||||
/* #undef HAVE_DCGETTEXT */
|
|
||||||
|
|
||||||
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
|
|
||||||
/* #undef HAVE_GETTEXT */
|
|
||||||
|
|
||||||
/* Define if your locale.h file contains LC_MESSAGES. */
|
|
||||||
/* #undef HAVE_LC_MESSAGES */
|
|
||||||
|
|
||||||
/* Define to the installation directory for locales. */
|
|
||||||
#define LOCALEDIR ""
|
|
||||||
|
|
||||||
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
|
||||||
/* #undef SCCS_GET_MINUS_G */
|
|
||||||
|
|
||||||
/* Define this to enable job server support in GNU make. */
|
|
||||||
/* #undef MAKE_JOBSERVER */
|
|
||||||
|
|
||||||
/* Define to be the nanoseconds member of struct stat's st_mtim,
|
|
||||||
if it exists. */
|
|
||||||
/* #undef ST_MTIM_NSEC */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `sys_siglist'. */
|
|
||||||
/* #undef HAVE_SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
/* #undef HAVE__SYS_SIGLIST */
|
|
||||||
|
|
||||||
/* Define this if you have the `union wait' type in <sys/wait.h>. */
|
|
||||||
/* #undef HAVE_UNION_WAIT */
|
|
||||||
|
|
||||||
/* Define if you have the dup2 function. */
|
|
||||||
#undef HAVE_DUP2
|
|
||||||
#define HAVE_DUP2 1
|
|
||||||
|
|
||||||
/* Define if you have the getcwd function. */
|
|
||||||
#undef HAVE_GETCWD
|
|
||||||
#define HAVE_GETCWD 1
|
|
||||||
|
|
||||||
/* Define if you have the getgroups function. */
|
|
||||||
/* #undef HAVE_GETGROUPS */
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname function. */
|
|
||||||
/* #undef HAVE_GETHOSTBYNAME */
|
|
||||||
|
|
||||||
/* Define if you have the gethostname function. */
|
|
||||||
/* #undef HAVE_GETHOSTNAME */
|
|
||||||
|
|
||||||
/* Define if you have the getloadavg function. */
|
|
||||||
/* #undef HAVE_GETLOADAVG */
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#undef HAVE_MEMMOVE
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mktemp function. */
|
|
||||||
#undef HAVE_MKTEMP
|
|
||||||
#define HAVE_MKTEMP 1
|
|
||||||
|
|
||||||
/* Define if you have the psignal function. */
|
|
||||||
/* #undef HAVE_PSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the pstat_getdynamic function. */
|
|
||||||
/* #undef HAVE_PSTAT_GETDYNAMIC */
|
|
||||||
|
|
||||||
/* Define if you have the setegid function. */
|
|
||||||
/* #undef HAVE_SETEGID */
|
|
||||||
|
|
||||||
/* Define if you have the seteuid function. */
|
|
||||||
/* #undef HAVE_SETEUID */
|
|
||||||
|
|
||||||
/* Define if you have the setlinebuf function. */
|
|
||||||
/* #undef HAVE_SETLINEBUF */
|
|
||||||
|
|
||||||
/* Define if you have the setregid function. */
|
|
||||||
/* #undef HAVE_SETREGID */
|
|
||||||
|
|
||||||
/* Define if you have the setreuid function. */
|
|
||||||
/* #undef HAVE_SETREUID */
|
|
||||||
|
|
||||||
/* Define if you have the sigsetmask function. */
|
|
||||||
/* #undef HAVE_SIGSETMASK */
|
|
||||||
|
|
||||||
/* Define if you have the socket function. */
|
|
||||||
/* #undef HAVE_SOCKET */
|
|
||||||
|
|
||||||
/* Define if you have the strcasecmp function. */
|
|
||||||
/* #undef HAVE_STRCASECMP */
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
#define HAVE_STRERROR 1
|
|
||||||
|
|
||||||
/* Define if you have the strsignal function. */
|
|
||||||
/* #undef HAVE_STRSIGNAL */
|
|
||||||
|
|
||||||
/* Define if you have the wait3 function. */
|
|
||||||
/* #undef HAVE_WAIT3 */
|
|
||||||
|
|
||||||
/* Define if you have the waitpid function. */
|
|
||||||
/* #undef HAVE_WAITPID */
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
#define HAVE_DIRENT_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <fcntl.h> header file. */
|
|
||||||
#undef HAVE_FCNTL_H
|
|
||||||
#define HAVE_FCNTL_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <limits.h> header file. */
|
|
||||||
#undef HAVE_LIMITS_H
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <mach/mach.h> header file. */
|
|
||||||
/* #undef HAVE_MACH_MACH_H */
|
|
||||||
|
|
||||||
/* Define if you have the <memory.h> header file. */
|
|
||||||
#undef HAVE_MEMORY_H
|
|
||||||
#define HAVE_MEMORY_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
/* #undef HAVE_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <string.h> header file. */
|
|
||||||
#undef HAVE_STRING_H
|
|
||||||
#define HAVE_STRING_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_DIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_NDIR_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_PARAM_H */
|
|
||||||
|
|
||||||
/* Define if you have the <sys/timeb.h> header file. */
|
|
||||||
#undef HAVE_SYS_TIMEB_H
|
|
||||||
#define HAVE_SYS_TIMEB_H 1
|
|
||||||
|
|
||||||
/* Define if you have the <sys/wait.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_WAIT_H */
|
|
||||||
|
|
||||||
/* Define if you have the <unistd.h> header file. */
|
|
||||||
/* #undef HAVE_UNISTD_H */
|
|
||||||
|
|
||||||
/* Define if you have the dgc library (-ldgc). */
|
|
||||||
/* #undef HAVE_LIBDGC */
|
|
||||||
|
|
||||||
/* Define if you have the kstat library (-lkstat). */
|
|
||||||
/* #undef HAVE_LIBKSTAT */
|
|
||||||
|
|
||||||
/* Define if you have the sun library (-lsun). */
|
|
||||||
/* #undef HAVE_LIBSUN */
|
|
||||||
|
|
||||||
/* Build host information. */
|
|
||||||
#define MAKE_HOST "Windows32"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Refer to README.W32 for info on the following settings
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If you have a shell that does not grok 'sh -c quoted-command-line'
|
|
||||||
* correctly, you need this setting. Please see below for specific
|
|
||||||
* shell support.
|
|
||||||
*/
|
|
||||||
#undef BATCH_MODE_ONLY_SHELL
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if you have the Cygnus "Cygwin" GNU Windows32 tool set.
|
|
||||||
* Do NOT define BATCH_MODE_ONLY_SHELL if you define HAVE_CYGWIN_SHELL
|
|
||||||
*/
|
|
||||||
#undef HAVE_CYGWIN_SHELL
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define if you have the MKS tool set or shell. Do NOT define
|
|
||||||
* BATCH_MODE_ONLY_SHELL if you define HAVE_MKS_SHELL
|
|
||||||
*/
|
|
||||||
#undef HAVE_MKS_SHELL
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Enforce the mutual exclusivity restriction.
|
|
||||||
*/
|
|
||||||
#ifdef HAVE_MKS_SHELL
|
|
||||||
#undef BATCH_MODE_ONLY_SHELL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CYGWIN_SHELL
|
|
||||||
#undef BATCH_MODE_ONLY_SHELL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if you prefer Case Insensitive behavior */
|
|
||||||
#undef HAVE_CASE_INSENSITIVE_FS
|
|
||||||
@ -1,399 +0,0 @@
|
|||||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
|
||||||
|
|
||||||
/* Define if on AIX 3.
|
|
||||||
System headers sometimes define this.
|
|
||||||
We just want to avoid a redefinition error message. */
|
|
||||||
#ifndef _ALL_SOURCE
|
|
||||||
#undef _ALL_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if using alloca.c. */
|
|
||||||
#undef C_ALLOCA
|
|
||||||
|
|
||||||
/* Define if the closedir function returns void instead of int. */
|
|
||||||
#undef CLOSEDIR_VOID
|
|
||||||
|
|
||||||
/* Define to empty if the keyword does not work. */
|
|
||||||
#undef const
|
|
||||||
|
|
||||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
|
||||||
This function is required for alloca.c support on those systems. */
|
|
||||||
#undef CRAY_STACKSEG_END
|
|
||||||
|
|
||||||
/* Define for DGUX with <sys/dg_sys_info.h>. */
|
|
||||||
#undef DGUX
|
|
||||||
|
|
||||||
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
|
|
||||||
#undef GETLOADAVG_PRIVILEGED
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef gid_t
|
|
||||||
|
|
||||||
/* Define if you have alloca, as a function or macro. */
|
|
||||||
#undef HAVE_ALLOCA
|
|
||||||
|
|
||||||
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
|
||||||
#undef HAVE_ALLOCA_H
|
|
||||||
|
|
||||||
/* Define if you don't have vprintf but do have _doprnt. */
|
|
||||||
#undef HAVE_DOPRNT
|
|
||||||
|
|
||||||
/* Define if your system has a working fnmatch function. */
|
|
||||||
#undef HAVE_FNMATCH
|
|
||||||
|
|
||||||
/* Define if your system has its own `getloadavg' function. */
|
|
||||||
#undef HAVE_GETLOADAVG
|
|
||||||
|
|
||||||
/* Define if you have the getmntent function. */
|
|
||||||
#undef HAVE_GETMNTENT
|
|
||||||
|
|
||||||
/* Define if the `long double' type works. */
|
|
||||||
#undef HAVE_LONG_DOUBLE
|
|
||||||
|
|
||||||
/* Define if you support file names longer than 14 characters. */
|
|
||||||
#undef HAVE_LONG_FILE_NAMES
|
|
||||||
|
|
||||||
/* Define if you have a working `mmap' system call. */
|
|
||||||
#undef HAVE_MMAP
|
|
||||||
|
|
||||||
/* Define if system calls automatically restart after interruption
|
|
||||||
by a signal. */
|
|
||||||
#undef HAVE_RESTARTABLE_SYSCALLS
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blksize. */
|
|
||||||
#undef HAVE_ST_BLKSIZE
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_blocks. */
|
|
||||||
#undef HAVE_ST_BLOCKS
|
|
||||||
|
|
||||||
/* Define if you have the strcoll function and it is properly defined. */
|
|
||||||
#undef HAVE_STRCOLL
|
|
||||||
|
|
||||||
/* Define if your struct stat has st_rdev. */
|
|
||||||
#undef HAVE_ST_RDEV
|
|
||||||
|
|
||||||
/* Define if you have the strftime function. */
|
|
||||||
#undef HAVE_STRFTIME
|
|
||||||
|
|
||||||
/* Define if you have the ANSI # stringizing operator in cpp. */
|
|
||||||
#undef HAVE_STRINGIZE
|
|
||||||
|
|
||||||
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
|
||||||
#undef HAVE_SYS_WAIT_H
|
|
||||||
|
|
||||||
/* Define if your struct tm has tm_zone. */
|
|
||||||
#undef HAVE_TM_ZONE
|
|
||||||
|
|
||||||
/* Define if you don't have tm_zone but do have the external array
|
|
||||||
tzname. */
|
|
||||||
#undef HAVE_TZNAME
|
|
||||||
|
|
||||||
/* Define if you have <unistd.h>. */
|
|
||||||
#undef HAVE_UNISTD_H
|
|
||||||
|
|
||||||
/* Define if utime(file, NULL) sets file's timestamp to the present. */
|
|
||||||
#undef HAVE_UTIME_NULL
|
|
||||||
|
|
||||||
/* Define if you have <vfork.h>. */
|
|
||||||
#undef HAVE_VFORK_H
|
|
||||||
|
|
||||||
/* Define if you have the vprintf function. */
|
|
||||||
#undef HAVE_VPRINTF
|
|
||||||
|
|
||||||
/* Define if you have the wait3 system call. */
|
|
||||||
#undef HAVE_WAIT3
|
|
||||||
|
|
||||||
/* Define as __inline if that's what the C compiler calls it. */
|
|
||||||
#undef inline
|
|
||||||
|
|
||||||
/* Define if on MINIX. */
|
|
||||||
#undef _MINIX
|
|
||||||
|
|
||||||
/* Define if your struct nlist has an n_un member. */
|
|
||||||
#undef NLIST_NAME_UNION
|
|
||||||
|
|
||||||
/* Define if you have <nlist.h>. */
|
|
||||||
#undef NLIST_STRUCT
|
|
||||||
|
|
||||||
/* Define if your C compiler doesn't accept -c and -o together. */
|
|
||||||
#undef NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef pid_t
|
|
||||||
|
|
||||||
/* Define if the system does not provide POSIX.1 features except
|
|
||||||
with this defined. */
|
|
||||||
#undef _POSIX_1_SOURCE
|
|
||||||
|
|
||||||
/* Define if you need to in order for stat and other things to work. */
|
|
||||||
#undef _POSIX_SOURCE
|
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (int or void). */
|
|
||||||
#undef RETSIGTYPE
|
|
||||||
|
|
||||||
/* Define if the setvbuf function takes the buffering type as its second
|
|
||||||
argument and the buffer pointer as the third, as on System V
|
|
||||||
before release 3. */
|
|
||||||
#undef SETVBUF_REVERSED
|
|
||||||
|
|
||||||
/* If using the C implementation of alloca, define if you know the
|
|
||||||
direction of stack growth for your system; otherwise it will be
|
|
||||||
automatically deduced at run-time.
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown
|
|
||||||
*/
|
|
||||||
#undef STACK_DIRECTION
|
|
||||||
|
|
||||||
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
|
||||||
#undef STAT_MACROS_BROKEN
|
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
|
|
||||||
/* Define on System V Release 4. */
|
|
||||||
#undef SVR4
|
|
||||||
|
|
||||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
|
||||||
#undef SYS_SIGLIST_DECLARED
|
|
||||||
|
|
||||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
|
||||||
#undef TIME_WITH_SYS_TIME
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
|
||||||
#undef uid_t
|
|
||||||
|
|
||||||
/* Define for Encore UMAX. */
|
|
||||||
#undef UMAX
|
|
||||||
|
|
||||||
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
|
|
||||||
instead of <sys/cpustats.h>. */
|
|
||||||
#undef UMAX4_3
|
|
||||||
|
|
||||||
/* Define vfork as fork if vfork does not work. */
|
|
||||||
#undef vfork
|
|
||||||
|
|
||||||
/* Define if your locale.h file contains LC_MESSAGES. */
|
|
||||||
#undef HAVE_LC_MESSAGES
|
|
||||||
|
|
||||||
/* Define to the installation directory for locales. */
|
|
||||||
#undef LOCALEDIR
|
|
||||||
|
|
||||||
/* Define to the name of the SCCS `get' command. */
|
|
||||||
#undef SCCS_GET
|
|
||||||
|
|
||||||
/* Define to be the nanoseconds member of struct stat's st_mtim,
|
|
||||||
if it exists. */
|
|
||||||
#undef ST_MTIM_NSEC
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `sys_siglist'. */
|
|
||||||
#undef HAVE_SYS_SIGLIST
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
#undef HAVE__SYS_SIGLIST
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#undef uintmax_t
|
|
||||||
|
|
||||||
/* Define if you have the INTTYPES_H function. */
|
|
||||||
#undef HAVE_INTTYPES_H
|
|
||||||
|
|
||||||
/* Define if you have the dup2 function. */
|
|
||||||
#undef HAVE_DUP2
|
|
||||||
|
|
||||||
/* Define if you have the fdopen function. */
|
|
||||||
#undef HAVE_FDOPEN
|
|
||||||
|
|
||||||
/* Define if you have the getcwd function. */
|
|
||||||
#undef HAVE_GETCWD
|
|
||||||
|
|
||||||
/* Define if you have the getgroups function. */
|
|
||||||
#undef HAVE_GETGROUPS
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname function. */
|
|
||||||
#undef HAVE_GETHOSTBYNAME
|
|
||||||
|
|
||||||
/* Define if you have the gethostname function. */
|
|
||||||
#undef HAVE_GETHOSTNAME
|
|
||||||
|
|
||||||
/* Define if you have the getloadavg function. */
|
|
||||||
#undef HAVE_GETLOADAVG
|
|
||||||
|
|
||||||
/* Define if you have the memcpy function. */
|
|
||||||
#undef HAVE_MEMCPY
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#undef HAVE_MEMMOVE
|
|
||||||
|
|
||||||
/* Define if you have the mkstemp function. */
|
|
||||||
#undef HAVE_MKSTEMP
|
|
||||||
|
|
||||||
/* Define if you have the mktemp function. */
|
|
||||||
#undef HAVE_MKTEMP
|
|
||||||
|
|
||||||
/* Define if you have the pipe function. */
|
|
||||||
#undef HAVE_PIPE
|
|
||||||
|
|
||||||
/* Define if you have the psignal function. */
|
|
||||||
#undef HAVE_PSIGNAL
|
|
||||||
|
|
||||||
/* Define if you have the pstat_getdynamic function. */
|
|
||||||
#undef HAVE_PSTAT_GETDYNAMIC
|
|
||||||
|
|
||||||
/* Define if you have the setegid function. */
|
|
||||||
#undef HAVE_SETEGID
|
|
||||||
|
|
||||||
/* Define if you have the seteuid function. */
|
|
||||||
#undef HAVE_SETEUID
|
|
||||||
|
|
||||||
/* Define if you have the setlinebuf function. */
|
|
||||||
#undef HAVE_SETLINEBUF
|
|
||||||
|
|
||||||
/* Define if you have the setlocale function. */
|
|
||||||
#undef HAVE_SETLOCALE
|
|
||||||
|
|
||||||
/* Define if you have the setregid function. */
|
|
||||||
#undef HAVE_SETREGID
|
|
||||||
|
|
||||||
/* Define if you have the setreuid function. */
|
|
||||||
#undef HAVE_SETREUID
|
|
||||||
|
|
||||||
/* Define if you have the sigaction function. */
|
|
||||||
#undef HAVE_SIGACTION
|
|
||||||
|
|
||||||
/* Define if you have the sigsetmask function. */
|
|
||||||
#undef HAVE_SIGSETMASK
|
|
||||||
|
|
||||||
/* Define if you have the socket function. */
|
|
||||||
#undef HAVE_SOCKET
|
|
||||||
|
|
||||||
/* Define if you have the stpcpy function. */
|
|
||||||
#undef HAVE_STPCPY
|
|
||||||
|
|
||||||
/* Define if you have the strcasecmp function. */
|
|
||||||
#undef HAVE_STRCASECMP
|
|
||||||
|
|
||||||
/* Define if you have the strchr function. */
|
|
||||||
#undef HAVE_STRCHR
|
|
||||||
|
|
||||||
/* Define if you have the strdup function. */
|
|
||||||
#undef HAVE_STRDUP
|
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
|
|
||||||
/* Define if you have the strsignal function. */
|
|
||||||
#undef HAVE_STRSIGNAL
|
|
||||||
|
|
||||||
/* Define if you have the wait3 function. */
|
|
||||||
#undef HAVE_WAIT3
|
|
||||||
|
|
||||||
/* Define if you have the waitpid function. */
|
|
||||||
#undef HAVE_WAITPID
|
|
||||||
|
|
||||||
/* Define if you have the <dirent.h> header file. */
|
|
||||||
#undef HAVE_DIRENT_H
|
|
||||||
|
|
||||||
/* Define if you have the <dmalloc.h> header file. */
|
|
||||||
#undef HAVE_DMALLOC_H
|
|
||||||
|
|
||||||
/* Define if you have the <fcntl.h> header file. */
|
|
||||||
#undef HAVE_FCNTL_H
|
|
||||||
|
|
||||||
/* Define if you have the <limits.h> header file. */
|
|
||||||
#undef HAVE_LIMITS_H
|
|
||||||
|
|
||||||
/* Define if you have the <locale.h> header file. */
|
|
||||||
#undef HAVE_LOCALE_H
|
|
||||||
|
|
||||||
/* Define if you have the <mach/mach.h> header file. */
|
|
||||||
#undef HAVE_MACH_MACH_H
|
|
||||||
|
|
||||||
/* Define if you have the <memory.h> header file. */
|
|
||||||
#undef HAVE_MEMORY_H
|
|
||||||
|
|
||||||
/* Define if you have the <ndir.h> header file. */
|
|
||||||
#undef HAVE_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <stdlib.h> header file. */
|
|
||||||
#undef HAVE_STDLIB_H
|
|
||||||
|
|
||||||
/* Define if you have the <string.h> header file. */
|
|
||||||
#undef HAVE_STRING_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/dir.h> header file. */
|
|
||||||
#undef HAVE_SYS_DIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/ndir.h> header file. */
|
|
||||||
#undef HAVE_SYS_NDIR_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/param.h> header file. */
|
|
||||||
#undef HAVE_SYS_PARAM_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/time.h> header file. */
|
|
||||||
#undef HAVE_SYS_TIME_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/timeb.h> header file. */
|
|
||||||
#undef HAVE_SYS_TIMEB_H
|
|
||||||
|
|
||||||
/* Define if you have the <sys/wait.h> header file. */
|
|
||||||
#undef HAVE_SYS_WAIT_H
|
|
||||||
|
|
||||||
/* Define if you have the <unistd.h> header file. */
|
|
||||||
#undef HAVE_UNISTD_H
|
|
||||||
|
|
||||||
/* Define if you have the dgc library (-ldgc). */
|
|
||||||
#undef HAVE_LIBDGC
|
|
||||||
|
|
||||||
/* Define if you have the dmalloc library (-ldmalloc). */
|
|
||||||
#undef HAVE_LIBDMALLOC
|
|
||||||
|
|
||||||
/* Define if you have the kstat library (-lkstat). */
|
|
||||||
#undef HAVE_LIBKSTAT
|
|
||||||
|
|
||||||
/* Name of package */
|
|
||||||
#undef PACKAGE
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#undef VERSION
|
|
||||||
|
|
||||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
|
||||||
#undef _FILE_OFFSET_BITS
|
|
||||||
|
|
||||||
/* Define to make fseeko etc. visible, on some hosts. */
|
|
||||||
#undef _LARGEFILE_SOURCE
|
|
||||||
|
|
||||||
/* Define for large files, on AIX-style hosts. */
|
|
||||||
#undef _LARGE_FILES
|
|
||||||
|
|
||||||
/* Define if NLS is requested. */
|
|
||||||
#undef ENABLE_NLS
|
|
||||||
|
|
||||||
/* Define if you have <libintl.h>. */
|
|
||||||
#undef HAVE_LIBINTL_H
|
|
||||||
|
|
||||||
/* Define if you have the gettext function. */
|
|
||||||
#undef HAVE_GETTEXT
|
|
||||||
|
|
||||||
/* Define if you have the dcgettext function. */
|
|
||||||
#undef HAVE_DCGETTEXT
|
|
||||||
|
|
||||||
/* Define if you have the clock_gettime function. */
|
|
||||||
#undef HAVE_CLOCK_GETTIME
|
|
||||||
|
|
||||||
/* Define if you have a standard gettimeofday function */
|
|
||||||
#undef HAVE_GETTIMEOFDAY
|
|
||||||
|
|
||||||
/* Define this if you have the `union wait' type in <sys/wait.h>. */
|
|
||||||
#undef HAVE_UNION_WAIT
|
|
||||||
|
|
||||||
/* Define this to enable job server support in GNU make. */
|
|
||||||
#undef MAKE_JOBSERVER
|
|
||||||
|
|
||||||
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
|
||||||
#undef SCCS_GET_MINUS_G
|
|
||||||
|
|
||||||
/* Build host information. */
|
|
||||||
#undef MAKE_HOST
|
|
||||||
|
|
||||||
1319
buildtools/windows/source/make-3.79.1/config.sub
vendored
1319
buildtools/windows/source/make-3.79.1/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,58 +0,0 @@
|
|||||||
|
|
||||||
/* Many things are defined already by a system header. */
|
|
||||||
#include <sys/config.h>
|
|
||||||
|
|
||||||
/* Name of this package (needed by automake) */
|
|
||||||
#define PACKAGE "make"
|
|
||||||
|
|
||||||
/* Version of this package (needed by automake) */
|
|
||||||
#define VERSION "3.79.1"
|
|
||||||
|
|
||||||
#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 1
|
|
||||||
|
|
||||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
|
||||||
# define SYS_SIGLIST_DECLARED 1
|
|
||||||
|
|
||||||
/* Define this if the C library defines the variable `_sys_siglist'. */
|
|
||||||
# define HAVE_SYS_SIGLIST 1
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Define NSIG. */
|
|
||||||
# define NSIG SIGMAX
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define if you have the fdopen function. */
|
|
||||||
#define HAVE_FDOPEN 1
|
|
||||||
|
|
||||||
/* Define if you have sigsetmask. */
|
|
||||||
#define HAVE_SIGSETMASK 1
|
|
||||||
|
|
||||||
/* Define if you have the <memory.h> header file. */
|
|
||||||
#define HAVE_MEMORY_H 1
|
|
||||||
|
|
||||||
/* Define if you have the memmove function. */
|
|
||||||
#define HAVE_MEMMOVE 1
|
|
||||||
|
|
||||||
/* Define if you have the mkstemp function. */
|
|
||||||
#define HAVE_MKSTEMP 1
|
|
||||||
|
|
||||||
#define SCCS_GET "get"
|
|
||||||
|
|
||||||
/* Define to `unsigned long' or `unsigned long long'
|
|
||||||
if <inttypes.h> doesn't define. */
|
|
||||||
#define uintmax_t unsigned long long
|
|
||||||
|
|
||||||
/* Define the type of the first arg to select(). */
|
|
||||||
#define fd_set_size_t int
|
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
|
||||||
#define HAVE_SELECT 1
|
|
||||||
|
|
||||||
/* Define if you have the vprintf library function. */
|
|
||||||
#undef HAVE_VPRINTF
|
|
||||||
#define HAVE_VPRINTF 1
|
|
||||||
|
|
||||||
/* Build host information. */
|
|
||||||
#define MAKE_HOST "i386-pc-msdosdjgpp"
|
|
||||||
6219
buildtools/windows/source/make-3.79.1/configure
vendored
6219
buildtools/windows/source/make-3.79.1/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,44 +0,0 @@
|
|||||||
@echo off
|
|
||||||
echo Configuring MAKE for DJGPP
|
|
||||||
|
|
||||||
rem The SmallEnv trick protects against too small environment block,
|
|
||||||
rem in which case the values will be truncated and the whole thing
|
|
||||||
rem goes awry. COMMAND.COM will say "Out of environment space", but
|
|
||||||
rem many people don't care, so we force them to care by refusing to go.
|
|
||||||
|
|
||||||
rem Where is the srcdir?
|
|
||||||
set XSRC=.
|
|
||||||
if not "%XSRC%"=="." goto SmallEnv
|
|
||||||
if "%1%"=="" goto SrcDone
|
|
||||||
set XSRC=%1
|
|
||||||
if not "%XSRC%"=="%1" goto SmallEnv
|
|
||||||
|
|
||||||
:SrcDone
|
|
||||||
|
|
||||||
update %XSRC%/configh.dos ./config.h
|
|
||||||
|
|
||||||
rem Do they have Make?
|
|
||||||
redir -o junk.$$$ -eo make -n -f NUL
|
|
||||||
rem REDIR will return 1 if it cannot run Make.
|
|
||||||
rem If it can run Make, it will usually return 2,
|
|
||||||
rem but 0 is also OK with us.
|
|
||||||
if errorlevel 2 goto MakeOk
|
|
||||||
if not errorlevel 1 goto MakeOk
|
|
||||||
if exist junk.$$$ del junk.$$$
|
|
||||||
echo No Make program found--use DOSBUILD.BAT to build Make.
|
|
||||||
goto End
|
|
||||||
|
|
||||||
rem They do have Make. Generate the Makefile.
|
|
||||||
|
|
||||||
:MakeOk
|
|
||||||
del junk.$$$
|
|
||||||
update %XSRC%/Makefile.DOS ./Makefile
|
|
||||||
echo Done.
|
|
||||||
if not "%XSRC%"=="." echo Invoke Make thus: "make srcdir=%XSRC%"
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:SmallEnv
|
|
||||||
echo Your environment is too small. Please enlarge it and run me again.
|
|
||||||
|
|
||||||
:End
|
|
||||||
set XRSC=
|
|
||||||
@ -1,320 +0,0 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
AC_REVISION([$Id: configure.in,v 1.1 2001-01-21 08:05:38 bryner%uiuc.edu Exp $])
|
|
||||||
AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
|
|
||||||
AC_INIT(vpath.c)dnl dnl A distinctive file to look for in srcdir.
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE(make, 3.79.1)
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
|
||||||
|
|
||||||
dnl Regular configure stuff
|
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_CHECK_PROG(AR, ar, ar, ar)
|
|
||||||
AC_PROG_RANLIB
|
|
||||||
AC_PROG_CPP dnl Later checks need this.
|
|
||||||
AC_AIX
|
|
||||||
AC_ISC_POSIX
|
|
||||||
AC_MINIX
|
|
||||||
|
|
||||||
AC_CHECK_PROG(PERL, perl, perl, perl) dnl Needed for the test suite (only)
|
|
||||||
|
|
||||||
dnl This test must come as early as possible after the compiler configuration
|
|
||||||
dnl tests, because the choice of the file model can (in principle) affect
|
|
||||||
dnl whether functions and headers are available, whether they work, etc.
|
|
||||||
AC_SYS_LARGEFILE
|
|
||||||
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_HEADER_DIRENT
|
|
||||||
AC_TYPE_UID_T dnl Also does gid_t.
|
|
||||||
AC_TYPE_PID_T
|
|
||||||
AC_TYPE_SIGNAL
|
|
||||||
AC_CHECK_HEADERS(stdlib.h unistd.h limits.h sys/param.h fcntl.h string.h \
|
|
||||||
memory.h sys/time.h sys/timeb.h)
|
|
||||||
AC_PROG_CC_C_O
|
|
||||||
AM_PROG_CC_STDC
|
|
||||||
AC_C_CONST dnl getopt needs this.
|
|
||||||
AC_C_INLINE dnl gettext needs this.
|
|
||||||
AC_HEADER_STAT
|
|
||||||
AC_HEADER_TIME
|
|
||||||
|
|
||||||
dnl Handle internationalization
|
|
||||||
|
|
||||||
ALL_LINGUAS="de es fr ja ko nl pl pt_BR ru"
|
|
||||||
pds_WITH_GETTEXT
|
|
||||||
|
|
||||||
|
|
||||||
dnl See if the user wants nsec timestamps
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(nsec-timestamps,
|
|
||||||
[ --disable-nsec-timestamps disable use of sub-second timestamps],
|
|
||||||
[make_cv_nsec_timestamps="$enableval"],
|
|
||||||
[make_cv_nsec_timestamps="yes"])
|
|
||||||
|
|
||||||
if test "x$make_cv_nsec_timestamps" != xno; then
|
|
||||||
AC_STRUCT_ST_MTIM_NSEC
|
|
||||||
fi
|
|
||||||
jm_AC_TYPE_UINTMAX_T
|
|
||||||
|
|
||||||
AC_SUBST(LIBOBJS)
|
|
||||||
|
|
||||||
AC_DEFUN(AC_CHECK_SYMBOL, [dnl
|
|
||||||
AC_MSG_CHECKING(for $1)
|
|
||||||
AC_CACHE_VAL(ac_cv_check_symbol_$1, [dnl
|
|
||||||
AC_TRY_LINK(, [extern char *sys_siglist[]; puts(*sys_siglist);],
|
|
||||||
ac_cv_check_symbol_$1=yes, ac_cv_check_symbol_$1=no)])
|
|
||||||
if test "$ac_cv_check_symbol_$1" = yes; then
|
|
||||||
changequote(,)dnl
|
|
||||||
ac_tr_symbol=`echo $1 | tr '[a-z]' '[A-Z]'`
|
|
||||||
changequote([,])dnl
|
|
||||||
AC_DEFINE_UNQUOTED(HAVE_${ac_tr_symbol})
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl
|
|
||||||
|
|
||||||
# Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
|
|
||||||
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
|
|
||||||
AC_SEARCH_LIBS(clock_gettime, [rt posix4])
|
|
||||||
if test "$ac_cv_search_clock_gettime" != no; then
|
|
||||||
AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
|
|
||||||
[Define if you have the clock_gettime function.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# See if we have a standard version of gettimeofday(). Since actual
|
|
||||||
# implementations can differ, just make sure we have the most common
|
|
||||||
# one.
|
|
||||||
AC_CACHE_CHECK([for standard gettimeofday], ac_cv_func_gettimeofday,
|
|
||||||
[ac_cv_func_gettimeofday=no
|
|
||||||
AC_TRY_RUN([#include <sys/time.h>
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
|
|
||||||
exit (gettimeofday (&t, 0) != 0
|
|
||||||
|| t.tv_sec < 0 || t.tv_usec < 0);
|
|
||||||
}],
|
|
||||||
ac_cv_func_gettimeofday=yes,
|
|
||||||
ac_cv_func_gettimeofday=no,
|
|
||||||
ac_cv_func_gettimeofday="no (cross-compiling)")])
|
|
||||||
if test $ac_cv_func_gettimeofday = yes; then
|
|
||||||
AC_DEFINE(HAVE_GETTIMEOFDAY, 1,
|
|
||||||
[Define if you have a standard gettimeofday function])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS( memmove memcpy strchr strdup psignal mkstemp mktemp fdopen \
|
|
||||||
dup2 getcwd sigsetmask sigaction getgroups setlinebuf \
|
|
||||||
seteuid setegid setreuid setregid pipe strerror strsignal)
|
|
||||||
|
|
||||||
AC_CHECK_SYMBOL(sys_siglist)
|
|
||||||
AC_FUNC_ALLOCA
|
|
||||||
AC_FUNC_VFORK
|
|
||||||
AC_FUNC_VPRINTF
|
|
||||||
AC_FUNC_STRCOLL
|
|
||||||
AC_FUNC_CLOSEDIR_VOID
|
|
||||||
AC_FUNC_SETVBUF_REVERSED
|
|
||||||
|
|
||||||
AC_CHECK_LIB(kstat, kstat_open) dnl _Must_ come before AC_FUNC_GETLOADAVG.
|
|
||||||
AC_CHECK_FUNCS(pstat_getdynamic) dnl Supposedly in AC_FUNC_GETLOADAVG, but...?
|
|
||||||
AC_FUNC_GETLOADAVG
|
|
||||||
|
|
||||||
# Check out the wait reality.
|
|
||||||
AC_CHECK_HEADERS(sys/wait.h)
|
|
||||||
AC_CHECK_FUNCS(waitpid wait3)
|
|
||||||
AC_MSG_CHECKING(for union wait)
|
|
||||||
AC_CACHE_VAL(make_cv_union_wait, [dnl
|
|
||||||
AC_TRY_LINK([#include <sys/types.h>
|
|
||||||
#include <sys/wait.h>],
|
|
||||||
[union wait status; int pid; pid = wait (&status);
|
|
||||||
#ifdef WEXITSTATUS
|
|
||||||
/* Some POSIXoid systems have both the new-style macros and the old
|
|
||||||
union wait type, and they do not work together. If union wait
|
|
||||||
conflicts with WEXITSTATUS et al, we don't want to use it at all. */
|
|
||||||
if (WEXITSTATUS (status) != 0) pid = -1;
|
|
||||||
#ifdef WTERMSIG
|
|
||||||
/* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */
|
|
||||||
-- blow chunks here --
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_WAITPID
|
|
||||||
/* Make sure union wait works with waitpid. */
|
|
||||||
pid = waitpid (-1, &status, 0);
|
|
||||||
#endif
|
|
||||||
],
|
|
||||||
[make_cv_union_wait=yes], [make_cv_union_wait=no])])
|
|
||||||
if test "$make_cv_union_wait" = yes; then
|
|
||||||
AC_DEFINE(HAVE_UNION_WAIT, 1, [Define this if you have the \`union wait' type in <sys/wait.h>.])
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($make_cv_union_wait)
|
|
||||||
|
|
||||||
AC_DECL_SYS_SIGLIST
|
|
||||||
|
|
||||||
# The presence of the following is not meant to imply
|
|
||||||
# that make necessarily works on those systems.
|
|
||||||
AC_SEARCH_LIBS(getpwnam, sun)
|
|
||||||
|
|
||||||
AC_SUBST(REMOTE) REMOTE=stub
|
|
||||||
make_try_customs=no
|
|
||||||
AC_ARG_WITH(customs,
|
|
||||||
[ --with-customs=DIR Enable remote jobs via Customs--see README.customs],
|
|
||||||
[case "$withval" in
|
|
||||||
n|no) ;;
|
|
||||||
*) make_cppflags="$CPPFLAGS"
|
|
||||||
case "$withval" in
|
|
||||||
y|ye|yes) ;;
|
|
||||||
*) CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
|
|
||||||
make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
|
|
||||||
esac
|
|
||||||
CF_NETLIBS
|
|
||||||
AC_CHECK_HEADER(customs.h,
|
|
||||||
REMOTE=cstms
|
|
||||||
LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags",
|
|
||||||
with_customs=no
|
|
||||||
CPPFLAGS="$make_cppflags" make_badcust=yes)
|
|
||||||
;;
|
|
||||||
esac])
|
|
||||||
|
|
||||||
dnl See if we can handle the job server feature, and if the user wants it.
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(job-server,
|
|
||||||
[ --disable-job-server Disallow recursive make communication during -jN],
|
|
||||||
[make_cv_job_server="$enableval" user_job_server="$enableval"],
|
|
||||||
[make_cv_job_server="yes"])
|
|
||||||
|
|
||||||
has_wait_nohang=yes
|
|
||||||
case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
|
|
||||||
no/no) has_wait_nohang=no ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$has_wait_nohang/$make_cv_job_server" in
|
|
||||||
yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER, 1,
|
|
||||||
[Define this to enable job server support in GNU make.]);;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl Allow building with dmalloc
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(dmalloc,
|
|
||||||
[ --enable-dmalloc Enable support for the dmalloc debugging library],
|
|
||||||
[make_cv_dmalloc="$enableval"],
|
|
||||||
[make_cv_dmalloc="no"])
|
|
||||||
|
|
||||||
case "$make_cv_dmalloc" in
|
|
||||||
yes) AC_CHECK_HEADERS(dmalloc.h)
|
|
||||||
AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
|
|
||||||
CPPFLAGS="$CPPFLAGS -DDMALLOC_FUNC_CHECK" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_CACHE_CHECK(for location of SCCS get command, make_cv_path_sccs_get, [
|
|
||||||
if test -f /usr/sccs/get; then
|
|
||||||
make_cv_path_sccs_get=/usr/sccs/get
|
|
||||||
else
|
|
||||||
make_cv_path_sccs_get=get
|
|
||||||
fi])
|
|
||||||
AC_DEFINE_UNQUOTED(SCCS_GET,["$make_cv_path_sccs_get"])
|
|
||||||
|
|
||||||
ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
|
|
||||||
if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
|
|
||||||
test -f s.conftest; then
|
|
||||||
# We successfully created an SCCS file.
|
|
||||||
AC_CACHE_CHECK(if SCCS get command understands -G, make_cv_sys_get_minus_G, [
|
|
||||||
if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
|
|
||||||
test -f conftoast; then
|
|
||||||
make_cv_sys_get_minus_G=yes
|
|
||||||
else
|
|
||||||
make_cv_sys_get_minus_G=no
|
|
||||||
fi])
|
|
||||||
case "$make_cv_sys_get_minus_G" in
|
|
||||||
yes) AC_DEFINE(SCCS_GET_MINUS_G, 1,
|
|
||||||
[Define this if the SCCS \`get' command understands the \`-G<file>' option.]);;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
rm -f s.conftest conftoast
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(if system libc has GNU glob)
|
|
||||||
AC_CACHE_VAL(make_cv_sys_gnu_glob, [
|
|
||||||
AC_TRY_CPP([
|
|
||||||
#include <features.h>
|
|
||||||
#include <glob.h>
|
|
||||||
#include <fnmatch.h>
|
|
||||||
|
|
||||||
#define GLOB_INTERFACE_VERSION 1
|
|
||||||
#if defined _LIBC || !defined __GNU_LIBRARY__ || __GNU_LIBRARY__ <= 1
|
|
||||||
# error no gnu glob
|
|
||||||
#else
|
|
||||||
# include <gnu-versions.h>
|
|
||||||
# if _GNU_GLOB_INTERFACE_VERSION != GLOB_INTERFACE_VERSION
|
|
||||||
# error no gnu glob
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
], make_cv_sys_gnu_glob=yes, make_cv_sys_gnu_glob=no)])
|
|
||||||
case "$make_cv_sys_gnu_glob" in
|
|
||||||
yes) AC_MSG_RESULT(yes) ;;
|
|
||||||
no) AC_MSG_RESULT([no; using local copy])
|
|
||||||
AC_SUBST(GLOBDIR) GLOBDIR=glob
|
|
||||||
AC_SUBST(GLOBINC) GLOBINC='-I$(srcdir)/glob'
|
|
||||||
AC_SUBST(GLOBLIB) GLOBLIB=glob/libglob.a
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.])
|
|
||||||
MAKE_HOST="$host"
|
|
||||||
AC_SUBST(MAKE_HOST)
|
|
||||||
|
|
||||||
MAINT_MAKEFILE=/dev/null
|
|
||||||
if test -r "$srcdir/maintMakefile"; then
|
|
||||||
MAINT_MAKEFILE="$srcdir/maintMakefile"
|
|
||||||
fi
|
|
||||||
AC_SUBST_FILE(MAINT_MAKEFILE)
|
|
||||||
|
|
||||||
AC_OUTPUT(build.sh Makefile glob/Makefile i18n/Makefile)
|
|
||||||
|
|
||||||
dnl If we don't yet have build.sh.in, build.sh is a bogus 0-length file
|
|
||||||
dnl so remove it.
|
|
||||||
dnl Can't do this because then remote builds with build.sh don't work.
|
|
||||||
dnl test -f build.sh.in || rm -f build.sh
|
|
||||||
|
|
||||||
|
|
||||||
case "$make_badcust" in
|
|
||||||
yes) echo
|
|
||||||
echo "WARNING: --with-customs specified but no customs.h could be found;"
|
|
||||||
echo " disabling Customs support."
|
|
||||||
echo ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$with_customs" in
|
|
||||||
""|n|no|y|ye|yes) ;;
|
|
||||||
*) if test -f "$with_customs/lib/libcustoms.a"; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo "WARNING: \`$with_customs/lib' does not appear to contain the"
|
|
||||||
echo " Customs library. You must build and install Customs"
|
|
||||||
echo " before compiling GNU make."
|
|
||||||
echo
|
|
||||||
fi ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$has_wait_nohang" in
|
|
||||||
no) echo
|
|
||||||
echo "WARNING: Your system has neither waitpid() nor wait3()."
|
|
||||||
echo " Without one of these, signal handling is unreliable."
|
|
||||||
echo " You should be aware that running GNU make with -j"
|
|
||||||
echo " could result in erratic behavior."
|
|
||||||
echo ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$make_cv_job_server/$user_job_server" in
|
|
||||||
no/yes) echo
|
|
||||||
echo "WARNING: Make job server requires a POSIX-ish system that"
|
|
||||||
echo " supports the pipe(), sigaction(), and either"
|
|
||||||
echo " waitpid() or wait3() functions. Your system doesn't"
|
|
||||||
echo " appear to provide one or more of those."
|
|
||||||
echo " Disabling job server support."
|
|
||||||
echo ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl Local Variables:
|
|
||||||
dnl comment-start: "dnl "
|
|
||||||
dnl comment-end: ""
|
|
||||||
dnl comment-start-skip: "\\bdnl\\b\\s *"
|
|
||||||
dnl compile-command: "make configure config.h.in"
|
|
||||||
dnl End:
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
/* Debugging macros and interface.
|
|
||||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
|
|
||||||
#define DB_NONE (0x000)
|
|
||||||
#define DB_BASIC (0x001)
|
|
||||||
#define DB_VERBOSE (0x002)
|
|
||||||
#define DB_JOBS (0x004)
|
|
||||||
#define DB_IMPLICIT (0x008)
|
|
||||||
#define DB_MAKEFILES (0x100)
|
|
||||||
|
|
||||||
#define DB_ALL (0xfff)
|
|
||||||
|
|
||||||
extern int db_level;
|
|
||||||
|
|
||||||
#define ISDB(_l) ((_l)&db_level)
|
|
||||||
|
|
||||||
#define DBS(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \
|
|
||||||
printf _x; fflush (stdout);} }while(0)
|
|
||||||
|
|
||||||
#define DBF(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \
|
|
||||||
printf (_x, file->name); \
|
|
||||||
fflush (stdout);} }while(0)
|
|
||||||
|
|
||||||
#define DB(_l,_x) do{ if(ISDB(_l)) {printf _x; fflush (stdout);} }while(0)
|
|
||||||
@ -1,585 +0,0 @@
|
|||||||
/* Data base of default implicit rules for GNU Make.
|
|
||||||
Copyright (C) 1988,89,90,91,92,93,94,95,96 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
#include "rule.h"
|
|
||||||
#include "dep.h"
|
|
||||||
#include "filedef.h"
|
|
||||||
#include "job.h"
|
|
||||||
#include "commands.h"
|
|
||||||
#include "variable.h"
|
|
||||||
|
|
||||||
/* Define GCC_IS_NATIVE if gcc is the native development environment on
|
|
||||||
your system (gcc/bison/flex vs cc/yacc/lex). */
|
|
||||||
#ifdef __MSDOS__
|
|
||||||
#define GCC_IS_NATIVE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* This is the default list of suffixes for suffix rules.
|
|
||||||
`.s' must come last, so that a `.o' file will be made from
|
|
||||||
a `.c' or `.p' or ... file rather than from a .s file. */
|
|
||||||
|
|
||||||
static char default_suffixes[]
|
|
||||||
#ifdef VMS
|
|
||||||
= ".exe .olb .ln .obj .c .cxx .cc .pas .p .for .f .r .y .l .mar \
|
|
||||||
.s .ss .i .ii .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
|
|
||||||
.w .ch .cweb .web .com .sh .elc .el";
|
|
||||||
#else
|
|
||||||
= ".out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \
|
|
||||||
.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
|
|
||||||
.w .ch .web .sh .elc .el";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static struct pspec default_pattern_rules[] =
|
|
||||||
{
|
|
||||||
{ "(%)", "%",
|
|
||||||
"$(AR) $(ARFLAGS) $@ $<" },
|
|
||||||
|
|
||||||
/* The X.out rules are only in BSD's default set because
|
|
||||||
BSD Make has no null-suffix rules, so `foo.out' and
|
|
||||||
`foo' are the same thing. */
|
|
||||||
#ifdef VMS
|
|
||||||
{ "%.exe", "%",
|
|
||||||
"copy $< $@" },
|
|
||||||
#else
|
|
||||||
{ "%.out", "%",
|
|
||||||
"@rm -f $@ \n cp $< $@" },
|
|
||||||
#endif
|
|
||||||
/* Syntax is "ctangle foo.w foo.ch foo.c". */
|
|
||||||
{ "%.c", "%.w %.ch",
|
|
||||||
"$(CTANGLE) $^ $@" },
|
|
||||||
{ "%.tex", "%.w %.ch",
|
|
||||||
"$(CWEAVE) $^ $@" },
|
|
||||||
|
|
||||||
{ 0, 0, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct pspec default_terminal_rules[] =
|
|
||||||
{
|
|
||||||
#ifdef VMS
|
|
||||||
/* RCS. */
|
|
||||||
{ "%", "%$$5lv", /* Multinet style */
|
|
||||||
"if f$$search($@) .nes. \"\" then +$(CHECKOUT,v)" },
|
|
||||||
{ "%", "[.$$rcs]%$$5lv", /* Multinet style */
|
|
||||||
"if f$$search($@) .nes. \"\" then +$(CHECKOUT,v)" },
|
|
||||||
{ "%", "%_v", /* Normal style */
|
|
||||||
"if f$$search($@) .nes. \"\" then +$(CHECKOUT,v)" },
|
|
||||||
{ "%", "[.rcs]%_v", /* Normal style */
|
|
||||||
"if f$$search($@) .nes. \"\" then +$(CHECKOUT,v)" },
|
|
||||||
|
|
||||||
/* SCCS. */
|
|
||||||
/* ain't no SCCS on vms */
|
|
||||||
#else
|
|
||||||
/* RCS. */
|
|
||||||
{ "%", "%,v",
|
|
||||||
"$(CHECKOUT,v)" },
|
|
||||||
{ "%", "RCS/%,v",
|
|
||||||
"$(CHECKOUT,v)" },
|
|
||||||
{ "%", "RCS/%",
|
|
||||||
"$(CHECKOUT,v)" },
|
|
||||||
|
|
||||||
/* SCCS. */
|
|
||||||
{ "%", "s.%",
|
|
||||||
"$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
|
|
||||||
{ "%", "SCCS/s.%",
|
|
||||||
"$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
|
|
||||||
#endif /* !VMS */
|
|
||||||
{ 0, 0, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
static char *default_suffix_rules[] =
|
|
||||||
{
|
|
||||||
#ifdef VMS
|
|
||||||
".obj.exe",
|
|
||||||
"$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@",
|
|
||||||
".mar.exe",
|
|
||||||
"$(COMPILE.mar) $^ \n $(LINK.obj) $(subst .mar,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@",
|
|
||||||
".s.exe",
|
|
||||||
"$(COMPILE.s) $^ \n $(LINK.obj) $(subst .s,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@",
|
|
||||||
".c.exe",
|
|
||||||
"$(COMPILE.c) $^ \n $(LINK.obj) $(subst .c,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@",
|
|
||||||
".cc.exe",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"$(COMPILE.cc) $^ \n $(LINK.obj) $(CXXSTARTUP),sys$$disk:[]$(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@",
|
|
||||||
#else
|
|
||||||
"$(COMPILE.cc) $^ \n $(CXXLINK.obj) $(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@",
|
|
||||||
".cxx.exe",
|
|
||||||
"$(COMPILE.cxx) $^ \n $(CXXLINK.obj) $(subst .cxx,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@",
|
|
||||||
#endif
|
|
||||||
".for.exe",
|
|
||||||
"$(COMPILE.for) $^ \n $(LINK.obj) $(subst .for,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@",
|
|
||||||
".pas.exe",
|
|
||||||
"$(COMPILE.pas) $^ \n $(LINK.obj) $(subst .pas,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@",
|
|
||||||
|
|
||||||
".com",
|
|
||||||
"copy $< >$@",
|
|
||||||
|
|
||||||
".mar.obj",
|
|
||||||
"$(COMPILE.mar) /obj=$@ $<",
|
|
||||||
".s.obj",
|
|
||||||
"$(COMPILE.s) /obj=$@ $<",
|
|
||||||
".ss.obj",
|
|
||||||
"$(COMPILE.s) /obj=$@ $<",
|
|
||||||
".c.i",
|
|
||||||
"$(COMPILE.c)/prep /list=$@ $<",
|
|
||||||
".c.s",
|
|
||||||
"$(COMPILE.c)/noobj/machine /list=$@ $<",
|
|
||||||
".i.s",
|
|
||||||
"$(COMPILE.c)/noprep/noobj/machine /list=$@ $<",
|
|
||||||
".c.obj",
|
|
||||||
"$(COMPILE.c) /obj=$@ $<",
|
|
||||||
".cc.ii",
|
|
||||||
"$(COMPILE.cc)/prep /list=$@ $<",
|
|
||||||
".cc.ss",
|
|
||||||
"$(COMPILE.cc)/noobj/machine /list=$@ $<",
|
|
||||||
".ii.ss",
|
|
||||||
"$(COMPILE.cc)/noprep/noobj/machine /list=$@ $<",
|
|
||||||
".cc.obj",
|
|
||||||
"$(COMPILE.cc) /obj=$@ $<",
|
|
||||||
".for.obj",
|
|
||||||
"$(COMPILE.for) /obj=$@ $<",
|
|
||||||
".pas.obj",
|
|
||||||
"$(COMPILE.pas) /obj=$@ $<",
|
|
||||||
|
|
||||||
".y.c",
|
|
||||||
"$(YACC.y) $< \n rename y_tab.c $@",
|
|
||||||
".l.c",
|
|
||||||
"$(LEX.l) $< \n rename lexyy.c $@",
|
|
||||||
|
|
||||||
".texinfo.info",
|
|
||||||
"$(MAKEINFO) $<",
|
|
||||||
|
|
||||||
".tex.dvi",
|
|
||||||
"$(TEX) $<",
|
|
||||||
|
|
||||||
#else /* ! VMS */
|
|
||||||
|
|
||||||
".o",
|
|
||||||
"$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".s",
|
|
||||||
"$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".S",
|
|
||||||
"$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".c",
|
|
||||||
"$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".cc",
|
|
||||||
"$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".C",
|
|
||||||
"$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".cpp",
|
|
||||||
"$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".f",
|
|
||||||
"$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".p",
|
|
||||||
"$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".F",
|
|
||||||
"$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".r",
|
|
||||||
"$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
|
||||||
".mod",
|
|
||||||
"$(COMPILE.mod) -o $@ -e $@ $^",
|
|
||||||
|
|
||||||
".def.sym",
|
|
||||||
"$(COMPILE.def) -o $@ $<",
|
|
||||||
|
|
||||||
".sh",
|
|
||||||
"cat $< >$@ \n chmod a+x $@",
|
|
||||||
|
|
||||||
".s.o",
|
|
||||||
"$(COMPILE.s) -o $@ $<",
|
|
||||||
".S.o",
|
|
||||||
"$(COMPILE.S) -o $@ $<",
|
|
||||||
".c.o",
|
|
||||||
"$(COMPILE.c) $(OUTPUT_OPTION) $<",
|
|
||||||
".cc.o",
|
|
||||||
"$(COMPILE.cc) $(OUTPUT_OPTION) $<",
|
|
||||||
".C.o",
|
|
||||||
"$(COMPILE.C) $(OUTPUT_OPTION) $<",
|
|
||||||
".cpp.o",
|
|
||||||
"$(COMPILE.cpp) $(OUTPUT_OPTION) $<",
|
|
||||||
".f.o",
|
|
||||||
"$(COMPILE.f) $(OUTPUT_OPTION) $<",
|
|
||||||
".p.o",
|
|
||||||
"$(COMPILE.p) $(OUTPUT_OPTION) $<",
|
|
||||||
".F.o",
|
|
||||||
"$(COMPILE.F) $(OUTPUT_OPTION) $<",
|
|
||||||
".r.o",
|
|
||||||
"$(COMPILE.r) $(OUTPUT_OPTION) $<",
|
|
||||||
".mod.o",
|
|
||||||
"$(COMPILE.mod) -o $@ $<",
|
|
||||||
|
|
||||||
".c.ln",
|
|
||||||
"$(LINT.c) -C$* $<",
|
|
||||||
".y.ln",
|
|
||||||
#ifndef __MSDOS__
|
|
||||||
"$(YACC.y) $< \n $(LINT.c) -C$* y.tab.c \n $(RM) y.tab.c",
|
|
||||||
#else
|
|
||||||
"$(YACC.y) $< \n $(LINT.c) -C$* y_tab.c \n $(RM) y_tab.c",
|
|
||||||
#endif
|
|
||||||
".l.ln",
|
|
||||||
"@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c",
|
|
||||||
|
|
||||||
".y.c",
|
|
||||||
#ifndef __MSDOS__
|
|
||||||
"$(YACC.y) $< \n mv -f y.tab.c $@",
|
|
||||||
#else
|
|
||||||
"$(YACC.y) $< \n mv -f y_tab.c $@",
|
|
||||||
#endif
|
|
||||||
".l.c",
|
|
||||||
"@$(RM) $@ \n $(LEX.l) $< > $@",
|
|
||||||
|
|
||||||
".F.f",
|
|
||||||
"$(PREPROCESS.F) $(OUTPUT_OPTION) $<",
|
|
||||||
".r.f",
|
|
||||||
"$(PREPROCESS.r) $(OUTPUT_OPTION) $<",
|
|
||||||
|
|
||||||
/* This might actually make lex.yy.c if there's no %R%
|
|
||||||
directive in $*.l, but in that case why were you
|
|
||||||
trying to make $*.r anyway? */
|
|
||||||
".l.r",
|
|
||||||
"$(LEX.l) $< > $@ \n mv -f lex.yy.r $@",
|
|
||||||
|
|
||||||
".S.s",
|
|
||||||
"$(PREPROCESS.S) $< > $@",
|
|
||||||
|
|
||||||
".texinfo.info",
|
|
||||||
"$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@",
|
|
||||||
|
|
||||||
".texi.info",
|
|
||||||
"$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@",
|
|
||||||
|
|
||||||
".txinfo.info",
|
|
||||||
"$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@",
|
|
||||||
|
|
||||||
".tex.dvi",
|
|
||||||
"$(TEX) $<",
|
|
||||||
|
|
||||||
".texinfo.dvi",
|
|
||||||
"$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<",
|
|
||||||
|
|
||||||
".texi.dvi",
|
|
||||||
"$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<",
|
|
||||||
|
|
||||||
".txinfo.dvi",
|
|
||||||
"$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<",
|
|
||||||
|
|
||||||
".w.c",
|
|
||||||
"$(CTANGLE) $< - $@", /* The `-' says there is no `.ch' file. */
|
|
||||||
|
|
||||||
".web.p",
|
|
||||||
"$(TANGLE) $<",
|
|
||||||
|
|
||||||
".w.tex",
|
|
||||||
"$(CWEAVE) $< - $@", /* The `-' says there is no `.ch' file. */
|
|
||||||
|
|
||||||
".web.tex",
|
|
||||||
"$(WEAVE) $<",
|
|
||||||
|
|
||||||
#endif /* !VMS */
|
|
||||||
|
|
||||||
0, 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static char *default_variables[] =
|
|
||||||
{
|
|
||||||
#ifdef VMS
|
|
||||||
#ifdef __ALPHA
|
|
||||||
"ARCH", "ALPHA",
|
|
||||||
#else
|
|
||||||
"ARCH", "VAX",
|
|
||||||
#endif
|
|
||||||
"AR", "library/obj",
|
|
||||||
"ARFLAGS", "/replace",
|
|
||||||
"AS", "macro",
|
|
||||||
"MACRO", "macro",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"CC", "gcc",
|
|
||||||
#else
|
|
||||||
"CC", "cc",
|
|
||||||
#endif
|
|
||||||
"CD", "builtin_cd",
|
|
||||||
"MAKE", "make",
|
|
||||||
"ECHO", "write sys$$output \"",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"C++", "gcc/plus",
|
|
||||||
"CXX", "gcc/plus",
|
|
||||||
#else
|
|
||||||
"C++", "cxx",
|
|
||||||
"CXX", "cxx",
|
|
||||||
"CXXLD", "cxxlink",
|
|
||||||
#endif
|
|
||||||
"CO", "co",
|
|
||||||
"CPP", "$(CC) /preprocess_only",
|
|
||||||
"FC", "fortran",
|
|
||||||
/* System V uses these, so explicit rules using them should work.
|
|
||||||
However, there is no way to make implicit rules use them and FC. */
|
|
||||||
"F77", "$(FC)",
|
|
||||||
"F77FLAGS", "$(FFLAGS)",
|
|
||||||
"LD", "link",
|
|
||||||
"LEX", "lex",
|
|
||||||
"PC", "pascal",
|
|
||||||
"YACC", "bison/yacc",
|
|
||||||
"YFLAGS", "/Define/Verbose",
|
|
||||||
"BISON", "bison",
|
|
||||||
"MAKEINFO", "makeinfo",
|
|
||||||
"TEX", "tex",
|
|
||||||
"TEXINDEX", "texindex",
|
|
||||||
|
|
||||||
"RM", "delete/nolog",
|
|
||||||
|
|
||||||
"CSTARTUP", "",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"CRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj",
|
|
||||||
"CXXSTARTUP", "gnu_cc_library:crtbegin.obj",
|
|
||||||
"CXXRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crtend.obj,gnu_cc_library:gxx_main.obj",
|
|
||||||
"LXLIBS", ",gnu_cc_library:libstdcxx.olb/lib,gnu_cc_library:libgccplus.olb/lib",
|
|
||||||
"LDLIBS", ",gnu_cc_library:libgcc.olb/lib",
|
|
||||||
#else
|
|
||||||
"CRT0", "",
|
|
||||||
"CXXSTARTUP", "",
|
|
||||||
"CXXRT0", "",
|
|
||||||
"LXLIBS", "",
|
|
||||||
"LDLIBS", "",
|
|
||||||
#endif
|
|
||||||
|
|
||||||
"LINK.obj", "$(LD) $(LDFLAGS)",
|
|
||||||
#ifndef GCC_IS_NATIVE
|
|
||||||
"CXXLINK.obj", "$(CXXLD) $(LDFLAGS)",
|
|
||||||
"COMPILE.cxx", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
#endif
|
|
||||||
"COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
"YACC.y", "$(YACC) $(YFLAGS)",
|
|
||||||
"LEX.l", "$(LEX) $(LFLAGS)",
|
|
||||||
"COMPILE.for", "$(FC) $(FFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.pas", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.mar", "$(MACRO) $(MACROFLAGS)",
|
|
||||||
"COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)",
|
|
||||||
"LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
|
|
||||||
"MV", "rename/new_version",
|
|
||||||
"CP", "copy",
|
|
||||||
|
|
||||||
#else /* !VMS */
|
|
||||||
|
|
||||||
"AR", "ar",
|
|
||||||
"ARFLAGS", "rv",
|
|
||||||
"AS", "as",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"CC", "gcc",
|
|
||||||
# ifdef __MSDOS__
|
|
||||||
"CXX", "gpp", /* g++ is an invalid name on MSDOS */
|
|
||||||
# else
|
|
||||||
"CXX", "gcc",
|
|
||||||
# endif /* __MSDOS__ */
|
|
||||||
#else
|
|
||||||
"CC", "cc",
|
|
||||||
"CXX", "g++",
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist,
|
|
||||||
and to the empty string if $@ does exist. */
|
|
||||||
"CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)",
|
|
||||||
"CO", "co",
|
|
||||||
"COFLAGS", "",
|
|
||||||
|
|
||||||
"CPP", "$(CC) -E",
|
|
||||||
#ifdef CRAY
|
|
||||||
"CF77PPFLAGS", "-P",
|
|
||||||
"CF77PP", "/lib/cpp",
|
|
||||||
"CFT", "cft77",
|
|
||||||
"CF", "cf77",
|
|
||||||
"FC", "$(CF)",
|
|
||||||
#else /* Not CRAY. */
|
|
||||||
#ifdef _IBMR2
|
|
||||||
"FC", "xlf",
|
|
||||||
#else
|
|
||||||
#ifdef __convex__
|
|
||||||
"FC", "fc",
|
|
||||||
#else
|
|
||||||
"FC", "f77",
|
|
||||||
#endif /* __convex__ */
|
|
||||||
#endif /* _IBMR2 */
|
|
||||||
/* System V uses these, so explicit rules using them should work.
|
|
||||||
However, there is no way to make implicit rules use them and FC. */
|
|
||||||
"F77", "$(FC)",
|
|
||||||
"F77FLAGS", "$(FFLAGS)",
|
|
||||||
#endif /* Cray. */
|
|
||||||
"GET", SCCS_GET,
|
|
||||||
"LD", "ld",
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"LEX", "flex",
|
|
||||||
#else
|
|
||||||
"LEX", "lex",
|
|
||||||
#endif
|
|
||||||
"LINT", "lint",
|
|
||||||
"M2C", "m2c",
|
|
||||||
#ifdef pyr
|
|
||||||
"PC", "pascal",
|
|
||||||
#else
|
|
||||||
#ifdef CRAY
|
|
||||||
"PC", "PASCAL",
|
|
||||||
"SEGLDR", "segldr",
|
|
||||||
#else
|
|
||||||
"PC", "pc",
|
|
||||||
#endif /* CRAY. */
|
|
||||||
#endif /* pyr. */
|
|
||||||
#ifdef GCC_IS_NATIVE
|
|
||||||
"YACC", "bison -y",
|
|
||||||
#else
|
|
||||||
"YACC", "yacc", /* Or "bison -y" */
|
|
||||||
#endif
|
|
||||||
"MAKEINFO", "makeinfo",
|
|
||||||
"TEX", "tex",
|
|
||||||
"TEXI2DVI", "texi2dvi",
|
|
||||||
"WEAVE", "weave",
|
|
||||||
"CWEAVE", "cweave",
|
|
||||||
"TANGLE", "tangle",
|
|
||||||
"CTANGLE", "ctangle",
|
|
||||||
|
|
||||||
"RM", "rm -f",
|
|
||||||
|
|
||||||
"LINK.o", "$(CC) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"COMPILE.C", "$(COMPILE.cc)",
|
|
||||||
"COMPILE.cpp", "$(COMPILE.cc)",
|
|
||||||
"LINK.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"LINK.C", "$(LINK.cc)",
|
|
||||||
"LINK.cpp", "$(LINK.cc)",
|
|
||||||
"YACC.y", "$(YACC) $(YFLAGS)",
|
|
||||||
"LEX.l", "$(LEX) $(LFLAGS) -t",
|
|
||||||
"COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)",
|
|
||||||
"COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
|
||||||
"LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
|
||||||
"LINK.s", "$(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)",
|
|
||||||
"COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)",
|
|
||||||
"LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)",
|
|
||||||
"COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c",
|
|
||||||
"PREPROCESS.S", "$(CC) -E $(CPPFLAGS)",
|
|
||||||
"PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F",
|
|
||||||
"PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F",
|
|
||||||
"LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
|
|
||||||
|
|
||||||
#ifndef NO_MINUS_C_MINUS_O
|
|
||||||
"OUTPUT_OPTION", "-o $@",
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SCCS_GET_MINUS_G
|
|
||||||
"SCCS_OUTPUT_OPTION", "-G$@",
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _AMIGA
|
|
||||||
".LIBPATTERNS", "%.lib",
|
|
||||||
#else
|
|
||||||
#ifdef __MSDOS__
|
|
||||||
".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a",
|
|
||||||
#else
|
|
||||||
".LIBPATTERNS", "lib%.so lib%.a",
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !VMS */
|
|
||||||
0, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Set up the default .SUFFIXES list. */
|
|
||||||
|
|
||||||
void
|
|
||||||
set_default_suffixes ()
|
|
||||||
{
|
|
||||||
suffix_file = enter_file (".SUFFIXES");
|
|
||||||
|
|
||||||
if (no_builtin_rules_flag)
|
|
||||||
(void) define_variable ("SUFFIXES", 8, "", o_default, 0);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *p = default_suffixes;
|
|
||||||
suffix_file->deps = (struct dep *)
|
|
||||||
multi_glob (parse_file_seq (&p, '\0', sizeof (struct dep), 1),
|
|
||||||
sizeof (struct dep));
|
|
||||||
(void) define_variable ("SUFFIXES", 8, default_suffixes, o_default, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Enter the default suffix rules as file rules. This used to be done in
|
|
||||||
install_default_implicit_rules, but that loses because we want the
|
|
||||||
suffix rules installed before reading makefiles, and thee pattern rules
|
|
||||||
installed after. */
|
|
||||||
|
|
||||||
void
|
|
||||||
install_default_suffix_rules ()
|
|
||||||
{
|
|
||||||
register char **s;
|
|
||||||
|
|
||||||
if (no_builtin_rules_flag)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (s = default_suffix_rules; *s != 0; s += 2)
|
|
||||||
{
|
|
||||||
register struct file *f = enter_file (s[0]);
|
|
||||||
/* Don't clobber cmds given in a makefile if there were any. */
|
|
||||||
if (f->cmds == 0)
|
|
||||||
{
|
|
||||||
f->cmds = (struct commands *) xmalloc (sizeof (struct commands));
|
|
||||||
f->cmds->fileinfo.filenm = 0;
|
|
||||||
f->cmds->commands = s[1];
|
|
||||||
f->cmds->command_lines = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Install the default pattern rules. */
|
|
||||||
|
|
||||||
void
|
|
||||||
install_default_implicit_rules ()
|
|
||||||
{
|
|
||||||
register struct pspec *p;
|
|
||||||
|
|
||||||
if (no_builtin_rules_flag)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (p = default_pattern_rules; p->target != 0; ++p)
|
|
||||||
install_pattern_rule (p, 0);
|
|
||||||
|
|
||||||
for (p = default_terminal_rules; p->target != 0; ++p)
|
|
||||||
install_pattern_rule (p, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
define_default_variables ()
|
|
||||||
{
|
|
||||||
register char **s;
|
|
||||||
|
|
||||||
if (no_builtin_variables_flag)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (s = default_variables; *s != 0; s += 2)
|
|
||||||
(void) define_variable (s[0], strlen (s[0]), s[1], o_default, 1);
|
|
||||||
}
|
|
||||||
@ -1,76 +0,0 @@
|
|||||||
/* Definitions of dependency data structures for GNU Make.
|
|
||||||
Copyright (C) 1988, 1989, 1991, 1992, 1993, 1996 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* Flag bits for the second argument to `read_makefile'.
|
|
||||||
These flags are saved in the `changed' field of each
|
|
||||||
`struct dep' in the chain returned by `read_all_makefiles'. */
|
|
||||||
|
|
||||||
#define RM_NO_DEFAULT_GOAL (1 << 0) /* Do not set default goal. */
|
|
||||||
#define RM_INCLUDED (1 << 1) /* Search makefile search path. */
|
|
||||||
#define RM_DONTCARE (1 << 2) /* No error if it doesn't exist. */
|
|
||||||
#define RM_NO_TILDE (1 << 3) /* Don't expand ~ in file name. */
|
|
||||||
#define RM_NOFLAG 0
|
|
||||||
|
|
||||||
/* Structure representing one dependency of a file.
|
|
||||||
Each struct file's `deps' points to a chain of these,
|
|
||||||
chained through the `next'.
|
|
||||||
|
|
||||||
Note that the first two words of this match a struct nameseq. */
|
|
||||||
|
|
||||||
struct dep
|
|
||||||
{
|
|
||||||
struct dep *next;
|
|
||||||
char *name;
|
|
||||||
struct file *file;
|
|
||||||
int changed;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Structure used in chains of names, for parsing and globbing. */
|
|
||||||
|
|
||||||
struct nameseq
|
|
||||||
{
|
|
||||||
struct nameseq *next;
|
|
||||||
char *name;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
extern struct nameseq *multi_glob PARAMS ((struct nameseq *chain, unsigned int size));
|
|
||||||
#ifdef VMS
|
|
||||||
extern struct nameseq *parse_file_seq ();
|
|
||||||
#else
|
|
||||||
extern struct nameseq *parse_file_seq PARAMS ((char **stringp, int stopchar, unsigned int size, int strip));
|
|
||||||
#endif
|
|
||||||
extern char *tilde_expand PARAMS ((char *name));
|
|
||||||
|
|
||||||
#ifndef NO_ARCHIVES
|
|
||||||
extern struct nameseq *ar_glob PARAMS ((char *arname, char *member_pattern, unsigned int size));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef iAPX286
|
|
||||||
#define dep_name(d) ((d)->name == 0 ? (d)->file->name : (d)->name)
|
|
||||||
#else
|
|
||||||
/* Buggy compiler can't hack this. */
|
|
||||||
extern char *dep_name ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern struct dep *copy_dep_chain PARAMS ((struct dep *d));
|
|
||||||
extern struct dep *read_all_makefiles PARAMS ((char **makefiles));
|
|
||||||
extern int update_goal_chain PARAMS ((struct dep *goals, int makefiles));
|
|
||||||
extern void uniquize_deps PARAMS ((struct dep *));
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,42 +0,0 @@
|
|||||||
@echo Building Make for MSDOS
|
|
||||||
@rem Echo ON so they will see what is going on.
|
|
||||||
@echo on
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g job.c -o job.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g dir.c -o dir.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g file.c -o file.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g misc.c -o misc.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g main.c -o main.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g read.c -o read.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g remake.c -o remake.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g rule.c -o rule.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g implicit.c -o implicit.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g default.c -o default.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g variable.c -o variable.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g expand.c -o expand.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g function.c -o function.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g vpath.c -o vpath.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g version.c -o version.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g ar.c -o ar.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g arscan.c -o arscan.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g signame.c -o signame.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g remote-stub.c -o remote-stub.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt.c -o getopt.o
|
|
||||||
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt1.c -o getopt1.o
|
|
||||||
@cd glob
|
|
||||||
@if exist libglob.a del libglob.a
|
|
||||||
gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g glob.c -o glob.o
|
|
||||||
gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g fnmatch.c -o fnmatch.o
|
|
||||||
ar rv libglob.a glob.o fnmatch.o
|
|
||||||
@echo off
|
|
||||||
cd ..
|
|
||||||
echo commands.o > respf.$$$
|
|
||||||
for %%f in (job dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
|
|
||||||
for %%f in (expand function vpath version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
|
|
||||||
echo glob/libglob.a >> respf.$$$
|
|
||||||
@echo Linking...
|
|
||||||
@echo on
|
|
||||||
gcc -o make.new @respf.$$$
|
|
||||||
@if exist make.exe echo Make.exe is now built!
|
|
||||||
@if not exist make.exe echo Make.exe build failed...
|
|
||||||
@if exist make.exe del respf.$$$
|
|
||||||
@ -1,546 +0,0 @@
|
|||||||
/* Variable expansion functions for GNU Make.
|
|
||||||
Copyright (C) 1988, 89, 91, 92, 93, 95 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include "filedef.h"
|
|
||||||
#include "job.h"
|
|
||||||
#include "commands.h"
|
|
||||||
#include "variable.h"
|
|
||||||
#include "rule.h"
|
|
||||||
|
|
||||||
/* The next two describe the variable output buffer.
|
|
||||||
This buffer is used to hold the variable-expansion of a line of the
|
|
||||||
makefile. It is made bigger with realloc whenever it is too small.
|
|
||||||
variable_buffer_length is the size currently allocated.
|
|
||||||
variable_buffer is the address of the buffer.
|
|
||||||
|
|
||||||
For efficiency, it's guaranteed that the buffer will always have
|
|
||||||
VARIABLE_BUFFER_ZONE extra bytes allocated. This allows you to add a few
|
|
||||||
extra chars without having to call a function. Note you should never use
|
|
||||||
these bytes unless you're _sure_ you have room (you know when the buffer
|
|
||||||
length was last checked. */
|
|
||||||
|
|
||||||
#define VARIABLE_BUFFER_ZONE 5
|
|
||||||
|
|
||||||
static unsigned int variable_buffer_length;
|
|
||||||
char *variable_buffer;
|
|
||||||
|
|
||||||
/* Subroutine of variable_expand and friends:
|
|
||||||
The text to add is LENGTH chars starting at STRING to the variable_buffer.
|
|
||||||
The text is added to the buffer at PTR, and the updated pointer into
|
|
||||||
the buffer is returned as the value. Thus, the value returned by
|
|
||||||
each call to variable_buffer_output should be the first argument to
|
|
||||||
the following call. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
variable_buffer_output (ptr, string, length)
|
|
||||||
char *ptr, *string;
|
|
||||||
unsigned int length;
|
|
||||||
{
|
|
||||||
register unsigned int newlen = length + (ptr - variable_buffer);
|
|
||||||
|
|
||||||
if ((newlen + VARIABLE_BUFFER_ZONE) > variable_buffer_length)
|
|
||||||
{
|
|
||||||
unsigned int offset = ptr - variable_buffer;
|
|
||||||
variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
|
|
||||||
? newlen + 100
|
|
||||||
: 2 * variable_buffer_length);
|
|
||||||
variable_buffer = (char *) xrealloc (variable_buffer,
|
|
||||||
variable_buffer_length);
|
|
||||||
ptr = variable_buffer + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
bcopy (string, ptr, length);
|
|
||||||
return ptr + length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return a pointer to the beginning of the variable buffer. */
|
|
||||||
|
|
||||||
static char *
|
|
||||||
initialize_variable_output ()
|
|
||||||
{
|
|
||||||
/* If we don't have a variable output buffer yet, get one. */
|
|
||||||
|
|
||||||
if (variable_buffer == 0)
|
|
||||||
{
|
|
||||||
variable_buffer_length = 200;
|
|
||||||
variable_buffer = (char *) xmalloc (variable_buffer_length);
|
|
||||||
variable_buffer[0] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return variable_buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Recursively expand V. The returned string is malloc'd. */
|
|
||||||
|
|
||||||
static char *allocated_variable_append PARAMS ((struct variable *v));
|
|
||||||
|
|
||||||
char *
|
|
||||||
recursively_expand (v)
|
|
||||||
register struct variable *v;
|
|
||||||
{
|
|
||||||
char *value;
|
|
||||||
|
|
||||||
if (v->expanding)
|
|
||||||
/* Expanding V causes infinite recursion. Lose. */
|
|
||||||
fatal (reading_file,
|
|
||||||
_("Recursive variable `%s' references itself (eventually)"),
|
|
||||||
v->name);
|
|
||||||
|
|
||||||
v->expanding = 1;
|
|
||||||
if (v->append)
|
|
||||||
value = allocated_variable_append (v);
|
|
||||||
else
|
|
||||||
value = allocated_variable_expand (v->value);
|
|
||||||
v->expanding = 0;
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Warn that NAME is an undefined variable. */
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#endif
|
|
||||||
static void
|
|
||||||
warn_undefined (name, length)
|
|
||||||
char *name;
|
|
||||||
unsigned int length;
|
|
||||||
{
|
|
||||||
if (warn_undefined_variables_flag)
|
|
||||||
error (reading_file,
|
|
||||||
_("warning: undefined variable `%.*s'"), (int)length, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Expand a simple reference to variable NAME, which is LENGTH chars long. */
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#endif
|
|
||||||
static char *
|
|
||||||
reference_variable (o, name, length)
|
|
||||||
char *o;
|
|
||||||
char *name;
|
|
||||||
unsigned int length;
|
|
||||||
{
|
|
||||||
register struct variable *v;
|
|
||||||
char *value;
|
|
||||||
|
|
||||||
v = lookup_variable (name, length);
|
|
||||||
|
|
||||||
if (v == 0)
|
|
||||||
warn_undefined (name, length);
|
|
||||||
|
|
||||||
if (v == 0 || *v->value == '\0')
|
|
||||||
return o;
|
|
||||||
|
|
||||||
value = (v->recursive ? recursively_expand (v) : v->value);
|
|
||||||
|
|
||||||
o = variable_buffer_output (o, value, strlen (value));
|
|
||||||
|
|
||||||
if (v->recursive)
|
|
||||||
free (value);
|
|
||||||
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scan STRING for variable references and expansion-function calls. Only
|
|
||||||
LENGTH bytes of STRING are actually scanned. If LENGTH is -1, scan until
|
|
||||||
a null byte is found.
|
|
||||||
|
|
||||||
Write the results to LINE, which must point into `variable_buffer'. If
|
|
||||||
LINE is NULL, start at the beginning of the buffer.
|
|
||||||
Return a pointer to LINE, or to the beginning of the buffer if LINE is
|
|
||||||
NULL. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
variable_expand_string (line, string, length)
|
|
||||||
register char *line;
|
|
||||||
char *string;
|
|
||||||
long length;
|
|
||||||
{
|
|
||||||
register struct variable *v;
|
|
||||||
register char *p, *o, *p1;
|
|
||||||
char save_char = '\0';
|
|
||||||
unsigned int line_offset;
|
|
||||||
|
|
||||||
if (!line)
|
|
||||||
line = initialize_variable_output();
|
|
||||||
|
|
||||||
p = string;
|
|
||||||
o = line;
|
|
||||||
line_offset = line - variable_buffer;
|
|
||||||
|
|
||||||
if (length >= 0)
|
|
||||||
{
|
|
||||||
save_char = string[length];
|
|
||||||
string[length] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* Copy all following uninteresting chars all at once to the
|
|
||||||
variable output buffer, and skip them. Uninteresting chars end
|
|
||||||
at the next $ or the end of the input. */
|
|
||||||
|
|
||||||
p1 = strchr (p, '$');
|
|
||||||
|
|
||||||
o = variable_buffer_output (o, p, p1 != 0 ? p1 - p : strlen (p) + 1);
|
|
||||||
|
|
||||||
if (p1 == 0)
|
|
||||||
break;
|
|
||||||
p = p1 + 1;
|
|
||||||
|
|
||||||
/* Dispatch on the char that follows the $. */
|
|
||||||
|
|
||||||
switch (*p)
|
|
||||||
{
|
|
||||||
case '$':
|
|
||||||
/* $$ seen means output one $ to the variable output buffer. */
|
|
||||||
o = variable_buffer_output (o, p, 1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '(':
|
|
||||||
case '{':
|
|
||||||
/* $(...) or ${...} is the general case of substitution. */
|
|
||||||
{
|
|
||||||
char openparen = *p;
|
|
||||||
char closeparen = (openparen == '(') ? ')' : '}';
|
|
||||||
register char *beg = p + 1;
|
|
||||||
int free_beg = 0;
|
|
||||||
char *op, *begp;
|
|
||||||
char *end, *colon;
|
|
||||||
|
|
||||||
op = o;
|
|
||||||
begp = p;
|
|
||||||
if (handle_function (&op, &begp))
|
|
||||||
{
|
|
||||||
o = op;
|
|
||||||
p = begp;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is there a variable reference inside the parens or braces?
|
|
||||||
If so, expand it before expanding the entire reference. */
|
|
||||||
|
|
||||||
end = strchr (beg, closeparen);
|
|
||||||
if (end == 0)
|
|
||||||
/* Unterminated variable reference. */
|
|
||||||
fatal (reading_file, _("unterminated variable reference"));
|
|
||||||
p1 = lindex (beg, end, '$');
|
|
||||||
if (p1 != 0)
|
|
||||||
{
|
|
||||||
/* BEG now points past the opening paren or brace.
|
|
||||||
Count parens or braces until it is matched. */
|
|
||||||
int count = 0;
|
|
||||||
for (p = beg; *p != '\0'; ++p)
|
|
||||||
{
|
|
||||||
if (*p == openparen)
|
|
||||||
++count;
|
|
||||||
else if (*p == closeparen && --count < 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* If COUNT is >= 0, there were unmatched opening parens
|
|
||||||
or braces, so we go to the simple case of a variable name
|
|
||||||
such as `$($(a)'. */
|
|
||||||
if (count < 0)
|
|
||||||
{
|
|
||||||
beg = expand_argument (beg, p); /* Expand the name. */
|
|
||||||
free_beg = 1; /* Remember to free BEG when finished. */
|
|
||||||
end = strchr (beg, '\0');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
/* Advance P to the end of this reference. After we are
|
|
||||||
finished expanding this one, P will be incremented to
|
|
||||||
continue the scan. */
|
|
||||||
p = end;
|
|
||||||
|
|
||||||
/* This is not a reference to a built-in function and
|
|
||||||
any variable references inside are now expanded.
|
|
||||||
Is the resultant text a substitution reference? */
|
|
||||||
|
|
||||||
colon = lindex (beg, end, ':');
|
|
||||||
if (colon != 0)
|
|
||||||
{
|
|
||||||
/* This looks like a substitution reference: $(FOO:A=B). */
|
|
||||||
char *subst_beg, *subst_end, *replace_beg, *replace_end;
|
|
||||||
|
|
||||||
subst_beg = colon + 1;
|
|
||||||
subst_end = strchr (subst_beg, '=');
|
|
||||||
if (subst_end == 0)
|
|
||||||
/* There is no = in sight. Punt on the substitution
|
|
||||||
reference and treat this as a variable name containing
|
|
||||||
a colon, in the code below. */
|
|
||||||
colon = 0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
replace_beg = subst_end + 1;
|
|
||||||
replace_end = end;
|
|
||||||
|
|
||||||
/* Extract the variable name before the colon
|
|
||||||
and look up that variable. */
|
|
||||||
v = lookup_variable (beg, colon - beg);
|
|
||||||
if (v == 0)
|
|
||||||
warn_undefined (beg, colon - beg);
|
|
||||||
|
|
||||||
if (v != 0 && *v->value != '\0')
|
|
||||||
{
|
|
||||||
char *value = (v->recursive ? recursively_expand (v)
|
|
||||||
: v->value);
|
|
||||||
char *pattern, *percent;
|
|
||||||
if (free_beg)
|
|
||||||
{
|
|
||||||
*subst_end = '\0';
|
|
||||||
pattern = subst_beg;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pattern = (char *) alloca (subst_end - subst_beg
|
|
||||||
+ 1);
|
|
||||||
bcopy (subst_beg, pattern, subst_end - subst_beg);
|
|
||||||
pattern[subst_end - subst_beg] = '\0';
|
|
||||||
}
|
|
||||||
percent = find_percent (pattern);
|
|
||||||
if (percent != 0)
|
|
||||||
{
|
|
||||||
char *replace;
|
|
||||||
if (free_beg)
|
|
||||||
{
|
|
||||||
*replace_end = '\0';
|
|
||||||
replace = replace_beg;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
replace = (char *) alloca (replace_end
|
|
||||||
- replace_beg
|
|
||||||
+ 1);
|
|
||||||
bcopy (replace_beg, replace,
|
|
||||||
replace_end - replace_beg);
|
|
||||||
replace[replace_end - replace_beg] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
o = patsubst_expand (o, value, pattern, replace,
|
|
||||||
percent, (char *) 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
o = subst_expand (o, value,
|
|
||||||
pattern, replace_beg,
|
|
||||||
strlen (pattern),
|
|
||||||
end - replace_beg,
|
|
||||||
0, 1);
|
|
||||||
if (v->recursive)
|
|
||||||
free (value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (colon == 0)
|
|
||||||
/* This is an ordinary variable reference.
|
|
||||||
Look up the value of the variable. */
|
|
||||||
o = reference_variable (o, beg, end - beg);
|
|
||||||
|
|
||||||
if (free_beg)
|
|
||||||
free (beg);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\0':
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (isblank ((unsigned char)p[-1]))
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* A $ followed by a random char is a variable reference:
|
|
||||||
$a is equivalent to $(a). */
|
|
||||||
{
|
|
||||||
/* We could do the expanding here, but this way
|
|
||||||
avoids code repetition at a small performance cost. */
|
|
||||||
char name[5];
|
|
||||||
name[0] = '$';
|
|
||||||
name[1] = '(';
|
|
||||||
name[2] = *p;
|
|
||||||
name[3] = ')';
|
|
||||||
name[4] = '\0';
|
|
||||||
p1 = allocated_variable_expand (name);
|
|
||||||
o = variable_buffer_output (o, p1, strlen (p1));
|
|
||||||
free (p1);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*p == '\0')
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
++p;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (save_char)
|
|
||||||
string[length] = save_char;
|
|
||||||
|
|
||||||
(void)variable_buffer_output (o, "", 1);
|
|
||||||
return (variable_buffer + line_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scan LINE for variable references and expansion-function calls.
|
|
||||||
Build in `variable_buffer' the result of expanding the references and calls.
|
|
||||||
Return the address of the resulting string, which is null-terminated
|
|
||||||
and is valid only until the next time this function is called. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
variable_expand (line)
|
|
||||||
char *line;
|
|
||||||
{
|
|
||||||
return variable_expand_string(NULL, line, (long)-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Expand an argument for an expansion function.
|
|
||||||
The text starting at STR and ending at END is variable-expanded
|
|
||||||
into a null-terminated string that is returned as the value.
|
|
||||||
This is done without clobbering `variable_buffer' or the current
|
|
||||||
variable-expansion that is in progress. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
expand_argument (str, end)
|
|
||||||
char *str, *end;
|
|
||||||
{
|
|
||||||
char *tmp;
|
|
||||||
|
|
||||||
if (str == end)
|
|
||||||
return xstrdup("");
|
|
||||||
|
|
||||||
if (!end || *end == '\0')
|
|
||||||
tmp = str;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tmp = (char *) alloca (end - str + 1);
|
|
||||||
bcopy (str, tmp, end - str);
|
|
||||||
tmp[end - str] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return allocated_variable_expand (tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Expand LINE for FILE. Error messages refer to the file and line where
|
|
||||||
FILE's commands were found. Expansion uses FILE's variable set list. */
|
|
||||||
|
|
||||||
static char *
|
|
||||||
variable_expand_for_file (line, file)
|
|
||||||
char *line;
|
|
||||||
register struct file *file;
|
|
||||||
{
|
|
||||||
char *result;
|
|
||||||
struct variable_set_list *save;
|
|
||||||
|
|
||||||
if (file == 0)
|
|
||||||
return variable_expand (line);
|
|
||||||
|
|
||||||
save = current_variable_set_list;
|
|
||||||
current_variable_set_list = file->variables;
|
|
||||||
if (file->cmds && file->cmds->fileinfo.filenm)
|
|
||||||
reading_file = &file->cmds->fileinfo;
|
|
||||||
else
|
|
||||||
reading_file = 0;
|
|
||||||
result = variable_expand (line);
|
|
||||||
current_variable_set_list = save;
|
|
||||||
reading_file = 0;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Like allocated_variable_expand, but we first expand this variable in the
|
|
||||||
context of the next variable set, then we append the expanded value. */
|
|
||||||
|
|
||||||
static char *
|
|
||||||
allocated_variable_append (v)
|
|
||||||
struct variable *v;
|
|
||||||
{
|
|
||||||
struct variable_set_list *save;
|
|
||||||
int len = strlen (v->name);
|
|
||||||
char *var = alloca (len + 4);
|
|
||||||
char *value;
|
|
||||||
|
|
||||||
char *obuf = variable_buffer;
|
|
||||||
unsigned int olen = variable_buffer_length;
|
|
||||||
|
|
||||||
variable_buffer = 0;
|
|
||||||
|
|
||||||
assert(current_variable_set_list->next != 0);
|
|
||||||
save = current_variable_set_list;
|
|
||||||
current_variable_set_list = current_variable_set_list->next;
|
|
||||||
|
|
||||||
var[0] = '$';
|
|
||||||
var[1] = '(';
|
|
||||||
strcpy (&var[2], v->name);
|
|
||||||
var[len+2] = ')';
|
|
||||||
var[len+3] = '\0';
|
|
||||||
|
|
||||||
value = variable_expand_for_file (var, 0);
|
|
||||||
|
|
||||||
current_variable_set_list = save;
|
|
||||||
|
|
||||||
value += strlen (value);
|
|
||||||
value = variable_buffer_output (value, " ", 1);
|
|
||||||
value = variable_expand_string (value, v->value, (long)-1);
|
|
||||||
|
|
||||||
value = variable_buffer;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Waste a little memory and save time. */
|
|
||||||
value = xrealloc (value, strlen (value))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
variable_buffer = obuf;
|
|
||||||
variable_buffer_length = olen;
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Like variable_expand_for_file, but the returned string is malloc'd.
|
|
||||||
This function is called a lot. It wants to be efficient. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
allocated_variable_expand_for_file (line, file)
|
|
||||||
char *line;
|
|
||||||
struct file *file;
|
|
||||||
{
|
|
||||||
char *value;
|
|
||||||
|
|
||||||
char *obuf = variable_buffer;
|
|
||||||
unsigned int olen = variable_buffer_length;
|
|
||||||
|
|
||||||
variable_buffer = 0;
|
|
||||||
|
|
||||||
value = variable_expand_for_file (line, file);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Waste a little memory and save time. */
|
|
||||||
value = xrealloc (value, strlen (value))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
variable_buffer = obuf;
|
|
||||||
variable_buffer_length = olen;
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
@ -1,797 +0,0 @@
|
|||||||
/* Target file hash table management for GNU Make.
|
|
||||||
Copyright (C) 1988,89,90,91,92,93,94,95,96,97 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#include "make.h"
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include "dep.h"
|
|
||||||
#include "filedef.h"
|
|
||||||
#include "job.h"
|
|
||||||
#include "commands.h"
|
|
||||||
#include "variable.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Hash table of files the makefile knows how to make. */
|
|
||||||
|
|
||||||
#ifndef FILE_BUCKETS
|
|
||||||
#define FILE_BUCKETS 1007
|
|
||||||
#endif
|
|
||||||
static struct file *files[FILE_BUCKETS];
|
|
||||||
|
|
||||||
/* Whether or not .SECONDARY with no prerequisites was given. */
|
|
||||||
static int all_secondary = 0;
|
|
||||||
|
|
||||||
/* Access the hash table of all file records.
|
|
||||||
lookup_file given a name, return the struct file * for that name,
|
|
||||||
or nil if there is none.
|
|
||||||
enter_file similar, but create one if there is none. */
|
|
||||||
|
|
||||||
struct file *
|
|
||||||
lookup_file (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
register struct file *f;
|
|
||||||
register char *n;
|
|
||||||
register unsigned int hashval;
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
register char *lname, *ln;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
assert (*name != '\0');
|
|
||||||
|
|
||||||
/* This is also done in parse_file_seq, so this is redundant
|
|
||||||
for names read from makefiles. It is here for names passed
|
|
||||||
on the command line. */
|
|
||||||
#ifdef VMS
|
|
||||||
# ifndef WANT_CASE_SENSITIVE_TARGETS
|
|
||||||
lname = (char *)malloc(strlen(name) + 1);
|
|
||||||
for (n=name, ln=lname; *n != '\0'; ++n, ++ln)
|
|
||||||
*ln = isupper((unsigned char)*n) ? tolower((unsigned char)*n) : *n;
|
|
||||||
*ln = '\0';
|
|
||||||
name = lname;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
while (name[0] == '[' && name[1] == ']' && name[2] != '\0')
|
|
||||||
name += 2;
|
|
||||||
#endif
|
|
||||||
while (name[0] == '.' && name[1] == '/' && name[2] != '\0')
|
|
||||||
{
|
|
||||||
name += 2;
|
|
||||||
while (*name == '/')
|
|
||||||
/* Skip following slashes: ".//foo" is "foo", not "/foo". */
|
|
||||||
++name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*name == '\0')
|
|
||||||
/* It was all slashes after a dot. */
|
|
||||||
#ifdef VMS
|
|
||||||
name = "[]";
|
|
||||||
#else
|
|
||||||
#ifdef _AMIGA
|
|
||||||
name = "";
|
|
||||||
#else
|
|
||||||
name = "./";
|
|
||||||
#endif /* AMIGA */
|
|
||||||
#endif /* VMS */
|
|
||||||
|
|
||||||
hashval = 0;
|
|
||||||
for (n = name; *n != '\0'; ++n)
|
|
||||||
HASHI (hashval, *n);
|
|
||||||
hashval %= FILE_BUCKETS;
|
|
||||||
|
|
||||||
for (f = files[hashval]; f != 0; f = f->next)
|
|
||||||
{
|
|
||||||
if (strieq (f->hname, name))
|
|
||||||
{
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
free (lname);
|
|
||||||
#endif
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
free (lname);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct file *
|
|
||||||
enter_file (name)
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
register struct file *f, *new;
|
|
||||||
register char *n;
|
|
||||||
register unsigned int hashval;
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
char *lname, *ln;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
assert (*name != '\0');
|
|
||||||
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
lname = (char *)malloc (strlen (name) + 1);
|
|
||||||
for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
|
|
||||||
{
|
|
||||||
if (isupper((unsigned char)*n))
|
|
||||||
*ln = tolower((unsigned char)*n);
|
|
||||||
else
|
|
||||||
*ln = *n;
|
|
||||||
}
|
|
||||||
*ln = 0;
|
|
||||||
/* Creates a possible leak, old value of name is unreachable, but I
|
|
||||||
currently don't know how to fix it. */
|
|
||||||
name = lname;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
hashval = 0;
|
|
||||||
for (n = name; *n != '\0'; ++n)
|
|
||||||
HASHI (hashval, *n);
|
|
||||||
hashval %= FILE_BUCKETS;
|
|
||||||
|
|
||||||
for (f = files[hashval]; f != 0; f = f->next)
|
|
||||||
if (strieq (f->hname, name))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (f != 0 && !f->double_colon)
|
|
||||||
{
|
|
||||||
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
|
|
||||||
free(lname);
|
|
||||||
#endif
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
|
|
||||||
new = (struct file *) xmalloc (sizeof (struct file));
|
|
||||||
bzero ((char *) new, sizeof (struct file));
|
|
||||||
new->name = new->hname = name;
|
|
||||||
new->update_status = -1;
|
|
||||||
|
|
||||||
if (f == 0)
|
|
||||||
{
|
|
||||||
/* This is a completely new file. */
|
|
||||||
new->next = files[hashval];
|
|
||||||
files[hashval] = new;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* There is already a double-colon entry for this file. */
|
|
||||||
new->double_colon = f;
|
|
||||||
while (f->prev != 0)
|
|
||||||
f = f->prev;
|
|
||||||
f->prev = new;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Rehash FILE to NAME. This is not as simple as resetting
|
|
||||||
the `hname' member, since it must be put in a new hash bucket,
|
|
||||||
and possibly merged with an existing file called NAME. */
|
|
||||||
|
|
||||||
void
|
|
||||||
rehash_file (file, name)
|
|
||||||
register struct file *file;
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
char *oldname = file->hname;
|
|
||||||
register unsigned int oldhash;
|
|
||||||
register char *n;
|
|
||||||
|
|
||||||
while (file->renamed != 0)
|
|
||||||
file = file->renamed;
|
|
||||||
|
|
||||||
/* Find the hash values of the old and new names. */
|
|
||||||
|
|
||||||
oldhash = 0;
|
|
||||||
for (n = oldname; *n != '\0'; ++n)
|
|
||||||
HASHI (oldhash, *n);
|
|
||||||
|
|
||||||
file_hash_enter (file, name, oldhash, file->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Rename FILE to NAME. This is not as simple as resetting
|
|
||||||
the `name' member, since it must be put in a new hash bucket,
|
|
||||||
and possibly merged with an existing file called NAME. */
|
|
||||||
|
|
||||||
void
|
|
||||||
rename_file (file, name)
|
|
||||||
register struct file *file;
|
|
||||||
char *name;
|
|
||||||
{
|
|
||||||
rehash_file(file, name);
|
|
||||||
while (file)
|
|
||||||
{
|
|
||||||
file->name = file->hname;
|
|
||||||
file = file->prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
file_hash_enter (file, name, oldhash, oldname)
|
|
||||||
register struct file *file;
|
|
||||||
char *name;
|
|
||||||
unsigned int oldhash;
|
|
||||||
char *oldname;
|
|
||||||
{
|
|
||||||
unsigned int oldbucket = oldhash % FILE_BUCKETS;
|
|
||||||
register unsigned int newhash, newbucket;
|
|
||||||
struct file *oldfile;
|
|
||||||
register char *n;
|
|
||||||
register struct file *f;
|
|
||||||
|
|
||||||
newhash = 0;
|
|
||||||
for (n = name; *n != '\0'; ++n)
|
|
||||||
HASHI (newhash, *n);
|
|
||||||
newbucket = newhash % FILE_BUCKETS;
|
|
||||||
|
|
||||||
/* Look for an existing file under the new name. */
|
|
||||||
|
|
||||||
for (oldfile = files[newbucket]; oldfile != 0; oldfile = oldfile->next)
|
|
||||||
if (strieq (oldfile->hname, name))
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* If the old file is the same as the new file, never mind. */
|
|
||||||
if (oldfile == file)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (oldhash != 0 && (newbucket != oldbucket || oldfile != 0))
|
|
||||||
{
|
|
||||||
/* Remove FILE from its hash bucket. */
|
|
||||||
|
|
||||||
struct file *lastf = 0;
|
|
||||||
|
|
||||||
for (f = files[oldbucket]; f != file; f = f->next)
|
|
||||||
lastf = f;
|
|
||||||
|
|
||||||
if (lastf == 0)
|
|
||||||
files[oldbucket] = f->next;
|
|
||||||
else
|
|
||||||
lastf->next = f->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Give FILE its new name. */
|
|
||||||
|
|
||||||
file->hname = name;
|
|
||||||
for (f = file->double_colon; f != 0; f = f->prev)
|
|
||||||
f->hname = name;
|
|
||||||
|
|
||||||
if (oldfile == 0)
|
|
||||||
{
|
|
||||||
/* There is no existing file with the new name. */
|
|
||||||
|
|
||||||
if (newbucket != oldbucket)
|
|
||||||
{
|
|
||||||
/* Put FILE in its new hash bucket. */
|
|
||||||
file->next = files[newbucket];
|
|
||||||
files[newbucket] = file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* There is an existing file with the new name.
|
|
||||||
We must merge FILE into the existing file. */
|
|
||||||
|
|
||||||
register struct dep *d;
|
|
||||||
|
|
||||||
if (file->cmds != 0)
|
|
||||||
{
|
|
||||||
if (oldfile->cmds == 0)
|
|
||||||
oldfile->cmds = file->cmds;
|
|
||||||
else if (file->cmds != oldfile->cmds)
|
|
||||||
{
|
|
||||||
/* We have two sets of commands. We will go with the
|
|
||||||
one given in the rule explicitly mentioning this name,
|
|
||||||
but give a message to let the user know what's going on. */
|
|
||||||
if (oldfile->cmds->fileinfo.filenm != 0)
|
|
||||||
error (&file->cmds->fileinfo,
|
|
||||||
_("Commands were specified for \
|
|
||||||
file `%s' at %s:%lu,"),
|
|
||||||
oldname, oldfile->cmds->fileinfo.filenm,
|
|
||||||
oldfile->cmds->fileinfo.lineno);
|
|
||||||
else
|
|
||||||
error (&file->cmds->fileinfo,
|
|
||||||
_("Commands for file `%s' were found by \
|
|
||||||
implicit rule search,"),
|
|
||||||
oldname);
|
|
||||||
error (&file->cmds->fileinfo,
|
|
||||||
_("but `%s' is now considered the same file \
|
|
||||||
as `%s'."),
|
|
||||||
oldname, name);
|
|
||||||
error (&file->cmds->fileinfo,
|
|
||||||
_("Commands for `%s' will be ignored \
|
|
||||||
in favor of those for `%s'."),
|
|
||||||
name, oldname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Merge the dependencies of the two files. */
|
|
||||||
|
|
||||||
d = oldfile->deps;
|
|
||||||
if (d == 0)
|
|
||||||
oldfile->deps = file->deps;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (d->next != 0)
|
|
||||||
d = d->next;
|
|
||||||
d->next = file->deps;
|
|
||||||
}
|
|
||||||
|
|
||||||
merge_variable_set_lists (&oldfile->variables, file->variables);
|
|
||||||
|
|
||||||
if (oldfile->double_colon && file->is_target && !file->double_colon)
|
|
||||||
fatal (NILF, _("can't rename single-colon `%s' to double-colon `%s'"),
|
|
||||||
oldname, name);
|
|
||||||
if (!oldfile->double_colon && file->double_colon)
|
|
||||||
{
|
|
||||||
if (oldfile->is_target)
|
|
||||||
fatal (NILF, _("can't rename double-colon `%s' to single-colon `%s'"),
|
|
||||||
oldname, name);
|
|
||||||
else
|
|
||||||
oldfile->double_colon = file->double_colon;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file->last_mtime > oldfile->last_mtime)
|
|
||||||
/* %%% Kludge so -W wins on a file that gets vpathized. */
|
|
||||||
oldfile->last_mtime = file->last_mtime;
|
|
||||||
|
|
||||||
oldfile->mtime_before_update = file->mtime_before_update;
|
|
||||||
|
|
||||||
#define MERGE(field) oldfile->field |= file->field
|
|
||||||
MERGE (precious);
|
|
||||||
MERGE (tried_implicit);
|
|
||||||
MERGE (updating);
|
|
||||||
MERGE (updated);
|
|
||||||
MERGE (is_target);
|
|
||||||
MERGE (cmd_target);
|
|
||||||
MERGE (phony);
|
|
||||||
MERGE (ignore_vpath);
|
|
||||||
#undef MERGE
|
|
||||||
|
|
||||||
file->renamed = oldfile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remove all nonprecious intermediate files.
|
|
||||||
If SIG is nonzero, this was caused by a fatal signal,
|
|
||||||
meaning that a different message will be printed, and
|
|
||||||
the message will go to stderr rather than stdout. */
|
|
||||||
|
|
||||||
void
|
|
||||||
remove_intermediates (sig)
|
|
||||||
int sig;
|
|
||||||
{
|
|
||||||
register int i;
|
|
||||||
register struct file *f;
|
|
||||||
char doneany;
|
|
||||||
|
|
||||||
/* If there's no way we will ever remove anything anyway, punt early. */
|
|
||||||
if (question_flag || touch_flag || all_secondary)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (sig && just_print_flag)
|
|
||||||
return;
|
|
||||||
|
|
||||||
doneany = 0;
|
|
||||||
for (i = 0; i < FILE_BUCKETS; ++i)
|
|
||||||
for (f = files[i]; f != 0; f = f->next)
|
|
||||||
if (f->intermediate && (f->dontcare || !f->precious)
|
|
||||||
&& !f->secondary && !f->cmd_target)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
if (f->update_status == -1)
|
|
||||||
/* If nothing would have created this file yet,
|
|
||||||
don't print an "rm" command for it. */
|
|
||||||
continue;
|
|
||||||
if (just_print_flag)
|
|
||||||
status = 0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
status = unlink (f->name);
|
|
||||||
if (status < 0 && errno == ENOENT)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!f->dontcare)
|
|
||||||
{
|
|
||||||
if (sig)
|
|
||||||
error (NILF, _("*** Deleting intermediate file `%s'"), f->name);
|
|
||||||
else if (!silent_flag)
|
|
||||||
{
|
|
||||||
if (! doneany)
|
|
||||||
{
|
|
||||||
fputs ("rm ", stdout);
|
|
||||||
doneany = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
putchar (' ');
|
|
||||||
fputs (f->name, stdout);
|
|
||||||
fflush (stdout);
|
|
||||||
}
|
|
||||||
if (status < 0)
|
|
||||||
perror_with_name ("unlink: ", f->name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (doneany && !sig)
|
|
||||||
{
|
|
||||||
putchar ('\n');
|
|
||||||
fflush (stdout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* For each dependency of each file, make the `struct dep' point
|
|
||||||
at the appropriate `struct file' (which may have to be created).
|
|
||||||
|
|
||||||
Also mark the files depended on by .PRECIOUS, .PHONY, .SILENT,
|
|
||||||
and various other special targets. */
|
|
||||||
|
|
||||||
void
|
|
||||||
snap_deps ()
|
|
||||||
{
|
|
||||||
register struct file *f, *f2;
|
|
||||||
register struct dep *d;
|
|
||||||
register int i;
|
|
||||||
|
|
||||||
/* Enter each dependency name as a file. */
|
|
||||||
for (i = 0; i < FILE_BUCKETS; ++i)
|
|
||||||
for (f = files[i]; f != 0; f = f->next)
|
|
||||||
for (f2 = f; f2 != 0; f2 = f2->prev)
|
|
||||||
for (d = f2->deps; d != 0; d = d->next)
|
|
||||||
if (d->name != 0)
|
|
||||||
{
|
|
||||||
d->file = lookup_file (d->name);
|
|
||||||
if (d->file == 0)
|
|
||||||
d->file = enter_file (d->name);
|
|
||||||
else
|
|
||||||
free (d->name);
|
|
||||||
d->name = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev)
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
f2->precious = 1;
|
|
||||||
|
|
||||||
for (f = lookup_file (".PHONY"); f != 0; f = f->prev)
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
{
|
|
||||||
/* Mark this file as phony and nonexistent. */
|
|
||||||
f2->phony = 1;
|
|
||||||
f2->last_mtime = NONEXISTENT_MTIME;
|
|
||||||
f2->mtime_before_update = NONEXISTENT_MTIME;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev)
|
|
||||||
{
|
|
||||||
/* .INTERMEDIATE with deps listed
|
|
||||||
marks those deps as intermediate files. */
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
f2->intermediate = 1;
|
|
||||||
/* .INTERMEDIATE with no deps does nothing.
|
|
||||||
Marking all files as intermediates is useless
|
|
||||||
since the goal targets would be deleted after they are built. */
|
|
||||||
}
|
|
||||||
|
|
||||||
for (f = lookup_file (".SECONDARY"); f != 0; f = f->prev)
|
|
||||||
{
|
|
||||||
/* .SECONDARY with deps listed
|
|
||||||
marks those deps as intermediate files
|
|
||||||
in that they don't get rebuilt if not actually needed;
|
|
||||||
but unlike real intermediate files,
|
|
||||||
these are not deleted after make finishes. */
|
|
||||||
if (f->deps)
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
f2->intermediate = f2->secondary = 1;
|
|
||||||
/* .SECONDARY with no deps listed marks *all* files that way. */
|
|
||||||
else
|
|
||||||
all_secondary = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
f = lookup_file (".EXPORT_ALL_VARIABLES");
|
|
||||||
if (f != 0 && f->is_target)
|
|
||||||
export_all_variables = 1;
|
|
||||||
|
|
||||||
f = lookup_file (".IGNORE");
|
|
||||||
if (f != 0 && f->is_target)
|
|
||||||
{
|
|
||||||
if (f->deps == 0)
|
|
||||||
ignore_errors_flag = 1;
|
|
||||||
else
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
f2->command_flags |= COMMANDS_NOERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
f = lookup_file (".SILENT");
|
|
||||||
if (f != 0 && f->is_target)
|
|
||||||
{
|
|
||||||
if (f->deps == 0)
|
|
||||||
silent_flag = 1;
|
|
||||||
else
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
for (f2 = d->file; f2 != 0; f2 = f2->prev)
|
|
||||||
f2->command_flags |= COMMANDS_SILENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
f = lookup_file (".POSIX");
|
|
||||||
if (f != 0 && f->is_target)
|
|
||||||
posix_pedantic = 1;
|
|
||||||
|
|
||||||
f = lookup_file (".NOTPARALLEL");
|
|
||||||
if (f != 0 && f->is_target)
|
|
||||||
not_parallel = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the `command_state' member of FILE and all its `also_make's. */
|
|
||||||
|
|
||||||
void
|
|
||||||
set_command_state (file, state)
|
|
||||||
struct file *file;
|
|
||||||
int state;
|
|
||||||
{
|
|
||||||
struct dep *d;
|
|
||||||
|
|
||||||
file->command_state = state;
|
|
||||||
|
|
||||||
for (d = file->also_make; d != 0; d = d->next)
|
|
||||||
d->file->command_state = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Convert an external file timestamp to internal form. */
|
|
||||||
|
|
||||||
FILE_TIMESTAMP
|
|
||||||
file_timestamp_cons (fname, s, ns)
|
|
||||||
char const *fname;
|
|
||||||
time_t s;
|
|
||||||
int ns;
|
|
||||||
{
|
|
||||||
int offset = ORDINARY_MTIME_MIN + (FILE_TIMESTAMP_HI_RES ? ns : 0);
|
|
||||||
FILE_TIMESTAMP product = (FILE_TIMESTAMP) s << FILE_TIMESTAMP_LO_BITS;
|
|
||||||
FILE_TIMESTAMP ts = product + offset;
|
|
||||||
|
|
||||||
if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX)
|
|
||||||
&& product <= ts && ts <= ORDINARY_MTIME_MAX))
|
|
||||||
{
|
|
||||||
char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
|
|
||||||
ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX;
|
|
||||||
file_timestamp_sprintf (buf, ts);
|
|
||||||
error (NILF, _("%s: Timestamp out of range; substituting %s"),
|
|
||||||
fname ? fname : _("Current time"), buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ts;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get and print file timestamps. */
|
|
||||||
|
|
||||||
FILE_TIMESTAMP
|
|
||||||
file_timestamp_now ()
|
|
||||||
{
|
|
||||||
time_t s;
|
|
||||||
int ns;
|
|
||||||
|
|
||||||
/* Don't bother with high-resolution clocks if file timestamps have
|
|
||||||
only one-second resolution. The code below should work, but it's
|
|
||||||
not worth the hassle of debugging it on hosts where it fails. */
|
|
||||||
if (FILE_TIMESTAMP_HI_RES)
|
|
||||||
{
|
|
||||||
#if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME
|
|
||||||
{
|
|
||||||
struct timespec timespec;
|
|
||||||
if (clock_gettime (CLOCK_REALTIME, ×pec) == 0)
|
|
||||||
{
|
|
||||||
s = timespec.tv_sec;
|
|
||||||
ns = timespec.tv_nsec;
|
|
||||||
goto got_time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if HAVE_GETTIMEOFDAY
|
|
||||||
{
|
|
||||||
struct timeval timeval;
|
|
||||||
if (gettimeofday (&timeval, 0) == 0)
|
|
||||||
{
|
|
||||||
s = timeval.tv_sec;
|
|
||||||
ns = timeval.tv_usec * 1000;
|
|
||||||
goto got_time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
s = time ((time_t *) 0);
|
|
||||||
ns = 0;
|
|
||||||
|
|
||||||
got_time:
|
|
||||||
return file_timestamp_cons (0, s, ns);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
file_timestamp_sprintf (p, ts)
|
|
||||||
char *p;
|
|
||||||
FILE_TIMESTAMP ts;
|
|
||||||
{
|
|
||||||
time_t t = FILE_TIMESTAMP_S (ts);
|
|
||||||
struct tm *tm = localtime (&t);
|
|
||||||
|
|
||||||
if (tm)
|
|
||||||
sprintf (p, "%04d-%02d-%02d %02d:%02d:%02d",
|
|
||||||
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
|
|
||||||
tm->tm_hour, tm->tm_min, tm->tm_sec);
|
|
||||||
else if (t < 0)
|
|
||||||
sprintf (p, "%ld", (long) t);
|
|
||||||
else
|
|
||||||
sprintf (p, "%lu", (unsigned long) t);
|
|
||||||
p += strlen (p);
|
|
||||||
|
|
||||||
/* Append nanoseconds as a fraction, but remove trailing zeros.
|
|
||||||
We don't know the actual timestamp resolution, since clock_getres
|
|
||||||
applies only to local times, whereas this timestamp might come
|
|
||||||
from a remote filesystem. So removing trailing zeros is the
|
|
||||||
best guess that we can do. */
|
|
||||||
sprintf (p, ".%09ld", (long) FILE_TIMESTAMP_NS (ts));
|
|
||||||
p += strlen (p) - 1;
|
|
||||||
while (*p == '0')
|
|
||||||
p--;
|
|
||||||
p += *p != '.';
|
|
||||||
|
|
||||||
*p = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print the data base of files. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
print_file (f)
|
|
||||||
struct file *f;
|
|
||||||
{
|
|
||||||
register struct dep *d;
|
|
||||||
|
|
||||||
putchar ('\n');
|
|
||||||
if (!f->is_target)
|
|
||||||
puts (_("# Not a target:"));
|
|
||||||
printf ("%s:%s", f->name, f->double_colon ? ":" : "");
|
|
||||||
|
|
||||||
for (d = f->deps; d != 0; d = d->next)
|
|
||||||
printf (" %s", dep_name (d));
|
|
||||||
putchar ('\n');
|
|
||||||
|
|
||||||
if (f->precious)
|
|
||||||
puts (_("# Precious file (prerequisite of .PRECIOUS)."));
|
|
||||||
if (f->phony)
|
|
||||||
puts (_("# Phony target (prerequisite of .PHONY)."));
|
|
||||||
if (f->cmd_target)
|
|
||||||
puts (_("# Command-line target."));
|
|
||||||
if (f->dontcare)
|
|
||||||
puts (_("# A default or MAKEFILES makefile."));
|
|
||||||
puts (f->tried_implicit
|
|
||||||
? _("# Implicit rule search has been done.")
|
|
||||||
: _("# Implicit rule search has not been done."));
|
|
||||||
if (f->stem != 0)
|
|
||||||
printf (_("# Implicit/static pattern stem: `%s'\n"), f->stem);
|
|
||||||
if (f->intermediate)
|
|
||||||
puts (_("# File is an intermediate prerequisite."));
|
|
||||||
if (f->also_make != 0)
|
|
||||||
{
|
|
||||||
fputs (_("# Also makes:"), stdout);
|
|
||||||
for (d = f->also_make; d != 0; d = d->next)
|
|
||||||
printf (" %s", dep_name (d));
|
|
||||||
putchar ('\n');
|
|
||||||
}
|
|
||||||
if (f->last_mtime == UNKNOWN_MTIME)
|
|
||||||
puts (_("# Modification time never checked."));
|
|
||||||
else if (f->last_mtime == NONEXISTENT_MTIME)
|
|
||||||
puts (_("# File does not exist."));
|
|
||||||
else if (f->last_mtime == OLD_MTIME)
|
|
||||||
puts (_("# File is very old."));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
|
|
||||||
file_timestamp_sprintf (buf, f->last_mtime);
|
|
||||||
printf (_("# Last modified %s\n"), buf);
|
|
||||||
}
|
|
||||||
puts (f->updated
|
|
||||||
? _("# File has been updated.") : _("# File has not been updated."));
|
|
||||||
switch (f->command_state)
|
|
||||||
{
|
|
||||||
case cs_running:
|
|
||||||
puts (_("# Commands currently running (THIS IS A BUG)."));
|
|
||||||
break;
|
|
||||||
case cs_deps_running:
|
|
||||||
puts (_("# Dependencies commands running (THIS IS A BUG)."));
|
|
||||||
break;
|
|
||||||
case cs_not_started:
|
|
||||||
case cs_finished:
|
|
||||||
switch (f->update_status)
|
|
||||||
{
|
|
||||||
case -1:
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
puts (_("# Successfully updated."));
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
assert (question_flag);
|
|
||||||
puts (_("# Needs to be updated (-q is set)."));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
puts (_("# Failed to be updated."));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
puts (_("# Invalid value in `update_status' member!"));
|
|
||||||
fflush (stdout);
|
|
||||||
fflush (stderr);
|
|
||||||
abort ();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
puts (_("# Invalid value in `command_state' member!"));
|
|
||||||
fflush (stdout);
|
|
||||||
fflush (stderr);
|
|
||||||
abort ();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f->variables != 0)
|
|
||||||
print_file_variables (f);
|
|
||||||
|
|
||||||
if (f->cmds != 0)
|
|
||||||
print_commands (f->cmds);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
print_file_data_base ()
|
|
||||||
{
|
|
||||||
register unsigned int i, nfiles, per_bucket;
|
|
||||||
register struct file *file;
|
|
||||||
|
|
||||||
puts (_("\n# Files"));
|
|
||||||
|
|
||||||
per_bucket = nfiles = 0;
|
|
||||||
for (i = 0; i < FILE_BUCKETS; ++i)
|
|
||||||
{
|
|
||||||
register unsigned int this_bucket = 0;
|
|
||||||
|
|
||||||
for (file = files[i]; file != 0; file = file->next)
|
|
||||||
{
|
|
||||||
register struct file *f;
|
|
||||||
|
|
||||||
++this_bucket;
|
|
||||||
|
|
||||||
for (f = file; f != 0; f = f->prev)
|
|
||||||
print_file (f);
|
|
||||||
}
|
|
||||||
|
|
||||||
nfiles += this_bucket;
|
|
||||||
if (this_bucket > per_bucket)
|
|
||||||
per_bucket = this_bucket;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nfiles == 0)
|
|
||||||
puts (_("\n# No files."));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf (_("\n# %u files in %u hash buckets.\n"), nfiles, FILE_BUCKETS);
|
|
||||||
#ifndef NO_FLOAT
|
|
||||||
printf (_("# average %.3f files per bucket, max %u files in one bucket.\n"),
|
|
||||||
((double) nfiles) / ((double) FILE_BUCKETS), per_bucket);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EOF */
|
|
||||||
@ -1,199 +0,0 @@
|
|||||||
/* Definition of target file data structures for GNU Make.
|
|
||||||
Copyright (C) 1988,89,90,91,92,93,94,97 Free Software Foundation, Inc.
|
|
||||||
This file is part of GNU Make.
|
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Make is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNU Make; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
|
|
||||||
/* Structure that represents the info on one file
|
|
||||||
that the makefile says how to make.
|
|
||||||
All of these are chained together through `next'. */
|
|
||||||
|
|
||||||
struct file
|
|
||||||
{
|
|
||||||
struct file *next;
|
|
||||||
char *name;
|
|
||||||
char *hname; /* Hashed filename */
|
|
||||||
char *vpath; /* VPATH/vpath pathname */
|
|
||||||
struct dep *deps;
|
|
||||||
struct commands *cmds; /* Commands to execute for this target. */
|
|
||||||
int command_flags; /* Flags OR'd in for cmds; see commands.h. */
|
|
||||||
char *stem; /* Implicit stem, if an implicit
|
|
||||||
rule has been used */
|
|
||||||
struct dep *also_make; /* Targets that are made by making this. */
|
|
||||||
FILE_TIMESTAMP last_mtime; /* File's modtime, if already known. */
|
|
||||||
FILE_TIMESTAMP mtime_before_update; /* File's modtime before any updating
|
|
||||||
has been performed. */
|
|
||||||
struct file *prev; /* Previous entry for same file name;
|
|
||||||
used when there are multiple double-colon
|
|
||||||
entries for the same file. */
|
|
||||||
|
|
||||||
/* File that this file was renamed to. After any time that a
|
|
||||||
file could be renamed, call `check_renamed' (below). */
|
|
||||||
struct file *renamed;
|
|
||||||
|
|
||||||
/* List of variable sets used for this file. */
|
|
||||||
struct variable_set_list *variables;
|
|
||||||
|
|
||||||
/* Pattern-specific variable reference for this target, or null if there
|
|
||||||
isn't one. Also see the pat_searched flag, below. */
|
|
||||||
struct variable_set_list *pat_variables;
|
|
||||||
|
|
||||||
/* Immediate dependent that caused this target to be remade,
|
|
||||||
or nil if there isn't one. */
|
|
||||||
struct file *parent;
|
|
||||||
|
|
||||||
/* For a double-colon entry, this is the first double-colon entry for
|
|
||||||
the same file. Otherwise this is null. */
|
|
||||||
struct file *double_colon;
|
|
||||||
|
|
||||||
short int update_status; /* Status of the last attempt to update,
|
|
||||||
or -1 if none has been made. */
|
|
||||||
|
|
||||||
enum /* State of the commands. */
|
|
||||||
{ /* Note: It is important that cs_not_started be zero. */
|
|
||||||
cs_not_started, /* Not yet started. */
|
|
||||||
cs_deps_running, /* Dep commands running. */
|
|
||||||
cs_running, /* Commands running. */
|
|
||||||
cs_finished /* Commands finished. */
|
|
||||||
} command_state ENUM_BITFIELD (2);
|
|
||||||
|
|
||||||
unsigned int precious:1; /* Non-0 means don't delete file on quit */
|
|
||||||
unsigned int tried_implicit:1; /* Nonzero if have searched
|
|
||||||
for implicit rule for making
|
|
||||||
this file; don't search again. */
|
|
||||||
unsigned int updating:1; /* Nonzero while updating deps of this file */
|
|
||||||
unsigned int updated:1; /* Nonzero if this file has been remade. */
|
|
||||||
unsigned int is_target:1; /* Nonzero if file is described as target. */
|
|
||||||
unsigned int cmd_target:1; /* Nonzero if file was given on cmd line. */
|
|
||||||
unsigned int phony:1; /* Nonzero if this is a phony file
|
|
||||||
i.e., a dependency of .PHONY. */
|
|
||||||
unsigned int intermediate:1;/* Nonzero if this is an intermediate file. */
|
|
||||||
/* Nonzero, for an intermediate file,
|
|
||||||
means remove_intermediates should not delete it. */
|
|
||||||
unsigned int secondary:1;
|
|
||||||
unsigned int dontcare:1; /* Nonzero if no complaint is to be made if
|
|
||||||
this target cannot be remade. */
|
|
||||||
unsigned int ignore_vpath:1;/* Nonzero if we threw out VPATH name. */
|
|
||||||
unsigned int pat_searched:1;/* Nonzero if we already searched for
|
|
||||||
pattern-specific variables. */
|
|
||||||
unsigned int considered:1; /* equal to `considered' if file has been
|
|
||||||
considered on current scan of goal chain */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
extern struct file *default_goal_file, *suffix_file, *default_file;
|
|
||||||
|
|
||||||
|
|
||||||
extern struct file *lookup_file PARAMS ((char *name));
|
|
||||||
extern struct file *enter_file PARAMS ((char *name));
|
|
||||||
extern void remove_intermediates PARAMS ((int sig));
|
|
||||||
extern void snap_deps PARAMS ((void));
|
|
||||||
extern void rename_file PARAMS ((struct file *file, char *name));
|
|
||||||
extern void rehash_file PARAMS ((struct file *file, char *name));
|
|
||||||
extern void file_hash_enter PARAMS ((struct file *file, char *name,
|
|
||||||
unsigned int oldhash, char *oldname));
|
|
||||||
extern void set_command_state PARAMS ((struct file *file, int state));
|
|
||||||
extern void notice_finished_file PARAMS ((struct file *file));
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ST_MTIM_NSEC
|
|
||||||
# define FILE_TIMESTAMP_HI_RES \
|
|
||||||
(2147483647 < INTEGER_TYPE_MAXIMUM (FILE_TIMESTAMP) >> 31)
|
|
||||||
# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
|
|
||||||
file_timestamp_cons (fname, (st).st_mtime, (st).st_mtim.ST_MTIM_NSEC)
|
|
||||||
#else
|
|
||||||
# define FILE_TIMESTAMP_HI_RES 0
|
|
||||||
# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
|
|
||||||
file_timestamp_cons (fname, (st).st_mtime, 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If FILE_TIMESTAMP is 64 bits (or more), use nanosecond resolution.
|
|
||||||
(Multiply by 2**30 instead of by 10**9 to save time at the cost of
|
|
||||||
slightly decreasing the number of available timestamps.) With
|
|
||||||
64-bit FILE_TIMESTAMP, this stops working on 2514-05-30 01:53:04
|
|
||||||
UTC, but by then uintmax_t should be larger than 64 bits. */
|
|
||||||
#define FILE_TIMESTAMPS_PER_S (FILE_TIMESTAMP_HI_RES ? 1000000000 : 1)
|
|
||||||
#define FILE_TIMESTAMP_LO_BITS (FILE_TIMESTAMP_HI_RES ? 30 : 0)
|
|
||||||
|
|
||||||
#define FILE_TIMESTAMP_S(ts) (((ts) - ORDINARY_MTIME_MIN) \
|
|
||||||
>> FILE_TIMESTAMP_LO_BITS)
|
|
||||||
#define FILE_TIMESTAMP_NS(ts) (((ts) - ORDINARY_MTIME_MIN) \
|
|
||||||
& ((1 << FILE_TIMESTAMP_LO_BITS) - 1))
|
|
||||||
|
|
||||||
/* Upper bound on length of string "YYYY-MM-DD HH:MM:SS.NNNNNNNNN"
|
|
||||||
representing a file timestamp. The upper bound is not necessarily 19,
|
|
||||||
since the year might be less than -999 or greater than 9999.
|
|
||||||
|
|
||||||
Subtract one for the sign bit if in case file timestamps can be negative;
|
|
||||||
subtract FLOOR_LOG2_SECONDS_PER_YEAR to yield an upper bound on how many
|
|
||||||
file timestamp bits might affect the year;
|
|
||||||
302 / 1000 is log10 (2) rounded up;
|
|
||||||
add one for integer division truncation;
|
|
||||||
add one more for a minus sign if file timestamps can be negative;
|
|
||||||
add 4 to allow for any 4-digit epoch year (e.g. 1970);
|
|
||||||
add 25 to allow for "-MM-DD HH:MM:SS.NNNNNNNNN". */
|
|
||||||
#define FLOOR_LOG2_SECONDS_PER_YEAR 24
|
|
||||||
#define FILE_TIMESTAMP_PRINT_LEN_BOUND \
|
|
||||||
(((sizeof (FILE_TIMESTAMP) * CHAR_BIT - 1 - FLOOR_LOG2_SECONDS_PER_YEAR) \
|
|
||||||
* 302 / 1000) \
|
|
||||||
+ 1 + 1 + 4 + 25)
|
|
||||||
|
|
||||||
extern FILE_TIMESTAMP file_timestamp_cons PARAMS ((char const *,
|
|
||||||
time_t, int));
|
|
||||||
extern FILE_TIMESTAMP file_timestamp_now PARAMS ((void));
|
|
||||||
extern void file_timestamp_sprintf PARAMS ((char *p, FILE_TIMESTAMP ts));
|
|
||||||
|
|
||||||
/* Return the mtime of file F (a struct file *), caching it.
|
|
||||||
The value is NONEXISTENT_MTIME if the file does not exist. */
|
|
||||||
#define file_mtime(f) file_mtime_1 ((f), 1)
|
|
||||||
/* Return the mtime of file F (a struct file *), caching it.
|
|
||||||
Don't search using vpath for the file--if it doesn't actually exist,
|
|
||||||
we don't find it.
|
|
||||||
The value is NONEXISTENT_MTIME if the file does not exist. */
|
|
||||||
#define file_mtime_no_search(f) file_mtime_1 ((f), 0)
|
|
||||||
extern FILE_TIMESTAMP f_mtime PARAMS ((struct file *file, int search));
|
|
||||||
#define file_mtime_1(f, v) \
|
|
||||||
((f)->last_mtime == UNKNOWN_MTIME ? f_mtime ((f), v) : (f)->last_mtime)
|
|
||||||
|
|
||||||
/* Special timestamp values. */
|
|
||||||
|
|
||||||
/* The file's timestamp is not yet known. */
|
|
||||||
#define UNKNOWN_MTIME 0
|
|
||||||
|
|
||||||
/* The file does not exist. */
|
|
||||||
#define NONEXISTENT_MTIME 1
|
|
||||||
|
|
||||||
/* The file does not exist, and we assume that it is older than any
|
|
||||||
actual file. */
|
|
||||||
#define OLD_MTIME 2
|
|
||||||
|
|
||||||
/* The smallest and largest ordinary timestamps. */
|
|
||||||
#define ORDINARY_MTIME_MIN (OLD_MTIME + 1)
|
|
||||||
#define ORDINARY_MTIME_MAX ((FILE_TIMESTAMP_S (NEW_MTIME) \
|
|
||||||
<< FILE_TIMESTAMP_LO_BITS) \
|
|
||||||
+ ORDINARY_MTIME_MIN + FILE_TIMESTAMPS_PER_S - 1)
|
|
||||||
|
|
||||||
/* Modtime value to use for `infinitely new'. We used to get the current time
|
|
||||||
from the system and use that whenever we wanted `new'. But that causes
|
|
||||||
trouble when the machine running make and the machine holding a file have
|
|
||||||
different ideas about what time it is; and can also lose for `force'
|
|
||||||
targets, which need to be considered newer than anything that depends on
|
|
||||||
them, even if said dependents' modtimes are in the future. */
|
|
||||||
#define NEW_MTIME INTEGER_TYPE_MAXIMUM (FILE_TIMESTAMP)
|
|
||||||
|
|
||||||
#define check_renamed(file) \
|
|
||||||
while ((file)->renamed != 0) (file) = (file)->renamed /* No ; here. */
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user