Skip to content

Commit 4747248

Browse files
24bit-xjkpluadebugstar-hengxing
authored
fix(doctest): Copy headers to the include directory (#8257)
* fix(doctest): Copy headers to the include directory 1. Some packages like `FakeIt` use <doctest.h>, so we need a copy of header files in the include dir * Update xmake.lua * Update xmake.lua * add cmake --------- Co-authored-by: Saikari <lin@sz.cn.eu.org> Co-authored-by: star9029 <hengxings783@gmail.com>
1 parent 2cdb7ef commit 4747248

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

packages/d/doctest/xmake.lua

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
package("doctest")
2-
32
set_kind("library", {headeronly = true})
43
set_homepage("http://bit.ly/doctest-docs")
54
set_description("The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD")
@@ -18,8 +17,31 @@ package("doctest")
1817
add_versions("2.3.6", "f63c3c01021ba3fb35a0702127abfaa6fc44aaefd309e2c246e62a083deffa1f")
1918
add_versions("2.3.1", "b3d3c6133874e3a8c8e319cab33167156b6b1d2ed1ddde08c2655193cdeb58a0")
2019

20+
add_configs("cmake", {description = "Use cmake build system", default = true, type = "boolean"})
21+
add_configs("std", {description = "Use std headers", default = false, type = "boolean"})
22+
23+
-- some packages like `FakeIt` use <doctest.h>, so we need to prepend include dir
24+
add_includedirs("include", "include/doctest")
25+
26+
on_load(function (package)
27+
if package:config("cmake") then
28+
package:add("deps", "cmake")
29+
end
30+
if package:config("std") then
31+
package:add("defines", "DOCTEST_CONFIG_USE_STD_HEADERS")
32+
end
33+
end)
34+
2135
on_install(function (package)
22-
os.cp("doctest", package:installdir("include"))
36+
if package:config("cmake") then
37+
local configs = {"-DDOCTEST_WITH_TESTS=OFF"}
38+
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
39+
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
40+
table.insert(configs, "-DDOCTEST_USE_STD_HEADERS=" .. (package:config("std") and "ON" or "OFF"))
41+
import("package.tools.cmake").install(package, configs)
42+
else
43+
os.cp("doctest", package:installdir("include"))
44+
end
2345
end)
2446

2547
on_test(function (package)
@@ -32,5 +54,5 @@ package("doctest")
3254
CHECK(factorial(3) == 6);
3355
CHECK(factorial(10) == 3628800);
3456
}
35-
]]}, {configs = {languages = "c++11"}, includes = "doctest/doctest.h", defines = "DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN"}))
57+
]]}, {configs = {languages = "c++11"}, includes = "doctest.h", defines = "DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN"}))
3658
end)

0 commit comments

Comments
 (0)