diff options
author | Ian Lynagh <igloo@earth.li> | 2009-04-26 11:42:15 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2009-04-26 11:42:15 +0000 |
commit | 34cc75e1a62638f2833815746ebce0a9114dc26b (patch) | |
tree | ef21e8fd7af1356beea9cce7d6efb8a65374e24c /rules/distdir-opts.mk | |
parent | 74e1368d4688ee16f6decdf2cd3ebe27506b26ba (diff) | |
download | haskell-34cc75e1a62638f2833815746ebce0a9114dc26b.tar.gz |
GHC new build system megapatch
Diffstat (limited to 'rules/distdir-opts.mk')
-rw-r--r-- | rules/distdir-opts.mk | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/rules/distdir-opts.mk b/rules/distdir-opts.mk new file mode 100644 index 0000000000..5394adfc78 --- /dev/null +++ b/rules/distdir-opts.mk @@ -0,0 +1,60 @@ + +# Set compilation flags that depend on a particular directory/distdir + +define distdir-opts # args: $1 = dir, $2 = distdir +# $3 = GHC stage to use (0 == bootstrapping compiler) + +ifeq "$3" "0" +# This is a bit of a hack. +# If we are compiling something with the bootstrapping compiler on +# cygwin, and it uses an include file from the rts (say), then we +# need to stop mkdependC from generating a dependincy on +# c:/ghc/rts/include/Rts.h +# as that confuses make. So we use -isystem instead of -I, which stops +# these dependencies from being generated. Technically this is wrong if +# we depend on a library that is built inside the build tree, and we +# use headers from that library, but currently I don't think that's the +# case. +$1_$2_DEP_INCLUDE_DIRS_FLAG = -isystem +else +$1_$2_DEP_INCLUDE_DIRS_FLAG = -I +endif + +$1_$2_BUILD_CC_OPTS = \ + $$(SRC_CC_OPTS) \ + $$($1_CC_OPTS) \ + $$(foreach dir,$$($1_$2_INCLUDE_DIRS),-I$1/$$(dir)) \ + $$($1_$2_CC_OPTS) \ + $$($1_$2_CPP_OPTS) \ + $$(foreach dir,$$($1_$2_DEP_INCLUDE_DIRS),$$($1_$2_DEP_INCLUDE_DIRS_FLAG)$$(dir)) \ + $$($1_$2_DEP_CC_OPTS) + +$1_$2_BUILD_LD_OPTS = \ + $$(SRC_LD_OPTS) \ + $$($1_LD_OPTS) \ + $$($1_$2_LD_OPTS) \ + $$(foreach opt,$$($1_$2_DEP_LIB_DIRS),-L$$(opt)) \ + $$(foreach opt,$$($1_$2_DEP_EXTRA_LIBS),-l$$(opt)) \ + $$($1_$2_DEP_LD_OPTS) + +# c.f. Cabal's Distribution.Simple.GHC.ghcOptions +$1_$2_BUILD_HC_OPTS = \ + $$(SRC_HC_OPTS) \ + $$($1_HC_OPTS) \ + $$($1_$2_HC_PKGCONF) \ + $$(if $$($1_$2_PROG),, \ + $$(if $$($1_PACKAGE),-package-name $$($1_PACKAGE)-$$($1_$2_VERSION))) \ + $$(if $$($1_PACKAGE),-hide-all-packages) \ + -i $$(if $$($1_$2_HS_SRC_DIRS),$$(foreach dir,$$($1_$2_HS_SRC_DIRS),-i$1/$$(dir)),-i$1) \ + -i$1/$2/build -i$1/$2/build/autogen \ + -I$1/$2/build -I$1/$2/build/autogen \ + $$(foreach dir,$$($1_$2_INCLUDE_DIRS),-I$1/$$(dir)) \ + $$(foreach inc,$$($1_$2_INCLUDE),-\#include "$$(inc)") \ + $$(foreach opt,$$($1_$2_CPP_OPTS),-optP$$(opt)) \ + $$(if $$($1_PACKAGE),-optP-include -optP$1/$2/build/autogen/cabal_macros.h) \ + $$(foreach pkg,$$($1_$2_DEPS),-package $$(pkg)) \ + $$(if $$(findstring YES,$$($1_$2_SplitObjs)),-split-objs,) \ + $$($1_$2_HC_OPTS) + +endef + |