embedded-test.sh 51 KB

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