diff --git a/.gitignore b/.gitignore index 42bee2d..41070cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # Directories .vs/ bin/ -bin-int/ +bin-obj/ # VS Files **.vcxproj** diff --git a/BuildScripts/build.lua b/BuildScripts/build.lua index 9a6b29a..821f84c 100644 --- a/BuildScripts/build.lua +++ b/BuildScripts/build.lua @@ -1,3 +1,5 @@ +include "dependencies.lua" + workspace "Light" location "../" startproject "Mirror" @@ -12,18 +14,19 @@ workspace "Light" } -- Directories -- -dependenciesdir = "%{wks.location}/Dependencies/" -outputdir = "%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}" +target_dir = "%{wks.location}/bin/%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}" +object_dir = "%{wks.location}/bin-obj/%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}" -- Projects -- -include "../Engine/build.lua" -include "../Mirror/build.lua" -include "../Sandbox/build.lua" +group "" + include "../Engine/build.lua" + include "../Mirror/build.lua" + include "../Sandbox/build.lua" -- Dependencies -- group "Dependencies" -include "../Dependencies/GLFW/build.lua" -include "../Dependencies/GLAD/build.lua" -include "../Dependencies/imgui/build.lua" -include "../Dependencies/stb_image/build.lua" -include "../Dependencies/entt/build.lua" + include "../Dependencies/GLFW/build.lua" + include "../Dependencies/GLAD/build.lua" + include "../Dependencies/imgui/build.lua" + include "../Dependencies/stb_image/build.lua" + include "../Dependencies/entt/build.lua" \ No newline at end of file diff --git a/BuildScripts/dependencies.lua b/BuildScripts/dependencies.lua new file mode 100644 index 0000000..fbc4c1a --- /dev/null +++ b/BuildScripts/dependencies.lua @@ -0,0 +1,31 @@ +-- environment directories +vulkan_sdk_env_dir = os.getenv("VULKAN_SDK") + +-- include directories +include_dirs = {} + +include_dirs["entt"] = "%{wks.location}/Dependencies/entt/"; +include_dirs["glad"] = "%{wks.location}/Dependencies/GLAD/include"; +include_dirs["glfw"] = "%{wks.location}/Dependencies/GLFW/include"; +include_dirs["glm"] = "%{wks.location}/Dependencies/glm"; +include_dirs["imgui"] = "%{wks.location}/Dependencies/imgui"; +include_dirs["imgui_backends"] = "%{wks.location}/Dependencies/imgui/backends"; +include_dirs["spdlog"] = "%{wks.location}/Dependencies/spdlog/include"; +include_dirs["stb_image"] = "%{wks.location}/Dependencies/stb_image"; +include_dirs["volk"] = "%{wks.location}/Dependencies/volk"; + +include_dirs["engine"] = "%{wks.location}/Engine/src/Engine"; +include_dirs["engine_platform_graphics"] = "%{wks.location}/Engine/src/Platform/GraphicsAPI"; +include_dirs["engine_platform_os"] = "%{wks.location}/Engine/src/Platform/OS"; + +include_dirs["vulkan_sdk"] = "%{vulkan_sdk_env_dir}/Include"; + +-- library directories +lib_dirs = {} +lib_dirs["vulkan_sdk"] = "%{vulkan_sdk_env_dir}/Lib/" + +-- libraries +libs = {} + +libs["shaderc"] = "%{vulkan_sdk_env_dir}/Lib/shaderc_shared.lib" +libs["spirv_cross"] = "%{vulkan_sdk_env_dir}/Lib/spirv-cross-core.lib" \ No newline at end of file diff --git a/Dependencies/GLAD/build.lua b/Dependencies/GLAD/build.lua index e792b05..9cda096 100644 --- a/Dependencies/GLAD/build.lua +++ b/Dependencies/GLAD/build.lua @@ -1,10 +1,10 @@ project "GLAD" + -- Output Directories -- location "%{wks.location}/Dependencies/GLAD" - -- Output Directories -- - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- kind "StaticLib" @@ -13,13 +13,14 @@ project "GLAD" -- Project Files --- files { - "**.c", - "**.h", + "src/glad.c", + "include/glad/glad.h", + "include/KHR/khrplatform.h", - "build.lua" + "%{prj.location}/build.lua", } - -- Dependencies -- + -- Includes -- includedirs { "%{prj.location}/include/" @@ -51,4 +52,4 @@ project "GLAD" -- distribution filter "configurations:Distribution" runtime "Release" - optimize "on" \ No newline at end of file + optimize "full" diff --git a/Dependencies/entt/build.lua b/Dependencies/entt/build.lua index bc10c38..d02725e 100644 --- a/Dependencies/entt/build.lua +++ b/Dependencies/entt/build.lua @@ -1,17 +1,15 @@ project "entt" + -- Output Directories -- location "%{wks.location}/Dependencies/entt" - -- Output Directories -- - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- kind "StaticLib" language "C++" cppdialect "C++17" - - optimize "on" -- Project Files --- files @@ -19,7 +17,7 @@ project "entt" "entt.cpp", "entt.hpp", - "build.lua" + "%{prj.location}/build.lua", } --- Filters --- @@ -33,4 +31,19 @@ project "entt" "_CRT_SECURE_NO_WARNINGS", } - flags { "MultiProcessorCompile" } \ No newline at end of file + flags { "MultiProcessorCompile" } + + -- debug + filter "configurations:Debug" + runtime "Debug" + symbols "on" + + -- release + filter "configurations:Release" + runtime "Release" + optimize "on" + + -- distribution + filter "configurations:Distribution" + runtime "Release" + optimize "full" diff --git a/Dependencies/stb_image/build.lua b/Dependencies/stb_image/build.lua index b93665c..3b5bf32 100644 --- a/Dependencies/stb_image/build.lua +++ b/Dependencies/stb_image/build.lua @@ -1,16 +1,14 @@ project "stb_image" + -- Output Directories -- location "%{wks.location}/Dependencies/stb_image" - -- Output Directories -- - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- kind "StaticLib" language "C" - - optimize "on" -- Project Files --- files @@ -18,7 +16,7 @@ project "stb_image" "stb_image.c", "stb_image.h", - "build.lua" + "%{prj.location}/build.lua", } --- Filters --- @@ -32,4 +30,19 @@ project "stb_image" "_CRT_SECURE_NO_WARNINGS", } - flags { "MultiProcessorCompile" } \ No newline at end of file + flags { "MultiProcessorCompile" } + + -- debug + filter "configurations:Debug" + runtime "Debug" + symbols "on" + + -- release + filter "configurations:Release" + runtime "Release" + optimize "on" + + -- distribution + filter "configurations:Distribution" + runtime "Release" + optimize "full" \ No newline at end of file diff --git a/Engine/build.lua b/Engine/build.lua index bc6173f..0b95d03 100644 --- a/Engine/build.lua +++ b/Engine/build.lua @@ -3,60 +3,57 @@ project "Engine" -- Output Directories -- location "%{wks.location}/Engine/" - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- - -- kind kind "StaticLib" - - -- language language "C++" cppdialect "C++17" - -- pch pchsource "src/Engine/ltpch.cpp" pchheader "ltpch.h" - -- Project Files --- + -- Project Files -- files { -- src "%{prj.location}/src/**.h", "%{prj.location}/src/**.cpp", - -- premake + -- res + "%{prj.location}/res/**", + + -- build.lua "%{prj.location}/build.lua", - - "%{prj.location}/res/**" } - -- Dependencies -- + -- Includes -- includedirs { -- engine - "%{prj.location}" , - "%{prj.location}/src" , - "%{prj.location}/src/Engine" , - "%{prj.location}/src/Platform/GraphicsAPI" , - "%{prj.location}/src/Platform/OS" , + "%{include_dirs.engine}", + "%{include_dirs.engine_platform_graphics}", + "%{include_dirs.engine_platform_os}", -- 3rd party - (dependenciesdir .. "spdlog/include/"), - (dependenciesdir .. "GLFW/include/"), - (dependenciesdir .. "GLAD/include"), - (dependenciesdir .. "imgui/backends"), - (dependenciesdir .. "imgui/"), - (dependenciesdir .. "stb_image/"), - (dependenciesdir .. "glm/"), - (dependenciesdir .. "entt/"), + "%{include_dirs.entt}", + "%{include_dirs.glad}", + "%{include_dirs.glfw}", + "%{include_dirs.glm}", + "%{include_dirs.imgui}", + "%{include_dirs.imgui_backends}", + "%{include_dirs.spdlog}", + "%{include_dirs.stb_image}", + "%{include_dirs.volk}", } + -- Links -- links { - "GLFW" , - "GLAD" , - "ImGui" , + "GLFW", + "GLAD", + "ImGui", "stb_image", "entt", } @@ -70,9 +67,9 @@ project "Engine" links { - "d3d11.lib" , - "dxguid.lib" , - "D3DCompiler.lib" , + "d3d11.lib", + "dxguid.lib", + "D3DCompiler.lib", } flags { "MultiProcessorCompile" } @@ -112,7 +109,7 @@ project "Engine" -- distribution filter "configurations:Distribution" defines "LIGHT_DIST" - optimize "on" + optimize "full" filter { "files:**.hlsl" } flags "ExcludeFromBuild" diff --git a/Engine/src/LightEngine.h b/Engine/src/Engine/LightEngine.h similarity index 100% rename from Engine/src/LightEngine.h rename to Engine/src/Engine/LightEngine.h diff --git a/Mirror/build.lua b/Mirror/build.lua index b1591e8..1a9f646 100644 --- a/Mirror/build.lua +++ b/Mirror/build.lua @@ -3,8 +3,8 @@ project "Mirror" -- Output Directories -- location "%{wks.location}/Mirror/" - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- kind "ConsoleApp" @@ -14,29 +14,35 @@ project "Mirror" -- Project Files --- files { + -- src "%{prj.location}/src/**.h", "%{prj.location}/src/**.cpp", + -- res + "%{prj.location}/res/**", + + -- build.lua "%{prj.location}/build.lua", } - -- Dependencies -- + -- Includes -- includedirs { - -- Engine - "%{wks.location}/Engine/src", - "%{wks.location}/Engine/src/Engine", - "%{wks.location}/Engine/src/Platform/GraphicsAPI", - "%{wks.location}/Engine/src/Platform/OS", + -- engine + "%{include_dirs.engine}", + "%{include_dirs.engine_platform_graphics}", + "%{include_dirs.engine_platform_os}", -- 3rd party - (dependenciesdir .. "spdlog/include/"), - (dependenciesdir .. "imgui/"), - (dependenciesdir .. "imgui/backends"), - (dependenciesdir .. "glm/"), - (dependenciesdir .. "entt/"), + "%{include_dirs.entt}", + "%{include_dirs.glm}", + "%{include_dirs.imgui}", + "%{include_dirs.imgui_backends}", + "%{include_dirs.spdlog}", + "%{include_dirs.stb_image}", } + -- Links -- links { "Engine", @@ -79,4 +85,4 @@ project "Mirror" -- distribution filter "configurations:Distribution" defines "LIGHT_DIST" - optimize "on" \ No newline at end of file + optimize "full" \ No newline at end of file diff --git a/Sandbox/build.lua b/Sandbox/build.lua index d1390eb..c954f80 100644 --- a/Sandbox/build.lua +++ b/Sandbox/build.lua @@ -3,8 +3,8 @@ project "Sandbox" -- Output Directories -- location "%{wks.location}/Sandbox/" - targetdir ("%{wks.location}/bin/" .. outputdir) - objdir ("%{wks.location}/bin-int/" .. outputdir) + targetdir (target_dir) + objdir (object_dir) -- Compiler -- kind "ConsoleApp" @@ -14,29 +14,35 @@ project "Sandbox" -- Project Files --- files { + -- src "%{prj.location}/src/**.h", "%{prj.location}/src/**.cpp", + -- res + "%{prj.location}/res/**", + + -- build.lua "%{prj.location}/build.lua", } - -- Dependencies -- + -- Includes -- includedirs { - -- Engine - "%{wks.location}/Engine/src", - "%{wks.location}/Engine/src/Engine", - "%{wks.location}/Engine/src/Platform/GraphicsAPI", - "%{wks.location}/Engine/src/Platform/OS", - + -- engine + "%{include_dirs.engine}", + "%{include_dirs.engine_platform_graphics}", + "%{include_dirs.engine_platform_os}", + -- 3rd party - (dependenciesdir .. "spdlog/include/"), - (dependenciesdir .. "imgui/"), - (dependenciesdir .. "imgui/backends"), - (dependenciesdir .. "glm/"), - (dependenciesdir .. "entt/"), + "%{include_dirs.entt}", + "%{include_dirs.glm}", + "%{include_dirs.imgui}", + "%{include_dirs.imgui_backends}", + "%{include_dirs.spdlog}", + "%{include_dirs.stb_image}", } + -- Links -- links { "Engine", @@ -79,4 +85,4 @@ project "Sandbox" -- distribution filter "configurations:Distribution" defines "LIGHT_DIST" - optimize "on" \ No newline at end of file + optimize "full" \ No newline at end of file