Add a kludge to fix building shared libs
authorIan Lynagh <igloo@earth.li>
Fri, 7 Aug 2009 13:07:31 +0000 (13:07 +0000)
committerIan Lynagh <igloo@earth.li>
Fri, 7 Aug 2009 13:07:31 +0000 (13:07 +0000)
The .dyn_hi files currently depend on the .dyn_hi files of modules that
they import. But they actually want the .hi files of modules from
another package.This we make the .dyn_hi files depend on the .hi files
so we are sure that they exist and are up-to-date.

ghc.mk
rules/build-package-way.mk
rules/mkdep.mk [new file with mode: 0644]

diff --git a/ghc.mk b/ghc.mk
index 0741b56..a60380a 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -140,6 +140,9 @@ endif
 include rules/all-target.mk
 include rules/clean-target.mk
 
+# Helper macro
+include rules/mkdep.mk
+
 # -----------------------------------------------------------------------------
 # The inplace tree
 
index f0300be..0be7dc9 100644 (file)
@@ -46,6 +46,16 @@ $$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_dyn_C_OBJS) $$($1_$2_dyn_S_OBJS
          -shared -dynamic -dynload deploy \
          -no-auto-link-packages $$(addprefix -package,$$($1_$2_DEPS)) \
          -o $$@
+
+# This is a kludge. The .dyn_hi files currently depend on the .dyn_hi
+# files of modules that they import. But they actually want the .hi
+# files of modules from another package.This we make the .dyn_hi files
+# depend on the .hi files so we are sure that they exist and are
+# up-to-date.
+$$(foreach m,$$(addprefix $1/$2/build/,$$($1_$2_SLASH_MODS)),\
+$$(eval $$(call mkdep,$$m.$$($3_hisuf),$$m.hi)) \
+)
+
 else
 # Build the ordinary .a library
 ifeq "$$($1_$2_SplitObjs)" "YES"
diff --git a/rules/mkdep.mk b/rules/mkdep.mk
new file mode 100644 (file)
index 0000000..fea132f
--- /dev/null
@@ -0,0 +1,16 @@
+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+#      http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture
+#      http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying
+#
+# -----------------------------------------------------------------------------
+
+
+define mkdep # args: $1 = target, $2 = deps
+$1 : $2
+endef