embedded-test.sh 53 KB

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