diff options
Diffstat (limited to 'rules')
-rw-r--r-- | rules/bindist.mk | 2 | ||||
-rw-r--r-- | rules/build-dependencies.mk | 20 | ||||
-rw-r--r-- | rules/build-package-data.mk | 6 | ||||
-rw-r--r-- | rules/build-package-way.mk | 5 | ||||
-rw-r--r-- | rules/build-prog.mk | 109 | ||||
-rw-r--r-- | rules/c-sources.mk | 5 | ||||
-rw-r--r-- | rules/c-suffix-rules.mk | 12 | ||||
-rw-r--r-- | rules/cmm-suffix-rules.mk | 12 | ||||
-rw-r--r-- | rules/distdir-opts.mk | 6 | ||||
-rw-r--r-- | rules/distdir-way-opts.mk | 14 | ||||
-rw-r--r-- | rules/haddock.mk | 4 | ||||
-rw-r--r-- | rules/hs-suffix-way-rules-srcdir.mk | 12 | ||||
-rw-r--r-- | rules/hs-suffix-way-rules.mk | 8 | ||||
-rw-r--r-- | rules/manual-package-config.mk | 11 | ||||
-rw-r--r-- | rules/relative-dynlib-references.mk | 35 | ||||
-rw-r--r-- | rules/shell-wrapper.mk | 2 |
16 files changed, 189 insertions, 74 deletions
diff --git a/rules/bindist.mk b/rules/bindist.mk index cf49c6930f..ee730535e4 100644 --- a/rules/bindist.mk +++ b/rules/bindist.mk @@ -25,7 +25,7 @@ bindist: bindist_$1 bindist_$1: $(foreach i,$2,\ $(call make-command,\ - for f in $i; do echo $(BIN_DIST_NAME)/$$$$f >> $(BIN_DIST_LIST); done \ + for f in $i; do echo $(BIN_DIST_NAME)/$$$$f >> bindist-list; done \ ) \ ) endef diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk index bb047f62f0..2edb9c9511 100644 --- a/rules/build-dependencies.mk +++ b/rules/build-dependencies.mk @@ -31,7 +31,7 @@ ifneq "$$(NO_GENERATED_MAKEFILE_RULES)" "YES" # indirectly) include the generated includes files. $$($1_$2_depfile_haskell) : $$(includes_H_CONFIG) $$(includes_H_PLATFORM) -$$($1_$2_depfile_haskell) : $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS) $$($1_$2_HC_MK_DEPEND_DEP) | $$$$(dir $$$$@)/. +$$($1_$2_depfile_haskell) : $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS) $$$$($1_$2_HC_MK_DEPEND_DEP) | $$$$(dir $$$$@)/. $$(call removeFiles,$$@.tmp) ifneq "$$($1_$2_HS_SRCS)" "" "$$($1_$2_HC_MK_DEPEND)" -M \ @@ -49,6 +49,10 @@ endif # within the build tree. On Windows this causes a problem as they look # like bad rules, due to the two colons, so we filter them out. grep -v ' : [a-zA-Z]:/' $$@.tmp > $$@.tmp2 +# Insert the calls to hi-rule. Basically, we look for the +# Foo.dyn_o Foo.o : Foo.hs +# lines, and create corresponding hi-rule lines +# <dollar>(eval <dollar>(call hi-rule,Foo.dyn_hi Foo.hi : %hi: %o Foo.hs)) sed '/hs$$$$/ p ; \ /hs$$$$/ s/o /hi /g ; \ /hs$$$$/ s/:/ : %hi: %o / ; \ @@ -65,14 +69,14 @@ endif # includes files. $$($1_$2_depfile_c_asm) : $$(includes_H_CONFIG) $$(includes_H_PLATFORM) -$$($1_$2_depfile_c_asm) : $$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES) | $$$$(dir $$$$@)/. +$$($1_$2_depfile_c_asm) : $$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES) $$($1_$2_CMM_FILES) | $$$$(dir $$$$@)/. $$(call removeFiles,$$@.tmp) -ifneq "$$(strip $$($1_$2_C_FILES_DEPS)$$($1_$2_S_FILES))" "" +ifneq "$$(strip $$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES)) $$($1_$2_CMM_FILES))" "" # We ought to actually do this for each way in $$($1_$2_WAYS), but then # it takes a long time to make the C deps for the RTS (30 seconds rather # than 3), so instead we just pass the list of ways in and let addCFileDeps # copy the deps for each way on the assumption that they are the same - $$(foreach f,$$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES), \ + $$(foreach f,$$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES) $$($1_$2_CMM_FILES), \ $$(call addCFileDeps,$1,$2,$$($1_$2_depfile_c_asm),$$f,$$($1_$2_WAYS))) $$(call removeFiles,$$@.bit) endif @@ -135,9 +139,15 @@ endef # 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. + +# We use this not only for .c files, but also for .S and .cmm files. +# As gcc doesn't know what a .cmm file is, it treats it as a linker +# input and ignores it. We therefore tell gcc that all files are C +# files with "-x c" so that it actually processes them all. + define addCFileDeps - $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_$(firstword $($1_$2_WAYS))_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM $4 -MF $3.bit + $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_$(firstword $($1_$2_WAYS))_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM -x c $4 -MF $3.bit $(foreach w,$5,sed -e 's|\\|/|g' -e 's| /$$| \\|' -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 diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk index cf67baf33c..82a2535844 100644 --- a/rules/build-package-data.mk +++ b/rules/build-package-data.mk @@ -86,7 +86,7 @@ endif $1_$2_CONFIGURE_OPTS += --configure-option=--with-cc="$$(CC_STAGE$3)" $1_$2_CONFIGURE_OPTS += --with-ar="$$(AR_STAGE$3)" -$1_$2_CONFIGURE_OPTS += --with-ranlib="$$(RANLIB)" +$1_$2_CONFIGURE_OPTS += --with-ranlib="$$(REAL_RANLIB_CMD)" $1_$2_CONFIGURE_OPTS += $$(if $$(ALEX),--with-alex="$$(ALEX)") $1_$2_CONFIGURE_OPTS += $$(if $$(HAPPY),--with-happy="$$(HAPPY)") @@ -98,7 +98,7 @@ $1/$2/build/autogen/cabal_macros.h : $1/$2/package-data.mk # This rule configures the package, generates the package-data.mk file # for our build system, and registers the package for use in-place in # the build tree. -$1/$2/package-data.mk : $$$$(ghc-cabal_INPLACE) $$($1_$2_GHC_PKG_DEP) $1/$$($1_PACKAGE).cabal $$(wildcard $1/configure) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_CONFIG_DEP) +$1/$2/package-data.mk : $$$$(ghc-cabal_INPLACE) $$($1_$2_GHC_PKG_DEP) $1/$$($1_PACKAGE).cabal $$(wildcard $1/configure) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_CONFIG_DEP) # Checking packages built with the bootstrapping compiler would # generally be a waste of time. Either we will rebuild them with # stage1/stage2, or we don't really care about them. @@ -107,7 +107,7 @@ ifneq "$$($1_NO_CHECK)" "YES" "$$(ghc-cabal_INPLACE)" check $1 endif endif - "$$(ghc-cabal_INPLACE)" configure --with-ghc="$$($1_$2_HC_CONFIG)" --with-ghc-pkg="$$($1_$2_GHC_PKG)" $$($1_CONFIGURE_OPTS) $$($1_$2_CONFIGURE_OPTS) -- $2 $1 + "$$(ghc-cabal_INPLACE)" configure $1 $2 "$$($1_$2_dll0_MODULES)" --with-ghc="$$($1_$2_HC_CONFIG)" --with-ghc-pkg="$$($1_$2_GHC_PKG)" $$($1_CONFIGURE_OPTS) $$($1_$2_CONFIGURE_OPTS) ifeq "$$($1_$2_PROG)" "" ifneq "$$($1_$2_REGISTER_PACKAGE)" "NO" $$(call cmd,$1_$2_GHC_PKG) update --force $$($1_$2_GHC_PKG_OPTS) $1/$2/inplace-pkg-config diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index 9277b551b2..780b8b0f48 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -63,8 +63,8 @@ $$($1_$2_$3_LIB0) : $1/$2/dll-split.stamp endif endif -$1/$2/dll-split.stamp: $$($1_$2_depfile_haskell) inplace/bin/dll-split$$(exeext) - inplace/bin/dll-split $$< "$$($1_$2_dll0_START_MODULE)" "$$($1_$2_dll0_MODULES)" +$1/$2/dll-split.stamp: $$($1_$2_depfile_haskell) $$$$(dll-split_INPLACE) + $$(dll-split_INPLACE) $$< "$$($1_$2_dll0_START_MODULE)" "$$($1_$2_dll0_MODULES)" touch $$@ # Link a dynamic library @@ -91,6 +91,7 @@ $$($1_$2_$3_LIB) : $$($1_$2_$3_ALL_OBJS) $$(ALL_RTS_LIBS) $$($1_$2_$3_DEPS_LIBS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) $$(addprefix -L,$$($1_$2_EXTRA_LIBDIRS)) \ -no-auto-link-packages \ -o $$@ + $(call relative-dynlib-references,$1,$2,$4) endif else # Build the ordinary .a library diff --git a/rules/build-prog.mk b/rules/build-prog.mk index 468fcafc45..8c49946f1c 100644 --- a/rules/build-prog.mk +++ b/rules/build-prog.mk @@ -33,7 +33,7 @@ endif ifneq "$$($1_$2_PROG)" "" $$(error $1_$2_PROG is set) endif -$1_$2_PROG = $$($1_$2_PROGNAME)$$(exeext) +$1_$2_PROG = $$($1_$2_PROGNAME)$$(exeext$3) endif ifeq "$$(findstring $3,0 1 2)" "" @@ -42,6 +42,8 @@ endif $(call clean-target,$1,$2,$1/$2) +$$(eval $$(call build-prog-vars,$1,$2,$3)) + ifneq "$$($1_$2_NOT_NEEDED)" "YES" $$(eval $$(call build-prog-helper,$1,$2,$3)) endif @@ -49,7 +51,7 @@ $(call profEnd, build-prog($1,$2,$3)) endef -define build-prog-helper +define build-prog-vars # $1 = dir # $2 = distdir # $3 = GHC stage to use (0 == bootstrapping compiler) @@ -80,8 +82,6 @@ else $1_$2_WANT_INSTALLED_WRAPPER = NO endif -$(call package-config,$1,$2,$3) - $1_$2_depfile_base = $1/$2/build/.depend ifeq "$$($1_$2_INSTALL_INPLACE)" "NO" @@ -109,6 +109,15 @@ $1_$2_INPLACE = $$($$($1_$2_PROGNAME)_INPLACE) endif endif +endef + +define build-prog-helper +# $1 = dir +# $2 = distdir +# $3 = GHC stage to use (0 == bootstrapping compiler) + +$(call package-config,$1,$2,$3) + ifeq "$$($1_$2_USES_CABAL)" "YES" $(call build-package-data,$1,$2,$3) ifneq "$$(NO_INCLUDE_PKGDATA)" "YES" @@ -123,14 +132,6 @@ endif $(call all-target,$1,all_$1_$2) $(call all-target,$1_$2,$1/$2/build/tmp/$$($1_$2_PROG)) -# INPLACE_BIN might be empty if we're distcleaning -ifeq "$(findstring clean,$(MAKECMDGOALS))" "" -ifeq "$$($1_$2_INSTALL_INPLACE)" "YES" -$$($1_$2_INPLACE) : $1/$2/build/tmp/$$($1_$2_PROG) | $$$$(dir $$$$@)/. - "$$(CP)" -p $$< $$@ -endif -endif - $(call shell-wrapper,$1,$2) ifeq "$$($1_$2_PROGRAM_WAY)" "" @@ -152,7 +153,7 @@ $(call c-sources,$1,$2) # --- IMPLICIT RULES -$(call distdir-opts,$1,$2,,$3) +$(call distdir-opts,$1,$2,$3) $(call distdir-way-opts,$1,$2,$$($1_$2_PROGRAM_WAY),$3) ifeq "$3" "0" @@ -195,9 +196,63 @@ $1/$2/build/tmp/$$($1_$2_PROG) $1/$2/build/tmp/$$($1_$2_PROG).dll : \ $$(error Bad build stage)))),\ $$$$($$(dep)_dist-$(if $(filter 0,$3),boot,install)_PROGRAM_DEP_LIB))) +$1_$2_PROG_NEEDS_C_WRAPPER = NO +$1_$2_PROG_INPLACE = $$($1_$2_PROG) ifeq "$$(Windows_Host) $$($1_$2_PROGRAM_WAY)" "YES dyn" -$1/$2/build/tmp/$$($1_$2_PROG) : $1/$2/build/tmp/$$($1_$2_PROG).c $1/$2/build/tmp/$$($1_$2_PROG).dll | $$$$(dir $$$$@)/. - $$(call cmd,$1_$2_HC) -no-hs-main -optc-g -optc-O0 $$< -o $$@ +ifneq "$$($1_$2_HS_SRCS)" "" +$1_$2_PROG_NEEDS_C_WRAPPER = YES +$1_$2_PROG_INPLACE = inplace-$$($1_$2_PROG) +endif +endif + +ifeq "$$($1_$2_PROG_NEEDS_C_WRAPPER)" "YES" + +$1_$2_RTS_OPTS_FLAG = $$(lastword $$(filter -rtsopts -rtsopts=all -rtsopts=some -rtsopts=none -no-rtsopts,$$($1_$2_$$($1_$2_PROGRAM_WAY)_ALL_HC_OPTS))) +ifeq "$$($1_$2_RTS_OPTS_FLAG)" "-rtsopts" +$1_$2_RTS_OPTS = RtsOptsAll +else ifeq "$$($1_$2_RTS_OPTS_FLAG)" "-rtsopts=all" +$1_$2_RTS_OPTS = RtsOptsAll +else ifeq "$$($1_$2_RTS_OPTS_FLAG)" "-rtsopts=some" +$1_$2_RTS_OPTS = RtsOptsSafeOnly +else ifeq "$$($1_$2_RTS_OPTS_FLAG)" "-rtsopts=none" +$1_$2_RTS_OPTS = RtsOptsNone +else ifeq "$$($1_$2_RTS_OPTS_FLAG)" "-no-rtsopts" +$1_$2_RTS_OPTS = RtsOptsNone +else +$1_$2_RTS_OPTS = RtsOptsSafeOnly +endif + +$1/$2/build/tmp/$$($1_$2_PROG)-inplace-wrapper.c: driver/utils/dynwrapper.c | $$$$(dir $$$$@)/. + $$(call removeFiles,$$@) + echo '#include <Windows.h>' >> $$@ + echo '#include "Rts.h"' >> $$@ + echo 'LPTSTR path_dirs[] = {' >> $$@ + $$(foreach d,$$($1_$2_DEP_LIB_REL_DIRS),$$(call make-command,echo ' TEXT("/../../$$d")$$(comma)' >> $$@)) + echo ' TEXT("/../../$1/$2/build/tmp/"),' >> $$@ + echo ' NULL};' >> $$@ + echo 'LPTSTR progDll = TEXT("../../$1/$2/build/tmp/$$($1_$2_PROG).dll");' >> $$@ + echo 'LPTSTR rtsDll = TEXT("$$($$(WINDOWS_DYN_PROG_RTS))");' >> $$@ + echo 'int rtsOpts = $$($1_$2_RTS_OPTS);' >> $$@ + cat driver/utils/dynwrapper.c >> $$@ + +$1/$2/build/tmp/$$($1_$2_PROG)-wrapper.c: driver/utils/dynwrapper.c | $$$$(dir $$$$@)/. + $$(call removeFiles,$$@) + echo '#include <Windows.h>' >> $$@ + echo '#include "Rts.h"' >> $$@ + echo 'LPTSTR path_dirs[] = {' >> $$@ + $$(foreach p,$$($1_$2_TRANSITIVE_DEPS),$$(call make-command,echo ' TEXT("/../lib/$$p")$$(comma)' >> $$@)) + echo ' TEXT("/../lib/"),' >> $$@ + echo ' NULL};' >> $$@ + echo 'LPTSTR progDll = TEXT("../lib/$$($1_$2_PROG).dll");' >> $$@ + echo 'LPTSTR rtsDll = TEXT("$$($$(WINDOWS_DYN_PROG_RTS))");' >> $$@ + echo 'int rtsOpts = $$($1_$2_RTS_OPTS);' >> $$@ + cat driver/utils/dynwrapper.c >> $$@ + +$1/$2/build/tmp/$$($1_$2_PROG_INPLACE) : $1/$2/build/tmp/$$($1_$2_PROG)-inplace-wrapper.c $1/$2/build/tmp/$$($1_$2_PROG).dll | $$$$(dir $$$$@)/. + $$(call cmd,$1_$2_HC) -no-hs-main -no-auto-link-packages -optc-g -optc-O0 -Iincludes $$< -o $$@ + +$1/$2/build/tmp/$$($1_$2_PROG) : $1/$2/build/tmp/$$($1_$2_PROG)-wrapper.c $1/$2/build/tmp/$$($1_$2_PROG).dll | $$$$(dir $$$$@)/. + $$(call cmd,$1_$2_HC) -no-hs-main -no-auto-link-packages -optc-g -optc-O0 -Iincludes $$< -o $$@ $1/$2/build/tmp/$$($1_$2_PROG).dll : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. $$(call build-dll,$1,$2,$$($1_$2_PROGRAM_WAY),,$$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS),$$@) @@ -205,16 +260,9 @@ else ifeq "$$($1_$2_LINK_WITH_GCC)" "NO" $1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) -o $$@ $$($1_$2_$$($1_$2_PROGRAM_WAY)_ALL_HC_OPTS) $$(LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_GHC_LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) -ifeq "$$(TargetOS_CPP)" "darwin" -ifneq "$3" "0" + ifeq "$$($1_$2_PROGRAM_WAY)" "dyn" -# Use relative paths for all the libraries - install_name_tool $$(foreach d,$$($1_$2_TRANSITIVE_DEP_NAMES), -change $$(TOP)/$$($$($$d_INSTALL_INFO)_dyn_LIB) @loader_path/../$$d-$$($$($$d_INSTALL_INFO)_VERSION)/$$($$($$d_INSTALL_INFO)_dyn_LIB_NAME)) $$@ -# Use relative paths for the RTS. Rather than try to work out which RTS -# way is being linked, we just change it for all ways - install_name_tool $$(foreach w,$$(rts_WAYS), -change $$(TOP)/$$(rts_$$w_LIB) @loader_path/../rts-$$(rts_VERSION)/$$(rts_$$w_LIB_NAME)) $$@ -endif -endif + $(call relative-dynlib-references,$1,$2,$3) endif else $1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. @@ -232,18 +280,29 @@ ifneq "$$($1_$2_HS_SRCS)" "" ifeq "$$(strip $$(ALL_STAGE1_LIBS))" "" $$(error ordering failure in $1 ($2): ALL_STAGE1_LIBS is empty) endif -endif $1/$2/build/tmp/$$($1_$2_PROG) : $$(ALL_STAGE1_LIBS) $$(ALL_RTS_LIBS) $$(OTHER_LIBS) endif endif endif +endif ifneq "$$($1_$2_INSTALL_INPLACE)" "NO" $(call all-target,$1_$2,$$($1_$2_INPLACE)) endif $(call clean-target,$1,$2_inplace,$$($1_$2_INPLACE)) +# INPLACE_BIN might be empty if we're distcleaning +ifeq "$(findstring clean,$(MAKECMDGOALS))" "" +ifeq "$$($1_$2_INSTALL_INPLACE)" "YES" +$$($1_$2_INPLACE) : $1/$2/build/tmp/$$($1_$2_PROG_INPLACE) | $$$$(dir $$$$@)/. + "$$(CP)" -p $$< $$@ +endif +endif + ifeq "$$($1_$2_INSTALL)" "YES" +ifeq "$$($1_$2_PROG_NEEDS_C_WRAPPER)" "YES" +INSTALL_LIBS += $1/$2/build/tmp/$$($1_$2_PROG).dll +endif ifeq "$$($1_$2_WANT_INSTALLED_WRAPPER)" "YES" INSTALL_LIBEXECS += $1/$2/build/tmp/$$($1_$2_PROG) else ifeq "$$($1_$2_TOPDIR)" "YES" diff --git a/rules/c-sources.mk b/rules/c-sources.mk index 2f0eb9821d..309f9a0e88 100644 --- a/rules/c-sources.mk +++ b/rules/c-sources.mk @@ -11,6 +11,7 @@ # ----------------------------------------------------------------------------- define c-sources # args: $1 = dir, $2 = distdir -$1_$2_C_FILES = $$(patsubst %,$1/%,$$($1_$2_C_SRCS)) -$1_$2_S_FILES = $$(patsubst %,$1/%,$$($1_$2_S_SRCS)) +$1_$2_C_FILES = $$(patsubst %,$1/%,$$($1_$2_C_SRCS)) +$1_$2_S_FILES = $$(patsubst %,$1/%,$$($1_$2_S_SRCS)) +$1_$2_CMM_FILES = $$(patsubst %,$1/%,$$($1_$2_CMM_SRCS)) endef diff --git a/rules/c-suffix-rules.mk b/rules/c-suffix-rules.mk index 628546c077..9e71a7cfae 100644 --- a/rules/c-suffix-rules.mk +++ b/rules/c-suffix-rules.mk @@ -21,22 +21,22 @@ ifneq "$$(BINDIST)" "YES" ifeq "$4" "YES" -$1/$2/build/%.$$($3_osuf) : $1/%.c $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_osuf) : $1/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.c $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.$$($3_way_)s $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.$$($3_way_)s $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_osuf) : $1/%.S $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_osuf) : $1/%.S $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_way_)s : $1/$2/build/%.c $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_way_)s : $1/$2/build/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -S $$< -o $$@ -$1/$2/build/%.$$($3_way_)s : $1/%.c $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_way_)s : $1/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_GHC_CC_OPTS) -S $$< -o $$@ else diff --git a/rules/cmm-suffix-rules.mk b/rules/cmm-suffix-rules.mk index 6546f86004..25efb4996a 100644 --- a/rules/cmm-suffix-rules.mk +++ b/rules/cmm-suffix-rules.mk @@ -20,16 +20,16 @@ define cmm-suffix-rules ifneq "$$(CLEANING)" "YES" -$1/$2/build/%.$$($3_way_)o : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_way_)o : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_way_)o : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_way_)o : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -c $$< -o $$@ -$1/$2/build/%.$$($3_way_)hc : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_way_)hc : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -C $$< -o $$@ -$1/$2/build/%.$$($3_way_)hc : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +$1/$2/build/%.$$($3_way_)hc : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(includes_DERIVEDCONSTANTS) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -C $$< -o $$@ # XXX @@ -40,10 +40,10 @@ $1/$2/build/%.$$($3_way_)hc : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FI # so for now they're commented out. They aren't needed, as we can always # go directly to .o files. # -# $1/$2/build/%.$$($3_way_)s : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +# $1/$2/build/%.$$($3_way_)s : $1/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. # $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -S $$< -o $$@ # -# $1/$2/build/%.$$($3_way_)s : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. +# $1/$2/build/%.$$($3_way_)s : $1/$2/build/%.cmm $$(rts_H_FILES) $$(includes_H_FILES) $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) | $$$$(dir $$$$@)/. # $$(call cmd,$1_$2_HC) $$($1_$2_$3_MOST_HC_OPTS) -S $$< -o $$@ endif diff --git a/rules/distdir-opts.mk b/rules/distdir-opts.mk index fd415b64db..b43eb1b2fa 100644 --- a/rules/distdir-opts.mk +++ b/rules/distdir-opts.mk @@ -15,6 +15,10 @@ define distdir-opts # args: $1 = dir, $2 = distdir, $3 = stage +ifeq "$3" "" +$$(error Stage not given for distdir-opts $1 $2) +endif + ifeq "$3" "0" # This is a bit of a hack. # If we are compiling something with the bootstrapping compiler on @@ -85,8 +89,6 @@ $1_$2_ALL_HSC2HS_OPTS = \ $$(SRC_HSC2HS_OPTS) \ $$(SRC_HSC2HS_OPTS_STAGE$3) \ --cflag=-D__GLASGOW_HASKELL__=$$(if $$(filter 0,$3),$$(GhcCanonVersion),$$(ProjectVersionInt)) \ - --cflag=-D$$(HostArch_CPP)_HOST_ARCH=1 \ - --cflag=-D$$(HostOS_CPP)_HOST_OS=1 \ $$($1_$2_HSC2HS_CC_OPTS) \ $$($1_$2_HSC2HS_LD_OPTS) \ --cflag=-I$1/$2/build/autogen \ diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk index 872e52741e..ecd3aa1b71 100644 --- a/rules/distdir-way-opts.mk +++ b/rules/distdir-way-opts.mk @@ -124,11 +124,19 @@ $1_$2_$3_ALL_HC_OPTS = \ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),$$(if $$(findstring v,$3),-dynamic-too)) ifeq "$3" "dyn" +ifeq "$$(HostOS_CPP)" "mingw32" +ifneq "$$($1_$2_dll0_MODULES)" "" +$1_$2_$3_ALL_HC_OPTS += -dll-split $1/$2/dll-split +endif +endif +endif + +ifeq "$3" "dyn" ifneq "$4" "0" -ifeq "$$(TargetOS_CPP)" "linux" +ifeq "$$(TargetElf)" "YES" $1_$2_$3_GHC_LD_OPTS += \ -fno-use-rpaths \ - $$(foreach d,$$($1_$2_TRANSITIVE_DEPS),-optl-Wl$$(comma)-rpath -optl-Wl$$(comma)'$$$$ORIGIN/../$$d') + $$(foreach d,$$($1_$2_TRANSITIVE_DEPS),-optl-Wl$$(comma)-rpath -optl-Wl$$(comma)'$$$$ORIGIN/../$$d') -optl-Wl,-z -optl-Wl,origin else ifeq "$$(TargetOS_CPP)" "darwin" $1_$2_$3_GHC_LD_OPTS += -optl-Wl,-headerpad_max_install_names endif @@ -140,6 +148,7 @@ $1_$2_$3_ALL_CC_OPTS = \ $$($1_$2_DIST_GCC_CC_OPTS) \ $$($1_$2_$3_CC_OPTS) \ $$($$(basename $$<)_CC_OPTS) \ + $$($1_$2_EXTRA_CC_OPTS) \ $$(EXTRA_CC_OPTS) $1_$2_$3_GHC_CC_OPTS = \ @@ -148,6 +157,7 @@ $1_$2_$3_GHC_CC_OPTS = \ $$($1_$2_DIST_CC_OPTS) \ $$($1_$2_$3_CC_OPTS) \ $$($$(basename $$<)_CC_OPTS) \ + $$($1_$2_EXTRA_CC_OPTS) \ $$(EXTRA_CC_OPTS)) \ $$($1_$2_$3_MOST_HC_OPTS) diff --git a/rules/haddock.mk b/rules/haddock.mk index 7efb29aa7d..78f4ea6e18 100644 --- a/rules/haddock.mk +++ b/rules/haddock.mk @@ -43,9 +43,9 @@ ifneq "$$(BINDIST)" "YES" # We need the quadruple dollars for the dependencies, as it isn't # guaranteed that we are processing the packages in dependency order, # so we don't want to expand it yet. -$$($$($1_PACKAGE)-$$($1_$2_VERSION)_HADDOCK_FILE) : $$(INPLACE_BIN)/haddock$$(exeext) $$$$(ghc-cabal_INPLACE) $$($1_$2_HS_SRCS) $$$$($$($1_PACKAGE)-$$($1_$2_VERSION)_HADDOCK_DEPS) | $$$$(dir $$$$@)/. +$$($$($1_PACKAGE)-$$($1_$2_VERSION)_HADDOCK_FILE) : $$$$(haddock_INPLACE) $$$$(ghc-cabal_INPLACE) $$($1_$2_HS_SRCS) $$$$($$($1_PACKAGE)-$$($1_$2_VERSION)_HADDOCK_DEPS) | $$$$(dir $$$$@)/. ifeq "$$(HSCOLOUR_SRCS)" "YES" - "$$(ghc-cabal_INPLACE)" hscolour $2 $1 + "$$(ghc-cabal_INPLACE)" hscolour $1 $2 endif "$$(TOP)/$$(INPLACE_BIN)/haddock" \ --odir="$1/$2/doc/html/$$($1_PACKAGE)" \ diff --git a/rules/hs-suffix-way-rules-srcdir.mk b/rules/hs-suffix-way-rules-srcdir.mk index eff49543f3..661f8957e2 100644 --- a/rules/hs-suffix-way-rules-srcdir.mk +++ b/rules/hs-suffix-way-rules-srcdir.mk @@ -18,18 +18,18 @@ ifneq "$$(BINDIST)" "YES" # Compiling Haskell source -$1/$2/build/%.$$($3_osuf) : $1/$4/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$4/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf),$$(basename $$@))) $$(call ohi-sanity-check,$1,$2,$3,$1/$2/build/$$*) -$1/$2/build/%.$$($3_osuf) : $1/$4/%.lhs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$4/%.lhs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf),$$(basename $$@))) $$(call ohi-sanity-check,$1,$2,$3,$1/$2/build/$$*) -$1/$2/build/%.$$($3_hcsuf) : $1/$4/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_hcsuf) : $1/$4/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -C $$< -o $$@ -$1/$2/build/%.$$($3_hcsuf) : $1/$4/%.lhs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_hcsuf) : $1/$4/%.lhs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -C $$< -o $$@ # XXX: for some reason these get used in preference to the direct @@ -52,10 +52,10 @@ $1/$2/build/%.$$($3_osuf) : $1/$2/build/%.hc includes/ghcautoconf.h includes/ghc # Now the rules for hs-boot files. -$1/$2/build/%.$$($3_way_)o-boot : $1/$4/%.hs-boot $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_way_)o-boot : $1/$4/%.hs-boot $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf)-boot,$$(basename $$@))) -$1/$2/build/%.$$($3_way_)o-boot : $1/$4/%.lhs-boot $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) +$1/$2/build/%.$$($3_way_)o-boot : $1/$4/%.lhs-boot $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf)-boot,$$(basename $$@))) # stubs are automatically generated and compiled by GHC diff --git a/rules/hs-suffix-way-rules.mk b/rules/hs-suffix-way-rules.mk index e53821554a..fd8dbe21a5 100644 --- a/rules/hs-suffix-way-rules.mk +++ b/rules/hs-suffix-way-rules.mk @@ -31,16 +31,16 @@ else ifneq "$$(BINDIST)" "YES" -$1/$2/build/%.$$($3_hcsuf) : $1/$2/build/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_hcsuf) : $1/$2/build/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -C $$< -o $$@ -$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$2/build/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf),$$(basename $$@))) -$1/$2/build/%.$$($3_hcsuf) : $1/$2/build/autogen/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_hcsuf) : $1/$2/build/autogen/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -C $$< -o $$@ -$1/$2/build/%.$$($3_osuf) : $1/$2/build/autogen/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) +$1/$2/build/%.$$($3_osuf) : $1/$2/build/autogen/%.hs $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP) $$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@ $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),-dyno $$(addsuffix .$$(dyn_osuf),$$(basename $$@))) endif diff --git a/rules/manual-package-config.mk b/rules/manual-package-config.mk index da6b3b61d9..08a1076fc4 100644 --- a/rules/manual-package-config.mk +++ b/rules/manual-package-config.mk @@ -15,7 +15,7 @@ define manual-package-config # args: $1 = dir $(call trace, manual-package-config($1)) $(call profStart, manual-package-config($1)) -$1/package.conf.inplace : $1/package.conf.in $$$$(ghc-pkg_INPLACE) +$1/dist/package.conf.inplace : $1/package.conf.in $$$$(ghc-pkg_INPLACE) | $$$$(dir $$$$@)/. $$(CPP) $$(RAWCPP_FLAGS) -P \ -DTOP='"$$(TOP)"' \ $$($1_PACKAGE_CPP_OPTS) \ @@ -27,8 +27,8 @@ $1/package.conf.inplace : $1/package.conf.in $$$$(ghc-pkg_INPLACE) # This is actually a real file, but we need to recreate it on every # "make install", so we declare it as phony -.PHONY: $1/package.conf.install -$1/package.conf.install: +.PHONY: $1/dist/package.conf.install +$1/dist/package.conf.install: | $$$$(dir $$$$@)/. $$(CPP) $$(RAWCPP_FLAGS) -P \ -DINSTALLING \ -DLIB_DIR='"$$(if $$(filter YES,$$(RelocatableBuild)),$$$$topdir,$$(ghclibdir))"' \ @@ -38,10 +38,5 @@ $1/package.conf.install: grep -v '^#pragma GCC' $$@.raw | \ sed -e 's/""//g' -e 's/:[ ]*,/: /g' >$$@ -distclean : clean_$1_package.conf -.PHONY: clean_$1_package.conf -clean_$1_package.conf : - $$(call removeFiles,$1/package.conf.install $1/package.conf.inplace) - $(call profEnd, manual-package-config($1)) endef diff --git a/rules/relative-dynlib-references.mk b/rules/relative-dynlib-references.mk new file mode 100644 index 0000000000..03dabc1453 --- /dev/null +++ b/rules/relative-dynlib-references.mk @@ -0,0 +1,35 @@ +# ----------------------------------------------------------------------------- +# +# (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 +# +# ----------------------------------------------------------------------------- + + +# Make dynlib references use relative paths, so that everything works +# without the build tree. + +define relative-dynlib-references +# $1 = dir +# $2 = distdir +# $3 = GHC stage to use (0 == bootstrapping compiler) + +ifeq "$$(TargetOS_CPP)" "darwin" +ifneq "$3" "0" +# Use relative paths for all the libraries +ifneq "$$($1_$2_TRANSITIVE_DEP_NAMES)" "" + install_name_tool $$(foreach d,$$($1_$2_TRANSITIVE_DEP_NAMES), -change $$(TOP)/$$($$($$d_INSTALL_INFO)_dyn_LIB) @loader_path/../$$d-$$($$($$d_INSTALL_INFO)_VERSION)/$$($$($$d_INSTALL_INFO)_dyn_LIB_NAME)) $$@ +endif +# Use relative paths for the RTS. Rather than try to work out which RTS +# way is being linked, we just change it for all ways + install_name_tool $$(foreach w,$$(rts_WAYS), -change $$(TOP)/$$(rts_$$w_LIB) @loader_path/../rts-$$(rts_VERSION)/$$(rts_$$w_LIB_NAME)) $$@ + install_name_tool -change $$(TOP)/$$(wildcard libffi/build/inst/lib/libffi.*.dylib) @loader_path/../rts-$$(rts_VERSION)/libffi.dylib $$@ +endif +endif + +endef diff --git a/rules/shell-wrapper.mk b/rules/shell-wrapper.mk index 4f6795d159..b23e385035 100644 --- a/rules/shell-wrapper.mk +++ b/rules/shell-wrapper.mk @@ -89,6 +89,7 @@ install_$1_$2_wrapper: endif ifeq "$$($1_$2_WANT_BINDIST_WRAPPER)" "YES" +ifneq "$$(TargetOS_CPP)" "mingw32" $1_$2_BINDIST_WRAPPER = $1/$2/build/tmp/$$($1_$2_PROGNAME)-bindist @@ -106,6 +107,7 @@ endif $$(EXECUTABLE_FILE) $$@ endif +endif $(call profEnd, shell-wrapper($1,$2)) endef |