+# -----------------------------------------------------------------------------
+#
+# (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 shell-wrapper
# $1 = dir
# $2 = distdir
ifeq "$$($1_$2_SHELL_WRAPPER)" "YES"
-ifeq "$(Windows)" "YES"
+ifeq "$$(Windows)" "YES"
ifeq "$$($1_$2_INSTALL_SHELL_WRAPPER)" "YES"
# Just install the binary on Windows
ifneq "$$($1_$2_INSTALL_INPLACE)" "NO"
all_$1_$2 : $$(INPLACE_BIN)/$$($1_$2_PROG)
-$$(INPLACE_BIN)/$$($1_$2_PROG): $$($1_$2_INPLACE)
- $$(RM) -f $$@
+$$(INPLACE_BIN)/$$($1_$2_PROG): WRAPPER=$$@
+$$(INPLACE_BIN)/$$($1_$2_PROG): $$($1_$2_INPLACE) $$($1_$2_SHELL_WRAPPER_NAME)
+ "$$(RM)" $$(RM_OPTS) $$@
echo '#!$$(SHELL)' >> $$@
- echo 'executablename=$$(TOP)/$$<' >> $$@
- echo 'datadir=$$(TOP)/$$(INPLACE_LIB)' >> $$@
- echo 'bindir=$$(TOP)/$$(INPLACE_BIN)' >> $$@
+ echo 'executablename="$$(TOP)/$$<"' >> $$@
+ echo 'datadir="$$(TOP)/$$(INPLACE_LIB)"' >> $$@
+ echo 'bindir="$$(TOP)/$$(INPLACE_BIN)"' >> $$@
+ echo 'topdir="$$(TOP)/$$(INPLACE_TOPDIR)"' >> $$@
+ echo 'pgmgcc="$$(WhatGccIsCalled)"' >> $$@
+ $$($1_$2_SHELL_WRAPPER_EXTRA)
+ $$($1_$2_INPLACE_SHELL_WRAPPER_EXTRA)
cat $$($1_$2_SHELL_WRAPPER_NAME) >> $$@
$$(EXECUTABLE_FILE) $$@
endif
.PHONY: install_$1_$2_wrapper
install_$1_$2_wrapper: WRAPPER=$$(DESTDIR)$$(bindir)/$$($1_$2_INSTALL_SHELL_WRAPPER_NAME)
install_$1_$2_wrapper:
- $$(MKDIRHIER) $$(DESTDIR)$$(bindir)
- $$(RM) -f $$(WRAPPER)
- echo '#!$$(SHELL)' >> $$(WRAPPER)
- echo 'executablename=$$(libexecdir)/$$($1_$2_PROG)' >> $$(WRAPPER)
- echo 'datadir=$$(datadir)' >> $$(WRAPPER)
- echo 'bindir=$$(bindir)' >> $$(WRAPPER)
- cat $$($1_$2_SHELL_WRAPPER_NAME) >> $$(WRAPPER)
- $$(EXECUTABLE_FILE) $$(WRAPPER)
+ $$(INSTALL_DIR) "$$(DESTDIR)$$(bindir)"
+ "$$(RM)" $$(RM_OPTS) "$$(WRAPPER)"
+ $$(CREATE_SCRIPT) "$$(WRAPPER)"
+ echo '#!$$(SHELL)' >> "$$(WRAPPER)"
+ echo 'exedir="$$(ghclibexecdir)"' >> "$$(WRAPPER)"
+ echo 'exeprog="$$($1_$2_PROG)"' >> "$$(WRAPPER)"
+ echo 'executablename="$$$$exedir/$$$$exeprog"' >> "$$(WRAPPER)"
+ echo 'datadir="$$(datadir)"' >> "$$(WRAPPER)"
+ echo 'bindir="$$(bindir)"' >> "$$(WRAPPER)"
+ echo 'topdir="$$(topdir)"' >> "$$(WRAPPER)"
+ echo 'pgmgcc="$$(WhatGccIsCalled)"' >> "$$(WRAPPER)"
+ $$($1_$2_SHELL_WRAPPER_EXTRA)
+ $$($1_$2_INSTALL_SHELL_WRAPPER_EXTRA)
+ cat $$($1_$2_SHELL_WRAPPER_NAME) >> "$$(WRAPPER)"
+ $$(EXECUTABLE_FILE) "$$(WRAPPER)"
endif # $1_$2_INSTALL_SHELL_WRAPPER