configure.ac 172 KB

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