Warning, /education/marble/src/lib/marble/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 PROJECT(marblewidget VERSION ${RELEASE_SERVICE_VERSION})
0002 set(MARBLE_CMAKECONFIGNAME Marble)
0003 
0004 macro_optional_find_package(Phonon4Qt5 QUIET)
0005 marble_set_package_properties( Phonon4Qt5 PROPERTIES
0006     DESCRIPTION "Qt-based audio library"
0007     URL "https://phonon.kde.org/"
0008     PURPOSE "Support for playback of soundcue elements"
0009     TYPE OPTIONAL
0010 )
0011 if(Phonon4Qt5_FOUND)
0012     set(HAVE_PHONON TRUE)
0013 endif()
0014 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config-phonon.h.cmake
0015                ${CMAKE_CURRENT_BINARY_DIR}/config-phonon.h)
0016 
0017 if(MARBLE_NO_WEBKITWIDGETS)
0018     add_definitions(-DMARBLE_NO_WEBKITWIDGETS)
0019 endif()
0020 
0021 INCLUDE_DIRECTORIES(
0022  ${CMAKE_CURRENT_SOURCE_DIR}
0023  ${CMAKE_CURRENT_BINARY_DIR}
0024  ${CMAKE_CURRENT_SOURCE_DIR}/projections
0025  ${CMAKE_CURRENT_SOURCE_DIR}/routing
0026  ${CMAKE_CURRENT_SOURCE_DIR}/geodata
0027  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/data
0028  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/graphicsitem
0029  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/scene
0030  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/handlers
0031  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/handlers/kml
0032  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/handlers/dgml
0033  ${CMAKE_CURRENT_SOURCE_DIR}/geodata/parser
0034  ${CMAKE_CURRENT_SOURCE_DIR}/graphicsview
0035  ${CMAKE_CURRENT_SOURCE_DIR}/layers
0036  ${CMAKE_CURRENT_SOURCE_DIR}/osm
0037  ${CMAKE_CURRENT_SOURCE_DIR}/cloudsync
0038  ${CMAKE_SOURCE_DIR}/src/lib/astro
0039  ${ZLIB_INCLUDE_DIRS}
0040 )
0041 
0042 INCLUDE(geodata/CMakeLists.txt)
0043 INCLUDE(graphicsview/CMakeLists.txt)
0044 INCLUDE(layers/CMakeLists.txt)
0045 INCLUDE(osm/CMakeLists.txt)
0046 
0047 set(MARBLE_LIB_VERSION ${PROJECT_VERSION})
0048 set(MARBLE_LIB_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
0049 set(MARBLE_LIB_VERSION_MINOR ${PROJECT_VERSION_MINOR})
0050 set(MARBLE_LIB_VERSION_PATCH ${PROJECT_VERSION_PATCH})
0051 set(MARBLE_LIB_SOVERSION 28)
0052 set(HEADER_PREFIX MARBLE_LIB)
0053 configure_file("${marble_SOURCE_DIR}/cmake/templates/versionheader.h.in" "${CMAKE_CURRENT_BINARY_DIR}/marble_version.h")
0054 include(CMakePackageConfigHelpers)
0055 write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${MARBLE_CMAKECONFIGNAME}ConfigVersion.cmake" VERSION "${PROJECT_VERSION}" COMPATIBILITY AnyNewerVersion)
0056 
0057 
0058 ########### next target ###############
0059 
0060 set(marblewidget_SRCS
0061     ${geodata_SRCS}
0062     ${graphicsview_SRCS}
0063     ${layers_SRCS}
0064     ${osm_SRCS}
0065     blendings/Blending.cpp
0066     blendings/BlendingAlgorithms.cpp
0067     blendings/BlendingFactory.cpp
0068     blendings/SunLightBlending.cpp
0069     DownloadRegion.cpp
0070     DownloadRegionDialog.cpp
0071     LatLonBoxWidget.cpp
0072     MarbleWidget.cpp
0073     MarbleAbstractPresenter.cpp
0074     MarbleModel.cpp
0075     MarbleMap.cpp
0076     MarbleColors.cpp
0077     MapViewWidget.cpp
0078     CelestialSortFilterProxyModel.cpp
0079     FileViewWidget.cpp
0080     TourWidget.cpp
0081     FlyToEditWidget.cpp
0082     TourControlEditWidget.cpp
0083     WaitEditWidget.cpp
0084     SoundCueEditWidget.cpp
0085     RemoveItemEditWidget.cpp
0086     TourItemDelegate.cpp
0087     MapViewItemDelegate.cpp
0088     TourPlayback.cpp
0089     LegendWidget.cpp
0090     PlaybackItem.cpp
0091     PlaybackAnimatedUpdateItem.cpp
0092     PlaybackFlyToItem.cpp
0093     PlaybackSoundCueItem.cpp
0094     PlaybackTourControlItem.cpp
0095     PlaybackWaitItem.cpp
0096     SerialTrack.cpp
0097     SoundTrack.cpp
0098     AnimatedUpdateTrack.cpp
0099     CurrentLocationWidget.cpp
0100     MarbleNavigator.cpp
0101     MarbleLegendBrowser.cpp
0102     MarbleAboutDialog.cpp
0103     MarbleInputHandler.cpp
0104     MarbleWidgetInputHandler.cpp
0105     MarbleWidgetPopupMenu.cpp
0106     MarblePlacemarkModel.cpp
0107     GeoDataTreeModel.cpp
0108     GeoUriParser.cpp
0109     kdescendantsproxymodel.cpp
0110     BranchFilterProxyModel.cpp
0111     TreeViewDecoratorModel.cpp
0112     MarbleDebug.cpp
0113     Tile.cpp
0114     TextureTile.cpp
0115     TileCoordsPyramid.cpp
0116     TileLevelRangeWidget.cpp
0117     TileLoader.cpp
0118     QtMarbleConfigDialog.cpp
0119     ClipPainter.cpp
0120     DownloadPolicy.cpp
0121     DownloadQueueSet.cpp
0122     GeoPainter.cpp
0123     HttpDownloadManager.cpp
0124     HttpJob.cpp
0125     RemoteIconLoader.cpp
0126     LayerManager.cpp
0127     PluginManager.cpp
0128     TimeControlWidget.cpp
0129     AbstractFloatItem.cpp
0130     PopupItem.cpp
0131     MarbleGlobal.cpp
0132     MarbleDirs.cpp
0133     MarbleLocale.cpp
0134     MarblePhysics.cpp
0135     TileCreatorDialog.cpp
0136     MapThemeManager.cpp
0137     ViewportParams.cpp
0138     ViewParams.cpp
0139     projections/AbstractProjection.cpp
0140     projections/CylindricalProjection.cpp
0141     projections/AzimuthalProjection.cpp
0142     projections/SphericalProjection.cpp
0143     projections/EquirectProjection.cpp
0144     projections/MercatorProjection.cpp
0145     projections/GnomonicProjection.cpp
0146     projections/StereographicProjection.cpp
0147     projections/LambertAzimuthalProjection.cpp
0148     projections/AzimuthalEquidistantProjection.cpp
0149     projections/VerticalPerspectiveProjection.cpp
0150     VisiblePlacemark.cpp
0151     PlacemarkLayout.cpp
0152     Planet.cpp
0153     PlanetFactory.cpp
0154     Quaternion.cpp
0155     TextureColorizer.cpp
0156     TextureMapperInterface.cpp
0157     ScanlineTextureMapperContext.cpp
0158     SphericalScanlineTextureMapper.cpp
0159     EquirectScanlineTextureMapper.cpp
0160     MercatorScanlineTextureMapper.cpp
0161     TileScalingTextureMapper.cpp
0162     GenericScanlineTextureMapper.cpp
0163     VectorTileModel.cpp
0164     DiscCache.cpp
0165     ServerLayout.cpp
0166     StoragePolicy.cpp
0167     CacheStoragePolicy.cpp
0168     FileStoragePolicy.cpp
0169     FileStorageWatcher.cpp
0170     StackedTile.cpp
0171     TileId.cpp
0172     StackedTileLoader.cpp
0173     TileLoaderHelper.cpp
0174     TileCreator.cpp
0175     #jsonparser.cpp
0176     FileLoader.cpp
0177     FileManager.cpp
0178     PositionTracking.cpp
0179     DataMigration.cpp
0180     ImageF.cpp
0181     MovieCapture.cpp
0182     MovieCaptureDialog.cpp
0183     TourCaptureDialog.cpp
0184     EditPlacemarkDialog.cpp
0185     AddLinkDialog.cpp
0186     FormattedTextWidget.cpp
0187 
0188     AbstractDataPlugin.cpp
0189     AbstractDataPluginModel.cpp
0190     AbstractDataPluginItem.cpp
0191     AbstractWorkerThread.cpp
0192 
0193     PluginInterface.cpp
0194     DialogConfigurationInterface.cpp
0195     LayerInterface.cpp
0196     RenderState.cpp
0197     RenderPlugin.cpp
0198     RenderPluginInterface.cpp
0199     PositionProviderPlugin.cpp
0200     PositionProviderPluginInterface.cpp
0201     PlacemarkPositionProviderPlugin.cpp
0202     RouteSimulationPositionProviderPlugin.cpp
0203     MarblePluginSettingsWidget.cpp
0204     RenderPluginModel.cpp
0205     PluginAboutDialog.cpp
0206     PluginItemDelegate.cpp
0207 
0208     SunLocator.cpp
0209     MarbleClock.cpp
0210     SunControlWidget.cpp
0211     MergedLayerDecorator.cpp
0212 
0213     MathHelper.cpp
0214 
0215     LatLonEdit.cpp
0216     PlacemarkEditHeader.cpp
0217 
0218     MapThemeSortFilterProxyModel.cpp
0219 
0220     TemplateDocument.cpp
0221 
0222     routing/AlternativeRoutesModel.cpp
0223     routing/Maneuver.cpp
0224     routing/Route.cpp
0225     routing/RouteRequest.cpp
0226     routing/RouteSegment.cpp
0227     routing/RoutingModel.cpp
0228     routing/RoutingProfile.cpp
0229     routing/RoutingManager.cpp
0230     routing/RoutingLayer.cpp
0231     routing/RoutingInputWidget.cpp
0232     routing/RoutingWidget.cpp
0233     routing/RoutingProfilesWidget.cpp
0234     routing/RoutingProfilesModel.cpp
0235     routing/RoutingProfileSettingsDialog.cpp
0236     routing/SpeakersModel.cpp
0237     routing/VoiceNavigationModel.cpp
0238     routing/instructions/InstructionTransformation.cpp
0239     routing/instructions/RoutingInstruction.cpp
0240     routing/instructions/RoutingPoint.cpp
0241     routing/instructions/RoutingWaypoint.cpp
0242     routing/instructions/WaypointParser.cpp
0243 
0244     ParsingRunnerManager.cpp
0245     ReverseGeocodingRunnerManager.cpp
0246     RoutingRunnerManager.cpp
0247     SearchRunnerManager.cpp
0248 
0249     AutoNavigation.cpp
0250 
0251     SearchRunnerPlugin.cpp
0252     ReverseGeocodingRunnerPlugin.cpp
0253     RoutingRunnerPlugin.cpp
0254     ParseRunnerPlugin.cpp
0255     SearchRunner.cpp
0256     ReverseGeocodingRunner.cpp
0257     RoutingRunner.cpp
0258     ParsingRunner.cpp
0259     RunnerTask.cpp
0260 
0261     BookmarkManager.cpp
0262     EditBookmarkDialog.cpp
0263     BookmarkManagerDialog.cpp
0264     NewBookmarkFolderDialog.cpp
0265 
0266     PrintOptionsWidget.cpp
0267     ExternalEditorDialog.cpp
0268     GoToDialog.cpp
0269 
0270     MapWizard.cpp
0271     OwsServiceManager.cpp
0272     MapThemeDownloadDialog.cpp
0273     GeoGraphicsScene.cpp
0274     ElevationModel.cpp
0275     MarbleLineEdit.cpp
0276     SearchInputWidget.cpp
0277     SearchWidget.cpp
0278     kineticmodel.cpp
0279     NewstuffModel.cpp
0280     MarbleZip.cpp
0281 
0282     OsmcSymbol.cpp
0283 
0284     StyleBuilder.cpp
0285 
0286     cloudsync/CloudSyncManager.cpp
0287     cloudsync/RouteSyncManager.cpp
0288     cloudsync/OwncloudSyncBackend.cpp
0289     cloudsync/CloudRouteModel.cpp
0290     cloudsync/CloudRoutesDialog.cpp
0291     cloudsync/RouteItem.cpp
0292     cloudsync/RouteItemDelegate.cpp
0293     cloudsync/BookmarkSyncManager.cpp
0294     cloudsync/MergeItem.cpp
0295     cloudsync/ConflictDialog.cpp
0296 )
0297 
0298 
0299 if (MARBLE_NO_WEBKITWIDGETS)
0300     LIST(APPEND marblewidget_SRCS
0301         NullMarbleWebView.cpp
0302         NullTinyWebBrowser.cpp
0303         )
0304 else()
0305     LIST(APPEND marblewidget_SRCS
0306         MarbleWebView.cpp
0307         TinyWebBrowser.cpp
0308         )
0309 endif()
0310 
0311 if (NOT MARBLE_NO_DBUS)
0312     LIST(APPEND marblewidget_SRCS
0313         MarbleDBusInterface.cpp
0314         )
0315 endif()
0316 
0317 set (marblewidget_UI
0318     ${osm_UIS}
0319     LatLonBoxWidget.ui
0320     MapViewWidget.ui
0321     CurrentLocationWidget.ui
0322     FileViewWidget.ui
0323     TourWidget.ui
0324     MarbleNavigator.ui
0325     MarbleCacheSettingsWidget.ui
0326     MarbleViewSettingsWidget.ui
0327     MarbleNavigationSettingsWidget.ui
0328     TimeControlWidget.ui
0329     MarbleTimeSettingsWidget.ui
0330     MarblePluginSettingsWidget.ui
0331     TileCreatorDialog.ui
0332     TileLevelRangeWidget.ui
0333     MarbleAboutDialog.ui
0334     SunControlWidget.ui
0335     LatLonEdit.ui
0336     PlacemarkEditHeader.ui
0337     routing/RoutingWidget.ui
0338     DataMigrationWidget.ui
0339     EditBookmarkDialog.ui
0340     BookmarkManagerDialog.ui
0341     NewBookmarkFolderDialog.ui
0342     PrintOptions.ui
0343     ExternalEditor.ui
0344     GoToDialog.ui
0345     routing/RoutingSettingsWidget.ui
0346     routing/RoutingProfileSettingsDialog.ui
0347     MapWizard.ui
0348     MapThemeDownloadDialog.ui
0349     cloudsync/CloudRoutesDialog.ui
0350     MarbleCloudSyncSettingsWidget.ui
0351     MovieCaptureDialog.ui
0352     TourCaptureDialog.ui
0353     EditPlacemarkDialog.ui
0354     AddLinkDialog.ui
0355     FormattedTextWidget.ui
0356     ElevationWidget.ui
0357 )
0358 if (MARBLE_NO_WEBKITWIDGETS)
0359     LIST(APPEND marblewidget_UI
0360         NullLegendWidget.ui
0361         NullWebPopupWidget.ui
0362         )
0363 else()
0364     LIST(APPEND marblewidget_UI
0365         LegendWidget.ui
0366         WebPopupWidget.ui
0367         )
0368 endif()
0369 
0370 # FIXME: cleaner approach of src/lib/marblwidget/MarbleControlBox.* vs. marble.qrc
0371 qt_add_resources(marblewidget_SRCS libmarble.qrc ../../apps/marble-ui/marble.qrc)
0372 
0373 qt_wrap_ui(marblewidget_SRCS ${marblewidget_UI})
0374 
0375 add_library(marblewidget ${marblewidget_SRCS} ${SOURCES_UI_HDRS})
0376 
0377 generate_export_header(marblewidget BASE_NAME marble)
0378 
0379 if(ECM_FOUND)
0380   # Logging for the Marble library
0381   ecm_qt_export_logging_category(
0382     IDENTIFIER "MARBLE_LIB"
0383     CATEGORY_NAME "marble_lib"
0384     EXPORT marble
0385     DESCRIPTION "Marble (library)")
0386 endif()
0387 add_definitions("-DLOGGING_IDENTIFIER=MARBLE_LIB")
0388 
0389 # link with libastro
0390 target_link_libraries(marblewidget PRIVATE astro)
0391 
0392 # link against zlib
0393 target_link_libraries(marblewidget PRIVATE ${ZLIB_LIBRARIES})
0394 
0395 # link with release version of Qt libs
0396 target_link_libraries(marblewidget
0397     PUBLIC
0398         Qt5::Xml
0399         Qt5::Gui
0400         Qt5::Widgets
0401         Qt5::Network
0402     PRIVATE
0403         Qt5::Core
0404         Qt5::Svg
0405         Qt5::PrintSupport
0406         Qt5::Concurrent
0407 )
0408 if (NOT MARBLE_NO_WEBKITWIDGETS)
0409     target_link_libraries(marblewidget
0410         PUBLIC
0411             Qt5::WebChannel
0412             Qt5::WebEngineWidgets
0413             Qt5::WebEngine
0414     )
0415 endif ()
0416 if (NOT MARBLE_NO_DBUS)
0417     target_link_libraries(marblewidget
0418         PRIVATE
0419             Qt5::DBus
0420     )
0421 endif ()
0422 if (Phonon4Qt5_FOUND)
0423     target_link_libraries(marblewidget
0424         PRIVATE
0425             Phonon::phonon4qt5
0426     )
0427 endif()
0428 
0429 if (APPLE)
0430   # TODO: PUBLIC or can be PRIVATE?
0431   #defined in top level makefile
0432   target_link_libraries(marblewidget PUBLIC ${MAC_EXTRA_LIBS} )
0433 endif (APPLE)
0434 
0435 # TODO: still supported?
0436 if (CMAKE_SYSTEM_NAME MATCHES "SunOS")
0437   target_link_libraries(marblewidget PUBLIC m)
0438 endif (CMAKE_SYSTEM_NAME MATCHES "SunOS")
0439 
0440 if(WIN32)
0441   # TODO: PUBLIC or can be PRIVATE?
0442   target_link_libraries(marblewidget PUBLIC ws2_32 imm32 winmm)
0443 endif(WIN32)
0444 
0445 set_target_properties(marblewidget  PROPERTIES
0446     EXPORT_NAME "Marble"
0447     OUTPUT_NAME marblewidget-qt5
0448     COMPILE_FLAGS "-DKML_LAZY_IMP"
0449 )
0450 
0451 if (NOT ANDROID)
0452   set_target_properties(marblewidget  PROPERTIES
0453     VERSION ${MARBLE_LIB_VERSION}
0454     SOVERSION ${MARBLE_LIB_SOVERSION}
0455   )
0456 endif()
0457 
0458 target_include_directories(marblewidget
0459     INTERFACE "$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>"
0460 )
0461 
0462 # choose the correct target install library path
0463 if(WIN32)
0464   install(TARGETS marblewidget EXPORT MarbleTargets RUNTIME DESTINATION . ARCHIVE DESTINATION lib)
0465 elseif(APPLE)
0466   install(TARGETS marblewidget LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/Marble.app/Contents/MacOS/lib)
0467 else()
0468   install(TARGETS marblewidget
0469     EXPORT MarbleTargets
0470     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
0471     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
0472 endif()
0473 
0474 
0475 ########### install headers & cmake config files ###############
0476 
0477 if (APPLE)
0478     # TODO: find how to install & deploy library, headers and config files as bundle for development
0479     return()
0480 endif()
0481 
0482 if (MARBLE_NO_WEBKITWIDGETS)
0483     set(marble_WebKit
0484         NullMarbleWebView.h
0485         NullTinyWebBrowser.h
0486         )
0487 else()
0488     set(marble_WebKit
0489         MarbleWebView.h
0490         TinyWebBrowser.h
0491         )
0492 endif()
0493 
0494 install( FILES
0495     ${CMAKE_CURRENT_BINARY_DIR}/marble_version.h
0496     ${CMAKE_CURRENT_BINARY_DIR}/marble_export.h
0497     ${CMAKE_CURRENT_BINARY_DIR}/declarative/marble_declarative_export.h
0498     ${graphicsview_HDRS}
0499     ${marble_WebKit}
0500     AutoNavigation.h
0501     BookmarkManager.h
0502     DownloadRegion.h
0503     DownloadRegionDialog.h
0504     FileManager.h
0505     LatLonBoxWidget.h
0506     MarbleWidget.h
0507     MarbleMap.h
0508     MarbleModel.h
0509     MapViewWidget.h
0510     CelestialSortFilterProxyModel.h
0511     LegendWidget.h
0512     FileViewWidget.h
0513     TourWidget.h
0514     FlyToEditWidget.h
0515     TourControlEditWidget.h
0516     WaitEditWidget.h
0517     SoundCueEditWidget.h
0518     RemoveItemEditWidget.h
0519     TourItemDelegate.h
0520     MapViewItemDelegate.h
0521     TourPlayback.h
0522     CurrentLocationWidget.h
0523     MarbleNavigator.h
0524     AbstractFloatItem.h
0525     MapThemeManager.h
0526     MarbleAboutDialog.h
0527     MarbleInputHandler.h
0528     MarbleWidgetInputHandler.h
0529     MarbleWidgetPopupMenu.h
0530     TileId.h
0531     TileCoordsPyramid.h
0532     TileLevelRangeWidget.h
0533     QtMarbleConfigDialog.h
0534     MarbleMath.h
0535     MarbleColors.h
0536     MarbleGlobal.h
0537     MarbleLocale.h
0538     MarbleDebug.h
0539     MarbleDirs.h
0540     GeoPainter.h
0541     HttpDownloadManager.h
0542     TileCreatorDialog.h
0543     ViewportParams.h
0544     projections/AbstractProjection.h
0545     PositionTracking.h
0546     Quaternion.h
0547     SunLocator.h
0548     ClipPainter.h
0549     GeoGraphicsScene.h
0550     GeoDataTreeModel.h
0551     geodata/data/GeoDataAbstractView.h
0552     geodata/data/GeoDataAccuracy.h
0553     geodata/data/GeoDataBalloonStyle.h
0554     geodata/data/GeoDataColorStyle.h
0555     geodata/data/GeoDataContainer.h
0556     geodata/data/GeoDataCoordinates.h
0557     geodata/data/GeoDataDocument.h
0558     geodata/data/GeoDataFeature.h
0559     geodata/data/GeoDataFolder.h
0560     geodata/data/GeoDataGeometry.h
0561     geodata/data/GeoDataGroundOverlay.h
0562     geodata/data/GeoDataHotSpot.h
0563     geodata/data/GeoDataIconStyle.h
0564     geodata/data/GeoDataItemIcon.h
0565     geodata/data/GeoDataLabelStyle.h
0566     geodata/data/GeoDataLatLonAltBox.h
0567     geodata/data/GeoDataLatLonBox.h
0568     geodata/data/GeoDataLatLonQuad.h
0569     geodata/data/GeoDataLinearRing.h
0570     geodata/data/GeoDataLineString.h
0571     geodata/data/GeoDataLineStyle.h
0572     geodata/data/GeoDataListStyle.h
0573     geodata/data/GeoDataLod.h
0574     geodata/data/GeoDataLookAt.h
0575     geodata/data/GeoDataOverlay.h
0576     geodata/data/GeoDataMultiGeometry.h
0577     geodata/data/GeoDataObject.h
0578     geodata/data/GeoDataPlacemark.h
0579     geodata/data/GeoDataPoint.h
0580     geodata/data/GeoDataPolygon.h
0581     geodata/data/GeoDataPolyStyle.h
0582     geodata/data/GeoDataRegion.h
0583     geodata/data/GeoDataRelation.h
0584     geodata/data/GeoDataSnippet.h
0585     geodata/data/GeoDataStyle.h
0586     geodata/data/GeoDataStyleMap.h
0587     geodata/data/GeoDataStyleSelector.h
0588     geodata/data/GeoDataTrack.h
0589     geodata/data/GeoDataTimeSpan.h
0590     geodata/data/GeoDataTimeStamp.h
0591     geodata/data/GeoDataTimePrimitive.h
0592     geodata/data/Serializable.h
0593     geodata/geodata_export.h
0594     geodata/parser/GeoDocument.h
0595     geodata/parser/GeoDataTypes.h
0596     geodata/writer/GeoWriter.h
0597     routing/RoutingWidget.h
0598     routing/RoutingManager.h
0599     TileCreator.h
0600     PluginManager.h
0601     PluginInterface.h
0602     DialogConfigurationInterface.h
0603     PositionProviderPlugin.h
0604     PositionProviderPluginInterface.h
0605     RenderPlugin.h
0606     RenderPluginInterface.h
0607     ParsingRunnerManager.h
0608     ReverseGeocodingRunnerManager.h
0609     RoutingRunnerManager.h
0610     SearchRunnerManager.h
0611     ParsingRunner.h
0612     SearchRunner.h
0613     ReverseGeocodingRunner.h
0614     RoutingRunner.h
0615     SearchRunnerPlugin.h
0616     ReverseGeocodingRunnerPlugin.h
0617     RoutingRunnerPlugin.h
0618     ParseRunnerPlugin.h
0619     LayerInterface.h
0620     RenderState.h
0621     PluginAboutDialog.h
0622     Planet.h
0623     PlanetFactory.h
0624     EditPlacemarkDialog.h
0625     AddLinkDialog.h
0626     FormattedTextWidget.h
0627 
0628     AbstractDataPlugin.h
0629     AbstractDataPluginModel.h
0630     AbstractDataPluginItem.h
0631     AbstractWorkerThread.h
0632 
0633     LatLonEdit.h
0634     PlacemarkEditHeader.h
0635     MapWizard.h
0636     MapThemeDownloadDialog.h
0637     ElevationModel.h
0638 
0639     routing/AlternativeRoutesModel.h
0640     routing/Route.h
0641     routing/Maneuver.h
0642     routing/RouteRequest.h
0643     routing/RouteSegment.h
0644     routing/RoutingManager.h
0645     routing/RoutingModel.h
0646     routing/RoutingProfile.h
0647 
0648     OsmcSymbol.h
0649 
0650 
0651     declarative/MarbleDeclarativePlugin.h
0652 
0653     DESTINATION ${INCLUDE_INSTALL_DIR}/marble
0654 )
0655 
0656 
0657 ########### CMake Config files ###############
0658 
0659 include(CMakePackageConfigHelpers)
0660 
0661 set(MARBLE_INSTALL_CMAKECONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${MARBLE_CMAKECONFIGNAME})
0662 
0663 configure_package_config_file(MarbleConfig.cmake.in
0664     ${CMAKE_CURRENT_BINARY_DIR}/${MARBLE_CMAKECONFIGNAME}Config.cmake
0665     INSTALL_DESTINATION ${MARBLE_INSTALL_CMAKECONFIGDIR}
0666 )
0667 
0668 install(FILES
0669     ${CMAKE_CURRENT_BINARY_DIR}/${MARBLE_CMAKECONFIGNAME}Config.cmake
0670     ${CMAKE_CURRENT_BINARY_DIR}/${MARBLE_CMAKECONFIGNAME}ConfigVersion.cmake
0671 
0672     DESTINATION ${MARBLE_INSTALL_CMAKECONFIGDIR}
0673 )
0674 
0675 install(
0676     EXPORT MarbleTargets
0677     FILE ${MARBLE_CMAKECONFIGNAME}Targets.cmake
0678     DESTINATION ${MARBLE_INSTALL_CMAKECONFIGDIR}
0679 )
0680 
0681 ########### Qt Pri file ###############
0682 
0683 # Where the pri file is installed is defined by the following rules, with decreasing priority:
0684 # * MARBLE_PRI_INSTALL_USE_QT_SYS_PATHS=TRUE:
0685 #   pri file will be installed with the dirs of the Qt installation used
0686 # * MARBLE_PRI_INSTALL_DIR=some-relative-or-absolute-path
0687 #   if set will be used as given
0688 # * installation prefix = Qt installation prefix:
0689 #   pri file will be installed with the dirs of the Qt installation used
0690 # * otherwise:
0691 #   pri file will be installed in mkspecs/modules in the installation prefix
0692 
0693 get_target_property(PRI_LIB_NAME marblewidget OUTPUT_NAME)
0694 
0695 set(PRI_ABS_INCLUDE_INSTALL_DIR "${INCLUDE_INSTALL_DIR}")
0696 if(NOT IS_ABSOLUTE "${PRI_ABS_INCLUDE_INSTALL_DIR}")
0697     set(PRI_ABS_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PRI_ABS_INCLUDE_INSTALL_DIR}")
0698 endif()
0699 
0700 set(PRI_ABS_LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
0701 if(NOT IS_ABSOLUTE "${PRI_ABS_LIB_INSTALL_DIR}")
0702     set(PRI_ABS_LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${PRI_ABS_LIB_INSTALL_DIR}")
0703 endif()
0704 
0705 set(PRI_DEPS "xml gui widgets network")
0706 if (NOT MARBLE_NO_WEBKITWIDGETS)
0707     set(PRI_DEPS "${PRI_DEPS} webenginewidgets")
0708 endif()
0709 
0710 file(GENERATE
0711     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qt_Marble.pri
0712     CONTENT
0713 "QT.Marble.VERSION = ${MARBLE_LIB_VERSION}
0714 QT.Marble.MAJOR_VERSION = ${MARBLE_LIB_VERSION_MAJOR}
0715 QT.Marble.MINOR_VERSION = ${MARBLE_LIB_VERSION_MINOR}
0716 QT.Marble.PATCH_VERSION = ${MARBLE_LIB_VERSION_PATCH}
0717 QT.Marble.name = ${PRI_LIB_NAME}
0718 QT.Marble.defines =
0719 QT.Marble.includes = ${PRI_ABS_INCLUDE_INSTALL_DIR}
0720 QT.Marble.private_includes =
0721 QT.Marble.libs = ${PRI_ABS_LIB_INSTALL_DIR}
0722 QT.Marble.depends = ${PRI_DEPS}
0723 "
0724 )
0725 
0726 # detect which folder the pri file should be installed into
0727 get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
0728 
0729 function(query_qmake result_variable qt_variable)
0730     execute_process(
0731         COMMAND ${QMAKE_EXECUTABLE} -query "${qt_variable}"
0732         RESULT_VARIABLE return_code
0733         OUTPUT_VARIABLE output
0734     )
0735     if(return_code EQUAL 0)
0736         string(STRIP "${output}" output)
0737         file(TO_CMAKE_PATH "${output}" output_path)
0738         set(${result_variable} "${output_path}" PARENT_SCOPE)
0739     else()
0740         message(WARNING "Failed call: ${QMAKE_EXECUTABLE} -query \"${qt_variable}\"")
0741         message(FATAL_ERROR "QMake call failed: ${return_code}")
0742     endif()
0743 endfunction()
0744 
0745 # if going to be installed into same prefix as Qt, then also use same folder
0746 set(IS_SHARED_INSTALL_PREFIX FALSE)
0747 if(NOT DEFINED MARBLE_PRI_INSTALL_USE_QT_SYS_PATHS)
0748     query_qmake(qt_install_prefix_dir QT_INSTALL_PREFIX)
0749     if(qt_install_prefix_dir STREQUAL "${CMAKE_INSTALL_PREFIX}")
0750         set(IS_SHARED_INSTALL_PREFIX TRUE)
0751     endif()
0752 endif()
0753 
0754 if(MARBLE_PRI_INSTALL_USE_QT_SYS_PATHS OR IS_SHARED_INSTALL_PREFIX)
0755     query_qmake(qt_host_data_dir QT_HOST_DATA)
0756     set(PRI_INSTALL_DIR ${qt_host_data_dir}/mkspecs/modules)
0757 else()
0758     set(PRI_INSTALL_DIR mkspecs/modules)
0759 endif()
0760 set(MARBLE_PRI_INSTALL_DIR "${PRI_INSTALL_DIR}" CACHE PATH "The directory where the Marble pri file will be installed to.")
0761 
0762 install(FILES
0763     ${CMAKE_CURRENT_BINARY_DIR}/qt_Marble.pri
0764     DESTINATION  ${MARBLE_PRI_INSTALL_DIR}
0765 )