Advertisement
Guest User

System.sh 01

a guest
Nov 5th, 2024
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.70 KB | Gaming | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # This file is part of The RetroPie Project
  4. #
  5. # The RetroPie Project is the legal property of its developers, whose names are
  6. # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
  7. #
  8. # See the LICENSE.md file at the top-level directory of this distribution and
  9. # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
  10. #
  11.  
  12. function setup_env() {
  13.  
  14. __ERRMSGS=()
  15. __INFMSGS=()
  16.  
  17. # if no apt-get we need to fail
  18. [[ -z "$(which apt-get)" ]] && fatalError "Unsupported OS - No apt-get command found"
  19.  
  20. test_chroot
  21.  
  22. get_platform
  23. get_os_version
  24.  
  25. get_retropie_depends
  26.  
  27. conf_memory_vars
  28. conf_binary_vars
  29. conf_build_vars
  30.  
  31. if [[ -z "$__nodialog" ]]; then
  32. __nodialog=0
  33. fi
  34. }
  35.  
  36. function test_chroot() {
  37. # test if we are in a chroot
  38. if [[ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]]; then
  39. [[ -z "$QEMU_CPU" && -n "$__qemu_cpu" ]] && export QEMU_CPU=$__qemu_cpu
  40. __chroot=1
  41. # detect the usage of systemd-nspawn
  42. elif [[ -n "$(systemd-detect-virt)" && "$(systemd-detect-virt)" == "systemd-nspawn" ]]; then
  43. __chroot=1
  44. else
  45. __chroot=0
  46. fi
  47. }
  48.  
  49.  
  50. function conf_memory_vars() {
  51. __memory_total_kb=$(awk '/^MemTotal:/{print $2}' /proc/meminfo)
  52. __memory_total=$(( __memory_total_kb / 1024 ))
  53. if grep -q "^MemAvailable:" /proc/meminfo; then
  54. __memory_avail_kb=$(awk '/^MemAvailable:/{print $2}' /proc/meminfo)
  55. else
  56. local mem_free=$(awk '/^MemFree:/{print $2}' /proc/meminfo)
  57. local mem_cached=$(awk '/^Cached:/{print $2}' /proc/meminfo)
  58. local mem_buffers=$(awk '/^Buffers:/{print $2}' /proc/meminfo)
  59. __memory_avail_kb=$((mem_free + mem_cached + mem_buffers))
  60. fi
  61. __memory_avail=$(( __memory_avail_kb / 1024 ))
  62. }
  63.  
  64. function conf_binary_vars() {
  65. [[ -z "$__has_binaries" ]] && __has_binaries=0
  66.  
  67. # set location of binary downloads
  68. __binary_host="files.retropie.org.uk"
  69. __binary_base_url="https://$__binary_host/binaries"
  70.  
  71. __binary_path="$__os_codename/$__platform"
  72. isPlatform "kms" && __binary_path+="/kms"
  73. __binary_url="$__binary_base_url/$__binary_path"
  74.  
  75. __archive_url="https://files.retropie.org.uk/archives"
  76.  
  77. # set the gpg key used by RetroPie
  78. __gpg_retropie_key="[email protected]"
  79.  
  80. # if __gpg_signing_key is not set, set to __gpg_retropie_key
  81. [[ ! -v __gpg_signing_key ]] && __gpg_signing_key="$__gpg_retropie_key"
  82.  
  83. # if the RetroPie public key is not installed, install it.
  84. if ! gpg --list-keys "$__gpg_retropie_key" &>/dev/null; then
  85. gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys DC9D77FF8208FFC51D8F50CCF1B030906A3B0D31
  86. fi
  87. }
  88.  
  89. function conf_build_vars() {
  90. __gcc_version=$(gcc -dumpversion)
  91. # extract only the major version
  92. # gcc -dumpversion on GCC >= 7 seems to provide the major version but the documentation
  93. # suggests this depends on how it's configured
  94. __gcc_version="${__gcc_version%%.*}"
  95.  
  96. # calculate build concurrency based on cores and available memory
  97. __jobs=1
  98. local unit=512
  99. isPlatform "64bit" && unit=$(($unit + 256))
  100. if [[ "$(nproc)" -gt 1 ]]; then
  101. local nproc="$(nproc)"
  102. # max one thread per unit (MB) of ram
  103. local max_jobs=$(($__memory_avail / $unit))
  104. if [[ "$max_jobs" -gt 0 ]]; then
  105. if [[ "$max_jobs" -lt "$nproc" ]]; then
  106. __jobs="$max_jobs"
  107. else
  108. __jobs="$nproc"
  109. fi
  110. fi
  111. fi
  112. __default_makeflags="-j${__jobs}"
  113.  
  114. # set our default gcc optimisation level
  115. if [[ -z "$__opt_flags" ]]; then
  116. __opt_flags="$__default_opt_flags"
  117. fi
  118.  
  119. # set default cpu flags
  120. [[ -z "$__cpu_flags" ]] && __cpu_flags="$__default_cpu_flags"
  121.  
  122. # if default cxxflags is empty, use our default cflags
  123. [[ -z "$__default_cxxflags" ]] && __default_cxxflags="$__default_cflags"
  124.  
  125. # add our cpu and optimisation flags
  126. __default_cflags+=" $__cpu_flags $__opt_flags"
  127. __default_cxxflags+=" $__cpu_flags $__opt_flags"
  128. __default_asflags+=" $__cpu_flags"
  129.  
  130. # if not overridden by user, configure our compiler flags
  131. [[ -z "$__cflags" ]] && __cflags="$__default_cflags"
  132. [[ -z "$__cxxflags" ]] && __cxxflags="$__default_cxxflags"
  133. [[ -z "$__asflags" ]] && __asflags="$__default_asflags"
  134. [[ -z "$__makeflags" ]] && __makeflags="$__default_makeflags"
  135.  
  136. # workaround for GCC ABI incompatibility with threaded armv7+ C++ apps built
  137. # on Raspbian's armv6 userland https://github.com/raspberrypi/firmware/issues/491
  138. if [[ "$__os_id" == "Raspbian" ]] && compareVersions $__gcc_version lt 5; then
  139. __cxxflags+=" -U__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"
  140. fi
  141.  
  142. # export our compiler flags so all child processes can see them
  143. export CFLAGS="$__cflags"
  144. export CXXFLAGS="$__cxxflags"
  145. export ASFLAGS="$__asflags"
  146. export MAKEFLAGS="$__makeflags"
  147.  
  148. # if __use_ccache is set, then add ccache to PATH/MAKEFLAGS
  149. if [[ "$__use_ccache" -eq 1 ]]; then
  150. PATH="/usr/lib/ccache:$PATH"
  151. MAKEFLAGS+=" PATH=$PATH"
  152. fi
  153. }
  154.  
  155. function get_os_version() {
  156. # make sure lsb_release is installed
  157. getDepends lsb-release
  158.  
  159. # get os distributor id, description, release number and codename
  160. local os
  161. # armbian uses a minimal shell script replacement for lsb_release with basic
  162. # parameter parsing that requires the arguments split rather than using -sidrc
  163. mapfile -t os < <(lsb_release -s -i -d -r -c)
  164. __os_id="${os[0]}"
  165. __os_desc="${os[1]}"
  166. __os_release="${os[2]}"
  167. __os_codename="${os[3]}"
  168.  
  169. local error=""
  170. case "$__os_id" in
  171. Raspbian|Debian|Bunsenlabs)
  172. # get major version (8 instead of 8.0 etc)
  173. __os_debian_ver="${__os_release%%.*}"
  174.  
  175. # Debian unstable is not officially supported though
  176. if [[ "$__os_release" == "unstable" ]]; then
  177. __os_debian_ver=14
  178. fi
  179.  
  180. # we still allow Raspbian 8 (jessie) to work (We show an popup in the setup module)
  181. if [[ "$__os_debian_ver" -lt 8 ]]; then
  182. error="You need Raspbian/Debian Stretch or newer"
  183. fi
  184.  
  185. # 64bit Raspberry Pi OS identifies as Debian, but functions (currently) as Raspbian
  186. # we will check package sources and set to Raspbian
  187. if isPlatform "aarch64" && apt-cache policy | grep -qE "archive.raspberrypi.(com|org)"; then
  188. __os_id="Raspbian"
  189. fi
  190.  
  191. # set a platform flag for osmc
  192. if grep -q "ID=osmc" /etc/os-release; then
  193. __platform_flags+=(osmc)
  194. fi
  195.  
  196. # and for xbian
  197. if grep -q "NAME=XBian" /etc/os-release; then
  198. __platform_flags+=(xbian)
  199. fi
  200.  
  201. # we provide binaries for RPI on Raspberry Pi OS 10/11
  202. if isPlatform "rpi" && \
  203. isPlatform "32bit" && \
  204. [[ "$__os_debian_ver" -ge 10 && "$__os_debian_ver" -le 11 ]]; then
  205. # only set __has_binaries if not already set
  206. [[ -z "$__has_binaries" ]] && __has_binaries=1
  207. fi
  208. ;;
  209. Devuan)
  210. if isPlatform "rpi"; then
  211. error="We do not support Devuan on the Raspberry Pi. We recommend you use Raspbian to run RetroPie."
  212. fi
  213. # devuan lsb-release version numbers don't match jessie
  214. case "$__os_codename" in
  215. jessie)
  216. __os_debian_ver="8"
  217. ;;
  218. ascii)
  219. __os_debian_ver="9"
  220. ;;
  221. beowolf)
  222. __os_debian_ver="10"
  223. ;;
  224. ceres)
  225. __os_debian_ver="11"
  226. ;;
  227. esac
  228. ;;
  229. LinuxMint|Linuxmint)
  230. if [[ "$__os_desc" != LMDE* ]]; then
  231. if compareVersions "$__os_release" lt 18; then
  232. error="You need Linux Mint 18 or newer"
  233. elif compareVersions "$__os_release" lt 19; then
  234. __os_ubuntu_ver="16.04"
  235. __os_debian_ver="8"
  236. elif compareVersions "$__os_release" lt 20; then
  237. __os_ubuntu_ver="18.04"
  238. __os_debian_ver="10"
  239. else
  240. __os_ubuntu_ver="20.04"
  241. __os_debian_ver="11"
  242. fi
  243. fi
  244. if [[ "$__os_desc" == LMDE* ]]; then
  245. if compareVersions "$__os_release" lt 4; then
  246. error="You need Linux Mint Debian Edition 4 or newer"
  247. elif compareVersions "$__os_release" lt 5; then
  248. __os_debian_ver="10"
  249. elif compareVersions "$__os_release" lt 6; then
  250. __os_debian_ver="11"
  251. else
  252. __os_debian_ver="12"
  253. fi
  254. fi
  255. ;;
  256. Ubuntu|[Nn]eon|Pop)
  257. if compareVersions "$__os_release" lt 16.04; then
  258. error="You need Ubuntu 16.04 or newer"
  259. # although ubuntu 16.04/16.10 report as being based on stretch it is before some
  260. # packages were changed - we map to version 8 to avoid issues (eg libpng-dev name)
  261. elif compareVersions "$__os_release" le 16.10; then
  262. __os_debian_ver="8"
  263. elif compareVersions "$__os_release" lt 18.04; then
  264. __os_debian_ver="9"
  265. elif compareVersions "$__os_release" lt 20.04; then
  266. __os_debian_ver="10"
  267. elif compareVersions "$__os_release" lt 22.10; then
  268. __os_debian_ver="11"
  269. else
  270. __os_debian_ver="12"
  271. fi
  272. __os_ubuntu_ver="$__os_release"
  273. ;;
  274. Zorin)
  275. if compareVersions "$__os_release" lt 14; then
  276. error="You need Zorin OS 14 or newer"
  277. elif compareVersions "$__os_release" lt 14; then
  278. __os_debian_ver="8"
  279. else
  280. __os_debian_ver="9"
  281. fi
  282. __os_ubuntu_ver="$__os_release"
  283. ;;
  284. Deepin)
  285. if compareVersions "$__os_release" lt 15.5; then
  286. error="You need Deepin OS 15.5 or newer"
  287. fi
  288. __os_debian_ver="9"
  289. ;;
  290. [eE]lementary)
  291. if compareVersions "$__os_release" lt 0.4; then
  292. error="You need Elementary OS 0.4 or newer"
  293. elif compareVersions "$__os_release" eq 0.4; then
  294. __os_ubuntu_ver="16.04"
  295. __os_debian_ver="8"
  296. else
  297. __os_ubuntu_ver="18.04"
  298. __os_debian_ver="10"
  299. fi
  300. ;;
  301. Kali)
  302. __os_debian_ver="12"
  303. ;;
  304. *)
  305. error="Unsupported OS"
  306. ;;
  307. esac
  308.  
  309. [[ -n "$error" ]] && fatalError "$error\n\n$(lsb_release -idrc)"
  310.  
  311. # check for Armbian, which can be built on Debian/Ubuntu
  312. if [[ -f /etc/armbian-release ]]; then
  313. __platform_flags+=("armbian")
  314. fi
  315.  
  316. # configure Raspberry Pi graphics stack
  317. isPlatform "rpi" && get_rpi_video
  318. }
  319.  
  320. function get_retropie_depends() {
  321. local depends=(git subversion dialog curl gcc g++ build-essential unzip xmlstarlet python3-pyudev ca-certificates dirmngr)
  322. # on RaspiOS, install an extra package for X11 support on Pi5
  323. if isPlatform "rpi5" && [[ "$__os_id" == "Raspbian" ]]; then
  324. depends+=(gldriver-test)
  325. fi
  326.  
  327. [[ -n "$DISTCC_HOSTS" ]] && depends+=(distcc)
  328.  
  329. [[ "$__use_ccache" -eq 1 ]] && depends+=(ccache)
  330.  
  331. if ! getDepends "${depends[@]}"; then
  332. fatalError "Unable to install packages required by $0 - ${md_ret_errors[@]}"
  333. fi
  334.  
  335. # make sure we don't have xserver-xorg-legacy installed as it breaks launching x11 apps from ES
  336. if ! isPlatform "x11" && hasPackage "xserver-xorg-legacy"; then
  337. aptRemove xserver-xorg-legacy
  338. fi
  339. }
  340.  
  341. function get_rpi_video() {
  342. local pkgconfig="/opt/vc/lib/pkgconfig"
  343.  
  344. if [[ -z "$__has_kms" ]]; then
  345. if [[ "$__chroot" -eq 1 ]]; then
  346. # in chroot, use kms by default for rpi4 or Debian 11 (bullseye) or newer
  347. if isPlatform "rpi4" || [[ "$__os_debian_ver" -ge 11 ]]; then
  348. __has_kms=1
  349. fi
  350. else
  351. # detect driver via inserted module / platform driver setup
  352. [[ -d "/sys/module/vc4" ]] && __has_kms=1
  353. fi
  354. fi
  355.  
  356. if [[ "$__has_kms" -eq 1 ]]; then
  357. __platform_flags+=(mesa kms)
  358. if ! isPlatform "aarm64" && [[ -z "$__has_dispmanx" ]]; then
  359. if [[ "$__chroot" -eq 1 ]]; then
  360. # in a chroot default to fkms (supporting dispmanx) when debian is older than 11 (bullseye)
  361. [[ "$__os_debian_ver" -lt 11 ]] && __has_dispmanx=1
  362. else
  363. # if running fkms driver, add dispmanx flag
  364. [[ "$(ls -A /sys/bus/platform/drivers/vc4_firmware_kms/*.firmwarekms 2>/dev/null)" ]] && __has_dispmanx=1
  365. fi
  366. fi
  367. [[ "$__has_dispmanx" -eq 1 ]] && __platform_flags+=(dispmanx)
  368. else
  369. __platform_flags+=(videocore)
  370. if ! isPlatform "aarm64"; then
  371. __platform_flags+=(dispmanx)
  372. fi
  373. fi
  374.  
  375. # delete legacy pkgconfig that conflicts with Mesa (may be installed via rpi-update)
  376. # see: https://github.com/raspberrypi/userland/pull/585
  377. rm -rf $pkgconfig/{egl.pc,glesv2.pc,vg.pc}
  378.  
  379. # set pkgconfig path for vendor libraries
  380. export PKG_CONFIG_PATH="$pkgconfig"
  381. }
  382.  
  383. function get_rpi_model() {
  384. # calculated based on the information from https://github.com/AndrewFromMelbourne/raspberry_pi_revision
  385. # see also https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-revision-codes
  386. local rev="0x$(sed -n '/^Revision/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo)"
  387. # if bit 23 is not set, we are on a rpi1 (bit 23 means the revision is a bitfield)
  388. if [[ $((($rev >> 23) & 1)) -eq 0 ]]; then
  389. __platform="rpi1"
  390. else
  391. # if bit 23 is set, get the cpu from bits 12-15
  392. local cpu=$((($rev >> 12) & 15))
  393. case $cpu in
  394. 0)
  395. __platform="rpi1"
  396. ;;
  397. 1)
  398. __platform="rpi2"
  399. ;;
  400. 2)
  401. __platform="rpi3"
  402. ;;
  403. 3)
  404. __platform="rpi4"
  405. ;;
  406. 4)
  407. __platform="rpi5"
  408. ;;
  409. esac
  410. fi
  411. }
  412. function get_platform() {
  413. local architecture="$(uname --machine)"
  414. if [[ -z "$__platform" ]]; then
  415. case "$(sed -n '/^Hardware/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo)" in
  416. BCM*)
  417. # RPI kernels before 2023-11-24 print a 'Hardware: BCM2835' line
  418. get_rpi_model
  419. ;;
  420. *ODROIDC)
  421. __platform="odroid-c1"
  422. ;;
  423. *ODROID-C2)
  424. __platform="odroid-c2"
  425. ;;
  426. "Freescale i.MX6 Quad/DualLite (Device Tree)")
  427. __platform="imx6"
  428. ;;
  429. *ODROID-XU[34])
  430. __platform="odroid-xu"
  431. ;;
  432. "Rockchip (Device Tree)")
  433. __platform="tinker"
  434. ;;
  435. Vero4K|Vero4KPlus)
  436. __platform="vero4k"
  437. ;;
  438. "Allwinner sun8i Family")
  439. __platform="armv7-mali"
  440. ;;
  441. *)
  442. # jetsons can be identified by device tree or soc0/family (depending on the L4T version used)
  443. # refer to the nv.sh script in the L4T DTS for a similar implementation
  444. if [[ -e "/proc/device-tree/compatible" ]]; then
  445. case "$(tr -d '\0' < /proc/device-tree/compatible)" in
  446. *raspberrypi*)
  447. get_rpi_model
  448. ;;
  449. *tegra186*)
  450. __platform="tegra-x2"
  451. ;;
  452. *tegra210*)
  453. __platform="tegra-x1"
  454. ;;
  455. *tegra194*)
  456. __platform="xavier"
  457. ;;
  458. *rockpro64*)
  459. __platform="rockpro64"
  460. ;;
  461. *imx6dl*)
  462. __platform="imx6"
  463. ;;
  464. *imx6q*)
  465. __platform="imx6"
  466. ;;
  467. *imx8mm*)
  468. __platform="imx8mm"
  469. ;;
  470. *rk3588*)
  471. __platform="rk3588"
  472. ;;
  473. esac
  474. elif [[ -e "/sys/devices/soc0/family" ]]; then
  475. case "$(tr -d '\0' < /sys/devices/soc0/family)" in
  476. *tegra30*)
  477. __platform="tegra-3"
  478. ;;
  479. *tegra114*)
  480. __platform="tegra-4"
  481. ;;
  482. *tegra124*)
  483. __platform="tegra-k1-32"
  484. ;;
  485. *tegra132*)
  486. __platform="tegra-k1-64"
  487. ;;
  488. *tegra210*)
  489. __platform="tegra-x1"
  490. ;;
  491. esac
  492. else
  493. __platform="$architecture"
  494. fi
  495. ;;
  496. esac
  497. fi
  498.  
  499. # check if we wish to target kms for platform
  500. if [[ -z "$__has_kms" ]]; then
  501. iniConfig " = " '"' "$configdir/all/retropie.cfg"
  502. iniGet "force_kms"
  503. [[ "$ini_value" == 1 ]] && __has_kms=1
  504. [[ "$ini_value" == 0 ]] && __has_kms=0
  505. fi
  506.  
  507. set_platform_defaults
  508.  
  509. # if we have a function for the platform, call it, otherwise use the default "native" one.
  510. if fnExists "platform_${__platform}"; then
  511. platform_${__platform}
  512. else
  513. platform_native
  514. fi
  515. }
  516.  
  517. function set_platform_defaults() {
  518. __default_opt_flags="-O2"
  519.  
  520. # add platform name and 32bit/64bit to platform flags
  521. __platform_flags=("$__platform" "$(getconf LONG_BIT)bit")
  522. __platform_arch=$(uname -m)
  523. }
  524.  
  525. function cpu_arm1176() {
  526. __default_cpu_flags="-mcpu=arm1176jzf-s -mfpu=vfp"
  527. __platform_flags+=(arm armv6)
  528. __qemu_cpu=arm1176
  529. }
  530.  
  531. function cpu_armv7() {
  532. local cpu="$1"
  533. if [[ -n "$cpu" ]]; then
  534. __default_cpu_flags="-mcpu=$cpu -mfpu=neon-vfpv4"
  535. else
  536. __default_cpu_flags="-march=armv7-a -mfpu=neon-vfpv4"
  537. cpu="cortex-a7"
  538. fi
  539. __platform_flags+=(arm armv7 neon)
  540. __qemu_cpu="$cpu"
  541. }
  542.  
  543. function cpu_armv8() {
  544. local cpu="$1"
  545. __default_cpu_flags="-mcpu=$cpu"
  546. if isPlatform "32bit"; then
  547. __default_cpu_flags+=" -mfpu=neon-fp-armv8"
  548. __platform_flags+=(arm armv8 neon)
  549. else
  550. __platform_flags+=(aarch64)
  551. fi
  552. __qemu_cpu="$cpu"
  553. }
  554.  
  555. function cpu_arm_state() {
  556. if isPlatform "32bit"; then
  557. __default_cpu_flags+=" -marm"
  558. fi
  559. }
  560.  
  561. function platform_conf_glext() {
  562. # required for mali-fbdev headers to define GL functions
  563. __default_cflags="-DGL_GLEXT_PROTOTYPES"
  564. }
  565.  
  566. function platform_rpi1() {
  567. cpu_arm1176
  568. __platform_flags+=(rpi gles)
  569. }
  570.  
  571. function platform_rpi2() {
  572. cpu_armv7 "cortex-a7"
  573. __platform_flags+=(rpi gles)
  574. }
  575.  
  576. function platform_rockpro64() {
  577. cpu_armv8 "cortex-a53"
  578. __platform_flags+=(gles kms)
  579. }
  580.  
  581. function platform_rpi3() {
  582. cpu_armv8 "cortex-a53"
  583. __platform_flags+=(rpi gles)
  584. }
  585.  
  586. function platform_rpi4() {
  587. cpu_armv8 "cortex-a72"
  588. __platform_flags+=(rpi gles gles3 gles31)
  589. }
  590.  
  591. function platform_rpi5() {
  592. cpu_armv8 "cortex-a76"
  593. __platform_flags+=(rpi gles gles3 gles31)
  594. }
  595.  
  596. function platform_odroid-c1() {
  597. cpu_armv7 "cortex-a5"
  598. cpu_arm_state
  599. __platform_flags+=(mali gles)
  600. }
  601.  
  602. function platform_odroid-c2() {
  603. cpu_armv8 "cortex-a72"
  604. cpu_arm_state
  605. __platform_flags+=(mali gles)
  606. }
  607.  
  608. function platform_odroid-xu() {
  609. cpu_armv7 "cortex-a7"
  610. cpu_arm_state
  611. platform_conf_glext
  612. __platform_flags+=(mali gles)
  613. }
  614.  
  615. function platform_tegra-x1() {
  616. cpu_armv8 "cortex-a57+crypto"
  617. __platform_flags+=(x11 gl vulkan)
  618. }
  619.  
  620. function platform_tegra-x2() {
  621. cpu_armv8 "cortex-a57+crypto"
  622. __platform_flags+=(x11 gl vulkan)
  623. }
  624.  
  625. function platform_xavier() {
  626. cpu_armv8 "native"
  627. __platform_flags+=(x11 gl vulkan)
  628. }
  629.  
  630. function platform_tegra-3() {
  631. cpu_armv7 "cortex-a9"
  632. __platform_flags+=(x11 gles vulkan)
  633. }
  634.  
  635. function platform_tegra-4() {
  636. cpu_armv7 "cortex-a15"
  637. __platform_flags+=(x11 gles vulkan)
  638. }
  639.  
  640. function platform_tegra-k1-32() {
  641. cpu_armv7 "cortex-a15"
  642. __platform_flags+=(x11 gl vulkan)
  643. }
  644.  
  645. function platform_tegra-k1-64() {
  646. cpu_armv8 "native"
  647. __platform_flags+=(x11 gl vulkan)
  648. }
  649.  
  650. function platform_tinker() {
  651. cpu_armv7 "cortex-a17"
  652. cpu_arm_state
  653. platform_conf_glext
  654. __platform_flags+=(kms gles)
  655. }
  656.  
  657. function platform_native() {
  658. __default_cpu_flags="-march=native"
  659. __platform_flags+=(gl vulkan)
  660. if [[ "$__has_kms" -eq 1 ]]; then
  661. __platform_flags+=(kms)
  662. else
  663. __platform_flags+=(x11)
  664. fi
  665. # add x86 platform flag for x86/x86_64 archictures.
  666. [[ "$__platform_arch" =~ (i386|i686|x86_64) ]] && __platform_flags+=(x86)
  667. }
  668.  
  669. function platform_armv7-mali() {
  670. cpu_armv7
  671. __platform_flags+=(mali gles)
  672. }
  673.  
  674. function platform_imx6() {
  675. cpu_armv7 "cortex-a9"
  676. [[ -d /sys/class/drm/card0/device/driver/etnaviv ]] && __platform_flags+=(x11 gles mesa)
  677. }
  678.  
  679. function platform_imx8mm() {
  680. cpu_armv8 "cortex-a53"
  681. __platform_flags+=(x11 gles)
  682. [[ -d /sys/class/drm/card0/device/driver/etnaviv ]] && __platform_flags+=(mesa)
  683. }
  684.  
  685. function platform_rk3588() {
  686. cpu_armv8 "cortex-a76.cortex-a55"
  687. __platform_flags+=(x11 gles gles3 gles32)
  688. }
  689.  
  690. function platform_vero4k() {
  691. cpu_armv7 "cortex-a7"
  692. __default_cflags="-I/opt/vero3/include -L/opt/vero3/lib"
  693. __platform_flags+=(mali gles)
  694. }
  695.  
  696. function platform_sun50i-h618() {
  697. cpu_armv8 "cortex-a53"
  698. __platform_flags+=(x11 gles gles3 gles31)
  699. }
  700.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement