include data.mk
-BINARIES += $(BIN_PROGS) $(SBIN_PROGS)
-
pythonmods:: $(PYTHON_PYS) $(PYTHON_SO)
DEP_FILES = $(patsubst %.ho,%.hd,$(patsubst %.o,%.d,$(ALL_OBJS))) \
DEFAULT_HEADERS = $(srcdir)/lib/util/dlinklist.h \
$(srcdir)/version.h
-binaries:: $(BINARIES)
libraries:: $(STATIC_LIBS) $(SHARED_LIBS)
modules:: $(PLUGINS)
headers:: $(PUBLIC_HEADERS) $(DEFAULT_HEADERS)
$(DESTDIR)$(sysconfdir) \
installbin:: $(SBIN_PROGS) $(BIN_PROGS) $(TORTURE_PROGS) installdirs
- @$(SHELL) $(srcdir)/script/installbin.sh \
- $(INSTALLPERMS) \
- $(DESTDIR)$(BASEDIR) \
- $(DESTDIR)$(sbindir) \
- $(DESTDIR)$(libdir) \
- $(DESTDIR)$(localstatedir) \
- $(SBIN_PROGS)
- @$(SHELL) $(srcdir)/script/installbin.sh \
- $(INSTALLPERMS) \
- $(DESTDIR)$(BASEDIR) \
- $(DESTDIR)$(bindir) \
- $(DESTDIR)$(libdir) \
- $(DESTDIR)$(localstatedir) \
- $(BIN_PROGS)
@$(SHELL) $(srcdir)/script/installtorture.sh \
$(INSTALLPERMS) \
$(DESTDIR)$(TORTUREDIR) \
@-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
$(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
$(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
# 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
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");
$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");
}
}