12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234 |
- dnl Autoconf script for GNU Emacs
- dnl To rebuild the `configure' script from this, execute the command
- dnl autoconf
- dnl in the directory containing this script.
- dnl If you changed any AC_DEFINES, also run autoheader.
- dnl
- dnl Copyright (C) 1994-1996, 1999-2015 Free Software Foundation, Inc.
- dnl
- dnl This file is part of GNU Emacs.
- dnl
- dnl GNU Emacs is free software: you can redistribute it and/or modify
- dnl it under the terms of the GNU General Public License as published by
- dnl the Free Software Foundation, either version 3 of the License, or
- dnl (at your option) any later version.
- dnl
- dnl GNU Emacs is distributed in the hope that it will be useful,
- dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
- dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- dnl GNU General Public License for more details.
- dnl
- dnl You should have received a copy of the GNU General Public License
- dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
- AC_PREREQ(2.65)
- dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
- AC_INIT(GNU Emacs, 25.0.50, bug-gnu-emacs@gnu.org)
- dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
- dnl and then quoted again for a C string. Separate options with spaces.
- dnl Add some environment variables, if they were passed via the environment
- dnl rather than on the command-line.
- emacs_config_options=
- optsep=
- dnl This is the documented way to record the args passed to configure,
- dnl rather than $ac_configure_args.
- for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do
- case $opt in
- -n | --no-create | --no-recursion)
- continue ;;
- CFLAGS | CPPFLAGS | LDFLAGS)
- eval 'test "${'$opt'+set}" = set' || continue
- case " $*" in
- *" $opt="*) continue ;;
- esac
- eval opt=$opt=\$$opt ;;
- esac
- emacs_shell_specials=$IFS\''"#$&()*;<>?@<:@\\`{|~'
- case $opt in
- *[["$emacs_shell_specials"]]*)
- case $opt in
- *\'*)
- emacs_quote_apostrophes="s/'/'\\\\''/g"
- opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_apostrophes"` ;;
- esac
- opt="'$opt'"
- case $opt in
- *[['"\\']]*)
- emacs_quote_for_c='s/[["\\]]/\\&/g; $!s/$/\\n\\/'
- opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_for_c"` ;;
- esac ;;
- esac
- AS_VAR_APPEND([emacs_config_options], ["$optsep$opt"])
- optsep=' '
- done
- AC_CONFIG_HEADERS(src/config.h:src/config.in)
- AC_CONFIG_SRCDIR(src/lisp.h)
- AC_CONFIG_AUX_DIR(build-aux)
- dnl automake 1.13 and later understand this, making -I m4 unnecessary.
- dnl With older versions this is a no-op.
- AC_CONFIG_MACRO_DIR(m4)
- xcsdkdir=
- AC_CHECK_PROGS(XCRUN, [xcrun])
- if test -n "$XCRUN"; then
- if test -z "$MAKE"; then
- dnl Call the variable MAKE_PROG, not MAKE, to avoid confusion with
- dnl the usual MAKE variable that 'make' itself uses.
- AC_CHECK_PROG([MAKE_PROG], [make], [yes])
- if test -z "$MAKE_PROG"; then
- MAKE="$XCRUN MAKE"
- export MAKE
- xcsdkdir=`$XCRUN --show-sdk-path 2>/dev/null`
- fi
- fi
- fi
- dnl GNU Make is required, so don't test for its individual features.
- am_cv_make_support_nested_variables=yes
- AC_DEFUN([AC_PROG_MAKE_SET],
- [SET_MAKE=
- AC_SUBST([SET_MAKE])])
- dnl Check for GNU Make and possibly set MAKE before running AM_INIT_AUTOMAKE.
- [emacs_check_gnu_make ()
- {
- emacs_makeout=`($1 --version) 2>/dev/null` &&
- case $emacs_makeout in
- 'GNU Make '3.8[1-9]* | 'GNU Make '3.9[0-9]* | \
- 'GNU Make '3.[1-9][0-9][0-9]* | 'GNU Make '[4-9]* | 'GNU Make '[1-9][0-9]* )
- ac_path_MAKE_found=:;;
- esac
- }]
- AC_CACHE_CHECK([for GNU Make], [ac_cv_path_MAKE],
- [ac_path_MAKE_found=false
- if test -n "$MAKE"; then
- emacs_check_gnu_make "$MAKE"
- ac_cv_path_MAKE=$MAKE
- else
- emacs_tried_make=false
- emacs_tried_gmake=false
- emacs_tried_gnumake=false
- AC_PATH_PROGS_FEATURE_CHECK([MAKE], [make gmake gnumake],
- [[emacs_check_gnu_make "$ac_path_MAKE"
- if $ac_path_MAKE_found; then
- # Use the fully-qualified program name only if the basename
- # would not resolve to it.
- if eval \$emacs_tried_$ac_prog; then
- ac_cv_path_MAKE=$ac_path_MAKE
- else
- ac_cv_path_MAKE=$ac_prog
- fi
- fi
- eval emacs_tried_$ac_prog=:]])
- fi])
- $ac_path_MAKE_found || {
- AC_MSG_ERROR([[Building Emacs requires GNU Make, at least version 3.81.
- If you have it installed under another name, configure with 'MAKE=...'.
- For example, run '$0 MAKE=gnu-make'.]])
- }
- MAKE=$ac_cv_path_MAKE
- export MAKE
- dnl Fairly arbitrary, older versions might work too.
- AM_INIT_AUTOMAKE(1.11)
- dnl Canonicalize the configuration name.
- AC_CANONICAL_HOST
- case $host in
- *-mingw*)
- if test -z "$host_alias"; then
- # No --host argument was given to 'configure'; therefore $host
- # was set to a default value based on the build platform. But
- # this default value may be wrong if we are building from a
- # 64-bit MSYS[2] pre-configured to build 32-bit MinGW programs.
- # Therefore, we'll try to get the right host platform from the
- # compiler's target.
- AC_MSG_CHECKING([the compiler's target])
- if test -z "$CC"; then
- cc=gcc
- else
- cc=$CC
- fi
- cc_target=`$cc -v 2>&1 | sed -n 's/Target: //p'`
- case "$cc_target" in
- *-*) host=$cc_target
- ;;
- "") AC_MSG_ERROR([Impossible to obtain $cc compiler target.
- Please explicitly provide --host.])
- ;;
- *) AC_MSG_WARN([Compiler reported non-standard target.
- Defaulting to $host.])
- ;;
- esac
- AC_MSG_RESULT([$host])
- fi
- . $srcdir/nt/mingw-cfg.site
- case $srcdir in
- /* | ?:*)
- # srcdir is an absolute path. In this case, force the format
- # "/c/foo/bar", to simplify later conversions to native Windows
- # format ("c:/foo/bar").
- srcdir=`cd "${srcdir}" && pwd -W`
- # 'eval' pacifies strict POSIX non-MinGW shells (Bug#18612).
- eval 'srcdir="/${srcdir:0:1}${srcdir:2}"'
- ;;
- esac;;
- esac
- canonical=$host
- configuration=${host_alias-${build_alias-$host}}
- dnl Support for --program-prefix, --program-suffix and
- dnl --program-transform-name options
- AC_ARG_PROGRAM
- dnl It is important that variables on the RHS not be expanded here,
- dnl hence the single quotes. This is per the GNU coding standards, see
- dnl (autoconf) Installation Directory Variables
- dnl See also epaths.h below.
- lispdir='${datadir}/emacs/${version}/lisp'
- standardlisppath='${lispdir}'
- locallisppath='${datadir}/emacs/${version}/site-lisp:'\
- '${datadir}/emacs/site-lisp'
- lisppath='${locallisppath}:${standardlisppath}'
- etcdir='${datadir}/emacs/${version}/etc'
- archlibdir='${libexecdir}/emacs/${version}/${configuration}'
- etcdocdir='${datadir}/emacs/${version}/etc'
- gamedir='${localstatedir}/games/emacs'
- dnl Special option to disable the most of other options.
- AC_ARG_WITH(all,
- [AS_HELP_STRING([--without-all],
- [omit almost all features and build
- small executable with minimal dependencies])],
- [with_features=$withval],
- [with_features=yes])
- dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
- dnl Create a new --with option that defaults to being disabled.
- dnl NAME is the base name of the option. The shell variable with_NAME
- dnl will be set to either the user's value (if the option is
- dnl specified; 'yes' for a plain --with-NAME) or to 'no' (if the
- dnl option is not specified). Note that the shell variable name is
- dnl constructed as autoconf does, by replacing non-alphanumeric
- dnl characters with "_".
- dnl HELP-STRING is the help text for the option.
- AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
- AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
- m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
- ])dnl
- dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
- dnl Create a new --with option that defaults to $with_features.
- dnl NAME is the base name of the option. The shell variable with_NAME
- dnl will be set either to 'no' (for a plain --without-NAME) or to
- dnl 'yes' (if the option is not specified). Note that the shell
- dnl variable name is constructed as autoconf does, by replacing
- dnl non-alphanumeric characters with "_".
- dnl HELP-STRING is the help text for the option.
- AC_DEFUN([OPTION_DEFAULT_ON], [dnl
- AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
- m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
- ])dnl
- OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
- if test "$with_pop" = yes; then
- AC_DEFINE(MAIL_USE_POP)
- fi
- AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
- OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
- if test "$with_kerberos" != no; then
- AC_DEFINE(KERBEROS)
- fi
- AH_TEMPLATE(KERBEROS,
- [Define to support Kerberos-authenticated POP mail retrieval.])dnl
- OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
- if test "${with_kerberos5}" != no; then
- if test "${with_kerberos}" = no; then
- with_kerberos=yes
- AC_DEFINE(KERBEROS)
- fi
- AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
- fi
- OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
- dnl FIXME hesiod support may not be present, so it seems like an error
- dnl to define, or at least use, this unconditionally.
- if test "$with_hesiod" != no; then
- AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
- fi
- OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
- if test "$with_mmdf" != no; then
- AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
- fi
- OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
- if test "$with_mail_unlink" != no; then
- AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
- fi
- AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
- [string giving default POP mail host])],
- AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
- AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
- [compile with sound support (VALUE one of: yes, alsa, oss, bsd-ossaudio, no;
- default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW, Cygwin.])],
- [ case "${withval}" in
- yes|no|alsa|oss|bsd-ossaudio) val=$withval ;;
- *) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
- this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.])
- ;;
- esac
- with_sound=$val
- ],
- [with_sound=$with_features])
- dnl FIXME currently it is not the last.
- dnl This should be the last --with option, because --with-x is
- dnl added later on when we find the file name of X, and it's best to
- dnl keep them together visually.
- AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
- [use an X toolkit (KIT one of: yes or gtk, gtk2, gtk3, lucid or athena, motif, no)])],
- [ case "${withval}" in
- y | ye | yes ) val=gtk ;;
- n | no ) val=no ;;
- l | lu | luc | luci | lucid ) val=lucid ;;
- a | at | ath | athe | athen | athena ) val=athena ;;
- m | mo | mot | moti | motif ) val=motif ;;
- g | gt | gtk ) val=gtk ;;
- gtk2 ) val=gtk2 ;;
- gtk3 ) val=gtk3 ;;
- * )
- AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
- this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
- `gtk2' or `gtk3'. `yes' and `gtk' are synonyms.
- `athena' and `lucid' are synonyms.])
- ;;
- esac
- with_x_toolkit=$val
- ])
- OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
- if test "$with_wide_int" = yes; then
- AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
- fi
- dnl _ON results in a '--without' option in the --help output, so
- dnl the help text should refer to "don't compile", etc.
- with_xpm_set=${with_xpm+set}
- OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
- OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
- OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
- OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
- OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
- OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
- OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
- OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
- OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
- OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
- OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
- OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
- OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
- OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
- OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
- OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
- OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
- OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
- OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
- OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
- OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
- OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
- OPTION_DEFAULT_ON([zlib],[don't compile with zlib decompression support])
- AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
- [use a file notification library (LIB one of: yes, gfile, inotify, w32, no)])],
- [ case "${withval}" in
- y | ye | yes ) val=yes ;;
- n | no ) val=no ;;
- g | gf | gfi | gfil | gfile ) val=gfile ;;
- i | in | ino | inot | inoti | inotif | inotify ) val=inotify ;;
- w | w3 | w32 ) val=w32 ;;
- * ) AC_MSG_ERROR([`--with-file-notification=$withval' is invalid;
- this option's value should be `yes', `no', `gfile', `inotify' or `w32'.
- `yes' is a synonym for `w32' on MS-Windows, for `no' on Nextstep,
- otherwise for the first of `gfile' or `inotify' that is usable.])
- ;;
- esac
- with_file_notification=$val
- ],
- [with_file_notification=$with_features])
- ## For the times when you want to build Emacs but don't have
- ## a suitable makeinfo, and can live without the manuals.
- dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
- OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
- ## This might be a 'configure' arg.
- AC_SUBST([ACLOCAL_PATH])
- ## Makefile.in needs the cache file name.
- AC_SUBST(cache_file)
- ## This is an option because I do not know if all info/man support
- ## compressed files, nor how to test if they do so.
- OPTION_DEFAULT_ON([compress-install],
- [don't compress some files (.el, .info, etc.) when installing. Equivalent to:
- make GZIP_PROG= install])
- AC_ARG_WITH(gameuser,dnl
- [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
- test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
- && gameuser="${with_gameuser}"
- test "X$gameuser" = X && gameuser=games
- AC_ARG_WITH([gnustep-conf],dnl
- [AS_HELP_STRING([--with-gnustep-conf=FILENAME],
- [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
- test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
- GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
- test "X$GNUSTEP_CONFIG_FILE" = "X" && \
- GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
- AC_ARG_ENABLE(ns-self-contained,
- [AS_HELP_STRING([--disable-ns-self-contained],
- [disable self contained build under NeXTstep])],
- EN_NS_SELF_CONTAINED=$enableval,
- EN_NS_SELF_CONTAINED=yes)
- AC_ARG_ENABLE(locallisppath,
- [AS_HELP_STRING([--enable-locallisppath=PATH],
- [directories Emacs should search for lisp files specific
- to this site])],
- if test "${enableval}" = "no"; then
- locallisppath=
- elif test "${enableval}" != "yes"; then
- locallisppath=${enableval}
- fi)
- AC_ARG_ENABLE(checking,
- [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
- [enable expensive run-time checks. With LIST,
- enable only specific categories of checks.
- Categories are: all,yes,no.
- Flags are: stringbytes, stringoverrun, stringfreelist,
- xmallocoverrun, conslist, glyphs])],
- [ac_checking_flags="${enableval}"],[])
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
- for check in $ac_checking_flags
- do
- case $check in
- # these set all the flags to specific states
- yes) ac_enable_checking=1 ;;
- no) ac_enable_checking= ;
- ac_gc_check_stringbytes= ;
- ac_gc_check_string_overrun= ;
- ac_gc_check_string_free_list= ;
- ac_xmalloc_overrun= ;
- ac_gc_check_cons_list= ;
- ac_glyphs_debug= ;;
- all) ac_enable_checking=1 ;
- ac_gc_check_stringbytes=1 ;
- ac_gc_check_string_overrun=1 ;
- ac_gc_check_string_free_list=1 ;
- ac_xmalloc_overrun=1 ;
- ac_gc_check_cons_list=1 ;
- ac_glyphs_debug=1 ;;
- # these enable particular checks
- stringbytes) ac_gc_check_stringbytes=1 ;;
- stringoverrun) ac_gc_check_string_overrun=1 ;;
- stringfreelist) ac_gc_check_string_free_list=1 ;;
- xmallocoverrun) ac_xmalloc_overrun=1 ;;
- conslist) ac_gc_check_cons_list=1 ;;
- glyphs) ac_glyphs_debug=1 ;;
- *) AC_MSG_ERROR(unknown check category $check) ;;
- esac
- done
- IFS="$ac_save_IFS"
- if test x$ac_enable_checking != x ; then
- AC_DEFINE(ENABLE_CHECKING, 1,
- [Define to 1 if expensive run-time data type and consistency checks are enabled.])
- fi
- if test x$ac_gc_check_stringbytes != x ; then
- AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
- [Define this temporarily to hunt a bug. If defined, the size of
- strings is redundantly recorded in sdata structures so that it can
- be compared to the sizes recorded in Lisp strings.])
- fi
- if test x$ac_gc_check_string_overrun != x ; then
- AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
- [Define this to check for short string overrun.])
- fi
- if test x$ac_gc_check_string_free_list != x ; then
- AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
- [Define this to check the string free list.])
- fi
- if test x$ac_xmalloc_overrun != x ; then
- AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
- [Define this to check for malloc buffer overrun.])
- fi
- if test x$ac_gc_check_cons_list != x ; then
- AC_DEFINE(GC_CHECK_CONS_LIST, 1,
- [Define this to check for errors in cons list.])
- fi
- if test x$ac_glyphs_debug != x ; then
- AC_DEFINE(GLYPH_DEBUG, 1,
- [Define this to enable glyphs debugging code.])
- fi
- AC_ARG_ENABLE(check-lisp-object-type,
- [AS_HELP_STRING([--enable-check-lisp-object-type],
- [enable compile time checks for the Lisp_Object data type.
- This is useful for development for catching certain types of bugs.])],
- if test "${enableval}" != "no"; then
- AC_DEFINE(CHECK_LISP_OBJECT_TYPE, 1,
- [Define this to enable compile time checks for the Lisp_Object data type.])
- fi)
- dnl The name of this option is unfortunate. It predates, and has no
- dnl relation to, the "sampling-based elisp profiler" added in 24.3.
- dnl Actually, it stops it working.
- dnl http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
- AC_ARG_ENABLE(profiling,
- [AS_HELP_STRING([--enable-profiling],
- [build emacs with low-level, gprof profiling support.
- Mainly useful for debugging Emacs itself. May not work on
- all platforms. Stops profiler.el working.])],
- [ac_enable_profiling="${enableval}"],[])
- if test x$ac_enable_profiling != x ; then
- PROFILING_CFLAGS="-DPROFILING=1 -pg"
- else
- PROFILING_CFLAGS=
- fi
- AC_SUBST(PROFILING_CFLAGS)
- AC_ARG_ENABLE(autodepend,
- [AS_HELP_STRING([--enable-autodepend],
- [automatically generate dependencies to .h-files.
- Requires gcc, enabled if found.])],
- [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
- AC_ARG_ENABLE(gtk-deprecation-warnings,
- [AS_HELP_STRING([--enable-gtk-deprecation-warnings],
- [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
- [ac_enable_gtk_deprecation_warnings="${enableval}"],[])
- dnl This used to use changequote, but, apart from `changequote is evil'
- dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
- dnl the great gob of text. Thus it's not processed for possible expansion.
- dnl Just make sure the brackets remain balanced.
- dnl
- dnl Since Emacs can't find matching pairs of quotes, boundaries are
- dnl indicated by comments.
- dnl quotation begins
- [
- ### If you add support for a new configuration, add code to this
- ### switch statement to recognize your configuration name and select
- ### the appropriate opsys.
- ### As far as handling version numbers on operating systems is
- ### concerned, make sure things will fail in a fixable way. If
- ### /etc/MACHINES doesn't say anything about version numbers, be
- ### prepared to handle anything reasonably. If version numbers
- ### matter, be sure /etc/MACHINES says something about it.
- opsys='' unported=no
- case "${canonical}" in
- ## GNU/Linux and similar ports
- *-*-linux* )
- opsys=gnu-linux
- ;;
- ## FreeBSD ports
- *-*-freebsd* )
- opsys=freebsd
- ;;
- ## DragonFly ports
- *-*-dragonfly* )
- opsys=dragonfly
- ;;
- ## FreeBSD kernel + glibc based userland
- *-*-kfreebsd*gnu* )
- opsys=gnu-kfreebsd
- ;;
- ## NetBSD ports
- *-*-netbsd* )
- opsys=netbsd
- ;;
- ## OpenBSD ports
- *-*-openbsd* | *-*-mirbsd* )
- opsys=openbsd
- ;;
- ## Apple Darwin / Mac OS X
- *-apple-darwin* )
- case "${canonical}" in
- *-apple-darwin[0-9].*) unported=yes ;;
- i[3456]86-* | x86_64-* ) ;;
- * ) unported=yes ;;
- esac
- opsys=darwin
- ## Use fink packages if available.
- ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
- ## if test -d /sw/include && test -d /sw/lib; then
- ## GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
- ## NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
- ## fi
- ;;
- ## Cygwin ports
- *-*-cygwin )
- opsys=cygwin
- ;;
- ## HP 9000 series 700 and 800, running HP/UX
- hppa*-hp-hpux10.2* )
- opsys=hpux10-20
- ;;
- hppa*-hp-hpux1[1-9]* )
- opsys=hpux11
- CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
- ;;
- ## IBM machines
- rs6000-ibm-aix4.[23]* )
- opsys=aix4-2
- ;;
- powerpc-ibm-aix4.[23]* )
- opsys=aix4-2
- ;;
- rs6000-ibm-aix[56]* )
- opsys=aix4-2
- ;;
- powerpc-ibm-aix[5-9]* | powerpc-ibm-aix[1-9][0-9]* )
- opsys=aix4-2
- ;;
- ## Silicon Graphics machines
- ## Iris 4D
- mips-sgi-irix6.5 )
- opsys=irix6-5
- # Without defining _LANGUAGE_C, things get masked out in the headers
- # so that, for instance, grepping for `free' in stdlib.h fails and
- # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
- NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
- ;;
- ## Suns
- *-sun-solaris* \
- | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
- | x86_64-*-solaris2* | x86_64-*-sunos5*)
- case "${canonical}" in
- i[3456]86-*-* ) ;;
- amd64-*-*|x86_64-*-*) ;;
- sparc* ) ;;
- * ) unported=yes ;;
- esac
- case "${canonical}" in
- *-sunos5.[1-9][0-9]* | *-solaris2.[1-9][0-9]* )
- opsys=sol2-10
- emacs_check_sunpro_c=yes
- ;;
- *-sunos5.[1-5]* | *-solaris2.[1-5]* ) unported=yes ;;
- ## Note that Emacs 23.1's NEWS said the following would be dropped.
- *-sunos5.6* | *-solaris2.6* )
- opsys=sol2-6
- RANLIB="ar -ts"
- ;;
- ## 5.7 EOL Aug 2008, 5.8 EOL Mar 2012.
- *-sunos5.[7-9]* | *-solaris2.[7-9]* )
- opsys=sol2-6
- emacs_check_sunpro_c=yes
- ;;
- esac
- ## Watch out for a compiler that we know will not work.
- case "${canonical}" in
- *-solaris* | *-sunos5* )
- if [ "x$CC" = x/usr/ucb/cc ]; then
- ## /usr/ucb/cc doesn't work;
- ## we should find some other compiler that does work.
- unset CC
- fi
- ;;
- *) ;;
- esac
- ;;
- ## Intel 386 machines where we don't care about the manufacturer.
- i[3456]86-*-* )
- case "${canonical}" in
- *-darwin* ) opsys=darwin ;;
- *-mingw* )
- opsys=mingw32
- # MinGW overrides and adds some system headers in nt/inc.
- GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
- ;;
- *-sysv4.2uw* ) opsys=unixware ;;
- *-sysv5uw* ) opsys=unixware ;;
- *-sysv5OpenUNIX* ) opsys=unixware ;;
- ## Otherwise, we'll fall through to the generic opsys code at the bottom.
- esac
- ;;
- # MinGW64
- x86_64-*-* )
- case "${canonical}" in
- *-mingw* )
- opsys=mingw32
- # MinGW overrides and adds some system headers in nt/inc.
- GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
- ;;
- ## Otherwise, we'll fall through to the generic opsys code at the bottom.
- esac
- ;;
- * )
- unported=yes
- ;;
- esac
- ### If the code above didn't choose an operating system, just choose
- ### an operating system based on the configuration name. You really
- ### only want to use this when you have no idea what the right
- ### operating system is; if you know what operating systems a machine
- ### runs, it's cleaner to make it explicit in the case statement
- ### above.
- if test x"${opsys}" = x; then
- case "${canonical}" in
- *-gnu* ) opsys=gnu ;;
- * )
- unported=yes
- ;;
- esac
- fi
- ]
- dnl quotation ends
- if test $unported = yes; then
- AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
- If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
- Check `etc/MACHINES' for recognized configuration names.])
- fi
- #### Choose a compiler.
- dnl Don't bother to test for C89.
- AC_DEFUN([_AC_PROG_CC_C89], [$2])
- dnl Sets GCC=yes if using gcc.
- AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"])
- if test -n "$XCRUN"; then
- AC_CHECK_PROGS(AR, [ar "$XCRUN ar"])
- test -n "$AR" && export AR
- fi
- dnl Emacs needs C99 or later.
- gl_PROG_CC_C99
- AM_PROG_CC_C_O
- if test x$GCC = xyes; then
- test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
- else
- test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
- fi
- dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the
- dnl alternative to lib/gnulib.mk, so as to avoid generating header files
- dnl that clash with MinGW.
- AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" = "xmingw32"])
- # Avoid gnulib's tests for -lcrypto, so that there's no static dependency on it.
- AC_DEFUN([gl_CRYPTO_CHECK])
- # Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW,
- # as we don't use them.
- AC_DEFUN([gl_FCNTL_O_FLAGS])
- # Initialize gnulib right after choosing the compiler.
- dnl Amongst other things, this sets AR and ARFLAGS.
- gl_EARLY
- if test "$ac_test_CFLAGS" != set; then
- # It's helpful to have C macros available to GDB, so prefer -g3 to -g
- # if -g3 works and the user does not specify CFLAGS.
- # This test must follow gl_EARLY; otherwise AC_LINK_IFELSE complains.
- case $CFLAGS in
- '-g')
- emacs_g3_CFLAGS='-g3';;
- '-g -O2')
- emacs_g3_CFLAGS='-g3 -O2';;
- *)
- emacs_g3_CFLAGS='';;
- esac
- if test -n "$emacs_g3_CFLAGS"; then
- emacs_save_CFLAGS=$CFLAGS
- CFLAGS=$emacs_g3_CFLAGS
- AC_CACHE_CHECK([whether $CC accepts $emacs_g3_CFLAGS],
- [emacs_cv_prog_cc_g3],
- [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
- [emacs_cv_prog_cc_g3=yes],
- [emacs_cv_prog_cc_g3=no])])
- if test $emacs_cv_prog_cc_g3 != yes; then
- CFLAGS=$emacs_save_CFLAGS
- fi
- if test $opsys = mingw32; then
- CFLAGS="$CFLAGS -gdwarf-2"
- fi
- fi
- case $CFLAGS in
- *-O*) ;;
- *)
- # No optimization flag was inferred for this non-GCC compiler.
- # Try -O. This is needed for xlc on AIX; see Bug#14258.
- emacs_save_CFLAGS=$CFLAGS
- test -z "$CFLAGS" || CFLAGS="$CFLAGS "
- CFLAGS=${CFLAGS}-O
- AC_CACHE_CHECK([whether $CC accepts -O],
- [emacs_cv_prog_cc_o],
- [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
- [emacs_cv_prog_cc_o=yes],
- [emacs_cv_prog_cc_o=no])])
- if test $emacs_cv_prog_cc_o != yes; then
- CFLAGS=$emacs_save_CFLAGS
- fi ;;
- esac
- fi
- AC_ARG_ENABLE([gcc-warnings],
- [AS_HELP_STRING([--enable-gcc-warnings],
- [turn on lots of GCC warnings/errors. This is intended for
- developers, and may generate false alarms when used
- with older or non-GNU development tools.])],
- [case $enableval in
- yes|no) ;;
- *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
- esac
- gl_gcc_warnings=$enableval],
- [gl_gcc_warnings=no]
- )
- # clang is unduly picky about some things.
- AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[
- #ifndef __clang__
- error "not clang";
- #endif
- ]])],
- [emacs_cv_clang=yes],
- [emacs_cv_clang=no])])
- # When compiling with GCC, prefer -isystem to -I when including system
- # include files, to avoid generating useless diagnostics for the files.
- if test "$gl_gcc_warnings" != yes; then
- isystem='-I'
- if test "$emacs_cv_clang" = yes
- then
- # Turn off some warnings if supported.
- gl_WARN_ADD([-Wno-switch])
- gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
- gl_WARN_ADD([-Wno-pointer-sign])
- gl_WARN_ADD([-Wno-string-plus-int])
- fi
- else
- isystem='-isystem '
- # This, $nw, is the list of warnings we disable.
- nw=
- case $with_x_toolkit in
- lucid | athena | motif)
- # Old toolkits mishandle 'const'.
- nw="$nw -Wwrite-strings"
- ;;
- *)
- gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
- ;;
- esac
- AC_SUBST([WERROR_CFLAGS])
- nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
- nw="$nw -Woverlength-strings" # Not a problem these days
- nw="$nw -Wformat-nonliteral" # we do this a lot
- nw="$nw -Wvla" # Emacs uses <vla.h>.
- nw="$nw -Wswitch-default" # Too many warnings for now
- nw="$nw -Winline" # OK to ignore 'inline'
- nw="$nw -Wjump-misses-init" # We sometimes safely jump over init.
- nw="$nw -Wstrict-overflow" # OK to optimize assuming that
- # signed overflow has undefined behavior
- nw="$nw -Wsync-nand" # irrelevant here, and provokes ObjC warning
- nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
- nw="$nw -Wbad-function-cast" # These casts are no worse than others.
- # Emacs doesn't care about shadowing; see
- # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
- nw="$nw -Wshadow"
- # Emacs's use of alloca inhibits protecting the stack.
- nw="$nw -Wstack-protector"
- # Emacs's use of partly-pure functions such as CHECK_TYPE make this
- # option problematic.
- nw="$nw -Wsuggest-attribute=pure"
- # This part is merely for shortening the command line,
- # since -Wno-FOO needs to be added below regardless.
- nw="$nw -Wmissing-field-initializers"
- nw="$nw -Wswitch"
- nw="$nw -Wtype-limits"
- nw="$nw -Wunused-parameter"
- if test $emacs_cv_clang = yes; then
- nw="$nw -Wcast-align"
- fi
- gl_MANYWARN_ALL_GCC([ws])
- gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
- for w in $ws; do
- gl_WARN_ADD([$w])
- done
- gl_WARN_ADD([-Wredundant-decls]) # Prefer this, as we don't use Bison.
- gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
- gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now
- gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now
- gl_WARN_ADD([-Wno-switch]) # Too many warnings for now
- gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
- gl_WARN_ADD([-Wno-format-nonliteral])
- # More things that clang is unduly picky about.
- if test $emacs_cv_clang = yes; then
- gl_WARN_ADD([-Wno-format-extra-args])
- gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
- gl_WARN_ADD([-Wno-unused-command-line-argument])
- gl_WARN_ADD([-Wno-unused-value])
- fi
- AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
- AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
- AH_VERBATIM([GNULIB_PORTCHECK_FORTIFY_SOURCE],
- [/* Enable compile-time and run-time bounds-checking, and some warnings,
- without upsetting glibc 2.15+. */
- #if (defined GNULIB_PORTCHECK && !defined _FORTIFY_SOURCE \
- && defined __OPTIMIZE__ && __OPTIMIZE__)
- # define _FORTIFY_SOURCE 2
- #endif
- ])
- # We use a slightly smaller set of warning options for lib/.
- # Remove the following and save the result in GNULIB_WARN_CFLAGS.
- nw=
- nw="$nw -Wunused-macros"
- gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
- AC_SUBST([GNULIB_WARN_CFLAGS])
- fi
- edit_cflags="
- s,///*,/,g
- s/^/ /
- s/ -I/ $isystem/g
- s/^ //
- "
- AC_ARG_ENABLE(link-time-optimization,
- [AS_HELP_STRING([--enable-link-time-optimization],
- [build emacs with link-time optimization.
- This requires GCC 4.5.0 or later, or clang.
- (Note that clang support is experimental - see INSTALL.)
- It also makes Emacs harder to debug, and when we tried it
- with GCC 4.9.0 x86-64 it made Emacs slower, so it's not
- recommended for typical use.])],
- if test "${enableval}" != "no"; then
- ac_lto_supported=no
- if test $emacs_cv_clang = yes; then
- AC_MSG_CHECKING([whether link-time optimization is supported by clang])
- GOLD_PLUGIN=`$CC -print-file-name=LLVMgold.so 2>/dev/null`
- if test -x "$GOLD_PLUGIN"; then
- LTO="-flto"
- fi
- elif test x$GCC = xyes; then
- AC_MSG_CHECKING([whether link-time optimization is supported by gcc])
- CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
- if test x$CPUS != x; then
- LTO="-flto=$CPUS"
- else
- LTO="-flto"
- fi
- else
- AC_MSG_ERROR([Link-time optimization is not supported with your compiler.])
- fi
- if test -z "$LTO"; then
- ac_lto_supported=no
- else
- old_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $LTO"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
- [ac_lto_supported=yes], [ac_lto_supported=no])
- CFLAGS="$old_CFLAGS"
- fi
- AC_MSG_RESULT([$ac_lto_supported])
- if test "$ac_lto_supported" = "yes"; then
- CFLAGS="$CFLAGS $LTO"
- if test x$emacs_cv_clang = xyes; then
- AC_MSG_WARN([Please read INSTALL before using link-time optimization with clang])
- # WARNING: 'ar --plugin ...' doesn't work without
- # command, so plugin name is appended to ARFLAGS.
- ARFLAGS="cru --plugin $GOLD_PLUGIN"
- RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
- else
- dnl The following is needed for GCC 4.9.0. The GCC 4.9.0 release notes
- dnl suggest that instead of -ffat-lto-objects we should use gcc-ar and
- dnl gcc-ranlib in place of ar and ranlib, but gcc-ar makes /usr/bin/ar
- dnl dump core on Fedora 20, so play it safe for now.
- gl_COMPILER_OPTION_IF([-ffat-lto-objects],
- [CFLAGS="$CFLAGS -ffat-lto-objects"])
- fi
- fi
- fi)
- dnl Port to Automake 1.11.
- dnl This section can be removed once we assume Automake 1.14 or later.
- : ${AM_DEFAULT_VERBOSITY=1}
- : ${AM_V=$AM_DEFAULT_VERBOSITY}
- : ${AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY}
- AC_SUBST([AM_V])
- AM_SUBST_NOTMAKE([AM_V])
- AC_SUBST([AM_DEFAULT_V])
- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
- AC_SUBST([AM_DEFAULT_VERBOSITY])
- dnl Some other nice autoconf tests.
- dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
- dnl AC_PROG_INSTALL
- dnl AC_PROG_MKDIR_P
- dnl if test "x$RANLIB" = x; then
- dnl AC_PROG_RANLIB
- dnl fi
- dnl Sadly, AC_PROG_LN_S is too restrictive. It also tests whether links
- dnl can be made to directories. This is not relevant for our usage, and
- dnl excludes some cases that work fine for us. Eg MS Windows or files
- dnl hosted on AFS, both examples where simple links work, but links to
- dnl directories fail. We use a cut-down version instead.
- dnl AC_PROG_LN_S
- AC_MSG_CHECKING([whether ln -s works for files in the same directory])
- rm -f conf$$ conf$$.file
- LN_S_FILEONLY='cp -p'
- dnl On MinGW, ensure we will call the MSYS /bin/ln.exe, not some
- dnl random program in the current directory.
- if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- if test "$opsys" = "mingw32"; then
- LN_S_FILEONLY='/bin/ln -s'
- else
- LN_S_FILEONLY='ln -s'
- fi
- elif ln conf$$.file conf$$ 2>/dev/null; then
- if test "$opsys" = "mingw32"; then
- LN_S_FILEONLY=/bin/ln
- else
- LN_S_FILEONLY=ln
- fi
- fi
- fi
- rm -f conf$$ conf$$.file
- if test "$LN_S_FILEONLY" = "ln -s"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no, using $LN_S_FILEONLY])
- fi
- AC_SUBST(LN_S_FILEONLY)
- dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
- dnl doesn't support links to directories, as in "ln file dir". But that
- dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
- dnl executables at "make install" time.
- dnl See http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
- dnl for more details.
- if test "$opsys" = "mingw32"; then
- LN_S="/bin/ln"
- fi
- dnl On some Debian versions, "install-info" prints irritating messages
- dnl "This is not dpkg install-info anymore, but GNU install-info"
- dnl if called via an absolute file name.
- dnl Use the entirely-identical-but-quieter ginstall-info instead if present.
- dnl Sadly some people may have an old ginstall-info installed on
- dnl non-Debian systems, so we can't use this.
- dnl AC_PATH_PROGS(INSTALL_INFO, [ginstall-info install-info], :,
- dnl $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
- AC_PATH_PROG(INSTALL_INFO, install-info, :,
- $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
- dnl Don't use GZIP, which is used by gzip for additional parameters.
- AC_PATH_PROG(GZIP_PROG, gzip)
- test $with_compress_install != yes && test -n "$GZIP_PROG" && \
- GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
- if test $opsys = gnu-linux; then
- AC_PATH_PROG(PAXCTL, paxctl,,
- [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
- if test "X$PAXCTL" != X; then
- AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
- [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
- else AC_MSG_RESULT(no); PAXCTL=""; fi])
- fi
- if test "${SETFATTR+set}" != set; then
- AC_CACHE_CHECK([for setfattr],
- [emacs_cv_prog_setfattr],
- [touch conftest.tmp
- if (setfattr -n user.pax.flags conftest.tmp) >/dev/null 2>&1; then
- emacs_cv_prog_setfattr=yes
- else
- emacs_cv_prog_setfattr=no
- fi])
- if test "$emacs_cv_prog_setfattr" = yes; then
- SETFATTR=setfattr
- else
- SETFATTR=
- fi
- rm -f conftest.tmp
- AC_SUBST([SETFATTR])
- fi
- fi
- ## Need makeinfo >= 4.7 (?) to build the manuals.
- if test "$MAKEINFO" != "no"; then
- if test "$MAKEINFO" = "${am_missing_run}makeinfo"; then
- MAKEINFO=makeinfo
- fi
- case `($MAKEINFO --version) 2>/dev/null` in
- *' (GNU texinfo) '4.[[7-9]]* | \
- *' (GNU texinfo) '4.[[1-9][0-9]]* | \
- *' (GNU texinfo) '[[5-9]]* | \
- *' (GNU texinfo) '[[1-9][0-9]]* ) ;;
- *) MAKEINFO=no;;
- esac
- fi
- ## Makeinfo is unusual. For a released Emacs, the manuals are
- ## pre-built, and not deleted by the normal clean rules. makeinfo is
- ## therefore in the category of "special tools" not normally required, which
- ## configure does not have to check for (eg autoconf itself).
- ## In a repository checkout on the other hand, the manuals are not included.
- ## So makeinfo is a requirement to build from the repository, and configure
- ## should test for it as it does for any other build requirement.
- ## We use the presence of $srcdir/info/emacs to distinguish a release,
- ## with pre-built manuals, from a repository checkout.
- HAVE_MAKEINFO=yes
- if test "$MAKEINFO" = "no"; then
- MAKEINFO=makeinfo
- if test "x${with_makeinfo}" = "xno"; then
- HAVE_MAKEINFO=no
- elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
- AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
- source tree does not seem to have pre-built manuals in the `info' directory.
- Either install a suitable version of makeinfo, or re-run configure
- with the `--without-makeinfo' option to build without the manuals.] )
- fi
- fi
- AC_SUBST(HAVE_MAKEINFO)
- if test $opsys = mingw32; then
- DOCMISC_W32=efaq-w32
- else
- DOCMISC_W32=
- fi
- AC_SUBST(DOCMISC_W32)
- dnl Add our options to ac_link now, after it is set up.
- if test x$GCC = xyes; then
- test "x$GCC_LINK_TEST_OPTIONS" != x && \
- ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
- else
- test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
- ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
- fi
- dnl We need -znocombreloc if we're using a relatively recent GNU ld.
- dnl If we can link with the flag, it shouldn't do any harm anyhow.
- dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
- dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
- dnl if not built to support GNU ld.
- dnl For a long time, -znocombreloc was added to LDFLAGS rather than
- dnl LD_SWITCH_SYSTEM_TEMACS. That is:
- dnl * inappropriate, as LDFLAGS is a user option but this is essential.
- dnl Eg "make LDFLAGS=... all" could run into problems,
- dnl http://bugs.debian.org/684788
- dnl * unnecessary, since temacs is the only thing that actually needs it.
- dnl Indeed this is where it was originally, prior to:
- dnl http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-03/msg00170.html
- late_LDFLAGS="$LDFLAGS"
- if test x$GCC = xyes; then
- LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
- else
- LDFLAGS_NOCOMBRELOC="-znocombreloc"
- fi
- LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
- AC_MSG_CHECKING([for -znocombreloc])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
- [AC_MSG_RESULT(yes)],
- LDFLAGS_NOCOMBRELOC=
- [AC_MSG_RESULT(no)])
- LDFLAGS="$late_LDFLAGS"
- AC_CACHE_CHECK([whether addresses are sanitized],
- [emacs_cv_sanitize_address],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#ifndef __has_feature
- #define __has_feature(f) 0
- #endif
- #if defined __SANITIZE_ADDRESS__ || __has_feature (address_sanitizer)
- #else
- error "Addresses are not sanitized.";
- #endif
- ]])],
- [emacs_cv_sanitize_address=yes],
- [emacs_cv_sanitize_address=no])])
- dnl The function dump-emacs will not be defined and temacs will do
- dnl (load "loadup") automatically unless told otherwise.
- test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
- case "$opsys" in
- your-opsys-here) CANNOT_DUMP=yes ;;
- esac
- if test "$CANNOT_DUMP" = "yes"; then
- AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
- elif test "$emacs_cv_sanitize_address" = yes; then
- AC_MSG_WARN([[Addresses are sanitized; suggest CANNOT_DUMP=yes]])
- fi
- AC_SUBST(CANNOT_DUMP)
- UNEXEC_OBJ=unexelf.o
- case "$opsys" in
- # MSDOS uses unexcoff.o
- aix4-2)
- UNEXEC_OBJ=unexaix.o
- ;;
- cygwin)
- UNEXEC_OBJ=unexcw.o
- ;;
- darwin)
- UNEXEC_OBJ=unexmacosx.o
- ;;
- hpux10-20 | hpux11)
- UNEXEC_OBJ=unexhp9k800.o
- ;;
- mingw32)
- UNEXEC_OBJ=unexw32.o
- ;;
- sol2-10)
- # Use the Solaris dldump() function, called from unexsol.c, to dump
- # emacs, instead of the generic ELF dump code found in unexelf.c.
- # The resulting binary has a complete symbol table, and is better
- # for debugging and other observability tools (debuggers, pstack, etc).
- #
- # If you encounter a problem using dldump(), please consider sending
- # a message to the OpenSolaris tools-linking mailing list:
- # http://mail.opensolaris.org/mailman/listinfo/tools-linking
- #
- # It is likely that dldump() works with older Solaris too, but this has
- # not been tested, so for now this change is for Solaris 10 or newer.
- UNEXEC_OBJ=unexsol.o
- ;;
- esac
- LD_SWITCH_SYSTEM=
- case "$opsys" in
- freebsd|dragonfly)
- ## Let `ld' find image libs and similar things in /usr/local/lib.
- ## The system compiler, GCC, has apparently been modified to not
- ## look there, contrary to what a stock GCC would do.
- ### It's not our place to do this. See bug#10313#17.
- ### LD_SWITCH_SYSTEM=-L/usr/local/lib
- :
- ;;
- gnu-linux)
- ## cpp test was "ifdef __mips__", but presumably this is equivalent...
- case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
- ;;
- netbsd)
- ### It's not our place to do this. See bug#10313#17.
- ### LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
- :
- ;;
- openbsd)
- ## Han Boetes <han@boetes.org> says this is necessary,
- ## otherwise Emacs dumps core on elf systems.
- LD_SWITCH_SYSTEM="-Z"
- ;;
- esac
- AC_SUBST(LD_SWITCH_SYSTEM)
- ac_link="$ac_link $LD_SWITCH_SYSTEM"
- ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
- ## which has not been defined yet. When this was handled with cpp,
- ## it was expanded to null when configure sourced the s/*.h file.
- ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
- ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
- ## (or somesuch), but because it is supposed to go at the _front_
- ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
- ## Compare with the gnu-linux case below, which added to the end
- ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
- ## LD_SWITCH_SYSTEM_TEMACS.
- case "$opsys" in
- netbsd|openbsd)
- LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
- esac
- C_SWITCH_MACHINE=
- case $canonical in
- alpha*)
- AC_CHECK_DECL([__ELF__])
- if test "$ac_cv_have_decl___ELF__" = "yes"; then
- ## With ELF, make sure that all common symbols get allocated to in the
- ## data section. Otherwise, the dump of temacs may miss variables in
- ## the shared library that have been initialized. For example, with
- ## GNU libc, __malloc_initialized would normally be resolved to the
- ## shared library's .bss section, which is fatal.
- if test "x$GCC" = "xyes"; then
- C_SWITCH_MACHINE="-fno-common"
- else
- AC_MSG_ERROR([Non-GCC compilers are not supported.])
- fi
- else
- dnl This was the unexalpha.c case. Removed in 24.1, 2010-07-24,
- dnl albeit under the mistaken assumption that said file
- dnl was no longer used.
- AC_MSG_ERROR([Non-ELF systems are not supported since Emacs 24.1.])
- fi
- ;;
- esac
- AC_SUBST(C_SWITCH_MACHINE)
- AC_SUBST(UNEXEC_OBJ)
- C_SWITCH_SYSTEM=
- ## Some programs in src produce warnings saying certain subprograms
- ## are too complex and need a MAXMEM value greater than 2000 for
- ## additional optimization. --nils@exp-math.uni-essen.de
- test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
- C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
- if test "$opsys" = "mingw32"; then
- case "$canonical" in
- x86_64-*-mingw*) C_SWITCH_SYSTEM="-mtune=generic" ;;
- *) C_SWITCH_SYSTEM="-mtune=pentium4" ;;
- esac
- fi
- ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
- ## It is redundant in glibc2, since we define _GNU_SOURCE.
- AC_SUBST(C_SWITCH_SYSTEM)
- LIBS_SYSTEM=
- case "$opsys" in
- ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
- aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
- freebsd|dragonfly) LIBS_SYSTEM="-lutil" ;;
- hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
- sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
- ## Motif needs -lgen.
- unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
- esac
- AC_SUBST(LIBS_SYSTEM)
- ### Make sure subsequent tests use flags consistent with the build flags.
- if test x"${OVERRIDE_CPPFLAGS}" != x; then
- CPPFLAGS="${OVERRIDE_CPPFLAGS}"
- else
- CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
- fi
- # Suppress obsolescent Autoconf test for size_t; Emacs assumes C99 or better.
- AC_DEFUN([AC_TYPE_SIZE_T])
- # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
- AC_DEFUN([AC_TYPE_UID_T])
- # sqrt and other floating-point functions such as fmod and frexp
- # are found in -lm on many systems.
- OLD_LIBS=$LIBS
- AC_SEARCH_LIBS([sqrt], [m])
- if test "X$LIBS" = "X$OLD_LIBS"; then
- LIB_MATH=
- else
- LIB_MATH=$ac_cv_search_sqrt
- fi
- LIBS=$OLD_LIBS
- dnl Current possibilities handled by sed (aix4-2 -> aix,
- dnl gnu-linux -> gnu/linux, etc.):
- dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
- dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
- SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
- case $opsys in
- cygwin )
- LIB_MATH=
- ;;
- darwin )
- ## Adding -lm confuses the dynamic linker, so omit it.
- LIB_MATH=
- ;;
- freebsd | dragonfly )
- SYSTEM_TYPE=berkeley-unix
- ;;
- gnu-linux | gnu-kfreebsd )
- ;;
- hpux10-20 | hpux11 )
- ;;
- mingw32 )
- LIB_MATH=
- SYSTEM_TYPE=windows-nt
- ;;
- dnl NB this may be adjusted below.
- netbsd | openbsd )
- SYSTEM_TYPE=berkeley-unix
- ;;
- sol2* | unixware )
- SYSTEM_TYPE=usg-unix-v
- ;;
- esac
- AC_SUBST(LIB_MATH)
- AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
- [The type of system you are compiling for; sets `system-type'.])
- pre_PKG_CONFIG_CFLAGS=$CFLAGS
- pre_PKG_CONFIG_LIBS=$LIBS
- PKG_PROG_PKG_CONFIG(0.9.0)
- dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4)
- dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4,
- dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page --
- dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings.
- dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that
- dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no
- dnl actions.
- AC_DEFUN([EMACS_CHECK_MODULES],
- [PKG_CHECK_MODULES([$1], [$2],
- [$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
- m4_default([$3], [HAVE_$1=yes])],
- [m4_default([$4], [HAVE_$1=no])])])
- HAVE_SOUND=no
- if test "${with_sound}" != "no"; then
- # Sound support for GNU/Linux, the free BSDs, MinGW, and Cygwin.
- AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h mmsystem.h],
- have_sound_header=yes, [], [
- #ifdef __MINGW32__
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #endif
- ])
- test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \
- AC_MSG_ERROR([OSS sound support requested but not found.])
- if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then
- # Emulation library used on NetBSD.
- AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
- test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \
- AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.])
- dnl FIXME? If we did find ossaudio, should we set with_sound=bsd-ossaudio?
- dnl Traditionally, we go on to check for alsa too. Does that make sense?
- fi
- AC_SUBST(LIBSOUND)
- if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
- ALSA_REQUIRED=1.0.0
- ALSA_MODULES="alsa >= $ALSA_REQUIRED"
- EMACS_CHECK_MODULES([ALSA], [$ALSA_MODULES])
- if test $HAVE_ALSA = yes; then
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LIBS="$LIBS"
- CFLAGS="$ALSA_CFLAGS $CFLAGS"
- LIBS="$ALSA_LIBS $LIBS"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
- emacs_alsa_normal=yes,
- emacs_alsa_normal=no)
- if test "$emacs_alsa_normal" != yes; then
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
- [[snd_lib_error_set_handler (0);]])],
- emacs_alsa_subdir=yes,
- emacs_alsa_subdir=no)
- if test "$emacs_alsa_subdir" != yes; then
- AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
- fi
- ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
- fi
- CFLAGS="$SAVE_CFLAGS"
- LIBS="$SAVE_LIBS"
- LIBSOUND="$LIBSOUND $ALSA_LIBS"
- CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
- AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
- elif test "${with_sound}" = "alsa"; then
- AC_MSG_ERROR([ALSA sound support requested but not found.])
- fi
- fi dnl with_sound = alsa|yes
- dnl Define HAVE_SOUND if we have sound support. We know it works and
- dnl compiles only on the specified platforms. For others, it
- dnl probably doesn't make sense to try.
- dnl FIXME So surely we should bypass this whole section if not using
- dnl one of these platforms?
- if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
- case "$opsys" in
- dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
- dnl Adjust the --with-sound help text if you change this.
- gnu-linux|freebsd|netbsd|mingw32|cygwin)
- AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
- HAVE_SOUND=yes
- ;;
- esac
- fi
- AC_SUBST(CFLAGS_SOUND)
- fi
- dnl checks for header files
- AC_CHECK_HEADERS_ONCE(
- sys/systeminfo.h
- sys/sysinfo.h
- coff.h pty.h
- sys/resource.h
- sys/utsname.h pwd.h utmp.h util.h)
- AC_MSG_CHECKING(if personality LINUX32 can be set)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
- emacs_cv_personality_linux32=yes,
- emacs_cv_personality_linux32=no)
- AC_MSG_RESULT($emacs_cv_personality_linux32)
- if test $emacs_cv_personality_linux32 = yes; then
- AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
- [Define to 1 if personality LINUX32 can be set.])
- fi
- # Note that Solaris has sys/sysinfo.h which defines struct
- # sysinfo as well. To make sure that we're using GNU/Linux
- # sysinfo, we explicitly set one of its fields.
- if test "$ac_cv_header_sys_sysinfo_h" = yes; then
- AC_MSG_CHECKING([if Linux sysinfo may be used])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]],
- [[struct sysinfo si;
- si.totalram = 0;
- sysinfo (&si)]])],
- emacs_cv_linux_sysinfo=yes, emacs_cv_linux_sysinfo=no)
- AC_MSG_RESULT($emacs_cv_linux_sysinfo)
- if test $emacs_cv_linux_sysinfo = yes; then
- AC_DEFINE([HAVE_LINUX_SYSINFO], 1, [Define to 1 if you have Linux sysinfo function.])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]],
- [[struct sysinfo si; return si.mem_unit]])],
- AC_DEFINE(LINUX_SYSINFO_UNIT, 1,
- [Define to 1 if Linux sysinfo sizes are in multiples of mem_unit bytes.]))
- fi
- fi
- dnl On Solaris 8 there's a compilation warning for term.h because
- dnl it doesn't define `bool'.
- AC_CHECK_HEADERS(term.h, , , -)
- AC_HEADER_TIME
- AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
- ]])
- if test $ac_cv_have_decl_sys_siglist != yes; then
- # For Tru64, at least:
- AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
- ]])
- fi
- AC_HEADER_SYS_WAIT
- AC_CHECK_HEADERS_ONCE(sys/socket.h)
- AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
- #if HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif])
- AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
- #if HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif])
- AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
- #if HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif])
- dnl checks for structure members
- AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
- struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
- struct ifreq.ifr_addr,
- struct ifreq.ifr_addr.sa_len], , ,
- [AC_INCLUDES_DEFAULT
- #if HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #if HAVE_NET_IF_H
- #include <net/if.h>
- #endif])
- dnl Check for endianness.
- dnl AC_C_BIGENDIAN is done by gnulib.
- dnl check for Make feature
- DEPFLAGS=
- MKDEPDIR=":"
- deps_frag=deps.mk
- dnl check if we have GCC and autodepend is on.
- if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
- AC_MSG_CHECKING([whether gcc understands -MMD -MF])
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
- CFLAGS="$SAVE_CFLAGS"
- test -f deps.d || ac_enable_autodepend=no
- rm -rf deps.d
- AC_MSG_RESULT([$ac_enable_autodepend])
- if test $ac_enable_autodepend = yes; then
- DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
- ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
- MKDEPDIR='${MKDIR_P} ${DEPDIR}'
- deps_frag=autodeps.mk
- fi
- fi
- lwlib_deps_frag=$srcdir/lwlib/$deps_frag
- oldxmenu_deps_frag=$srcdir/oldXMenu/$deps_frag
- deps_frag=$srcdir/src/$deps_frag
- AC_SUBST(MKDEPDIR)
- AC_SUBST(DEPFLAGS)
- AC_SUBST_FILE(deps_frag)
- AC_SUBST_FILE(lwlib_deps_frag)
- AC_SUBST_FILE(oldxmenu_deps_frag)
- lisp_frag=$srcdir/src/lisp.mk
- AC_SUBST_FILE(lisp_frag)
- dnl checks for operating system services
- AC_SYS_LONG_FILE_NAMES
- #### Choose a window system.
- ## We leave window_system equal to none if
- ## we end up building without one. Any new window system should
- ## set window_system to an appropriate value and add objects to
- ## window-system-specific substs.
- window_system=none
- AC_PATH_X
- if test "$no_x" != yes; then
- window_system=x11
- fi
- LD_SWITCH_X_SITE_RPATH=
- if test "${x_libraries}" != NONE; then
- if test -n "${x_libraries}"; then
- LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
- LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
- fi
- x_default_search_path=""
- x_search_path=${x_libraries}
- if test -z "${x_search_path}"; then
- x_search_path=/usr/lib
- fi
- for x_library in `echo ${x_search_path}: | \
- sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
- x_search_path="\
- ${x_library}/X11/%L/%T/%N%C%S:\
- ${x_library}/X11/%l/%T/%N%C%S:\
- ${x_library}/X11/%T/%N%C%S:\
- ${x_library}/X11/%L/%T/%N%S:\
- ${x_library}/X11/%l/%T/%N%S:\
- ${x_library}/X11/%T/%N%S"
- if test x"${x_default_search_path}" = x; then
- x_default_search_path=${x_search_path}
- else
- x_default_search_path="${x_search_path}:${x_default_search_path}"
- fi
- done
- fi
- AC_SUBST(LD_SWITCH_X_SITE_RPATH)
- if test "${x_includes}" != NONE && test -n "${x_includes}"; then
- C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
- fi
- if test x"${x_includes}" = x; then
- bitmapdir=/usr/include/X11/bitmaps
- else
- # accumulate include directories that have X11 bitmap subdirectories
- bmd_acc="dummyval"
- for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
- if test -d "${bmd}/X11/bitmaps"; then
- bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
- fi
- if test -d "${bmd}/bitmaps"; then
- bmd_acc="${bmd_acc}:${bmd}/bitmaps"
- fi
- done
- if test ${bmd_acc} != "dummyval"; then
- bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
- fi
- fi
- HAVE_NS=no
- NS_IMPL_COCOA=no
- NS_IMPL_GNUSTEP=no
- tmp_CPPFLAGS="$CPPFLAGS"
- tmp_CFLAGS="$CFLAGS"
- CPPFLAGS="$CPPFLAGS -x objective-c"
- CFLAGS="$CFLAGS -x objective-c"
- GNU_OBJC_CFLAGS=
- LIBS_GNUSTEP=
- if test "${with_ns}" != no; then
- if test "${opsys}" = darwin; then
- NS_IMPL_COCOA=yes
- ns_appdir=`pwd`/nextstep/Emacs.app
- ns_appbindir=${ns_appdir}/Contents/MacOS
- ns_appresdir=${ns_appdir}/Contents/Resources
- ns_appsrc=Cocoa/Emacs.base
- ns_fontfile=macfont.o
- elif test -f $GNUSTEP_CONFIG_FILE; then
- NS_IMPL_GNUSTEP=yes
- ns_appdir=`pwd`/nextstep/Emacs.app
- ns_appbindir=${ns_appdir}
- ns_appresdir=${ns_appdir}/Resources
- ns_appsrc=GNUstep/Emacs.base
- ns_fontfile=nsfont.o
- dnl FIXME sourcing this several times in subshells seems inefficient.
- GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
- GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
- dnl I seemed to need these as well with GNUstep-startup 0.25.
- GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
- GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
- test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
- GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
- test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
- GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
- CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
- CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
- LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
- LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
- dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
- dnl If they had chosen to either define it or not, we could have
- dnl just used AC_CHECK_DECL here.
- AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
- emacs_cv_objc_exceptions,
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
- [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
- 1;
- #else
- fail;
- #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
- if test $emacs_cv_objc_exceptions = yes; then
- dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
- AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
- [Define if GNUstep uses ObjC exceptions.])
- GNU_OBJC_CFLAGS="-fobjc-exceptions"
- fi
- fi
- dnl This is only used while we test the NS headers, it gets reset below.
- CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
- AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
- [AC_MSG_ERROR([`--with-ns' was specified, but the include
- files are missing or cannot be compiled.])])
- macfont_file=""
- if test "${NS_IMPL_COCOA}" = "yes"; then
- AC_MSG_CHECKING([for OSX 10.6 or newer])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
- [
- #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
- #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
- ; /* OK */
- #else
- error "OSX 10.6 or newer required";
- #endif
- #endif
- ])],
- ns_osx_have_106=yes,
- ns_osx_have_106=no)
- AC_MSG_RESULT([$ns_osx_have_106])
- if test $ns_osx_have_106 = no; then
- AC_MSG_ERROR([`OSX 10.6 or newer is required']);
- fi
- fi
- fi
- AC_SUBST(LIBS_GNUSTEP)
- INSTALL_ARCH_INDEP_EXTRA=install-etc
- ns_self_contained=no
- NS_OBJ=
- NS_OBJC_OBJ=
- if test "${HAVE_NS}" = yes; then
- if test "$with_toolkit_scroll_bars" = "no"; then
- AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
- fi
- window_system=nextstep
- # set up packaging dirs
- if test "${EN_NS_SELF_CONTAINED}" = yes; then
- ns_self_contained=yes
- prefix=${ns_appresdir}
- exec_prefix=${ns_appbindir}
- dnl This one isn't really used, only archlibdir is.
- libexecdir="\${ns_appbindir}/libexec"
- archlibdir="\${ns_appbindir}/libexec"
- etcdocdir="\${ns_appresdir}/etc"
- etcdir="\${ns_appresdir}/etc"
- dnl FIXME maybe set datarootdir instead.
- dnl That would also get applications, icons, man.
- infodir="\${ns_appresdir}/info"
- mandir="\${ns_appresdir}/man"
- lispdir="\${ns_appresdir}/lisp"
- INSTALL_ARCH_INDEP_EXTRA=
- fi
- NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o $ns_fontfile"
- fi
- CFLAGS="$tmp_CFLAGS"
- CPPFLAGS="$tmp_CPPFLAGS"
- AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
- AC_SUBST(ns_self_contained)
- AC_SUBST(NS_OBJ)
- AC_SUBST(NS_OBJC_OBJ)
- HAVE_W32=no
- W32_OBJ=
- W32_LIBS=
- EMACSRES=
- CLIENTRES=
- CLIENTW=
- W32_RES_LINK=
- EMACS_MANIFEST=
- UPDATE_MANIFEST=
- if test "${with_w32}" != no; then
- case "${opsys}" in
- cygwin)
- AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
- [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
- cannot be found.])])
- ;;
- mingw32)
- ## Using --with-w32 with MinGW is a no-op, but we allow it.
- ;;
- *)
- AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin and MinGW32.])
- ;;
- esac
- fi
- if test "${opsys}" = "mingw32"; then
- AC_MSG_CHECKING([whether Windows API headers are recent enough])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <windows.h>
- #include <usp10.h>]],
- [[PIMAGE_NT_HEADERS pHeader;
- PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader)]])],
- [emacs_cv_w32api=yes
- HAVE_W32=yes],
- emacs_cv_w32api=no)
- AC_MSG_RESULT($emacs_cv_w32api)
- if test "${emacs_cv_w32api}" = "no"; then
- AC_MSG_ERROR([the Windows API headers are too old to support this build.])
- fi
- fi
- FIRSTFILE_OBJ=
- NTDIR=
- LIBS_ECLIENT=
- LIB_WSOCK32=
- NTLIB=
- CM_OBJ="cm.o"
- XARGS_LIMIT=
- if test "${HAVE_W32}" = "yes"; then
- AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
- AC_CHECK_TOOL(WINDRES, [windres],
- [AC_MSG_ERROR([No resource compiler found.])])
- W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
- W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
- EMACSRES="emacs.res"
- case "$canonical" in
- x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
- *) EMACS_MANIFEST="emacs-x86.manifest" ;;
- esac
- dnl Construct something of the form "24,4,0,0" with 4 components.
- comma_version=`echo "${PACKAGE_VERSION}.0.0" | sed -e 's/\./,/g' -e 's/^\([[^,]]*,[[^,]]*,[[^,]]*,[[^,]]*\).*/\1/'`
- comma_space_version=`echo "$comma_version" | sed 's/,/, /g'`
- AC_SUBST(comma_version)
- AC_SUBST(comma_space_version)
- AC_CONFIG_FILES([nt/emacs.rc nt/emacsclient.rc])
- if test "${opsys}" = "cygwin"; then
- W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
- W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
- # Tell the linker that emacs.res is an object (which we compile from
- # the rc file), not a linker script.
- W32_RES_LINK="-Wl,emacs.res"
- else
- UPDATE_MANIFEST=update-game-score.exe.manifest
- W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
- W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
- W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"
- W32_RES_LINK="\$(EMACSRES)"
- CLIENTRES="emacsclient.res"
- CLIENTW="emacsclientw\$(EXEEXT)"
- FIRSTFILE_OBJ=firstfile.o
- NTDIR=nt
- CM_OBJ=
- LIBS_ECLIENT="-lcomctl32"
- LIB_WSOCK32="-lwsock32"
- NTLIB="ntlib.$ac_objext"
- XARGS_LIMIT="-s 10000"
- fi
- fi
- AC_SUBST(W32_OBJ)
- AC_SUBST(W32_LIBS)
- AC_SUBST(EMACSRES)
- AC_SUBST(EMACS_MANIFEST)
- AC_SUBST(UPDATE_MANIFEST)
- AC_SUBST(CLIENTRES)
- AC_SUBST(CLIENTW)
- AC_SUBST(W32_RES_LINK)
- AC_SUBST(FIRSTFILE_OBJ)
- AC_SUBST(NTDIR)
- AC_SUBST(CM_OBJ)
- AC_SUBST(LIBS_ECLIENT)
- AC_SUBST(LIB_WSOCK32)
- AC_SUBST(NTLIB)
- AC_SUBST(XARGS_LIMIT)
- if test "${HAVE_W32}" = "yes"; then
- window_system=w32
- with_xft=no
- fi
- ## $window_system is now set to the window system we will
- ## ultimately use.
- if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then
- # Too many warnings for now.
- nw=
- nw="$nw -Wsuggest-attribute=const"
- nw="$nw -Wsuggest-attribute=noreturn"
- gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
- gl_WARN_ADD([-Wno-unused-variable])
- gl_WARN_ADD([-Wno-unused-but-set-variable])
- gl_WARN_ADD([-Wno-unused-but-set-parameter])
- fi
- term_header=
- HAVE_X_WINDOWS=no
- HAVE_X11=no
- USE_X_TOOLKIT=none
- case "${window_system}" in
- x11 )
- HAVE_X_WINDOWS=yes
- HAVE_X11=yes
- term_header=xterm.h
- case "${with_x_toolkit}" in
- athena | lucid ) USE_X_TOOLKIT=LUCID ;;
- motif ) USE_X_TOOLKIT=MOTIF ;;
- gtk ) with_gtk=yes
- term_header=gtkutil.h
- dnl Don't set this for GTK. A lot of tests below assumes Xt when
- dnl USE_X_TOOLKIT is set.
- USE_X_TOOLKIT=none ;;
- gtk2 ) with_gtk2=yes
- term_header=gtkutil.h
- USE_X_TOOLKIT=none ;;
- gtk3 ) with_gtk3=yes
- term_header=gtkutil.h
- USE_X_TOOLKIT=none ;;
- no ) USE_X_TOOLKIT=none ;;
- dnl If user did not say whether to use a toolkit, make this decision later:
- dnl use the toolkit if we have gtk, or X11R5 or newer.
- * ) USE_X_TOOLKIT=maybe ;;
- esac
- ;;
- nextstep )
- term_header=nsterm.h
- ;;
- w32 )
- term_header=w32term.h
- ;;
- esac
- if test "$window_system" = none && test "X$with_x" != "Xno"; then
- AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
- if test "$HAVE_XSERVER" = true ||
- test -n "$DISPLAY" ||
- test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
- AC_MSG_ERROR([You seem to be running X, but no X development libraries
- were found. You should install the relevant development files for X
- and for the toolkit you want, such as Gtk+ or Motif. Also make
- sure you have development files for image handling, i.e.
- tiff, gif, jpeg, png and xpm.
- If you are sure you want Emacs compiled without X window support, pass
- --without-x
- to configure.])
- fi
- fi
- # Does the opsystem file prohibit the use of the GNU malloc?
- # Assume not, until told otherwise.
- GNU_MALLOC=yes
- AC_CACHE_CHECK(
- [whether malloc is Doug Lea style],
- [emacs_cv_var_doug_lea_malloc],
- [emacs_cv_var_doug_lea_malloc=no
- dnl Hooks do not work with address sanitization.
- if test "$emacs_cv_sanitize_address" != yes; then
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <malloc.h>
- static void hook (void) {}]],
- [[malloc_set_state (malloc_get_state ());
- __after_morecore_hook = hook;
- __malloc_initialize_hook = hook;]])],
- [emacs_cv_var_doug_lea_malloc=yes])])
- fi
- doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
- system_malloc=$emacs_cv_sanitize_address
- hybrid_malloc=
- case "$opsys" in
- ## darwin ld insists on the use of malloc routines in the System framework.
- darwin|mingw32|sol2-10) system_malloc=yes ;;
- cygwin) hybrid_malloc=yes;;
- esac
- GMALLOC_OBJ=
- if test "${system_malloc}" = "yes"; then
- AC_DEFINE([SYSTEM_MALLOC], 1,
- [Define to 1 to use the system memory allocator, even if it is not
- Doug Lea style.])
- GNU_MALLOC=no
- GNU_MALLOC_reason="
- (The GNU allocators don't work with this system configuration.)"
- VMLIMIT_OBJ=
- elif test "$hybrid_malloc" = yes; then
- AC_DEFINE(HYBRID_MALLOC, 1,
- [Define to use gmalloc before dumping and the system malloc after.])
- GNU_MALLOC=
- GNU_MALLOC_reason="only before dumping"
- GMALLOC_OBJ=gmalloc.o
- VMLIMIT_OBJ=
- else
- test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
- VMLIMIT_OBJ=vm-limit.o
- AC_CHECK_HEADERS([sys/vlimit.h])
- AC_CACHE_CHECK([for data_start], [emacs_cv_data_start],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[extern char data_start[]; char ch;]],
- [[return data_start < &ch;]])],
- [emacs_cv_data_start=yes],
- [emacs_cv_data_start=no])])
- if test $emacs_cv_data_start = yes; then
- AC_DEFINE([HAVE_DATA_START], 1,
- [Define to 1 if data_start is the address of the start
- of the main data segment.])
- fi
- fi
- AC_SUBST(GMALLOC_OBJ)
- AC_SUBST(VMLIMIT_OBJ)
- if test "$doug_lea_malloc" = "yes" ; then
- if test "$GNU_MALLOC" = yes ; then
- GNU_MALLOC_reason="
- (Using Doug Lea's new malloc from the GNU C Library.)"
- fi
- AC_DEFINE(DOUG_LEA_MALLOC, 1,
- [Define to 1 if the system memory allocator is Doug Lea style,
- with malloc hooks and malloc_set_state.])
- ## Use mmap directly for allocating larger buffers.
- ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
- ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
- ## Does the AC_FUNC_MMAP test below make this check unnecessary?
- case "$opsys" in
- mingw32|gnu*) REL_ALLOC=no ;;
- esac
- fi
- if test x"${REL_ALLOC}" = x; then
- REL_ALLOC=${GNU_MALLOC}
- fi
- use_mmap_for_buffers=no
- case "$opsys" in
- cygwin|mingw32|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
- esac
- AC_FUNC_MMAP
- if test $use_mmap_for_buffers = yes; then
- AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
- REL_ALLOC=no
- fi
- LIBS="$LIBS_SYSTEM $LIBS"
- dnl FIXME replace main with a function we actually want from this library.
- AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
- dnl Check for the POSIX thread library.
- LIB_PTHREAD=
- if test "$opsys" != "mingw32"; then
- AC_CHECK_HEADERS_ONCE(pthread.h)
- if test "$ac_cv_header_pthread_h"; then
- dnl gmalloc.c uses pthread_atfork, which is not available on older-style
- dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
- dnl testing for pthread_kill if Emacs uses gmalloc.c.
- if test "$GMALLOC_OBJ" = gmalloc.o; then
- emacs_pthread_function=pthread_atfork
- else
- emacs_pthread_function=pthread_kill
- fi
- OLD_LIBS=$LIBS
- AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
- [AC_DEFINE([HAVE_PTHREAD], [1],
- [Define to 1 if you have pthread (-lpthread).])
- # Some systems optimize for single-threaded programs by default, and
- # need special flags to disable these optimizations. For example, the
- # definition of 'errno' in <errno.h>.
- case $opsys in
- sol*)
- AC_DEFINE([_REENTRANT], 1,
- [Define to 1 if your system requires this in multithreaded code.]);;
- aix4-2)
- AC_DEFINE([_THREAD_SAFE], 1,
- [Define to 1 if your system requires this in multithreaded code.]);;
- esac])
- if test "X$LIBS" != "X$OLD_LIBS"; then
- eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
- fi
- LIBS=$OLD_LIBS
- fi
- AC_SUBST([LIB_PTHREAD])
- fi
- dnl Check for need for bigtoc support on IBM AIX
- case ${host_os} in
- aix*)
- AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
- case $GCC in
- yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
- *) gdb_cv_bigtoc=-bbigtoc ;;
- esac
- LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
- ])
- ;;
- esac
- # Change CFLAGS, CPPFLAGS, and LIBS temporarily so that C_SWITCH_X_SITE
- # is for the tests that follow. We set them back later on.
- REAL_CFLAGS="$CFLAGS"
- REAL_CPPFLAGS="$CPPFLAGS"
- REAL_LIBS="$LIBS"
- if test "${HAVE_X11}" = "yes"; then
- DEFS="$C_SWITCH_X_SITE $DEFS"
- LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
- LIBS="-lX11 $LIBS"
- CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
- CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
- # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
- # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
- # but it's more convenient here to set LD_RUN_PATH since this
- # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
- if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
- LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
- export LD_RUN_PATH
- fi
- if test "${opsys}" = "gnu-linux"; then
- AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_first_failure=no],
- [xgnu_linux_first_failure=yes])
- if test "${xgnu_linux_first_failure}" = "yes"; then
- OLD_CPPFLAGS="$CPPFLAGS"
- OLD_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
- LIBS="$LIBS -b i486-linuxaout"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_second_failure=no],
- [xgnu_linux_second_failure=yes])
- if test "${xgnu_linux_second_failure}" = "yes"; then
- # If we get the same failure with -b, there is no use adding -b.
- # So leave it out. This plays safe.
- AC_MSG_RESULT(no)
- else
- LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
- AC_MSG_RESULT(yes)
- fi
- CPPFLAGS=$OLD_CPPFLAGS
- LIBS=$OLD_LIBS
- else
- AC_MSG_RESULT(no)
- fi
- fi
- # Reportedly, some broken Solaris systems have XKBlib.h but are missing
- # header files included from there.
- AC_MSG_CHECKING(for Xkb)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
- #include <X11/XKBlib.h>]],
- [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
- emacs_xkb=yes, emacs_xkb=no)
- AC_MSG_RESULT($emacs_xkb)
- if test $emacs_xkb = yes; then
- AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
- fi
- AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
- XScreenNumberOfScreen)
- fi
- if test "${window_system}" = "x11"; then
- AC_MSG_CHECKING(X11 version 6)
- AC_CACHE_VAL(emacs_cv_x11_version_6,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
- [[#if XlibSpecificationRelease < 6
- fail;
- #endif
- ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
- if test $emacs_cv_x11_version_6 = yes; then
- AC_MSG_RESULT(6 or newer)
- AC_DEFINE(HAVE_X11R6, 1,
- [Define to 1 if you have the X11R6 or newer version of Xlib.])
- AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
- ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
- ## XIM support.
- case "$opsys" in
- sol2-*) : ;;
- *) AC_DEFINE(HAVE_X11R6_XIM, 1,
- [Define if you have usable X11R6-style XIM support.])
- ;;
- esac
- else
- AC_MSG_RESULT(before 6)
- fi
- fi
- ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
- HAVE_RSVG=no
- if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
- if test "${with_rsvg}" != "no"; then
- RSVG_REQUIRED=2.11.0
- RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
- EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE])
- AC_SUBST(RSVG_CFLAGS)
- AC_SUBST(RSVG_LIBS)
- if test $HAVE_RSVG = yes; then
- AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
- CFLAGS="$CFLAGS $RSVG_CFLAGS"
- # Windows loads librsvg dynamically
- if test "${opsys}" = "mingw32"; then
- RSVG_LIBS=
- fi
- fi
- fi
- fi
- HAVE_IMAGEMAGICK=no
- if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes"; then
- if test "${with_imagemagick}" != "no"; then
- ## 6.3.5 is the earliest version known to work; see Bug#17339.
- ## 6.8.2 makes Emacs crash; see Bug#13867.
- IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2"
- EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE])
- AC_SUBST(IMAGEMAGICK_CFLAGS)
- AC_SUBST(IMAGEMAGICK_LIBS)
- if test $HAVE_IMAGEMAGICK = yes; then
- AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
- OLD_CFLAGS=$CFLAGS
- OLD_LIBS=$LIBS
- CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
- LIBS="$IMAGEMAGICK_LIBS $LIBS"
- AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
- CFLAGS=$OLD_CFLAGS
- LIBS=$OLD_LIBS
- fi
- fi
- fi
- HAVE_GTK=no
- GTK_OBJ=
- gtk_term_header=$term_header
- check_gtk2=no
- gtk3_pkg_errors=
- if test "${opsys}" != "mingw32"; then
- if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
- GLIB_REQUIRED=2.28
- GTK_REQUIRED=3.0
- GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
- dnl Checks for libraries.
- EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
- [pkg_check_gtk=yes], [pkg_check_gtk=no])
- if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
- AC_MSG_ERROR($GTK_PKG_ERRORS)
- fi
- if test "$pkg_check_gtk" = "yes"; then
- AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
- GTK_OBJ=emacsgtkfixed.o
- gtk_term_header=gtkutil.h
- USE_GTK_TOOLKIT="GTK3"
- if test "x$ac_enable_gtk_deprecation_warnings" = x; then
- AC_DEFINE([GDK_DISABLE_DEPRECATION_WARNINGS], [1],
- [Define to 1 to disable GTK+/GDK deprecation warnings.])
- AC_DEFINE([GLIB_DISABLE_DEPRECATION_WARNINGS], [1],
- [Define to 1 to disable Glib deprecation warnings.])
- fi
- else
- check_gtk2=yes
- gtk3_pkg_errors="$GTK_PKG_ERRORS "
- fi
- fi
- if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
- GLIB_REQUIRED=2.10
- GTK_REQUIRED=2.10
- GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
- dnl Checks for libraries.
- EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
- [pkg_check_gtk=yes], [pkg_check_gtk=no])
- if test "$pkg_check_gtk" = "no" &&
- { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
- then
- AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
- fi
- test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
- fi
- fi
- OLD_CFLAGS=$CFLAGS
- OLD_LIBS=$LIBS
- if test x"$pkg_check_gtk" = xyes; then
- AC_SUBST(GTK_LIBS)
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$GTK_LIBS $LIBS"
- dnl Try to compile a simple GTK program.
- AC_MSG_CHECKING([whether GTK compiles])
- GTK_COMPILES=no
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[/* Check the Gtk and Glib APIs. */
- #include <gtk/gtk.h>
- #include <glib-object.h>
- static void
- callback (GObject *go, GParamSpec *spec, gpointer user_data)
- {}
- ]],
- [[
- GtkSettings *gs = 0;
- /* Use G_CALLBACK to make sure function pointers can be cast to void *;
- strict C prohibits this. Use gtk_main_iteration to test that the
- libraries are there. */
- if (g_signal_handler_find (G_OBJECT (gs), G_SIGNAL_MATCH_FUNC,
- 0, 0, 0, G_CALLBACK (callback), 0))
- gtk_main_iteration ();
- ]])],
- [GTK_COMPILES=yes])
- AC_MSG_RESULT([$GTK_COMPILES])
- if test "${GTK_COMPILES}" != "yes"; then
- GTK_OBJ=
- if test "$USE_X_TOOLKIT" != "maybe"; then
- AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
- fi
- else
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
- HAVE_GTK=yes
- AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
- GTK_OBJ="gtkutil.o $GTK_OBJ"
- term_header=$gtk_term_header
- USE_X_TOOLKIT=none
- if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
- :
- else
- AC_MSG_WARN([[Your version of Gtk+ will have problems with
- closing open displays. This is no problem if you just use
- one display, but if you use more than one and close one of them
- Emacs may crash.]])
- sleep 3
- fi
- fi
- fi
- AC_SUBST(GTK_OBJ)
- if test "${HAVE_GTK}" = "yes"; then
- dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
- dnl a lot if #ifdef:s, say we have toolkit scrollbars.
- if test "$with_toolkit_scroll_bars" != no; then
- with_toolkit_scroll_bars=yes
- fi
- dnl Check if we have the old file selection dialog declared and
- dnl in the link library. In 2.x it may be in the library,
- dnl but not declared if deprecated featured has been selected out.
- dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
- HAVE_GTK_FILE_SELECTION=no
- AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
- HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
- #include <gtk/gtk.h>])
- if test "$HAVE_GTK_FILE_SELECTION" = yes; then
- AC_CHECK_FUNCS(gtk_file_selection_new)
- fi
- dnl Same as above for gtk_handle_box.
- HAVE_GTK_HANDLE_BOX=no
- AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
- HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
- #include <gtk/gtk.h>])
- if test "$HAVE_GTK_HANDLE_BOX" = yes; then
- AC_CHECK_FUNCS(gtk_handle_box_new)
- fi
- dnl Same as above for gtk_tearoff_menu_item.
- HAVE_GTK_TEAROFF_MENU_ITEM=no
- AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
- HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
- #include <gtk/gtk.h>])
- if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
- AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
- fi
- dnl Check for functions introduced in 2.14 and later.
- AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
- gtk_dialog_get_action_area gtk_widget_get_sensitive \
- gtk_widget_get_mapped gtk_adjustment_get_page_size \
- gtk_orientable_set_orientation \
- gtk_window_set_has_resize_grip)
- term_header=gtkutil.h
- fi
- CFLAGS=$OLD_CFLAGS
- LIBS=$OLD_LIBS
- dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
- dnl other platforms.
- HAVE_DBUS=no
- DBUS_OBJ=
- if test "${with_dbus}" = "yes"; then
- EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
- if test "$HAVE_DBUS" = yes; then
- AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
- dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
- dnl dbus_type_is_valid and dbus_validate_* have been introduced in
- dnl D-Bus 1.5.12.
- OLD_LIBS=$LIBS
- LIBS="$LIBS $DBUS_LIBS"
- AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
- dbus_type_is_valid \
- dbus_validate_bus_name \
- dbus_validate_path \
- dbus_validate_interface \
- dbus_validate_member)
- LIBS=$OLD_LIBS
- DBUS_OBJ=dbusbind.o
- fi
- fi
- AC_SUBST(DBUS_CFLAGS)
- AC_SUBST(DBUS_LIBS)
- AC_SUBST(DBUS_OBJ)
- dnl GSettings has been tested under GNU/Linux only.
- HAVE_GSETTINGS=no
- if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
- EMACS_CHECK_MODULES([GSETTINGS], [gio-2.0 >= 2.26])
- if test "$HAVE_GSETTINGS" = "yes"; then
- old_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $GSETTINGS_CFLAGS"
- old_LIBS=$LIBS
- LIBS="$LIBS $GSETTINGS_LIBS"
- AC_MSG_CHECKING([whether GSettings is in gio])
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[/* Check that gsettings really is present. */
- #include <glib-object.h>
- #include <gio/gio.h>
- ]],
- [[
- GSettings *settings;
- GVariant *val = g_settings_get_value (settings, "");
- ]])],
- [], HAVE_GSETTINGS=no)
- AC_MSG_RESULT([$HAVE_GSETTINGS])
- if test "$HAVE_GSETTINGS" = "yes"; then
- AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
- SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
- SETTINGS_LIBS="$GSETTINGS_LIBS"
- fi
- CFLAGS=$old_CFLAGS
- LIBS=$old_LIBS
- fi
- fi
- dnl GConf has been tested under GNU/Linux only.
- dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
- HAVE_GCONF=no
- if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
- EMACS_CHECK_MODULES([GCONF], [gconf-2.0 >= 2.13])
- if test "$HAVE_GCONF" = yes; then
- AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
- dnl Newer GConf doesn't link with g_objects, so this is not defined.
- SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
- SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
- fi
- fi
- if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
- EMACS_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0])
- if test "$HAVE_GOBJECT" = "yes"; then
- SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
- SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
- fi
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LIBS="$LIBS"
- CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
- LIBS="$SETTINGS_LIBS $LIBS"
- CFLAGS="$SAVE_CFLAGS"
- LIBS="$SAVE_LIBS"
- fi
- AC_SUBST(SETTINGS_CFLAGS)
- AC_SUBST(SETTINGS_LIBS)
- dnl SELinux is available for GNU/Linux only.
- HAVE_LIBSELINUX=no
- LIBSELINUX_LIBS=
- if test "${with_selinux}" = "yes"; then
- AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
- if test "$HAVE_LIBSELINUX" = yes; then
- AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
- LIBSELINUX_LIBS=-lselinux
- fi
- fi
- AC_SUBST(LIBSELINUX_LIBS)
- HAVE_GNUTLS=no
- if test "${with_gnutls}" = "yes" ; then
- EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6],
- [HAVE_GNUTLS=yes], [HAVE_GNUTLS=no])
- if test "${HAVE_GNUTLS}" = "yes"; then
- AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
- EMACS_CHECK_MODULES([LIBGNUTLS3], [gnutls >= 3.0.0],
- [AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.])], [])
- fi
- # Windows loads GnuTLS dynamically
- if test "${opsys}" = "mingw32"; then
- LIBGNUTLS_LIBS=
- fi
- fi
- AC_SUBST(LIBGNUTLS_LIBS)
- AC_SUBST(LIBGNUTLS_CFLAGS)
- NOTIFY_OBJ=
- NOTIFY_SUMMARY=no
- dnl FIXME? Don't auto-detect on NS, but do allow someone to specify
- dnl a particular library. This doesn't make much sense?
- if test "${with_ns}" = yes && test ${with_file_notification} = yes; then
- with_file_notification=no
- fi
- dnl MS Windows native file monitor is available for mingw32 only.
- case $with_file_notification,$opsys in
- w32,* | yes,mingw32)
- AC_CHECK_HEADER(windows.h)
- if test "$ac_cv_header_windows_h" = yes ; then
- AC_DEFINE(HAVE_W32NOTIFY, 1, [Define to 1 to use w32notify.])
- NOTIFY_OBJ=w32notify.o
- NOTIFY_SUMMARY="yes (w32)"
- fi ;;
- esac
- dnl g_file_monitor exists since glib 2.18. G_FILE_MONITOR_EVENT_MOVED
- dnl has been added in glib 2.24. It has been tested under
- dnl GNU/Linux only. We take precedence over inotify, but this makes
- dnl only sense when glib has been compiled with inotify support. How
- dnl to check?
- case $with_file_notification,$NOTIFY_OBJ in
- gfile, | yes,)
- EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
- if test "$HAVE_GFILENOTIFY" = "yes"; then
- AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
- NOTIFY_OBJ=gfilenotify.o
- NOTIFY_SUMMARY="yes -lgio (gfile)"
- fi ;;
- esac
- dnl inotify is only available on GNU/Linux.
- case $with_file_notification,$NOTIFY_OBJ in
- inotify, | yes,)
- AC_CHECK_HEADER(sys/inotify.h)
- if test "$ac_cv_header_sys_inotify_h" = yes ; then
- AC_CHECK_FUNC(inotify_init1)
- if test "$ac_cv_func_inotify_init1" = yes; then
- AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
- NOTIFY_OBJ=inotify.o
- NOTIFY_SUMMARY="yes -lglibc (inotify)"
- fi
- fi ;;
- esac
- case $with_file_notification,$NOTIFY_OBJ in
- yes,* | no,* | *,?*) ;;
- *) AC_MSG_ERROR([File notification `$with_file_notification' requested but requirements not found.]) ;;
- esac
- if test -n "$NOTIFY_OBJ"; then
- AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.])
- fi
- AC_SUBST(NOTIFY_OBJ)
- AC_SUBST(GFILENOTIFY_CFLAGS)
- AC_SUBST(GFILENOTIFY_LIBS)
- dnl Do not put whitespace before the #include statements below.
- dnl Older compilers (eg sunos4 cc) choke on it.
- HAVE_XAW3D=no
- LUCID_LIBW=
- if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
- if test "$with_xaw3d" != no; then
- AC_CACHE_VAL(emacs_cv_xaw3d,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <X11/Intrinsic.h>
- #include <X11/Xaw3d/Simple.h>]],
- [[]])],
- [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
- emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
- emacs_cv_xaw3d=no)])
- else
- emacs_cv_xaw3d=no
- fi
- if test $emacs_cv_xaw3d = yes; then
- AC_MSG_CHECKING(for xaw3d)
- AC_MSG_RESULT([yes; using Lucid toolkit])
- USE_X_TOOLKIT=LUCID
- HAVE_XAW3D=yes
- LUCID_LIBW=-lXaw3d
- AC_DEFINE(HAVE_XAW3D, 1,
- [Define to 1 if you have the Xaw3d library (-lXaw3d).])
- else
- AC_MSG_CHECKING(for xaw3d)
- AC_MSG_RESULT(no)
- AC_MSG_CHECKING(for libXaw)
- AC_CACHE_VAL(emacs_cv_xaw,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <X11/Intrinsic.h>
- #include <X11/Xaw/Simple.h>]],
- [[]])],
- emacs_cv_xaw=yes,
- emacs_cv_xaw=no)])
- if test $emacs_cv_xaw = yes; then
- AC_MSG_RESULT([yes; using Lucid toolkit])
- USE_X_TOOLKIT=LUCID
- LUCID_LIBW=-lXaw
- elif test x"${USE_X_TOOLKIT}" = xLUCID; then
- AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
- else
- AC_MSG_ERROR([No X toolkit could be found.
- If you are sure you want Emacs compiled without an X toolkit, pass
- --with-x-toolkit=no
- to configure. Otherwise, install the development libraries for the toolkit
- that you want to use (e.g. Gtk+) and re-run configure.])
- fi
- fi
- fi
- X_TOOLKIT_TYPE=$USE_X_TOOLKIT
- LIBXTR6=
- LIBXMU=
- if test "${USE_X_TOOLKIT}" != "none"; then
- AC_MSG_CHECKING(X11 toolkit version)
- AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
- [[#if XtSpecificationRelease < 6
- fail;
- #endif
- ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
- HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
- if test $emacs_cv_x11_toolkit_version_6 = yes; then
- AC_MSG_RESULT(6 or newer)
- AC_DEFINE(HAVE_X11XTR6, 1,
- [Define to 1 if you have the X11R6 or newer version of Xt.])
- LIBXTR6="-lSM -lICE"
- case "$opsys" in
- ## Use libw.a along with X11R6 Xt.
- unixware) LIBXTR6="$LIBXTR6 -lw" ;;
- esac
- else
- AC_MSG_RESULT(before 6)
- fi
- dnl If using toolkit, check whether libXmu.a exists.
- dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
- OLDLIBS="$LIBS"
- if test x$HAVE_X11XTR6 = xyes; then
- OTHERLIBS='-lXt -lSM -lICE'
- else
- OTHERLIBS='-lXt'
- fi
- AC_SEARCH_LIBS([XmuConvertStandardSelection], [Xmu], [], [], [$OTHERLIBS])
- if test "X$LIBS" != "X$OLDLIBS"; then
- LIBXMU=$ac_cv_search_XmuConvertStandardSelection
- fi
- LIBS=$OLDLIBS
- dnl ac_cv_search_XmuConvertStandardSelection is also referenced below.
- fi
- AC_SUBST(LIBXTR6)
- AC_SUBST(LIBXMU)
- LIBXP=
- if test "${USE_X_TOOLKIT}" = "MOTIF"; then
- # OpenMotif may be installed in such a way on some GNU/Linux systems.
- if test -d /usr/include/openmotif; then
- CPPFLAGS="-I/usr/include/openmotif $CPPFLAGS"
- emacs_cv_openmotif=yes
- case "$canonical" in
- x86_64-*-linux-gnu* | powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*)
- test -d /usr/lib64/openmotif && LDFLAGS="-L/usr/lib64/openmotif $LDFLAGS"
- ;;
- *)
- test -d /usr/lib/openmotif && LDFLAGS="-L/usr/lib/openmotif $LDFLAGS"
- esac
- else
- emacs_cv_openmotif=no
- fi
- AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
- [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
- int x = 5;
- #else
- Motif version prior to 2.1.
- #endif]])],
- emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
- if test $emacs_cv_motif_version_2_1 = yes; then
- AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
- if test x$emacs_cv_openmotif = xyes; then
- REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
- fi
- else
- AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
- # We put this in CFLAGS temporarily to precede other -I options
- # that might be in CFLAGS temporarily.
- # We put this in CPPFLAGS where it precedes the other -I options.
- OLD_CPPFLAGS=$CPPFLAGS
- OLD_CFLAGS=$CFLAGS
- CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
- CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
- [[int x = 5;]])],
- emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
- if test $emacs_cv_lesstif = yes; then
- # Make sure this -I option remains in CPPFLAGS after it is set
- # back to REAL_CPPFLAGS.
- # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
- # have those other -I options anyway. Ultimately, having this
- # directory ultimately in CPPFLAGS will be enough.
- REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
- LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
- else
- CFLAGS=$OLD_CFLAGS
- CPPFLAGS=$OLD_CPPFLAGS
- fi
- fi
- AC_CHECK_HEADER([Xm/BulletinB.h], [],
- [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
- fi
- dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
- dnl using Motif or Xaw3d is available, and unless
- dnl --with-toolkit-scroll-bars=no was specified.
- AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
- [Define to 1 if we should use toolkit scroll bars.])dnl
- USE_TOOLKIT_SCROLL_BARS=no
- if test "${with_toolkit_scroll_bars}" != "no"; then
- if test "${USE_X_TOOLKIT}" != "none"; then
- if test "${USE_X_TOOLKIT}" = "MOTIF"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
- HAVE_XAW3D=no
- USE_TOOLKIT_SCROLL_BARS=yes
- elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
- USE_TOOLKIT_SCROLL_BARS=yes
- fi
- elif test "${HAVE_GTK}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
- USE_TOOLKIT_SCROLL_BARS=yes
- elif test "${HAVE_NS}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
- USE_TOOLKIT_SCROLL_BARS=yes
- elif test "${HAVE_W32}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
- USE_TOOLKIT_SCROLL_BARS=yes
- fi
- fi
- dnl See if XIM is available.
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <X11/Xlib.h>
- #include <X11/Xresource.h>]],
- [[XIMProc callback;]])],
- [HAVE_XIM=yes
- AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
- HAVE_XIM=no)
- dnl `--with-xim' now controls only the initial value of use_xim at run time.
- if test "${with_xim}" != "no"; then
- AC_DEFINE(USE_XIM, 1,
- [Define to 1 if we should use XIM, if it is available.])
- fi
- if test "${HAVE_XIM}" != "no"; then
- late_CFLAGS=$CFLAGS
- if test "$GCC" = yes; then
- CFLAGS="$CFLAGS --pedantic-errors"
- fi
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include <X11/Xlib.h>
- #include <X11/Xresource.h>]],
- [[Display *display;
- XrmDatabase db;
- char *res_name;
- char *res_class;
- XIMProc callback;
- XPointer *client_data;
- #ifndef __GNUC__
- /* If we're not using GCC, it's probably not XFree86, and this is
- probably right, but we can't use something like --pedantic-errors. */
- extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
- char*, XIMProc, XPointer*);
- #endif
- (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
- client_data);]])],
- [emacs_cv_arg6_star=yes])
- AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
- [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
- either XPointer or XPointer*.])dnl
- if test "$emacs_cv_arg6_star" = yes; then
- AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
- else
- AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
- fi
- CFLAGS=$late_CFLAGS
- fi
- ### Start of font-backend (under any platform) section.
- # (nothing here yet -- this is a placeholder)
- ### End of font-backend (under any platform) section.
- ### Start of font-backend (under X11) section.
- if test "${HAVE_X11}" = "yes"; then
- ## Use -lXft if available, unless `--with-xft=no'.
- HAVE_XFT=maybe
- if test "x${with_x}" = "xno"; then
- with_xft="no";
- fi
- if test "$with_xft" != no; then
- EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0])
- with_xft=$HAVE_FONTCONFIG
- fi
- if test "x${with_xft}" != "xno"; then
- EMACS_CHECK_MODULES([XFT], [xft >= 0.13.0], [], [HAVE_XFT=no])
- ## Because xftfont.c uses XRenderQueryExtension, we also
- ## need to link to -lXrender.
- HAVE_XRENDER=no
- AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
- if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
- OLD_CPPFLAGS="$CPPFLAGS"
- OLD_CFLAGS="$CFLAGS"
- OLD_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
- CFLAGS="$CFLAGS $XFT_CFLAGS"
- XFT_LIBS="-lXrender $XFT_LIBS"
- LIBS="$XFT_LIBS $LIBS"
- AC_CHECK_HEADER(X11/Xft/Xft.h,
- AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , ,
- [[#include <X11/X.h>]])
- if test "${HAVE_XFT}" = "yes"; then
- AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
- AC_SUBST(XFT_LIBS)
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
- fi # "${HAVE_XFT}" = "yes"
- CPPFLAGS=$OLD_CPPFLAGS
- CFLAGS=$OLD_CFLAGS
- LIBS=$OLD_LIBS
- fi # "$HAVE_XFT" != no
- fi # "x${with_xft}" != "xno"
- ## We used to allow building with FreeType and without Xft.
- ## However, the ftx font backend driver is not in good shape.
- if test "$HAVE_XFT" != "yes"; then
- dnl For the "Does Emacs use" message at the end.
- HAVE_XFT=no
- HAVE_FREETYPE=no
- else
- dnl Strict linkers fail with
- dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
- dnl if -lfreetype is not specified.
- dnl The following is needed to set FREETYPE_LIBS.
- EMACS_CHECK_MODULES([FREETYPE], [freetype2])
- test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
- fi
- HAVE_LIBOTF=no
- if test "${HAVE_FREETYPE}" = "yes"; then
- AC_DEFINE(HAVE_FREETYPE, 1,
- [Define to 1 if using the freetype and fontconfig libraries.])
- if test "${with_libotf}" != "no"; then
- EMACS_CHECK_MODULES([LIBOTF], [libotf])
- if test "$HAVE_LIBOTF" = "yes"; then
- AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
- AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
- HAVE_OTF_GET_VARIATION_GLYPHS=yes,
- HAVE_OTF_GET_VARIATION_GLYPHS=no)
- if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
- AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
- [Define to 1 if libotf has OTF_get_variation_glyphs.])
- fi
- fi
- fi
- dnl FIXME should there be an error if HAVE_FREETYPE != yes?
- dnl Does the new font backend require it, or can it work without it?
- fi
- HAVE_M17N_FLT=no
- if test "${HAVE_LIBOTF}" = yes; then
- if test "${with_m17n_flt}" != "no"; then
- EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt])
- if test "$HAVE_M17N_FLT" = "yes"; then
- AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
- fi
- fi
- fi
- else
- HAVE_XFT=no
- HAVE_FREETYPE=no
- HAVE_LIBOTF=no
- HAVE_M17N_FLT=no
- fi
- ### End of font-backend (under X11) section.
- AC_SUBST(FREETYPE_CFLAGS)
- AC_SUBST(FREETYPE_LIBS)
- AC_SUBST(FONTCONFIG_CFLAGS)
- AC_SUBST(FONTCONFIG_LIBS)
- AC_SUBST(LIBOTF_CFLAGS)
- AC_SUBST(LIBOTF_LIBS)
- AC_SUBST(M17N_FLT_CFLAGS)
- AC_SUBST(M17N_FLT_LIBS)
- ### Use -lXpm if available, unless `--with-xpm=no'.
- ### mingw32 doesn't use -lXpm, since it loads the library dynamically.
- ### In the Cygwin-w32 build, we need to use /usr/include/noX/X11/xpm.h
- ### rather than /usr/include/X11/xpm.h, so we set CPPFLAGS (and
- ### LDFLAGS) accordingly.
- HAVE_XPM=no
- LIBXPM=
- if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
- if test "${with_xpm}" != "no"; then
- SAVE_CPPFLAGS="$CPPFLAGS"
- SAVE_LDFLAGS="$LDFLAGS"
- CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
- LDFLAGS="$LDFLAGS -L/usr/lib/noX"
- AC_CHECK_HEADER(X11/xpm.h,
- [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
- if test "${HAVE_XPM}" = "yes"; then
- AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
- AC_EGREP_CPP(no_return_alloc_pixels,
- [#include "X11/xpm.h"
- #ifndef XpmReturnAllocPixels
- no_return_alloc_pixels
- #endif
- ], HAVE_XPM=no, HAVE_XPM=yes)
- if test "${HAVE_XPM}" = "yes"; then
- REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- CPPFLAGS="$SAVE_CPPFLAGS"
- LDFLAGS="$SAVE_LDFLAGS"
- fi
- fi
- fi
- if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
- LIBXPM=-lXpm
- fi
- fi
- if test "${HAVE_X11}" = "yes"; then
- dnl Avoid Xpm on AIX unless requested, as it crashes; see Bug#17598.
- test "$opsys$with_xpm_set" = aix4-2 && with_xpm=no
- if test "${with_xpm}" != "no"; then
- AC_CHECK_HEADER(X11/xpm.h,
- [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
- if test "${HAVE_XPM}" = "yes"; then
- AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
- AC_EGREP_CPP(no_return_alloc_pixels,
- [#include "X11/xpm.h"
- #ifndef XpmReturnAllocPixels
- no_return_alloc_pixels
- #endif
- ], HAVE_XPM=no, HAVE_XPM=yes)
- if test "${HAVE_XPM}" = "yes"; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- fi
- fi
- if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
- LIBXPM=-lXpm
- elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then
- dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152.
- LIBXPM=-lXpm
- fi
- fi
- ### FIXME: Perhaps regroup to minimize code duplication due to MinGW's
- ### slightly different requirements wrt image libraries (it doesn't
- ### use -lXpm because it loads the xpm shared library dynamically at
- ### run time).
- if test "${opsys}" = "mingw32"; then
- if test "${with_xpm}" != "no"; then
- AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
- #define FOR_MSW 1])
- fi
- if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
- fi
- fi
- AC_SUBST(LIBXPM)
- ### Use -ljpeg if available, unless `--with-jpeg=no'.
- ### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
- HAVE_JPEG=no
- LIBJPEG=
- if test "${opsys}" = "mingw32"; then
- if test "${with_jpeg}" != "no"; then
- dnl Checking for jpeglib.h can lose because of a redefinition of
- dnl HAVE_STDLIB_H.
- AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
- fi
- AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
- if test "${HAVE_JPEG}" = "yes"; then
- AC_DEFINE(HAVE_JPEG)
- AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
- [#include <jpeglib.h>
- version=JPEG_LIB_VERSION
- ],
- [AC_DEFINE(HAVE_JPEG)],
- [AC_MSG_WARN([libjpeg found, but not version 6b or later])
- HAVE_JPEG=no])
- fi
- elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- if test "${with_jpeg}" != "no"; then
- dnl Checking for jpeglib.h can lose because of a redefinition of
- dnl HAVE_STDLIB_H.
- AC_CHECK_HEADER(jerror.h,
- [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
- fi
- AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
- if test "${HAVE_JPEG}" = "yes"; then
- AC_DEFINE(HAVE_JPEG)
- AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
- [#include <jpeglib.h>
- version=JPEG_LIB_VERSION
- ],
- [AC_DEFINE(HAVE_JPEG)],
- [AC_MSG_WARN([libjpeg found, but not version 6b or later])
- HAVE_JPEG=no])
- fi
- if test "${HAVE_JPEG}" = "yes"; then
- LIBJPEG=-ljpeg
- fi
- fi
- AC_SUBST(LIBJPEG)
- HAVE_ZLIB=no
- LIBZ=
- if test "${with_zlib}" != "no"; then
- OLIBS=$LIBS
- AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes])
- LIBS=$OLIBS
- case $ac_cv_search_inflateEnd in
- -*) LIBZ=$ac_cv_search_inflateEnd ;;
- esac
- fi
- if test "${HAVE_ZLIB}" = "yes"; then
- AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).])
- ### mingw32 doesn't use -lz, since it loads the library dynamically.
- if test "${opsys}" = "mingw32"; then
- LIBZ=
- fi
- fi
- AC_SUBST(LIBZ)
- ### Use -lpng if available, unless `--with-png=no'.
- HAVE_PNG=no
- LIBPNG=
- PNG_CFLAGS=
- if test "${NS_IMPL_COCOA}" = yes; then
- : # Nothing to do
- elif test "${with_png}" != no; then
- # mingw32 loads the library dynamically.
- if test "$opsys" = mingw32; then
- AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
- elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- AC_MSG_CHECKING([for png])
- png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
- png_libs=`(libpng-config --libs) 2>&AS_MESSAGE_LOG_FD` || {
- # libpng-config does not work; configure by hand.
- # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
- # in /usr/include/libpng.
- if test -r /usr/include/libpng/png.h &&
- test ! -r /usr/include/png.h; then
- png_cflags=-I/usr/include/libpng
- else
- png_cflags=
- fi
- png_libs='-lpng'
- }
- SAVE_CFLAGS=$CFLAGS
- SAVE_LIBS=$LIBS
- CFLAGS="$CFLAGS $png_cflags"
- LIBS="$png_libs -lz -lm $LIBS"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[#include <png.h>]],
- [[return !png_get_channels (0, 0);]])],
- [HAVE_PNG=yes
- PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
- LIBPNG=$png_libs
- # $LIBPNG requires explicit -lz in some cases.
- # We don't know what those cases are, exactly, so play it safe and
- # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ.
- if test -n "$LIBPNG" && test -z "$LIBZ"; then
- LIBPNG="$LIBPNG -lz"
- fi])
- CFLAGS=$SAVE_CFLAGS
- LIBS=$SAVE_LIBS
- AC_MSG_RESULT([$HAVE_PNG])
- fi
- fi
- if test $HAVE_PNG = yes; then
- AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.])
- SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $PNG_CFLAGS"
- AC_CHECK_DECL([png_longjmp],
- [],
- [AC_DEFINE([PNG_DEPSTRUCT], [],
- [Define to empty to suppress deprecation warnings when building
- with --enable-gcc-warnings and with libpng versions before 1.5,
- which lack png_longjmp.])],
- [[#include <png.h>
- ]])
- CFLAGS=$SAVE_CFLAGS
- fi
- AC_SUBST(LIBPNG)
- AC_SUBST(PNG_CFLAGS)
- ### Use -ltiff if available, unless `--with-tiff=no'.
- ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
- HAVE_TIFF=no
- LIBTIFF=
- if test "${opsys}" = "mingw32"; then
- if test "${with_tiff}" != "no"; then
- AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
- fi
- if test "${HAVE_TIFF}" = "yes"; then
- AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
- fi
- elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- if test "${with_tiff}" != "no"; then
- AC_CHECK_HEADER(tiffio.h,
- [tifflibs="-lz -lm"
- # At least one tiff package requires the jpeg library.
- if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
- AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
- fi
- if test "${HAVE_TIFF}" = "yes"; then
- AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
- dnl FIXME -lz -lm, as per libpng?
- LIBTIFF=-ltiff
- fi
- fi
- AC_SUBST(LIBTIFF)
- ### Use -lgif or -lungif if available, unless `--with-gif=no'.
- ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
- HAVE_GIF=no
- LIBGIF=
- if test "${opsys}" = "mingw32"; then
- if test "${with_gif}" != "no"; then
- AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
- fi
- if test "${HAVE_GIF}" = "yes"; then
- AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
- fi
- elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
- || test "${HAVE_W32}" = "yes"; then
- AC_CHECK_HEADER(gif_lib.h,
- # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
- # Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast.
- [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes,
- [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])])
- if test "$HAVE_GIF" = yes; then
- LIBGIF=-lgif
- elif test "$HAVE_GIF" = maybe; then
- # If gif_lib.h but no libgif, try libungif.
- AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
- test "$HAVE_GIF" = yes && LIBGIF=-lungif
- fi
- if test "${HAVE_GIF}" = "yes"; then
- AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
- fi
- fi
- AC_SUBST(LIBGIF)
- dnl Check for required libraries.
- if test "${HAVE_X11}" = "yes"; then
- MISSING=""
- WITH_NO=""
- test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
- MISSING="libXpm" && WITH_NO="--with-xpm=no"
- test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
- MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
- test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
- MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
- test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
- MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
- test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
- MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
- if test "X${MISSING}" != X; then
- AC_MSG_ERROR([The following required libraries were not found:
- $MISSING
- Maybe some development libraries/packages are missing?
- If you don't want to link with them give
- $WITH_NO
- as options to configure])
- fi
- fi
- ### Use -lgpm if available, unless `--with-gpm=no'.
- HAVE_GPM=no
- LIBGPM=
- if test "${with_gpm}" != "no"; then
- AC_CHECK_HEADER(gpm.h,
- [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
- if test "${HAVE_GPM}" = "yes"; then
- AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
- LIBGPM=-lgpm
- fi
- fi
- AC_SUBST(LIBGPM)
- dnl Check for malloc/malloc.h on darwin
- AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
- GNUSTEP_CFLAGS=
- ### Use NeXTstep API to implement GUI.
- if test "${HAVE_NS}" = "yes"; then
- AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
- if test "${NS_IMPL_COCOA}" = "yes"; then
- AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
- fi
- if test "${NS_IMPL_GNUSTEP}" = "yes"; then
- AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
- # See also .m.o rule in Makefile.in */
- # FIXME: are all these flags really needed? Document here why. */
- GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
- ## Extra CFLAGS applied to src/*.m files.
- GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
- fi
- OTHER_FILES=ns-app
- fi
- ### Use session management (-lSM -lICE) if available
- HAVE_X_SM=no
- LIBXSM=
- if test "${HAVE_X11}" = "yes"; then
- AC_CHECK_HEADER(X11/SM/SMlib.h,
- [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
- if test "${HAVE_X_SM}" = "yes"; then
- AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
- LIBXSM="-lSM -lICE"
- fi
- fi
- AC_SUBST(LIBXSM)
- ### Use XRandr (-lXrandr) if available
- HAVE_XRANDR=no
- if test "${HAVE_X11}" = "yes"; then
- XRANDR_REQUIRED=1.2.2
- XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
- EMACS_CHECK_MODULES([XRANDR], [$XRANDR_MODULES])
- if test $HAVE_XRANDR = no; then
- # Test old way in case pkg-config doesn't have it (older machines).
- # Include Xrender.h by hand to work around bug in older Xrandr.h
- # (e.g. RHEL5) and silence (harmless) configure warning (bug#18465).
- AC_CHECK_HEADER(X11/extensions/Xrandr.h,
- [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)],
- [], [AC_INCLUDES_DEFAULT
- #include <X11/extensions/Xrender.h>])
- if test $HAVE_XRANDR = yes; then
- XRANDR_LIBS=-lXrandr
- fi
- fi
- if test $HAVE_XRANDR = yes; then
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LIBS="$LIBS"
- CFLAGS="$XRANDR_CFLAGS $CFLAGS"
- LIBS="$XRANDR_LIBS $LIBS"
- AC_CHECK_FUNCS(XRRGetOutputPrimary XRRGetScreenResourcesCurrent)
- CFLAGS="$SAVE_CFLAGS"
- LIBS="$SAVE_LIBS"
- AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
- fi
- fi
- AC_SUBST(XRANDR_CFLAGS)
- AC_SUBST(XRANDR_LIBS)
- ### Use Xinerama (-lXinerama) if available
- HAVE_XINERAMA=no
- if test "${HAVE_X11}" = "yes"; then
- XINERAMA_REQUIRED=1.0.2
- XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
- EMACS_CHECK_MODULES([XINERAMA], [$XINERAMA_MODULES])
- if test $HAVE_XINERAMA = no; then
- # Test old way in case pkg-config doesn't have it (older machines).
- AC_CHECK_HEADER(X11/extensions/Xinerama.h,
- [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
- if test $HAVE_XINERAMA = yes; then
- XINERAMA_LIBS=-lXinerama
- fi
- fi
- if test $HAVE_XINERAMA = yes; then
- AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
- fi
- fi
- AC_SUBST(XINERAMA_CFLAGS)
- AC_SUBST(XINERAMA_LIBS)
- ### Use Xfixes (-lXfixes) if available
- HAVE_XFIXES=no
- if test "${HAVE_X11}" = "yes"; then
- XFIXES_REQUIRED=4.0.0
- XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED"
- EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES])
- if test $HAVE_XFIXES = no; then
- # Test old way in case pkg-config doesn't have it (older machines).
- AC_CHECK_HEADER(X11/extensions/Xfixes.h,
- [AC_CHECK_LIB(Xfixes, XFixesHideCursor, HAVE_XFIXES=yes)])
- if test $HAVE_XFIXES = yes; then
- XFIXES_LIBS=-lXfixes
- fi
- fi
- if test $HAVE_XFIXES = yes; then
- AC_DEFINE(HAVE_XFIXES, 1, [Define to 1 if you have the Xfixes extension.])
- fi
- fi
- AC_SUBST(XFIXES_CFLAGS)
- AC_SUBST(XFIXES_LIBS)
- ### Use libxml (-lxml2) if available
- ### mingw32 doesn't use -lxml2, since it loads the library dynamically.
- HAVE_LIBXML2=no
- if test "${with_xml2}" != "no"; then
- ### I'm not sure what the version number should be, so I just guessed.
- EMACS_CHECK_MODULES([LIBXML2], [libxml-2.0 > 2.6.17])
- # Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
- if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
- SAVE_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
- AC_CHECK_HEADER(libxml/HTMLparser.h,
- [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
- [#include <libxml/HTMLparser.h>])])
- CPPFLAGS="$SAVE_CPPFLAGS"
- if test "${HAVE_LIBXML2}" = "yes"; then
- LIBXML2_CFLAGS="-I'$xcsdkdir/usr/include/libxml2'"
- LIBXML2_LIBS="-lxml2"
- fi
- fi
- if test "${HAVE_LIBXML2}" = "yes"; then
- if test "${opsys}" != "mingw32"; then
- AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no
- [$LIBXML2_LIBS])
- else
- LIBXML2_LIBS=""
- fi
- if test "${HAVE_LIBXML2}" = "yes"; then
- AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
- else
- LIBXML2_LIBS=""
- LIBXML2_CFLAGS=""
- fi
- fi
- fi
- AC_SUBST(LIBXML2_LIBS)
- AC_SUBST(LIBXML2_CFLAGS)
- # If netdb.h doesn't declare h_errno, we must declare it by hand.
- # On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
- if test "${opsys}" = "mingw32"; then
- emacs_cv_netdb_declares_h_errno=yes
- fi
- AC_CACHE_CHECK(whether netdb declares h_errno,
- emacs_cv_netdb_declares_h_errno,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
- [[return h_errno;]])],
- emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
- if test $emacs_cv_netdb_declares_h_errno = yes; then
- AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
- fi
- # Check for mail-locking functions in a "mail" library. Probably this should
- # have the same check as for liblockfile below.
- AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
- if test $have_mail = yes; then
- LIBS_MAIL=-lmail
- AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
- OLD_LIBS=$LIBS
- LIBS="$LIBS_MAIL $LIBS"
- AC_CHECK_FUNCS(touchlock)
- LIBS=$OLD_LIBS
- else
- LIBS_MAIL=
- fi
- dnl Debian, at least:
- AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
- if test $have_lockfile = yes; then
- LIBS_MAIL=-llockfile
- AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
- else
- # If we have the shared liblockfile, assume we must use it for mail
- # locking (e.g. Debian). If we couldn't link against liblockfile
- # (no liblockfile.a installed), ensure that we don't need to.
- dnl This works for files generally, not just executables.
- dnl Should we look elsewhere for it? Maybe examine /etc/ld.so.conf?
- AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
- /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
- if test $ac_cv_prog_liblockfile = yes; then
- AC_MSG_ERROR([Shared liblockfile found but can't link against it.
- This probably means that movemail could lose mail.
- There may be a `development' package to install containing liblockfile.])
- fi
- fi
- AC_CHECK_HEADERS_ONCE(maillock.h)
- AC_SUBST(LIBS_MAIL)
- ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
- ## interlock access to the mail spool. The alternative is a lock file named
- ## /usr/spool/mail/$USER.lock.
- mail_lock=no
- case "$opsys" in
- aix4-2) mail_lock="lockf" ;;
- gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
- ## On GNU/Linux systems, both methods are used by various mail programs.
- ## I assume most people are using newer mailers that have heard of flock.
- ## Change this if you need to.
- ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
- ## configure gets the right answers, and that means *NOT* using flock.
- ## Using flock is guaranteed to be the wrong thing. See Debian Policy
- ## for details.'' and then uses `#ifdef DEBIAN'. Unfortunately the
- ## Debian maintainer hasn't provided a clean fix for Emacs.
- ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
- ## HAVE_MAILLOCK_H are defined, so the following appears to be the
- ## correct logic. -- fx
- ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
- ## liblockfile is a Free Software replacement for libmail, used on
- ## Debian systems and elsewhere. -rfr.
- gnu-*)
- mail_lock="flock"
- if test $have_mail = yes || test $have_lockfile = yes; then
- test $ac_cv_header_maillock_h = yes && mail_lock=no
- fi
- ;;
- mingw32)
- mail_lock="none-needed" ;;
- esac
- BLESSMAIL_TARGET=
- case "$mail_lock" in
- flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
- lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
- none-needed) ;;
- *) BLESSMAIL_TARGET="need-blessmail" ;;
- esac
- AC_SUBST(BLESSMAIL_TARGET)
- OLD_LIBS=$LIBS
- LIBS="$LIB_PTHREAD $LIB_MATH $LIBS"
- AC_CHECK_FUNCS(accept4 fchdir gethostname \
- getrusage get_current_dir_name \
- lrand48 random rint \
- select getpagesize setlocale newlocale \
- getrlimit setrlimit shutdown getaddrinfo \
- pthread_sigmask strsignal setitimer \
- sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
- gai_strerror sync \
- getpwent endpwent getgrent endgrent \
- cfmakeraw cfsetspeed copysign __executable_start log2)
- LIBS=$OLD_LIBS
- dnl No need to check for aligned_alloc and posix_memalign if using
- dnl gmalloc.o, as it supplies them, unless we're using hybrid_malloc.
- dnl Don't use these functions on Darwin as they are incompatible with
- dnl unexmacosx.c.
- if (test -z "$GMALLOC_OBJ" || test "$hybrid_malloc" = yes) \
- && test "$opsys" != darwin; then
- AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
- fi
- dnl Cannot use AC_CHECK_FUNCS
- AC_CACHE_CHECK([for __builtin_unwind_init],
- emacs_cv_func___builtin_unwind_init,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
- emacs_cv_func___builtin_unwind_init=yes,
- emacs_cv_func___builtin_unwind_init=no)])
- if test $emacs_cv_func___builtin_unwind_init = yes; then
- AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
- [Define to 1 if you have the `__builtin_unwind_init' function.])
- fi
- AC_CHECK_HEADERS_ONCE(sys/un.h)
- AC_FUNC_FSEEKO
- # UNIX98 PTYs.
- AC_CHECK_FUNCS(grantpt)
- # PTY-related GNU extensions.
- AC_CHECK_FUNCS(getpt posix_openpt)
- # Check this now, so that we will NOT find the above functions in ncurses.
- # That is because we have not set up to link ncurses in lib-src.
- # It's better to believe a function is not available
- # than to expect to find it in ncurses.
- # Also we need tputs and friends to be able to build at all.
- AC_MSG_CHECKING([for library containing tputs])
- # Run a test program that contains a call to tputs, a call that is
- # never executed. This tests whether a pre-'main' dynamic linker
- # works with the library. It's too much trouble to actually call
- # tputs in the test program, due to portability hassles. When
- # cross-compiling, assume the test program will run if it links.
- AC_DEFUN([tputs_link_source], [
- AC_LANG_SOURCE(
- [[extern void tputs (const char *, int, int (*)(int));
- int main (int argc, char **argv)
- {
- if (argc == 10000)
- tputs (argv[0], 0, 0);
- return 0;
- }]])
- ])
- if test "${opsys}" = "mingw32"; then
- msg='none required'
- else
- # Maybe curses should be tried earlier?
- # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
- for tputs_library in '' tinfo ncurses terminfo termcap curses; do
- OLIBS=$LIBS
- if test -z "$tputs_library"; then
- LIBS_TERMCAP=
- msg='none required'
- else
- LIBS_TERMCAP=-l$tputs_library
- msg=$LIBS_TERMCAP
- LIBS="$LIBS_TERMCAP $LIBS"
- fi
- AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
- [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
- LIBS=$OLIBS
- if test "X$msg" != Xno; then
- break
- fi
- done
- fi
- AC_MSG_RESULT([$msg])
- if test "X$msg" = Xno; then
- AC_MSG_ERROR([The required function `tputs' was not found in any library.
- The following libraries were tried (in order):
- libtinfo, libncurses, libterminfo, libtermcap, libcurses
- Please try installing whichever of these libraries is most appropriate
- for your system, together with its header files.
- For example, a libncurses-dev(el) or similar package.])
- fi
- ## Use termcap instead of terminfo?
- ## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
- TERMINFO=yes
- ## FIXME? In the cases below where we unconditionally set
- ## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
- ## if that was found above to have tputs.
- ## Should we use the gnu* logic everywhere?
- case "$opsys" in
- ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
- ## The ncurses library has been moved out of the System framework in
- ## Mac OS X 10.2. So if configure detects it, set the command-line
- ## option to use it.
- darwin) LIBS_TERMCAP="-lncurses" ;;
- gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
- freebsd)
- AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
- AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
- [[#if __FreeBSD_version < 400000
- fail;
- #endif
- ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
- AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
- if test $emacs_cv_freebsd_terminfo = yes; then
- LIBS_TERMCAP="-lncurses"
- else
- TERMINFO=no
- LIBS_TERMCAP="-ltermcap"
- fi
- ;;
- mingw32)
- TERMINFO=no
- LIBS_TERMCAP=
- ;;
- netbsd)
- if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
- TERMINFO=no
- LIBS_TERMCAP="-ltermcap"
- fi
- ;;
- openbsd | dragonfly) LIBS_TERMCAP="-lncurses" ;;
- ## hpux: Make sure we get select from libc rather than from libcurses
- ## because libcurses on HPUX 10.10 has a broken version of select.
- ## We used to use -lc -lcurses, but this may be cleaner.
- ## FIXME? But TERMINFO = yes on hpux (it used to be explicitly
- # set that way, now it uses the default). Isn't this a contradiction?
- hpux*) LIBS_TERMCAP="-ltermcap" ;;
- esac
- TERMCAP_OBJ=tparam.o
- if test $TERMINFO = yes; then
- AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
- TERMCAP_OBJ=terminfo.o
- fi
- if test "X$LIBS_TERMCAP" = "X-lncurses"; then
- AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
- fi
- AC_SUBST(LIBS_TERMCAP)
- AC_SUBST(TERMCAP_OBJ)
- # GNU/Linux-specific timer functions.
- AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <sys/timerfd.h>
- ]],
- [[timerfd_create (CLOCK_REALTIME,
- TFD_CLOEXEC | TFD_NONBLOCK);
- timerfd_settime (0, TFD_TIMER_ABSTIME, 0, 0);]])],
- [emacs_cv_have_timerfd=yes],
- [emacs_cv_have_timerfd=no])])
- if test "$emacs_cv_have_timerfd" = yes; then
- AC_DEFINE([HAVE_TIMERFD], 1,
- [Define to 1 if timerfd functions are supported as in GNU/Linux.])
- fi
- # Alternate stack for signal handlers.
- AC_CACHE_CHECK([whether signals can be handled on alternate stack],
- [emacs_cv_alternate_stack],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <signal.h>
- ]],
- [[stack_t ss;
- struct sigaction sa;
- ss.ss_sp = malloc (SIGSTKSZ);
- ss.ss_size = SIGSTKSZ;
- sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
- sigaltstack (&ss, 0);
- sigaction (SIGSEGV, &sa, 0);]])],
- [emacs_cv_alternate_stack=yes],
- [emacs_cv_alternate_stack=no])])
- # Do we have res_init, for detecting changes in /etc/resolv.conf?
- # On Darwin, res_init appears not to be useful: see bug#562 and
- # http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
- resolv=no
- if test $opsys != darwin; then
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
- #include <arpa/nameser.h>
- #include <resolv.h>]],
- [[return res_init();]])],
- have_res_init=yes, have_res_init=no)
- if test "$have_res_init" = no; then
- OLIBS="$LIBS"
- LIBS="$LIBS -lresolv"
- AC_MSG_CHECKING(for res_init with -lresolv)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
- #include <arpa/nameser.h>
- #include <resolv.h>]],
- [[return res_init();]])],
- have_res_init=yes, have_res_init=no)
- AC_MSG_RESULT($have_res_init)
- if test "$have_res_init" = yes ; then
- resolv=yes
- fi
- LIBS="$OLIBS"
- fi
- if test "$have_res_init" = yes; then
- AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
- fi
- fi dnl !darwin
- # Do we need the Hesiod library to provide the support routines?
- dnl FIXME? Should we be skipping this on Darwin too?
- LIBHESIOD=
- if test "$with_hesiod" != no ; then
- # Don't set $LIBS here -- see comments above. FIXME which comments?
- AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
- [AC_CHECK_LIB(resolv, res_send, resolv=yes,
- [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
- if test "$resolv" = yes ; then
- RESOLVLIB=-lresolv
- else
- RESOLVLIB=
- fi
- AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
- hesiod=yes, :, $RESOLVLIB)])
- if test x"$hesiod" = xyes; then
- LIBHESIOD=-lhesiod
- fi
- fi
- AC_SUBST(LIBHESIOD)
- # Do we need libresolv (due to res_init or Hesiod)?
- if test "$resolv" = yes && test $opsys != darwin; then
- LIBRESOLV=-lresolv
- else
- LIBRESOLV=
- fi
- AC_SUBST(LIBRESOLV)
- # These tell us which Kerberos-related libraries to use.
- COM_ERRLIB=
- CRYPTOLIB=
- KRB5LIB=
- DESLIB=
- KRB4LIB=
- if test "${with_kerberos}" != no; then
- OLD_LIBS=$LIBS
- AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
- if test $have_com_err = yes; then
- COM_ERRLIB=-lcom_err
- LIBS="$COM_ERRLIB $LIBS"
- fi
- AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
- if test $have_crypto = yes; then
- CRYPTOLIB=-lcrypto
- LIBS="$CRYPTOLIB $LIBS"
- fi
- AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
- if test $have_k5crypto = yes; then
- CRYPTOLIB=-lk5crypto
- LIBS="$CRYPTOLIB $LIBS"
- fi
- AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
- if test $have_krb5=yes; then
- KRB5LIB=-lkrb5
- LIBS="$KRB5LIB $LIBS"
- fi
- dnl FIXME Simplify. Does not match 22 logic, thanks to default_off?
- if test "${with_kerberos5}" = no; then
- AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
- if test $have_des425 = yes; then
- DESLIB=-ldes425
- LIBS="$DESLIB $LIBS"
- else
- AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
- if test $have_des = yes; then
- DESLIB=-ldes
- LIBS="$DESLIB $LIBS"
- fi
- fi
- AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
- if test $have_krb4 = yes; then
- KRB4LIB=-lkrb4
- LIBS="$KRB4LIB $LIBS"
- else
- AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
- if test $have_krb = yes; then
- KRB4LIB=-lkrb
- LIBS="$KRB4LIB $LIBS"
- fi
- fi
- fi
- if test "${with_kerberos5}" != no; then
- AC_CHECK_HEADERS(krb5.h,
- [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
- [#include <krb5.h>])])
- else
- AC_CHECK_HEADERS(krb.h,,
- [AC_CHECK_HEADERS(kerberosIV/krb.h,,
- [AC_CHECK_HEADERS(kerberos/krb.h)])])
- fi
- AC_CHECK_HEADERS(com_err.h)
- LIBS=$OLD_LIBS
- fi
- AC_SUBST(COM_ERRLIB)
- AC_SUBST(CRYPTOLIB)
- AC_SUBST(KRB5LIB)
- AC_SUBST(DESLIB)
- AC_SUBST(KRB4LIB)
- AC_CHECK_HEADERS(valgrind/valgrind.h)
- AC_CHECK_FUNCS_ONCE(tzalloc tzset)
- ok_so_far=yes
- AC_CHECK_FUNC(socket, , ok_so_far=no)
- if test $ok_so_far = yes; then
- AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
- fi
- if test $ok_so_far = yes; then
- AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
- fi
- if test $ok_so_far = yes; then
- dnl Fixme: Not used. Should this be HAVE_SOCKETS?
- AC_DEFINE(HAVE_INET_SOCKETS, 1,
- [Define to 1 if you have inet sockets.])
- fi
- AC_FUNC_FORK
- AC_CHECK_FUNCS(snprintf)
- dnl Check for glib. This differs from other library checks in that
- dnl Emacs need not link to glib unless some other library is already
- dnl linking to glib. Although glib provides no facilities that Emacs
- dnl needs for its own purposes, when glib is present Emacs needs to
- dnl use primitives like g_main_context_query to avoid clashing with
- dnl glib at a low level.
- dnl
- dnl Check this late, since it depends on $GTK_CFLAGS etc.
- XGSELOBJ=
- OLDCFLAGS="$CFLAGS"
- OLDLIBS="$LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS $RSVG_CFLAGS $DBUS_CFLAGS $SETTINGS_CFLAGS"
- LIBS="$LIBS $GTK_LIBS $RSVG_LIBS $DBUS_LIBS $SETTINGS_LIBS"
- CFLAGS="$CFLAGS $GFILENOTIFY_CFLAGS"
- LIBS="$LIBS $GFILENOTIFY_LIBS"
- AC_MSG_CHECKING([whether GLib is linked in])
- AC_LINK_IFELSE([AC_LANG_PROGRAM(
- [[#include <glib.h>
- ]],
- [[g_print ("Hello world");]])],
- [links_glib=yes],
- [links_glib=no])
- AC_MSG_RESULT([$links_glib])
- if test "${links_glib}" = "yes"; then
- AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if GLib is linked in.])
- if test "$HAVE_NS" = no;then
- XGSELOBJ=xgselect.o
- fi
- fi
- CFLAGS="$OLDCFLAGS"
- LIBS="$OLDLIBS"
- AC_SUBST(XGSELOBJ)
- dnl Adapted from Haible's version.
- AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
- [[char* cs = nl_langinfo(CODESET);]])],
- emacs_cv_langinfo_codeset=yes,
- emacs_cv_langinfo_codeset=no)
- ])
- if test $emacs_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
- AC_TYPE_MBSTATE_T
- dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
- dnl how the tty code is related to POSIX and/or other versions of termios.
- dnl The following looks like a useful start.
- dnl
- dnl AC_SYS_POSIX_TERMIOS
- dnl if test $ac_cv_sys_posix_termios = yes; then
- dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
- dnl and macros for terminal control.])
- dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
- dnl fi
- dnl Turned on June 1996 supposing nobody will mind it.
- dnl MinGW emulates passwd database, so this feature doesn't make sense there.
- if test "${opsys}" != "mingw32"; then
- AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
- in the full name stands for the login id.])
- fi
- dnl Everybody supports this, except MS.
- dnl Seems like the kind of thing we should be testing for, though.
- ## Note: PTYs are broken on darwin <6. Use at your own risk.
- if test "${opsys}" != "mingw32"; then
- AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
- fi
- dnl Everybody supports this, except MS-DOS.
- dnl Seems like the kind of thing we should be testing for, though.
- dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
- AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
- 4.2-compatible sockets.])
- AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
- AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
- a null file, or a data sink.])
- if test "${opsys}" = "mingw32"; then
- AC_DEFINE(NULL_DEVICE, ["NUL:"])
- else
- AC_DEFINE(NULL_DEVICE, ["/dev/null"])
- fi
- if test "${opsys}" = "mingw32"; then
- SEPCHAR=';'
- else
- SEPCHAR=':'
- fi
- AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.])
- dnl This is for MinGW, and is used in test/automated/Makefile.in.
- dnl The MSYS Bash has heuristics for replacing ':' with ';' when it
- dnl decides that a command-line argument to be passed to a MinGW program
- dnl is a PATH-style list of directories. But that heuristics plays it
- dnl safe, and only does the replacement when it is _absolutely_ sure it
- dnl sees a colon-separated list of file names; e.g. ":." is left alone,
- dnl which breaks in-tree builds. So we do this manually instead.
- dnl Note that we cannot rely on PATH_SEPARATOR, as that one will always
- dnl be computed as ':' in MSYS Bash.
- AC_SUBST(SEPCHAR)
- dnl Everybody supports this, except MS-DOS.
- AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
- AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
- AC_DEFINE(DIRECTORY_SEP, ['/'],
- [Character that separates directories in a file name.])
- if test "${opsys}" = "mingw32"; then
- AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')],
- [Returns true if character is a device separator.])
- AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
- [Returns true if character is a directory separator.])
- AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
- [Returns true if character is any form of separator.])
- else
- AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
- [Returns true if character is a device separator.])
- AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
- [Returns true if character is a directory separator.])
- AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
- [Returns true if character is any form of separator.])
- fi
- AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
- case $opsys in
- aix4-2)
- dnl Unfortunately without libXmu we cannot support EditRes.
- if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
- AC_DEFINE(NO_EDITRES, 1)
- fi
- ;;
- hpux*)
- dnl Assar Westerlund <assar@sics.se> says this is necessary for
- dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
- AC_DEFINE(NO_EDITRES, 1)
- ;;
- esac
- case $opsys in
- irix6-5 | sol2* | unixware )
- dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
- dnl instead, there's a system variable _sys_nsig. Unfortunately, we
- dnl need the constant to dimension an array. So wire in the appropriate
- dnl value here.
- AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
- ;;
- esac
- emacs_broken_SIGIO=no
- case $opsys in
- dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
- dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
- hpux* | irix6-5 | openbsd | sol2* | unixware )
- emacs_broken_SIGIO=yes
- ;;
- aix4-2)
- dnl On AIX Emacs uses the gmalloc.c malloc implementation. But given
- dnl the way this system works, libc functions that return malloced
- dnl memory use the libc malloc implementation. Calling xfree or
- dnl xrealloc on the results of such functions results in a crash.
- dnl
- dnl One solution for this could be to define SYSTEM_MALLOC in configure,
- dnl but that does not currently work on this system.
- dnl
- dnl It is possible to completely override the malloc implementation on
- dnl AIX, but that involves putting the malloc functions in a shared
- dnl library and setting the MALLOCTYPE environment variable to point to
- dnl that shared library.
- dnl
- dnl Emacs currently calls xrealloc on the results of get_current_dir name,
- dnl to avoid a crash just use the Emacs implementation for that function.
- dnl
- dnl FIXME We could change the AC_CHECK_FUNCS call near the start
- dnl of this file, so that we do not check for get_current_dir_name
- dnl on AIX. But that might be fragile if something else ends
- dnl up testing for get_current_dir_name as a dependency.
- AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
- get_current_dir_name should not be used.])
- ;;
- freebsd)
- dnl Circumvent a bug in FreeBSD. In the following sequence of
- dnl writes/reads on a PTY, read(2) returns bogus data:
- dnl
- dnl write(2) 1022 bytes
- dnl write(2) 954 bytes, get EAGAIN
- dnl read(2) 1024 bytes in process_read_output
- dnl read(2) 11 bytes in process_read_output
- dnl
- dnl That is, read(2) returns more bytes than have ever been written
- dnl successfully. The 1033 bytes read are the 1022 bytes written
- dnl successfully after processing (for example with CRs added if the
- dnl terminal is set up that way which it is here). The same bytes will
- dnl be seen again in a later read(2), without the CRs.
- AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
- work around an issue when reading from a PTY.])
- ;;
- esac
- case $opsys in
- gnu-* | sol2-10 )
- dnl FIXME Can't we test if this exists (eg /proc/$$)?
- AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
- ;;
- esac
- case $opsys in
- darwin | dragonfly | freebsd | netbsd | openbsd )
- AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
- close a pty to make it a controlling terminal (it is already a
- controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
- ;;
- esac
- dnl FIXME Surely we can test for this rather than hard-code it.
- case $opsys in
- netbsd | openbsd) sound_device="/dev/audio" ;;
- *) sound_device="/dev/dsp" ;;
- esac
- dnl Used in sound.c
- AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
- [Name of the default sound device.])
- dnl Emacs can read input using SIGIO and buffering characters itself,
- dnl or using CBREAK mode and making C-g cause SIGINT.
- dnl The choice is controlled by the variable interrupt_input.
- dnl
- dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
- dnl
- dnl Emacs uses the presence of the USABLE_SIGIO macro
- dnl to indicate whether or not signal-driven I/O is possible. It uses
- dnl INTERRUPT_INPUT to decide whether to use it by default.
- dnl
- dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
- dnl CBREAK mode has two disadvantages
- dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
- dnl I hear that in system V this problem does not exist.
- dnl 2) Control-G causes output to be discarded.
- dnl I do not know whether this can be fixed in system V.
- dnl
- dnl Another method of doing input is planned but not implemented.
- dnl It would have Emacs fork off a separate process
- dnl to read the input and send it to the true Emacs process
- dnl through a pipe.
- case $opsys in
- darwin | gnu-linux | gnu-kfreebsd )
- AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
- ;;
- esac
- dnl If the system's imake configuration file defines `NeedWidePrototypes'
- dnl as `NO', we must define NARROWPROTO manually. Such a define is
- dnl generated in the Makefile generated by `xmkmf'. If we don't define
- dnl NARROWPROTO, we will see the wrong function prototypes for X functions
- dnl taking float or double parameters.
- case $opsys in
- cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
- AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
- file defines `NeedWidePrototypes' as `NO'.])
- ;;
- esac
- dnl Used in process.c, this must be a loop, even if it only runs once.
- dnl (Except on SGI; see below. Take that, clarity and consistency!)
- AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
- dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
- dnl trying suffixes 0-16.
- AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
- first PTY, if PTYs are supported.])
- AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
- AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
- end of a PTY, if non-standard.])
- AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
- end of a PTY, if non-standard.])
- case $opsys in
- aix4-2 )
- AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
- dnl You allocate a pty by opening /dev/ptc to get the master side.
- dnl To get the name of the slave side, you just ttyname() the master side.
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
- ;;
- cygwin )
- AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
- dnl multi-line AC_DEFINEs are hard. :(
- AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
- ;;
- dnl FIXME? Maybe use same as freebsd - see bug#12040.
- darwin )
- AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
- dnl Not used, because PTY_ITERATION is defined.
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
- dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
- dnl But we don't have to block SIGCHLD because it is blocked in the
- dnl implementation of grantpt.
- AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (false)])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
- ;;
- gnu | openbsd )
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
- ;;
- gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd )
- dnl if HAVE_GRANTPT
- if test "x$ac_cv_func_grantpt" = xyes; then
- AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
- AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
- dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
- dnl to prevent sigchld_handler from intercepting the child's death.
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
- dnl if HAVE_POSIX_OPENPT
- if test "x$ac_cv_func_posix_openpt" = xyes; then
- AC_DEFINE(PTY_OPEN, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (false)])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- dnl if HAVE_GETPT
- elif test "x$ac_cv_func_getpt" = xyes; then
- AC_DEFINE(PTY_OPEN, [fd = getpt ()])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- else
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
- fi
- else
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
- fi
- ;;
- hpux*)
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
- AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
- ;;
- irix6-5 )
- dnl It looks like this cannot be right, because it is not a loop.
- dnl However, process.c actually does this:
- dnl # ifndef __sgi
- dnl continue;
- dnl # else
- dnl return -1;
- dnl # endif
- dnl which presumably makes it OK, since irix == sgi (?).
- dnl FIXME it seems like this special treatment is unnecessary?
- dnl Why can't irix use a single-trip loop like eg cygwin?
- AC_DEFINE(PTY_ITERATION, [])
- dnl Not used, because PTY_ITERATION is defined.
- AC_DEFINE(FIRST_PTY_LETTER, ['q'])
- AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
- dnl No need to get the pty name at all.
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- dnl No need to use sprintf to get the tty name--we get that from _getpty.
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
- ;;
- sol2* )
- dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
- dnl from intercepting that death. If any child but grantpt's should die
- dnl within, it should be caught after sigrelse(2).
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
- ;;
- unixware )
- dnl Comments are as per sol2*.
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
- ;;
- esac
- case $opsys in
- sol2* | unixware )
- dnl This change means that we don't loop through allocate_pty too
- dnl many times in the (rare) event of a failure.
- AC_DEFINE(FIRST_PTY_LETTER, ['z'])
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
- dnl Push various streams modules onto a PTY channel. Used in process.c.
- AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (xforkin, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (xforkin, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
- ;;
- esac
- AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
- "typing" a signal character on the pty.])
- case $opsys in
- dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
- dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
- aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
- AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
- ;;
- dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
- dnl FIXME Does gnu-kfreebsd have linux/version.h? It seems unlikely...
- gnu-linux | gnu-kfreebsd )
- AC_MSG_CHECKING([for signals via characters])
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
- #include <linux/version.h>
- #if LINUX_VERSION_CODE < 0x20400
- # error "Linux version too old"
- #endif
- ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
- AC_MSG_RESULT([$emacs_signals_via_chars])
- test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
- ;;
- esac
- AH_TEMPLATE(TAB3, [Undocumented.])
- case $opsys in
- darwin) AC_DEFINE(TAB3, OXTABS) ;;
- gnu | dragonfly | freebsd | netbsd | openbsd )
- AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
- AC_DEFINE(TAB3, OXTABS)
- ;;
- gnu-linux | gnu-kfreebsd )
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
- #ifndef __ia64__
- # error "not ia64"
- #endif
- ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
- [do { extern void *__libc_ia64_register_backing_store_base; __builtin_ia64_flushrs (); mark_memory (__libc_ia64_register_backing_store_base, __builtin_ia64_bsp ());} while (false)],
- [Mark a secondary stack, like the register stack on the ia64.]), [])
- ;;
- hpux*)
- AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
- run_time_remap; for HPUX.])
- ;;
- esac
- dnl This won't be used automatically yet. We also need to know, at least,
- dnl that the stack is continuous.
- AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
- registers relevant for conservative garbage collection in the jmp_buf.])
- case $opsys in
- dnl Not all the architectures are tested, but there are Debian packages
- dnl for SCM and/or Guile on them, so the technique must work. See also
- dnl comments in alloc.c concerning setjmp and gcc.
- dnl Fixme: it's probably safe to just use the GCC conditional below.
- gnu-linux | gnu-kfreebsd )
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
- #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
- || defined __alpha__ || defined __mips__ || defined __s390__ \
- || defined __arm__ || defined __powerpc__ || defined __amd64__ \
- || defined __ia64__ || defined __sh__
- /* ok */
- #else
- # error "setjmp not known to work on this arch"
- #endif
- ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
- ;;
- esac
- if test x$GCC = xyes; then
- dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
- AC_DEFINE(GC_SETJMP_WORKS, 1)
- else
- case $opsys in
- dnl irix: Tested on Irix 6.5. SCM worked on earlier versions.
- aix* | dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
- AC_DEFINE(GC_SETJMP_WORKS, 1)
- ;;
- esac
- fi dnl GCC?
- dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
- AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <setjmp.h>
- #ifdef __MINGW32__
- # define _longjmp longjmp
- #endif
- ]],
- [[jmp_buf j;
- if (! _setjmp (j))
- _longjmp (j, 1);]])],
- [emacs_cv_func__setjmp=yes],
- [emacs_cv_func__setjmp=no])])
- if test $emacs_cv_func__setjmp = yes; then
- AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
- fi
- # We need to preserve signal mask to handle C stack overflows.
- AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <setjmp.h>
- ]],
- [[sigjmp_buf j;
- if (! sigsetjmp (j, 1))
- siglongjmp (j, 1);]])],
- [emacs_cv_func_sigsetjmp=yes],
- [emacs_cv_func_sigsetjmp=no])])
- if test $emacs_cv_func_sigsetjmp = yes; then
- AC_DEFINE([HAVE_SIGSETJMP], 1,
- [Define to 1 if sigsetjmp and siglongjmp work.])
- fi
- # We need all of these features to handle C stack overflows.
- if test "$ac_cv_header_sys_resource_h" = "yes" -a \
- "$ac_cv_func_getrlimit" = "yes" -a \
- "$emacs_cv_func_sigsetjmp" = "yes" -a \
- "$emacs_cv_alternate_stack" = yes; then
- AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], 1,
- [Define to 1 if C stack overflow can be handled in some cases.])
- fi
- case $opsys in
- sol2* | unixware )
- dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
- dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs,
- dnl and this is all we need.
- AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
- ;;
- esac
- case $opsys in
- hpux* | sol2* )
- dnl Used in xfaces.c.
- AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
- some systems, where it requires time.h.])
- ;;
- esac
- dnl Define symbols to identify the version of Unix this is.
- dnl Define all the symbols that apply correctly.
- AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
- AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
- AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
- AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
- case $opsys in
- aix4-2)
- AC_DEFINE(USG, [])
- dnl This symbol should be defined on AIX Version 3 ???????
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
- #ifndef _AIX
- # error "_AIX not defined"
- #endif
- ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
- ;;
- cygwin)
- AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
- ;;
- darwin)
- dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
- dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
- dnl distinguish OS X from pure Darwin.
- AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
- ;;
- gnu-linux | gnu-kfreebsd )
- AC_DEFINE(USG, [])
- AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
- ;;
- hpux*)
- AC_DEFINE(USG, [])
- AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
- ;;
- irix6-5)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
- AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
- ;;
- mingw32)
- AC_DEFINE(DOS_NT, [])
- AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
- if test "x$ac_enable_checking" != "x" ; then
- AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
- fi
- ;;
- sol2*)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
- AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
- ;;
- unixware)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
- ;;
- esac
- AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
- [case $opsys in
- aix4-2)
- dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
- emacs_cv_usable_FIONREAD=no
- ;;
- mingw32)
- emacs_cv_usable_FIONREAD=yes
- ;;
- *)
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <sys/types.h>
- #include <sys/ioctl.h>
- #ifdef USG5_4
- # include <sys/filio.h>
- #endif
- ]],
- [[int foo = ioctl (0, FIONREAD, &foo);]])],
- [emacs_cv_usable_FIONREAD=yes],
- [emacs_cv_usable_FIONREAD=no])
- ;;
- esac])
- if test $emacs_cv_usable_FIONREAD = yes; then
- AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
- if test $emacs_broken_SIGIO = no; then
- AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <fcntl.h>
- #include <signal.h>
- ]],
- [[int foo = SIGIO | F_SETFL | FASYNC;]])],
- [emacs_cv_usable_SIGIO=yes],
- [emacs_cv_usable_SIGIO=no])],
- [emacs_cv_usable_SIGIO=yes],
- [emacs_cv_usable_SIGIO=no])
- if test $emacs_cv_usable_SIGIO = yes; then
- AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
- fi
- fi
- fi
- case $opsys in
- hpux11)
- dnl It works to open the pty's tty in the parent (Emacs), then
- dnl close and reopen it in the child.
- AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
- works to open a pty's tty in the parent process, then close and
- reopen it in the child.])
- ;;
- irix6-5)
- AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
- use VSUSP instead of VSWTCH.])
- ;;
- sol2-10)
- AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
- on Solaris.])
- ;;
- esac
- # Set up the CFLAGS for real compilation, so we can substitute it.
- CFLAGS="$REAL_CFLAGS"
- CPPFLAGS="$REAL_CPPFLAGS"
- LIBS="$REAL_LIBS"
- ## Hack to detect a buggy GCC version.
- if test "x$GCC" = xyes \
- && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
- && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
- && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
- AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
- fi
- version=$PACKAGE_VERSION
- copyright="Copyright (C) 2015 Free Software Foundation, Inc."
- AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
- [Short copyright string for this version of Emacs.])
- AC_SUBST(copyright)
- ### Specify what sort of things we'll be editing into Makefile and config.h.
- ### Use configuration here uncanonicalized to avoid exceeding size limits.
- AC_SUBST(version)
- AC_SUBST(configuration)
- ## Unused?
- AC_SUBST(canonical)
- AC_SUBST(srcdir)
- AC_SUBST(prefix)
- AC_SUBST(exec_prefix)
- AC_SUBST(bindir)
- AC_SUBST(datadir)
- AC_SUBST(sharedstatedir)
- AC_SUBST(libexecdir)
- AC_SUBST(mandir)
- AC_SUBST(infodir)
- AC_SUBST(lispdir)
- AC_SUBST(standardlisppath)
- AC_SUBST(locallisppath)
- AC_SUBST(lisppath)
- AC_SUBST(x_default_search_path)
- AC_SUBST(etcdir)
- AC_SUBST(archlibdir)
- AC_SUBST(etcdocdir)
- AC_SUBST(bitmapdir)
- AC_SUBST(gamedir)
- AC_SUBST(gameuser)
- ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
- ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
- ## end of LIBX_BASE, but nothing ever set it.
- AC_SUBST(LD_SWITCH_X_SITE)
- AC_SUBST(C_SWITCH_X_SITE)
- AC_SUBST(GNUSTEP_CFLAGS)
- AC_SUBST(CFLAGS)
- ## Used in lwlib/Makefile.in.
- AC_SUBST(X_TOOLKIT_TYPE)
- AC_SUBST(ns_appdir)
- AC_SUBST(ns_appbindir)
- AC_SUBST(ns_appresdir)
- AC_SUBST(ns_appsrc)
- AC_SUBST(GNU_OBJC_CFLAGS)
- AC_SUBST(OTHER_FILES)
- if test -n "${term_header}"; then
- AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
- [Define to the header for the built-in window system.])
- fi
- AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
- [Define to the canonical Emacs configuration name.])
- AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
- [Define to the options passed to configure.])
- AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
- define this to include extra configuration information.])
- case $opsys in
- mingw32)
- AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
- ;;
- esac
- XMENU_OBJ=
- XOBJ=
- FONT_OBJ=
- if test "${HAVE_X_WINDOWS}" = "yes" ; then
- AC_DEFINE(HAVE_X_WINDOWS, 1,
- [Define to 1 if you want to use the X window system.])
- XMENU_OBJ=xmenu.o
- XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o"
- FONT_OBJ=xfont.o
- if test "$HAVE_XFT" = "yes"; then
- FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
- elif test "$HAVE_FREETYPE" = "yes"; then
- FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
- fi
- AC_SUBST(FONT_OBJ)
- fi
- AC_SUBST(XMENU_OBJ)
- AC_SUBST(XOBJ)
- AC_SUBST(FONT_OBJ)
- WIDGET_OBJ=
- MOTIF_LIBW=
- if test "${USE_X_TOOLKIT}" != "none" ; then
- WIDGET_OBJ=widget.o
- AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
- if test "${USE_X_TOOLKIT}" = "LUCID"; then
- AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
- elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
- AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
- MOTIF_LIBW=-lXm
- case "$opsys" in
- gnu-linux)
- ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
- MOTIF_LIBW="$MOTIF_LIBW -lXpm"
- ;;
- unixware)
- ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
- ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
- MOTIF_LIBW="MOTIF_LIBW -lXimp"
- ;;
- aix4-2)
- ## olson@mcs.anl.gov says -li18n is needed by -lXm.
- MOTIF_LIBW="$MOTIF_LIBW -li18n"
- ;;
- esac
- MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
- fi
- fi
- AC_SUBST(WIDGET_OBJ)
- TOOLKIT_LIBW=
- case "$USE_X_TOOLKIT" in
- MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
- LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
- none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
- esac
- AC_SUBST(TOOLKIT_LIBW)
- if test "${opsys}" != "mingw32"; then
- if test "$USE_X_TOOLKIT" = "none"; then
- LIBXT_OTHER="\$(LIBXSM)"
- else
- LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
- fi
- fi
- AC_SUBST(LIBXT_OTHER)
- if test "${HAVE_X11}" = "yes" ; then
- AC_DEFINE(HAVE_X11, 1,
- [Define to 1 if you want to use version 11 of X windows.])
- LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
- else
- LIBX_OTHER=
- fi
- AC_SUBST(LIBX_OTHER)
- if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then
- LIBXMENU=
- elif test "$USE_X_TOOLKIT" = none; then
- LIBXMENU='$(oldXMenudir)/libXMenu11.a'
- else
- LIBXMENU='$(lwlibdir)/liblw.a'
- fi
- AC_SUBST(LIBXMENU)
- AC_CACHE_CHECK([for struct alignment],
- [emacs_cv_struct_alignment],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <stddef.h>
- struct __attribute__ ((aligned (8))) s { char c; };
- struct t { char c; struct s s; };
- char verify[offsetof (struct t, s) == 8 ? 1 : -1];
- ]])],
- [emacs_cv_struct_alignment=yes],
- [emacs_cv_struct_alignment=no])])
- if test "$emacs_cv_struct_alignment" = yes; then
- AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], 1,
- [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
- structure to an N-byte boundary.])
- fi
- if test "${GNU_MALLOC}" = "yes" ; then
- AC_DEFINE(GNU_MALLOC, 1,
- [Define to 1 if you want to use the GNU memory allocator.])
- fi
- RALLOC_OBJ=
- if test "${REL_ALLOC}" = "yes" ; then
- AC_DEFINE(REL_ALLOC, 1,
- [Define REL_ALLOC if you want to use the relocating allocator for
- buffer space.])
- test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
- fi
- AC_SUBST(RALLOC_OBJ)
- if test "$opsys" = "cygwin"; then
- CYGWIN_OBJ="sheap.o cygw32.o"
- ## Cygwin differs because of its unexec().
- PRE_ALLOC_OBJ=
- POST_ALLOC_OBJ=lastfile.o
- elif test "$opsys" = "mingw32"; then
- CYGWIN_OBJ=
- PRE_ALLOC_OBJ=
- POST_ALLOC_OBJ=lastfile.o
- else
- CYGWIN_OBJ=
- PRE_ALLOC_OBJ=lastfile.o
- POST_ALLOC_OBJ=
- fi
- AC_SUBST(CYGWIN_OBJ)
- AC_SUBST(PRE_ALLOC_OBJ)
- AC_SUBST(POST_ALLOC_OBJ)
- dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE'
- dnl verbatim defined above. The tricky name is apropos, as this hack
- dnl makes Fortify go sour!
- AH_VERBATIM([FORTIFY_SOUR],
- [/* Without the following workaround, Emacs runs slowly on OS X 10.8.
- The workaround disables some useful run-time checking, so it
- should be conditional to the platforms with the performance bug.
- Perhaps Apple will fix this some day; also see m4/extern-inline.m4. */
- #if defined __APPLE__ && defined __GNUC__
- # ifndef _DONT_USE_CTYPE_INLINE_
- # define _DONT_USE_CTYPE_INLINE_
- # endif
- # ifndef _FORTIFY_SOURCE
- # define _FORTIFY_SOURCE 0
- # endif
- #endif
- ])
- # If user asks to omit features, disable optional features that gnulib
- # might otherwise enable.
- if test "$with_features" = no && test "$enable_acl" != yes; then
- enable_acl=no
- fi
- # Configure gnulib. Although this does not affect CFLAGS or LIBS permanently.
- # it temporarily reverts them to their pre-pkg-config values,
- # because gnulib needs to work with both src (which uses the
- # pkg-config stuff) and lib-src (which does not). For example, gnulib
- # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
- # and it therefore needs to run in an environment where LIBS does not
- # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
- # for some package unrelated to lib-src.
- SAVE_CFLAGS=$CFLAGS
- SAVE_LIBS=$LIBS
- CFLAGS=$pre_PKG_CONFIG_CFLAGS
- LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
- gl_ASSERT_NO_GNULIB_POSIXCHECK
- gl_ASSERT_NO_GNULIB_TESTS
- gl_INIT
- CFLAGS=$SAVE_CFLAGS
- LIBS=$SAVE_LIBS
- if test "${opsys}" = "mingw32"; then
- CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc"
- # Remove unneeded switches from the value of CC that goes to Makefiles
- CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
- fi
- case "$opsys" in
- aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
- cygwin) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000" ;;
- darwin)
- ## The -headerpad option tells ld (see man page) to leave room at the
- ## end of the header for adding load commands. Needed for dumping.
- ## 0x1000 is enough for roughly 52 load commands on the x86_64
- ## architecture (where they are 78 bytes each). The actual number of
- ## load commands added is not consistent but normally ranges from
- ## about 14 to about 34. Setting it high gets us plenty of slop and
- ## only costs about 1.5K of wasted binary space.
- headerpad_extra=1000
- if test "$HAVE_NS" = "yes"; then
- libs_nsgui="-framework AppKit"
- if test "$NS_IMPL_COCOA" = "yes"; then
- libs_nsgui="$libs_nsgui -framework IOKit"
- fi
- else
- libs_nsgui=
- fi
- LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
- ## This is here because src/Makefile.in did some extra fiddling around
- ## with LD_SWITCH_SYSTEM. It seems cleaner to put this in
- ## LD_SWITCH_SYSTEM_TEMACS instead,
- test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
- LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
- ;;
- ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
- ## find X at run-time.
- ## When handled by cpp, this was in LD_SWITCH_SYSTEM. However, at the
- ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
- ## had not yet been defined and was expanded to null. Hence LD_SWITCH_SYSTEM
- ## had different values in configure (in ac_link) and src/Makefile.in.
- ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
- gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
- mingw32)
- ## Is it any better under MinGW64 to relocate emacs into higher addresses?
- case "$canonical" in
- x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x400000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
- *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
- esac
- ;;
- openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
- *) LD_SWITCH_SYSTEM_TEMACS= ;;
- esac
- if test x$ac_enable_profiling != x ; then
- case $opsys in
- *freebsd | gnu-linux) ;;
- *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -pg" ;;
- esac
- fi
- LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS"
- AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
- ## Common for all window systems
- if test "$window_system" != "none"; then
- AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
- AC_DEFINE(POLL_FOR_INPUT, 1, [Define if you poll periodically to detect C-g.])
- WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
- fi
- AC_SUBST(WINDOW_SYSTEM_OBJ)
- AH_TOP([/* GNU Emacs site configuration template file.
- Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2015
- Free Software Foundation, Inc.
- This file is part of GNU Emacs.
- GNU Emacs is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- GNU Emacs is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
- /* No code in Emacs #includes config.h twice, but some bits of code
- intended to work with other packages as well (like gmalloc.c)
- think they can include it as many times as they like. */
- #ifndef EMACS_CONFIG_H
- #define EMACS_CONFIG_H
- ])dnl
- AH_BOTTOM([#include <conf_post.h>
- #endif /* EMACS_CONFIG_H */
- /*
- Local Variables:
- mode: c
- End:
- */
- ])dnl
- #### Report on what we decided to do.
- #### Report GTK as a toolkit, even if it doesn't use Xt.
- #### It makes printing result more understandable as using GTK sets
- #### toolkit_scroll_bars to yes by default.
- if test "${HAVE_GTK}" = "yes"; then
- USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
- fi
- if test $USE_ACL -ne 0; then
- ACL_SUMMARY="yes $LIB_ACL"
- else
- ACL_SUMMARY=no
- fi
- echo "
- Configured for \`${canonical}'.
- Where should the build process find the source code? ${srcdir}
- What compiler should emacs be built with? ${CC} ${CFLAGS}
- Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
- Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
- Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers
- What window system should Emacs use? ${window_system}
- What toolkit should Emacs use? ${USE_X_TOOLKIT}"
- if test -n "${x_includes}"; then
- echo " Where do we find X Windows header files? ${x_includes}"
- else
- echo " Where do we find X Windows header files? Standard dirs"
- fi
- if test -n "${x_libraries}"; then
- echo " Where do we find X Windows libraries? ${x_libraries}"
- else
- echo " Where do we find X Windows libraries? Standard dirs"
- fi
- optsep=
- emacs_config_features=
- for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS \
- GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
- LIBOTF XFT ZLIB; do
- case $opt in
- NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
- *) eval val=\${HAVE_$opt} ;;
- esac
- test x"$val" = xno && continue
- AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"])
- optsep=' '
- done
- AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}",
- [Summary of some of the main features enabled by configure.])
- echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
- echo " Does Emacs use -lXpm? ${HAVE_XPM}"
- echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
- echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
- echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF"
- echo " Does Emacs use a png library? ${HAVE_PNG} $LIBPNG"
- echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
- echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
- echo " Does Emacs support sound? ${HAVE_SOUND}"
- echo " Does Emacs use -lgpm? ${HAVE_GPM}"
- echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
- echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
- echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}"
- echo " Does Emacs use a file notification library? ${NOTIFY_SUMMARY}"
- echo " Does Emacs use access control lists? ${ACL_SUMMARY}"
- echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
- echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}"
- echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}"
- echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
- echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
- echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
- echo " Does Emacs use -lxft? ${HAVE_XFT}"
- echo " Does Emacs directly use zlib? ${HAVE_ZLIB}"
- echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
- echo
- if test -n "${EMACSDATA}"; then
- echo " Environment variable EMACSDATA set to: $EMACSDATA"
- fi
- if test -n "${EMACSDOC}"; then
- echo " Environment variable EMACSDOC set to: $EMACSDOC"
- fi
- echo
- if test "$HAVE_NS" = "yes"; then
- echo
- echo "You must run \"${MAKE-make} install\" in order to test the built application.
- The installed application will go to nextstep/Emacs.app and can be
- run or moved from there."
- if test "$EN_NS_SELF_CONTAINED" = "yes"; then
- echo "The application will be fully self-contained."
- else
- echo "The lisp resources for the application will be installed under ${prefix}.
- You may need to run \"${MAKE-make} install\" with sudo. The application will fail
- to run if these resources are not installed."
- fi
- echo
- fi
- if test "${opsys}" = "cygwin"; then
- case `uname -r` in
- 1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
- echo
- ;;
- esac
- fi
- # Remove any trailing slashes in these variables.
- [test "${prefix}" != NONE &&
- prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
- test "${exec_prefix}" != NONE &&
- exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
- if test "$HAVE_NS" = "yes"; then
- if test "$NS_IMPL_GNUSTEP" = yes; then
- AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
- nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
- ns_check_file=Resources/Info-gnustep.plist
- else
- AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
- nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
- ns_check_file=Contents/Info.plist
- fi
- AC_SUBST(ns_check_file)
- fi
- dnl config.status treats $srcdir specially, so I think this is ok...
- AC_CONFIG_FILES([$srcdir/doc/man/emacs.1])
- dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
- dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
- dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
- dnl (else you get "no `Makefile.am' found for any configure output").
- dnl This will work, but you get a config.status that is not quite right
- dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
- dnl That doesn't have any obvious consequences for Emacs, but on the whole
- dnl it seems better to just live with the duplication.
- SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile nt/Makefile"
- AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
- doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
- doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
- leim/Makefile nextstep/Makefile nt/Makefile])
- dnl test/ is not present in release tarfiles.
- opt_makefile=test/automated/Makefile
- if test -f "$srcdir/$opt_makefile.in"; then
- SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
- dnl Again, it's best not to use a variable. Though you can add
- dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
- AC_CONFIG_FILES([test/automated/Makefile])
- fi
- dnl The admin/ directory used to be excluded from tarfiles.
- if test -d $srcdir/admin; then
- SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile"
- AC_CONFIG_FILES([admin/unidata/Makefile])
- AC_CONFIG_FILES([admin/grammars/Makefile])
- fi dnl -d admin
- SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
- AC_SUBST(SUBDIR_MAKEFILES_IN)
- dnl You might wonder (I did) why epaths.h is generated by running make,
- dnl rather than just letting configure generate it from epaths.in.
- dnl One reason is that the various paths are not fully expanded (see above);
- dnl eg gamedir=${prefix}/var/games/emacs.
- dnl Secondly, the GNU Coding standards require that one should be able
- dnl to run `make prefix=/some/where/else' and override the values set
- dnl by configure. This also explains the `move-if-change' test and
- dnl the use of force in the `epaths-force' rule in Makefile.in.
- AC_CONFIG_COMMANDS([src/epaths.h], [
- if test "${opsys}" = "mingw32"; then
- ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
- else
- ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
- fi || AC_MSG_ERROR(['src/epaths.h' could not be made.])
- ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
- dnl NB we have to cheat and use the ac_... version because abs_top_srcdir
- dnl is not yet set, sigh. Or we could use ../$srcdir/src/.gdbinit,
- dnl or a symlink?
- AC_CONFIG_COMMANDS([src/.gdbinit], [
- if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
- echo "source $ac_abs_top_srcdir/src/.gdbinit" > src/.gdbinit
- fi
- ])
- dnl Perhaps this would be better named doc-emacs-emacsver.texi?
- dnl See comments for etc-refcards-emacsver.tex.
- dnl Since we get a doc/emacs directory generated anyway, for the Makefile,
- dnl it is not quite the same. But we are generating in $srcdir.
- AC_CONFIG_COMMANDS([doc/emacs/emacsver.texi], [
- ${MAKE-make} -s --no-print-directory -C doc/emacs doc-emacsver || \
- AC_MSG_ERROR(['doc/emacs/emacsver.texi' could not be made.])
- ])
- dnl If we give this the more natural name, etc/refcards/emacsver.texi,
- dnl then a directory etc/refcards is created in the build directory,
- dnl which is probably harmless, but confusing (in out-of-tree builds).
- dnl (If we were to generate etc/refcards/Makefile, this might change.)
- dnl It is really $srcdir/etc/refcards/emacsver.tex that we generate.
- AC_CONFIG_COMMANDS([etc-refcards-emacsver.tex], [
- ${MAKE-make} -s MAKEFILE_NAME=do-not-make-Makefile etc-emacsver || \
- AC_MSG_ERROR(['etc/refcards/emacsver.tex' could not be made.])
- ])
- AC_OUTPUT
- test "$MAKE" = make || AC_MSG_NOTICE([Now you can run '$MAKE'.])
|