From 74df25b15c34c4554660b76d1ae09b721d0aa59b Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 7 Aug 2009 13:07:31 +0000 Subject: [PATCH] Add a kludge to fix building shared libs 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 | 3 +++ rules/build-package-way.mk | 10 ++++++++++ rules/mkdep.mk | 16 ++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 rules/mkdep.mk diff --git a/ghc.mk b/ghc.mk index 0741b56..a60380a 100644 --- 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 diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index f0300be..0be7dc9 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -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 index 0000000..fea132f --- /dev/null +++ b/rules/mkdep.mk @@ -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 -- 1.7.10.4