embedded-test.sh 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168
  1. #!/usr/bin/env mksh
  2. #
  3. # Copyright © 2014-2016
  4. # Waldemar Brodkorb <wbx@embedded-test.org>
  5. #
  6. # Provided that these terms and disclaimer and all copyright notices
  7. # are retained or reproduced in an accompanying document, permission
  8. # is granted to deal in this work without restriction, including un‐
  9. # limited rights to use, publicly perform, distribute, sell, modify,
  10. # merge, give away, or sublicence.
  11. #
  12. # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
  13. # the utmost extent permitted by applicable law, neither express nor
  14. # implied; without malicious intent or gross negligence. In no event
  15. # may a licensor, author or contributor be held liable for indirect,
  16. # direct, other damage, loss, or other issues arising in any way out
  17. # of dealing in the work, even if advised of the possibility of such
  18. # damage or existence of a defect, except proven that it results out
  19. # of said person’s immediate fault when using the work as intended.
  20. #
  21. # Alternatively, this work may be distributed under the Terms of the
  22. # General Public License, any version as published by the Free Soft‐
  23. # ware Foundation.
  24. # uClibc-ng
  25. arch_list_uclibcng="alpha armv5 armv6 armv7 armeb arcv1 arcv2 arcv1-be arcv2-be avr32 bfin c6x crisv10 crisv32 ia64 lm32 m68k m68k-nommu metag microblazeel microblazebe mips mipssf mipsel mipselsf mips64 mips64eln32 mips64n32 mips64n64 mips64el mips64el mips64eln64 or1k ppc ppcsf sh2 sh3 sh4 sh4eb sparc x86 x86_64 xtensa xtensa-nommu"
  26. # musl
  27. arch_list_musl="aarch64 armv5 armv6 armv7 armeb microblazeel microblazebe mips mipssf mipsel mipselsf or1k ppc ppcsf sh4 sh4eb x86 x86_64"
  28. # glibc
  29. arch_list_glibc="aarch64 alpha armv5 armv6 armv7 armeb ia64 microblazeel microblazebe mips mipssf mipsel mipselsf mips64 mips64eln32 mips64n32 mips64n64 mips64el mips64eln32 mips64eln64 nios2 ppc ppcsf ppc64 ppc64le s390 sh4 sh4eb sparc64 tilegx x86 x86_64"
  30. # newlib
  31. arch_list_newlib="aarch64 arcv1 armv5 armeb bfin crisv10 crisv32 frv lm32 m68k microblazeel mips mipsel or1k ppc sparc x86"
  32. topdir=$(pwd)
  33. giturl=http://git.openadk.org/openadk.git
  34. valid_libc="uclibc-ng musl glibc newlib"
  35. valid_tests="toolchain boot libc ltp mksh native"
  36. bootserver=10.0.0.1
  37. buildserver=10.0.0.2
  38. tools='make git wget xz cpio tar awk sed'
  39. f=0
  40. for tool in $tools; do
  41. if ! which $tool >/dev/null; then
  42. echo "Checking if $tool is installed... failed"
  43. f=1
  44. fi
  45. done
  46. if [ $f -eq 1 ]; then
  47. exit 1
  48. fi
  49. help() {
  50. cat >&2 <<EOF
  51. Syntax: $0 [ --libc=<libc> --arch=<arch> --test=<test> ]
  52. Explanation:
  53. --libc=<libc> C library to use (${valid_libc})
  54. --arch=<arch> architecture to check (otherwise all supported)
  55. --skiparch=<arch> architectures to skip when all choosen
  56. --targets=<targets.txt> a list of remote targets to test via nfsroot or chroot
  57. --test=<test> run test (${valid_tests}), default toolchain
  58. --libc-source=<dir> use directory with source for C library
  59. --gcc-source=<dir> use directory with source for gcc
  60. --binutils-source=<dir> use directory with source for binutils
  61. --gdb-source=<dir> use directory with source for gdb
  62. --libc-version=<version> use version of C library
  63. --gcc-version=<version> use version of gcc
  64. --binutils-version=<version> use version of binutils
  65. --gdb-version=<version> use version of gdb
  66. --ntp=<ntpserver> set NTP server for test run
  67. --packages=<packagelist> add extra packages to the build
  68. --update update OpenADK source via git pull, before building
  69. --continue continue on a broken build
  70. --cleandir clean OpenADK build directories before build
  71. --clean clean OpenADK build directory for single arch
  72. --no-clean do not clean OpenADK build directory for single arch
  73. --debug enable debug output from OpenADK
  74. --shell start a shell instead of test autorun
  75. --help this help text
  76. EOF
  77. exit 1
  78. }
  79. cont=0
  80. clean=0
  81. noclean=0
  82. cleandir=0
  83. shell=0
  84. update=0
  85. debug=0
  86. ntp=""
  87. libc=""
  88. test="toolchain"
  89. while [[ $1 != -- && $1 = -* ]]; do case $1 {
  90. (--cleandir) cleandir=1; shift ;;
  91. (--clean) clean=1; shift ;;
  92. (--no-clean) noclean=1; shift ;;
  93. (--debug) debug=1; shift ;;
  94. (--update) update=1; shift ;;
  95. (--continue) cont=1; shift ;;
  96. (--shell) shell=1 shift ;;
  97. (--libc=*) libc=${1#*=}; shift ;;
  98. (--arch=*) archs=${1#*=}; shift ;;
  99. (--skiparch=*) skiparchs=${1#*=}; shift ;;
  100. (--targets=*) targets=${1#*=}; shift ;;
  101. (--test=*) test=${1#*=}; shift ;;
  102. (--libc-source=*) libcsource=${1#*=}; shift ;;
  103. (--gcc-source=*) gccsource=${1#*=}; shift ;;
  104. (--binutils-source=*) binutilssource=${1#*=}; shift ;;
  105. (--gdb-source=*) gdbsource=${1#*=}; shift ;;
  106. (--libc-version=*) libcversion=${1#*=}; shift ;;
  107. (--gcc-version=*) gccversion=${1#*=}; shift ;;
  108. (--binutils-version=*) binutilsversion=${1#*=}; shift ;;
  109. (--gdb-version=*) gdbversion=${1#*=}; shift ;;
  110. (--packages=*) packages=${1#*=}; shift ;;
  111. (--ntp=*) ntp=${1#*=}; shift ;;
  112. (--help) help; shift ;;
  113. (--*) echo "unknown option $1"; exit 1 ;;
  114. (-*) help ;;
  115. }; done
  116. if [ ! -z $targets ]; then
  117. targetmode=1
  118. fi
  119. if [ -z "$libc" ]; then
  120. if [[ $libcversion ]]; then
  121. echo "You can not use a specific C library version without setting the C library"
  122. exit 1
  123. else
  124. libc="uclibc-ng musl glibc newlib"
  125. fi
  126. fi
  127. if [ ! -d openadk ]; then
  128. git clone $giturl
  129. if [ $? -ne 0 ]; then
  130. echo "Cloning from $giturl failed."
  131. exit 1
  132. fi
  133. else
  134. if [ $update -eq 1 ]; then
  135. (cd openadk && git pull)
  136. if [ $? -ne 0 ]; then
  137. echo "Updating from $giturl failed."
  138. exit 1
  139. fi
  140. fi
  141. fi
  142. get_arch_info() {
  143. arch=$1
  144. lib=$2
  145. emulator=qemu
  146. noappend=0
  147. piggyback=0
  148. suffix=
  149. allowed_libc=
  150. runtime_test=
  151. qemu_args=-nographic
  152. case ${arch} in
  153. aarch64)
  154. allowed_libc="musl glibc newlib"
  155. runtime_test="musl glibc"
  156. allowed_tests="toolchain boot libc ltp mksh native"
  157. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=aarch64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-aarch64"
  158. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=aarch64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-aarch64"
  159. default_newlib="ADK_APPLIANCE=test ADK_TARGET_ARCH=aarch64 ADK_TARGET_SYSTEM=toolchain-aarch64"
  160. cpu_arch=aarch64
  161. qemu_machine=virt
  162. qemu_args="${qemu_args} -cpu cortex-a57 -netdev user,id=eth0 -device virtio-net-device,netdev=eth0"
  163. ;;
  164. alpha)
  165. allowed_libc="uclibc-ng glibc"
  166. runtime_test="uclibc-ng glibc"
  167. allowed_tests="toolchain boot libc ltp mksh native"
  168. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=alpha ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-alpha"
  169. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=alpha ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-alpha"
  170. cpu_arch=alpha
  171. march=alpha
  172. qemu=qemu-system-${cpu_arch}
  173. qemu_machine=clipper
  174. qemu_args="${qemu_args} -monitor null"
  175. ;;
  176. armv5)
  177. allowed_libc="uclibc-ng musl glibc newlib"
  178. runtime_test="uclibc-ng musl glibc"
  179. allowed_tests="toolchain boot libc ltp mksh native"
  180. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-versatilepb"
  181. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-versatilepb"
  182. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-versatilepb"
  183. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=arm ADK_TARGET_ENDIAN=little ADK_TARGET_SYSTEM=toolchain-arm ADK_TARGET_CPU=arm926ej-s"
  184. cpu_arch=arm
  185. march=arm-versatilepb
  186. qemu=qemu-system-${cpu_arch}
  187. qemu_machine=versatilepb
  188. suffix=soft_eabi
  189. dtbdir=openadk/firmware/qemu-${march}_${lib}_${cpu_arch}_${suffix}
  190. qemu_args="${qemu_args} -cpu arm926 -net user -net nic,model=smc91c111"
  191. ;;
  192. armv6)
  193. allowed_libc="uclibc-ng musl glibc"
  194. runtime_test="uclibc-ng musl glibc"
  195. allowed_tests="toolchain boot libc ltp mksh native"
  196. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-realview-eb-mpcore"
  197. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-realview-eb-mpcore"
  198. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-realview-eb-mpcore"
  199. cpu_arch=arm
  200. march=arm-realview-eb-mpcore
  201. qemu=qemu-system-${cpu_arch}
  202. qemu_machine=realview-eb-mpcore
  203. suffix=hard_eabihf
  204. dtbdir=openadk/firmware/qemu-${march}_${lib}_${cpu_arch}_${suffix}
  205. qemu_args="${qemu_args} -net user -net nic"
  206. ;;
  207. armv7)
  208. allowed_libc="uclibc-ng musl glibc"
  209. runtime_test="uclibc-ng musl glibc"
  210. allowed_tests="toolchain boot libc ltp mksh native"
  211. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-vexpress-a9"
  212. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-vexpress-a9"
  213. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-arm-vexpress-a9"
  214. cpu_arch=arm
  215. march=arm-vexpress-a9
  216. qemu=qemu-system-${cpu_arch}
  217. qemu_machine=vexpress-a9
  218. suffix=hard_eabihf
  219. dtbdir=openadk/firmware/qemu-${march}_${lib}_${cpu_arch}_${suffix}
  220. qemu_args="${qemu_args} -cpu cortex-a9 -net user -net nic,model=lan9118 -dtb ${dtbdir}/vexpress-v2p-ca9.dtb"
  221. ;;
  222. armeb)
  223. allowed_libc="uclibc-ng musl glibc"
  224. runtime_test=""
  225. allowed_tests="toolchain"
  226. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-arm ADK_TARGET_FLOAT=soft ADK_TARGET_ENDIAN=big"
  227. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-arm ADK_TARGET_FLOAT=soft ADK_TARGET_ENDIAN=big"
  228. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=arm ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-arm ADK_TARGET_FLOAT=soft ADK_TARGET_ENDIAN=big"
  229. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=arm ADK_TARGET_ENDIAN=big ADK_TARGET_SYSTEM=toolchain-arm"
  230. ;;
  231. arcv1)
  232. allowed_libc="uclibc-ng newlib"
  233. runtime_test="uclibc-ng"
  234. allowed_tests="toolchain boot libc ltp mksh native"
  235. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=nsim-arcv1 ADK_TARGET_ENDIAN=little"
  236. emulator=nsim
  237. cpu_arch=arc
  238. piggyback=1
  239. ;;
  240. arcv2)
  241. allowed_libc="uclibc-ng"
  242. runtime_test="uclibc-ng"
  243. allowed_tests="toolchain boot libc ltp mksh native"
  244. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=nsim-arcv2 ADK_TARGET_ENDIAN=little"
  245. emulator=nsim
  246. cpu_arch=arc
  247. piggyback=1
  248. ;;
  249. arcv1-be)
  250. allowed_libc="uclibc-ng"
  251. runtime_test="uclibc-ng"
  252. allowed_tests="toolchain boot libc ltp mksh native"
  253. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=nsim-arcv1 ADK_TARGET_ENDIAN=big"
  254. emulator=nsim
  255. cpu_arch=arceb
  256. march=arcv1
  257. piggyback=1
  258. ;;
  259. arcv2-be)
  260. allowed_libc="uclibc-ng"
  261. runtime_test="uclibc-ng"
  262. allowed_tests="toolchain boot libc ltp mksh native"
  263. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=arc ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=nsim-arcv2 ADK_TARGET_ENDIAN=big"
  264. emulator=nsim
  265. cpu_arch=arceb
  266. march=arcv2
  267. piggyback=1
  268. ;;
  269. avr32)
  270. allowed_libc="uclibc-ng"
  271. runtime_test=""
  272. allowed_tests="toolchain"
  273. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=avr32 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-avr32"
  274. ;;
  275. bfin)
  276. allowed_libc="uclibc-ng"
  277. runtime_test=""
  278. allowed_tests="toolchain"
  279. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=bfin ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-bfin"
  280. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=bfin ADK_TARGET_SYSTEM=toolchain-bfin"
  281. ;;
  282. c6x)
  283. allowed_libc="uclibc-ng"
  284. runtime_test=""
  285. allowed_tests="toolchain"
  286. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=c6x ADK_TARGET_SYSTEM=toolchain-c6x"
  287. ;;
  288. crisv10)
  289. allowed_libc="uclibc-ng newlib"
  290. runtime_test=""
  291. allowed_tests="toolchain"
  292. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=cris ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-cris ADK_TARGET_CPU=crisv10"
  293. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=cris ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-cris ADK_TARGET_CPU=crisv10"
  294. ;;
  295. crisv32)
  296. allowed_libc="uclibc-ng newlib"
  297. runtime_test="uclibc-ng"
  298. allowed_tests="toolchain boot libc ltp native"
  299. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=cris ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-cris"
  300. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=cris ADK_TARGET_ENDIAN=little ADK_TARGET_SYSTEM=toolchain-cris ADK_TARGET_CPU=crisv32"
  301. cpu_arch=crisv32
  302. march=cris
  303. qemu=qemu-system-${march}
  304. qemu_machine=axis-dev88
  305. piggyback=1
  306. ;;
  307. frv)
  308. allowed_libc="newlib"
  309. runtime_test=""
  310. allowed_tests="toolchain"
  311. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=frv ADK_TARGET_SYSTEM=toolchain-frv"
  312. ;;
  313. ia64)
  314. allowed_libc="glibc"
  315. runtime_test=""
  316. allowed_tests="toolchain"
  317. default_glibbc="ADK_APPLIANCE=new ADK_TARGET_ARCH=ia64 ADK_TARGET_SYSTEM=toolchain-ia64"
  318. ;;
  319. h8300)
  320. allowed_libc="uclibc-ng"
  321. runtime_test=""
  322. allowed_tests="toolchain"
  323. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=h8300 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-h8300"
  324. ;;
  325. lm32)
  326. allowed_libc="uclibc-ng newlib"
  327. runtime_test=""
  328. allowed_tests="toolchain"
  329. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=lm32 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-lm32"
  330. ;;
  331. m68k)
  332. allowed_libc="uclibc-ng newlib"
  333. runtime_test=""
  334. allowed_tests="toolchain"
  335. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=m68k ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-m68k-q800"
  336. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=m68k ADK_TARGET_SYSTEM=toolchain-m68k ADK_TARGET_CPU=68040"
  337. ;;
  338. m68k-nommu)
  339. allowed_libc="uclibc-ng"
  340. runtime_test=""
  341. allowed_tests="toolchain"
  342. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=m68k ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-m68k-mcf5208"
  343. ;;
  344. metag)
  345. allowed_libc="uclibc-ng"
  346. runtime_test="uclibc-ng"
  347. allowed_tests="toolchain boot"
  348. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=metag ADK_TARGET_FS=initramfspiggyback ADK_TARGET_SYSTEM=qemu-metag"
  349. cpu_arch=metag
  350. qemu=qemu-system-meta
  351. qemu_args="-nographic -display none -device da,exit_threads=1 -chardev stdio,id=chan1 -chardev pty,id=chan2"
  352. qemu_machine=01sp
  353. piggyback=1
  354. ;;
  355. microblazeel)
  356. allowed_libc="uclibc-ng musl glibc newlib"
  357. runtime_test="musl glibc"
  358. allowed_tests="toolchain boot libc mksh ltp native"
  359. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=little"
  360. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=little"
  361. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=little"
  362. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=microblaze ADK_TARGET_SYSTEM=toolchain-microblaze ADK_TARGET_ENDIAN=little"
  363. cpu_arch=microblazeel
  364. march=microblaze-s3adsp1800
  365. qemu_machine=petalogix-s3adsp1800
  366. ;;
  367. microblazebe)
  368. allowed_libc="uclibc-ng musl glibc newlib"
  369. runtime_test="musl glibc"
  370. allowed_tests="toolchain boot libc mksh ltp native"
  371. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=big"
  372. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=big"
  373. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=microblaze ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-microblaze-s3adsp1800 ADK_TARGET_ENDIAN=big"
  374. cpu_arch=microblaze
  375. march=microblaze-s3adsp1800
  376. qemu=qemu-system-${cpu_arch}
  377. qemu_machine=petalogix-s3adsp1800
  378. ;;
  379. mips)
  380. allowed_libc="uclibc-ng musl glibc newlib"
  381. runtime_test="uclibc-ng musl glibc"
  382. allowed_tests="toolchain boot libc mksh ltp native"
  383. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=hard"
  384. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=hard"
  385. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=hard"
  386. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=mips ADK_TARGET_SYSTEM=toolchain-mips ADK_TARGET_ENDIAN=big"
  387. cpu_arch=mips
  388. qemu=qemu-system-${cpu_arch}
  389. qemu_machine=malta
  390. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  391. suffix=hard
  392. ;;
  393. mipssf)
  394. allowed_libc="uclibc-ng musl glibc"
  395. runtime_test="uclibc-ng musl glibc"
  396. allowed_tests="toolchain boot libc mksh ltp native"
  397. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=soft"
  398. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=soft"
  399. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=big ADK_TARGET_FLOAT=soft"
  400. cpu_arch=mips
  401. march=mips
  402. qemu=qemu-system-${cpu_arch}
  403. qemu_machine=malta
  404. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  405. suffix=soft
  406. ;;
  407. mipsel)
  408. allowed_libc="uclibc-ng musl glibc newlib"
  409. runtime_test="uclibc-ng musl glibc"
  410. allowed_tests="toolchain boot libc mksh ltp native"
  411. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=hard"
  412. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=hard"
  413. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=hard"
  414. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=mips ADK_TARGET_SYSTEM=toolchain-mips ADK_TARGET_ENDIAN=little"
  415. cpu_arch=mipsel
  416. march=mips
  417. qemu=qemu-system-${cpu_arch}
  418. qemu_machine=malta
  419. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  420. suffix=hard
  421. ;;
  422. mipselsf)
  423. allowed_libc="uclibc-ng musl glibc"
  424. runtime_test="uclibc-ng musl glibc"
  425. allowed_tests="toolchain boot libc mksh ltp native"
  426. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=soft"
  427. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=soft"
  428. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips ADK_TARGET_ENDIAN=little ADK_TARGET_FLOAT=soft"
  429. cpu_arch=mipsel
  430. march=mips
  431. qemu=qemu-system-${cpu_arch}
  432. qemu_machine=malta
  433. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  434. suffix=soft
  435. ;;
  436. mips64)
  437. allowed_libc="uclibc-ng glibc"
  438. runtime_test="uclibc-ng glibc"
  439. allowed_tests="toolchain boot libc mksh ltp native"
  440. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=o32"
  441. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=o32"
  442. cpu_arch=mips64
  443. qemu_machine=malta
  444. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  445. suffix=o32
  446. ;;
  447. mips64n32)
  448. allowed_libc="uclibc-ng glibc"
  449. runtime_test="uclibc-ng glibc"
  450. allowed_tests="toolchain boot libc mksh ltp native"
  451. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=n32"
  452. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=n32"
  453. cpu_arch=mips64
  454. march=mips64
  455. qemu=qemu-system-${cpu_arch}
  456. qemu_machine=malta
  457. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  458. suffix=n32
  459. ;;
  460. mips64n64)
  461. allowed_libc="uclibc-ng glibc"
  462. runtime_test="uclibc-ng glibc"
  463. allowed_tests="toolchain boot libc mksh ltp native"
  464. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=n64"
  465. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=big ADK_TARGET_ABI=n64"
  466. cpu_arch=mips64
  467. march=mips64
  468. qemu=qemu-system-${cpu_arch}
  469. qemu_machine=malta
  470. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  471. suffix=n64
  472. ;;
  473. mips64el)
  474. allowed_libc="uclibc-ng glibc"
  475. runtime_test="uclibc-ng glibc"
  476. allowed_tests="toolchain boot libc mksh ltp native"
  477. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=o32"
  478. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=o32"
  479. cpu_arch=mips64el
  480. march=mips64
  481. qemu_machine=malta
  482. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  483. suffix=o32
  484. ;;
  485. mips64eln32)
  486. allowed_libc="uclibc-ng glibc"
  487. runtime_test="uclibc-ng glibc"
  488. allowed_tests="toolchain boot libc mksh ltp native"
  489. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=n32"
  490. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=n32"
  491. cpu_arch=mips64el
  492. march=mips64
  493. qemu=qemu-system-${cpu_arch}
  494. qemu_machine=malta
  495. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  496. suffix=n32
  497. ;;
  498. mips64eln64)
  499. allowed_libc="uclibc-ng glibc"
  500. runtime_test="uclibc-ng glibc"
  501. allowed_tests="toolchain boot libc mksh ltp native"
  502. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=n64"
  503. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=mips64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-mips64 ADK_TARGET_ENDIAN=little ADK_TARGET_ABI=n64"
  504. cpu_arch=mips64el
  505. march=mips64
  506. qemu=qemu-system-${cpu_arch}
  507. qemu_machine=malta
  508. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  509. suffix=n64
  510. ;;
  511. ppcsf)
  512. allowed_libc="uclibc-ng musl glibc newlib"
  513. runtime_test="uclibc-ng musl glibc"
  514. allowed_tests="toolchain boot libc mksh ltp native"
  515. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-bamboo ADK_TARGET_FLOAT=soft"
  516. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-bamboo ADK_TARGET_FLOAT=soft"
  517. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-bamboo ADK_TARGET_FLOAT=soft"
  518. cpu_arch=ppc
  519. march=ppc-bamboo
  520. qemu=qemu-system-${cpu_arch}
  521. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  522. qemu_machine=bamboo
  523. suffix=soft
  524. ;;
  525. nios2)
  526. allowed_libc="glibc"
  527. runtime_test=""
  528. allowed_tests="toolchain"
  529. default_glibc="ADK_APPLIANCE=new ADK_TARGET_ARCH=nios2 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-nios2"
  530. ;;
  531. or1k)
  532. allowed_libc="uclibc-ng musl newlib"
  533. runtime_test=""
  534. allowed_tests="toolchain"
  535. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=or1k ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-or1k"
  536. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=or1k ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-or1k"
  537. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=or1k ADK_TARGET_SYSTEM=toolchain-or1k"
  538. ;;
  539. ppc)
  540. allowed_libc="uclibc-ng musl glibc newlib"
  541. runtime_test="uclibc-ng musl glibc"
  542. allowed_tests="toolchain boot libc mksh ltp native"
  543. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-macppc ADK_TARGET_FLOAT=hard"
  544. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-macppc ADK_TARGET_FLOAT=hard"
  545. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc-macppc ADK_TARGET_FLOAT=hard"
  546. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=ppc ADK_TARGET_SYSTEM=toolchain-ppc"
  547. cpu_arch=ppc
  548. march=ppc-macppc
  549. qemu=qemu-system-${cpu_arch}
  550. qemu_args="${qemu_args} -device e1000,netdev=adk0 -netdev user,id=adk0"
  551. qemu_machine=mac99
  552. suffix=hard
  553. noappend=1
  554. ;;
  555. ppc64)
  556. allowed_libc="glibc"
  557. runtime_test="glibc"
  558. allowed_tests="toolchain boot libc mksh ltp native"
  559. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc64 ADK_TARGET_ENDIAN=big"
  560. cpu_arch=ppc64
  561. qemu=qemu-system-${cpu_arch}
  562. qemu_machine=pseries
  563. ;;
  564. ppc64le)
  565. allowed_libc="glibc"
  566. runtime_test="glibc"
  567. allowed_tests="toolchain"
  568. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=ppc64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-ppc64 ADK_TARGET_ENDIAN=little"
  569. cpu_arch=ppc64
  570. qemu=qemu-system-${cpu_arch}
  571. qemu_machine=pseries
  572. ;;
  573. s390)
  574. allowed_libc="glibc"
  575. runtime_test="glibc"
  576. allowed_tests="toolchain boot libc mksh ltp native"
  577. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=s390 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-s390"
  578. cpu_arch=s390x
  579. qemu=qemu-system-${cpu_arch}
  580. qemu_machine=s390-ccw-virtio-2.4
  581. ;;
  582. sh2)
  583. allowed_libc="uclibc-ng"
  584. runtime_test=""
  585. allowed_tests="toolchain"
  586. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=sh ADK_TARGET_SYSTEM=toolchain-sh ADK_TARGET_CPU=sh2"
  587. cpu_arch=sh2
  588. ;;
  589. sh3)
  590. allowed_libc="uclibc-ng"
  591. runtime_test=""
  592. allowed_tests="toolchain"
  593. default_uclibc_ng="ADK_APPLIANCE=new ADK_TARGET_ARCH=sh ADK_TARGET_SYSTEM=toolchain-sh ADK_TARGET_CPU=sh3"
  594. cpu_arch=sh3
  595. ;;
  596. sh4)
  597. allowed_libc="uclibc-ng musl glibc"
  598. runtime_test="uclibc-ng musl glibc"
  599. allowed_tests="toolchain boot libc mksh ltp native"
  600. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little"
  601. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little"
  602. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=little"
  603. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=sh ADK_TARGET_SYSTEM=toolchain-sh ADK_TARGET_CPU=sh4"
  604. cpu_arch=sh4
  605. march=sh
  606. qemu=qemu-system-${cpu_arch}
  607. qemu_machine=r2d
  608. qemu_args="${qemu_args} -monitor null -serial null -serial stdio"
  609. ;;
  610. sh4eb)
  611. allowed_libc="uclibc-ng musl glibc"
  612. runtime_test=""
  613. allowed_tests="toolchain"
  614. cpu_arch=sh4eb
  615. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big"
  616. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big"
  617. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=sh ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sh ADK_TARGET_ENDIAN=big"
  618. march=sh
  619. qemu=qemu-system-${cpu_arch}
  620. qemu_machine=r2d
  621. qemu_args="${qemu_args} -monitor null -serial null -serial stdio"
  622. ;;
  623. sparc)
  624. allowed_libc="uclibc-ng glibc newlib"
  625. runtime_test="uclibc-ng glibc"
  626. allowed_tests="toolchain boot libc mksh ltp native"
  627. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=sparc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sparc"
  628. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=sparc ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sparc"
  629. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=sparc ADK_TARGET_SYSTEM=toolchain-sparc"
  630. cpu_arch=sparc
  631. qemu_machine=SS-10
  632. ;;
  633. sparc64)
  634. allowed_libc="glibc"
  635. runtime_test="glibc"
  636. allowed_tests="toolchain boot libc mksh ltp native"
  637. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=sparc64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-sparc64"
  638. cpu_arch=sparc64
  639. qemu_machine=sun4u
  640. qemu_args="${qemu_args} -net nic,model=e1000 -net user"
  641. ;;
  642. tilegx)
  643. allowed_libc="glibc"
  644. runtime_test=""
  645. allowed_tests="toolchain"
  646. default_glibc="ADK_APPLIANCE=new ADK_TARGET_ARCH=tile ADK_TARGET_CPU=tilegx ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=toolchain-tile"
  647. ;;
  648. x86)
  649. allowed_libc="uclibc-ng musl glibc newlib"
  650. runtime_test="uclibc-ng musl glibc"
  651. allowed_tests="toolchain boot libc mksh ltp native"
  652. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86"
  653. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86"
  654. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86"
  655. default_newlib="ADK_APPLIANCE=new ADK_TARGET_ARCH=x86 ADK_TARGET_SYSTEM=toolchain-x86"
  656. cpu_arch=i686
  657. qemu=qemu-system-i386
  658. qemu_machine=pc
  659. qemu_args="${qemu_args}"
  660. ;;
  661. x86_64)
  662. allowed_libc="uclibc-ng musl glibc"
  663. runtime_test="uclibc-ng musl glibc"
  664. allowed_tests="toolchain boot libc mksh ltp native"
  665. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86_64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86_64"
  666. default_glibc="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86_64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86_64"
  667. default_musl="ADK_APPLIANCE=test ADK_TARGET_ARCH=x86_64 ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-x86_64"
  668. cpu_arch=x86_64
  669. qemu_machine=pc
  670. libdir=lib64
  671. ;;
  672. x86_64_x32)
  673. allowed_libc="musl glibc"
  674. runtime_test=""
  675. allowed_tests="toolchain"
  676. cpu_arch=x86_64
  677. qemu=qemu-system-${cpu_arch}
  678. qemu_machine=pc
  679. libdir=libx32
  680. ;;
  681. xtensa)
  682. allowed_libc="uclibc-ng"
  683. runtime_test="uclibc-ng"
  684. allowed_tests="toolchain boot libc mksh ltp native"
  685. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=xtensa ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-xtensa ADK_TARGET_XTENSA=dc233c"
  686. cpu_arch=xtensa
  687. qemu=qemu-system-${cpu_arch}
  688. qemu_machine=ml605
  689. qemu_args="${qemu_args} -cpu dc233c"
  690. ;;
  691. xtensa-nommu)
  692. allowed_libc="uclibc-ng"
  693. runtime_test="uclibc-ng"
  694. allowed_tests="toolchain"
  695. default_uclibc_ng="ADK_APPLIANCE=test ADK_TARGET_ARCH=xtensa ADK_TARGET_FS=initramfsarchive ADK_TARGET_SYSTEM=qemu-xtensa ADK_TARGET_XTENSA=de212"
  696. cpu_arch=xtensa
  697. qemu=qemu-system-${cpu_arch}
  698. qemu_machine=ml605
  699. qemu_args="${qemu_args} -cpu de212"
  700. ;;
  701. *)
  702. echo "architecture ${arch} not supported"; exit 1;;
  703. esac
  704. }
  705. # creating test script to be run on boot
  706. create_run_sh() {
  707. test=$1
  708. file=$2
  709. type=$3
  710. if [ "$type" = "netcat" ]; then
  711. tee="| tee -a /REPORT"
  712. fi
  713. cat > $file << EOF
  714. #!/bin/sh
  715. uname -a
  716. if [ \$ntpserver ]; then
  717. rdate \$ntpserver
  718. else
  719. rdate time.fu-berlin.de
  720. fi
  721. EOF
  722. if [ "$type" = "netcat" ]; then
  723. cat >> $file << EOF
  724. dmesg >> /REPORT
  725. EOF
  726. fi
  727. # boot test
  728. if [ $test = "boot" ]; then
  729. cat >> $file << EOF
  730. file /bin/busybox $tee
  731. size /bin/busybox $tee
  732. for i in \$(ls /lib/*.so|grep -v libgcc);do
  733. size \$i $tee
  734. done
  735. EOF
  736. fi
  737. # ltp test
  738. if [ $test = "ltp" ]; then
  739. cat >> $file << EOF
  740. /opt/ltp/runltp $tee
  741. EOF
  742. fi
  743. # mksh test
  744. if [ $test = "mksh" ]; then
  745. cat >> $file << EOF
  746. tty=\$(cat /proc/consoles |cut -f 1 -d " ")
  747. mksh -T !/dev/\$tty -c '/opt/mksh/test.sh' $tee
  748. EOF
  749. fi
  750. # libc test
  751. if [ $test = "libc" ]; then
  752. case $lib in
  753. uclibc-ng)
  754. cat >> $file << EOF
  755. cd /opt/uclibc-ng/test
  756. sh ./uclibcng-testrunner.sh $tee
  757. EOF
  758. ;;
  759. musl|glibc)
  760. cat >> $file << EOF
  761. cd /opt/libc-test
  762. CC=: make run $tee
  763. EOF
  764. ;;
  765. esac
  766. fi
  767. if [ "$type" = "netcat" ]; then
  768. cat >> $file << EOF
  769. echo quit|nc $buildserver 9999
  770. EOF
  771. fi
  772. if [ "$type" = "quit" ]; then
  773. cat >> $file << EOF
  774. exit
  775. EOF
  776. fi
  777. chmod u+x $file
  778. }
  779. runtest() {
  780. lib=$1
  781. arch=$2
  782. test=$3
  783. if [ $ntp ]; then
  784. qemu_append="-append ntpserver=$ntp"
  785. fi
  786. if [ $shell -eq 1 ]; then
  787. qemu_append="-append shell"
  788. fi
  789. qemu=qemu-system-${arch}
  790. march=${arch}
  791. get_arch_info $arch $lib
  792. case $emulator in
  793. qemu)
  794. echo "Using QEMU as emulator"
  795. if ! which $qemu >/dev/null; then
  796. echo "Checking if $qemu is installed... failed"
  797. exit 1
  798. fi
  799. qemuver=$(${qemu} -version|awk '{ print $4 }')
  800. if [ "$arch" != "metag" ]; then
  801. if [ $(echo $qemuver |sed -e "s#\.##g" -e "s#,##") -lt 240 ]; then
  802. echo "Your qemu version is too old. Please update to 2.4 or greater"
  803. exit 1
  804. fi
  805. fi
  806. ;;
  807. nsim)
  808. echo "Using Synopsys NSIM as simulator"
  809. if ! which nsimdrv >/dev/null; then
  810. echo "Checking if $emulator is installed... failed"
  811. exit 1
  812. fi
  813. ;;
  814. *)
  815. echo "emulator/simulator not supported"
  816. exit 1
  817. ;;
  818. esac
  819. echo "Starting test for $lib and $arch"
  820. # check if initramfs or piggyback is used
  821. if [ $piggyback -eq 1 ]; then
  822. echo "Using extra directory for test image creation"
  823. root=openadk/extra
  824. rm -rf openadk/extra 2>/dev/null
  825. mkdir openadk/extra 2>/dev/null
  826. if [ ! -z $suffix ]; then
  827. kernel=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}_${suffix}/${emulator}-${march}-initramfspiggyback-kernel
  828. else
  829. kernel=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}/${emulator}-${march}-initramfspiggyback-kernel
  830. fi
  831. else
  832. echo "Generating root filesystem for test run"
  833. root=$(mktemp -d /tmp/XXXX)
  834. if [ ! -z $suffix ]; then
  835. archive=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}_${suffix}/qemu-${march}-${lib}-initramfsarchive.tar.xz
  836. kernel=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}_${suffix}/qemu-${march}-initramfsarchive-kernel
  837. else
  838. archive=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}/${emulator}-${march}-${lib}-initramfsarchive.tar.xz
  839. kernel=openadk/firmware/${emulator}-${march}_${lib}_${cpu_arch}/${emulator}-${march}-initramfsarchive-kernel
  840. fi
  841. if [ ! -f $archive ]; then
  842. echo "No root filesystem available for architecture ${arch} tried $archive"
  843. exit 1
  844. fi
  845. tar -xf $archive -C $root
  846. fi
  847. create_run_sh $test ${root}/run.sh quit
  848. if [ $piggyback -eq 1 ]; then
  849. (cd openadk && make v)
  850. else
  851. echo "Creating initramfs filesystem"
  852. (cd $root; find . | cpio -o -C512 -Hnewc |xz --check=crc32 --stdout > ${topdir}/initramfs.${arch})
  853. rm -rf $root
  854. qemu_args="$qemu_args -initrd initramfs.${arch}"
  855. fi
  856. # qemu-ppc overwrites existing commandline
  857. if [ $noappend -eq 0 ]; then
  858. qemu_args="$qemu_args ${qemu_append}"
  859. fi
  860. echo "Now running the test ${test} in ${emulator} for architecture ${arch} and ${lib}"
  861. case $emulator in
  862. qemu)
  863. echo "${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot"
  864. ${qemu} -M ${qemu_machine} ${qemu_args} -kernel ${kernel} -qmp tcp:127.0.0.1:4444,server,nowait -no-reboot | tee REPORT.${arch}.${emulator}.${test}.${libver}
  865. ;;
  866. nsim)
  867. echo "./openadk/scripts/nsim.sh ${arch} ${kernel}"
  868. ./openadk/scripts/nsim.sh ${arch} ${kernel} | tee REPORT.${arch}.${emulator}.${test}.${libver}
  869. ;;
  870. esac
  871. if [ $? -eq 0 ]; then
  872. echo "Test ${test} for ${arch} finished. See REPORT.${arch}.${emulator}.${test}.${libver}"
  873. else
  874. echo "Test ${test} failed for ${arch} with ${lib} ${libver}."
  875. fi
  876. }
  877. build() {
  878. lib=$1
  879. arch=$2
  880. test=$3
  881. system=$4
  882. rootfs=$5
  883. DEFAULT=
  884. cd openadk
  885. if [[ $targetmode ]]; then
  886. DEFAULT="ADK_APPLIANCE=test ADK_TARGET_ARCH=$arch ADK_TARGET_SYSTEM=$system ADK_TARGET_FS=$rootfs"
  887. else
  888. get_arch_info $arch $lib
  889. fi
  890. if [ $debug -eq 1 ]; then
  891. DEFAULT="$DEFAULT ADK_VERBOSE=1"
  892. fi
  893. # build defaults for different tests
  894. if [ $test = "boot" ]; then
  895. DEFAULT="$DEFAULT ADK_TEST_BASE=y"
  896. fi
  897. if [ $test = "ltp" ]; then
  898. DEFAULT="$DEFAULT ADK_TEST_LTP=y"
  899. fi
  900. if [ $test = "mksh" ]; then
  901. DEFAULT="$DEFAULT ADK_TEST_MKSH=y"
  902. REBUILD=.rebuild.mksh
  903. fi
  904. if [ $test = "libc" ]; then
  905. case $lib in
  906. uclibc-ng)
  907. DEFAULT="$DEFAULT ADK_TEST_UCLIBC_NG_TESTSUITE=y"
  908. REBUILD=.rebuild.uclibc-ng
  909. ;;
  910. glibc)
  911. DEFAULT="$DEFAULT ADK_TEST_GLIBC_TESTSUITE=y"
  912. ;;
  913. musl)
  914. DEFAULT="$DEFAULT ADK_TEST_MUSL_TESTSUITE=y"
  915. ;;
  916. esac
  917. fi
  918. if [ $test = "native" ]; then
  919. case $lib in
  920. uclibc-ng)
  921. DEFAULT="$DEFAULT ADK_TEST_UCLIBC_NG_NATIVE=y"
  922. ;;
  923. musl)
  924. DEFAULT="$DEFAULT ADK_TEST_MUSL_NATIVE=y"
  925. ;;
  926. glibc)
  927. DEFAULT="$DEFAULT ADK_TEST_GLIBC_NATIVE=y"
  928. ;;
  929. esac
  930. fi
  931. # build defaults for different C library
  932. DEFAULT="$DEFAULT ADK_TARGET_LIBC=$lib"
  933. case $lib in
  934. uclibc-ng)
  935. DEFAULT="$DEFAULT $default_uclibc_ng"
  936. ;;
  937. musl)
  938. DEFAULT="$DEFAULT $default_musl"
  939. ;;
  940. glibc)
  941. DEFAULT="$DEFAULT $default_glibc"
  942. ;;
  943. newlib)
  944. DEFAULT="$DEFAULT $default_newlib"
  945. ;;
  946. esac
  947. # use special C library version
  948. if [[ $libcversion ]]; then
  949. DEFAULT="$DEFAULT ADK_TARGET_LIBC_VERSION=$libcversion"
  950. fi
  951. rm .config* .defconfig 2>/dev/null
  952. echo "Using following defaults: $DEFAULT"
  953. make $DEFAULT defconfig
  954. for pkg in $packages; do
  955. p=$(echo $pkg|tr '[:lower:]' '[:upper:]');printf "ADK_COMPILE_$p=y\nADK_PACKAGE_$p=y" >> .config
  956. yes|make oldconfig
  957. done
  958. if [ $clean -eq 1 ]; then
  959. echo "cleaning openadk build directory"
  960. make cleansystem
  961. fi
  962. if [ ! -z $REBUILD ]; then
  963. touch $REBUILD
  964. fi
  965. make $DEFAULT all
  966. if [ $? -ne 0 ];then
  967. echo "build failed"
  968. exit 1
  969. fi
  970. cd ..
  971. }
  972. for lib in ${libc}; do
  973. case $lib in
  974. uclibc-ng)
  975. archlist=$arch_list_uclibcng
  976. if [[ $libcversion ]]; then
  977. version=$libcversion
  978. else
  979. version=1.0.12
  980. fi
  981. libver=uClibc-ng-${version}
  982. libdir=uClibc-ng
  983. ;;
  984. glibc)
  985. archlist=$arch_list_glibc
  986. if [[ $libcversion ]]; then
  987. version=$libcversion
  988. else
  989. version=2.23
  990. fi
  991. libver=glibc-${version}
  992. libdir=glibc
  993. ;;
  994. musl)
  995. archlist=$arch_list_musl
  996. if [[ $libcversion ]]; then
  997. version=$libcversion
  998. else
  999. version=1.1.14
  1000. fi
  1001. libver=musl-${version}
  1002. libdir=musl
  1003. ;;
  1004. newlib)
  1005. archlist=$arch_list_newlib
  1006. if [[ $libcversion ]]; then
  1007. version=$libcversion
  1008. else
  1009. version=2.2.0
  1010. fi
  1011. libver=newlib-${version}
  1012. libdir=newlib
  1013. ;;
  1014. *)
  1015. echo "$lib not supported"
  1016. exit 1
  1017. ;;
  1018. esac
  1019. if [ ! -z $archs ]; then
  1020. archlist="$archs"
  1021. fi
  1022. # libc source used?
  1023. if [ ! -z $libcsource ]; then
  1024. if [ ! -d $libcsource ]; then
  1025. echo "Not a directory."
  1026. exit 1
  1027. fi
  1028. usrc=$(mktemp -d /tmp/XXXX)
  1029. echo "Creating C library source tarball openadk/dl/${libver}.tar.xz"
  1030. cp -a $libcsource $usrc/$libver
  1031. mkdir -p $topdir/openadk/dl 2>/dev/null
  1032. rm $topdir/openadk/dl/${libver}.tar.xz 2>/dev/null
  1033. (cd $usrc && tar cJf $topdir/openadk/dl/${libver}.tar.xz ${libver} )
  1034. touch $topdir/openadk/dl/${libver}.tar.xz.nohash
  1035. # we need to clean system, when external source is used
  1036. if [ $noclean -eq 0 ]; then
  1037. clean=1
  1038. fi
  1039. fi
  1040. if [ ! -z $binutilssource ]; then
  1041. if [ ! -d $binutilssource ]; then
  1042. echo "Not a directory."
  1043. exit 1
  1044. fi
  1045. usrc=$(mktemp -d /tmp/XXXX)
  1046. echo "Creating binutils source tarball openadk/dl/binutils-git.tar.xz"
  1047. cp -a $binutilssource $usrc/binutils-git
  1048. mkdir -p $topdir/openadk/dl 2>/dev/null
  1049. rm $topdir/openadk/dl/binutils-git.tar.xz 2>/dev/null
  1050. (cd $usrc && tar cJf $topdir/openadk/dl/binutils-git.tar.xz binutils-git)
  1051. touch $topdir/openadk/dl/binutils-git.tar.xz.nohash
  1052. # we need to clean system, when external source is used
  1053. if [ $noclean -eq 0 ]; then
  1054. clean=1
  1055. fi
  1056. fi
  1057. # start with a clean dir
  1058. if [ $cleandir -eq 1 ]; then
  1059. echo "completely cleaning openadk build directory"
  1060. (cd openadk && make cleandir)
  1061. fi
  1062. if [[ $targetmode ]]; then
  1063. create_run_sh $test run.sh netcat
  1064. while read -u3 line; do
  1065. target_host=$(echo $line|cut -f 1 -d ,)
  1066. target_ip=$(echo $line|cut -f 2 -d ,)
  1067. target_arch=$(echo $line|cut -f 3 -d ,)
  1068. target_system=$(echo $line|cut -f 4 -d ,)
  1069. target_suffix=$(echo $line|cut -f 5 -d ,)
  1070. target_rootfs=$(echo $line|cut -f 6 -d ,)
  1071. target_powerid=$(echo $line|cut -f 7 -d ,)
  1072. echo "Testing target system $target_system ($target_arch) with $target_rootfs on $target_host"
  1073. build $lib $target_arch $test $target_system $target_rootfs
  1074. kernel=openadk/firmware/${target_system}_${lib}_${target_suffix}/${target_system}-${target_rootfs}-kernel
  1075. tarball=openadk/firmware/${target_system}_${lib}_${target_suffix}/${target_system}-${lib}-${target_rootfs}.tar.xz
  1076. scp $kernel root@${bootserver}:/tftpboot/${target_host}
  1077. ssh -n root@${bootserver} "cd /tftpboot; ln -sf ${target_host} vmlinux"
  1078. ssh -n root@${bootserver} "mkdir /nfsroot/${target_host} 2>/dev/null"
  1079. xzcat $tarball | ssh root@${bootserver} "tar -xf - -C /nfsroot/${target_host}"
  1080. scp run.sh root@${bootserver}:/nfsroot/${target_host}
  1081. echo "Powering on target system"
  1082. ssh -n root@${bootserver} "sispmctl -o $target_powerid"
  1083. echo "Waiting for target system to finish"
  1084. nc -l -p 9999
  1085. echo "Test finished. Powering off target system"
  1086. ssh -n root@${bootserver} "sispmctl -f $target_powerid"
  1087. scp root@${bootserver}:/nfsroot/${target_host}/REPORT REPORT.${target_arch}.${target_system}.${test}.${libver}
  1088. ssh -n root@${bootserver} "rm /nfsroot/${target_host}/REPORT"
  1089. done 3< $targets
  1090. else
  1091. for arch in $archlist; do
  1092. get_arch_info $arch $lib
  1093. if [ $cont -eq 1 ]; then
  1094. if [ -f "REPORT.${arch}.${emulator}.${test}.${libver}" ]; then
  1095. echo "Skipping already run test $test for $arch and $lib"
  1096. continue
  1097. fi
  1098. fi
  1099. if [ "$arch" = "$skiparchs" ]; then
  1100. echo "Skipping $skiparchs"
  1101. continue
  1102. fi
  1103. if [[ "$allowed_tests" = *${test}* ]]; then
  1104. if [[ "$allowed_libc" = *${lib}* ]]; then
  1105. echo "Compiling for $lib and $arch testing $test"
  1106. build $lib $arch $test
  1107. if [ "$test" != "toolchain" ]; then
  1108. if [[ "$runtime_test" = *${lib}* ]]; then
  1109. runtest $lib $arch $test
  1110. fi
  1111. else
  1112. # fake stamp for continue
  1113. touch REPORT.${arch}.${emulator}.${test}.${libver}
  1114. fi
  1115. else
  1116. echo "$lib not available for $arch"
  1117. fi
  1118. else
  1119. echo "$test not available for $arch and $lib"
  1120. fi
  1121. done
  1122. fi
  1123. done
  1124. echo "All tests finished."
  1125. exit 0