From 27c2097194a75409349d948a1619767c31743d08 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Mon, 15 Oct 2012 17:25:18 +0200
Subject: [PATCH] If 32b check at runtime the arch

---
 project/Build.scala | 50 +++++++++++++++++++++++++++++++--------------
 1 file changed, 35 insertions(+), 15 deletions(-)

diff --git a/project/Build.scala b/project/Build.scala
index 796a12b2d..1a56a0f59 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -6,21 +6,18 @@ object Leon extends Build {
   private val scriptName = "leon"
   def scriptFile = file(".") / scriptName
   def is64 = System.getProperty("sun.arch.data.model") == "64"
-  def ldLibraryDir = file(".") / (if (is64) "lib64-bin" else "lib-bin")
+  def ldLibraryDir32 = file(".") / "lib-bin"
+  def ldLibraryDir64 = file(".") / "lib64-bin"
 
   val scriptTask = TaskKey[Unit]("script", "Generate the " + scriptName + " Bash script") <<= (streams, dependencyClasspath in Compile, classDirectory in Compile) map { (s, deps, out) =>
     if(!scriptFile.exists) {
       s.log.info("Generating script ("+(if(is64) "64b" else "32b")+")...")
       try {
-        val depsPaths = deps.map(_.data.absolutePath).filter(p =>
-          if (p.endsWith("unmanaged/z3.jar")) {
-            !is64
-          } else if (p.endsWith("unmanaged/z3-64.jar")) {
-            is64
-          } else {
-            true
-          }
-        )
+        val depsPaths = deps.map(_.data.absolutePath)
+
+        val depsPaths64 = depsPaths.filterNot(_.endsWith("unmanaged/z3.jar"))
+        val depsPaths32 = depsPaths.filterNot(_.endsWith("unmanaged/z3-64.jar"))
+
         // One ugly hack... Likely to fail for Windows, but it's a Bash script anyway.
         val scalaHomeDir = depsPaths.find(_.endsWith("lib/scala-library.jar")) match {
           case None => throw new Exception("Couldn't guess SCALA_HOME.")
@@ -31,14 +28,37 @@ object Leon extends Build {
         val nl = System.getProperty("line.separator")
         val fw = new java.io.FileWriter(scriptFile)
         fw.write("#!/bin/bash --posix" + nl)
-        fw.write("SCALACLASSPATH=\"")
-        fw.write((out.absolutePath +: depsPaths).mkString(":"))
-        fw.write("\"" + nl + nl)
+        if (is64) {
+          fw.write("SCALACLASSPATH=\"")
+          fw.write((out.absolutePath +: depsPaths64).mkString(":"))
+          fw.write("\"" + nl + nl)
+
+          // Setting the dynamic lib path
+          fw.write("LIBRARY_PATH=\"" + ldLibraryDir64.absolutePath + "\"" + nl)
+        } else {
+          fw.write("if [ `uname -m` == \"x86_64\" ]; then "+nl)
+
+            fw.write("SCALACLASSPATH=\"")
+            fw.write((out.absolutePath +: depsPaths64).mkString(":"))
+            fw.write("\"" + nl + nl)
+
+            // Setting the dynamic lib path
+            fw.write("LIBRARY_PATH=\"" + ldLibraryDir64.absolutePath + "\"" + nl)
 
-        // Setting the dynamic lib path
-        fw.write("LD_LIBRARY_PATH=\"" + ldLibraryDir.absolutePath + "\" \\" + nl)
+          fw.write("else" + nl)
+
+            fw.write("SCALACLASSPATH=\"")
+            fw.write((out.absolutePath +: depsPaths32).mkString(":"))
+            fw.write("\"" + nl + nl)
+
+            // Setting the dynamic lib path
+            fw.write("LIBRARY_PATH=\"" + ldLibraryDir32.absolutePath + "\"" + nl)
+          fw.write("fi" + nl)
+
+        }
 
         // the Java command that uses sbt's local Scala to run the whole contraption.
+        fw.write("LD_LIBRARY_PATH=\"$LIBRARY_PATH\" \\"+nl)
         fw.write("java -Xmx2G -Xms512M -classpath ${SCALACLASSPATH} -Dscala.home=\"")
         fw.write(scalaHomeDir)
         fw.write("\" -Dscala.usejavacp=true ")
-- 
GitLab