-- -- Copyright 2010-2016 Branimir Karadzic. All rights reserved. -- License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause -- newoption { trigger = "with-amalgamated", description = "Enable amalgamated build.", } newoption { trigger = "with-ovr", description = "Enable OculusVR integration.", } newoption { trigger = "with-sdl", description = "Enable SDL entry.", } newoption { trigger = "with-glfw", description = "Enable GLFW entry.", } newoption { trigger = "with-profiler", description = "Enable build with intrusive profiler.", } newoption { trigger = "with-scintilla", description = "Enable building with Scintilla editor.", } newoption { trigger = "with-shared-lib", description = "Enable building shared library.", } newoption { trigger = "with-tools", description = "Enable building tools.", } solution "bgfx" configurations { "Debug", "Release", } if _ACTION == "xcode4" then platforms { "Universal", } else platforms { "x32", "x64", -- "Xbox360", "Native", -- for targets where bitness is not specified } end language "C++" startproject "example-00-helloworld" BGFX_DIR = path.getabsolute("..") BX_DIR = os.getenv("BX_DIR") local BGFX_BUILD_DIR = path.join(BGFX_DIR, ".build") local BGFX_THIRD_PARTY_DIR = path.join(BGFX_DIR, "3rdparty") if not BX_DIR then BX_DIR = path.getabsolute(path.join(BGFX_DIR, "../bx")) end if not os.isdir(BX_DIR) then print("bx not found at " .. BX_DIR) print("For more info see: https://bkaradzic.github.io/bgfx/build.html") os.exit() end defines { "BX_CONFIG_ENABLE_MSVC_LEVEL4_WARNINGS=1" } dofile (path.join(BX_DIR, "scripts/toolchain.lua")) if not toolchain(BGFX_BUILD_DIR, BGFX_THIRD_PARTY_DIR) then return -- no action specified end function copyLib() end if _OPTIONS["with-sdl"] then if os.is("windows") then if not os.getenv("SDL2_DIR") then print("Set SDL2_DIR enviroment variable.") end end end if _OPTIONS["with-profiler"] then defines { "ENTRY_CONFIG_PROFILER=1", "BGFX_CONFIG_PROFILER_REMOTERY=1", "_WINSOCKAPI_" } end function exampleProject(_name) project ("example-" .. _name) uuid (os.uuid("example-" .. _name)) kind "WindowedApp" configuration {} debugdir (path.join(BGFX_DIR, "examples/runtime")) includedirs { path.join(BX_DIR, "include"), path.join(BGFX_DIR, "include"), path.join(BGFX_DIR, "3rdparty"), path.join(BGFX_DIR, "examples/common"), } files { path.join(BGFX_DIR, "examples", _name, "**.c"), path.join(BGFX_DIR, "examples", _name, "**.cpp"), path.join(BGFX_DIR, "examples", _name, "**.h"), } removefiles { path.join(BGFX_DIR, "examples", _name, "**.bin.h"), } links { "bgfx", "example-common", } if _OPTIONS["with-sdl"] then defines { "ENTRY_CONFIG_USE_SDL=1" } links { "SDL2" } configuration { "osx" } libdirs { "$(SDL2_DIR)/lib" } configuration {} end if _OPTIONS["with-glfw"] then defines { "ENTRY_CONFIG_USE_GLFW=1" } links { "glfw3" } configuration { "linux or freebsd" } links { "Xrandr", "Xinerama", "Xi", "Xxf86vm", "Xcursor", } configuration { "osx" } linkoptions { "-framework CoreVideo", "-framework IOKit", } configuration {} end if _OPTIONS["with-ovr"] then links { "winmm", "ws2_32", } -- Check for LibOVR 5.0+ if os.isdir(path.join(os.getenv("OVR_DIR"), "LibOVR/Lib/Windows/Win32/Debug/VS2012")) then configuration { "x32", "Debug" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/Windows/Win32/Debug", _ACTION) } configuration { "x32", "Release" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/Windows/Win32/Release", _ACTION) } configuration { "x64", "Debug" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/Windows/x64/Debug", _ACTION) } configuration { "x64", "Release" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/Windows/x64/Release", _ACTION) } configuration { "x32 or x64" } links { "libovr" } else configuration { "x32" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/Win32", _ACTION) } configuration { "x64" } libdirs { path.join("$(OVR_DIR)/LibOVR/Lib/x64", _ACTION) } configuration { "x32", "Debug" } links { "libovrd" } configuration { "x32", "Release" } links { "libovr" } configuration { "x64", "Debug" } links { "libovr64d" } configuration { "x64", "Release" } links { "libovr64" } end configuration {} end configuration { "vs*" } linkoptions { "/ignore:4199", -- LNK4199: /DELAYLOAD:*.dll ignored; no imports found from *.dll } links { -- this is needed only for testing with GLES2/3 on Windows with VS2008 "DelayImp", } configuration { "vs201*" } linkoptions { -- this is needed only for testing with GLES2/3 on Windows with VS201x "/DELAYLOAD:\"libEGL.dll\"", "/DELAYLOAD:\"libGLESv2.dll\"", } configuration { "mingw*" } targetextension ".exe" configuration { "vs20* or mingw*" } links { "gdi32", "psapi", } configuration { "winphone8* or winstore8*" } removelinks { "DelayImp", "gdi32", "psapi" } links { "d3d11", "dxgi" } 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 } -- WinRT targets need their own output directories or build files stomp over each other configuration { "x32", "winphone8* or winstore8*" } targetdir (path.join(BGFX_BUILD_DIR, "win32_" .. _ACTION, "bin", _name)) objdir (path.join(BGFX_BUILD_DIR, "win32_" .. _ACTION, "obj", _name)) configuration { "x64", "winphone8* or winstore8*" } targetdir (path.join(BGFX_BUILD_DIR, "win64_" .. _ACTION, "bin", _name)) objdir (path.join(BGFX_BUILD_DIR, "win64_" .. _ACTION, "obj", _name)) configuration { "ARM", "winphone8* or winstore8*" } targetdir (path.join(BGFX_BUILD_DIR, "arm_" .. _ACTION, "bin", _name)) objdir (path.join(BGFX_BUILD_DIR, "arm_" .. _ACTION, "obj", _name)) configuration { "mingw-clang" } kind "ConsoleApp" configuration { "android*" } kind "ConsoleApp" targetextension ".so" linkoptions { "-shared", } links { "EGL", "GLESv2", } configuration { "nacl*" } kind "ConsoleApp" targetextension ".nexe" links { "ppapi", "ppapi_gles2", "pthread", } configuration { "pnacl" } kind "ConsoleApp" targetextension ".pexe" links { "ppapi", "ppapi_gles2", "pthread", } configuration { "asmjs" } kind "ConsoleApp" targetextension ".bc" configuration { "linux-* or freebsd" } links { "X11", "GL", "pthread", } configuration { "rpi" } links { "X11", "GLESv2", "EGL", "bcm_host", "vcos", "vchiq_arm", "pthread", } configuration { "osx" } linkoptions { "-framework Cocoa", "-framework QuartzCore", "-framework OpenGL", "-weak_framework Metal", } configuration { "ios* or tvos*" } kind "ConsoleApp" linkoptions { "-framework CoreFoundation", "-framework Foundation", "-framework OpenGLES", "-framework UIKit", "-framework QuartzCore", "-weak_framework Metal", } configuration { "xcode4", "ios" } kind "WindowedApp" files { path.join(BGFX_DIR, "examples/runtime/iOS-Info.plist"), } configuration { "xcode4", "tvos" } kind "WindowedApp" files { path.join(BGFX_DIR, "examples/runtime/tvOS-Info.plist"), } configuration { "qnx*" } targetextension "" links { "EGL", "GLESv2", } configuration {} strip() end dofile "bgfx.lua" group "examples" dofile "example-common.lua" group "libs" bgfxProject("", "StaticLib", {}) group "examples" exampleProject("00-helloworld") exampleProject("01-cubes") exampleProject("02-metaballs") exampleProject("03-raymarch") exampleProject("04-mesh") exampleProject("05-instancing") exampleProject("06-bump") exampleProject("07-callback") exampleProject("08-update") exampleProject("09-hdr") exampleProject("10-font") exampleProject("11-fontsdf") exampleProject("12-lod") exampleProject("13-stencil") exampleProject("14-shadowvolumes") exampleProject("15-shadowmaps-simple") exampleProject("16-shadowmaps") exampleProject("17-drawstress") exampleProject("18-ibl") exampleProject("19-oit") exampleProject("20-nanovg") exampleProject("21-deferred") exampleProject("22-windows") exampleProject("23-vectordisplay") exampleProject("24-nbody") exampleProject("26-occlusion") exampleProject("27-terrain") -- C99 source doesn't compile under WinRT settings if not premake.vstudio.iswinrt() then exampleProject("25-c99") end if _OPTIONS["with-shared-lib"] then group "libs" bgfxProject("-shared-lib", "SharedLib", {}) end if _OPTIONS["with-tools"] then group "tools" dofile "makedisttex.lua" dofile "shaderc.lua" dofile "texturec.lua" dofile "geometryc.lua" end