makefile 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #
  2. # Copyright 2011-2015 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 FreeBSD GNU/kFreeBSD))
  7. ifeq ($(UNAME),$(filter $(UNAME),Darwin))
  8. OS=darwin
  9. else
  10. ifeq ($(UNAME),$(filter $(UNAME),FreeBSD GNU/kFreeBSD))
  11. OS=bsd
  12. else
  13. OS=linux
  14. endif
  15. endif
  16. else
  17. OS=windows
  18. endif
  19. $(info $(OS))
  20. GENIE=../bx/tools/bin/$(OS)/genie
  21. all:
  22. $(GENIE) --with-tools --with-shared-lib vs2008
  23. $(GENIE) --with-tools --with-shared-lib vs2010
  24. $(GENIE) --with-tools --with-shared-lib vs2012
  25. $(GENIE) --with-tools --with-shared-lib vs2013
  26. $(GENIE) --with-tools --with-shared-lib --gcc=mingw-gcc gmake
  27. $(GENIE) --with-tools --with-shared-lib --gcc=linux-gcc gmake
  28. $(GENIE) --with-tools --with-shared-lib --gcc=osx gmake
  29. $(GENIE) --with-tools --with-shared-lib --xcode=osx xcode4
  30. $(GENIE) --with-tools --with-shared-lib --xcode=ios xcode4
  31. $(GENIE) --with-shared-lib --gcc=freebsd gmake
  32. $(GENIE) --gcc=android-arm gmake
  33. $(GENIE) --gcc=android-mips gmake
  34. $(GENIE) --gcc=android-x86 gmake
  35. $(GENIE) --gcc=asmjs gmake
  36. $(GENIE) --gcc=ios-arm gmake
  37. $(GENIE) --gcc=ios-simulator gmake
  38. $(GENIE) --gcc=nacl gmake
  39. $(GENIE) --gcc=nacl-arm gmake
  40. $(GENIE) --gcc=pnacl gmake
  41. $(GENIE) --gcc=rpi gmake
  42. .build/projects/gmake-android-arm:
  43. $(GENIE) --gcc=android-arm gmake
  44. android-arm-debug: .build/projects/gmake-android-arm
  45. $(MAKE) -R -C .build/projects/gmake-android-arm config=debug
  46. android-arm-release: .build/projects/gmake-android-arm
  47. $(MAKE) -R -C .build/projects/gmake-android-arm config=release
  48. android-arm: android-arm-debug android-arm-release
  49. .build/projects/gmake-android-mips:
  50. $(GENIE) --gcc=android-mips gmake
  51. android-mips-debug: .build/projects/gmake-android-mips
  52. $(MAKE) -R -C .build/projects/gmake-android-mips config=debug
  53. android-mips-release: .build/projects/gmake-android-mips
  54. $(MAKE) -R -C .build/projects/gmake-android-mips config=release
  55. android-mips: android-mips-debug android-mips-release
  56. .build/projects/gmake-android-x86:
  57. $(GENIE) --gcc=android-x86 gmake
  58. android-x86-debug: .build/projects/gmake-android-x86
  59. $(MAKE) -R -C .build/projects/gmake-android-x86 config=debug
  60. android-x86-release: .build/projects/gmake-android-x86
  61. $(MAKE) -R -C .build/projects/gmake-android-x86 config=release
  62. android-x86: android-x86-debug android-x86-release
  63. .build/projects/gmake-asmjs:
  64. $(GENIE) --gcc=asmjs gmake
  65. asmjs-debug: .build/projects/gmake-asmjs
  66. $(MAKE) -R -C .build/projects/gmake-asmjs config=debug
  67. asmjs-release: .build/projects/gmake-asmjs
  68. $(MAKE) -R -C .build/projects/gmake-asmjs config=release
  69. asmjs: asmjs-debug asmjs-release
  70. .build/projects/gmake-linux:
  71. $(GENIE) --with-tools --with-shared-lib --gcc=linux-gcc gmake
  72. linux-debug32: .build/projects/gmake-linux
  73. $(MAKE) -R -C .build/projects/gmake-linux config=debug32
  74. linux-release32: .build/projects/gmake-linux
  75. $(MAKE) -R -C .build/projects/gmake-linux config=release32
  76. linux-debug64: .build/projects/gmake-linux
  77. $(MAKE) -R -C .build/projects/gmake-linux config=debug64
  78. linux-release64: .build/projects/gmake-linux
  79. $(MAKE) -R -C .build/projects/gmake-linux config=release64
  80. linux: linux-debug32 linux-release32 linux-debug64 linux-release64
  81. .build/projects/gmake-freebsd:
  82. $(GENIE) --with-tools --with-shared-lib --gcc=freebsd gmake
  83. freebsd-debug32: .build/projects/gmake-freebsd
  84. $(MAKE) -R -C .build/projects/gmake-freebsd config=debug32
  85. freebsd-release32: .build/projects/gmake-freebsd
  86. $(MAKE) -R -C .build/projects/gmake-freebsd config=release32
  87. freebsd-debug64: .build/projects/gmake-freebsd
  88. $(MAKE) -R -C .build/projects/gmake-freebsd config=debug64
  89. freebsd-release64: .build/projects/gmake-freebsd
  90. $(MAKE) -R -C .build/projects/gmake-freebsd config=release64
  91. freebsd: freebsd-debug32 freebsd-release32 freebsd-debug64 freebsd-release64
  92. .build/projects/gmake-mingw-gcc:
  93. $(GENIE) --with-tools --with-shared-lib --gcc=mingw-gcc gmake
  94. mingw-gcc-debug32: .build/projects/gmake-mingw-gcc
  95. $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=debug32
  96. mingw-gcc-release32: .build/projects/gmake-mingw-gcc
  97. $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=release32
  98. mingw-gcc-debug64: .build/projects/gmake-mingw-gcc
  99. $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=debug64
  100. mingw-gcc-release64: .build/projects/gmake-mingw-gcc
  101. $(MAKE) -R -C .build/projects/gmake-mingw-gcc config=release64
  102. mingw-gcc: mingw-gcc-debug32 mingw-gcc-release32 mingw-gcc-debug64 mingw-gcc-release64
  103. .build/projects/gmake-mingw-clang:
  104. $(GENIE) --gcc=mingw-clang gmake
  105. mingw-clang-debug32: .build/projects/gmake-mingw-clang
  106. $(MAKE) -R -C .build/projects/gmake-mingw-clang config=debug32
  107. mingw-clang-release32: .build/projects/gmake-mingw-clang
  108. $(MAKE) -R -C .build/projects/gmake-mingw-clang config=release32
  109. mingw-clang-debug64: .build/projects/gmake-mingw-clang
  110. $(MAKE) -R -C .build/projects/gmake-mingw-clang config=debug64
  111. mingw-clang-release64: .build/projects/gmake-mingw-clang
  112. $(MAKE) -R -C .build/projects/gmake-mingw-clang config=release64
  113. mingw-clang: mingw-clang-debug32 mingw-clang-release32 mingw-clang-debug64 mingw-clang-release64
  114. .build/projects/vs2008:
  115. $(GENIE) --with-tools --with-shared-lib vs2008
  116. vs2008-debug32:
  117. devenv .build/projects/vs2008/bgfx.sln /Build "Debug|Win32"
  118. vs2008-release32:
  119. devenv .build/projects/vs2008/bgfx.sln /Build "Release|Win32"
  120. vs2008-debug64:
  121. devenv .build/projects/vs2008/bgfx.sln /Build "Debug|x64"
  122. vs2008-release64:
  123. devenv .build/projects/vs2008/bgfx.sln /Build "Release|x64"
  124. vs2008: vs2008-debug32 vs2008-release32 vs2008-debug64 vs2008-release64
  125. .build/projects/vs2010:
  126. $(GENIE) --with-tools --with-shared-lib vs2010
  127. .build/projects/vs2012:
  128. $(GENIE) --with-tools --with-shared-lib vs2012
  129. .build/projects/vs2013:
  130. $(GENIE) --with-tools --with-shared-lib vs2013
  131. .build/projects/gmake-nacl:
  132. $(GENIE) --gcc=nacl gmake
  133. nacl-debug32: .build/projects/gmake-nacl
  134. $(MAKE) -R -C .build/projects/gmake-nacl config=debug32
  135. nacl-release32: .build/projects/gmake-nacl
  136. $(MAKE) -R -C .build/projects/gmake-nacl config=release32
  137. nacl-debug64: .build/projects/gmake-nacl
  138. $(MAKE) -R -C .build/projects/gmake-nacl config=debug64
  139. nacl-release64: .build/projects/gmake-nacl
  140. $(MAKE) -R -C .build/projects/gmake-nacl config=release64
  141. nacl: nacl-debug32 nacl-release32 nacl-debug64 nacl-release64
  142. .build/projects/gmake-nacl-arm:
  143. $(GENIE) --gcc=nacl-arm gmake
  144. nacl-arm-debug: .build/projects/gmake-nacl-arm
  145. $(MAKE) -R -C .build/projects/gmake-nacl-arm config=debug
  146. nacl-arm-release: .build/projects/gmake-nacl-arm
  147. $(MAKE) -R -C .build/projects/gmake-nacl-arm config=release
  148. nacl-arm: nacl-arm-debug32 nacl-arm-release32
  149. .build/projects/gmake-pnacl:
  150. $(GENIE) --gcc=pnacl gmake
  151. pnacl-debug: .build/projects/gmake-pnacl
  152. $(MAKE) -R -C .build/projects/gmake-pnacl config=debug
  153. pnacl-release: .build/projects/gmake-pnacl
  154. $(MAKE) -R -C .build/projects/gmake-pnacl config=release
  155. pnacl: pnacl-debug pnacl-release
  156. .build/projects/gmake-osx:
  157. $(GENIE) --with-tools --with-shared-lib --gcc=osx gmake
  158. osx-debug32: .build/projects/gmake-osx
  159. $(MAKE) -C .build/projects/gmake-osx config=debug32
  160. osx-release32: .build/projects/gmake-osx
  161. $(MAKE) -C .build/projects/gmake-osx config=release32
  162. osx-debug64: .build/projects/gmake-osx
  163. $(MAKE) -C .build/projects/gmake-osx config=debug64
  164. osx-release64: .build/projects/gmake-osx
  165. $(MAKE) -C .build/projects/gmake-osx config=release64
  166. osx: osx-debug32 osx-release32 osx-debug64 osx-release64
  167. .build/projects/gmake-ios-arm:
  168. $(GENIE) --gcc=ios-arm gmake
  169. ios-arm-debug: .build/projects/gmake-ios-arm
  170. $(MAKE) -R -C .build/projects/gmake-ios-arm config=debug
  171. ios-arm-release: .build/projects/gmake-ios-arm
  172. $(MAKE) -R -C .build/projects/gmake-ios-arm config=release
  173. ios-arm: ios-arm-debug ios-arm-release
  174. .build/projects/gmake-ios-simulator:
  175. $(GENIE) --gcc=ios-simulator gmake
  176. ios-simulator-debug: .build/projects/gmake-ios-simulator
  177. $(MAKE) -R -C .build/projects/gmake-ios-simulator config=debug
  178. ios-simulator-release: .build/projects/gmake-ios-simulator
  179. $(MAKE) -R -C .build/projects/gmake-ios-simulator config=release
  180. ios-simulator: ios-simulator-debug ios-simulator-release
  181. .build/projects/gmake-rpi:
  182. $(GENIE) --gcc=rpi gmake
  183. rpi-debug: .build/projects/gmake-rpi
  184. $(MAKE) -R -C .build/projects/gmake-rpi config=debug
  185. rpi-release: .build/projects/gmake-rpi
  186. $(MAKE) -R -C .build/projects/gmake-rpi config=release
  187. rpi: rpi-debug rpi-release
  188. rebuild-shaders:
  189. $(MAKE) -R -C examples rebuild
  190. analyze:
  191. cppcheck src/
  192. cppcheck examples/
  193. docs:
  194. doxygen scripts/bgfx.doxygen
  195. markdown README.md > .build/docs/readme.html
  196. clean:
  197. @echo Cleaning...
  198. -@rm -rf .build
  199. ###
  200. SILENT ?= @
  201. UNAME := $(shell uname)
  202. ifeq ($(UNAME),$(filter $(UNAME),Linux Darwin FreeBSD GNU/kFreeBSD))
  203. ifeq ($(UNAME),$(filter $(UNAME),Darwin))
  204. OS=darwin
  205. BUILD_PROJECT_DIR=gmake-osx
  206. BUILD_OUTPUT_DIR=osx64_clang
  207. BUILD_TOOLS_CONFIG=release64
  208. BUILD_TOOLS_SUFFIX=Release
  209. EXE=
  210. else
  211. ifeq ($(UNAME),$(filter $(UNAME),FreeBSD GNU/kFreeBSD))
  212. OS=bsd
  213. BUILD_PROJECT_DIR=gmake-freebsd
  214. BUILD_OUTPUT_DIR=freebsd64_gcc
  215. BUILD_TOOLS_CONFIG=release64
  216. BUILD_TOOLS_SUFFIX=Release
  217. EXE=
  218. else
  219. OS=linux
  220. BUILD_PROJECT_DIR=gmake-linux
  221. BUILD_OUTPUT_DIR=linux64_gcc
  222. BUILD_TOOLS_CONFIG=release64
  223. BUILD_TOOLS_SUFFIX=Release
  224. EXE=
  225. endif
  226. endif
  227. else
  228. OS=windows
  229. BUILD_PROJECT_DIR=gmake-mingw-gcc
  230. BUILD_OUTPUT_DIR=win32_mingw-gcc
  231. BUILD_TOOLS_CONFIG=release32
  232. BUILD_TOOLS_SUFFIX=Release
  233. EXE=.exe
  234. endif
  235. tools/bin/$(OS)/shaderc$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
  236. $(SILENT) $(MAKE) -C .build/projects/$(BUILD_PROJECT_DIR) -f shaderc.make config=$(BUILD_TOOLS_CONFIG)
  237. $(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/shaderc$(BUILD_TOOLS_SUFFIX)$(EXE) $(@)
  238. tools/bin/$(OS)/geometryc$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
  239. $(SILENT) $(MAKE) -C .build/projects/$(BUILD_PROJECT_DIR) -f geometryc.make config=$(BUILD_TOOLS_CONFIG)
  240. $(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/geometryc$(BUILD_TOOLS_SUFFIX)$(EXE) $(@)
  241. tools: tools/bin/$(OS)/shaderc$(EXE) tools/bin/$(OS)/geometryc$(EXE)