embedded-test.sh 52 KB

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