Browse Source

Added support for multiple configurations of the LLVM binary dependency packages.

pull/605/head
Joao Matos 10 years ago
parent
commit
cc87e09cff
  1. 86
      build/LLVM.lua
  2. 9
      build/scripts/LLVM.lua

86
build/LLVM.lua

@ -2,18 +2,26 @@ @@ -2,18 +2,26 @@
LLVMRootDir = depsdir .. "/llvm/"
local LLVMDirPerConfiguration = false
local LLVMRootDirDebug = ""
local LLVMRootDirRelease = ""
require "scripts/LLVM"
function SearchLLVM()
local pkg_path = basedir .. "/scripts/" .. get_llvm_package_name()
if os.isdir(pkg_path) then
LLVMRootDir = pkg_path
LLVMRootDirDebug = basedir .. "/scripts/" .. get_llvm_package_name(nil, "Debug")
LLVMRootDirRelease = basedir .. "/scripts/" .. get_llvm_package_name()
if os.isdir(LLVMRootDirDebug) or os.isdir(LLVMRootDirRelease) then
LLVMDirPerConfiguration = true
print("Using debug LLVM build: " .. LLVMRootDirDebug)
print("Using release LLVM build: " .. LLVMRootDirRelease)
elseif os.isdir(LLVMRootDir) then
print("Using LLVM build: " .. LLVMRootDir)
else
error("Error finding an LLVM build")
end
print("Using LLVM build: " .. LLVMRootDir)
end
function get_llvm_build_dir()
@ -23,15 +31,37 @@ end @@ -23,15 +31,37 @@ end
function SetupLLVMIncludes()
local c = configuration()
local LLVMBuildDir = get_llvm_build_dir()
includedirs
{
path.join(LLVMRootDir, "include"),
path.join(LLVMRootDir, "tools/clang/include"),
path.join(LLVMRootDir, "tools/clang/lib"),
path.join(LLVMBuildDir, "include"),
path.join(LLVMBuildDir, "tools/clang/include"),
}
if LLVMDirPerConfiguration then
configuration { "Debug" }
includedirs
{
path.join(LLVMRootDirDebug, "include"),
path.join(LLVMRootDirDebug, "tools/clang/include"),
path.join(LLVMRootDirDebug, "tools/clang/lib"),
path.join(LLVMRootDirDebug, "build/include"),
path.join(LLVMRootDirDebug, "build/tools/clang/include"),
}
configuration { "Release" }
includedirs
{
path.join(LLVMRootDirRelease, "include"),
path.join(LLVMRootDirRelease, "tools/clang/include"),
path.join(LLVMRootDirRelease, "tools/clang/lib"),
path.join(LLVMRootDirRelease, "build/include"),
path.join(LLVMRootDirRelease, "build/tools/clang/include"),
}
else
local LLVMBuildDir = get_llvm_build_dir()
includedirs
{
path.join(LLVMRootDir, "include"),
path.join(LLVMRootDir, "tools/clang/include"),
path.join(LLVMRootDir, "tools/clang/lib"),
path.join(LLVMBuildDir, "include"),
path.join(LLVMBuildDir, "tools/clang/include"),
}
end
configuration(c)
end
@ -39,21 +69,31 @@ end @@ -39,21 +69,31 @@ end
function SetupLLVMLibs()
local c = configuration()
local LLVMBuildDir = get_llvm_build_dir()
libdirs { path.join(LLVMBuildDir, "lib") }
configuration { "Debug", "vs*" }
libdirs { path.join(LLVMBuildDir, "Debug/lib") }
configuration { "Release", "vs*" }
libdirs { path.join(LLVMBuildDir, "RelWithDebInfo/lib") }
configuration "not vs*"
defines { "__STDC_CONSTANT_MACROS", "__STDC_LIMIT_MACROS" }
configuration "macosx"
links { "c++", "curses", "pthread", "z" }
configuration {}
if LLVMDirPerConfiguration then
configuration { "Debug" }
libdirs { path.join(LLVMRootDirDebug, "build/lib") }
configuration { "Release" }
libdirs { path.join(LLVMRootDirRelease, "build/lib") }
else
local LLVMBuildDir = get_llvm_build_dir()
libdirs { path.join(LLVMBuildDir, "lib") }
configuration { "Debug", "vs*" }
libdirs { path.join(LLVMBuildDir, "Debug/lib") }
configuration { "Release", "vs*" }
libdirs { path.join(LLVMBuildDir, "RelWithDebInfo/lib") }
end
configuration "*"
links
{

9
build/scripts/LLVM.lua

@ -10,8 +10,6 @@ if is_vagrant() then @@ -10,8 +10,6 @@ if is_vagrant() then
llvm = os.getenv("HOME") .. "/llvm"
end
local llvm_build = llvm .. "/" .. os.get()
function get_llvm_rev()
return cat(basedir .. "/LLVM-commit")
end
@ -62,7 +60,10 @@ function get_llvm_package_name(rev, conf) @@ -62,7 +60,10 @@ function get_llvm_package_name(rev, conf)
return table.concat({"llvm", rev, os.get(), conf}, "-")
end
function get_llvm_configuration_name()
function get_llvm_configuration_name(debug)
if debug == true then
return "Debug"
end
return os.is("windows") and "RelWithDebInfo" or "Release"
end
@ -273,6 +274,7 @@ if _ACTION == "clone_llvm" then @@ -273,6 +274,7 @@ if _ACTION == "clone_llvm" then
end
if _ACTION == "build_llvm" then
local llvm_build = path.join(llvm, get_llvm_package_name())
clean_llvm(llvm_build)
build_llvm(llvm_build)
os.exit()
@ -280,6 +282,7 @@ end @@ -280,6 +282,7 @@ end
if _ACTION == "package_llvm" then
local conf = get_llvm_configuration_name()
local llvm_build = path.join(llvm, get_llvm_package_name())
local pkg = package_llvm(conf, llvm, llvm_build)
archive_llvm(pkg)
os.exit()

Loading…
Cancel
Save