# -*- cmake -*- project(viewer) include(00-Common) include(Boost) include(BuildVersion) include(DBusGlib) include(DirectX) include(ELFIO) include(FMOD) include(OPENAL) include(FindOpenGL) include(LLAudio) include(LLCharacter) include(LLCommon) include(LLImage) include(LLImageJ2COJ) include(LLInventory) include(LLMath) include(LLMessage) include(LLPlugin) include(LLPrimitive) include(LLRender) include(LLUI) include(LLVFS) include(LLWindow) include(LLXML) include(LLXUIXML) include(LScript) include(Linking) include(NDOF) include(GooglePerfTools) include(TemplateCheck) include(UI) include(UnixInstall) include(LLKDU) include(ViewerMiscLibs) include(LLLogin) include(GLOD) include(CMakeCopyIfDifferent) include_directories( ${DBUSGLIB_INCLUDE_DIRS} ${ELFIO_INCLUDE_DIR} ${GLOD_INCLUDE_DIR} ${LLAUDIO_INCLUDE_DIRS} ${LLCHARACTER_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} ${LLIMAGE_INCLUDE_DIRS} ${LLINVENTORY_INCLUDE_DIRS} ${LLMATH_INCLUDE_DIRS} ${LLMESSAGE_INCLUDE_DIRS} ${LLPLUGIN_INCLUDE_DIRS} ${LLPRIMITIVE_INCLUDE_DIRS} ${LLRENDER_INCLUDE_DIRS} ${LLUI_INCLUDE_DIRS} ${LLVFS_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ${LLXUIXML_INCLUDE_DIRS} ${LSCRIPT_INCLUDE_DIRS} ${LSCRIPT_INCLUDE_DIRS}/lscript_compile ${LLLOGIN_INCLUDE_DIRS} ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 ) set(viewer_SOURCE_FILES llaccordionctrl.cpp llaccordionctrltab.cpp llagent.cpp llagentaccess.cpp llagentdata.cpp llagentlanguage.cpp llagentlistener.cpp llagentpicksinfo.cpp llagentpilot.cpp llagentui.cpp llagentwearables.cpp llanimstatelabels.cpp llappearancemgr.cpp llappviewer.cpp llappviewerlistener.cpp llassetuploadqueue.cpp llassetuploadresponders.cpp llaudiosourcevo.cpp llavataractions.cpp llavatariconctrl.cpp llavatarlist.cpp llavatarlistitem.cpp llavatarpropertiesprocessor.cpp llbottomtray.cpp llbox.cpp llbreadcrumbview.cpp llcallbacklist.cpp llcallingcard.cpp llcapabilitylistener.cpp llcaphttpsender.cpp llchannelmanager.cpp llchatbar.cpp llchathistory.cpp llchatitemscontainerctrl.cpp llchatmsgbox.cpp llchiclet.cpp llclassifiedinfo.cpp llclassifiedstatsresponder.cpp llcloud.cpp llcolorswatch.cpp llcommandhandler.cpp llcommandlineparser.cpp llcompilequeue.cpp llconfirmationmanager.cpp llcurrencyuimanager.cpp llcylinder.cpp lldateutil.cpp lldebugmessagebox.cpp lldebugview.cpp lldelayedgestureerror.cpp lldirpicker.cpp lldndbutton.cpp lldrawable.cpp lldrawpool.cpp lldrawpoolalpha.cpp lldrawpoolavatar.cpp lldrawpoolbump.cpp lldrawpoolground.cpp lldrawpoolsimple.cpp lldrawpoolsky.cpp lldrawpoolterrain.cpp lldrawpooltree.cpp lldrawpoolwater.cpp lldrawpoolwlsky.cpp lldriverparam.cpp lldynamictexture.cpp llemote.cpp lleventinfo.cpp lleventnotifier.cpp lleventpoll.cpp llexpandabletextbox.cpp llface.cpp llfasttimerview.cpp llfavoritesbar.cpp llfeaturemanager.cpp llfilepicker.cpp llfirstuse.cpp llflexibleobject.cpp llfloaterabout.cpp llfloateractivespeakers.cpp llfloateranimpreview.cpp llfloaterauction.cpp llfloateravatarpicker.cpp llfloateravatartextures.cpp llfloaterbeacons.cpp llfloaterbuildoptions.cpp llfloaterbulkpermission.cpp llfloaterbump.cpp llfloaterbuy.cpp llfloaterbuycontents.cpp llfloaterbuycurrency.cpp llfloaterbuyland.cpp llfloatercall.cpp llfloatercamera.cpp llfloaterchat.cpp llfloaterchatterbox.cpp llfloatercolorpicker.cpp llfloatercustomize.cpp llfloaterdaycycle.cpp llfloaterenvsettings.cpp llfloaterfonttest.cpp llfloaterfriends.cpp llfloatergesture.cpp llfloatergodtools.cpp llfloatergroupinvite.cpp llfloatergroups.cpp llfloaterhandler.cpp llfloaterhardwaresettings.cpp llfloaterhelpbrowser.cpp llfloaterhud.cpp llfloaterimagepreview.cpp llfloaterimportcollada.cpp llfloaterinspect.cpp llfloaterinventory.cpp llfloaterjoystick.cpp llfloaterlagmeter.cpp llfloaterland.cpp llfloaterlandholdings.cpp llfloatermap.cpp llfloatermediabrowser.cpp llfloatermediasettings.cpp llfloatermemleak.cpp llfloatermodelpreview.cpp llfloaternamedesc.cpp llfloaternearbymedia.cpp llfloaternotificationsconsole.cpp llfloateropenobject.cpp llfloaterparcel.cpp llfloaterpay.cpp llfloaterperms.cpp llfloaterpostcard.cpp llfloaterpostprocess.cpp llfloaterpreference.cpp llfloaterproperties.cpp llfloaterregioninfo.cpp llfloaterreporter.cpp llfloaterscriptdebug.cpp llfloatersearch.cpp llfloatersellland.cpp llfloatersettingsdebug.cpp llfloatersnapshot.cpp llfloatertelehub.cpp llfloatertestinspectors.cpp llfloatertestlistview.cpp llfloatertools.cpp llfloatertopobjects.cpp llfloatertos.cpp llfloateruipreview.cpp llfloaterurldisplay.cpp llfloaterurlentry.cpp llfloatervoicedevicesettings.cpp llfloaterwater.cpp llfloaterwhitelistentry.cpp llfloaterwindlight.cpp llfloaterworldmap.cpp llfoldertype.cpp llfolderview.cpp llfolderviewitem.cpp llfollowcam.cpp llfriendcard.cpp llgesturemgr.cpp llglsandbox.cpp llgroupactions.cpp llgrouplist.cpp llgroupmgr.cpp llgroupnotify.cpp llhomelocationresponder.cpp llhudeffect.cpp llhudeffectbeam.cpp llhudeffectlookat.cpp llhudeffectpointat.cpp llhudeffecttrail.cpp llhudicon.cpp llhudmanager.cpp llhudobject.cpp llhudrender.cpp llhudtext.cpp llhudview.cpp llimcontrolpanel.cpp llimfloater.cpp llimhandler.cpp llimpanel.cpp llimview.cpp llinspect.cpp llinspectavatar.cpp llinspectgroup.cpp llinspectobject.cpp llinventorybridge.cpp llinventoryclipboard.cpp llinventoryfilter.cpp llinventorymodel.cpp llinventorysubtreepanel.cpp lljoystickbutton.cpp lllandmarkactions.cpp lllandmarklist.cpp lllistbrowser.cpp lllistview.cpp lllocaltextureobject.cpp lllocationhistory.cpp lllocationinputctrl.cpp lllogchat.cpp llloginhandler.cpp lllogininstance.cpp llmanip.cpp llmaniprotate.cpp llmanipscale.cpp llmaniptranslate.cpp llmapresponders.cpp llmediactrl.cpp llmediadataclient.cpp llmediaremotectrl.cpp llmemoryview.cpp llmenucommands.cpp llmetricperformancetester.cpp llmimetypes.cpp llmorphview.cpp llmoveview.cpp llmutelist.cpp llnamebox.cpp llnameeditor.cpp llnamelistctrl.cpp llnavigationbar.cpp llnearbychat.cpp llnearbychatbar.cpp llnearbychathandler.cpp llnetmap.cpp llnotificationalerthandler.cpp llnotificationgrouphandler.cpp llnotificationmanager.cpp llnotificationscripthandler.cpp llnotificationtiphandler.cpp llnotify.cpp lloutputmonitorctrl.cpp lloverlaybar.cpp llpanelappearance.cpp llpanelappearancetab.cpp llpanelavatar.cpp llpanelavatarrow.cpp llpanelavatartag.cpp llpanelblockedlist.cpp llpanelclassified.cpp llpanelcontents.cpp llpaneleditwearable.cpp llpanelevent.cpp llpanelface.cpp llpanelgroup.cpp llpanelgroupgeneral.cpp llpanelgroupinvite.cpp llpanelgrouplandmoney.cpp llpanelgroupnotices.cpp llpanelgrouproles.cpp llpanelimcontrolpanel.cpp llpanelinventory.cpp llpanelland.cpp llpanellandaudio.cpp llpanellandmarks.cpp llpanellandmedia.cpp llpanellogin.cpp llpanellookinfo.cpp llpanellooks.cpp llpanelmedia.cpp llpanelmediasettingsgeneral.cpp llpanelmediasettingspermissions.cpp llpanelmediasettingssecurity.cpp llpanelmeprofile.cpp llpanelobject.cpp llpanelpeople.cpp llpanelpeoplemenus.cpp llpanelpermissions.cpp llpanelpick.cpp llpanelpicks.cpp llpanelplace.cpp llpanelplaceinfo.cpp llpanelplaces.cpp llpanelplacestab.cpp llpanelprimmediacontrols.cpp llpanelprofile.cpp llpanelprofileview.cpp llpanelshower.cpp llpanelteleporthistory.cpp llpanelvolume.cpp llparcelselection.cpp llparticipantlist.cpp llpatchvertexarray.cpp llplacesinventorybridge.cpp llpolymesh.cpp llpolymorph.cpp llpreview.cpp llpreviewanim.cpp llpreviewgesture.cpp llpreviewnotecard.cpp llpreviewscript.cpp llpreviewsound.cpp llpreviewtexture.cpp llproductinforequest.cpp llprogressview.cpp llrecentpeople.cpp llregionposition.cpp llremoteparcelrequest.cpp llsavedsettingsglue.cpp llscreenchannel.cpp llscrollingpanelparam.cpp llsearchcombobox.cpp llsearchhistory.cpp llselectmgr.cpp llsidetray.cpp llsidetraypanelcontainer.cpp llsky.cpp llslurl.cpp llspatialpartition.cpp llspeakers.cpp llsplitbutton.cpp llsprite.cpp llstartup.cpp llstatusbar.cpp llstylemap.cpp llsurface.cpp llsurfacepatch.cpp llsyswellitem.cpp llsyswellwindow.cpp llteleporthistory.cpp llteleporthistorystorage.cpp lltexglobalcolor.cpp lltexlayer.cpp lltexlayerparams.cpp lltextureatlas.cpp lltextureatlasmanager.cpp lltexturecache.cpp lltexturectrl.cpp lltexturefetch.cpp lltextureview.cpp lltoast.cpp lltoastalertpanel.cpp lltoastgroupnotifypanel.cpp lltoastimpanel.cpp lltoastnotifypanel.cpp lltoastpanel.cpp lltool.cpp lltoolbar.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 lltransientdockablefloater.cpp lltransientfloatermgr.cpp lluilistener.cpp lluploaddialog.cpp llurl.cpp llurldispatcher.cpp llurlhistory.cpp llurllineeditorctrl.cpp llurlsimstring.cpp llurlwhitelist.cpp llvectorperfoptions.cpp llviewchildren.cpp llviewerassetstorage.cpp llvieweraudio.cpp llviewercamera.cpp llviewercontrol.cpp llviewercontrollistener.cpp llviewerdisplay.cpp llviewerfloaterreg.cpp llviewergenericmessage.cpp llviewergesture.cpp llviewerhelp.cpp llviewerhelputil.cpp llviewerinventory.cpp llviewerjoint.cpp llviewerjointattachment.cpp llviewerjointmesh.cpp llviewerjointmesh_sse.cpp llviewerjointmesh_sse2.cpp llviewerjointmesh_vec.cpp llviewerjoystick.cpp llviewerkeyboard.cpp llviewerlayer.cpp llviewermedia.cpp llviewermedia_streamingaudio.cpp llviewermediafocus.cpp llviewermenu.cpp llviewermenufile.cpp llviewermessage.cpp llviewernetwork.cpp llviewerobject.cpp llviewerobjectlist.cpp llviewerparcelmedia.cpp llviewerparcelmediaautoplay.cpp llviewerparcelmgr.cpp llviewerparceloverlay.cpp llviewerpartsim.cpp llviewerpartsource.cpp llviewerregion.cpp llviewershadermgr.cpp llviewerstats.cpp llviewertexteditor.cpp llviewertexture.cpp llviewertextureanim.cpp llviewertexturelist.cpp llviewerthrottle.cpp llviewervisualparam.cpp llviewerwindow.cpp llviewerwindowlistener.cpp llvlcomposition.cpp llvlmanager.cpp llvoavatar.cpp llvoavatardefines.cpp llvoavatarself.cpp llvocache.cpp llvoclouds.cpp llvograss.cpp llvoground.cpp llvoicechannel.cpp llvoiceclient.cpp llvoicecontrolpanel.cpp llvoiceremotectrl.cpp llvoicevisualizer.cpp llvoinventorylistener.cpp llvopartgroup.cpp llvosky.cpp llvosurfacepatch.cpp llvotextbubble.cpp llvotree.cpp llvovolume.cpp llvowater.cpp llvowlsky.cpp llwatchdog.cpp llwaterparammanager.cpp llwaterparamset.cpp llwearable.cpp llwearabledictionary.cpp llwearablelist.cpp llweb.cpp llwind.cpp llwlanimator.cpp llwldaycycle.cpp llwlparammanager.cpp llwlparamset.cpp llworld.cpp llworldmap.cpp llworldmapview.cpp llxmlrpclistener.cpp llxmlrpctransaction.cpp noise.cpp pipeline.cpp ) set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING "The name of the viewer executable to create.") if (LINUX) # We can't set these flags for Darwin, because they get passed to # the PPC compiler. Ugh. set_source_files_properties( llviewerjointmesh_sse.cpp PROPERTIES COMPILE_FLAGS "-msse -mfpmath=sse" ) set_source_files_properties( llviewerjointmesh_sse2.cpp PROPERTIES COMPILE_FLAGS "-msse2 -mfpmath=sse" ) endif (LINUX) set(viewer_HEADER_FILES CMakeLists.txt ViewerInstall.cmake llaccordionctrl.h llaccordionctrltab.h llagent.h llagentaccess.h llagentdata.h llagentlanguage.h llagentlistener.h llagentpicksinfo.h llagentpilot.h llagentui.h llagentwearables.h llanimstatelabels.h llappearance.h llappearancemgr.h llappviewer.h llappviewerlistener.h llassetuploadqueue.h llassetuploadresponders.h llaudiosourcevo.h llavataractions.h llavatariconctrl.h llavatarlist.h llavatarlistitem.h llavatarpropertiesprocessor.h llbottomtray.h llbox.h llbreadcrumbview.h llcallbacklist.h llcallingcard.h llcapabilitylistener.h llcapabilityprovider.h llcaphttpsender.h llchannelmanager.h llchatbar.h llchathistory.h llchatitemscontainerctrl.h llchatmsgbox.h llchiclet.h llclassifiedinfo.h llclassifiedstatsresponder.h llcloud.h llcolorswatch.h llcommandhandler.h llcommandlineparser.h llcompilequeue.h llconfirmationmanager.h llcurrencyuimanager.h llcylinder.h lldateutil.h lldebugmessagebox.h lldebugview.h lldelayedgestureerror.h lldirpicker.h lldndbutton.h lldrawable.h lldrawpool.h lldrawpoolalpha.h lldrawpoolavatar.h lldrawpoolbump.h lldrawpoolclouds.h lldrawpoolground.h lldrawpoolsimple.h lldrawpoolsky.h lldrawpoolterrain.h lldrawpooltree.h lldrawpoolwater.h lldrawpoolwlsky.h lldriverparam.h lldynamictexture.h llemote.h lleventinfo.h lleventnotifier.h lleventpoll.h llexpandabletextbox.h llface.h llfasttimerview.h llfavoritesbar.h llfeaturemanager.h llfilepicker.h llfirstuse.h llflexibleobject.h llfloaterabout.h llfloateractivespeakers.h llfloateranimpreview.h llfloaterauction.h llfloateravatarpicker.h llfloateravatartextures.h llfloaterbeacons.h llfloaterbuildoptions.h llfloaterbulkpermission.h llfloaterbump.h llfloaterbuy.h llfloaterbuycontents.h llfloaterbuycurrency.h llfloaterbuyland.h llfloatercall.h llfloatercamera.h llfloaterchat.h llfloaterchatterbox.h llfloatercolorpicker.h llfloatercustomize.h llfloaterdaycycle.h llfloaterenvsettings.h llfloaterfonttest.h llfloaterfriends.h llfloatergesture.h llfloatergodtools.h llfloatergroupinvite.h llfloatergroups.h llfloaterhandler.h llfloaterhardwaresettings.h llfloaterhelpbrowser.h llfloaterhud.h llfloaterimagepreview.h llfloaterimportcollada.h llfloaterinspect.h llfloaterinventory.h llfloaterjoystick.h llfloaterlagmeter.h llfloaterland.h llfloaterlandholdings.h llfloatermap.h llfloatermediabrowser.h llfloatermediasettings.h llfloatermemleak.h llfloatermodelpreview.h llfloaternamedesc.h llfloaternearbymedia.h llfloaternotificationsconsole.h llfloateropenobject.h llfloaterparcel.h llfloaterpay.h llfloaterperms.h llfloaterpostcard.h llfloaterpostprocess.h llfloaterpreference.h llfloaterproperties.h llfloaterregioninfo.h llfloaterreporter.h llfloaterscriptdebug.h llfloatersearch.h llfloatersellland.h llfloatersettingsdebug.h llfloatersnapshot.h llfloatertelehub.h llfloatertestinspectors.h llfloatertestlistview.h llfloatertools.h llfloatertopobjects.h llfloatertos.h llfloateruipreview.h llfloaterurldisplay.h llfloaterurlentry.h llfloatervoicedevicesettings.h llfloaterwater.h llfloaterwhitelistentry.h llfloaterwindlight.h llfloaterworldmap.h llfoldertype.h llfolderview.h llfoldervieweventlistener.h llfolderviewitem.h llfollowcam.h llfriendcard.h llgesturemgr.h llgroupactions.h llgrouplist.h llgroupmgr.h llgroupnotify.h llhomelocationresponder.h llhudeffect.h llhudeffectbeam.h llhudeffectlookat.h llhudeffectpointat.h llhudeffecttrail.h llhudicon.h llhudmanager.h llhudobject.h llhudrender.h llhudtext.h llhudview.h llimcontrolpanel.h llimfloater.h llimpanel.h llimview.h llinspect.h llinspectavatar.h llinspectgroup.h llinspectobject.h llinventorybridge.h llinventoryclipboard.h llinventoryfilter.h llinventorymodel.h llinventorysubtreepanel.h lljoystickbutton.h lllandmarkactions.h lllandmarklist.h lllightconstants.h lllistbrowser.h lllistview.h lllocaltextureobject.h lllocationhistory.h lllocationinputctrl.h lllogchat.h llloginhandler.h lllogininstance.h llmanip.h llmaniprotate.h llmanipscale.h llmaniptranslate.h llmapresponders.h llmediactrl.h llmediadataclient.h llmediaremotectrl.h llmemoryview.h llmenucommands.h llmetricperformancetester.h llmimetypes.h llmorphview.h llmoveview.h llmutelist.h llnamebox.h llnameeditor.h llnamelistctrl.h llnavigationbar.h llnearbychat.h llnearbychatbar.h llnearbychathandler.h llnetmap.h llnotificationhandler.h llnotificationmanager.h llnotify.h lloutputmonitorctrl.h lloverlaybar.h llpanelappearance.h llpanelappearancetab.h llpanelavatar.h llpanelavatarrow.h llpanelavatartag.h llpanelblockedlist.h llpanelclassified.h llpanelcontents.h llpaneleditwearable.h llpanelevent.h llpanelface.h llpanelgroup.h llpanelgroupgeneral.h llpanelgroupinvite.h llpanelgrouplandmoney.h llpanelgroupnotices.h llpanelgrouproles.h llpanelimcontrolpanel.h llpanelinventory.h llpanelland.h llpanellandaudio.h llpanellandmarks.h llpanellandmedia.h llpanellogin.h llpanellookinfo.h llpanellooks.h llpanelmedia.h llpanelmediasettingsgeneral.h llpanelmediasettingspermissions.h llpanelmediasettingssecurity.h llpanelmeprofile.h llpanelobject.h llpanelpeople.h llpanelpeoplemenus.h llpanelpermissions.h llpanelpick.h llpanelpicks.h llpanelplace.h llpanelplaceinfo.h llpanelplaces.h llpanelplacestab.h llpanelprimmediacontrols.h llpanelprofile.h llpanelprofileview.h llpanelshower.h llpanelteleporthistory.h llpanelvolume.h llparcelselection.h llparticipantlist.h llpatchvertexarray.h llplacesinventorybridge.h llpolymesh.h llpolymorph.h llpreview.h llpreviewanim.h llpreviewgesture.h llpreviewnotecard.h llpreviewscript.h llpreviewsound.h llpreviewtexture.h llproductinforequest.h llprogressview.h llrecentpeople.h llregionposition.h llremoteparcelrequest.h llresourcedata.h llrootview.h llsavedsettingsglue.h llscreenchannel.h llscrollingpanelparam.h llsearchcombobox.h llsearchhistory.h llselectmgr.h llsidetray.h llsidetraypanelcontainer.h llsky.h llslurl.h llspatialpartition.h llspeakers.h llsplitbutton.h llsprite.h llstartup.h llstatusbar.h llstylemap.h llsurface.h llsurfacepatch.h llsyswellitem.h llsyswellwindow.h lltable.h llteleporthistory.h llteleporthistorystorage.h lltexglobalcolor.h lltexlayer.h lltexlayerparams.h lltextureatlas.h lltextureatlasmanager.h lltexturecache.h lltexturectrl.h lltexturefetch.h lltextureview.h lltoast.h lltoastalertpanel.h lltoastgroupnotifypanel.h lltoastimpanel.h lltoastnotifypanel.h lltoastpanel.h lltool.h lltoolbar.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 lltransientdockablefloater.h lltransientfloatermgr.h lluiconstants.h lluilistener.h lluploaddialog.h llurl.h llurldispatcher.h llurlhistory.h llurllineeditorctrl.h llurlsimstring.h llurlwhitelist.h llvectorperfoptions.h llviewchildren.h llviewerassetstorage.h llvieweraudio.h llviewerbuild.h llviewercamera.h llviewercontrol.h llviewercontrollistener.h llviewerdisplay.h llviewerfloaterreg.h llviewergenericmessage.h llviewergesture.h llviewerhelp.h llviewerinventory.h llviewerjoint.h llviewerjointattachment.h llviewerjointmesh.h llviewerjoystick.h llviewerkeyboard.h llviewerlayer.h llviewermedia.h llviewermediafocus.h llviewermediaobserver.h llviewermenu.h llviewermenufile.h llviewermessage.h llviewernetwork.h llviewerobject.h llviewerobjectlist.h llviewerparcelmedia.h llviewerparcelmediaautoplay.h llviewerparcelmgr.h llviewerparceloverlay.h llviewerpartsim.h llviewerpartsource.h llviewerprecompiledheaders.h llviewerregion.h llviewershadermgr.h llviewerstats.h llviewertexteditor.h llviewertexture.h llviewertextureanim.h llviewertexturelist.h llviewerthrottle.h llviewervisualparam.h llviewerwindow.h llviewerwindowlistener.h llvlcomposition.h llvlmanager.h llvoavatar.h llvoavatardefines.h llvoavatarself.h llvocache.h llvoclouds.h llvograss.h llvoground.h llvoicechannel.h llvoiceclient.h llvoicecontrolpanel.h llvoiceremotectrl.h llvoicevisualizer.h llvoinventorylistener.h llvopartgroup.h llvosky.h llvosurfacepatch.h llvotextbubble.h llvotree.h llvotreenew.h llvovolume.h llvowater.h llvowlsky.h llwatchdog.h llwaterparammanager.h llwaterparamset.h llwearable.h llwearabledictionary.h llwearablelist.h llweb.h llwind.h llwindebug.h llwlanimator.h llwldaycycle.h llwlparammanager.h llwlparamset.h llworld.h llworldmap.h llworldmapview.h llxmlrpclistener.h llxmlrpctransaction.h macmain.h noise.h pipeline.h randgauss.h VertexCache.h VorbisFramework.h ) source_group("CMake Rules" FILES ViewerInstall.cmake) if (DARWIN) LIST(APPEND viewer_SOURCE_FILES llappviewermacosx.cpp) find_library(AGL_LIBRARY AGL) find_library(APPKIT_LIBRARY AppKit) find_library(COCOA_LIBRARY Cocoa) find_library(IOKIT_LIBRARY IOKit) set(viewer_LIBRARIES ${COCOA_LIBRARY} ${AGL_LIBRARY} ${IOKIT_LIBRARY} ) # Add resource files to the project. set(viewer_RESOURCE_FILES secondlife.icns macview.r gpu_table.txt Info-SecondLife.plist SecondLife.nib/ # 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 ) set_source_files_properties( ${viewer_RESOURCE_FILES} PROPERTIES HEADER_FILE_ONLY TRUE #MACOSX_PACKAGE_LOCATION Resources #don't do this! this tells cmake to copy the files. ) 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) LIST(APPEND viewer_SOURCE_FILES llappviewerlinux_api_dbus.cpp) SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") set(viewer_LIBRARIES Xinerama ) endif (LINUX) if (WINDOWS) list(APPEND viewer_SOURCE_FILES llappviewerwin32.cpp llwindebug.cpp ) list(APPEND viewer_HEADER_FILES llappviewerwin32.h llwindebug.h ) # precompiled header configuration # llviewerprecompiledheaders.cpp generates # the .pch file. # All sources added to viewer_SOURCE_FILES # at this point use it. set_source_files_properties(llviewerprecompiledheaders.cpp PROPERTIES COMPILE_FLAGS "/Ycllviewerprecompiledheaders.h" ) foreach( src_file ${viewer_SOURCE_FILES} ) set_source_files_properties( ${src_file} PROPERTIES COMPILE_FLAGS "/Yullviewerprecompiledheaders.h" ) endforeach( src_file ${viewer_SOURCE_FILES} ) list(APPEND viewer_SOURCE_FILES llviewerprecompiledheaders.cpp) # llstartup.cpp needs special symbols for audio libraries, so it resets # COMPILE_FLAGS below. Make sure it maintains precompiled header settings. set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} /Yullviewerprecompiledheaders.h") # 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/icon1.ico 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/lltoolpipette.cur res/lltoolrotate.cur res/lltoolscale.cur res/lltooltranslate.cur res/lltoolzoomin.cur res/lltoolzoomout.cur res/ll_icon.BMP res/ll_icon.ico res/resource.h res/toolpickobject.cur res/toolpickobject2.cur res/toolpickobject3.cur res/toolpipette.cur ) set_source_files_properties(${viewer_RESOURCE_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) set(viewer_RESOURCE_FILES res/viewerRes.rc ${viewer_RESOURCE_FILES} ) SOURCE_GROUP("Resource Files" FILES ${viewer_RESOURCE_FILES}) if (NOT STANDALONE) list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES}) endif (NOT STANDALONE) find_library(DINPUT_LIBRARY dinput8 ${DIRECTX_LIBRARY_DIR}) find_library(DXGUID_LIBRARY dxguid ${DIRECTX_LIBRARY_DIR}) mark_as_advanced( DINPUT_LIBRARY DXGUID_LIBRARY ) set(viewer_LIBRARIES ${WINDOWS_LIBRARIES} comdlg32 ${DINPUT_LIBRARY} ${DXGUID_LIBRARY} kernel32 libboost_system odbc32 odbccp32 ole32 oleaut32 opengl32 shell32 Vfw32 winspool ) 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) list(APPEND viewer_LIBRARIES ${INTEL_MEMOPS_LIBRARY}) endif (INTEL_MEMOPS_LIBRARY) use_prebuilt_binary(dbghelp) endif (WINDOWS) # Add the xui files. This is handy for searching for xui elements # from within the IDE. set(viewer_XUI_FILES skins/default/colors.xml skins/default/textures/textures.xml ) file(GLOB DEFAULT_XUI_FILE_GLOB_LIST ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en/*.xml) list(APPEND viewer_XUI_FILES ${DEFAULT_XUI_FILE_GLOB_LIST}) file(GLOB DEFAULT_WIDGET_FILE_GLOB_LIST ${CMAKE_CURRENT_SOURCE_DIR}/skins/default/xui/en/widgets/*.xml) list(APPEND viewer_XUI_FILES ${DEFAULT_WIDGET_FILE_GLOB_LIST}) file(GLOB SILVER_XUI_FILE_GLOB_LIST ${CMAKE_CURRENT_SOURCE_DIR}/skins/silver/xui/en-us/*.xml) list(APPEND viewer_XUI_FILES ${SILVER_XUI_FILE_GLOB_LIST}) # Cannot append empty lists in CMake, wait until we have files here. #file(GLOB SILVER_WIDGET_FILE_GLOB_LIST # ${CMAKE_CURRENT_SOURCE_DIR}/skins/silver/xui/en-us/widgets/*.xml) #list(APPEND viewer_XUI_FILES ${SILVER_WIDGET_FILE_GLOB_LIST}) list(SORT viewer_XUI_FILES) source_group("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}) set(viewer_APPSETTINGS_FILES app_settings/anim.ini app_settings/cmd_line.xml app_settings/grass.xml app_settings/high_graphics.xml app_settings/keys.ini app_settings/keywords.ini app_settings/logcontrol.xml app_settings/low_graphics.xml app_settings/mid_graphics.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/trees.xml app_settings/ultra_graphics.xml app_settings/viewerart.xml ${CMAKE_SOURCE_DIR}/../etc/message.xml ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg ) use_prebuilt_binary(artwork-common) 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) if (NOT STANDALONE) list(APPEND viewer_SOURCE_FILES ${viewer_CHARACTER_FILES}) endif (NOT STANDALONE) 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 (OPENAL) set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL") endif (OPENAL) if (FMOD) set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMOD") if (DARWIN) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY}) set_target_properties( fmodwrapper PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@executable_path/../Resources" LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp" ) set(FMODWRAPPER_LIBRARY fmodwrapper) target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) else (DARWIN) # fmodwrapper unnecessary on linux or windows set(FMODWRAPPER_LIBRARY ${FMOD_LIBRARY}) endif (DARWIN) endif (FMOD) set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES}) set_source_files_properties(${viewer_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) add_executable(${VIEWER_BINARY_NAME} WIN32 MACOSX_BUNDLE ${viewer_SOURCE_FILES} ) check_message_template(${VIEWER_BINARY_NAME}) if (LLKDU_LIBRARY) add_dependencies(${VIEWER_BINARY_NAME} ${LLKDU_LIBRARY}) endif (LLKDU_LIBRARY) # 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 OFF CACHE BOOL "Add a package target that builds an installer package.") if (WINDOWS) if(MSVC71) set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map /MAPINFO:LINES") else(MSVC71) set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map") endif(MSVC71) set_target_properties(${VIEWER_BINARY_NAME} PROPERTIES # *TODO -reenable this once we get server usage sorted out #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\"" LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS" LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO" LINK_FLAGS_RELEASE ${release_flags} ) # sets the 'working directory' for debugging from visual studio. if (NOT UNATTENDED) add_custom_command( TARGET ${VIEWER_BINARY_NAME} PRE_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe ARGS --solution ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln --workingdir ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging." ) endif (NOT UNATTENDED) add_custom_command( TARGET ${VIEWER_BINARY_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/messages/message_template.msg ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message_template.msg COMMENT "Copying message_template.msg to the runtime folder." ) add_custom_command( TARGET ${VIEWER_BINARY_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message.xml COMMENT "Copying message.xml to the runtime folder." ) if(WINDOWS) # Copy Win Libs... # This happens at build time, not config time. We can't glob files in this cmake. # *FIX:Mani Write a sub script to glob the files... # *FIX:Mani Use actually dependencies rather than bulk copy. add_custom_command( TARGET ${VIEWER_BINARY_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} COMMENT "Copying staged dlls." ) add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon) if(LLKDU_LIBRARY) # kdu may not exist! add_dependencies(${VIEWER_BINARY_NAME} llkdu) endif(LLKDU_LIBRARY) endif(WINDOWS) 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_custom_command( OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --configuration=${CMAKE_CFG_INTDIR} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} --grid=${GRID} --source=${CMAKE_CURRENT_SOURCE_DIR} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit) if (PACKAGE) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2 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_target(package 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.bz2) add_dependencies(package windows-updater windows-crash-logger) endif (PACKAGE) endif (WINDOWS) target_link_libraries(${VIEWER_BINARY_NAME} ${LLAUDIO_LIBRARIES} ${LLCHARACTER_LIBRARIES} ${LLIMAGE_LIBRARIES} ${LLIMAGEJ2COJ_LIBRARIES} ${LLINVENTORY_LIBRARIES} ${LLMESSAGE_LIBRARIES} ${LLPLUGIN_LIBRARIES} ${LLPRIMITIVE_LIBRARIES} ${LLRENDER_LIBRARIES} ${FREETYPE_LIBRARIES} ${LLUI_LIBRARIES} ${LLVFS_LIBRARIES} ${LLWINDOW_LIBRARIES} ${LLXML_LIBRARIES} ${LLXUIXML_LIBRARIES} ${LSCRIPT_LIBRARIES} ${LLMATH_LIBRARIES} ${LLCOMMON_LIBRARIES} ${NDOF_LIBRARY} ${viewer_LIBRARIES} ${BOOST_PROGRAM_OPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} ${DBUSGLIB_LIBRARIES} ${OPENGL_LIBRARIES} ${FMODWRAPPER_LIBRARY} ${GLOD_LIBRARIES} ${OPENGL_LIBRARIES} ${SDL_LIBRARY} ${SMARTHEAP_LIBRARY} ${UI_LIBRARIES} ${WINDOWS_LIBRARIES} ${XMLRPCEPI_LIBRARIES} ${ELFIO_LIBRARIES} ${LLLOGIN_LIBRARIES} ${GOOGLE_PERFTOOLS_LIBRARIES} ) build_version(viewer) set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Path to artwork files.") if (LINUX) add_custom_command( OUTPUT secondlife-stripped COMMAND strip ARGS --strip-debug -o secondlife-stripped ${VIEWER_BINARY_NAME} DEPENDS ${VIEWER_BINARY_NAME} ) set(product SecondLife-${ARCH}-${viewer_VERSION}) add_custom_command( OUTPUT ${product}.tar.bz2 COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} --installer_name=${product} --arch=${ARCH} --source=${CMAKE_CURRENT_SOURCE_DIR} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS secondlife-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer010 media_plugin_webkit) if (NOT INSTALL) add_custom_target(package ALL DEPENDS ${product}.tar.bz2) add_dependencies(package linux-crash-logger-strip-target) add_dependencies(package linux-updater-strip-target) endif (NOT INSTALL) endif (LINUX) if (DARWIN) set(product "Second Life") set_target_properties( ${VIEWER_BINARY_NAME} PROPERTIES OUTPUT_NAME "${product}" MACOSX_BUNDLE_INFO_STRING "info string - localize me" MACOSX_BUNDLE_ICON_FILE "secondlife.icns" MACOSX_BUNDLE_GUI_IDENTIFIER "Second Life" MACOSX_BUNDLE_LONG_VERSION_STRING "ververver" MACOSX_BUNDLE_BUNDLE_NAME "Second Life" MACOSX_BUNDLE_SHORT_VERSION_STRING "asdf" MACOSX_BUNDLE_BUNDLE_VERSION "asdf" MACOSX_BUNDLE_COPYRIGHT "copyright linden lab 2007 - localize me and run me through a legal wringer" ) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} --actions=copy --configuration=${CMAKE_CFG_INTDIR} --source=${CMAKE_CURRENT_SOURCE_DIR} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit) if (PACKAGE) add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME}) add_dependencies(package mac-updater mac-crash-logger) add_custom_command( TARGET package POST_BUILD COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} --configuration=${CMAKE_CFG_INTDIR} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) add_custom_command( TARGET package POST_BUILD COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} --configuration=${CMAKE_CFG_INTDIR} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) endif (PACKAGE) endif (DARWIN) if (INSTALL) include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake) endif (INSTALL) # 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 llviewerhelputil.cpp lllogininstance.cpp ) set_source_files_properties( ${viewer_TEST_SOURCE_FILES} PROPERTIES LL_TEST_ADDITIONAL_SOURCE_FILES llviewerprecompiledheaders.cpp ) LL_ADD_PROJECT_UNIT_TESTS(${VIEWER_BINARY_NAME} "${viewer_TEST_SOURCE_FILES}") #set(TEST_DEBUG on) set(test_sources llcapabilitylistener.cpp llviewerprecompiledheaders.cpp) set(test_libs ${LLMESSAGE_LIBRARIES} ${WINDOWS_LIBRARIES} ${LLVFS_LIBRARIES} ${LLMATH_LIBRARIES} ${LLCOMMON_LIBRARIES} ${GOOGLEMOCK_LIBRARIES} ) LL_ADD_INTEGRATION_TEST(llcapabilitylistener "${test_sources}" "${test_libs}" ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/llmessage/tests/test_llsdmessage_peer.py" ) #ADD_VIEWER_BUILD_TEST(llmemoryview viewer) # Don't do these for DARWIN or LINUX here -- they're taken care of by viewer_manifest.py if (WINDOWS) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin COMMENT "Creating llplugin dir." ) get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BUILT_SLPLUGIN} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} COMMENT "Copying SLPlugin executable to the runtime folder." ) get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BUILT_WEBKIT_PLUGIN} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin COMMENT "Copying WebKit Plugin to the runtime folder." ) get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BUILT_QUICKTIME_PLUGIN} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin COMMENT "Copying Quicktime Plugin to the runtime folder." ) #******************************* # Copy media plugin support dlls # Debug config runtime files required for the plugins set(plugins_debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug") set(plugins_debug_files libeay32.dll qtcored4.dll qtguid4.dll qtnetworkd4.dll qtopengld4.dll qtwebkitd4.dll ssleay32.dll ) copy_if_different( ${plugins_debug_src_dir} "${CMAKE_CURRENT_BINARY_DIR}/Debug/llplugin" out_targets ${plugins_debug_files} ) set(media_plugin_targets ${media_plugin_targets} ${out_targets}) # Release & ReleaseDebInfo config runtime files required for the plugins set(plugins_release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release") set(plugins_release_files libeay32.dll qtcore4.dll qtgui4.dll qtnetwork4.dll qtopengl4.dll qtwebkit4.dll ssleay32.dll ) copy_if_different( ${plugins_release_src_dir} "${CMAKE_CURRENT_BINARY_DIR}/Release/llplugin" out_targets ${plugins_release_files} ) set(media_plugin_targets ${media_plugin_targets} ${out_targets}) copy_if_different( ${plugins_release_src_dir} "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llplugin" out_targets ${plugins_release_files} ) set(media_plugin_targets ${media_plugin_targets} ${out_targets}) add_custom_target(copy_media_plugin_libs ALL DEPENDS ${media_plugin_targets} ) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${CMAKE_BINARY_DIR}/test_apps/llplugintest/${CMAKE_CFG_INTDIR}/imageformats ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin/imageformats COMMENT "Copying llpluging imageformat libs." ) add_dependencies(${VIEWER_BINARY_NAME} llmediaplugintest copy_media_plugin_libs) endif (WINDOWS)