embedded-test.sh 56 KB

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