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)