embedded-test.sh 55 KB

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