Add libntl (#3372)
* Add libntl * fmt * perl deps and shell = true * fix...? * remove mingw due to gmp not provided * fix compiler name * remove extra flags * debug... * debug... * forward more options * add default value * use table.wrap * omg... * filter to native only * remove debug statements * update * fixpull/3379/head
parent
658669304c
commit
f5461f1153
1 changed files with 61 additions and 0 deletions
@ -0,0 +1,61 @@ |
||||
package("libntl") |
||||
|
||||
set_homepage("https://libntl.org/") |
||||
set_description("NTL: A Library for doing Number Theory") |
||||
set_license("LGPL-2.1") |
||||
|
||||
add_urls("https://github.com/libntl/ntl/archive/refs/tags/$(version).tar.gz", |
||||
"https://github.com/libntl/ntl.git") |
||||
add_versions("v11.5.1", "ef578fa8b6c0c64edd1183c4c303b534468b58dd3eb8df8c9a5633f984888de5") |
||||
|
||||
add_deps("gmp") |
||||
|
||||
on_install("macosx|native", "linux|native", function (package) |
||||
local gmp = package:dep("gmp") |
||||
local gmp_prefix = ""; |
||||
if gmp and not gmp:is_system() then |
||||
gmp_prefix = gmp:installdir() |
||||
end |
||||
|
||||
local compiler = package:build_getenv("cxx") |
||||
if package:is_plat("macosx") then |
||||
local cc = package:build_getenv("ld") |
||||
if cc and cc:find("clang", 1, true) and cc:find("Xcode", 1, true) then |
||||
compiler = "xcrun --sdk macosx clang++" |
||||
end |
||||
end |
||||
compiler = compiler:gsub("gcc$", "g++") |
||||
compiler = compiler:gsub("clang$", "clang++") |
||||
|
||||
os.cd("src") |
||||
os.vrunv("./configure", { |
||||
"CXX=" .. compiler, |
||||
"CXXFLAGS=" .. table.concat(table.wrap(package:build_getenv("cxxflags")), " "), |
||||
"AR=" .. (package:build_getenv("ar") or "ar"), |
||||
"ARFLAGS=" .. table.concat(table.wrap(package:build_getenv("arflags") or "ruv"), " "), |
||||
"RANLIB=" .. (package:build_getenv("ranlib") or "ranlib"), |
||||
"LDFLAGS=" .. table.concat(table.wrap(package:build_getenv("ldflags")), " "), |
||||
"CPPFLAGS=" .. table.concat(table.wrap(package:build_getenv("cppflags")), " "), |
||||
"PREFIX=" .. package:installdir(), |
||||
"GMP_PREFIX=" .. gmp_prefix, |
||||
"SHARED=" .. (package:config("shared") and "on" or "off") |
||||
}, {shell = true}) |
||||
os.vrunv("make", {}) |
||||
os.vrunv("make", {"install"}) |
||||
if package:config("shared") then |
||||
os.rm(path.join(package:installdir(), "lib", "libntl.a")) |
||||
end |
||||
end) |
||||
|
||||
on_test(function (package) |
||||
assert(package:check_cxxsnippets({test = [[ |
||||
#include <NTL/ZZ.h> |
||||
#include <iostream> |
||||
#include <cassert> |
||||
void test() { |
||||
NTL::ZZ a{2}, b{3}, c; |
||||
c = (a + 1) * (b + 1); |
||||
std::cout << c << std::endl; |
||||
} |
||||
]]}, {configs = {languages = "cxx11"}})) |
||||
end) |
Loading…
Reference in new issue