diff options
author | Ian Lynagh <igloo@earth.li> | 2009-12-30 18:52:39 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2009-12-30 18:52:39 +0000 |
commit | 5734b876e3ac2faea7d59457956051cc32af191d (patch) | |
tree | 4cfc36d35f932fc47d2a3b3c04f150f1c63f7771 /rules/build-dependencies.mk | |
parent | 0e5b82290dfb34c969106d6bfb6efa16f8ce63d1 (diff) | |
download | haskell-5734b876e3ac2faea7d59457956051cc32af191d.tar.gz |
Fix rules/build-dependencies.mk on OS X
Also more comments on why we have the sed rules that we do.
Diffstat (limited to 'rules/build-dependencies.mk')
-rw-r--r-- | rules/build-dependencies.mk | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk index 8f52bc5058..962c0408ab 100644 --- a/rules/build-dependencies.mk +++ b/rules/build-dependencies.mk @@ -101,15 +101,31 @@ endef # "dist/build" directory, so now we've just made # "dist/build/dist/build", so we need to remove the duplication # again -# "s|$(TOP)/||gi" -# Finally, cpp -MM will give us full paths for some files, but this -# causes problems on Windows where make interprets the colon in -# c:/foo/bar.h as make syntax. So we sed off $(TOP) (case -# insensitively, as sometimes you get C:/... when you are expecting -# c:/... or vice versa) +# "s|$(TOP)/||g$(CASE_INSENSITIVE_SED)" +# Finally, when making deps for packages like ghc stage2, we have +# some include paths for packages registered in the in-tree package +# database. These include paths are full (i.e. not relative) paths, +# which means that the "cpp -MM" output uses full paths in some cases. +# This causes 2 problems: +# * they don't match up with the rules to rebuild the files, where +# appropriate. +# * on Windows, make interprets the colon in c:/foo/bar.h as make +# syntax. +# So we sed off $(TOP). Unfortunately, on Windows, the case for the +# drive letter is sometimes different in what $(TOP) starts with, and +# what the path in the package database starts with. We therefore +# need to do the substitution case-insensitively on Windows. But +# the s///i modifier isn't portable, so we set CASE_INSENSITIVE_SED +# to "i" on Windows and "" on any other platform. define addCFileDeps $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_v_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM $4 -MF $3.bit - $(foreach w,$5,sed -e "1s|\.o|\.$($w_osuf)|" -e "1s|^|$(dir $4)|" -e "1s|$1/|$1/$2/build/|" -e "1s|$2/build/$2/build|$2/build|g" -e "s|$(TOP)/||gi" $3.bit >> $3.tmp &&) true + $(foreach w,$5,sed -e "1s|\.o|\.$($w_osuf)|" -e "1s|^|$(dir $4)|" -e "1s|$1/|$1/$2/build/|" -e "1s|$2/build/$2/build|$2/build|g" -e "s|$(TOP)/||g$(CASE_INSENSITIVE_SED)" $3.bit >> $3.tmp &&) true endef +ifeq "$(Windows)" "YES" +CASE_INSENSITIVE_SED = i +else +CASE_INSENSITIVE_SED = +endif + |