configure.ac 184 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019
  1. dnl Process this file with autoconf to produce a configure script.
  2. AC_PREREQ([2.63])
  3. AC_INIT
  4. AC_CONFIG_SRCDIR([src/SDL.c])
  5. AC_CONFIG_HEADERS([include/SDL_config.h])
  6. AC_CONFIG_AUX_DIR([build-scripts])
  7. AC_CONFIG_MACRO_DIR([acinclude])
  8. dnl Save the CFLAGS to see whether they were passed in or generated
  9. orig_CFLAGS="$CFLAGS"
  10. dnl Set various version strings - taken gratefully from the GTk sources
  11. # See docs/release_checklist.md
  12. SDL_MAJOR_VERSION=2
  13. SDL_MINOR_VERSION=29
  14. SDL_MICRO_VERSION=0
  15. SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
  16. SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
  17. AS_CASE(["$SDL_MINOR_VERSION"],
  18. [*@<:@02468@:>@],
  19. dnl Stable branch, 2.24.1 -> libSDL2-2.0.so.0.2400.1
  20. [SDL_INTERFACE_AGE="$SDL_MICRO_VERSION"],
  21. [*],
  22. dnl Development branch, 2.23.1 -> libSDL2-2.0.so.0.2301.0
  23. [SDL_INTERFACE_AGE=0])
  24. AC_SUBST(SDL_MAJOR_VERSION)
  25. AC_SUBST(SDL_MINOR_VERSION)
  26. AC_SUBST(SDL_MICRO_VERSION)
  27. AC_SUBST(SDL_INTERFACE_AGE)
  28. AC_SUBST(SDL_BINARY_AGE)
  29. AC_SUBST(SDL_VERSION)
  30. # libtool versioning
  31. LT_INIT([win32-dll])
  32. LT_LANG([Windows Resource])
  33. # For historical reasons, the library name redundantly includes the major
  34. # version twice: libSDL2-2.0.so.0.
  35. # TODO: in SDL 3, stop using -release, which will simplify it to libSDL3.so.0
  36. LT_RELEASE=2.0
  37. # Increment this if there is an incompatible change - but if that happens,
  38. # we should rename the library from SDL2 to SDL3, at which point this would
  39. # reset to 0 anyway.
  40. LT_MAJOR=0
  41. LT_AGE=`expr $SDL_BINARY_AGE - $SDL_INTERFACE_AGE`
  42. LT_CURRENT=`expr $LT_MAJOR + $LT_AGE`
  43. LT_REVISION=$SDL_INTERFACE_AGE
  44. m4_pattern_allow([^LT_])
  45. AC_SUBST(LT_RELEASE)
  46. AC_SUBST(LT_CURRENT)
  47. AC_SUBST(LT_REVISION)
  48. AC_SUBST(LT_AGE)
  49. dnl Detect the canonical build and host environments
  50. dnl AC_CANONICAL_HOST
  51. dnl Check for tools
  52. AC_PROG_AWK
  53. AC_PROG_CC
  54. AC_PROG_CXX
  55. AC_PROG_EGREP
  56. AC_PROG_FGREP
  57. AC_PROG_INSTALL
  58. AC_PROG_MAKE_SET
  59. PKG_PROG_PKG_CONFIG
  60. if [ test -z "$AWK" ]; then
  61. AC_MSG_ERROR([*** awk not found, aborting])
  62. fi
  63. AC_CHECK_PROGS([SORT], [gsort sort], [false])
  64. AS_IF([! "$SORT" -V </dev/null >/dev/null], [AC_MSG_WARN([sort(1) that supports the -V option is required to find dynamic libraries])])
  65. dnl 64-bit file offsets if possible unless --disable-largefile is specified
  66. AC_SYS_LARGEFILE
  67. dnl Make sure that srcdir is a full pathname
  68. case "$host" in
  69. *-*-mingw*)
  70. # Except on msys, where make can't handle full pathnames (bug 1972)
  71. ;;
  72. *)
  73. srcdir=`cd $srcdir && pwd`
  74. ;;
  75. esac
  76. dnl Set up the compiler and linker flags
  77. INCLUDE="-I$srcdir/include"
  78. dnl Don't use our khronos headers on QNX.
  79. case "$host" in
  80. *-*-nto-qnx*)
  81. ;;
  82. *)
  83. INCLUDE="$INCLUDE -idirafter $srcdir/src/video/khronos"
  84. ;;
  85. esac
  86. dnl use CXX for linker on Haiku
  87. case "$host" in
  88. *-*-haiku*)
  89. LINKER='$(CXX)'
  90. LIBTOOLLINKERTAG='CXX'
  91. ;;
  92. *)
  93. LINKER='$(CC)'
  94. LIBTOOLLINKERTAG='CC'
  95. ;;
  96. esac
  97. AC_SUBST(LINKER)
  98. AC_SUBST(LIBTOOLLINKERTAG)
  99. if test x$srcdir != x.; then
  100. INCLUDE="-Iinclude $INCLUDE"
  101. elif test -d .git; then
  102. AC_MSG_ERROR([
  103. *** When building from a git clone you should configure and build in a
  104. separate directory so you don't clobber SDL_config.h, SDL_revision.h
  105. ])
  106. fi
  107. BASE_CFLAGS=""
  108. BASE_LDFLAGS=""
  109. case "$host" in
  110. *-*-cygwin*)
  111. # We build SDL on cygwin without the UNIX emulation layer
  112. save_CFLAGS="$CFLAGS"
  113. have_no_cygwin=no
  114. AC_MSG_CHECKING(for GCC -mno-cygwin option)
  115. CFLAGS="$save_CFLAGS -mno-cygwin"
  116. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], [have_no_cygwin=yes],[])
  117. AC_MSG_RESULT($have_no_cygwin)
  118. CFLAGS="$save_CFLAGS"
  119. if test x$have_no_cygwin = xyes; then
  120. BASE_CFLAGS="-mno-cygwin"
  121. BASE_LDFLAGS="-mno-cygwin"
  122. fi
  123. BASE_CFLAGS="$BASE_CFLAGS -I/usr/include/mingw"
  124. ;;
  125. esac
  126. # Uncomment the following line if you want to force SDL and applications
  127. # built with it to be compiled for a particular architecture.
  128. #AX_GCC_ARCHFLAG([no], [BASE_CFLAGS="$BASE_CFLAGS $ax_cv_gcc_archflag]")
  129. BUILD_CFLAGS="$CFLAGS $CPPFLAGS -DUSING_GENERATED_CONFIG_H"
  130. # The default optimization for SDL is -O3 (Bug #31)
  131. if test "x$orig_CFLAGS" = x; then
  132. BUILD_CFLAGS=`echo $BUILD_CFLAGS | sed 's/-O2/-O3/'`
  133. fi
  134. EXTRA_CFLAGS="$INCLUDE $BASE_CFLAGS"
  135. BUILD_LDFLAGS="$LDFLAGS"
  136. EXTRA_LDFLAGS="$BASE_LDFLAGS"
  137. ## These are common directories to find software packages
  138. #for path in /usr/freeware /usr/pkg /usr/X11R6 /usr/local; do
  139. # if test -d $path/include; then
  140. # EXTRA_CFLAGS="$EXTRA_CFLAGS -I$path/include"
  141. # fi
  142. # if test -d $path/lib; then
  143. # EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$path/lib"
  144. # fi
  145. #done
  146. SDL_CFLAGS="$BASE_CFLAGS"
  147. SDL_LIBS="-lSDL2"
  148. if test "x$BASE_LDFLAGS" != x; then
  149. SDL_LIBS="$SDL_LIBS $BASE_LDFLAGS"
  150. fi
  151. if test "x$EXTRA_CFLAGS" != x; then
  152. CPPFLAGS="$CPPFLAGS $EXTRA_CFLAGS"
  153. CFLAGS="$CFLAGS $EXTRA_CFLAGS"
  154. fi
  155. if test "x$EXTRA_LDFLAGS" != x; then
  156. LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
  157. fi
  158. dnl set this to use on systems that use lib64 instead of lib
  159. base_libdir=`echo \${libdir} | sed 's/.*\/\(.*\)/\1/; q'`
  160. dnl Function to find a library in the compiler search path
  161. find_lib()
  162. {
  163. gcc_bin_path=[`$CC -print-search-dirs 2>/dev/null | $FGREP programs: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
  164. gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | $FGREP libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
  165. env_lib_path=[`echo $LIBS $LDFLAGS $* | sed 's/-L[ ]*//g'`]
  166. if test "$cross_compiling" = yes; then
  167. host_lib_path=""
  168. else
  169. host_lib_path="/usr/$base_libdir /usr/local/$base_libdir"
  170. fi
  171. for path in $env_lib_path $gcc_bin_path $gcc_lib_path $host_lib_path; do
  172. lib=[`ls -- $path/$1 2>/dev/null | sed 's,.*/,,' | "$SORT" -V -r | $AWK 'BEGIN{FS="."}{ print NF, $0 }' | "$SORT" -n -s | sed 's,[0-9]* ,,' | head -1`]
  173. if test x$lib != x; then
  174. echo $lib
  175. return
  176. fi
  177. done
  178. }
  179. dnl Check for compiler characteristics
  180. AC_C_CONST
  181. AC_C_INLINE
  182. AC_C_VOLATILE
  183. dnl See whether we want assertions for debugging/sanity checking SDL itself.
  184. AC_ARG_ENABLE(assertions,
  185. [AS_HELP_STRING([--enable-assertions],
  186. [Enable internal sanity checks (auto/disabled/release/enabled/paranoid) [default=auto]])],
  187. , enable_assertions=auto)
  188. case "$enable_assertions" in
  189. auto) # Use optimization settings to determine assertion level
  190. ;;
  191. disabled)
  192. AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 0, [ ])
  193. ;;
  194. release)
  195. AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 1, [ ])
  196. ;;
  197. enabled)
  198. AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 2, [ ])
  199. ;;
  200. paranoid)
  201. AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 3, [ ])
  202. ;;
  203. *)
  204. AC_MSG_ERROR([*** unknown assertion level. stop.])
  205. ;;
  206. esac
  207. dnl For use in static assertions
  208. EXTRA_CFLAGS="$EXTRA_CFLAGS -DSDL_BUILD_MAJOR_VERSION=$SDL_MAJOR_VERSION -DSDL_BUILD_MINOR_VERSION=$SDL_MINOR_VERSION -DSDL_BUILD_MICRO_VERSION=$SDL_MICRO_VERSION"
  209. dnl See whether we can use gcc style dependency tracking
  210. AC_ARG_ENABLE(dependency-tracking,
  211. [AS_HELP_STRING([--enable-dependency-tracking],
  212. [Use gcc -MMD -MT dependency tracking [default=yes]])],
  213. , enable_dependency_tracking=yes)
  214. if test x$enable_dependency_tracking = xyes; then
  215. have_gcc_mmd_mt=no
  216. AC_MSG_CHECKING(for GCC -MMD -MT option)
  217. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  218. #if !defined(__GNUC__) || __GNUC__ < 3
  219. #error Dependency tracking requires GCC 3.0 or newer
  220. #endif
  221. ]],[])], [have_gcc_mmd_mt=yes],[])
  222. AC_MSG_RESULT($have_gcc_mmd_mt)
  223. if test x$have_gcc_mmd_mt = xyes; then
  224. DEPENDENCY_TRACKING_OPTIONS="-MMD -MT \$@"
  225. fi
  226. fi
  227. AC_MSG_CHECKING(for linker option --no-undefined)
  228. have_no_undefined=no
  229. case "$host" in
  230. dnl Skip this on platforms where it is just simply busted.
  231. *-*-openbsd*)
  232. ;;
  233. *)
  234. save_LDFLAGS="$LDFLAGS"
  235. LDFLAGS="$LDFLAGS -Wl,--no-undefined"
  236. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [
  237. have_no_undefined=yes
  238. BUILD_LDFLAGS="$BUILD_LDFLAGS -Wl,--no-undefined"
  239. ],[])
  240. LDFLAGS="$save_LDFLAGS"
  241. ;;
  242. esac
  243. AC_MSG_RESULT($have_no_undefined)
  244. AC_MSG_CHECKING(for linker option --dynamicbase)
  245. have_dynamicbase=no
  246. case "$host" in
  247. *)
  248. save_LDFLAGS="$LDFLAGS"
  249. LDFLAGS="$LDFLAGS -Wl,--dynamicbase"
  250. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [
  251. have_dynamicbase=yes
  252. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--dynamicbase"
  253. ],[])
  254. LDFLAGS="$save_LDFLAGS"
  255. ;;
  256. esac
  257. AC_MSG_RESULT($have_dynamicbase)
  258. AC_MSG_CHECKING(for linker option --nxcompat)
  259. have_nxcompat=no
  260. case "$host" in
  261. *)
  262. save_LDFLAGS="$LDFLAGS"
  263. LDFLAGS="$LDFLAGS -Wl,--nxcompat"
  264. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [
  265. have_nxcompat=yes
  266. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--nxcompat"
  267. ],[])
  268. LDFLAGS="$save_LDFLAGS"
  269. ;;
  270. esac
  271. AC_MSG_RESULT($have_nxcompat)
  272. AC_MSG_CHECKING(for linker option --high-entropy-va)
  273. have_high_entropy_va=no
  274. case "$host" in
  275. *)
  276. save_LDFLAGS="$LDFLAGS"
  277. LDFLAGS="$LDFLAGS -Wl,--high-entropy-va"
  278. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [
  279. have_high_entropy_va=yes
  280. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--high-entropy-va"
  281. ],[])
  282. LDFLAGS="$save_LDFLAGS"
  283. ;;
  284. esac
  285. AC_MSG_RESULT($have_high_entropy_va)
  286. dnl See whether we are allowed to use the system C library
  287. AC_ARG_ENABLE(libc,
  288. [AS_HELP_STRING([--enable-libc], [Use the system C library [default=yes]])],
  289. , enable_libc=yes)
  290. dnl See whether we are allowed to use system iconv
  291. AC_ARG_ENABLE(system-iconv,
  292. [AS_HELP_STRING([--enable-system-iconv], [Use iconv() from system-installed libraries [default=yes]])],
  293. , enable_system_iconv=yes)
  294. dnl See whether we prefer libiconv over libc
  295. AC_ARG_ENABLE(libiconv,
  296. [AS_HELP_STRING([--enable-libiconv], [Prefer iconv() from libiconv, if available, over libc version [default=no]])],
  297. , enable_libiconv=no)
  298. if test x$enable_libc = xyes; then
  299. AC_DEFINE(HAVE_LIBC, 1, [ ])
  300. dnl Check for C library headers
  301. dnl AC_CHECK_INCLUDES_DEFAULT is an autoconf-2.7x thing where AC_HEADER_STDC is deprecated.
  302. m4_ifdef([AC_CHECK_INCLUDES_DEFAULT], [AC_CHECK_INCLUDES_DEFAULT], [AC_HEADER_STDC])
  303. AC_CHECK_HEADERS(sys/types.h stdio.h stdlib.h stddef.h stdarg.h malloc.h memory.h string.h strings.h wchar.h inttypes.h stdint.h limits.h ctype.h math.h float.h iconv.h signal.h)
  304. dnl Check for typedefs, structures, etc.
  305. AC_TYPE_SIZE_T
  306. dnl Check for defines
  307. AC_CHECK_DEFINE(M_PI, math.h)
  308. AC_FUNC_ALLOCA
  309. dnl Checks for library functions.
  310. AC_CHECK_FUNC(mprotect,
  311. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  312. #include <sys/types.h>
  313. #include <sys/mman.h>
  314. ]],[])], [
  315. AC_DEFINE(HAVE_MPROTECT, 1, [ ])
  316. ],[]),
  317. )
  318. AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv bsearch qsort abs bcopy memset memcmp memcpy memmove wcslen wcslcpy wcslcat _wcsdup wcsdup wcsstr wcscmp wcsncmp wcscasecmp _wcsicmp wcsncasecmp _wcsnicmp strlen strlcpy strlcat _strrev _strupr _strlwr index rindex strchr strrchr strstr strtok_r itoa _ltoa _uitoa _ultoa strtod strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp strcasestr vsscanf vsnprintf fopen64 fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname getauxval elf_aux_info poll _Exit)
  319. AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
  320. AC_CHECK_FUNCS(acos acosf asin asinf atan atanf atan2 atan2f ceil ceilf copysign copysignf cos cosf exp expf fabs fabsf floor floorf trunc truncf fmod fmodf log logf log10 log10f lround lroundf pow powf round roundf scalbn scalbnf sin sinf sqrt sqrtf tan tanf)
  321. if test x$enable_system_iconv = xyes; then
  322. AC_MSG_CHECKING(for iconv in libc)
  323. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  324. #define LIBICONV_PLUG 1 /* in case libiconv header is in include path */
  325. #include <stddef.h>
  326. #include <iconv.h>
  327. ]],[[
  328. iconv_open(NULL,NULL);
  329. ]])], [have_libc_iconv=yes],[have_libc_iconv=no])
  330. AC_MSG_RESULT($have_libc_iconv)
  331. AC_MSG_CHECKING(for iconv in libiconv)
  332. save_LIBS="$LIBS"
  333. LIBS="$LIBS -liconv"
  334. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  335. #include <stddef.h>
  336. #include <iconv.h>
  337. ]],[[
  338. iconv_open(NULL,NULL);
  339. ]])], [have_libiconv=yes],[have_libiconv=no])
  340. LIBS="$save_LIBS"
  341. AC_MSG_RESULT($have_libiconv)
  342. if test x$have_libc_iconv = xyes || test x$have_libiconv = xyes; then
  343. AC_DEFINE(HAVE_ICONV,1,[ ])
  344. if test x$have_libiconv = xyes; then
  345. if test x$have_libc_iconv != xyes; then
  346. use_libiconv=yes
  347. elif test x$enable_libiconv = xyes; then
  348. use_libiconv=yes
  349. fi
  350. fi
  351. if test x$use_libiconv = xyes; then
  352. AC_MSG_RESULT([-- Using iconv() from libiconv])
  353. AC_DEFINE(SDL_USE_LIBICONV,1,[ ])
  354. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"
  355. else
  356. AC_MSG_RESULT([-- Using iconv() from libc])
  357. fi
  358. fi
  359. fi
  360. AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE([HAVE_SA_SIGACTION], 1, [ ])], ,[#include <signal.h>])
  361. dnl Check for additional non-standard headers
  362. AC_CHECK_HEADERS(libunwind.h)
  363. fi
  364. dnl AC_CHECK_SIZEOF(void*)
  365. dnl See whether we can use gcc atomic operations on this architecture
  366. AC_ARG_ENABLE(gcc-atomics,
  367. [AS_HELP_STRING([--enable-gcc-atomics],
  368. [Use gcc builtin atomics [default=yes]])],
  369. , enable_gcc_atomics=yes)
  370. if test x$enable_gcc_atomics = xyes; then
  371. have_gcc_atomics=no
  372. AC_MSG_CHECKING(for GCC builtin atomic operations)
  373. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[[
  374. int a;
  375. void *x, *y, *z;
  376. __sync_lock_test_and_set(&a, 4);
  377. __sync_lock_test_and_set(&x, y);
  378. __sync_fetch_and_add(&a, 1);
  379. __sync_bool_compare_and_swap(&a, 5, 10);
  380. __sync_bool_compare_and_swap(&x, y, z);
  381. ]])],
  382. [have_gcc_atomics=yes],[])
  383. AC_MSG_RESULT($have_gcc_atomics)
  384. if test x$have_gcc_atomics = xyes; then
  385. AC_DEFINE(HAVE_GCC_ATOMICS, 1, [ ])
  386. else
  387. # See if we have the minimum operation needed for GCC atomics
  388. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[[
  389. int a;
  390. __sync_lock_test_and_set(&a, 1);
  391. __sync_lock_release(&a);
  392. ]])], [have_gcc_sync_lock_test_and_set=yes],[])
  393. if test x$have_gcc_sync_lock_test_and_set = xyes; then
  394. AC_DEFINE(HAVE_GCC_SYNC_LOCK_TEST_AND_SET, 1, [ ])
  395. fi
  396. fi
  397. fi
  398. # Standard C sources
  399. SOURCES="$SOURCES $srcdir/src/*.c"
  400. SOURCES="$SOURCES $srcdir/src/atomic/*.c"
  401. SOURCES="$SOURCES $srcdir/src/audio/*.c"
  402. SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c"
  403. SOURCES="$SOURCES $srcdir/src/dynapi/*.c"
  404. SOURCES="$SOURCES $srcdir/src/events/*.c"
  405. SOURCES="$SOURCES $srcdir/src/file/*.c"
  406. SOURCES="$SOURCES $srcdir/src/haptic/*.c"
  407. SOURCES="$SOURCES $srcdir/src/hidapi/*.c"
  408. SOURCES="$SOURCES $srcdir/src/joystick/*.c"
  409. SOURCES="$SOURCES $srcdir/src/libm/*.c"
  410. SOURCES="$SOURCES $srcdir/src/misc/*.c"
  411. SOURCES="$SOURCES $srcdir/src/power/*.c"
  412. #SOURCES="$SOURCES $srcdir/src/filesystem/*.c"
  413. SOURCES="$SOURCES $srcdir/src/render/*.c"
  414. SOURCES="$SOURCES $srcdir/src/render/*/*.c"
  415. SOURCES="$SOURCES $srcdir/src/sensor/*.c"
  416. SOURCES="$SOURCES $srcdir/src/stdlib/*.c"
  417. SOURCES="$SOURCES $srcdir/src/thread/*.c"
  418. SOURCES="$SOURCES $srcdir/src/timer/*.c"
  419. SOURCES="$SOURCES $srcdir/src/video/*.c"
  420. SOURCES="$SOURCES $srcdir/src/video/yuv2rgb/*.c"
  421. SOURCES="$SOURCES $srcdir/src/locale/*.c"
  422. dnl Enable/disable various subsystems of the SDL library
  423. case "$host" in
  424. *-*-emscripten*)
  425. default_atomic=no
  426. ;;
  427. *)
  428. default_atomic=yes
  429. ;;
  430. esac
  431. AC_ARG_ENABLE(atomic,
  432. [AS_HELP_STRING([--enable-atomic], [Enable the atomic operations subsystem [default=yes]])],
  433. , enable_atomic=$default_atomic)
  434. if test x$enable_atomic != xyes; then
  435. AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ])
  436. else
  437. SUMMARY_modules="${SUMMARY_modules} atomic"
  438. fi
  439. AC_ARG_ENABLE(audio,
  440. [AS_HELP_STRING([--enable-audio], [Enable the audio subsystem [default=yes]])],
  441. , enable_audio=yes)
  442. if test x$enable_audio != xyes; then
  443. AC_DEFINE(SDL_AUDIO_DISABLED, 1, [ ])
  444. else
  445. SUMMARY_modules="${SUMMARY_modules} audio"
  446. fi
  447. AC_ARG_ENABLE(video,
  448. [AS_HELP_STRING([--enable-video], [Enable the video subsystem [default=yes]])],
  449. , enable_video=yes)
  450. if test x$enable_video != xyes; then
  451. AC_DEFINE(SDL_VIDEO_DISABLED, 1, [ ])
  452. else
  453. SUMMARY_modules="${SUMMARY_modules} video"
  454. fi
  455. AC_ARG_ENABLE(render,
  456. [AS_HELP_STRING([--enable-render], [Enable the render subsystem [default=yes]])],
  457. , enable_render=yes)
  458. if test x$enable_render != xyes; then
  459. AC_DEFINE(SDL_RENDER_DISABLED, 1, [ ])
  460. else
  461. SUMMARY_modules="${SUMMARY_modules} render"
  462. fi
  463. AC_ARG_ENABLE(events,
  464. [AS_HELP_STRING([--enable-events], [Enable the events subsystem [default=yes]])],
  465. , enable_events=yes)
  466. if test x$enable_events != xyes; then
  467. AC_DEFINE(SDL_EVENTS_DISABLED, 1, [ ])
  468. else
  469. SUMMARY_modules="${SUMMARY_modules} events"
  470. fi
  471. AC_ARG_ENABLE(joystick,
  472. [AS_HELP_STRING([--enable-joystick], [Enable the joystick subsystem [default=yes]])],
  473. , enable_joystick=yes)
  474. if test x$enable_joystick != xyes; then
  475. AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
  476. else
  477. SUMMARY_modules="${SUMMARY_modules} joystick"
  478. fi
  479. AC_ARG_ENABLE(haptic,
  480. [AS_HELP_STRING([--enable-haptic], [Enable the haptic (force feedback) subsystem [default=yes]])],
  481. , enable_haptic=yes)
  482. if test x$enable_haptic != xyes; then
  483. AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
  484. else
  485. SUMMARY_modules="${SUMMARY_modules} haptic"
  486. fi
  487. AC_ARG_ENABLE(hidapi,
  488. [AS_HELP_STRING([--enable-hidapi], [Enable the HIDAPI subsystem [default=yes]])],
  489. , enable_hidapi=yes)
  490. if test x$enable_hidapi != xyes; then
  491. AC_DEFINE(SDL_HIDAPI_DISABLED, 1, [ ])
  492. else
  493. SUMMARY_modules="${SUMMARY_modules} hidapi"
  494. fi
  495. AC_ARG_ENABLE(sensor,
  496. [AS_HELP_STRING([--enable-sensor], [Enable the sensor subsystem [default=yes]])],
  497. , enable_sensor=yes)
  498. if test x$enable_sensor != xyes; then
  499. AC_DEFINE(SDL_SENSOR_DISABLED, 1, [ ])
  500. else
  501. SUMMARY_modules="${SUMMARY_modules} sensor"
  502. fi
  503. AC_ARG_ENABLE(power,
  504. [AS_HELP_STRING([--enable-power], [Enable the power subsystem [default=yes]])],
  505. , enable_power=yes)
  506. if test x$enable_power != xyes; then
  507. AC_DEFINE(SDL_POWER_DISABLED, 1, [ ])
  508. else
  509. SUMMARY_modules="${SUMMARY_modules} power"
  510. fi
  511. AC_ARG_ENABLE(filesystem,
  512. [AS_HELP_STRING([--enable-filesystem], [Enable the filesystem subsystem [default=yes]])],
  513. , enable_filesystem=yes)
  514. if test x$enable_filesystem != xyes; then
  515. AC_DEFINE(SDL_FILESYSTEM_DISABLED, 1, [ ])
  516. else
  517. SUMMARY_modules="${SUMMARY_modules} filesystem"
  518. fi
  519. # Many subsystems depend on threads, so leave them enabled by default
  520. #AC_ARG_ENABLE(threads,
  521. #[AS_HELP_STRING([--enable-threads], [Enable the threading subsystem [default=yes]])],
  522. # , enable_threads=yes)
  523. enable_threads=yes
  524. if test x$enable_threads != xyes; then
  525. AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
  526. else
  527. SUMMARY_modules="${SUMMARY_modules} threads"
  528. fi
  529. AC_ARG_ENABLE(timers,
  530. [AS_HELP_STRING([--enable-timers], [Enable the timer subsystem [default=yes]])],
  531. , enable_timers=yes)
  532. if test x$enable_timers != xyes; then
  533. AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
  534. else
  535. SUMMARY_modules="${SUMMARY_modules} timers"
  536. fi
  537. AC_ARG_ENABLE(file,
  538. [AS_HELP_STRING([--enable-file], [Enable the file subsystem [default=yes]])],
  539. , enable_file=yes)
  540. if test x$enable_file != xyes; then
  541. AC_DEFINE(SDL_FILE_DISABLED, 1, [ ])
  542. else
  543. SUMMARY_modules="${SUMMARY_modules} file"
  544. fi
  545. AC_ARG_ENABLE(misc,
  546. [AS_HELP_STRING([--enable-misc], [Enable the misc subsystem [default=yes]])],
  547. , enable_misc=yes)
  548. if test x$enable_misc != xyes; then
  549. AC_DEFINE(SDL_MISC_DISABLED, 1, [ ])
  550. else
  551. SUMMARY_modules="${SUMMARY_modules} misc"
  552. fi
  553. AC_ARG_ENABLE(locale,
  554. [AS_HELP_STRING([--enable-locale], [Enable the locale subsystem [default=yes]])],
  555. , enable_locale=yes)
  556. if test x$enable_locale != xyes; then
  557. AC_DEFINE(SDL_LOCALE_DISABLED, 1, [ ])
  558. else
  559. SUMMARY_modules="${SUMMARY_modules} locale"
  560. fi
  561. AC_ARG_ENABLE(loadso,
  562. [AS_HELP_STRING([--enable-loadso], [Enable the shared object loading subsystem [default=yes]])],
  563. , enable_loadso=yes)
  564. if test x$enable_loadso != xyes; then
  565. AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
  566. else
  567. SUMMARY_modules="${SUMMARY_modules} loadso"
  568. fi
  569. AC_ARG_ENABLE(cpuinfo,
  570. [AS_HELP_STRING([--enable-cpuinfo], [Enable the cpuinfo subsystem [default=yes]])],
  571. , enable_cpuinfo=yes)
  572. if test x$enable_cpuinfo != xyes; then
  573. AC_DEFINE(SDL_CPUINFO_DISABLED, 1, [ ])
  574. else
  575. SUMMARY_modules="${SUMMARY_modules} cpuinfo"
  576. fi
  577. AC_ARG_ENABLE(assembly,
  578. [AS_HELP_STRING([--enable-assembly], [Enable assembly routines [default=yes]])],
  579. , enable_assembly=yes)
  580. if test x$enable_assembly = xyes; then
  581. SUMMARY_modules="${SUMMARY_modules} assembly"
  582. # Make sure that we don't generate floating point code that would
  583. # cause illegal instruction exceptions on older processors
  584. case "$host" in
  585. *-*-darwin*)
  586. # Don't need to worry about Apple hardware, it's all SSE capable
  587. default_ssemath=yes
  588. ;;
  589. *64-*-*)
  590. # x86 64-bit architectures all have SSE instructions
  591. default_ssemath=yes
  592. ;;
  593. *)
  594. default_ssemath=no
  595. ;;
  596. esac
  597. AC_ARG_ENABLE(ssemath,
  598. [AS_HELP_STRING([--enable-ssemath], [Allow GCC to use SSE floating point math [default=maybe]])],
  599. , enable_ssemath=$default_ssemath)
  600. if test x$enable_ssemath = xno; then
  601. if test x$have_gcc_sse = xyes -o x$have_gcc_sse2 = xyes -o x$have_gcc_sse3 = xyes; then
  602. EXTRA_CFLAGS="$EXTRA_CFLAGS -mfpmath=387"
  603. fi
  604. fi
  605. dnl Check for various instruction support
  606. AC_ARG_ENABLE(mmx,
  607. [AS_HELP_STRING([--enable-mmx], [use MMX assembly routines [default=yes]])],
  608. , enable_mmx=yes)
  609. if test x$enable_mmx = xyes; then
  610. save_CFLAGS="$CFLAGS"
  611. have_gcc_mmx=no
  612. AC_MSG_CHECKING(for GCC -mmmx option)
  613. mmx_CFLAGS="-mmmx"
  614. CFLAGS="$save_CFLAGS $mmx_CFLAGS"
  615. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  616. #ifdef __MINGW32__
  617. #include <_mingw.h>
  618. #ifdef __MINGW64_VERSION_MAJOR
  619. #include <intrin.h>
  620. #else
  621. #include <mmintrin.h>
  622. #endif
  623. #else
  624. #include <mmintrin.h>
  625. #endif
  626. #ifndef __MMX__
  627. #error Assembler CPP flag not enabled
  628. #endif
  629. ]],[])], [have_gcc_mmx=yes],[])
  630. AC_MSG_RESULT($have_gcc_mmx)
  631. CFLAGS="$save_CFLAGS"
  632. if test x$have_gcc_mmx = xyes; then
  633. EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS"
  634. SUMMARY_math="${SUMMARY_math} mmx"
  635. fi
  636. fi
  637. AC_ARG_ENABLE(3dnow,
  638. [AS_HELP_STRING([--enable-3dnow], [use 3DNow! assembly routines [default=yes]])],
  639. , enable_3dnow=yes)
  640. if test x$enable_3dnow = xyes; then
  641. save_CFLAGS="$CFLAGS"
  642. have_gcc_3dnow=no
  643. AC_MSG_CHECKING(for GCC -m3dnow option)
  644. amd3dnow_CFLAGS="-m3dnow"
  645. CFLAGS="$save_CFLAGS $amd3dnow_CFLAGS"
  646. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  647. #include <mm3dnow.h>
  648. #ifndef __3dNOW__
  649. #error Assembler CPP flag not enabled
  650. #endif
  651. ]], [[
  652. void *p = 0;
  653. _m_prefetch(p);
  654. ]])],
  655. [have_gcc_3dnow=yes],[])
  656. AC_MSG_RESULT($have_gcc_3dnow)
  657. CFLAGS="$save_CFLAGS"
  658. if test x$have_gcc_3dnow = xyes; then
  659. EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS"
  660. SUMMARY_math="${SUMMARY_math} 3dnow"
  661. fi
  662. fi
  663. AC_ARG_ENABLE(sse,
  664. [AS_HELP_STRING([--enable-sse], [use SSE assembly routines [default=yes]])],
  665. , enable_sse=yes)
  666. if test x$enable_sse = xyes; then
  667. save_CFLAGS="$CFLAGS"
  668. have_gcc_sse=no
  669. AC_MSG_CHECKING(for GCC -msse option)
  670. sse_CFLAGS="-msse"
  671. CFLAGS="$save_CFLAGS $sse_CFLAGS"
  672. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  673. #ifdef __MINGW32__
  674. #include <_mingw.h>
  675. #ifdef __MINGW64_VERSION_MAJOR
  676. #include <intrin.h>
  677. #else
  678. #include <xmmintrin.h>
  679. #endif
  680. #else
  681. #include <xmmintrin.h>
  682. #endif
  683. #ifndef __SSE__
  684. #error Assembler CPP flag not enabled
  685. #endif
  686. ]],[])], [have_gcc_sse=yes],[])
  687. AC_MSG_RESULT($have_gcc_sse)
  688. CFLAGS="$save_CFLAGS"
  689. if test x$have_gcc_sse = xyes; then
  690. EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS"
  691. SUMMARY_math="${SUMMARY_math} sse"
  692. fi
  693. fi
  694. AC_ARG_ENABLE(sse2,
  695. [AS_HELP_STRING([--enable-sse2], [use SSE2 assembly routines [default=maybe]])],
  696. , enable_sse2=$default_ssemath)
  697. if test x$enable_sse2 = xyes; then
  698. save_CFLAGS="$CFLAGS"
  699. have_gcc_sse2=no
  700. AC_MSG_CHECKING(for GCC -msse2 option)
  701. sse2_CFLAGS="-msse2"
  702. CFLAGS="$save_CFLAGS $sse2_CFLAGS"
  703. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  704. #ifdef __MINGW32__
  705. #include <_mingw.h>
  706. #ifdef __MINGW64_VERSION_MAJOR
  707. #include <intrin.h>
  708. #else
  709. #include <emmintrin.h>
  710. #endif
  711. #else
  712. #include <emmintrin.h>
  713. #endif
  714. #ifndef __SSE2__
  715. #error Assembler CPP flag not enabled
  716. #endif
  717. ]],[])], [have_gcc_sse2=yes],[])
  718. AC_MSG_RESULT($have_gcc_sse2)
  719. CFLAGS="$save_CFLAGS"
  720. if test x$have_gcc_sse2 = xyes; then
  721. EXTRA_CFLAGS="$EXTRA_CFLAGS $sse2_CFLAGS"
  722. SUMMARY_math="${SUMMARY_math} sse2"
  723. fi
  724. fi
  725. AC_ARG_ENABLE(sse3,
  726. [AS_HELP_STRING([--enable-sse3], [use SSE3 assembly routines [default=maybe]])],
  727. , enable_sse3=$default_ssemath)
  728. if test x$enable_sse3 = xyes; then
  729. save_CFLAGS="$CFLAGS"
  730. have_gcc_sse3=no
  731. AC_MSG_CHECKING(for GCC -msse3 option)
  732. sse3_CFLAGS="-msse3"
  733. CFLAGS="$save_CFLAGS $sse3_CFLAGS"
  734. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  735. #ifdef __MINGW32__
  736. #include <_mingw.h>
  737. #ifdef __MINGW64_VERSION_MAJOR
  738. #include <intrin.h>
  739. #else
  740. #include <pmmintrin.h>
  741. #endif
  742. #else
  743. #include <pmmintrin.h>
  744. #endif
  745. #ifndef __SSE2__
  746. #error Assembler CPP flag not enabled
  747. #endif
  748. ]],[])], [have_gcc_sse3=yes],[])
  749. AC_MSG_RESULT($have_gcc_sse3)
  750. CFLAGS="$save_CFLAGS"
  751. if test x$have_gcc_sse3 = xyes; then
  752. EXTRA_CFLAGS="$EXTRA_CFLAGS $sse3_CFLAGS"
  753. SUMMARY_math="${SUMMARY_math} sse3"
  754. fi
  755. fi
  756. AC_MSG_CHECKING(for immintrin.h)
  757. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <immintrin.h>]])],
  758. [have_immintrin_h_hdr=yes],[have_immintrin_h_hdr=no])
  759. AC_MSG_RESULT($have_immintrin_h_hdr)
  760. if test x$have_immintrin_h_hdr = xyes; then
  761. AC_DEFINE(HAVE_IMMINTRIN_H, 1, [ ])
  762. fi
  763. AC_ARG_ENABLE(altivec,
  764. [AS_HELP_STRING([--enable-altivec], [use Altivec assembly routines [default=yes]])],
  765. , enable_altivec=yes)
  766. if test x$enable_altivec = xyes; then
  767. save_CFLAGS="$CFLAGS"
  768. have_gcc_altivec=no
  769. have_altivec_h_hdr=no
  770. altivec_CFLAGS="-maltivec"
  771. CFLAGS="$save_CFLAGS $altivec_CFLAGS"
  772. AC_MSG_CHECKING(for Altivec with GCC altivec.h and -maltivec option)
  773. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  774. #include <altivec.h>
  775. vector unsigned int vzero() {
  776. return vec_splat_u32(0);
  777. }
  778. ]],[])], [
  779. have_gcc_altivec=yes
  780. have_altivec_h_hdr=yes
  781. ],[])
  782. AC_MSG_RESULT($have_gcc_altivec)
  783. if test x$have_gcc_altivec = xno; then
  784. AC_MSG_CHECKING(for Altivec with GCC -maltivec option)
  785. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  786. vector unsigned int vzero() {
  787. return vec_splat_u32(0);
  788. }
  789. ]],[])], [have_gcc_altivec=yes],[])
  790. AC_MSG_RESULT($have_gcc_altivec)
  791. fi
  792. if test x$have_gcc_altivec = xno; then
  793. AC_MSG_CHECKING(for Altivec with GCC altivec.h and -faltivec option)
  794. altivec_CFLAGS="-faltivec"
  795. CFLAGS="$save_CFLAGS $altivec_CFLAGS"
  796. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  797. #include <altivec.h>
  798. vector unsigned int vzero() {
  799. return vec_splat_u32(0);
  800. }
  801. ]],[])], [
  802. have_gcc_altivec=yes
  803. have_altivec_h_hdr=yes
  804. ],[])
  805. AC_MSG_RESULT($have_gcc_altivec)
  806. fi
  807. if test x$have_gcc_altivec = xno; then
  808. AC_MSG_CHECKING(for Altivec with GCC -faltivec option)
  809. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  810. vector unsigned int vzero() {
  811. return vec_splat_u32(0);
  812. }
  813. ]],[])], [have_gcc_altivec=yes],[])
  814. AC_MSG_RESULT($have_gcc_altivec)
  815. fi
  816. CFLAGS="$save_CFLAGS"
  817. if test x$have_gcc_altivec = xyes; then
  818. AC_DEFINE(SDL_ALTIVEC_BLITTERS, 1, [ ])
  819. if test x$have_altivec_h_hdr = xyes; then
  820. AC_DEFINE(HAVE_ALTIVEC_H, 1, [ ])
  821. fi
  822. EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
  823. SUMMARY_math="${SUMMARY_math} altivec"
  824. fi
  825. fi
  826. fi
  827. AC_ARG_ENABLE(lsx,
  828. [AS_HELP_STRING([--enable-lsx], [use LSX assembly routines [default=yes]])],
  829. , enable_lsx=yes)
  830. if test x$enable_lsx = xyes; then
  831. save_CFLAGS="$CFLAGS"
  832. have_gcc_lsx=no
  833. AC_MSG_CHECKING(for GCC -mlsx option)
  834. lsx_CFLAGS="-mlsx"
  835. CFLAGS="$save_CFLAGS $lsx_CFLAGS"
  836. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  837. #ifndef __loongarch_sx
  838. #error Assembler CPP flag not enabled
  839. #endif
  840. ]], [])], [have_gcc_lsx=yes], [])
  841. AC_MSG_RESULT($have_gcc_lsx)
  842. CFLAGS="$save_CFLAGS"
  843. if test x$have_gcc_lsx = xyes; then
  844. EXTRA_CFLAGS="$EXTRA_CFLAGS $lsx_CFLAGS"
  845. SUMMARY_math="${SUMMARY_math} lsx"
  846. fi
  847. fi
  848. AC_MSG_CHECKING(for lsxintrin.h)
  849. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <lsxintrin.h>]])],
  850. [have_lsxintrin_h_hdr=yes],[have_lsxintrin_h_hdr=no])
  851. AC_MSG_RESULT($have_lsxintrin_h_hdr)
  852. if test x$have_lsxintrin_h_hdr = xyes; then
  853. AC_DEFINE(HAVE_LSXINTRIN_H, 1, [ ])
  854. fi
  855. AC_ARG_ENABLE(lasx,
  856. [AS_HELP_STRING([--enable-lasx], [use LASX assembly routines [default=yes]])],
  857. , enable_LASX=yes)
  858. if test x$enable_LASX = xyes; then
  859. save_CFLAGS="$CFLAGS"
  860. have_gcc_lasx=no
  861. AC_MSG_CHECKING(for GCC -mlasx option)
  862. lasx_CFLAGS="-mlasx"
  863. CFLAGS="$save_CFLAGS $lasx_CFLAGS"
  864. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  865. #ifndef __loongarch_asx
  866. #error Assembler CPP flag not enabled
  867. #endif
  868. ]], [])], [have_gcc_lasx=yes], [])
  869. AC_MSG_RESULT($have_gcc_lasx)
  870. CFLAGS="$save_CFLAGS"
  871. if test x$have_gcc_lasx = xyes; then
  872. EXTRA_CFLAGS="$EXTRA_CFLAGS $lasx_CFLAGS"
  873. SUMMARY_math="${SUMMARY_math} lasx"
  874. fi
  875. fi
  876. AC_MSG_CHECKING(for lasxintrin.h)
  877. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <lasxintrin.h>]])],
  878. [have_lasxintrin_h_hdr=yes],[have_lasxintrin_h_hdr=no])
  879. AC_MSG_RESULT($have_lasxintrin_h_hdr)
  880. if test x$have_lasxintrin_h_hdr = xyes; then
  881. AC_DEFINE(HAVE_LASXINTRIN_H, 1, [ ])
  882. fi
  883. dnl See if the OSS audio interface is supported
  884. CheckOSS()
  885. {
  886. AC_ARG_ENABLE(oss,
  887. [AS_HELP_STRING([--enable-oss], [support the OSS audio API [default=maybe]])],
  888. , enable_oss=maybe)
  889. if test x$enable_oss = xmaybe; then
  890. enable_oss=yes
  891. fi
  892. if test x$enable_audio = xyes -a x$enable_oss = xyes; then
  893. AC_MSG_CHECKING(for OSS audio support)
  894. have_oss=no
  895. if test x$have_oss != xyes; then
  896. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  897. #include <sys/soundcard.h>
  898. ]], [[
  899. int arg = SNDCTL_DSP_SETFRAGMENT;
  900. ]])], [have_oss=yes],[])
  901. fi
  902. AC_MSG_RESULT($have_oss)
  903. if test x$have_oss = xyes; then
  904. SUMMARY_audio="${SUMMARY_audio} oss"
  905. AC_DEFINE(SDL_AUDIO_DRIVER_OSS, 1, [ ])
  906. SOURCES="$SOURCES $srcdir/src/audio/dsp/*.c"
  907. have_audio=yes
  908. # We may need to link with ossaudio emulation library
  909. case "$host" in
  910. *-*-netbsd*)
  911. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lossaudio";;
  912. esac
  913. fi
  914. fi
  915. }
  916. dnl See if the ALSA audio interface is supported
  917. CheckALSA()
  918. {
  919. AC_ARG_ENABLE(alsa,
  920. [AS_HELP_STRING([--enable-alsa], [support the ALSA audio API [default=yes]])],
  921. , enable_alsa=yes)
  922. if test x$enable_audio = xyes -a x$enable_alsa = xyes; then
  923. AM_PATH_ALSA(1.0.11, have_alsa=yes, have_alsa=no)
  924. # Restore all flags from before the ALSA detection runs
  925. CFLAGS="$alsa_save_CFLAGS"
  926. LDFLAGS="$alsa_save_LDFLAGS"
  927. LIBS="$alsa_save_LIBS"
  928. if test x$have_alsa = xyes; then
  929. AC_ARG_ENABLE(alsa-shared,
  930. [AS_HELP_STRING([--enable-alsa-shared], [dynamically load ALSA audio support [default=yes]])],
  931. , enable_alsa_shared=yes)
  932. alsa_lib=[`find_lib "libasound.so.*" "$ALSA_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  933. AC_DEFINE(SDL_AUDIO_DRIVER_ALSA, 1, [ ])
  934. SOURCES="$SOURCES $srcdir/src/audio/alsa/*.c"
  935. EXTRA_CFLAGS="$EXTRA_CFLAGS $ALSA_CFLAGS"
  936. if test x$have_loadso != xyes && \
  937. test x$enable_alsa_shared = xyes; then
  938. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ALSA loading])
  939. fi
  940. if test x$have_loadso = xyes && \
  941. test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then
  942. echo "-- dynamic libasound -> $alsa_lib"
  943. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ALSA_DYNAMIC, "$alsa_lib", [ ])
  944. SUMMARY_audio="${SUMMARY_audio} alsa(dynamic)"
  945. else
  946. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS"
  947. SUMMARY_audio="${SUMMARY_audio} alsa"
  948. fi
  949. have_audio=yes
  950. fi
  951. fi
  952. }
  953. dnl Find JACK Audio
  954. CheckJACK()
  955. {
  956. AC_ARG_ENABLE(jack,
  957. [AS_HELP_STRING([--enable-jack], [use JACK audio [default=yes]])],
  958. , enable_jack=yes)
  959. if test x$enable_audio = xyes -a x$enable_jack = xyes; then
  960. PKG_CHECK_MODULES([JACK], [jack >= 0.125], audio_jack=yes, audio_jack=no)
  961. if test x$audio_jack = xyes; then
  962. AC_ARG_ENABLE(jack-shared,
  963. [AS_HELP_STRING([--enable-jack-shared], [dynamically load JACK audio support [default=yes]])],
  964. , enable_jack_shared=yes)
  965. jack_lib=[`find_lib "libjack.so.*" "$JACK_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  966. AC_DEFINE(SDL_AUDIO_DRIVER_JACK, 1, [ ])
  967. SOURCES="$SOURCES $srcdir/src/audio/jack/*.c"
  968. EXTRA_CFLAGS="$EXTRA_CFLAGS $JACK_CFLAGS"
  969. if test x$have_loadso != xyes && \
  970. test x$enable_jack_shared = xyes; then
  971. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic JACK audio loading])
  972. fi
  973. if test x$have_loadso = xyes && \
  974. test x$enable_jack_shared = xyes && test x$jack_lib != x; then
  975. echo "-- dynamic libjack -> $jack_lib"
  976. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_JACK_DYNAMIC, "$jack_lib", [ ])
  977. SUMMARY_audio="${SUMMARY_audio} jack(dynamic)"
  978. case "$host" in
  979. # On Solaris, jack must be linked deferred explicitly
  980. # to prevent undefined symbol failures.
  981. *-*-solaris*)
  982. JACK_LIBS=`echo $JACK_LIBS | sed 's/\-l/-Wl,-l/g'`
  983. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-zdeferred $JACK_LIBS -Wl,-znodeferred"
  984. esac
  985. else
  986. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $JACK_LIBS"
  987. SUMMARY_audio="${SUMMARY_audio} jack"
  988. fi
  989. have_audio=yes
  990. fi
  991. fi
  992. }
  993. dnl Find the ESD includes and libraries
  994. CheckESD()
  995. {
  996. AC_ARG_ENABLE(esd,
  997. [AS_HELP_STRING([--enable-esd], [support the Enlightened Sound Daemon [default=yes]])],
  998. , enable_esd=yes)
  999. if test x$enable_audio = xyes -a x$enable_esd = xyes; then
  1000. PKG_CHECK_MODULES([ESD], [esound >= 0.2.8], have_esd=yes, have_esd=no)
  1001. if test x$have_esd = xno; then
  1002. AM_PATH_ESD(0.2.8, have_esd=yes, have_esd=no)
  1003. fi
  1004. if test x$have_esd = xyes; then
  1005. AC_ARG_ENABLE(esd-shared,
  1006. [AS_HELP_STRING([--enable-esd-shared], [dynamically load ESD audio support [default=yes]])],
  1007. , enable_esd_shared=yes)
  1008. esd_lib=[`find_lib "libesd.so.*" "$ESD_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1009. AC_DEFINE(SDL_AUDIO_DRIVER_ESD, 1, [ ])
  1010. SOURCES="$SOURCES $srcdir/src/audio/esd/*.c"
  1011. EXTRA_CFLAGS="$EXTRA_CFLAGS $ESD_CFLAGS"
  1012. if test x$have_loadso != xyes && \
  1013. test x$enable_esd_shared = xyes; then
  1014. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ESD loading])
  1015. fi
  1016. if test x$have_loadso = xyes && \
  1017. test x$enable_esd_shared = xyes && test x$esd_lib != x; then
  1018. echo "-- dynamic libesd -> $esd_lib"
  1019. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ESD_DYNAMIC, "$esd_lib", [ ])
  1020. SUMMARY_audio="${SUMMARY_audio} esd(dynamic)"
  1021. else
  1022. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS"
  1023. SUMMARY_audio="${SUMMARY_audio} esd"
  1024. fi
  1025. have_audio=yes
  1026. fi
  1027. fi
  1028. }
  1029. dnl Find Pipewire
  1030. CheckPipewire()
  1031. {
  1032. AC_ARG_ENABLE(pipewire,
  1033. [AS_HELP_STRING([--enable-pipewire], [use Pipewire audio [default=yes]])],
  1034. , enable_pipewire=yes)
  1035. if test x$enable_audio = xyes -a x$enable_pipewire = xyes; then
  1036. PKG_CHECK_MODULES([PIPEWIRE], [libpipewire-0.3 >= 0.3.20], audio_pipewire=yes, audio_pipewire=no)
  1037. if test x$audio_pipewire = xyes; then
  1038. AC_ARG_ENABLE(pipewire-shared,
  1039. [AS_HELP_STRING([--enable-pipewire-shared], [dynamically load Pipewire support [default=yes]])],
  1040. , enable_pipewire_shared=yes)
  1041. pipewire_lib=[`find_lib "libpipewire-0.3.so.*" "$PIPEWIRE_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1042. AC_DEFINE(SDL_AUDIO_DRIVER_PIPEWIRE, 1, [ ])
  1043. SOURCES="$SOURCES $srcdir/src/audio/pipewire/*.c"
  1044. EXTRA_CFLAGS="$EXTRA_CFLAGS $PIPEWIRE_CFLAGS"
  1045. if test x$have_loadso != xyes && \
  1046. test x$enable_pipewire_shared = xyes; then
  1047. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Pipewire loading])
  1048. fi
  1049. if test x$have_loadso = xyes && \
  1050. test x$enable_pipewire_shared = xyes && test x$pipewire_lib != x; then
  1051. echo "-- dynamic libpipewire-0.3 -> $pipewire_lib"
  1052. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC, "$pipewire_lib", [ ])
  1053. SUMMARY_audio="${SUMMARY_audio} pipewire(dynamic)"
  1054. else
  1055. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PIPEWIRE_LIBS"
  1056. SUMMARY_audio="${SUMMARY_audio} pipewire"
  1057. fi
  1058. have_audio=yes
  1059. fi
  1060. fi
  1061. }
  1062. dnl Find PulseAudio
  1063. CheckPulseAudio()
  1064. {
  1065. AC_ARG_ENABLE(pulseaudio,
  1066. [AS_HELP_STRING([--enable-pulseaudio], [use PulseAudio [default=yes]])],
  1067. , enable_pulseaudio=yes)
  1068. if test x$enable_audio = xyes -a x$enable_pulseaudio = xyes; then
  1069. PKG_CHECK_MODULES([PULSEAUDIO], [libpulse >= 0.9.15], audio_pulseaudio=yes, audio_pulseaudio=no)
  1070. if test x$audio_pulseaudio = xyes; then
  1071. AC_ARG_ENABLE(pulseaudio-shared,
  1072. [AS_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio support [default=yes]])],
  1073. , enable_pulseaudio_shared=yes)
  1074. pulseaudio_lib=[`find_lib "libpulse.so.*" "$PULSEAUDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1075. AC_DEFINE(SDL_AUDIO_DRIVER_PULSEAUDIO, 1, [ ])
  1076. SOURCES="$SOURCES $srcdir/src/audio/pulseaudio/*.c"
  1077. EXTRA_CFLAGS="$EXTRA_CFLAGS $PULSEAUDIO_CFLAGS"
  1078. if test x$have_loadso != xyes && \
  1079. test x$enable_pulseaudio_shared = xyes; then
  1080. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic PulseAudio loading])
  1081. fi
  1082. if test x$have_loadso = xyes && \
  1083. test x$enable_pulseaudio_shared = xyes && test x$pulseaudio_lib != x; then
  1084. echo "-- dynamic libpulse -> $pulseaudio_lib"
  1085. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC, "$pulseaudio_lib", [ ])
  1086. SUMMARY_audio="${SUMMARY_audio} pulse(dynamic)"
  1087. case "$host" in
  1088. # On Solaris, pulseaudio must be linked deferred explicitly
  1089. # to prevent undefined symbol failures.
  1090. *-*-solaris*)
  1091. PULSEAUDIO_LIBS=`echo $PULSEAUDIO_LIBS | sed 's/\-l/-Wl,-l/g'`
  1092. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-zdeferred $PULSEAUDIO_LIBS -Wl,-znodeferred"
  1093. esac
  1094. else
  1095. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSEAUDIO_LIBS"
  1096. SUMMARY_audio="${SUMMARY_audio} pulse"
  1097. fi
  1098. have_audio=yes
  1099. fi
  1100. fi
  1101. }
  1102. CheckARTSC()
  1103. {
  1104. AC_ARG_ENABLE(arts,
  1105. [AS_HELP_STRING([--enable-arts], [support the Analog Real Time Synthesizer [default=yes]])],
  1106. , enable_arts=yes)
  1107. if test x$enable_audio = xyes -a x$enable_arts = xyes; then
  1108. AC_PATH_PROG(ARTSCONFIG, artsc-config)
  1109. if test x$ARTSCONFIG = x -o x$ARTSCONFIG = x'"$ARTSCONFIG"'; then
  1110. : # arts isn't installed
  1111. else
  1112. ARTS_CFLAGS=`$ARTSCONFIG --cflags`
  1113. ARTS_LIBS=`$ARTSCONFIG --libs`
  1114. AC_MSG_CHECKING(for aRts development environment)
  1115. audio_arts=no
  1116. save_CFLAGS="$CFLAGS"
  1117. CFLAGS="$CFLAGS $ARTS_CFLAGS"
  1118. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1119. #include <artsc.h>
  1120. ]], [[
  1121. arts_stream_t stream;
  1122. ]])], [audio_arts=yes],[])
  1123. CFLAGS="$save_CFLAGS"
  1124. AC_MSG_RESULT($audio_arts)
  1125. if test x$audio_arts = xyes; then
  1126. AC_ARG_ENABLE(arts-shared,
  1127. [AS_HELP_STRING([--enable-arts-shared], [dynamically load aRts audio support [default=yes]])],
  1128. , enable_arts_shared=yes)
  1129. arts_lib=[`find_lib "libartsc.so.*" "$ARTS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1130. AC_DEFINE(SDL_AUDIO_DRIVER_ARTS, 1, [ ])
  1131. SOURCES="$SOURCES $srcdir/src/audio/arts/*.c"
  1132. EXTRA_CFLAGS="$EXTRA_CFLAGS $ARTS_CFLAGS"
  1133. if test x$have_loadso != xyes && \
  1134. test x$enable_arts_shared = xyes; then
  1135. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ARTS loading])
  1136. fi
  1137. if test x$have_loadso = xyes && \
  1138. test x$enable_arts_shared = xyes && test x$arts_lib != x; then
  1139. echo "-- dynamic libartsc -> $arts_lib"
  1140. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ARTS_DYNAMIC, "$arts_lib", [ ])
  1141. SUMMARY_audio="${SUMMARY_audio} arts(dynamic)"
  1142. else
  1143. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS"
  1144. SUMMARY_audio="${SUMMARY_audio} arts"
  1145. fi
  1146. have_audio=yes
  1147. fi
  1148. fi
  1149. fi
  1150. }
  1151. dnl See if the NAS audio interface is supported
  1152. CheckNAS()
  1153. {
  1154. AC_ARG_ENABLE(nas,
  1155. [AS_HELP_STRING([--enable-nas], [support the NAS audio API [default=yes]])],
  1156. , enable_nas=yes)
  1157. if test x$enable_audio = xyes -a x$enable_nas = xyes; then
  1158. AC_CHECK_HEADER(audio/audiolib.h, have_nas_hdr=yes)
  1159. AC_CHECK_LIB(audio, AuOpenServer, have_nas_lib=yes)
  1160. AC_MSG_CHECKING(for NAS audio support)
  1161. have_nas=no
  1162. if test x$have_nas_hdr = xyes -a x$have_nas_lib = xyes; then
  1163. have_nas=yes
  1164. NAS_LIBS="-laudio"
  1165. elif test -r /usr/X11R6/include/audio/audiolib.h; then
  1166. have_nas=yes
  1167. NAS_CFLAGS="-I/usr/X11R6/include/"
  1168. NAS_LIBS="-L/usr/X11R6/lib -laudio -lXt"
  1169. fi
  1170. AC_MSG_RESULT($have_nas)
  1171. if test x$have_nas = xyes; then
  1172. AC_ARG_ENABLE(nas-shared,
  1173. [AS_HELP_STRING([--enable-nas-shared], [dynamically load NAS audio support [default=yes]])],
  1174. , enable_nas_shared=yes)
  1175. nas_lib=[`find_lib "libaudio.so.*" "$NAS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1176. if test x$have_loadso != xyes && \
  1177. test x$enable_nas_shared = xyes; then
  1178. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic NAS loading])
  1179. fi
  1180. if test x$have_loadso = xyes && \
  1181. test x$enable_nas_shared = xyes && test x$nas_lib != x; then
  1182. echo "-- dynamic libaudio -> $nas_lib"
  1183. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_NAS_DYNAMIC, "$nas_lib", [ ])
  1184. SUMMARY_audio="${SUMMARY_audio} nas(dynamic)"
  1185. else
  1186. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS"
  1187. SUMMARY_audio="${SUMMARY_audio} nas"
  1188. fi
  1189. AC_DEFINE(SDL_AUDIO_DRIVER_NAS, 1, [ ])
  1190. SOURCES="$SOURCES $srcdir/src/audio/nas/*.c"
  1191. EXTRA_CFLAGS="$EXTRA_CFLAGS $NAS_CFLAGS"
  1192. have_audio=yes
  1193. fi
  1194. fi
  1195. }
  1196. dnl See if the sndio audio interface is supported
  1197. CheckSNDIO()
  1198. {
  1199. AC_ARG_ENABLE(sndio,
  1200. [AS_HELP_STRING([--enable-sndio], [support the sndio audio API [default=yes]])],
  1201. , enable_sndio=yes)
  1202. if test x$enable_audio = xyes -a x$enable_sndio = xyes; then
  1203. PKG_CHECK_MODULES([SNDIO], [sndio], audio_sndio=yes, audio_sndio=no)
  1204. if test x$audio_sndio = xyes; then
  1205. AC_ARG_ENABLE(sndio-shared,
  1206. [AS_HELP_STRING([--enable-sndio-shared], [dynamically load sndio audio support [default=yes]])],
  1207. , enable_sndio_shared=yes)
  1208. sndio_lib=[`find_lib "libsndio.so.*" "$SNDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1209. if test x$have_loadso != xyes && \
  1210. test x$enable_sndio_shared = xyes; then
  1211. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic sndio loading])
  1212. fi
  1213. if test x$have_loadso = xyes && \
  1214. test x$enable_sndio_shared = xyes && test x$sndio_lib != x; then
  1215. echo "-- dynamic libsndio -> $sndio_lib"
  1216. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC, "$sndio_lib", [ ])
  1217. SUMMARY_audio="${SUMMARY_audio} sndio(dynamic)"
  1218. else
  1219. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS"
  1220. SUMMARY_audio="${SUMMARY_audio} sndio"
  1221. fi
  1222. AC_DEFINE(SDL_AUDIO_DRIVER_SNDIO, 1, [ ])
  1223. SOURCES="$SOURCES $srcdir/src/audio/sndio/*.c"
  1224. EXTRA_CFLAGS="$EXTRA_CFLAGS $SNDIO_CFLAGS"
  1225. have_audio=yes
  1226. fi
  1227. fi
  1228. }
  1229. dnl Find FusionSound
  1230. CheckFusionSound()
  1231. {
  1232. AC_ARG_ENABLE(fusionsound,
  1233. [AS_HELP_STRING([--enable-fusionsound], [use FusionSound audio driver [default=no]])],
  1234. , enable_fusionsound=no)
  1235. if test x$enable_audio = xyes -a x$enable_fusionsound = xyes; then
  1236. PKG_CHECK_MODULES([FUSIONSOUND], [fusionsound >= 1.1.1], fusionsound=yes, fusionsound=no)
  1237. if test x$fusionsound = xyes; then
  1238. AC_DEFINE(SDL_AUDIO_DRIVER_FUSIONSOUND, 1, [ ])
  1239. SOURCES="$SOURCES $srcdir/src/audio/fusionsound/*.c"
  1240. EXTRA_CFLAGS="$EXTRA_CFLAGS $FUSIONSOUND_CFLAGS"
  1241. AC_ARG_ENABLE(fusionsound-shared,
  1242. [AS_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audio support [default=yes]])],
  1243. , enable_fusionsound_shared=yes)
  1244. fusionsound_shared=no
  1245. AC_MSG_CHECKING(for FusionSound dynamic loading support)
  1246. if test x$have_loadso != xyes && \
  1247. test x$enable_fusionsound_shared = xyes; then
  1248. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic fusionsound loading])
  1249. fi
  1250. if test x$have_loadso = xyes && \
  1251. test x$enable_fusionsound_shared = xyes; then
  1252. AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC, "libfusionsound.so", [ ])
  1253. fusionsound_shared=yes
  1254. SUMMARY_audio="${SUMMARY_audio} fusionsound(dynamic)"
  1255. else
  1256. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS"
  1257. SUMMARY_audio="${SUMMARY_audio} fusionsound"
  1258. fi
  1259. AC_MSG_RESULT($fusionsound_shared)
  1260. have_audio=yes
  1261. fi
  1262. fi
  1263. }
  1264. dnl rcg07142001 See if the user wants the disk writer audio driver...
  1265. CheckDiskAudio()
  1266. {
  1267. AC_ARG_ENABLE(diskaudio,
  1268. [AS_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [default=yes]])],
  1269. , enable_diskaudio=yes)
  1270. if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then
  1271. AC_DEFINE(SDL_AUDIO_DRIVER_DISK, 1, [ ])
  1272. SOURCES="$SOURCES $srcdir/src/audio/disk/*.c"
  1273. SUMMARY_audio="${SUMMARY_audio} disk"
  1274. have_audio=yes
  1275. fi
  1276. }
  1277. dnl rcg03142006 See if the user wants the dummy audio driver...
  1278. CheckDummyAudio()
  1279. {
  1280. AC_ARG_ENABLE(dummyaudio,
  1281. [AS_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [default=yes]])],
  1282. , enable_dummyaudio=yes)
  1283. if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then
  1284. AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ])
  1285. SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
  1286. SUMMARY_audio="${SUMMARY_audio} dummy"
  1287. have_audio=yes
  1288. fi
  1289. }
  1290. dnl See if libsamplerate is available
  1291. CheckLibSampleRate()
  1292. {
  1293. AC_ARG_ENABLE(libsamplerate,
  1294. [AS_HELP_STRING([--enable-libsamplerate], [use libsamplerate for audio rate conversion [default=yes]])],
  1295. , enable_libsamplerate=yes)
  1296. if test x$enable_libsamplerate = xyes; then
  1297. AC_CHECK_HEADER(samplerate.h,
  1298. have_samplerate_h_hdr=yes,
  1299. have_samplerate_h_hdr=no)
  1300. if test x$have_samplerate_h_hdr = xyes; then
  1301. AC_DEFINE(HAVE_LIBSAMPLERATE_H, 1, [ ])
  1302. AC_ARG_ENABLE(libsamplerate-shared,
  1303. [AS_HELP_STRING([--enable-libsamplerate-shared], [dynamically load libsamplerate [default=yes]])],
  1304. , enable_libsamplerate_shared=yes)
  1305. samplerate_lib=[`find_lib "libsamplerate.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`]
  1306. if test x$have_loadso != xyes && \
  1307. test x$enable_libsamplerate_shared = xyes; then
  1308. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic libsamplerate loading])
  1309. fi
  1310. if test x$have_loadso = xyes && \
  1311. test x$enable_libsamplerate_shared = xyes && test x$samplerate_lib != x; then
  1312. echo "-- dynamic libsamplerate -> $samplerate_lib"
  1313. AC_DEFINE_UNQUOTED(SDL_LIBSAMPLERATE_DYNAMIC, "$samplerate_lib", [ ])
  1314. else
  1315. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lsamplerate"
  1316. fi
  1317. fi
  1318. fi
  1319. }
  1320. dnl Check for ARM instruction support using gas syntax
  1321. CheckARM()
  1322. {
  1323. AC_ARG_ENABLE(arm-simd,
  1324. [AS_HELP_STRING([--enable-arm-simd], [use SIMD assembly blitters on ARM [default=no]])],
  1325. enable_arm_simd=$enableval, enable_arm_simd=no)
  1326. if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_arm_simd = xyes; then
  1327. save_CFLAGS="$CFLAGS"
  1328. have_arm_simd=no
  1329. CFLAGS="-x assembler-with-cpp $CFLAGS"
  1330. AC_MSG_CHECKING(for ARM SIMD)
  1331. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
  1332. .text
  1333. .arch armv6
  1334. .object_arch armv4
  1335. .arm
  1336. .altmacro
  1337. #ifndef __ARM_EABI__
  1338. #error EABI is required (to be sure that calling conventions are compatible)
  1339. #endif
  1340. pld [r0]
  1341. uqadd8 r0, r0, r0
  1342. ]])], have_arm_simd=yes)
  1343. AC_MSG_RESULT($have_arm_simd)
  1344. CFLAGS="$save_CFLAGS"
  1345. if test x$have_arm_simd = xyes; then
  1346. AC_DEFINE(SDL_ARM_SIMD_BLITTERS, 1, [ ])
  1347. SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-simd*.S"
  1348. WARN_ABOUT_ARM_SIMD_ASM_MIT="yes"
  1349. fi
  1350. fi
  1351. }
  1352. dnl Check for ARM NEON instruction support using gas syntax
  1353. CheckNEON()
  1354. {
  1355. AC_ARG_ENABLE(arm-neon,
  1356. [AS_HELP_STRING([--enable-arm-neon], [use NEON assembly blitters on ARM [default=no]])],
  1357. enable_arm_neon=$enableval, enable_arm_neon=no)
  1358. if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_arm_neon = xyes; then
  1359. save_CFLAGS="$CFLAGS"
  1360. have_arm_neon=no
  1361. CFLAGS="-x assembler-with-cpp $CFLAGS"
  1362. AC_MSG_CHECKING(for ARM NEON)
  1363. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
  1364. .text
  1365. .fpu neon
  1366. .arch armv7a
  1367. .object_arch armv4
  1368. .eabi_attribute 10, 0
  1369. .arm
  1370. .altmacro
  1371. #ifndef __ARM_EABI__
  1372. #error EABI is required (to be sure that calling conventions are compatible)
  1373. #endif
  1374. pld [r0]
  1375. vmovn.u16 d0, q0
  1376. ]])], have_arm_neon=yes)
  1377. AC_MSG_RESULT($have_arm_neon)
  1378. CFLAGS="$save_CFLAGS"
  1379. if test x$have_arm_neon = xyes; then
  1380. AC_DEFINE(SDL_ARM_NEON_BLITTERS, 1, [ ])
  1381. SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-neon*.S"
  1382. WARN_ABOUT_ARM_NEON_ASM_MIT="yes"
  1383. fi
  1384. fi
  1385. }
  1386. dnl See if clang's -fobjc-arc supported.
  1387. dnl Reference: https://github.com/libsdl-org/SDL/pull/5632
  1388. CheckObjectiveCARC()
  1389. {
  1390. AC_MSG_CHECKING(for clang -fobjc-arc option)
  1391. have_clang_objc_arc=no
  1392. save_CFLAGS="$CFLAGS"
  1393. CFLAGS="$save_CFLAGS -fobjc-arc"
  1394. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1395. int x = 0;
  1396. ]],[])], [have_clang_objc_arc=yes],[])
  1397. AC_MSG_RESULT($have_clang_objc_arc)
  1398. CFLAGS="$save_CFLAGS"
  1399. if test x$have_clang_objc_arc = xyes; then
  1400. EXTRA_CFLAGS="$EXTRA_CFLAGS -fobjc-arc"
  1401. fi
  1402. }
  1403. dnl See if GCC's -gdwarf-4 is supported
  1404. dnl See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101377 for why this is needed on Windows
  1405. CheckGDwarf4()
  1406. {
  1407. AC_MSG_CHECKING(for GCC -gdwarf-4 option)
  1408. have_gcc_gdwarf4=no
  1409. save_CFLAGS="$CFLAGS"
  1410. CFLAGS="$save_CFLAGS -gdwarf-4"
  1411. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1412. int x = 0;
  1413. ]],[])], [have_gcc_gdwarf4=yes],[])
  1414. AC_MSG_RESULT($have_gcc_gdwarf4)
  1415. CFLAGS="$save_CFLAGS"
  1416. if test x$have_gcc_gdwarf4 = xyes; then
  1417. EXTRA_CFLAGS="$EXTRA_CFLAGS -gdwarf-4"
  1418. fi
  1419. }
  1420. dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
  1421. dnl Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
  1422. CheckVisibilityHidden()
  1423. {
  1424. AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
  1425. have_gcc_fvisibility=no
  1426. visibility_CFLAGS="-fvisibility=hidden"
  1427. save_CFLAGS="$CFLAGS"
  1428. CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
  1429. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1430. #if !defined(__GNUC__) || __GNUC__ < 4
  1431. #error SDL only uses visibility attributes in GCC 4 or newer
  1432. #endif
  1433. ]],[])], [have_gcc_fvisibility=yes],[])
  1434. AC_MSG_RESULT($have_gcc_fvisibility)
  1435. CFLAGS="$save_CFLAGS"
  1436. if test x$have_gcc_fvisibility = xyes; then
  1437. EXTRA_CFLAGS="$EXTRA_CFLAGS $visibility_CFLAGS"
  1438. fi
  1439. }
  1440. dnl See if GCC's -fno-strict-aliasingis supported.
  1441. dnl Reference: https://bugzilla.libsdl.org/show_bug.cgi?id=4254
  1442. CheckNoStrictAliasing()
  1443. {
  1444. AC_MSG_CHECKING(for GCC -fno-strict-aliasing option)
  1445. have_gcc_no_strict_aliasing=no
  1446. save_CFLAGS="$CFLAGS"
  1447. CFLAGS="$save_CFLAGS -fno-strict-aliasing"
  1448. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1449. int x = 0;
  1450. ]],[])], [have_gcc_no_strict_aliasing=yes],[])
  1451. AC_MSG_RESULT($have_gcc_no_strict_aliasing)
  1452. CFLAGS="$save_CFLAGS"
  1453. if test x$have_gcc_no_strict_aliasing = xyes; then
  1454. EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
  1455. fi
  1456. }
  1457. dnl See if GCC's -Werror is supported.
  1458. CheckWerror()
  1459. {
  1460. AC_ARG_ENABLE(werror,
  1461. [AS_HELP_STRING([--enable-werror], [treat warnings as errors [default=no]])],
  1462. enable_werror=$enableval, enable_werror=no)
  1463. if test x$enable_werror = xyes; then
  1464. AC_MSG_CHECKING(for GCC -Werror option)
  1465. have_gcc_werror=no
  1466. save_CFLAGS="$CFLAGS"
  1467. CFLAGS="$save_CFLAGS -Werror"
  1468. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1469. int x = 0;
  1470. ]],[])], [have_gcc_werror=yes],[])
  1471. AC_MSG_RESULT($have_gcc_werror)
  1472. CFLAGS="$save_CFLAGS"
  1473. if test x$have_gcc_werror = xyes; then
  1474. EXTRA_CFLAGS="$EXTRA_CFLAGS -Werror"
  1475. fi
  1476. fi
  1477. }
  1478. dnl See if GCC's -Wno-error=deprecated-declarations is supported.
  1479. CheckNoErrorDeprecatedDeclarationsWerror()
  1480. {
  1481. AC_MSG_CHECKING(for GCC -Wno-error=deprecated-declarations option)
  1482. have_gcc_no_werror_deprecated_declarations=no
  1483. save_CFLAGS="$CFLAGS"
  1484. CFLAGS="$save_CFLAGS -Wno-error=deprecated-declarations"
  1485. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1486. int x = 0;
  1487. ]],[])], [have_gcc_no_werror_deprecated_declarations=yes],[])
  1488. AC_MSG_RESULT($have_gcc_werror)
  1489. CFLAGS="$save_CFLAGS"
  1490. if test x$have_gcc_no_werror_deprecated_declarations = xyes; then
  1491. EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-error=deprecated-declarations"
  1492. fi
  1493. }
  1494. dnl See if GCC's -Wdeclaration-after-statement is supported.
  1495. dnl This lets us catch things that would fail on a C89 compiler when using
  1496. dnl a modern GCC.
  1497. CheckDeclarationAfterStatement()
  1498. {
  1499. AC_MSG_CHECKING(for GCC -Wdeclaration-after-statement option)
  1500. have_gcc_declaration_after_statement=no
  1501. save_CFLAGS="$CFLAGS"
  1502. CFLAGS="$save_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
  1503. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1504. int x = 0;
  1505. ]],[])], [have_gcc_declaration_after_statement=yes],[])
  1506. AC_MSG_RESULT($have_gcc_declaration_after_statement)
  1507. CFLAGS="$save_CFLAGS"
  1508. if test x$have_gcc_declaration_after_statement = xyes; then
  1509. EXTRA_CFLAGS="$EXTRA_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
  1510. fi
  1511. }
  1512. dnl See if GCC's -Wall is supported.
  1513. CheckWarnAll()
  1514. {
  1515. AC_MSG_CHECKING(for GCC -Wall option)
  1516. have_gcc_Wall=no
  1517. save_CFLAGS="$CFLAGS"
  1518. CFLAGS="$save_CFLAGS -Wall"
  1519. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1520. int x = 0;
  1521. ]],[])], [have_gcc_Wall=yes],[])
  1522. AC_MSG_RESULT($have_gcc_Wall)
  1523. CFLAGS="$save_CFLAGS"
  1524. if test x$have_gcc_Wall = xyes; then
  1525. EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
  1526. dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
  1527. AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
  1528. need_gcc_Wno_multichar=no
  1529. case "$host" in
  1530. *-*-haiku*)
  1531. need_gcc_Wno_multichar=yes
  1532. ;;
  1533. esac
  1534. AC_MSG_RESULT($need_gcc_Wno_multichar)
  1535. if test x$need_gcc_Wno_multichar = xyes; then
  1536. EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-multichar"
  1537. fi
  1538. fi
  1539. }
  1540. dnl See if GCC's -Wunused-local-typedefs is supported and disable it
  1541. dnl because it triggers on gcc 4.8.4 for compile time asserts inside
  1542. dnl of functions.
  1543. CheckUnusedLocalTypedefs()
  1544. {
  1545. AC_MSG_CHECKING(for GCC -Wunused-local-typedefs option)
  1546. have_gcc_unused_local_typedefs=no
  1547. save_CFLAGS="$CFLAGS"
  1548. CFLAGS="$save_CFLAGS -Wunused-local-typedefs"
  1549. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1550. int x = 0;
  1551. ]],[])], [have_gcc_unused_local_typedefs=yes],[])
  1552. AC_MSG_RESULT($have_gcc_unused_local_typedefs)
  1553. CFLAGS="$save_CFLAGS"
  1554. if test x$have_gcc_unused_local_typedefs = xyes; then
  1555. EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-unused-local-typedefs"
  1556. fi
  1557. }
  1558. dnl Check for Wayland
  1559. CheckWayland()
  1560. {
  1561. AC_ARG_ENABLE(video-wayland,
  1562. [AS_HELP_STRING([--enable-video-wayland], [use Wayland video driver [default=yes]])],
  1563. ,enable_video_wayland=yes)
  1564. AC_ARG_ENABLE(video-wayland-qt-touch,
  1565. [AS_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for Wayland video driver [default=yes]])],
  1566. ,enable_video_wayland_qt_touch=yes)
  1567. if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then
  1568. AC_MSG_CHECKING(for Wayland support)
  1569. video_wayland=no
  1570. if test x$video_opengl_egl = xyes && \
  1571. test x$video_opengles_v2 = xyes; then
  1572. if $PKG_CONFIG --exists 'wayland-client >= 1.18' wayland-scanner wayland-egl wayland-cursor egl 'xkbcommon >= 0.5.0'; then
  1573. WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor xkbcommon`
  1574. WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor xkbcommon`
  1575. WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
  1576. AS_IF([$PKG_CONFIG --exists 'wayland-scanner >= 1.15'],
  1577. [WAYLAND_SCANNER_CODE_MODE=private-code],
  1578. [WAYLAND_SCANNER_CODE_MODE=code])
  1579. video_wayland=yes
  1580. fi
  1581. fi
  1582. AC_MSG_RESULT($video_wayland)
  1583. if test x$video_wayland = xyes; then
  1584. AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND, 1, [ ])
  1585. if test x$enable_video_wayland_qt_touch = xyes; then
  1586. AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH, 1, [ ])
  1587. fi
  1588. WAYLAND_SOURCES="$srcdir/src/video/wayland/*.c"
  1589. SOURCES="$SOURCES $WAYLAND_SOURCES"
  1590. EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS -I\$(gen)"
  1591. AC_ARG_ENABLE(wayland-shared,
  1592. [AS_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [default=maybe]])],
  1593. , enable_wayland_shared=maybe)
  1594. dnl FIXME: Do BSD and OS X need special cases?
  1595. case "$host" in
  1596. *)
  1597. wayland_client_lib=[`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1598. wayland_egl_lib=[`find_lib "libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1599. if test x$wayland_egl_lib = x; then
  1600. # This works in Ubuntu 13.10, maybe others
  1601. wayland_egl_lib=[`find_lib "mesa-egl/libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1602. fi
  1603. wayland_cursor_lib=[`find_lib "libwayland-cursor.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1604. xkbcommon_lib=[`find_lib "libxkbcommon.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1605. ;;
  1606. esac
  1607. if test x$enable_wayland_shared = xmaybe; then
  1608. enable_wayland_shared=yes
  1609. fi
  1610. if test x$have_loadso != xyes && \
  1611. test x$enable_wayland_shared = xyes; then
  1612. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Wayland loading])
  1613. enable_wayland_shared=no
  1614. fi
  1615. if test x$have_loadso = xyes && \
  1616. test x$enable_wayland_shared = xyes && \
  1617. test x$wayland_client_lib != x && \
  1618. test x$wayland_egl_lib != x && \
  1619. test x$wayland_cursor_lib != x && \
  1620. test x$xkbcommon_lib != x; then
  1621. echo "-- dynamic libwayland-client -> $wayland_client_lib"
  1622. echo "-- dynamic libwayland-egl -> $wayland_egl_lib"
  1623. echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib"
  1624. echo "-- dynamic libxkbcommon -> $xkbcommon_lib"
  1625. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, "$wayland_client_lib", [ ])
  1626. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, "$wayland_egl_lib", [ ])
  1627. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, "$wayland_cursor_lib", [ ])
  1628. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ])
  1629. SUMMARY_video="${SUMMARY_video} wayland(dynamic)"
  1630. else
  1631. enable_wayland_shared=no
  1632. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS"
  1633. SUMMARY_video="${SUMMARY_video} wayland"
  1634. fi
  1635. have_video=yes
  1636. dnl See if libdecor is available
  1637. AC_ARG_ENABLE(libdecor,
  1638. [AS_HELP_STRING([--enable-libdecor], [use libdecor for Wayland client-side decorations [default=yes]])],, enable_libdecor=yes)
  1639. if test x$enable_libdecor = xyes; then
  1640. PKG_CHECK_MODULES([DECOR], [libdecor-0], video_libdecor=yes, video_libdecor=no)
  1641. if test x$video_libdecor = xyes; then
  1642. EXTRA_CFLAGS="$EXTRA_CFLAGS $DECOR_CFLAGS"
  1643. AC_DEFINE(HAVE_LIBDECOR_H, 1, [ ])
  1644. AC_ARG_ENABLE(libdecor-shared,
  1645. [AS_HELP_STRING([--enable-libdecor-shared], [dynamically load libdecor [default=yes]])],, enable_libdecor_shared=yes)
  1646. decor_lib=[`find_lib "libdecor-0.so.*" "$DECOR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  1647. if test x$enable_wayland_shared != xyes; then
  1648. enable_libdecor_shared=no
  1649. fi
  1650. if test x$have_loadso != xyes && \
  1651. test x$enable_libdecor_shared = xyes; then
  1652. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic libdecor loading])
  1653. fi
  1654. if test x$have_loadso = xyes && \
  1655. test x$enable_libdecor_shared = xyes && test x$decor_lib != x; then
  1656. echo "-- dynamic libdecor -> $decor_lib"
  1657. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR, "$decor_lib", [ ])
  1658. else
  1659. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DECOR_LIBS"
  1660. fi
  1661. saved_cflags=$CFLAGS
  1662. CFLAGS="$CFLAGS $DECOR_CFLAGS"
  1663. AC_CHECK_DECLS([libdecor_frame_get_min_content_size, libdecor_frame_get_max_content_size], [libdecor_get_min_max=yes], [ ], [[#include <libdecor.h>]])
  1664. if test x$libdecor_get_min_max = xyes; then
  1665. AC_DEFINE(SDL_HAVE_LIBDECOR_GET_MIN_MAX, 1, [ ])
  1666. fi
  1667. CFLAGS="$saved_cflags"
  1668. fi
  1669. fi
  1670. fi
  1671. fi
  1672. }
  1673. dnl Check for Native Client stuff
  1674. CheckNativeClient()
  1675. {
  1676. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1677. #if !defined(__native_client__)
  1678. #error "NO NACL"
  1679. #endif
  1680. ]],[])], [
  1681. AC_DEFINE(SDL_VIDEO_DRIVER_NACL, 1, [ ])
  1682. AC_DEFINE(SDL_AUDIO_DRIVER_NACL, 1, [ ])
  1683. AC_DEFINE(HAVE_POW, 1, [ ])
  1684. AC_DEFINE(HAVE_OPENGLES2, 1, [ ])
  1685. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  1686. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  1687. SDL_LIBS="-lppapi_simple -lppapi_gles2 $SDL_LIBS"
  1688. SDLMAIN_SOURCES="$srcdir/src/main/nacl/*.c"
  1689. SOURCES="$SOURCES $srcdir/src/audio/nacl/*.c"
  1690. SUMMARY_audio="${SUMMARY_audio} nacl"
  1691. have_audio=yes
  1692. SOURCES="$SOURCES $srcdir/src/video/nacl/*.c"
  1693. SUMMARY_video="${SUMMARY_video} nacl opengles2"
  1694. have_video=yes
  1695. ],[])
  1696. }
  1697. CheckRPI()
  1698. {
  1699. AC_ARG_ENABLE(video-rpi,
  1700. [AS_HELP_STRING([--enable-video-rpi], [use Raspberry Pi 2/3 video driver [default=yes]])],
  1701. , enable_video_rpi=yes)
  1702. if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then
  1703. PKG_CHECK_MODULES([RPI], [bcm_host brcmegl], video_rpi=yes, video_rpi=no)
  1704. if test x$video_rpi = xno; then
  1705. if test x$ARCH = xnetbsd; then
  1706. RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux"
  1707. RPI_LIBS="-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host"
  1708. else
  1709. RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
  1710. RPI_LIBS="-Wl,-rpath,/opt/vc/lib -L/opt/vc/lib -lbcm_host"
  1711. fi
  1712. fi
  1713. # Save the original compiler flags and libraries
  1714. ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  1715. # Add the Raspberry Pi compiler flags and libraries
  1716. CFLAGS="$CFLAGS $RPI_CFLAGS"; LIBS="$LIBS $RPI_LIBS"
  1717. AC_MSG_CHECKING(for Raspberry Pi 2/3)
  1718. have_video_rpi=no
  1719. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  1720. #include <bcm_host.h>
  1721. #include <EGL/eglplatform.h>
  1722. ]], [[
  1723. EGL_DISPMANX_WINDOW_T window;
  1724. bcm_host_init();
  1725. ]])], [have_video_rpi=yes],[])
  1726. AC_MSG_RESULT($have_video_rpi)
  1727. # Restore the compiler flags and libraries
  1728. CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  1729. if test x$have_video_rpi = xyes; then
  1730. CFLAGS="$CFLAGS $RPI_CFLAGS"
  1731. SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS"
  1732. EXTRA_CFLAGS="$EXTRA_CFLAGS $RPI_CFLAGS"
  1733. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $RPI_LIBS"
  1734. SOURCES="$SOURCES $srcdir/src/video/raspberry/*.c"
  1735. AC_DEFINE(SDL_VIDEO_DRIVER_RPI, 1, [ ])
  1736. SUMMARY_video="${SUMMARY_video} rpi"
  1737. have_video=yes
  1738. fi
  1739. fi
  1740. }
  1741. dnl Find the X11 include and library directories
  1742. CheckX11()
  1743. {
  1744. AC_ARG_ENABLE(video-x11,
  1745. [AS_HELP_STRING([--enable-video-x11], [use X11 video driver [default=maybe]])],
  1746. ,[
  1747. enable_video_x11=yes
  1748. case "$host" in
  1749. *-*-darwin*|*-ios-*)
  1750. enable_video_x11=no
  1751. ;;
  1752. esac])
  1753. if test x$enable_video = xyes -a x$enable_video_x11 = xyes; then
  1754. case "$host" in
  1755. *-*-darwin*)
  1756. # This isn't necessary for X11, but fixes GLX detection
  1757. if test "x$x_includes" = xNONE && \
  1758. test "x$x_libraries" = xNONE && \
  1759. test -d /opt/X11/include && \
  1760. test -d /opt/X11/lib; then
  1761. x_includes="/opt/X11/include"
  1762. x_libraries="/opt/X11/lib"
  1763. fi
  1764. ;;
  1765. esac
  1766. AC_PATH_X
  1767. AC_PATH_XTRA
  1768. if test x$have_x = xyes; then
  1769. AC_ARG_ENABLE(x11-shared,
  1770. [AS_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [default=maybe]])],
  1771. , enable_x11_shared=maybe)
  1772. case "$host" in
  1773. *-*-darwin*)
  1774. # Apple now puts this in /opt/X11
  1775. x11_lib='/opt/X11/lib/libX11.6.dylib'
  1776. x11ext_lib='/opt/X11/lib/libXext.6.dylib'
  1777. xcursor_lib='/opt/X11/lib/libXcursor.1.dylib'
  1778. xinput_lib='/opt/X11/lib/libXi.6.dylib'
  1779. xfixes_lib='/opt/X11/lib/libXfixes.3.dylib'
  1780. xrandr_lib='/opt/X11/lib/libXrandr.2.dylib'
  1781. xrender_lib='/opt/X11/lib/libXrender.1.dylib'
  1782. xss_lib='/opt/X11/lib/libXss.1.dylib'
  1783. ;;
  1784. *-*-openbsd*)
  1785. x11_lib='libX11.so'
  1786. x11ext_lib='libXext.so'
  1787. xcursor_lib='libXcursor.so'
  1788. xinput_lib='libXi.so'
  1789. xfixes_lib='libXfixes.so'
  1790. xrandr_lib='libXrandr.so'
  1791. xrender_lib='libXrender.so'
  1792. xss_lib='libXss.so'
  1793. ;;
  1794. *)
  1795. x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1796. x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1797. xcursor_lib=[`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1798. xinput_lib=[`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1799. xfixes_lib=[`find_lib "libXfixes.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1800. xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1801. xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1802. xss_lib=[`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1803. ;;
  1804. esac
  1805. if test x$ac_cv_func_shmat != xyes; then
  1806. X_CFLAGS="$X_CFLAGS -DNO_SHARED_MEMORY"
  1807. fi
  1808. CFLAGS="$CFLAGS $X_CFLAGS"
  1809. LDFLAGS="$LDFLAGS $X_LIBS"
  1810. AC_CHECK_HEADER(X11/extensions/Xext.h,
  1811. have_xext_h_hdr=yes,
  1812. have_xext_h_hdr=no,
  1813. [#include <X11/Xlib.h>
  1814. #include <X11/Xproto.h>
  1815. ])
  1816. if test x$have_xext_h_hdr != xyes; then
  1817. AC_MSG_ERROR([
  1818. *** Missing Xext.h, maybe you need to install the libxext-dev package?
  1819. ])
  1820. fi
  1821. AC_DEFINE(SDL_VIDEO_DRIVER_X11, 1, [ ])
  1822. SOURCES="$SOURCES $srcdir/src/video/x11/*.c"
  1823. EXTRA_CFLAGS="$EXTRA_CFLAGS $X_CFLAGS"
  1824. # Needed so SDL applications can include SDL_syswm.h
  1825. SDL_CFLAGS="$SDL_CFLAGS $X_CFLAGS"
  1826. if test x$enable_x11_shared = xmaybe; then
  1827. enable_x11_shared=yes
  1828. fi
  1829. if test x$have_loadso != xyes && \
  1830. test x$enable_x11_shared = xyes; then
  1831. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading])
  1832. enable_x11_shared=no
  1833. fi
  1834. if test x$have_loadso = xyes && \
  1835. test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then
  1836. echo "-- dynamic libX11 -> $x11_lib"
  1837. echo "-- dynamic libX11ext -> $x11ext_lib"
  1838. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib", [ ])
  1839. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib", [ ])
  1840. SUMMARY_video="${SUMMARY_video} x11(dynamic)"
  1841. else
  1842. enable_x11_shared=no
  1843. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext"
  1844. SUMMARY_video="${SUMMARY_video} x11"
  1845. fi
  1846. have_video=yes
  1847. AC_MSG_CHECKING([for XGenericEvent])
  1848. have_XGenericEvent=no
  1849. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1850. #include <X11/Xlib.h>
  1851. ]], [[
  1852. Display *display;
  1853. XEvent event;
  1854. XGenericEventCookie *cookie = &event.xcookie;
  1855. XNextEvent(display, &event);
  1856. XGetEventData(display, cookie);
  1857. XFreeEventData(display, cookie);
  1858. ]])], [
  1859. have_XGenericEvent=yes
  1860. AC_DEFINE([SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS], 1, [ ])
  1861. ],[])
  1862. AC_MSG_RESULT($have_XGenericEvent)
  1863. AC_CHECK_LIB(X11, XkbKeycodeToKeysym, AC_DEFINE(SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM, 1, [Have XkbKeycodeToKeysym]))
  1864. AC_ARG_ENABLE(video-x11-xcursor,
  1865. [AS_HELP_STRING([--enable-video-x11-xcursor], [enable X11 Xcursor support [default=yes]])],
  1866. , enable_video_x11_xcursor=yes)
  1867. if test x$enable_video_x11_xcursor = xyes; then
  1868. definitely_enable_video_x11_xcursor=no
  1869. AC_CHECK_HEADER(X11/Xcursor/Xcursor.h,
  1870. have_xcursor_h_hdr=yes,
  1871. have_xcursor_h_hdr=no,
  1872. [#include <X11/Xlib.h>
  1873. ])
  1874. if test x$have_xcursor_h_hdr = xyes; then
  1875. if test x$enable_x11_shared = xyes && test x$xcursor_lib != x ; then
  1876. echo "-- dynamic libXcursor -> $xcursor_lib"
  1877. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR, "$xcursor_lib", [ ])
  1878. definitely_enable_video_x11_xcursor=yes
  1879. else
  1880. AC_CHECK_LIB(Xcursor, XcursorImageCreate, have_xcursor_lib=yes)
  1881. if test x$have_xcursor_lib = xyes ; then
  1882. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXcursor"
  1883. definitely_enable_video_x11_xcursor=yes
  1884. fi
  1885. fi
  1886. fi
  1887. fi
  1888. if test x$definitely_enable_video_x11_xcursor = xyes; then
  1889. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XCURSOR, 1, [ ])
  1890. SUMMARY_video_x11="${SUMMARY_video_x11} xcursor"
  1891. fi
  1892. AC_ARG_ENABLE(video-x11-xdbe,
  1893. [AS_HELP_STRING([--enable-video-x11-xdbe], [enable X11 Xdbe support [default=yes]])],
  1894. , enable_video_x11_xdbe=yes)
  1895. if test x$enable_video_x11_xdbe = xyes; then
  1896. AC_CHECK_HEADER(X11/extensions/Xdbe.h,
  1897. have_dbe_h_hdr=yes,
  1898. have_dbe_h_hdr=no,
  1899. [#include <X11/Xlib.h>
  1900. ])
  1901. if test x$have_dbe_h_hdr = xyes; then
  1902. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XDBE, 1, [ ])
  1903. SUMMARY_video_x11="${SUMMARY_video_x11} xdbe"
  1904. fi
  1905. fi
  1906. AC_ARG_ENABLE(video-x11-xinput,
  1907. [AS_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [default=yes]])],
  1908. , enable_video_x11_xinput=yes)
  1909. if test x$enable_video_x11_xinput = xyes; then
  1910. definitely_enable_video_x11_xinput=no
  1911. AC_CHECK_HEADER(X11/extensions/XInput2.h,
  1912. have_xinput_h_hdr=yes,
  1913. have_xinput_h_hdr=no,
  1914. [#include <X11/Xlib.h>
  1915. ])
  1916. if test x$have_xinput_h_hdr = xyes; then
  1917. if test x$enable_x11_shared = xyes && test x$xinput_lib != x ; then
  1918. echo "-- dynamic libXi -> $xinput_lib"
  1919. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2, "$xinput_lib", [ ])
  1920. definitely_enable_video_x11_xinput=yes
  1921. else
  1922. AC_CHECK_LIB(Xi, XOpenDevice, have_xinput_lib=yes)
  1923. if test x$have_xinput_lib = xyes ; then
  1924. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXi"
  1925. definitely_enable_video_x11_xinput=yes
  1926. fi
  1927. fi
  1928. fi
  1929. fi
  1930. if test x$definitely_enable_video_x11_xinput = xyes; then
  1931. SUMMARY_video_x11="${SUMMARY_video_x11} xinput2"
  1932. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2, 1, [ ])
  1933. AC_MSG_CHECKING(for xinput2 multitouch)
  1934. have_xinput2_multitouch=no
  1935. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1936. #include <X11/Xlib.h>
  1937. #include <X11/Xproto.h>
  1938. #include <X11/extensions/XInput2.h>
  1939. ]], [[
  1940. int event_type = XI_TouchBegin;
  1941. XITouchClassInfo *t;
  1942. ]])], [
  1943. have_xinput2_multitouch=yes
  1944. AC_DEFINE([SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH], 1, [ ])
  1945. SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch"
  1946. ],[])
  1947. AC_MSG_RESULT($have_xinput2_multitouch)
  1948. fi
  1949. AC_ARG_ENABLE(video-x11-xfixes,
  1950. [AS_HELP_STRING([--enable-video-x11-xfixes], [enable X11 Xfixes support [default=yes]])],
  1951. , enable_video_x11_xfixes=yes)
  1952. if test x$enable_video_x11_xfixes = xyes; then
  1953. definitely_enable_video_x11_xfixes=no
  1954. # check along with XInput2.h because we use Xfixes with XIBarrierReleasePointer
  1955. AC_MSG_CHECKING(for X11/extensions/Xfixes.h)
  1956. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1957. #include <X11/Xlib.h>
  1958. #include <X11/Xproto.h>
  1959. #include <X11/extensions/XInput2.h>
  1960. #include <X11/extensions/Xfixes.h>]],
  1961. [BarrierEventID b;])],
  1962. [have_xfixes_h_hdr=yes],
  1963. [have_xfixes_h_hdr=no])
  1964. AC_MSG_RESULT($have_xfixes_h_hdr)
  1965. if test x$have_xfixes_h_hdr = xyes; then
  1966. if test x$enable_x11_shared = xyes && test x$xfixes_lib != x ; then
  1967. echo "-- dynamic libXfixes -> $xfixes_lib"
  1968. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES, "$xfixes_lib", [ ])
  1969. definitely_enable_video_x11_xfixes=yes
  1970. else
  1971. AC_CHECK_LIB(Xfixes, XFixesCreatePointerBarrier, have_xfixes_lib=yes)
  1972. if test x$have_xfixes_lib = xyes ; then
  1973. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXfixes"
  1974. definitely_enable_video_x11_xfixes=yes
  1975. fi
  1976. fi
  1977. fi
  1978. fi
  1979. if test x$definitely_enable_video_x11_xfixes = xyes; then
  1980. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XFIXES, 1, [ ])
  1981. SUMMARY_video_x11="${SUMMARY_video_x11} xfixes"
  1982. fi
  1983. AC_ARG_ENABLE(video-x11-xrandr,
  1984. [AS_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [default=yes]])],
  1985. , enable_video_x11_xrandr=yes)
  1986. if test x$enable_video_x11_xrandr = xyes; then
  1987. dnl XRRScreenResources is only present in Xrandr >= 1.2, we use that as a test.
  1988. definitely_enable_video_x11_xrandr=no
  1989. have_xrandr_h_hdr=no
  1990. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  1991. #include <X11/Xlib.h>
  1992. #include <X11/extensions/Xrandr.h>
  1993. ]], [[
  1994. XRRScreenResources *res = NULL;
  1995. ]])], [have_xrandr_h_hdr=yes],[])
  1996. if test x$have_xrandr_h_hdr = xyes; then
  1997. if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
  1998. echo "-- dynamic libXrandr -> $xrandr_lib"
  1999. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib", [ ])
  2000. definitely_enable_video_x11_xrandr=yes
  2001. else
  2002. AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
  2003. if test x$have_xrandr_lib = xyes ; then
  2004. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr"
  2005. definitely_enable_video_x11_xrandr=yes
  2006. fi
  2007. fi
  2008. fi
  2009. fi
  2010. if test x$definitely_enable_video_x11_xrandr = xyes; then
  2011. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR, 1, [ ])
  2012. SUMMARY_video_x11="${SUMMARY_video_x11} xrandr"
  2013. fi
  2014. AC_ARG_ENABLE(video-x11-scrnsaver,
  2015. [AS_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension [default=yes]])],
  2016. , enable_video_x11_scrnsaver=yes)
  2017. if test x$enable_video_x11_scrnsaver = xyes; then
  2018. AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
  2019. have_scrnsaver_h_hdr=yes,
  2020. have_scrnsaver_h_hdr=no,
  2021. [#include <X11/Xlib.h>
  2022. ])
  2023. if test x$have_scrnsaver_h_hdr = xyes; then
  2024. if test x$enable_x11_shared = xyes && test x$xss_lib != x ; then
  2025. echo "-- dynamic libXss -> $xss_lib"
  2026. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS, "$xss_lib", [ ])
  2027. definitely_enable_video_x11_scrnsaver=yes
  2028. else
  2029. AC_CHECK_LIB(Xss, XScreenSaverSuspend, have_xss_lib=yes)
  2030. if test x$have_xss_lib = xyes ; then
  2031. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXss"
  2032. definitely_enable_video_x11_scrnsaver=yes
  2033. fi
  2034. fi
  2035. fi
  2036. fi
  2037. if test x$definitely_enable_video_x11_scrnsaver = xyes; then
  2038. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSCRNSAVER, 1, [ ])
  2039. SUMMARY_video_x11="${SUMMARY_video_x11} xscrnsaver"
  2040. fi
  2041. AC_ARG_ENABLE(video-x11-xshape,
  2042. [AS_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [default=yes]])],
  2043. , enable_video_x11_xshape=yes)
  2044. if test x$enable_video_x11_xshape = xyes; then
  2045. AC_CHECK_HEADER(X11/extensions/shape.h,
  2046. have_shape_h_hdr=yes,
  2047. have_shape_h_hdr=no,
  2048. [#include <X11/Xlib.h>
  2049. ])
  2050. if test x$have_shape_h_hdr = xyes; then
  2051. AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSHAPE, 1, [ ])
  2052. SUMMARY_video_x11="${SUMMARY_video_x11} xshape"
  2053. fi
  2054. fi
  2055. fi
  2056. fi
  2057. if test x$have_x != xyes; then
  2058. # Prevent Mesa from including X11 headers
  2059. EXTRA_CFLAGS="$EXTRA_CFLAGS -DMESA_EGL_NO_X11_HEADERS -DEGL_NO_X11"
  2060. fi
  2061. }
  2062. dnl Set up the Vivante video driver if enabled
  2063. CheckVivanteVideo()
  2064. {
  2065. AC_ARG_ENABLE(video-vivante,
  2066. [AS_HELP_STRING([--enable-video-vivante], [use Vivante EGL video driver [default=yes]])],
  2067. , enable_video_vivante=yes)
  2068. if test x$enable_video = xyes -a x$enable_video_vivante = xyes; then
  2069. AC_MSG_CHECKING(for Vivante VDK API)
  2070. have_vivante_vdk=no
  2071. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2072. #define LINUX
  2073. #define EGL_API_FB
  2074. #include <gc_vdk.h>
  2075. ]],[])], [have_vivante_vdk=yes],[])
  2076. AC_MSG_RESULT($have_vivante_vdk)
  2077. AC_MSG_CHECKING(for Vivante FB API)
  2078. have_vivante_egl=no
  2079. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2080. #define LINUX
  2081. #define EGL_API_FB
  2082. #include <EGL/eglvivante.h>
  2083. ]],[])], [have_vivante_egl=yes],[])
  2084. AC_MSG_RESULT($have_vivante_egl)
  2085. if test x$have_vivante_vdk = xyes -o x$have_vivante_egl = xyes; then
  2086. AC_DEFINE(SDL_VIDEO_DRIVER_VIVANTE, 1, [ ])
  2087. EXTRA_CFLAGS="$EXTRA_CFLAGS -DLINUX -DEGL_API_FB"
  2088. if test x$have_vivante_vdk = xyes; then
  2089. AC_DEFINE(SDL_VIDEO_DRIVER_VIVANTE_VDK, 1, [ ])
  2090. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lVDK"
  2091. fi
  2092. SOURCES="$SOURCES $srcdir/src/video/vivante/*.c"
  2093. SUMMARY_video="${SUMMARY_video} vivante"
  2094. have_video=yes
  2095. fi
  2096. fi
  2097. }
  2098. dnl Set up the Haiku video driver if enabled
  2099. CheckHaikuVideo()
  2100. {
  2101. if test x$enable_video = xyes; then
  2102. AC_DEFINE(SDL_VIDEO_DRIVER_HAIKU, 1, [ ])
  2103. SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc"
  2104. have_video=yes
  2105. SUMMARY_video="${SUMMARY_video} haiku"
  2106. fi
  2107. }
  2108. dnl Set up the Cocoa video driver for Mac OS X (but not Darwin)
  2109. CheckCOCOA()
  2110. {
  2111. AC_ARG_ENABLE(video-cocoa,
  2112. [AS_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [default=yes]])],
  2113. , enable_video_cocoa=yes)
  2114. if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
  2115. save_CFLAGS="$CFLAGS"
  2116. dnl Work around that we don't have Objective-C support in autoconf
  2117. CFLAGS="$CFLAGS -x objective-c"
  2118. AC_MSG_CHECKING(for Cocoa framework)
  2119. have_cocoa=no
  2120. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2121. #import <Cocoa/Cocoa.h>
  2122. ]],[])], [have_cocoa=yes],[])
  2123. AC_MSG_RESULT($have_cocoa)
  2124. CFLAGS="$save_CFLAGS"
  2125. if test x$have_cocoa = xyes; then
  2126. AC_DEFINE(SDL_VIDEO_DRIVER_COCOA, 1, [ ])
  2127. SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m"
  2128. SUMMARY_video="${SUMMARY_video} cocoa"
  2129. have_video=yes
  2130. fi
  2131. fi
  2132. }
  2133. CheckMETAL()
  2134. {
  2135. AC_ARG_ENABLE(video-metal,
  2136. [AS_HELP_STRING([--enable-video-metal], [include Metal support [default=yes]])],
  2137. , enable_video_metal=yes)
  2138. AC_ARG_ENABLE(render-metal,
  2139. [AS_HELP_STRING([--enable-render-metal], [enable the Metal render driver [default=yes]])],
  2140. , enable_render_metal=yes)
  2141. if test x$enable_video = xyes -a x$enable_video_metal = xyes; then
  2142. save_CFLAGS="$CFLAGS"
  2143. dnl Work around that we don't have Objective-C support in autoconf
  2144. CFLAGS="$CFLAGS -x objective-c"
  2145. AC_MSG_CHECKING(for Metal framework)
  2146. have_metal=no
  2147. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2148. #import <Cocoa/Cocoa.h>
  2149. #import <Metal/Metal.h>
  2150. #import <QuartzCore/CAMetalLayer.h>
  2151. #if TARGET_CPU_X86
  2152. #error Metal doesn't work on this configuration
  2153. #endif
  2154. ]],[])], [have_metal=yes],[])
  2155. CFLAGS="$save_CFLAGS"
  2156. AC_MSG_RESULT($have_metal)
  2157. if test x$have_metal = xyes; then
  2158. AC_DEFINE(SDL_VIDEO_METAL, 1, [ ])
  2159. if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
  2160. AC_DEFINE(SDL_VIDEO_RENDER_METAL, 1, [ ])
  2161. SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
  2162. fi
  2163. SUMMARY_video="${SUMMARY_video} metal"
  2164. else
  2165. enable_video_metal=no
  2166. enable_render_metal=no
  2167. fi
  2168. fi
  2169. }
  2170. dnl Find DirectFB
  2171. CheckDirectFB()
  2172. {
  2173. AC_ARG_ENABLE(video-directfb,
  2174. [AS_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [default=no]])],
  2175. , enable_video_directfb=no)
  2176. if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
  2177. PKG_CHECK_MODULES([DIRECTFB], [directfb >= 1.0.0], video_directfb=yes, video_directfb=no)
  2178. if test x$video_directfb = xyes; then
  2179. # SuSE 11.1 installs directfb-config without directfb-devel
  2180. save_CPPFLAGS="$CPPFLAGS"
  2181. CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
  2182. AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
  2183. CPPFLAGS="$save_CPPFLAGS"
  2184. video_directfb=$have_directfb_hdr
  2185. fi
  2186. if test x$video_directfb = xyes; then
  2187. AC_ARG_ENABLE(directfb-shared,
  2188. [AS_HELP_STRING([--enable-directfb-shared], [dynamically load directfb support [default=yes]])],
  2189. , enable_directfb_shared=yes)
  2190. AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB, 1, [ ])
  2191. AC_DEFINE(SDL_VIDEO_RENDER_DIRECTFB, 1, [ ])
  2192. SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
  2193. EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
  2194. directfb_shared=no
  2195. directfb_lib=[`find_lib "libdirectfb*.so.*" "$DIRECTFB_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
  2196. if test x$have_loadso != xyes && \
  2197. test x$enable_directfb_shared = xyes; then
  2198. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic directfb loading])
  2199. fi
  2200. if test x$have_loadso = xyes && \
  2201. test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
  2202. directfb_shared=yes
  2203. echo "-- dynamic libdirectfb -> $directfb_lib"
  2204. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ])
  2205. SUMMARY_video="${SUMMARY_video} directfb(dynamic)"
  2206. else
  2207. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
  2208. SUMMARY_video="${SUMMARY_video} directfb"
  2209. fi
  2210. SDL_CFLAGS="$SDL_CFLAGS $DIRECTFB_CFLAGS"
  2211. have_video=yes
  2212. fi
  2213. fi
  2214. }
  2215. dnl Find KMSDRM
  2216. CheckKMSDRM()
  2217. {
  2218. AC_ARG_ENABLE(video-kmsdrm,
  2219. [AS_HELP_STRING([--enable-video-kmsdrm], [use KMSDRM video driver [default=yes]])],
  2220. , enable_video_kmsdrm=yes)
  2221. if test x$enable_video = xyes && \
  2222. test x$enable_video_kmsdrm = xyes && \
  2223. test x$video_opengl_egl = xyes; then
  2224. video_kmsdrm=no
  2225. PKG_CHECK_MODULES([LIBDRM], [libdrm >= 1.4.82], libdrm_avail=yes, libdrm_avail=no)
  2226. PKG_CHECK_MODULES([LIBGBM], [gbm >= 11.1.0], libgbm_avail=yes, libgbm_avail=no)
  2227. if test x$libdrm_avail = xyes -a x$libgbm_avail = xyes; then
  2228. video_kmsdrm=yes
  2229. fi
  2230. if test x$video_kmsdrm = xyes; then
  2231. AC_ARG_ENABLE(kmsdrm-shared,
  2232. [AS_HELP_STRING([--enable-kmsdrm-shared], [dynamically load kmsdrm support [default=yes]])],
  2233. , enable_kmsdrm_shared=yes)
  2234. AC_DEFINE(SDL_VIDEO_DRIVER_KMSDRM, 1, [ ])
  2235. SOURCES="$SOURCES $srcdir/src/video/kmsdrm/*.c"
  2236. EXTRA_CFLAGS="$EXTRA_CFLAGS $LIBDRM_CFLAGS $LIBGBM_CFLAGS"
  2237. AC_MSG_CHECKING(for kmsdrm dynamic loading support)
  2238. kmsdrm_shared=no
  2239. drm_lib=[`find_lib "libdrm.so.*" "$LIBDRM_LIBS"`]
  2240. gbm_lib=[`find_lib "libgbm.so.*" "$LIBGBM_LIBS"`]
  2241. if test x$have_loadso != xyes && \
  2242. test x$enable_kmsdrm_shared = xyes; then
  2243. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic kmsdrm loading])
  2244. fi
  2245. if test x$have_loadso = xyes && \
  2246. test x$enable_kmsdrm_shared = xyes && test x$drm_lib != x && test x$gbm_lib != x; then
  2247. kmsdrm_shared=yes
  2248. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC, "$drm_lib", [ ])
  2249. AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM, "$gbm_lib", [ ])
  2250. AC_DEFINE_UNQUOTED(HAVE_KMSDRM_SHARED, "TRUE", [ ])
  2251. SUMMARY_video="${SUMMARY_video} kmsdrm(dynamic)"
  2252. else
  2253. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LIBDRM_LIBS $LIBGBM_LIBS"
  2254. SUMMARY_video="${SUMMARY_video} kmsdrm"
  2255. fi
  2256. AC_MSG_RESULT($kmsdrm_shared)
  2257. if test x$kmsdrm_shared = xyes; then
  2258. echo "-- dynamic libdrm -> $drm_lib"
  2259. echo "-- dynamic libgbm -> $gbm_lib"
  2260. fi
  2261. have_video=yes
  2262. fi
  2263. fi
  2264. }
  2265. dnl rcg04172001 Set up the Null video driver.
  2266. CheckDummyVideo()
  2267. {
  2268. AC_ARG_ENABLE(video-dummy,
  2269. [AS_HELP_STRING([--enable-video-dummy], [use dummy video driver [default=yes]])],
  2270. , enable_video_dummy=yes)
  2271. if test x$enable_video_dummy = xyes; then
  2272. AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ])
  2273. SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
  2274. have_video=yes
  2275. SUMMARY_video="${SUMMARY_video} dummy"
  2276. fi
  2277. }
  2278. CheckOffscreenVideo()
  2279. {
  2280. AC_ARG_ENABLE(video-offscreen,
  2281. [AS_HELP_STRING([--enable-video-offscreen], [use offscreen video driver [default=yes]])],
  2282. , enable_video_offscreen=yes)
  2283. if test x$enable_video_offscreen = xyes; then
  2284. AC_DEFINE(SDL_VIDEO_DRIVER_OFFSCREEN, 1, [ ])
  2285. SOURCES="$SOURCES $srcdir/src/video/offscreen/*.c"
  2286. have_video=yes
  2287. SUMMARY_video="${SUMMARY_video} offscreen"
  2288. fi
  2289. }
  2290. dnl Set up the QNX video driver if enabled
  2291. CheckQNXVideo()
  2292. {
  2293. if test x$enable_video = xyes; then
  2294. AC_DEFINE(SDL_VIDEO_DRIVER_QNX, 1, [ ])
  2295. SOURCES="$SOURCES $srcdir/src/video/qnx/*.c"
  2296. have_video=yes
  2297. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lscreen -lEGL -lGLESv2"
  2298. SUMMARY_video="${SUMMARY_video} qnx"
  2299. fi
  2300. }
  2301. dnl Set up the QNX audio driver if enabled
  2302. CheckQNXAudio()
  2303. {
  2304. if test x$enable_audio = xyes; then
  2305. AC_DEFINE(SDL_AUDIO_DRIVER_QSA, 1, [ ])
  2306. SOURCES="$SOURCES $srcdir/src/audio/qsa/*.c"
  2307. have_audio=yes
  2308. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lasound"
  2309. SUMMARY_audio="${SUMMARY_audio} qsa"
  2310. fi
  2311. }
  2312. dnl Check to see if OpenGL support is desired
  2313. AC_ARG_ENABLE(video-opengl,
  2314. [AS_HELP_STRING([--enable-video-opengl], [include OpenGL support [default=yes]])],
  2315. , enable_video_opengl=yes)
  2316. dnl Find GLX
  2317. CheckGLX()
  2318. {
  2319. if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  2320. AC_MSG_CHECKING(for GLX support)
  2321. video_opengl_glx=no
  2322. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2323. #include <GL/glx.h>
  2324. ]],[])], [video_opengl_glx=yes],[])
  2325. AC_MSG_RESULT($video_opengl_glx)
  2326. if test x$video_opengl_glx = xyes; then
  2327. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2328. AC_DEFINE(SDL_VIDEO_OPENGL_GLX, 1, [ ])
  2329. fi
  2330. fi
  2331. }
  2332. dnl Check to see if OpenGL ES support is desired
  2333. AC_ARG_ENABLE(video-opengles,
  2334. [AS_HELP_STRING([--enable-video-opengles], [include OpenGL ES support [default=yes]])],
  2335. , enable_video_opengles=yes)
  2336. AC_ARG_ENABLE(video-opengles1,
  2337. [AS_HELP_STRING([--enable-video-opengles1], [include OpenGL ES 1.1 support [default=yes]])],
  2338. , enable_video_opengles1=yes)
  2339. AC_ARG_ENABLE(video-opengles2,
  2340. [AS_HELP_STRING([--enable-video-opengles2], [include OpenGL ES 2.0 support [default=yes]])],
  2341. , enable_video_opengles2=yes)
  2342. dnl Find EGL
  2343. CheckEGL()
  2344. {
  2345. if test x$enable_video = xyes -a x$enable_video_opengl = xyes || test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  2346. AC_MSG_CHECKING(for EGL support)
  2347. video_opengl_egl=no
  2348. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2349. #define LINUX
  2350. #define EGL_API_FB
  2351. #define MESA_EGL_NO_X11_HEADERS
  2352. #define EGL_NO_X11
  2353. #include <EGL/egl.h>
  2354. #include <EGL/eglext.h>
  2355. ]],[])], [video_opengl_egl=yes],[])
  2356. AC_MSG_RESULT($video_opengl_egl)
  2357. if test x$video_opengl_egl = xyes; then
  2358. AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
  2359. fi
  2360. fi
  2361. }
  2362. dnl Find OpenGL
  2363. CheckOpenGL()
  2364. {
  2365. if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  2366. AC_MSG_CHECKING(for OpenGL headers)
  2367. video_opengl=no
  2368. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2369. #include <GL/gl.h>
  2370. #include <GL/glext.h>
  2371. ]],[])], [video_opengl=yes],[])
  2372. AC_MSG_RESULT($video_opengl)
  2373. if test x$video_opengl = xyes; then
  2374. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2375. AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  2376. SUMMARY_video="${SUMMARY_video} opengl"
  2377. fi
  2378. fi
  2379. }
  2380. dnl Find OpenGL ES
  2381. CheckOpenGLES()
  2382. {
  2383. if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  2384. if test x$enable_video_opengles1 = xyes; then
  2385. AC_MSG_CHECKING(for OpenGL ES v1 headers)
  2386. video_opengles_v1=no
  2387. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2388. #include <GLES/gl.h>
  2389. #include <GLES/glext.h>
  2390. ]],[])], [video_opengles_v1=yes],[])
  2391. AC_MSG_RESULT($video_opengles_v1)
  2392. if test x$video_opengles_v1 = xyes; then
  2393. AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ])
  2394. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ])
  2395. SUMMARY_video="${SUMMARY_video} opengl_es1"
  2396. fi
  2397. fi
  2398. if test x$enable_video_opengles2 = xyes; then
  2399. AC_MSG_CHECKING(for OpenGL ES v2 headers)
  2400. video_opengles_v2=no
  2401. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2402. #include <GLES2/gl2.h>
  2403. #include <GLES2/gl2ext.h>
  2404. ]],[])], [video_opengles_v2=yes],[])
  2405. AC_MSG_RESULT($video_opengles_v2)
  2406. if test x$video_opengles_v2 = xyes; then
  2407. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  2408. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  2409. SUMMARY_video="${SUMMARY_video} opengl_es2"
  2410. fi
  2411. fi
  2412. fi
  2413. }
  2414. dnl Check for Windows OpenGL
  2415. CheckWINDOWSGL()
  2416. {
  2417. if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  2418. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2419. AC_DEFINE(SDL_VIDEO_OPENGL_WGL, 1, [ ])
  2420. AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  2421. SUMMARY_video="${SUMMARY_video} opengl"
  2422. fi
  2423. }
  2424. dnl Check for Windows OpenGL
  2425. CheckWINDOWSGLES()
  2426. {
  2427. if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  2428. AC_MSG_CHECKING(for EGL support)
  2429. video_opengl_egl=no
  2430. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2431. #include <EGL/egl.h>
  2432. ]],[])], [video_opengl_egl=yes],[])
  2433. AC_MSG_RESULT($video_opengl_egl)
  2434. if test x$video_opengl_egl = xyes; then
  2435. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2436. AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
  2437. SUMMARY_video="${SUMMARY_video} opengl_es1"
  2438. fi
  2439. AC_MSG_CHECKING(for OpenGL ES v2 headers)
  2440. video_opengles_v2=no
  2441. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2442. #include <GLES2/gl2.h>
  2443. #include <GLES2/gl2ext.h>
  2444. ]],[])], [video_opengles_v2=yes],[])
  2445. AC_MSG_RESULT($video_opengles_v2)
  2446. if test x$video_opengles_v2 = xyes; then
  2447. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2448. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  2449. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  2450. SUMMARY_video="${SUMMARY_video} opengl_es2"
  2451. fi
  2452. fi
  2453. }
  2454. dnl Check for Haiku OpenGL
  2455. CheckHaikuGL()
  2456. {
  2457. if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  2458. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2459. AC_DEFINE(SDL_VIDEO_OPENGL_HAIKU, 1, [ ])
  2460. AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  2461. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
  2462. SUMMARY_video="${SUMMARY_video} opengl"
  2463. fi
  2464. }
  2465. dnl Check for MacOS OpenGL
  2466. CheckMacGL()
  2467. {
  2468. if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  2469. AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  2470. AC_DEFINE(SDL_VIDEO_OPENGL_CGL, 1, [ ])
  2471. AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  2472. SUMMARY_video="${SUMMARY_video} opengl"
  2473. fi
  2474. }
  2475. dnl Check for MacOS OpenGLES
  2476. CheckMacGLES()
  2477. {
  2478. if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  2479. video_opengl_egl=yes
  2480. AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
  2481. video_opengles_v2=yes
  2482. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  2483. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  2484. SUMMARY_video="${SUMMARY_video} opengl_es2"
  2485. fi
  2486. }
  2487. CheckEmscriptenGLES()
  2488. {
  2489. if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  2490. AC_MSG_CHECKING(for EGL support)
  2491. video_opengl_egl=no
  2492. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2493. #include <EGL/egl.h>
  2494. ]],[])], [video_opengl_egl=yes],[])
  2495. AC_MSG_RESULT($video_opengl_egl)
  2496. if test x$video_opengl_egl = xyes; then
  2497. AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
  2498. fi
  2499. AC_MSG_CHECKING(for OpenGL ES v2 headers)
  2500. video_opengles_v2=no
  2501. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2502. #include <GLES2/gl2.h>
  2503. #include <GLES2/gl2ext.h>
  2504. ]],[])], [video_opengles_v2=yes],[])
  2505. AC_MSG_RESULT($video_opengles_v2)
  2506. if test x$video_opengles_v2 = xyes; then
  2507. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  2508. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  2509. SUMMARY_video="${SUMMARY_video} opengl_es2"
  2510. fi
  2511. fi
  2512. }
  2513. dnl Check to see if Vulkan support is desired
  2514. AC_ARG_ENABLE(video-vulkan,
  2515. [AS_HELP_STRING([--enable-video-vulkan], [include Vulkan support [default=yes]])],
  2516. , enable_video_vulkan=yes)
  2517. dnl Find Vulkan Header
  2518. CheckVulkan()
  2519. {
  2520. if test x$enable_video = xyes -a x$enable_video_vulkan = xyes; then
  2521. case "$host" in
  2522. *-*-android*)
  2523. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2524. #if defined(__ARM_ARCH) && __ARM_ARCH < 7
  2525. #error Vulkan doesn't work on this configuration
  2526. #endif
  2527. ]],[])], [],[enable_video_vulkan=no])
  2528. ;;
  2529. *-*-darwin*)
  2530. save_CFLAGS="$CFLAGS"
  2531. dnl Work around that we don't have Objective-C support in autoconf
  2532. CFLAGS="$CFLAGS -x objective-c"
  2533. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2534. #include <Cocoa/Cocoa.h>
  2535. #include <Metal/Metal.h>
  2536. #include <QuartzCore/CAMetalLayer.h>
  2537. #if TARGET_CPU_X86
  2538. #error Vulkan doesn't work on this configuration
  2539. #endif
  2540. ]],[])], [],[enable_video_vulkan=no])
  2541. CFLAGS="$save_CFLAGS"
  2542. ;;
  2543. *)
  2544. ;;
  2545. esac
  2546. if test x$enable_video_vulkan = xno; then
  2547. # For reasons I am totally unable to see, I get an undefined macro error if
  2548. # I put this in the AC_TRY_COMPILE.
  2549. AC_MSG_WARN([Vulkan does not work on this configuration.])
  2550. fi
  2551. fi
  2552. if test x$have_loadso != xyes; then
  2553. AC_MSG_WARN([Vulkan support is available, but disabled because there's no loadso.])
  2554. enable_video_vulkan=no
  2555. fi
  2556. if test x$enable_video_vulkan = xyes; then
  2557. AC_DEFINE(SDL_VIDEO_VULKAN, 1, [ ])
  2558. SUMMARY_video="${SUMMARY_video} vulkan"
  2559. fi
  2560. }
  2561. dnl See if we can use the new unified event interface in Linux 2.4
  2562. CheckInputEvents()
  2563. {
  2564. dnl Check for Linux 2.4 unified input event interface support
  2565. AC_CHECK_HEADERS(linux/input.h)
  2566. AC_MSG_CHECKING(for Linux 2.4 unified input interface)
  2567. use_input_events=no
  2568. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2569. #include <linux/input.h>
  2570. ]], [[
  2571. #ifndef EVIOCGNAME
  2572. #error EVIOCGNAME() ioctl not available
  2573. #endif
  2574. ]])], [use_input_events=yes],[])
  2575. AC_MSG_RESULT($use_input_events)
  2576. if test x$use_input_events = xyes; then
  2577. AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
  2578. SUMMARY_input="${SUMMARY_input} linuxev"
  2579. fi
  2580. }
  2581. dnl See if we can use the kernel kd.h header
  2582. CheckInputKD()
  2583. {
  2584. AC_MSG_CHECKING(for Linux kd.h)
  2585. use_input_kd=no
  2586. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2587. #include <linux/kd.h>
  2588. #include <linux/keyboard.h>
  2589. #include <sys/ioctl.h>
  2590. ]], [[
  2591. struct kbentry kbe;
  2592. kbe.kb_table = KG_CTRL;
  2593. ioctl(0, KDGKBENT, &kbe);
  2594. ]])], [use_input_kd=yes],[])
  2595. AC_MSG_RESULT($use_input_kd)
  2596. if test x$use_input_kd = xyes; then
  2597. AC_DEFINE(SDL_INPUT_LINUXKD, 1, [ ])
  2598. SUMMARY_input="${SUMMARY_input} linuxkd"
  2599. fi
  2600. }
  2601. dnl See if we can use the FreeBSD kernel kbio.h header
  2602. CheckInputKBIO()
  2603. {
  2604. AC_MSG_CHECKING(for FreeBSD kbio.h)
  2605. use_input_kbio=no
  2606. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2607. #include <sys/kbio.h>
  2608. #include <sys/ioctl.h>
  2609. ]], [[
  2610. accentmap_t accTable;
  2611. ioctl(0, KDENABIO, 1);
  2612. ]])], [use_input_kbio=yes],[])
  2613. AC_MSG_RESULT($use_input_kbio)
  2614. if test x$use_input_kbio = xyes; then
  2615. AC_DEFINE(SDL_INPUT_FBSDKBIO, 1, [ ])
  2616. SUMMARY_input="${SUMMARY_input} fbsdkbio"
  2617. fi
  2618. }
  2619. dnl See if we can use the wscons input driver
  2620. CheckInputWSCONS()
  2621. {
  2622. AC_MSG_CHECKING(for OpenBSD wscons)
  2623. use_input_wscons=no
  2624. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2625. #include <sys/time.h>
  2626. #include <dev/wscons/wsconsio.h>
  2627. #include <dev/wscons/wsksymdef.h>
  2628. #include <dev/wscons/wsksymvar.h>
  2629. #include <sys/ioctl.h>
  2630. ]], [[
  2631. struct wskbd_map_data data;
  2632. ioctl(0, WSKBDIO_GETMAP, &data);
  2633. ]])], [use_input_wscons=yes],[])
  2634. AC_MSG_RESULT($use_input_wscons)
  2635. if test x$use_input_wscons = xyes; then
  2636. AC_DEFINE(SDL_INPUT_WSCONS, 1, [ ])
  2637. SUMMARY_input="${SUMMARY_input} wscons"
  2638. fi
  2639. }
  2640. dnl See if the platform offers libudev for device enumeration and hotplugging.
  2641. CheckLibUDev()
  2642. {
  2643. AC_ARG_ENABLE(libudev,
  2644. [AS_HELP_STRING([--enable-libudev], [enable libudev support [default=yes]])],
  2645. , enable_libudev=yes)
  2646. if test x$enable_libudev = xyes; then
  2647. AC_CHECK_HEADER(libudev.h,
  2648. have_libudev_h_hdr=yes,
  2649. have_libudev_h_hdr=no)
  2650. if test x$have_libudev_h_hdr = xyes; then
  2651. AC_DEFINE(HAVE_LIBUDEV_H, 1, [ ])
  2652. udev_lib=[`find_lib "libudev.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`]
  2653. if test x$udev_lib != x; then
  2654. echo "-- dynamic udev -> $udev_lib"
  2655. AC_DEFINE_UNQUOTED(SDL_UDEV_DYNAMIC, "$udev_lib", [ ])
  2656. fi
  2657. fi
  2658. fi
  2659. }
  2660. dnl See if the platform offers libdbus for various IPC techniques.
  2661. CheckDBus()
  2662. {
  2663. AC_ARG_ENABLE(dbus,
  2664. [AS_HELP_STRING([--enable-dbus], [enable D-Bus support [default=yes]])],
  2665. , enable_dbus=yes)
  2666. if test x$enable_dbus = xyes; then
  2667. PKG_CHECK_MODULES([DBUS], [dbus-1], have_dbus=yes, have_dbus=no)
  2668. save_CPPFLAGS="$CPPFLAGS"
  2669. CPPFLAGS="$save_CPPFLAGS $DBUS_CFLAGS"
  2670. AC_CHECK_HEADER(dbus/dbus.h,
  2671. have_dbus_dbus_h_hdr=yes,
  2672. have_dbus_dbus_h_hdr=no)
  2673. CPPFLAGS="$save_CPPFLAGS"
  2674. if test x$have_dbus_dbus_h_hdr = xyes; then
  2675. AC_DEFINE(HAVE_DBUS_DBUS_H, 1, [ ])
  2676. EXTRA_CFLAGS="$EXTRA_CFLAGS $DBUS_CFLAGS"
  2677. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_dbus.c"
  2678. fi
  2679. fi
  2680. }
  2681. dnl See if the platform wanna IME support.
  2682. CheckIME()
  2683. {
  2684. AC_ARG_ENABLE(ime,
  2685. [AS_HELP_STRING([--enable-ime], [enable IME support [default=yes]])],
  2686. , enable_ime=yes)
  2687. if test x$enable_ime = xyes; then
  2688. AC_DEFINE(SDL_USE_IME, 1, [ ])
  2689. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_ime.c"
  2690. fi
  2691. }
  2692. dnl Check inotify presense
  2693. CheckInotify()
  2694. {
  2695. save_LIBS="$LIBS"
  2696. case "$host" in
  2697. *-*-freebsd*|*-*dragonfly*) LIBS="$LIBS -linotify"
  2698. ;;
  2699. esac
  2700. AC_CHECK_HEADERS(sys/inotify.h, [have_inotify_inotify_h_hdr=yes])
  2701. AC_CHECK_FUNCS(inotify_init, [have_inotify=yes])
  2702. AC_CHECK_FUNCS(inotify_init1)
  2703. if test x$have_inotify_inotify_h_hdr = xyes -a x$have_inotify = xyes; then
  2704. AC_DEFINE(HAVE_INOTIFY, 1, [ ])
  2705. case "$host" in
  2706. *-*-freebsd*|*-*-dragonfly*)
  2707. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -linotify"
  2708. ;;
  2709. esac
  2710. fi
  2711. LIBS="$save_LIBS"
  2712. }
  2713. dnl See if the platform has libibus IME support.
  2714. CheckIBus()
  2715. {
  2716. AC_ARG_ENABLE(ibus,
  2717. [AS_HELP_STRING([--enable-ibus], [enable IBus support [default=yes]])],
  2718. , enable_ibus=yes)
  2719. if test x$enable_ibus = xyes; then
  2720. PKG_CHECK_MODULES([IBUS], [ibus-1.0], have_ibus=yes, have_ibus=no)
  2721. save_CPPFLAGS="$CPPFLAGS"
  2722. CPPFLAGS="$save_CPPFLAGS $IBUS_CFLAGS"
  2723. AC_CHECK_HEADER(ibus-1.0/ibus.h,
  2724. have_ibus_ibus_h_hdr=yes,
  2725. have_ibus_ibus_h_hdr=no)
  2726. CPPFLAGS="$save_CPPFLAGS"
  2727. if test x$have_ibus_ibus_h_hdr = xyes; then
  2728. if test x$enable_ime != xyes; then
  2729. AC_MSG_WARN([IME support is required for IBus.])
  2730. have_ibus_ibus_h_hdr=no
  2731. elif test x$enable_dbus != xyes; then
  2732. AC_MSG_WARN([DBus support is required for IBus.])
  2733. have_ibus_ibus_h_hdr=no
  2734. elif test x$have_inotify_inotify_h_hdr != xyes; then
  2735. AC_MSG_WARN([INotify support is required for IBus.])
  2736. have_ibus_ibus_h_hdr=no
  2737. else
  2738. AC_DEFINE(HAVE_IBUS_IBUS_H, 1, [ ])
  2739. EXTRA_CFLAGS="$EXTRA_CFLAGS $IBUS_CFLAGS"
  2740. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_ibus.c"
  2741. fi
  2742. fi
  2743. fi
  2744. }
  2745. dnl See if the platform has fcitx IME support.
  2746. CheckFcitx()
  2747. {
  2748. AC_ARG_ENABLE(fcitx,
  2749. [AS_HELP_STRING([--enable-fcitx], [enable fcitx support [default=yes]])],
  2750. , enable_fcitx=yes)
  2751. if test x$enable_fcitx = xyes; then
  2752. AC_MSG_CHECKING(for fcitx support)
  2753. have_fcitx=no
  2754. if test x$enable_ime != xyes; then
  2755. AC_MSG_WARN([IME support is required for fcitx.])
  2756. elif test x$have_dbus_dbus_h_hdr != xyes; then
  2757. AC_MSG_WARN([DBus support is required for fcitx.])
  2758. else
  2759. have_fcitx=yes
  2760. AC_DEFINE(HAVE_FCITX, 1, [ ])
  2761. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_fcitx.c"
  2762. fi
  2763. AC_MSG_RESULT($have_fcitx)
  2764. fi
  2765. }
  2766. dnl Check to see if GameController framework support is desired
  2767. CheckJoystickMFI()
  2768. {
  2769. AC_ARG_ENABLE(joystick-mfi,
  2770. [AS_HELP_STRING([--enable-joystick-mfi], [include macOS MFI joystick support [default=yes]])],
  2771. , enable_joystick_mfi=yes)
  2772. if test x$enable_joystick_mfi = xyes; then
  2773. save_CFLAGS="$CFLAGS"
  2774. save_LDFLAGS="$LDFLAGS"
  2775. dnl Work around that we don't have Objective-C support in autoconf
  2776. CFLAGS="$CFLAGS -x objective-c -fobjc-weak"
  2777. LDFLAGS="$LDFLAGS -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController"
  2778. AC_MSG_CHECKING(for GameController framework)
  2779. enable_joystick_mfi=no
  2780. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  2781. #include <AvailabilityMacros.h>
  2782. #include <TargetConditionals.h>
  2783. #import <GameController/GameController.h>
  2784. ]], [[
  2785. #if MAC_OS_X_VERSION_MIN_REQUIRED < 1080
  2786. #error GameController framework doesn't work on this configuration
  2787. #endif
  2788. #if TARGET_CPU_X86
  2789. #error GameController framework doesn't work on this configuration
  2790. #endif
  2791. ]])], [enable_joystick_mfi=yes],[])
  2792. CFLAGS="$save_CFLAGS"
  2793. LDFLAGS="$save_LDFLAGS"
  2794. AC_MSG_RESULT($enable_joystick_mfi)
  2795. if test x$enable_joystick_mfi = xyes; then
  2796. AC_DEFINE(SDL_JOYSTICK_MFI, 1, [ ])
  2797. EXTRA_CFLAGS="$EXTRA_CFLAGS -fobjc-weak -Wno-unused-command-line-argument"
  2798. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController"
  2799. fi
  2800. fi
  2801. }
  2802. dnl See what type of thread model to use on Linux and Solaris
  2803. CheckPTHREAD()
  2804. {
  2805. dnl Check for pthread support
  2806. dnl Emscripten pthreads work, but you need to have a non-pthread fallback build
  2807. dnl for systems without support. It's not currently enough to not use
  2808. dnl pthread functions in a pthread-build; it won't start up on unsupported
  2809. dnl browsers. As such, you have to explicitly enable it on Emscripten builds
  2810. dnl for the time being. This default with change to ON once this becomes
  2811. dnl commonly supported in browsers or the Emscripten teams makes a single
  2812. dnl binary work everywhere.
  2813. case "$host" in
  2814. *-*-emscripten*)
  2815. enable_pthreads_default=no
  2816. ;;
  2817. *)
  2818. enable_pthreads_default=yes
  2819. ;;
  2820. esac
  2821. AC_ARG_ENABLE(pthreads,
  2822. [AS_HELP_STRING([--enable-pthreads], [use POSIX threads for multi-threading [default=maybe]])],
  2823. , enable_pthreads=maybe)
  2824. dnl This is used on Linux for glibc binary compatibility (Doh!)
  2825. AC_ARG_ENABLE(pthread-sem,
  2826. [AS_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [default=maybe]])],
  2827. , enable_pthread_sem=maybe)
  2828. if test x$enable_pthreads = xmaybe; then
  2829. enable_pthreads=$enable_pthreads_default
  2830. fi
  2831. if test x$enable_pthread_sem = xmaybe; then
  2832. enable_pthread_sem=$enable_pthreads
  2833. fi
  2834. case "$host" in
  2835. *-*-android*)
  2836. pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  2837. pthread_lib=""
  2838. ;;
  2839. *-*-linux*|*-*-uclinux*)
  2840. pthread_cflags="-D_REENTRANT"
  2841. pthread_lib="-lpthread"
  2842. ;;
  2843. *-*-bsdi*)
  2844. pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  2845. pthread_lib=""
  2846. ;;
  2847. *-*-darwin*)
  2848. pthread_cflags="-D_THREAD_SAFE"
  2849. # causes Carbon.p complaints?
  2850. # pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  2851. ;;
  2852. *-*-freebsd*|*-*-dragonfly*)
  2853. pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  2854. pthread_lib="-pthread"
  2855. ;;
  2856. *-*-netbsd*)
  2857. pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  2858. pthread_lib="-lpthread"
  2859. ;;
  2860. *-*-openbsd*)
  2861. pthread_cflags="-D_REENTRANT"
  2862. pthread_lib="-lpthread"
  2863. ;;
  2864. *-*-solaris2.9)
  2865. # From Solaris 9+, posix4's preferred name is rt.
  2866. pthread_cflags="-D_REENTRANT"
  2867. pthread_lib="-lpthread -lrt"
  2868. ;;
  2869. *-*-solaris2.10)
  2870. # Solaris 10+ merged pthread into libc.
  2871. pthread_cflags="-D_REENTRANT"
  2872. pthread_lib="-lrt"
  2873. ;;
  2874. *-*-solaris*)
  2875. # Solaris 11+ merged rt into libc.
  2876. pthread_cflags="-D_REENTRANT"
  2877. pthread_lib=""
  2878. ;;
  2879. *-*-sysv5*)
  2880. pthread_cflags="-D_REENTRANT -Kthread"
  2881. pthread_lib=""
  2882. ;;
  2883. *-*-aix*)
  2884. pthread_cflags="-D_REENTRANT -mthreads"
  2885. pthread_lib="-lpthread"
  2886. ;;
  2887. *-*-hpux11*)
  2888. pthread_cflags="-D_REENTRANT"
  2889. pthread_lib="-L/usr/lib -lpthread"
  2890. ;;
  2891. *-*-haiku*)
  2892. pthread_cflags="-D_REENTRANT"
  2893. pthread_lib=""
  2894. ;;
  2895. *-*-nto*)
  2896. pthread_cflags="-D_REENTRANT"
  2897. pthread_lib=""
  2898. ;;
  2899. *-*-emscripten*)
  2900. pthread_cflags="-D_REENTRANT -pthread"
  2901. pthread_lib="-pthread"
  2902. ;;
  2903. *)
  2904. pthread_cflags="-D_REENTRANT"
  2905. pthread_lib="-lpthread"
  2906. ;;
  2907. esac
  2908. if test x$enable_threads = xyes -a x$enable_pthreads = xyes; then
  2909. # Save the original compiler flags and libraries
  2910. ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  2911. # Add the pthread compiler flags and libraries
  2912. CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  2913. # Check to see if we have pthread support on this system
  2914. AC_MSG_CHECKING(for pthreads)
  2915. use_pthreads=no
  2916. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  2917. #include <pthread.h>
  2918. ]], [[
  2919. pthread_attr_t type;
  2920. pthread_attr_init(&type);
  2921. ]])], [use_pthreads=yes],[])
  2922. AC_MSG_RESULT($use_pthreads)
  2923. # Restore the compiler flags and libraries
  2924. CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  2925. # Do futher testing if we have pthread support...
  2926. if test x$use_pthreads = xyes; then
  2927. AC_DEFINE(SDL_THREAD_PTHREAD, 1, [ ])
  2928. EXTRA_CFLAGS="$EXTRA_CFLAGS $pthread_cflags"
  2929. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $pthread_lib"
  2930. SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags"
  2931. # Save the original compiler flags and libraries
  2932. ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  2933. # Add the pthread compiler flags and libraries
  2934. CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  2935. # Check to see if recursive mutexes are available
  2936. AC_MSG_CHECKING(for recursive mutexes)
  2937. has_recursive_mutexes=no
  2938. if test x$has_recursive_mutexes = xno; then
  2939. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  2940. #define _GNU_SOURCE 1
  2941. #include <pthread.h>
  2942. ]], [[
  2943. pthread_mutexattr_t attr;
  2944. pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  2945. ]])], [
  2946. has_recursive_mutexes=yes
  2947. AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX, 1, [ ])
  2948. ],[])
  2949. fi
  2950. if test x$has_recursive_mutexes = xno; then
  2951. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  2952. #define _GNU_SOURCE 1
  2953. #include <pthread.h>
  2954. ]], [[
  2955. pthread_mutexattr_t attr;
  2956. pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
  2957. ]])],[
  2958. has_recursive_mutexes=yes
  2959. AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP, 1, [ ])
  2960. ],[])
  2961. fi
  2962. AC_MSG_RESULT($has_recursive_mutexes)
  2963. # Check to see if pthread semaphore support is missing
  2964. if test x$enable_pthread_sem = xyes; then
  2965. AC_MSG_CHECKING(for pthread semaphores)
  2966. have_pthread_sem=no
  2967. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  2968. #include <pthread.h>
  2969. #include <semaphore.h>
  2970. ]],[])], [have_pthread_sem=yes],[])
  2971. AC_MSG_RESULT($have_pthread_sem)
  2972. fi
  2973. if test x$have_pthread_sem = xyes; then
  2974. AC_MSG_CHECKING(for sem_timedwait)
  2975. have_sem_timedwait=no
  2976. AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  2977. #include <pthread.h>
  2978. #include <semaphore.h>
  2979. ]], [[
  2980. sem_timedwait(NULL, NULL);
  2981. ]])], [
  2982. have_sem_timedwait=yes
  2983. AC_DEFINE([HAVE_SEM_TIMEDWAIT], 1, [ ])
  2984. ],[])
  2985. AC_MSG_RESULT($have_sem_timedwait)
  2986. fi
  2987. AC_CHECK_HEADER(pthread_np.h, have_pthread_np_h=yes, have_pthread_np_h=no, [ #include <pthread.h> ])
  2988. if test x$have_pthread_np_h = xyes; then
  2989. AC_DEFINE(HAVE_PTHREAD_NP_H, 1, [ ])
  2990. fi
  2991. # Check to see if pthread naming is available
  2992. AC_MSG_CHECKING(for pthread_setname_np)
  2993. AC_TRY_LINK_FUNC(pthread_setname_np, [
  2994. has_pthread_setname_np=yes
  2995. AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [ ])
  2996. ],[
  2997. has_pthread_setname_np=no
  2998. ])
  2999. AC_MSG_RESULT($has_pthread_setname_np)
  3000. AC_MSG_CHECKING(for pthread_set_name_np)
  3001. AC_TRY_LINK_FUNC(pthread_set_name_np, [
  3002. has_pthread_set_name_np=yes
  3003. AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [ ])
  3004. ],[
  3005. has_pthread_set_name_np=no
  3006. ])
  3007. AC_MSG_RESULT($has_pthread_set_name_np)
  3008. # Restore the compiler flags and libraries
  3009. CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  3010. # Basic thread creation functions
  3011. SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c"
  3012. # Semaphores
  3013. # We can fake these with mutexes and condition variables if necessary
  3014. if test x$have_pthread_sem = xyes; then
  3015. SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syssem.c"
  3016. else
  3017. SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
  3018. fi
  3019. # Mutexes
  3020. # We can fake these with semaphores if necessary
  3021. SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_sysmutex.c"
  3022. # Condition variables
  3023. # We can fake these with semaphores and mutexes if necessary
  3024. SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syscond.c"
  3025. # Thread local storage
  3026. SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systls.c"
  3027. have_threads=yes
  3028. fi
  3029. fi
  3030. }
  3031. dnl Determine whether the compiler can produce Windows executables
  3032. CheckWINDOWS()
  3033. {
  3034. AC_MSG_CHECKING(Windows compiler)
  3035. have_win32_gcc=no
  3036. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3037. #include <windows.h>
  3038. ]],[])], [have_win32_gcc=yes],[])
  3039. AC_MSG_RESULT($have_win32_gcc)
  3040. if test x$have_win32_gcc != xyes; then
  3041. AC_MSG_ERROR([
  3042. *** Your compiler ($CC) does not produce Windows executables!
  3043. ])
  3044. fi
  3045. AC_MSG_CHECKING(Windows CE)
  3046. have_wince=no
  3047. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3048. #if !defined(_WIN32_WCE) && !defined(__MINGW32CE__)
  3049. #error This is not Windows CE
  3050. #endif
  3051. ]],[])], [
  3052. have_wince=yes
  3053. AC_MSG_ERROR([
  3054. *** Sorry, Windows CE is no longer supported.
  3055. ])
  3056. ],[])
  3057. AC_MSG_RESULT($have_wince)
  3058. # headers needed elsewhere
  3059. AC_CHECK_HEADER(tpcshrd.h,have_tpcshrd_h=yes)
  3060. if test x$have_tpcshrd_h = xyes; then
  3061. AC_DEFINE(HAVE_TPCSHRD_H, 1, [ ])
  3062. fi
  3063. AC_CHECK_HEADER(roapi.h,have_roapi_h=yes)
  3064. if test x$have_roapi_h = xyes; then
  3065. AC_DEFINE(HAVE_ROAPI_H, 1, [ ])
  3066. fi
  3067. AC_CHECK_HEADER(shellscalingapi.h,have_shellscalingapi_h=yes)
  3068. if test x$shellscalingapi_h = xyes; then
  3069. AC_DEFINE(HAVE_SHELLSCALINGAPI_H, 1, [ ])
  3070. fi
  3071. }
  3072. dnl Determine whether the compiler can produce OS/2 executables
  3073. CheckOS2()
  3074. {
  3075. AC_MSG_CHECKING(OS/2 compiler)
  3076. have_os2_gcc=no
  3077. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <os2.h>]],
  3078. [])],[have_os2_gcc=yes],[])
  3079. AC_MSG_RESULT($have_os2_gcc)
  3080. if test x$have_os2_gcc != xyes; then
  3081. AC_MSG_ERROR([
  3082. *** Your compiler ($CC) does not produce OS/2 executables!
  3083. ])
  3084. fi
  3085. }
  3086. dnl Find the DirectX includes and libraries
  3087. CheckDIRECTX()
  3088. {
  3089. AC_ARG_ENABLE(directx,
  3090. [AS_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [default=yes]])],
  3091. , enable_directx=yes)
  3092. if test x$enable_directx = xyes; then
  3093. AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
  3094. AC_CHECK_HEADER(d3d11_1.h, have_d3d11=yes)
  3095. AC_MSG_CHECKING(for d3d12 Windows SDK version)
  3096. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3097. #include <winsdkver.h>
  3098. #include <sdkddkver.h>
  3099. #include <d3d12.h>
  3100. ID3D12Device1 *device;
  3101. #if WDK_NTDDI_VERSION <= 0x0A000008
  3102. asdf
  3103. #endif
  3104. ]])], [have_d3d12=yes],[have_d3d12=no])
  3105. AC_MSG_RESULT($have_d3d12)
  3106. AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
  3107. AC_CHECK_HEADER(dsound.h, have_dsound=yes)
  3108. AC_CHECK_HEADER(dinput.h, have_dinput=yes)
  3109. AC_CHECK_HEADER(dxgi.h, have_dxgi=yes)
  3110. if test x$have_ddraw = xyes; then
  3111. AC_DEFINE(HAVE_DDRAW_H, 1, [ ])
  3112. fi
  3113. if test x$have_dinput = xyes; then
  3114. AC_DEFINE(HAVE_DINPUT_H, 1, [ ])
  3115. fi
  3116. if test x$have_dsound = xyes; then
  3117. AC_DEFINE(HAVE_DSOUND_H, 1, [ ])
  3118. fi
  3119. if test x$have_dxgi = xyes; then
  3120. AC_DEFINE(HAVE_DXGI_H, 1, [ ])
  3121. fi
  3122. # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers.
  3123. # FIXME: ...so force it off for now.
  3124. case "$host" in
  3125. *-*-cygwin*)
  3126. have_dinput=false
  3127. ;;
  3128. esac
  3129. fi
  3130. AC_ARG_ENABLE(xinput,
  3131. [AS_HELP_STRING([--enable-xinput], [use Xinput for Windows [default=yes]])],
  3132. , enable_xinput=yes)
  3133. if test x$enable_xinput = xyes; then
  3134. AC_CHECK_HEADER(xinput.h, have_xinput=yes)
  3135. if test x$have_xinput = xyes; then
  3136. AC_DEFINE(HAVE_XINPUT_H, 1, [ ])
  3137. fi
  3138. fi
  3139. AC_MSG_CHECKING(for windows.gaming.input.h)
  3140. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3141. #define COBJMACROS
  3142. #include <windows.gaming.input.h>
  3143. __x_ABI_CWindows_CGaming_CInput_CIGamepadStatics2 *s2;
  3144. ]],[])], [have_wgi=yes],[have_wgi=no])
  3145. AC_MSG_RESULT($have_wgi)
  3146. if test x$have_wgi = xyes; then
  3147. AC_DEFINE(HAVE_WINDOWS_GAMING_INPUT_H, 1, [ ])
  3148. fi
  3149. AC_CHECK_HEADER(mmdeviceapi.h, have_wasapi=yes)
  3150. if test x$have_wasapi = xyes; then
  3151. AC_DEFINE(HAVE_MMDEVICEAPI_H, 1, [ ])
  3152. fi
  3153. AC_CHECK_HEADER(audioclient.h,,have_wasapi=no)
  3154. if test x$have_wasapi = xyes; then
  3155. AC_DEFINE(HAVE_AUDIOCLIENT_H, 1, [ ])
  3156. fi
  3157. AC_ARG_ENABLE(wasapi,
  3158. [AS_HELP_STRING([--enable-wasapi], [use the Windows WASAPI audio driver [default=yes]])],
  3159. , enable_wasapi=yes)
  3160. }
  3161. dnl Check for the dlfcn.h interface for dynamically loading objects
  3162. dnl NOTE: CheckDLOPEN is called only for relevant platforms
  3163. CheckDLOPEN()
  3164. {
  3165. AC_DEFINE(DYNAPI_NEEDS_DLOPEN, 1, [ ])
  3166. AC_CHECK_HEADER(dlfcn.h,have_dlfcn_h=yes,have_dlfcn_h=no)
  3167. have_dlopen=no
  3168. AC_CHECK_LIB(c, dlopen, have_dlopen=yes,
  3169. AC_CHECK_LIB(dl, dlopen, [have_dlopen=yes; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl"]))
  3170. AC_MSG_CHECKING(for dlopen)
  3171. AC_MSG_RESULT($have_dlopen)
  3172. if test x$have_dlfcn_h = xyes -a x$have_dlopen = xyes; then
  3173. AC_DEFINE(HAVE_DLOPEN, 1, [ ])
  3174. if test x$enable_loadso = xyes; then
  3175. AC_DEFINE(SDL_LOADSO_DLOPEN, 1, [ ])
  3176. SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
  3177. have_loadso=yes
  3178. fi
  3179. fi
  3180. }
  3181. CheckO_CLOEXEC()
  3182. {
  3183. AC_MSG_CHECKING(for O_CLOEXEC)
  3184. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3185. #include <fcntl.h>
  3186. int flag = O_CLOEXEC;
  3187. ]],[])], [have_o_cloexec=yes],[have_o_cloexec=no])
  3188. AC_MSG_RESULT($have_o_cloexec)
  3189. if test $have_o_cloexec = yes; then
  3190. AC_DEFINE(HAVE_O_CLOEXEC, 1, [ ])
  3191. fi
  3192. }
  3193. dnl Check for the usbhid(3) library on *BSD
  3194. CheckUSBHID()
  3195. {
  3196. case "$host" in
  3197. *-*-*bsd*|*-*-dragonfly*)
  3198. if test x$enable_joystick = xyes; then
  3199. AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
  3200. if test x$have_libusbhid = xyes; then
  3201. AC_CHECK_HEADER(usbhid.h, [USB_CFLAGS="-DHAVE_USBHID_H"])
  3202. AC_CHECK_HEADER(libusbhid.h, [USB_CFLAGS="-DHAVE_LIBUSBHID_H"])
  3203. USB_LIBS="$USB_LIBS -lusbhid"
  3204. else
  3205. AC_CHECK_HEADER(usb.h, [USB_CFLAGS="-DHAVE_USB_H"])
  3206. AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
  3207. AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
  3208. fi
  3209. save_CFLAGS="$CFLAGS"
  3210. CFLAGS="$CFLAGS $USB_CFLAGS"
  3211. AC_MSG_CHECKING(for usbhid)
  3212. have_usbhid=no
  3213. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3214. #include <sys/types.h>
  3215. #if defined(HAVE_USB_H)
  3216. #include <usb.h>
  3217. #endif
  3218. #ifdef __DragonFly__
  3219. # include <bus/u4b/usb.h>
  3220. # include <bus/u4b/usbhid.h>
  3221. #else
  3222. # include <dev/usb/usb.h>
  3223. # include <dev/usb/usbhid.h>
  3224. #endif
  3225. #if defined(HAVE_USBHID_H)
  3226. #include <usbhid.h>
  3227. #elif defined(HAVE_LIBUSB_H)
  3228. #include <libusb.h>
  3229. #elif defined(HAVE_LIBUSBHID_H)
  3230. #include <libusbhid.h>
  3231. #endif
  3232. ]], [[
  3233. struct report_desc *repdesc;
  3234. struct usb_ctl_report *repbuf;
  3235. hid_kind_t hidkind;
  3236. ]])], [have_usbhid=yes],[])
  3237. AC_MSG_RESULT($have_usbhid)
  3238. if test x$have_usbhid = xyes; then
  3239. AC_MSG_CHECKING(for ucr_data member of usb_ctl_report)
  3240. have_usbhid_ucr_data=no
  3241. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3242. #include <sys/types.h>
  3243. #if defined(HAVE_USB_H)
  3244. #include <usb.h>
  3245. #endif
  3246. #ifdef __DragonFly__
  3247. # include <bus/u4b/usb.h>
  3248. # include <bus/u4b/usbhid.h>
  3249. #else
  3250. # include <dev/usb/usb.h>
  3251. # include <dev/usb/usbhid.h>
  3252. #endif
  3253. #if defined(HAVE_USBHID_H)
  3254. #include <usbhid.h>
  3255. #elif defined(HAVE_LIBUSB_H)
  3256. #include <libusb.h>
  3257. #elif defined(HAVE_LIBUSBHID_H)
  3258. #include <libusbhid.h>
  3259. #endif
  3260. ]], [[
  3261. struct usb_ctl_report buf;
  3262. if (buf.ucr_data) { }
  3263. ]])], [have_usbhid_ucr_data=yes],[])
  3264. if test x$have_usbhid_ucr_data = xyes; then
  3265. USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
  3266. fi
  3267. AC_MSG_RESULT($have_usbhid_ucr_data)
  3268. AC_MSG_CHECKING(for new usbhid API)
  3269. have_usbhid_new=no
  3270. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3271. #include <sys/types.h>
  3272. #if defined(HAVE_USB_H)
  3273. #include <usb.h>
  3274. #endif
  3275. #ifdef __DragonFly__
  3276. #include <bus/u4b/usb.h>
  3277. #include <bus/u4b/usbhid.h>
  3278. #else
  3279. #include <dev/usb/usb.h>
  3280. #include <dev/usb/usbhid.h>
  3281. #endif
  3282. #if defined(HAVE_USBHID_H)
  3283. #include <usbhid.h>
  3284. #elif defined(HAVE_LIBUSB_H)
  3285. #include <libusb.h>
  3286. #elif defined(HAVE_LIBUSBHID_H)
  3287. #include <libusbhid.h>
  3288. #endif
  3289. ]], [[
  3290. report_desc_t d;
  3291. hid_start_parse(d, 1, 1);
  3292. ]])], [have_usbhid_new=yes],[])
  3293. if test x$have_usbhid_new = xyes; then
  3294. USB_CFLAGS="$USB_CFLAGS -DUSBHID_NEW"
  3295. fi
  3296. AC_MSG_RESULT($have_usbhid_new)
  3297. AC_MSG_CHECKING(for struct joystick in machine/joystick.h)
  3298. have_machine_joystick=no
  3299. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  3300. #include <machine/joystick.h>
  3301. ]], [[
  3302. struct joystick t;
  3303. ]])], [have_machine_joystick=yes],[])
  3304. if test x$have_machine_joystick = xyes; then
  3305. AC_DEFINE(SDL_HAVE_MACHINE_JOYSTICK_H, 1, [ ])
  3306. fi
  3307. AC_MSG_RESULT($have_machine_joystick)
  3308. AC_DEFINE(SDL_JOYSTICK_USBHID, 1, [ ])
  3309. SOURCES="$SOURCES $srcdir/src/joystick/bsd/*.c"
  3310. EXTRA_CFLAGS="$EXTRA_CFLAGS $USB_CFLAGS"
  3311. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $USB_LIBS"
  3312. have_joystick=yes
  3313. fi
  3314. CFLAGS="$save_CFLAGS"
  3315. fi
  3316. ;;
  3317. esac
  3318. }
  3319. dnl Check for HIDAPI joystick drivers
  3320. CheckHIDAPI()
  3321. {
  3322. AC_ARG_ENABLE(hidapi-joystick,
  3323. [AS_HELP_STRING([--enable-hidapi-joystick], [use HIDAPI for low level joystick drivers [default=yes]])],
  3324. , enable_hidapi_joystick=yes)
  3325. AC_ARG_ENABLE(hidapi-libusb,
  3326. [AS_HELP_STRING([--enable-hidapi-libusb], [use libusb for low level joystick drivers [default=maybe]])],
  3327. , enable_hidapi_libusb=maybe)
  3328. if test x$enable_hidapi = xyes; then
  3329. case "$host" in
  3330. # libusb does not support iOS
  3331. *-ios-* )
  3332. enable_hidapi_libusb=no
  3333. ;;
  3334. # On the other hand, *BSD specifically uses libusb only
  3335. *-*-*bsd* )
  3336. enable_hidapi_libusb=yes
  3337. require_hidapi_libusb=yes
  3338. ;;
  3339. *-*-os2* )
  3340. enable_hidapi_libusb=yes
  3341. ;;
  3342. esac
  3343. hidapi_support=yes
  3344. if test x$enable_hidapi_libusb = xyes; then
  3345. PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], have_libusb=yes, have_libusb=no)
  3346. save_CPPFLAGS="$CPPFLAGS"
  3347. CPPFLAGS="$save_CPPFLAGS $LIBUSB_CFLAGS"
  3348. AC_CHECK_HEADER(libusb.h, have_libusb_h=yes, have_libusb_h=no)
  3349. CPPFLAGS="$save_CPPFLAGS"
  3350. if test x$have_libusb_h = xno && test x$require_hidapi_libusb = xyes; then
  3351. hidapi_support=no
  3352. fi
  3353. fi
  3354. if test x$hidapi_support = xyes; then
  3355. if test x$have_libusb_h = xyes; then
  3356. AC_DEFINE(HAVE_LIBUSB)
  3357. EXTRA_CFLAGS="$EXTRA_CFLAGS $LIBUSB_CFLAGS"
  3358. if test x$require_hidapi_libusb = xyes; then
  3359. EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LIBUSB_LIBS"
  3360. else
  3361. if test x$have_loadso != xyes; then
  3362. AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic libusb loading])
  3363. fi
  3364. # libusb is loaded dynamically, so don't add it to LDFLAGS
  3365. libusb_lib=""
  3366. case "$host" in
  3367. *-*-darwin* )
  3368. libusb_lib="libusb-1.0.0.dylib"
  3369. ;;
  3370. *-*-cygwin* | *-*-mingw* )
  3371. libusb_lib="libusb-1.0.dll"
  3372. ;;
  3373. *-*-os2* )
  3374. libusb_lib="usb100.dll"
  3375. ;;
  3376. esac
  3377. if test x$libusb_lib = x; then
  3378. libusb_lib=[`find_lib "libusb-1.0.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`]
  3379. fi
  3380. AC_DEFINE_UNQUOTED(SDL_LIBUSB_DYNAMIC, "$libusb_lib", [ ])
  3381. fi
  3382. fi
  3383. fi
  3384. AC_MSG_CHECKING(for hidapi joystick support)
  3385. AC_MSG_RESULT($hidapi_support)
  3386. fi
  3387. if test x$enable_joystick = xyes -a x$hidapi_support = xyes -a x$enable_hidapi_joystick = xyes; then
  3388. AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ])
  3389. SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c"
  3390. fi
  3391. }
  3392. dnl Check for clock_gettime()
  3393. CheckClockGettime()
  3394. {
  3395. AC_ARG_ENABLE(clock_gettime,
  3396. [AS_HELP_STRING([--enable-clock_gettime], [use clock_gettime() instead of gettimeofday() on UNIX [default=yes]])],
  3397. , enable_clock_gettime=yes)
  3398. if test x$enable_clock_gettime = xyes; then
  3399. AC_CHECK_LIB(c, clock_gettime, have_clock_gettime=yes)
  3400. if test x$have_clock_gettime = xyes; then
  3401. AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  3402. else
  3403. AC_CHECK_LIB(rt, clock_gettime, have_clock_gettime=yes)
  3404. if test x$have_clock_gettime = xyes; then
  3405. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lrt"
  3406. AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  3407. fi
  3408. fi
  3409. fi
  3410. }
  3411. dnl Check for a valid linux/version.h
  3412. CheckLinuxVersion()
  3413. {
  3414. AC_CHECK_HEADER(linux/version.h, have_linux_version_h=yes)
  3415. if test x$have_linux_version_h = xyes; then
  3416. EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_LINUX_VERSION_H"
  3417. fi
  3418. }
  3419. dnl Check if we want to use RPATH
  3420. CheckRPATH()
  3421. {
  3422. AC_ARG_ENABLE(rpath,
  3423. [AS_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [default=yes]])],
  3424. , enable_rpath=yes)
  3425. }
  3426. dnl Check if we want to use custom signals to fake iOS/Android's backgrounding
  3427. dnl events. These could be useful if you're building a custom embedded
  3428. dnl environment, etc, but most people don't need this.
  3429. CheckEventSignals()
  3430. {
  3431. AC_ARG_ENABLE(backgrounding-signal,
  3432. [AS_HELP_STRING([--enable-backgrounding-signal], [number to use for magic backgrounding signal or 'no' [default=no]])],
  3433. , enable_backgrounding_signal=no)
  3434. if test x$enable_backgrounding_signal != xno; then
  3435. EXTRA_CFLAGS="$EXTRA_CFLAGS -DSDL_BACKGROUNDING_SIGNAL=$enable_backgrounding_signal"
  3436. fi
  3437. AC_ARG_ENABLE(foregrounding-signal,
  3438. [AS_HELP_STRING([--enable-foregrounding-signal], [number to use for magic foregrounding signal or 'no' [default=no]])],
  3439. , enable_foregrounding_signal=no)
  3440. if test x$enable_foregrounding_signal != xno; then
  3441. EXTRA_CFLAGS="$EXTRA_CFLAGS -DSDL_FOREGROUNDING_SIGNAL=$enable_foregrounding_signal"
  3442. fi
  3443. }
  3444. dnl Set up the Virtual joystick driver.
  3445. CheckVirtualJoystick()
  3446. {
  3447. AC_ARG_ENABLE(joystick-virtual,
  3448. [AS_HELP_STRING([--enable-joystick-virtual], [enable virtual joystick APIs [default=yes]])],
  3449. , enable_joystick_virtual=yes)
  3450. if test x$enable_joystick = xyes -a x$enable_joystick_virtual = xyes; then
  3451. AC_DEFINE(SDL_JOYSTICK_VIRTUAL, 1, [ ])
  3452. SOURCES="$SOURCES $srcdir/src/joystick/virtual/*.c"
  3453. have_joystick_virtual=yes
  3454. fi
  3455. }
  3456. dnl Do this on all platforms, before everything else (other things might want to override it).
  3457. CheckWarnAll
  3458. CheckUnusedLocalTypedefs
  3459. CheckNoStrictAliasing
  3460. dnl Do this for every platform, but for some it doesn't mean anything, but better to catch it here anyhow.
  3461. CheckEventSignals
  3462. have_locale=no
  3463. dnl Set up the configuration based on the host platform!
  3464. case "$host" in
  3465. *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*|*-*-nto*)
  3466. case "$host" in
  3467. *-*-android*)
  3468. # Android
  3469. ARCH=android
  3470. ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES"
  3471. CFLAGS="$CFLAGS $ANDROID_CFLAGS"
  3472. SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS"
  3473. EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS"
  3474. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid"
  3475. SDLMAIN_SOURCES="$srcdir/src/main/android/*.c"
  3476. if test x$enable_video = xyes; then
  3477. SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c"
  3478. AC_DEFINE(SDL_VIDEO_DRIVER_ANDROID, 1, [ ])
  3479. SUMMARY_video="${SUMMARY_video} android"
  3480. have_video=yes
  3481. fi
  3482. ;;
  3483. *-*-linux*) ARCH=linux ;;
  3484. *-*-uclinux*) ARCH=linux ;;
  3485. *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;;
  3486. *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;;
  3487. *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;;
  3488. *-*-gnu*) ARCH=gnu ;; # must be last of the gnu variants
  3489. *-*-bsdi*) ARCH=bsdi ;;
  3490. *-*-freebsd*) ARCH=freebsd ;;
  3491. *-*-dragonfly*) ARCH=freebsd ;;
  3492. *-*-netbsd*) ARCH=netbsd ;;
  3493. *-*-openbsd*) ARCH=openbsd ;;
  3494. *-*-sysv5*) ARCH=sysv5 ;;
  3495. *-*-solaris*) ARCH=solaris ;;
  3496. *-*-hpux*) ARCH=hpux ;;
  3497. *-*-aix*) ARCH=aix ;;
  3498. *-*-minix*) ARCH=minix ;;
  3499. *-*-nto*) ARCH=nto
  3500. CheckQNXVideo
  3501. ;;
  3502. esac
  3503. CheckVisibilityHidden
  3504. CheckWerror
  3505. CheckDeclarationAfterStatement
  3506. CheckDummyVideo
  3507. CheckOffscreenVideo
  3508. CheckDiskAudio
  3509. CheckDummyAudio
  3510. CheckDLOPEN
  3511. CheckARM
  3512. CheckNEON
  3513. CheckO_CLOEXEC
  3514. CheckOSS
  3515. CheckALSA
  3516. CheckPipewire
  3517. CheckPulseAudio
  3518. CheckJACK
  3519. CheckARTSC
  3520. CheckESD
  3521. CheckNAS
  3522. CheckSNDIO
  3523. CheckFusionSound
  3524. CheckLibSampleRate
  3525. # Need to check for Raspberry PI first and add platform specific compiler flags, otherwise the test for GLES fails!
  3526. CheckRPI
  3527. CheckX11
  3528. CheckDirectFB
  3529. # Need to check for EGL first because KMSDRM and Wayland depends on it.
  3530. CheckEGL
  3531. CheckKMSDRM
  3532. CheckGLX
  3533. CheckOpenGL
  3534. CheckOpenGLES
  3535. CheckVulkan
  3536. CheckWayland
  3537. CheckInputEvents
  3538. CheckLibUDev
  3539. CheckDBus
  3540. CheckIME
  3541. CheckInotify
  3542. CheckIBus
  3543. CheckFcitx
  3544. case $ARCH in
  3545. linux)
  3546. CheckInputKD
  3547. ;;
  3548. freebsd)
  3549. CheckInputKBIO
  3550. ;;
  3551. openbsd|netbsd)
  3552. CheckInputWSCONS
  3553. ;;
  3554. esac
  3555. CheckUSBHID
  3556. CheckHIDAPI
  3557. CheckPTHREAD
  3558. CheckClockGettime
  3559. CheckLinuxVersion
  3560. CheckRPATH
  3561. CheckVivanteVideo
  3562. # Set up files for the misc library
  3563. if test x$enable_misc = xyes; then
  3564. SOURCES="$SOURCES $srcdir/src/misc/unix/*.c"
  3565. have_misc=yes
  3566. fi
  3567. # Set up files for the locale library
  3568. if test x$enable_locale = xyes; then
  3569. SOURCES="$SOURCES $srcdir/src/locale/unix/*.c"
  3570. have_locale=yes
  3571. fi
  3572. # Set up files for the audio library
  3573. if test x$enable_audio = xyes; then
  3574. case $ARCH in
  3575. sysv5|solaris|hpux)
  3576. AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
  3577. SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
  3578. SUMMARY_audio="${SUMMARY_audio} sun"
  3579. have_audio=yes
  3580. ;;
  3581. netbsd) # Don't use this on OpenBSD, it's busted.
  3582. AC_DEFINE(SDL_AUDIO_DRIVER_NETBSD, 1, [ ])
  3583. SOURCES="$SOURCES $srcdir/src/audio/netbsd/*.c"
  3584. SUMMARY_audio="${SUMMARY_audio} netbsd"
  3585. have_audio=yes
  3586. ;;
  3587. aix)
  3588. AC_DEFINE(SDL_AUDIO_DRIVER_PAUDIO, 1, [ ])
  3589. SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c"
  3590. SUMMARY_audio="${SUMMARY_audio} paudio"
  3591. have_audio=yes
  3592. ;;
  3593. android)
  3594. AC_DEFINE(SDL_AUDIO_DRIVER_ANDROID, 1, [ ])
  3595. SOURCES="$SOURCES $srcdir/src/audio/android/*.c"
  3596. SUMMARY_audio="${SUMMARY_audio} android"
  3597. AC_DEFINE(SDL_AUDIO_DRIVER_OPENSLES, 1, [ ])
  3598. SOURCES="$SOURCES $srcdir/src/audio/openslES/*.c"
  3599. SUMMARY_audio="${SUMMARY_audio} openslES"
  3600. AC_DEFINE(SDL_AUDIO_DRIVER_AAUDIO, 1, [ ])
  3601. SOURCES="$SOURCES $srcdir/src/audio/aaudio/*.c"
  3602. SUMMARY_audio="${SUMMARY_audio} aaudio"
  3603. have_audio=yes
  3604. ;;
  3605. nto)
  3606. CheckQNXAudio
  3607. ;;
  3608. esac
  3609. fi
  3610. # Set up files for the joystick library
  3611. if test x$enable_joystick = xyes; then
  3612. case $ARCH in
  3613. linux)
  3614. if test "x$ac_cv_header_linux_input_h" = xyes; then
  3615. AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
  3616. SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
  3617. SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
  3618. have_joystick=yes
  3619. fi
  3620. ;;
  3621. freebsd)
  3622. if test x$use_input_events = xyes -a x$ac_cv_header_linux_input_h = xyes; then
  3623. AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
  3624. SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
  3625. SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
  3626. have_joystick=yes
  3627. fi
  3628. ;;
  3629. android)
  3630. AC_DEFINE(SDL_JOYSTICK_ANDROID, 1, [ ])
  3631. SOURCES="$SOURCES $srcdir/src/joystick/android/*.c"
  3632. SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
  3633. have_joystick=yes
  3634. ;;
  3635. esac
  3636. fi
  3637. # Set up files for the haptic library
  3638. if test x$enable_haptic = xyes; then
  3639. case $ARCH in
  3640. linux|freebsd)
  3641. if test x$use_input_events = xyes; then
  3642. AC_DEFINE(SDL_HAPTIC_LINUX, 1, [ ])
  3643. SOURCES="$SOURCES $srcdir/src/haptic/linux/*.c"
  3644. have_haptic=yes
  3645. fi
  3646. ;;
  3647. android)
  3648. AC_DEFINE(SDL_HAPTIC_ANDROID, 1, [ ])
  3649. SOURCES="$SOURCES $srcdir/src/haptic/android/*.c"
  3650. have_haptic=yes
  3651. ;;
  3652. esac
  3653. fi
  3654. # Set up files for the sensor library
  3655. if test x$enable_sensor = xyes; then
  3656. case $ARCH in
  3657. android)
  3658. AC_DEFINE(SDL_SENSOR_ANDROID, 1, [ ])
  3659. SOURCES="$SOURCES $srcdir/src/sensor/android/*.c"
  3660. have_sensor=yes
  3661. ;;
  3662. esac
  3663. fi
  3664. # Set up files for the power library
  3665. if test x$enable_power = xyes; then
  3666. case $ARCH in
  3667. linux)
  3668. AC_DEFINE(SDL_POWER_LINUX, 1, [ ])
  3669. SOURCES="$SOURCES $srcdir/src/power/linux/*.c"
  3670. have_power=yes
  3671. ;;
  3672. android)
  3673. AC_DEFINE(SDL_POWER_ANDROID, 1, [ ])
  3674. SOURCES="$SOURCES $srcdir/src/power/android/*.c"
  3675. have_power=yes
  3676. ;;
  3677. esac
  3678. fi
  3679. # Set up files for the filesystem library
  3680. if test x$enable_filesystem = xyes; then
  3681. case $ARCH in
  3682. android)
  3683. AC_DEFINE(SDL_FILESYSTEM_ANDROID, 1, [ ])
  3684. SOURCES="$SOURCES $srcdir/src/filesystem/android/*.c"
  3685. have_filesystem=yes
  3686. ;;
  3687. *)
  3688. AC_DEFINE(SDL_FILESYSTEM_UNIX, 1, [ ])
  3689. SOURCES="$SOURCES $srcdir/src/filesystem/unix/*.c"
  3690. have_filesystem=yes
  3691. ;;
  3692. esac
  3693. fi
  3694. # Set up files for the timer library
  3695. if test x$enable_timers = xyes; then
  3696. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  3697. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  3698. have_timers=yes
  3699. fi
  3700. # Set up files for udev hotplugging support
  3701. if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then
  3702. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c"
  3703. fi
  3704. # Set up files for evdev input
  3705. if test x$use_input_events = xyes; then
  3706. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev.c"
  3707. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev_kbd.c"
  3708. SOURCES="$SOURCES $srcdir/src/core/freebsd/SDL_evdev_kbd_freebsd.c"
  3709. fi
  3710. # Set up files for wscons input
  3711. if test x$use_input_wscons = xyes; then
  3712. SOURCES="$SOURCES $srcdir/src/core/openbsd/SDL_wscons_kbd.c"
  3713. SOURCES="$SOURCES $srcdir/src/core/openbsd/SDL_wscons_mouse.c"
  3714. fi
  3715. # Set up other core UNIX files
  3716. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev_capabilities.c"
  3717. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_threadprio.c"
  3718. SOURCES="$SOURCES $srcdir/src/core/linux/SDL_sandbox.c"
  3719. SOURCES="$SOURCES $srcdir/src/core/unix/*.c"
  3720. ;;
  3721. *-*-cygwin* | *-*-mingw*)
  3722. ARCH=win32
  3723. if test "$build" != "$host"; then # cross-compiling
  3724. # Default cross-compile location
  3725. ac_default_prefix=/usr/local/cross-tools/$host
  3726. else
  3727. # Look for the location of the tools and install there
  3728. if test "$BUILD_PREFIX" != ""; then
  3729. ac_default_prefix=$BUILD_PREFIX
  3730. fi
  3731. fi
  3732. if test x$enable_loadso = xyes; then
  3733. have_loadso=yes
  3734. fi
  3735. CheckGDwarf4
  3736. CheckWerror
  3737. CheckDeclarationAfterStatement
  3738. CheckDummyVideo
  3739. CheckOffscreenVideo
  3740. CheckDiskAudio
  3741. CheckDummyAudio
  3742. CheckWINDOWS
  3743. CheckWINDOWSGL
  3744. CheckWINDOWSGLES
  3745. CheckVulkan
  3746. CheckDIRECTX
  3747. CheckHIDAPI
  3748. # Set up the core platform files
  3749. SOURCES="$SOURCES $srcdir/src/core/windows/*.c"
  3750. # Set up files for the misc library
  3751. if test x$enable_misc = xyes; then
  3752. SOURCES="$SOURCES $srcdir/src/misc/windows/*.c"
  3753. have_misc=yes
  3754. fi
  3755. # Use the Windows locale APIs.
  3756. if test x$enable_locale = xyes; then
  3757. SOURCES="$SOURCES $srcdir/src/locale/windows/*.c"
  3758. have_locale=yes
  3759. fi
  3760. # Set up files for the video library
  3761. if test x$enable_video = xyes; then
  3762. AC_DEFINE(SDL_VIDEO_DRIVER_WINDOWS, 1, [ ])
  3763. SOURCES="$SOURCES $srcdir/src/video/windows/*.c"
  3764. have_video=yes
  3765. AC_ARG_ENABLE(render-d3d,
  3766. [AS_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [default=yes]])],
  3767. , enable_render_d3d=yes)
  3768. if test x$enable_render_d3d = xyes -a x$have_d3d = xyes; then
  3769. AC_DEFINE(SDL_VIDEO_RENDER_D3D, 1, [ ])
  3770. SUMMARY_video="${SUMMARY_video} d3d9"
  3771. fi
  3772. if test x$enable_render_d3d = xyes -a x$have_d3d11 = xyes; then
  3773. AC_DEFINE(SDL_VIDEO_RENDER_D3D11, 1, [ ])
  3774. SUMMARY_video="${SUMMARY_video} d3d11"
  3775. fi
  3776. if test x$enable_render_d3d = xyes -a x$have_d3d12 = xyes; then
  3777. AC_DEFINE(SDL_VIDEO_RENDER_D3D12, 1, [ ])
  3778. SUMMARY_video="${SUMMARY_video} d3d12"
  3779. fi
  3780. fi
  3781. # Set up files for the audio library
  3782. if test x$enable_audio = xyes; then
  3783. AC_DEFINE(SDL_AUDIO_DRIVER_WINMM, 1, [ ])
  3784. SUMMARY_audio="${SUMMARY_audio} winmm"
  3785. SOURCES="$SOURCES $srcdir/src/audio/winmm/*.c"
  3786. if test x$have_dsound = xyes; then
  3787. AC_DEFINE(SDL_AUDIO_DRIVER_DSOUND, 1, [ ])
  3788. SUMMARY_audio="${SUMMARY_audio} directsound"
  3789. SOURCES="$SOURCES $srcdir/src/audio/directsound/*.c"
  3790. fi
  3791. if test x$have_wasapi = xyes -a x$enable_wasapi = xyes; then
  3792. AC_DEFINE(SDL_AUDIO_DRIVER_WASAPI, 1, [ ])
  3793. SUMMARY_audio="${SUMMARY_audio} wasapi"
  3794. SOURCES="$SOURCES $srcdir/src/audio/wasapi/*.c"
  3795. fi
  3796. have_audio=yes
  3797. fi
  3798. # Set up files for the joystick library
  3799. if test x$enable_joystick = xyes; then
  3800. AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
  3801. if test x$have_dinput = xyes -o x$have_xinput = xyes -o x$have_wgi = xyes; then
  3802. if test x$have_xinput = xyes; then
  3803. AC_DEFINE(SDL_JOYSTICK_XINPUT, 1, [ ])
  3804. fi
  3805. if test x$have_wgi = xyes; then
  3806. AC_DEFINE(SDL_JOYSTICK_WGI, 1, [ ])
  3807. fi
  3808. if test x$have_dinput = xyes; then
  3809. AC_DEFINE(SDL_JOYSTICK_DINPUT, 1, [ ])
  3810. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldinput8 -ldxguid -ldxerr8"
  3811. fi
  3812. fi
  3813. SOURCES="$SOURCES $srcdir/src/joystick/windows/*.c"
  3814. have_joystick=yes
  3815. fi
  3816. if test x$enable_haptic = xyes; then
  3817. if test x$have_dinput = xyes -o x$have_xinput = xyes; then
  3818. if test x$have_xinput = xyes; then
  3819. AC_DEFINE(SDL_HAPTIC_XINPUT, 1, [ ])
  3820. fi
  3821. if test x$have_dinput = xyes; then
  3822. AC_DEFINE(SDL_HAPTIC_DINPUT, 1, [ ])
  3823. fi
  3824. SOURCES="$SOURCES $srcdir/src/haptic/windows/*.c"
  3825. have_haptic=yes
  3826. fi
  3827. fi
  3828. # Set up files for the sensor library
  3829. AC_CHECK_HEADER(sensorsapi.h,have_winsensors=yes,have_winsensors=no)
  3830. if test x$have_winsensors = xyes; then
  3831. AC_DEFINE(HAVE_SENSORSAPI_H, 1, [ ])
  3832. fi
  3833. if test x$enable_sensor = xyes -a x$have_winsensors = xyes; then
  3834. AC_DEFINE(SDL_SENSOR_WINDOWS, 1, [ ])
  3835. SOURCES="$SOURCES $srcdir/src/sensor/windows/*.c"
  3836. have_sensor=yes
  3837. fi
  3838. # Set up files for the power library
  3839. if test x$enable_power = xyes; then
  3840. AC_DEFINE(SDL_POWER_WINDOWS, 1, [ ])
  3841. SOURCES="$SOURCES $srcdir/src/power/windows/SDL_syspower.c"
  3842. have_power=yes
  3843. fi
  3844. # Set up files for the filesystem library
  3845. if test x$enable_filesystem = xyes; then
  3846. AC_DEFINE(SDL_FILESYSTEM_WINDOWS, 1, [ ])
  3847. SOURCES="$SOURCES $srcdir/src/filesystem/windows/SDL_sysfilesystem.c"
  3848. have_filesystem=yes
  3849. fi
  3850. # Set up files for the thread library
  3851. if test x$enable_threads = xyes; then
  3852. AC_DEFINE(SDL_THREAD_GENERIC_COND_SUFFIX, 1, [ ])
  3853. AC_DEFINE(SDL_THREAD_WINDOWS, 1, [ ])
  3854. SOURCES="$SOURCES $srcdir/src/thread/windows/*.c"
  3855. SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  3856. have_threads=yes
  3857. fi
  3858. # Set up files for the timer library
  3859. if test x$enable_timers = xyes; then
  3860. AC_DEFINE(SDL_TIMER_WINDOWS, 1, [ ])
  3861. SOURCES="$SOURCES $srcdir/src/timer/windows/*.c"
  3862. have_timers=yes
  3863. fi
  3864. # Set up files for the shared object loading library
  3865. if test x$enable_loadso = xyes; then
  3866. AC_DEFINE(SDL_LOADSO_WINDOWS, 1, [ ])
  3867. SOURCES="$SOURCES $srcdir/src/loadso/windows/*.c"
  3868. fi
  3869. # Set up the system libraries we need
  3870. if test -f /lib/w32api/libuuid.a; then
  3871. LIBUUID=/lib/w32api/libuuid.a
  3872. else
  3873. LIBUUID=-luuid
  3874. fi
  3875. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion $LIBUUID"
  3876. BUILD_LDFLAGS="$BUILD_LDFLAGS -Wc,-static-libgcc"
  3877. # The Windows platform requires special setup
  3878. VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
  3879. SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
  3880. SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
  3881. SDL_LIBS="-lSDL2main $SDL_LIBS -mwindows"
  3882. # Check to see if this is a mingw or cygwin build
  3883. have_mingw32=
  3884. AC_CHECK_LIB(mingw32, main, [have_mingw32=yes])
  3885. if test x$have_mingw32 = xyes; then
  3886. SDL_LIBS="-lmingw32 $SDL_LIBS"
  3887. else
  3888. SDL_LIBS="-lcygwin $SDL_LIBS"
  3889. fi
  3890. ;;
  3891. dnl BeOS support removed after SDL 2.0.1. Haiku still works. --ryan.
  3892. *-*-beos*)
  3893. AC_MSG_ERROR([
  3894. *** BeOS support has been removed as of SDL 2.0.2.
  3895. ])
  3896. ;;
  3897. *-*-haiku*)
  3898. ARCH=haiku
  3899. ac_default_prefix=/boot/system
  3900. CheckDummyVideo
  3901. CheckOffscreenVideo
  3902. CheckDiskAudio
  3903. CheckDummyAudio
  3904. CheckDLOPEN
  3905. CheckO_CLOEXEC
  3906. CheckHaikuVideo
  3907. CheckHaikuGL
  3908. CheckPTHREAD
  3909. # Set up files for the audio library
  3910. if test x$enable_audio = xyes; then
  3911. AC_DEFINE(SDL_AUDIO_DRIVER_HAIKU, 1, [ ])
  3912. SOURCES="$SOURCES $srcdir/src/audio/haiku/*.cc"
  3913. SUMMARY_audio="${SUMMARY_audio} haiku"
  3914. have_audio=yes
  3915. fi
  3916. # Set up files for the joystick library
  3917. if test x$enable_joystick = xyes; then
  3918. AC_DEFINE(SDL_JOYSTICK_HAIKU, 1, [ ])
  3919. SOURCES="$SOURCES $srcdir/src/joystick/haiku/*.cc"
  3920. have_joystick=yes
  3921. fi
  3922. # Set up files for the timer library
  3923. if test x$enable_timers = xyes; then
  3924. AC_DEFINE(SDL_TIMER_HAIKU, 1, [ ])
  3925. SOURCES="$SOURCES $srcdir/src/timer/haiku/*.c"
  3926. have_timers=yes
  3927. fi
  3928. # Set up files for the system power library
  3929. if test x$enable_power = xyes; then
  3930. AC_DEFINE(SDL_POWER_HAIKU, 1, [ ])
  3931. SOURCES="$SOURCES $srcdir/src/power/haiku/*.c"
  3932. have_power=yes
  3933. fi
  3934. # Set up files for the system filesystem library
  3935. if test x$enable_filesystem = xyes; then
  3936. AC_DEFINE(SDL_FILESYSTEM_HAIKU, 1, [ ])
  3937. SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc"
  3938. have_filesystem=yes
  3939. fi
  3940. # Set up files for the misc library
  3941. if test x$enable_misc = xyes; then
  3942. SOURCES="$SOURCES $srcdir/src/misc/haiku/*.cc"
  3943. have_misc=yes
  3944. fi
  3945. # Set up files for the locale library
  3946. if test x$enable_locale = xyes; then
  3947. SOURCES="$SOURCES $srcdir/src/locale/haiku/*.cc"
  3948. have_locale=yes
  3949. fi
  3950. # The Haiku platform requires special setup.
  3951. SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES"
  3952. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
  3953. ;;
  3954. *-ios-*)
  3955. ARCH=ios
  3956. CheckVisibilityHidden
  3957. CheckWerror
  3958. CheckNoErrorDeprecatedDeclarationsWerror
  3959. CheckDeclarationAfterStatement
  3960. CheckDummyVideo
  3961. CheckOffscreenVideo
  3962. CheckDiskAudio
  3963. CheckDummyAudio
  3964. CheckDLOPEN
  3965. CheckO_CLOEXEC
  3966. CheckMETAL
  3967. CheckVulkan
  3968. CheckPTHREAD
  3969. # Set up files for the misc library
  3970. if test x$enable_misc = xyes; then
  3971. SOURCES="$SOURCES $srcdir/src/misc/ios/*.m"
  3972. have_misc=yes
  3973. fi
  3974. # Set up files for the locale library
  3975. if test x$enable_locale = xyes; then
  3976. SOURCES="$SOURCES $srcdir/src/locale/macosx/*.m"
  3977. have_locale=yes
  3978. fi
  3979. # Set up files for the audio library
  3980. if test x$enable_audio = xyes; then
  3981. AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
  3982. SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.m"
  3983. SUMMARY_audio="${SUMMARY_audio} coreaudio"
  3984. have_audio=yes
  3985. fi
  3986. # Set up files for the joystick library
  3987. if test x$enable_joystick = xyes; then
  3988. AC_DEFINE(SDL_JOYSTICK_MFI, 1, [ ])
  3989. SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
  3990. SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
  3991. have_joystick=yes
  3992. else
  3993. # Need this code for accelerometer as joystick support
  3994. SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
  3995. fi
  3996. # Set up files for the haptic library
  3997. #if test x$enable_haptic = xyes; then
  3998. # SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  3999. # have_haptic=yes
  4000. # EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  4001. #fi
  4002. # Set up files for the sensor library
  4003. if test x$enable_sensor = xyes; then
  4004. AC_DEFINE(SDL_SENSOR_COREMOTION, 1, [ ])
  4005. SOURCES="$SOURCES $srcdir/src/sensor/coremotion/*.m"
  4006. have_sensor=yes
  4007. fi
  4008. # Set up files for the power library
  4009. if test x$enable_power = xyes; then
  4010. AC_DEFINE(SDL_POWER_UIKIT, 1, [ ])
  4011. SOURCES="$SOURCES $srcdir/src/power/uikit/*.m"
  4012. have_power=yes
  4013. fi
  4014. # Set up files for the filesystem library
  4015. if test x$enable_filesystem = xyes; then
  4016. SOURCES="$SOURCES $srcdir/src/filesystem/cocoa/*.m"
  4017. have_filesystem=yes
  4018. fi
  4019. # Set up additional files for the file library
  4020. if test x$enable_file = xyes; then
  4021. AC_DEFINE(SDL_FILESYSTEM_COCOA, 1, [ ])
  4022. SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  4023. fi
  4024. # Set up files for the timer library
  4025. if test x$enable_timers = xyes; then
  4026. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  4027. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  4028. have_timers=yes
  4029. fi
  4030. # Set up other core UNIX files
  4031. SOURCES="$SOURCES $srcdir/src/core/unix/*.c"
  4032. # The iOS platform requires special setup.
  4033. AC_DEFINE(SDL_VIDEO_DRIVER_UIKIT, 1, [ ])
  4034. AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  4035. AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ])
  4036. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ])
  4037. AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  4038. SOURCES="$SOURCES $srcdir/src/video/uikit/*.m"
  4039. SUMMARY_video="${SUMMARY_video} uikit"
  4040. have_video=yes
  4041. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"
  4042. if test x$enable_system_iconv = xyes; then
  4043. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"
  4044. fi
  4045. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lobjc"
  4046. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AVFoundation"
  4047. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox"
  4048. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio"
  4049. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreGraphics"
  4050. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreMotion"
  4051. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Foundation"
  4052. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,GameController"
  4053. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGLES"
  4054. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore"
  4055. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,UIKit"
  4056. if test x$enable_video_metal = xyes -o x$enable_video_vulkan = xyes; then
  4057. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Metal"
  4058. fi
  4059. ;;
  4060. *-*-darwin* )
  4061. # This could be either full "Mac OS X", or plain "Darwin" which is
  4062. # just the OS X kernel sans upper layers like Carbon and Cocoa.
  4063. # Next line is broken, and a few files below require Mac OS X (full)
  4064. ARCH=macosx
  4065. # Mac OS X builds with both the Carbon and OSX APIs at the moment
  4066. EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_CARBON"
  4067. EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"
  4068. CheckObjectiveCARC
  4069. CheckVisibilityHidden
  4070. CheckWerror
  4071. CheckNoErrorDeprecatedDeclarationsWerror
  4072. CheckDeclarationAfterStatement
  4073. CheckDummyVideo
  4074. CheckOffscreenVideo
  4075. CheckDiskAudio
  4076. CheckDummyAudio
  4077. CheckDLOPEN
  4078. CheckO_CLOEXEC
  4079. CheckCOCOA
  4080. CheckMETAL
  4081. CheckX11
  4082. CheckMacGL
  4083. CheckMacGLES
  4084. CheckGLX
  4085. CheckOpenGL
  4086. CheckVulkan
  4087. CheckPTHREAD
  4088. CheckHIDAPI
  4089. # Set up files for the misc library
  4090. if test x$enable_misc = xyes; then
  4091. SOURCES="$SOURCES $srcdir/src/misc/macosx/*.m"
  4092. have_misc=yes
  4093. fi
  4094. # Set up files for the locale library
  4095. if test x$enable_locale = xyes; then
  4096. SOURCES="$SOURCES $srcdir/src/locale/macosx/*.m"
  4097. have_locale=yes
  4098. fi
  4099. # Set up files for the audio library
  4100. if test x$enable_audio = xyes; then
  4101. AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
  4102. SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.m"
  4103. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox"
  4104. SUMMARY_audio="${SUMMARY_audio} coreaudio"
  4105. have_audio=yes
  4106. fi
  4107. # Set up files for the joystick library
  4108. if test x$enable_joystick = xyes; then
  4109. AC_DEFINE(SDL_JOYSTICK_IOKIT, 1, [ ])
  4110. SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
  4111. SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
  4112. CheckJoystickMFI
  4113. have_joystick=yes
  4114. fi
  4115. # Set up files for the haptic library
  4116. if test x$enable_haptic = xyes; then
  4117. AC_DEFINE(SDL_HAPTIC_IOKIT, 1, [ ])
  4118. SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  4119. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  4120. have_haptic=yes
  4121. fi
  4122. # Set up files for the power library
  4123. if test x$enable_power = xyes; then
  4124. AC_DEFINE(SDL_POWER_MACOSX, 1, [ ])
  4125. SOURCES="$SOURCES $srcdir/src/power/macosx/*.c"
  4126. have_power=yes
  4127. fi
  4128. # Set up files for the filesystem library
  4129. if test x$enable_filesystem = xyes; then
  4130. AC_DEFINE(SDL_FILESYSTEM_COCOA, 1, [ ])
  4131. SOURCES="$SOURCES $srcdir/src/filesystem/cocoa/*.m"
  4132. have_filesystem=yes
  4133. fi
  4134. # Set up files for the timer library
  4135. if test x$enable_timers = xyes; then
  4136. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  4137. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  4138. have_timers=yes
  4139. fi
  4140. # Set up additional files for the file library
  4141. if test x$enable_file = xyes; then
  4142. SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  4143. fi
  4144. # Set up other core UNIX files
  4145. SOURCES="$SOURCES $srcdir/src/core/unix/*.c"
  4146. # The Mac OS X platform requires special setup.
  4147. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lobjc"
  4148. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreVideo"
  4149. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
  4150. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
  4151. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
  4152. if test x$enable_video_metal = xyes -o x$enable_video_vulkan = xyes; then
  4153. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
  4154. fi
  4155. ;;
  4156. *-nacl|*-pnacl)
  4157. ARCH=nacl
  4158. CheckNativeClient
  4159. CheckDummyAudio
  4160. CheckDummyVideo
  4161. CheckOffscreenVideo
  4162. CheckInputEvents
  4163. CheckPTHREAD
  4164. CheckO_CLOEXEC
  4165. # Set up files for the timer library
  4166. if test x$enable_timers = xyes; then
  4167. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  4168. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  4169. have_timers=yes
  4170. fi
  4171. if test x$enable_filesystem = xyes; then
  4172. AC_DEFINE(SDL_FILESYSTEM_NACL, 1, [ ])
  4173. SOURCES="$SOURCES $srcdir/src/filesystem/nacl/*.c"
  4174. have_filesystem=yes
  4175. fi
  4176. ;;
  4177. *-*-emscripten* )
  4178. if test x$enable_video = xyes; then
  4179. AC_DEFINE(SDL_VIDEO_DRIVER_EMSCRIPTEN, 1, [ ])
  4180. SOURCES="$SOURCES $srcdir/src/video/emscripten/*.c"
  4181. have_video=yes
  4182. SUMMARY_video="${SUMMARY_video} emscripten"
  4183. fi
  4184. if test x$enable_audio = xyes; then
  4185. AC_DEFINE(SDL_AUDIO_DRIVER_EMSCRIPTEN, 1, [ ])
  4186. SOURCES="$SOURCES $srcdir/src/audio/emscripten/*.c"
  4187. have_audio=yes
  4188. SUMMARY_audio="${SUMMARY_audio} emscripten"
  4189. fi
  4190. CheckVisibilityHidden
  4191. CheckWerror
  4192. CheckDeclarationAfterStatement
  4193. CheckDummyVideo
  4194. CheckOffscreenVideo
  4195. CheckDiskAudio
  4196. CheckDummyAudio
  4197. CheckPTHREAD
  4198. CheckDLOPEN
  4199. CheckClockGettime
  4200. CheckEmscriptenGLES
  4201. # Set up files for the misc library
  4202. if test x$enable_misc = xyes; then
  4203. SOURCES="$SOURCES $srcdir/src/misc/emscripten/*.c"
  4204. have_misc=yes
  4205. fi
  4206. # Set up files for the power library
  4207. if test x$enable_power = xyes; then
  4208. AC_DEFINE(SDL_POWER_EMSCRIPTEN, 1, [ ])
  4209. SOURCES="$SOURCES $srcdir/src/power/emscripten/*.c"
  4210. have_power=yes
  4211. fi
  4212. # Set up files for the joystick library
  4213. if test x$enable_joystick = xyes; then
  4214. AC_DEFINE(SDL_JOYSTICK_EMSCRIPTEN, 1, [ ])
  4215. SOURCES="$SOURCES $srcdir/src/joystick/emscripten/*.c"
  4216. have_joystick=yes
  4217. fi
  4218. # Set up files for the filesystem library
  4219. if test x$enable_filesystem = xyes; then
  4220. AC_DEFINE(SDL_FILESYSTEM_EMSCRIPTEN, 1, [ ])
  4221. SOURCES="$SOURCES $srcdir/src/filesystem/emscripten/*.c"
  4222. have_filesystem=yes
  4223. fi
  4224. # Set up files for the timer library
  4225. if test x$enable_timers = xyes; then
  4226. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  4227. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  4228. have_timers=yes
  4229. fi
  4230. # Set up files for the locale library
  4231. if test x$enable_locale = xyes; then
  4232. SOURCES="$SOURCES $srcdir/src/locale/emscripten/*.c"
  4233. have_locale=yes
  4234. fi
  4235. ;;
  4236. *-*-riscos*)
  4237. ARCH=riscos
  4238. CheckVisibilityHidden
  4239. CheckWerror
  4240. CheckDeclarationAfterStatement
  4241. CheckDummyVideo
  4242. CheckOffscreenVideo
  4243. CheckDiskAudio
  4244. CheckDummyAudio
  4245. CheckDLOPEN
  4246. CheckO_CLOEXEC
  4247. CheckOSS
  4248. CheckPTHREAD
  4249. CheckClockGettime
  4250. # Set up files for the misc library
  4251. if test x$enable_misc = xyes; then
  4252. SOURCES="$SOURCES $srcdir/src/misc/riscos/*.c"
  4253. have_misc=yes
  4254. fi
  4255. # Set up files for the video library
  4256. if test x$enable_video = xyes; then
  4257. AC_DEFINE(SDL_VIDEO_DRIVER_RISCOS, 1, [ ])
  4258. SOURCES="$SOURCES $srcdir/src/video/riscos/*.c"
  4259. have_video=yes
  4260. SUMMARY_video="${SUMMARY_video} riscos"
  4261. fi
  4262. # Set up files for the filesystem library
  4263. if test x$enable_filesystem = xyes; then
  4264. AC_DEFINE(SDL_FILESYSTEM_RISCOS, 1, [ ])
  4265. SOURCES="$SOURCES $srcdir/src/filesystem/riscos/*.c"
  4266. have_filesystem=yes
  4267. fi
  4268. # Set up files for the timer library
  4269. if test x$enable_timers = xyes; then
  4270. AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  4271. SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  4272. have_timers=yes
  4273. fi
  4274. ;;
  4275. *-*-os2*)
  4276. ARCH=os2
  4277. if test "$build" != "$host"; then # cross-compiling
  4278. # Default cross-compile location
  4279. ac_default_prefix=/@unixroot/usr/local/cross-tools/$host
  4280. else
  4281. # Look for the location of the tools and install there
  4282. if test "$BUILD_PREFIX" != ""; then
  4283. ac_default_prefix=$BUILD_PREFIX
  4284. fi
  4285. fi
  4286. enable_static=no # disable static builds
  4287. EXTRA_CFLAGS="$EXTRA_CFLAGS -DBUILD_SDL -DOS2EMX_PLAIN_CHAR"
  4288. CheckOS2
  4289. CheckWerror
  4290. CheckDeclarationAfterStatement
  4291. CheckDummyVideo
  4292. CheckDiskAudio
  4293. CheckDummyAudio
  4294. CheckHIDAPI
  4295. # Set up the core platform files
  4296. SOURCES="$SOURCES $srcdir/src/core/os2/*.c"
  4297. if test x$enable_system_iconv = xyes; then
  4298. if test x$ac_cv_func_iconv != xyes -o x$ac_cv_header_iconv_h != xyes; then
  4299. SOURCES="$SOURCES $srcdir/src/core/os2/geniconv/*.c"
  4300. fi
  4301. fi
  4302. # Use the Unix locale APIs.
  4303. if test x$enable_locale = xyes; then
  4304. SOURCES="$SOURCES $srcdir/src/locale/unix/*.c"
  4305. have_locale=yes
  4306. fi
  4307. # Set up files for the video library
  4308. if test x$enable_video = xyes; then
  4309. AC_DEFINE(SDL_VIDEO_DRIVER_OS2, 1, [ ])
  4310. SOURCES="$SOURCES $srcdir/src/video/os2/*.c"
  4311. have_video=yes
  4312. SUMMARY_video="${SUMMARY_video} OS/2"
  4313. fi
  4314. # Set up files for the audio library
  4315. if test x$enable_audio = xyes; then
  4316. AC_DEFINE(SDL_AUDIO_DRIVER_OS2, 1, [ ])
  4317. SOURCES="$SOURCES $srcdir/src/audio/os2/*.c"
  4318. have_audio=yes
  4319. SUMMARY_audio="${SUMMARY_audio} OS/2"
  4320. EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lmmpm2"
  4321. fi
  4322. # Set up files for the thread library
  4323. if test x$enable_threads = xyes; then
  4324. AC_DEFINE(SDL_THREAD_OS2, 1, [ ])
  4325. SOURCES="$SOURCES $srcdir/src/thread/os2/*.c"
  4326. SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  4327. have_threads=yes
  4328. fi
  4329. # Set up files for the timer library
  4330. if test x$enable_timers = xyes; then
  4331. AC_DEFINE(SDL_TIMER_OS2, 1, [ ])
  4332. SOURCES="$SOURCES $srcdir/src/timer/os2/*.c"
  4333. have_timers=yes
  4334. fi
  4335. # Set up files for the shared object loading library
  4336. if test x$enable_loadso = xyes; then
  4337. AC_DEFINE(SDL_LOADSO_OS2, 1, [ ])
  4338. SOURCES="$SOURCES $srcdir/src/loadso/os2/*.c"
  4339. have_loadso=yes
  4340. fi
  4341. # Set up files for the filesystem library
  4342. if test x$enable_filesystem = xyes; then
  4343. AC_DEFINE(SDL_FILESYSTEM_OS2, 1, [ ])
  4344. SOURCES="$SOURCES $srcdir/src/filesystem/os2/*.c"
  4345. have_filesystem=yes
  4346. fi
  4347. # Set up files for the joystick library
  4348. if test x$enable_joystick = xyes; then
  4349. AC_DEFINE(SDL_JOYSTICK_OS2, 1, [ ])
  4350. SOURCES="$SOURCES $srcdir/src/joystick/os2/*.c"
  4351. have_joystick=yes
  4352. fi
  4353. ;;
  4354. *)
  4355. AC_MSG_ERROR([
  4356. *** Unsupported host: Please add to configure.ac
  4357. ])
  4358. ;;
  4359. esac
  4360. dnl Permit use of virtual joystick APIs on any platform (subject to configure options)
  4361. CheckVirtualJoystick
  4362. # Check whether to install sdl2-config
  4363. AC_MSG_CHECKING(whether to install sdl2-config)
  4364. AC_ARG_ENABLE([sdl2-config],
  4365. [AS_HELP_STRING([--enable-sdl2-config],[Install sdl2-config [default=yes]])],
  4366. [case "${enableval}" in
  4367. yes) enable_sdl2_config="TRUE" ;;
  4368. no) enable_sdl2_config="FALSE" ;;
  4369. *) AC_MSG_ERROR([bad value '${enableval}' for --enable-sdl2-config]) ;;
  4370. esac], [enable_sdl2_config="TRUE"])
  4371. if test "$enable_sdl2_config" = "TRUE"; then
  4372. AC_MSG_RESULT(yes)
  4373. else
  4374. AC_MSG_RESULT(no)
  4375. fi
  4376. AC_SUBST([INSTALL_SDL2_CONFIG], [$enable_sdl2_config])
  4377. AC_ARG_ENABLE([vendor-info],
  4378. [AS_HELP_STRING([--enable-vendor-info=STRING], [Add vendor info to SDL_REVISION])],
  4379. [enable_vendor_info="$enableval"], [enable_vendor_info=])
  4380. AS_IF([test "$enable_vendor_info" = no], [enable_vendor_info=])
  4381. AC_SUBST([SDL_VENDOR_INFO], [$enable_vendor_info])
  4382. # Verify that we have all the platform specific files we need
  4383. if test x$have_audio != xyes; then
  4384. if test x$enable_audio = xyes; then
  4385. AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ])
  4386. fi
  4387. SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
  4388. fi
  4389. if test x$have_video != xyes; then
  4390. if test x$enable_video = xyes; then
  4391. AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ])
  4392. fi
  4393. SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
  4394. fi
  4395. if test x$have_misc != xyes; then
  4396. if test x$enable_misc = xyes; then
  4397. AC_DEFINE(SDL_MISC_DUMMY, 1, [ ])
  4398. fi
  4399. SOURCES="$SOURCES $srcdir/src/misc/dummy/*.c"
  4400. fi
  4401. if test x$have_locale != xyes; then
  4402. if test x$enable_locale = xyes; then
  4403. AC_DEFINE(SDL_LOCALE_DUMMY, 1, [ ])
  4404. fi
  4405. SOURCES="$SOURCES $srcdir/src/locale/dummy/*.c"
  4406. fi
  4407. if test x$have_joystick != xyes; then
  4408. if test x$enable_joystick = xyes; then
  4409. AC_DEFINE(SDL_JOYSTICK_DUMMY, 1, [ ])
  4410. fi
  4411. SOURCES="$SOURCES $srcdir/src/joystick/dummy/*.c"
  4412. fi
  4413. if test x$have_haptic != xyes; then
  4414. if test x$enable_haptic = xyes; then
  4415. AC_DEFINE(SDL_HAPTIC_DUMMY, 1, [ ])
  4416. fi
  4417. SOURCES="$SOURCES $srcdir/src/haptic/dummy/*.c"
  4418. fi
  4419. if test x$have_sensor != xyes; then
  4420. if test x$enable_sensor = xyes; then
  4421. AC_DEFINE(SDL_SENSOR_DUMMY, 1, [ ])
  4422. fi
  4423. SOURCES="$SOURCES $srcdir/src/sensor/dummy/*.c"
  4424. fi
  4425. if test x$have_threads != xyes; then
  4426. if test x$enable_threads = xyes; then
  4427. AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
  4428. fi
  4429. SOURCES="$SOURCES $srcdir/src/thread/generic/*.c"
  4430. fi
  4431. if test x$have_timers != xyes; then
  4432. if test x$enable_timers = xyes; then
  4433. AC_DEFINE(SDL_TIMER_DUMMY, 1, [ ])
  4434. fi
  4435. SOURCES="$SOURCES $srcdir/src/timer/dummy/*.c"
  4436. fi
  4437. if test x$have_filesystem != xyes; then
  4438. if test x$enable_filesystem = xyes; then
  4439. AC_DEFINE(SDL_FILESYSTEM_DUMMY, 1, [ ])
  4440. fi
  4441. SOURCES="$SOURCES $srcdir/src/filesystem/dummy/*.c"
  4442. fi
  4443. if test x$have_loadso != xyes; then
  4444. if test x$enable_loadso = xyes; then
  4445. AC_DEFINE(SDL_LOADSO_DUMMY, 1, [ ])
  4446. fi
  4447. SOURCES="$SOURCES $srcdir/src/loadso/dummy/*.c"
  4448. fi
  4449. if test x$SDLMAIN_SOURCES = x; then
  4450. SDLMAIN_SOURCES="$srcdir/src/main/dummy/*.c"
  4451. fi
  4452. SDLTEST_SOURCES="$srcdir/src/test/*.c"
  4453. if test x$video_wayland = xyes; then
  4454. WAYLAND_PROTOCOLS=`cd $srcdir/wayland-protocols ; for p in *.xml ; do printf '%s' "\$p" |sed 's,\\.xml\$, ,g' ; done`
  4455. WAYLAND_PROTOCOLS_SOURCES=`for p in $WAYLAND_PROTOCOLS ; do printf '%s' "\\$(gen)/\$p-protocol.c " ; done`
  4456. WAYLAND_PROTOCOLS_HEADERS=`for p in $WAYLAND_PROTOCOLS ; do printf '%s' "\\$(gen)/\$p-client-protocol.h " ; done`
  4457. GEN_SOURCES="$GEN_SOURCES $WAYLAND_PROTOCOLS_SOURCES"
  4458. GEN_HEADERS="$GEN_HEADERS $WAYLAND_PROTOCOLS_HEADERS"
  4459. WAYLAND_PROTOCOLS_DEPENDS=`for p in $WAYLAND_PROTOCOLS ; do\
  4460. echo ;\
  4461. printf '%s\n' "\\$(gen)/\$p-client-protocol.h: \\$(srcdir)/wayland-protocols/\$p.xml" ;\
  4462. printf '%s\n' " @\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(gen)" ;\
  4463. printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) client-header \\$< \\$@" ;\
  4464. echo ;\
  4465. printf '%s\n' "\\$(gen)/\$p-protocol.c: \\$(srcdir)/wayland-protocols/\$p.xml" ;\
  4466. printf '%s\n' " @\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(gen)" ;\
  4467. printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) \\$(WAYLAND_SCANNER_CODE_MODE) \\$< \\$@" ;\
  4468. echo ;\
  4469. printf '%s\n' "\\$(objects)/\$p-protocol.lo: \\$(gen)/\$p-protocol.c \\$(gen)/\$p-client-protocol.h" ;\
  4470. printf '%s\n' " @\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(objects)" ;\
  4471. printf '%s\n' " \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@" ;\
  4472. done ;\
  4473. echo ;\
  4474. for s in $WAYLAND_SOURCES ; do printf '%s' "\$s:" ; printf ' \$(gen)/%s-client-protocol.h' $WAYLAND_PROTOCOLS ; echo ; done ; echo`
  4475. fi
  4476. OBJECTS=`echo $SOURCES`
  4477. DEPENDS=`echo $SOURCES | tr ' ' '\n'`
  4478. for EXT in asm cc m c S; do
  4479. OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'`
  4480. DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\
  4481. \\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(objects)/.created\\\\
  4482. \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  4483. done
  4484. GEN_OBJECTS=`echo "$GEN_SOURCES" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
  4485. VERSION_OBJECTS=`echo $VERSION_SOURCES`
  4486. VERSION_DEPENDS=`echo $VERSION_SOURCES`
  4487. VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.lo,g'`
  4488. VERSION_DEPENDS=`echo "$VERSION_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.rc,\\\\
  4489. \\$(objects)/\\2.lo: \\1/\\2.rc \\$(objects)/.created\\\\
  4490. \\$(RUN_CMD_RC)\\$(LIBTOOL) --mode=compile --tag=RC \\$(RC) -i \\$< -o \\$@,g"`
  4491. SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
  4492. SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
  4493. SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
  4494. SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  4495. \\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
  4496. \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  4497. SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES`
  4498. SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES`
  4499. SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
  4500. SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  4501. \\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
  4502. \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  4503. # Set runtime shared library paths as needed
  4504. if test "x$enable_rpath" = "xyes" -a "x$enable_shared" = "xyes"; then
  4505. if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = linux -o $ARCH = netbsd; then
  4506. SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
  4507. AC_MSG_CHECKING(for linker option --enable-new-dtags)
  4508. have_enable_new_dtags=no
  4509. save_LDFLAGS="$LDFLAGS"
  4510. LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags"
  4511. AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [
  4512. have_enable_new_dtags=yes
  4513. SDL_RLD_FLAGS="$SDL_RLD_FLAGS -Wl,--enable-new-dtags"
  4514. ],[])
  4515. LDFLAGS="$save_LDFLAGS"
  4516. AC_MSG_RESULT($have_enable_new_dtags)
  4517. fi
  4518. if test $ARCH = solaris; then
  4519. SDL_RLD_FLAGS="-R\${libdir}"
  4520. fi
  4521. else
  4522. SDL_RLD_FLAGS=""
  4523. fi
  4524. SDL_STATIC_LIBS="$EXTRA_LDFLAGS"
  4525. dnl Calculate the location of the prefix, relative to the cmake folder
  4526. dnl Calculate the location of the prefix, relative to bindir
  4527. pkg_cmakedir='$libdir/cmake/SDL2'
  4528. AX_COMPUTE_RELATIVE_PATHS([pkg_cmakedir:prefix:cmake_prefix_relpath bindir:prefix:bin_prefix_relpath])
  4529. AC_SUBST([cmake_prefix_relpath])
  4530. AC_SUBST([bin_prefix_relpath])
  4531. dnl Expand the cflags and libraries needed by apps using SDL
  4532. AC_SUBST(SDL_CFLAGS)
  4533. AC_SUBST(SDL_LIBS)
  4534. AC_SUBST(SDL_STATIC_LIBS)
  4535. AC_SUBST(SDL_RLD_FLAGS)
  4536. PKGCONFIG_DEPENDS=""
  4537. AC_SUBST(PKGCONFIG_DEPENDS)
  4538. if test x$enable_shared = xyes; then
  4539. PKGCONFIG_LIBS_PRIV="
  4540. Libs.private:"
  4541. ENABLE_SHARED_TRUE=
  4542. ENABLE_SHARED_FALSE="#"
  4543. else
  4544. PKGCONFIG_LIBS_PRIV=
  4545. ENABLE_SHARED_TRUE="#"
  4546. ENABLE_SHARED_FALSE=
  4547. fi
  4548. if test x$enable_static = xyes; then
  4549. ENABLE_STATIC_TRUE=
  4550. ENABLE_STATIC_FALSE="#"
  4551. else
  4552. ENABLE_STATIC_TRUE="#"
  4553. ENABLE_STATIC_FALSE=
  4554. fi
  4555. AC_SUBST(PKGCONFIG_LIBS_PRIV)
  4556. AC_SUBST(ENABLE_SHARED_TRUE)
  4557. AC_SUBST(ENABLE_SHARED_FALSE)
  4558. AC_SUBST(ENABLE_STATIC_TRUE)
  4559. AC_SUBST(ENABLE_STATIC_FALSE)
  4560. dnl Expand the sources and objects needed to build the library
  4561. AC_SUBST(ac_aux_dir)
  4562. AC_SUBST(INCLUDE)
  4563. AC_SUBST(OBJECTS)
  4564. AC_SUBST(GEN_HEADERS)
  4565. AC_SUBST(GEN_OBJECTS)
  4566. AC_SUBST(VERSION_OBJECTS)
  4567. AC_SUBST(SDLMAIN_OBJECTS)
  4568. AC_SUBST(SDLTEST_OBJECTS)
  4569. AC_SUBST(BUILD_CFLAGS)
  4570. AC_SUBST(EXTRA_CFLAGS)
  4571. AC_SUBST(BUILD_LDFLAGS)
  4572. AC_SUBST(EXTRA_LDFLAGS)
  4573. AC_SUBST(WAYLAND_SCANNER)
  4574. AC_SUBST(WAYLAND_SCANNER_CODE_MODE)
  4575. cat >Makefile.rules <<__EOF__
  4576. # Build rules for objects
  4577. -include \$(OBJECTS:.lo=.d)
  4578. # Special dependency for SDL.c, since it depends on SDL_revision.h
  4579. $srcdir/src/SDL.c: update-revision
  4580. $DEPENDS
  4581. $VERSION_DEPENDS
  4582. $SDLMAIN_DEPENDS
  4583. $SDLTEST_DEPENDS
  4584. $WAYLAND_PROTOCOLS_DEPENDS
  4585. __EOF__
  4586. AC_CONFIG_FILES([
  4587. Makefile:Makefile.in:Makefile.rules sdl2-config sdl2-config.cmake sdl2-config-version.cmake SDL2.spec sdl2.pc
  4588. ])
  4589. AC_CONFIG_COMMANDS([sdl2_config],[chmod a+x sdl2-config])
  4590. SUMMARY="SDL2 Configure Summary:\n"
  4591. if test x$enable_shared = xyes; then
  4592. SUMMARY="${SUMMARY}Building Shared Libraries\n"
  4593. fi
  4594. if test x$enable_static = xyes; then
  4595. SUMMARY="${SUMMARY}Building Static Libraries\n"
  4596. fi
  4597. SUMMARY="${SUMMARY}Enabled modules :${SUMMARY_modules}\n"
  4598. SUMMARY="${SUMMARY}Assembly Math :${SUMMARY_math}\n"
  4599. SUMMARY="${SUMMARY}Audio drivers :${SUMMARY_audio}\n"
  4600. SUMMARY="${SUMMARY}Video drivers :${SUMMARY_video}\n"
  4601. if test x$have_x = xyes; then
  4602. SUMMARY="${SUMMARY}X11 libraries :${SUMMARY_video_x11}\n"
  4603. fi
  4604. SUMMARY="${SUMMARY}Input drivers :${SUMMARY_input}\n"
  4605. if test x$have_joystick_virtual = xyes; then
  4606. SUMMARY="${SUMMARY}Enable virtual joystick APIs : YES\n"
  4607. else
  4608. SUMMARY="${SUMMARY}Enable virtual joystick APIs : NO\n"
  4609. fi
  4610. if test x$have_samplerate_h_hdr = xyes; then
  4611. SUMMARY="${SUMMARY}Using libsamplerate : YES\n"
  4612. else
  4613. SUMMARY="${SUMMARY}Using libsamplerate : NO\n"
  4614. fi
  4615. if test x$have_libudev_h_hdr = xyes; then
  4616. SUMMARY="${SUMMARY}Using libudev : YES\n"
  4617. else
  4618. SUMMARY="${SUMMARY}Using libudev : NO\n"
  4619. fi
  4620. if test x$have_dbus_dbus_h_hdr = xyes; then
  4621. SUMMARY="${SUMMARY}Using dbus : YES\n"
  4622. else
  4623. SUMMARY="${SUMMARY}Using dbus : NO\n"
  4624. fi
  4625. if test x$enable_ime = xyes; then
  4626. SUMMARY="${SUMMARY}Using ime : YES\n"
  4627. else
  4628. SUMMARY="${SUMMARY}Using ime : NO\n"
  4629. fi
  4630. if test x$have_ibus_ibus_h_hdr = xyes; then
  4631. SUMMARY="${SUMMARY}Using ibus : YES\n"
  4632. else
  4633. SUMMARY="${SUMMARY}Using ibus : NO\n"
  4634. fi
  4635. if test x$have_fcitx = xyes; then
  4636. SUMMARY="${SUMMARY}Using fcitx : YES\n"
  4637. else
  4638. SUMMARY="${SUMMARY}Using fcitx : NO\n"
  4639. fi
  4640. if test x$WARN_ABOUT_ARM_SIMD_ASM_MIT = xyes; then
  4641. SUMMARY="${SUMMARY}\nSDL is being built with ARM SIMD optimizations, which\n"
  4642. SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n"
  4643. SUMMARY="${SUMMARY}problem, please disable that code by rerunning the\n"
  4644. SUMMARY="${SUMMARY}configure script with:\n"
  4645. SUMMARY="${SUMMARY}\n --disable-arm-simd\n"
  4646. fi
  4647. if test x$WARN_ABOUT_ARM_NEON_ASM_MIT = xyes; then
  4648. SUMMARY="${SUMMARY}\nSDL is being built with ARM NEON optimizations, which\n"
  4649. SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n"
  4650. SUMMARY="${SUMMARY}problem, please disable that code by rerunning the\n"
  4651. SUMMARY="${SUMMARY}configure script with:\n"
  4652. SUMMARY="${SUMMARY}\n --disable-arm-neon\n"
  4653. fi
  4654. AC_CONFIG_COMMANDS([summary], [printf "$SUMMARY"], [SUMMARY="$SUMMARY"])
  4655. AC_OUTPUT