diff options
Diffstat (limited to '3rdparty/bgfx/scripts/bgfx.lua')
-rw-r--r-- | 3rdparty/bgfx/scripts/bgfx.lua | 397 |
1 files changed, 267 insertions, 130 deletions
diff --git a/3rdparty/bgfx/scripts/bgfx.lua b/3rdparty/bgfx/scripts/bgfx.lua index ed06cf7e564..e9fecc97d21 100644 --- a/3rdparty/bgfx/scripts/bgfx.lua +++ b/3rdparty/bgfx/scripts/bgfx.lua @@ -1,6 +1,6 @@ -- --- Copyright 2010-2018 Branimir Karadzic. All rights reserved. --- License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause +-- Copyright 2010-2022 Branimir Karadzic. All rights reserved. +-- License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE -- function filesexist(_srcPath, _dstPath, _files) @@ -35,181 +35,318 @@ function overridefiles(_srcPath, _dstPath, _files) } end -function bgfxProject(_name, _kind, _defines) - project ("bgfx" .. _name) - uuid (os.uuid("bgfx" .. _name)) - bgfxProjectBase(_kind, _defines) - copyLib() -end - function bgfxProjectBase(_kind, _defines) - kind (_kind) - if _kind == "SharedLib" then - defines { - "BGFX_SHARED_LIB_BUILD=1", + kind (_kind) + + if _kind == "SharedLib" then + defines { + "BGFX_SHARED_LIB_BUILD=1", + } + + links { + "bimg", + } + + configuration { "vs20* or mingw*" } + links { + "gdi32", + "psapi", + } + + configuration { "mingw*" } + linkoptions { + "-shared", } + configuration { "linux-*" } + buildoptions { + "-fPIC", + } links { - "bimg", - "bx", + "X11", + "GL", + "pthread", } - configuration { "vs20* or mingw*" } - links { - "gdi32", - "psapi", - } + configuration { "android*" } + targetextension ".so" - configuration { "mingw*" } - linkoptions { - "-shared", - } + configuration { "android*" ,"Debug"} + linkoptions { + "-Wl,-soname,libbgfx-shared-libDebug.so", + } - configuration { "linux-*" } - buildoptions { - "-fPIC", - } + configuration { "android*" ,"Release"} + linkoptions { + "-Wl,-soname,libbgfx-shared-libRelease.so", + } - configuration {} - end + configuration {} + else + configuration { "android*" } + linkoptions { + "-Wl,--fix-cortex-a8", + } + configuration {} + end + + includedirs { + path.join(BGFX_DIR, "3rdparty"), + path.join(BIMG_DIR, "include"), + } + + defines (_defines) + + using_bx() + + if _OPTIONS["with-glfw"] then + defines { + "BGFX_CONFIG_MULTITHREADED=0", + } + end + + configuration { "linux-*" } includedirs { - path.join(BGFX_DIR, "3rdparty"), - path.join(BX_DIR, "include"), - path.join(BIMG_DIR, "include"), + path.join(BGFX_DIR, "3rdparty/directx-headers/include/directx"), + path.join(BGFX_DIR, "3rdparty/directx-headers/include"), + path.join(BGFX_DIR, "3rdparty/directx-headers/include/wsl/stubs"), } - defines { - _defines, + configuration { "vs* or mingw*", "not durango" } + includedirs { + path.join(BGFX_DIR, "3rdparty/directx-headers/include/directx"), } + configuration { "android*" } links { - "bx", + "EGL", + "GLESv2", } - if _OPTIONS["with-glfw"] then - defines { - "BGFX_CONFIG_MULTITHREADED=0", - } - end + configuration { "winstore*" } + linkoptions { + "/ignore:4264" -- LNK4264: archiving object file compiled with /ZW into a static library; note that when authoring Windows Runtime types it is not recommended to link with a static library that contains Windows Runtime metadata + } + + configuration { "*clang*" } + buildoptions { + "-Wno-microsoft-enum-value", -- enumerator value is not representable in the underlying type 'int' + "-Wno-microsoft-const-init", -- default initialization of an object of const type '' without a user-provided default constructor is a Microsoft extension + } + + configuration { "osx*" } + buildoptions { "-x objective-c++" } -- additional build option for osx + linkoptions { + "-framework Cocoa", + "-framework IOKit", + "-framework OpenGL", + "-framework QuartzCore", + "-weak_framework Metal", + "-weak_framework MetalKit", + } + + configuration { "not NX32", "not NX64" } + includedirs { + -- NX has EGL headers modified... + path.join(BGFX_DIR, "3rdparty/khronos"), + } + + configuration {} + + includedirs { + path.join(BGFX_DIR, "include"), + } + + files { + path.join(BGFX_DIR, "include/**.h"), + path.join(BGFX_DIR, "src/**.cpp"), + path.join(BGFX_DIR, "src/**.h"), + path.join(BGFX_DIR, "scripts/**.natvis"), + } - configuration { "Debug" } + removefiles { + path.join(BGFX_DIR, "src/**.bin.h"), + } + + overridefiles(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-agc"), { + path.join(BGFX_DIR, "src/renderer_agc.cpp"), + path.join(BGFX_DIR, "src/renderer_agc.h"), + }) + + overridefiles(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-gnm"), { + path.join(BGFX_DIR, "src/renderer_gnm.cpp"), + path.join(BGFX_DIR, "src/renderer_gnm.h"), + }) + + overridefiles(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-nvn"), { + path.join(BGFX_DIR, "src/renderer_nvn.cpp"), + path.join(BGFX_DIR, "src/renderer_nvn.h"), + }) + + if _OPTIONS["with-webgpu"] then + defines { + "BGFX_CONFIG_RENDERER_WEBGPU=1", + "BGFX_CONFIG_DEBUG_ANNOTATION=0", -- does not work + } + + local generator = "out/Cmake" + + configuration { "wasm*" } defines { - "BGFX_CONFIG_DEBUG=1", + "BGFX_CONFIG_RENDERER_OPENGL=0", + "BGFX_CONFIG_RENDERER_OPENGLES=0", } - configuration { "vs* or mingw*", "not durango" } + configuration { "not wasm*" } includedirs { - path.join(BGFX_DIR, "3rdparty/dxsdk/include"), + path.join(DAWN_DIR, "src/include"), + path.join(DAWN_DIR, "third_party/vulkan-deps/vulkan-headers/src/include"), + path.join(DAWN_DIR, generator, "gen/src/include"), } - configuration { "android*" } - links { - "EGL", - "GLESv2", + files { + path.join(DAWN_DIR, generator, "gen/src/dawn/webgpu_cpp.cpp"), } + configuration { "vs*" } + defines { + "NTDDI_VERSION=NTDDI_WIN10_RS2", - configuration { "winstore*" } - linkoptions { - "/ignore:4264" -- LNK4264: archiving object file compiled with /ZW into a static library; note that when authoring Windows Runtime types it is not recommended to link with a static library that contains Windows Runtime metadata + -- We can't say `=_WIN32_WINNT_WIN10` here because some files do + -- `#if WINVER < 0x0600` without including windows.h before, + -- and then _WIN32_WINNT_WIN10 isn't yet known to be 0x0A00. + "_WIN32_WINNT=0x0A00", + "WINVER=0x0A00", } - configuration { "*clang*" } - buildoptions { - "-Wno-microsoft-enum-value", -- enumerator value is not representable in the underlying type 'int' - "-Wno-microsoft-const-init", -- default initialization of an object of const type '' without a user-provided default constructor is a Microsoft extension + configuration {} + end + + if _OPTIONS["with-amalgamated"] then + excludes { + path.join(BGFX_DIR, "src/bgfx.cpp"), + path.join(BGFX_DIR, "src/debug_**.cpp"), + path.join(BGFX_DIR, "src/dxgi.cpp"), + path.join(BGFX_DIR, "src/glcontext_**.cpp"), + path.join(BGFX_DIR, "src/hmd**.cpp"), + path.join(BGFX_DIR, "src/image.cpp"), + path.join(BGFX_DIR, "src/nvapi.cpp"), + path.join(BGFX_DIR, "src/renderer_**.cpp"), + path.join(BGFX_DIR, "src/shader**.cpp"), + path.join(BGFX_DIR, "src/topology.cpp"), + path.join(BGFX_DIR, "src/vertexlayout.cpp"), + } + + configuration { "xcode* or osx* or ios*" } + files { + path.join(BGFX_DIR, "src/amalgamated.mm"), } - configuration { "osx" } - linkoptions { - "-framework Cocoa", - "-framework QuartzCore", - "-framework OpenGL", - "-weak_framework Metal", - "-weak_framework MetalKit", + excludes { + path.join(BGFX_DIR, "src/glcontext_**.mm"), + path.join(BGFX_DIR, "src/renderer_**.mm"), + path.join(BGFX_DIR, "src/amalgamated.cpp"), } - configuration { "not linux-steamlink", "not NX32", "not NX64" } - includedirs { - -- steamlink has EGL headers modified... - -- NX has EGL headers modified... - path.join(BGFX_DIR, "3rdparty/khronos"), + configuration { "not (xcode* or osx* or ios*)" } + excludes { + path.join(BGFX_DIR, "src/**.mm"), } - configuration { "linux-steamlink" } - defines { - "EGL_API_FB", + configuration {} + + else + configuration { "xcode* or osx* or ios*" } + files { + path.join(BGFX_DIR, "src/glcontext_**.mm"), + path.join(BGFX_DIR, "src/renderer_**.mm"), } configuration {} - includedirs { - path.join(BGFX_DIR, "include"), + excludes { + path.join(BGFX_DIR, "src/amalgamated.**"), } + end - files { - path.join(BGFX_DIR, "include/**.h"), - path.join(BGFX_DIR, "src/**.cpp"), - path.join(BGFX_DIR, "src/**.h"), - path.join(BGFX_DIR, "scripts/**.natvis"), - } + if filesexist(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-gnm"), { + path.join(BGFX_DIR, "scripts/bgfx.lua"), }) then - removefiles { - path.join(BGFX_DIR, "src/**.bin.h"), - } + dofile(path.join(BGFX_DIR, "../bgfx-gnm/scripts/bgfx.lua") ) + end - overridefiles(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-ext"), { - path.join(BGFX_DIR, "src/renderer_gnm.cpp"), - path.join(BGFX_DIR, "src/renderer_gnm.h"), - }) + if filesexist(BGFX_DIR, path.join(BGFX_DIR, "../bgfx-nvn"), { + path.join(BGFX_DIR, "scripts/bgfx.lua"), }) then - if _OPTIONS["with-amalgamated"] then - excludes { - path.join(BGFX_DIR, "src/bgfx.cpp"), - path.join(BGFX_DIR, "src/debug_**.cpp"), - path.join(BGFX_DIR, "src/dxgi.cpp"), - path.join(BGFX_DIR, "src/glcontext_**.cpp"), - path.join(BGFX_DIR, "src/hmd**.cpp"), - path.join(BGFX_DIR, "src/image.cpp"), - path.join(BGFX_DIR, "src/nvapi.cpp"), - path.join(BGFX_DIR, "src/renderer_**.cpp"), - path.join(BGFX_DIR, "src/shader**.cpp"), - path.join(BGFX_DIR, "src/topology.cpp"), - path.join(BGFX_DIR, "src/vertexdecl.cpp"), - } - - configuration { "xcode* or osx or ios*" } - files { - path.join(BGFX_DIR, "src/amalgamated.mm"), - } - - excludes { - path.join(BGFX_DIR, "src/glcontext_**.mm"), - path.join(BGFX_DIR, "src/renderer_**.mm"), - path.join(BGFX_DIR, "src/amalgamated.cpp"), - } - - configuration { "not (xcode* or osx or ios*)" } - excludes { - path.join(BGFX_DIR, "src/**.mm"), - } - - configuration {} - - else - configuration { "xcode* or osx or ios*" } - files { - path.join(BGFX_DIR, "src/glcontext_**.mm"), - path.join(BGFX_DIR, "src/renderer_**.mm"), - } - - configuration {} + dofile(path.join(BGFX_DIR, "../bgfx-nvn/scripts/bgfx.lua") ) + end - excludes { - path.join(BGFX_DIR, "src/amalgamated.**"), + configuration {} +end + +function bgfxProject(_name, _kind, _defines) + + project ("bgfx" .. _name) + uuid (os.uuid("bgfx" .. _name)) + + bgfxProjectBase(_kind, _defines) + + copyLib() +end + +if _OPTIONS["with-webgpu"] then + function usesWebGPU() + configuration { "wasm*" } + linkoptions { + "-s USE_WEBGPU=1", + } + + configuration { "not wasm*" } + local generator = "out/Cmake" + + includedirs { + path.join(DAWN_DIR, "src/include"), + path.join(DAWN_DIR, generator, "gen/src/include"), + } + + libdirs { + path.join(DAWN_DIR, generator), + path.join(DAWN_DIR, generator, "src/common/Debug"), + path.join(DAWN_DIR, generator, "src/dawn/Debug"), + path.join(DAWN_DIR, generator, "src/dawn_native/Debug"), + path.join(DAWN_DIR, generator, "src/dawn_platform/Debug"), + path.join(DAWN_DIR, generator, "third_party/tint/src/Debug"), + path.join(DAWN_DIR, generator, "third_party/vulkan-deps/spirv-tools/src/source/Debug"), + path.join(DAWN_DIR, generator, "third_party/vulkan-deps/spirv-tools/src/source/opt/Debug"), + path.join(DAWN_DIR, generator, "third_party/vulkan-deps/spirv-cross/src/Debug"), + } + + links { + -- shared + --"dawn_proc_shared", + --"dawn_native_shared", + --"shaderc_spvc_shared", + -- static + "dawn_common", + "dawn_proc", + "dawn_native", + "dawn_platform", + ----"shaderc", + "tint", + "SPIRV-Tools", + "SPIRV-Tools-opt", + "spirv-cross-cored", + "spirv-cross-hlsld", + "spirv-cross-glsld", + "spirv-cross-msld", + --"spirv-cross-reflectd", + } + + removeflags { + "FatalWarnings", } - end configuration {} + end end |