From 88000ab2e4dd6a2cc565cf4023ea7ddf03c4d62f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Sun, 6 Nov 2016 21:30:37 +0100 Subject: [PATCH] Build: Upgrade to Premake5-alpha10, get rid of Premake4 --- build/Build_CodeBlocks.bat | 2 +- build/scripts/actions/codeblocks.lua | 6 +- build/scripts/common.lua | 443 ++++++++++----------------- 3 files changed, 162 insertions(+), 289 deletions(-) diff --git a/build/Build_CodeBlocks.bat b/build/Build_CodeBlocks.bat index 439c5efac..5e6c23c44 100644 --- a/build/Build_CodeBlocks.bat +++ b/build/Build_CodeBlocks.bat @@ -1 +1 @@ -premake4 codeblocks \ No newline at end of file +premake5 codeblocks \ No newline at end of file diff --git a/build/scripts/actions/codeblocks.lua b/build/scripts/actions/codeblocks.lua index 2a1f8b249..f96a6d591 100644 --- a/build/scripts/actions/codeblocks.lua +++ b/build/scripts/actions/codeblocks.lua @@ -1,6 +1,4 @@ -if (PremakeVersion >= 50) then - dofile("codeblocks/_codeblocks.lua") - dofile("codeblocks/codeblocks.lua") -end +dofile("codeblocks/_codeblocks.lua") +dofile("codeblocks/codeblocks.lua") ACTION.Manual = true diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 42a565fd6..402484e06 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -9,27 +9,103 @@ function NazaraBuild:AddInstallPath(path) self.InstallDir[path] = true end +function NazaraBuild:FilterLibDirectory(prefix, func) + filter({"action:codeblocks or codelite or gmake", "architecture:x86", "system:Windows"}) + func(prefix .. "mingw/x86") + + filter({"action:codeblocks or codelite or gmake", "architecture:x86_64", "system:Windows"}) + func(prefix .. "mingw/x64") + + filter({"action:codeblocks or codelite or gmake", "architecture:x86", "system:not Windows"}) + func(prefix .. "gmake/x86") + + filter({"action:codeblocks or codelite or gmake", "architecture:x86_64", "system:not Windows"}) + func(prefix .. "gmake/x64") + + filter({"action:vs*", "architecture:x86"}) + func(prefix .. "msvc/x86") + + filter({"action:vs*", "architecture:x86_64"}) + func(prefix .. "msvc/x64") + + filter({"action:xcode3 or xcode4", "architecture:x86"}) + func(prefix .. "xcode/x86") + + filter({"action:xcode3 or xcode4", "architecture:x86_64"}) + func(prefix .. "xcode/x64") + + filter({}) +end + function NazaraBuild:Execute() - if (_ACTION == nil) then -- Si aucune action n'est spécifiée + if (_ACTION == nil) then -- If no action is specified, the user probably only wants to know how all of this works return -- Alors l'utilisateur voulait probablement savoir comment utiliser le programme, on ne fait rien end - if (PremakeVersion >= 50) then - filter { "kind:SharedLib", "action:codeblocks or codelite or gmake or xcode3 or xcode4" } - implibprefix "lib" - implibextension ".a" - end + + local clangGccActions = "action:" .. table.concat({"codeblocks", "codelite", "gmake", "xcode3", "xcode4"}, " or ") local platformData if (os.is64bit()) then - platformData = {"x64", "x32"} + platformData = {"x64", "x86"} else - platformData = {"x32", "x64"} + platformData = {"x86", "x64"} end - if (self.Actions[_ACTION] == nil) then - local makeLibDir = os.is("windows") and "mingw" or "gmake" + flags({ + "C++14", + "MultiProcessorCompile", + "NoMinimalRebuild" + }) + self:FilterLibDirectory("../extlibs/lib/", libdirs) + + -- Fixes Premake stuff + filter({"kind:SharedLib", clangGccActions}) + implibprefix("lib") + filter({"kind:*Lib", clangGccActions, "system:Windows"}) + implibextension(".a") + filter({"kind:StaticLib", clangGccActions}) + targetextension(".a") + targetprefix("lib") + + -- General configuration + filter("kind:*Lib") + pic("On") + + filter({"kind:*Lib", "configurations:DebugStatic"}) + targetsuffix("-s-d") + + filter({"kind:*Lib", "configurations:ReleaseStatic"}) + targetsuffix("-s") + + filter({"kind:*Lib", "configurations:DebugDynamic"}) + targetsuffix("-d") + + filter("configurations:Debug*") + symbols("On") + + -- Setup some optimizations for release + filter("configurations:Release*") + flags("NoFramePointer") + optimize("Speed") + rtti("Off") + vectorextensions("SSE2") + + filter("configurations:*Static") + kind("StaticLib") + + filter("configurations:*Dynamic") + kind("SharedLib") + + -- Enable SSE math and vectorization optimizations + filter({"configurations:Release*", clangGccActions}) + buildoptions("-mfpmath=sse") + buildoptions("-ftree-vectorize") + + filter({}) + + if (self.Actions[_ACTION] == nil) then if (self.Config["BuildDependencies"]) then workspace("NazaraExtlibs") platforms(platformData) @@ -40,63 +116,18 @@ function NazaraBuild:Execute() "ReleaseStatic" }) + self:FilterLibDirectory("../extlibs/lib/", targetdir) + + filter(clangGccActions) + buildoptions("-U__STRICT_ANSI__") + + filter({}) + includedirs("../extlibs/include") libdirs("../extlibs/lib/common") location(_ACTION) kind("StaticLib") - configuration({"codeblocks or codelite or gmake", "x32"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x86") - targetdir("../extlibs/lib/" .. makeLibDir .. "/x86") - - configuration({"codeblocks or codelite or gmake", "x64"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x64") - targetdir("../extlibs/lib/" .. makeLibDir .. "/x64") - - configuration("vs*") - buildoptions({"/MP", "/bigobj"}) -- Multiprocessus build and big .obj - - configuration({"vs*", "x32"}) - libdirs("../extlibs/lib/msvc/x86") - targetdir("../extlibs/lib/msvc/x86") - - configuration({"vs*", "x64"}) - libdirs("../extlibs/lib/msvc/x64") - targetdir("../extlibs/lib/msvc/x64") - - configuration({"xcode3 or xcode4", "x32"}) - libdirs("../extlibs/lib/xcode/x86") - targetdir("../extlibs/lib/xcode/x86") - - configuration({"xcode3 or xcode4", "x64"}) - libdirs("../extlibs/lib/xcode/x64") - targetdir("../extlibs/lib/xcode/x64") - - configuration("Debug*") - flags("Symbols") - - configuration("Release*") - flags("NoFramePointer") - optimize("Speed") - rtti("Off") - vectorextensions("SSE2") - - configuration({"Release*", "codeblocks or codelite or gmake or xcode3 or xcode4"}) - buildoptions("-mfpmath=sse") -- Utilisation du SSE pour les calculs flottants - buildoptions("-ftree-vectorize") -- Activation de la vectorisation du code - - configuration("DebugStatic") - targetsuffix("-s-d") - - configuration("ReleaseStatic") - targetsuffix("-s") - - configuration({"not windows", "codeblocks or codelite or gmake or xcode3 or xcode4"}) - buildoptions("-fPIC") - - configuration("codeblocks or codelite or gmake or xcode3 or xcode4") - buildoptions({"-std=c++14", "-U__STRICT_ANSI__"}) - for k, libTable in ipairs(self.OrderedExtLibs) do project(libTable.Name) @@ -111,25 +142,44 @@ function NazaraBuild:Execute() includedirs(libTable.Includes) links(libTable.Libraries) - configuration("x32") + filter("architecture:x86") libdirs(libTable.LibraryPaths.x86) - configuration("x64") + filter("architecture:x86_64") libdirs(libTable.LibraryPaths.x64) for k,v in pairs(libTable.ConfigurationLibraries) do - configuration(k) - links(v) + filter(k) + links(v) end - configuration({}) + filter({}) end end + -- General settings + filter("architecture:x86_64") + defines("NAZARA_PLATFORM_x64") + + filter("configurations:Debug*") + defines("NAZARA_DEBUG") + + filter("configurations:*Static") + defines("NAZARA_STATIC") + + filter("kind:*Lib") + defines("NAZARA_BUILD") + + filter({"system:not Windows", clangGccActions}) + buildoptions("-fvisibility=hidden") + + -- Add lib/conf/arch to library search path + self:FilterLibDirectory("../lib/", libdirs) + + -- Start defining projects workspace("NazaraEngine") platforms(platformData) - -- Configuration générale configurations({ -- "DebugStatic", -- "ReleaseStatic", @@ -140,36 +190,13 @@ function NazaraBuild:Execute() language("C++") location(_ACTION) - configuration("Debug*") - defines("NAZARA_DEBUG") - flags("Symbols") - - configuration("Release*") - flags("NoFramePointer") - optimize("Speed") - vectorextensions("SSE2") - - configuration({"Release*", "codeblocks or codelite or gmake or xcode3 or xcode4"}) - buildoptions("-mfpmath=sse") -- Utilisation du SSE pour les calculs flottants - buildoptions("-ftree-vectorize") -- Activation de la vectorisation du code - - configuration("*Static") - defines("NAZARA_STATIC") - - configuration("codeblocks or codelite or gmake or xcode3 or xcode4") - buildoptions("-std=c++14") - - configuration({"linux or bsd or macosx", "gmake"}) - buildoptions("-fvisibility=hidden") - configuration("vs*") buildoptions({"/MP", "/bigobj"}) -- Multiprocessus build and big .obj flags("NoMinimalRebuild") defines("_CRT_SECURE_NO_WARNINGS") defines("_SCL_SECURE_NO_WARNINGS") - - -- Spécification des modules + -- Modules if (_OPTIONS["united"]) then project("NazaraEngine") end @@ -181,78 +208,12 @@ function NazaraBuild:Execute() location(_ACTION .. "/modules") - defines("NAZARA_BUILD") - includedirs({ "../include", "../src/", "../extlibs/include" }) - libdirs("../lib") - libdirs("../extlibs/lib/common") - - configuration("x32") - libdirs(moduleTable.LibraryPaths.x86) - - configuration("x64") - defines("NAZARA_PLATFORM_x64") - libdirs(moduleTable.LibraryPaths.x64) - - configuration({"codeblocks or codelite or gmake", "x32"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x86") - libdirs("../lib/" .. makeLibDir .. "/x86") - targetdir("../lib/" .. makeLibDir .. "/x86") - - configuration({"codeblocks or codelite or gmake", "x64"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x64") - libdirs("../lib/" .. makeLibDir .. "/x64") - targetdir("../lib/" .. makeLibDir .. "/x64") - - -- Copy the module binaries to the example folder - self:MakeInstallCommands(moduleTable) - - configuration({"vs*", "x32"}) - libdirs("../extlibs/lib/msvc/x86") - libdirs("../lib/msvc/x86") - targetdir("../lib/msvc/x86") - - configuration({"vs*", "x64"}) - libdirs("../extlibs/lib/msvc/x64") - libdirs("../lib/msvc/x64") - targetdir("../lib/msvc/x64") - - configuration({"xcode3 or xcode4", "x32"}) - libdirs("../extlibs/lib/xcode/x86") - libdirs("../lib/xcode/x86") - targetdir("../lib/xcode/x86") - - configuration({"xcode3 or xcode4", "x64"}) - libdirs("../extlibs/lib/xcode/x64") - libdirs("../lib/xcode/x64") - targetdir("../lib/xcode/x64") - - configuration("*Static") - defines("NAZARA_STATIC") - kind("StaticLib") - - configuration("*Dynamic") - kind("SharedLib") - - configuration("DebugStatic") - targetsuffix("-s-d") - - configuration("ReleaseStatic") - targetsuffix("-s") - - configuration("DebugDynamic") - targetsuffix("-d") - - configuration("Release*") - rtti(moduleTable.EnableRTTI and "On" or "Off") - - configuration({}) - files(moduleTable.Files) excludes(moduleTable.FilesExcluded) @@ -261,6 +222,23 @@ function NazaraBuild:Execute() includedirs(moduleTable.Includes) links(moduleTable.Libraries) + libdirs({ + "../extlibs/lib/common", + "../lib" + }) + + -- Output to lib/conf/arch + self:FilterLibDirectory("../lib/", targetdir) + + -- Copy the module binaries to the example folder + self:MakeInstallCommands(moduleTable) + + filter("architecture:x86") + libdirs(moduleTable.LibraryPaths.x86) + + filter("architecture:x86_64") + libdirs(moduleTable.LibraryPaths.x64) + for k,v in pairs(moduleTable.ConfigurationLibraries) do configuration(k) links(v) @@ -294,7 +272,7 @@ function NazaraBuild:Execute() kind("WindowedApp") end else - assert(false, "Invalid tool Kind") + assert(false, "Invalid tool kind") end includedirs({ @@ -302,94 +280,10 @@ function NazaraBuild:Execute() "../extlibs/include" }) - libdirs("../lib") - libdirs("../extlibs/lib/common") - - configuration("x32") - libdirs(toolTable.LibraryPaths.x86) - - configuration("x64") - defines("NAZARA_PLATFORM_x64") - libdirs(toolTable.LibraryPaths.x64) - - configuration({"codeblocks or codelite or gmake", "x32"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x86") - libdirs("../lib/" .. makeLibDir .. "/x86") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/" .. makeLibDir .. "/x86") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/" .. makeLibDir .. "/x86") - end - - configuration({"codeblocks or codelite or gmake", "x64"}) - libdirs("../extlibs/lib/" .. makeLibDir .. "/x64") - libdirs("../lib/" .. makeLibDir .. "/x64") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/" .. makeLibDir .. "/x64") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/" .. makeLibDir .. "/x64") - end - - configuration({"vs*", "x32"}) - libdirs("../extlibs/lib/msvc/x86") - libdirs("../lib/msvc/x86") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/msvc/x86") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/msvc/x86") - end - - configuration({"vs*", "x64"}) - libdirs("../extlibs/lib/msvc/x64") - libdirs("../lib/msvc/x64") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/msvc/x64") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/msvc/x64") - end - - configuration({"xcode3 or xcode4", "x32"}) - libdirs("../extlibs/lib/xcode/x86") - libdirs("../lib/xcode/x86") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/xcode/x86") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/xcode/x86") - end - - configuration({"xcode3 or xcode4", "x64"}) - libdirs("../extlibs/lib/xcode/x64") - libdirs("../lib/xcode/x64") - if (toolTable.Kind == "library") then - targetdir(toolTable.TargetDirectory .. "/xcode/x64") - elseif (toolTable.Kind == "plugin") then - targetdir("../plugins/lib/xcode/x64") - end - - configuration("*Static") - defines("NAZARA_STATIC") - - configuration("Release*") - rtti(toolTable.EnableRTTI and "On" or "Off") - - if (toolTable.Kind == "library" or toolTable.Kind == "plugin") then - configuration("*Static") - kind("StaticLib") - - configuration("*Dynamic") - kind("SharedLib") - - configuration("DebugStatic") - targetsuffix("-s-d") - - configuration("ReleaseStatic") - targetsuffix("-s") - - configuration("DebugDynamic") - targetsuffix("-d") - end - - configuration({}) + libdirs({ + "../extlibs/lib/common", + "../lib" + }) files(toolTable.Files) excludes(toolTable.FilesExcluded) @@ -399,12 +293,25 @@ function NazaraBuild:Execute() includedirs(toolTable.Includes) links(toolTable.Libraries) + -- Output to lib/conf/arch + if (toolTable.Kind == "library") then + self:FilterLibDirectory(toolTable.TargetDirectory .. "/", targetdir) + elseif (toolTable.Kind == "plugin") then + self:FilterLibDirectory("../plugins/lib/", targetdir) + end + + filter("architecture:x86") + libdirs(toolTable.LibraryPaths.x86) + + filter("architecture:x86_64") + libdirs(toolTable.LibraryPaths.x64) + for k,v in pairs(toolTable.ConfigurationLibraries) do - configuration(k) + filter(k) links(v) end - configuration({}) + filter({}) end for k, exampleTable in ipairs(self.OrderedExamples) do @@ -435,7 +342,6 @@ function NazaraBuild:Execute() "../extlibs/include" }) libdirs("../lib") - targetdir(destPath) files(exampleTable.Files) excludes(exampleTable.FilesExcluded) @@ -444,41 +350,14 @@ function NazaraBuild:Execute() flags(exampleTable.Flags) includedirs(exampleTable.Includes) links(exampleTable.Libraries) - - configuration("Release*") - rtti(exampleTable.EnableRTTI and "On" or "Off") - - configuration("x32") - libdirs(exampleTable.LibraryPaths.x86) - - configuration("x64") - defines("NAZARA_PLATFORM_x64") - libdirs(exampleTable.LibraryPaths.x64) - - configuration({"codeblocks or codelite or gmake", "x32"}) - libdirs("../lib/" .. makeLibDir .. "/x86") - - configuration({"codeblocks or codelite or gmake", "x64"}) - libdirs("../lib/" .. makeLibDir .. "/x64") - - configuration({"vs*", "x32"}) - libdirs("../lib/msvc/x86") - - configuration({"vs*", "x64"}) - libdirs("../lib/msvc/x64") - - configuration({"xcode3 or xcode4", "x32"}) - libdirs("../lib/xcode/x86") - - configuration({"xcode3 or xcode4", "x64"}) - libdirs("../lib/xcode/x64") + targetdir(destPath) for k,v in pairs(exampleTable.ConfigurationLibraries) do - configuration(k) + filter(k) links(v) end - configuration({}) + filter({}) end end end @@ -718,10 +597,6 @@ function NazaraBuild:LoadConfig() end function NazaraBuild:MakeInstallCommands(infoTable) - if (PremakeVersion < 50) then - return - end - if (os.is("windows")) then configuration("*Dynamic")