premake4.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. --
  2. -- Copyright 2010-2011 Branimir Karadzic. All rights reserved.
  3. -- License: http://www.opensource.org/licenses/BSD-2-Clause
  4. --
  5. solution "bgfx"
  6. configurations {
  7. "Debug",
  8. "Release",
  9. }
  10. platforms {
  11. "x32",
  12. "x64",
  13. "Xbox360",
  14. }
  15. language "C++"
  16. newoption {
  17. trigger = "gcc",
  18. value = "GCC",
  19. description = "Choose GCC flavor",
  20. allowed = {
  21. { "mingw", "MinGW" },
  22. { "nacl", "Google Native Client" },
  23. }
  24. }
  25. -- Avoid error when invoking premake4 --help.
  26. if (_ACTION == nil) then return end
  27. BGFX_DIR = (path.getabsolute("..") .. "/")
  28. local BGFX_BUILD_DIR = (BGFX_DIR .. ".build/")
  29. local BGFX_THIRD_PARTY_DIR = (BGFX_DIR .. "3rdparty/")
  30. local XEDK = os.getenv("XEDK")
  31. if not XEDK then XEDK = "<you must install XBOX SDK>" end
  32. location (BGFX_BUILD_DIR .. "projects/" .. _ACTION)
  33. if _ACTION == "gmake" then
  34. flags {
  35. "ExtraWarnings",
  36. }
  37. if "linux" ~= os.get() and nil == _OPTIONS["gcc"] then
  38. print("GCC flavor must be specified!")
  39. os.exit(1)
  40. end
  41. if "mingw" == _OPTIONS["gcc"] then
  42. premake.gcc.cc = "$(MINGW)/bin/mingw32-gcc"
  43. premake.gcc.cxx = "$(MINGW)/bin/mingw32-g++"
  44. premake.gcc.ar = "$(MINGW)/bin/ar"
  45. end
  46. if "nacl" == _OPTIONS["gcc"] then
  47. if not os.getenv("NACL") then
  48. print("Set NACL enviroment variables.")
  49. end
  50. premake.gcc.cc = "$(NACL)/bin/x86_64-nacl-gcc"
  51. premake.gcc.cxx = "$(NACL)/bin/x86_64-nacl-g++"
  52. premake.gcc.ar = "$(NACL)/bin/x86_64-nacl-ar"
  53. location (BGFX_BUILD_DIR .. "projects/" .. _ACTION .. "-nacl")
  54. end
  55. end
  56. flags {
  57. "StaticRuntime",
  58. "NoMinimalRebuild",
  59. "NoPCH",
  60. "NativeWChar",
  61. "NoRTTI",
  62. "NoExceptions",
  63. "NoEditAndContinue",
  64. "Symbols",
  65. }
  66. configuration "Debug"
  67. targetsuffix "Debug"
  68. configuration "Release"
  69. flags {
  70. "OptimizeSpeed",
  71. }
  72. targetsuffix "Release"
  73. configuration { "vs*" }
  74. defines {
  75. "_HAS_EXCEPTIONS=0",
  76. "_HAS_ITERATOR_DEBUGGING=0",
  77. "_SCL_SECURE=0",
  78. "_CRT_SECURE_NO_WARNINGS",
  79. "_CRT_SECURE_NO_DEPRECATE",
  80. "__STDC_LIMIT_MACROS",
  81. "__STDC_FORMAT_MACROS",
  82. "__STDC_CONSTANT_MACROS",
  83. }
  84. configuration { "x32", "vs*" }
  85. defines { "WIN32" }
  86. targetdir (BGFX_BUILD_DIR .. "win32_" .. _ACTION .. "/bin")
  87. objdir (BGFX_BUILD_DIR .. "win32_" .. _ACTION .. "/obj")
  88. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/msvc" }
  89. configuration { "x64", "vs*" }
  90. defines { "WIN32" }
  91. targetdir (BGFX_BUILD_DIR .. "win64_" .. _ACTION .. "/bin")
  92. objdir (BGFX_BUILD_DIR .. "win64_" .. _ACTION .. "/obj")
  93. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/msvc" }
  94. configuration { "x32", "mingw" }
  95. defines { "WIN32" }
  96. targetdir (BGFX_BUILD_DIR .. "win32_mingw" .. "/bin")
  97. objdir (BGFX_BUILD_DIR .. "win32_mingw" .. "/obj")
  98. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/mingw" }
  99. configuration { "x64", "mingw" }
  100. defines { "WIN32" }
  101. targetdir (BGFX_BUILD_DIR .. "win64_mingw" .. "/bin")
  102. objdir (BGFX_BUILD_DIR .. "win64_mingw" .. "/obj")
  103. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/mingw" }
  104. configuration { "nacl" }
  105. defines { "_BSD_SOURCE=1", "_POSIX_C_SOURCE=199506", "_XOPEN_SOURCE=600" }
  106. links {
  107. "ppapi",
  108. "ppapi_gles2",
  109. }
  110. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/nacl" }
  111. buildoptions {
  112. "-std=c++0x",
  113. "-U__STRICT_ANSI__",
  114. "-pthread",
  115. "-fno-stack-protector",
  116. "-fdiagnostics-show-option",
  117. "-Wunused-value",
  118. "-fdata-sections",
  119. "-ffunction-sections",
  120. "-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic.
  121. "-msse2",
  122. -- "-fmerge-all-constants",
  123. }
  124. linkoptions {
  125. "-Wl,--gc-sections",
  126. }
  127. configuration { "x32", "nacl" }
  128. targetdir (BGFX_BUILD_DIR .. "nacl-x86" .. "/bin")
  129. objdir (BGFX_BUILD_DIR .. "nacl-x86" .. "/obj")
  130. libdirs { BGFX_THIRD_PARTY_DIR .. "lib/nacl-x86" }
  131. linkoptions {
  132. "-melf32_nacl",
  133. }
  134. configuration { "x64", "nacl" }
  135. targetdir (BGFX_BUILD_DIR .. "nacl-x64" .. "/bin")
  136. objdir (BGFX_BUILD_DIR .. "nacl-x64" .. "/obj")
  137. libdirs { BGFX_THIRD_PARTY_DIR .. "lib/nacl-x64" }
  138. linkoptions {
  139. "-melf64_nacl",
  140. }
  141. configuration { "x32", "linux" }
  142. targetdir (BGFX_BUILD_DIR .. "linux32" .. "/bin")
  143. objdir (BGFX_BUILD_DIR .. "linux32" .. "/obj")
  144. configuration { "x64", "linux" }
  145. targetdir (BGFX_BUILD_DIR .. "linux64" .. "/bin")
  146. objdir (BGFX_BUILD_DIR .. "linux64" .. "/obj")
  147. configuration { "Xbox360" }
  148. defines { "_XBOX", "NOMINMAX" }
  149. targetdir (BGFX_BUILD_DIR .. "xbox360" .. "/bin")
  150. objdir (BGFX_BUILD_DIR .. "xbox360" .. "/obj")
  151. includedirs { BGFX_THIRD_PARTY_DIR .. "compiler/msvc" }
  152. configuration {} -- reset configuration
  153. function copyLib()
  154. end
  155. dofile "bgfx.lua"
  156. dofile "ddsdump.lua"
  157. dofile "helloworld.lua"
  158. dofile "makedisttex.lua"
  159. dofile "shaderc.lua"