upgrade.sh 14 KB

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