embedded-test.sh 43 KB

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