upgrade.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-3.0-or-later
  3. # Copyright (c) 2012-2023 Daniele Bartolini et al.
  4. update_luajit () {
  5. # Download latest luajit.
  6. rm -rf 3rdparty/luajit
  7. git clone https://github.com/LuaJIT/LuaJIT.git 3rdparty/luajit --branch=v2.1 --depth=1
  8. # Cleanup.
  9. rm -rf 3rdparty/luajit/.gitignore
  10. rm -rf 3rdparty/luajit/doc
  11. rm -rf 3rdparty/luajit/etc
  12. rm -rf 3rdparty/luajit/Makefile
  13. rm -rf 3rdparty/luajit/README
  14. # Bump affected resources versions.
  15. RESOURCE_TYPES_H=src/resource/types.h
  16. sed -Ei 's/(.*RESOURCE_VERSION_SCRIPT)(.*RESOURCE_VERSION\()([0-9]+)(.*)/echo "\1\2$((\3 + 1))\4"/ge' src/resource/types.h
  17. # Add changes and commit.
  18. git add -f 3rdparty/luajit
  19. git add "${RESOURCE_TYPES_H}"
  20. git commit -m "3rdparty: update luajit"
  21. }
  22. update_bgfx () {
  23. # Download latest bx.
  24. rm -rf 3rdparty/bx
  25. git clone https://github.com/bkaradzic/bx 3rdparty/bx --depth=1
  26. # Cleanup bx.
  27. rm -rf 3rdparty/bx/.appveyor.yml
  28. rm -rf 3rdparty/bx/.editorconfig
  29. rm -rf 3rdparty/bx/.git
  30. rm -rf 3rdparty/bx/.gitattributes
  31. rm -rf 3rdparty/bx/.gitignore
  32. rm -rf 3rdparty/bx/.travis.yml
  33. rm -rf 3rdparty/bx/3rdparty/catch/
  34. rm -rf 3rdparty/bx/makefile
  35. rm -rf 3rdparty/bx/README.md
  36. rm -rf 3rdparty/bx/scripts/bin2c.lua
  37. rm -rf 3rdparty/bx/scripts/lemon.lua
  38. rm -rf 3rdparty/bx/tests/
  39. rm -rf 3rdparty/bx/tools/bin2c/
  40. rm -rf 3rdparty/bx/tools/lemon/
  41. # Download latest bimg.
  42. rm -rf 3rdparty/bimg
  43. git clone https://github.com/bkaradzic/bimg 3rdparty/bimg --depth=1
  44. # Cleanup bimg.
  45. rm -rf 3rdparty/bimg/.git
  46. rm -rf 3rdparty/bimg/.appveyor.yml
  47. rm -rf 3rdparty/bimg/.editorconfig
  48. rm -rf 3rdparty/bimg/.gitattributes
  49. rm -rf 3rdparty/bimg/.gitignore
  50. rm -rf 3rdparty/bimg/.travis.yml
  51. rm -rf 3rdparty/bimg/makefile
  52. rm -rf 3rdparty/bimg/README.md
  53. # Download latest bgfx.
  54. rm -rf 3rdparty/bgfx
  55. git clone https://github.com/bkaradzic/bgfx 3rdparty/bgfx --depth=1
  56. # Regenerate samples/core/shaders/common.shader.
  57. COMMON_SHADER=samples/core/shaders/common.shader
  58. rm "${COMMON_SHADER}"
  59. {
  60. echo "sampler_states = {"
  61. echo " clamp_point = {"
  62. echo " wrap_u = \"clamp\""
  63. echo " wrap_v = \"clamp\""
  64. echo " wrap_w = \"clamp\""
  65. echo " filter_min = \"point\""
  66. echo " filter_mag = \"point\""
  67. echo " }"
  68. echo ""
  69. echo " clamp_anisotropic = {"
  70. echo " wrap_u = \"clamp\""
  71. echo " wrap_v = \"clamp\""
  72. echo " wrap_w = \"clamp\""
  73. echo " filter_min = \"anisotropic\""
  74. echo " filter_mag = \"anisotropic\""
  75. echo " }"
  76. echo ""
  77. echo " mirror_point = {"
  78. echo " wrap_u = \"mirror\""
  79. echo " wrap_v = \"mirror\""
  80. echo " wrap_w = \"mirror\""
  81. echo " filter_min = \"point\""
  82. echo " filter_mag = \"point\""
  83. echo " }"
  84. echo ""
  85. echo " mirror_anisotropic = {"
  86. echo " wrap_u = \"mirror\""
  87. echo " wrap_v = \"mirror\""
  88. echo " wrap_w = \"mirror\""
  89. echo " filter_min = \"anisotropic\""
  90. echo " filter_mag = \"anisotropic\""
  91. echo " }"
  92. echo "}"
  93. echo ""
  94. echo "bgfx_shaders = {"
  95. echo " common = {"
  96. echo " code = \"\"\""
  97. sed 's/^/\t\t\t/' 3rdparty/bgfx/src/bgfx_shader.sh 3rdparty/bgfx/examples/common/shaderlib.sh
  98. echo " \"\"\""
  99. echo " }"
  100. echo "}"
  101. } >> "${COMMON_SHADER}"
  102. # Remove trailing tabs.
  103. sed -i 's/\t*$//' "${COMMON_SHADER}"
  104. # Cleanup bgfx.
  105. rm -rf 3rdparty/bgfx/.appveyor.yml
  106. rm -rf 3rdparty/bgfx/.editorconfig
  107. rm -rf 3rdparty/bgfx/.git
  108. rm -rf 3rdparty/bgfx/.gitattributes
  109. rm -rf 3rdparty/bgfx/.github
  110. rm -rf 3rdparty/bgfx/.gitignore
  111. rm -rf 3rdparty/bgfx/.travis.yml
  112. rm -rf 3rdparty/bgfx/3rdparty/.editorconfig
  113. rm -rf 3rdparty/bgfx/3rdparty/cgltf/
  114. rm -rf 3rdparty/bgfx/3rdparty/dear-imgui/
  115. rm -rf 3rdparty/bgfx/3rdparty/freetype/
  116. rm -rf 3rdparty/bgfx/3rdparty/glslang/build
  117. rm -rf 3rdparty/bgfx/3rdparty/glslang/build_info.py
  118. rm -rf 3rdparty/bgfx/3rdparty/glslang/license-checker.cfg
  119. rm -rf 3rdparty/bgfx/3rdparty/iconfontheaders/
  120. rm -rf 3rdparty/bgfx/3rdparty/meshoptimizer/
  121. rm -rf 3rdparty/bgfx/3rdparty/sdf/
  122. rm -rf 3rdparty/bgfx/3rdparty/stb/
  123. rm -rf 3rdparty/bgfx/bindings/
  124. rm -rf 3rdparty/bgfx/CODEOWNERS
  125. rm -rf 3rdparty/bgfx/CONTRIBUTING.md
  126. rm -rf 3rdparty/bgfx/examples/
  127. rm -rf 3rdparty/bgfx/makefile
  128. rm -rf 3rdparty/bgfx/README.md
  129. rm -rf 3rdparty/bgfx/scripts/bgfx-codegen.lua
  130. rm -rf 3rdparty/bgfx/scripts/bgfx.doxygen
  131. rm -rf 3rdparty/bgfx/scripts/bgfx.idl
  132. rm -rf 3rdparty/bgfx/scripts/bindings-*.lua
  133. rm -rf 3rdparty/bgfx/scripts/build.ninja
  134. rm -rf 3rdparty/bgfx/scripts/codegen.lua
  135. rm -rf 3rdparty/bgfx/scripts/doxygen.lua
  136. rm -rf 3rdparty/bgfx/scripts/geometryc.lua
  137. rm -rf 3rdparty/bgfx/scripts/geometryv.lua
  138. rm -rf 3rdparty/bgfx/scripts/idl.lua
  139. rm -rf 3rdparty/bgfx/scripts/shader-embeded.mk
  140. rm -rf 3rdparty/bgfx/scripts/shader.mk
  141. rm -rf 3rdparty/bgfx/scripts/temp.bgfx.h
  142. rm -rf 3rdparty/bgfx/scripts/temp.bgfx.idl.inl
  143. rm -rf 3rdparty/bgfx/scripts/temp.defines.h
  144. rm -rf 3rdparty/bgfx/scripts/texturev.lua
  145. rm -rf 3rdparty/bgfx/scripts/tools.mk
  146. rm -rf 3rdparty/bgfx/src/bgfx_compute.sh
  147. rm -rf 3rdparty/bgfx/src/bgfx_shader.sh
  148. rm -rf 3rdparty/bgfx/src/fs_clear0.sc
  149. rm -rf 3rdparty/bgfx/src/fs_clear1.sc
  150. rm -rf 3rdparty/bgfx/src/fs_clear2.sc
  151. rm -rf 3rdparty/bgfx/src/fs_clear3.sc
  152. rm -rf 3rdparty/bgfx/src/fs_clear4.sc
  153. rm -rf 3rdparty/bgfx/src/fs_clear5.sc
  154. rm -rf 3rdparty/bgfx/src/fs_clear6.sc
  155. rm -rf 3rdparty/bgfx/src/fs_clear7.sc
  156. rm -rf 3rdparty/bgfx/src/fs_debugfont.sc
  157. rm -rf 3rdparty/bgfx/src/makefile
  158. rm -rf 3rdparty/bgfx/src/varying.def.sc
  159. rm -rf 3rdparty/bgfx/src/vs_clear.sc
  160. rm -rf 3rdparty/bgfx/src/vs_debugfont.sc
  161. rm -rf 3rdparty/bgfx/tools/geometryc/
  162. rm -rf 3rdparty/bgfx/tools/geometryv/
  163. rm -rf 3rdparty/bgfx/tools/texturev/
  164. # Bump affected resources versions.
  165. RESOURCE_TYPES_H=src/resource/types.h
  166. sed -Ei 's/(.*RESOURCE_VERSION_TEXTURE)(.*RESOURCE_VERSION\()([0-9]+)(.*)/echo "\1\2$((\3 + 1))\4"/ge' src/resource/types.h
  167. sed -Ei 's/(.*RESOURCE_VERSION_SHADER)(.*RESOURCE_VERSION\()([0-9]+)(.*)/echo "\1\2$((\3 + 1))\4"/ge' src/resource/types.h
  168. # Add changes and commit.
  169. git add -f 3rdparty/bx
  170. git add -f 3rdparty/bimg
  171. git add -f 3rdparty/bgfx
  172. git add "${COMMON_SHADER}"
  173. git add "${RESOURCE_TYPES_H}"
  174. git commit -m "3rdparty: update bx, bimg and bgfx"
  175. }
  176. update_bullet () {
  177. # Download latest bullet3.
  178. rm -rf 3rdparty/bullet3
  179. git clone https://github.com/bulletphysics/bullet3 3rdparty/bullet3 --depth=1
  180. # Cleanup.
  181. rm -rf 3rdparty/bullet3/.ci
  182. rm -rf 3rdparty/bullet3/.git
  183. rm -rf 3rdparty/bullet3/.github
  184. rm -rf 3rdparty/bullet3/.gitignore
  185. rm -rf 3rdparty/bullet3/.style.yapf
  186. rm -rf 3rdparty/bullet3/.travis.yml
  187. rm -rf 3rdparty/bullet3/_clang-format
  188. rm -rf 3rdparty/bullet3/appveyor.yml
  189. rm -rf 3rdparty/bullet3/AUTHORS.txt
  190. rm -rf 3rdparty/bullet3/build3
  191. rm -rf 3rdparty/bullet3/build_cmake_pybullet_double.sh
  192. rm -rf 3rdparty/bullet3/build_visual_studio_vr_pybullet_double.bat
  193. rm -rf 3rdparty/bullet3/build_visual_studio_vr_pybullet_double_cmake.bat
  194. rm -rf 3rdparty/bullet3/build_visual_studio_vr_pybullet_double_dynamic.bat
  195. rm -rf 3rdparty/bullet3/build_visual_studio_without_pybullet_vr.bat
  196. rm -rf 3rdparty/bullet3/bullet.pc.cmake
  197. rm -rf 3rdparty/bullet3/BulletConfig.cmake.in
  198. rm -rf 3rdparty/bullet3/clang-format-all.sh
  199. rm -rf 3rdparty/bullet3/CMakeLists.txt
  200. rm -rf 3rdparty/bullet3/data
  201. rm -rf 3rdparty/bullet3/docs
  202. rm -rf 3rdparty/bullet3/Doxyfile
  203. rm -rf 3rdparty/bullet3/examples
  204. rm -rf 3rdparty/bullet3/Extras
  205. rm -rf 3rdparty/bullet3/MANIFEST.in
  206. rm -rf 3rdparty/bullet3/README.md
  207. rm -rf 3rdparty/bullet3/setup.py
  208. rm -rf 3rdparty/bullet3/src/.DS_Store
  209. rm -rf 3rdparty/bullet3/test
  210. rm -rf 3rdparty/bullet3/UseBullet.cmake
  211. rm -rf 3rdparty/bullet3/VERSION
  212. rm -rf 3rdparty/bullet3/xcode.command
  213. find 3rdparty/bullet3 -type f -name 'CMakeLists.txt' -exec rm {} +
  214. find 3rdparty/bullet3 -type f -name 'premake4.lua' -exec rm {} +
  215. # Add changes and commit.
  216. git add -f 3rdparty/bullet3
  217. git commit -m "3rdparty: update bullet3"
  218. }
  219. update_openal () {
  220. # Backup generated headers.
  221. cp 3rdparty/openal/config.h /tmp/config.h
  222. cp 3rdparty/openal/version.h /tmp/version.h
  223. cp 3rdparty/openal/bsinc_inc.h /tmp/bsinc_inc.h
  224. # Download latest sources.
  225. rm -rf 3rdparty/openal
  226. git clone https://github.com/kcat/openal-soft 3rdparty/openal --depth=1
  227. # Cleanup.
  228. rm -rf 3rdparty/openal/.gitignore
  229. rm -rf 3rdparty/openal/.travis.yml
  230. rm -rf 3rdparty/openal/CMakeLists.txt
  231. rm -rf 3rdparty/openal/README.md
  232. rm -rf 3rdparty/openal/XCompile-Android.txt
  233. rm -rf 3rdparty/openal/XCompile.txt
  234. rm -rf 3rdparty/openal/alsoftrc.sample
  235. rm -rf 3rdparty/openal/appveyor.yml
  236. rm -rf 3rdparty/openal/build/.empty
  237. rm -rf 3rdparty/openal/cmake/FindALSA.cmake
  238. rm -rf 3rdparty/openal/cmake/FindAudioIO.cmake
  239. rm -rf 3rdparty/openal/cmake/FindDSound.cmake
  240. rm -rf 3rdparty/openal/cmake/FindFFmpeg.cmake
  241. rm -rf 3rdparty/openal/cmake/FindJACK.cmake
  242. rm -rf 3rdparty/openal/cmake/FindMySOFA.cmake
  243. rm -rf 3rdparty/openal/cmake/FindOSS.cmake
  244. rm -rf 3rdparty/openal/cmake/FindOpenSL.cmake
  245. rm -rf 3rdparty/openal/cmake/FindPortAudio.cmake
  246. rm -rf 3rdparty/openal/cmake/FindPulseAudio.cmake
  247. rm -rf 3rdparty/openal/cmake/FindQSA.cmake
  248. rm -rf 3rdparty/openal/cmake/FindSDL2.cmake
  249. rm -rf 3rdparty/openal/cmake/FindSDL_sound.cmake
  250. rm -rf 3rdparty/openal/cmake/FindSoundIO.cmake
  251. rm -rf 3rdparty/openal/cmake/FindWindowsSDK.cmake
  252. rm -rf 3rdparty/openal/config.h.in
  253. rm -rf 3rdparty/openal/docs/3D7.1.txt
  254. rm -rf 3rdparty/openal/docs/ambdec.txt
  255. rm -rf 3rdparty/openal/docs/ambisonics.txt
  256. rm -rf 3rdparty/openal/docs/env-vars.txt
  257. rm -rf 3rdparty/openal/docs/hrtf.txt
  258. rm -rf 3rdparty/openal/examples/alffplay.cpp
  259. rm -rf 3rdparty/openal/examples/alhrtf.c
  260. rm -rf 3rdparty/openal/examples/allatency.c
  261. rm -rf 3rdparty/openal/examples/alloopback.c
  262. rm -rf 3rdparty/openal/examples/almultireverb.c
  263. rm -rf 3rdparty/openal/examples/alplay.c
  264. rm -rf 3rdparty/openal/examples/alrecord.c
  265. rm -rf 3rdparty/openal/examples/alreverb.c
  266. rm -rf 3rdparty/openal/examples/alstream.c
  267. rm -rf 3rdparty/openal/examples/altonegen.c
  268. rm -rf 3rdparty/openal/examples/common/alhelpers.c
  269. rm -rf 3rdparty/openal/examples/common/alhelpers.h
  270. rm -rf 3rdparty/openal/native-tools/CMakeLists.txt
  271. rm -rf 3rdparty/openal/native-tools/bin2h.c
  272. rm -rf 3rdparty/openal/native-tools/bsincgen.c
  273. rm -rf 3rdparty/openal/openal.pc.in
  274. rm -rf 3rdparty/openal/resources/openal32.rc
  275. rm -rf 3rdparty/openal/resources/resource.h
  276. rm -rf 3rdparty/openal/resources/router.rc
  277. rm -rf 3rdparty/openal/resources/soft_oal.rc
  278. rm -rf 3rdparty/openal/router/al.cpp
  279. rm -rf 3rdparty/openal/router/alc.cpp
  280. rm -rf 3rdparty/openal/router/router.cpp
  281. rm -rf 3rdparty/openal/router/router.h
  282. rm -rf 3rdparty/openal/utils/CIAIR.def
  283. rm -rf 3rdparty/openal/utils/IRC_1005.def
  284. rm -rf 3rdparty/openal/utils/MIT_KEMAR.def
  285. rm -rf 3rdparty/openal/utils/MIT_KEMAR_sofa.def
  286. rm -rf 3rdparty/openal/utils/SCUT_KEMAR.def
  287. rm -rf 3rdparty/openal/utils/alsoft-config/CMakeLists.txt
  288. rm -rf 3rdparty/openal/utils/alsoft-config/main.cpp
  289. rm -rf 3rdparty/openal/utils/alsoft-config/mainwindow.cpp
  290. rm -rf 3rdparty/openal/utils/alsoft-config/mainwindow.h
  291. rm -rf 3rdparty/openal/utils/alsoft-config/mainwindow.ui
  292. rm -rf 3rdparty/openal/utils/alsoft-config/verstr.cpp
  293. rm -rf 3rdparty/openal/utils/alsoft-config/verstr.h
  294. rm -rf 3rdparty/openal/utils/getopt.c
  295. rm -rf 3rdparty/openal/utils/getopt.h
  296. rm -rf 3rdparty/openal/utils/makemhr/loaddef.cpp
  297. rm -rf 3rdparty/openal/utils/makemhr/loaddef.h
  298. rm -rf 3rdparty/openal/utils/makemhr/loadsofa.cpp
  299. rm -rf 3rdparty/openal/utils/makemhr/loadsofa.h
  300. rm -rf 3rdparty/openal/utils/makemhr/makemhr.cpp
  301. rm -rf 3rdparty/openal/utils/makemhr/makemhr.h
  302. rm -rf 3rdparty/openal/utils/openal-info.c
  303. rm -rf 3rdparty/openal/utils/sofa-info.cpp
  304. rm -rf 3rdparty/openal/version.cmake
  305. rm -rf 3rdparty/openal/version.h.in
  306. # Restore generated sources.
  307. cp /tmp/config.h 3rdparty/openal/config.h
  308. cp /tmp/version.h 3rdparty/openal/version.h
  309. cp /tmp/bsinc_inc.h 3rdparty/openal/bsinc_inc.h
  310. echo ""
  311. echo "!!! Remember to update ALSOFT_VERSION !!!"
  312. # Add changes and commit.
  313. git add -f 3rdparty/openal
  314. git commit -m "3rdparty: update openal"
  315. }
  316. update_dear_imgui () {
  317. # Download latest dear-imgui.
  318. rm -rf 3rdparty/ocornut-imgui
  319. git clone https://github.com/ocornut/imgui 3rdparty/ocornut-imgui --branch=docking --depth=1
  320. # Cleanup.
  321. rm -rf 3rdparty/ocornut-imgui/backends
  322. rm -rf 3rdparty/ocornut-imgui/docs
  323. rm -rf 3rdparty/ocornut-imgui/examples
  324. rm -rf 3rdparty/ocornut-imgui/misc
  325. rm -rf 3rdparty/ocornut-imgui/.editorconfig
  326. rm -rf 3rdparty/ocornut-imgui/.git
  327. rm -rf 3rdparty/ocornut-imgui/.gitattributes
  328. rm -rf 3rdparty/ocornut-imgui/.github
  329. rm -rf 3rdparty/ocornut-imgui/.gitignore
  330. # Add changes and commit.
  331. git add -f 3rdparty/ocornut-imgui
  332. git commit -m "3rdparty: update ocornut-imgui"
  333. }
  334. update_nativefiledialog () {
  335. # Download latest nativefiledialog.
  336. rm -rf 3rdparty/nativefiledialog
  337. git clone https://github.com/mlabbe/nativefiledialog 3rdparty/nativefiledialog --depth=1
  338. # Cleanup.
  339. rm -r 3rdparty/nativefiledialog/build
  340. rm -r 3rdparty/nativefiledialog/docs
  341. rm -r 3rdparty/nativefiledialog/screens
  342. rm -r 3rdparty/nativefiledialog/test
  343. rm 3rdparty/nativefiledialog/.gitignore
  344. rm 3rdparty/nativefiledialog/README.md
  345. rm -rf 3rdparty/nativefiledialog/.git
  346. rm -rf 3rdparty/nativefiledialog/.github
  347. # Add changes and commit.
  348. git add -f 3rdparty/nativefiledialog
  349. git commit -m "3rdparty: update nativefiledialog"
  350. }
  351. update_sphinx_rtd_theme () {
  352. # Download latest sphinx_rtd_theme.
  353. RTD_THEME=$(mktemp -d)
  354. git clone https://github.com/readthedocs/sphinx_rtd_theme "${RTD_THEME}" --depth=1
  355. mv "${RTD_THEME}"/sphinx_rtd_theme docs/_themes/sphinx_rtd_theme
  356. rm -rf "${RTD_THEME}"
  357. # Add changes and commit.
  358. git add -f docs/_themes/sphinx_rtd_theme
  359. git commit -m "docs: update sphinx_rtd_theme"
  360. }
  361. print_help () {
  362. echo "Usage: scripts/upgrade.sh <dependency-name>"
  363. }
  364. while true; do
  365. case "$1" in
  366. luajit)
  367. update_luajit
  368. exit $?
  369. ;;
  370. bgfx)
  371. update_bgfx
  372. exit $?
  373. ;;
  374. bullet)
  375. update_bullet
  376. exit $?
  377. ;;
  378. openal)
  379. update_openal
  380. exit $?
  381. ;;
  382. dear_imgui)
  383. update_dear_imgui
  384. exit $?
  385. ;;
  386. nativefiledialog)
  387. update_nativefiledialog
  388. exit $?
  389. ;;
  390. sphinx_rtd_theme)
  391. update_sphinx_rtd_theme
  392. exit $?
  393. ;;
  394. *)
  395. echo "Unknown option or target \`$1\`"
  396. print_help
  397. exit 1
  398. ;;
  399. esac
  400. done