r7315: Add support for custom makefile targets, e.g.:
authorJelmer Vernooij <jelmer@samba.org>
Mon, 6 Jun 2005 01:22:57 +0000 (01:22 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:41 +0000 (13:17 -0500)
[TARGET::FOOBAR]
CMD = make bla
(This used to be commit 65600536b614e4cc1449488fa3297c1e6a2e4053)

source4/build/smb_build/config_mk.pm
source4/build/smb_build/input.pm
source4/build/smb_build/makefile.pm

index d298fe68ee0cb220e5d4ffd689da035515383494..2df5df94f2951d39a027fc33c5efb781420346c9 100644 (file)
@@ -24,7 +24,8 @@ my %attribute_types = (
        "MINOR_VERSION" => "string",
        "RELEASE_VERSION" => "string",
        "ENABLE" => "bool",
-       "TARGET_CFLAGS" => "list"
+       "TARGET_CFLAGS" => "list",
+       "CMD" => "string"
 );
 
 ###########################################################
index e8d98d060b5670b1ab293972a9a2a96cedbd3779..aeab3cb8a69fc40b1d79c3ad1158e16488dd7ade 100644 (file)
@@ -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})) {
index c1f952f508acb0f5cae09a834861a6a51a14a16f..ca0f7e6bd0f40b6004d4448bcc3d00a97fb6ba06 100644 (file)
@@ -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;