| 1 | # Templates file for Samba 4
 | 
|---|
| 2 | # This relies on GNU make.
 | 
|---|
| 3 | #
 | 
|---|
| 4 | # © 2008 Jelmer Vernooij <jelmer@samba.org>
 | 
|---|
| 5 | #
 | 
|---|
| 6 | ###############################################################################
 | 
|---|
| 7 | # Templates
 | 
|---|
| 8 | ###############################################################################
 | 
|---|
| 9 | 
 | 
|---|
| 10 | # Partially link
 | 
|---|
| 11 | # Arguments: target object file, source object files
 | 
|---|
| 12 | define partial_link_template 
 | 
|---|
| 13 | $(1): $(2) ;
 | 
|---|
| 14 |         @echo Partially linking $$@
 | 
|---|
| 15 |         @mkdir -p $$(@D)
 | 
|---|
| 16 |         @$$(PARTLINK) -o $$@ $$^
 | 
|---|
| 17 | endef
 | 
|---|
| 18 | 
 | 
|---|
| 19 | # Link a binary
 | 
|---|
| 20 | # Arguments: target file, depends, flags
 | 
|---|
| 21 | define binary_link_template
 | 
|---|
| 22 | $(1)4: $(2) ;
 | 
|---|
| 23 |         @echo Linking $$@
 | 
|---|
| 24 |         @$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)  $$(LIBS)
 | 
|---|
| 25 | clean::
 | 
|---|
| 26 |         @rm -f $(1)
 | 
|---|
| 27 | 
 | 
|---|
| 28 | everything:: $(1)4
 | 
|---|
| 29 | 
 | 
|---|
| 30 | endef
 | 
|---|
| 31 | 
 | 
|---|
| 32 | # Link a host-machine binary
 | 
|---|
| 33 | # Arguments: target file, depends, flags
 | 
|---|
| 34 | define host_binary_link_template
 | 
|---|
| 35 | $(1)4: $(2) ;
 | 
|---|
| 36 |         @echo Linking $$@
 | 
|---|
| 37 |         @$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
 | 
|---|
| 38 | 
 | 
|---|
| 39 | clean::
 | 
|---|
| 40 |         rm -f $(1)
 | 
|---|
| 41 | 
 | 
|---|
| 42 | binaries:: $(1)4
 | 
|---|
| 43 | 
 | 
|---|
| 44 | 
 | 
|---|
| 45 | endef
 | 
|---|
| 46 | 
 | 
|---|
| 47 | # Create a prototype header
 | 
|---|
| 48 | # Arguments: header file, c files
 | 
|---|
| 49 | define proto_header_template
 | 
|---|
| 50 | echo:: ;
 | 
|---|
| 51 |         echo $(1) ;
 | 
|---|
| 52 | 
 | 
|---|
| 53 | proto:: $(1) ;
 | 
|---|
| 54 | 
 | 
|---|
| 55 | clean:: ;
 | 
|---|
| 56 |         rm -f $(1) ;
 | 
|---|
| 57 | 
 | 
|---|
| 58 | $(1): $(2) ;
 | 
|---|
| 59 |         @echo "Creating $$@"
 | 
|---|
| 60 |         @$$(PERL) $$(srcdir)/../source4/script/mkproto.pl --srcdir=$$(srcdir)/../source4 --builddir=$$(builddir)/../source4 --public=/dev/null --private=$$@ $$^
 | 
|---|
| 61 | endef
 | 
|---|
| 62 | 
 | 
|---|
| 63 | # Shared module
 | 
|---|
| 64 | # Arguments: Target, dependencies, objects
 | 
|---|
| 65 | define shared_module_template
 | 
|---|
| 66 | 
 | 
|---|
| 67 | $(1): $(2) ;
 | 
|---|
| 68 |         @echo Linking $$@
 | 
|---|
| 69 |         @mkdir -p $$(@D)
 | 
|---|
| 70 |         @$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
 | 
|---|
| 71 | 
 | 
|---|
| 72 | PLUGINS += $(1)
 | 
|---|
| 73 | 
 | 
|---|
| 74 | endef
 | 
|---|
| 75 | 
 | 
|---|
| 76 | # Shared library
 | 
|---|
| 77 | # Arguments: Target, dependencies, link flags, soname
 | 
|---|
| 78 | define shared_library_template
 | 
