- -$(RM) -f stamp/configure.library.*.$*
- cd $* && setup/Setup configure \
- $(CONFIGURE_OPTS) \
- --prefix=$(prefix) \
- --with-compiler=../../compiler/ghc-inplace$(dot_bat) \
- --with-hc-pkg=../../utils/ghc-pkg/ghc-pkg-inplace$(dot_bat) \
- --with-hsc2hs=../../utils/hsc2hs/hsc2hs-inplace$(dot_bat) \
- --with-ld=$(LD) \
- --datasubdir=ghc \
- --haddock-args="--use-contents=../index.html --use-index=../doc-index.html" \
- $(addprefix --configure-option=,$(CONFIGURE_ARGS)) \
- --configure-option=--with-cc=$(CC)
- touch $@
-
+ -$(RM) -f stamp/configure.library.*.$* $*/unbuildable
+ ( cd $* && setup/Setup configure \
+ $(CONFIGURE_OPTS) \
+ --prefix='$$topdir' \
+ --datadir='$$prefix/share' \
+ --libsubdir='$(libsubdir)' \
+ --with-compiler=../../compiler/ghc-inplace$(dot_bat) \
+ --with-hc-pkg=../../utils/ghc-pkg/ghc-pkg-inplace$(dot_bat) \
+ --with-hsc2hs=../../utils/hsc2hs/hsc2hs-inplace$(dot_bat) \
+ --with-ld=$(LD) \
+ --datasubdir=ghc \
+ --haddock-args="--use-contents=../index.html \
+ --use-index=../doc-index.html" \
+ $(addprefix --configure-option=,$(CONFIGURE_ARGS)) \
+ --configure-option=--with-cc=$(CC) ) \
+ && touch $@ || touch $*/unbuildable
+# We don't touch $@ if configure failed as we would prefer to try
+# configuring it next time round, rather than assuming it'll still fail.
+# This is particularly important for corelibs, where failure means the
+# build dies!
+
+# Build the library using 'make'
+$(foreach SUBDIR,$(SUBDIRS),make.library.$(SUBDIR)):\
+make.library.%: stamp/configure.library.build$(CONFIGURE_STAMP_EXTRAS).% \
+ %/GNUmakefile \
+ %/setup/Setup ifBuildable/ifBuildable
+# HACK: invoke make via $(SHELL), otherwise on Windows it apparently
+# gets argv[0] set to "make" (with quotes), which causes a problem
+# when make re-invokes itself after creating .depend. Ugh.
+ ifBuildable/ifBuildable $* $(SHELL) -c $(MAKE)
+ ifBuildable/ifBuildable $* setup/Setup register --inplace
+
+# Build the library using 'setup build' (not the default)