diff --git a/.github/workflows/build_and test_on_ios.yml b/.github/workflows/build_and test_on_ios.yml index dfee285c1..506f61683 100644 --- a/.github/workflows/build_and test_on_ios.yml +++ b/.github/workflows/build_and test_on_ios.yml @@ -20,8 +20,44 @@ jobs: - name: Install build tool run: brew install cmake ninja - name: Install dependencies - run: brew install openjdk protobuf protobuf-c qt5 cairo libxml2 gettext pango glfw3 glew glm pkgconfig + run: brew install openjdk + - name: Activate XCode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: '5.15.2' + host: 'mac' + target: 'ios' + arch: 'ios' + install-deps: 'true' + cache: true + cache-key-prefix: ${{ runner.os }} + setup-python: false + - name: Dump Qt installation data + run: echo ${Qt5_DIR} + - name: List Qt installation + run: ls -l ../Qt/5.15.2/ios/ + - name: List Qt installation + run: ls -l ../Qt/5.15.2/ios/lib/cmake/Qt5 - name: Configure build project - run: cmake -B build -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.cmake -DPKG_CONFIG_EXECUTABLE=/usr/local/bin/pkg-config -DCMAKE_UNITY_BUILD=ON -Wno-dev + run: "cmake -B build + -DCMAKE_SYSTEM_NAME=iOS + -DCMAKE_OSX_ARCHITECTURES=arm64 + -DCMAKE_OSX_DEPLOYMENT_TARGET=13 + -DOSMSCOUT_BUILD_IMPORT=OFF + -DOSMSCOUT_BUILD_GPX=ON + -DOSMSCOUT_BUILD_DEMOS=OFF + -DOSMSCOUT_BUILD_TOOL_DUMPDATA=OFF + -DOSMSCOUT_BUILD_DOC_API=OFF + -DOSMSCOUT_BUILD_WEBPAGE=OFF + -DOSMSCOUT_BUILD_TESTS=OFF + -DQt5_DIR=${Qt5_DIR}/lib/cmake/Qt5 + -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ON + -DCMAKE_UNITY_BUILD=ON + -Wno-dev" - name: Build project run: cmake --build build diff --git a/.github/workflows/build_and test_on_osx.yml b/.github/workflows/build_and test_on_osx.yml index f32a0fd94..46292fca4 100644 --- a/.github/workflows/build_and test_on_osx.yml +++ b/.github/workflows/build_and test_on_osx.yml @@ -24,7 +24,7 @@ jobs: - name: Configure build project run: meson setup --buildtype debugoptimized --unity on debug -Dopenmp=false env: - PKG_CONFIG_PATH: "/usr/local/opt/qt/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig" + PKG_CONFIG_PATH: "/usr/local/opt/qt@5/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig" - name: Build project run: meson compile -C debug - name: Execute tests @@ -41,7 +41,9 @@ jobs: - name: Install dependencies run: brew install openjdk protobuf protobuf-c qt5 cairo libxml2 gettext pango glfw3 glew glm pkgconfig - name: Configure build project - run: cmake -B build -DCMAKE_PREFIX_PATH=/usr/local/opt/qt -DCMAKE_UNITY_BUILD=ON -Wno-dev -G "Ninja" + run: cmake -B build -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 -DCMAKE_UNITY_BUILD=ON -Wno-dev -G "Ninja" + env: + PKG_CONFIG_PATH: "/usr/local/opt/qt@5/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig" - name: Build project run: cmake --build build - name: Run tests diff --git a/.github/workflows/build_and test_on_ubuntu_22_04.yml b/.github/workflows/build_and test_on_ubuntu_22_04.yml index 31acb691d..1807b3395 100644 --- a/.github/workflows/build_and test_on_ubuntu_22_04.yml +++ b/.github/workflows/build_and test_on_ubuntu_22_04.yml @@ -140,3 +140,34 @@ jobs: run: ninja -C debug - name: Run tests run: meson test -C debug --print-errorlogs + + build_gcc_cmake_qt6: + name: gcc and cmake with Qt6 + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install software-properties-common + run: sudo apt-get install software-properties-common + - name: Install gcc compiler, cmake and ninja + run: sudo apt-get -y install gcc-12 g++-12 libtbb-dev ccache libtool pkg-config cmake ninja-build + - name: Install libosmscout dependencies + run: "sudo apt-get update && sudo apt-get install -y + libfreetype6-dev libcairo2-dev libpangocairo-1.0-0 libpango1.0-dev + qmake6 libqt6svg6-dev libqt6core5compat6-dev qt6-declarative-dev qt6-positioning-dev qt6-tools-dev-tools + qt6-l10n-tools qt6-tools-dev qt6-multimedia-dev + libgl-dev" + - name: Configure build project + run: cmake -B build -DCMAKE_UNITY_BUILD=ON -Wno-dev -G "Ninja" + env: + CXX: g++-12 + CC: gcc-12 + - name: Build project + run: cmake --build build + - name: Install project + run: sudo cmake --install build + - name: Run tests + run: xvfb-run ctest -j 2 --output-on-failure + env: + QT_QPA_PLATFORM: offscreen + working-directory: build diff --git a/.github/workflows/build_on_ubuntu_18_04_qt_android.yml b/.github/workflows/build_on_ubuntu_22_04_qt_android.yml similarity index 84% rename from .github/workflows/build_on_ubuntu_18_04_qt_android.yml rename to .github/workflows/build_on_ubuntu_22_04_qt_android.yml index a7d4c0651..d90cde82d 100644 --- a/.github/workflows/build_on_ubuntu_18_04_qt_android.yml +++ b/.github/workflows/build_on_ubuntu_22_04_qt_android.yml @@ -32,26 +32,21 @@ jobs: run: ${ANDROID_HOME}/tools/bin/sdkmanager --update - name: Install android platform, platform-tools, build-tools and ndk run: ${ANDROID_HOME}/tools/bin/sdkmanager --install "platform-tools" "platforms;android-29" "build-tools;29.0.2" "ndk;23.1.7779620" - - name: Cache Qt - id: cache-qt - uses: actions/cache@v1 - with: - path: ../Qt - key: ${{ runner.os }}-QtCache - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: - version: '5.12.9' + version: '5.15.2' host: 'linux' target: 'android' - arch: 'android_arm64_v8a' - modules: android + arch: 'android' install-deps: 'true' - cached: ${{ steps.cache-qt.outputs.cache-hit }} + cache: true + cache-key-prefix: ${{ runner.os }} + setup-python: false - name: Dump Qt installation data run: echo ${Qt5_DIR} - name: List Qt installation - run: ls -l ../Qt/5.12.9/android_arm64_v8a/ + run: ls -l ../Qt/5.15.2/android/ - name: Configure build project run: "cmake -B build -DCMAKE_TOOLCHAIN_FILE=${ANDROID_HOME}/ndk/23.1.7779620/build/cmake/android.toolchain.cmake diff --git a/BasemapImport/CMakeLists.txt b/BasemapImport/CMakeLists.txt index 9c9ec43f7..6b4b25469 100644 --- a/BasemapImport/CMakeLists.txt +++ b/BasemapImport/CMakeLists.txt @@ -23,5 +23,6 @@ endif() install(TARGETS BasemapImport RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/CMakeLists.txt b/CMakeLists.txt index d01ca8a95..87137d909 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,10 +24,33 @@ if(NOT CMAKE_DEBUG_POSTFIX) set(CMAKE_DEBUG_POSTFIX d) endif() endif() + set(OSMSCOUT_BASE_DIR_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}) set(OSMSCOUT_BASE_DIR_BUILD ${CMAKE_CURRENT_BINARY_DIR}) -include_directories(${OSMSCOUT_BASE_DIR_BUILD}/include) + +#include_directories(${OSMSCOUT_BASE_DIR_BUILD}/include) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +## Pre-feature options +option(QT_VERSION_PREFERRED "preferred Qt version, if multiple version are available. Value can be 5 or 6") + +option(OSMSCOUT_BUILD_IMPORT_TOOL_FOR_DISTRIBUTION "Import tool for distribution" OFF) +if(APPLE) + option(OSMSCOUT_BUILD_FRAMEWORKS "Enable build of libraries as frameworks" ON) +endif() + +# options for extra debugging of map renderer +option(OSMSCOUT_DEBUG_LABEL_LAYOUTER "Print extra debug messages during label layouting" OFF) +option(OSMSCOUT_DEBUG_GROUNDTILES "Print extra debug messages while rendering ground tiles" OFF) + +# options for extra debugging of import +option(OSMSCOUT_DEBUG_COASTLINE "Print extra debug messages while importing coastline" OFF) +option(OSMSCOUT_DEBUG_TILING "Print extra debug messages related with map tiles" OFF) + +# options for extra debugging of routing +option(OSMSCOUT_DEBUG_ROUTING "Print extra debug messages while routing" OFF) + if(IOS) set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE) else() @@ -50,7 +73,7 @@ endif() # feature detection (libraries, header, etc.) include(features) -# options +# post-feature options option(OSMSCOUT_BUILD_WITH_OPENMP "Enable OpenMP support" ${OPENMP_FOUND}) if(OSMSCOUT_BUILD_WITH_OPENMP) if(OPENMP_FOUND) @@ -61,36 +84,25 @@ if(OSMSCOUT_BUILD_WITH_OPENMP) endif() endif() -option(OSMSCOUT_BUILD_IMPORT_TOOL_FOR_DISTRIBUTION "Import tool for distribution" OFF) -if(APPLE) - option(OSMSCOUT_BUILD_FRAMEWORKS "Enable build of libraries as frameworks" ON) -endif() - -# options for extra debugging of map renderer -option(OSMSCOUT_DEBUG_LABEL_LAYOUTER "Print extra debug messages during label layouting" OFF) -option(OSMSCOUT_DEBUG_GROUNDTILES "Print extra debug messages while rendering ground tiles" OFF) - -# options for extra debugging of import -option(OSMSCOUT_DEBUG_COASTLINE "Print extra debug messages while importing coastline" OFF) -option(OSMSCOUT_DEBUG_TILING "Print extra debug messages related with map tiles" OFF) - -# options for extra debugging of routing -option(OSMSCOUT_DEBUG_ROUTING "Print extra debug messages while routing" OFF) - # compiler settings include(CheckCXXCompilerFlag) + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR CMAKE_COMPILER_IS_GNUCC) - set(OSMSCOUT_WARNING_FLAGS "-Wall -Winit-self -Wno-overloaded-virtual -Wcast-qual -Wwrite-strings -Wextra -Wno-long-long") + add_compile_options(-Wall -pedantic -Winit-self -Wno-overloaded-virtual -Wcast-qual -Wwrite-strings -Wextra -Wno-long-long) if(EMSCRIPTEN) - set(OSMSCOUT_WARNING_FLAGS "${OSMSCOUT_WARNING_FLAGS} -Wno-warn-absolute-paths") + add_compile_options(-Wno-warn-absolute-paths) elseif(NOT APPLE) - set(OSMSCOUT_WARNING_FLAGS "${OSMSCOUT_WARNING_FLAGS} -Wno-unused-but-set-parameter") + add_compile_options(-Wno-unused-but-set-parameter) endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OSMSCOUT_WARNING_FLAGS}") if(UNIX) - add_definitions(-ldl -lm -lpthread) + add_compile_options(-ldl -lm -lpthread) + endif() + + if(NOT MINGW AND NOT APPLE) + add_compile_options(-fPIC) endif() endif() + if(MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /we4028") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast /wd4251 /MP") @@ -100,6 +112,7 @@ if(MSVC) endif() add_definitions(-D_WIN32_WINNT=0x0A00 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) endif() + if(MINGW OR MSYS) add_definitions(-D_WIN32_WINNT=0x0600) if(NOT OSMSCOUT_PLATFORM_X64) @@ -110,8 +123,8 @@ if(MINGW OR MSYS) endif () set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fno-tree-slp-vectorize -Wno-error=cast-qual -Wno-unused-local-typedefs") endif() + if((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR CMAKE_COMPILER_IS_GNUCC) AND NOT MINGW) - add_definitions( -Wall -pedantic ) check_cxx_compiler_flag(-fvisibility=hidden OSMSCOUT_GCC_VISIBILITY) if(OSMSCOUT_GCC_VISIBILITY) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE OSMSCOUT_GCC_VERSION) @@ -133,23 +146,23 @@ if((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR CMAKE_COMPILER_IS_G endif() endif() endif() - if(NOT APPLE) - add_definitions(-fPIC) - endif() endif() + if(APPLE) if(IOS) set(CMAKE_SIZEOF_VOID_P 4) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc -fembed-bitcode") + add_compile_options(-fobjc-arc -fembed-bitcode) else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc") + add_compile_options(-fobjc-arc) endif() set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") endif() + if(NOT BUILD_SHARED_LIBS) add_definitions(-DOSMSCOUT_STATIC) endif() + include(ProjectConfig) add_definitions(-D_USE_MATH_DEFINES) @@ -158,18 +171,18 @@ include(TestLargeFiles) OPJ_TEST_LARGE_FILES(OPJ_HAVE_LARGEFILES) # Qt DLLs -if(WIN32 AND TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt) - get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION) +if(WIN32 AND TARGET Qt::qmake AND NOT TARGET Qt::windeployqt) + get_target_property(_qt_qmake_location Qt::qmake IMPORTED_LOCATION) execute_process( - COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX + COMMAND "${_qt_qmake_location}" -query QT_INSTALL_PREFIX RESULT_VARIABLE return_code - OUTPUT_VARIABLE qt5_install_prefix + OUTPUT_VARIABLE qt_install_prefix OUTPUT_STRIP_TRAILING_WHITESPACE ) - set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe") + set(imported_location "${qt_install_prefix}/bin/windeployqt.exe") if(EXISTS ${imported_location}) - add_executable(Qt5::windeployqt IMPORTED libosmscout-client/src/osmscoutclient/Empty.cpp) - set_target_properties(Qt5::windeployqt PROPERTIES IMPORTED_LOCATION ${imported_location}) + add_executable(Qt::windeployqt IMPORTED libosmscout-client/src/osmscoutclient/Empty.cpp) + set_target_properties(Qt::windeployqt PROPERTIES IMPORTED_LOCATION ${imported_location}) endif() option(OSMSCOUT_INSTALL_QT_DLL "Copies the DLLs from Qt to the installation directory" OFF) mark_as_advanced(OSMSCOUT_INSTALL_QT_DLL) @@ -326,21 +339,13 @@ if(OSMSCOUT_BUILD_MAP_OPENGL) endif() endif() -if(Qt5Gui_FOUND AND Qt5Svg_FOUND AND OSMSCOUT_BUILD_MAP) +if(QT_MAP_DEPENDENCIES_FOUND AND OSMSCOUT_BUILD_MAP) set(OSMSCOUT_BUILD_MAP_QT_CACHE ON) else() set(OSMSCOUT_BUILD_MAP_QT_CACHE OFF) endif() option(OSMSCOUT_BUILD_MAP_QT "Enable build of Qt map drawing backend" ${OSMSCOUT_BUILD_MAP_QT_CACHE}) if(OSMSCOUT_BUILD_MAP_QT) - if(NOT Qt5Gui_FOUND OR NOT Qt5Svg_FOUND) - message(SEND_ERROR "Qt5 is required for Qt map drawing backend") - set(OSMSCOUT_BUILD_MAP_QT OFF) - endif() - if(NOT ${OSMSCOUT_BUILD_MAP}) - message(SEND_ERROR "The main map drawing interface is required for Qt map drawing backend") - set(OSMSCOUT_BUILD_MAP_QT OFF) - endif() if(OSMSCOUT_BUILD_MAP_QT) add_subdirectory(libosmscout-map-qt) endif() @@ -362,7 +367,7 @@ if(OSMSCOUT_BUILD_CLIENT) add_subdirectory(libosmscout-client) endif() -if(Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Quick_FOUND AND Qt5Multimedia_FOUND AND OSMSCOUT_BUILD_MAP_QT) +if(QT_CLIENT_DEPENDENCIES_FOUND) set(OSMSCOUT_BUILD_CLIENT_QT_CACHE ON) else() set(OSMSCOUT_BUILD_CLIENT_QT_CACHE OFF) @@ -377,22 +382,6 @@ if(OSMSCOUT_BUILD_CLIENT_QT) message(SEND_ERROR "The Qt map drawing interface is required for OSMScout Qt client library") set(OSMSCOUT_BUILD_CLIENT_QT OFF) endif() - if(NOT Qt5Core_FOUND) - message(SEND_ERROR "Qt5Core is required for OSMScout Qt client library") - set(OSMSCOUT_BUILD_CLIENT_QT OFF) - endif() - if(NOT Qt5Gui_FOUND) - message(SEND_ERROR "Qt5Gui is required for OSMScout Qt client library") - set(OSMSCOUT_BUILD_CLIENT_QT OFF) - endif() - if(NOT Qt5Quick_FOUND) - message(SEND_ERROR "Qt5Quick is required for OSMScout Qt client library") - set(OSMSCOUT_BUILD_CLIENT_QT OFF) - endif() - if(NOT Qt5Multimedia_FOUND) - message(SEND_ERROR "Qt5Multimedia is required for OSMScout Qt client library") - set(OSMSCOUT_BUILD_CLIENT_QT OFF) - endif() if(OSMSCOUT_BUILD_CLIENT_QT) add_subdirectory(libosmscout-client-qt) endif() @@ -419,7 +408,7 @@ if(OSMSCOUT_BUILD_TOOL_PUBLICTRANSPORTMAP) add_subdirectory(PublicTransportMap) endif() -if(OSMSCOUT_BUILD_MAP_QT AND OSMSCOUT_BUILD_CLIENT_QT AND Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND AND Qt5Qml_FOUND AND Qt5Quick_FOUND) +if(OSMSCOUT_BUILD_MAP_QT AND OSMSCOUT_BUILD_CLIENT_QT AND QT_CLIENT_DEPENDENCIES_FOUND) set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2_CACHE ON) else() set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2_CACHE OFF) @@ -438,26 +427,6 @@ if(OSMSCOUT_BUILD_TOOL_OSMSCOUT2) message(SEND_ERROR "The Gpx lib is required for OSMScout2 application") set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) endif() - if(NOT Qt5Core_FOUND) - message(SEND_ERROR "Qt5Core is required for OSMScout2 application") - set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) - endif() - if(NOT Qt5Gui_FOUND) - message(SEND_ERROR "Qt5Gui is required for OSMScout2 application") - set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) - endif() - if(NOT Qt5Widgets_FOUND) - message(SEND_ERROR "Qt5Widgets is required for OSMScout2 application") - set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) - endif() - if(NOT Qt5Qml_FOUND) - message(SEND_ERROR "Qt5Qml is required for OSMScout2 application") - set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) - endif() - if(NOT Qt5Quick_FOUND) - message(SEND_ERROR "Qt5Quick is required for OSMScout2 application") - set(OSMSCOUT_BUILD_TOOL_OSMSCOUT2 OFF) - endif() if(OSMSCOUT_BUILD_TOOL_OSMSCOUT2) add_subdirectory(OSMScout2) endif() @@ -483,7 +452,7 @@ if(OSMSCOUT_BUILD_TOOL_OSMSCOUTOPENGL) endif() endif() -if(OSMSCOUT_BUILD_MAP_QT AND OSMSCOUT_BUILD_CLIENT_QT AND Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND AND Qt5Qml_FOUND AND Qt5Quick_FOUND) +if(OSMSCOUT_BUILD_MAP_QT AND OSMSCOUT_BUILD_CLIENT_QT AND QT_MAP_DEPENDENCIES_FOUND) set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR_CACHE ON) else() set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR_CACHE OFF) @@ -498,26 +467,6 @@ if(OSMSCOUT_BUILD_TOOL_STYLEEDITOR) message(SEND_ERROR "The Qt client lib is required for StyleEditor application") set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) endif() - if(NOT Qt5Core_FOUND) - message(SEND_ERROR "Qt5Core is required for StyleEditor application") - set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) - endif() - if(NOT Qt5Gui_FOUND) - message(SEND_ERROR "Qt5Gui is required for StyleEditor application") - set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) - endif() - if(NOT Qt5Widgets_FOUND) - message(SEND_ERROR "Qt5Widgets is required for StyleEditor application") - set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) - endif() - if(NOT Qt5Qml_FOUND) - message(SEND_ERROR "Qt5Qml is required for StyleEditor application") - set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) - endif() - if(NOT Qt5Quick_FOUND) - message(SEND_ERROR "Qt5Quick is required for StyleEditor application") - set(OSMSCOUT_BUILD_TOOL_STYLEEDITOR OFF) - endif() if(OSMSCOUT_BUILD_TOOL_STYLEEDITOR) add_subdirectory(StyleEditor) endif() @@ -586,31 +535,69 @@ if(OSMSCOUT_BUILD_TESTS) endif() # display build configuration +message(STATUS) message(STATUS "libosmscout ${PROJECT_VERSION} build configuration:") message(STATUS "Shared libraries: ${BUILD_SHARED_LIBS}") if(APPLE) message(STATUS "Build frameworks: ${BUILD_FRAMEWORKS}") endif() -message(STATUS "Qt libraries:") +if(CCACHE_PROGRAM) + message(STATUS "Using ccache: ${CCACHE_PROGRAM}") +endif() +message(STATUS) + +message(STATUS "Qt5 libraries (${Qt5_FOUND}):") message(STATUS " - Core: ${Qt5Core_FOUND}") -message(STATUS " - Gui: ${Qt5Gui_FOUND}") message(STATUS " - Svg: ${Qt5Svg_FOUND}") +message(STATUS " - Gui: ${Qt5Gui_FOUND}") message(STATUS " - Widgets: ${Qt5Widgets_FOUND}") message(STATUS " - Qml: ${Qt5Qml_FOUND}") message(STATUS " - Quick: ${Qt5Quick_FOUND}") +message(STATUS " - Network: ${Qt5Network_FOUND}") +message(STATUS " - Location: ${Qt5Location_FOUND}") message(STATUS " - Multimedia: ${Qt5Multimedia_FOUND}") +message(STATUS " - Positioning: ${Qt5Positioning_FOUND}") +message(STATUS " - LinguistTools: ${Qt5LinguistTools_FOUND}") +message(STATUS) + +message(STATUS "Qt6 libraries (${Qt6_FOUND}):") +message(STATUS " - Core: ${Qt6Core_FOUND}") +message(STATUS " - Core5Compat: ${Qt6Core5Compat_FOUND}") +message(STATUS " - Svg: ${Qt6Svg_FOUND}") +message(STATUS " - Gui: ${Qt6Gui_FOUND}") +message(STATUS " - Widgets: ${Qt6Widgets_FOUND}") +message(STATUS " - Qml: ${Qt6Qml_FOUND}") +message(STATUS " - Quick: ${Qt6Quick_FOUND}") +message(STATUS " - Network: ${Qt6Network_FOUND}") +message(STATUS " - Location: ${Qt6Location_FOUND}") +message(STATUS " - Multimedia: ${Qt6Multimedia_FOUND}") +message(STATUS " - Positioning: ${Qt6Positioning_FOUND}") +message(STATUS " - LinguistTools: ${Qt6LinguistTools_FOUND}") +message(STATUS) + +message(STATUS "Using Qt in version: ${QT_VERSION_MAJOR}") +message(STATUS "Qt map dependencies found: ${QT_MAP_DEPENDENCIES_FOUND}") +message(STATUS "Qt client dependencies found: ${QT_CLIENT_DEPENDENCIES_FOUND}") +message(STATUS) + message(STATUS "core library: ${OSMSCOUT_BUILD_CORE}") if (OSMSCOUT_BUILD_CORE) message(STATUS " - marisa support: ${MARISA_FOUND}") endif() +message(STATUS) + message(STATUS "import library: ${OSMSCOUT_BUILD_IMPORT}") if (OSMSCOUT_BUILD_IMPORT) message(STATUS " - libxml2 support: ${LIBXML2_FOUND}") message(STATUS " - protobuf support: ${PROTOBUF_FOUND}") message(STATUS " - C++17 parallel execution: ${HAVE_STD_EXECUTION}") endif() +message(STATUS) + message(STATUS "gpx library: ${OSMSCOUT_BUILD_GPX}") message(STATUS " - libxml2 support: ${LIBXML2_FOUND}") +message(STATUS) + message(STATUS "map drawing interface: ${OSMSCOUT_BUILD_MAP}") message(STATUS " - Agg map drawing backend: ${OSMSCOUT_BUILD_MAP_AGG}") message(STATUS " - Cairo map drawing backend: ${OSMSCOUT_BUILD_MAP_CAIRO}") @@ -620,8 +607,12 @@ message(STATUS " - Qt map drawing backend: ${OSMSCOUT_BUILD_MAP_QT}") message(STATUS " - SVG map drawing backend: ${OSMSCOUT_BUILD_MAP_SVG}") message(STATUS " - OS X/iOS map drawing backend: ${OSMSCOUT_BUILD_MAP_IOSX}") message(STATUS " - GDI+ map drawing backend: ${OSMSCOUT_BUILD_MAP_GDI}") +message(STATUS) + message(STATUS "client libraries:") message(STATUS " - Qt client library: ${OSMSCOUT_BUILD_CLIENT_QT}") +message(STATUS) + message(STATUS "tools:") message(STATUS " - Import/Import: ${OSMSCOUT_BUILD_TOOL_IMPORT}") message(STATUS " - Import/BasemapImport: ${OSMSCOUT_BUILD_TOOL_IMPORT}") @@ -629,20 +620,27 @@ message(STATUS " - DumpData: ${OSMSCOUT_BUILD_TOOL_DUMPDATA} message(STATUS " - OSMScout2: ${OSMSCOUT_BUILD_TOOL_OSMSCOUT2}") message(STATUS " - OSMScoutOpenGL: ${OSMSCOUT_BUILD_TOOL_OSMSCOUTOPENGL}") message(STATUS " - StyleEditor: ${OSMSCOUT_BUILD_TOOL_STYLEEDITOR}") +message(STATUS) + message(STATUS "tests: ${OSMSCOUT_BUILD_TESTS}") +message(STATUS) + message(STATUS "demos: ${OSMSCOUT_BUILD_DEMOS}") message(STATUS " - heap profiler (Gperftools) ${GPERFTOOLS_USAGE}") +message(STATUS) + message(STATUS "bindings:") message(STATUS " - Java binding: ${OSMSCOUT_BUILD_BINDING_JAVA}") message(STATUS " - C# binding: ${OSMSCOUT_BUILD_BINDING_CSHARP}") +message(STATUS) + message(STATUS "external interfaces:") message(STATUS " - MATLAB mex function: ${OSMSCOUT_BUILD_EXTERN_MATLAB}") +message(STATUS) + message(STATUS "doxygen: ${DOXYGEN_FOUND}") message(STATUS "documentation: ${OSMSCOUT_BUILD_DOC_API}") message(STATUS "webpage: ${OSMSCOUT_BUILD_WEBPAGE}") -if(CCACHE_PROGRAM) - message(STATUS "Using ccache: ${CCACHE_PROGRAM}") -endif() install(DIRECTORY ${CMAKE_SOURCE_DIR}/stylesheets DESTINATION share/osmscout) if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) @@ -657,7 +655,10 @@ endif() set(version_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake") set(project_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake") + include(CMakePackageConfigHelpers) + write_basic_package_version_file("${version_config}" COMPATIBILITY SameMajorVersion) configure_package_config_file("cmake/libosmscoutConfig.cmake.in" "${project_config}" INSTALL_DESTINATION "${config_install_dir}") + install(FILES "${project_config}" "${version_config}" DESTINATION "${config_install_dir}") diff --git a/Demos/CMakeLists.txt b/Demos/CMakeLists.txt index 857b0915b..d9d2b1204 100644 --- a/Demos/CMakeLists.txt +++ b/Demos/CMakeLists.txt @@ -45,15 +45,15 @@ osmscout_demo_project(NAME Routing SOURCES src/Routing.cpp TARGET OSMScout::OSMS #---- RoutingAnimation if(${OSMSCOUT_BUILD_MAP_QT}) - osmscout_demo_project(NAME RoutingAnimation SOURCES src/RoutingAnimation.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt5::Widgets) + osmscout_demo_project(NAME RoutingAnimation SOURCES src/RoutingAnimation.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt::Widgets) if(MSVC) visual_studio_qt_helper("RoutingAnimation") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET RoutingAnimation POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() endif() @@ -85,30 +85,30 @@ endif() #---- DrawMapQt & ResourceConsumptionQt if(${OSMSCOUT_BUILD_MAP_QT}) #---- DrawMapQt - osmscout_demo_project(NAME DrawMapQt SOURCES src/DrawMapQt.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt5::Widgets) - target_compile_definitions(DrawMapQt PRIVATE ${Qt5Widgets_DEFINITIONS}) + osmscout_demo_project(NAME DrawMapQt SOURCES src/DrawMapQt.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt::Widgets) + target_compile_definitions(DrawMapQt PRIVATE ${QtWidgets_DEFINITIONS}) if(MSVC) visual_studio_qt_helper("DrawMapQt") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET DrawMapQt POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() #---- ResourceConsumptionQt - osmscout_demo_project(NAME ResourceConsumptionQt SOURCES src/ResourceConsumptionQt.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt5::Widgets) - target_compile_definitions(ResourceConsumptionQt PRIVATE ${Qt5Widgets_DEFINITIONS}) + osmscout_demo_project(NAME ResourceConsumptionQt SOURCES src/ResourceConsumptionQt.cpp TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt::Widgets) + target_compile_definitions(ResourceConsumptionQt PRIVATE ${QtWidgets_DEFINITIONS}) if(MSVC) visual_studio_qt_helper("ResourceConsumptionQt") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET ResourceConsumptionQt POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() else() @@ -120,7 +120,7 @@ if(${OSMSCOUT_BUILD_CLIENT_QT}) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) - qt5_add_resources(RESOURCE_FILES ../OSMScout2/res.qrc demo.qrc) + qt_add_resources(RESOURCE_FILES ../OSMScout2/res.qrc demo.qrc) set_property(SOURCE qrc_res.cpp PROPERTY SKIP_AUTOMOC ON) set_property(SOURCE qrc_demo.cpp PROPERTY SKIP_AUTOMOC ON) @@ -135,18 +135,18 @@ if(${OSMSCOUT_BUILD_CLIENT_QT}) # qml files in CMake sources make it visible in QtCreator qml/ElevationProfileChart.qml - TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt5::Widgets) - target_compile_definitions(ElevationProfileChart PRIVATE ${Qt5Widgets_DEFINITIONS}) + TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt::Widgets) + target_compile_definitions(ElevationProfileChart PRIVATE ${QtWidgets_DEFINITIONS}) set_target_properties(ElevationProfileChart PROPERTIES UNITY_BUILD OFF) # generated code for qt resources use static variables with the same name if(MSVC) visual_studio_qt_helper("ElevationProfileChart") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET ElevationProfileChart POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() @@ -165,18 +165,18 @@ if(${OSMSCOUT_BUILD_CLIENT_QT}) qml/NavigationSimulation.qml INCLUDES ../OSMScout2/src/ - TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt OSMScout::GPX Qt5::Widgets) - target_compile_definitions(NavigationSimulation PRIVATE ${Qt5Widgets_DEFINITIONS}) + TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt OSMScout::GPX Qt::Widgets) + target_compile_definitions(NavigationSimulation PRIVATE ${QtWidgets_DEFINITIONS}) set_target_properties(NavigationSimulation PROPERTIES UNITY_BUILD OFF) # generated code for qt resources use static variables with the same name if(MSVC) visual_studio_qt_helper("NavigationSimulation") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET NavigationSimulation POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() else() @@ -196,23 +196,23 @@ if(${OSMSCOUT_BUILD_CLIENT_QT}) qml/PlaceInput.qml INCLUDES ../OSMScout2/src/ - TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt5::Widgets) - target_compile_definitions(RoutingParameters PRIVATE ${Qt5Widgets_DEFINITIONS}) + TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt::Widgets) + target_compile_definitions(RoutingParameters PRIVATE ${QtWidgets_DEFINITIONS}) set_target_properties(RoutingParameters PROPERTIES UNITY_BUILD OFF) # generated code for qt resources use static variables with the same name if(MSVC) visual_studio_qt_helper("RoutingParameters") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET RoutingParameters POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() #---- QtWidgetsDemoApp - osmscout_demo_project(NAME QtWidgetsDemoApp SOURCES src/QtWidgetsDemoApp.cpp TARGET OSMScout::ClientQt) + osmscout_demo_project(NAME QtWidgetsDemoApp SOURCES src/QtWidgetsDemoApp.cpp TARGET Qt::Widgets OSMScout::ClientQt) else() message("Skip ElevationProfileChart, NavigationSimulation and RoutingParameters QtWidgetsDemoApp demo, libosmscout-client-qt is missing.") endif() @@ -243,8 +243,8 @@ else() endif() #---- DrawMapOSX -if(APPLE) - if(${OSMSCOUT_BUILD_MAP_IOSX} AND NOT DEFINED IOS_PLATFORM) +if(APPLE AND NOT IOS) + if(${OSMSCOUT_BUILD_MAP_IOSX}) osmscout_demo_project(NAME DrawMapOSX SOURCES src/DrawMapOSX.mm TARGET OSMScout::OSMScout OSMScout::Map OSMScoutMapIOSX INCLUDES ${CMAKE_SOURCE_DIR}/libosmscout-map-iOSX/include ${CMAKE_BINARY_DIR}/libosmscout-map-iOSX/include) set_target_properties(DrawMapOSX PROPERTIES UNITY_BUILD OFF) diff --git a/DumpData/CMakeLists.txt b/DumpData/CMakeLists.txt index 85a43c9ad..f27e1c523 100644 --- a/DumpData/CMakeLists.txt +++ b/DumpData/CMakeLists.txt @@ -14,5 +14,6 @@ endif() install(TARGETS DumpData RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/Import/CMakeLists.txt b/Import/CMakeLists.txt index 326a2f383..e48abdced 100644 --- a/Import/CMakeLists.txt +++ b/Import/CMakeLists.txt @@ -23,5 +23,6 @@ endif() install(TARGETS Import RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/OSMScout2/CMakeLists.txt b/OSMScout2/CMakeLists.txt index e03262dc9..133d97c28 100644 --- a/OSMScout2/CMakeLists.txt +++ b/OSMScout2/CMakeLists.txt @@ -59,11 +59,11 @@ set(TRANSLATION_SOURCE_FILES # # - create binary translation files (*.qm) from translated phrases available # in *.ts files with lrelease tool -qt5_create_translation(TRANSLATION_QM_FILES +qt_create_translation(TRANSLATION_QM_FILES ${TRANSLATION_SOURCE_FILES} ${TRANSLATION_TS_FILES}) -qt5_add_resources(RESOURCE_FILES res.qrc) +qt_add_resources(RESOURCE_FILES res.qrc) set_property(SOURCE qrc_res.cpp PROPERTY SKIP_AUTOMOC ON) @@ -78,19 +78,19 @@ target_link_libraries(OSMScout2 OSMScout::Map OSMScout::MapQt OSMScout::ClientQt - Qt5::Core - Qt5::Gui - Qt5::Widgets - Qt5::Qml - Qt5::Quick + Qt::Core + Qt::Gui + Qt::Widgets + Qt::Qml + Qt::Quick ) -if (Qt5Svg_FOUND) - target_link_libraries(OSMScout2 Qt5::Svg) +if (QtSvg_FOUND) + target_link_libraries(OSMScout2 Qt::Svg) endif() -if (Qt5Positioning_FOUND) - target_link_libraries(OSMScout2 Qt5::Positioning) +if (QtPositioning_FOUND) + target_link_libraries(OSMScout2 Qt::Positioning) endif() if(MARISA_FOUND) @@ -114,16 +114,17 @@ endif() if(MSVC) visual_studio_qt_helper("OSMScout2") endif() -if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) +if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET OSMScout2 POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() install(TARGETS OSMScout2 RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/PublicTransportMap/CMakeLists.txt b/PublicTransportMap/CMakeLists.txt index 575ef3cb2..b5977e04c 100644 --- a/PublicTransportMap/CMakeLists.txt +++ b/PublicTransportMap/CMakeLists.txt @@ -14,5 +14,6 @@ endif() install(TARGETS PublicTransportMap RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/StyleEditor/CMakeLists.txt b/StyleEditor/CMakeLists.txt index ee471fafc..c0b09f5b1 100644 --- a/StyleEditor/CMakeLists.txt +++ b/StyleEditor/CMakeLists.txt @@ -46,15 +46,15 @@ target_link_libraries(StyleEditor OSMScout::Map OSMScout::MapQt OSMScout::ClientQt - Qt5::Core - Qt5::Gui - Qt5::Widgets - Qt5::Qml - Qt5::Quick + Qt::Core + Qt::Gui + Qt::Widgets + Qt::Qml + Qt::Quick ) -if (Qt5Svg_FOUND) - target_link_libraries(StyleEditor Qt5::Svg) +if (QtSvg_FOUND) + target_link_libraries(StyleEditor Qt::Svg) endif() if(MARISA_FOUND) @@ -78,15 +78,16 @@ endif() if(MSVC) visual_studio_qt_helper("StyleEditor") endif() -if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) +if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET StyleEditor POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() install(TARGETS StyleEditor RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 29cfc39fc..5545f827d 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -93,8 +93,8 @@ osmscout_test_project(NAME Thread SOURCES src/Thread.cpp) #---- DrawTextQt if(${OSMSCOUT_BUILD_MAP_QT} AND TARGET OSMScout::MapQt) set(src_files src/DrawTextQt.cpp include/DrawWindow.h) - qt5_wrap_cpp(src_files include/DrawWindow.h) - osmscout_test_project(NAME DrawTextQt SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt Qt5::Widgets SKIPTEST) + qt_wrap_cpp(src_files include/DrawWindow.h) + osmscout_test_project(NAME DrawTextQt SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt Qt::Widgets SKIPTEST) else() message("Skip DrawTextQt test, libosmscout-map-qt is missing.") endif() @@ -207,16 +207,16 @@ if(${OSMSCOUT_BUILD_MAP}) set(PERFORMANCE_TEST_DRIVERS ${PERFORMANCE_TEST_DRIVERS} cairo) endif() if(${OSMSCOUT_BUILD_MAP_QT}) - target_link_libraries(PerformanceTest OSMScout::MapQt Qt5::Widgets) + target_link_libraries(PerformanceTest OSMScout::MapQt Qt::Widgets) set(HAVE_LIB_OSMSCOUTMAPQT 1) if(MSVC) visual_studio_qt_helper("PerformanceTest") endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt) add_custom_command(TARGET PerformanceTest POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) endif() set(PERFORMANCE_TEST_DRIVERS ${PERFORMANCE_TEST_DRIVERS} Qt) @@ -288,8 +288,8 @@ osmscout_test_project(NAME CoordBufferTest SOURCES src/CoordBufferTest.cpp) #---- ClientQtThreading if(${OSMSCOUT_BUILD_CLIENT_QT} AND TARGET OSMScout::MapQt AND TARGET OSMScout::ClientQt) set(src_files src/ClientQtThreading.cpp) - qt5_wrap_cpp(src_files include/ClientQtThreading.h) - osmscout_test_project(NAME ClientQtThreading SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt5::Widgets SKIPTEST) + qt_wrap_cpp(src_files include/ClientQtThreading.h) + osmscout_test_project(NAME ClientQtThreading SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt::Widgets SKIPTEST) else() message("Skip ClientQtThreading test, libosmscout-client-qt is missing.") endif() @@ -297,8 +297,8 @@ endif() #---- QtFileDownloader if(${OSMSCOUT_BUILD_CLIENT_QT} AND TARGET OSMScout::MapQt AND TARGET OSMScout::ClientQt) set(src_files src/QtFileDownloader.cpp) - qt5_wrap_cpp(src_files include/DownloaderTest.h) - osmscout_test_project(NAME QtFileDownloader SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt5::Widgets SKIPTEST) + qt_wrap_cpp(src_files include/DownloaderTest.h) + osmscout_test_project(NAME QtFileDownloader SOURCES ${src_files} TARGET OSMScout::Map OSMScout::MapQt OSMScout::ClientQt Qt::Widgets SKIPTEST) else() message("Skip QtFileDownloader test, libosmscout-client-qt is missing.") endif() diff --git a/cmake/FindGperftools.cmake b/cmake/FindGperftools.cmake index 7ad876618..441edadc0 100644 --- a/cmake/FindGperftools.cmake +++ b/cmake/FindGperftools.cmake @@ -31,4 +31,4 @@ FIND_LIBRARY(GPERFTOOLS_LIBRARIES ) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPERFTOOLS DEFAULT_MSG GPERFTOOLS_INCLUDE_DIRS GPERFTOOLS_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gperftools DEFAULT_MSG GPERFTOOLS_INCLUDE_DIRS GPERFTOOLS_LIBRARIES) diff --git a/cmake/FindHarfBuzz.cmake b/cmake/FindHarfBuzz.cmake index 309860c17..c4094789a 100644 --- a/cmake/FindHarfBuzz.cmake +++ b/cmake/FindHarfBuzz.cmake @@ -33,4 +33,4 @@ FIND_LIBRARY(HARFBUZZ_LIBRARIES ) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(HARFBUZZ DEFAULT_MSG HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(HarfBuzz DEFAULT_MSG HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES) diff --git a/cmake/FindAgg.cmake b/cmake/FindLibAgg.cmake similarity index 95% rename from cmake/FindAgg.cmake rename to cmake/FindLibAgg.cmake index 8309cd32b..ed82252a7 100644 --- a/cmake/FindAgg.cmake +++ b/cmake/FindLibAgg.cmake @@ -35,7 +35,7 @@ FIND_LIBRARY(LIBAGG_LIBRARIES ) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBAGG DEFAULT_MSG LIBAGG_INCLUDE_DIRS LIBAGG_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibAgg DEFAULT_MSG LIBAGG_INCLUDE_DIRS LIBAGG_LIBRARIES) IF(LIBAGG_FOUND) PKG_CHECK_MODULES(PC_LIBAGGFT2 QUIET LIBAGGFT2) diff --git a/cmake/FindLibLZMA.cmake b/cmake/FindLibLZMA.cmake index 028b296b5..1df726950 100644 --- a/cmake/FindLibLZMA.cmake +++ b/cmake/FindLibLZMA.cmake @@ -19,4 +19,4 @@ find_path(LIBLZMA_INCLUDE_DIRS lzma.h ) find_library(LIBLZMA_LIBRARIES lzma) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBLZMA DEFAULT_MSG LIBLZMA_INCLUDE_DIRS LIBLZMA_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLZMA DEFAULT_MSG LIBLZMA_INCLUDE_DIRS LIBLZMA_LIBRARIES) diff --git a/cmake/FindMarisa.cmake b/cmake/FindMarisa.cmake index beef3893f..8b040ff93 100644 --- a/cmake/FindMarisa.cmake +++ b/cmake/FindMarisa.cmake @@ -37,4 +37,4 @@ FIND_LIBRARY(MARISA_LIBRARIES ) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(MARISA DEFAULT_MSG MARISA_INCLUDE_DIRS MARISA_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Marisa DEFAULT_MSG MARISA_INCLUDE_DIRS MARISA_LIBRARIES) diff --git a/cmake/FindPANGO.cmake b/cmake/FindPango.cmake similarity index 100% rename from cmake/FindPANGO.cmake rename to cmake/FindPango.cmake diff --git a/cmake/Findiconv.cmake b/cmake/Findiconv.cmake index cfb00996f..f67adc45b 100644 --- a/cmake/Findiconv.cmake +++ b/cmake/Findiconv.cmake @@ -56,7 +56,7 @@ if(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) endif() include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(ICONV DEFAULT_MSG ICONV_INCLUDE_DIR ICONV_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(iconv DEFAULT_MSG ICONV_INCLUDE_DIR ICONV_LIBRARIES) # Copy the results to the output variables. if(ICONV_FOUND) diff --git a/cmake/ProjectConfig.cmake b/cmake/ProjectConfig.cmake index 0478dfb83..5a32dd532 100644 --- a/cmake/ProjectConfig.cmake +++ b/cmake/ProjectConfig.cmake @@ -106,6 +106,7 @@ macro(osmscout_library_project) endif() install(TARGETS ${_name} RUNTIME DESTINATION bin + BUNDLE DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib FRAMEWORK DESTINATION lib) @@ -120,13 +121,13 @@ macro(osmscout_library_project) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/${_includedir} DESTINATION include FILES_MATCHING PATTERN "*.h" ${_exclude_cmd}) endif() endif() - if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt5::windeployqt AND BUILD_SHARED_LIBS) + if(OSMSCOUT_INSTALL_QT_DLL AND TARGET Qt::windeployqt AND BUILD_SHARED_LIBS) foreach(T ${_targets}) - if("${T}" STREQUAL "Qt5::Core" OR "${T}" STREQUAL "Qt5::Gui" OR "${T}" STREQUAL "Qt5::Widgets" OR "${T}" STREQUAL "Qt5::Svg") + if("${T}" STREQUAL "Qt::Core" OR "${T}" STREQUAL "Qt::Gui" OR "${T}" STREQUAL "Qt::Widgets" OR "${T}" STREQUAL "Qt::Svg") add_custom_command(TARGET ${_name} POST_BUILD - COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin - COMMAND Qt5::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" + COMMAND set PATH=%PATH%$${qt_install_prefix}/bin + COMMAND Qt::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$/$" ) break() endif() @@ -171,7 +172,7 @@ macro(osmscout_demo_project) add_executable(${_name} ${_sources}) set_target_properties(${_name} PROPERTIES VERSION ${OSMSCOUT_LIBRARY_VERSION} SOVERSION ${OSMSCOUT_LIBRARY_VERSION} FOLDER "Demos") target_link_libraries(${_name} ${_targets}) - install(TARGETS ${_name} RUNTIME DESTINATION share/osmscout/demos LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) + install(TARGETS ${_name} RUNTIME DESTINATION share/osmscout/demos BUNDLE DESTINATION share/osmscout/demos LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) target_include_directories(${_name} PRIVATE ${_includes}) if(WIN32 AND HAVE_WINRES_H) create_win32_demo_resource(${_name}) @@ -221,7 +222,7 @@ macro(osmscout_test_project) add_executable(${_name} ${_sources}) set_target_properties(${_name} PROPERTIES VERSION ${OSMSCOUT_LIBRARY_VERSION} SOVERSION ${OSMSCOUT_LIBRARY_VERSION} FOLDER "Tests") target_link_libraries(${_name} ${_targets}) - install(TARGETS ${_name} RUNTIME DESTINATION share/osmscout/tests LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) + install(TARGETS ${_name} RUNTIME DESTINATION share/osmscout/tests BUNDLE DESTINATION share/osmscout/tests LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) target_include_directories(${_name} PRIVATE ${_includes}) if(WIN32) create_win32_test_resource(${_name}) @@ -230,11 +231,11 @@ macro(osmscout_test_project) add_test(NAME ${_name} COMMAND ${_name} ${_command} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(MSVC) set(qt5_bin "") - if(Qt5_FOUND AND MSVC AND TARGET Qt5::qmake) - get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION) - execute_process(COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX RESULT_VARIABLE return_code OUTPUT_VARIABLE qt5_install_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) - file(TO_NATIVE_PATH "${qt5_install_prefix}" qt5_install_prefix) - set(qt5_bin ";${qt5_install_prefix}\\bin") + if(QT_FOUND AND MSVC AND TARGET Qt::qmake) + get_target_property(_qt_qmake_location Qt::qmake IMPORTED_LOCATION) + execute_process(COMMAND "${_qt_qmake_location}" -query QT_INSTALL_PREFIX RESULT_VARIABLE return_code OUTPUT_VARIABLE qt5_install_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) + file(TO_NATIVE_PATH "${qt_install_prefix}" qt5_install_prefix) + set(qt5_bin ";${qt_install_prefix}\\bin") endif() set(envpath "PATH=$${qt5_bin}") get_target_property(envpath_user OSMScout BINARY_DIR) diff --git a/cmake/features.cmake b/cmake/features.cmake index 3c3bb3f52..063daf096 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -80,6 +80,7 @@ else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") endif() endif() + if(CMAKE_COMPILER_IS_GNUCXX) check_cxx_compiler_flag(-fvisibility=hidden HAVE_VISIBILITY) if(HAVE_VISIBILITY) @@ -104,7 +105,7 @@ check_include_file(sys/time.h HAVE_SYS_TIME_H) check_include_file(sys/types.h HAVE_SYS_TYPES_H) check_include_file(unistd.h HAVE_UNISTD_H) check_include_file_cxx(codecvt HAVE_CODECVT) -if(${HAVE_STDINT_H} AND ${HAVE_STDLIB_H} AND ${HAVE_INTTYPES_H} AND ${HAVE_STRING_H} AND ${HAVE_MEMORY_H}) +if(HAVE_STDINT_H AND HAVE_STDLIB_H AND HAVE_INTTYPES_H AND HAVE_STRING_H AND HAVE_MEMORY_H) set(STDC_HEADERS ON) else() set(STDC_HEADERS OFF) @@ -133,15 +134,19 @@ check_function_exists(posix_fadvise HAVE_POSIX_FADVISE) check_function_exists(posix_madvise HAVE_POSIX_MADVISE) check_function_exists(mallinfo HAVE_MALLINFO) -# prefer static libraries if shared are disabled -if(NOT BUILD_SHARED_LIBS AND (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR CMAKE_COMPILER_IS_GNUCC)) - set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) +# prefer static libraries if shared are disabled +if(NOT BUILD_SHARED_LIBS AND (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR CMAKE_COMPILER_IS_GNUCC)) + set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif() # check libraries and tools if(NOT IOS) find_package(Marisa) endif() +set(HAVE_LIB_MARISA ${MARISA_FOUND}) +set(OSMSCOUT_HAVE_LIB_MARISA ${HAVE_LIB_MARISA}) +set(OSMSCOUT_IMPORT_HAVE_LIB_MARISA ${MARISA_FOUND}) + find_package(LibXml2) if (LIBXML2_FOUND AND NOT BUILD_SHARED_LIBS) # seems that FindLibXml2.cmake don't handle static libraries properly @@ -155,15 +160,34 @@ if (LIBXML2_FOUND AND NOT BUILD_SHARED_LIBS) list(APPEND LIBXML2_LIBRARIES "dl") endif() endif() +set(HAVE_LIB_XML ${LIBXML2_FOUND}) +set(OSMSCOUT_GPX_HAVE_LIB_XML ${LIBXML2_FOUND}) + find_package(Protobuf) if (${PROTOBUF_FOUND} AND NOT EXISTS ${PROTOBUF_PROTOC_EXECUTABLE}) message(STATUS "Protobuf library found, but protoc compiler is missing") set(PROTOBUF_FOUND FALSE) endif() +set(HAVE_LIB_PROTOBUF ${PROTOBUF_FOUND}) + find_package(ZLIB) +set(HAVE_LIB_ZLIB ${ZLIB_FOUND}) + find_package(iconv) +if(ICONV_FOUND) + set(HAVE_ICONV TRUE) + if(${ICONV_SECOND_ARGUMENT_IS_CONST}) + set(ICONV_CONST "const") + endif() +else() + message(WARNING "No iconv support") +endif() + find_package(LibLZMA) + find_package(PNG QUIET) +set(HAVE_LIB_PNG ${PNG_FOUND}) + find_package(Cairo QUIET) if(CAIRO_FOUND) option(CAIRO_STATIC "Switch on if the found cairo library is static" OFF) @@ -172,13 +196,28 @@ if(CAIRO_FOUND) endif() mark_as_advanced(CAIRO_STATIC) endif() -find_package(Agg QUIET) +set(HAVE_LIB_CAIRO ${CAIRO_FOUND}) + +find_package(LibAgg QUIET) +set(HAVE_LIB_AGG ${LIBAGG_FOUND}) + find_package(Freetype QUIET) -find_package(PANGO QUIET) +set(HAVE_LIB_FREETYPE ${FREETYPE_FOUND}) + +find_package(Pango QUIET) +set(HAVE_LIB_PANGO ${PANGO_FOUND}) +set(OSMSCOUT_MAP_CAIRO_HAVE_LIB_PANGO ${PANGOCAIRO_FOUND}) +set(OSMSCOUT_MAP_SVG_HAVE_LIB_PANGO ${PANGOFT2_FOUND}) + find_package(HarfBuzz QUIET) +set(HAVE_LIB_HARFBUZZ ${HARFBUZZ_FOUND}) + set(OpenGL_GL_PREFERENCE "GLVND") # Prever non-legacy OpenGL libraries find_package(OpenGL QUIET) +set(HAVE_LIB_OPENGL ${OPENGL_FOUND}) + find_package(GLEW QUIET) + find_package(GLM QUIET) if(NOT GLM_FOUND) find_package(Git QUIET) @@ -196,13 +235,108 @@ if(NOT GLM_FOUND) mark_as_advanced(OSMSCOUT_DOWNLOAD_GLM_IF_NOT_FOUND) endif() endif() + find_package(GLFW QUIET) -find_package(Qt5 5.6 COMPONENTS Core Gui Widgets Qml Quick Svg Positioning Multimedia LinguistTools QUIET) -if(Qt5_FOUND) + +if (QT_VERSION_PREFERRED AND QT_VERSION_PREFERRED EQUAL 5) + message(STATUS "Try loading Qt5 (explicitly preferred)...") + set(QT5_TRIED 1) + set(QT_DEFAULT_MAJOR_VERSION 5) + find_package(Qt5 5.15 COMPONENTS Core Gui Widgets Qml Quick Svg Location Positioning Multimedia LinguistTools QUIET) + if(Qt5_FOUND) + message(STATUS "Choosing Qt5, since explicitly preferred") + set(QT_FOUND 1) + set(QT_VERSION_MAJOR 5) + else () + message(STATUS "Qt5 NOT found") + endif() +endif () + +if (QT_VERSION_PREFERRED AND QT_VERSION_PREFERRED EQUAL 6) + message(STATUS "Try loading preferred Qt6 (explicitly preferred)...") + set(QT6_TRIED 1) + set(QT_DEFAULT_MAJOR_VERSION 6) + find_package(Qt6 COMPONENTS Core Core5Compat Gui Widgets Qml Quick Svg Positioning Multimedia LinguistTools QUIET) + if(Qt6_FOUND) + message(STATUS "Choosing Qt6, since explicitly preferred") + set(QT_FOUND 1) + set(QT_VERSION_MAJOR 6) + else () + message(STATUS "Qt6 NOT found") + endif() +endif() + +if (NOT QT_FOUND AND NOT QT5_TRIED) + message(STATUS "Try loading Qt5 (implicitly preferred version)...") + set(QT_DEFAULT_MAJOR_VERSION 5) + find_package(Qt5 5.15 COMPONENTS Core Gui Widgets Qml Quick Svg Location Positioning Multimedia LinguistTools QUIET) +endif () + +if(NOT QT_FOUND) + if (Qt5_FOUND) + message(STATUS "Choosing Qt5, since implicitly preferred") + set(QT_FOUND 1) + set(QT_VERSION_MAJOR 5) + else () + message(STATUS "Qt5 NOT found") + endif () +endif () + +if (NOT QT_FOUND AND NOT QT6_TRIED) + message(STATUS "Try loading Qt6 (implicitly preferred version)...") + set(QT_DEFAULT_MAJOR_VERSION 6) + find_package(Qt6 COMPONENTS Core Core5Compat Gui Widgets Qml Quick Svg Positioning Multimedia LinguistTools QUIET) +endif() + +if (NOT QT_FOUND) + if (Qt6_FOUND) + message(STATUS "Choosing Qt6, since implicitly preferred") + set(QT_FOUND 1) + set(QT_VERSION_MAJOR 6) + else () + message(STATUS "Qt6 NOT found") + endif() +endif() + +if(QT_FOUND) + message(STATUS "Qt version used: ${QT_VERSION_MAJOR}") option(QT_QML_DEBUG "Build with QML debugger support" OFF) mark_as_advanced(QT_QML_DEBUG) -endif() + + if (Qt5_FOUND) + if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND AND Qt5Svg_FOUND) + message(STATUS "Qt5 map dependencies found") + set(QT_MAP_DEPENDENCIES_FOUND 1) + endif() + if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND AND Qt5Svg_FOUND AND Qt5Qml_FOUND AND Qt5Quick_FOUND AND Qt5Network_FOUND AND Qt5Location_FOUND AND Qt5Multimedia_FOUND) + message(STATUS "Qt5 client dependencies found") + set(QT_CLIENT_DEPENDENCIES_FOUND 1) + endif() + endif() + + if (Qt6_FOUND) + if (Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND AND Qt6Svg_FOUND) + message(STATUS "Qt6 map dependencies found") + set(QT_MAP_DEPENDENCIES_FOUND 1) + endif() + if (Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND AND Qt6Svg_FOUND AND Qt6Qml_FOUND AND Qt6Quick_FOUND AND Qt6Network_FOUND AND Qt6Multimedia_FOUND) + message(STATUS "Qt6 client dependencies found") + set(QT_CLIENT_DEPENDENCIES_FOUND 1) + endif() + endif() + + if (Qt5_FOUND) + set(HAVE_LIB_QT5_GUI ${Qt5Gui_FOUND}) + set(HAVE_LIB_QT5_WIDGETS ${Qt5Widgets_FOUND}) + else() + set(HAVE_LIB_QT5_GUI ${Qt6Gui_FOUND}) + set(HAVE_LIB_QT5_WIDGETS ${Qt6Widgets_FOUND}) + endif() +endif () + find_package(OpenMP QUIET) +set(OSMSCOUT_HAVE_OPENMP ${OPENMP_FOUND}) + find_package(Doxygen QUIET) #find_package(SWIG QUIET) #find_package(JNI QUIET) @@ -210,14 +344,18 @@ find_package(Doxygen QUIET) #find_package(PythonLibs QUIET) set(Matlab_FIND_COMPONENTS MX_LIBRARY) find_package(MATLAB QUIET) + find_package(Gperftools QUIET) +set(HAVE_LIB_GPERFTOOLS ${GPERFTOOLS_FOUND}) if(GPERFTOOLS_FOUND) set(GPERFTOOLS_USAGE ON) else() set(GPERFTOOLS_USAGE OFF) endif() + find_package(Direct2D QUIET) -find_package(Threads REQUIRED) + +find_package(Threads) if(THREADS_HAVE_PTHREAD_ARG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${THREADS_PTHREAD_ARG}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${THREADS_PTHREAD_ARG}") @@ -235,6 +373,7 @@ if (TBB_FOUND) "${PROJECT_SOURCE_DIR}/cmake/TestTBBSchedulerInit.cpp" LINK_LIBRARIES TBB::tbb) endif() +set(HAVE_STD_EXECUTION ${TBB_FOUND}) find_program(HUGO_PATH hugo) @@ -243,22 +382,6 @@ set(OSMSCOUT_HAVE_INT16_T ${HAVE_INT16_T}) set(OSMSCOUT_HAVE_INT32_T ${HAVE_INT32_T}) set(OSMSCOUT_HAVE_INT64_T ${HAVE_INT64_T}) set(OSMSCOUT_HAVE_INT8_T ${HAVE_INT8_T}) -set(HAVE_LIB_MARISA ${MARISA_FOUND}) -set(HAVE_LIB_XML ${LIBXML2_FOUND}) -set(HAVE_LIB_PROTOBUF ${PROTOBUF_FOUND}) -set(HAVE_LIB_ZLIB ${ZLIB_FOUND}) -set(HAVE_LIB_CAIRO ${CAIRO_FOUND}) -set(HAVE_LIB_AGG ${LIBAGG_FOUND}) -set(HAVE_LIB_FREETYPE ${FREETYPE_FOUND}) -set(HAVE_LIB_PANGO ${PANGO_FOUND}) -set(HAVE_LIB_HARFBUZZ ${HARFBUZZ_FOUND}) -set(HAVE_LIB_PNG ${PNG_FOUND}) -set(HAVE_LIB_OPENGL ${OPENGL_FOUND}) -set(HAVE_LIB_GPERFTOOLS ${GPERFTOOLS_FOUND}) -set(HAVE_LIB_QT5_GUI ${Qt5Gui_FOUND}) -set(HAVE_LIB_QT5_WIDGETS ${Qt5Widgets_FOUND}) -set(HAVE_STD_EXECUTION ${TBB_FOUND}) -set(OSMSCOUT_HAVE_LIB_MARISA ${HAVE_LIB_MARISA}) set(OSMSCOUT_HAVE_LONG_LONG ${HAVE_LONG_LONG}) set(OSMSCOUT_HAVE_SSE2 ${HAVE_SSE2}) set(OSMSCOUT_HAVE_STDINT_H ${HAVE_STDINT_H}) @@ -268,16 +391,3 @@ set(OSMSCOUT_HAVE_UINT32_T ${HAVE_UINT32_T}) set(OSMSCOUT_HAVE_UINT64_T ${HAVE_UINT64_T}) set(OSMSCOUT_HAVE_UINT8_T ${HAVE_UINT8_T}) set(OSMSCOUT_HAVE_ULONG_LONG ${HAVE_UNSIGNED_LONG_LONG}) -set(OSMSCOUT_IMPORT_HAVE_LIB_MARISA ${MARISA_FOUND}) -set(OSMSCOUT_GPX_HAVE_LIB_XML ${LIBXML2_FOUND}) -set(OSMSCOUT_MAP_CAIRO_HAVE_LIB_PANGO ${PANGOCAIRO_FOUND}) -set(OSMSCOUT_MAP_SVG_HAVE_LIB_PANGO ${PANGOFT2_FOUND}) -set(OSMSCOUT_HAVE_OPENMP ${OPENMP_FOUND}) -if(ICONV_FOUND) - set(HAVE_ICONV TRUE) - if(${ICONV_SECOND_ARGUMENT_IS_CONST}) - set(ICONV_CONST "const") - endif() -else() - message(WARNING "No iconv support") -endif() diff --git a/libosmscout-client-qt/CMakeLists.txt b/libosmscout-client-qt/CMakeLists.txt index 92ceb4a98..c6256f29c 100644 --- a/libosmscout-client-qt/CMakeLists.txt +++ b/libosmscout-client-qt/CMakeLists.txt @@ -118,16 +118,29 @@ set(SOURCE_FILES src/osmscoutclientqt/InstalledVoicesModel.cpp ) -osmscout_library_project( - NAME OSMScoutClientQt - ALIAS ClientQt - OUTPUT_NAME "osmscout_client_qt" - SOURCE ${SOURCE_FILES} - HEADER ${HEADER_FILES} - INCLUDEDIR osmscoutclientqt - TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/include/osmscoutclientqt/ClientQtFeatures.h.cmake - TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt5::Core Qt5::Gui Qt5::Quick Qt5::Multimedia OSMScout::Client -) +if (QT_VERSION_MAJOR EQUAL 6) + osmscout_library_project( + NAME OSMScoutClientQt + ALIAS ClientQt + OUTPUT_NAME "osmscout_client_qt" + SOURCE ${SOURCE_FILES} + HEADER ${HEADER_FILES} + INCLUDEDIR osmscoutclientqt + TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/include/osmscoutclientqt/ClientQtFeatures.h.cmake + TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt::Core Qt6::Core5Compat Qt::Gui Qt::Quick Qt::Multimedia OSMScout::Client + ) +else () + osmscout_library_project( + NAME OSMScoutClientQt + ALIAS ClientQt + OUTPUT_NAME "osmscout_client_qt" + SOURCE ${SOURCE_FILES} + HEADER ${HEADER_FILES} + INCLUDEDIR osmscoutclientqt + TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/include/osmscoutclientqt/ClientQtFeatures.h.cmake + TARGET OSMScout::OSMScout OSMScout::Map OSMScout::MapQt Qt::Core Qt::Gui Qt::Quick Qt::Multimedia OSMScout::Client + ) +endif () if(MARISA_FOUND) target_include_directories(OSMScoutClientQt PUBLIC ${MARISA_INCLUDE_DIRS}) diff --git a/libosmscout-gpx/CMakeLists.txt b/libosmscout-gpx/CMakeLists.txt index f7572b212..939d9f32b 100644 --- a/libosmscout-gpx/CMakeLists.txt +++ b/libosmscout-gpx/CMakeLists.txt @@ -43,9 +43,7 @@ osmscout_library_project( ) if(LIBXML2_FOUND) - target_include_directories(OSMScoutGPX PRIVATE ${LIBXML2_INCLUDE_DIR}) - target_link_libraries(OSMScoutGPX ${LIBXML2_LIBRARIES}) - target_include_directories(OSMScoutGPX INTERFACE ${LIBXML2_INCLUDE_DIR}) + target_link_libraries(OSMScoutGPX LibXml2::LibXml2) endif() if (ICONV_FOUND) diff --git a/libosmscout-import/CMakeLists.txt b/libosmscout-import/CMakeLists.txt index 54ba944b3..f4584b739 100644 --- a/libosmscout-import/CMakeLists.txt +++ b/libosmscout-import/CMakeLists.txt @@ -141,8 +141,7 @@ osmscout_library_project( ) if(LIBXML2_FOUND) - target_include_directories(OSMScoutImport PRIVATE ${LIBXML2_INCLUDE_DIR}) - target_link_libraries(OSMScoutImport ${LIBXML2_LIBRARIES}) + target_link_libraries(OSMScoutImport LibXml2::LibXml2) endif() if (PROTOBUF_FOUND) diff --git a/libosmscout-map-qt/CMakeLists.txt b/libosmscout-map-qt/CMakeLists.txt index 06d160de0..4b31e0603 100644 --- a/libosmscout-map-qt/CMakeLists.txt +++ b/libosmscout-map-qt/CMakeLists.txt @@ -21,7 +21,7 @@ osmscout_library_project( INCLUDEDIR osmscoutmapqt INCLUDES ${QT5_INCLUDE_DIR} TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/include/osmscoutmapqt/MapQtFeatures.h.cmake - TARGET OSMScout::OSMScout OSMScout::Map Qt5::Gui Qt5::Svg + TARGET OSMScout::OSMScout OSMScout::Map Qt::Gui Qt::Svg ) if(APPLE AND OSMSCOUT_BUILD_FRAMEWORKS)