phoenix-firestorm/indra/newview/CMakeLists.txt

2916 lines
85 KiB
CMake

# -*- cmake -*-
project(viewer)
include(00-Common)
# DON'T move Linking.cmake to its place in the alphabetized list below: it
# sets variables on which the 3p .cmake files depend.
include(Linking)
include(Boost)
include(bugsplat)
include(BuildPackagesInfo)
include(BuildVersion)
include(CMakeCopyIfDifferent)
include(CubemapToEquirectangularJS)
include(GLIB)
include(DragDrop)
include(EXPAT)
include(FMODSTUDIO)
include(GLOD) # <FS:Beq/> restore GLOD
include(Hunspell)
include(JPEGEncoderBasic)
include(LLAppearance)
include(LLAudio)
include(LLCA)
include(LLCommon)
include(LLCoreHttp)
include(LLImage)
include(LLKDU)
include(LLPhysicsExtensions)
include(LLPrimitive)
include(LLWindow)
include(NDOF)
include(NVAPI)
include(OPENAL)
include(OpenGL)
include(OpenSSL)
include(PNG)
include(TemplateCheck)
include(TinyEXR)
include(ThreeJS)
include(Tracy)
include(UI)
include(ViewerMiscLibs)
#include(ViewerManager) # <FS:Ansariel> Remove VMP
include(VisualLeakDetector)
include(VulkanGltf)
include(ZLIBNG)
include(URIPARSER)
include(LLPrimitive)
include(Growl)
include(ColladaDom)
include(jemalloc)
include(Discord)
# <FS:ND> if using ndPhysicsstub this variable will be unset, we don't need to build any stub code viewer side in that case
if( LLPHYSICSEXTENSIONS_SRC_DIR )
# </FS:ND>
if (NOT HAVOK_TPV)
# When using HAVOK_TPV, the library is precompiled, so no need for this
# Stub and probably havok lib itself is a hack, autobuild loads a 3p that really is a source tarball
# which includes a CMakeList.txt and then this whole source tree gets pushed into out build ... :/
# To make matters worse there is a internal assumption about the structure of the viewers CMake layout,
# which means we need to duct tape this togther ...
add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
# Another hack that works with newer cmake versions:
cmake_policy( SET CMP0079 NEW)
if( TARGET llphysicsextensionsstub )
target_link_libraries(llphysicsextensionsstub llcommon llmath)
endif()
if( TARGET llphysicsextensions )
target_link_libraries(llphysicsextensions llrender )
if (DARWIN)
target_compile_options( llphysicsextensions PRIVATE -Wno-unused-local-typedef)
endif (DARWIN)
endif()
endif (NOT HAVOK_TPV)
# <FS:ND>
endif( LLPHYSICSEXTENSIONS_SRC_DIR )
# </FS:ND>
set(viewer_SOURCE_FILES
# <Add FS includes below this line>
alfloaterregiontracker.cpp
animationexplorer.cpp
ao.cpp
aoengine.cpp
aoset.cpp
chatbar_as_cmdline.cpp
daeexport.cpp
dialogstack.cpp
exoflickr.cpp
exoflickrauth.cpp
exogroupmutelist.cpp
floatermedialists.cpp
fsareasearch.cpp
fsareasearchmenu.cpp
fsassetblacklist.cpp
fsavatarrenderpersistence.cpp
fsavatarsearchmenu.cpp
fsblocklistmenu.cpp
fschathistory.cpp
fschatoptionsmenu.cpp
fscommon.cpp
fsconsoleutils.cpp
fscontactsfriendsmenu.cpp
fsdata.cpp
fsdroptarget.cpp
fsexportperms.cpp
fsfloateraddtocontactset.cpp
fsfloaterassetblacklist.cpp
fsfloateravatarrendersettings.cpp
fsfloaterblocklist.cpp
fsfloatercontacts.cpp
fsfloatercontactsetconfiguration.cpp
fsfloaterexport.cpp
fsfloatergroup.cpp
fsfloatergrouptitles.cpp
fsfloaterimport.cpp
fsfloaterim.cpp
fsfloaterimcontainer.cpp
fsfloaternearbychat.cpp
fsfloaterpartialinventory.cpp
fsfloaterplacedetails.cpp
fsfloaterposestand.cpp
fsfloaterprotectedfolders.cpp
fsfloaterradar.cpp
fsfloatersearch.cpp
fsfloaterstatistics.cpp
fsfloaterstreamtitle.cpp
fsfloaterteleporthistory.cpp
fsfloatervoicecontrols.cpp
fsfloatervolumecontrols.cpp
fsfloatervramusage.cpp
fsfloaterwearablefavorites.cpp
fsfloaterwhitelisthelper.cpp
fskeywords.cpp
fslslbridge.cpp
fslslbridgerequest.cpp
fslslpreproc.cpp
fslslpreprocviewer.cpp
fsmoneytracker.cpp
fsnamelistavatarmenu.cpp
fsnearbychatbarlistener.cpp
fsnearbychatcontrol.cpp
fsnearbychathub.cpp
fsnearbychatvoicemonitor.cpp
fspanelblocklist.cpp
fspanelcontactsets.cpp
fspanelface.cpp
fspanelimcontrolpanel.cpp
fspanellogin.cpp
fspanelprefs.cpp
fspanelradar.cpp
fsparticipantlist.cpp
fspose.cpp
fsradar.cpp
fsradarentry.cpp
fsradarlistctrl.cpp
fsradarmenu.cpp
fsregioncross.cpp
fsscriptlibrary.cpp
fsscrolllistctrl.cpp
fsslurlcommand.cpp
fsworldmapmessage.cpp
lggbeamcolormapfloater.cpp
lggbeammapfloater.cpp
lggbeammaps.cpp
lggbeamscolors.cpp
lggcontactsets.cpp
lfsimfeaturehandler.cpp
llflickrconnect.cpp
llfloaterflickr.cpp
llpanelopenregionsettings.cpp
# <FS:Ansariel> [Legacy Bake]
llagentwearablesfetch.cpp
vjlocalmesh.cpp
vjfloaterlocalmesh.cpp
vjlocalmeshimportdae.cpp
gltfscenemanager.cpp
gltf/asset.cpp
gltf/accessor.cpp
gltf/primitive.cpp
gltf/animation.cpp
groupchatlistener.cpp
llaccountingcostmanager.cpp
llaisapi.cpp
llagent.cpp
llagentaccess.cpp
llagentbenefits.cpp
llagentcamera.cpp
llagentdata.cpp
llagentlanguage.cpp
llagentlistener.cpp
llagentpicksinfo.cpp
llagentpilot.cpp
llagentui.cpp
llagentwearables.cpp
llanimstatelabels.cpp
llappcorehttp.cpp
llappearancemgr.cpp
llappviewer.cpp
llappviewerlistener.cpp
llattachmentsmgr.cpp
llaudiosourcevo.cpp
llautoreplace.cpp
llavataractions.cpp
llavatariconctrl.cpp
llavatarlist.cpp
llavatarlistitem.cpp
llavatarrenderinfoaccountant.cpp
llavatarrendernotifier.cpp
llavatarpropertiesprocessor.cpp
llblockedlistitem.cpp
llblocklist.cpp
llbox.cpp
llbrowsernotification.cpp
llbuycurrencyhtml.cpp
llcallingcard.cpp
llchannelmanager.cpp
llchatbar.cpp
llchathistory.cpp
llchatitemscontainerctrl.cpp
llchatmsgbox.cpp
llchiclet.cpp
llchicletbar.cpp
llclassifiedinfo.cpp
llcofwearables.cpp
llcolorswatch.cpp
llcommanddispatcherlistener.cpp
llcommandhandler.cpp
llcommandlineparser.cpp
llcommunicationchannel.cpp
llcompilequeue.cpp
llconfirmationmanager.cpp
llcontrolavatar.cpp
llconversationlog.cpp
llconversationloglist.cpp
llconversationloglistitem.cpp
llconversationmodel.cpp
llconversationview.cpp
llcurrencyuimanager.cpp
llcylinder.cpp
lldateutil.cpp
lldebugmessagebox.cpp
lldebugview.cpp
lldeferredsounds.cpp
lldelayedgestureerror.cpp
lldirpicker.cpp
lldonotdisturbnotificationstorage.cpp
lldndbutton.cpp
lldrawable.cpp
lldrawpool.cpp
lldrawpoolalpha.cpp
lldrawpoolavatar.cpp
lldrawpoolbump.cpp
lldrawpoolmaterials.cpp
lldrawpoolpbropaque.cpp
lldrawpoolsimple.cpp
lldrawpoolsky.cpp
lldrawpoolterrain.cpp
lldrawpooltree.cpp
lldrawpoolwater.cpp
lldrawpoolwlsky.cpp
lldynamictexture.cpp
llemote.cpp
llenvironment.cpp
llestateinfomodel.cpp
lleventnotifier.cpp
lleventpoll.cpp
llexpandabletextbox.cpp
llexperiencelog.cpp
llexternaleditor.cpp
llface.cpp
llfasttimerview.cpp
llfavoritesbar.cpp
llfeaturemanager.cpp
llfetchedgltfmaterial.cpp
llfilepicker.cpp
llfilteredwearablelist.cpp
llfirstuse.cpp
llflexibleobject.cpp
llfloater360capture.cpp
llfloaterabout.cpp
llfloaterbvhpreview.cpp
llfloateraddpaymentmethod.cpp
llfloaterauction.cpp
llfloaterautoreplacesettings.cpp
llfloateravatar.cpp
llfloateravatarpicker.cpp
llfloateravatarrendersettings.cpp
llfloateravatartextures.cpp
llfloaterbanduration.cpp
llfloaterbeacons.cpp
llfloaterbigpreview.cpp
llfloaterbuildoptions.cpp
llfloaterbulkpermission.cpp
llfloaterbump.cpp
llfloaterbuy.cpp
llfloaterbuycontents.cpp
llfloaterbuycurrency.cpp
llfloaterbuycurrencyhtml.cpp
llfloaterbuyland.cpp
llfloatercamera.cpp
llfloatercamerapresets.cpp
llfloaterchangeitemthumbnail.cpp
llfloaterchatvoicevolume.cpp
llfloaterclassified.cpp
llfloatercolorpicker.cpp
llfloaterconversationlog.cpp
llfloaterconversationpreview.cpp
llfloatercreatelandmark.cpp
llfloaterdeleteprefpreset.cpp
llfloaterdestinations.cpp
llfloaterdisplayname.cpp
llfloatereditenvironmentbase.cpp
llfloatereditextdaycycle.cpp
llfloateremojipicker.cpp
llfloaterenvironmentadjust.cpp
llfloaterevent.cpp
llfloaterexperiencepicker.cpp
llfloaterexperienceprofile.cpp
llfloaterexperiences.cpp
llfloaterfixedenvironment.cpp
llfloaterfonttest.cpp
llfloaterforgetuser.cpp
llfloatergesture.cpp
llfloatergodtools.cpp
llfloatergotoline.cpp
llfloatergridstatus.cpp
llfloatergroupbulkban.cpp
llfloatergroupinvite.cpp
llfloatergroups.cpp
llfloaterhandler.cpp
llfloaterhelpbrowser.cpp
llfloaterhoverheight.cpp
llfloaterhowto.cpp
llfloaterhud.cpp
llfloaterimagepreview.cpp
llfloaterimsessiontab.cpp
llfloaterimsession.cpp
llfloaterimcontainer.cpp
llfloaterinspect.cpp
llfloaterinventorysettings.cpp
llfloaterinventorythumbnailshelper.cpp
llfloaterjoystick.cpp
llfloaterlagmeter.cpp
llfloaterland.cpp
llfloaterlandholdings.cpp
llfloaterlinkreplace.cpp
llfloaterloadprefpreset.cpp
llfloatermarketplacelistings.cpp
llfloatermap.cpp
llfloatermediasettings.cpp
llfloatermemleak.cpp
llfloatermodelpreview.cpp
llfloatermodeluploadbase.cpp
llfloatermyscripts.cpp
llfloatermyenvironment.cpp
llfloaternamedesc.cpp
llfloaternewfeaturenotification.cpp
llfloaternotificationsconsole.cpp
llfloaternotificationstabbed.cpp
llfloaterobjectweights.cpp
llfloateropenobject.cpp
llfloatersimplesnapshot.cpp
llfloaterpathfindingcharacters.cpp
llfloaterpathfindingconsole.cpp
llfloaterpathfindinglinksets.cpp
llfloaterpathfindingobjects.cpp
llfloaterpay.cpp
# llfloaterperformance.cpp
fsfloaterperformance.cpp # <FS:Beq> restore fs perf floater
llfloaterperms.cpp
llfloaterpostprocess.cpp
llfloaterprofile.cpp
llfloaterpreference.cpp
# llfloaterpreferencesgraphicsadvanced.cpp
llfloaterpreferenceviewadvanced.cpp
llfloaterpreviewtrash.cpp
llfloaterprofiletexture.cpp
llfloaterproperties.cpp # <FS:Ansariel> Keep legacy properties floater
llfloaterregiondebugconsole.cpp
llfloaterregioninfo.cpp
llfloaterreporter.cpp
llfloaterregionrestarting.cpp
llfloatersavecamerapreset.cpp
llfloatersaveprefpreset.cpp
llfloatersceneloadstats.cpp
llfloaterscriptdebug.cpp
llfloaterscriptedprefs.cpp
llfloaterscriptlimits.cpp
llfloaterscriptrecover.cpp
llfloatersearch.cpp
llfloatersearchreplace.cpp
llfloatersellland.cpp
llfloatersettingsdebug.cpp
llfloatersidepanelcontainer.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloaterspellchecksettings.cpp
llfloatertelehub.cpp
llfloatertestinspectors.cpp
llfloatertestlistview.cpp
llfloatertools.cpp
llfloatertopobjects.cpp
llfloatertos.cpp
llfloatertoybox.cpp
llfloatertranslationsettings.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
llfloatervoiceeffect.cpp
llfloatervoicevolume.cpp
llfloaterwebcontent.cpp
llfloaterwhitelistentry.cpp
llfloaterwindowsize.cpp
llfloaterworldmap.cpp
llfolderviewmodelinventory.cpp
llfollowcam.cpp
llfriendcard.cpp
llflyoutcombobtn.cpp
llgesturelistener.cpp
llgesturemgr.cpp
llgiveinventory.cpp
llglsandbox.cpp
llgltfmateriallist.cpp
llgltfmaterialpreviewmgr.cpp
llgroupactions.cpp
llgroupiconctrl.cpp
llgrouplist.cpp
llgroupmgr.cpp
llhasheduniqueid.cpp
llhints.cpp
llhttpretrypolicy.cpp
llhudeffect.cpp
llhudeffectbeam.cpp
llhudeffectlookat.cpp
llhudeffectpointat.cpp
llhudeffecttrail.cpp
llhudeffectblob.cpp
llhudicon.cpp
llhudmanager.cpp
llhudnametag.cpp
llhudobject.cpp
llhudrender.cpp
llhudtext.cpp
llhudview.cpp
llimagefiltersmanager.cpp
llimhandler.cpp
llimprocessing.cpp
llimview.cpp
llinspect.cpp
llinspectavatar.cpp
llinspectgroup.cpp
llinspectobject.cpp
llinspectremoteobject.cpp
llinspecttexture.cpp
llinspecttoast.cpp
llinventorybridge.cpp
llinventoryfilter.cpp
llinventoryfunctions.cpp
llinventorygallery.cpp
llinventorygallerymenu.cpp
llinventoryicon.cpp
llinventoryitemslist.cpp
llinventorylistitem.cpp
llinventorymodel.cpp
llinventorymodelbackgroundfetch.cpp
llinventoryobserver.cpp
llinventorypanel.cpp
lljoystickbutton.cpp
llkeyconflict.cpp
lllandmarkactions.cpp
lllandmarklist.cpp
lllegacyatmospherics.cpp
lllistcontextmenu.cpp
lllistview.cpp
lllocalbitmaps.cpp
lllocalgltfmaterials.cpp
lllocationhistory.cpp
lllocationinputctrl.cpp
lllogchat.cpp
llloginhandler.cpp
lllogininstance.cpp
llmachineid.cpp
llmanip.cpp
llmaniprotate.cpp
llmanipscale.cpp
llmaniptranslate.cpp
llmarketplacefunctions.cpp
llmarketplacenotifications.cpp
llmaterialeditor.cpp
llmaterialmgr.cpp
llmediactrl.cpp
llmediadataclient.cpp
llmenuoptionpathfindingrebakenavmesh.cpp
llmeshrepository.cpp
llmimetypes.cpp
llmodelpreview.cpp
llmorphview.cpp
llmoveview.cpp
llmutelist.cpp
llnamebox.cpp
llnameeditor.cpp
llnamelistctrl.cpp
llnavigationbar.cpp
llfloaterimnearbychat.cpp
llfloaterimnearbychathandler.cpp
llfloaterimnearbychatlistener.cpp
llnetmap.cpp
llnotificationalerthandler.cpp
llnotificationgrouphandler.cpp
llnotificationhandlerutil.cpp
llnotificationhinthandler.cpp
llnotificationlistitem.cpp
llnotificationlistview.cpp
llnotificationmanager.cpp
llnotificationofferhandler.cpp
llnotificationscripthandler.cpp
llnotificationstorage.cpp
llnotificationtiphandler.cpp
lloutfitgallery.cpp
lloutfitslist.cpp
lloutfitobserver.cpp
lloutputmonitorctrl.cpp
llpanelappearancetab.cpp
llpanelavatar.cpp
llpanelavatartag.cpp
llpanelblockedlist.cpp
llpanelclassified.cpp
llpanelcontents.cpp
llpaneleditsky.cpp
llpaneleditwater.cpp
llpaneleditwearable.cpp
llpanelemojicomplete.cpp
llpanelenvironment.cpp
llpanelexperiencelisteditor.cpp
llpanelexperiencelog.cpp
llpanelexperiencepicker.cpp
llpanelexperiences.cpp
llpanelface.cpp
llpanelgenerictip.cpp
llpanelgroup.cpp
llpanelgroupcreate.cpp
llpanelgroupbulk.cpp
llpanelgroupbulkban.cpp
llpanelgroupexperiences.cpp
llpanelgroupgeneral.cpp
llpanelgroupinvite.cpp
llpanelgrouplandmoney.cpp
llpanelgroupnotices.cpp
llpanelgrouproles.cpp
llpanelhome.cpp
llpanelland.cpp
llpanellandaudio.cpp
llpanellandmarkinfo.cpp
llpanellandmarks.cpp
llpanellandmedia.cpp
llpanellogin.cpp
llpanelloginlistener.cpp
llpanelmaininventory.cpp
llpanelmarketplaceinbox.cpp
llpanelmarketplaceinboxinventory.cpp
llpanelmediasettingsgeneral.cpp
llpanelmediasettingspermissions.cpp
llpanelmediasettingssecurity.cpp
llpanelnearbymedia.cpp
llpanelobject.cpp
llpanelobjectinventory.cpp
llpanelonlinestatus.cpp
llpaneloutfitedit.cpp
llpaneloutfitsinventory.cpp
llpanelpeople.cpp
llpanelpeoplemenus.cpp
llpanelpermissions.cpp
llpanelplaceinfo.cpp
llpanelplaceprofile.cpp
llpanelplaces.cpp
llpanelplacestab.cpp
llpanelpresetscamerapulldown.cpp
llpanelpresetspulldown.cpp
llpanelprimmediacontrols.cpp
llpanelprofile.cpp
llpanelprofileclassifieds.cpp
llpanelprofilepicks.cpp
llpanelsnapshot.cpp
llpanelsnapshotinventory.cpp
llpanelsnapshotlocal.cpp
llpanelsnapshotoptions.cpp
llpanelsnapshotpostcard.cpp
llpanelsnapshotprofile.cpp
llpanelteleporthistory.cpp
llpaneltiptoast.cpp
llpanelvoiceeffect.cpp
#llpaneltopinfobar.cpp # <FS:Zi> unused
llpanelpulldown.cpp
llpanelvoicedevicesettings.cpp
llpanelvolume.cpp
llpanelvolumepulldown.cpp
llpanelwearing.cpp
llparcelselection.cpp
llparticipantlist.cpp
llpatchvertexarray.cpp
llpathfindingcharacter.cpp
llpathfindingcharacterlist.cpp
llpathfindinglinkset.cpp
llpathfindinglinksetlist.cpp
llpathfindingmanager.cpp
llpathfindingnavmesh.cpp
llpathfindingnavmeshstatus.cpp
llpathfindingnavmeshzone.cpp
llpathfindingobject.cpp
llpathfindingobjectlist.cpp
llpathfindingpathtool.cpp
llpersistentnotificationstorage.cpp
llphysicsmotion.cpp
llphysicsshapebuilderutil.cpp
llpipelinelistener.cpp
llplacesinventorybridge.cpp
llplacesinventorypanel.cpp
llplacesfolderview.cpp
llpopupview.cpp
llpostcard.cpp
llpresetsmanager.cpp
llpreview.cpp
llpreviewanim.cpp
llpreviewgesture.cpp
llpreviewnotecard.cpp
llpreviewscript.cpp
llpreviewsound.cpp
llpreviewtexture.cpp
llproductinforequest.cpp
llprogressview.cpp
llrecentpeople.cpp
llreflectionmap.cpp
llreflectionmapmanager.cpp
llheroprobemanager.cpp
llregioninfomodel.cpp
llregionposition.cpp
llremoteparcelrequest.cpp
llsaveoutfitcombobtn.cpp
#llsaveoutfitcombobtn.cpp #<FS:Ansariel> Unused
llscenemonitor.cpp
llsceneview.cpp
llscreenchannel.cpp
llscripteditor.cpp
llscriptfloater.cpp
llscrollingpanelparam.cpp
llscrollingpanelparambase.cpp
llsculptidsize.cpp
llsearchableui.cpp
llsearchcombobox.cpp
llsearchhistory.cpp
llsecapi.cpp
llsechandler_basic.cpp
llselectmgr.cpp
llsetkeybinddialog.cpp
llsettingspicker.cpp
llsettingsvo.cpp
llshareavatarhandler.cpp
llsidepanelappearance.cpp
llsidepanelinventory.cpp
llsidepanelinventorysubpanel.cpp
llsidepaneliteminfo.cpp
llsidepaneltaskinfo.cpp
llsidetraypanelcontainer.cpp
llskinningutil.cpp
llsky.cpp
#llslurl.cpp #<FS:AW optional opensim support>
llsnapshotlivepreview.cpp
llspatialpartition.cpp
llspeakers.cpp
llspeakingindicatormanager.cpp
llsplitbutton.cpp
llsprite.cpp
llstartup.cpp
llstartuplistener.cpp
llstatusbar.cpp
llstylemap.cpp
llsurface.cpp
llsurfacepatch.cpp
llsyntaxid.cpp
llsyswellitem.cpp
llsyswellwindow.cpp
llteleporthistory.cpp
llteleporthistorystorage.cpp
lltexturecache.cpp
lltexturectrl.cpp
lltexturefetch.cpp
lltextureinfo.cpp
lltextureinfodetails.cpp
lltexturestats.cpp
lltextureview.cpp
llthumbnailctrl.cpp
lltinygltfhelper.cpp
lltoast.cpp
lltoastalertpanel.cpp
lltoastgroupnotifypanel.cpp
lltoastimpanel.cpp
lltoastnotifypanel.cpp
lltoastpanel.cpp
lltoastscripttextbox.cpp
lltoastscriptquestion.cpp
lltool.cpp
lltoolbarview.cpp
lltoolbrush.cpp
lltoolcomp.cpp
lltooldraganddrop.cpp
lltoolface.cpp
lltoolfocus.cpp
lltoolgrab.cpp
lltoolgun.cpp
lltoolindividual.cpp
lltoolmgr.cpp
lltoolmorph.cpp
lltoolobjpicker.cpp
lltoolpie.cpp
lltoolpipette.cpp
lltoolplacer.cpp
lltoolselect.cpp
lltoolselectland.cpp
lltoolselectrect.cpp
lltracker.cpp
lltrackpicker.cpp
lltransientdockablefloater.cpp
lltransientfloatermgr.cpp
lltranslate.cpp
lluiavatar.cpp
lluilistener.cpp
lluploaddialog.cpp
llurl.cpp
llurldispatcher.cpp
llurldispatcherlistener.cpp
llurlfloaterdispatchhandler.cpp
llurlhistory.cpp
llurllineeditorctrl.cpp
llurlwhitelist.cpp
llversioninfo.cpp
llviewchildren.cpp
llviewerassetstats.cpp
llviewerassetstorage.cpp
llviewerassettype.cpp
llviewerassetupload.cpp
llviewerattachmenu.cpp
llvieweraudio.cpp
llviewercamera.cpp
llviewerchat.cpp
llviewercontrol.cpp
llviewercontrollistener.cpp
llviewerdisplay.cpp
llviewerdisplayname.cpp
llviewerfloaterreg.cpp
llviewerfoldertype.cpp
llviewergenericmessage.cpp
llviewergesture.cpp
llviewerhelp.cpp
llviewerhelputil.cpp
llviewerhome.cpp
llviewerinventory.cpp
llviewerjoint.cpp
llviewerjointattachment.cpp
llviewerjointmesh.cpp
llviewerjoystick.cpp
llviewerinput.cpp
llviewerlayer.cpp
llviewermedia.cpp
llviewermedia_streamingaudio.cpp
llviewermediafocus.cpp
llviewermenu.cpp
llviewermenufile.cpp
llviewermessage.cpp
#llviewernetwork.cpp #<FS:AW optional opensim support>
llviewerobject.cpp
llviewerobjectlist.cpp
llvieweroctree.cpp
llviewerparcelaskplay.cpp
llviewerparcelmedia.cpp
llviewerparcelmediaautoplay.cpp
llviewerparcelmgr.cpp
llviewerparceloverlay.cpp
llviewerpartsim.cpp
llviewerpartsource.cpp
llviewerregion.cpp
llviewershadermgr.cpp
llviewerstats.cpp
llviewerstatsrecorder.cpp
llviewertexlayer.cpp
llviewertexteditor.cpp
llviewertexture.cpp
llviewertextureanim.cpp
llviewertexturelist.cpp
llviewerthrottle.cpp
llviewerwearable.cpp
llviewerwindow.cpp
llviewerwindowlistener.cpp
llvisualeffect.cpp
llvlcomposition.cpp
llvlmanager.cpp
llvoavatar.cpp
llvoavatarself.cpp
llvocache.cpp
llvograss.cpp
llvoicecallhandler.cpp
llvoicechannel.cpp
llvoiceclient.cpp
llvoicevisualizer.cpp
llvoicevivox.cpp
llvoinventorylistener.cpp
llvopartgroup.cpp
llvosky.cpp
llvosurfacepatch.cpp
llvotree.cpp
llvovolume.cpp
llvowater.cpp
llvowlsky.cpp
llwatchdog.cpp
llwearableitemslist.cpp
llwearablelist.cpp
llweb.cpp
llwebprofile.cpp
llwind.cpp
llwindowlistener.cpp
llwlhandlers.cpp
llworld.cpp
llworldmap.cpp
llworldmapmessage.cpp
llworldmipmap.cpp
llworldmapview.cpp
llxmlrpclistener.cpp
llxmlrpctransaction.cpp
noise.cpp
particleeditor.cpp
permissionstracker.cpp
piemenu.cpp
pieseparator.cpp
pieslice.cpp
pipeline.cpp
qtoolalign.cpp
quickprefs.cpp
rlvactions.cpp
rlvenvironment.cpp
rlvcommon.cpp
rlveffects.cpp
rlvextensions.cpp
rlvfloaters.cpp
rlvhandler.cpp
rlvhelper.cpp
rlvinventory.cpp
rlvlocks.cpp
rlvui.cpp
sanitycheck.cpp
streamtitledisplay.cpp
utilitybar.cpp
NACLantispam.cpp
NACLfloaterexploresounds.cpp
)
if (OPENSIM)
list(APPEND viewer_SOURCE_FILES
fsgridhandler.cpp
fsslurl.cpp
)
else (OPENSIM)
list(APPEND viewer_SOURCE_FILES
llslurl.cpp
llviewernetwork.cpp
)
endif (OPENSIM)
set(VIEWER_BINARY_NAME "firestorm-bin" CACHE STRING
"The name of the viewer executable to create.")
set(viewer_HEADER_FILES
CMakeLists.txt
ViewerInstall.cmake
# <Add FS includes below this line>
alfloaterregiontracker.h
animationexplorer.h
ao.h
aoengine.h
aoset.h
chatbar_as_cmdline.h
daeexport.h
dialogstack.h
exoflickr.h
exoflickrauth.h
exogroupmutelist.h
floatermedialists.h
fsareasearch.h
fsareasearchmenu.h
fsassetblacklist.h
fsavatarrenderpersistence.h
fsavatarsearchmenu.h
fsblocklistmenu.h
fschathistory.h
fschatoptionsmenu.h
fsdispatchclassifiedclickthrough.h
fscommon.h
fsconsoleutils.h
fscontactsfriendsmenu.h
fsdata.h
fsdroptarget.h
fsexportperms.h
fsfloateraddtocontactset.h
fsfloaterassetblacklist.h
fsfloateravatarrendersettings.h
fsfloaterblocklist.h
fsfloatercontacts.h
fsfloatercontactsetconfiguration.h
fsfloaterexport.h
fsfloatergroup.h
fsfloatergrouptitles.h
fsfloaterimport.h
fsfloaterim.h
fsfloaterimcontainer.h
fsfloaternearbychat.h
fsfloaterpartialinventory.h
fsfloaterplacedetails.h
fsfloaterposestand.h
fsfloaterprotectedfolders.h
fsfloaterradar.h
fsfloatersearch.h
fsfloaterstatistics.h
fsfloaterstreamtitle.h
fsfloaterteleporthistory.h
fsfloatervoicecontrols.h
fsfloatervolumecontrols.h
fsfloatervramusage.h
fsfloaterwearablefavorites.h
fsfloaterwhitelisthelper.h
fsgridhandler.h
fskeywords.h
fslslbridge.h
fslslbridgerequest.h
fslslpreproc.h
fslslpreprocviewer.h
fsmoneytracker.h
fsnamelistavatarmenu.h
fsnearbychatbarlistener.h
fsnearbychatcontrol.h
fsnearbychathub.h
fsnearbychatvoicemonitor.h
fspanelblocklist.h
fspanelcontactsets.h
fspanelface.h
fspanelimcontrolpanel.h
fspanellogin.h
fspanelprefs.h
fspanelradar.h
fsparticipantlist.h
fspose.h
fsradar.h
fsradarentry.h
fsradarlistctrl.h
fsradarmenu.h
fsregioncross.h
fsscriptlibrary.h
fsscrolllistctrl.h
fsslurl.h
fsslurlcommand.h
fsworldmapmessage.h
lggbeamcolormapfloater.h
lggbeammapfloater.h
lggbeammaps.h
lggbeamscolors.h
lggcontactsets.h
lfsimfeaturehandler.h
llflickrconnect.h
llfloaterflickr.h
# <FS:Ansariel> [Legacy Bake]
llagentwearablesfetch.h
vjlocalmesh.h
vjfloaterlocalmesh.h
vjlocalmeshimportdae.h
gltfscenemanager.h
groupchatlistener.h
gltf/asset.h
gltf/accessor.h
gltf/buffer_util.h
gltf/primitive.h
gltf/animation.h
llaccountingcost.h
llaccountingcostmanager.h
llaisapi.h
llagent.h
llagentaccess.h
llagentbenefits.h
llagentcamera.h
llagentdata.h
llagentlanguage.h
llagentlistener.h
llagentpicksinfo.h
llagentpilot.h
llagentui.h
llagentwearables.h
llanimstatelabels.h
llappcorehttp.h
llappearance.h
llappearancemgr.h
llappviewer.h
llappviewerlistener.h
llattachmentsmgr.h
llaudiosourcevo.h
llautoreplace.h
llavataractions.h
llavatariconctrl.h
llavatarlist.h
llavatarlistitem.h
llavatarpropertiesprocessor.h
llavatarrenderinfoaccountant.h
llavatarrendernotifier.h
llblockedlistitem.h
llblocklist.h
llbox.h
llbuycurrencyhtml.h
llcallingcard.h
llcapabilityprovider.h
llchannelmanager.h
llchatbar.h
llchathistory.h
llchatitemscontainerctrl.h
llchatmsgbox.h
llchiclet.h
llchicletbar.h
llclassifiedinfo.h
llcofwearables.h
llcolorswatch.h
llcommanddispatcherlistener.h
llcommandhandler.h
llcommandlineparser.h
llcommunicationchannel.h
llcompilequeue.h
llconfirmationmanager.h
llcontrolavatar.h
llconversationlog.h
llconversationloglist.h
llconversationloglistitem.h
llconversationmodel.h
llconversationview.h
llcurrencyuimanager.h
llcylinder.h
lldateutil.h
lldebugmessagebox.h
lldebugview.h
lldeferredsounds.h
lldelayedgestureerror.h
lldirpicker.h
lldonotdisturbnotificationstorage.h
lldndbutton.h
lldrawable.h
lldrawpool.h
lldrawpoolalpha.h
lldrawpoolavatar.h
lldrawpoolbump.h
lldrawpoolmaterials.h
lldrawpoolpbropaque.h
lldrawpoolsimple.h
lldrawpoolsky.h
lldrawpoolterrain.h
lldrawpooltree.h
lldrawpoolwater.h
lldrawpoolwlsky.h
lldynamictexture.h
llemote.h
llenvironment.h
llestateinfomodel.h
lleventnotifier.h
lleventpoll.h
llexpandabletextbox.h
llexperiencelog.h
llexternaleditor.h
llface.h
llfasttimerview.h
llfavoritesbar.h
llfeaturemanager.h
llfetchedgltfmaterial.h
llfilepicker.h
llfilteredwearablelist.h
llfirstuse.h
llflexibleobject.h
llfloater360capture.h
llfloaterabout.h
llfloaterbvhpreview.h
llfloateraddpaymentmethod.h
llfloaterauction.h
llfloaterautoreplacesettings.h
llfloateravatar.h
llfloateravatarpicker.h
llfloateravatarrendersettings.h
llfloateravatartextures.h
llfloaterbanduration.h
llfloaterbeacons.h
llfloaterbigpreview.h
llfloaterbuildoptions.h
llfloaterbulkpermission.h
llfloaterbump.h
llfloaterbuy.h
llfloaterbuycontents.h
llfloaterbuycurrency.h
llfloaterbuycurrencyhtml.h
llfloaterbuyland.h
llfloatercamerapresets.h
llfloaterchangeitemthumbnail.h
llfloatercamera.h
llfloaterchatvoicevolume.h
llfloaterclassified.h
llfloatercolorpicker.h
llfloaterconversationlog.h
llfloaterconversationpreview.h
llfloatercreatelandmark.h
llfloaterdeleteprefpreset.h
llfloaterdestinations.h
llfloaterdisplayname.h
llfloatereditenvironmentbase.h
llfloatereditextdaycycle.h
llfloateremojipicker.h
llfloaterenvironmentadjust.h
llfloaterevent.h
llfloaterexperiencepicker.h
llfloaterexperienceprofile.h
llfloaterexperiences.h
llfloaterfixedenvironment.h
llfloaterfonttest.h
llfloaterforgetuser.h
llfloatergesture.h
llfloatergodtools.h
llfloatergotoline.h
llfloatergridstatus.h
llfloatergroupbulkban.h
llfloatergroupinvite.h
llfloatergroups.h
llfloaterhandler.h
llfloaterhelpbrowser.h
llfloaterhoverheight.h
llfloaterhowto.h
llfloaterhud.h
llfloaterimagepreview.h
llfloaterimnearbychat.h
llfloaterimnearbychathandler.h
llfloaterimnearbychatlistener.h
llfloaterimsessiontab.h
llfloaterimsession.h
llfloaterimcontainer.h
llfloaterinspect.h
llfloaterinventorysettings.h
llfloaterinventorythumbnailshelper.h
llfloaterjoystick.h
llfloaterlagmeter.h
llfloaterland.h
llfloaterlandholdings.h
llfloaterlinkreplace.h
llfloaterloadprefpreset.h
llfloatermap.h
llfloatermarketplacelistings.h
llfloatermediasettings.h
llfloatermemleak.h
llfloatermodelpreview.h
llfloatermodeluploadbase.h
llfloatermyscripts.h
llfloatermyenvironment.h
llfloaternamedesc.h
llfloaternewfeaturenotification.h
llfloaternotificationsconsole.h
llfloaternotificationstabbed.h
llfloaterobjectweights.h
llfloateropenobject.h
llfloatersimplesnapshot.h
llfloaterpathfindingcharacters.h
llfloaterpathfindingconsole.h
llfloaterpathfindinglinksets.h
llfloaterpathfindingobjects.h
llfloaterpay.h
# llfloaterperformance.h <FS:Beq/> replaced with fs version due to large changes and likelihood that LL version will not release.
fsfloaterperformance.h
llfloaterperms.h
llfloaterpostprocess.h
llfloaterprofile.h
llfloaterpreference.h
# llfloaterpreferencesgraphicsadvanced.h
llfloaterpreferenceviewadvanced.h
llfloaterpreviewtrash.h
llfloaterprofiletexture.h
llfloaterproperties.h # <FS:Ansariel> Keep legacy properties floater
llfloaterregiondebugconsole.h
llfloaterregioninfo.h
llfloaterreporter.h
llfloaterregionrestarting.h
llfloatersavecamerapreset.h
llfloatersaveprefpreset.h
llfloatersceneloadstats.h
llfloaterscriptdebug.h
llfloaterscriptedprefs.h
llfloaterscriptlimits.h
llfloaterscriptrecover.h
llfloatersearch.h
llfloatersearchreplace.h
llfloatersellland.h
llfloatersettingsdebug.h
llfloatersidepanelcontainer.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloaterspellchecksettings.h
llfloatertelehub.h
llfloatertestinspectors.h
llfloatertestlistview.h
llfloatertools.h
llfloatertopobjects.h
llfloatertos.h
llfloatertoybox.h
llfloatertranslationsettings.h
llfloateruipreview.h
llfloaterurlentry.h
llfloatervoiceeffect.h
llfloatervoicevolume.h
llfloaterwebcontent.h
llfloaterwhitelistentry.h
llfloaterwindowsize.h
llfloaterworldmap.h
llfolderviewmodelinventory.h
llfollowcam.h
llfriendcard.h
llflyoutcombobtn.h
llgesturelistener.h
llgesturemgr.h
llgiveinventory.h
llgltfmateriallist.h
llgltfmaterialpreviewmgr.h
llgroupactions.h
llgroupiconctrl.h
llgrouplist.h
llgroupmgr.h
llhasheduniqueid.h
llhints.h
llhttpretrypolicy.h
llhudeffect.h
llhudeffectbeam.h
llhudeffectlookat.h
llhudeffectpointat.h
llhudeffecttrail.h
llhudeffectblob.h
llhudicon.h
llhudmanager.h
llhudnametag.h
llhudobject.h
llhudrender.h
llhudtext.h
llhudview.h
llimagefiltersmanager.h
llimprocessing.h
llimview.h
llinspect.h
llinspectavatar.h
llinspectgroup.h
llinspectobject.h
llinspectremoteobject.h
llinspecttexture.h
llinspecttoast.h
llinventorybridge.h
llinventoryfilter.h
llinventoryfunctions.h
llinventorygallery.h
llinventorygallerymenu.h
llinventoryicon.h
llinventoryitemslist.h
llinventorylistitem.h
llinventorymodel.h
llinventorymodelbackgroundfetch.h
llinventoryobserver.h
llinventorypanel.h
lljoystickbutton.h
llkeyconflict.h
lllandmarkactions.h
lllandmarklist.h
lllightconstants.h
lllistcontextmenu.h
lllistview.h
lllocalbitmaps.h
lllocalgltfmaterials.h
lllocationhistory.h
lllocationinputctrl.h
lllogchat.h
llloginhandler.h
lllogininstance.h
llmachineid.h
llmanip.h
llmaniprotate.h
llmanipscale.h
llmaniptranslate.h
llmarketplacefunctions.h
llmarketplacenotifications.h
llmaterialeditor.h
llmaterialmgr.h
llmediactrl.h
llmediadataclient.h
llmenuoptionpathfindingrebakenavmesh.h
llmeshrepository.h
llmimetypes.h
llmodelpreview.h
llmorphview.h
llmoveview.h
llmutelist.h
llnamebox.h
llnameeditor.h
llnamelistctrl.h
llnavigationbar.h
llnetmap.h
llnotificationhandler.h
llnotificationlistitem.h
llnotificationlistview.h
llnotificationmanager.h
llnotificationstorage.h
lloutfitgallery.h
lloutfitslist.h
lloutfitobserver.h
lloutputmonitorctrl.h
llpanelappearancetab.h
llpanelavatar.h
llpanelavatartag.h
llpanelblockedlist.h
llpanelclassified.h
llpanelcontents.h
llpaneleditsky.h
llpaneleditwater.h
llpaneleditwearable.h
llpanelemojicomplete.h
llpanelenvironment.h
llpanelexperiencelisteditor.h
llpanelexperiencelog.h
llpanelexperiencepicker.h
llpanelexperiences.h
llpanelface.h
llpanelgenerictip.h
llpanelgroup.h
llpanelgroupcreate.h
llpanelgroupbulk.h
llpanelgroupbulkimpl.h
llpanelgroupbulkban.h
llpanelgroupexperiences.h
llpanelgroupgeneral.h
llpanelgroupinvite.h
llpanelgrouplandmoney.h
llpanelgroupnotices.h
llpanelgrouproles.h
llpanelhome.h
llpanelland.h
llpanellandaudio.h
llpanellandmarkinfo.h
llpanellandmarks.h
llpanellandmedia.h
llpanellogin.h
llpanelloginlistener.h
llpanelmaininventory.h
llpanelmarketplaceinbox.h
llpanelmarketplaceinboxinventory.h
llpanelmediasettingsgeneral.h
llpanelmediasettingspermissions.h
llpanelmediasettingssecurity.h
llpanelnearbymedia.h
llpanelobject.h
llpanelobjectinventory.h
llpanelonlinestatus.h
llpaneloutfitedit.h
llpaneloutfitsinventory.h
llpanelpeople.h
llpanelpeoplemenus.h
llpanelpermissions.h
llpanelplaceinfo.h
llpanelplaceprofile.h
llpanelplaces.h
llpanelplacestab.h
llpanelpresetscamerapulldown.h
llpanelpresetspulldown.h
llpanelprimmediacontrols.h
llpanelprofile.h
llpanelprofileclassifieds.h
llpanelprofilepicks.h
llpanelsnapshot.h
llpanelteleporthistory.h
llpaneltiptoast.h
llpanelpulldown.h
llpanelvoicedevicesettings.h
llpanelvoiceeffect.h
#llpaneltopinfobar.h # <FS:Zi> unused
llpanelvolume.h
llpanelvolumepulldown.h
llpanelwearing.h
llparcelselection.h
llparticipantlist.h
llpatchvertexarray.h
llpathfindingcharacter.h
llpathfindingcharacterlist.h
llpathfindinglinkset.h
llpathfindinglinksetlist.h
llpathfindingmanager.h
llpathfindingnavmesh.h
llpathfindingnavmeshstatus.h
llpathfindingnavmeshzone.h
llpathfindingobject.h
llpathfindingobjectlist.h
llpathfindingpathtool.h
llpersistentnotificationstorage.h
llphysicsmotion.h
llphysicsshapebuilderutil.h
llpipelinelistener.h
llplacesinventorybridge.h
llplacesinventorypanel.h
llplacesfolderview.h
llpopupview.h
llpostcard.h
llpresetsmanager.h
llpreview.h
llpreviewanim.h
llpreviewgesture.h
llpreviewnotecard.h
llpreviewscript.h
llpreviewsound.h
llpreviewtexture.h
llproductinforequest.h
llprogressview.h
llrecentpeople.h
llreflectionmap.h
llreflectionmapmanager.h
llheroprobemanager.h
llregioninfomodel.h
llregionposition.h
llremoteparcelrequest.h
llresourcedata.h
llrootview.h
#llsavedsettingsglue.h #<FS:Ansariel> Unused
llscenemonitor.h
llsceneview.h
llscreenchannel.h
llscripteditor.h
llscriptfloater.h
llscriptruntimeperms.h
llscrollingpanelparam.h
llscrollingpanelparambase.h
llsculptidsize.h
llsearchableui.h
llsearchcombobox.h
llsearchhistory.h
llsecapi.h
llsechandler_basic.h
llselectmgr.h
llsetkeybinddialog.h
llsettingspicker.h
llsettingsvo.h
llsidepanelappearance.h
llsidepanelinventory.h
llsidepanelinventorysubpanel.h
llsidepaneliteminfo.h
llsidepaneltaskinfo.h
llsidetraypanelcontainer.h
llskinningutil.h
llsky.h
llslurl.h
llsnapshotlivepreview.h
llsnapshotmodel.h
llspatialpartition.h
llspeakers.h
llspeakingindicatormanager.h
llsplitbutton.h
llsprite.h
llstartup.h
llstartuplistener.h
llstatusbar.h
llstylemap.h
llsurface.h
llsurfacepatch.h
llsyntaxid.h
llsyswellitem.h
llsyswellwindow.h
lltable.h
llteleporthistory.h
llteleporthistorystorage.h
lltexturecache.h
lltexturectrl.h
lltexturefetch.h
lltextureinfo.h
lltextureinfodetails.h
lltexturestats.h
lltextureview.h
llthumbnailctrl.h
lltinygltfhelper.h
lltoast.h
lltoastalertpanel.h
lltoastgroupnotifypanel.h
lltoastimpanel.h
lltoastnotifypanel.h
lltoastpanel.h
lltoastscripttextbox.h
lltoastscriptquestion.h
lltool.h
lltoolbarview.h
lltoolbrush.h
lltoolcomp.h
lltooldraganddrop.h
lltoolface.h
lltoolfocus.h
lltoolgrab.h
lltoolgun.h
lltoolindividual.h
lltoolmgr.h
lltoolmorph.h
lltoolobjpicker.h
lltoolpie.h
lltoolpipette.h
lltoolplacer.h
lltoolselect.h
lltoolselectland.h
lltoolselectrect.h
lltracker.h
lltrackpicker.h
lltransientdockablefloater.h
lltransientfloatermgr.h
lltranslate.h
lluiconstants.h
lluiavatar.h
lluilistener.h
lluploaddialog.h
lluploadfloaterobservers.h
llurl.h
llurldispatcher.h
llurldispatcherlistener.h
llurlfloaterdispatchhandler.h
llurlhistory.h
llurllineeditorctrl.h
llurlwhitelist.h
llversioninfo.h
llviewchildren.h
llviewerassetstats.h
llviewerassetstorage.h
llviewerassettype.h
llviewerassetupload.h
llviewerattachmenu.h
llvieweraudio.h
llviewercamera.h
llviewerchat.h
llviewercontrol.h
llviewercontrollistener.h
llviewerdisplay.h
llviewerdisplayname.h
llviewerfloaterreg.h
llviewerfoldertype.h
llviewergenericmessage.h
llviewergesture.h
llviewerhelp.h
llviewerhome.h
llviewerinventory.h
llviewerjoint.h
llviewerjointattachment.h
llviewerjointmesh.h
llviewerjoystick.h
llviewerinput.h
llviewerlayer.h
llviewermedia.h
llviewermediafocus.h
llviewermediaobserver.h
llviewermenu.h
llviewermenufile.h
llviewermessage.h
llviewernetwork.h
llviewerobject.h
llviewerobjectlist.h
llvieweroctree.h
llviewerparcelaskplay.h
llviewerparcelmedia.h
llviewerparcelmediaautoplay.h
llviewerparcelmgr.h
llviewerparceloverlay.h
llviewerpartsim.h
llviewerpartsource.h
llviewerprecompiledheaders.h
llviewerregion.h
llviewershadermgr.h
llviewerstats.h
llviewerstatsrecorder.h
llviewertexlayer.h
llviewertexteditor.h
llviewertexture.h
llviewertextureanim.h
llviewertexturelist.h
llviewerthrottle.h
llviewerwearable.h
llviewerwindow.h
llviewerwindowlistener.h
llvisualeffect.h
llvlcomposition.h
llvlmanager.h
llvoavatar.h
llvoavatarself.h
llvocache.h
llvograss.h
llvoicechannel.h
llvoiceclient.h
llvoicevisualizer.h
llvoicevivox.h
llvoinventorylistener.h
llvopartgroup.h
llvosky.h
llvosurfacepatch.h
llvotree.h
llvovolume.h
llvowater.h
llvowlsky.h
llwatchdog.h
llwearableitemslist.h
llwearablelist.h
llweb.h
llwebprofile.h
llwind.h
llwindowlistener.h
llwlhandlers.h
llworld.h
llworldmap.h
llworldmapmessage.h
llworldmipmap.h
llworldmapview.h
llxmlrpclistener.h
llxmlrpctransaction.h
noise.h
particleeditor.h
permissionstracker.h
piemenu.h
pieseparator.h
pieslice.h
pipeline.h
rlvactions.h
rlvcommon.h
rlvdefines.h
rlveffects.h
rlvenvironment.h
rlvextensions.h
rlvfloaters.h
rlvhandler.h
rlvhelper.h
rlvinventory.h
rlvlocks.h
rlvmodifiers.h
rlvui.h
roles_constants.h
qtoolalign.h
quickprefs.h
sanitycheck.h
streamtitledisplay.h
utilitybar.h
VertexCache.h
VorbisFramework.h
NACLantispam.h
NACLfloaterexploresounds.h
)
list(APPEND viewer_SOURCE_FILES llperfstats.cpp)
list(APPEND viewer_HEADER_FILES llperfstats.h)
# <FS:Ansariel> Flickr / Discord keys and fsversionvalues headers are generated in here
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
# <exodus>
# Generate the flickr keys header.
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/exoflickrkeys.h.in
${CMAKE_CURRENT_BINARY_DIR}/exoflickrkeys.h
@ONLY
)
list(APPEND viewer_HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/exoflickrkeys.h)
# </exodus>
#<FS:LO> Discord rich presence
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/fsdiscordkey.h.in
${CMAKE_CURRENT_BINARY_DIR}/fsdiscordkey.h
@ONLY
)
list(APPEND viewer_HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/fsdiscordkey.h)
LIST(APPEND viewer_HEADER_FILES fsfloaterdiscord.h fsdiscordconnect.h)
LIST(APPEND viewer_SOURCE_FILES fsfloaterdiscord.cpp fsdiscordconnect.cpp)
#</FS:LO>
# <FS:TS> Generate the version information header file.
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/fsversionvalues.h.in
${CMAKE_CURRENT_BINARY_DIR}/fsversionvalues.h
@ONLY
)
list(APPEND viewer_HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/fsversionvalues.h)
# </FS:TS>
source_group("CMake Rules" FILES ViewerInstall.cmake)
#build_data.json creation moved to viewer_manifest.py MAINT-6413
# the viewer_version.txt file created here is for passing to viewer_manifest and autobuild
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt"
"${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}\n")
set_source_files_properties(
llversioninfo.cpp tests/llversioninfo_test.cpp
PROPERTIES
# <FS:TS> The next line causes a full rebuild of the entire newview
# directory every time the Mercurial revision number changes.
# Instead of doing that, we use the configure tool to build
# fsversionstrings.h with the right numbers in it.
# COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake
)
if (DARWIN)
LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp)
LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-objc.mm)
LIST(APPEND viewer_SOURCE_FILES llappviewermacosx-objc.h)
LIST(APPEND viewer_SOURCE_FILES llfilepicker_mac.mm)
LIST(APPEND viewer_HEADER_FILES llfilepicker_mac.h)
# This should be compiled with the viewer.
LIST(APPEND viewer_SOURCE_FILES llappdelegate-objc.mm)
set_source_files_properties(
llappdelegate-objc.mm
PROPERTIES
COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
# BugsplatMac is a module, imported with @import. That language feature
# demands these -f switches.
# Xcode 10.2 requires that Objective-C++ headers declare nullability of
# pointer variables. As of 2019-06-26, the BugsplatMac version we're using
# does not yet do so in its own header files. This -W flag prevents fatal
# warnings.
COMPILE_FLAGS "-fmodules -fcxx-modules -Wno-nullability-completeness"
)
# [FS] Growl libs
LIST(APPEND viewer_SOURCE_FILES
growlmanager.cpp
growlnotifierwin.cpp
)
LIST(APPEND viewer_HEADER_FILES
growlmanager.h
growlnotifierwin.h
)
# [FS]
# Add resource files to the project.
set(viewer_RESOURCE_FILES
firestorm_icon.icns
Info-Firestorm.plist
Firestorm.xib/
# CMake doesn't seem to support Xcode language variants well just yet
English.lproj/InfoPlist.strings
English.lproj/language.txt
German.lproj/language.txt
Japanese.lproj/language.txt
Korean.lproj/language.txt
)
SOURCE_GROUP("Resources" FILES ${viewer_RESOURCE_FILES})
list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
endif (DARWIN)
if (LINUX)
LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp)
set_source_files_properties(
llappviewerlinux.cpp
PROPERTIES
# <FS:TS> The next line causes a full rebuild of the entire newview
# directory every time the Mercurial revision number changes.
# Instead of doing that, we use the configure tool to build
# fsversionstrings.h with the right numbers in it.
# COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
)
# [FS] Growl support
LIST(APPEND viewer_HEADER_FILES desktopnotifierlinux.h growlmanager.h)
LIST(APPEND viewer_SOURCE_FILES desktopnotifierlinux.cpp growlmanager.cpp)
# [FS] Growl support
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
# <FS:ND> Enable user to create a ctags database via using -DND_CTAGS=On
if( ND_CTAGS )
message( "Will generate ctags database during compilation" )
set_source_files_properties( TAGS PROPERTIES GENERATED true)
add_custom_command ( OUTPUT TAGS COMMAND ctags --extra=+q --fields=+aiS --c++-kinds=+p -e --recurse=yes .
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} )
list(APPEND viewer_SOURCE_FILES TAGS )
endif( ND_CTAGS )
# </FS:ND>
# <FS:ND> Get rid of memory limit exceeded for -fvar-tracking-assignments.
if (NOT CMAKE_CXX_COMPILER MATCHES ".*clang")
SET_SOURCE_FILES_PROPERTIES(llviewermenu.cpp PROPERTIES COMPILE_FLAGS -fno-var-tracking-assignments)
endif()
# </FS:ND>
# Replace the icons with the appropriate ones for the channel
# ('test' is the default)
set(ICON_PATH "private")
string(TOLOWER ${VIEWER_CHANNEL} channel_lower)
if(channel_lower MATCHES "release")
set(ICON_PATH "release")
elseif(channel_lower MATCHES "beta")
set(ICON_PATH "beta")
elseif(channel_lower MATCHES "project")
set(ICON_PATH "project")
endif()
if (OPENSIM)
set(ICON_PATH "${ICON_PATH}-os")
endif (OPENSIM)
message(STATUS "Copying icons for ${ICON_PATH}")
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_PATH}/firestorm_256.bmp"
"${CMAKE_CURRENT_SOURCE_DIR}/res-sdl/firestorm_icon.BMP"
)
endif (LINUX)
if (WINDOWS)
list(APPEND viewer_SOURCE_FILES
growlmanager.cpp
growlnotifierwin.cpp
llappviewerwin32.cpp
llwindebug.cpp
)
set_source_files_properties(
llappviewerwin32.cpp
PROPERTIES
COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
)
set_source_files_properties( llappviewer.cpp llviewermenu.cpp PROPERTIES COMPILE_FLAGS /bigobj )
list(APPEND viewer_HEADER_FILES
llappviewerwin32.h
llwindebug.h
# [FS] Growl libs
growlmanager.h
growlnotifierwin.h
# [FS]
)
# Replace the icons with the appropriate ones for the channel
# ('test' is the default)
set(ICON_PATH "private")
#set(VIEWER_MACOSX_PHASE "d") # <FS:Ansariel> Moved to OSX section
string(TOLOWER ${VIEWER_CHANNEL} channel_lower)
if(channel_lower MATCHES "release")
set(ICON_PATH "release")
#set(VIEWER_MACOSX_PHASE "f") # <FS:Ansariel> Moved to OSX section
elseif(channel_lower MATCHES "beta")
set(ICON_PATH "beta")
#set(VIEWER_MACOSX_PHASE "b") # <FS:Ansariel> Moved to OSX section
elseif(channel_lower MATCHES "project")
set(ICON_PATH "project")
#set(VIEWER_MACOSX_PHASE "a") # <FS:Ansariel> Moved to OSX section
endif()
# <FS:Ansariel> FIRE-24335: Use different icon for OpenSim version
if (OPENSIM)
set(ICON_PATH "${ICON_PATH}-os")
endif (OPENSIM)
# <FS:Ansariel>
message(STATUS "Copying icons for ${ICON_PATH}")
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_PATH}/firestorm_icon.ico"
"${CMAKE_CURRENT_SOURCE_DIR}/res/firestorm_icon.ico"
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_PATH}/firestorm_256.BMP"
"${CMAKE_CURRENT_SOURCE_DIR}/res/firestorm_icon.BMP"
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_PATH}/firestorm_256.BMP"
"${CMAKE_CURRENT_SOURCE_DIR}/res-sdl/firestorm_icon.BMP"
)
# Add resource files to the project.
# viewerRes.rc is the only buildable file, but
# the rest are all dependencies of it.
set(viewer_RESOURCE_FILES
res/arrow.cur
res/arrowcop.cur
res/arrowcopmulti.cur
res/arrowdrag.cur
res/circleandline.cur
res/llarrow.cur
res/llarrowdrag.cur
res/llarrowdragmulti.cur
res/llarrowlocked.cur
res/llgrablocked.cur
res/llno.cur
res/llnolocked.cur
res/lltoolcamera.cur
res/lltoolcreate.cur
res/lltoolfocus.cur
res/lltoolgrab.cur
res/lltoolland.cur
res/lltoolpan.cur
res/lltoolpathfinding.cur
res/lltoolpathfindingpathend.cur
res/lltoolpathfindingpathendadd.cur
res/lltoolpathfindingpathstart.cur
res/lltoolpathfindingpathstartadd.cur
res/lltoolpipette.cur
res/lltoolrotate.cur
res/lltoolscale.cur
res/lltooltranslate.cur
res/lltoolzoomin.cur
res/lltoolzoomout.cur
res/firestorm_icon.BMP
res/firestorm_icon.ico
res-sdl/firestorm_icon.BMP
res/resource.h
res/toolpickobject.cur
res/toolpickobject2.cur
res/toolpickobject3.cur
res/toolpipette.cur
res/toolbuy.cur
res/toolopen.cur
res/toolsit.cur
res/toolbuy-legacy.cur
res/toolopen-legacy.cur
res/toolsit-legacy.cur
res/toolpay-legacy.cur
)
set_source_files_properties(${viewer_RESOURCE_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/res/viewerRes.rc
${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc
)
set(viewer_RESOURCE_FILES
${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc
${viewer_RESOURCE_FILES}
)
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/viewerRes.rc
PROPERTIES COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}/res"
)
SOURCE_GROUP("Resource Files" FILES ${viewer_RESOURCE_FILES})
list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
find_library(INTEL_MEMOPS_LIBRARY
NAMES ll_intel_memops
PATHS
optimized ${ARCH_PREBUILT_DIRS_RELEASE}
debug ${ARCH_PREBUILT_DIRS_DEBUG}
)
mark_as_advanced(INTEL_MEMOPS_LIBRARY)
if (INTEL_MEMOPS_LIBRARY)
add_library( ll::intel_memops INTERFACE IMPORTED )
target_link_libraries( ll::intel_memops ${INTEL_MEMOPS_LIBRARY} )
endif (INTEL_MEMOPS_LIBRARY)
# <FS:Ansariel> Apply correct manifests to both 32 and 64 bit versions
#if (ADDRESS_SIZE EQUAL 64)
# We deliberately omit this from the 32bit build because it declares that
# the viewer is compatible with Windows 10; we need that to properly detect
# the Windows version, but doing so causes systems with certain HD video
# cards to fail because Windows 10 does not support them. Leaving this out
# causes those systems to run in a Windows 8 compatibility mode, which works.
# LIST(APPEND viewer_SOURCE_FILES windows.manifest)
#endif (ADDRESS_SIZE EQUAL 64)
if (ADDRESS_SIZE EQUAL 64)
LIST(APPEND viewer_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../tools/manifests/compatibility.manifest)
else (ADDRESS_SIZE EQUAL 64)
LIST(APPEND viewer_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../tools/manifests/legacy.manifest)
endif (ADDRESS_SIZE EQUAL 64)
# </FS:Ansariel>
endif (WINDOWS)
# Add the xui files. This is handy for searching for xui elements
# from within the IDE.
file(GLOB_RECURSE viewer_XUI_FILES LIST_DIRECTORIES FALSE
${CMAKE_CURRENT_SOURCE_DIR}/skins/*.xml)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/skins PREFIX "XUI Files" FILES ${viewer_XUI_FILES})
set_source_files_properties(${viewer_XUI_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
# Add the shader sources
file(GLOB_RECURSE viewer_SHADER_FILES LIST_DIRECTORIES FALSE
${CMAKE_CURRENT_SOURCE_DIR}/app_settings/shaders/*.glsl)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/app_settings/shaders PREFIX "Shaders" FILES ${viewer_SHADER_FILES})
set_source_files_properties(${viewer_SHADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_SHADER_FILES})
set(viewer_APPSETTINGS_FILES
app_settings/anim.ini
app_settings/autoreplace.xml
app_settings/client_list_v2.xml
app_settings/cloud.xml
app_settings/cmd_line.xml
app_settings/commands.xml
app_settings/emoji_groups.xml
app_settings/foldertypes.xml
app_settings/graphic_preset_controls.xml
app_settings/grass.xml
app_settings/grids.xml
app_settings/growl_notifications.xml
app_settings/ignorable_dialogs.xml
app_settings/key_bindings.xml
app_settings/keywords.ini
app_settings/keywords_lsl_default.xml
app_settings/logcontrol.xml
app_settings/posestand.xml
app_settings/quick_preferences.xml
app_settings/scriptlibrary_aa.xml
app_settings/scriptlibrary_ossl.xml
app_settings/scriptlibrary_preproc.xml
app_settings/settings_firestorm.xml
app_settings/settings_hybrid.xml
app_settings/settings_phoenix.xml
app_settings/settings_v3.xml
app_settings/settings_text.xml
app_settings/settings.xml
app_settings/settings_crash_behavior.xml
app_settings/settings_files.xml
app_settings/settings_per_account.xml
app_settings/std_bump.ini
#app_settings/toolbars.xml FS:AO moved to skins
app_settings/trees.xml
app_settings/viewerart.xml
${CMAKE_SOURCE_DIR}/../etc/message.xml
${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
packages-info.txt
featuretable.txt
featuretable_mac.txt
featuretable_linux.txt
)
if (WINDOWS)
LIST(APPEND viewer_APPSETTINGS_FILES app_settings/growl_notifications.xml)
endif (WINDOWS)
source_group("App Settings" FILES ${viewer_APPSETTINGS_FILES})
set_source_files_properties(${viewer_APPSETTINGS_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_APPSETTINGS_FILES})
set(viewer_CHARACTER_FILES
character/attentions.xml
character/attentionsN.xml
character/avatar_lad.xml
character/avatar_skeleton.xml
character/genepool.xml
)
source_group("Character File" FILES ${viewer_CHARACTER_FILES})
set_source_files_properties(${viewer_CHARACTER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_CHARACTER_FILES})
# <FS:Ansariel> Add Firestorm folders
file(GLOB viewer_FONT_FILES fonts/*.xml)
source_group("Fonts" FILES ${viewer_FONT_FILES})
set_source_files_properties(${viewer_FONT_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_FONT_FILES})
file(GLOB viewer_FS_RESOURCES fs_resources/*)
source_group("Firestorm Resources" FILES ${viewer_FS_RESOURCES})
set_source_files_properties(${viewer_FS_RESOURCES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_FS_RESOURCES})
# </FS:Ansariel>
if (WINDOWS)
file(GLOB viewer_INSTALLER_FILES installers/windows/*.nsi)
source_group("Installer Files" FILES ${viewer_INSTALLER_FILES})
set_source_files_properties(${viewer_INSTALLER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND viewer_SOURCE_FILES ${viewer_INSTALLER_FILES})
endif (WINDOWS)
if (HAVOK OR HAVOK_TPV)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_HAVOK")
endif (HAVOK OR HAVOK_TPV)
if( DEFINED LLSTARTUP_COMPILE_FLAGS )
# progress view disables/enables icons based on available packages
set_source_files_properties(llprogressview.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
# <FS:Ansariel> Output device selection
set_source_files_properties(llfloaterpreference.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")
# </FS:Ansariel>
endif()
list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
add_executable(${VIEWER_BINARY_NAME}
WIN32
MACOSX_BUNDLE
${viewer_SOURCE_FILES}
)
# add package files
file(GLOB EVENT_HOST_SCRIPT_GLOB_LIST
${CMAKE_CURRENT_SOURCE_DIR}/../viewer_components/*.py)
list(APPEND EVENT_HOST_SCRIPTS ${EVENT_HOST_SCRIPT_GLOB_LIST})
set(PACKAGE ON CACHE BOOL
"Add a package target that builds an installer package.")
if (OPENSIM )
set(ND_VIEWER_FLAVOR "oss")
else (OPENSIM)
set(ND_VIEWER_FLAVOR "hvk")
endif (OPENSIM)
if (WINDOWS)
set_target_properties(${VIEWER_BINARY_NAME}
PROPERTIES
# *TODO -reenable this once we get server usage sorted out
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /LARGEADDRESSAWARE /LTCG /NOEXP /NOIMPLIB"
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO /LARGEADDRESSAWARE /LTCG /NOEXP /NOIMPLIB"
LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF /LARGEADDRESSAWARE /LTCG /NOEXP /NOIMPLIB"
)
target_compile_options(${VIEWER_BINARY_NAME} PRIVATE /bigobj)
if(USE_PRECOMPILED_HEADERS)
target_precompile_headers( ${VIEWER_BINARY_NAME} PRIVATE llviewerprecompiledheaders.h )
endif(USE_PRECOMPILED_HEADERS)
# If adding a file to viewer_manifest.py in the WindowsManifest.construct() method, be sure to add the dependency
# here.
# *NOTE:Mani - This is a crappy hack to have important dependencies for the viewer_manifest copy action
# be met. I'm looking forward to a source-code split-up project next year that will address this kind of thing.
# In the meantime, if you have any ideas on how to easily maintain one list, either here or in viewer_manifest.py
# and have the build deps get tracked *please* tell me about it.
# nat: https://cmake.org/cmake/help/v3.14/command/file.html
# "For example, the code
# file(STRINGS myfile.txt myfile)
# stores a list in the variable myfile in which each item is a line from the input file."
# And of course it's straightforward to read a text file in Python.
set(COPY_INPUT_DEPENDENCIES
# The following commented dependencies are determined at variably at build time. Can't do this here.
${CMAKE_SOURCE_DIR}/../etc/message.xml
${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
#${SHARED_LIB_STAGING_DIR}/openjp2.dll # <FS:Ansariel> Only copy OpenJPEG dll if needed
${SHARED_LIB_STAGING_DIR}/libhunspell.dll
${SHARED_LIB_STAGING_DIR}/uriparser.dll
#${SHARED_LIB_STAGING_DIR}/${LL_INTDIR}/SLVoice.exe
#${SHARED_LIB_STAGING_DIR}/${LL_INTDIR}/libsndfile-1.dll
#${SHARED_LIB_STAGING_DIR}/${LL_INTDIR}/vivoxoal.dll
${AUTOBUILD_INSTALL_DIR}/ca-bundle.crt
${CMAKE_CURRENT_SOURCE_DIR}/licenses-win32.txt
${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt
${viewer_APPSETTINGS_FILES}
${ARCH_PREBUILT_DIRS_RELEASE}/growl.dll
${SHARED_LIB_STAGING_DIR}/glod.dll # <FS:Beq> Restore GLOD build dependencies
SLPlugin
media_plugin_cef
media_plugin_libvlc
#media_plugin_example # <FS:Ansariel> Don't package example plugin
)
# <FS:Ansariel> Only copy OpenJPEG dll if needed
if (NOT USE_KDU)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/openjp2.dll
)
endif (NOT USE_KDU)
# </FS:Ansariel>
if (ADDRESS_SIZE EQUAL 64)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/vivoxsdk_x64.dll
${SHARED_LIB_STAGING_DIR}/ortp_x64.dll
${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto-1_1-x64.dll
${ARCH_PREBUILT_DIRS_RELEASE}/libssl-1_1-x64.dll
)
else (ADDRESS_SIZE EQUAL 64)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/vivoxsdk.dll
${SHARED_LIB_STAGING_DIR}/ortp.dll
${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto-1_1.dll
${ARCH_PREBUILT_DIRS_RELEASE}/libssl-1_1.dll
)
endif (ADDRESS_SIZE EQUAL 64)
if (TARGET ll::fmodstudio)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/fmod.dll
#${SHARED_LIB_STAGING_DIR}/fmodL.dll # <FS:Ansariel> Doesn't exist
)
endif ()
if (TARGET ll::openal)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/OpenAL32.dll
${SHARED_LIB_STAGING_DIR}/alut.dll
)
endif ()
add_custom_command(
OUTPUT ${CMAKE_CFG_INTDIR}/copy_touched.bat
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--actions=copy
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=$<CONFIG>
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/copy_touched.bat
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
stage_third_party_libs
${COPY_INPUT_DEPENDENCIES}
COMMENT "Performing viewer_manifest copy"
)
add_custom_target(copy_w_viewer_manifest ALL DEPENDS ${CMAKE_CFG_INTDIR}/copy_touched.bat)
add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon copy_w_viewer_manifest)
if (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)
endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin)
# sets the 'working directory' for debugging from visual studio.
# Condition for version can be moved to requirements once build agents will be updated (see TOOL-3865)
if (NOT UNATTENDED)
set_property(
TARGET ${VIEWER_BINARY_NAME}
PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
endif (NOT UNATTENDED)
if (PACKAGE)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CFG_INTDIR}
DEPENDS
lleventhost
${EVENT_HOST_SCRIPTS}
${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
)
add_custom_command(
OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=$<CONFIG>
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/touched.bat
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
DEPENDS
${VIEWER_BINARY_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
${COPY_INPUT_DEPENDENCIES}
)
add_custom_target(llpackage ALL DEPENDS
${CMAKE_CFG_INTDIR}/touched.bat
)
# temporarily disable packaging of event_host until hg subrepos get
# sorted out on the parabuild cluster...
#${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz)
endif (PACKAGE)
elseif (DARWIN)
set_target_properties(${VIEWER_BINARY_NAME}
PROPERTIES
LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP"
#<FS:TS> Force the SDK version in the linked executable to be 10.12. This will fool
# macOS into using the pre-Mojave display system, avoiding the blurry display that
# otherwise occurs when upscaling the viewer to Retina resolution levels.
LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -platform_version -Xlinker macos -Xlinker ${CMAKE_OSX_DEPLOYMENT_TARGET} -Xlinker 10.12"
)
else (WINDOWS)
# Linux
set_target_properties(${VIEWER_BINARY_NAME}
PROPERTIES
LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--Map=${VIEWER_BINARY_NAME}.MAP"
)
endif (WINDOWS)
# *NOTE: - this list is very sensitive to ordering, test carefully on all
# platforms if you change the relative order of the entries here.
# In particular, cmake 2.6.4 (when building with linux/makefile generators)
# appears to sometimes de-duplicate redundantly listed dependencies improperly.
# To work around this, higher level modules should be listed before the modules
# that they depend upon. -brad
#
# *NOTE: On mixing system shared libraries and updated static archives.
# We use a number of libraries that have an existence as system libraries,
# internal-use libraries and applications libraries. The most-referenced
# one of these being libz where you can find four or more versions in play
# at once. On Linux, libz can be found at link and run time via a number
# of paths:
#
# => -lfreetype
# => libz.so.1 (on install machine, not build)
# => -lSDL
# => libz.so.1 (on install machine, not build)
# => -lgdk-x11-2.0
# => libz.so.1
# => -lz
#
# We generally want the newest version of the library to provide all symbol
# resolution. To that end, when using static archives, the *_PRELOAD_ARCHIVES
# variables, PNG_PRELOAD_ARCHIVES and ZLIBNG_PRELOAD_ARCHIVES, get the archives
# dumped into the target binary and runtime lookup will find the most
# modern version.
target_link_libraries(${VIEWER_BINARY_NAME}
llaudio
llcharacter
llimage
llinventory
llmessage
llplugin
llprimitive
llrender
llui
llfilesystem
llwindow
llxml
llmath
llcorehttp
llcommon
llmeshoptimizer
ll::ndof
lllogin
llprimitive
llappearance
${LLPHYSICSEXTENSIONS_LIBRARIES}
ll::bugsplat
ll::tracy
fs::glod # <FS:Beq/> restore GLOD dependencies
fs::discord # <FS:Ansariel> Discord support
)
if( TARGET ll::intel_memops )
target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
endif()
if (USE_BUGSPLAT)
target_link_libraries(${VIEWER_BINARY_NAME}
${BUGSPLAT_LIBRARIES}
)
endif (USE_BUGSPLAT)
# <FS:Ansariel> Growl support
if (WINDOWS OR DARWIN)
target_link_libraries(${VIEWER_BINARY_NAME} fs::growl)
endif (WINDOWS OR DARWIN)
# </FS:Ansariel>
if( TARGET ll::nvapi )
target_link_libraries(${VIEWER_BINARY_NAME} ll::nvapi )
endif()
if (LINUX)
# <FS:Zi> put these additional libraries in the viewer build target here as it didn't
# work to put them in via their cmake/* files
target_link_libraries(${VIEWER_BINARY_NAME}
"dl"
# <FS:Zi> I wish I knew how to make this cleaner, this looks like a mess
ll::vorbis
${GIO_LIBRARIES}
)
endif (LINUX)
set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
"Path to artwork files.")
# <FS:Ansariel> Don't copy fonts into the source folder!
#message("Copying fonts")
#file(GLOB FONT_FILE_GLOB_LIST
# "${AUTOBUILD_INSTALL_DIR}/fonts/*"
#)
#file(COPY ${FONT_FILE_GLOB_LIST} DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/fonts")
# </FS:Ansariel>
# <FS:Ansariel> Don't copy emoji characters into source folder
# Copy over the Emoji/shortcodes mapping XML files (and create dependency
# if they are changed, CMake will run again and copy over new versions)
#message("Copying Emoji/shortcode mappings")
#set(emoji_mapping_src_folder ${AUTOBUILD_INSTALL_DIR}/xui)
#set(emoji_mapping_dst_folder ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui)
#
## Note Turkey is missing from this set (not available in Emoji package yet)
#set(country_codes "da;de;en;es;fr;it;ja;pl;pt;ru;zh")
#foreach(elem ${country_codes})
# set(emoji_mapping_src_file
# "${emoji_mapping_src_folder}/${elem}/emoji_characters.xml")
# set(emoji_mapping_dst_file
# "${emoji_mapping_dst_folder}/${elem}/emoji_characters.xml")
# configure_file(${emoji_mapping_src_file} ${emoji_mapping_dst_file} COPYONLY)
#endforeach()
# </FS:Ansariel>
if (LINUX)
set(product Firestorm-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION})
# These are the generated targets that are copied to package/
set(COPY_INPUT_DEPENDENCIES
${VIEWER_BINARY_NAME}
SLPlugin
media_plugin_cef
media_plugin_gstreamer10
llcommon
linux-crash-logger
)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer10 media_plugin_cef linux-crash-logger)
add_custom_command(
OUTPUT ${product}.tar.xz
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=${CMAKE_BUILD_TYPE}
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${CMAKE_CURRENT_BINARY_DIR}/packaged
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
${COPY_INPUT_DEPENDENCIES}
)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--actions=copy
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=${CMAKE_BUILD_TYPE}
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${CMAKE_CURRENT_BINARY_DIR}/packaged
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
${COPY_INPUT_DEPENDENCIES}
COMMENT "Performing viewer_manifest copy"
)
add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)
if (PACKAGE)
add_custom_target(llpackage ALL DEPENDS ${product}.tar.xz)
# Make sure we don't run two instances of viewer_manifest.py at the same time.
add_dependencies(llpackage copy_l_viewer_manifest)
check_message_template(llpackage)
endif (PACKAGE)
endif (LINUX)
if (DARWIN)
# <FS:Ansariel> Moved from Windows section
set(VIEWER_MACOSX_PHASE "d")
string(TOLOWER ${VIEWER_CHANNEL} channel_lower)
if(channel_lower MATCHES "release")
set(VIEWER_MACOSX_PHASE "f")
elseif(channel_lower MATCHES "beta")
set(VIEWER_MACOSX_PHASE "b")
elseif(channel_lower MATCHES "project")
set(VIEWER_MACOSX_PHASE "a")
endif()
# </FS:Ansariel>
# These all get set with PROPERTIES. It's not that the property names are
# magically known to CMake -- it's that these names are referenced in the
# Info-SecondLife.plist file in the configure_file() directive below.
#set(product "${VIEWER_CHANNEL}")
set(product "Firestorm")
set(MACOSX_EXECUTABLE_NAME "Firestorm")
set(MACOSX_BUNDLE_INFO_STRING "Firestorm Viewer")
set(MACOSX_BUNDLE_ICON_FILE "firestorm_icon.icns")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.firestormviewer.firestorm")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
set(MACOSX_BUNDLE_BUNDLE_NAME "Firestorm")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}")
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2010-2024 The Phoenix Firestorm Project, Inc.")
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "Firestorm.nib")
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication")
# https://blog.kitware.com/upcoming-in-cmake-2-8-12-osx-rpath-support/
set(CMAKE_MACOSX_RPATH 1)
set_target_properties(
${VIEWER_BINARY_NAME}
PROPERTIES
OUTPUT_NAME "${product}"
# From Contents/MacOS/SecondLife, look in Contents/Frameworks
INSTALL_RPATH "@loader_path/../Frameworks"
# SIGH, as of 2018-05-24 (cmake 3.11.1) the INSTALL_RPATH property simply
# does not work. Try this:
LINK_FLAGS "-rpath @loader_path/../Frameworks"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-Firestorm.plist"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${MACOSX_BUNDLE_GUI_IDENTIFIER}"
)
set(VIEWER_APP_BUNDLE "${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/${product}.app")
set(VIEWER_APP_EXE "${VIEWER_APP_BUNDLE}/Contents/MacOS/${product}")
set(VIEWER_APP_DSYM "${VIEWER_APP_EXE}.dSYM")
set(VIEWER_APP_XCARCHIVE "${VIEWER_APP_BUNDLE}/../${product}.xcarchive.zip")
configure_file(
# <FS:CR> Use Firestorm plist
#"${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist"
"${CMAKE_CURRENT_SOURCE_DIR}/Info-Firestorm.plist"
"${VIEWER_APP_BUNDLE}/Contents/Info.plist"
)
add_custom_command(
TARGET ${VIEWER_BINARY_NAME} POST_BUILD
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--actions=copy
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=$<CONFIG>
--bundleid=${MACOSX_BUNDLE_GUI_IDENTIFIER}
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${VIEWER_APP_BUNDLE}
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
DEPENDS
${VIEWER_BINARY_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc media_plugin_cef)
if (ENABLE_SIGNING)
set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}")
else (ENABLE_SIGNING)
set(SIGNING_SETTING "")
endif (ENABLE_SIGNING)
if (PACKAGE)
add_custom_target(llpackage ALL DEPENDS ${VIEWER_BINARY_NAME})
add_custom_command(
TARGET llpackage POST_BUILD
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
--arch=${ARCH}
--artwork=${ARTWORK_DIR}
"--bugsplat=${BUGSPLAT_DB}"
"--fmodstudio=${USE_FMODSTUDIO}"
"--openal=${USE_OPENAL}"
--build=${CMAKE_CURRENT_BINARY_DIR}
--buildtype=${CMAKE_BUILD_TYPE}
"--channel=${VIEWER_CHANNEL}"
--configuration=${CMAKE_CFG_INTDIR}
--dest=${VIEWER_APP_BUNDLE}
--grid=${GRID}
--source=${CMAKE_CURRENT_SOURCE_DIR}
--touch=${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/.${product}.bat
--versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
--viewer_flavor=${ND_VIEWER_FLAVOR}
${SIGNING_SETTING}
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
endif (PACKAGE)
endif (DARWIN)
if (INSTALL)
include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake)
endif (INSTALL)
# Note that the conventional VIEWER_SYMBOL_FILE is set by ../../build.sh
if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIEWER_SYMBOL_FILE)
if (USE_BUGSPLAT)
# BugSplat symbol-file generation
if (WINDOWS)
#<FS:ND> Comment this out, we do our own symbol package which also includes the exe and build_data.json
# Just pack up a tarball containing only the .pdb file for the
# executable. Because we intend to use cygwin tar, we must render
# VIEWER_SYMBOL_FILE in cygwin path syntax.
# execute_process(COMMAND "cygpath" "-u" "${VIEWER_SYMBOL_FILE}"
# OUTPUT_VARIABLE VIEWER_SYMBOL_FILE_CYGWIN
# OUTPUT_STRIP_TRAILING_WHITESPACE)
# execute_process(COMMAND "cygpath" "-u" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
# OUTPUT_VARIABLE PARENT_DIRECTORY_CYGWIN
# OUTPUT_STRIP_TRAILING_WHITESPACE)
# add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
# # Use of 'tar ...J' here assumes VIEWER_SYMBOL_FILE endswith .tar.xz;
# # testing a string suffix is painful enough in CMake language that
# # we'll continue assuming it until forced to generalize.
# COMMAND "tar"
# ARGS
# "cjf"
# "${VIEWER_SYMBOL_FILE_CYGWIN}"
# "-C"
# "${PARENT_DIRECTORY_CYGWIN}"
# "firestorm-bin.pdb"
# DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/firestorm-bin.pdb"
# COMMENT "Packing viewer PDB into ${VIEWER_SYMBOL_FILE_CYGWIN}"
# )
# add_custom_target(generate_symbols DEPENDS "${VIEWER_SYMBOL_FILE}" ${VIEWER_BINARY_NAME})
# add_dependencies(generate_symbols ${VIEWER_BINARY_NAME})
endif (WINDOWS)
if (DARWIN)
# Have to run dsymutil first, then pack up the resulting .dSYM directory
add_custom_command(OUTPUT "${VIEWER_APP_DSYM}"
COMMAND "dsymutil"
ARGS
${VIEWER_APP_EXE}
COMMENT "Generating ${VIEWER_APP_DSYM}"
)
add_custom_target(dsym_generate DEPENDS "${VIEWER_APP_DSYM}")
add_dependencies(dsym_generate ${VIEWER_BINARY_NAME})
add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
# See above comments about "tar ...j"
COMMAND "tar"
ARGS
"cjf"
"${VIEWER_SYMBOL_FILE}"
"-C"
"${VIEWER_APP_DSYM}/.."
"${product}.dSYM"
DEPENDS "${VIEWER_APP_DSYM}"
COMMENT "Packing dSYM into ${VIEWER_SYMBOL_FILE}"
)
add_custom_target(dsym_tarball DEPENDS "${VIEWER_SYMBOL_FILE}")
add_dependencies(dsym_tarball dsym_generate)
add_custom_command(OUTPUT "${VIEWER_APP_XCARCHIVE}"
COMMAND "zip"
ARGS
"-r"
"${VIEWER_APP_XCARCHIVE}"
"."
WORKING_DIRECTORY "${VIEWER_APP_DSYM}/.."
DEPENDS "${VIEWER_APP_DSYM}"
COMMENT "Generating xcarchive.zip for upload to BugSplat"
)
add_custom_target(dsym_xcarchive DEPENDS "${VIEWER_APP_XCARCHIVE}")
add_dependencies(dsym_xcarchive dsym_generate)
# Have to create a stamp file, and depend on it, to force CMake to run
# the cleanup step.
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp"
COMMAND rm -rf "${VIEWER_APP_DSYM}"
COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp"
DEPENDS "${VIEWER_SYMBOL_FILE}" "${VIEWER_APP_XCARCHIVE}"
COMMENT "Cleaning up dSYM"
)
add_custom_target(generate_symbols DEPENDS
"${VIEWER_APP_DSYM}"
"${VIEWER_SYMBOL_FILE}"
"${VIEWER_APP_XCARCHIVE}"
"${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp"
)
add_dependencies(generate_symbols dsym_tarball dsym_xcarchive)
endif (DARWIN)
if (LINUX)
# TBD
endif (LINUX)
endif (USE_BUGSPLAT)
if (DARWIN) #Linux/Windows generates symbols via viewer_manifest.py/fs_viewer_manifest.py
# for both Bugsplat and Breakpad
add_dependencies(llpackage generate_symbols)
endif()
endif ()
if (LL_TESTS)
# To add a viewer unit test, just add the test .cpp file below
# This creates a separate test project per file listed.
include(LLAddBuildTest)
SET(viewer_TEST_SOURCE_FILES
llagentaccess.cpp
lldateutil.cpp
# llmediadataclient.cpp
lllogininstance.cpp
# llremoteparcelrequest.cpp
llviewerhelputil.cpp
llversioninfo.cpp
# llvocache.cpp
llworldmap.cpp
llworldmipmap.cpp
)
set_source_files_properties(
llworldmap.cpp
llworldmipmap.cpp
PROPERTIES
LL_TEST_ADDITIONAL_SOURCE_FILES
tests/llviewertexture_stub.cpp
#llviewertexturelist.cpp
)
# set_source_files_properties(
# llvocache.cpp
# PROPERTIES
# LL_TEST_ADDITIONAL_SOURCE_FILES ../llmessage/lldatapacker.cpp
# LL_TEST_ADDITIONAL_PROJECTS "llprimitive"
# )
set(test_libs
llcommon
llfilesystem
llxml
llmessage
llcharacter
llui
lllogin
llplugin
llappearance
)
set_source_files_properties(
llworldmap.cpp
llworldmipmap.cpp
PROPERTIES
LL_TEST_ADDITIONAL_SOURCE_FILES
tests/llviewertexture_stub.cpp
#llviewertexturelist.cpp
)
set_source_files_properties(
llmediadataclient.cpp
PROPERTIES
LL_TEST_ADDITIONAL_LIBRARIES "${test_libs}"
)
set_source_files_properties(
llworldmap.cpp
llworldmipmap.cpp
PROPERTIES
LL_TEST_ADDITIONAL_SOURCE_FILES
tests/llviewertexture_stub.cpp
)
set_source_files_properties(
llmediadataclient.cpp
PROPERTIES
LL_TEST_ADDITIONAL_LIBRARIES llprimitive
)
set_source_files_properties(
lllogininstance.cpp
PROPERTIES
LL_TEST_ADDITIONAL_SOURCE_FILES llversioninfo.cpp
)
set_property( SOURCE
${viewer_TEST_SOURCE_FILES}
PROPERTY
LL_TEST_ADDITIONAL_LIBRARIES ${test_libs}
)
LL_ADD_PROJECT_UNIT_TESTS(${VIEWER_BINARY_NAME} "${viewer_TEST_SOURCE_FILES}")
#set(TEST_DEBUG on)
set(test_libs
llfilesystem
llmath
llcommon
llmessage
llcorehttp
llxml
llui
llplugin
llappearance
lllogin
llprimitive
lllogin
)
LL_ADD_INTEGRATION_TEST(cppfeatures
""
"${test_libs}"
)
LL_ADD_INTEGRATION_TEST(llsechandler_basic
llsechandler_basic.cpp
"${test_libs}"
)
LL_ADD_INTEGRATION_TEST(llsecapi
llsecapi.cpp
"${test_libs}"
)
if (NOT OPENSIM)#<FS:AW optional opensim support>
set(llslurl_test_sources
llslurl.cpp
llviewernetwork.cpp
)
endif (NOT OPENSIM)#<FS:AW optional opensim support>
# RLVa - incompatible
# LL_ADD_INTEGRATION_TEST(llslurl
# "${llslurl_test_sources}"
# "${test_libs}"
# )
set(llviewercontrollistener_test_sources
llviewercontrollistener.cpp
../llxml/llcontrol.cpp
../llxml/llxmltree.cpp
../llxml/llxmlparser.cpp
../llcommon/commoncontrol.cpp
)
LL_ADD_INTEGRATION_TEST(llviewercontrollistener
"${llviewercontrollistener_test_sources}"
"${test_libs}"
)
LL_ADD_INTEGRATION_TEST(llviewernetwork
llviewernetwork.cpp
"${test_libs}"
)
LL_ADD_INTEGRATION_TEST(llviewerassetstats
llviewerassetstats.cpp
"${test_libs}"
)
# LL_ADD_INTEGRATION_TEST(llhttpretrypolicy "llhttpretrypolicy.cpp" "${test_libs}")
#ADD_VIEWER_BUILD_TEST(llmemoryview viewer)
#ADD_VIEWER_BUILD_TEST(llagentaccess viewer)
#ADD_VIEWER_BUILD_TEST(lltextureinfo viewer)
#ADD_VIEWER_BUILD_TEST(lltextureinfodetails viewer)
endif (LL_TESTS)
check_message_template(${VIEWER_BINARY_NAME})