[commit: ghc] master: Refactor the shell-wrapper-creation logic (483c763)

Ian Lynagh <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/483c763341360f810ed2136b95591db1486d0533

>---------------------------------------------------------------

commit 483c763341360f810ed2136b95591db1486d0533
Author: Ian Lynagh <[email protected]>
Date:   Thu Sep 27 19:11:09 2012 +0100

    Refactor the shell-wrapper-creation logic

>---------------------------------------------------------------

 rules/build-prog.mk    |    2 +-
 rules/shell-wrapper.mk |   39 +++++++++++++++++++++++++++++++++------
 2 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/rules/build-prog.mk b/rules/build-prog.mk
index 5e8b4ba..462dcf7 100644
--- a/rules/build-prog.mk
+++ b/rules/build-prog.mk
@@ -184,7 +184,7 @@ endif
 $(call clean-target,$1,$2_inplace,$$($1_$2_INPLACE))
 
 ifeq "$$($1_$2_INSTALL)" "YES"
-ifeq "$$($1_$2_SHELL_WRAPPER) $$(Windows)" "YES NO"
+ifeq "$$($1_$2_WANT_INSTALLED_WRAPPER)" "YES"
 INSTALL_LIBEXECS += $1/$2/build/tmp/$$($1_$2_PROG)
 else ifeq "$$($1_$2_TOPDIR)" "YES"
 INSTALL_TOPDIRS  += $1/$2/build/tmp/$$($1_$2_PROG)
diff --git a/rules/shell-wrapper.mk b/rules/shell-wrapper.mk
index 6601e3c..34b803e 100644
--- a/rules/shell-wrapper.mk
+++ b/rules/shell-wrapper.mk
@@ -16,13 +16,37 @@ $(call profStart, shell-wrapper($1,$2))
 # $1 = dir
 # $2 = distdir
 
-ifeq "$$($1_$2_SHELL_WRAPPER) $$(Windows)" "YES NO"
+ifeq "$$(Windows)" "YES"
+$1_$2_WANT_INPLACE_WRAPPER = NO
+else ifeq "$$($1_$2_INSTALL_INPLACE)" "NO"
+$1_$2_WANT_INPLACE_WRAPPER = NO
+else ifeq "$$(DYNAMIC_BY_DEFAULT)" "YES"
+# We need to set LD_LIBRARY_PATH for all programs, so always need
+# a shell wrapper
+$1_$2_WANT_INPLACE_WRAPPER = YES
+else ifeq "$$($1_$2_SHELL_WRAPPER)" "YES"
+$1_$2_WANT_INPLACE_WRAPPER = YES
+else
+$1_$2_WANT_INPLACE_WRAPPER = NO
+endif
+
+ifeq "$$(Windows)" "YES"
+$1_$2_WANT_INSTALLED_WRAPPER = NO
+else ifeq "$$($1_$2_INSTALL)" "NO"
+$1_$2_WANT_INSTALLED_WRAPPER = NO
+else ifeq "$$($1_$2_SHELL_WRAPPER)" "YES"
+$1_$2_WANT_INSTALLED_WRAPPER = YES
+else
+$1_$2_WANT_INSTALLED_WRAPPER = NO
+endif
+
+
+ifeq "$$($1_$2_WANT_INPLACE_WRAPPER)" "YES"
 
 ifeq "$$($1_$2_SHELL_WRAPPER_NAME)" ""
 $1_$2_SHELL_WRAPPER_NAME = $1/$$($1_$2_PROG).wrapper
 endif
 
-ifneq "$$($1_$2_INSTALL_INPLACE)" "NO"
 all_$1_$2 : $$(INPLACE_BIN)/$$($1_$2_PROG)
 
 $$(INPLACE_BIN)/$$($1_$2_PROG): WRAPPER=$$@
@@ -36,11 +60,16 @@ $$(INPLACE_BIN)/$$($1_$2_PROG): $$($1_$2_INPLACE) $$($1_$2_SHELL_WRAPPER_NAME)
 	echo 'pgmgcc="$$(WhatGccIsCalled)"'            >> $$@
 	$$($1_$2_SHELL_WRAPPER_EXTRA)
 	$$($1_$2_INPLACE_SHELL_WRAPPER_EXTRA)
+ifeq "$$($1_$2_SHELL_WRAPPER)" "YES"
 	cat $$($1_$2_SHELL_WRAPPER_NAME)               >> $$@
+else
+	echo 'exec "$executablename" $$$${1+"$$$$@"}'  >> $$@
+endif
 	$$(EXECUTABLE_FILE)                               $$@
+
 endif
 
-ifeq "$$($1_$2_INSTALL)" "YES"
+ifeq "$$($1_$2_WANT_INSTALLED_WRAPPER)" "YES"
 
 ifeq "$$($1_$2_INSTALL_SHELL_WRAPPER_NAME)" ""
 $1_$2_INSTALL_SHELL_WRAPPER_NAME = $$($1_$2_PROG)
@@ -70,9 +99,7 @@ install_$1_$2_wrapper:
 	cat $$($1_$2_SHELL_WRAPPER_NAME)                         >> "$$(WRAPPER)"
 	$$(EXECUTABLE_FILE)                                         "$$(WRAPPER)"
 
-endif # $1_$2_INSTALL
-
-endif # $1_$2_SHELL_WRAPPER && !Windows
+endif
 
 $(call profEnd, shell-wrapper($1,$2))
 endef
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.