|---|
| 79 | $(1): $(2)
 | 
|---|
| 80 |         @echo Linking $$@
 | 
|---|
| 81 |         @mkdir -p $$(@D)
 | 
|---|
| 82 |         @$$(SHLD) $$(LDFLAGS) $$(SHLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) \
 | 
|---|
| 83 |                 $(3) \
 | 
|---|
| 84 |                 $$(if $$(SONAMEFLAG), $$(SONAMEFLAG)$(notdir $(4))) $$(LIBS)
 | 
|---|
| 85 | 
 | 
|---|
| 86 | ifneq ($(notdir $(1)),$(notdir $(4)))
 | 
|---|
| 87 | $(4): $(1)
 | 
|---|
| 88 |         @echo "Creating symbolic link for $$@"
 | 
|---|
| 89 |         @ln -fs $$(<F) $$@
 | 
|---|
| 90 | endif
 | 
|---|
| 91 | 
 | 
|---|
| 92 | ifneq ($(notdir $(1)),$(notdir $(5)))
 | 
|---|
| 93 | $(5): $(1) $(4)
 | 
|---|
| 94 |         @echo "Creating symbolic link for $$@"
 | 
|---|
| 95 |         @ln -fs $$(<F) $$@
 | 
|---|
| 96 | endif
 | 
|---|
| 97 | endef
 | 
|---|
| 98 | 
 | 
|---|
| 99 | # Shared alias
 | 
|---|
| 100 | # Arguments: Target, subsystem name, alias name
 | 
|---|
| 101 | define shared_module_alias_template
 | 
|---|
| 102 | bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1)
 | 
|---|
| 103 |         @ln -fs $$(<F) $$@
 | 
|---|
| 104 | 
 | 
|---|
| 105 | PLUGINS += bin/modules/$(2)/$(3).$$(SHLIBEXT)
 | 
|---|
| 106 | 
 | 
|---|
| 107 | uninstallplugins::
 | 
|---|
| 108 |         @-rm $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
 | 
|---|
| 109 | installplugins::
 | 
|---|
| 110 |         @ln -fs $(1) $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
 | 
|---|
| 111 | 
 | 
|---|
| 112 | endef
 | 
|---|
| 113 | 
 | 
|---|
| 114 | define shared_module_install_template
 | 
|---|
| 115 | installplugins:: bin/modules/$(1)/$(2)
 | 
|---|
| 116 |         @echo Installing $(2) as $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
 | 
|---|
| 117 |         @mkdir -p $$(DESTDIR)$$(modulesdir)/$(1)/
 | 
|---|
| 118 |         @cp bin/modules/$(1)/$(2) $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
 | 
|---|
| 119 | uninstallplugins::
 | 
|---|
| 120 |         @echo Uninstalling $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
 | 
|---|
| 121 |         @-rm $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
 | 
|---|
| 122 | 
 | 
|---|
| 123 | endef
 | 
|---|
| 124 | 
 | 
|---|
| 125 | # abspath for older makes
 | 
|---|
| 126 | abspath = $(shell cd $(dir $(1)); pwd)/$(notdir $(1))
 | 
|---|
| 127 | 
 | 
|---|
| 128 | # Install a binary
 | 
|---|
| 129 | # Arguments: path to binary to install
 | 
|---|
| 130 | define binary_install_template
 | 
|---|
| 131 | installbin:: $$(DESTDIR)$$(bindir)/$(notdir $(1))4
 | 
|---|
| 132 | 
 | 
|---|
| 133 | uninstallbin::
 | 
|---|
| 134 |         @echo "Removing $(notdir $(1))4"
 | 
|---|
| 135 |         @rm -f $$(DESTDIR)$$(bindir)/$(1)4
 | 
|---|
| 136 | endef
 | 
|---|
| 137 | 
 | 
|---|
| 138 | define sbinary_install_template
 | 
|---|
| 139 | installsbin:: $$(DESTDIR)$$(sbindir)/$(notdir $(1))4 installdirs
 | 
|---|
| 140 |                                 
 | 
|---|
| 141 | uninstallsbin::
 | 
|---|
| 142 |         @echo "Removing $(notdir $(1))4"
 | 
|---|
| 143 |         @rm -f $$(DESTDIR)$$(sbindir)/$(1)4
 | 
|---|
| 144 | endef
 | 
|---|