diff --git a/src/Makefile.in b/src/Makefile.in
index 5c0c23fe70366e4c58d2dd12c10ac06ba94945ef..f6ba7fcbb12c3f30f01aa5d23497c57455343d7e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -128,17 +128,17 @@ pike: $(OBJ) compile_interpret modules/linker_options
 # purify
 pure: $(OBJ) compile_interpret module_objects
 	-@mv pike pike.old 2>/dev/null || true
-	purify -free-queue-length=500 -inuse-at-exit=yes -chain-length=12 gcc $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
+	purify -free-queue-length=500 -inuse-at-exit=yes -chain-length=12 @REALCC@ $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
 
 # purecov
 cover: $(OBJ) compile_interpret module_objects
 	-@mv pike pike.old 2>/dev/null || true
-	purecov purify -free-queue-length=500 -inuse-at-exit=yes -chain-length=12 gcc $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
+	purecov purify -free-queue-length=500 -inuse-at-exit=yes -chain-length=12 @REALCC@ $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
 
 # quantify
 quant: $(OBJ) compile_interpret module_objects
 	-@mv pike pike.old 2>/dev/null || true
-	quantify gcc $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
+	quantify @REALCC@ $(LDFLAGS) $(OBJ) interpret.o `cat modules/linker_options` $(LIBS) -o pike
 
 # Several optimizers have problems with interpret.c
 # First try compiling with optimization and if that doesn't work, without.
@@ -169,10 +169,10 @@ install:
 	    sed -e 's!/usr/local/bin!$(exec_prefix)!' <$(SRCDIR)/../bin/hilfe \
 	      >$(exec_prefix)/hilfe && \
 	    chmod 755 $(exec_prefix)/hilfe; \
-	  else $(INSTALL) $(SRCDIR)/../bin/hilfe $(exec_prefix); fi; \
+	  else $(INSTALL) -m 755 $(SRCDIR)/../bin/hilfe $(exec_prefix); fi; \
 	else : ; fi
-	@for a in $(SRCDIR)/*.h *.h ; do $(INSTALL) $$a $(prefix)/include/pike ; done
-	@for f in `cd "$(TMP_LIBDIR)"; find . -type f -print`; do echo "$(lib_prefix)/$$f"; if [ -f "$(lib_prefix)/$$f" ]; then mv -f "$(lib_prefix)/$$f" "$(lib_prefix)/$$f.old"; else : ; fi; cp "$(TMP_LIBDIR)/$$f" "$(lib_prefix)/$$f"; done
+	@for a in $(SRCDIR)/*.h *.h ; do $(INSTALL) -m 644 $$a $(prefix)/include/pike ; done
+	@for f in `cd "$(TMP_LIBDIR)"; find . -type f -print`; do echo "$(lib_prefix)/$$f"; if [ -f "$(lib_prefix)/$$f" ]; then mv -f "$(lib_prefix)/$$f" "$(lib_prefix)/$$f.old"; else : ; fi; cp "$(TMP_LIBDIR)/$$f" "$(lib_prefix)/$$f"; chmod 644 "$(lib_prefix)/$$f"; done
 
 # tidy up a bit
 tidy: