Merge branch 'master' into vulkan

Former-commit-id: 38b7c439620b078448ce9b84fc42627ebf62f49a [formerly 3ae3a4f3c227085b3e4939461d19c17cde3862a2]
Former-commit-id: 3a476b16265b9825cdb17c7a054e57abb5cf6eb6
This commit is contained in:
Lynix 2016-06-01 19:37:02 +02:00
commit c75f3ce28b
17 changed files with 116 additions and 69 deletions

View File

@ -1,20 +1,17 @@
// This file was automatically generated on 03 Mar 2016 at 14:09:12 // This file was automatically generated on 01 Jun 2016 at 13:11:09
#pragma once #pragma once
#ifndef NDK_COMPONENTS_GLOBAL_HPP #ifndef NDK_COMPONENTS_GLOBAL_HPP
#define NDK_COMPONENTS_GLOBAL_HPP #define NDK_COMPONENTS_GLOBAL_HPP
#include <NDK/Components/CameraComponent.hpp>
#include <NDK/Components/CollisionComponent.hpp> #include <NDK/Components/CollisionComponent.hpp>
#include <NDK/Components/GraphicsComponent.hpp>
#include <NDK/Components/LightComponent.hpp>
#include <NDK/Components/ListenerComponent.hpp>
#include <NDK/Components/NodeComponent.hpp> #include <NDK/Components/NodeComponent.hpp>
#include <NDK/Components/PhysicsComponent.hpp> #include <NDK/Components/PhysicsComponent.hpp>
#include <NDK/Components/VelocityComponent.hpp> #include <NDK/Components/VelocityComponent.hpp>
#ifndef NDK_SERVER
#include <NDK/Components/CameraComponent.hpp>
#include <NDK/Components/GraphicsComponent.hpp>
#include <NDK/Components/LightComponent.hpp>
#include <NDK/Components/ListenerComponent.hpp>
#endif
#endif // NDK_COMPONENTS_GLOBAL_HPP #endif // NDK_COMPONENTS_GLOBAL_HPP

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_COMPONENTS_CAMERACOMPONENT_HPP #ifndef NDK_COMPONENTS_CAMERACOMPONENT_HPP
#define NDK_COMPONENTS_CAMERACOMPONENT_HPP #define NDK_COMPONENTS_CAMERACOMPONENT_HPP
@ -108,3 +109,4 @@ namespace Ndk
#include <NDK/Components/CameraComponent.inl> #include <NDK/Components/CameraComponent.inl>
#endif // NDK_COMPONENTS_CAMERACOMPONENT_HPP #endif // NDK_COMPONENTS_CAMERACOMPONENT_HPP
#endif // NDK_SERVER

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP #ifndef NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP
#define NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP #define NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP
@ -80,3 +81,4 @@ namespace Ndk
#include <NDK/Components/GraphicsComponent.inl> #include <NDK/Components/GraphicsComponent.inl>
#endif // NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP #endif // NDK_COMPONENTS_GRAPHICSCOMPONENT_HPP
#endif // NDK_SERVER

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_COMPONENTS_LIGHTCOMPONENT_HPP #ifndef NDK_COMPONENTS_LIGHTCOMPONENT_HPP
#define NDK_COMPONENTS_LIGHTCOMPONENT_HPP #define NDK_COMPONENTS_LIGHTCOMPONENT_HPP
@ -28,3 +29,4 @@ namespace Ndk
#include <NDK/Components/LightComponent.inl> #include <NDK/Components/LightComponent.inl>
#endif // NDK_COMPONENTS_LIGHTCOMPONENT_HPP #endif // NDK_COMPONENTS_LIGHTCOMPONENT_HPP
#endif // NDK_SERVER

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_COMPONENTS_LISTENERCOMPONENT_HPP #ifndef NDK_COMPONENTS_LISTENERCOMPONENT_HPP
#define NDK_COMPONENTS_LISTENERCOMPONENT_HPP #define NDK_COMPONENTS_LISTENERCOMPONENT_HPP
@ -30,3 +31,4 @@ namespace Ndk
#include <NDK/Components/ListenerComponent.inl> #include <NDK/Components/ListenerComponent.inl>
#endif // NDK_COMPONENTS_LISTENERCOMPONENT_HPP #endif // NDK_COMPONENTS_LISTENERCOMPONENT_HPP
#endif // NDK_SERVER

View File

@ -1,16 +1,13 @@
// This file was automatically generated on 03 Mar 2016 at 14:09:12 // This file was automatically generated on 01 Jun 2016 at 13:11:09
#pragma once #pragma once
#ifndef NDK_SYSTEMS_GLOBAL_HPP #ifndef NDK_SYSTEMS_GLOBAL_HPP
#define NDK_SYSTEMS_GLOBAL_HPP #define NDK_SYSTEMS_GLOBAL_HPP
#include <NDK/Systems/ListenerSystem.hpp>
#include <NDK/Systems/PhysicsSystem.hpp> #include <NDK/Systems/PhysicsSystem.hpp>
#include <NDK/Systems/RenderSystem.hpp>
#include <NDK/Systems/VelocitySystem.hpp> #include <NDK/Systems/VelocitySystem.hpp>
#ifndef NDK_SERVER
#include <NDK/Systems/ListenerSystem.hpp>
#include <NDK/Systems/RenderSystem.hpp>
#endif
#endif // NDK_SYSTEMS_GLOBAL_HPP #endif // NDK_SYSTEMS_GLOBAL_HPP

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_SYSTEMS_LISTENERSYSTEM_HPP #ifndef NDK_SYSTEMS_LISTENERSYSTEM_HPP
#define NDK_SYSTEMS_LISTENERSYSTEM_HPP #define NDK_SYSTEMS_LISTENERSYSTEM_HPP
@ -27,3 +28,4 @@ namespace Ndk
#include <NDK/Systems/ListenerSystem.inl> #include <NDK/Systems/ListenerSystem.inl>
#endif // NDK_SYSTEMS_LISTENERSYSTEM_HPP #endif // NDK_SYSTEMS_LISTENERSYSTEM_HPP
#endif // NDK_SERVER

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#ifndef NDK_SERVER
#ifndef NDK_SYSTEMS_RENDERSYSTEM_HPP #ifndef NDK_SYSTEMS_RENDERSYSTEM_HPP
#define NDK_SYSTEMS_RENDERSYSTEM_HPP #define NDK_SYSTEMS_RENDERSYSTEM_HPP
@ -70,3 +71,4 @@ namespace Ndk
#include <NDK/Systems/RenderSystem.inl> #include <NDK/Systems/RenderSystem.inl>
#endif // NDK_SYSTEMS_RENDERSYSTEM_HPP #endif // NDK_SYSTEMS_RENDERSYSTEM_HPP
#endif // NDK_SERVER

View File

@ -44,7 +44,7 @@ namespace Ndk
static_assert(std::is_base_of<BaseSystem, SystemType>::value, "SystemType is not a component"); static_assert(std::is_base_of<BaseSystem, SystemType>::value, "SystemType is not a component");
// Allocation et affectation du component // Allocation et affectation du component
std::unique_ptr<SystemType> ptr(new SystemType(std::forward(args)...)); std::unique_ptr<SystemType> ptr(new SystemType(std::forward<Args>(args)...));
return static_cast<SystemType&>(AddSystem(std::move(ptr))); return static_cast<SystemType&>(AddSystem(std::move(ptr)));
} }

View File

@ -15,7 +15,7 @@ function NazaraBuild:Execute()
if (self.Actions[_ACTION] == nil) then if (self.Actions[_ACTION] == nil) then
local makeLibDir = os.is("windows") and "mingw" or "gmake" local makeLibDir = os.is("windows") and "mingw" or "gmake"
if (#self.OrderedExtLibs > 0) then if (_OPTIONS["with-extlibs"]) then
workspace("NazaraExtlibs") workspace("NazaraExtlibs")
platforms(platformData) platforms(platformData)
@ -196,9 +196,7 @@ function NazaraBuild:Execute()
targetdir("../lib/" .. makeLibDir .. "/x64") targetdir("../lib/" .. makeLibDir .. "/x64")
-- Copy the module binaries to the example folder -- Copy the module binaries to the example folder
if (os.is("windows")) then self:MakeCopyAfterBuild(moduleTable)
self:MakeCopyAfterBuild(moduleTable)
end
configuration({"vs*", "x86"}) configuration({"vs*", "x86"})
libdirs("../extlibs/lib/msvc/x86") libdirs("../extlibs/lib/msvc/x86")
@ -310,7 +308,7 @@ function NazaraBuild:Execute()
targetdir("../plugins/" .. toolTable.Name .. "/lib/" .. makeLibDir .. "/x64") targetdir("../plugins/" .. toolTable.Name .. "/lib/" .. makeLibDir .. "/x64")
end end
-- Copy the module binaries to the example folder -- Copy the tool binaries to the example folder
if (toolTable.CopyTargetToExampleDir) then if (toolTable.CopyTargetToExampleDir) then
self:MakeCopyAfterBuild(toolTable) self:MakeCopyAfterBuild(toolTable)
end end
@ -450,6 +448,11 @@ end
function NazaraBuild:Initialize() function NazaraBuild:Initialize()
-- Commençons par les options -- Commençons par les options
newoption({
trigger = "server",
description = "Excludes client-only modules/tools/examples"
})
newoption({ newoption({
trigger = "united", trigger = "united",
description = "Builds all the modules as one united library" description = "Builds all the modules as one united library"
@ -491,26 +494,24 @@ function NazaraBuild:Initialize()
ACTION = nil ACTION = nil
-- Extern libraries -- Extern libraries
if (_OPTIONS["with-extlibs"]) then local extlibs = os.matchfiles("../extlibs/build/*.lua")
local extlibs = os.matchfiles("../extlibs/build/*.lua") for k,v in pairs(extlibs) do
for k,v in pairs(extlibs) do local f, err = loadfile(v)
local f, err = loadfile(v) if (f) then
if (f) then LIBRARY = {}
LIBRARY = {} self:SetupInfoTable(LIBRARY)
self:SetupInfoTable(LIBRARY)
f() f()
local succeed, err = self:RegisterExternLibrary(LIBRARY) local succeed, err = self:RegisterExternLibrary(LIBRARY)
if (not succeed) then if (not succeed) then
print("Unable to register extern library: " .. err) print("Unable to register extern library: " .. err)
end end
else else
print("Unable to load extern library file: " .. err) print("Unable to load extern library file: " .. err)
end end
end end
LIBRARY = nil LIBRARY = nil
end
-- Then the modules -- Then the modules
local modules = os.matchfiles("scripts/modules/*.lua") local modules = os.matchfiles("scripts/modules/*.lua")
@ -605,13 +606,20 @@ function NazaraBuild:Initialize()
self.OrderedExtLibs = {} self.OrderedExtLibs = {}
self.OrderedModules = {} self.OrderedModules = {}
self.OrderedTools = {} self.OrderedTools = {}
local tables = {self.Examples, self.ExtLibs, self.Modules, self.Tools} local tables = {self.ExtLibs, self.Modules, self.Tools, self.Examples}
local orderedTables = {self.OrderedExamples, self.OrderedExtLibs, self.OrderedModules, self.OrderedTools} local orderedTables = {self.OrderedExtLibs, self.OrderedModules, self.OrderedTools, self.OrderedExamples}
for k,projects in ipairs(tables) do for k,projects in ipairs(tables) do
-- Begin by resolving every project (because of dependencies in the same category)
for projectId,projectTable in pairs(projects) do for projectId,projectTable in pairs(projects) do
self:Process(projectTable) self:Resolve(projectTable)
end
table.insert(orderedTables[k], projectTable)
for projectId,projectTable in pairs(projects) do
if (self:Process(projectTable)) then
table.insert(orderedTables[k], projectTable)
else
print("Rejected client-only " .. projectTable.Name .. " " .. projectTable.Type)
end
end end
table.sort(orderedTables[k], function (a, b) return a.Name < b.Name end) table.sort(orderedTables[k], function (a, b) return a.Name < b.Name end)
@ -772,13 +780,22 @@ local PosixOSes = {
} }
function NazaraBuild:Process(infoTable) function NazaraBuild:Process(infoTable)
local libraries = {} if (infoTable.ClientOnly and _OPTIONS["server"]) then
return false
end
local libraries = {}
for k, library in pairs(infoTable.Libraries) do for k, library in pairs(infoTable.Libraries) do
local moduleName = library:match("Nazara(%w+)") local moduleName = library:match("Nazara(%w+)")
local moduleTable = moduleName and self.Modules[moduleName:lower()] local moduleTable = moduleName and self.Modules[moduleName:lower()]
local toolTable = moduleName and self.Tools[moduleName:lower()] local toolTable = moduleName and self.Tools[moduleName:lower()]
if (moduleTable) then if (moduleTable) then
if (moduleTable.ClientOnly and _OPTIONS["server"]) then
infoTable.ClientOnly = true
return false -- We depend on a client-only library
end
if (_OPTIONS["united"]) then if (_OPTIONS["united"]) then
library = "NazaraEngine" library = "NazaraEngine"
else else
@ -794,6 +811,11 @@ function NazaraBuild:Process(infoTable)
else else
local extLibTable = self.ExtLibs[library:lower()] local extLibTable = self.ExtLibs[library:lower()]
if (extLibTable) then if (extLibTable) then
if (extLibTable.ClientOnly and _OPTIONS["server"]) then
infoTable.ClientOnly = true
return false -- We depend on a client-only library
end
library = extLibTable.Name library = extLibTable.Name
table.insert(infoTable.ConfigurationLibraries.DebugStatic, library .. "-s-d") table.insert(infoTable.ConfigurationLibraries.DebugStatic, library .. "-s-d")
@ -802,6 +824,11 @@ function NazaraBuild:Process(infoTable)
table.insert(infoTable.ConfigurationLibraries.ReleaseDynamic, library .. "-s") table.insert(infoTable.ConfigurationLibraries.ReleaseDynamic, library .. "-s")
else else
if (toolTable and toolTable.Kind == "library") then if (toolTable and toolTable.Kind == "library") then
if (toolTable.ClientOnly and _OPTIONS["server"]) then
infoTable.ClientOnly = true
return false -- We depend on a client-only library
end
library = "Nazara" .. toolTable.Name library = "Nazara" .. toolTable.Name
-- Import tools includes -- Import tools includes
@ -862,6 +889,14 @@ function NazaraBuild:Process(infoTable)
end end
end end
end end
return true
end
function NazaraBuild:Resolve(infoTable)
if (type(infoTable.Libraries) == "function") then
infoTable.Libraries = infoTable.Libraries()
end
end end
function NazaraBuild:MakeCopyAfterBuild(infoTable) function NazaraBuild:MakeCopyAfterBuild(infoTable)

View File

@ -1,5 +1,7 @@
MODULE.Name = "Audio" MODULE.Name = "Audio"
MODULE.ClientOnly = true
MODULE.Defines = { MODULE.Defines = {
"NAZARA_AUDIO_OPENAL" "NAZARA_AUDIO_OPENAL"
} }

View File

@ -1,5 +1,7 @@
MODULE.Name = "Renderer" MODULE.Name = "Renderer"
MODULE.ClientOnly = true
MODULE.Defines = { MODULE.Defines = {
"NAZARA_RENDERER_OPENGL" "NAZARA_RENDERER_OPENGL"
} }

View File

@ -1,5 +1,7 @@
MODULE.Name = "Vulkan" MODULE.Name = "Vulkan"
MODULE.ClientOnly = true
MODULE.Defines = { MODULE.Defines = {
"VK_NO_PROTOTYPES" "VK_NO_PROTOTYPES"
} }

View File

@ -22,14 +22,11 @@ TOOL.Files = {
"../SDK/src/NDK/**.cpp" "../SDK/src/NDK/**.cpp"
} }
TOOL.Libraries = { TOOL.Libraries = function()
"NazaraCore", local libraries = {}
"NazaraAudio", for k,v in pairs(NazaraBuild.Modules) do
"NazaraLua", table.insert(libraries, "Nazara" .. v.Name)
"NazaraNetwork", end
"NazaraNoise",
"NazaraPhysics", return libraries
"NazaraUtility", end
"NazaraRenderer",
"NazaraGraphics"
}

View File

@ -37,11 +37,14 @@ TOOL.FilesExcluded = {
"../SDK/**/LuaBinding_Renderer.*" "../SDK/**/LuaBinding_Renderer.*"
} }
TOOL.Libraries = {
"NazaraCore", TOOL.Libraries = function()
"NazaraLua", local libraries = {}
"NazaraNetwork", for k,v in pairs(NazaraBuild.Modules) do
"NazaraNoise", if (not v.ClientOnly) then
"NazaraPhysics", table.insert(libraries, "Nazara" .. v.Name)
"NazaraUtility" end
} end
return libraries
end

View File

@ -77,7 +77,7 @@ namespace Nz
renderPass, renderPass,
subpass, subpass,
framebuffer, framebuffer,
(occlusionQueryEnable) ? VK_TRUE : VK_FALSE, VkBool32((occlusionQueryEnable) ? VK_TRUE : VK_FALSE),
queryFlags, queryFlags,
pipelineStatistics pipelineStatistics
}; };
@ -102,7 +102,7 @@ namespace Nz
VK_NULL_HANDLE, VK_NULL_HANDLE,
0, 0,
VK_NULL_HANDLE, VK_NULL_HANDLE,
(occlusionQueryEnable) ? VK_TRUE : VK_FALSE, VkBool32((occlusionQueryEnable) ? VK_TRUE : VK_FALSE),
queryFlags, queryFlags,
pipelineStatistics pipelineStatistics
}; };

View File

@ -34,7 +34,7 @@ namespace Nz
#ifdef VK_USE_PLATFORM_ANDROID_KHR #ifdef VK_USE_PLATFORM_ANDROID_KHR
inline bool Surface::Create(const VkAndroidSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator) inline bool Surface::Create(const VkAndroidSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator)
{ {
m_lastErrorCode = m_instance.PFN_vkCreateAndroidSurfaceKHR(m_instance, &createInfo, allocator, &m_surface); m_lastErrorCode = m_instance.vkCreateAndroidSurfaceKHR(m_instance, &createInfo, allocator, &m_surface);
return Create(allocator); return Create(allocator);
} }
@ -55,7 +55,7 @@ namespace Nz
#ifdef VK_USE_PLATFORM_MIR_KHR #ifdef VK_USE_PLATFORM_MIR_KHR
inline bool Surface::Create(const VkMirSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator) inline bool Surface::Create(const VkMirSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator)
{ {
m_lastErrorCode = m_instance.PFN_vkCreateMirSurfaceKHR(m_instance, &createInfo, allocator, &m_surface); m_lastErrorCode = m_instance.vkCreateMirSurfaceKHR(m_instance, &createInfo, allocator, &m_surface);
return Create(allocator); return Create(allocator);
} }
@ -77,7 +77,7 @@ namespace Nz
#ifdef VK_USE_PLATFORM_XCB_KHR #ifdef VK_USE_PLATFORM_XCB_KHR
inline bool Surface::Create(const VkXcbSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator) inline bool Surface::Create(const VkXcbSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator)
{ {
m_lastErrorCode = m_instance.PFN_vkCreateXcbSurfaceKHR(m_instance, &createInfo, allocator, &m_surface); m_lastErrorCode = m_instance.vkCreateXcbSurfaceKHR(m_instance, &createInfo, allocator, &m_surface);
return Create(allocator); return Create(allocator);
} }
@ -99,7 +99,7 @@ namespace Nz
#ifdef VK_USE_PLATFORM_XLIB_KHR #ifdef VK_USE_PLATFORM_XLIB_KHR
inline bool Surface::Create(const VkXlibSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator) inline bool Surface::Create(const VkXlibSurfaceCreateInfoKHR& createInfo, const VkAllocationCallbacks* allocator)
{ {
m_lastErrorCode = m_instance.PFN_vkCreateXlibSurfaceKHR(m_instance, &createInfo, allocator, &m_surface); m_lastErrorCode = m_instance.vkCreateXlibSurfaceKHR(m_instance, &createInfo, allocator, &m_surface);
return Create(allocator); return Create(allocator);
} }