embedded-test.sh 45 KB

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