diff --git a/premake/premake4.lua b/premake/premake4.lua index c504131c5..be3390f86 100644 --- a/premake/premake4.lua +++ b/premake/premake4.lua @@ -17,290 +17,13 @@ solution "bgfx" language "C++" -newoption { - trigger = "gcc", - value = "GCC", - description = "Choose GCC flavor", - allowed = { - { "emscripten", "Emscripten" }, - { "linux", "Linux" }, - { "mingw", "MinGW" }, - { "nacl", "Native Client" }, - { "pnacl", "Native Client - PNaCl" }, - } -} - --- Avoid error when invoking premake4 --help. -if (_ACTION == nil) then return end - BGFX_DIR = (path.getabsolute("..") .. "/") local BGFX_BUILD_DIR = (BGFX_DIR .. ".build/") local BGFX_THIRD_PARTY_DIR = (BGFX_DIR .. "3rdparty/") - BX_DIR = (BGFX_DIR .. "../bx/") -local XEDK = os.getenv("XEDK") -if not XEDK then XEDK = "" end - -location (BGFX_BUILD_DIR .. "projects/" .. _ACTION) - -if _ACTION == "clean" then - os.rmdir(BUILD_DIR) -end - -if _ACTION == "gmake" then - - if nil == _OPTIONS["gcc"] then - print("GCC flavor must be specified!") - os.exit(1) - end - - flags { - "ExtraWarnings", - } - - if "emscripten" == _OPTIONS["gcc"] then - - if not os.getenv("EMSCRIPTEN") then - print("Set EMSCRIPTEN enviroment variables.") - end - - premake.gcc.cc = "$(EMSCRIPTEN)/emcc" - premake.gcc.cxx = "$(EMSCRIPTEN)/em++" - premake.gcc.ar = "$(EMSCRIPTEN)/emar" - location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-emscripten") - end - - if "linux" == _OPTIONS["gcc"] then - location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-linux") - end - - if "mingw" == _OPTIONS["gcc"] then - premake.gcc.cc = "$(MINGW)/bin/mingw32-gcc" - premake.gcc.cxx = "$(MINGW)/bin/mingw32-g++" - premake.gcc.ar = "$(MINGW)/bin/ar" - location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-mingw") - end - - if "nacl" == _OPTIONS["gcc"] then - - if not os.getenv("NACL") then - print("Set NACL enviroment variables.") - end - - premake.gcc.cc = "$(NACL)/bin/x86_64-nacl-gcc" - premake.gcc.cxx = "$(NACL)/bin/x86_64-nacl-g++" - premake.gcc.ar = "$(NACL)/bin/x86_64-nacl-ar" - location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-nacl") - end - - if "pnacl" == _OPTIONS["gcc"] then - - if not os.getenv("PNACL") then - print("Set PNACL enviroment variables.") - end - - premake.gcc.cc = "$(PNACL)/bin/pnacl-clang" - premake.gcc.cxx = "$(PNACL)/bin/pnacl-clang++" - premake.gcc.ar = "$(PNACL)/bin/pnacl-ar" - location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-pnacl") - end -end - -flags { - "StaticRuntime", - "NoMinimalRebuild", - "NoPCH", - "NativeWChar", - "NoRTTI", - "NoExceptions", - "NoEditAndContinue", - "Symbols", -} - -defines { - "__STDC_LIMIT_MACROS", - "__STDC_FORMAT_MACROS", - "__STDC_CONSTANT_MACROS", -} - -configuration "Debug" - targetsuffix "Debug" - -configuration "Release" - flags { - "OptimizeSpeed", - } - targetsuffix "Release" - -configuration { "vs*" } - includedirs { BX_DIR .. "include/compat/msvc" } - defines { - "WIN32", - "_WIN32", - "_HAS_EXCEPTIONS=0", - "_HAS_ITERATOR_DEBUGGING=0", - "_SCL_SECURE=0", - "_SECURE_SCL=0", - "_SCL_SECURE_NO_WARNINGS", - "_CRT_SECURE_NO_WARNINGS", - "_CRT_SECURE_NO_DEPRECATE", - } - buildoptions { - "/Oy-", -- Suppresses creation of frame pointers on the call stack. - "/Ob2", -- The Inline Function Expansion - } - -configuration { "x32", "vs*" } - targetdir (BGFX_BUILD_DIR .. "win32_" .. _ACTION .. "/bin") - objdir (BGFX_BUILD_DIR .. "win32_" .. _ACTION .. "/obj") - libdirs { - BGFX_THIRD_PARTY_DIR .. "lib/win32_" .. _ACTION, - "$(DXSDK_DIR)/lib/x86", - } - -configuration { "x64", "vs*" } - defines { "_WIN64" } - targetdir (BGFX_BUILD_DIR .. "win64_" .. _ACTION .. "/bin") - objdir (BGFX_BUILD_DIR .. "win64_" .. _ACTION .. "/obj") - libdirs { - BGFX_THIRD_PARTY_DIR .. "lib/win64_" .. _ACTION, - "$(DXSDK_DIR)/lib/x64", - } - -configuration { "mingw" } - defines { "WIN32" } - includedirs { BX_DIR .. "include/compat/mingw" } - buildoptions { - "-std=c++0x", - "-U__STRICT_ANSI__", - "-Wunused-value", - "-fdata-sections", - "-ffunction-sections", --- "-fmerge-all-constants" - } - linkoptions { - "-Wl,--gc-sections", - } - -configuration { "x32", "mingw" } - targetdir (BGFX_BUILD_DIR .. "win32_mingw" .. "/bin") - objdir (BGFX_BUILD_DIR .. "win32_mingw" .. "/obj") - libdirs { - BGFX_THIRD_PARTY_DIR .. "lib/win32_mingw", - "$(DXSDK_DIR)/lib/x86", - } - buildoptions { "-m32" } - -configuration { "x64", "mingw" } - targetdir (BGFX_BUILD_DIR .. "win64_mingw" .. "/bin") - objdir (BGFX_BUILD_DIR .. "win64_mingw" .. "/obj") - libdirs { - BGFX_THIRD_PARTY_DIR .. "lib/win64_mingw", - "$(DXSDK_DIR)/lib/x64", - } - buildoptions { "-m64" } - -configuration { "linux" } - buildoptions { - "-std=c++0x", - "-U__STRICT_ANSI__", - "-Wunused-value", - "-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic. - "-msse2", - } - links { - "rt", - } - linkoptions { - "-Wl,--gc-sections", - } - -configuration { "linux", "x32" } - targetdir (BGFX_BUILD_DIR .. "linux32_gcc" .. "/bin") - objdir (BGFX_BUILD_DIR .. "linux32_gcc" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/linux32_gcc" } - buildoptions { - "-m32", - } - -configuration { "linux", "x64" } - targetdir (BGFX_BUILD_DIR .. "linux64_gcc" .. "/bin") - objdir (BGFX_BUILD_DIR .. "linux64_gcc" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/linux64_gcc" } - buildoptions { - "-m64", - } - -configuration { "emscripten" } - targetdir (BGFX_BUILD_DIR .. "emscripten" .. "/bin") - objdir (BGFX_BUILD_DIR .. "emscripten" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/emscripten" } - includedirs { "$(EMSCRIPTEN)/system/include" } - buildoptions { - "-pthread", - } - -configuration { "nacl" } - defines { "_BSD_SOURCE=1", "_POSIX_C_SOURCE=199506", "_XOPEN_SOURCE=600" } - includedirs { BX_DIR .. "include/compat/nacl" } - buildoptions { - "-std=c++0x", - "-U__STRICT_ANSI__", - "-pthread", - "-fno-stack-protector", - "-fdiagnostics-show-option", - "-Wunused-value", - "-fdata-sections", - "-ffunction-sections", - "-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic. - "-msse2", --- "-fmerge-all-constants", - } - linkoptions { - "-Wl,--gc-sections", - } - -configuration { "x32", "nacl" } - targetdir (BGFX_BUILD_DIR .. "nacl-x86" .. "/bin") - objdir (BGFX_BUILD_DIR .. "nacl-x86" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/nacl-x86" } - linkoptions { "-melf32_nacl" } - -configuration { "x64", "nacl" } - targetdir (BGFX_BUILD_DIR .. "nacl-x64" .. "/bin") - objdir (BGFX_BUILD_DIR .. "nacl-x64" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/nacl-x64" } - linkoptions { "-melf64_nacl" } - -configuration { "pnacl" } - defines { "_BSD_SOURCE=1", "_POSIX_C_SOURCE=199506", "_XOPEN_SOURCE=600", "__native_client__", "__LITTLE_ENDIAN__" } - includedirs { BX_DIR .. "include/compat/nacl" } - buildoptions { - "-std=c++0x", - "-U__STRICT_ANSI__", - "-fno-stack-protector", - "-fdiagnostics-show-option", - "-Wunused-value", - "-fdata-sections", - "-ffunction-sections", - } - targetdir (BGFX_BUILD_DIR .. "pnacl" .. "/bin") - objdir (BGFX_BUILD_DIR .. "pnacl" .. "/obj") - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/pnacl" } - includedirs { "$(PNACL)/sysroot/include" } - -configuration { "Xbox360" } - targetdir (BGFX_BUILD_DIR .. "xbox360" .. "/bin") - objdir (BGFX_BUILD_DIR .. "xbox360" .. "/obj") - includedirs { BX_DIR .. "include/compat/msvc" } - libdirs { BGFX_THIRD_PARTY_DIR .. "lib/xbox360" } - defines { - "NOMINMAX", - "_XBOX", - } - -configuration {} -- reset configuration +dofile (BX_DIR .. "premake/toolchain.lua") +toolchain(BGFX_BUILD_DIR, BGFX_THIRD_PARTY_DIR) function copyLib() end