2016-08-29 22:31:11 +02:00
--
2018-02-03 17:39:28 +01:00
-- Copyright 2010-2018 Branimir Karadzic. All rights reserved.
2016-08-29 22:31:11 +02:00
-- 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. " ,
}
2018-02-03 17:39:28 +01:00
newoption {
trigger = " with-combined-examples " ,
description = " Enable building examples (combined as single executable). " ,
}
2016-11-10 21:53:08 +01:00
newoption {
trigger = " with-examples " ,
description = " Enable building examples. " ,
}
2016-08-29 22:31:11 +02:00
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 "
MODULE_DIR = path.getabsolute ( " ../ " )
BGFX_DIR = path.getabsolute ( " .. " )
BX_DIR = os.getenv ( " BX_DIR " )
2018-02-03 17:39:28 +01:00
BIMG_DIR = os.getenv ( " BIMG_DIR " )
2016-08-29 22:31:11 +02:00
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
2018-02-03 17:39:28 +01:00
if not BIMG_DIR then
BIMG_DIR = path.getabsolute ( path.join ( BGFX_DIR , " ../bimg " ) )
end
if not os.isdir ( BX_DIR ) or not os.isdir ( BIMG_DIR ) then
if not os.isdir ( BX_DIR ) then
print ( " bx not found at " .. BX_DIR )
end
if not os.isdir ( BIMG_DIR ) then
print ( " bimg not found at " .. BIMG_DIR )
end
2016-08-29 22:31:11 +02:00
print ( " For more info see: https://bkaradzic.github.io/bgfx/build.html " )
os.exit ( )
end
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 " ,
2018-02-03 17:39:28 +01:00
" BGFX_CONFIG_PROFILER=1 " ,
2016-08-29 22:31:11 +02:00
}
end
2018-02-03 17:39:28 +01:00
function exampleProjectDefaults ( )
2016-08-29 22:31:11 +02:00
debugdir ( path.join ( BGFX_DIR , " examples/runtime " ) )
includedirs {
path.join ( BX_DIR , " include " ) ,
2017-04-11 09:15:27 +02:00
path.join ( BIMG_DIR , " include " ) ,
2016-08-29 22:31:11 +02:00
path.join ( BGFX_DIR , " include " ) ,
path.join ( BGFX_DIR , " 3rdparty " ) ,
path.join ( BGFX_DIR , " examples/common " ) ,
}
2017-04-11 08:16:10 +02:00
flags {
" FatalWarnings " ,
}
2016-08-29 22:31:11 +02:00
links {
" example-common " ,
2018-02-03 17:39:28 +01:00
" example-glue " ,
2017-04-11 08:16:10 +02:00
" bgfx " ,
2017-04-11 09:15:27 +02:00
" bimg_decode " ,
" bimg " ,
2017-04-11 08:16:10 +02:00
" bx " ,
2016-08-29 22:31:11 +02:00
}
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
configuration { " x32 " }
libdirs { path.join ( " $(OVR_DIR)/LibOVR/Lib/Windows/Win32/Release " , _ACTION ) }
configuration { " x64 " }
libdirs { path.join ( " $(OVR_DIR)/LibOVR/Lib/Windows/x64/Release " , _ACTION ) }
configuration { " x32 or x64 " }
links { " libovr " }
configuration { }
end
configuration { " vs* " , " x32 or x64 " }
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* " , " x32 or x64 " }
linkoptions { -- this is needed only for testing with GLES2/3 on Windows with VS201x
" /DELAYLOAD: \" libEGL.dll \" " ,
" /DELAYLOAD: \" libGLESv2.dll \" " ,
}
configuration { " mingw* " }
targetextension " .exe "
links {
" gdi32 " ,
" psapi " ,
}
configuration { " vs20* " , " x32 or x64 " }
links {
" gdi32 " ,
" psapi " ,
}
configuration { " durango " }
links {
" d3d11_x " ,
" d3d12_x " ,
" combase " ,
" kernelx " ,
}
2018-02-03 17:39:28 +01:00
configuration { " winstore* " }
2016-08-29 22:31:11 +02:00
removelinks {
" DelayImp " ,
" gdi32 " ,
" psapi "
}
links {
" d3d11 " ,
2018-02-03 17:39:28 +01:00
" d3d12 " ,
2016-08-29 22:31:11 +02:00
" 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
2018-02-03 17:39:28 +01:00
configuration { " x32 " , " winstore* " }
2016-08-29 22:31:11 +02:00
targetdir ( path.join ( BGFX_BUILD_DIR , " win32_ " .. _ACTION , " bin " , _name ) )
objdir ( path.join ( BGFX_BUILD_DIR , " win32_ " .. _ACTION , " obj " , _name ) )
2018-02-03 17:39:28 +01:00
configuration { " x64 " , " winstore* " }
2016-08-29 22:31:11 +02:00
targetdir ( path.join ( BGFX_BUILD_DIR , " win64_ " .. _ACTION , " bin " , _name ) )
objdir ( path.join ( BGFX_BUILD_DIR , " win64_ " .. _ACTION , " obj " , _name ) )
2018-02-03 17:39:28 +01:00
configuration { " ARM " , " winstore* " }
2016-08-29 22:31:11 +02:00
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 { " asmjs " }
kind " ConsoleApp "
targetextension " .bc "
configuration { " linux-* or freebsd " , " not linux-steamlink " }
links {
" X11 " ,
" GL " ,
" pthread " ,
}
configuration { " linux-steamlink " }
links {
" EGL " ,
" GLESv2 " ,
" SDL2 " ,
" pthread " ,
}
configuration { " rpi " }
links {
" X11 " ,
2018-02-03 17:39:28 +01:00
" brcmGLESv2 " ,
" brcmEGL " ,
2016-08-29 22:31:11 +02:00
" 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 " ) ,
}
2018-02-03 17:39:28 +01:00
2016-08-29 22:31:11 +02:00
configuration { " qnx* " }
targetextension " "
links {
" EGL " ,
" GLESv2 " ,
}
configuration { }
strip ( )
end
2018-02-03 17:39:28 +01:00
function exampleProject ( _combined , ... )
if _combined then
project ( " examples " )
uuid ( os.uuid ( " examples " ) )
kind " WindowedApp "
for _ , name in ipairs ( { ... } ) do
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 " ) ,
}
end
files {
path.join ( BGFX_DIR , " examples/25-c99/helloworld.c " ) , -- hack for _main_
}
exampleProjectDefaults ( )
else
for _ , name in ipairs ( { ... } ) do
project ( " example- " .. name )
uuid ( os.uuid ( " example- " .. name ) )
kind " WindowedApp "
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 " ) ,
}
defines {
" ENTRY_CONFIG_IMPLEMENT_MAIN=1 " ,
}
exampleProjectDefaults ( )
end
end
end
2016-08-29 22:31:11 +02:00
dofile " bgfx.lua "
group " libs "
bgfxProject ( " " , " StaticLib " , { } )
2017-04-11 09:15:27 +02:00
dofile ( path.join ( BX_DIR , " scripts/bx.lua " ) )
dofile ( path.join ( BIMG_DIR , " scripts/bimg.lua " ) )
dofile ( path.join ( BIMG_DIR , " scripts/bimg_decode.lua " ) )
2017-04-11 08:16:10 +02:00
2018-02-03 17:39:28 +01:00
if _OPTIONS [ " with-tools " ] then
dofile ( path.join ( BIMG_DIR , " scripts/bimg_encode.lua " ) )
end
if _OPTIONS [ " with-examples " ]
or _OPTIONS [ " with-combined-examples " ]
or _OPTIONS [ " with-tools " ] then
2016-11-10 21:53:08 +01:00
group " examples "
dofile " example-common.lua "
end
2018-02-03 17:39:28 +01:00
if _OPTIONS [ " with-examples " ]
or _OPTIONS [ " with-combined-examples " ] then
2016-11-10 21:53:08 +01:00
group " examples "
2018-02-03 17:39:28 +01:00
exampleProject ( _OPTIONS [ " with-combined-examples " ]
, " 00-helloworld "
, " 01-cubes "
, " 02-metaballs "
, " 03-raymarch "
, " 04-mesh "
, " 05-instancing "
, " 06-bump "
, " 07-callback "
, " 08-update "
, " 09-hdr "
, " 10-font "
, " 11-fontsdf "
, " 12-lod "
, " 13-stencil "
, " 14-shadowvolumes "
, " 15-shadowmaps-simple "
, " 16-shadowmaps "
, " 17-drawstress "
, " 18-ibl "
, " 19-oit "
, " 20-nanovg "
, " 21-deferred "
, " 22-windows "
, " 23-vectordisplay "
, " 24-nbody "
, " 26-occlusion "
, " 27-terrain "
, " 28-wireframe "
, " 29-debugdraw "
, " 30-picking "
, " 31-rsm "
, " 32-particles "
, " 33-pom "
, " 34-mvs "
, " 35-dynamic "
, " 36-sky "
)
2016-11-10 21:53:08 +01:00
-- C99 source doesn't compile under WinRT settings
if not premake.vstudio . iswinrt ( ) then
2018-02-03 17:39:28 +01:00
exampleProject ( false , " 25-c99 " )
2016-11-10 21:53:08 +01:00
end
2016-08-29 22:31:11 +02:00
end
if _OPTIONS [ " with-shared-lib " ] then
group " libs "
bgfxProject ( " -shared-lib " , " SharedLib " , { } )
end
if _OPTIONS [ " with-tools " ] then
group " tools "
dofile " shaderc.lua "
dofile " texturec.lua "
dofile " texturev.lua "
dofile " geometryc.lua "
end