(install-exec-local, uninstall-local, ref-add.sed, ref-del.sed): New rules.
authorJim Meyering <jim@meyering.net>
Fri, 24 Mar 2000 05:46:01 +0000 (05:46 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 24 Mar 2000 05:46:01 +0000 (05:46 +0000)
From Bruno.

lib/Makefile.am

index 759916854f5db961917af22737b40838247ac8b3..66f7b61f0a5c009ce64cb6acbc7539c0998688d4 100644 (file)
@@ -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
 
 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
+       if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-add.sed < $(DESTDIR)$(libdir)/charset.alias > $(DESTDIR)$(libdir)/charset.alias-t ; \
+       else \
+         sed -f ref-add.sed < charset.alias > $(DESTDIR)$(libdir)/charset.alias-t ; \
+       fi
+       $(INSTALL_DATA) $(DESTDIR)$(libdir)/charset.alias-t $(DESTDIR)$(libdir)/charset.alias
+       rm -f $(DESTDIR)$(libdir)/charset.alias-t
+
+uninstall-local: all-local
+       if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+         sed -f ref-del.sed < $(DESTDIR)$(libdir)/charset.alias > $(DESTDIR)$(libdir)/charset.alias-t ; \
+         if grep '^# Packages using this file: $$' $(DESTDIR)$(libdir)/charset.alias-t > /dev/null ; then \
+           rm -f $(DESTDIR)$(libdir)/charset.alias ; \
+         else \
+           $(INSTALL_DATA) $(DESTDIR)$(libdir)/charset.alias-t $(DESTDIR)$(libdir)/charset.alias ; \
+         fi ; \
+         rm -f $(DESTDIR)$(libdir)/charset.alias-t ; \
+       fi
 
 charset.alias: config.charset
        $(SHELL) $(srcdir)/config.charset '@host@' > $@-t
        mv $@-t $@
 
+ref-add.sed: ref-add.sed.in
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' < $(srcdir)/ref-add.sed.in > ref-add.sed
+
+ref-del.sed: ref-del.sed.in
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' < $(srcdir)/ref-del.sed.in > ref-del.sed
+
+
 CLEANFILES = charset.alias