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 #include #include void test() { NTL::ZZ a{2}, b{3}, c; c = (a + 1) * (b + 1); std::cout << c << std::endl; } ]]}, {configs = {languages = "cxx11"}})) end)