Commit 11e3da87 authored by Simon Marlow's avatar Simon Marlow

main repeated 'make maintainer-clean' not fail

parent cd12c32d
...@@ -43,13 +43,19 @@ endif ...@@ -43,13 +43,19 @@ endif
include mk/custom-settings.mk include mk/custom-settings.mk
# If the package ghc.mk files are missing, generate them. This means that
# repeating 'make maintainer-clean' works.
PACKAGE_MK=libraries/base/ghc.mk
$(PACKAGE_MK):
sh boot-pkgs
# No need to update makefiles for these targets: # No need to update makefiles for these targets:
REALGOALS=$(filter-out framework-pkg clean clean_% distclean maintainer-clean show,$(MAKECMDGOALS)) REALGOALS=$(filter-out framework-pkg clean clean_% distclean maintainer-clean show,$(MAKECMDGOALS))
# NB. not the same as saying '%: ...', which doesn't do the right thing: # NB. not the same as saying '%: ...', which doesn't do the right thing:
# it does nothing if we specify a target that already exists. # it does nothing if we specify a target that already exists.
.PHONY: $(REALGOALS) .PHONY: $(REALGOALS)
$(REALGOALS) all: $(REALGOALS) all: $(PACKAGE_MK)
@echo "===--- updating makefiles phase 0" @echo "===--- updating makefiles phase 0"
$(MAKE) -r --no-print-directory -f ghc.mk phase=0 just-makefiles $(MAKE) -r --no-print-directory -f ghc.mk phase=0 just-makefiles
@echo "===--- updating makefiles phase 1" @echo "===--- updating makefiles phase 1"
...@@ -61,19 +67,19 @@ $(REALGOALS) all: ...@@ -61,19 +67,19 @@ $(REALGOALS) all:
@echo "===--- finished updating makefiles" @echo "===--- finished updating makefiles"
$(MAKE) -r --no-print-directory -f ghc.mk $@ $(MAKE) -r --no-print-directory -f ghc.mk $@
binary-dist: binary-dist: $(PACKAGE_MK)
rm -f bindist-list rm -f bindist-list
$(MAKE) -r --no-print-directory -f ghc.mk bindist BINDIST=YES $(MAKE) -r --no-print-directory -f ghc.mk bindist BINDIST=YES
$(MAKE) -r --no-print-directory -f ghc.mk binary-dist $(MAKE) -r --no-print-directory -f ghc.mk binary-dist
clean distclean maintainer-clean: clean distclean maintainer-clean: $(PACKAGE_MK)
$(MAKE) -r --no-print-directory -f ghc.mk $@ $(MAKE) -r --no-print-directory -f ghc.mk $@
test ! -d testsuite || $(MAKE) -C testsuite $@ test ! -d testsuite || $(MAKE) -C testsuite $@
$(filter clean_%, $(MAKECMDGOALS)) : clean_% : $(filter clean_%, $(MAKECMDGOALS)) : clean_% : $(PACKAGE_MK)
$(MAKE) -r --no-print-directory -f ghc.mk $@ $(MAKE) -r --no-print-directory -f ghc.mk $@
show: show: $(PACKAGE_MK)
$(MAKE) -r --no-print-directory -f ghc.mk $@ $(MAKE) -r --no-print-directory -f ghc.mk $@
ifeq "$(darwin_TARGET_OS)" "1" ifeq "$(darwin_TARGET_OS)" "1"
...@@ -86,4 +92,3 @@ endif ...@@ -86,4 +92,3 @@ endif
.NOTPARALLEL: .NOTPARALLEL:
endif endif
...@@ -30,40 +30,3 @@ do ...@@ -30,40 +30,3 @@ do
chmod +x $f chmod +x $f
fi fi
done done
libraries=
for f in libraries/*; do
pkgs=$f/ghc-packages
if test -f $pkgs; then
for p in `cat $pkgs`; do
libraries="$libraries $f/$p"
done
else
libraries="$libraries $f"
fi
done
for f in $libraries; do
dir=`basename $f`
cabals=`echo $f/*.cabal`
if test -f $cabals; then
echo "Creating $f/ghc.mk"
rm -f $f/ghc.mk
pkg=`echo "$cabals" | sed -e 's#.*/##' -e 's#\.cabal$##'`
if test -f $f/ghc-stage; then
stage=`cat $f/ghc-stage`
else
stage=1
fi
top=`echo $f | sed 's#[^/]\+#..#g'`
echo "${f}_PACKAGE = ${pkg}" >> $f/ghc.mk
echo "${f}_dist-install_GROUP = libraries" >> $f/ghc.mk
echo "\$(eval \$(call build-package,${f},dist-install,${stage}))" >> $f/ghc.mk
rm -f $f/GNUmakefile
echo "Creating $f/GNUmakefile"
echo "dir = ${f}" >> $f/GNUmakefile
echo "TOP = ${top}" >> $f/GNUmakefile
echo "include \$(TOP)/mk/sub-makefile.mk" >> $f/GNUmakefile
fi
done
#! /bin/sh
set -e
libraries=
for f in libraries/*; do
pkgs=$f/ghc-packages
if test -f $pkgs; then
for p in `cat $pkgs`; do
libraries="$libraries $f/$p"
done
else
libraries="$libraries $f"
fi
done
for f in $libraries; do
dir=`basename $f`
cabals=`echo $f/*.cabal`
if test -f $cabals; then
echo "Creating $f/ghc.mk"
rm -f $f/ghc.mk
pkg=`echo "$cabals" | sed -e 's#.*/##' -e 's#\.cabal$##'`
if test -f $f/ghc-stage; then
stage=`cat $f/ghc-stage`
else
stage=1
fi
top=`echo $f | sed 's#[^/]\+#..#g'`
echo "${f}_PACKAGE = ${pkg}" >> $f/ghc.mk
echo "${f}_dist-install_GROUP = libraries" >> $f/ghc.mk
echo "\$(eval \$(call build-package,${f},dist-install,${stage}))" >> $f/ghc.mk
rm -f $f/GNUmakefile
echo "Creating $f/GNUmakefile"
echo "dir = ${f}" >> $f/GNUmakefile
echo "TOP = ${top}" >> $f/GNUmakefile
echo "include \$(TOP)/mk/sub-makefile.mk" >> $f/GNUmakefile
fi
done
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment