embedded-test.sh 54 KB

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