diff --git a/mk/config.mk.in b/mk/config.mk.in
index 927285f70bc37ede1e9277c2ff1723749d40a77f..5f5767e59d5ea075ac33a483b9dd9eba1d1eb805 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -61,7 +61,12 @@
 #		* ghc&hslibs next
 #		then it's up to you
 
-ProjectsToBuild =  glafp-utils literate ghc hslibs
+ProjectsToBuild   = glafp-utils literate ghc hslibs
+#
+# Make a distinction between building and installing, ProjectsToInstall
+# does not include the literate bits..
+#
+ProjectsToInstall = glafp-utils ghc hslibs
 
 #
 # Should the various project tests directories be built?
@@ -153,10 +158,18 @@ GhcWithNativeCodeGen=YES
 # Build the compiler with the deforester included?
 GhcWithDeforester=NO
 
+#
+# Building various ways?
+# (right now, empty if not).
+BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
+BuildingConcurrent=$(subst mc,YES,$(filter mc,$(WAYS)))
+BuildingProfiling=$(subst p,YES,$(filter p,$(WAYS)))
+BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
+BuildingProfilingConcurrent=$(subst mr,YES,$(filter mr,$(WAYS)))
 
 #---------------------------------------------------------------
 #
-# Variables that control how the prelude libararies and runtime system are built
+# Variables that control how the prelude libraries and runtime system are built
 
 # What extra ways to build the libraries in
 # In addition to the normal sequential way, the default is to also build
@@ -287,18 +300,58 @@ FPTOOLS_TOP_ABS		= @hardtop@
 prefix                  = @prefix@
 exec_prefix             = @exec_prefix@
 bindir                  = @bindir@
-sbindir                 = @sbindir@
-libexecdir              = @libexecdir@
+#UNUSED, see below: libexecdir              = @libexecdir@
 datadir                 = @datadir@
-sysconfdir              = @datadir@
-sharedstatedir          = @sharedstatedir@
-localstatedir           = @localstatedir@
+#sysconfdir              = @datadir@
+#sharedstatedir          = @sharedstatedir@
+#localstatedir           = @localstatedir@
 libdir                  = @libdir@
 infodir		        = @infodir@
 includedir              = @includedir@
 oldincludedir           = @oldincludedir@
 mandir			= @mandir@
-srcdir                  = @srcdir@
+#UNUSED:srcdir          = @srcdir@
+
+# 
+# Default values for most of the above are only set if
+# they weren't configured to anything in particular
+# via the configure script. (i.e., we make no assumption
+# that the autoconf-generated script will assign defaults
+# to all of the above).
+#
+ifeq "$(strip $(exec_prefix))" ""
+exec_prefix		= $(prefix)
+endif
+ifeq "$(strip $(bindir))" ""
+bindir			= $(exec_prefix)/bin
+endif
+
+#
+# NOTE: by intention, libexecdir and libdir point to 
+# the same place.
+#  => Only way to override this is to set libexecdir= on the command line.
+#     (NOTE: configure script setting is ignored).
+libexecdir		= $(libdir)
+
+ifeq "$(strip $(datadir))" ""
+datadir		= $(prefix)/share
+endif
+ifeq "$(strip $(libdir))" ""
+libdir		= $(exec_prefix)/lib
+endif
+ifeq "$(strip $(infodir))" ""
+infodir		= $(prefix)/info
+endif
+ifeq "$(strip $(includedir))" ""
+includedir	= $(prefix)/include
+endif
+ifeq "$(strip $(oldincludedir))" ""
+oldincludedir	= /usr/include
+endif
+ifeq "$(strip $(mandir))" ""
+mandir		= $(prefix)/man
+endif
+ 
 
 #################################################################################
 #
@@ -473,9 +526,7 @@ INSTALL			= @INSTALL@
 # install-sh script (if chosen). This not terribly useful to us, so we convert
 # it into an abs. path.
 # 
-ifeq "$(INSTALL)" ".././install-sh"
-INSTALL			= $(FPTOOLS_TOP_ABS)/install-sh
-endif
+INSTALL			:= $(subst .././install-sh,$(FPTOOLS_TOP_ABS)/install-sh,$(INSTALL))
 LATEX			= latex
 LN_S			= @LN_S@
 MANMACROS		= -man
diff --git a/mk/target.mk b/mk/target.mk
index e4ad31a25a0ae82262b555ee0eeb0d2992e93581..7d5696eb7b91ce5b06a53415ec2d328f0e472d70 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -422,23 +422,32 @@ endif
 # friends can be overridden from their original settings in mk/config.mk.in
 # || mk/build.mk
 #
-.PHONY: install installdirs install-strip install-dirs uninstall install-docs
+.PHONY: install installdirs install-strip install-dirs uninstall install-docs show-install
+
+show-install :
+	@echo "bindir = $(bindir)"
+	@echo "libdir = $(libdir)"
+	@echo "libexecdir = $(libexecdir)  # by default, same as libdir"
+	@echo "datadir = $(datadir)  # unused for ghc project"
 
 #
 # Sometimes useful to separate out the creation of install directories 
 # from the installation itself.
 #
