Tools and libraries to glue C/C++ APIs to high-level languages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

204 lines
4.1 KiB

-- Tests/examples helpers
function SetupExampleProject()
kind "ConsoleApp"
language "C#"
debugdir "."
files { "**.cs", "./*.lua" }
links
{
"CppSharp.AST",
"CppSharp.Generator",
"CppSharp.Parser"
}
SetupManagedProject()
SetupParser()
end
function SetupTestProject(name, extraFiles)
SetupTestGeneratorProject(name)
SetupTestNativeProject(name)
SetupTestProjectsCSharp(name, nil, extraFiles)
SetupTestProjectsCLI(name, extraFiles)
end
function SetupTestCSharp(name)
SetupTestGeneratorProject(name)
SetupTestNativeProject(name)
SetupTestProjectsCSharp(name)
end
function SetupTestCLI(name)
SetupTestGeneratorProject(name)
SetupTestNativeProject(name)
SetupTestProjectsCLI(name)
end
function SetupManagedTestProject()
SetupManagedProject()
kind "SharedLib"
language "C#"
clr "Unsafe"
end
function SetupTestGeneratorProject(name, depends)
project(name .. ".Gen")
SetupManagedTestProject()
kind "ConsoleApp"
files { name .. ".cs" }
vpaths { ["*"] = "*" }
dependson { name .. ".Native" }
linktable = {
"System.Core",
"CppSharp.AST",
"CppSharp.Generator",
"CppSharp.Generator.Tests",
"CppSharp.Parser"
}
if depends ~= nil then
table.insert(linktable, depends .. ".Gen")
end
links(linktable)
SetupParser()
end
function SetupTestGeneratorBuildEvent(name)
local runtimeExe = os.is("windows") and "" or "mono --debug "
if string.starts(action, "vs") then
local exePath = SafePath("$(TargetDir)" .. name .. ".Gen.exe")
prebuildcommands { runtimeExe .. exePath }
else
local exePath = SafePath("%{cfg.buildtarget.directory}/" .. name .. ".Gen.exe")
prebuildcommands { runtimeExe .. exePath }
end
end
function SetupTestNativeProject(name, depends)
if string.starts(action, "vs") and not os.is("windows") then
return
end
project(name .. ".Native")
SetupNativeProject()
kind "SharedLib"
language "C++"
files { "**.h", "**.cpp" }
vpaths { ["*"] = "*" }
if depends ~= nil then
links { depends .. ".Native" }
end
end
function LinkNUnit()
libdirs
{
depsdir .. "/NUnit",
depsdir .. "/NSubstitute"
}
links
{
"nunit.framework",
"NSubstitute"
}
end
function SetupTestProjectsCSharp(name, depends)
project(name .. ".CSharp")
SetupManagedTestProject()
dependson { name .. ".Gen", name .. ".Native" }
SetupTestGeneratorBuildEvent(name)
files
{
path.join(gendir, name, name .. ".cs"),
path.join(gendir, name, "Std.cs")
}
vpaths { ["*"] = "*" }
linktable = { "CppSharp.Runtime" }
if depends ~= nil then
table.insert(linktable, depends .. ".CSharp")
end
links(linktable)
project(name .. ".Tests.CSharp")
SetupManagedTestProject()
files { name .. ".Tests.cs" }
vpaths { ["*"] = "*" }
links { name .. ".CSharp", "CppSharp.Generator.Tests" }
dependson { name .. ".Native" }
LinkNUnit()
links { "CppSharp.Runtime" }
end
function SetupTestProjectsCLI(name, extraFiles)
if not os.is("windows") then
return
end
project(name .. ".CLI")
SetupNativeProject()
kind "SharedLib"
language "C++"
flags { "Managed" }
dependson { name .. ".Gen", name .. ".Native" }
SetupTestGeneratorBuildEvent(name)
files
{
path.join(gendir, name, name .. ".cpp"),
path.join(gendir, name, name .. ".h")
}
if extraFiles ~= nil then
for _, file in pairs(extraFiles) do
files { path.join(gendir, name, file .. ".cpp") }
files { path.join(gendir, name, file .. ".h") }
end
end
vpaths { ["*"] = "*" }
includedirs { path.join(testsdir, name), incdir }
links { name .. ".Native" }
project(name .. ".Tests.CLI")
SetupManagedTestProject()
files { name .. ".Tests.cs" }
vpaths { ["*"] = "*" }
links { name .. ".CLI", "CppSharp.Generator.Tests" }
dependson { name .. ".Native" }
LinkNUnit()
end
function IncludeExamples()
--print("Searching for examples...")
IncludeDir(examplesdir)
end
function IncludeTests()
--print("Searching for tests...")
IncludeDir(testsdir)
end