# All of the following is disabled by default (RC5 was enabled before 0.9.8):
our %disabled = ( # "what" => "comment"
- "aria" => "default",
"asan" => "default",
"crypto-mdebug" => "default",
"crypto-mdebug-backtrace" => "default",
my %predefined = compiler_predefined($target{cc});
+# Check for makedepend capabilities.
if (!$disabled{makedepend}) {
- # We know that GNU C version 3 and up as well as all clang
- # versions support dependency generation
- if ($predefined{__GNUC__} >= 3) {
+ if ($config{target} =~ /^(VC|vms)-/) {
+ # For VC- and vms- targets, there's nothing more to do here. The
+ # functionality is hard coded in the corresponding build files for
+ # cl (Windows) and CC/DECC (VMS).
+ } elsif ($predefined{__GNUC__} >= 3) {
+ # We know that GNU C version 3 and up as well as all clang
+ # versions support dependency generation
$config{makedepprog} = "\$(CROSS_COMPILE)$target{cc}";
} else {
+ # In all other cases, we look for 'makedepend', and disable the
+ # capability if not found.
$config{makedepprog} = which('makedepend');
$disabled{makedepend} = "unavailable" unless $config{makedepprog};
}
$config{build_infos} = [ ];
+ my %ordinals = ();
foreach (@build_infos) {
my $sourced = catdir($srcdir, $_->[0]);
my $buildd = catdir($blddir, $_->[0]);
my @intermediates = ();
my @rawlines = ();
- my %ordinals = ();
my %sources = ();
my %shared_sources = ();
my %includes = ();
if @doubles;
}
- foreach (keys %ordinals) {
- my $dest = $_;
- my $ddest = cleanfile($buildd, $_, $blddir);
- if ($unified_info{rename}->{$ddest}) {
- $ddest = $unified_info{rename}->{$ddest};
- }
- foreach (@{$ordinals{$dest}}) {
- my %known_ordinals =
- (
- crypto =>
- cleanfile($sourced, catfile("util", "libcrypto.num"), $blddir),
- ssl =>
- cleanfile($sourced, catfile("util", "libssl.num"), $blddir)
- );
- my $o = $known_ordinals{$_};
- die "Ordinals for $ddest defined more than once\n"
- if $unified_info{ordinals}->{$ddest};
- $unified_info{ordinals}->{$ddest} = [ $_, $o ];
- }
- }
-
foreach (keys %sources) {
my $dest = $_;
my $ddest = cleanfile($buildd, $_, $blddir);
if (! -f $s) {
$s = cleanfile($buildd, $_, $blddir);
}
- # We recognise C++, C and asm files
+
if ($s =~ /\.(cc|cpp|c|s|S)$/) {
+ # We recognise C++, C and asm files
my $o = $_;
$o =~ s/\.[csS]$/.o/; # C and assembler
$o =~ s/\.(cc|cpp)$/_cc.o/; # C++
$o = cleanfile($buildd, $o, $blddir);
$unified_info{shared_sources}->{$ddest}->{$o} = 1;
$unified_info{sources}->{$o}->{$s} = 1;
+ } elsif ($s =~ /\.rc$/) {
+ # We also recognise resource files
+ my $o = $_;
+ $o =~ s/\.rc$/.res/; # Resource configuration
+ my $o = cleanfile($buildd, $o, $blddir);
+ $unified_info{shared_sources}->{$ddest}->{$o} = 1;
+ $unified_info{sources}->{$o}->{$s} = 1;
+ } elsif ($s =~ /\.(def|map|opt)$/) {
+ # We also recognise .def / .map / .opt files
+ # We know they are generated files
+ my $def = cleanfile($buildd, $s, $blddir);
+ $unified_info{shared_sources}->{$ddest}->{$def} = 1;
} else {
die "unrecognised source file type for shared library: $s\n";
}
}
}
+ my $ordinals_text = join(', ', sort keys %ordinals);
+ warn <<"EOF" if $ordinals_text;
+
+WARNING: ORDINALS were specified for $ordinals_text
+They are ignored and should be replaced with a combination of GENERATE,
+DEPEND and SHARED_SOURCE.
+EOF
+
### Make unified_info a bit more efficient
# One level structures
foreach (("programs", "libraries", "engines", "scripts", "extra", "overrides")) {