embedded-test.sh 42 KB

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