embedded-test.sh 53 KB

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