Commit 0ef6ba7b authored by Ian Lynagh's avatar Ian Lynagh

Quote commands that we run, so they work if there are space in their paths

I've also added some missing $s to some makefiles. These aren't
technically necessary, but it's nice to be consistent.
parent d5629b33
......@@ -36,7 +36,7 @@ compiler/stage3/package-data.mk : $(compiler_CONFIG_HS)
endif
$(compiler_CONFIG_HS) : mk/config.mk
$(RM) -f $@
"$(RM)" $(RM_OPTS) $@
@echo "Creating $@ ... "
@echo "module Config where" >>$@
@echo "cProjectName :: String" >> $@
......@@ -142,8 +142,8 @@ $(eval $(call clean-target,compiler,config_hs,$(compiler_CONFIG_HS)))
PLATFORM_H = ghc_boot_platform.h
compiler/stage1/$(PLATFORM_H) : mk/config.mk
$(MKDIRHIER) $(dir $@)
$(RM) $@
"$(MKDIRHIER)" $(dir $@)
"$(RM)" $(RM_OPTS) $@
@echo "Creating $@..."
@echo "#ifndef __PLATFORM_H__" >$@
@echo "#define __PLATFORM_H__" >>$@
......@@ -189,8 +189,8 @@ endif
# the HOST platform is the TARGET of stage1. The TARGET remains the same
# (stage1 is the cross-compiler, not stage2).
compiler/stage2/$(PLATFORM_H) : mk/config.mk
$(MKDIRHIER) $(dir $@)
$(RM) $@
"$(MKDIRHIER)" $(dir $@)
"$(RM)" $(RM_OPTS) $@
@echo "Creating $@..."
@echo "#ifndef __PLATFORM_H__" >$@
@echo "#define __PLATFORM_H__" >>$@
......@@ -233,7 +233,7 @@ endif
@echo "Done."
compiler/stage3/$(PLATFORM_H) : compiler/stage2/$(PLATFORM_H)
$(CP) $< $@
"$(CP)" $< $@
# Every Constants.o object file depends on includes/GHCConstants.h:
$(eval $(call compiler-hs-dependency,Constants,$(includes_GHCCONSTANTS)))
......@@ -263,25 +263,25 @@ $(PRIMOPS_TXT) compiler/parser/Parser.y: %: %.pp compiler/stage1/$(PLATFORM_H)
$(eval $(call clean-target,compiler,primop, $(PRIMOPS_TXT) compiler/parser/Parser.y $(PRIMOP_BITS)))
compiler/primop-data-decl.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --data-decl < $< > $@
"$(GENPRIMOP_INPLACE)" --data-decl < $< > $@
compiler/primop-tag.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --primop-tag < $< > $@
"$(GENPRIMOP_INPLACE)" --primop-tag < $< > $@
compiler/primop-list.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --primop-list < $< > $@
"$(GENPRIMOP_INPLACE)" --primop-list < $< > $@
compiler/primop-has-side-effects.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --has-side-effects < $< > $@
"$(GENPRIMOP_INPLACE)" --has-side-effects < $< > $@
compiler/primop-out-of-line.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --out-of-line < $< > $@
"$(GENPRIMOP_INPLACE)" --out-of-line < $< > $@
compiler/primop-commutable.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --commutable < $< > $@
"$(GENPRIMOP_INPLACE)" --commutable < $< > $@
compiler/primop-needs-wrapper.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --needs-wrapper < $< > $@
"$(GENPRIMOP_INPLACE)" --needs-wrapper < $< > $@
compiler/primop-can-fail.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --can-fail < $< > $@
"$(GENPRIMOP_INPLACE)" --can-fail < $< > $@
compiler/primop-strictness.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --strictness < $< > $@
"$(GENPRIMOP_INPLACE)" --strictness < $< > $@
compiler/primop-primop-info.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
$(GENPRIMOP_INPLACE) --primop-primop-info < $< > $@
"$(GENPRIMOP_INPLACE)" --primop-primop-info < $< > $@
# Every PrimOp.o object file depends on $(PRIMOP_BITS):
$(eval $(call compiler-hs-dependency,PrimOp,$(PRIMOP_BITS)))
......@@ -289,7 +289,7 @@ $(eval $(call compiler-hs-dependency,PrimOp,$(PRIMOP_BITS)))
# Usages aren't used any more; but the generator
# can still generate them if we want them back
compiler/primop-usage.hs-incl: $(PRIMOPS_TXT)
$(GENPRIMOP_INPLACE) --usage < $< > $@
"$(GENPRIMOP_INPLACE)" --usage < $< > $@
# -----------------------------------------------------------------------------
# Configuration
......@@ -466,7 +466,7 @@ compiler/stage1/inplace-pkg-config-munged: compiler/stage1/inplace-pkg-config
sed -e 's/^\(version: .*\)\.$(ProjectPatchLevel)$$/\1/' \
-e 's/^\(hs-libraries: HSghc-.*\)\.$(ProjectPatchLevel)$$/\1/' \
< $< > $@
$(compiler_stage1_GHC_PKG) update --force $(compiler_stage1_GHC_PKG_OPTS) $@
"$(compiler_stage1_GHC_PKG)" update --force $(compiler_stage1_GHC_PKG_OPTS) $@
$(compiler_stage1_v_LIB) : compiler/stage1/inplace-pkg-config-munged
endif
......
......@@ -28,6 +28,6 @@ src_ug_book = $(dir $(realpath $(dir $(build_ug_book))/ug-book.xml.in))ug-book.
ifneq "$(build_ug_book)" "$(src_ug_book)"
$(src_ug_book) : $(build_ug_book)
$(CP) $< $@
"$(CP)" $< $@
docs/users_guide/users_guide.pdf docs/users_guide/users_guide.ps: $(src_ug_book)
endif
......@@ -17,12 +17,12 @@ install: install_driver_ghci
.PHONY: install_driver_ghci
install_driver_ghci: WRAPPER=$(DESTDIR)$(bindir)/ghci-$(ProjectVersion)
install_driver_ghci:
$(MKDIRHIER) $(DESTDIR)$(bindir)
$(RM) -f $(WRAPPER)
"$(MKDIRHIER)" $(DESTDIR)$(bindir)
"$(RM)" $(RM_OPTS) $(WRAPPER)
echo '#!$(SHELL)' >> $(WRAPPER)
echo 'exec $(bindir)/ghc-$(ProjectVersion) --interactive ${1+"$@"}' >> $(WRAPPER)
$(EXECUTABLE_FILE) $(WRAPPER)
$(RM) -f $(DESTDIR)$(bindir)/ghci
"$(RM)" $(RM_OPTS) $(DESTDIR)$(bindir)/ghci
$(LN_S) ghci-$(ProjectVersion) $(DESTDIR)$(bindir)/ghci
else # Windows...
......@@ -42,7 +42,7 @@ driver/ghci/ghci.res : driver/ghci/ghci.rc driver/ghci/ghci.ico
windres --preprocessor="$(CPP) -xc -DRC_INVOKED" -o driver/ghci/ghci.res -i driver/ghci/ghci.rc -O coff
driver/ghci/dist/build/tmp/$(driver/ghci_dist_PROG_VER) : driver/ghci/dist/build/tmp/$(driver/ghci_dist_PROG)
$(CP) $< $@
"$(CP)" $< $@
install : install_driver_ghcii
......@@ -50,8 +50,8 @@ install : install_driver_ghcii
install_driver_ghcii: GHCII_SCRIPT=$(DESTDIR)$(bindir)/ghcii.sh
install_driver_ghcii: GHCII_SCRIPT_VERSIONED = $(DESTDIR)$(bindir)/ghcii-$(ProjectVersion).sh
install_driver_ghcii:
$(MKDIRHIER) $(DESTDIR)$(bindir)
$(RM) -f $(GHCII_SCRIPT)
"$(MKDIRHIER)" $(DESTDIR)$(bindir)
"$(RM)" $(RM_OPTS) $(GHCII_SCRIPT)
echo "#!$(SHELL)" >> $(GHCII_SCRIPT)
echo 'exec "$$0"/../ghc --interactive $${1+"$$@"}' >> $(GHCII_SCRIPT)
$(EXECUTABLE_FILE) $(GHCII_SCRIPT)
......
......@@ -414,11 +414,11 @@ endef
PRIMOPS_TXT = $(GHC_COMPILER_DIR)/prelude/primops.txt
libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.hs : $(GENPRIMOP_INPLACE) $(PRIMOPS_TXT)
$(MKDIRHIER) $(dir $@)
$(GENPRIMOP_INPLACE) --make-haskell-wrappers <$(PRIMOPS_TXT) >$@
"$(MKDIRHIER)" $(dir $@)
"$(GENPRIMOP_INPLACE)" --make-haskell-wrappers <$(PRIMOPS_TXT) >$@
libraries/ghc-prim/GHC/Prim.hs : $(GENPRIMOP_INPLACE) $(PRIMOPS_TXT)
$(GENPRIMOP_INPLACE) --make-haskell-source <$(PRIMOPS_TXT) >$@
"$(GENPRIMOP_INPLACE)" --make-haskell-source <$(PRIMOPS_TXT) >$@
# -----------------------------------------------------------------------------
......@@ -628,20 +628,20 @@ $(INPLACE)/stamp-mingw : $(MKDIRHIER)
$(MKDIRHIER) $(INPLACE_MINGW)/bin
GCC=`type -p $(WhatGccIsCalled)`; \
GccDir=`dirname $$GCC`; \
$(CP) -p $$GccDir/{gcc.exe,ar.exe,as.exe,dlltool.exe,dllwrap.exe,windres.exe} $(INPLACE_MINGW)/bin; \
$(CP) -Rp $$GccDir/../include $(INPLACE_MINGW); \
$(CP) -Rp $$GccDir/../lib $(INPLACE_MINGW); \
$(CP) -Rp $$GccDir/../libexec $(INPLACE_MINGW); \
$(CP) -Rp $$GccDir/../mingw32 $(INPLACE_MINGW)
"$(CP)" -p $$GccDir/{gcc.exe,ar.exe,as.exe,dlltool.exe,dllwrap.exe,windres.exe} $(INPLACE_MINGW)/bin; \
"$(CP)" -Rp $$GccDir/../include $(INPLACE_MINGW); \
"$(CP)" -Rp $$GccDir/../lib $(INPLACE_MINGW); \
"$(CP)" -Rp $$GccDir/../libexec $(INPLACE_MINGW); \
"$(CP)" -Rp $$GccDir/../mingw32 $(INPLACE_MINGW)
touch $(INPLACE)/stamp-mingw
install : install_mingw
.PHONY: install_mingw
install_mingw : $(INPLACE_MINGW)
$(CP) -Rp $(INPLACE_MINGW) $(prefix)
"$(CP)" -Rp $(INPLACE_MINGW) $(prefix)
$(INPLACE_LIB)/perl.exe $(INPLACE_LIB)/perl56.dll :
$(CP) $(GhcDir)../{perl.exe,perl56.dll} $(INPLACE_LIB)
"$(CP)" $(GhcDir)../{perl.exe,perl56.dll} $(INPLACE_LIB)
endif # Windows
......@@ -651,13 +651,13 @@ libraries/ghc-prim/dist-install/doc/html/ghc-prim/ghc-prim.haddock: \
libraries/ghc-prim/dist-install/build/autogen/GHC/Prim.hs: \
$(PRIMOPS_TXT) $(GENPRIMOP_INPLACE) $(MKDIRHIER)
$(MKDIRHIER) $(dir $@)
$(GENPRIMOP_INPLACE) --make-haskell-source < $< > $@
"$(MKDIRHIER)" $(dir $@)
"$(GENPRIMOP_INPLACE)" --make-haskell-source < $< > $@
libraries/ghc-prim/dist-install/build/autogen/GHC/PrimopWrappers.hs: \
$(PRIMOPS_TXT) $(GENPRIMOP_INPLACE) $(MKDIRHIER)
$(MKDIRHIER) $(dir $@)
$(GENPRIMOP_INPLACE) --make-haskell-wrappers < $< > $@
"$(MKDIRHIER)" $(dir $@)
"$(GENPRIMOP_INPLACE)" --make-haskell-wrappers < $< > $@
# -----------------------------------------------------------------------------
# Installation
......@@ -694,13 +694,13 @@ install_libs: $(INSTALL_LIBS)
done
install_libexec_scripts: $(INSTALL_LIBEXEC_SCRIPTS)
$(MKDIRHIER) $(DESTDIR)$(libexecdir)
"$(MKDIRHIER)" $(DESTDIR)$(libexecdir)
for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
$(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(libexecdir); \
done
install_libexecs: $(INSTALL_LIBEXECS)
$(MKDIRHIER) $(DESTDIR)$(libexecdir)
"$(MKDIRHIER)" $(DESTDIR)$(libexecdir)
for i in $(INSTALL_LIBEXECS); do \
$(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(libexecdir); \
done
......@@ -723,17 +723,17 @@ endif
install_packages: install_libexecs
install_packages: libffi/package.conf.install rts/package.conf.install
$(MKDIRHIER) $(DESTDIR)$(libdir)
"$(MKDIRHIER)" $(DESTDIR)$(libdir)
echo "[]" > $(INSTALLED_PACKAGE_CONF)
$(INSTALLED_GHC_PKG_REAL) --force --global-conf $(INSTALLED_PACKAGE_CONF) update libffi/package.conf.install
$(INSTALLED_GHC_PKG_REAL) --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update libffi/package.conf.install
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
$(foreach p, $(PACKAGES) $(PACKAGES_STAGE2),\
$(GHC_CABAL_INPLACE) install \
"$(GHC_CABAL_INPLACE)" install \
$(INSTALLED_GHC_PKG_REAL) \
$(INSTALLED_PACKAGE_CONF) \
libraries/$p dist-install \
'$(DESTDIR)' '$(prefix)' '$(libdir)' '$(docdir)/libraries' &&) true
$(GHC_CABAL_INPLACE) install \
"$(GHC_CABAL_INPLACE)" install \
$(INSTALLED_GHC_PKG_REAL) \
$(INSTALLED_PACKAGE_CONF) \
compiler stage2 \
......@@ -769,15 +769,15 @@ $(eval $(call bindist,.,\
# the bindist with a relative path
binary-dist:
$(RM) -rf $(BIN_DIST_NAME)
"$(RM)" $(RM_OPTS) -r $(BIN_DIST_NAME)
mkdir $(BIN_DIST_NAME)
set -e; for i in LICENSE compiler ghc rts libraries utils gmp docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../$$i $(BIN_DIST_NAME)/; done
ln -s ../distrib/configure-bin.ac $(BIN_DIST_NAME)/configure.ac
cd $(BIN_DIST_NAME) && autoreconf
$(RM) -f $(BIN_DIST_TAR)
"$(RM)" $(RM_OPTS) $(BIN_DIST_TAR)
# h means "follow symlinks", e.g. if aclocal.m4 is a symlink to a source
# tree then we want to include the real file, not a symlink to it
$(TAR) hcf - -T $(BIN_DIST_LIST) | bzip2 -c >$(BIN_DIST_TAR_BZ2)
"$(TAR)" hcf - -T $(BIN_DIST_LIST) | bzip2 -c >$(BIN_DIST_TAR_BZ2)
nTimes = set -e; for i in `seq 1 $(1)`; do echo Try "$$i: $(2)"; if $(2); then break; fi; done
......@@ -832,7 +832,7 @@ sdist : VERSION
# "stage2" is the dist dir.
sdist_file = \
if test -f $(TOP)/$1/$2/build/$4.hs; then \
$(CP) $(TOP)/$1/$2/build/$4.hs $1/$3/ ; \
"$(CP)" $(TOP)/$1/$2/build/$4.hs $1/$3/ ; \
mv $1/$3/$4.$5 $1/$3/$4.$5.source ;\
else \
echo "does not exist: $1/$2//build/$4.hs"; \
......@@ -841,14 +841,14 @@ sdist_file = \
.PHONY: sdist-prep
sdist-prep :
$(RM) -rf $(SRC_DIST_DIR)
$(RM) $(SRC_DIST_NAME).tar.gz
"$(RM)" $(RM_OPTS) -r $(SRC_DIST_DIR)
"$(RM)" $(SRC_DIST_NAME).tar.gz
mkdir $(SRC_DIST_DIR)
( cd $(SRC_DIST_DIR) \
&& for i in $(SRC_DIST_DIRS); do mkdir $$i; (cd $$i && lndir $(TOP)/$$i ); done \
&& for i in $(SRC_DIST_FILES); do $(LN_S) $(TOP)/$$i .; done \
&& $(MAKE) distclean \
&& if test -f $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs; then $(CP) $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs libraries/haskell-src/Language/Haskell/ ; mv libraries/haskell-src/Language/Haskell/Parser.ly libraries/haskell-src/Language/Haskell/Parser.ly.source ; fi \
&& if test -f $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs; then "$(CP)" $(TOP)/libraries/haskell-src/dist/build/Language/Haskell/Parser.hs libraries/haskell-src/Language/Haskell/ ; mv libraries/haskell-src/Language/Haskell/Parser.ly libraries/haskell-src/Language/Haskell/Parser.ly.source ; fi \
&& $(call sdist_file,compiler,stage2,cmm,CmmLex,x) \
&& $(call sdist_file,compiler,stage2,cmm,CmmParse,y) \
&& $(call sdist_file,compiler,stage2,main,ParsePkgConf,y) \
......@@ -860,13 +860,13 @@ sdist-prep :
&& $(call sdist_file,utils/hpc,dist,,HpcParser,y) \
&& $(call sdist_file,utils/genprimopcode,dist,,Lexer,x) \
&& $(call sdist_file,utils/genprimopcode,dist,,Parser,y) \
&& $(RM) -rf compiler/stage[123] mk/build.mk \
&& $(FIND) $(SRC_DIST_DIRS) \( -name _darcs -o -name SRC -o -name "autom4te*" -o -name "*~" -o -name ".cvsignore" -o -name "\#*" -o -name ".\#*" -o -name "log" -o -name "*-SAVE" -o -name "*.orig" -o -name "*.rej" -o -name "*-darcs-backup*" \) -print | xargs $(RM) -rf \
&& "$(RM)" $(RM_OPTS) -r compiler/stage[123] mk/build.mk \
&& "$(FIND)" $(SRC_DIST_DIRS) \( -name _darcs -o -name SRC -o -name "autom4te*" -o -name "*~" -o -name ".cvsignore" -o -name "\#*" -o -name ".\#*" -o -name "log" -o -name "*-SAVE" -o -name "*.orig" -o -name "*.rej" -o -name "*-darcs-backup*" \) -print | xargs "$(RM)" $(RM_OPTS) -r \
)
.PHONY: sdist
sdist : sdist-prep
$(TAR) chf - $(SRC_DIST_NAME) 2>$src_log | bzip2 >$(TOP)/$(SRC_DIST_TARBALL)
"$(TAR)" chf - $(SRC_DIST_NAME) 2>$src_log | bzip2 >$(TOP)/$(SRC_DIST_TARBALL)
sdist-manifest : $(SRC_DIST_TARBALL)
tar tjf $(SRC_DIST_TARBALL) | sed "s|^ghc-$(ProjectVersion)/||" | sort >sdist-manifest
......@@ -898,43 +898,43 @@ clean : clean_files clean_libraries
.PHONY: clean_files
clean_files :
$(RM) $(CLEAN_FILES)
"$(RM)" $(RM_OPTS) $(CLEAN_FILES)
.PHONY: clean_libraries
clean_libraries:
$(RM) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2))
distclean : clean
$(RM) config.cache config.status config.log mk/config.h mk/stamp-h
$(RM) mk/config.mk mk/are-validating.mk mk/project.mk
$(RM) extra-gcc-opts docs/users_guide/ug-book.xml
$(RM) compiler/ghc.cabal ghc/ghc-bin.cabal
$(RM) libraries/base/include/HsBaseConfig.h
$(RM) libraries/directory/include/HsDirectoryConfig.h
$(RM) libraries/process/include/HsProcessConfig.h
$(RM) libraries/unix/include/HsUnixConfig.h
$(RM) libraries/old-time/include/HsTimeConfig.h
$(RM) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) -r $(patsubst %, libraries/%/autom4te.cache, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) config.cache config.status config.log mk/config.h mk/stamp-h
"$(RM)" $(RM_OPTS) mk/config.mk mk/are-validating.mk mk/project.mk
"$(RM)" $(RM_OPTS) extra-gcc-opts docs/users_guide/ug-book.xml
"$(RM)" $(RM_OPTS) compiler/ghc.cabal ghc/ghc-bin.cabal
"$(RM)" $(RM_OPTS) libraries/base/include/HsBaseConfig.h
"$(RM)" $(RM_OPTS) libraries/directory/include/HsDirectoryConfig.h
"$(RM)" $(RM_OPTS) libraries/process/include/HsProcessConfig.h
"$(RM)" $(RM_OPTS) libraries/unix/include/HsUnixConfig.h
"$(RM)" $(RM_OPTS) libraries/old-time/include/HsTimeConfig.h
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/autom4te.cache, $(PACKAGES) $(PACKAGES_STAGE2))
maintainer-clean : distclean
$(RM) configure mk/config.h.in
$(RM) -r autom4te.cache libraries/*/autom4te.cache
$(RM) ghc.spec
$(RM) $(patsubst %, libraries/%/GNUmakefile, \
"$(RM)" $(RM_OPTS) configure mk/config.h.in
"$(RM)" $(RM_OPTS) -r autom4te.cache libraries/*/autom4te.cache
"$(RM)" $(RM_OPTS) ghc.spec
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/GNUmakefile, \
$(PACKAGES) $(PACKAGES_STAGE2))
$(RM) $(patsubst %, libraries/%/ghc.mk, $(PACKAGES) $(PACKAGES_STAGE2))
$(RM) $(patsubst %, libraries/%/configure, \
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/ghc.mk, $(PACKAGES) $(PACKAGES_STAGE2))
"$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/configure, \
$(PACKAGES) $(PACKAGES_STAGE2))
$(RM) libraries/base/include/HsBaseConfig.h.in
$(RM) libraries/directory/include/HsDirectoryConfig.h.in
$(RM) libraries/process/include/HsProcessConfig.h.in
$(RM) libraries/unix/include/HsUnixConfig.h.in
$(RM) libraries/old-time/include/HsTimeConfig.h.in
"$(RM)" $(RM_OPTS) libraries/base/include/HsBaseConfig.h.in
"$(RM)" $(RM_OPTS) libraries/directory/include/HsDirectoryConfig.h.in
"$(RM)" $(RM_OPTS) libraries/process/include/HsProcessConfig.h.in
"$(RM)" $(RM_OPTS) libraries/unix/include/HsUnixConfig.h.in
"$(RM)" $(RM_OPTS) libraries/old-time/include/HsTimeConfig.h.in
.PHONY: all_libraries
......
......@@ -117,7 +117,7 @@ all_ghc_stage2 : $(GHC_STAGE2)
all_ghc_stage3 : $(GHC_STAGE3)
$(INPLACE_LIB)/extra-gcc-opts : extra-gcc-opts
$(CP) $< $@
"$(CP)" $< $@
# The GHC programs need to depend on all the helper programs they might call
ifeq "$(GhcUnregisterised)" "NO"
......@@ -149,15 +149,15 @@ ifeq "$(Windows)" "NO"
install: install_ghc_link
.PNONY: install_ghc_link
install_ghc_link:
$(RM) -f $(DESTDIR)$(bindir)/ghc
$(LN_S) ghc-$(ProjectVersion) $(DESTDIR)$(bindir)/ghc
"$(RM)" $(RM_OPTS) $(DESTDIR)$(bindir)/ghc
"$(LN_S)" ghc-$(ProjectVersion) $(DESTDIR)$(bindir)/ghc
else
# On Windows we install the main binary as $(bindir)/ghc.exe
# To get ghc-<version>.exe we have a little C program in driver/ghc
install: install_ghc_post
.PHONY: install_ghc_post
install_ghc_post: install_bins
$(RM) -f $(DESTDIR)$(bindir)/ghc.exe
$(MV) -f $(DESTDIR)$(bindir)/ghc-stage$(INSTALL_GHC_STAGE).exe $(DESTDIR)$(bindir)/ghc.exe
"$(RM)" $(RM_OPTS) $(DESTDIR)$(bindir)/ghc.exe
"$(MV)" -f $(DESTDIR)$(bindir)/ghc-stage$(INSTALL_GHC_STAGE).exe $(DESTDIR)$(bindir)/ghc.exe
endif
......@@ -73,7 +73,7 @@ $(includes_H_CONFIG) : mk/config.h mk/config.mk includes/ghc.mk
endif
$(includes_H_PLATFORM) : includes/Makefile
$(RM) $@
"$(RM)" $(RM_OPTS) $@
@echo "Creating $@..."
@echo "#ifndef __GHCPLATFORM_H__" >$@
@echo "#define __GHCPLATFORM_H__" >>$@
......
......@@ -105,14 +105,14 @@ endif
ifneq "$(BINDIST)" "YES"
$(libffi_STAMP_CONFIGURE):
$(RM) -rf $(LIBFFI_DIR) libffi/build
"$(RM)" $(RM_OPTS) -r $(LIBFFI_DIR) libffi/build
cd libffi && $(TAR) -zxf tarball/libffi*.tar.gz
mv libffi/libffi-* libffi/build
chmod +x libffi/ln
cd libffi && $(PATCH) -p0 < libffi.dllize-3.0.6.patch
# This patch is just the resulting delta from running automake, autoreconf, libtoolize --force --copy
cd libffi && $(PATCH) -p0 < libffi.autotools-update.patch
cd libffi && "$(PATCH)" -p0 < libffi.autotools-update.patch
cd libffi && \
(set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \
......@@ -122,7 +122,7 @@ $(libffi_STAMP_CONFIGURE):
CC=$(WhatGccIsCalled) \
CFLAGS="$(SRC_CC_OPTS)" \
LDFLAGS="$(SRC_LD_OPTS)" \
$(SHELL) configure \
"$(SHELL)" configure \
--enable-static=yes \
--enable-shared=$(libffi_EnableShared) \
--host=$(PLATFORM) --build=$(PLATFORM)
......@@ -131,18 +131,18 @@ $(libffi_STAMP_CONFIGURE):
# NOTE: this builds libffi_convience.so with the incorrect
# soname, but we don't need that anyway!
cd libffi && \
$(CP) build/libtool build/libtool.orig; \
"$(CP)" build/libtool build/libtool.orig; \
sed -e s/soname_spec=.*/soname_spec="$(libffi_HS_DYN_LIB_NAME)"/ build/libtool.orig > build/libtool
# We don't want libtool's cygwin hacks
cd libffi && \
$(CP) build/libtool build/libtool.orig; \
"$(CP)" build/libtool build/libtool.orig; \
sed -e s/dlname=\'\$$tdlname\'/dlname=\'\$$dlname\'/ build/libtool.orig > build/libtool
touch $@
libffi/ffi.h: $(libffi_STAMP_CONFIGURE)
$(CP) libffi/build/include/ffi.h $@
"$(CP)" libffi/build/include/ffi.h $@
$(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE)
cd libffi && \
......@@ -153,8 +153,8 @@ $(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE)
$(libffi_STATIC_LIB): $(libffi_STAMP_BUILD)
# Rename libffi.a to libHSffi.a
libffi/libHSffi.a libffi/libHSffi_p.a: $(libffi_STATIC_LIB)
$(CP) $(libffi_STATIC_LIB) libffi/libHSffi.a
$(CP) $(libffi_STATIC_LIB) libffi/libHSffi_p.a
"$(CP)" $(libffi_STATIC_LIB) libffi/libHSffi.a
"$(CP)" $(libffi_STATIC_LIB) libffi/libHSffi_p.a
$(eval $(call all-target,libffi,libffi/libHSffi.a libffi/libHSffi_p.a))
......@@ -166,7 +166,7 @@ $(eval $(call all-target,libffi,libffi/libHSffi.a libffi/libHSffi_p.a))
libffi/HSffi.o: libffi/libHSffi.a
cd libffi && \
touch empty.c; \
$(CC) $(SRC_CC_OPTS) -c empty.c -o HSffi.o
"$(CC)" $(SRC_CC_OPTS) -c empty.c -o HSffi.o
$(eval $(call all-target,libffi,libffi/HSffi.o))
......@@ -178,7 +178,7 @@ libffi/libffi.dll.a $(libffi_HS_DYN_LIB): $(libffi_STAMP_BUILD)
# However, the renaming is still required for the import library
# libffi.dll.a.
$(libffi_HS_DYN_LIB).a: libffi/libffi.dll.a
$(CP) libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
"$(CP)" libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB).a))
......@@ -186,7 +186,7 @@ else
$(libffi_DYNAMIC_LIBS): $(libffi_STAMP_BUILD)
# Rename libffi.so to libHSffi...so
$(libffi_HS_DYN_LIB): $(libffi_DYNAMIC_LIBS)
$(CP) $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB)
"$(CP)" $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB)
$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB)))
endif
......
......@@ -46,5 +46,6 @@ INPLACE_BIN = $(INPLACE)/bin
INPLACE_LIB = $(INPLACE)/lib
INPLACE_MINGW = $(INPLACE)/mingw
RM = rm -f
RM = rm
RM_OPTS = -f
......@@ -63,21 +63,21 @@ endif
rts_AUTO_APPLY_CMM = rts/dist/build/AutoApply.cmm
$(rts_AUTO_APPLY_CMM): $(GENAPPLY_INPLACE)
$(RM) $@
$(GENAPPLY_INPLACE) >$@
"$(RM)" $(RM_OPTS) $@
"$(GENAPPLY_INPLACE)" >$@
rts/dist/build/sm/Evac_thr.c : rts/sm/Evac.c
$(MKDIRHIER) $(dir $@)
"$(MKDIRHIER)" $(dir $@)
cp $< $@
rts/dist/build/sm/Scav_thr.c : rts/sm/Scav.c
$(MKDIRHIER) $(dir $@)
"$(MKDIRHIER)" $(dir $@)
cp $< $@
rts_H_FILES = $(wildcard $(GHC_INCLUDE_DIR)/*.h) $(wildcard rts/*.h)
# collect the -l flags that we need to link the rts dyn lib.
rts/libs.depend : $(GHC_PKG_INPLACE)
$(GHC_PKG_INPLACE) field rts extra-libraries \
"$(GHC_PKG_INPLACE)" field rts extra-libraries \
| sed -e 's/^extra-libraries: //' -e 's/\([a-z]*\)/-l\1/g' > $@
#-----------------------------------------------------------------------------
......@@ -95,30 +95,30 @@ ifneq "$$(CLEANING)" "YES"
ifneq "$$(BootingFromHc)" "YES"
$1/$2/build/%.$$($3_way_)o : $1/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
$1/$2/build/%.$$($3_way_)o : $1/$2/build/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
$1/$2/build/%.$$($3_way_)hc : $1/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
$1/$2/build/%.$$($3_way_)hc : $1/$2/build/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
$1/$2/build/%.$$($3_way_)s : $1/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
$1/$2/build/%.$$($3_way_)s : $1/$2/build/%.cmm $$(rts_H_FILES) $$($1_$2_HC)
$$($1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
"$$($1_$2_HC)" $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@
endif
$1/$2/build/%.$$($3_way_)o : $1/%.hc
$$(CC) $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@
"$$(CC)" $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@
$1/$2/build/%.$$($3_way_)o : $1/$2/build/%.hc
$$(CC) $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@
"$$(CC)" $$($1_$2_$3_ALL_CC_OPTS) -Iincludes -x c -c $$< -o $$@
endif
......@@ -132,8 +132,8 @@ ifneq "$$(findstring debug, $1)" ""
rts_dist_$1_HC_OPTS =
rts_dist_$1_CC_OPTS = -g -O0
else
rts_dist_$1_HC_OPTS = $(GhcRtsHcOpts)
rts_dist_$1_CC_OPTS = $(GhcRtsCcOpts)
rts_dist_$1_HC_OPTS = $$(GhcRtsHcOpts)
rts_dist_$1_CC_OPTS = $$(GhcRtsCcOpts)
endif
ifneq "$$(findstring thr, $1)" ""
......@@ -148,19 +148,19 @@ rts_$1_LIB = rts/dist/build/libHSrts$$($1_libsuf)
rts_$1_C_OBJS = $$(patsubst rts/%.c,rts/dist/build/%.$$($1_osuf),$$(rts_C_SRCS)) $$(patsubst %.c,%.$$($1_osuf),$$(rts_$1_EXTRA_C_SRCS))
rts_$1_S_OBJS = $$(patsubst rts/%.S,rts/dist/build/%.$$($1_osuf),$$(rts_S_SRCS))
rts_$1_CMM_OBJS = $$(patsubst rts/%.cmm,rts/dist/build/%.$$($1_osuf),$$(rts_CMM_SRCS)) $$(patsubst %.cmm,%.$$($1_osuf),$(rts_AUTO_APPLY_CMM))
rts_$1_CMM_OBJS = $$(patsubst rts/%.cmm,rts/dist/build/%.$$($1_osuf),$$(rts_CMM_SRCS)) $$(patsubst %.cmm,%.$$($1_osuf),$$(rts_AUTO_APPLY_CMM))
rts_$1_OBJS = $$(rts_$1_C_OBJS) $$(rts_$1_S_OBJS) $$(rts_$1_CMM_OBJS)
ifneq "$$(findstring dyn, $1)" ""
$$(rts_$1_LIB) : $$(rts_$1_OBJS) rts/libs.depend
$$(RM) $$@
$$(rts_dist_HC) -shared -dynamic -dynload deploy \
"$$(RM)" $$(RM_OPTS) $$@
"$$(rts_dist_HC)" -shared -dynamic -dynload deploy \
-no-auto-link-packages `cat rts/libs.depend` $$(rts_$1_OBJS) -o $$@
else
$$(rts_$1_LIB) : $$(rts_$1_OBJS)
$$(RM) $$@
echo $$(rts_$1_OBJS) | $$(XARGS) $$(AR) $$(EXTRA_AR_ARGS) $$@
"$$(RM)" $$(RM_OPTS) $$@
echo $$(rts_$1_OBJS) | "$$(XARGS)" $$(AR) $$(EXTRA_AR_ARGS) $$@
endif
endef
......@@ -399,7 +399,7 @@ rts_LD_OPTS += -Llibffi/build/include
DYNWRAPPER_SRC = rts/dyn-wrapper.c
DYNWRAPPER_PROG = rts/dyn-wrapper$(exeext)
$(DYNWRAPPER_PROG): $(DYNWRAPPER_SRC)
$(HC) -cpp -optc-include -optcdyn-wrapper-patchable-behaviour.h $(INPLACE_EXTRA_FLAGS) $< -o $@
"$(HC)" -cpp -optc-include -optcdyn-wrapper-patchable-behaviour.h $(INPLACE_EXTRA_FLAGS) $< -o $@
# -----------------------------------------------------------------------------
# build the static lib containing the C main symbol
......@@ -432,9 +432,9 @@ install : install_rts
.PHONY: install_rts
install_rts:
$(MKDIRHIER) $(DESTDIR)$(libdir)
$(MKDIRHIER) $(DESTDIR)$(libdir)/include
$(CP) $(ALL_RTS_LIBS) $(DESTDIR)$(libdir)
"$(MKDIRHIER)" $(DESTDIR)$(libdir)
"$(MKDIRHIER)" $(DESTDIR)$(libdir)/include
"$(CP)" $(ALL_RTS_LIBS) $(DESTDIR)$(libdir)
# -----------------------------------------------------------------------------
# cleaning
......
......@@ -22,17 +22,17 @@ endif
ifneq "$$($1_$2_NO_BUILD_DEPS)" "YES"
$$($1_$2_depfile) : $$(MKDIRHIER) $$(MKDEPENDC) $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS) $$($1_$2_HC_MK_DEPEND_DEP) $$($1_$2_C_FILES) $$($1_$2_S_FILES)
$$(MKDIRHIER) $1/$2/build
$$(RM) $$@ $$@.tmp
"$$(MKDIRHIER)" $1/$2/build
"$$(RM)" $$(RM_OPTS) $$@ $$@.tmp
touch $$@.tmp
ifneq "$$($1_$2_C_SRCS)$$($1_$2_S_SRCS)" ""
$$(MKDEPENDC) -f $$($1_$2_depfile).tmp $$($1_MKDEPENDC_OPTS) $$(foreach way,$$($1_WAYS),-s $$(way)) -- $$($1_$2_v_ALL_CC_OPTS) -- $$($1_$2_C_FILES) $$($1_$2_S_FILES) || ( $$(RM) $$@; exit 1 )
sed -e "s|$1/\([^ :]*o[ :]\)|$1/$2/build/\1|g" -e "s|$(TOP)/||" <$$($1_$2_depfile).tmp >$$($1_$2_depfile)
"$$(MKDEPENDC)" -f $$($1_$2_depfile).tmp $$($1_MKDEPENDC_OPTS) $$(foreach way,$$($1_WAYS),-s $$(way)) -- $$($1_$2_v_ALL_CC_OPTS) -- $$($1_$2_C_FILES) $$($1_$2_S_FILES) || ( "$$(RM)" $$(RM_OPTS) $$@; exit 1 )