12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550 |
- dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
- dnl vi: set tabstop=4 shiftwidth=4 expandtab:
- dnl ***** BEGIN LICENSE BLOCK *****
- dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
- dnl
- dnl The contents of this file are subject to the Mozilla Public License Version
- dnl 1.1 (the "License"); you may not use this file except in compliance with
- dnl the License. You may obtain a copy of the License at
- dnl http://www.mozilla.org/MPL/
- dnl
- dnl Software distributed under the License is distributed on an "AS IS" basis,
- dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- dnl for the specific language governing rights and limitations under the
- dnl License.
- dnl
- dnl The Original Code is this file as it was released upon August 6, 1998.
- dnl
- dnl The Initial Developer of the Original Code is
- dnl Christopher Seawood.
- dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
- dnl the Initial Developer. All Rights Reserved.
- dnl
- dnl Contributor(s):
- dnl Jamie Zawinski <jwz@jwz.org>
- dnl gettimeofday args check
- dnl Christopher Blizzard <blizzard@appliedtheory.com>
- dnl gnomefe update & enable-pthreads
- dnl Ramiro Estrugo <ramiro@netscape.com>
- dnl X11 makedepend support
- dnl Insure support.
- dnl Henry Sobotka <sobotka@axess.com>
- dnl OS/2 support
- dnl Dan Mosedale <dmose@mozilla.org>
- dnl LDAP support
- dnl Seth Spitzer <sspitzer@netscape.com>
- dnl xpctools support
- dnl Benjamin Smedberg <benjamin@smedbergs.us>
- dnl Howard Chu <hyc@symas.com>
- dnl MSYS support
- dnl Mark Mentovai <mark@moxienet.com>:
- dnl Mac OS X 10.4 support
- dnl Giorgio Maone <g.maone@informaction.com>
- dnl MSVC l10n compatible version check
- dnl Ben Turner <mozilla@songbirdnest.com>
- dnl
- dnl Alternatively, the contents of this file may be used under the terms of
- dnl either the GNU General Public License Version 2 or later (the "GPL"), or
- dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- dnl in which case the provisions of the GPL or the LGPL are applicable instead
- dnl of those above. If you wish to allow use of your version of this file only
- dnl under the terms of either the GPL or the LGPL, and not to allow others to
- dnl use your version of this file under the terms of the MPL, indicate your
- dnl decision by deleting the provisions above and replace them with the notice
- dnl and other provisions required by the GPL or the LGPL. If you do not delete
- dnl the provisions above, a recipient may use your version of this file under
- dnl the terms of any one of the MPL, the GPL or the LGPL.
- dnl
- dnl ***** END LICENSE BLOCK *****
- dnl Process this file with autoconf to produce a configure script.
- dnl ========================================================
- AC_PREREQ(2.13)
- AC_INIT(config/config.mk)
- AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
- AC_CANONICAL_SYSTEM
- TARGET_CPU="${target_cpu}"
- TARGET_VENDOR="${target_vendor}"
- TARGET_OS="${target_os}"
- dnl ========================================================
- dnl =
- dnl = Don't change the following two lines. Doing so breaks:
- dnl =
- dnl = CFLAGS="-foo" ./configure
- dnl =
- dnl ========================================================
- CFLAGS="${CFLAGS=}"
- CPPFLAGS="${CPPFLAGS=}"
- CXXFLAGS="${CXXFLAGS=}"
- LDFLAGS="${LDFLAGS=}"
- HOST_CFLAGS="${HOST_CFLAGS=}"
- HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
- HOST_LDFLAGS="${HOST_LDFLAGS=}"
- dnl ========================================================
- dnl = Preserve certain environment flags passed to configure
- dnl = We want sub projects to receive the same flags
- dnl = untainted by this configure script
- dnl ========================================================
- _SUBDIR_CC="$CC"
- _SUBDIR_CXX="$CXX"
- _SUBDIR_CFLAGS="$CFLAGS"
- _SUBDIR_CPPFLAGS="$CPPFLAGS"
- _SUBDIR_CXXFLAGS="$CXXFLAGS"
- _SUBDIR_LDFLAGS="$LDFLAGS"
- _SUBDIR_HOST_CC="$HOST_CC"
- _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
- _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
- _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
- _SUBDIR_CONFIG_ARGS="$ac_configure_args"
- dnl Set the version number of the libs included with mozilla
- dnl ========================================================
- NSPR_VERSION=4
- dnl Set the minimum version of toolkit libs used by mozilla
- dnl ========================================================
- PERL_VERSION=5.006
- PYTHON_VERSION=2.4
- WINDRES_VERSION=2.14.90
- W32API_VERSION=3.8
- MSMANIFEST_TOOL=
- dnl Set various checks
- dnl ========================================================
- AC_PROG_AWK
- dnl Do not allow a separate objdir build if a srcdir build exists.
- dnl ==============================================================
- _topsrcdir=`cd \`dirname $0\`; pwd`
- _objdir=`pwd`
- if test "$_topsrcdir" == "$_objdir"; then
- AC_MSG_ERROR([Please use a separate objdir instead of configuring directly in the source directory.])
- fi
- MOZ_BUILD_ROOT=`pwd`
- dnl Default to MSVC for win32
- dnl ==============================================================
- if test -z "$CROSS_COMPILE"; then
- case "$target" in
- *-cygwin*|*-mingw*|*-msvc*|*-mks*)
- if test -z "$CC"; then CC=cl; fi
- if test -z "$CXX"; then CXX=cl; fi
- if test -z "$CPP"; then CPP="cl -E -nologo"; fi
- if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
- if test -z "$LD"; then LD=link; fi
- if test -z "$AS"; then AS=ml; fi
- if test -z "$MIDL"; then MIDL=midl; fi
- ;;
- esac
- fi
- dnl Check for Perl first -- needed for win32 SDK checks
- MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
- if test -z "$PERL" || test "$PERL" = ":"; then
- AC_MSG_ERROR([perl not found in \$PATH])
- fi
- dnl ========================================================
- dnl Checks for compilers.
- dnl ========================================================
- dnl Set CROSS_COMPILE in the environment when running configure
- dnl to use the cross-compile setup for now
- dnl ========================================================
- dnl Do some special WinCE toolchain stuff
- case "$target" in
- *wince)
- MOZ_ARG_WITH_STRING(wince-sdk,
- [ --with-wince-sdk=WINCE_SDK_DIR
- The path to the Windows CE SDK],
- WINCE_SDK_DIR=$withval)
- MOZ_ARG_WITH_STRING(ogles-sdk,
- [ --with-ogles-sdk=OGLES_SDK_DIR
- The path to the OGLES SDK],
- OGLES_SDK_DIR=$withval)
- dnl Default to Windows Mobile components enabled
- WINCE_WINDOWS_MOBILE=1
- MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
- [ --disable-windows-mobile-components
- Disable Windows Mobile specific components from CE build],
- WINCE_WINDOWS_MOBILE=,
- WINCE_WINDOWS_MOBILE=1)
- if test "$WINCE_WINDOWS_MOBILE"; then
- AC_DEFINE(WINCE_WINDOWS_MOBILE)
- fi
- AC_DEFINE(WINCE)
-
- export WINCE=1
- echo -----------------------------------------------------------------------------
- echo Building Windows CE Shunt Library and Tool Chain
- echo Using SDK in:
- echo $WINCE_SDK_DIR
- ac_exeext=.exe
- _pwdw=`pwd -W`
- _pwd=`pwd`
- make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" TOPSRCDIR="$_topsrcdir" OBJDIR="$_pwdw" -C $srcdir/build/wince/tools
- CC="$_pwd/dist/sdk/bin/arm-wince-gcc"
- CXX="$_pwd/dist/sdk/bin/arm-wince-gcc"
- CPP="$_pwd/dist/sdk/bin/arm-wince-gcc -E -nologo"
- CXXCPP="$_pwd/dist/sdk/bin/arm-wince-gcc -TP -E -nologo"
- LD="$_pwd/dist/sdk/bin/arm-wince-link"
- AR="$_pwd/dist/sdk/bin/arm-wince-lib"
- AS="$_pwd/dist/sdk/bin/arm-wince-as"
- RC="$_pwd/dist/sdk/bin/arm-wince-res"
- echo -----------------------------------------------------------------------------
- ;;
- esac
- if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
- echo "cross compiling from $host to $target"
- cross_compiling=yes
- _SAVE_CC="$CC"
- _SAVE_CFLAGS="$CFLAGS"
- _SAVE_LDFLAGS="$LDFLAGS"
- AC_MSG_CHECKING([for host c compiler])
- AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
- if test -z "$HOST_CC"; then
- AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
- fi
- AC_MSG_RESULT([$HOST_CC])
- AC_MSG_CHECKING([for host c++ compiler])
- AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
- if test -z "$HOST_CXX"; then
- AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
- fi
- AC_MSG_RESULT([$HOST_CXX])
- if test -z "$HOST_CFLAGS"; then
- HOST_CFLAGS="$CFLAGS"
- fi
- if test -z "$HOST_CXXFLAGS"; then
- HOST_CXXFLAGS="$CXXFLAGS"
- fi
- if test -z "$HOST_LDFLAGS"; then
- HOST_LDFLAGS="$LDFLAGS"
- fi
- AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
- AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
- CC="$HOST_CC"
- CFLAGS="$HOST_CFLAGS"
- LDFLAGS="$HOST_LDFLAGS"
- AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
- AC_TRY_COMPILE([], [return(0);],
- [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
- AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
- CC="$HOST_CXX"
- CFLAGS="$HOST_CXXFLAGS"
- AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
- AC_TRY_COMPILE([], [return(0);],
- [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
- AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
-
- CC=$_SAVE_CC
- CFLAGS=$_SAVE_CFLAGS
- LDFLAGS=$_SAVE_LDFLAGS
- case "$build:$target" in
- powerpc-apple-darwin8*:i?86-apple-darwin*)
- dnl The Darwin cross compiler doesn't necessarily point itself at a
- dnl root that has libraries for the proper architecture, it defaults
- dnl to the system root. The libraries in the system root on current
- dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
- dnl checks will fail. Fake a working SDK in that case.
- _SAVE_CFLAGS=$CFLAGS
- _SAVE_CXXFLAGS=$CXXLAGS
- CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
- CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
- ;;
- esac
- AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
- unset ac_cv_prog_CC
- AC_PROG_CC
- AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
- unset ac_cv_prog_CXX
- AC_PROG_CXX
- case "$build:$target" in
- powerpc-apple-darwin8*:i?86-apple-darwin*)
- dnl Revert the changes made above. From this point on, the target
- dnl compiler will never be used without applying the SDK to CFLAGS
- dnl (see --with-macos-sdk below).
- CFLAGS=$_SAVE_CFLAGS
- CXXFLAGS=$_SAVE_CXXFLAGS
- ;;
- esac
- AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
- AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
- MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
- AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
- AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
- AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
- AC_DEFINE(CROSS_COMPILE)
- else
- AC_PROG_CC
- AC_PROG_CXX
- AC_PROG_RANLIB
- MOZ_PATH_PROGS(AS, $AS as, $CC)
- AC_CHECK_PROGS(AR, ar, :)
- AC_CHECK_PROGS(LD, ld, :)
- AC_CHECK_PROGS(STRIP, strip, :)
- AC_CHECK_PROGS(WINDRES, windres, :)
- if test -z "$HOST_CC"; then
- HOST_CC="$CC"
- fi
- if test -z "$HOST_CFLAGS"; then
- HOST_CFLAGS="$CFLAGS"
- fi
- if test -z "$HOST_CXX"; then
- HOST_CXX="$CXX"
- fi
- if test -z "$HOST_CXXFLAGS"; then
- HOST_CXXFLAGS="$CXXFLAGS"
- fi
- if test -z "$HOST_LDFLAGS"; then
- HOST_LDFLAGS="$LDFLAGS"
- fi
- if test -z "$HOST_RANLIB"; then
- HOST_RANLIB="$RANLIB"
- fi
- if test -z "$HOST_AR"; then
- HOST_AR="$AR"
- fi
- fi
- GNU_AS=
- GNU_LD=
- GNU_CC=
- GNU_CXX=
- CC_VERSION='N/A'
- CXX_VERSION='N/A'
- if test "$GCC" = "yes"; then
- GNU_CC=1
- CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
- fi
- if test "$GXX" = "yes"; then
- GNU_CXX=1
- CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
- fi
- if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
- GNU_AS=1
- fi
- if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
- GNU_LD=1
- fi
- if test "$GNU_CC"; then
- if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
- GCC_USE_GNU_LD=1
- fi
- fi
- INTEL_CC=
- INTEL_CXX=
- if test "$GCC" = yes; then
- if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
- INTEL_CC=1
- fi
- fi
- if test "$GXX" = yes; then
- if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
- INTEL_CXX=1
- fi
- fi
- dnl Special win32 checks
- dnl ========================================================
- case "$target" in
- *-wince)
- WINVER=500
- ;;
- *)
- if test -n "$GNU_CC"; then
- WINVER=501
- else
- WINVER=500
- fi
- ;;
- esac
- dnl Target the Windows Vista SDK by default
- WINSDK_TARGETVER=600
- MOZ_ARG_WITH_STRING(windows-version,
- [ --with-windows-version=WINSDK_TARGETVER
- Highest Windows version to target using this SDK
- 502: Windows Server 2003
- 600: Windows Vista
- 601: Windows 7],
- WINSDK_TARGETVER=$withval)
- case "$WINSDK_TARGETVER" in
- 502|600|601)
- MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
- ;;
- *)
- AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
- ;;
- esac
- case "$target" in
- *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
- if test "$GCC" != "yes"; then
- # Check to see if we are really running in a msvc environemnt
- _WIN32_MSVC=1
- AC_CHECK_PROGS(MIDL, midl)
- # Make sure compilers are valid
- CFLAGS="$CFLAGS -TC -nologo"
- CXXFLAGS="$CXXFLAGS -TP -nologo"
- AC_LANG_SAVE
- AC_LANG_C
- AC_TRY_COMPILE([#include <stdio.h>],
- [ printf("Hello World\n"); ],,
- AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <new.h>],
- [ unsigned *test = new unsigned(42); ],,
- AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
- AC_LANG_RESTORE
-
- changequote(,)
- _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
- changequote([,])
-
- # Determine compiler version
- CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
- _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
- _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
- _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
- _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
- _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
- CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
- _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
- if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
- AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
- fi
- if test "$_CC_MAJOR_VERSION" = "12"; then
- _CC_SUITE=6
- elif test "$_CC_MAJOR_VERSION" = "13"; then
- _CC_SUITE=7
- elif test "$_CC_MAJOR_VERSION" = "14"; then
- _CC_SUITE=8
- _MSVS_VERSION=2005
- dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
- dnl so be very specific here!
- dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
- if test $_CC_RELEASE -gt 50727; then
- _USE_DYNAMICBASE=1
- elif test $_CC_BUILD -ge 762; then
- _USE_DYNAMICBASE=1
- fi
- AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
- AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
- elif test "$_CC_MAJOR_VERSION" = "15"; then
- _CC_SUITE=9
- _MSVS_VERSION=2008
- LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
- _USE_DYNAMICBASE=1
- AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
- AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
- elif test "$_CC_MAJOR_VERSION" = "16"; then
- _CC_SUITE=10
- _MSVS_VERSION=2010
- AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
- AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
- elif test "$_CC_MAJOR_VERSION" = "17"; then
- _CC_SUITE=11
- _MSVS_VERSION=2012
- AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
- AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
- else
- AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
- fi
- _MOZ_RTTI_FLAGS_ON='-GR'
- _MOZ_RTTI_FLAGS_OFF='-GR-'
- if test -n "$WIN32_REDIST_DIR"; then
- WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
- fi
-
- # bug #249782
- # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
- if test "$_CC_SUITE" -ge "8"; then
- changequote(,)
- _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
- changequote([,])
- MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
- if test -n "$MSMT_TOOL"; then
- MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
- if test -z "$MSMANIFEST_TOOL_VERSION"; then
- AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
- fi
- MSMANIFEST_TOOL=1
- unset MSMT_TOOL
- else
- AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
- fi
- fi
- # Check linker version
- _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
- _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
- if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
- AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
- fi
- INCREMENTAL_LINKER=1
- # Check midl version
- _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
- _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
- _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
- _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
- # Add flags if necessary
- AC_MSG_CHECKING([for midl flags])
- case "$target" in
- i*86-*)
- if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
- # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
- # MIDL version 7.00.0500 or later has no problem.
- MIDL_FLAGS="${MIDL_FLAGS} -env win32"
- AC_MSG_RESULT([need -env win32])
- else
- AC_MSG_RESULT([none needed])
- fi
- ;;
- *)
- AC_MSG_RESULT([none needed])
- ;;
- esac
- # Identify which version of the SDK we're building with
- # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
- # from there
- AC_CHECK_HEADERS([winsdkver.h])
- if test "$ac_cv_header_winsdkver_h" = "yes"; then
- # Get the highest _WIN32_WINNT and NTDDI versions supported
- # Take the higher of the two
- # This is done because the Windows 7 beta SDK reports its
- # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
- AC_CACHE_CHECK(for highest Windows version supported by this SDK,
- ac_cv_winsdk_maxver,
- [cat > conftest.h <<EOF
- #include <winsdkver.h>
- #include <sdkddkver.h>
- #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
- #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
- #else
- #define WINSDK_MAXVER NTDDI_MAXVER
- #endif
- WINSDK_MAXVER
- EOF
- ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
- rm -f conftest.h
- ])
- MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
- else
- # The Vista SDK is the only one to have sdkddkver.h but not
- # WinSDKVer.h
- AC_CHECK_HEADERS([sdkddkver.h])
- if test "$ac_cv_header_sdkddkver_h" = "yes"; then
- MOZ_WINSDK_MAXVER=0x06000000
- else
- # Assume the Server 2003 Platform SDK
- MOZ_WINSDK_MAXVER=0x05020000
- fi
- fi
- unset _MSVC_VER_FILTER
- else
- # Check w32api version
- _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
- _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
- AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
- AC_TRY_COMPILE([#include <w32api.h>],
- #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
- (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
- __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
- #error "test failed."
- #endif
- , [ res=yes ], [ res=no ])
- AC_MSG_RESULT([$res])
- if test "$res" != "yes"; then
- AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
- fi
- # Check windres version
- AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
- _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
- AC_MSG_RESULT([$_WINDRES_VERSION])
- _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
- _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
- _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
- WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
- WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
- WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
- if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
- "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
- "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
- "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
- "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
- "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
- then
- AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
- fi
- # Server 2003 is the highest version supported
- MOZ_WINSDK_MAXVER=0x05020000
- fi # !GNU_CC
- AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
- AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
- # Require OS features provided by IE 5.0
- AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
- # If the maximum version supported by this SDK is lower than the target
- # version, error out
- AC_MSG_CHECKING([for Windows SDK being recent enough])
- if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
- AC_MSG_RESULT("yes")
- else
- AC_MSG_RESULT("no")
- AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
- fi
- AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
- # Definitions matching sdkddkver.h
- AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
- AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
- AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
- ;;
- esac
- dnl Test breaks icc on OS/2 && MSVC
- if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
- AC_PROG_CC_C_O
- if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
- USING_HCC=1
- _OLDCC=$CC
- _OLDCXX=$CXX
- CC="${srcdir}/build/hcc '$CC'"
- CXX="${srcdir}/build/hcpp '$CXX'"
- fi
- fi
- AC_PROG_CPP
- AC_PROG_CXXCPP
- if test -n "$_WIN32_MSVC"; then
- SKIP_PATH_CHECKS=1
- SKIP_COMPILER_CHECKS=1
- SKIP_LIBRARY_CHECKS=1
- # Since we're skipping compiler and library checks, hard-code
- # some facts here.
- case "$target" in
- *-wince)
- ;;
- *)
- AC_DEFINE(HAVE_IO_H)
- AC_DEFINE(HAVE_SETBUF)
- AC_DEFINE(HAVE_ISATTY)
- ;;
- esac
- fi
- AC_SUBST(MIDL_FLAGS)
- AC_SUBST(_MSC_VER)
- AC_SUBST(GNU_AS)
- AC_SUBST(GNU_LD)
- AC_SUBST(GNU_CC)
- AC_SUBST(GNU_CXX)
- AC_SUBST(INTEL_CC)
- AC_SUBST(INTEL_CXX)
- dnl ========================================================
- dnl Checks for programs.
- dnl ========================================================
- AC_PROG_INSTALL
- AC_PROG_LN_S
- if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
- AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
- _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
- _perl_res=$?
- AC_MSG_RESULT([$_perl_version])
- if test "$_perl_res" != 0; then
- AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
- fi
- fi
- AC_MSG_CHECKING([for full perl installation])
- _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
- _perl_res=$?
- if test "$_perl_res" != 0; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
- else
- AC_MSG_RESULT([yes])
- fi
- MOZ_PATH_PROGS(PYTHON, $PYTHON python2.5 python2.4 python)
- if test -z "$PYTHON"; then
- AC_MSG_ERROR([python was not found in \$PATH])
- fi
- NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
- AC_SUBST(NSINSTALL_BIN)
- MOZ_PATH_PROG(DOXYGEN, doxygen, :)
- MOZ_PATH_PROG(WHOAMI, whoami, :)
- MOZ_PATH_PROG(AUTOCONF, autoconf, :)
- MOZ_PATH_PROG(UNZIP, unzip, :)
- MOZ_PATH_PROGS(ZIP, zip)
- if test -z "$ZIP" || test "$ZIP" = ":"; then
- AC_MSG_ERROR([zip not found in \$PATH])
- fi
- MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
- MOZ_PATH_PROG(XARGS, xargs)
- if test -z "$XARGS" || test "$XARGS" = ":"; then
- AC_MSG_ERROR([xargs not found in \$PATH .])
- fi
- dnl ========================================================
- dnl = Mac OS X toolchain support
- dnl ========================================================
- case "$target_os" in
- darwin*)
- dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
- dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
- dnl the environment and includedir purposes (when using an SDK, below),
- dnl but remember the full version number for the libdir (SDK).
- changequote(,)
- GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
- GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
- changequote([,])
- if test "$GCC_VERSION_FULL" = "4.0.0" ; then
- dnl Bug 280479, but this keeps popping up in bug 292530 too because
- dnl 4.0.0/4061 is the default compiler in Tiger.
- changequote(,)
- GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
- changequote([,])
- if test "$GCC_BUILD" = "4061" ; then
- AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
- This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
- from building Mozilla. Upgrade to Xcode 2.1 or later.])
- fi
- fi
- dnl xcodebuild needs GCC_VERSION defined in the environment, since it
- dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
- dnl /usr/bin/g(cc|++)-$GCC_VERSION.
- MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
- case "$PBBUILD" in
- *xcodebuild*)
- changequote(,)
- XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
- changequote([,])
- if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
- HAS_XCODE_2_1=1;
- fi
- ;;
- esac
- dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
- dnl it has moved into /usr/bin.
- MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
- ;;
- esac
- AC_SUBST(GCC_VERSION)
- AC_SUBST(XCODEBUILD_VERSION)
- AC_SUBST(HAS_XCODE_2_1)
- dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
- dnl that a universal binary is being produced.
- AC_SUBST(UNIVERSAL_BINARY)
- dnl ========================================================
- dnl Check for MacOS deployment target version
- dnl ========================================================
- MOZ_ARG_ENABLE_STRING(macos-target,
- [ --enable-macos-target=VER (default=10.4)
- Set the minimum MacOS version needed at runtime],
- [_MACOSX_DEPLOYMENT_TARGET=$enableval])
- case "$target" in
- *-darwin*)
- if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
- dnl Use the specified value
- export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
- AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
- elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
- dnl No value specified on the command line or in the environment,
- dnl use architecture minimum.
- case "${target_cpu}" in
- x86_64)
- export MACOSX_DEPLOYMENT_TARGET=10.5
- ;;
- *)
- export MACOSX_DEPLOYMENT_TARGET=10.4
- ;;
- esac
- fi
- ;;
- esac
- AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
- dnl ========================================================
- dnl = Mac OS X SDK support
- dnl ========================================================
- MACOS_SDK_DIR=
- NEXT_ROOT=
- MOZ_ARG_WITH_STRING(macos-sdk,
- [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
- MACOS_SDK_DIR=$withval)
- dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
- dnl NEXT_ROOT will be set and exported only if it's needed.
- AC_SUBST(MACOS_SDK_DIR)
- AC_SUBST(NEXT_ROOT)
- if test "$MACOS_SDK_DIR"; then
- dnl Sync this section with the ones in NSPR and NSS.
- if test ! -d "$MACOS_SDK_DIR"; then
- AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
- specify a valid SDK. SDKs are installed when the optional cross-development
- tools are selected during the Xcode/Developer Tools installation.])
- fi
- GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
- if test "$GCC_VERSION_MAJOR" -lt "4" ; then
- SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
- if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
- SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
- fi
- SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
- CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
- CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
- dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
- CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
- CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
- dnl ld support for -syslibroot is compiler-agnostic, but only available
- dnl on Tiger. Although it's possible to switch on the build host's
- dnl OS release to use ld -syslibroot when available, ld -syslibroot will
- dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
- dnl set because both the compiler and linker use it.
- LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
- export NEXT_ROOT=$MACOS_SDK_DIR
- if test -n "$CROSS_COMPILE" ; then
- dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
- dnl the build host. HOST_CXX is presently unused.
- HOST_CC="NEXT_ROOT= $HOST_CC"
- HOST_CXX="NEXT_ROOT= $HOST_CXX"
- fi
- else
- dnl gcc >= 4.0 uses different paths than above, but knows how to find
- dnl them itself.
- CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
- CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
- dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
- CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
- CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
- if test "$GCC_VERSION_FULL" = "4.0.0" ; then
- dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
- dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
- dnl be ignored and cause warnings when -syslibroot is specified.
- dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
- dnl the -isysroot it receives, so this is only needed with 4.0.0.
- LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
- fi
- fi
- AC_LANG_SAVE
- AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <new>
- int main() { return 0; }],
- result=yes,
- result=no)
- AC_LANG_RESTORE
- AC_MSG_RESULT($result)
- if test "$result" = "no" ; then
- AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
- fi
- fi
- dnl Be sure the make we use is GNU make.
- dnl on win32, gmake.exe is the generally the wrong version
- if test -n "$MAKE"; then
- if test `echo $MAKE | grep -c make.py` != 1; then
- NOT_PYMAKE=$MAKE
- fi
- fi
- case "$host_os" in
- cygwin*|mingw*|mks*|msvc*)
- MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
- ;;
- *)
- MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
- ;;
- esac
- if test "$GMAKE" = ":"; then
- AC_MSG_ERROR([GNU make not found])
- fi
- AC_SUBST(GMAKE)
- AC_PATH_XTRA
- dnl ========================================================
- dnl set the defaults first
- dnl ========================================================
- AS_BIN=$AS
- AR_FLAGS='cr $@'
- AR_LIST='$(AR) t'
- AR_EXTRACT='$(AR) x'
- AR_DELETE='$(AR) d'
- AS='$(CC)'
- AS_DASH_C_FLAG='-c'
- DLL_PREFIX=lib
- LIB_PREFIX=lib
- DLL_SUFFIX=.so
- OBJ_SUFFIX=o
- LIB_SUFFIX=a
- ASM_SUFFIX=s
- IMPORT_LIB_SUFFIX=
- TARGET_MD_ARCH=unix
- DIRENT_INO=d_ino
- WIN_TOP_SRC=
- MOZ_USER_DIR=".mozilla"
- HOST_AR='$(AR)'
- HOST_AR_FLAGS='$(AR_FLAGS)'
- if test -n "$CROSS_COMPILE"; then
- OS_TARGET="${target_os}"
- OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
- OS_RELEASE=
- case "${target_os}" in
- linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
- kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
- solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
- mingw*) OS_ARCH=WINNT ;;
- wince*) OS_ARCH=WINCE ;;
- darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
- esac
- else
- OS_TARGET=`uname -s`
- OS_ARCH=`uname -s | sed -e 's|/|_|g'`
- OS_RELEASE=`uname -r`
- fi
- # Before this used `uname -m` when not cross compiling
- # but that breaks when you have a 64 bit kernel with a 32 bit userland.
- OS_TEST="${target_cpu}"
- _COMPILER_PREFIX=
- HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
- MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
- MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
- if test "$OS_ARCH" = "Darwin"; then
- DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/bin/XUL -L$(LIBXUL_DIST)/bin -lxpcom_core -lmozalloc'
- XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/bin -lmozalloc'
- LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
- else
- DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxul -lxpcom_core -lmozalloc'
- XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxul -L$(LIBXUL_DIST)/bin -lmozalloc'
- LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
- fi
- XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
- XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
- MOZ_FS_LAYOUT=unix
- MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
- USE_DEPENDENT_LIBS=1
- #######################################################################
- # Master "Core Components" macros for getting the OS target #
- #######################################################################
- #
- # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
- # cross-compilation.
- #
- #
- # Define and override various archtecture-specific variables, including
- # HOST_OS_ARCH
- # OS_ARCH
- # OS_TEST
- # OS_TARGET
- # OS_RELEASE
- # OS_MINOR_RELEASE
- #
- case "$HOST_OS_ARCH" in
- cygwin*|mingw*|mks*|msvc*)
- HOST_OS_ARCH=WINNT
- ;;
- linux*)
- HOST_OS_ARCH=Linux
- ;;
- solaris*)
- HOST_OS_ARCH=SunOS
- SOLARIS_SUNPRO_CC=
- SOLARIS_SUNPRO_CXX=
- if test -z "$GNU_CC"; then
- if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
- SOLARIS_SUNPRO_CC=1
- fi
- fi
- if test -z "$GNU_CXX"; then
- if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
- SOLARIS_SUNPRO_CXX=1
- fi
- fi
- AC_SUBST(SOLARIS_SUNPRO_CC)
- AC_SUBST(SOLARIS_SUNPRO_CXX)
- ;;
- BSD_386)
- HOST_OS_ARCH=BSD
- ;;
- dgux)
- HOST_OS_ARCH=DGUX
- ;;
- IRIX64)
- HOST_OS_ARCH=IRIX
- ;;
- UNIX_SV)
- if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
- HOST_OS_ARCH=NCR
- else
- HOST_OS_ARCH=UNIXWARE
- fi
- ;;
- ncr)
- HOST_OS_ARCH=NCR
- ;;
- UNIX_SYSTEM_V)
- HOST_OS_ARCH=NEC
- ;;
- OSF1)
- ;;
- *OpenVMS*)
- HOST_OS_ARCH=OpenVMS
- ;;
- OS_2)
- HOST_OS_ARCH=OS2
- ;;
- QNX)
- ;;
- SCO_SV)
- HOST_OS_ARCH=SCOOS
- ;;
- SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
- HOST_OS_ARCH=SINIX
- ;;
- UnixWare)
- HOST_OS_ARCH=UNIXWARE
- ;;
- esac
- case "$OS_ARCH" in
- WINNT)
- OS_TEST=`uname -p`
- ;;
- Windows_NT)
- #
- # If uname -s returns "Windows_NT", we assume that we are using
- # the uname.exe in MKS toolkit.
- #
- # The -r option of MKS uname only returns the major version number.
- # So we need to use its -v option to get the minor version number.
- # Moreover, it doesn't have the -p option, so we need to use uname -m.
- #
- OS_ARCH=WINNT
- OS_TARGET=WINNT
- OS_MINOR_RELEASE=`uname -v`
- if test "$OS_MINOR_RELEASE" = "00"; then
- OS_MINOR_RELEASE=0
- fi
- OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
- ;;
- CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
- #
- # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
- # the uname.exe in the Cygwin tools.
- # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
- # If uname -s returns "CYGWIN32/NT", we assume that we are using
- # the uname.exe in the GNU-Win32 tools.
- # If uname -s returns MINGW32_NT-5.1, we assume that we are using
- # the uname.exe in the MSYS tools.
- #
- OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
- OS_ARCH=WINNT
- OS_TARGET=WINNT
- ;;
- AIX)
- OS_RELEASE=`uname -v`.`uname -r`
- OS_TEST=${target_cpu}
- ;;
- BSD_386)
- OS_ARCH=BSD
- ;;
- dgux)
- OS_ARCH=DGUX
- ;;
- IRIX64)
- OS_ARCH=IRIX
- ;;
- UNIX_SV)
- if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
- OS_ARCH=NCR
- else
- OS_ARCH=UNIXWARE
- OS_RELEASE=`uname -v`
- fi
- ;;
- ncr)
- OS_ARCH=NCR
- ;;
- UNIX_SYSTEM_V)
- OS_ARCH=NEC
- ;;
- OSF1)
- case `uname -v` in
- 148)
- OS_RELEASE=V3.2C
- ;;
- 564)
- OS_RELEASE=V4.0B
- ;;
- 878)
- OS_RELEASE=V4.0D
- ;;
- esac
- ;;
- *OpenVMS*)
- OS_ARCH=OpenVMS
- OS_RELEASE=`uname -v`
- OS_TEST=`uname -p`
- ;;
- OS_2)
- OS_ARCH=OS2
- OS_TARGET=OS2
- OS_RELEASE=`uname -v`
- ;;
- QNX)
- if test "$OS_TARGET" != "NTO"; then
- changequote(,)
- OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
- changequote([,])
- fi
- OS_TEST=x86
- ;;
- SCO_SV)
- OS_ARCH=SCOOS
- OS_RELEASE=5.0
- ;;
- SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
- OS_ARCH=SINIX
- OS_TEST=`uname -p`
- ;;
- UnixWare)
- OS_ARCH=UNIXWARE
- OS_RELEASE=`uname -v`
- ;;
- WINCE)
- OS_ARCH=WINCE
- OS_TARGET=WINCE
- ;;
- Darwin)
- case "${target_cpu}" in
- powerpc*)
- OS_TEST=ppc
- ;;
- i*86*)
- OS_TEST=i386
- ;;
- x86_64)
- OS_TEST=x86_64
- ;;
- *)
- if test -z "$CROSS_COMPILE" ; then
- OS_TEST=`uname -p`
- fi
- ;;
- esac
- ;;
- esac
- if test "$OS_ARCH" = "NCR"; then
- changequote(,)
- OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
- changequote([,])
- fi
- # Only set CPU_ARCH if we recognize the value of OS_TEST
- case "$OS_TEST" in
- *86 | i86pc)
- CPU_ARCH=x86
- ;;
- powerpc* | ppc | rs6000)
- CPU_ARCH=ppc
- ;;
- Alpha | alpha | ALPHA)
- CPU_ARCH=Alpha
- ;;
- hppa* | parisc)
- CPU_ARCH=hppa
- ;;
- sun4u | sparc*)
- CPU_ARCH=sparc
- ;;
- x86_64 | ia64)
- CPU_ARCH="$OS_TEST"
- ;;
- arm)
- if test "$OS_TARGET" == "WINCE"; then
- CPU_ARCH="$OS_TEST"
- fi
- ;;
- esac
- if test -z "$OS_TARGET"; then
- OS_TARGET=$OS_ARCH
- fi
- OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
- dnl ========================================================
- dnl GNU specific defaults
- dnl ========================================================
- if test "$GNU_CC"; then
- # FIXME: Let us build with strict aliasing. bug 414641.
- CFLAGS="$CFLAGS -fno-strict-aliasing"
- CXXFLAGS="$CXXFLAGS -fno-exceptions"
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
- DSO_LDOPTS='-shared'
- if test "$GCC_USE_GNU_LD"; then
- # Don't allow undefined symbols in libraries
- DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
- fi
- WARNINGS_AS_ERRORS='-Werror'
- DSO_CFLAGS=''
- DSO_PIC_CFLAGS='-fPIC'
- ASFLAGS="$ASFLAGS -fPIC"
- _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
- _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
- # Turn on GNU specific features
- # -Wall - turn on all warnings
- # -pedantic - make compiler warn about non-ANSI stuff, and
- # be a little bit stricter
- # Warnings slamm took out for now (these were giving more noise than help):
- # -Wbad-function-cast - warns when casting a function to a new return type
- # -Wshadow - removed because it generates more noise than help --pete
- _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
- if test -z "$INTEL_CC"; then
- # Don't use -Wcast-align with ICC
- case "$CPU_ARCH" in
- # And don't use it on hppa, ia64, sparc, since it's noisy there
- hppa | ia64 | sparc)
- ;;
- *)
- _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
- ;;
- esac
- fi
- dnl Turn pedantic on but disable the warnings for long long
- _PEDANTIC=1
- if test -z "$INTEL_CC"; then
- _IGNORE_LONG_LONG_WARNINGS=1
- _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
- else
- _IGNORE_LONG_LONG_WARNINGS=
- fi
- _DEFINES_CFLAGS='-include $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT'
- _USE_CPP_INCLUDE_FLAG=1
- elif test "$SOLARIS_SUNPRO_CC"; then
- MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
- MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
- DSO_LDOPTS='-shared'
- if test "$GNU_LD"; then
- # Don't allow undefined symbols in libraries
- DSO_LDOPTS="$DSO_LDOPTS -z defs"
- fi
- DSO_CFLAGS=''
- if test "$CPU_ARCH" = "sparc"; then
- # for Sun Studio on Solaris/SPARC
- DSO_PIC_CFLAGS='-xcode=pic32'
- else
- DSO_PIC_CFLAGS='-KPIC'
- fi
- _DEFINES_CFLAGS='$(ACDEFINES) -FI $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT'
- else
- MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
- MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
- DSO_LDOPTS='-shared'
- if test "$GNU_LD"; then
- # Don't allow undefined symbols in libraries
- DSO_LDOPTS="$DSO_LDOPTS -z defs"
- fi
- DSO_CFLAGS=''
- DSO_PIC_CFLAGS='-KPIC'
- _DEFINES_CFLAGS='$(ACDEFINES) -FI $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT'
- fi
- if test "$GNU_CXX"; then
- # FIXME: Let us build with strict aliasing. bug 414641.
- CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
- # Turn on GNU specific features
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
- if test -z "$INTEL_CC"; then
- # Don't use -Wcast-align with ICC
- case "$CPU_ARCH" in
- # And don't use it on hppa, ia64, sparc, since it's noisy there
- hppa | ia64 | sparc)
- ;;
- *)
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
- ;;
- esac
- fi
- _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(LIBXUL_DIST)/include/mozilla-config.h'
- _USE_CPP_INCLUDE_FLAG=1
- AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
- ac_has_wno_invalid_offsetof,
- [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- _SAVE_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
- AC_TRY_COMPILE([],
- [return(0);],
- ac_has_wno_invalid_offsetof="yes",
- ac_has_wno_invalid_offsetof="no")
- CXXFLAGS="$_SAVE_CXXFLAGS"
- AC_LANG_RESTORE
- ])
- if test "$ac_has_wno_invalid_offsetof" = "yes"; then
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
- fi
- else
- _DEFINES_CXXFLAGS='-FI $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT $(ACDEFINES)'
- fi
- dnl gcc can come with its own linker so it is better to use the pass-thru calls
- dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
- dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
- dnl normal behavior.
- dnl ========================================================
- MKSHLIB_FORCE_ALL=
- MKSHLIB_UNFORCE_ALL=
- if test "$GNU_CC"; then
- AC_MSG_CHECKING(whether ld has archive extraction flags)
- AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
- [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
- ac_cv_mkshlib_force_and_unforce="no"
- exec 3<&0 <<LOOP_INPUT
- force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
- force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
- force="-Wl,-all"; unforce="-Wl,-none"
- LOOP_INPUT
- while read line
- do
- eval $line
- LDFLAGS=$force
- LIBS=$unforce
- AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
- done
- exec 0<&3 3<&-
- LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
- ])
- if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
- AC_MSG_RESULT(no)
- else
- AC_MSG_RESULT(yes)
- eval $ac_cv_mkshlib_force_and_unforce
- MKSHLIB_FORCE_ALL=$force
- MKSHLIB_UNFORCE_ALL=$unforce
- fi
- fi # GNU_CC
- dnl =================================================================
- dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
- dnl which is bad when cross compiling.
- dnl =================================================================
- configure_static_assert_macros='
- #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
- #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
- #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
- '
- dnl test that the macros actually work:
- AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
- AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
- [AC_LANG_SAVE
- AC_LANG_C
- ac_cv_static_assertion_macros_work="yes"
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
- if test "$ac_cv_static_assertion_macros_work" = "no"; then
- AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
- fi
- dnl ========================================================
- dnl Checking for 64-bit OS
- dnl ========================================================
- AC_LANG_SAVE
- AC_LANG_C
- AC_MSG_CHECKING(for 64-bit OS)
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
- result="yes", result="no")
- AC_MSG_RESULT("$result")
- if test "$result" = "yes"; then
- AC_DEFINE(HAVE_64BIT_OS)
- HAVE_64BIT_OS=1
- fi
- AC_SUBST(HAVE_64BIT_OS)
- AC_LANG_RESTORE
- dnl ========================================================
- dnl Enable high-memory support on OS/2 by default.
- dnl ========================================================
- MOZ_OS2_HIGH_MEMORY=1
- MOZ_ARG_DISABLE_BOOL(os2-high-mem,
- [ --disable-os2-high-mem Disable high-memory support on OS/2],
- MOZ_OS2_HIGH_MEMORY=,
- MOZ_OS2_HIGH_MEMORY=1 )
- AC_SUBST(MOZ_OS2_HIGH_MEMORY)
- dnl ========================================================
- dnl System overrides of the defaults for host
- dnl ========================================================
- case "$host" in
- *-beos*)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
- HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
- ;;
- *cygwin*|*mingw*|*mks*|*msvc*|*wince)
- # we need Python 2.5 on Windows
- PYTHON_VERSION=2.5
- if test -n "$_WIN32_MSVC"; then
- HOST_AR=lib
- HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
- HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
- HOST_RANLIB='echo ranlib'
- else
- HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
- fi
- HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
- HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
- HOST_BIN_SUFFIX=.exe
- case "$host" in
- *cygwin*)
- AC_MSG_ERROR([Building on cygwin is no longer supported, use MozillaBuild (MSYS)])
- ;;
- esac
- ;;
- *-darwin*)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
- HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
- MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
- ;;
- *-linux*|*-kfreebsd*-gnu)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
- HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
- ;;
- *os2*)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
- HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
- HOST_BIN_SUFFIX=.exe
- MOZ_FIX_LINK_PATHS=
- ;;
- *-osf*)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
- HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
- ;;
- *)
- HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
- ;;
- esac
- dnl We require version 2.4 or newer of Python to build,
- dnl and 2.5 or newer on Windows.
- AC_MSG_CHECKING([for minimum required Python version >= $PYTHON_VERSION])
- changequote(,)
- $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1])" $PYTHON_VERSION
- _python_res=$?
- changequote([,])
- if test "$_python_res" != 0; then
- AC_MSG_ERROR([Python $PYTHON_VERSION or higher is required.])
- fi
- AC_MSG_RESULT([yes])
- dnl ========================================================
- dnl System overrides of the defaults for target
- dnl ========================================================
- case "$target" in
- *-aix*)
- AC_DEFINE(AIX)
- if test ! "$GNU_CC"; then
- if test ! "$HAVE_64BIT_OS"; then
- # Compiling with Visual Age C++ object model compat is the
- # default. To compile with object model ibm, add
- # AIX_OBJMODEL=ibm to .mozconfig.
- if test "$AIX_OBJMODEL" = "ibm"; then
- CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
- else
- AIX_OBJMODEL=compat
- fi
- else
- AIX_OBJMODEL=compat
- fi
- AC_SUBST(AIX_OBJMODEL)
- DSO_LDOPTS='-qmkshrobj=1'
- DSO_CFLAGS='-qflag=w:w'
- DSO_PIC_CFLAGS=
- LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
- AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
- MOZ_FIX_LINK_PATHS=
- MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
- AC_TRY_COMPILE([],
- [#if (__IBMCPP__ < 600)
- #error "Bad compiler"
- #endif],
- _BAD_COMPILER=,_BAD_COMPILER=1)
- if test -n "$_BAD_COMPILER"; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
- else
- AC_MSG_RESULT([yes])
- fi
- AC_LANG_RESTORE
- TARGET_COMPILER_ABI="ibmc"
- CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
- CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
- fi
- case "${target_os}" in
- aix4.1*)
- DLL_SUFFIX='_shr.a'
- ;;
- esac
- AC_CHECK_HEADERS(sys/inttypes.h)
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- ;;
- *-beos*)
- no_x=yes
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
- DSO_LDOPTS='-nostart'
- TK_LIBS='-lbe -lroot'
- LIBS="$LIBS -lbe"
- AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
- AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
- _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
- _MOZ_USE_RTTI=1
- USE_DEPENDENT_LIBS=
- MOZ_USER_DIR="Mozilla"
- ;;
- *-bsdi*)
- dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
- _PEDANTIC=
- _IGNORE_LONG_LONG_WARNINGS=
- case $OS_RELEASE in
- 4.*|5.*)
- STRIP="$STRIP -d"
- ;;
- *)
- DSO_CFLAGS=''
- DSO_LDOPTS='-r'
- _WARNINGS_CFLAGS="-Wall"
- _WARNINGS_CXXFLAGS="-Wall"
- # The test above doesn't work properly, at least on 3.1.
- MKSHLIB_FORCE_ALL=''
- MKSHLIB_UNFORCE_ALL=''
- ;;
- esac
- ;;
- *-darwin*)
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MOZ_OPTIMIZE_FLAGS="-O3"
- _PEDANTIC=
- CFLAGS="$CFLAGS -fpascal-strings -fno-common"
- CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
- DLL_SUFFIX=".dylib"
- DSO_LDOPTS=''
- STRIP="$STRIP -x -S"
- MOZ_ENABLE_POSTSCRIPT=
- TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
- # The ExceptionHandling framework is needed for Objective-C exception
- # logging code in nsObjCExceptions.h. Currently we only use that in debug
- # builds.
- MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
- dnl DTrace and -dead_strip don't interact well. See bug 403132.
- dnl ===================================================================
- if test "x$enable_dtrace" = "xyes"; then
- echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
- else
- dnl check for the presence of the -dead_strip linker flag
- AC_MSG_CHECKING([for -dead_strip option to ld])
- _SAVE_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -Wl,-dead_strip"
- AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
- if test -n "$_HAVE_DEAD_STRIP" ; then
- AC_MSG_RESULT([yes])
- MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
- else
- AC_MSG_RESULT([no])
- fi
-
- LDFLAGS=$_SAVE_LDFLAGS
- fi
- ;;
- *-freebsd*)
- if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
- DLL_SUFFIX=".so.1.0"
- DSO_LDOPTS="-shared"
- fi
- if test ! "$GNU_CC"; then
- DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
- fi
- # Can't have force w/o an unforce.
- # # Hack for FreeBSD 2.2
- # if test -z "$MKSHLIB_FORCE_ALL"; then
- # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
- # MKSHLIB_UNFORCE_ALL=''
- # fi
- ;;
- *-hpux*)
- DLL_SUFFIX=".sl"
- if test ! "$GNU_CC"; then
- DSO_LDOPTS='-b -Wl,+s'
- DSO_CFLAGS=""
- DSO_PIC_CFLAGS="+Z"
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
- MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
- CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
- else
- DSO_LDOPTS='-b -E +s'
- MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
- MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
- fi
- MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- ;;
- *-irix5*)
- AC_DEFINE(IRIX)
- DSO_LDOPTS='-elf -shared'
- if test "$GNU_CC"; then
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MKSHLIB_FORCE_ALL='-Wl,-all'
- MKSHLIB_UNFORCE_ALL='-Wl,-none'
- CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
- else
- MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
- MKSHLIB_FORCE_ALL='-all'
- MKSHLIB_UNFORCE_ALL='-none'
- fi
- ;;
- *-irix6*)
- AC_DEFINE(IRIX)
- dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
- dnl compile and link using -n32
- USE_N32=1
- TARGET_COMPILER_ABI=n32
- DSO_LDOPTS='-elf -shared'
- MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- if test "$GNU_CC"; then
- MKSHLIB_FORCE_ALL='-Wl,-all'
- MKSHLIB_UNFORCE_ALL='-Wl,-none'
- _WARNINGS_CFLAGS="-Wall"
- _WARNINGS_CXXFLAGS="-Wall"
- CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
- else
- MKSHLIB_FORCE_ALL='-all'
- MKSHLIB_UNFORCE_ALL='-none'
- AR_LIST="$AR t"
- AR_EXTRACT="$AR x"
- AR_DELETE="$AR d"
- AR='$(CXX) -ar'
- AR_FLAGS='-o $@'
- CFLAGS="$CFLAGS -woff 3262 -G 4"
- CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
- if test -n "$USE_N32"; then
- ASFLAGS="$ASFLAGS -n32"
- CFLAGS="$CFLAGS -n32"
- CXXFLAGS="$CXXFLAGS -n32"
- LDFLAGS="$LDFLAGS -n32"
- fi
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
- MOZ_FIX_LINK_PATHS=
- fi
- if test -z "$GNU_CXX"; then
- MIPSPRO_CXX=1
- fi
- ;;
- *-*linux*)
- # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
- # Similarly for GNU_CXX and INTEL_CXX.
- if test "$INTEL_CC" || test "$INTEL_CXX"; then
- # -Os has been broken on Intel's C/C++ compilers for quite a
- # while; Intel recommends against using it.
- MOZ_OPTIMIZE_FLAGS="-O2"
- MOZ_DEBUG_FLAGS="-g -fno-inline"
- elif test "$GNU_CC" || test "$GNU_CXX"; then
- GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
- case $GCC_VERSION in
- 4.1.*|4.2.*)
- # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
- MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
- esac
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
- MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
- # and that combo is not yet good at
- # debugging inlined functions (even
- # when using DWARF2 as the debugging
- # format)
- fi
- TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
- MOZ_MEMORY=1
- case "${target_cpu}" in
- alpha*)
- CFLAGS="$CFLAGS -mieee"
- CXXFLAGS="$CXXFLAGS -mieee"
- ;;
- i*86)
- MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
- ;;
- mips*)
- MOZ_DEBUG_FLAGS="-g" # We want inlining
- ;;
- esac
- ;;
- *-wince*)
- TARGET_COMPILER_ABI=msvc
- MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
- AR_LIST="$AR -list"
- AR_EXTRACT="$AR -extract"
- AR_DELETE="$AR d"
- AR_FLAGS='-OUT:"$@"'
- if test "$AS_BIN"; then
- AS="$AS_BIN"
- fi
- DSO_CFLAGS=
- DSO_PIC_CFLAGS=
- DLL_SUFFIX=.dll
- BIN_SUFFIX='.exe'
- if test -z "$RC"; then
- RC=rc.exe
- fi
- # certain versions of cygwin's makedepend barf on the
- # #include <string> vs -I./dist/include/string issue so don't use it
- SYSTEM_MAKEDEPEND=
- HOST_CC=cl
- HOST_CXX=cl
- HOST_LD=link
- HOST_AR='lib -OUT:$@'
- HOST_RANLIB='echo ranlib'
- HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
-
-
- WARNINGS_AS_ERRORS='-WX'
- MOZ_OPTIMIZE_FLAGS='-Ox'
- AR_FLAGS='-NOLOGO -OUT:"$@"'
- ASM_SUFFIX=asm
- CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
- CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
- DLL_PREFIX=
- DOXYGEN=:
- DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
- DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
- GARBAGE=
- IMPORT_LIB_SUFFIX=lib
- LIBS="$LIBS"
- LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
- LIB_PREFIX=
- LIB_SUFFIX=lib
- MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
- MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
- MKSHLIB_FORCE_ALL=
- MKSHLIB_UNFORCE_ALL=
- MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
- MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
- MOZ_DEBUG_FLAGS='-Zi'
- MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
- MOZ_FIX_LINK_PATHS=
- MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
- OBJ_SUFFIX=obj
- RANLIB='echo not_ranlib'
- STRIP='echo not_strip'
- TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
- UNZIP=unzip
- XARGS=xargs
- XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
- ZIP=zip
- MOZ_TREE_FREETYPE=1
- AC_DEFINE(HAVE_SNPRINTF)
- AC_DEFINE(_WINDOWS)
- AC_DEFINE(_WIN32)
- AC_DEFINE(WIN32)
- AC_DEFINE(XP_WIN)
- AC_DEFINE(XP_WIN32)
- AC_DEFINE(HW_THREADS)
- AC_DEFINE(STDC_HEADERS)
- AC_DEFINE(NEW_H, <new>)
- AC_DEFINE(WIN32_LEAN_AND_MEAN)
- AC_DEFINE(HAVE_LOCALTIME_R)
- TARGET_MD_ARCH=win32
- BIN_SUFFIX='.exe'
- USE_SHORT_LIBNAME=1
- MOZ_ENABLE_POSTSCRIPT=
- MOZ_USER_DIR="Mozilla"
- # Sanity check for WINCE_WINDOWS_MOBILE
- # XXX disabled until we can fix the mobile tinderbox
- ##if test "$WINCE_WINDOWS_MOBILE"; then
- ## AC_CHECK_HEADER(tpcshell.h, [],
- ## AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
- ##fi
- ;;
- *-mingw*|*-cygwin*|*-msvc*|*-mks*)
- DSO_CFLAGS=
- DSO_PIC_CFLAGS=
- DLL_SUFFIX=.dll
- RC=rc.exe
- # certain versions of cygwin's makedepend barf on the
- # #include <string> vs -I./dist/include/string issue so don't use it
- SYSTEM_MAKEDEPEND=
- if test -n "$GNU_CC"; then
- CC="$CC -mno-cygwin"
- CXX="$CXX -mno-cygwin"
- CPP="$CPP -mno-cygwin"
- CFLAGS="$CFLAGS -mms-bitfields"
- CXXFLAGS="$CXXFLAGS -mms-bitfields"
- DSO_LDOPTS='-shared'
- MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
- RC='$(WINDRES)'
- # Use temp file for windres (bug 213281)
- RCFLAGS='-O coff --use-temp-file'
- # mingw doesn't require kernel32, user32, and advapi32 explicitly
- LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
- MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
- MOZ_FIX_LINK_PATHS=
- DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxul -lxpcom_core -lmozalloc'
- XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxul -L$(LIBXUL_DIST)/lib -lmozalloc'
- DLL_PREFIX=
- IMPORT_LIB_SUFFIX=dll.a
- else
- TARGET_COMPILER_ABI=msvc
- HOST_CC='$(CC)'
- HOST_CXX='$(CXX)'
- HOST_LD='$(LD)'
- AR='lib -NOLOGO -OUT:"$@"'
- AR_FLAGS=
- RANLIB='echo not_ranlib'
- STRIP='echo not_strip'
- XARGS=xargs
- ZIP=zip
- UNZIP=unzip
- DOXYGEN=:
- GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
- OBJ_SUFFIX=obj
- LIB_SUFFIX=lib
- DLL_PREFIX=
- LIB_PREFIX=
- IMPORT_LIB_SUFFIX=lib
- MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
- MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
- MKSHLIB_FORCE_ALL=
- MKSHLIB_UNFORCE_ALL=
- DSO_LDOPTS='-SUBSYSTEM:WINDOWS -DEBUG'
- CFLAGS="$CFLAGS -Zi -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
- CXXFLAGS="$CXXFLAGS -Zi -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
- LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
- MOZ_DEBUG_FLAGS='-Zi'
- MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
- WARNINGS_AS_ERRORS='-WX'
- MOZ_OPTIMIZE_FLAGS='-O1'
- MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
- MOZ_FIX_LINK_PATHS=
- DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
- XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
- LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
- MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
- if test $_MSC_VER -ge 1400; then
- LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
- dnl For profile-guided optimization
- PROFILE_GEN_CFLAGS="-GL"
- PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
- dnl XXX: PGO builds can fail with warnings treated as errors,
- dnl specifically "no profile data available" appears to be
- dnl treated as an error sometimes. This might be a consequence
- dnl of using WARNINGS_AS_ERRORS in some modules, combined
- dnl with the linker doing most of the work in the whole-program
- dnl optimization/PGO case. I think it's probably a compiler bug,
- dnl but we work around it here.
- PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
- dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
- dnl Probably also a compiler bug, but what can you do?
- PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
- if test -n "$_USE_DYNAMICBASE"; then
- LDFLAGS="$LDFLAGS -DYNAMICBASE"
- fi
- fi
- fi
- AC_DEFINE(HAVE_SNPRINTF)
- AC_DEFINE(_WINDOWS)
- AC_DEFINE(_WIN32)
- AC_DEFINE(WIN32)
- AC_DEFINE(XP_WIN)
- AC_DEFINE(XP_WIN32)
- AC_DEFINE(HW_THREADS)
- AC_DEFINE(STDC_HEADERS)
- AC_DEFINE(NEW_H, <new>)
- AC_DEFINE(WIN32_LEAN_AND_MEAN)
- TARGET_MD_ARCH=win32
- BIN_SUFFIX='.exe'
- USE_SHORT_LIBNAME=1
- MOZ_ENABLE_POSTSCRIPT=
- MOZ_USER_DIR="Mozilla"
- dnl Hardcode to win95 for now - cls
- TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
- dnl set NO_X11 defines here as the general check is skipped on win32
- no_x=yes
- AC_DEFINE(NO_X11)
- dnl MinGW/MSYS doesn't provide or need cygpath
- case "$host" in
- *-mingw*)
- CYGPATH_W=echo
- CYGPATH_S=cat
- MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
- ;;
- *-cygwin*|*-msvc*|*-mks*)
- CYGPATH_W="cygpath -a -w"
- CYGPATH_S="sed -e s|\\\\|/|g"
- MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
- ;;
- esac
- case "$host" in
- *-mingw*|*-cygwin*|*-msvc*|*-mks*)
- if test -z "$MOZ_TOOLS"; then
- AC_MSG_ERROR([MOZ_TOOLS is not set])
- fi
- MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
- if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
- AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
- fi
- MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
- if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
- AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
- fi
- MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
- ;;
- *) # else cross-compiling
- ;;
- esac
- case "$host_os" in
- cygwin*|msvc*|mks*)
- AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
- ;;
- *)
- AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_CHECK_HEADERS(atlbase.h wpcapi.h)
- AC_LANG_RESTORE
- ;;
- esac
- case "$target" in
- i*86-*)
- AC_DEFINE(_X86_)
- ;;
- alpha-*)
- AC_DEFINE(_ALPHA_)
- ;;
- mips-*)
- AC_DEFINE(_MIPS_)
- ;;
- *)
- AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
- ;;
- esac
- ;;
- *-netbsd*)
- DSO_CFLAGS=''
- CFLAGS="$CFLAGS -Dunix"
- CXXFLAGS="$CXXFLAGS -Dunix"
- if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
- DLL_SUFFIX=".so"
- DSO_PIC_CFLAGS='-fPIC -DPIC'
- DSO_LDOPTS='-shared'
- BIN_FLAGS='-Wl,--export-dynamic'
- else
- DSO_PIC_CFLAGS='-fPIC -DPIC'
- DLL_SUFFIX=".so.1.0"
- DSO_LDOPTS='-shared'
- fi
- # This will fail on a.out systems prior to 1.5.1_ALPHA.
- MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
- MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
- if test "$LIBRUNPATH"; then
- DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
- fi
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
- ;;
- *-nto*)
- AC_DEFINE(NTO)
- AC_DEFINE(_QNX_SOURCE)
- AC_DEFINE(_i386)
- OS_TARGET=NTO
- WARNINGS_AS_ERRORS=''
- MOZ_OPTIMIZE_FLAGS="-O"
- MOZ_DEBUG_FLAGS="-gstabs"
- _PEDANTIC=
- LIBS="$LIBS -lsocket -lstdc++"
- _DEFINES_CFLAGS='-Wp,-include -Wp,$(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
- _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(LIBXUL_DIST)/include/mozilla-config.h -D_POSIX_C_SOURCE=199506'
- if test "$with_x" != "yes"
- then
- TK_CFLAGS='-I/usr/include/photon'
- TK_LIBS='-lph'
- fi
- case "${target_cpu}" in
- ppc*)
- AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
- ;;
- esac
- case "${host_cpu}" in
- i*86)
- USE_ELF_DYNSTR_GC=1
- ;;
- esac
- ;;
- *-openbsd*)
- DLL_SUFFIX=".so.1.0"
- DSO_CFLAGS=''
- DSO_PIC_CFLAGS='-fPIC'
- DSO_LDOPTS='-shared -fPIC'
- if test "$LIBRUNPATH"; then
- DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
- fi
- ;;
- *-openvms*)
- AC_DEFINE(NO_PW_GECOS)
- AC_DEFINE(NO_UDSOCK)
- AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
- MKSHLIB_FORCE_ALL='-all'
- MKSHLIB_UNFORCE_ALL='-none'
- AS='as'
- AS_DASH_C_FLAG='-Wc/names=as_is'
- AR_FLAGS='c $@'
- DSO_LDOPTS='-shared -auto_symvec'
- DSO_PIC_CFLAGS=
- MOZ_DEBUG_LDFLAGS='-g'
- COMPAQ_CXX=1
- CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
- CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
- ;;
- *-os2*)
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- AC_DEFINE(OS2)
- AC_DEFINE(XP_OS2)
- AC_DEFINE(OS2EMX_PLAIN_CHAR)
- AC_DEFINE(TCPV40HDRS)
- USE_SHORT_LIBNAME=1
- DLL_PREFIX=
- LIB_PREFIX=
- LIB_SUFFIX=lib
- BIN_SUFFIX=".exe"
- DLL_SUFFIX=".dll"
- IMPORT_LIB_SUFFIX=lib
- DSO_PIC_CFLAGS=
- AR=emxomfar
- AR_FLAGS='r $@'
- CFLAGS="$CFLAGS -Zomf"
- CXXFLAGS="$CXXFLAGS -Zomf"
- DSO_LDOPTS='-Zdll'
- BIN_FLAGS='-Zlinker /ST:0x100000'
- IMPLIB='emximp -o'
- FILTER='emxexp -o'
- LDFLAGS='-Zmap'
- WARNINGS_AS_ERRORS='-Werror'
- MOZ_DEBUG_FLAGS="-g -fno-inline"
- MOZ_OPTIMIZE_FLAGS="-O2"
- MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
- DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
- LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
- TARGET_MD_ARCH=os2
- MOZ_ENABLE_POSTSCRIPT=
- RC=rc.exe
- RCFLAGS='-n'
- MOZ_USER_DIR="Mozilla"
- if test "$MOZTOOLS"; then
- MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
- else
- AC_MSG_ERROR([MOZTOOLS is not set])
- fi
- if test -n "$MOZ_OS2_HIGH_MEMORY"; then
- DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
- LDFLAGS="$LDFLAGS -Zhigh-mem"
- MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
- AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
- fi
- # GCC for OS/2 currently predefines these, but we don't want them
- _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
- _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
- AC_CACHE_CHECK(for __declspec(dllexport),
- ac_os2_declspec,
- [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
- [return 0;],
- ac_os2_declspec="yes",
- ac_os2_declspec="no")])
- if test "$ac_os2_declspec" = "yes"; then
- FILTER='true'
- MOZ_OS2_USE_DECLSPEC='1'
- fi
- ;;
- alpha*-*-osf*)
- if test "$GNU_CC"; then
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
- else
- MOZ_DEBUG_FLAGS='-g'
- ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
- CFLAGS="$CFLAGS -ieee"
- CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
- DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
- DSO_CFLAGS=
- DSO_PIC_CFLAGS=
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
- MKSHLIB_FORCE_ALL='-all'
- MKSHLIB_UNFORCE_ALL='-none'
- dnl Might fix the libxpcom.so breakage on this platform as well....
- AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- fi
- if test -z "$GNU_CXX"; then
- COMPAQ_CXX=1
- fi
- AC_DEFINE(NEED_USLEEP_PROTOTYPE)
- ;;
- *-qnx*)
- DIRENT_INO=d_stat.st_ino
- dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
- AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
- AC_DEFINE(STDC_HEADERS)
- if test "$no_x" = "yes"; then
- TK_CFLAGS='-I/usr/nto/include/photon'
- TK_LIBS='-lphoton -lphrender'
- fi
- ;;
- *-sco*)
- AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
- if test ! "$GNU_CC"; then
- DSO_LDOPTS='-G'
- fi
- ;;
- dnl the qsort routine under solaris is faulty
- *-solaris*)
- AC_DEFINE(SOLARIS)
- TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
- SYSTEM_MAKEDEPEND=
- # $ORIGIN/.. is for shared libraries under components/ to locate shared
- # libraries one level up (e.g. libnspr4.so)
- LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
- MOZ_MEMORY=1
- if test "$SOLARIS_SUNPRO_CC"; then
- LIBS="-lCrun -lCstd $LIBS"
- NS_USE_NATIVE=1
- MOZ_FIX_LINK_PATHS=
- AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
- CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
- CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
- LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
- if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
- _SAVE_LDFLAGS=$LDFLAGS
- LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
- AC_TRY_LINK([#include <stdio.h>],
- [printf("Hello World\n");],
- ,
- [LDFLAGS=$_SAVE_LDFLAGS])
- fi
- WARNINGS_AS_ERRORS='-Werror'
- MOZ_OPTIMIZE_FLAGS="-xO4"
- MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
- MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
- MKSHLIB_FORCE_ALL='-z allextract'
- MKSHLIB_UNFORCE_ALL='-z defaultextract'
- DSO_LDOPTS='-G -z muldefs'
- AR_LIST="$AR t"
- AR_EXTRACT="$AR x"
- AR_DELETE="$AR d"
- AR='$(CXX) -xar'
- AR_FLAGS='-o $@'
- AS='/usr/ccs/bin/as'
- ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
- AS_DASH_C_FLAG=''
- TARGET_COMPILER_ABI="sunc"
- CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
- CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
- AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([],
- [#if (__SUNPRO_CC < 0x590)
- #error "Denied"
- #endif],
- _BAD_COMPILER=,_BAD_COMPILER=1)
- if test -n "$_BAD_COMPILER"; then
- _res="no"
- AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
- else
- _res="yes"
- fi
- AC_MSG_RESULT([$_res])
- AC_LANG_RESTORE
- else
- ASFLAGS="$ASFLAGS -fPIC"
- DSO_LDOPTS='-G'
- _WARNINGS_CFLAGS=''
- _WARNINGS_CXXFLAGS=''
- if test "$OS_RELEASE" = "5.3"; then
- AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
- fi
- fi
- if test "$OS_RELEASE" = "5.5.1"; then
- AC_DEFINE(NEED_USLEEP_PROTOTYPE)
- fi
- ;;
- *-sunos*)
- DSO_LDOPTS='-Bdynamic'
- MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
- MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
- AC_DEFINE(SUNOS4)
- AC_DEFINE(SPRINTF_RETURNS_STRING)
- case "$(target_os)" in
- sunos4.1*)
- DLL_SUFFIX='.so.1.0'
- ;;
- esac
- ;;
- *-sysv4.2uw7*)
- NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
- ;;
- *-os2*)
- HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
- ;;
- esac
- dnl Only one oddball right now (QNX), but this gives us flexibility
- dnl if any other platforms need to override this in the future.
- AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
- dnl ========================================================
- dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
- dnl by now will not have any way to link most binaries (tests
- dnl as well as viewer, apprunner, etc.), because some symbols
- dnl will be left out of the "composite" .so's by ld as unneeded.
- dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
- dnl they can link in the static libs that provide the missing
- dnl symbols.
- dnl ========================================================
- NO_LD_ARCHIVE_FLAGS=
- if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
- NO_LD_ARCHIVE_FLAGS=1
- fi
- case "$target" in
- *-os2*)
- NO_LD_ARCHIVE_FLAGS=
- ;;
- *-aix4.3*|*-aix5*)
- NO_LD_ARCHIVE_FLAGS=
- ;;
- *-openvms*)
- NO_LD_ARCHIVE_FLAGS=
- ;;
- *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
- if test -z "$GNU_CC"; then
- NO_LD_ARCHIVE_FLAGS=
- fi
- ;;
- esac
- AC_SUBST(NO_LD_ARCHIVE_FLAGS)
- dnl ========================================================
- dnl = Flags to strip unused symbols from .so components
- dnl ========================================================
- case "$target" in
- *-linux*|*-kfreebsd*-gnu)
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
- ;;
- *-solaris*)
- if test -z "$GNU_CC"; then
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
- else
- if test -z "$GCC_USE_GNU_LD"; then
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
- else
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
- fi
- fi
- ;;
- *-nto*)
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
- ;;
- *-darwin*)
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
- ;;
- *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
- if test -n "$GNU_CC"; then
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
- fi
- ;;
- esac
- if test -z "$SKIP_COMPILER_CHECKS"; then
- dnl Checks for typedefs, structures, and compiler characteristics.
- dnl ========================================================
- AC_LANG_C
- AC_HEADER_STDC
- AC_C_CONST
- AC_TYPE_MODE_T
- AC_TYPE_OFF_T
- AC_TYPE_PID_T
- AC_TYPE_SIZE_T
- AC_STRUCT_ST_BLKSIZE
- AC_MSG_CHECKING(for siginfo_t)
- AC_CACHE_VAL(ac_cv_siginfo_t,
- [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
- #include <signal.h>],
- [siginfo_t* info;],
- [ac_cv_siginfo_t=true],
- [ac_cv_siginfo_t=false])])
- if test "$ac_cv_siginfo_t" = true ; then
- AC_DEFINE(HAVE_SIGINFO_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
- dnl ========================================================
- AC_MSG_CHECKING(for int16_t)
- AC_CACHE_VAL(ac_cv_int16_t,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [int16_t foo = 0;],
- [ac_cv_int16_t=true],
- [ac_cv_int16_t=false])])
- if test "$ac_cv_int16_t" = true ; then
- AC_DEFINE(HAVE_INT16_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for int32_t)
- AC_CACHE_VAL(ac_cv_int32_t,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [int32_t foo = 0;],
- [ac_cv_int32_t=true],
- [ac_cv_int32_t=false])])
- if test "$ac_cv_int32_t" = true ; then
- AC_DEFINE(HAVE_INT32_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for int64_t)
- AC_CACHE_VAL(ac_cv_int64_t,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [int64_t foo = 0;],
- [ac_cv_int64_t=true],
- [ac_cv_int64_t=false])])
- if test "$ac_cv_int64_t" = true ; then
- AC_DEFINE(HAVE_INT64_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for int64)
- AC_CACHE_VAL(ac_cv_int64,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [int64 foo = 0;],
- [ac_cv_int64=true],
- [ac_cv_int64=false])])
- if test "$ac_cv_int64" = true ; then
- AC_DEFINE(HAVE_INT64)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for uint)
- AC_CACHE_VAL(ac_cv_uint,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [uint foo = 0;],
- [ac_cv_uint=true],
- [ac_cv_uint=false])])
- if test "$ac_cv_uint" = true ; then
- AC_DEFINE(HAVE_UINT)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for uint_t)
- AC_CACHE_VAL(ac_cv_uint_t,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [uint_t foo = 0;],
- [ac_cv_uint_t=true],
- [ac_cv_uint_t=false])])
- if test "$ac_cv_uint_t" = true ; then
- AC_DEFINE(HAVE_UINT_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for uint16_t)
- AC_CACHE_VAL(ac_cv_uint16_t,
- [AC_TRY_COMPILE([#include <stdio.h>
- #include <sys/types.h>],
- [uint16_t foo = 0;],
- [ac_cv_uint16_t=true],
- [ac_cv_uint16_t=false])])
- if test "$ac_cv_uint16_t" = true ; then
- AC_DEFINE(HAVE_UINT16_T)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
- dnl are defined when compiling C++ but not C. Since the result of this
- dnl test is used only in C++, do it in C++.
- AC_LANG_CPLUSPLUS
- AC_MSG_CHECKING(for uname.domainname)
- AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
- [AC_TRY_COMPILE([#include <sys/utsname.h>],
- [ struct utsname *res; char *domain;
- (void)uname(res); if (res != 0) { domain = res->domainname; } ],
- [ac_cv_have_uname_domainname_field=true],
- [ac_cv_have_uname_domainname_field=false])])
- if test "$ac_cv_have_uname_domainname_field" = "true"; then
- AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_MSG_CHECKING(for uname.__domainname)
- AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
- [AC_TRY_COMPILE([#include <sys/utsname.h>],
- [ struct utsname *res; char *domain;
- (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
- [ac_cv_have_uname_us_domainname_field=true],
- [ac_cv_have_uname_us_domainname_field=false])])
- if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
- AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_LANG_C
- dnl Check for .hidden assembler directive and visibility attribute.
- dnl Borrowed from glibc configure.in
- dnl ===============================================================
- if test "$GNU_CC"; then
- AC_CACHE_CHECK(for visibility(hidden) attribute,
- ac_cv_visibility_hidden,
- [cat > conftest.c <<EOF
- int foo __attribute__ ((visibility ("hidden"))) = 1;
- EOF
- ac_cv_visibility_hidden=no
- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
- if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
- ac_cv_visibility_hidden=yes
- fi
- fi
- rm -f conftest.[cs]
- ])
- if test "$ac_cv_visibility_hidden" = "yes"; then
- AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
- AC_CACHE_CHECK(for visibility(default) attribute,
- ac_cv_visibility_default,
- [cat > conftest.c <<EOF
- int foo __attribute__ ((visibility ("default"))) = 1;
- EOF
- ac_cv_visibility_default=no
- if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
- if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
- ac_cv_visibility_default=yes
- fi
- fi
- rm -f conftest.[cs]
- ])
- if test "$ac_cv_visibility_default" = "yes"; then
- AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
- AC_CACHE_CHECK(for visibility pragma support,
- ac_cv_visibility_pragma,
- [cat > conftest.c <<EOF
- #pragma GCC visibility push(hidden)
- int foo_hidden = 1;
- #pragma GCC visibility push(default)
- int foo_default = 1;
- EOF
- ac_cv_visibility_pragma=no
- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
- if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
- if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
- ac_cv_visibility_pragma=yes
- fi
- fi
- fi
- rm -f conftest.[cs]
- ])
- if test "$ac_cv_visibility_pragma" = "yes"; then
- AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
- ac_cv_have_visibility_class_bug,
- [cat > conftest.c <<EOF
- #pragma GCC visibility push(hidden)
- struct __attribute__ ((visibility ("default"))) TestStruct {
- static void Init();
- };
- __attribute__ ((visibility ("default"))) void TestFunc() {
- TestStruct::Init();
- }
- EOF
- ac_cv_have_visibility_class_bug=no
- if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
- ac_cv_have_visibility_class_bug=yes
- else
- if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
- ac_cv_have_visibility_class_bug=yes
- fi
- fi
- rm -rf conftest.{c,S}
- ])
- AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
- ac_cv_have_visibility_builtin_bug,
- [cat > conftest.c <<EOF
- #pragma GCC visibility push(hidden)
- #pragma GCC visibility push(default)
- #include <string.h>
- #pragma GCC visibility pop
- __attribute__ ((visibility ("default"))) void Func() {
- char c[[100]];
- memset(c, 0, sizeof(c));
- }
- EOF
- ac_cv_have_visibility_builtin_bug=no
- if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
- ac_cv_have_visibility_builtin_bug=yes
- else
- if test `grep -c "@PLT" conftest.S` = 0; then
- ac_cv_visibility_builtin_bug=yes
- fi
- fi
- rm -f conftest.{c,S}
- ])
- if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
- "$ac_cv_have_visibility_class_bug" = "no"; then
- VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
- WRAP_SYSTEM_INCLUDES=1
- else
- VISIBILITY_FLAGS='-fvisibility=hidden'
- fi # have visibility pragma bug
- fi # have visibility pragma
- fi # have visibility(default) attribute
- fi # have visibility(hidden) attribute
- fi # GNU_CC
- # visibility hidden flag for Sun Studio on Solaris
- if test "$SOLARIS_SUNPRO_CC"; then
- VISIBILITY_FLAGS='-xldscope=hidden'
- fi # Sun Studio on Solaris
- AC_SUBST(WRAP_SYSTEM_INCLUDES)
- AC_SUBST(VISIBILITY_FLAGS)
- dnl Checks for header files.
- dnl ========================================================
- AC_HEADER_DIRENT
- case "$target_os" in
- freebsd*)
- # for stuff like -lXshm
- CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
- ;;
- esac
- AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
- AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
- AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
- AC_CHECK_HEADERS(malloc.h)
- AC_CHECK_HEADERS(X11/XKBlib.h)
- AC_CHECK_HEADERS(io.h)
- dnl These are all the places some variant of statfs can be hiding.
- AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
- dnl Quota support
- AC_CHECK_HEADERS(sys/quota.h)
- dnl Try for MMX support
- dnl NB - later gcc versions require -mmmx for this header to be successfully
- dnl included (or another option which implies it, such as -march=pentium-mmx)
- AC_CHECK_HEADERS(mmintrin.h)
- dnl Check whether the compiler supports the new-style C++ standard
- dnl library headers (i.e. <new>) or needs the old "new.h"
- AC_LANG_CPLUSPLUS
- NEW_H=new.h
- AC_CHECK_HEADER(new, [NEW_H=new])
- AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
- AC_LANG_C
- AC_ARG_ENABLE(dtrace,
- [ --enable-dtrace build with dtrace support if available (default=no)],
- [enable_dtrace="yes"],)
- if test "x$enable_dtrace" = "xyes"; then
- AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
- if test -n "$HAVE_DTRACE"; then
- AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
- else
- AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
- fi
- fi
- AC_SUBST(HAVE_DTRACE)
- case $target in
- *-aix4.3*|*-aix5*)
- ;;
- *)
- AC_CHECK_HEADERS(sys/cdefs.h)
- ;;
- esac
- dnl Checks for libraries.
- dnl ========================================================
- case $target in
- *-hpux11.*)
- ;;
- *)
- AC_CHECK_LIB(c_r, gethostbyname_r)
- ;;
- esac
- dnl We don't want to link with libdl even if it's present on OS X, since
- dnl it's not used and not part of the default installation.
- dnl The same goes for BeOS.
- dnl We don't want to link against libm or libpthread on Darwin since
- dnl they both are just symlinks to libSystem and explicitly linking
- dnl against libSystem causes issues when debugging (see bug 299601).
- case $target in
- *-darwin*)
- ;;
- *-beos*)
- ;;
- *)
- AC_CHECK_LIB(m, atan)
- AC_CHECK_LIB(dl, dlopen,
- AC_CHECK_HEADER(dlfcn.h,
- LIBS="-ldl $LIBS"
- AC_DEFINE(HAVE_LIBDL)))
- ;;
- esac
- _SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -D_GNU_SOURCE"
- AC_CHECK_FUNCS(dladdr)
- CFLAGS="$_SAVE_CFLAGS"
- if test ! "$GNU_CXX"; then
- case $target in
- *-aix*)
- AC_CHECK_LIB(C_r, demangle)
- ;;
- *)
- AC_CHECK_LIB(C, demangle)
- ;;
- esac
- fi
- AC_CHECK_LIB(socket, socket)
- dnl ========================================================
- dnl See if mmap sees writes
- dnl For cross compiling, just define it as no, which is a safe default
- dnl ========================================================
- AC_MSG_CHECKING(whether mmap() sees write()s)
- changequote(,)
- mmap_test_prog='
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/mman.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- char fname[] = "conftest.file";
- char zbuff[1024]; /* Fractional page is probably worst case */
- int main() {
- char *map;
- int fd;
- int i;
- unlink(fname);
- fd = open(fname, O_RDWR | O_CREAT, 0660);
- if(fd<0) return 1;
- unlink(fname);
- write(fd, zbuff, sizeof(zbuff));
- lseek(fd, 0, SEEK_SET);
- map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
- if(map==(char*)-1) return 2;
- for(i=0; fname[i]; i++) {
- int rc = write(fd, &fname[i], 1);
- if(map[i]!=fname[i]) return 4;
- }
- return 0;
- }
- '
- changequote([,])
- AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
- AC_MSG_RESULT("$result")
- if test "$result" = "no"; then
- AC_DEFINE(MMAP_MISSES_WRITES)
- fi
- dnl Checks for library functions.
- dnl ========================================================
- AC_PROG_GCC_TRADITIONAL
- AC_FUNC_MEMCMP
- AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
- AC_CHECK_FUNCS(flockfile getpagesize)
- AC_CHECK_FUNCS(localtime_r strtok_r)
- dnl check for wcrtomb/mbrtowc
- dnl =======================================================================
- if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_CACHE_CHECK(for wcrtomb,
- ac_cv_have_wcrtomb,
- [AC_TRY_LINK([#include <wchar.h>],
- [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
- ac_cv_have_wcrtomb="yes",
- ac_cv_have_wcrtomb="no")])
- if test "$ac_cv_have_wcrtomb" = "yes"; then
- AC_DEFINE(HAVE_WCRTOMB)
- fi
- AC_CACHE_CHECK(for mbrtowc,
- ac_cv_have_mbrtowc,
- [AC_TRY_LINK([#include <wchar.h>],
- [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
- ac_cv_have_mbrtowc="yes",
- ac_cv_have_mbrtowc="no")])
- if test "$ac_cv_have_mbrtowc" = "yes"; then
- AC_DEFINE(HAVE_MBRTOWC)
- fi
- AC_LANG_RESTORE
- fi
- AC_CACHE_CHECK(
- [for res_ninit()],
- ac_cv_func_res_ninit,
- [AC_TRY_LINK([
- #ifdef linux
- #define _BSD_SOURCE 1
- #endif
- #include <resolv.h>
- ],
- [int foo = res_ninit(&_res);],
- [ac_cv_func_res_ninit=yes],
- [ac_cv_func_res_ninit=no])
- ])
- if test "$ac_cv_func_res_ninit" = "yes"; then
- AC_DEFINE(HAVE_RES_NINIT)
- dnl must add the link line we do something as foolish as this... dougt
- dnl else
- dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
- dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
- fi
- AC_LANG_CPLUSPLUS
- AC_CACHE_CHECK(
- [for gnu_get_libc_version()],
- ac_cv_func_gnu_get_libc_version,
- [AC_TRY_LINK([
- #ifdef HAVE_GNU_LIBC_VERSION_H
- #include <gnu/libc-version.h>
- #endif
- ],
- [const char *glibc_version = gnu_get_libc_version();],
- [ac_cv_func_gnu_get_libc_version=yes],
- [ac_cv_func_gnu_get_libc_version=no]
- )]
- )
- if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
- AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
- fi
- case $target_os in
- os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
- ;;
- *)
-
- AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
- AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
- AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
- _SAVE_LIBS=$LIBS
- LIBS="$LIBS $_ICONV_LIBS"
- AC_CACHE_CHECK(
- [for iconv()],
- ac_cv_func_iconv,
- [AC_TRY_LINK([
- #include <stdlib.h>
- #include <iconv.h>
- ],
- [
- iconv_t h = iconv_open("", "");
- iconv(h, NULL, NULL, NULL, NULL);
- iconv_close(h);
- ],
- [ac_cv_func_iconv=yes],
- [ac_cv_func_iconv=no]
- )]
- )
- if test "$ac_cv_func_iconv" = "yes"; then
- AC_DEFINE(HAVE_ICONV)
- DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
- LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
- LIBICONV="$_ICONV_LIBS"
- AC_CACHE_CHECK(
- [for iconv() with const input],
- ac_cv_func_const_iconv,
- [AC_TRY_COMPILE([
- #include <stdlib.h>
- #include <iconv.h>
- ],
- [
- const char *input = "testing";
- iconv_t h = iconv_open("", "");
- iconv(h, &input, NULL, NULL, NULL);
- iconv_close(h);
- ],
- [ac_cv_func_const_iconv=yes],
- [ac_cv_func_const_iconv=no]
- )]
- )
- if test "$ac_cv_func_const_iconv" = "yes"; then
- AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
- fi
- fi
- LIBS=$_SAVE_LIBS
- ;;
- esac
- AM_LANGINFO_CODESET
- AC_LANG_C
- dnl **********************
- dnl *** va_copy checks ***
- dnl **********************
- dnl we currently check for all three va_copy possibilities, so we get
- dnl all results in config.log for bug reports.
- AC_MSG_CHECKING(for an implementation of va_copy())
- AC_CACHE_VAL(ac_cv_va_copy,[
- AC_TRY_RUN([
- #include <stdarg.h>
- void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- va_copy (args2, args1);
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
- }
- int main() { f (0, 42); return 0; }],
- ac_cv_va_copy=yes,
- ac_cv_va_copy=no,
- ac_cv_va_copy=no
- )
- ])
- AC_MSG_RESULT($ac_cv_va_copy)
- AC_MSG_CHECKING(for an implementation of __va_copy())
- AC_CACHE_VAL(ac_cv___va_copy,[
- AC_TRY_RUN([
- #include <stdarg.h>
- void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- __va_copy (args2, args1);
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
- }
- int main() { f (0, 42); return 0; }],
- ac_cv___va_copy=yes,
- ac_cv___va_copy=no,
- ac_cv___va_copy=no
- )
- ])
- AC_MSG_RESULT($ac_cv___va_copy)
- AC_MSG_CHECKING(whether va_lists can be copied by value)
- AC_CACHE_VAL(ac_cv_va_val_copy,[
- AC_TRY_RUN([
- #include <stdarg.h>
- void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- args2 = args1;
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
- }
- int main() { f (0, 42); return 0; }],
- ac_cv_va_val_copy=yes,
- ac_cv_va_val_copy=no,
- ac_cv_va_val_copy=yes
- )
- ])
- if test "x$ac_cv_va_copy" = "xyes"; then
- AC_DEFINE(VA_COPY, va_copy)
- AC_DEFINE(HAVE_VA_COPY)
- elif test "x$ac_cv___va_copy" = "xyes"; then
- AC_DEFINE(VA_COPY, __va_copy)
- AC_DEFINE(HAVE_VA_COPY)
- fi
- if test "x$ac_cv_va_val_copy" = "xno"; then
- AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
- fi
- AC_MSG_RESULT($ac_cv_va_val_copy)
- dnl Check for dll-challenged libc's.
- dnl This check is apparently only needed for Linux.
- case "$target" in
- *-linux*)
- dnl ===================================================================
- _curdir=`pwd`
- export _curdir
- rm -rf conftest* _conftest
- mkdir _conftest
- cat >> conftest.C <<\EOF
- #include <stdio.h>
- #include <link.h>
- #include <dlfcn.h>
- #ifdef _dl_loaded
- void __dump_link_map(void) {
- struct link_map *map = _dl_loaded;
- while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
- }
- int main() {
- dlopen("./conftest1.so",RTLD_LAZY);
- dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
- dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
- dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
- __dump_link_map();
- }
- #else
- /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
- int main() { printf("./conftest1.so\n"); }
- #endif
- EOF
- $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
- cat >> conftest1.C <<\EOF
- #include <stdio.h>
- void foo(void) {printf("foo in dll called\n");}
- EOF
- ${CXX-g++} -fPIC -c -g conftest1.C
- ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
- ${CXX-g++} -g conftest.C -o conftest -ldl
- cp -f conftest1.so conftest _conftest
- cd _conftest
- if test `./conftest | grep conftest1.so | wc -l` -gt 1
- then
- echo
- echo "*** Your libc has a bug that can result in loading the same dynamic"
- echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
- echo "*** or later. However, if you choose not to upgrade, the only effect"
- echo "*** will be excessive memory usage at runtime."
- echo
- fi
- cd ${_curdir}
- rm -rf conftest* _conftest
- dnl ===================================================================
- ;;
- esac
- /dnl ========================================================
- dnl Put your C++ language/feature checks below
- dnl ========================================================
- AC_LANG_CPLUSPLUS
- HAVE_GCC3_ABI=
- if test "$GNU_CC"; then
- AC_CACHE_CHECK(for gcc 3.0 ABI,
- ac_cv_gcc_three_abi,
- [AC_TRY_COMPILE([],
- [
- #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
- return 0;
- #else
- #error Not gcc3.
- #endif
- ],
- ac_cv_gcc_three_abi="yes",
- ac_cv_gcc_three_abi="no")])
- if test "$ac_cv_gcc_three_abi" = "yes"; then
- TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
- HAVE_GCC3_ABI=1
- else
- TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
- fi
- fi
- AC_SUBST(HAVE_GCC3_ABI)
- AC_CACHE_CHECK(for C++ \"explicit\" keyword,
- ac_cv_cpp_explicit,
- [AC_TRY_COMPILE(class X {
- public: explicit X(int i) : i_(i) {}
- private: int i_;
- };,
- X x(3);,
- ac_cv_cpp_explicit=yes,
- ac_cv_cpp_explicit=no)])
- if test "$ac_cv_cpp_explicit" = yes ; then
- AC_DEFINE(HAVE_CPP_EXPLICIT)
- fi
- AC_CACHE_CHECK(for C++ \"typename\" keyword,
- ac_cv_cpp_typename,
- [AC_TRY_COMPILE(class param {
- public:
- typedef unsigned long num_type;
- };
- template <class T> class tplt {
- public:
- typedef typename T::num_type t_num_type;
- t_num_type foo(typename T::num_type num) {
- return num;
- }
- };,
- tplt<param> A;
- A.foo(0);,
- ac_cv_cpp_typename=yes,
- ac_cv_cpp_typename=no)])
- if test "$ac_cv_cpp_typename" = yes ; then
- AC_DEFINE(HAVE_CPP_TYPENAME)
- fi
- dnl Check for support of modern template specialization syntax
- dnl Test code and requirement from scc@netscape.com.
- dnl Autoconf cut-and-paste job by waterson@netscape.com
- AC_CACHE_CHECK(for modern C++ template specialization syntax support,
- ac_cv_cpp_modern_specialize_template_syntax,
- [AC_TRY_COMPILE(template <class T> struct X { int a; };
- class Y {};
- template <> struct X<Y> { double a; };,
- X<int> int_x;
- X<Y> y_x;,
- ac_cv_cpp_modern_specialize_template_syntax=yes,
- ac_cv_cpp_modern_specialize_template_syntax=no)])
- if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
- AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
- fi
- dnl Some compilers support only full specialization, and some don't.
- AC_CACHE_CHECK(whether partial template specialization works,
- ac_cv_cpp_partial_specialization,
- [AC_TRY_COMPILE(template <class T> class Foo {};
- template <class T> class Foo<T*> {};,
- return 0;,
- ac_cv_cpp_partial_specialization=yes,
- ac_cv_cpp_partial_specialization=no)])
- if test "$ac_cv_cpp_partial_specialization" = yes ; then
- AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
- fi
- dnl Some compilers have limited support for operators with templates;
- dnl specifically, it is necessary to define derived operators when a base
- dnl class's operator declaration should suffice.
- AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
- ac_cv_need_derived_template_operators,
- [AC_TRY_COMPILE([template <class T> class Base { };
- template <class T>
- Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
- template <class T> class Derived : public Base<T> { };],
- [Derived<char> a, b;
- Base<char> c = a + b;
- return 0;],
- ac_cv_need_derived_template_operators=no,
- ac_cv_need_derived_template_operators=yes)])
- if test "$ac_cv_need_derived_template_operators" = yes ; then
- AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
- fi
- dnl Some compilers have trouble detecting that a template class
- dnl that derives from another template is actually an instance
- dnl of the base class. This test checks for that.
- AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
- ac_cv_need_cpp_template_cast_to_base,
- [AC_TRY_COMPILE([template <class T> class Base { };
- template <class T> class Derived : public Base<T> { };
- template <class T> int foo(const Base<T>&) { return 0; }],
- [Derived<char> bar; return foo(bar);],
- ac_cv_need_cpp_template_cast_to_base=no,
- ac_cv_need_cpp_template_cast_to_base=yes)])
- if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
- AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
- fi
- dnl Some compilers have trouble resolving the ambiguity between two
- dnl functions whose arguments differ only by cv-qualifications.
- AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
- ac_cv_can_resolve_const_ambiguity,
- [AC_TRY_COMPILE([
- template <class T> class ptrClass {
- public: T* ptr;
- };
- template <class T> T* a(ptrClass<T> *arg) {
- return arg->ptr;
- }
- template <class T>
- const T* a(const ptrClass<T> *arg) {
- return arg->ptr;
- }
- ],
- [ ptrClass<int> i;
- a(&i); ],
- ac_cv_can_resolve_const_ambiguity=yes,
- ac_cv_can_resolve_const_ambiguity=no)])
- if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
- AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
- fi
- dnl
- dnl We don't do exceptions on unix. The only reason this used to be here
- dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
- dnl exceptions. But, we turn exceptions off by default and this test breaks.
- dnl So im commenting this out until someone writes some artificial
- dnl intelligence to detect not only if the compiler has exceptions, but if
- dnl they are enabled as well.
- dnl
- dnl AC_CACHE_CHECK(for C++ \"exceptions\",
- dnl ac_cv_cpp_exceptions,
- dnl [AC_TRY_COMPILE(class X { public: X() {} };
- dnl static void F() { throw X(); },
- dnl try { F(); } catch(X & e) { },
- dnl ac_cv_cpp_exceptions=yes,
- dnl ac_cv_cpp_exceptions=no)])
- dnl if test $ac_cv_cpp_exceptions = yes ; then
- dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
- dnl fi
- dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
- dnl supports it well enough to allow us to use it to change access, but not
- dnl to resolve ambiguity. The next two tests determine how well the |using|
- dnl keyword is supported.
- dnl
- dnl Check to see if we can change access with |using|. Test both a
- dnl legal and an illegal example.
- AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
- ac_cv_cpp_access_changing_using2,
- [AC_TRY_COMPILE(
- class A { protected: int foo() { return 0; } };
- class B : public A { public: using A::foo; };,
- B b; return b.foo();,
- [AC_TRY_COMPILE(
- class A { public: int foo() { return 1; } };
- class B : public A { private: using A::foo; };,
- B b; return b.foo();,
- ac_cv_cpp_access_changing_using2=no,
- ac_cv_cpp_access_changing_using2=yes)],
- ac_cv_cpp_access_changing_using2=no)])
- if test "$ac_cv_cpp_access_changing_using2" = yes ; then
- AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
- fi
- dnl Check to see if we can resolve ambiguity with |using|.
- AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
- ac_cv_cpp_ambiguity_resolving_using,
- [AC_TRY_COMPILE(class X {
- public: int go(const X&) {return 3;}
- int jo(const X&) {return 3;}
- };
- class Y : public X {
- public: int go(int) {return 2;}
- int jo(int) {return 2;}
- using X::jo;
- private: using X::go;
- };,
- X x; Y y; y.jo(x);,
- ac_cv_cpp_ambiguity_resolving_using=yes,
- ac_cv_cpp_ambiguity_resolving_using=no)])
- if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
- AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
- fi
- dnl Check to see if the |std| namespace is supported. If so, we'll want
- dnl to qualify any standard library calls with "std::" to ensure that
- dnl those functions can be resolved.
- AC_CACHE_CHECK(for \"std::\" namespace,
- ac_cv_cpp_namespace_std,
- [AC_TRY_COMPILE([#include <algorithm>],
- [return std::min(0, 1);],
- ac_cv_cpp_namespace_std=yes,
- ac_cv_cpp_namespace_std=no)])
- if test "$ac_cv_cpp_namespace_std" = yes ; then
- AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
- fi
- dnl Older compilers are overly ambitious with respect to using the standard
- dnl template library's |operator!=()| when |operator==()| is defined. In
- dnl which case, defining |operator!=()| in addition to |operator==()| causes
- dnl ambiguity at compile-time. This test checks for that case.
- AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
- ac_cv_cpp_unambiguous_std_notequal,
- [AC_TRY_COMPILE([#include <algorithm>
- struct T1 {};
- int operator==(const T1&, const T1&) { return 0; }
- int operator!=(const T1&, const T1&) { return 0; }],
- [T1 a,b; return a != b;],
- ac_cv_cpp_unambiguous_std_notequal=unambiguous,
- ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
- if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
- AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
- fi
- AC_CACHE_CHECK(for C++ reinterpret_cast,
- ac_cv_cpp_reinterpret_cast,
- [AC_TRY_COMPILE(struct X { int i; };
- struct Y { int i; };,
- X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
- ac_cv_cpp_reinterpret_cast=yes,
- ac_cv_cpp_reinterpret_cast=no)])
- if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
- AC_DEFINE(HAVE_CPP_NEW_CASTS)
- fi
- dnl See if a dynamic_cast to void* gives the most derived object.
- AC_CACHE_CHECK(for C++ dynamic_cast to void*,
- ac_cv_cpp_dynamic_cast_void_ptr,
- [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
- class Y { int j; public: virtual ~Y() { } };
- class Z : public X, public Y { int k; };
- int main() {
- Z mdo;
- X *subx = (X*)&mdo;
- Y *suby = (Y*)&mdo;
- return !((((void*)&mdo != (void*)subx) &&
- ((void*)&mdo == dynamic_cast<void*>(subx))) ||
- (((void*)&mdo != (void*)suby) &&
- ((void*)&mdo == dynamic_cast<void*>(suby))));
- }],
- ac_cv_cpp_dynamic_cast_void_ptr=yes,
- ac_cv_cpp_dynamic_cast_void_ptr=no,
- ac_cv_cpp_dynamic_cast_void_ptr=no)])
- if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
- AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
- fi
- dnl note that this one is reversed - if the test fails, then
- dnl we require implementations of unused virtual methods. Which
- dnl really blows because it means we'll have useless vtable
- dnl bloat.
- AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
- ac_cv_cpp_unused_required,
- [AC_TRY_LINK(class X {private: virtual void never_called();};,
- X x;,
- ac_cv_cpp_unused_required=no,
- ac_cv_cpp_unused_required=yes)])
- if test "$ac_cv_cpp_unused_required" = yes ; then
- AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
- fi
- dnl Some compilers have trouble comparing a constant reference to a templatized
- dnl class to zero, and require an explicit operator==() to be defined that takes
- dnl an int. This test separates the strong from the weak.
- AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
- ac_cv_trouble_comparing_to_zero,
- [AC_TRY_COMPILE([#include <algorithm>
- template <class T> class Foo {};
- class T2;
- template <class T> int operator==(const T2*, const T&) { return 0; }
- template <class T> int operator!=(const T2*, const T&) { return 0; }],
- [Foo<int> f; return (0 != f);],
- ac_cv_trouble_comparing_to_zero=no,
- ac_cv_trouble_comparing_to_zero=yes)])
- if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
- AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
- fi
- dnl End of C++ language/feature checks
- AC_LANG_C
- dnl ========================================================
- dnl = Internationalization checks
- dnl ========================================================
- dnl
- dnl Internationalization and Locale support is different
- dnl on various UNIX platforms. Checks for specific i18n
- dnl features go here.
- dnl check for LC_MESSAGES
- AC_CACHE_CHECK(for LC_MESSAGES,
- ac_cv_i18n_lc_messages,
- [AC_TRY_COMPILE([#include <locale.h>],
- [int category = LC_MESSAGES;],
- ac_cv_i18n_lc_messages=yes,
- ac_cv_i18n_lc_messages=no)])
- if test "$ac_cv_i18n_lc_messages" = yes; then
- AC_DEFINE(HAVE_I18N_LC_MESSAGES)
- fi
- fi # SKIP_COMPILER_CHECKS
- TARGET_XPCOM_ABI=
- if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
- TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
- fi
- dnl Mozilla specific options
- dnl ========================================================
- dnl The macros used for command line options
- dnl are defined in build/autoconf/altoptions.m4.
- dnl =========================================================
- dnl = Chrome format
- dnl =========================================================
- MOZ_ARG_ENABLE_STRING([chrome-format],
- [ --enable-chrome-format=jar|flat|both|symlink
- Select FORMAT of chrome files (default=jar)],
- MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
- if test -z "$MOZ_CHROME_FILE_FORMAT"; then
- MOZ_CHROME_FILE_FORMAT=jar
- fi
- if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
- test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
- test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
- test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
- AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
- fi
- dnl ========================================================
- dnl =
- dnl = Check for external package dependencies
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(External Packages)
- MOZ_ENABLE_LIBXUL=
- MOZ_ARG_WITH_STRING(libxul-sdk,
- [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
- LIBXUL_SDK_DIR=$withval)
- if test "$LIBXUL_SDK_DIR" = "yes" -o -z "$LIBXUL_SDK_DIR" -o "$LIBXUL_SDK_DIR" == "no"; then
- AC_MSG_ERROR([--with-libxul-sdk must specify a path])
- else
- LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
- if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
- AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
- fi
- MOZ_ENABLE_LIBXUL=1
- fi
- AC_SUBST(LIBXUL_SDK)
- LIBXUL_DIST="$LIBXUL_SDK"
- AC_SUBST(LIBXUL_DIST)
- dnl ========================================================
- dnl = If NSPR was not detected in the system,
- dnl = use the one in the source tree (mozilla/nsprpub)
- dnl ========================================================
- MOZ_ARG_WITH_BOOL(system-nspr,
- [ --with-system-nspr Use system installed NSPR],
- _USE_SYSTEM_NSPR=1 )
- if test -n "$_USE_SYSTEM_NSPR"; then
- AM_PATH_NSPR(4.8.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
- fi
- if test -n "$MOZ_NATIVE_NSPR"; then
- _SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $NSPR_CFLAGS"
- AC_TRY_COMPILE([#include "prlog.h"],
- [#ifndef PR_STATIC_ASSERT
- #error PR_STATIC_ASSERT not defined
- #endif],
- [MOZ_NATIVE_NSPR=1],
- AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
- CFLAGS=$_SAVE_CFLAGS
- else
- if test "$OS_ARCH" = "WINCE"; then
- NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
- NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
- elif test "$OS_ARCH" = "WINNT"; then
- NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
- if test -n "$GNU_CC"; then
- NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
- else
- NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
- fi
- else
- NSPR_CFLAGS='`$(LIBXUL_SDK)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
- NSPR_LIBS='`$(LIBXUL_SDK)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
- fi
- fi
- dnl ========================================================
- dnl =
- dnl = Application
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(Application)
- ENABLE_TESTS=1
- MOZ_PYTHON=
- MOZ_PYTHON_DEBUG_SUFFIX=
- MOZ_PYTHON_DLL_SUFFIX=
- MOZ_PYTHON_INCLUDES=
- MOZ_PYTHON_LIBS=
- MOZ_PYTHON_PREFIX=
- MOZ_PYTHON_VER=
- MOZ_PYTHON_VER_DOTTED=
- AC_MSG_CHECKING([for tar archiver])
- AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
- if test -z "$TAR"; then
- AC_MSG_ERROR([no tar archiver found in \$PATH])
- fi
- AC_MSG_RESULT([$TAR])
- AC_SUBST(TAR)
- AC_MSG_CHECKING([for wget])
- AC_CHECK_PROGS(WGET, wget, "")
- AC_MSG_RESULT([$WGET])
- AC_SUBST(WGET)
- dnl ========================================================
- dnl build the tests by default
- dnl ========================================================
- MOZ_ARG_DISABLE_BOOL(tests,
- [ --disable-tests Do not build test libraries & programs],
- ENABLE_TESTS=,
- ENABLE_TESTS=1 )
- dnl ========================================================
- dnl =
- dnl = Debugging Options
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(Debugging and Optimizations)
- dnl ========================================================
- dnl = Disable building with debug info.
- dnl = Debugging is OFF by default
- dnl ========================================================
- if test -z "$MOZ_DEBUG_FLAGS"
- then
- case "$target" in
- *-irix*)
- if test "$GNU_CC"; then
- GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
- case "$GCC_VERSION" in
- 2.95.*)
- MOZ_DEBUG_FLAGS=""
- ;;
- *)
- MOZ_DEBUG_FLAGS="-g"
- ;;
- esac
- else
- MOZ_DEBUG_FLAGS="-g"
- fi
- ;;
- *)
- MOZ_DEBUG_FLAGS="-g"
- ;;
- esac
- fi
- MOZ_ARG_ENABLE_STRING(debug,
- [ --enable-debug[=DBG] Enable building with developer debug info
- (Using compiler flags DBG)],
- [ if test "$enableval" != "no"; then
- MOZ_DEBUG=1
- if test -n "$enableval" && test "$enableval" != "yes"; then
- MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
- fi
- else
- MOZ_DEBUG=
- fi ],
- MOZ_DEBUG=)
- MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
- case "${target_os}" in
- beos*)
- MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
- ;;
- msvc*|mks*|cygwin*|mingw*|os2*|wince*)
- MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
- ;;
- *)
- MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
- ;;
- esac
- MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
- MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
- if test -n "$MOZ_DEBUG"; then
- AC_MSG_CHECKING([for valid debug flags])
- _SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
- AC_TRY_COMPILE([#include <stdio.h>],
- [printf("Hello World\n");],
- _results=yes,
- _results=no)
- AC_MSG_RESULT([$_results])
- if test "$_results" = "no"; then
- AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
- fi
- CFLAGS=$_SAVE_CFLAGS
- fi
- dnl ========================================================
- dnl = Enable code optimization. ON by default.
- dnl ========================================================
- if test -z "$MOZ_OPTIMIZE_FLAGS"; then
- MOZ_OPTIMIZE_FLAGS="-O"
- fi
- MOZ_ARG_ENABLE_STRING(optimize,
- [ --disable-optimize Disable compiler optimization
- --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
- [ if test "$enableval" != "no"; then
- MOZ_OPTIMIZE=1
- if test -n "$enableval" && test "$enableval" != "yes"; then
- MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
- MOZ_OPTIMIZE=2
- fi
- else
- MOZ_OPTIMIZE=
- fi ], MOZ_OPTIMIZE=1)
- if test -n "$MOZ_OPTIMIZE"; then
- AC_MSG_CHECKING([for valid optimization flags])
- _SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
- AC_TRY_COMPILE([#include <stdio.h>],
- [printf("Hello World\n");],
- _results=yes,
- _results=no)
- AC_MSG_RESULT([$_results])
- if test "$_results" = "no"; then
- AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
- fi
- CFLAGS=$_SAVE_CFLAGS
- fi
- AC_SUBST(MOZ_OPTIMIZE)
- AC_SUBST(MOZ_OPTIMIZE_FLAGS)
- AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
- AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
- dnl ========================================================
- dnl = dnl This will enable logging of addref, release, ctor, dtor.
- dnl ========================================================
- _ENABLE_LOGREFCNT=42
- MOZ_ARG_ENABLE_BOOL(logrefcnt,
- [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
- _ENABLE_LOGREFCNT=1,
- _ENABLE_LOGREFCNT= )
- if test "$_ENABLE_LOGREFCNT" = "1"; then
- AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
- elif test -z "$_ENABLE_LOGREFCNT"; then
- AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
- fi
- dnl ========================================================
- dnl =
- dnl = Misc. Options
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(Misc. Options)
- dnl ========================================================
- dnl update xterm title
- dnl ========================================================
- MOZ_ARG_ENABLE_BOOL(xterm-updates,
- [ --enable-xterm-updates Update XTERM titles with current command.],
- MOZ_UPDATE_XTERM=1,
- MOZ_UPDATE_XTERM= )
- if test -z "$SKIP_COMPILER_CHECKS"; then
- dnl ========================================================
- dnl =
- dnl = Compiler Options
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(Compiler Options)
- dnl ========================================================
- dnl Check for gcc -pipe support
- dnl ========================================================
- AC_MSG_CHECKING([for gcc -pipe support])
- if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
- echo '#include <stdio.h>' > dummy-hello.c
- echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
- ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
- cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
- if test $? = 0; then
- _res_as_stdin="yes"
- else
- _res_as_stdin="no"
- fi
- if test "$_res_as_stdin" = "yes"; then
- _SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -pipe"
- AC_TRY_COMPILE( [ #include <stdio.h> ],
- [printf("Hello World\n");],
- [_res_gcc_pipe="yes"],
- [_res_gcc_pipe="no"] )
- CFLAGS=$_SAVE_CFLAGS
- fi
- if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
- _res="yes";
- CFLAGS="$CFLAGS -pipe"
- CXXFLAGS="$CXXFLAGS -pipe"
- else
- _res="no"
- fi
- rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
- AC_MSG_RESULT([$_res])
- else
- AC_MSG_RESULT([no])
- fi
- dnl pass -Wno-long-long to the compiler
- MOZ_ARG_ENABLE_BOOL(long-long-warning,
- [ --enable-long-long-warning
- Warn about use of non-ANSI long long type],
- _IGNORE_LONG_LONG_WARNINGS=,
- _IGNORE_LONG_LONG_WARNINGS=1)
- if test "$_IGNORE_LONG_LONG_WARNINGS"; then
- _SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
- AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
- AC_TRY_COMPILE([], [return(0);],
- [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
- result="yes" ], result="no")
- AC_MSG_RESULT([$result])
- CFLAGS="$_SAVE_CFLAGS"
- fi
- dnl ========================================================
- dnl Profile guided optimization
- dnl ========================================================
- dnl Test for profiling options
- dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
- dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
- dnl Provide a switch to disable PGO even when called via profiledbuild.
- MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
- [ --disable-profile-guided-optimization
- Don't build with PGO even if called via make profiledbuild],
- MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
- MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
- AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
- _SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fprofile-generate"
- AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
- AC_TRY_COMPILE([], [return 0;],
- [ PROFILE_GEN_CFLAGS="-fprofile-generate"
- result="yes" ], result="no")
- AC_MSG_RESULT([$result])
- if test $result = "yes"; then
- PROFILE_GEN_LDFLAGS="-fprofile-generate"
- PROFILE_USE_CFLAGS="-fprofile-use"
- PROFILE_USE_LDFLAGS="-fprofile-use"
- else
- CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
- AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
- AC_TRY_COMPILE([], [return 0;],
- [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
- result="yes" ], result="no")
- AC_MSG_RESULT([$result])
- if test $result = "yes"; then
- PROFILE_USE_CFLAGS="-fbranch-probabilities"
- fi
- # don't really care, this is an old GCC
- PROFILE_GEN_LDFLAGS=
- PROFILE_USE_LDFLAGS=
- fi
- CFLAGS="$_SAVE_CFLAGS"
- if test -n "$INTEL_CC"; then
- PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
- PROFILE_GEN_LDFLAGS=
- PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
- PROFILE_USE_LDFLAGS=
- fi
- dnl Sun Studio on Solaris
- if test "$SOLARIS_SUNPRO_CC"; then
- PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
- PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
- if test "$CPU_ARCH" != "sparc"; then
- PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
- PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
- else
- PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
- PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
- fi
- fi
- AC_SUBST(PROFILE_GEN_CFLAGS)
- AC_SUBST(PROFILE_GEN_LDFLAGS)
- AC_SUBST(PROFILE_USE_CFLAGS)
- AC_SUBST(PROFILE_USE_LDFLAGS)
- AC_LANG_CPLUSPLUS
- dnl ========================================================
- dnl Test for -pedantic bustage
- dnl ========================================================
- MOZ_ARG_DISABLE_BOOL(pedantic,
- [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
- _PEDANTIC= )
- if test "$_PEDANTIC"; then
- _SAVE_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
- AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
- result="no", result="yes" )
- AC_MSG_RESULT([$result])
- CXXFLAGS="$_SAVE_CXXFLAGS"
- case "$result" in
- no)
- _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
- _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
- ;;
- yes)
- AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
- ;;
- esac
- fi
- dnl ========================================================
- dnl Test for correct temporary object destruction order
- dnl ========================================================
- dnl We want to make sure the compiler follows the C++ spec here as
- dnl xpcom and the string classes depend on it (bug 235381).
- AC_MSG_CHECKING([for correct temporary object destruction order])
- AC_TRY_RUN([ class A {
- public: A(int& x) : mValue(x) {}
- ~A() { mValue--; }
- operator char**() { return 0; }
- private: int& mValue;
- };
- void func(char **arg) {}
- int m=2;
- void test() {
- func(A(m));
- if (m==1) m = 0;
- }
- int main() {
- test();
- return(m);
- }
- ],
- result="yes", result="no", result="maybe")
- AC_MSG_RESULT([$result])
- if test "$result" = "no"; then
- AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
- fi
- dnl ========================================================
- dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
- dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
- dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
- dnl ========================================================
- _SAVE_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
- AC_CACHE_CHECK(for correct overload resolution with const and templates,
- ac_nscap_nonconst_opeq_bug,
- [AC_TRY_COMPILE([
- template <class T>
- class Pointer
- {
- public:
- T* myPtr;
- };
-
- template <class T, class U>
- int operator==(const Pointer<T>& rhs, U* lhs)
- {
- return rhs.myPtr == lhs;
- }
-
- template <class T, class U>
- int operator==(const Pointer<T>& rhs, const U* lhs)
- {
- return rhs.myPtr == lhs;
- }
- ],
- [
- Pointer<int> foo;
- const int* bar;
- return foo == bar;
- ],
- ac_nscap_nonconst_opeq_bug="no",
- ac_nscap_nonconst_opeq_bug="yes")])
- CXXFLAGS="$_SAVE_CXXFLAGS"
- if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
- AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
- fi
- fi # SKIP_COMPILER_CHECKS
- dnl ========================================================
- dnl C++ rtti
- dnl Should be smarter and check that the compiler does indeed have rtti
- dnl ========================================================
- MOZ_ARG_ENABLE_BOOL(cpp-rtti,
- [ --enable-cpp-rtti Enable C++ RTTI ],
- [ _MOZ_USE_RTTI=1 ],
- [ _MOZ_USE_RTTI= ])
- if test "$_MOZ_USE_RTTI"; then
- _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
- else
- _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
- fi
- AC_SUBST(_MOZ_RTTI_FLAGS_ON)
- dnl Check whether we can use gcc's c++0x mode
- AC_LANG_CPLUSPLUS
- if test "$GNU_CXX"; then
- _SAVE_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS -std=gnu++0x"
- if test -z "$_MOZ_USE_RTTI"; then
- CXXFLAGS="$CXXFLAGS $_MOZ_RTTI_FLAGS"
- AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
- ac_cv_cxx0x_headers_bug,
- [AC_TRY_COMPILE([#include <memory>], [],
- ac_cv_cxx0x_headers_bug="no",
- ac_cv_cxx0x_headers_bug="yes")])
- CXXFLAGS="$_SAVE_CXXFLAGS"
- if test "$ac_cv_cxx0x_headers_bug" = "no"; then
- CXXFLAGS="$CXXFLAGS -std=gnu++0x"
- fi
- fi
- fi
- dnl Check for usable char16_t (2 bytes, unsigned)
- dnl (we might not need the unsignedness check anymore)
- AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
- ac_cv_have_usable_char16_t,
- [AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
- CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
- CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
- CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
- CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
- ac_cv_have_usable_char16_t="yes",
- ac_cv_have_usable_char16_t="no")])
- if test "$ac_cv_have_usable_char16_t" = "yes"; then
- AC_DEFINE(HAVE_CPP_CHAR16_T)
- HAVE_CPP_CHAR16_T=1
- fi
- dnl Check for usable wchar_t (2 bytes, unsigned)
- dnl (we really don't need the unsignedness check anymore)
- dnl ========================================================
- AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
- ac_cv_have_usable_wchar_v2,
- [AC_TRY_COMPILE([#include <stddef.h>
- $configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
- CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
- ac_cv_have_usable_wchar_v2="yes",
- ac_cv_have_usable_wchar_v2="no")])
- if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
- AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
- HAVE_CPP_2BYTE_WCHAR_T=1
- elif test "$ac_cv_have_usable_char16_t" != "yes"; then
- dnl This is really gcc-only
- dnl Do this test using CXX only since some versions of gcc
- dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
- dnl only have short-wchar support for c++.
- dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
- _SAVE_CXXFLAGS=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS -fshort-wchar"
- AC_CACHE_CHECK(for compiler -fshort-wchar option,
- ac_cv_have_usable_wchar_option_v2,
- [AC_TRY_LINK([#include <stddef.h>
- $configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
- CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
- ac_cv_have_usable_wchar_option_v2="yes",
- ac_cv_have_usable_wchar_option_v2="no")])
- if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
- AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
- HAVE_CPP_2BYTE_WCHAR_T=1
- WCHAR_CFLAGS="-fshort-wchar"
- else
- CXXFLAGS=$_SAVE_CXXFLAGS
- fi
- fi
- dnl ========================================================
- dnl =
- dnl = Build depencency options
- dnl =
- dnl ========================================================
- MOZ_ARG_HEADER(Build dependencies)
- dnl ========================================================
- dnl = Do not auto generate dependency info
- dnl ========================================================
- MOZ_AUTO_DEPS=1
- MOZ_ARG_DISABLE_BOOL(auto-deps,
- [ --disable-auto-deps Do not automatically generate dependency info],
- MOZ_AUTO_DEPS=,
- MOZ_AUTO_DEPS=1)
- if test -n "$MOZ_AUTO_DEPS"; then
- dnl ========================================================
- dnl = Use mkdepend instead of $CC -MD for dependency generation
- dnl ========================================================
- _cpp_md_flag=
- MOZ_ARG_DISABLE_BOOL(md,
- [ --disable-md Do not use compiler-based dependencies ],
- [_cpp_md_flag=],
- [_cpp_md_flag=1],
- [dnl Default is to turn on -MD if using GNU-compatible compilers
- if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
- _cpp_md_flag=1
- fi
- dnl Default is to use -xM if using Sun Studio on Solaris
- if test "$SOLARIS_SUNPRO_CC"; then
- _cpp_md_flag=1
- fi])
- if test "$_cpp_md_flag"; then
- COMPILER_DEPEND=1
- if test "$OS_ARCH" = "OpenVMS"; then
- _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
- else
- _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
- fi
- dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
- if test "$SOLARIS_SUNPRO_CC"; then
- _DEPEND_CFLAGS=
- fi
- else
- COMPILER_DEPEND=
- _USE_CPP_INCLUDE_FLAG=
- _DEFINES_CFLAGS='$(ACDEFINES) -FI $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT'
- _DEFINES_CXXFLAGS='$(ACDEFINES) -FI $(LIBXUL_DIST)/include/mozilla-config.h -DMOZILLA_CLIENT'
- fi
- fi # MOZ_AUTO_DEPS
- MDDEPDIR='.deps'
- AC_SUBST(MOZ_AUTO_DEPS)
- AC_SUBST(COMPILER_DEPEND)
- AC_SUBST(MDDEPDIR)
- dnl ==================================
- dnl The meat of PyXPCOM configuration
- dnl ==================================
- dnl Allow PYTHON to point to the Python interpreter to use
- dnl (note that it must be the python executable - which we
- dnl run to locate the relevant paths etc)
- dnl If not set, we use whatever Python we can find.
- MOZ_PYTHON=$PYTHON
- dnl Ask Python what its version number is
- changequote(,)
- MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
- MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
- changequote([,])
- dnl Ask for the Python "prefix" (ie, home/source dir)
- MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
- dnl Setup the include and library directories.
- if test "$OS_ARCH" = "WINNT"; then
- MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
- dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
- dnl Binary trees have "include" for .h, and "libs" for .lib
- dnl We add 'em both - along with quotes, to handle spaces.
- MOZ_PYTHON_DLL_SUFFIX=.pyd
- MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
- MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
- else
- dnl Non-Windows include and libs
- MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
- MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
- dnl Check for dynamic Python lib
- dnl - A static Python is no good - multiple dynamic libraries (xpcom
- dnl - core, xpcom loader, etc) all need to share Python.
- dnl - Python 2.3's std --enable-shared configure option will
- dnl create a libpython2.3.so.1.0. We should first try this
- dnl dotted versioned .so file because this is the one that
- dnl the PyXPCOM build mechanics tries to link to.
- dnl XXX Should find a better way than hardcoding "1.0".
- dnl - Python developement tree dir layouts are NOT allowed here
- dnl because the PyXPCOM build just dies on it later anyway.
- dnl - Fixes to the above by Python/*nix knowledgable people welcome!
- if test -n "$MOZ_PYTHON_LIBDIR"; then
- MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_LIBDIR -lpython$MOZ_PYTHON_VER_DOTTED"
- elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
- MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
- elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
- MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
- elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
- MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
- elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
- dnl Don't Python development tree directory layout.
- MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
- AC_MSG_ERROR([The Python at $MOZ_PYTHON_PREFIX looks like a dev tree. The PyXPCOM build cannot handle this yet. You must 'make install' Python and use the installed tree.])
- elif test "$OS_ARCH" = "Darwin"; then
- dnl We do Darwin last, so if a custom non-framework build of
- dnl python is used on OSX, then it will be picked up first by
- dnl the logic above.
- if test "$MOZ_PYTHON_PREFIX" != "${MOZ_PYTHON_PREFIX/Python.framework/}"; then
- MOZ_PYTHON_LIBS="-F${MOZ_PYTHON_PREFIX%/Python.framework/*}"
- fi
- MOZ_PYTHON_LIBS="${MOZ_PYTHON_LIBS} -framework Python"
- else
- AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
- fi
- if test "$OS_ARCH" = "Linux"; then
- MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
- fi
- fi
- dnl Handle "_d" on Windows
- if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
- MOZ_PYTHON_DEBUG_SUFFIX="_d"
- else
- MOZ_PYTHON_DEBUG_SUFFIX=
- fi
- AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
- dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
- dnl command-line, but not yet
- AC_SUBST(MOZ_PYTHON)
- AC_SUBST(MOZ_PYTHON_PREFIX)
- AC_SUBST(MOZ_PYTHON_INCLUDES)
- AC_SUBST(MOZ_PYTHON_LIBS)
- AC_SUBST(MOZ_PYTHON_VER)
- AC_SUBST(MOZ_PYTHON_VER_DOTTED)
- AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
- AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
- dnl ========================================================
- if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
- MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
- fi
- dnl ========================================================
- dnl =
- dnl = Maintainer debug option (no --enable equivalent)
- dnl =
- dnl ========================================================
- AC_SUBST(AR)
- AC_SUBST(AR_FLAGS)
- AC_SUBST(AR_LIST)
- AC_SUBST(AR_EXTRACT)
- AC_SUBST(AR_DELETE)
- AC_SUBST(AS)
- AC_SUBST(ASFLAGS)
- AC_SUBST(AS_DASH_C_FLAG)
- AC_SUBST(LD)
- AC_SUBST(RC)
- AC_SUBST(RCFLAGS)
- AC_SUBST(WINDRES)
- AC_SUBST(USE_SHORT_LIBNAME)
- AC_SUBST(IMPLIB)
- AC_SUBST(FILTER)
- AC_SUBST(BIN_FLAGS)
- AC_SUBST(NS_USE_NATIVE)
- AC_SUBST(MOZ_UPDATE_XTERM)
- AC_SUBST(MOZ_JS_LIBS)
- AC_SUBST(MOZ_DEBUG)
- AC_SUBST(MOZ_PROFILE_MODULES)
- AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
- AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
- AC_SUBST(MOZ_DEBUG_FLAGS)
- AC_SUBST(MOZ_DEBUG_LDFLAGS)
- AC_SUBST(WARNINGS_AS_ERRORS)
- AC_SUBST(MOZ_LOG_REFCNT)
- AC_SUBST(JAR)
- AC_SUBST(ENABLE_TESTS)
- AC_SUBST(USE_ELF_DYNSTR_GC)
- AC_SUBST(INCREMENTAL_LINKER)
- AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
- AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
- AC_SUBST(MOZ_FIX_LINK_PATHS)
- AC_SUBST(XPCOM_LIBS)
- AC_SUBST(XPCOM_FROZEN_LDOPTS)
- AC_SUBST(XPCOM_GLUE_LDOPTS)
- AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
- AC_SUBST(USE_DEPENDENT_LIBS)
- AC_SUBST(MOZ_BUILD_ROOT)
- AC_SUBST(MOZ_OS2_TOOLS)
- AC_SUBST(MOZ_OS2_USE_DECLSPEC)
- AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
- AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
- AC_SUBST(MOZ_PKG_SPECIAL)
- dnl win32 options
- AC_SUBST(MOZ_DEBUG_SYMBOLS)
- AC_SUBST(MOZ_MAPINFO)
- AC_SUBST(MOZ_BROWSE_INFO)
- AC_SUBST(MOZ_TOOLS_DIR)
- AC_SUBST(AS_PERL)
- AC_SUBST(PYTHON)
- AC_SUBST(WINCE)
- AC_SUBST(WINCE_SDK_DIR)
- AC_SUBST(WINCE_WINDOWS_MOBILE)
- dnl Echo the CFLAGS to remove extra whitespace.
- CFLAGS=`echo \
- $_WARNINGS_CFLAGS \
- $CFLAGS`
- CXXFLAGS=`echo \
- $_MOZ_RTTI_FLAGS \
- $_MOZ_EXCEPTIONS_FLAGS \
- $_WARNINGS_CXXFLAGS \
- $CXXFLAGS`
- COMPILE_CFLAGS=`echo \
- $_DEFINES_CFLAGS \
- $_DEPEND_CFLAGS \
- $COMPILE_CFLAGS`
- COMPILE_CXXFLAGS=`echo \
- $_DEFINES_CXXFLAGS \
- $_DEPEND_CFLAGS \
- $COMPILE_CXXFLAGS`
- AC_SUBST(SYSTEM_MAKEDEPEND)
- AC_SUBST(NSPR_CFLAGS)
- AC_SUBST(NSPR_LIBS)
- AC_SUBST(MOZ_NATIVE_NSPR)
- AC_SUBST(CFLAGS)
- AC_SUBST(CXXFLAGS)
- AC_SUBST(CPPFLAGS)
- AC_SUBST(COMPILE_CFLAGS)
- AC_SUBST(COMPILE_CXXFLAGS)
- AC_SUBST(LDFLAGS)
- AC_SUBST(LIBS)
- AC_SUBST(CROSS_COMPILE)
- AC_SUBST(WCHAR_CFLAGS)
- AC_SUBST(HOST_CC)
- AC_SUBST(HOST_CXX)
- AC_SUBST(HOST_CFLAGS)
- AC_SUBST(HOST_CXXFLAGS)
- AC_SUBST(HOST_OPTIMIZE_FLAGS)
- AC_SUBST(HOST_AR)
- AC_SUBST(HOST_AR_FLAGS)
- AC_SUBST(HOST_LD)
- AC_SUBST(HOST_RANLIB)
- AC_SUBST(HOST_NSPR_MDCPUCFG)
- AC_SUBST(HOST_BIN_SUFFIX)
- AC_SUBST(HOST_OS_ARCH)
- AC_SUBST(TARGET_CPU)
- AC_SUBST(TARGET_VENDOR)
- AC_SUBST(TARGET_OS)
- AC_SUBST(TARGET_NSPR_MDCPUCFG)
- AC_SUBST(TARGET_MD_ARCH)
- AC_SUBST(TARGET_XPCOM_ABI)
- AC_SUBST(OS_TARGET)
- AC_SUBST(OS_ARCH)
- AC_SUBST(OS_RELEASE)
- AC_SUBST(OS_TEST)
- AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
- AC_SUBST(MOZ_CHROME_FILE_FORMAT)
- AC_SUBST(WRAP_MALLOC_CFLAGS)
- AC_SUBST(WRAP_MALLOC_LIB)
- AC_SUBST(MKSHLIB)
- AC_SUBST(MKCSHLIB)
- AC_SUBST(MKSHLIB_FORCE_ALL)
- AC_SUBST(MKSHLIB_UNFORCE_ALL)
- AC_SUBST(DSO_CFLAGS)
- AC_SUBST(DSO_PIC_CFLAGS)
- AC_SUBST(DSO_LDOPTS)
- AC_SUBST(LIB_PREFIX)
- AC_SUBST(DLL_PREFIX)
- AC_SUBST(DLL_SUFFIX)
- AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
- AC_SUBST(LIB_SUFFIX)
- AC_SUBST(OBJ_SUFFIX)
- AC_SUBST(BIN_SUFFIX)
- AC_SUBST(ASM_SUFFIX)
- AC_SUBST(IMPORT_LIB_SUFFIX)
- AC_SUBST(USE_N32)
- AC_SUBST(CC_VERSION)
- AC_SUBST(CXX_VERSION)
- AC_SUBST(MSMANIFEST_TOOL)
- if test "$USING_HCC"; then
- CC='${topsrcdir}/build/hcc'
- CC="$CC '$_OLDCC'"
- CXX='${topsrcdir}/build/hcpp'
- CXX="$CXX '$_OLDCXX'"
- AC_SUBST(CC)
- AC_SUBST(CXX)
- fi
- dnl Set various defines and substitutions
- dnl ========================================================
- if test "$OS_ARCH" = "BeOS"; then
- AC_DEFINE(XP_BEOS)
- MOZ_MOVEMAIL=1
- elif test "$OS_ARCH" = "Darwin"; then
- AC_DEFINE(XP_UNIX)
- AC_DEFINE(UNIX_ASYNC_DNS)
- MOZ_MOVEMAIL=1
- elif test "$OS_ARCH" = "OpenVMS"; then
- AC_DEFINE(XP_UNIX)
- elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
- AC_DEFINE(XP_UNIX)
- AC_DEFINE(UNIX_ASYNC_DNS)
- MOZ_MOVEMAIL=1
- fi
- dnl ========================================================
- dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
- dnl ========================================================
- case "$host_os" in
- mingw*)
- WIN_TOP_SRC=`cd $srcdir; pwd -W`
- ;;
- esac
- AC_SUBST(WIN_TOP_SRC)
- AC_SUBST(ac_configure_args)
- ##
- ## Had to add this defines hack for the Windows build - ToddW.
- ##
- # Save the defines header file before autoconf removes it.
- # (Do not add AC_DEFINE calls after this line.)
- _CONFIG_TMP=confdefs-tmp.h
- _CONFIG_DEFS_H=mozilla-config.h
- cat > $_CONFIG_TMP <<\EOF
- /* List of defines generated by configure. Included with preprocessor flag,
- * -include, to avoid long list of -D defines on the compile command-line.
- * Do not edit.
- */
- #ifndef _MOZILLA_CONFIG_H_
- #define _MOZILLA_CONFIG_H_
- EOF
- _EGREP_PATTERN='^#define ('
- if test -n "$_NON_GLOBAL_ACDEFINES"; then
- for f in $_NON_GLOBAL_ACDEFINES; do
- _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
- done
- fi
- _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
-
- sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
- cat >> $_CONFIG_TMP <<\EOF
- #endif /* _MOZILLA_CONFIG_H_ */
- EOF
- # Only write mozilla-config.h when something changes (or it doesn't exist)
- if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
- rm $_CONFIG_TMP
- else
- AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
- mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
- echo ==== $_CONFIG_DEFS_H =================================
- cat $_CONFIG_DEFS_H
- fi
- dnl Probably shouldn't call this manually but we always want the output of DEFS
- rm -f confdefs.h.save
- mv confdefs.h confdefs.h.save
- egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
- AC_OUTPUT_MAKE_DEFS()
- MOZ_DEFINES=$DEFS
- AC_SUBST(MOZ_DEFINES)
- rm -f confdefs.h
- mv confdefs.h.save confdefs.h
- AC_OUTPUT([
- config/autoconf.mk
- Makefile
- xpcom/Makefile
- xpcom/src/Makefile
- xpcom/src/loader/Makefile
- xpcom/src/module/Makefile
- xpcom/components/Makefile
- xpcom/test/Makefile
- xpcom/test/test_component/Makefile
- ])
|