From 3149cd14efacf81cc30fdf3c69c4cd3459865f92 Mon Sep 17 00:00:00 2001 From: Mohanson Date: Wed, 21 Aug 2024 14:22:57 +0800 Subject: [PATCH] Add a sample for showing how to build binary with clang (#439) * Add a sample for showing how to build binary with clang * CCFLAGS => CFLAGS * Using tweakable variables in bash script --- .gitignore | 1 + tests/programs/_build_clang.sh | 7 ++++++ tests/programs/_build_clang_native.sh | 27 +++++++++++++++++++++++ tests/programs/clang_sample | Bin 0 -> 8392 bytes tests/programs/clang_sample.c | 3 +++ tests/test_misc.rs | 30 ++++++++++++++++++++++++++ 6 files changed, 68 insertions(+) create mode 100644 tests/programs/_build_clang.sh create mode 100644 tests/programs/_build_clang_native.sh create mode 100755 tests/programs/clang_sample create mode 100644 tests/programs/clang_sample.c diff --git a/.gitignore b/.gitignore index 978349dd..7a23bd9e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ Cargo.lock .deps/ /examples/is13 *.DS_Store +tests/programs/deps diff --git a/tests/programs/_build_clang.sh b/tests/programs/_build_clang.sh new file mode 100644 index 00000000..5d64e671 --- /dev/null +++ b/tests/programs/_build_clang.sh @@ -0,0 +1,7 @@ +set -ex + +DOCKER="${DOCKER:-docker}" +# docker pull docker.io/cryptape/llvm-n-rust:20240630 +DOCKER_IMAGE="${DOCKER_IMAGE:-docker.io/cryptape/llvm-n-rust@sha256:bafaf76d4f342a69b8691c08e77a330b7740631f3d1d9c9bee4ead521b29ee55}" + +$DOCKER run --rm -e UID=`id -u` -e GID=`id -g` $DOCKER_RUN_ARGS -v `pwd`:/code $DOCKER_IMAGE bash _build_clang_native.sh diff --git a/tests/programs/_build_clang_native.sh b/tests/programs/_build_clang_native.sh new file mode 100644 index 00000000..b9d3dba0 --- /dev/null +++ b/tests/programs/_build_clang_native.sh @@ -0,0 +1,27 @@ +set -ex + +ROOT_DIR=$(pwd) +CLANG="${CLANG:-clang-18}" +LD="${CLANG/clang/ld.lld}" +CFLAGS="--target=riscv64 -march=rv64imac_zba_zbb_zbc_zbs -nostdinc -isystem $ROOT_DIR/deps/musl/release/include -c -fdata-sections -ffunction-sections" +LDFLAGS="--gc-sections -nostdlib --sysroot $ROOT_DIR/deps/musl/release -L$ROOT_DIR/deps/musl/release/lib -lc -lgcc" + +if [ ! -d deps ]; then + mkdir deps +fi + +if [ ! -d deps/musl ]; then + cd deps + git clone https://github.com/xxuejie/musl + cd musl + git checkout 603d5e9 + cd ../.. +fi + +if [ ! -d deps/musl/release ]; then + cd deps/musl + CLANG=$CLANG ./ckb/build.sh + cd - +fi + +$CLANG $CFLAGS clang_sample.c -o clang_sample.o && $LD $LDFLAGS clang_sample.o -o clang_sample && rm clang_sample.o diff --git a/tests/programs/clang_sample b/tests/programs/clang_sample new file mode 100755 index 0000000000000000000000000000000000000000..9d523ae417e6e9fc5b35475a258847f46e22fdad GIT binary patch literal 8392 zcmbuE4RBP|y}le<|k+QcQGZHI}19d$m>u#eS&RCTKsVj@3v%-YWvBX^VzTiK3(C{m;4o zlWfjr-%Q6lvwP0{o&WiN-T%4w+}#H~o4poA0dZL1U%<{zWt*&m2C7$@9Y!ml9IW`g z6l~Z6q;qDDSMb?P#+?5jW&@(NnPPmD&6__+kmmK%sc0d~lw?@NkKp~}r)aNbm~x^` zoX33aSYnQMtTqjZmej*V;Rb=PO@!;%ynpvd188RPJx})J`5Op`R+v??tyl9VAxrUS z`6oZUR8v`}`no!ft^$a64u7&VdUWQ~*?3f)u#^rb6o~vP zdJNpBGhV8&_gtT~@46q_A71-??d;fK=ar~e>w9yMNyVel9}jzvOxvxkxA-27TeEWd z-!=T>prKzgFUHfOP=-==HTvijTyr=p5?>e^qg7j#=* zwyUqHahn@Pkac>M4V@d5>M3~1d8?;oI&OPS&5MRm``a(Nv#nRkn8zjL@mTbjD`Ti4 z-t+!!{2lJ^fL4BLu=8&!`a3%3?<#Nqv|Vkv#dpk({`R83qvY?ruQf}jU`UaD9jS3E zT^%A@1>Lr{F|y1lxcE7vO0{NBu=!DsmU-r>B_7)wmY3OiJbm<-T?H$Ph($Rc(a@cb zcn(j*vH0_OM7GyV`|9cHt9G?J1Qf>!&?XJ>db?xYP;AQ?yKwHy>$SuQ(kw?s`Qy_3W97Id%hOW&;eAE` zdm9IKJ{Bu=8+PnBbb8`eP_?XanDA=ZVHY2~XtTCu~U6}dgyy05L*%6;p#;(hCJd_9i4wen#%^CmaFeTNYrwPku{O4{x- z-W#=MwP)VTqAm5D&jXygX;f6W=`+wq3Du=V@7O;8b7`f zUO%38rVrZRRI2O;`!Elgpd38C&41Gf=6V|PV^dI(>54vvb*JL$n1)NetftdSZif6L zmjfq1-u|MpaZ@yczNZx{-bit$CvA=5iLB|YN?WT`Mb>t%Py4E}KJwMh%CvP#Wn^8a zJMC`8jWKWN>iG7)*p-4Sg_F*!rPtP8zvo8f$72`of~jk>6ET0E`zLR+{)>~WAAOhg z|MOkeADCeM2a)%?)k}FhF~e58nqL@)O26vuKd0rY(Cc=U3_*L&sTv<%`S|-KF#T(F z%-)j&YW0)7kuepX>4~aZ#|4Pm;;m)SzWnf*nsNC^#%%V`lfCf|%HhrPsMlgVFb?Ou z`2EFrYYdD>toiX)FBk*Xf)7s)x(|AdLvLjs@EV8TTBdbOLj1lSIDtA3*xHt#Q$5v@ zQ=Zw!wq_{tqgEyDhtb*7?|cKap&Rhn>sBScB14Is8a3GnGLjo~bE%U^#!adJIi#Js z0OxFO)OmT=D<8d@bIyA?F#i6r5%l!_5*VIE5B=koyQ?E3D*VMg=y}7V4Sf?d)T*7F z1U_5E*|y6yuY5Y}HTI0d5%&eRHgo}HCSlk%tn#Q1Syvw6^sw!)`pF23C~9j*s~ahj z9*7@}Ns+`LzM@Bp#FR^n#FUaF8D){wjsN4!6N%Z2-B4Y3>IcF zhFR=^g<0(3atmy8DcSb#nC+e8msl;NozH>D`8$Et!wHN!GFAdw=MCf@a27jRUChE}oNTd)0?pUXP5bn5DDO)iM8c!L>MBmV?jEboF-D#<4X%=!V`J%fN8@ z<#)UJQ{8+Lbam8xSv>iR_>RD+_ciXyZS@C3fu_b>M|q*6upD4>pmDE1xHfn5<|@J5 zUX%|8LPjen>#&=ir3PC|iv!MPhu+|9F4BFhXRzLPYkdyh)S8W9HX&@d&BeZ$SLrZ4 zE03AmA_c^LON{66jtXWgD8T1=H(Ae@kT0e`pUW$A`%j_CnSz%Qf137zLVi7VaEAf? zw9ga!&Mm|TiHq#-AU)S5JwD>gZxxapK!A9b#P=arFtR5|zu5P-le|-sj}qS`@q@%q zN_>F$n8bfT{3VG$PW*o*{v*!k^TSW^>lxme_h0bmcqjS#{+#pV>-zz2fGrjU!en

X5sE zUmEAhdAp1AX*QU%bm*71y2oiIMzQ$j^@?KbeaotAzx8_0W5UP-(_;+u$XlK9t& zXWhmVKIiARh?h(9b;O4x`3B+@l6))i_aylTi7&r>q1|5M1uGWv!^FQY@kfc*OLk8X z2TA_FiT_2CKSO-EB>w{OQi-1@{*1(5Bc3P4^+)3ONcR#Sd> z_!ve$H~9oS)BAeq{Z> zK>5Y;GnzvGuT$v%BHuUSbHuUmezK199-md%MVgBk>pLedJjhxF7kdMV_;L#O3GdS>()rd0+G@ae3eJXX5gH zV~V)EZ&`tPV{wW1!R6#<8S*T=^7HSvG*B4!?+-&^sLmJmVN)9lK_UM#ni?AXjX1<# zY72ega4=BY687VGsI4LFtHpMAC>%6Hsje58~gmdP)PL!yuEYd|=Oy@4BZ3)ze%?ZRxsV(EJ zgXTDNbB;rI5id>f3!QVZ(_*L()Edn1IhXm6t_KhWcnj)nL3N~k~!NLmV*ol z!%n7^o8hL*5|Xn!u*YZY)kAF|!&hIA_UrsReJ%B2y*9X4WQfHt^b5PibAk;GzUH}r z#q2dS-7K`=Lx#{SV-VkUsQzUe9=-baA zh1uY5Fq+#$37F|}2){)fB5#5_OmjtKwn%rFNi5P`tVmc2OotJO5r-IYiRy3(wN6nd zPNCN^N5m|LQ0NrXox(e(nH01o{BsFCu9Acj!6e|73pDO*GAk#s;zfek>RC`%y3R^X z4~2cfu+9pdUG*3u&zpoCx4u$plCSxxmqp7)#Eeh<4^#QzxKn_6H zceXSdA-$fN^fjU}43z)gu79d*C{6>ZSHGUAE#*;@8gXCEu65ziCxKkwZC zxil{Jk8}#`Z(lZ_9;?`|F^d-6i=GZ-un~h zi{Jmm{IkrtghRG}JB~3C`4?F+e|5rK))neRn}-a2Z