embedded-test.sh 59 KB

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