-installdirs ::
+install-dirs ::
 	@$(INSTALL_DIR) $(bindir)
 	@$(INSTALL_DIR) $(libdir)
 	@$(INSTALL_DIR) $(libexecdir)
 	@$(INSTALL_DIR) $(datadir)
 
 # Better do this first...
-install:: installdirs
+# but we won't for the moment, do it on-demand from
+# within the various install targets instead.
+#install:: install-dirs
 
 ifneq "$(INSTALL_PROGS)" ""
 install:: $(INSTALL_PROGS)
+	@$(INSTALL_DIR) $(bindir)
 	for i in $(INSTALL_PROGS); do \
 		$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \
 	done
@@ -450,6 +459,7 @@ endif
 #
 ifneq "$(INSTALL_SCRIPTS)" ""
 install:: $(INSTALL_SCRIPTS)
+	@$(INSTALL_DIR) $(bindir)
 ifeq "$(INTERP)" "perl"
 ifneq "$(BIN_DIST)" "1"
 	@for i in $(INSTALL_SCRIPTS); do \
@@ -457,11 +467,12 @@ ifneq "$(BIN_DIST)" "1"
 	   echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'"  > $$i.tmp ; \
 	   echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
 	   echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
-	   echo $$"libdir='$(real_libdir)';"                       >> $$i.tmp ; \
-	   echo $$"datadir='$(real_datadir)';"                     >> $$i.tmp ; \
+	   echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+	   echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+	   echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
 	   cat  $$i                                                >> $$i.tmp ; \
-	   echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(bindir) ;    \
-	   $(INSTALL_PROGRAM) $(filter-out -s,,$(INSTALL_BIN_OPTS)) $$i.tmp $(bindir)/$$i ; \
+	   echo $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_OPTS)) $$i.tmp $(bindir)/$$i ;    \
+	   $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_BIN_OPTS)) $$i.tmp $(bindir)/$$i ; \
 	   $(RM) $$i.tmp; \
 	done
 else
@@ -478,6 +489,7 @@ endif
 
 ifneq "$(INSTALL_LIB_SCRIPTS)" ""
 install:: $(INSTALL_LIB_SCRIPTS)
+	@$(INSTALL_DIR) $(libdir)
 ifeq "$(INTERP)" "perl"
 ifneq "$(BIN_DIST)" "1"
 	@for i in $(INSTALL_LIB_SCRIPTS); do \
@@ -485,8 +497,9 @@ ifneq "$(BIN_DIST)" "1"
 	   echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'"  > $$i.tmp ; \
 	   echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
 	   echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
-	   echo $$"libdir='$(real_libdir)';"                       >> $$i.tmp ; \
-	   echo $$"datadir='$(real_datadir)';"                     >> $$i.tmp ; \
+	   echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+	   echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+	   echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
 	   cat  $$i                                                >> $$i.tmp ; \
 	   echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir) ;    \
 	   $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libdir)/$$i ; \
@@ -506,6 +519,7 @@ endif
 
 ifneq "$(INSTALL_LIBEXEC_SCRIPTS)" ""
 install:: $(INSTALL_LIBEXEC_SCRIPTS)
+	@$(INSTALL_DIR) $(libexecdir)
 ifeq "$(INTERP)" "perl"
 ifneq "$(BIN_DIST)" "1"
 	@for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
@@ -513,8 +527,9 @@ ifneq "$(BIN_DIST)" "1"
 	   echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'"  > $$i.tmp ; \
 	   echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
 	   echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
-	   echo $$"libdir='$(real_libdir)';"                       >> $$i.tmp ; \
-	   echo $$"datadir='$(real_datadir)';"                     >> $$i.tmp ; \
+	   echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+	   echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+	   echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
 	   cat  $$i                                                >> $$i.tmp ; \
 	   echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir) ;    \
 	   $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libexecdir)/$$i ; \
@@ -534,6 +549,7 @@ endif
 
 ifneq "$(INSTALL_LIBS)" ""
 install:: $(INSTALL_LIBS)
+	@$(INSTALL_DIR) $(libdir)
 	for i in $(INSTALL_LIBS); do \
 		$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
 	done
@@ -541,6 +557,7 @@ endif
 
 ifneq "$(INSTALL_LIBEXECS)" ""
 install:: $(INSTALL_LIBEXECS)
+	@$(INSTALL_DIR) $(libexecdir)
 	-for i in $(INSTALL_LIBEXECS); do \
 		$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(libexecdir); \
 	done
@@ -548,6 +565,7 @@ endif
 
 ifneq "$(INSTALL_DATAS)" ""
 install:: $(INSTALL_DATAS)
+	@$(INSTALL_DIR) $(datadir)
 	for i in $(INSTALL_DATAS); do \
 		$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \
 	done