diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,13 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" AND NOT WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() +# Default to hidden visibility for symbols +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) +if (POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) +endif() #################################################### # Where to look first for cmake modules, diff --git a/src/lib/astro/CMakeLists.txt b/src/lib/astro/CMakeLists.txt --- a/src/lib/astro/CMakeLists.txt +++ b/src/lib/astro/CMakeLists.txt @@ -39,9 +39,6 @@ endif(WIN32) -SET_TARGET_PROPERTIES(astro PROPERTIES - DEFINE_SYMBOL astro_EXPORTS # needed for astrolib_export.h - ) if(NOT CMAKE_SYSTEM_NAME STREQUAL Android) SET_TARGET_PROPERTIES(astro PROPERTIES VERSION ${GENERIC_LIB_VERSION} diff --git a/src/lib/marble/AbstractFloatItem.h b/src/lib/marble/AbstractFloatItem.h --- a/src/lib/marble/AbstractFloatItem.h +++ b/src/lib/marble/AbstractFloatItem.h @@ -85,18 +85,18 @@ * @deprecated Do not override this method since it won't be called any longer. * Override one of FrameGraphicsItem's paint methods instead. */ - MARBLE_DEPRECATED( bool render( GeoPainter *painter, ViewportParams *viewport, + MARBLE_DEPRECATED bool render( GeoPainter *painter, ViewportParams *viewport, const QString& renderPos = QLatin1String("FLOAT_ITEM"), - GeoSceneLayer * layer = 0 ) override ); + GeoSceneLayer * layer = 0 ) override; QString renderPolicy() const override; /** * @brief Returns the rendering position of this float item. * @deprecated The return value of method is ignored. The float item's rendering position * will always be "FLOAT_ITEM". */ - MARBLE_DEPRECATED( QStringList renderPosition() const override ); + MARBLE_DEPRECATED QStringList renderPosition() const override; /** * @brief Set visibility of the float item diff --git a/src/lib/marble/CMakeLists.txt b/src/lib/marble/CMakeLists.txt --- a/src/lib/marble/CMakeLists.txt +++ b/src/lib/marble/CMakeLists.txt @@ -361,6 +361,9 @@ ADD_LIBRARY(${MARBLEWIDGET} SHARED ${marblewidget_SRCS} ${SOURCES_UI_HDRS}) +generate_export_header(${MARBLEWIDGET} BASE_NAME marble) + + # TODO: use PUBLIC/PRIVATE everywhere instead of LINK_PUBLIC/LINK_PRIVATE # once SailfishOS has cmake >= 2.8.12 @@ -427,11 +430,6 @@ set_target_properties(${MARBLEWIDGET} PROPERTIES COMPILE_FLAGS "-DKML_LAZY_IMP") -# needed for marble_export.h -set_target_properties(${MARBLEWIDGET} PROPERTIES - DEFINE_SYMBOL MAKE_MARBLE_LIB -) - # choose the correct target install library path if(WIN32) install(TARGETS ${MARBLEWIDGET} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} ARCHIVE DESTINATION lib) @@ -457,6 +455,7 @@ endif() install( FILES + ${CMAKE_CURRENT_BINARY_DIR}/marble_export.h ${graphicsview_HDRS} ${marble_WebKit} AutoNavigation.h @@ -578,7 +577,6 @@ LayerInterface.h RenderState.h PluginAboutDialog.h - marble_export.h Planet.h PlanetFactory.h EditPlacemarkDialog.h diff --git a/src/lib/marble/MarbleDBusInterface.h b/src/lib/marble/MarbleDBusInterface.h --- a/src/lib/marble/MarbleDBusInterface.h +++ b/src/lib/marble/MarbleDBusInterface.h @@ -11,6 +11,8 @@ #ifndef MARBLE_DBUSINTERFACE_H #define MARBLE_DBUSINTERFACE_H +#include "marble_export.h" + namespace Marble { class MarbleWidget; @@ -23,7 +25,7 @@ namespace Marble { -class MarbleDBusInterface : public QDBusAbstractAdaptor +class MARBLE_EXPORT MarbleDBusInterface : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.marble") diff --git a/src/lib/marble/Planet.h b/src/lib/marble/Planet.h --- a/src/lib/marble/Planet.h +++ b/src/lib/marble/Planet.h @@ -34,7 +34,10 @@ */ Planet(); - MARBLE_DEPRECATED( explicit Planet( const QString& id ) ); // please use PlanetFactory::construct(id) instead + /** + * @deprecated Please use PlanetFactory::construct(id) instead. + */ + MARBLE_DEPRECATED explicit Planet(const QString& id); ///Copy Constructor Planet( const Planet& other ); @@ -97,8 +100,14 @@ Planet& operator=( const Planet& rhs ); - MARBLE_DEPRECATED( static QString name( const QString& id ) ); // please use PlanetFactory::localizedName(id) instead - MARBLE_DEPRECATED( static QStringList planetList() ); // please use PlanetFactory::planetList() instead + /** + * @deprecated Please use PlanetFactory::localizedName(id) instead. + */ + MARBLE_DEPRECATED static QString name(const QString& id); + /** + * @deprecated Please use PlanetFactory::planetList() instead. + */ + MARBLE_DEPRECATED static QStringList planetList(); bool hasAtmosphere() const; void setHasAtmosphere( bool enabled ); diff --git a/src/lib/marble/Quaternion.h b/src/lib/marble/Quaternion.h --- a/src/lib/marble/Quaternion.h +++ b/src/lib/marble/Quaternion.h @@ -21,6 +21,7 @@ #include "marble_export.h" #include +#include namespace Marble { diff --git a/src/lib/marble/StyleBuilder.h b/src/lib/marble/StyleBuilder.h --- a/src/lib/marble/StyleBuilder.h +++ b/src/lib/marble/StyleBuilder.h @@ -14,22 +14,24 @@ #include #include +#include "marble_export.h" + class QFont; class QColor; namespace Marble { class OsmPlacemarkData; -class StyleParameters +class MARBLE_EXPORT StyleParameters { public: explicit StyleParameters(const GeoDataFeature* feature=nullptr, int tileLevel=0); const GeoDataFeature* feature; int tileLevel; }; -class StyleBuilder +class MARBLE_EXPORT StyleBuilder { public: StyleBuilder(); diff --git a/src/lib/marble/declarative/CMakeLists.txt b/src/lib/marble/declarative/CMakeLists.txt --- a/src/lib/marble/declarative/CMakeLists.txt +++ b/src/lib/marble/declarative/CMakeLists.txt @@ -32,10 +32,8 @@ Settings.cpp ) -# needed for marble_declarative_export.h -set_target_properties(marbledeclarative PROPERTIES - DEFINE_SYMBOL MAKE_MARBLE_DECLARATIVE_LIB -) +generate_export_header(marbledeclarative BASE_NAME marble_declarative) +target_include_directories(marbledeclarative PUBLIC $) marble_add_project_resources(qmldir) diff --git a/src/lib/marble/declarative/marble_declarative_export.h b/src/lib/marble/declarative/marble_declarative_export.h deleted file mode 100644 --- a/src/lib/marble/declarative/marble_declarative_export.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// This file is part of the Marble Virtual Globe. -// -// This program is free software licensed under the GNU LGPL. You can -// find a copy of this license in LICENSE.txt in the top directory of -// the source code. -// -// Copyright 2007 Christian Ehrlicher -// - -#ifndef MARBLE_DECLARATIVE_EXPORT_H -#define MARBLE_DECLARATIVE_EXPORT_H - -#include - -#ifndef MARBLE_DECLARATIVE_EXPORT -# ifdef MAKE_MARBLE_DECLARATIVE_LIB -# define MARBLE_DECLARATIVE_EXPORT Q_DECL_EXPORT -# else -# define MARBLE_DECLARATIVE_EXPORT Q_DECL_IMPORT -# endif -#endif - -#endif // MARBLE_DECLARATIVE_EXPORT_H diff --git a/src/lib/marble/geodata/data/GeoDataContainer.h b/src/lib/marble/geodata/data/GeoDataContainer.h --- a/src/lib/marble/geodata/data/GeoDataContainer.h +++ b/src/lib/marble/geodata/data/GeoDataContainer.h @@ -107,7 +107,7 @@ */ void insert( int index, GeoDataFeature *feature ); - GEODATA_DEPRECATED( void insert( GeoDataFeature *other, int index ) ); + GEODATA_DEPRECATED void insert(GeoDataFeature *other, int index); /** * @brief add an element diff --git a/src/lib/marble/geodata/geodata_export.h b/src/lib/marble/geodata/geodata_export.h --- a/src/lib/marble/geodata/geodata_export.h +++ b/src/lib/marble/geodata/geodata_export.h @@ -12,24 +12,10 @@ #ifndef GEODATA_EXPORT_H #define GEODATA_EXPORT_H -#include +#include "marble_export.h" -// please make sure to change MAKE_MARBLE_LIB to MAKE_GEODATA_LIB if geodata is an independent library -#ifndef GEODATA_EXPORT -# ifdef MAKE_MARBLE_LIB -# define GEODATA_EXPORT Q_DECL_EXPORT -# else -# define GEODATA_EXPORT Q_DECL_IMPORT -# endif -#endif - -#ifdef __GNUC__ -#define GEODATA_DEPRECATED(func) func __attribute__ ((deprecated)) -#elif defined(_MSC_VER) -#define GEODATA_DEPRECATED(func) __declspec(deprecated) func -#else -#pragma message("WARNING: You need to implement GEODATA_DEPRECATED for this compiler in geodata_export.h") -#define GEODATA_DEPRECATED(func) func -#endif +// please make sure to create a real export-header if geodata becomes an independent library +#define GEODATA_EXPORT MARBLE_EXPORT +#define GEODATA_DEPRECATED MARBLE_DEPRECATED #endif // GEODATA_EXPORT_H diff --git a/src/lib/marble/marble_export.h b/src/lib/marble/marble_export.h deleted file mode 100644 --- a/src/lib/marble/marble_export.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// This file is part of the Marble Virtual Globe. -// -// This program is free software licensed under the GNU LGPL. You can -// find a copy of this license in LICENSE.txt in the top directory of -// the source code. -// -// Copyright 2007 Christian Ehrlicher -// - -#ifndef MARBLE_EXPORT_H -#define MARBLE_EXPORT_H - -#include - -#ifndef MARBLE_EXPORT -# ifdef MAKE_MARBLE_LIB -# define MARBLE_EXPORT Q_DECL_EXPORT -# else -# define MARBLE_EXPORT Q_DECL_IMPORT -# endif -#endif - -#ifdef __GNUC__ -#define MARBLE_DEPRECATED(func) func __attribute__ ((deprecated)) -#elif defined(_MSC_VER) -#define MARBLE_DEPRECATED(func) __declspec(deprecated) func -#else -#pragma message("WARNING: You need to implement MARBLE_DEPRECATED for this compiler in marble_export.h") -#define MARBLE_DEPRECATED(func) func -#endif - -#endif // MARBLE_EXPORT_H diff --git a/src/lib/marble/routing/instructions/RoutingPoint.h b/src/lib/marble/routing/instructions/RoutingPoint.h --- a/src/lib/marble/routing/instructions/RoutingPoint.h +++ b/src/lib/marble/routing/instructions/RoutingPoint.h @@ -13,6 +13,8 @@ #include "marble_export.h" +#include + class QTextStream; namespace Marble diff --git a/src/plugins/positionprovider/geoclue/GeoCute/CMakeLists.txt b/src/plugins/positionprovider/geoclue/GeoCute/CMakeLists.txt --- a/src/plugins/positionprovider/geoclue/GeoCute/CMakeLists.txt +++ b/src/plugins/positionprovider/geoclue/GeoCute/CMakeLists.txt @@ -16,5 +16,3 @@ ) add_library(GeoCute SHARED ${GeoCute_SRCS}) - -set_target_properties(GeoCute PROPERTIES DEFINE_SYMBOL MAKE_GEOCUTE_LIB) diff --git a/tools/constellations2kml/CMakeLists.txt b/tools/constellations2kml/CMakeLists.txt --- a/tools/constellations2kml/CMakeLists.txt +++ b/tools/constellations2kml/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC constellations2kml.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/dateline/CMakeLists.txt b/tools/dateline/CMakeLists.txt --- a/tools/dateline/CMakeLists.txt +++ b/tools/dateline/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC dateline.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/kml2cache/CMakeLists.txt b/tools/kml2cache/CMakeLists.txt --- a/tools/kml2cache/CMakeLists.txt +++ b/tools/kml2cache/CMakeLists.txt @@ -7,6 +7,5 @@ ) set( ${TARGET}_SRC kml2cache.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/kml2kml/CMakeLists.txt b/tools/kml2kml/CMakeLists.txt --- a/tools/kml2kml/CMakeLists.txt +++ b/tools/kml2kml/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC kml2kml.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/mapreproject/CMakeLists.txt b/tools/mapreproject/CMakeLists.txt --- a/tools/mapreproject/CMakeLists.txt +++ b/tools/mapreproject/CMakeLists.txt @@ -20,7 +20,6 @@ NasaWorldWindToOpenStreetMapConverter.cpp main.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/maptheme-previewimage/CMakeLists.txt b/tools/maptheme-previewimage/CMakeLists.txt --- a/tools/maptheme-previewimage/CMakeLists.txt +++ b/tools/maptheme-previewimage/CMakeLists.txt @@ -8,7 +8,6 @@ set( ${TARGET}_SRC main.cpp ) QT_ADD_RESOURCES( RESOURCES canvas.qrc ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ${RESOURCES} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/osm-addresses/CMakeLists.txt b/tools/osm-addresses/CMakeLists.txt --- a/tools/osm-addresses/CMakeLists.txt +++ b/tools/osm-addresses/CMakeLists.txt @@ -25,7 +25,6 @@ pbf/fileformat.proto pbf/osmformat.proto ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ${PROTO_SRCS} ${PROTO_HDRS} ) target_link_libraries( ${TARGET} ${PROTOBUF_LIBRARIES} ${ZLIB_LIBRARIES} ) diff --git a/tools/osm-simplify/CMakeLists.txt b/tools/osm-simplify/CMakeLists.txt --- a/tools/osm-simplify/CMakeLists.txt +++ b/tools/osm-simplify/CMakeLists.txt @@ -3,6 +3,10 @@ SET (TARGET osm-simplify) PROJECT (${TARGET}) +if (POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) +endif() + find_package(Qt5Core REQUIRED) find_package(Qt5Widgets REQUIRED) find_package(Qt5Gui REQUIRED) @@ -32,7 +36,6 @@ WayChunk.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} Qt5::Core marblewidget-qt5) diff --git a/tools/osm-sisyphus/CMakeLists.txt b/tools/osm-sisyphus/CMakeLists.txt --- a/tools/osm-sisyphus/CMakeLists.txt +++ b/tools/osm-sisyphus/CMakeLists.txt @@ -16,7 +16,6 @@ region.cpp main.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} Qt5::Sql marblewidget-qt5 ) diff --git a/tools/poly2kml/CMakeLists.txt b/tools/poly2kml/CMakeLists.txt --- a/tools/poly2kml/CMakeLists.txt +++ b/tools/poly2kml/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC main.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/routing-instructions/CMakeLists.txt b/tools/routing-instructions/CMakeLists.txt --- a/tools/routing-instructions/CMakeLists.txt +++ b/tools/routing-instructions/CMakeLists.txt @@ -13,7 +13,6 @@ main.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( routing-instructions ${routing-instructions_SRC} ) target_link_libraries( routing-instructions Qt5::Core ) diff --git a/tools/shp2pn2/CMakeLists.txt b/tools/shp2pn2/CMakeLists.txt --- a/tools/shp2pn2/CMakeLists.txt +++ b/tools/shp2pn2/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC shp2pn2.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/tilecreator-srtm2/CMakeLists.txt b/tools/tilecreator-srtm2/CMakeLists.txt --- a/tools/tilecreator-srtm2/CMakeLists.txt +++ b/tools/tilecreator-srtm2/CMakeLists.txt @@ -7,7 +7,7 @@ ) set( ${TARGET}_SRC main.cpp tccore.cpp ) -add_definitions( -DMAKE_MARBLE_LIB -DTILECREATOR ) +add_definitions(-DTILECREATOR) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 ) diff --git a/tools/tilecreator/CMakeLists.txt b/tools/tilecreator/CMakeLists.txt --- a/tools/tilecreator/CMakeLists.txt +++ b/tools/tilecreator/CMakeLists.txt @@ -7,7 +7,6 @@ ) set( ${TARGET}_SRC main.cpp tccore.cpp ) -add_definitions( -DMAKE_MARBLE_LIB ) add_executable( ${TARGET} ${${TARGET}_SRC} ) target_link_libraries( ${TARGET} marblewidget-qt5 )