diff options
Diffstat (limited to 'source4/build/smb_build')
-rw-r--r-- | source4/build/smb_build/README.txt | 3 | ||||
-rwxr-xr-x | source4/build/smb_build/cflags.pm | 27 | ||||
-rw-r--r-- | source4/build/smb_build/config_mk.pm | 14 | ||||
-rw-r--r-- | source4/build/smb_build/main.pl | 3 | ||||
-rw-r--r-- | source4/build/smb_build/makefile.pm | 4 |
5 files changed, 45 insertions, 6 deletions
diff --git a/source4/build/smb_build/README.txt b/source4/build/smb_build/README.txt index 44aeffdad2..a5e4db99e0 100644 --- a/source4/build/smb_build/README.txt +++ b/source4/build/smb_build/README.txt @@ -50,7 +50,8 @@ input.pm - Input validation main.pm - Main
makefile.pm - Makefile generation
output.pm - Dependency calculation
-smb_build_h.pm - smb_build.h generation
+header.pm - build.h generation
+cflags.pm - Generates cflags.txt for file-specific cflags
Layout
-------
diff --git a/source4/build/smb_build/cflags.pm b/source4/build/smb_build/cflags.pm new file mode 100755 index 0000000000..a19c0efa7b --- /dev/null +++ b/source4/build/smb_build/cflags.pm @@ -0,0 +1,27 @@ +# SMB Build System +# +# Copyright (C) Jelmer Vernooij 2006 +# Released under the GNU GPL + +package cflags; +use strict; + +sub create_cflags($$) +{ + my ($CTX, $file) = @_; + + open(CFLAGS_TXT,">$file") || die ("Can't open `$file'\n"); + + foreach my $key (values %{$CTX}) { + next unless defined ($key->{OBJ_LIST}); + next unless defined ($key->{EXTRA_CFLAGS}); + + foreach (@{$key->{OBJ_LIST}}) { + print CFLAGS_TXT "$_: $key->{EXTRA_CFLAGS}\n"; + } + } + close(CFLAGS_TXT); + + print __FILE__.": creating $file\n"; +} +1; diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm index c7ff8648eb..56960f044c 100644 --- a/source4/build/smb_build/config_mk.pm +++ b/source4/build/smb_build/config_mk.pm @@ -33,6 +33,8 @@ my $section_types = { "PRIVATE_PROTO_HEADER" => "string", "PUBLIC_HEADERS" => "list", + + "EXTRA_CFLAGS" => "string", }, "MODULE" => { "SUBSYSTEM" => "string", @@ -48,7 +50,9 @@ my $section_types = { "OUTPUT_TYPE" => "string", "MANPAGE" => "string", - "PRIVATE_PROTO_HEADER" => "string" + "PRIVATE_PROTO_HEADER" => "string", + + "EXTRA_CFLAGS" => "string" }, "BINARY" => { "OBJ_FILES" => "list", @@ -61,7 +65,9 @@ my $section_types = { "MANPAGE" => "string", "INSTALLDIR" => "string", "PRIVATE_PROTO_HEADER" => "string", - "PUBLIC_HEADERS" => "string" + "PUBLIC_HEADERS" => "string", + + "EXTRA_CFLAGS" => "string" }, "LIBRARY" => { "MAJOR_VERSION" => "string", @@ -84,7 +90,9 @@ my $section_types = { "PUBLIC_HEADERS" => "list", "PUBLIC_PROTO_HEADER" => "string", - "PRIVATE_PROTO_HEADER" => "string" + "PRIVATE_PROTO_HEADER" => "string", + + "EXTRA_CFLAGS" => "string" } }; diff --git a/source4/build/smb_build/main.pl b/source4/build/smb_build/main.pl index bec1be791c..a47899a3a5 100644 --- a/source4/build/smb_build/main.pl +++ b/source4/build/smb_build/main.pl @@ -11,6 +11,7 @@ use smb_build::input; use smb_build::config_mk; use smb_build::output; use smb_build::env; +use smb_build::cflags; use config; use strict; @@ -81,4 +82,6 @@ foreach my $key (values %$OUTPUT) { $mkenv->write("Makefile"); header::create_smb_build_h($OUTPUT, "include/build.h"); +cflags::create_cflags($OUTPUT, "extra_cflags.txt"); + 1; diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 4280efa949..b7c3a27383 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -186,7 +186,7 @@ sub _prepare_std_CC_rule($$$$$$) # $comment .$src.$dst: \@echo $message \$\*.$src - \@\$(CC) `script/cflags.sh \$\@` \$(CFLAGS) $flags -c \$\*.$src -o \$\@ + \@\$(CC) `script/cflags.pl \$\@` \$(CFLAGS) $flags -c \$\*.$src -o \$\@ __EOD__ ); if ($self->{config}->{BROKEN_CC} eq "yes") { @@ -204,7 +204,7 @@ sub _prepare_hostcc_rule($) $self->output(<< "__EOD__" .c.ho: \@echo Compiling \$\*.c with host compiler - \@\$(HOSTCC) `script/cflags.sh \$\@` \$(CFLAGS) -c \$\*.c -o \$\@ + \@\$(HOSTCC) `script/cflags.pl \$\@` \$(CFLAGS) -c \$\*.c -o \$\@ __EOD__ ); if ($self->{config}->{BROKEN_CC} eq "yes") { |