add cpp-peglib (#2059)

* add cpp-peglib

* use is_plat

* remove flag

* add flag

* improve is_plat
pull/2063/head
star9029 2 years ago committed by GitHub
parent 4c3adfbe3e
commit 4348bc6ee5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 39
      packages/c/cpp-peglib/xmake.lua

@ -0,0 +1,39 @@
package("cpp-peglib")
set_kind("library", {headeronly = true})
set_homepage("https://yhirose.github.io/cpp-peglib")
set_description("A single file C++ header-only PEG (Parsing Expression Grammars) library")
set_license("MIT")
set_urls("https://github.com/yhirose/cpp-peglib/archive/refs/tags/v$(version).tar.gz",
"https://github.com/yhirose/cpp-peglib.git")
add_versions("1.8.3", "3de8aeb44a262f9c2478e2a7e7bc2bb9426a2bdd176cf0654ff5a3d291c77b73")
on_install(function (package)
if package:is_plat("windows") then
package:add("cxxflags", "/Zc:__cplusplus")
end
os.cp("peglib.h", package:installdir("include"))
end)
on_test(function (package)
assert(package:check_cxxsnippets({test = [[
#include <peglib.h>
#include <assert.h>
using namespace peg;
void test() {
parser parser(R"(
# Grammar for Calculator...
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t]*
)");
assert(static_cast<bool>(parser) == true);
}
]]}, {configs = {languages = "c++17"}}))
end)
Loading…
Cancel
Save