mirror of
https://github.com/samba-team/samba.git
synced 2025-10-26 23:33:15 +03:00
68 lines
1.5 KiB
Perl
Executable File
68 lines
1.5 KiB
Perl
Executable File
# SMB Build System
|
|
#
|
|
# Copyright (C) Jelmer Vernooij 2006
|
|
# Released under the GNU GPL
|
|
|
|
package cflags;
|
|
use strict;
|
|
|
|
my $sort_available = eval "use sort 'stable'; return 1;";
|
|
$sort_available = 0 unless defined($sort_available);
|
|
|
|
sub by_path {
|
|
return 1 if($a =~ m#^\-I/#);
|
|
return -1 if($b =~ m#^\-I/#);
|
|
return 0;
|
|
}
|
|
|
|
sub create_cflags($$$$) {
|
|
my $CTX = shift;
|
|
my $srcdir = shift;
|
|
my $builddir = shift;
|
|
my $file = shift;
|
|
|
|
open(CFLAGS_TXT,">$file") || die ("Can't open `$file'\n");
|
|
|
|
my $src_ne_build = ($srcdir ne $builddir) ? 1 : 0;
|
|
|
|
foreach my $key (values %{$CTX}) {
|
|
next unless defined ($key->{OBJ_LIST});
|
|
next unless defined ($key->{FINAL_CFLAGS});
|
|
next unless (@{$key->{FINAL_CFLAGS}} > 0);
|
|
|
|
my @sorted_cflags = @{$key->{FINAL_CFLAGS}};
|
|
if ($sort_available) {
|
|
@sorted_cflags = sort by_path @{$key->{FINAL_CFLAGS}};
|
|
}
|
|
|
|
# Rewrite CFLAGS so that both the source and the build
|
|
# directories are in the path.
|
|
my @cflags = ();
|
|
foreach my $flag (@sorted_cflags) {
|
|
if($src_ne_build) {
|
|
if($flag =~ m#^-I([^/].*$)#) {
|
|
my $dir = $1;
|
|
$dir =~ s#^\$\((?:src|build)dir\)/?##;
|
|
push(@cflags, "-I$builddir/$dir", "-I$srcdir/$dir");
|
|
next;
|
|
}
|
|
}
|
|
push(@cflags, $flag);
|
|
}
|
|
|
|
my $cflags = join(' ', @cflags);
|
|
|
|
foreach (@{$key->{OBJ_LIST}}) {
|
|
my $ofile = $_;
|
|
my $dfile = $_;
|
|
$dfile =~ s/\.o$/.d/;
|
|
$dfile =~ s/\.ho$/.d/;
|
|
print CFLAGS_TXT "$ofile $dfile: CFLAGS+= $cflags\n";
|
|
}
|
|
}
|
|
close(CFLAGS_TXT);
|
|
|
|
print __FILE__.": creating $file\n";
|
|
}
|
|
1;
|