85 lines
2.0 KiB
Lua

catch2 = {}
function catch2:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ThirdPartyFolder(), "catch2", "src"),
"%{wks.location}/thirdparty/catch2"
}
end
end
function catch2:link(links)
links:add(self:name())
end
function catch2:use()
end
function catch2:name()
return "catch2"
end
function catch2:project()
local folder = ThirdPartyFolder()
local includes = Includes:create()
self:writeUserConfig()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/thirdparty/%{prj.name}"
kind "StaticLib"
language "C++"
files {
path.join(folder, "catch2/src/**.cpp"),
path.join(folder, "catch2/src/**.hpp"),
"%{wks.location}/thirdparty/%{prj.name}/**.cpp",
"%{wks.location}/thirdparty/%{prj.name}/**.hpp"
}
vpaths {
["*"] = {
path.join(folder, "catch2/src"),
"%{wks.location}/thirdparty/%{prj.name}"
}
}
defines {
"DO_NOT_USE_WMAIN",
"CATCH_AMALGAMATED_CUSTOM_MAIN",
"_CRT_SECURE_NO_WARNINGS"
}
self:include(includes)
-- Disable warnings. They do not have any value to us since it is not our code.
warnings "off"
end
function catch2:writeUserConfig()
local folder = ThirdPartyFolder()
local inputFileName = path.join(folder, "catch2/src/catch2/catch_user_config.hpp.in")
local outputFileName = path.getabsolute("build/thirdparty/catch2/catch2/catch_user_config.hpp")
local inputInfo = os.stat(inputFileName)
local outputInfo = os.stat(outputFileName)
if inputInfo == nil then
return
end
if outputInfo ~= nil and inputInfo.mtime <= outputInfo.mtime then
return
end
local fileData = io.readfile(inputFileName)
fileData = string.gsub(fileData, '#cmakedefine[^\n]*', '')
fileData = string.gsub(fileData, '@CATCH_CONFIG_CONSOLE_WIDTH@', '80')
fileData = string.gsub(fileData, '@CATCH_CONFIG_DEFAULT_REPORTER@', 'console')
os.mkdir(path.getdirectory(outputFileName))
os.writefile_ifnotequal(fileData, outputFileName)
end