diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-06-06 01:22:57 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:17:41 -0500 |
commit | 8ee772712c1a81f0490bcabc6843efd8e2527305 (patch) | |
tree | df2e7320c0083d9e9fbfaf8a6d6382ccff0866b9 /source4/build/smb_build | |
parent | c8b8212a83c43e6629432dc33402c3897a253493 (diff) | |
download | samba-8ee772712c1a81f0490bcabc6843efd8e2527305.tar.gz samba-8ee772712c1a81f0490bcabc6843efd8e2527305.tar.bz2 samba-8ee772712c1a81f0490bcabc6843efd8e2527305.zip |
r7315: Add support for custom makefile targets, e.g.:
[TARGET::FOOBAR]
CMD = make bla
(This used to be commit 65600536b614e4cc1449488fa3297c1e6a2e4053)
Diffstat (limited to 'source4/build/smb_build')
-rw-r--r-- | source4/build/smb_build/config_mk.pm | 3 | ||||
-rw-r--r-- | source4/build/smb_build/input.pm | 13 | ||||
-rw-r--r-- | source4/build/smb_build/makefile.pm | 8 |
3 files changed, 23 insertions, 1 deletions
diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm index d298fe68ee..2df5df94f2 100644 --- a/source4/build/smb_build/config_mk.pm +++ b/source4/build/smb_build/config_mk.pm @@ -24,7 +24,8 @@ my %attribute_types = ( "MINOR_VERSION" => "string", "RELEASE_VERSION" => "string", "ENABLE" => "bool", - "TARGET_CFLAGS" => "list" + "TARGET_CFLAGS" => "list", + "CMD" => "string" ); ########################################################### diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm index e8d98d060b..aeab3cb8a6 100644 --- a/source4/build/smb_build/input.pm +++ b/source4/build/smb_build/input.pm @@ -116,6 +116,18 @@ sub check_library($$) $lib->{OUTPUT_TYPE} = "SHARED_LIBRARY"; } +sub check_target($$) +{ + my $INPUT = shift; + my $bin = shift; + + if (!defined($bin->{CMD})) { + print "CMD not defined for target!\n"; + } + + $bin->{OUTPUT_TYPE} = "CUSTOM"; +} + sub check_binary($$) { my $INPUT = shift; @@ -173,6 +185,7 @@ sub check($) check_module($INPUT, $part) if ($part->{TYPE} eq "MODULE"); check_library($INPUT, $part) if ($part->{TYPE} eq "LIBRARY"); check_binary($INPUT, $part) if ($part->{TYPE} eq "BINARY"); + check_target($INPUT, $part) if ($part->{TYPE} eq "TARGET"); #FIXME: REQUIRED_LIBRARIES needs to go if (defined($part->{REQUIRED_LIBRARIES})) { diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index c1f952f508..ca0f7e6bd0 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -472,6 +472,12 @@ __EOD__ return $output; } +sub _prepare_custom_rule($) +{ + my $ctx = shift; + return "$ctx->{NAME}:\n\t$ctx->{CMD}\n"; +} + sub _prepare_proto_rules() { my $output = ""; @@ -702,10 +708,12 @@ sub _prepare_rule_lists($) foreach my $key (values %{$depend}) { next if not defined $key->{OUTPUT_TYPE}; + ($output .= _prepare_objlist_rule($key)) if $key->{OUTPUT_TYPE} eq "OBJLIST"; ($output .= _prepare_static_library_rule($key)) if $key->{OUTPUT_TYPE} eq "STATIC_LIBRARY"; ($output .= _prepare_shared_library_rule($key)) if $key->{OUTPUT_TYPE} eq "SHARED_LIBRARY"; ($output .= _prepare_binary_rule($key)) if $key->{OUTPUT_TYPE} eq "BINARY"; + ($output .= _prepare_custom_rule($key) ) if $key->{TYPE} eq "TARGET"; } my $idl_ctx; |