X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FMakefile.am;h=73a7cb5a8fe0ffa7bc2fa2c1a6e0754e9f3b16d0;hb=91abc3ea5f6beb62c546bd01777dd056e1ffcd39;hp=815cc90431398206e1eccd84897167f6e68e3cb3;hpb=b58b3db2436af7b7e2299918195c1584ba471627;p=gnulib.git diff --git a/lib/Makefile.am b/lib/Makefile.am index 815cc9043..73a7cb5a8 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -9,7 +9,7 @@ DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ libfetish_a_SOURCES = \ getdate.y posixtm.c addext.c argmatch.c backupfile.c basename.c \ - canon-host.c closeout.c dirname.c exclude.c filemode.c diacrit.c \ + canon-host.c closeout.c diacrit.c dirname.c exclude.c filemode.c \ full-write.c getopt.c getopt1.c getugroups.c hard-locale.c hash.c \ human.c idcache.c isdir.c linebuffer.c localcharset.c long-options.c \ makepath.c md5.c memcasecmp.c memcoll.c modechange.c path-concat.c \ @@ -35,7 +35,7 @@ BUILT_SOURCES = getdate.c lstat.c stat.c MAINTAINERCLEANFILES = $(BUILT_SOURCES) DISTCLEANFILES = lstat.c stat.c -EXTRA_DIST = xstat.in config.charset +EXTRA_DIST = xstat.in config.charset ref-add.sin ref-del.sin lstat.c: xstat.in sed \ -e '/@IGNORE@/d' \ @@ -55,20 +55,43 @@ stat.c: xstat.in mv $@-t $@ -# What a mess needed in order to install a simple file in $(libdir)! +# The following is needed in order to install a simple file in $(libdir) +# which is shared with other installed packages. We use a list of referencing +# packages so that "make uninstall" will remove the file if and only if it +# is not used by another installed package. -all-local: charset.alias +all-local: charset.alias ref-add.sed ref-del.sed +charset_alias = $(DESTDIR)$(libdir)/charset.alias +charset_tmp = $(DESTDIR)$(libdir)/charset.tmp install-exec-local: all-local $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_DATA) charset.alias $(libdir)/charset.alias - -# Probably not a good idea. Other packages need $(libdir)/charset.alias too. -#uninstall-local: -# -rm -f $(libdir)/charset.alias + test -f $(charset_alias) \ + && orig=$(charset_alias) \ + || orig=charset.alias; \ + sed -f ref-add.sed $$orig > $(charset_tmp) + $(INSTALL_DATA) $(charset_tmp) $(charset_alias) + rm -f $(charset_tmp) + +uninstall-local: all-local + if test -f $(charset_alias); then \ + sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \ + if grep '^# Packages using this file: $$' $(charset_tmp) \ + > /dev/null; then \ + rm -f $(charset_alias); \ + else \ + $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \ + fi; \ + rm -f $(charset_tmp); \ + fi charset.alias: config.charset - $(SHELL) $(srcdir)/config.charset '@host@' > $@-t + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +SUFFIXES = .sed .sin +.sin.sed: + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > $@-t mv $@-t $@ -CLEANFILES = charset.alias +CLEANFILES = charset.alias ref-add.sed ref-del.sed