[project @ 1998-09-14 15:49:19 by simonm]
[ghc-hetmet.git] / mk / target.mk
index 3c46011..cbd0308 100644 (file)
@@ -324,6 +324,23 @@ endef
 endif # $(filter...
 endif
 
+#
+# Remove local symbols from library objects if requested.
+#
+
+ifeq "$(StripLibraries)" "YES"
+ifneq "$(filter -split-objs,$(HC_OPTS))" ""
+SRC_HC_POST_OPTS += \
+  for i in $(basename $@)/*; do \
+       ld -r -x -o $$i.tmp $$i; \
+       $(MV) $$i.tmp $$i; \
+  done
+else
+SRC_HC_POST_OPTS += \
+  ld -r -x -o $@.tmp $@; $(MV) $@.tmp $@
+endif
+endif
+
 $(LIBRARY) :: $(LIBOBJS)
        $(BUILD_LIB)
 endif
@@ -420,7 +437,7 @@ all :: $(SCRIPT_LINK)
 # on perl.
 #
 $(SCRIPT_LINK) : $(SCRIPT_PROG)
-       @if ( perl -e '$$fn="$(SCRIPT_LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \
+       @if ( $(PERL) -e '$$fn="$(SCRIPT_LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \
           echo "Creating a symbol link from $(SCRIPT_PROG) to $(SCRIPT_LINK)"; \
           $(RM) $(SCRIPT_LINK); \
           $(LN_S) $(SCRIPT_PROG) $(SCRIPT_LINK); \
@@ -650,7 +667,16 @@ endif
 #
 ifneq "$(SCRIPT_LINK)" ""
 install ::
-       $(LN_S) $(SCRIPT_PROG) $(bindir)/$(SCRIPT_LINK)
+       @if ( $(PERL) -e '$$fn="$(bindir)/$(SCRIPT_LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \
+          echo "Creating a symbol link from $(SCRIPT_PROG) to $(SCRIPT_LINK) in $(bindir)"; \
+          $(RM) $(bindir)/$(SCRIPT_LINK); \
+          $(LN_S) $(SCRIPT_PROG) $(bindir)/$(SCRIPT_LINK); \
+        else \
+          echo "Creating a symbol link from $(SCRIPT_PROG) to $(SCRIPT_LINK) in $(bindir) failed: \`$(bindir)/$(SCRIPT_LINK)' already exists"; \
+          echo "Perhaps remove \`$(bindir)/$(SCRIPT_LINK)' manually?"; \
+          exit 1; \
+        fi;
+
 endif
 
 ###########################################
@@ -724,9 +750,14 @@ dist-post::
 dist-manifest ::
        cd $(SRC_DIST_DIR); find . \( -type l -o -type f \) -exec ls -lLG {} \; | sed -e 's/\.\///' > /tmp/MANIFEST ; mv /tmp/MANIFEST MANIFEST
 
-dist-package::
+dist-package:: dist-package-tar-gz
+
+dist-package-tar-gz ::
        cd $(SRC_DIST_DIR); cd ..; $(TAR) chzf $(SRC_DIST_NAME).tar.gz $(SRC_DIST_NAME)
 
+dist-package-zip ::
+       cd $(SRC_DIST_DIR); cd ..; $(ZIP) $(ZIP_OPTS) -r $(SRC_DIST_NAME).zip $(SRC_DIST_NAME)
+
 #
 # binary-dist creates a binary bundle, set BIN_DIST_NAME
 # to package name and do `make binary-dist' (normally this
@@ -845,13 +876,17 @@ SGML_TEXT = $(SGML_DOC).txt
 
 else # no SGML_DOC
 
+ifeq "$(VSGML_SRCS)" ""
 VSGML_SRCS = $(wildcard *.vsgml)
+endif
 
+ifeq "$(SGML_SRCS)" ""
 ifneq "$(VSGML_SRCS)" ""
 SGML_SRCS  = $(addsuffix .sgml, $(basename $(VSGML_SRCS)))
 else
 SGML_SRCS  = $(wildcard *.sgml)
 endif
+endif
 
 SGML_DVI  = $(addsuffix  .dvi, $(basename $(SGML_SRCS)))
 SGML_PS   = $(addsuffix   .ps, $(basename $(SGML_SRCS)))
@@ -915,7 +950,7 @@ ifneq "$(HS_OBJS)" ""
 ifneq "$(filter -split-objs,$(HC_OPTS))" ""
 clean ::
        find $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
-       -rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS))
+       -rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS)) > /dev/null 2>&1
 endif
 endif