embedded-test.sh 60 KB

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