aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/gcc.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <ricardo.wurmus@mdc-berlin.de>2015-05-08 12:36:58 +0200
committerRicardo Wurmus <ricardo.wurmus@mdc-berlin.de>2015-05-08 13:14:36 +0200
commitad12c43e972482dc9d38c7214fee751bad290ea7 (patch)
tree9b9f2f0625742fd6219c0e1814faaf0cba92daea /gnu/packages/gcc.scm
parentaa2e989e1e6d480e964b08a3395c1d7aa704e392 (diff)
downloadgnu-guix-ad12c43e972482dc9d38c7214fee751bad290ea7.tar
gnu-guix-ad12c43e972482dc9d38c7214fee751bad290ea7.tar.gz
gnu: gcj: Add $libdir to RUNPATH.
* gnu/packages/gcc.scm (gcj)[arguments]: Add build phase to add library output directory to RUNPATH.
Diffstat (limited to 'gnu/packages/gcc.scm')
-rw-r--r--gnu/packages/gcc.scm76
1 files changed, 42 insertions, 34 deletions
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 4512e54e8b..b652521bb8 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -415,38 +415,47 @@ Go. It also includes runtime support libraries for these languages.")
"--enable-languages=java"
,@(remove (cut string-match "--enable-languages.*" <>)
,flags))))
- ((#:phases phases)
- `(alist-cons-after
- 'install 'install-javac-and-javap-wrappers
- (lambda _
- (let* ((javac (assoc-ref %build-inputs "javac.in"))
- (ecj (assoc-ref %build-inputs "ecj-bootstrap"))
- (gcj (assoc-ref %outputs "out"))
- (gcjbin (string-append gcj "/bin/"))
- (jvm (string-append gcj "/lib/jvm/"))
- (target (string-append jvm "/bin/javac")))
-
- (symlink (string-append gcjbin "jcf-dump")
- (string-append jvm "/bin/javap"))
-
- (copy-file ecj (string-append gcj "/share/java/ecj.jar"))
-
- ;; Create javac wrapper from the template javac.in by
- ;; replacing the @VARIABLES@ with paths.
- (copy-file javac target)
- (patch-shebang target)
- (substitute* target
- (("@JAVA@")
- (string-append jvm "/bin/java"))
- (("@ECJ_JAR@")
- (string-append gcj "/share/java/ecj.jar"))
- (("@RT_JAR@")
- (string-append jvm "/jre/lib/rt.jar"))
- (("@TOOLS_JAR@")
- (string-append jvm "/lib/tools.jar")))
- (chmod target #o755)
- #t))
- (alist-cons-after
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after
+ 'unpack 'add-lib-output-to-rpath
+ (lambda _
+ (substitute* "libjava/Makefile.in"
+ (("libgcj_bc_dummy_LINK = .* -shared" line)
+ (string-append line " -Wl,-rpath=$(libdir)"))
+ (("libgcj(_bc)?_la_LDFLAGS =" ldflags _)
+ (string-append ldflags " -Wl,-rpath=$(libdir)")))))
+ (add-after
+ 'install 'install-javac-and-javap-wrappers
+ (lambda _
+ (let* ((javac (assoc-ref %build-inputs "javac.in"))
+ (ecj (assoc-ref %build-inputs "ecj-bootstrap"))
+ (gcj (assoc-ref %outputs "out"))
+ (gcjbin (string-append gcj "/bin/"))
+ (jvm (string-append gcj "/lib/jvm/"))
+ (target (string-append jvm "/bin/javac")))
+
+ (symlink (string-append gcjbin "jcf-dump")
+ (string-append jvm "/bin/javap"))
+
+ (copy-file ecj (string-append gcj "/share/java/ecj.jar"))
+
+ ;; Create javac wrapper from the template javac.in by
+ ;; replacing the @VARIABLES@ with paths.
+ (copy-file javac target)
+ (patch-shebang target)
+ (substitute* target
+ (("@JAVA@")
+ (string-append jvm "/bin/java"))
+ (("@ECJ_JAR@")
+ (string-append gcj "/share/java/ecj.jar"))
+ (("@RT_JAR@")
+ (string-append jvm "/jre/lib/rt.jar"))
+ (("@TOOLS_JAR@")
+ (string-append jvm "/lib/tools.jar")))
+ (chmod target #o755)
+ #t)))
+ (add-after
'install 'remove-broken-or-conflicting-files
(lambda _
(let ((out (assoc-ref %outputs "out")))
@@ -456,8 +465,7 @@ Go. It also includes runtime support libraries for these languages.")
"libjawt.so")
(find-files (string-append out "/bin")
".*(c\\+\\+|cpp|g\\+\\+|gcc.*)"))))
- #t)
- ,phases)))))))
+ #t))))))))
(define ecj-bootstrap-4.8
(origin