diff --git a/source/Makefile b/source/Makefile index 66b0921..b3c2e92 100644 --- a/source/Makefile +++ b/source/Makefile @@ -10,12 +10,12 @@ include mkconfig.mk pidldir := $(srcdir)/pidl -BASEDIR = $(prefix) -TORTUREDIR = $(libdir)/torture -SWATDIR = $(datadir)/swat -JSDIR = $(datadir)/js -SETUPDIR = $(datadir)/setup -NCALRPCDIR = $(localstatedir)/ncalrpc +basedir = $(prefix) +torturedir = $(libdir)/torture +swatdir = $(datadir)/swat +jsdir = $(datadir)/js +setupdir = $(datadir)/setup +ncalrpcdir = $(localstatedir)/ncalrpc BNLD = $(LD) BNLD_FLAGS = $(LDFLAGS) $(SYS_LDFLAGS) @@ -150,7 +150,7 @@ testsuite:: bin/smbclient bin/cifsdd bin/smbtorture bin/nmblookup showlayout:: @echo 'Samba will be installed into:' - @echo ' basedir: $(BASEDIR)' + @echo ' basedir: $(basedir)' @echo ' bindir: $(bindir)' @echo ' sbindir: $(sbindir)' @echo ' libdir: $(libdir)' @@ -161,11 +161,11 @@ showlayout:: @echo ' piddir: $(piddir)' @echo ' lockdir: $(lockdir)' @echo ' logfilebase: $(logfilebase)' - @echo ' setupdir: $(SETUPDIR)' - @echo ' jsdir: $(JSDIR)' - @echo ' swatdir: $(SWATDIR)' + @echo ' setupdir: $(setupdir)' + @echo ' jsdir: $(jsdir)' + @echo ' swatdir: $(swatdir)' @echo ' mandir: $(mandir)' - @echo ' torturedir: $(TORTUREDIR)' + @echo ' torturedir: $(torturedir)' @echo ' datadir: $(datadir)' @echo ' winbindd_socket_dir: $(winbindd_socket_dir)' @echo ' ntp_signd_socket_dir: $(ntp_signd_socket_dir)' @@ -177,8 +177,19 @@ showflags:: # The permissions to give the executables INSTALLPERMS = 0755 -install:: showlayout everything installbin installsbin installdat installswat installmisc \ - installlib installheader installpc installplugins +# At the moment left as static installing routines +$(eval $(call dat_install_template)) +$(eval $(call misc_install_template)) +$(eval $(call library_install_template)) +$(eval $(call header_install_template)) +$(eval $(call manpage_install_template)) +$(eval $(call pc_install_template)) + +# Install routines have been moved into "build/make/templates.mk" + +install:: showlayout everything installbin installsbin installdat installmisc \ + installlib installheader installpc +# installman installplugins # DESTDIR is used here to prevent packagers wasting their time # duplicating the Makefile. Remove it and you will have the privilege @@ -190,10 +201,10 @@ install:: showlayout everything installbin installsbin installdat installswat in installdirs:: @$(SHELL) $(srcdir)/script/installdirs.sh \ - $(DESTDIR)$(BASEDIR) \ + $(DESTDIR)$(basedir) \ $(DESTDIR)$(bindir) \ $(DESTDIR)$(sbindir) \ - $(DESTDIR)$(TORTUREDIR) \ + $(DESTDIR)$(torturedir) \ $(DESTDIR)$(libdir) \ $(DESTDIR)$(modulesdir) \ $(DESTDIR)$(mandir) \ @@ -210,66 +221,11 @@ installdirs:: $(DESTDIR)$(PKGCONFIGDIR) \ $(DESTDIR)$(sysconfdir) -installbin:: installdirs - -installplugins:: - -installlib:: $(SHARED_LIBS) $(STATIC_LIBS) installdirs - @$(SHELL) $(srcdir)/script/installlib.sh $(DESTDIR)$(libdir) "$(SHLIBEXT)" $(SHARED_LIBS) - #@$(SHELL) $(srcdir)/script/installlib.sh $(DESTDIR)$(libdir) "$(STLIBEXT)" $(STATIC_LIBS) - -installheader:: headers installdirs - @srcdir=$(srcdir) builddir=$(builddir) $(PERL) $(srcdir)/script/installheader.pl $(DESTDIR)$(includedir) $(PUBLIC_HEADERS) $(DEFAULT_HEADERS) - -installdat:: installdirs - @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(datadir) $(srcdir) - -installswat:: installdirs -#SWAT has been disabled until further notice -# @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir) - -installman:: manpages installdirs - @$(SHELL) $(srcdir)/script/installman.sh $(DESTDIR)$(mandir) $(MANPAGES) - -installmisc:: installdirs - @$(SHELL) $(srcdir)/script/installmisc.sh $(srcdir) $(DESTDIR)$(JSDIR) $(DESTDIR)$(SETUPDIR) $(DESTDIR)$(bindir) - -installpc:: installdirs - @$(SHELL) $(srcdir)/script/installpc.sh $(builddir) $(DESTDIR)$(PKGCONFIGDIR) $(PC_FILES) - -uninstall:: uninstallbin uninstallman uninstallmisc uninstalllib uninstallheader \ - uninstallplugins - -uninstallmisc:: - #FIXME - -$(DESTDIR)$(bindir)/%: bin/% installdirs - @mkdir -p $(@D) - @echo Installing $(@F) as $@ - @if test -f $@; then echo -n ""; rm -f $@.old; mv $@ $@.old; fi - @cp $< $@ - @chmod $(INSTALLPERMS) $@ - -$(DESTDIR)$(sbindir)/%: bin/% installdirs - @mkdir -p $(@D) - @echo Installing $(@F) as $@ - @if test -f $@; then echo -n ""; rm -f $@.old; mv $@ $@.old; fi - @cp $< $@ - @chmod $(INSTALLPERMS) $@ - -uninstallbin:: - -uninstalllib:: - @$(SHELL) $(srcdir)/script/uninstalllib.sh $(DESTDIR)$(libdir) $(SHARED_LIBS) - #@$(SHELL) $(srcdir)/script/uninstalllib.sh $(DESTDIR)$(libdir) $(STATIC_LIBS) - -uninstallheader:: - @$(SHELL) $(srcdir)/script/uninstallheader.sh $(DESTDIR)$(includedir) $(PUBLIC_HEADERS) - -uninstallman:: - @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(mandir) $(MANPAGES) +# Uninstall routines have been moved into "build/make/templates.mk" -uninstallplugins:: +uninstall:: uninstallbin uninstallsbin uninstalldat uninstallmisc uninstalllib \ + uninstallheader uninstallman uninstallpc +# uninstallman uninstallplugins config.status: @echo "config.status does not exist. Please run ./configure." diff --git a/source/build/make/templates.mk b/source/build/make/templates.mk index f7eab6c..0669989 100644 --- a/source/build/make/templates.mk +++ b/source/build/make/templates.mk @@ -11,7 +11,7 @@ # Arguments: target object file, source object files define partial_link_template $(1): $(2) ; - @echo Partially linking $$@ + @echo "Partially linking $$@" @mkdir -p $$(@D) $$(PARTLINK) -o $$@ $$^ endef @@ -20,7 +20,7 @@ endef # Arguments: target file, depends, flags define binary_link_template $(1): $(2) ; - @echo Linking $$@ + @echo "Linking $$@" @$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) clean:: @@ -34,7 +34,7 @@ endef # Arguments: target file, depends, flags define host_binary_link_template $(1): $(2) ; - @echo Linking $$@ + @echo "Linking $$@" @$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3) clean:: @@ -64,7 +64,7 @@ endef define shared_module_template $(1): $(2) ; - @echo Linking $$@ + @echo "Linking $$@" @mkdir -p $$(@D) @$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) @@ -74,7 +74,7 @@ endef # Arguments: Target, dependencies, link flags, soname define shared_library_template $(1): $(2) - @echo Linking $$@ + @echo "Linking $$@" @mkdir -p $$(@D) @$$(SHLD) $$(LDFLAGS) $$(SHLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) \ $(3) \ @@ -93,7 +93,7 @@ $(5): $(1) endif endef -# Shared alias +# Shared module alias # Arguments: Target, subsystem name, alias name define shared_module_alias_template bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1) @@ -102,40 +102,143 @@ bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1) PLUGINS += bin/modules/$(2)/$(3).$$(SHLIBEXT) uninstallplugins:: - @-rm $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT) + @rm -f $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT) installplugins:: @ln -fs $(notdir $(1)) $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT) endef +# Installs a shared module +# Arguments: path and filename define shared_module_install_template -installplugins:: bin/modules/$(1)/$(2) - @echo Installing $(2) as $$(DESTDIR)$$(modulesdir)/$(1)/$(2) + +installplugins:: bin/modules/$(1)/$(2) installdirs + @echo "Installing plugin $(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) + @echo "Removing plugin $$(DESTDIR)$$(modulesdir)/$(1)/$(2)" + @rm -f $$(DESTDIR)$$(modulesdir)/$(1)/$(2) endef # abspath for older makes abspath = $(shell cd $(dir $(1)); pwd)/$(notdir $(1)) -# Install a binary +# Installs a binary # Arguments: path to binary to install define binary_install_template -installbin:: $$(DESTDIR)$$(bindir)/$(notdir $(1)) installdirs + +installbin:: installdirs + @echo "Installing binary $(1) as $$(DESTDIR)$$(bindir)/$(notdir $(1))" + @mkdir -p $$(DESTDIR)$$(bindir) + @if test -f $$(DESTDIR)$$(bindir)/$(notdir $(1)); then \ + rm -f $$(DESTDIR)$$(bindir)/$(notdir $(1)).old; \ + mv $$(DESTDIR)$$(bindir)/$(notdir $(1)) $$(DESTDIR)$$(bindir)/$(notdir $(1)).old; \ + fi + @cp $(1) $$(DESTDIR)$$(bindir)/$(notdir $(1)) + @chmod $$(INSTALLPERMS) $$(DESTDIR)$$(bindir)/$(notdir $(1)) uninstallbin:: - @echo "Removing $(notdir $(1))" + @echo "Removing binary $(notdir $(1))" @rm -f $$(DESTDIR)$$(bindir)/$(notdir $(1)) + @rm -f $$(DESTDIR)$$(bindir)/$(notdir $(1)).old + endef +# Installs a superuser binary +# Arguments: path to superuser binary to install define sbinary_install_template -installsbin:: $$(DESTDIR)$$(sbindir)/$(notdir $(1)) installdirs + +installsbin:: installdirs + @echo "Installing binary $(1) as $$(DESTDIR)$$(sbindir)/$(notdir $(1))" + @mkdir -p $$(DESTDIR)$$(sbindir) + @if test -f $$(DESTDIR)$$(sbindir)/$(notdir $(1)); then \ + rm -f $$(DESTDIR)$$(sbindir)/$(notdir $(1)).old; \ + mv $$(DESTDIR)$$(sbindir)/$(notdir $(1)) $$(DESTDIR)$$(sbindir)/$(notdir $(1)).old; \ + fi + @cp $(1) $$(DESTDIR)$$(sbindir)/$(notdir $(1)) + @chmod $$(INSTALLPERMS) $$(DESTDIR)$$(sbindir)/$(notdir $(1)) uninstallsbin:: - @echo "Removing $(notdir $(1))" + @echo "Removing superuser binary $(notdir $(1))" @rm -f $$(DESTDIR)$$(sbindir)/$(notdir $(1)) + @rm -f $$(DESTDIR)$$(sbindir)/$(notdir $(1)).old + +endef + +# Installs DAT files +define dat_install_template + +installdat:: installdirs + @$$(SHELL) $$(srcdir)/script/installdat.sh $$(DESTDIR)$$(datadir) $$(srcdir) + +uninstalldat:: + @echo "Removing DAT files" + @rm -fr $$(DESTDIR)$$(datadir)/* + +endef + +# Installs MISC files +define misc_install_template + +miscbinfiles= $(shell ls $(srcdir)/scripting/bin) + +installmisc:: installdirs + @$$(SHELL) $$(srcdir)/script/installmisc.sh $$(srcdir) $$(DESTDIR)$$(jsdir) $$(DESTDIR)$$(setupdir) $$(DESTDIR)$$(bindir) + +uninstallmisc:: + @echo "Removing MISC files" + @cd $$(DESTDIR)$$(bindir); rm -f $$(miscbinfiles) + +endef + +# Installs libraries +define library_install_template + +installlib:: $$(SHARED_LIBS) $$(STATIC_LIBS) installdirs + @$$(SHELL) $$(srcdir)/script/installlib.sh $$(DESTDIR)$$(libdir) "$$(SHLIBEXT)" $$(SHARED_LIBS) + +uninstalllib:: + @echo "Removing libraries" + @rm -fr $$(DESTDIR)$$(libdir)/* + +endef + +# Installs headers +define header_install_template + +installheader:: headers installdirs + @srcdir=$$(srcdir); builddir=$$(builddir); $$(PERL) $$(srcdir)/script/installheader.pl $$(DESTDIR)$$(includedir) $$(PUBLIC_HEADERS) $$(DEFAULT_HEADERS) + +uninstallheader:: + @echo "Removing headers" + @rm -fr $$(DESTDIR)$$(includedir)/* + endef + +# Installs manpages +define manpage_install_template + +installman:: manpages installdirs + @$$(SHELL) $$(srcdir)/script/installman.sh $$(DESTDIR)$$(mandir) $$(MANPAGES) + +uninstallman:: + @echo "Removing manpages" + @rm -fr $$(DESTDIR)$$(mandir)/* + +endef + +# Installs package configurations +define pc_install_template + +installpc:: installdirs + @$$(SHELL) $$(srcdir)/script/installpc.sh $$(builddir) $$(DESTDIR)$$(PKGCONFIGDIR) $$(PC_FILES) + +uninstallpc:: + @echo "Removing package configurations" + @rm -fr $$(DESTDIR)$$(PKGCONFIGDIR)/* + +endef +