From 8ee772712c1a81f0490bcabc6843efd8e2527305 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 6 Jun 2005 01:22:57 +0000 Subject: r7315: Add support for custom makefile targets, e.g.: [TARGET::FOOBAR] CMD = make bla (This used to be commit 65600536b614e4cc1449488fa3297c1e6a2e4053) --- source4/build/smb_build/config_mk.pm | 3 ++- source4/build/smb_build/input.pm | 13 +++++++++++++ source4/build/smb_build/makefile.pm | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) (limited to 'source4/build') 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; -- cgit