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