summaryrefslogtreecommitdiff
path: root/source4/build
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-06-26 11:39:59 +0200
committerJelmer Vernooij <jelmer@samba.org>2008-06-26 11:39:59 +0200
commit0507e03c5260dc6a1e634dffd54931beaa32b870 (patch)
treefa30de1bec2a2cc37a71bbe95f64b51038b1687f /source4/build
parent26e9194e3a3ff9b065fec43ad5f3b63187eb533b (diff)
downloadsamba-0507e03c5260dc6a1e634dffd54931beaa32b870.tar.gz
Use make template for installing binaries.
(This used to be commit 3fb35fc03d5cfb48d0d4f51564ef76e99e74f81c)
Diffstat (limited to 'source4/build')
-rw-r--r--source4/build/make/rules.mk2
-rw-r--r--source4/build/make/templates.mk42
-rw-r--r--source4/build/smb_build/makefile.pm9
3 files changed, 46 insertions, 7 deletions
diff --git a/source4/build/make/rules.mk b/source4/build/make/rules.mk
index 27a214459a3..f8df8f0b535 100644
--- a/source4/build/make/rules.mk
+++ b/source4/build/make/rules.mk
@@ -43,8 +43,6 @@ clean:: clean_pch
@-find . -name '*.o' -exec rm -f '{}' \;
@echo Removing hostcc objects
@-find . -name '*.ho' -exec rm -f '{}' \;
- @echo Removing binaries
- @-rm -f $(BIN_PROGS) $(SBIN_PROGS) $(BINARIES) $(TORTURE_PROGS)
@echo Removing libraries
@-rm -f $(STATIC_LIBS) $(SHARED_LIBS)
@-rm -f bin/static/*.a bin/shared/*.$(SHLIBEXT) bin/mergedobj/*.o
diff --git a/source4/build/make/templates.mk b/source4/build/make/templates.mk
index 25bdde09b46..eb6b584af23 100644
--- a/source4/build/make/templates.mk
+++ b/source4/build/make/templates.mk
@@ -22,6 +22,12 @@ define binary_link_template
$(1): $(2) ;
@echo Linking $$@
@$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+
+clean::
+ @rm -f $(1)
+
+binaries:: $(1)
+
endef
# Link a host-machine binary
@@ -30,6 +36,12 @@ define host_binary_link_template
$(1): $(2) ;
@echo Linking $$@
@$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+
+clean::
+ rm -f $(1)
+
+binaries:: $(1)
+
endef
# Create a prototype header
@@ -109,3 +121,33 @@ endef
# abspath for older makes
abspath := $(shell cd $(1); pwd)
+
+define binary_install_template
+inst@allbin:: $(1) installdirs
+ @mkdir -p $$(DESTDIR)$$(bindir)
+ @$$(SHELL) $$(srcdir)/script/installbin.sh \
+ $$(INSTALLPERMS) \
+ $$(DESTDIR)$$(BASEDIR) \
+ $$(DESTDIR)$$(bindir) \
+ $$(DESTDIR)$$(libdir) \
+ $$(DESTDIR)$$(localstatedir) \
+ $$<
+
+uninstallbin::
+ @rm -f $$(DESTDIR)$$(bindir)/$(1)
+endef
+
+define sbinary_install_template
+installsbin:: $(1) installdirs
+ @mkdir -p $$(DESTDIR)$$(sbindir)
+ @$$(SHELL) $$(srcdir)/script/installbin.sh \
+ $$(INSTALLPERMS) \
+ $$(DESTDIR)$$(BASEDIR) \
+ $$(DESTDIR)$$(sbindir) \
+ $$(DESTDIR)$$(libdir) \
+ $$(DESTDIR)$$(localstatedir) \
+ $$<
+
+uninstallsbin::
+ @rm -f $$(DESTDIR)$$(sbindir)/$(1)
+endef
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm
index 0ea31062f78..d9cbca06140 100644
--- a/source4/build/smb_build/makefile.pm
+++ b/source4/build/smb_build/makefile.pm
@@ -196,11 +196,10 @@ sub Binary($$)
my ($self,$ctx) = @_;
unless (defined($ctx->{INSTALLDIR})) {
- $self->output("BINARIES += $ctx->{TARGET_BINARY}\n");
} elsif ($ctx->{INSTALLDIR} eq "SBINDIR") {
- $self->output("SBIN_PROGS += $ctx->{RESULT_BINARY}\n");
+ $self->output("\$(eval \$(call sbinary_install_template,$ctx->{RESULT_BINARY}))\n");
} elsif ($ctx->{INSTALLDIR} eq "BINDIR") {
- $self->output("BIN_PROGS += $ctx->{RESULT_BINARY}\n");
+ $self->output("\$(eval \$(call binary_install_template,$ctx->{RESULT_BINARY}))\n");
}
$self->_prepare_list($ctx, "FULL_OBJ_LIST");
@@ -208,9 +207,9 @@ sub Binary($$)
$self->_prepare_list($ctx, "LINK_FLAGS");
if (defined($ctx->{USE_HOSTCC}) && $ctx->{USE_HOSTCC} eq "YES") {
-$self->output("\$(call host_binary_link_template, $ctx->{RESULT_BINARY}, \$($ctx->{NAME}_FULL_OBJ_LIST) \$($ctx->{NAME}_DEPEND_LIST), \$($ctx->{NAME}_LINK_FLAGS))\n");
+$self->output("\$(eval \$(call host_binary_link_template, $ctx->{RESULT_BINARY}, \$($ctx->{NAME}_FULL_OBJ_LIST) \$($ctx->{NAME}_DEPEND_LIST), \$($ctx->{NAME}_LINK_FLAGS)))\n");
} else {
-$self->output("\$(call binary_link_template, $ctx->{RESULT_BINARY}, \$($ctx->{NAME}_FULL_OBJ_LIST) \$($ctx->{NAME}_DEPEND_LIST), \$($ctx->{NAME}_LINK_FLAGS))\n");
+$self->output("\$(eval \$(call binary_link_template, $ctx->{RESULT_BINARY}, \$($ctx->{NAME}_FULL_OBJ_LIST) \$($ctx->{NAME}_DEPEND_LIST), \$($ctx->{NAME}_LINK_FLAGS)))\n");
}
}