dVI6;d;k>6hXRl60a!`MjfwwY9w=$!NV~P5tIf3qEVj5ABBIZ&Pj9lUh
zViB>7xQ4inSWCQtcsH>-{E%K#BR}ZZ)WdF8kXMNNi0#Dg@V|{;zsB_t+Orsa)ayY1
zBF0J72fJrsG!Qe4s9(}bq}%ij{OvB^PI=wsCzBosX+Hg{;ooMybi6vAMJI_*({+CJ
z%V#IcpMII__sqZi%9NOg`_lJ|jw;F@77&(R)
za|2Ny{+iUlU;WBgcYZnb79)qVVy-3LL~JCQzJb4wlm0I8O^iBX-X)r@z~7-5|HbGd
zzrWM14;ltBT=#dgy2~9eySTj=59R5@H#xx)lS3>Z>VvOq=+?(p8|l`EPB+o5kBsi3
zTOas5NVh(&d5ms-SYyT>`1?cpOkMn6)t|24-RrANzaeun{ztp<
z%VAD$=1KDD7mqaGxhLWOW4H8ZKK;f{_c%2FiwyT&{Q7puo#fZ~|B~+S%KyDg_YPtc
zQJ=wePoI7}s5}1_%=X3HO58!*Mf?-dzSM!}s{>4On
zCg#(0S--(tN&GEwFR^<(`VE-Z8SmeTuVb+yrjuy80)NjST^}3CUZog)+!If?KBn=|
zt&dkOr&}M3tfX5XXRM)HA4Am8t&b0GqFZnK-%YpP^fyxz`1?b8Ov6aC}t7SbOrvtPQJH^G1w*$qu(sj
zuM>5Dhp77tMBU?QW_)|Giz((kqUj3!eV6f##g@95sl=h!7Z5Xwm_jtEfxqXGzk7In
zIuzhEpT2K=(@qlKcj@6}=3BoyC1(?2enZsnP3bq%Oy9uY|8DvEEiawUQ<*NE&hGDb
z1yW`{Y5rjhH!;1`Y5MP$|4XJ%r{7>Ybb7m|
zM<0_7!Y-|tLShBcqz3+;j87kI`LL%d#?B*z0mSo(al~Yz$sPE+hVfoYtR>z~yq~D!
z({G2KEWUtb^GS#MzUlmThnG!tG5V-(58e9wZ6DqGQ0)-i`lReDx@D7IOn;(2(;7zi
zXyRC+K7EoK@M83lQaaso{Lq{EA-$$n{=4+6kJ|pk_OOrGd6M>_%P7=kKDmj1J4gF;
zLr-R+NA@76!g^u#I#Fmgb)GDU6GT|qiziqu0F
zti*dR>`2&Au+gv=z{bM5VaLHvgvIZ;bxi`s!%l&f^vGe#4A>;tWZ2oTb70e8(_u4U
z7r;u`CBQ7$%V4jBT?Q+3F?o0{fL#fD73|fpMX<%NrLbkNr!OtKVSdG}NB=bU(PQ(j
zh#qnAZwCD4$E8s*6(g?8TzA2x3vSL`zvk|??;ZP+(|E!{o%vb(QZb@9{jtIM8qxHcUbeC88Vx{AZ^nBTtV(@Xm1eO~R@
z^3j^DpG+DsVSj^tYtHGf++4Qy^zFwE9Qx@WcK9O8-WVBqeaDo|+twxA={j<~FZ-D#
z#pgFax4qvBZNCaJUX0m4szA9bcpi`_c&<&oQ7
zs=n%>pRZ1T^EVf+zT$TeZn-P;nOzx!V~1Ro?1^8v|Cd*sf7*5XewO`O|8F|pcwx`&
z6$kG5#rmm_9SGahx8sZZ&O3GariW+djJdk(GD!O`DzjENq9
z+188FAISQA(#T)CT{Vk8T{JFzL-X28jakiixR+;kOi8>U<^IoKzvS~B!?*R_KjM|D
z3x8?cXMDJ8=dec~|8m{_zW+J@$0@V^>PbK9t$X*fCoT)$+}bqaj;SN=e__LQca928
zzjyM-2m8;u_sVO&o^bUQlgGaB;gA1*PxMb$c+Yxg_pqO=o4R!LmV*zH|z}94A>%A
zxe|XP>|L-sVSfwz0_=X+4`9EB?T^NDHtdD4X|S@1TMAnZ+W^}LTZs+h2G~Z}CfH_J
zdHv)dtXw300gdkgG``1Scf-C0E1PYf!S=`I(b=#U!Y06`!REl0!dAm>gO!b=U9hdN
z`(O{l9)oqDF}q-o!Jdju9JyDR0GkGT1#Bs7E$pqZ55WEw_66AeuphuWu(1;b>xP{H
zD;Edl(sn8AU9e5C&9H5-hhgPpH4@eZ>xP{Hn*o~xTMAnZyA4(r!n6UBt5>DqsUMUdwI_6uwaRzsablfm<
z$5i|uXFBDgpSV9`I_0LIxFhJ63x49xDeu?ts1w4s54K@O4m3y*}LO+*McXE9s1b$zENvs&T
zfg&<=J&-FR;@0(8E@X=PDC3Y@yyCuvZu#)Qc(@;ieIIrzJa2}5A9f}pyA$>(>>Tjj
z2m23LFVeYN6#~iy>6EtFTjoj-#XaWV6TKex5LW2uNNWCde}E$Pk}D;
zV1ET04qaXf`v~keu=AnMKf{hj9?pb5%U}<|PKGYmz`g`K8flf!6}S>`!?)k
z=(GaqZGwFjb|Cba3R?^N4D3H(CqkE{u#Zru@@Wdm*X^)x!;VINHo(3C8;ks05BoOk
zWbkc;Jp@~b{5%HxA?!TlrxErY*pbN3YFHU3&O}~{V4sGKM1GdR9)_KYe2qnZHpBh{
zb|&(31MEAnQ<0yWVc&xQu(BY&0`_*;S6~MqFCN$$*r%B<
zxnhhg7&CQwvYlSTenj3i7k~ZkuiTp#_d?bgxhgB}f$TfwMi#PeoPeA+P;ahby}5;Q
zUS`{s7qKK<0ppPi&f<<`I^@!_xc`H0xi|&&8e0&ru4}UKAUyXoZn>x>ZrumTbuvlI
zYpBn6;5h{85hEAkgzpCSU2-p9+=H1`x!*1Bx0pw{<}2=lOp9FA7I!$^axfz9GwGJ=
z-QxZe`*C?MSJKga{E(}4<3X>5{lC;!O&0h9F~(@gBMy6!Yp8&kp5A^O+{T1BUhcp9Ywd?_)}#A
zl=+F4C6^+E?;z`|+!_?Op3}%hX>p%RIr3=&$@5XvHTfWc%)Q=YeNyjK!%vTW;xBP(
z{b=3Dm1~h1Lz!}ATigxIi(EYvx3mE6edR
zh&(;Vh+_JulV5$S0{(KJRE)gpApDD22js@8xbJ29)Vnmo$MEv82l3bQHu(Vi_oU7vKunDm9VVA*Hz;1#43GB~d
zTVP*LZ?JSby{;!ba{TnTdT-yR%a$#7CtsOGKC3lzs@|qbyUIhZkYrX(6a<5l}%1ap}
z$yIG3$z5cUrek&o8AoE6r?-}*(D-u$hfL+Q<5rnO?w+lc8Qzlr|x5sco#>w75A
zBXDp2ZVHxL^u768-^K3D-};hZZ~oSo&vI?j@Pdu?Ej0M_@VCB>)||iRs~QeQBvT|8|C#_mO%_zx92L-ojg7&gjkG
z`liMi{rdDsU!)76V5F;t>EZ8oDY|+aqqp=~U(4t%eET_O_>;*e-LS1)VAv`nZIS)M
z9r9@)Y3rhzU0E_Pbak=)VqG{e^16^D8Qql;zGT>pOHDqu<6ilSz?Vfnw&xyvGVI+7
zJA-`Eu9ea8rq_huXs-{usgEp_u>AwO8#d>1Gk*DUlQQ4J{}~vLTw(G{UcZfB@;4GZ
z8CRP8Y_7egTkagklTZ4CZ<8zOUI+eNxu#s{AC#Fx{q~a2o#4+}X7Wpaq0G1Bb3b@m
z^GtsEmcw`P%P(z2tu*;%S{B5g5v+I7iwwobiYcG${`xViMwOB9EeBsliOHwyo1c&2
zgzrZ1dC2!|_2Y5yxydJQo+@(^J&4?c;Bj4J#{UG_{qZN&^tlOTC4BvXyU3^Ox1W#U
zgl_`)8p-D(y*Iuqz_*Qj?4Nqn8U*CvTl8^DX&$
z9Q;RCe|Nt2gKr=CP8NR|rdEB7fH)La%RTLI2
zkM-sk<*z8qT{YI5zp6CgDl93F#m{2#H!fq*Pl*|7oe!S06F)s2J7L~`S
z-`$k-C*+l^DlII^FB`iezc{}Pzlpj0Vo@!AZYodxP*luHwTd$$w9bvw`-JpOv2RK!
z5F>wMV#FpC#1tgRfAu7eKDMya>=W#vYaQOOFnj1(F=58d2pgI=#~zcFC4sUMTwsFV
zd9E-V;+)lYZdio9Aq=1Q5WWSDqjnK;iapew6&B&Rw@(PXLen>q7V>bY%_L6uQrFye^c`9UDa0
zKoCNnv8f0^3K?qyG14CTSL2`=?*0vqK_H!D51s7T88+HJM+Hue0WBhQ@=;0Ya7Ti~
z{qTnG6M4b+iu@@Z`B4?mUyY-h;BfVwW6y#jzRW>Ij<*VK@VY0d+788
zduU<-iX>#eElNsdQ%JQfO2xW1WE!)#+X%TW)D|}49((9-Htdw5dCiEihwemXB}e;k
z+~(>#*dF@e2FF1un7?}ChJ%tKd+2^6WGRc~fek7-?M6sED1Ad4Es7Xs4?Q5I
z;JDNbzn#VKj^Qvhv7N>6juG+{i(z}97!DcK#2p);WKsDcLv-#~BN5%U!Lc2AcMM9%
z+LRD7ZcxI`onCKDR!r7Y2Me<1#3aNdBzWZys&7I8YQ>y631VUr8c=goI6VU=RV4H^Lrz1geX?+aCJk4Gk!R
z&`+38d+1h`^9w+ED(p0~3Yw$=_R!A_$0k!hb&Bg;P&S1PP_)oGr6H8(!)AHDF6!?x
zLe8c7H*Sz75C$<{8V|9Zf0}G28Z+#szL4zG)T9kY4azDiJt#
zN(|dY{(a#}9dIf!P|@u+HkyuW9bUWRXkXM7v=U?rAWvCdlpY@OG{+Sa<8s;T+xvQj
z$z^XvEAz&<>@j^+^O6cAHN(-G@YI~Fg9)3w30VaNAQT{Mf(QbjS|xZ?%}Vl4mc2a#^!KoTGroVuJ42c-20
z4eM(U?J&>J
z=77RsqsUD4T8HZA?4cKh{EkJR;%Km@nc0xK(>L_*#zA}N-KfGB;BhCO=13oPP}lyu
z%$gJhit4pOL5NXWakQeln3E7PVGv4gyGr>^#~@@Hs*H(oY>JtqdIeF8QZ{-GsV^vx
zgpl|_=md~~ggFeECH!W{7>806M7RpF9AK34LMsy0%#k20ah9w7bu()rLomg-8^drP
zbsW^otV4chyD$&GSY1+F9;#OG=9JR^}FJzU2IZ
z+=?P^Ol6)|`@~k1m&M|Twqw<_AlCe?-=HY~W(t{W3JbiM-sQ{l3os{;>5pt8_fd<|
zo(Y5(zV&quj@NL?v=4}B=GgWT*w+Hy3A_ZDMts7BJH>Dh1LgvcVjl@X#vTIZ1K$SD
z2EGP77x+9d2lxmOJHKOZ1TF_w0VVuOpu`sslz1M&Ce&zP9xwwKjYX^YpAD375kLvI
z4;x@t0o#BJu@nCw@N&5C0xkt!4;+izQI)_2c)SLf3ch^O`vbE<4<)@78WQ&tK;gRs
zDDnIlDDnJ=?yG@U!d(Cqz6ro9;O#3M(mLZ1p0x#t5#?%6<*
z+n@B0aeOHL{fJ*e3Bva=Q21U1ivQE3H<2#KnNp4~VPSX)P_7dR|Kt75a+L2Diu*2L
z4)8|OtAX?3mMa^g-z$M(Naqrul!JVMQ1m|+m}jS+?#;HzZxj~
z1*BgF6n#wxNt>zlYmn1
zrvOEN=L2Deehwv~D;oO_Q0mv~K+(gCK+!`BQ1tL~((eO`9d+^FlFna{{s?d${O_UvFklM&UxJd7fpP^#e*zMP
zrhJ9qG;C>I2t?DmLJ+k6X9N4eEhzr*lPkkl2#UKBcqz8iOM#aGR|2zuIlx6gJR6IF
zXbZ*?AmSGJ1EYZvKo=15(5tB9WI_2A1;O7E<(jg%<;t?)UBsM8wVQ-0N9PxbOaH4!uO8mcen5e!5Ea{?KzBn%adx%dHe@T>Y3yQy72^ZW#
zTu-bZUPYAes0-h0;&kE!qWt!N_@6?IAfCV^S?FI7-y*87CW78dcQf&)#Jh<%6Xl!z
zBBzA7f_Mc{zF#8#Q;2cI^N8|2een+^eq}e^M~L!ueDVJi@%O~1h;qG0{BI|2CDszx
z5p#)`66X^t4!_0U-B)&uZ3z63{?DCrulAfK!2Z%B+68evcGA|Oh
z%!>reiSh#$;+9{(5tMn7;CSK%#IuNliJ`==FfS4QPU7E*uM*|=GsOQDoP_zgV8{~em?(=ak@GJ0X#}4lK1jTVIGZ?uIGos@cpUpUN)GWA;*-R_#80u$BYgXbYlzE<
zQ;DOArw~tIUr54r5+5YqO58}~^-lY#bn_~>eHr$LB>a400`Y8OU*eb8j}g9u#NEVS
z5bq)0NGu{=Mx0HYKs=QgLi`x}HY)!_`53ymA12;TtR*fdE+9@PUP$au{0G-HhlsBc
zA1B^NlzkzIZyoUp;vixd*C!tkUm!kCl<(b0_#24wy&Q2bA*K+=5#>8Q;@`z}#35om
zaV}A>Lq^dZPJE8@{f)#z;sWAy;)O)LPLP$N#QP!V?|&gS6L%1AB(5c{ATA_MB}NnV
zdLV@E!uhyuY3E@IMisA~q6lBL0ZD
zk~ohjuLp`e`3{!g>BO%&f8Is>De-1vC9!~*Nt{7Ek2sL{IOo6hoM&bcKjr-H9pX#G
z-x9YIuOg~n)k8XG(LJ6h-zSsw_a%PG`PrMq>xt(P2NPveRKmT^c~UKruie@4!^g`1
zDCaM46Q3tOLA;+>LyRTLzL3c8;(X%+;+w=@6CWhrO58}yCC(=%5XTTBh+lHvAa{=>
zzL$xQ5oMo8=yK;tu!?voaW+xD;Vb?lh&JNKAPQaXcnLmFl<#qh`*vb2QO`dvp?f;<
zLgE?3;~e)NCEi8!5etdw#8!?g&BR?q`K4Znv~MFe5VsJki7SaY#4KV4(LH@
z(L@(9iWo_B5Dnrnj&DbZhl%pKsHArvQNH3XZuw<;!6xDkVk1$0B0&5bh+Bxbf*
zaV0T_m_^JWdWbWK@kBQ=7G(I6h?e5Reak0?Jop~{2UMBG7aByJ-%
z5VsJkiSivVkyA>{B4!Xh#2LhRqMH~^bP=P7k;G%1FC8HsCbkn>iOs}a#3tenVk1$`
z@l<^xRucJRD)ub8<@`?gJj5Bqc%qvaO>_~Xh>=7G(I6h
z)&1O|jr8v44?9Tjeh$$DoN7)k7Y{&Se?y>?F`DQiMiC>44x&Lk#`XIV;$dPtaUZdb*!?_e2kDJOdG%iMFP~Ks
z+(N7-RuW5zD~UP8EMf-HL!3d3C%TEzL>JLPG>FHz-_ZRWtDW?H#5Q6pv6;Aw*hJhx
zY$R?YHW0TEtBEU#Im9et2GK*DL5wH5iP1zC(Lpqb$GBgjetaGJmit1Y_co$@MoZky
z#9hQDqI_;k{N>(|DlcL+v65Iy%pztGJ;WKrc%qvaMT{gmhz3zU4<_-p6Xla(;%+0#
zXT-$aOx!_iByJ-%5am5M;V&hwB<2u3#2Li+|5x1k#I|i;ahzQ?*QeIUbe9Ng4n_|d
z#aOm7Y=dP-a_q&i>z^ze9Wa`bev;Txq)bwdY3$$uJtP>`<mP0WVI}ARpIdnjP6@z!%dp~|DQM6(wK!Ne#j~?Iq{r|lmA4TzJPzR^M95@MT
z;3>ZU$v#&*!TBfPF_=78djvWAeC;95KLGE6hhPWX0k^?*un6klG?)V?K@B{`_e;+~
z{-05*zriQqG59ff1U>{GfcL;da3Ab}9dHNS2G_w`;5=9ab#NNYftSH4@RTag^?wdN
z15d!u!KdI8@ECjyJ_0`mkHClE1MnVr2=0SDumkRZx4?O@2fkh(122P9;3P=k
zCQl@Okj(%2%=}K~^$F&~F?a+Xf;-?mm;*KN1pRvq9)XA84mc0yKn*-WeUHH-@DSVq
z=fNCE;4CI4kk1cjU4Mht#>a27hPH#FxbF?p<>Bz(4(Ct$-$MTNC6ZsyX+OLgm(Rbqx$=!e?H2TZhg^jGJF452*N!zk7u)mo
z|e_z4JDcPmK$n#qs+pehoMf>=7dn}(I{U+TfD?L3g=c5cg
zKd%rX7u+n>5Yv351IOWkm;Xk@`H4Fh?@uH
z{U(z?ejhf_#6ZGMAk$
z|9(dPOQ!uE&A+t$FG)zt%bE0ezDH-{;~$y)cIk9F{r!yoPZ^oFHB8%Urh4(rw0z%+
zmR&pCvct}z*NZgA^y=@+M%a`==zGzK;mzdS)j$Z*-dY=|o6>R|ud$|*4$_=GWm8ci
zq?hP2rgho2-BN?z%MX&&(rqRuP}$1b#$wsLy;izuUX4#JdcIuptzO4&1XT0*WWn@h
z%b_OFn|dZSqv6}V(DOB@&9m85yuRC1Z}y#I#AS^bqE@NG_Gn)MD)gL8Zd(3bn+)RK
z_hm?L2_{nAx0`Jlci{#!)X_f*$~VlW9fX$KkTWgc>l&da?836!l>6@DmpiDMiC_EWc*UyEU`g-YryHGp@UDQYk!W1+^nVSuZv`m&*=Hx~T89$p|Jv{yO#9
zFe5XsQ^|g4yX{gKB!#T$3wq5IcHRh7akr)04m+XPh=RiAvKtm_OQa1eoUhAe$L$?$
zp(Cw8vJ%>}g}N2k4H{ozva^PJZRi^`+e2Z;@^DCJF>^3Q@^g0Z
zp7gyfyBT&?Je#(v;F-dCyfBS!*ukQjQ0JQ!x>i(|L(Ad3%p1wXTyvc$o}8o2%FNu1
z(hda8R7Z|UnV$)LyW1tTnn&aegC2oX|9({;C!w$%Ocl*+bHe^fsl3cxM
zx}JNd?>MGQOViNQr@cBK%+r&BW`>%lP#HW?
z$C$0El;=#;Xi)6Z#kS_dvv)+ifR~Yg
zVzjl`s5Wk8Sy3xXD7H5!gVJ(gfy2X%kOWj@Y_x^OL{XrZbQK_>>jw%UaOMVG&_%!1
zviBoVS7%=s0u3XCk%=|xXYFyV7_5)g(n!)Vem*vRC0SoH>0hnrYjYRH<=19a^{o7?
z*`OPcs&_};U7*g9e$jK9iyW*(!lpSxflResP;O)Brn}P?J|HUN;Kt+zq+tOKN`{U99#)4g?l->I)SGRy?13Ti35sT(nYLv}kp*
z!;AWgMuUUKBY8*Uot5>V2&f
h=S>c*CnF~GS`iKL+q5~QiW}nxz{{hTYM?(Mr
literal 0
HcmV?d00001
diff --git a/submodules/Emoji/Emoji.xcodeproj/project.pbxproj b/submodules/Emoji/Emoji.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..b9c4156b4b
--- /dev/null
+++ b/submodules/Emoji/Emoji.xcodeproj/project.pbxproj
@@ -0,0 +1,327 @@
+
+
+
+
+ archiveVersion
+ 1
+ classes
+
+
+ objectVersion
+ 46
+ objects
+
+ 1DD70E29CCF717CF00000000
+
+ isa
+ PBXFileReference
+ name
+ Emoji-Debug.xcconfig
+ path
+ ../../buck-out/gen/submodules/Emoji/Emoji-Debug.xcconfig
+ sourceTree
+ SOURCE_ROOT
+ explicitFileType
+ text.xcconfig
+
+ 1DD70E2950B2F77900000000
+
+ isa
+ PBXFileReference
+ name
+ Emoji-Profile.xcconfig
+ path
+ ../../buck-out/gen/submodules/Emoji/Emoji-Profile.xcconfig
+ sourceTree
+ SOURCE_ROOT
+ explicitFileType
+ text.xcconfig
+
+ 1DD70E29C449A2DB00000000
+
+ isa
+ PBXFileReference
+ name
+ Emoji-Release.xcconfig
+ path
+ ../../buck-out/gen/submodules/Emoji/Emoji-Release.xcconfig
+ sourceTree
+ SOURCE_ROOT
+ explicitFileType
+ text.xcconfig
+
+ B401C9792F7F325000000000
+
+ isa
+ PBXGroup
+ name
+ Buck (Do Not Modify)
+ sourceTree
+ ]]>
+ children
+
+ 1DD70E29CCF717CF00000000
+ 1DD70E2950B2F77900000000
+ 1DD70E29C449A2DB00000000
+
+
+ B401C979B781F65D00000000
+
+ isa
+ PBXGroup
+ name
+ Configurations
+ sourceTree
+ ]]>
+ children
+
+ B401C9792F7F325000000000
+
+
+ 1DD70E29001F47FB00000000
+
+ isa
+ PBXFileReference
+ name
+ BUCK
+ path
+ BUCK
+ sourceTree
+ SOURCE_ROOT
+ explicitFileType
+ text.script.python
+
+ 1DD70E29C4C3D69000000000
+
+ isa
+ PBXFileReference
+ name
+ EmojiUtils.swift
+ path
+ Sources/EmojiUtils.swift
+ sourceTree
+ SOURCE_ROOT
+
+ B401C979EAB5339800000000
+
+ isa
+ PBXGroup
+ name
+ Sources
+ sourceTree
+ ]]>
+ children
+
+ 1DD70E29C4C3D69000000000
+
+
+ B401C97903FF902600000000
+
+ isa
+ PBXGroup
+ name
+ Emoji
+ sourceTree
+ ]]>
+ children
+
+ 1DD70E29001F47FB00000000
+ B401C979EAB5339800000000
+
+
+ 1DD70E29A59C927400000000
+
+ isa
+ PBXFileReference
+ name
+ libEmoji.a
+ path
+ libEmoji.a
+ sourceTree
+ BUILT_PRODUCTS_DIR
+ explicitFileType
+ archive.ar
+
+ B401C979C806358400000000
+
+ isa
+ PBXGroup
+ name
+ Products
+ sourceTree
+ ]]>
+ children
+
+ 1DD70E29A59C927400000000
+
+
+ B401C979EFB6AC4600000000
+
+ isa
+ PBXGroup
+ name
+ mainGroup
+ sourceTree
+ ]]>
+ children
+
+ B401C979B781F65D00000000
+ B401C97903FF902600000000
+ B401C979C806358400000000
+
+
+ E7A30F04C4C3D69000000000
+
+ isa
+ PBXBuildFile
+ fileRef
+ 1DD70E29C4C3D69000000000
+
+ 1870857F0000000000000000
+
+ isa
+ PBXSourcesBuildPhase
+ files
+
+ E7A30F04C4C3D69000000000
+
+
+ 4952437303EDA63300000000
+
+ isa
+ XCBuildConfiguration
+ name
+ Debug
+ buildSettings
+
+
+ baseConfigurationReference
+ 1DD70E29CCF717CF00000000
+
+ 4952437350C7218900000000
+
+ isa
+ XCBuildConfiguration
+ name
+ Profile
+ buildSettings
+
+
+ baseConfigurationReference
+ 1DD70E2950B2F77900000000
+
+ 49524373A439BFE700000000
+
+ isa
+ XCBuildConfiguration
+ name
+ Release
+ buildSettings
+
+
+ baseConfigurationReference
+ 1DD70E29C449A2DB00000000
+
+ 218C37090000000000000000
+
+ isa
+ XCConfigurationList
+ buildConfigurations
+
+ 4952437303EDA63300000000
+ 4952437350C7218900000000
+ 49524373A439BFE700000000
+
+ defaultConfigurationIsVisible
+
+
+ E66DC04E03FF902600000000
+
+ isa
+ PBXNativeTarget
+ name
+ Emoji
+ productName
+ Emoji
+ productReference
+ 1DD70E29A59C927400000000
+ productType
+ com.apple.product-type.library.static
+ dependencies
+
+
+ buildPhases
+
+ 1870857F0000000000000000
+
+ buildConfigurationList
+ 218C37090000000000000000
+
+ 4952437303EDA63300000001
+
+ isa
+ XCBuildConfiguration
+ name
+ Debug
+ buildSettings
+
+
+
+ 4952437350C7218900000001
+
+ isa
+ XCBuildConfiguration
+ name
+ Profile
+ buildSettings
+
+
+
+ 49524373A439BFE700000001
+
+ isa
+ XCBuildConfiguration
+ name
+ Release
+ buildSettings
+
+
+
+ 218C37090000000000000001
+
+ isa
+ XCConfigurationList
+ buildConfigurations
+
+ 4952437303EDA63300000001
+ 4952437350C7218900000001
+ 49524373A439BFE700000001
+
+ defaultConfigurationIsVisible
+
+
+ 96C8479303FF902600000000
+
+ isa
+ PBXProject
+ mainGroup
+ B401C979EFB6AC4600000000
+ targets
+
+ E66DC04E03FF902600000000
+
+ buildConfigurationList
+ 218C37090000000000000001
+ compatibilityVersion
+ Xcode 3.2
+ attributes
+
+ LastUpgradeCheck
+ 9999
+
+
+
+ rootObject
+ 96C8479303FF902600000000
+
+
\ No newline at end of file
diff --git a/submodules/Emoji/Emoji.xcodeproj/xcshareddata/xcschemes/Emoji.xcscheme b/submodules/Emoji/Emoji.xcodeproj/xcshareddata/xcschemes/Emoji.xcscheme
new file mode 100644
index 0000000000..c4eb6b0a83
--- /dev/null
+++ b/submodules/Emoji/Emoji.xcodeproj/xcshareddata/xcschemes/Emoji.xcscheme
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/submodules/MtProtoKit/BUCK b/submodules/MtProtoKit/BUCK
index 2b928eddb2..9d5d6ad159 100644
--- a/submodules/MtProtoKit/BUCK
+++ b/submodules/MtProtoKit/BUCK
@@ -1,119 +1,111 @@
-load('//tools:buck_utils.bzl', 'config_with_updated_linker_flags', 'combined_config', 'configs_with_config')
-load('//tools:buck_defs.bzl', 'SHARED_CONFIGS', 'EXTENSION_LIB_SPECIFIC_CONFIG')
+load("//Config:buck_rule_macros.bzl", "static_library", "framework")
genrule(
- name = 'openssl_libs',
+ name = "openssl_libs",
srcs = [
- 'openssl/iOS/libcrypto.a',
+ "openssl/iOS/libcrypto.a",
],
- bash = 'mkdir -p $OUT; cp $SRCS $OUT/',
- out = 'openssl_libs',
- visibility = [
- '//submodules/MtProtoKit:...',
- ]
+ bash = "mkdir -p $OUT; cp $SRCS $OUT/",
+ out = "openssl_libs",
+ visibility = ["PUBLIC"]
)
apple_library(
- name = 'openssl',
+ name = "openssl",
visibility = [
- '//submodules/MtProtoKit:MtProtoKit'
+ "//submodules/MtProtoKit:MtProtoKit"
],
- header_namespace = 'openssl',
+ header_namespace = "openssl",
exported_headers = glob([
- 'openssl/**/*.h',
+ "openssl/**/*.h",
]),
exported_linker_flags = [
- '-lcrypto',
- '-L$(location :openssl_libs)',
+ "-lcrypto",
+ "-L$(location :openssl_libs)",
],
)
-apple_library(
- name = 'MtProtoKit',
+framework(
+ name = "MtProtoKit",
srcs = glob([
- '*.m',
- 'MtProtoKit/*.m',
- 'thirdparty/AFNetworking/*.m',
- 'thirdparty/AsyncSocket/*.m',
+ "*.m",
+ "MtProtoKit/*.m",
+ "thirdparty/AFNetworking/*.m",
+ "thirdparty/AsyncSocket/*.m",
]),
- configs = configs_with_config(combined_config([SHARED_CONFIGS, EXTENSION_LIB_SPECIFIC_CONFIG])),
headers = glob([
- '*.h',
- 'MtProtoKit/*.h',
- 'thirdparty/AFNetworking/*.h',
- 'thirdparty/AsyncSocket/*.h',
+ "*.h",
+ "MtProtoKit/*.h",
+ "thirdparty/AFNetworking/*.h",
+ "thirdparty/AsyncSocket/*.h",
]),
- header_namespace = 'MtProtoKit',
exported_headers = [
- 'MtProtoKit/MTTime.h',
- 'MtProtoKit/MTTimer.h',
- 'MtProtoKit/MTLogging.h',
- 'MtProtoKit/MTEncryption.h',
- 'MtProtoKit/MTInternalId.h',
- 'MtProtoKit/MTQueue.h',
- 'MtProtoKit/MTOutputStream.h',
- 'MtProtoKit/MTInputStream.h',
- 'MtProtoKit/MTSerialization.h',
- 'MtProtoKit/MTExportedAuthorizationData.h',
- 'MtProtoKit/MTRpcError.h',
- 'MtProtoKit/MTKeychain.h',
- 'MtProtoKit/MTFileBasedKeychain.h',
- 'MtProtoKit/MTContext.h',
- 'MtProtoKit/MTTransportScheme.h',
- 'MtProtoKit/MTDatacenterTransferAuthAction.h',
- 'MtProtoKit/MTDatacenterAuthAction.h',
- 'MtProtoKit/MTDatacenterAuthMessageService.h',
- 'MtProtoKit/MTDatacenterAddress.h',
- 'MtProtoKit/MTDatacenterAddressSet.h',
- 'MtProtoKit/MTDatacenterAuthInfo.h',
- 'MtProtoKit/MTDatacenterSaltInfo.h',
- 'MtProtoKit/MTDatacenterAddressListData.h',
- 'MtProtoKit/MTProto.h',
- 'MtProtoKit/MTSessionInfo.h',
- 'MtProtoKit/MTTimeFixContext.h',
- 'MtProtoKit/MTPreparedMessage.h',
- 'MtProtoKit/MTOutgoingMessage.h',
- 'MtProtoKit/MTIncomingMessage.h',
- 'MtProtoKit/MTMessageEncryptionKey.h',
- 'MtProtoKit/MTMessageService.h',
- 'MtProtoKit/MTMessageTransaction.h',
- 'MtProtoKit/MTTimeSyncMessageService.h',
- 'MtProtoKit/MTRequestMessageService.h',
- 'MtProtoKit/MTRequest.h',
- 'MtProtoKit/MTRequestContext.h',
- 'MtProtoKit/MTRequestErrorContext.h',
- 'MtProtoKit/MTDropResponseContext.h',
- 'MtProtoKit/MTApiEnvironment.h',
- 'MtProtoKit/MTResendMessageService.h',
- 'MtProtoKit/MTNetworkAvailability.h',
- 'MtProtoKit/MTTransport.h',
- 'MtProtoKit/MTTransportTransaction.h',
- 'MtProtoKit/MTTcpTransport.h',
- 'MtProtoKit/MTHttpRequestOperation.h',
- 'MTAtomic.h',
- 'MTBag.h',
- 'MTDisposable.h',
- 'MTSubscriber.h',
- 'MTSignal.h',
- 'MTNetworkUsageCalculationInfo.h',
- 'MTNetworkUsageManager.h',
- 'MTBackupAddressSignals.h',
- 'thirdparty/AFNetworking/AFURLConnectionOperation.h',
- 'thirdparty/AFNetworking/AFHTTPRequestOperation.h',
- 'MTProxyConnectivity.h',
- 'MTGzip.h',
- 'MTDatacenterVerificationData.h',
- 'MTPKCS.h',
+ "MtProtoKit/MTTime.h",
+ "MtProtoKit/MTTimer.h",
+ "MtProtoKit/MTLogging.h",
+ "MtProtoKit/MTEncryption.h",
+ "MtProtoKit/MTInternalId.h",
+ "MtProtoKit/MTQueue.h",
+ "MtProtoKit/MTOutputStream.h",
+ "MtProtoKit/MTInputStream.h",
+ "MtProtoKit/MTSerialization.h",
+ "MtProtoKit/MTExportedAuthorizationData.h",
+ "MtProtoKit/MTRpcError.h",
+ "MtProtoKit/MTKeychain.h",
+ "MtProtoKit/MTFileBasedKeychain.h",
+ "MtProtoKit/MTContext.h",
+ "MtProtoKit/MTTransportScheme.h",
+ "MtProtoKit/MTDatacenterTransferAuthAction.h",
+ "MtProtoKit/MTDatacenterAuthAction.h",
+ "MtProtoKit/MTDatacenterAuthMessageService.h",
+ "MtProtoKit/MTDatacenterAddress.h",
+ "MtProtoKit/MTDatacenterAddressSet.h",
+ "MtProtoKit/MTDatacenterAuthInfo.h",
+ "MtProtoKit/MTDatacenterSaltInfo.h",
+ "MtProtoKit/MTDatacenterAddressListData.h",
+ "MtProtoKit/MTProto.h",
+ "MtProtoKit/MTSessionInfo.h",
+ "MtProtoKit/MTTimeFixContext.h",
+ "MtProtoKit/MTPreparedMessage.h",
+ "MtProtoKit/MTOutgoingMessage.h",
+ "MtProtoKit/MTIncomingMessage.h",
+ "MtProtoKit/MTMessageEncryptionKey.h",
+ "MtProtoKit/MTMessageService.h",
+ "MtProtoKit/MTMessageTransaction.h",
+ "MtProtoKit/MTTimeSyncMessageService.h",
+ "MtProtoKit/MTRequestMessageService.h",
+ "MtProtoKit/MTRequest.h",
+ "MtProtoKit/MTRequestContext.h",
+ "MtProtoKit/MTRequestErrorContext.h",
+ "MtProtoKit/MTDropResponseContext.h",
+ "MtProtoKit/MTApiEnvironment.h",
+ "MtProtoKit/MTResendMessageService.h",
+ "MtProtoKit/MTNetworkAvailability.h",
+ "MtProtoKit/MTTransport.h",
+ "MtProtoKit/MTTransportTransaction.h",
+ "MtProtoKit/MTTcpTransport.h",
+ "MtProtoKit/MTHttpRequestOperation.h",
+ "MTAtomic.h",
+ "MTBag.h",
+ "MTDisposable.h",
+ "MTSubscriber.h",
+ "MTSignal.h",
+ "MTNetworkUsageCalculationInfo.h",
+ "MTNetworkUsageManager.h",
+ "MTBackupAddressSignals.h",
+ "thirdparty/AFNetworking/AFURLConnectionOperation.h",
+ "thirdparty/AFNetworking/AFHTTPRequestOperation.h",
+ "MTProxyConnectivity.h",
+ "MTGzip.h",
+ "MTDatacenterVerificationData.h",
+ "MTPKCS.h",
],
- modular = True,
- compiler_flags = ['-w'],
- preprocessor_flags = ['-fobjc-arc'],
- visibility = ['PUBLIC'],
+ visibility = ["PUBLIC"],
deps = [
- ':openssl',
+ ":openssl",
],
frameworks = [
- '$SDKROOT/System/Library/Frameworks/Foundation.framework',
- '$SDKROOT/System/Library/Frameworks/Security.framework',
+ "$SDKROOT/System/Library/Frameworks/Foundation.framework",
+ "$SDKROOT/System/Library/Frameworks/Security.framework",
],
)
diff --git a/submodules/MtProtoKit/Info.plist b/submodules/MtProtoKit/Info.plist
new file mode 100644
index 0000000000..d3de8eefb6
--- /dev/null
+++ b/submodules/MtProtoKit/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ NSPrincipalClass
+
+
+
diff --git a/submodules/MtProtoKit/MTDiscoverConnectionSignals.m b/submodules/MtProtoKit/MTDiscoverConnectionSignals.m
index a426fdb822..dd4b304e12 100644
--- a/submodules/MtProtoKit/MTDiscoverConnectionSignals.m
+++ b/submodules/MtProtoKit/MTDiscoverConnectionSignals.m
@@ -1,39 +1,18 @@
#import "MTDiscoverConnectionSignals.h"
#import "MTTcpConnection.h"
-
-#if defined(MtProtoKitDynamicFramework)
-# import
-# import
-# import
-# import
-#elif defined(MtProtoKitMacFramework)
-# import
-# import
-# import
-# import
-#else
-# import
-# import
-# import
-# import
-#endif
+#import "MTTransportScheme.h"
+#import "MTTcpTransport.h"
+#import "MTQueue.h"
#import "MTDatacenterAddress.h"
-#if defined(MtProtoKitDynamicFramework)
-# import
-# import
-# import
-#elif defined(MtProtoKitMacFramework)
-# import
-# import
-# import
-#else
-# import
-# import
-# import
-#endif
+#import "MTDisposable.h"
+#import "MTSignal.h"
+#import "MTAtomic.h"
+#import "MTContext.h"
+#import "MTApiEnvironment.h"
+#import "MTLogging.h"
#import
#import
diff --git a/submodules/MtProtoKit/MTProtoKit/MTTcpConnection.m b/submodules/MtProtoKit/MTProtoKit/MTTcpConnection.m
index 677be9ee00..51342ef6b0 100644
--- a/submodules/MtProtoKit/MTProtoKit/MTTcpConnection.m
+++ b/submodules/MtProtoKit/MTProtoKit/MTTcpConnection.m
@@ -20,17 +20,8 @@
#import "MTAes.h"
#import "MTEncryption.h"
-
-#if defined(MtProtoKitDynamicFramework)
-# import
-# import
-#elif defined(MtProtoKitMacFramework)
-# import
-# import
-#else
-# import
-# import
-#endif
+#import "MTSignal.h"
+#import "MTDNS.h"
@interface MTTcpConnectionData : NSObject
diff --git a/submodules/MtProtoKit/MTProxyConnectivity.m b/submodules/MtProtoKit/MTProxyConnectivity.m
index 72bb7358b5..4db36644b7 100644
--- a/submodules/MtProtoKit/MTProxyConnectivity.m
+++ b/submodules/MtProtoKit/MTProxyConnectivity.m
@@ -1,34 +1,13 @@
#import "MTProxyConnectivity.h"
-#if defined(MtProtoKitDynamicFramework)
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-#elif defined(MtProtoKitMacFramework)
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-#else
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-# import
-#endif
-
+#import "MTSignal.h"
+#import "MTQueue.h"
+#import "MTContext.h"
+#import "MTApiEnvironment.h"
+#import "MTDatacenterAddressSet.h"
+#import "MTDatacenterAddress.h"
+#import "MTTcpConnection.h"
+#import "MTTransportScheme.h"
#import "MTDiscoverConnectionSignals.h"
@implementation MTProxyConnectivityStatus
diff --git a/submodules/MtProtoKit/MTSignal.m b/submodules/MtProtoKit/MTSignal.m
index 40b909bd91..3f273bf34b 100644
--- a/submodules/MtProtoKit/MTSignal.m
+++ b/submodules/MtProtoKit/MTSignal.m
@@ -1,14 +1,10 @@
#import "MTSignal.h"
-#if defined(MtProtoKitDynamicFramework)
-# import
-#elif defined(MtProtoKitMacFramework)
-# import
-#else
-# import
-#endif
-
#import
+#import "MTTimer.h"
+#import "MTQueue.h"
+#import "MTAtomic.h"
+#import "MTBag.h"
@interface MTSubscriberDisposable : NSObject
{
diff --git a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
index 60b6cfeae6..c9e52125fe 100644
--- a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
@@ -463,8 +463,8 @@
D0CD98CD1D74BA9700F41187 /* MTTcpConnectionBehaviour.m in Sources */ = {isa = PBXBuildFile; fileRef = D063A39818B1650400C65116 /* MTTcpConnectionBehaviour.m */; };
D0CD98DE1D74BAEA00F41187 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84EC18AFF259007F1076 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
D0CD98DF1D74BAEA00F41187 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84F518AFF259007F1076 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- D0CD98E21D74BAEB00F41187 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84EC18AFF259007F1076 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- D0CD98E31D74BAEB00F41187 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84F518AFF259007F1076 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ D0CD98E21D74BAEB00F41187 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84EC18AFF259007F1076 /* AFHTTPRequestOperation.m */; };
+ D0CD98E31D74BAEB00F41187 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84F518AFF259007F1076 /* AFURLConnectionOperation.m */; };
D0CD98E41D74BAF400F41187 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84F818AFF259007F1076 /* GCDAsyncSocket.m */; };
D0CD98E51D74BAF400F41187 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = D05A84F818AFF259007F1076 /* GCDAsyncSocket.m */; };
D0CD98E81D75C0BB00F41187 /* MTMessageService.h in Headers */ = {isa = PBXBuildFile; fileRef = D063A35018B1631900C65116 /* MTMessageService.h */; settings = {ATTRIBUTES = (Public, ); }; };
diff --git a/submodules/MtProtoKit/thirdparty/AFNetworking/AFURLConnectionOperation.m b/submodules/MtProtoKit/thirdparty/AFNetworking/AFURLConnectionOperation.m
index 59d5fa4058..c7a03d6126 100644
--- a/submodules/MtProtoKit/thirdparty/AFNetworking/AFURLConnectionOperation.m
+++ b/submodules/MtProtoKit/thirdparty/AFNetworking/AFURLConnectionOperation.m
@@ -187,8 +187,6 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat
if (_outputStream) {
[_outputStream close];
}
-
- [super dealloc];
}
diff --git a/tools/buck_defs.bzl b/tools/buck_defs.bzl
deleted file mode 100644
index d6db55ef19..0000000000
--- a/tools/buck_defs.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-SHARED_CONFIGS = {
- 'IPHONEOS_DEPLOYMENT_TARGET': '8.0', # common target version
- 'SDKROOT': 'iphoneos', # platform
- 'GCC_OPTIMIZATION_LEVEL': '0', # clang optimization
- 'SWIFT_OPTIMIZATION_LEVEL': '-Onone', # swiftc optimization
- 'SWIFT_WHOLE_MODULE_OPTIMIZATION': 'NO', # for build performance
- 'ONLY_ACTIVE_ARCH': 'YES',
- 'LD_RUNPATH_SEARCH_PATHS': '@executable_path/Frameworks', # To allow source files in binary
-}
-
-LIB_SPECIFIC_CONFIG = {
- 'SKIP_INSTALL': 'YES',
-}
-
-EXTENSION_LIB_SPECIFIC_CONFIG = {
- 'SKIP_INSTALL': 'YES',
- 'APPLICATION_EXTENSION_API_ONLY': 'YES',
-}
diff --git a/tools/defs.bzl b/tools/defs.bzl
new file mode 100644
index 0000000000..ad459ba6dc
--- /dev/null
+++ b/tools/defs.bzl
@@ -0,0 +1,13 @@
+XCODE_BINARY_CONFIG = {
+ 'IPHONEOS_DEPLOYMENT_TARGET': '8.0',
+ 'SDKROOT': 'iphoneos',
+ 'GCC_OPTIMIZATION_LEVEL': '0',
+ 'SWIFT_OPTIMIZATION_LEVEL': '-Onone',
+ 'SWIFT_WHOLE_MODULE_OPTIMIZATION': 'NO',
+ 'ONLY_ACTIVE_ARCH': 'YES',
+ 'LD_RUNPATH_SEARCH_PATHS': '@executable_path/Frameworks',
+}
+
+XCODE_STATIC_LIBRARY_CONFIG = {
+ 'SKIP_INSTALL': 'YES',
+}
diff --git a/tools/targets.bzl b/tools/targets.bzl
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tools/buck_utils.bzl b/tools/utils.bzl
similarity index 75%
rename from tools/buck_utils.bzl
rename to tools/utils.bzl
index ca933c023e..f443f03983 100644
--- a/tools/buck_utils.bzl
+++ b/tools/utils.bzl
@@ -1,10 +1,5 @@
OTHER_LINKER_FLAGS_KEY = 'OTHER_LDFLAGS'
-# Either appends or assigns `other_linker_flags` to `config` under `config_key`.
-# Params:
-# - config: A dictionary of config names and their values
-# - additional_linker_flags: A string-representable value of additional linker flags
-# - config_key: The key to which to append or assign the additional linker flags
def config_with_updated_linker_flags(config, other_linker_flags, config_key=OTHER_LINKER_FLAGS_KEY):
new_config = { }
config_key_found = False
@@ -21,8 +16,8 @@ def config_with_updated_linker_flags(config, other_linker_flags, config_key=OTHE
return new_config
-# Creates a dictionary where the top level keys are the supported build configurations and the value of each key is `config`.
-def configs_with_config(config):
+
+def xcode_configs(config):
return {
"Debug": config,
"Profile": config,
@@ -42,19 +37,11 @@ def merge_maps(dicts):
result.update(d)
return result
+
def basename(p):
- """Returns the basename (i.e., the file portion) of a path.
- Note that if `p` ends with a slash, this function returns an empty string.
- This matches the behavior of Python's `os.path.basename`, but differs from
- the Unix `basename` command (which would return the path segment preceding
- the final slash).
- Args:
- p: The path whose basename should be returned.
- Returns:
- The basename of the path, which includes the extension.
- """
return p.rpartition("/")[-1]
+
def glob_map(glob_results):
result = dict()
for path in glob_results:
@@ -64,6 +51,7 @@ def glob_map(glob_results):
result[file_name] = path
return result
+
def glob_sub_map(prefix, glob_specs):
result = dict()
for path in native.glob(glob_specs):
@@ -75,6 +63,7 @@ def glob_sub_map(prefix, glob_specs):
result[file_key] = path
return result
+
def gen_header_targets(header_paths, prefix, flavor, source_rule, source_path):
result = dict()
for header_path in header_paths:
@@ -87,6 +76,7 @@ def gen_header_targets(header_paths, prefix, flavor, source_rule, source_path):
result[header_path] = ':' + name + flavor
return result
+
def lib_basename(name):
result = name
if result.startswith('lib'):
@@ -95,12 +85,14 @@ def lib_basename(name):
result = result[:-2]
return result
+
def combined_config(dicts):
result = dict()
for d in dicts:
result.update(d)
return result
+
valid_build_variants = ['project', 'release']
def get_build_variant():