embedded-test.sh 45 KB

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