upgrade.sh 13 KB

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