Warning, /network/smb4k/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 
0002 # SPDX-License-Identifier: BSD-2-Clause
0003 # SPDX-FileCopyrightText: 2019 Pino Toscano <pino@kde.org>
0004 # SPDX-FileCopyrightText: 2009-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0005 #
0006 # Project
0007 #
0008 project(smb4k)
0009 
0010 #
0011 # Version
0012 #
0013 set(VERSION_MAJOR 3)
0014 set(VERSION_MINOR 2)
0015 set(VERSION_PATCH 70)
0016 
0017 set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
0018 
0019 #
0020 # Minimum required CMake version
0021 #
0022 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
0023 
0024 #
0025 # CMake policies
0026 #
0027 cmake_policy(SET CMP0037 NEW)
0028 
0029 if (POLICY CMP0071)
0030   cmake_policy(SET CMP0071 NEW)
0031 endif()
0032 
0033 #
0034 # Minimum required versions of Qt and Frameworks
0035 #
0036 set(QT_MIN_VERSION "5.15.8")
0037 set(KF5_MIN_VERSION "5.103.0")
0038 
0039 #
0040 # Options for building Smb4K
0041 #
0042 # Install plasmoid
0043 option(SMB4K_INSTALL_PLASMOID "Install the plasmoid" ON)
0044 
0045 # Build with KDSoap WS Discovery client
0046 option(SMB4K_WITH_WS_DISCOVERY "Build with WS-Discovery support for browsing" OFF)
0047 
0048 # Compile definitions
0049 # Error out when deprecated functions (in Qt <= 6.0.0) are encountered
0050 add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x060000)
0051 
0052 #
0053 # Required packages and includes
0054 #
0055 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
0056 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake/)
0057 
0058 include(KDEInstallDirs)
0059 include(KDECompilerSettings NO_POLICY_SCOPE)
0060 include(KDECMakeSettings)
0061 include(FeatureSummary)
0062 include(ECMInstallIcons)
0063 include(ECMSetupVersion)
0064 include(CheckSymbolExists)
0065 include(KDEClangFormat)
0066 
0067 #
0068 # Version
0069 # 
0070 ecm_setup_version(${VERSION} VARIABLE_PREFIX SMB4K VERSION_HEADER smb4k_version.h)
0071 
0072 #
0073 # Source code formatting
0074 # 
0075 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0076 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0077 
0078 # Qt modules
0079 find_package(Qt${QT_MAJOR_VERSION}Core ${QT_MIN_VERSION} REQUIRED)
0080 find_package(Qt${QT_MAJOR_VERSION}Gui ${QT_MIN_VERSION} REQUIRED)
0081 find_package(Qt${QT_MAJOR_VERSION}Network ${QT_MIN_VERSION} REQUIRED)
0082 find_package(Qt${QT_MAJOR_VERSION}PrintSupport ${QT_MIN_VERSION} REQUIRED)
0083 find_package(Qt${QT_MAJOR_VERSION}Qml ${QT_MIN_VERSION} REQUIRED)
0084 find_package(Qt${QT_MAJOR_VERSION}Widgets ${QT_MIN_VERSION} REQUIRED)
0085 
0086 # KF5 modules
0087 find_package(KF5Auth ${KF5_MIN_VERSION} REQUIRED)
0088 find_package(KF5Completion ${KF5_MIN_VERSION} REQUIRED)
0089 find_package(KF5Config ${KF5_MIN_VERSION} REQUIRED)
0090 find_package(KF5ConfigWidgets ${KF5_MIN_VERSION} REQUIRED)
0091 find_package(KF5CoreAddons ${KF5_MIN_VERSION} REQUIRED)
0092 find_package(KF5DBusAddons ${KF5_MIN_VERSION} REQUIRED)
0093 find_package(KF5DocTools ${KF5_MIN_VERSION} REQUIRED)
0094 find_package(KF5I18n ${KF5_MIN_VERSION} REQUIRED)
0095 find_package(KF5IconThemes ${KF5_MIN_VERSION} REQUIRED)
0096 find_package(KF5JobWidgets ${KF5_MIN_VERSION} REQUIRED)
0097 find_package(KF5KIO ${KF5_MIN_VERSION} REQUIRED)
0098 find_package(KF5Notifications ${KF5_MIN_VERSION} REQUIRED)
0099 find_package(KF5Solid ${KF5_MIN_VERSION} REQUIRED)
0100 find_package(KF5Wallet ${KF5_MIN_VERSION} REQUIRED)
0101 find_package(KF5WidgetsAddons ${KF5_MIN_VERSION} REQUIRED)
0102 find_package(KF5WindowSystem ${KF5_MIN_VERSION} REQUIRED)
0103 find_package(KF5XmlGui ${KF5_MIN_VERSION} REQUIRED)
0104 find_package(KF5Crash ${KF5_MIN_VERSION} REQUIRED)
0105 find_package(KF5DNSSD ${KF5_MIN_VERSION} REQUIRED)
0106 
0107 # Install the plasmoid if desired
0108 if (SMB4K_INSTALL_PLASMOID)
0109   find_package(KF5Plasma ${KF5_MIN_VERSION})
0110   set_package_properties(KF5Plasma PROPERTIES TYPE RUNTIME)
0111 endif()
0112 
0113 # Find libsmbclient.h
0114 find_package(Libsmbclient REQUIRED MODULE)
0115 
0116 # Check that the required smbc_* functions are provided
0117 set(CMAKE_REQUIRED_LIBRARIES ${LIBSMBCLIENT_LIBRARIES})
0118 set(CMAKE_REQUIRED_INCLUDES ${LIBSMBCLIENT_INCLUDE_DIRS})
0119 check_symbol_exists(smbc_setOptionProtocols libsmbclient.h HAVE_SMBC_PROTOCOL)
0120 
0121 if (NOT HAVE_SMBC_PROTOCOL)
0122   message(FATAL_ERROR "The function smbc_setOptionProtocols() is missing in Samba's client library's header file.")
0123 endif()
0124 
0125 # Find KDSoap client
0126 if (SMB4K_WITH_WS_DISCOVERY)
0127     if (QT_MAJOR_VERSION EQUAL "6")
0128       set(KDSOAP_PACKAGE KDSoap-qt6)
0129       set(KDSOAP_VERSION 2.0.0)
0130     else ()
0131       set(KDSOAP_PACKAGE KDSoap)
0132       set(KDSOAP_VERSION 1.9.0)
0133     endif ()
0134     message(STATUS "Building with WS-Discovery support (-DSMB4K_WITH_WS_DISCOVERY=OFF to disable)")
0135     find_package(${KDSOAP_PACKAGE} ${KDSOAP_VERSION} REQUIRED)
0136     find_package(KDSoapWSDiscoveryClient 0.2 REQUIRED)
0137 elseif(NOT SMB4K_WITH_WS_DISCOVERY)
0138     message(STATUS "Not building with WS-Discovery support (-DSMB4K_WITH_WS_DISCOVERY=ON to enable)")
0139 endif(SMB4K_WITH_WS_DISCOVERY)
0140 
0141 #
0142 # Make sure that Smb4K builds when several custom targets
0143 # with the same name exist (happens in the po directory).
0144 #
0145 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po")
0146   set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS ON)
0147 endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po")
0148 
0149 add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055000)
0150 
0151 #
0152 # Make sure that all libraries, plugins, etc. are installed
0153 # into the right place.
0154 #
0155 set(KDE_INSTALL_USE_QT_SYS_PATHS ON CACHE BOOL "Use Qt system paths for installation" FORCE)
0156 
0157 #
0158 # Add subdirectories
0159 #
0160 add_subdirectory(core)
0161 add_subdirectory(helpers)
0162 add_subdirectory(smb4k)
0163 add_subdirectory(data)
0164 add_subdirectory(doc)
0165 
0166 if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po")
0167   ki18n_install(po)
0168   if(KF5DocTools_FOUND)
0169     kdoctools_install(po)
0170   endif(KF5DocTools_FOUND)
0171 endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po")
0172 
0173 #
0174 # Make adjustments according to the options set by the user
0175 #
0176 # Plasmoid: Notify the user and add the subdirectory if desired
0177 if (SMB4K_INSTALL_PLASMOID)
0178   message(STATUS "Installing plasmoid (-DSMB4K_INSTALL_PLASMOID=OFF to disable)")
0179   add_subdirectory(plasmoid)
0180 elseif(NOT SMB4K_INSTALL_PLASMOID)
0181   message(STATUS "Not installing plasmoid (-DSMB4K_INSTALL_PLASMOID=ON to enable)")
0182 endif(SMB4K_INSTALL_PLASMOID)
0183 
0184 ########### install files ###############
0185 
0186 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)