configure.ac 177 KB

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