embedded-test.sh 40 KB

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