From 675cd65e46efc3cc82bad969743feb86b20328bc Mon Sep 17 00:00:00 2001 From: Yee Cheng Chin Date: Sun, 3 Nov 2019 01:30:50 -0800 Subject: [PATCH] Make Sparkle updater an optional component of MacVim MacVim by default uses Sparkle to update itself. It checks a URL that tells it whether there's a new binary release, and if one exists, it will download it and patches MacVim. However, there are certain situations where this is not wanted (e.g. when MacVim is bundled as part of a package management system), and previously there was no way to disable Sparkle. Make Sparkle optional by implementing a new configure argument: `./configure --disable-sparkle`, which will set a compile-time ifdef. Instead of instantiating the updater in MainMenu.nib as suggested by Sparkle's documentation, just instantiate it manually in code, and also disable the "Check for updates" menu item and updater-related preference pane items to make sure these settings don't confuse users when they are running a Sparkle-disabled build. Sparkle.framework is currently still bundled when it's disabled, because there doesn't seem to be an easy way to configure the copy build phase. It could be manually removed in a script after the build though, as it's now optionally linked to instead of mandatory. Fix #849. --- .../English.lproj/MainMenu.nib/designable.nib | 3 +- .../MainMenu.nib/keyedobjects.nib | Bin 9237 -> 9169 bytes .../Preferences.nib/designable.nib | 372 ++++++++++-------- .../Preferences.nib/keyedobjects.nib | Bin 20756 -> 21579 bytes src/MacVim/MMAppController.h | 4 + src/MacVim/MMAppController.m | 25 ++ src/MacVim/MMPreferenceController.h | 2 + src/MacVim/MMPreferenceController.m | 10 + src/MacVim/MacVim.xcodeproj/project.pbxproj | 2 +- src/MacVim/README | 10 + src/auto/configure | 20 + src/configure.ac | 11 + 12 files changed, 283 insertions(+), 176 deletions(-) diff --git a/src/MacVim/English.lproj/MainMenu.nib/designable.nib b/src/MacVim/English.lproj/MainMenu.nib/designable.nib index 5e5de7a1ac..d863cec491 100644 --- a/src/MacVim/English.lproj/MainMenu.nib/designable.nib +++ b/src/MacVim/English.lproj/MainMenu.nib/designable.nib @@ -26,7 +26,7 @@ - + @@ -208,6 +208,5 @@ - diff --git a/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib b/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib index 711003b4a0b86ad451a52ac0f90a9b2dba057d1a..5e2a234639ca0f11cd755542ec6e4b4169d5cb9e 100644 GIT binary patch delta 5189 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 delta 5201 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 JTz!vf{}09_63GAn diff --git a/src/MacVim/English.lproj/Preferences.nib/designable.nib b/src/MacVim/English.lproj/Preferences.nib/designable.nib index 889450913a..6db7e56add 100644 --- a/src/MacVim/English.lproj/Preferences.nib/designable.nib +++ b/src/MacVim/English.lproj/Preferences.nib/designable.nib @@ -1,8 +1,8 @@ - + - + @@ -12,6 +12,7 @@ + @@ -21,182 +22,206 @@ - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NSNegateBoolean - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This applies to files opened from the Finder (e.g. by double-clicking on a file or by dragging a file onto the MacVim dock icon) or from external programs such as Xcode. - - - - - - - - - - - - - - - - - - + + + + + + + + - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NSNegateBoolean + + + + + + + + + + + + + + + + + + + This applies to files opened from the Finder (e.g. by double-clicking on a file or by dragging a file onto the MacVim dock icon) or from external programs such as Xcode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -204,7 +229,7 @@ - + @@ -214,7 +239,7 @@ - - + @@ -236,7 +261,7 @@ - - + @@ -258,7 +283,7 @@ - - + @@ -279,7 +304,7 @@ - + diff --git a/src/MacVim/English.lproj/Preferences.nib/keyedobjects.nib b/src/MacVim/English.lproj/Preferences.nib/keyedobjects.nib index 3dc85ed47f1f86b8a8b7e81e61aba54fd2eb8bc9..45fc2c7f1373ad976a0b2b292042e524b1b4dc8a 100644 GIT binary patch delta 11707 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 sVz(;uiqqVkG z9JSVuwQ8+(p>|m7sCC<_9oDL~t=ei^wd(KO1gKj3`SkbCH}`czxc52Zc|ZF(2iL-d zHE>=_hTYG8GQX|bp9w;N2($+sKn#clI$#7{K^7PaMuIBvJXi=8fmgw6U`UPj)3FfJh%Y90$0Fw@GJNo+yf6FgbWOY5wIz23!jA@U<}kiEsTeW z&;~i^hFxJdm<4;mzHlha@xwwm0+z!HI1Y}71Wtle;WRiM&VsYyJh%wH4%fgp;M;H` zdLv4^0MWYxbM_LqzOvsEZU<0zE6y!v1 z)DvZ)ekdCaMfs=z6{1p9g`P)~kpBfV9nC;<&=T|#T8>trb?7a$32jEZ&>plGoki!- zH|RFHi|%2F5ym(Khv9JC2sgnIxHXpIXsp3nY{nLB!w&4iopBf31NX#(a5f%_i*O~b z!p~!ZXW*Hb#|!ZyycoZNm*Ew-2CuBaPB<}p08kXg)p&NlCW#Gn>j!b-Lhe8E1)j$z00 ztx_jNfNAV@b_ctY-No)^_p%@I;rK=?a-ZBIzgNQy!qTs5m|hLLlRx>E%m${*+YzmJ zomcB5BGQdyk@v{^WGC58_Kn@PJnJ89b|xJ zpasYTJwQ)Bk&TgdAze??M^exW^ag!EU(gTq2Lr%BFbE8$cQ!ws<+3}IP9%(grmztK zq~kH5p(AoYm$hIR$OU=82Zn=uPyh-^IB82_iH;-?D@i6Ul6Dppfl;8C()R`>f%!|p zXix^qK?U7JW?+r6d}K&*!Z~|n8{!Ym0kz!31)%W;6=LR zTrdyJ2MYkdc~?k#*kmzS0$!rTFN3Av6|juI7V2*EI#}K(BP*?>xS|HU4%Ej$4JB9! zR`IE#_Kr8e+U$tt8CmYiii(or&ZBbjeOV=yWx2i@@CHz4W*!4_paAQ^e+Jdlczi`g ztLT#r;B9_|D01*SU{k;PcdNlWU^CbP-UaIZ8Cf2>WLZfOUA#}BZ_L1qte(E|(vspl zU)dLbL*hM93bujwDHb~#u&4!NdAnF0(vCbUB5Ho5I6C?a1!htJj1Rzv6cz$LqNwi& zpMV44Q*aO*;kFra8$sggG&JdpQeo>Nd#$nl1_I5oCK%9 zX>bOd1z&(K!8v|onBJ%$(ufe!o<#S_sw%JWjT)32WXMxeR8n>ld=0*#!@i}%FM{vD zCGb5s!#4}>+(JeaC%{$k1Gq+C{Rn=dlKPo132)V?1CbvCH|WEg;Frzw!z-KmV}kJB z0=EZeWTjVDG|9;7Q$PwB&|p@YC~~+dQ_DD zsY(Oe!N@0-hUiJWpfD?sj%|AsI!K46KFzyksp2nvh z8lK?OOicVjsXXo9@;Mx)Ji%uIv5?lJNp?i5-sOC>w8cL#?1A3DF>E7=0>ho7Wlv!^ zzmDM^uqS2MTE}n_vGa?gXV&rC`+xA;5B7h8-xT8D2g?4vTnpgvC-_Y!PJWlH%|Ea? z5*Gc9O*i2LHp4qSjm^S3Hml(ClucJ1n_lAC+^>TJx&*mWTZI$AB{;F(5K;wGxJr$K z2R{qODJc94aPp7_W8})pa;jF+XH)o-F|yV(;7q~dD$6TMMhQM`6`Ub>JN_AY6n+uT z;p63P{V&3~Kuu@JC>%x|V6iW^qNMDRa03@W9`q!Lq?4Yc>(g{=Fw!lvH4qvmp3c`r_}$<58bSt(h+q9AUql zgRR$vj#L*qQ(dSH=t4J?PIbW_RE8czPy{OfDk}f6)W)dv36*|XQ2OP6N#9`lOZo{7 z((eVj)S%v|52+x}k+gq{z#uR$Cy*)EBTyN1VND8)r8&}K-FMBj5$gFn8iHJ)$Iy~O5{fb zRZ~|ROo1kn3H)5$*0v4FFq$GH!)O}yaDM9H2tOoV(!3$-MKjT?phx59#7Ft5J9|nn zLvzu*CxY1vWKvx)3wUTDKIy4jHtK`%$(;EA8=rQgSHV1gunG!jcQYD0CI_Y4)KlQg z9Vs1NQYNh|&C99ql|LQe8np6n08b-Rp8!}0B^2bRg%Sm=&l*Y+SX=LN(L2=VPHFJD z)A>?m8~s) zG8h9AHwymJGGPKWSuhFhLm!|IX~{SNjHmg{IP?+v811JyK{fCTb>&nr8GV8dz&+GH z4^lBMK!?y_bcDL1vBHIpq2of8iB6%@=nSY0lnI$-zTv*IGGAV5UcQgkCh5N7%D{^( zUlC1ne0iN|Z8w%WO|GcIS5}@?LGjLxXqJ)HyWCganHErKWhJB1eWLxmL-T%#!lLio%j&8v5ro3z_5sfq*gD1zcpMSS)TT0%VRLWEwPHBy&%I`r__o z^o3B|HDy~0HQl4nF9^>gB810ZqHifG7twd<5@;qx-=oXu3c8AZK-bVg^b`6ST}L;- zOe%?ADJr-439&_e<~0Km)Hl6E7Lb?ey0giAviLY1MFS)H9sPms(BeqILExgCEG4gy z8d^{16z56HeHGG*0-rReEWfC*yy7_elMcC$9-xO9@J>x6%acW9AwN{pJ{~ierRhU` zW=YHBUq71G>`%%Y?+VJfJGLDd@5aH^a?w z3v`AoBd?L=WG+dogMn`6QUHUtl%MY!P`H7v3mDMejD#X`i_D{pF9@*yDurQjc0`*o zg%t&S4?`pew9I*^e<*WVr+bT2C^bB{-HtQ55z8P#ff$5 zSc9!~g)6q>r0j^M8CjVnrM*jo5nL#5*U%Tq!S+QUO|KW8@Gdx83U*Q*eq`7hobp#+ z<1gc-rt7C^QeQxO7nsBDzd4XM$eKqTNXuX@YW&|R+unNjfitQ5Sl!@0Xsf0zH=Np* zv?!;%f(9)9wYWx4cPBUt_Y&L*?)!*4Sx?>)+{wB}-3cCC=T2yRJv^7ejkf)M^gn9I8EssOLBi_n~88 zEY3%#X^<1VN-a8qPLclveDoahrkHFXFN(!v`=4%a*__Jt_+;>bAmjlJq46==M<#Q5S)xU!~K@0pkUQP=oM7EP1{LaKUyb`bCe@uLKz)HOO zp9@g9n~r>wj;y95caa@5jN}R-GOeVncQ8PD3UZ3`eR=ldpj)6pIvj7HDN>1>-snU3GX+i0<{8*j%u@XkOgSvHb7BieZ^Eb`IiJ|rKIkNBgu zR~ftq@8w6^TT1XApgsZWhc3V$3PWiTxIaL;(muOgH_!|p5IVK^Q+yCEz=r{kkKoVn zQT#dICCQYKPL7ZRQS9H6~GzM}J{r#!ib;dQhvn3j|_ zAwc^L`IgeYn_{pAaA2OT7YGe3R3MB5A7R=vQhb^Ae7lzl(Yu_6nj_?U%IkOJ62(R0 z?A%^1bjle8qhexde^NKnS5>}(QIg9m7&W;v@m(E;^o zs)&zj!JfJ;niw-Fiy%lmFbo$W&+F!`8!u0CE^hT%gZ+qHNHzssz6aSl$Pef!g>%HLR%qysZC}QF>R{3srsbQ z9-@t^hM6``^;Au@^qiv|Rqe*)?lF3H(u|o8WaJKEgha5kw5TxGPa8xf#Q_6^Q|w#rL=(*yp~dEmQrYz z!Uc3L3Jtvr=$%jR;ePt%qjw&?bLl;dx<26&uo0jUt_&JxGwPt3N8y=A|C>VZYI;9U z@6mxPgNinIWzbGa28AYrLW2U(h$%E;3XPaTBc{-ZDKugVjhOhu1!M$%j|u#C2QB_@ zRRMv~!V#IDZnRz{{;xFR(L*`^|2mZmg2cuIKw{;rf>p9AR?Wt;8dl53u{t)M)w2fH z$R@BR*34R1E1SsLSUa1|wnmSf$lhxM|lY#Q5)t6^9*46lZbs$t`5 z_)InAKTh3-$X$L{+5&p4M%96>4WwSd-}{)k%LO%|Eok;5_G8*W?(FV9Yy_>Vgd?CD z_9LJUR7qWZRlYo~EVrPL_JfYG2iQ-Mm_5j^>zL%HmCaS$3QOqGa3Vbp?uRSzG zi^kQ@@aOnAJ}HDfdbWFkp6z~zFVoZAU+@D4&=As&p5MmPbK8#ethP5Zgehc3Fhxuy zGl`kO%w=9;_A>{VgUn&(Gv;&VICGLY&75VvWX>~RG2bv3nM=%N<|^aA#{9%wXKpgT zGPl_fwh1etGE`FeX{hYFP`L9ccoW%~>}+-pJC9w!E@GFkFS9l5X7*k7J@$Qi?7NGt zrH8&BPyl{lZ?bnno()li=tGPlrVw+8HN+N@6ygX;3F#9uD`a`d`jG7*M?=01xgLr_ zBSPDS%Kf3%(6rD_p*=$Tg!T&^5IQJyNa)beVWD}U!$S*0M~1EqeLr+h=z-9qp=U$S zg^E9+n)|BW!Tkh_JC?By3XH)5B(l%@2DmY;)L-uusCyhy4(CC+uF>{ji7O z5#cSv+l6-smxn9E)#1i)d*qtPwUO^c)<%9Dc{uV^qNWTs@cvFXg3+q#LBCrT(+hFQwm=(U>n6*PWy*TWddd38 zM#y;CBH0qzOR}Z1WwO^~%VjHM+ht$M&da`%eIvUlyCl0DBa2ChNsO__B*&!2bd1UL z$7IJ0k139+iXkyGViw1|9`kO@?wFG?=VGqK{2B8=4&+GA$klR*YqdNp6+f zOv0Jf6u}|@# z;$y`pio=SZlt{@aLzE(Am{OuND$PopGD+!B4p$Z^M<_=sM=48`qm|{#3gwH+4a$wm zP0B6Gt;%i6?aE^+xyqsHs_LuCRTZnoswSzHs8*{st9Gb%sdoESdsGKh2UUkvpQ%1q z9ao)HomQPwT~K|k`bKq8bxHM5EmAj8H&r)Rw^X-QcT@LN_fq#!_frp04^j_Nk5^Ao zPgBoOFHs*-A5kAwA5))DpHiPu--?yTDr42Ln%KD5_*g@%HI|F*6k8QLE_On!Kejsd zh1e;vvtk##(?3DJl&VVXvorkduOmYPe_VCk3vsW-ZI0U; zcQo!;+=;k5arffx$34&i9nvwn5M8J)TGvO{Pd7j}NH;_`R5whQryHwVptpq1eMfy~eOG;^zQ2B;evp2!euzFtpR4!j^Yw-Lk@`{k ziTY~&3;HSg#rl`@OZCh22lS`)*Yvma4-8^MGsCk6nIYa_GFS{r28V&B#|Dof)zHz< z+0e%@%#ddoZYVHJG|VzAF|0AHHLUX+)*H4MJ~n)2_||aQaLe$U;Sa-IV`F2qG1h1{ z+Ks8k3}atof8#*oU}Ls1$2iA0&$z(2(74$6l5weVnejE_`^N8$SByUxe>DDVykY#s zc+2>k@sEU737&-1gpLWF6S^j(Cv;Efk&u;8noyNM5~d`~NvKJ9J7IUi{)CeW{%=j; zrpBfwrU+9rQwvioQyWuTlfl%})XUVz)Xy})G{`i>^t@@MX|?GM(^}Iy(|Xee(?-)K z(`M67(=Jo3>5N%vR+}~EICH$&U^bdfW{cTsPBh!i`Q}3NNb@LjiFvfS++1lMW1eiD zYMySMXFUKe93&-eARr-{FC{*`KI~4MPX4{Vl7&W&Z4&% zEhdY_;sTvqU1j}`b&GYYb(?j&b*J^SM1QZu!HJ_2pG%yUI3saZ z;){uMZEbB9TW?#ot;9w_Nh_09C%uvMX3|?p7m|KVj!2G6j!!luCnTGbt;x3JLCIs27bP!A zemVJ-5|edB_pLIWk$-Hl(i}A zQr4$zNZFXODdj@Sedn{zNN1E&>XbQSoC;^UGv8V2yy(2-yzIQ{yypDLdEI%_`K$A` z^LOVR=RN0r=R+5CVHfKPb%|Z!uEwq=uBNW$u9mLWuC}grE{UtXE85k;C3h)ZYL~_p z=Zg2c46X#1*=2RvTuCm6%jx1=9#^WXqpP#4t1I2r-POaD9~sxx2=_%Du+D*1gWX z-o3%S(Y?vN#l6*C>lx}9=E?Kqdq#Lhc}hLyp65JOp79>PXOd@%XS!#WXO3sSXQ5|_ zXQ}5^&vMU7&l=C0p7ox$J)1o5dbW9Xcy@dC`aK_d_Ip0{9QGXb9QT~^ob{aZeC7Gp zbIEhXbItR!=cebD=XcLt&wVfOVsD67>}}+2;%(+_>22d}=Z*44dt%@YtM?{& zEnb^9+3WPWy{X<#-mczsZ+CAGZWx39Oqcc6E$H`|-z&Gq`c`QAeBNbe{wuj^T6 syW+j-z2?2;z3u%y6{I#vZIP--jZf{CIsgPd2nGMLhk}3Wzf%YOKbi<>k^lez diff --git a/src/MacVim/MMAppController.h b/src/MacVim/MMAppController.h index 566502fba0..13b85a2ecc 100644 --- a/src/MacVim/MMAppController.h +++ b/src/MacVim/MMAppController.h @@ -14,6 +14,7 @@ @class MMWindowController; @class MMVimController; +@class SUUpdater; @interface MMAppController : NSObject { @@ -30,6 +31,8 @@ int numChildProcesses; NSMutableDictionary *inputQueues; int processingFlag; + + SUUpdater *updater; FSEventStreamRef fsEventStream; } @@ -52,6 +55,7 @@ - (IBAction)orderFrontPreferencePanel:(id)sender; - (IBAction)openWebsite:(id)sender; - (IBAction)showVimHelp:(id)sender; +- (IBAction)checkForUpdates:(id)sender; - (IBAction)zoomAll:(id)sender; - (IBAction)stayInFront:(id)sender; - (IBAction)stayInBack:(id)sender; diff --git a/src/MacVim/MMAppController.m b/src/MacVim/MMAppController.m index df594f43e2..a75dbde0ee 100644 --- a/src/MacVim/MMAppController.m +++ b/src/MacVim/MMAppController.m @@ -43,6 +43,7 @@ #import "MMWindowController.h" #import "MMTextView.h" #import "Miscellaneous.h" +#import "Sparkle.framework/Headers/Sparkle.h" #import #import // Need Carbon for TIS...() functions @@ -298,6 +299,12 @@ - (id)init ASLogCrit(@"Failed to register connection with name '%@'", name); [connection release]; connection = nil; } + +#if !DISABLE_SPARKLE + // Sparkle is enabled (this is the default). Initialize it. It will + // automatically check for update. + updater = [[SUUpdater alloc] init]; +#endif return self; } @@ -315,6 +322,7 @@ - (void)dealloc [recentFilesMenuItem release]; recentFilesMenuItem = nil; [defaultMainMenu release]; defaultMainMenu = nil; [appMenuItemTemplate release]; appMenuItemTemplate = nil; + [updater release]; updater = nil; [super dealloc]; } @@ -892,6 +900,14 @@ - (void)setMainMenu:(NSMenu *)mainMenu // private so this will have to be considered a bit of a hack!) NSMenu *appMenu = [mainMenu findApplicationMenu]; [NSApp performSelector:@selector(setAppleMenu:) withObject:appMenu]; + +#if DISABLE_SPARKLE + // If Sparkle is disabled, we want to remove the "Check for Updates" menu + // item since it's no longer useful. + NSMenuItem *checkForUpdatesItem = [appMenu itemAtIndex: + [appMenu indexOfItemWithAction:@selector(checkForUpdates:)]]; + checkForUpdatesItem.hidden = true; +#endif NSMenu *servicesMenu = [mainMenu findServicesMenu]; [NSApp setServicesMenu:servicesMenu]; @@ -1195,6 +1211,15 @@ - (IBAction)showVimHelp:(id)sender @"-c", @":h gui_mac", @"-c", @":res", nil] workingDirectory:nil]; } + +- (IBAction)checkForUpdates:(id)sender +{ +#if !DISABLE_SPARKLE + // Check for updates for new versions manually. + ASLogDebug(@"Check for software updates"); + [updater checkForUpdates:sender]; +#endif +} - (IBAction)zoomAll:(id)sender { diff --git a/src/MacVim/MMPreferenceController.h b/src/MacVim/MMPreferenceController.h index 0e8deb39cb..9beec0252f 100644 --- a/src/MacVim/MMPreferenceController.h +++ b/src/MacVim/MMPreferenceController.h @@ -18,9 +18,11 @@ // General pane IBOutlet NSPopUpButton *layoutPopUpButton; IBOutlet NSButton *autoInstallUpdateButton; + IBOutlet NSView *sparkleUpdaterPane; } // General pane +- (IBAction)showWindow:(id)sender; - (IBAction)openInCurrentWindowSelectionChanged:(id)sender; - (IBAction)checkForUpdatesChanged:(id)sender; diff --git a/src/MacVim/MMPreferenceController.m b/src/MacVim/MMPreferenceController.m index 5314ba8a50..a7c714705a 100644 --- a/src/MacVim/MMPreferenceController.m +++ b/src/MacVim/MMPreferenceController.m @@ -43,6 +43,16 @@ static void loadSymbols() @implementation MMPreferenceController +- (IBAction)showWindow:(id)sender +{ + [super showWindow:sender]; + #if DISABLE_SPARKLE + // If Sparkle is disabled in config, we don't want to show the preference pane + // which could be confusing as it won't do anything. + [sparkleUpdaterPane setHidden:YES]; + #endif +} + - (void)setupToolbar { loadSymbols(); diff --git a/src/MacVim/MacVim.xcodeproj/project.pbxproj b/src/MacVim/MacVim.xcodeproj/project.pbxproj index a6bd3c99aa..f0860f173d 100644 --- a/src/MacVim/MacVim.xcodeproj/project.pbxproj +++ b/src/MacVim/MacVim.xcodeproj/project.pbxproj @@ -66,7 +66,7 @@ 1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; }; 52818B031C1C08CE00F59085 /* QLStephen.qlgenerator in Copy QuickLookPlugin */ = {isa = PBXBuildFile; fileRef = 52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 528DA66A1426D4F9003380F1 /* macvim-askpass in Copy Scripts */ = {isa = PBXBuildFile; fileRef = 528DA6691426D4EB003380F1 /* macvim-askpass */; }; - 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; }; + 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */; }; 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; diff --git a/src/MacVim/README b/src/MacVim/README index 7c2018934f..459ae35f1a 100644 --- a/src/MacVim/README +++ b/src/MacVim/README @@ -162,6 +162,16 @@ be in when executing these commands): 1. Configure Vim (call "./configure --help" to see a list of flags) src/$ ./configure + MacVim-specific flags that `./configure` supports: + --disable-sparkle: Disable Sparkle auto-update. This is useful if you want + to manually sync or building this as part of a package + manager. + --with-macsdk: Build MacVim against specific SDK versions. + + You can also use environment variable `MACOSX_DEPLOYMENT_TARGET` to specify + minimum target macOS version to deploy (e.g. '10.14'), and `XCODEFLAGS` for + additional command-line arguments to pass to `xcodebuild`. + 2. Build src/$ make diff --git a/src/auto/configure b/src/auto/configure index 3f972a5583..c3a67dd745 100755 --- a/src/auto/configure +++ b/src/auto/configure @@ -782,6 +782,7 @@ ac_user_opts=' enable_option_checking enable_fail_if_missing enable_darwin +enable_sparkle with_developer_dir with_macsdk with_macarchs @@ -1476,6 +1477,7 @@ Optional Features: --enable-fail-if-missing Fail if dependencies on additional features specified on the command line are missing. --disable-darwin Disable Darwin (Mac OS X) support. + --disable-sparkle Disable Sparkle updater (MacVim). --disable-smack Do not check for Smack support. --disable-selinux Do not check for SELinux support. --disable-xsmp Disable XSMP session management @@ -4591,6 +4593,24 @@ $as_echo "no, Darwin support disabled" >&6; } $as_echo "yes, Darwin support excluded" >&6; } fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-sparkle argument" >&5 +$as_echo_n "checking --disable-sparkle argument... " >&6; } + # Check whether --enable-sparkle was given. +if test "${enable_sparkle+set}" = set; then : + enableval=$enable_sparkle; +else + enable_sparkle="yes" +fi + + if test "$enable_sparkle" == "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + XCODEFLAGS="$XCODEFLAGS GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS DISABLE_SPARKLE=1'" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-developer-dir argument" >&5 $as_echo_n "checking --with-developer-dir argument... " >&6; } diff --git a/src/configure.ac b/src/configure.ac index ef07f78d77..461b5cfb00 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -190,6 +190,17 @@ if test "`(uname) 2>/dev/null`" = Darwin; then AC_MSG_RESULT([yes, Darwin support excluded]) fi + AC_MSG_CHECKING(--disable-sparkle argument) + AC_ARG_ENABLE(sparkle, + [ --disable-sparkle Disable Sparkle updater (MacVim).], + , [enable_sparkle="yes"]) + if test "$enable_sparkle" == "yes"; then + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + XCODEFLAGS="$XCODEFLAGS GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS DISABLE_SPARKLE=1'" + fi + AC_MSG_CHECKING(--with-developer-dir argument) AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools], DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),