1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/source4/build/make/templates.mk

144 lines
3.3 KiB
Makefile

# Templates file for Samba 4
# This relies on GNU make.
#
# © 2008 Jelmer Vernooij <jelmer@samba.org>
#
###############################################################################
# Templates
###############################################################################
# Partially link
# Arguments: target object file, source object files
define partial_link_template
$(1): $(2) ;
@echo Partially linking $$@
@mkdir -p $$(@D)
$$(PARTLINK) -o $$@ $$^
endef
# Link a binary
# Arguments: target file, depends, flags
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
# Arguments: target file, depends, flags
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
# Arguments: header file, c files
define proto_header_template
proto:: $(1) ;
clean:: ;
rm -f $(1)
$(1): $(2) ;
@echo "Creating $$@"
@$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --public=/dev/null --private=$$@ $$^
$($(2):.c=.o): $(1) ;
endef
# Shared module
# Arguments: Target, dependencies, objects
define shared_module_template
$(1): $(2) ;
@echo Linking $$@
@mkdir -p $$(@D)
@$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
endef
# Shared library
# Arguments: Target, dependencies, link flags, soname
define shared_library_template
$(1): $(2)
@echo Linking $$@
@mkdir -p $$(@D)
@$$(SHLD) $$(LDFLAGS) $$(SHLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) \
$(3) \
$$(if $$(SONAMEFLAG), $$(SONAMEFLAG)$(notdir $(4)))
ifneq ($(notdir $(1)),$(notdir $(4)))
$(4): $(1)
@echo "Creating symbolic link for $$@"
@ln -fs $$(<F) $$@
endif
ifneq ($(notdir $(1)),$(notdir $(5)))
$(5): $(1) $(4)
@echo "Creating symbolic link for $$@"
@ln -fs $$(<F) $$@
endif
endef
# Shared alias
# Arguments: Target, subsystem name, alias name
define shared_module_alias_template
bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1)
@ln -fs $$(<F) $$@
PLUGINS += bin/modules/$(2)/$(3).$$(SHLIBEXT)
uninstallplugins::
@-rm $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
installplugins::
@ln -fs $(notdir $(1)) $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
endef
define shared_module_install_template
installplugins:: bin/modules/$(1)/$(2)
@echo Installing $(2) as $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
@mkdir -p $$(DESTDIR)$$(modulesdir)/$(1)/
@cp bin/modules/$(1)/$(2) $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
uninstallplugins::
@echo Uninstalling $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
@-rm $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
endef
# abspath for older makes
abspath = $(shell cd $(dir $(1)); pwd)/$(notdir $(1))
# Install a binary
# Arguments: path to binary to install
define binary_install_template
installbin:: $$(DESTDIR)$$(bindir)/$(notdir $(1)) installdirs
uninstallbin::
@echo "Removing $(notdir $(1))"
@rm -f $$(DESTDIR)$$(bindir)/$(notdir $(1))
endef
define sbinary_install_template
installsbin:: $$(DESTDIR)$$(sbindir)/$(notdir $(1)) installdirs
uninstallsbin::
@echo "Removing $(notdir $(1))"
@rm -f $$(DESTDIR)$$(sbindir)/$(notdir $(1))
endef