embedded-test.sh 58 KB

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