embedded-test.sh 43 KB

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