makefile 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #
  2. # Copyright 2011-2014 Branimir Karadzic. All rights reserved.
  3. # License: http://www.opensource.org/licenses/BSD-2-Clause
  4. #
  5. UNAME := $(shell uname)
  6. ifeq ($(UNAME),$(filter $(UNAME),Linux Darwin))
  7. ifeq ($(UNAME),$(filter $(UNAME),Darwin))
  8. OS=darwin
  9. else
  10. OS=linux
  11. endif
  12. else
  13. OS=windows
  14. endif
  15. PREMAKE4=../bx/tools/bin/$(OS)/premake4
  16. all:
  17. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2008
  18. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2010
  19. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2012
  20. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=mingw gmake
  21. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=linux-gcc gmake
  22. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=osx gmake
  23. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib xcode4
  24. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-arm gmake
  25. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-mips gmake
  26. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-x86 gmake
  27. $(PREMAKE4) --file=premake/premake4.lua --gcc=asmjs gmake
  28. $(PREMAKE4) --file=premake/premake4.lua --gcc=ios-arm gmake
  29. $(PREMAKE4) --file=premake/premake4.lua --gcc=ios-simulator gmake
  30. $(PREMAKE4) --file=premake/premake4.lua --gcc=nacl gmake
  31. $(PREMAKE4) --file=premake/premake4.lua --gcc=nacl-arm gmake
  32. $(PREMAKE4) --file=premake/premake4.lua --gcc=pnacl gmake
  33. $(PREMAKE4) --file=premake/premake4.lua --gcc=rpi gmake
  34. .build/projects/gmake-android-arm:
  35. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-arm gmake
  36. android-arm-debug: .build/projects/gmake-android-arm
  37. make -R -C .build/projects/gmake-android-arm config=debug
  38. android-arm-release: .build/projects/gmake-android-arm
  39. make -R -C .build/projects/gmake-android-arm config=release
  40. android-arm: android-arm-debug android-arm-release
  41. .build/projects/gmake-android-mips:
  42. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-mips gmake
  43. android-mips-debug: .build/projects/gmake-android-mips
  44. make -R -C .build/projects/gmake-android-mips config=debug
  45. android-mips-release: .build/projects/gmake-android-mips
  46. make -R -C .build/projects/gmake-android-mips config=release
  47. android-mips: android-mips-debug android-mips-release
  48. .build/projects/gmake-android-x86:
  49. $(PREMAKE4) --file=premake/premake4.lua --gcc=android-x86 gmake
  50. android-x86-debug: .build/projects/gmake-android-x86
  51. make -R -C .build/projects/gmake-android-x86 config=debug
  52. android-x86-release: .build/projects/gmake-android-x86
  53. make -R -C .build/projects/gmake-android-x86 config=release
  54. android-x86: android-x86-debug android-x86-release
  55. .build/projects/gmake-asmjs:
  56. $(PREMAKE4) --file=premake/premake4.lua --gcc=asmjs gmake
  57. asmjs-debug: .build/projects/gmake-asmjs
  58. make -R -C .build/projects/gmake-asmjs config=debug
  59. asmjs-release: .build/projects/gmake-asmjs
  60. make -R -C .build/projects/gmake-asmjs config=release
  61. asmjs: asmjs-debug asmjs-release
  62. .build/projects/gmake-linux:
  63. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=linux-gcc gmake
  64. linux-debug32: .build/projects/gmake-linux
  65. make -R -C .build/projects/gmake-linux config=debug32
  66. linux-release32: .build/projects/gmake-linux
  67. make -R -C .build/projects/gmake-linux config=release32
  68. linux-debug64: .build/projects/gmake-linux
  69. make -R -C .build/projects/gmake-linux config=debug64
  70. linux-release64: .build/projects/gmake-linux
  71. make -R -C .build/projects/gmake-linux config=release64
  72. linux: linux-debug32 linux-release32 linux-debug64 linux-release64
  73. .build/projects/gmake-mingw:
  74. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=mingw gmake
  75. mingw-debug32: .build/projects/gmake-mingw
  76. make -R -C .build/projects/gmake-mingw config=debug32
  77. mingw-release32: .build/projects/gmake-mingw
  78. make -R -C .build/projects/gmake-mingw config=release32
  79. mingw-debug64: .build/projects/gmake-mingw
  80. make -R -C .build/projects/gmake-mingw config=debug64
  81. mingw-release64: .build/projects/gmake-mingw
  82. make -R -C .build/projects/gmake-mingw config=release64
  83. mingw: mingw-debug32 mingw-release32 mingw-debug64 mingw-release64
  84. .build/projects/vs2008:
  85. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2008
  86. vs2008-debug32:
  87. devenv .build/projects/vs2008/bgfx.sln /Build "Debug|Win32"
  88. vs2008-release32:
  89. devenv .build/projects/vs2008/bgfx.sln /Build "Release|Win32"
  90. vs2008-debug64:
  91. devenv .build/projects/vs2008/bgfx.sln /Build "Debug|x64"
  92. vs2008-release64:
  93. devenv .build/projects/vs2008/bgfx.sln /Build "Release|x64"
  94. vs2008: vs2008-debug32 vs2008-release32 vs2008-debug64 vs2008-release64
  95. .build/projects/vs2010:
  96. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2010
  97. .build/projects/vs2012:
  98. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib vs2012
  99. .build/projects/gmake-nacl:
  100. $(PREMAKE4) --file=premake/premake4.lua --gcc=nacl gmake
  101. nacl-debug32: .build/projects/gmake-nacl
  102. make -R -C .build/projects/gmake-nacl config=debug32
  103. nacl-release32: .build/projects/gmake-nacl
  104. make -R -C .build/projects/gmake-nacl config=release32
  105. nacl-debug64: .build/projects/gmake-nacl
  106. make -R -C .build/projects/gmake-nacl config=debug64
  107. nacl-release64: .build/projects/gmake-nacl
  108. make -R -C .build/projects/gmake-nacl config=release64
  109. nacl: nacl-debug32 nacl-release32 nacl-debug64 nacl-release64
  110. .build/projects/gmake-nacl-arm:
  111. $(PREMAKE4) --file=premake/premake4.lua --gcc=nacl-arm gmake
  112. nacl-arm-debug: .build/projects/gmake-nacl-arm
  113. make -R -C .build/projects/gmake-nacl-arm config=debug
  114. nacl-arm-release: .build/projects/gmake-nacl-arm
  115. make -R -C .build/projects/gmake-nacl-arm config=release
  116. nacl-arm: nacl-arm-debug32 nacl-arm-release32
  117. .build/projects/gmake-pnacl:
  118. $(PREMAKE4) --file=premake/premake4.lua --gcc=pnacl gmake
  119. pnacl-debug: .build/projects/gmake-pnacl
  120. make -R -C .build/projects/gmake-pnacl config=debug
  121. pnacl-release: .build/projects/gmake-pnacl
  122. make -R -C .build/projects/gmake-pnacl config=release
  123. pnacl: pnacl-debug pnacl-release
  124. .build/projects/gmake-osx:
  125. $(PREMAKE4) --file=premake/premake4.lua --with-tools --with-shared-lib --gcc=osx gmake
  126. osx-debug32: .build/projects/gmake-osx
  127. make -C .build/projects/gmake-osx config=debug32
  128. osx-release32: .build/projects/gmake-osx
  129. make -C .build/projects/gmake-osx config=release32
  130. osx-debug64: .build/projects/gmake-osx
  131. make -C .build/projects/gmake-osx config=debug64
  132. osx-release64: .build/projects/gmake-osx
  133. make -C .build/projects/gmake-osx config=release64
  134. osx: osx-debug32 osx-release32 osx-debug64 osx-release64
  135. .build/projects/gmake-ios-arm:
  136. $(PREMAKE4) --file=premake/premake4.lua --gcc=ios-arm gmake
  137. ios-arm-debug: .build/projects/gmake-ios-arm
  138. make -R -C .build/projects/gmake-ios-arm config=debug
  139. ios-arm-release: .build/projects/gmake-ios-arm
  140. make -R -C .build/projects/gmake-ios-arm config=release
  141. ios-arm: ios-arm-debug ios-arm-release
  142. .build/projects/gmake-ios-simulator:
  143. $(PREMAKE4) --file=premake/premake4.lua --gcc=ios-simulator gmake
  144. ios-simulator-debug: .build/projects/gmake-ios-simulator
  145. make -R -C .build/projects/gmake-ios-simulator config=debug
  146. ios-simulator-release: .build/projects/gmake-ios-simulator
  147. make -R -C .build/projects/gmake-ios-simulator config=release
  148. ios-simulator: ios-simulator-debug ios-simulator-release
  149. .build/projects/gmake-rpi:
  150. $(PREMAKE4) --file=premake/premake4.lua --gcc=rpi gmake
  151. rpi-debug: .build/projects/gmake-rpi
  152. make -R -C .build/projects/gmake-rpi config=debug
  153. rpi-release: .build/projects/gmake-rpi
  154. make -R -C .build/projects/gmake-rpi config=release
  155. rpi: rpi-debug rpi-release
  156. rebuild-shaders:
  157. make -R -C examples rebuild
  158. analyze:
  159. cppcheck src/
  160. cppcheck examples/
  161. docs:
  162. doxygen premake/bgfx.doxygen
  163. markdown README.md > .build/docs/readme.html
  164. clean:
  165. @echo Cleaning...
  166. -@rm -rf .build
  167. ###
  168. SILENT ?= @
  169. UNAME := $(shell uname)
  170. ifeq ($(UNAME),$(filter $(UNAME),Linux Darwin))
  171. ifeq ($(UNAME),$(filter $(UNAME),Darwin))
  172. OS=darwin
  173. BUILD_PROJECT_DIR=gmake-osx
  174. BUILD_OUTPUT_DIR=osx64_gcc
  175. BUILD_TOOLS_CONFIG=release64
  176. EXE=
  177. else
  178. OS=linux
  179. BUILD_PROJECT_DIR=gmake-linux
  180. BUILD_OUTPUT_DIR=linux64_gcc
  181. BUILD_TOOLS_CONFIG=release64
  182. EXE=
  183. endif
  184. else
  185. OS=windows
  186. BUILD_PROJECT_DIR=gmake-mingw
  187. BUILD_OUTPUT_DIR=win32_mingw
  188. BUILD_TOOLS_CONFIG=release32
  189. EXE=.exe
  190. endif
  191. .build/$(BUILD_OUTPUT_DIR)/bin/shadercRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
  192. $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f shaderc.make config=$(BUILD_TOOLS_CONFIG)
  193. tools/bin/$(OS)/shaderc$(EXE): .build/$(BUILD_OUTPUT_DIR)/bin/shadercRelease$(EXE)
  194. $(SILENT) cp $(<) $(@)
  195. .build/$(BUILD_OUTPUT_DIR)/bin/geometrycRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
  196. $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f geometryc.make config=$(BUILD_TOOLS_CONFIG)
  197. tools/bin/$(OS)/geometryc$(EXE): .build/$(BUILD_OUTPUT_DIR)/bin/geometrycRelease$(EXE)
  198. $(SILENT) cp $(<) $(@)
  199. tools: tools/bin/$(OS)/shaderc$(EXE) tools/bin/$(OS)/geometryc$(EXE)