summaryrefslogtreecommitdiff
path: root/source4/build/smb_build
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-06-06 01:22:57 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:41 -0500
commit8ee772712c1a81f0490bcabc6843efd8e2527305 (patch)
treedf2e7320c0083d9e9fbfaf8a6d6382ccff0866b9 /source4/build/smb_build
parentc8b8212a83c43e6629432dc33402c3897a253493 (diff)
downloadsamba-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.pm3
-rw-r--r--source4/build/smb_build/input.pm13
-rw-r--r--source4/build/smb_build/makefile.pm8
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;