diff --git a/CMakeLists.txt b/CMakeLists.txt index cf2b909bc6..ae2e7590f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,153 +1,153 @@ cmake_minimum_required(VERSION 2.8.12) # KDevelop version set(KDEVELOP_VERSION_MAJOR 5) set(KDEVELOP_VERSION_MINOR 1) set(KDEVELOP_VERSION_PATCH 40) set( KDEVELOP_VERSION "${KDEVELOP_VERSION_MAJOR}.${KDEVELOP_VERSION_MINOR}.${KDEVELOP_VERSION_PATCH}" ) project(KDevelop) # we need some parts of the ECM CMake helpers find_package (ECM 0.0.9 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${KDevelop_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH}) include(KDECompilerSettings NO_POLICY_SCOPE) # needs to be first, as set policies influence following macros include(ECMOptionalAddSubdirectory) include(ECMInstallIcons) include(ECMAddAppIcon) include(ECMSetupVersion) include(ECMAddTests) include(ECMMarkNonGuiExecutable) include(ECMGenerateHeaders) include(ECMPackageConfigHelpers) include(CTest) include(GenerateExportHeader) include(CMakePackageConfigHelpers) include(FeatureSummary) include(WriteBasicConfigVersionFile) include(CheckFunctionExists) include(KDEInstallDirs) include(KDECMakeSettings) set(QT_MIN_VERSION "5.4.0") find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Widgets Concurrent Quick QuickWidgets Test) set(KF5_DEP_VERSION "5.15.0") # we need KCrash::initialize find_package(KF5 ${KF5_DEP_VERSION} REQUIRED COMPONENTS Config Declarative DocTools IconThemes I18n ItemModels ItemViews JobWidgets KCMUtils KIO NewStuff NotifyConfig Parts Service TextEditor ThreadWeaver XmlGui WindowSystem Crash ) find_package(KF5SysGuard) set_package_properties(KF5SysGuard PROPERTIES PURPOSE "Framework for process listing. Required for the 'Attach to Process' feature" ) find_package(KDevelop-PG-Qt 1.90.90) set_package_properties(KDevelop-PG-Qt PROPERTIES PURPOSE "KDevelop parser generator library. Required for the QMake Builder/Manager plugin." ) find_package(KDevPlatform ${KDEVELOP_VERSION} REQUIRED) add_definitions( -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050400 -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS ) # Turn off missing-field-initializers warning to avoid noise from false positives with empty {} # See discussion: http://mail.kde.org/pipermail/kdevelop-devel/2014-February/046910.html check_cxx_compiler_flag(-Wno-missing-field-initializers HAVE_MFI_FLAG) check_cxx_compiler_flag(-Werror=undefined-bool-conversion HAVE_UBC_FLAG) check_cxx_compiler_flag(-Werror=tautological-undefined-compare HAVE_TUC_FLAG) if (HAVE_MFI_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers") endif() if (HAVE_UBC_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=undefined-bool-conversion") endif() if (HAVE_TUC_FLAG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=tautological-undefined-compare") endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wdocumentation") endif() include_directories(${KDevelop_SOURCE_DIR} ${KDevelop_BINARY_DIR} ) string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER) if(CMAKE_BUILD_TYPE_TOLOWER MATCHES "debug" OR CMAKE_BUILD_TYPE_TOLOWER STREQUAL "") set(COMPILER_OPTIMIZATIONS_DISABLED TRUE) else() set(COMPILER_OPTIMIZATIONS_DISABLED FALSE) endif() # create config.h configure_file (config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) add_subdirectory(pics) add_subdirectory(app) add_subdirectory(analyzers) add_subdirectory(formatters) add_subdirectory(languages) add_subdirectory(projectbuilders) add_subdirectory(projectmanagers) add_subdirectory(debuggers) add_subdirectory(app_templates) add_subdirectory(documentation) add_subdirectory(kdeintegration) add_subdirectory(utils) add_subdirectory(file_templates) add_subdirectory(providers) add_subdirectory(shortcuts) add_subdirectory(doc) set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KDevelop") ecm_configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KDevelopConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KDevelopConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) ecm_setup_version(${KDEVELOP_VERSION_MAJOR}.${KDEVELOP_VERSION_MINOR}.${KDEVELOP_VERSION_PATCH} VARIABLE_PREFIX KDEVELOP VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kdevelop_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KDevelopConfigVersion.cmake" SOVERSION ${KDEVELOP_LIB_SOVERSION} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kdevelop_version.h" DESTINATION "${KDE_INSTALL_INCLUDEDIR}/kdevelop") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KDevelopConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KDevelopConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" ) install(EXPORT KDevelopTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" NAMESPACE KDev:: FILE KDevelopTargets.cmake) # CTestCustom.cmake has to be in the CTEST_BINARY_DIR. # in the KDE build system, this is the same as CMAKE_BINARY_DIR. configure_file(${CMAKE_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_BINARY_DIR}/CTestCustom.cmake) install(FILES org.kde.kdevelop.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) -feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) +feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/analyzers/cppcheck/CMakeLists.txt b/analyzers/cppcheck/CMakeLists.txt index d2978fc715..3ae5dfd756 100644 --- a/analyzers/cppcheck/CMakeLists.txt +++ b/analyzers/cppcheck/CMakeLists.txt @@ -1,47 +1,55 @@ add_definitions(-DTRANSLATION_DOMAIN=\"kdevcppcheck\") +find_package(Cppcheck QUIET) +set_package_properties(Cppcheck PROPERTIES + DESCRIPTION "A tool for static C/C++ code analysis" + URL "http://cppcheck.sourceforge.net/" + PURPOSE "Required for the Cppcheck plugin" + TYPE RUNTIME +) + set(kdevcppcheck_SRCS plugin.cpp problemmodel.cpp config/globalconfigpage.cpp config/projectconfigpage.cpp ) ki18n_wrap_ui(kdevcppcheck_SRCS config/globalconfigpage.ui config/projectconfigpage.ui ) qt5_add_resources(kdevcppcheck_SRCS kdevcppcheck.qrc ) kconfig_add_kcfg_files(kdevcppcheck_CONFIG_SRCS config/globalsettings.kcfgc config/projectsettings.kcfgc ) add_library(kdevcppcheck_core STATIC debug.cpp parser.cpp job.cpp parameters.cpp utils.cpp ${kdevcppcheck_CONFIG_SRCS} ) target_link_libraries(kdevcppcheck_core KDev::Language KDev::Project KDev::Shell ) kdevplatform_add_plugin(kdevcppcheck JSON kdevcppcheck.json SOURCES ${kdevcppcheck_SRCS} ) target_link_libraries(kdevcppcheck kdevcppcheck_core KF5::ItemViews ) ecm_install_icons(ICONS icons/128-apps-cppcheck.png DESTINATION ${KDE_INSTALL_ICONDIR} THEME hicolor) add_subdirectory(tests) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 275cd72d14..07ed6b4b53 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,98 +1,98 @@ find_package(KF5Plasma) set_package_properties(KF5Plasma PROPERTIES PURPOSE "Plasma libraries for enabling the plasma addons" URL "http://www.kde.org" TYPE OPTIONAL) if(KF5Plasma_FOUND) add_subdirectory(plasma) endif() find_package(SharedMimeInfo REQUIRED) option(KDEVELOP_SINGLE_APP "Use QtSingleApplication as KDevelop's base" OFF) set(singleapp_SRCS qtlocalpeer.cpp qtsingleapplication.cpp qtlockedfile.cpp) if(WIN32) set(singleapp_SRCS ${singleapp_SRCS} qtlockedfile_win.cpp) else() set(singleapp_SRCS ${singleapp_SRCS} qtlockedfile_unix.cpp) endif() set(kdevelop_SRCS main.cpp kdevideextension.cpp) if(KDEVELOP_SINGLE_APP) set(kdevelop_SRCS ${kdevelop_SRCS} ${singleapp_SRCS}) endif() qt5_add_resources(kdevelop_SRCS kdevelop.qrc) #TODO: remove CMAKE_CURRENT_SOURCE_DIR prefix when ECM is fixed set(kdevelop_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/icons/16-apps-kdevelop.png ${CMAKE_CURRENT_SOURCE_DIR}/icons/32-apps-kdevelop.png ${CMAKE_CURRENT_SOURCE_DIR}/icons/48-apps-kdevelop.png ${CMAKE_CURRENT_SOURCE_DIR}/icons/64-apps-kdevelop.png ${CMAKE_CURRENT_SOURCE_DIR}/icons/128-apps-kdevelop.png ${CMAKE_CURRENT_SOURCE_DIR}/icons/256-apps-kdevelop.png ) ecm_install_icons(ICONS ${kdevelop_ICONS} DESTINATION ${ICON_INSTALL_DIR}) ecm_add_app_icon(kdevelop_SRCS ICONS ${kdevelop_ICONS}) qt5_add_resources(kdevelop_SRCS kdevelop.qrc) add_executable(kdevelop ${kdevelop_SRCS} ) target_link_libraries(kdevelop KDev::Interfaces KDev::Shell KDev::Util KF5::Declarative KF5::IconThemes KF5::Crash ) IF(APPLE) target_link_libraries(kdevelop "-framework CoreFoundation") ENDIF() install(TARGETS kdevelop ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) install(FILES kdevelop! DESTINATION bin PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ) configure_file(start-kdevelop.py.in ${CMAKE_CURRENT_BINARY_DIR}/start-kdevelop.py @ONLY) option(INSTALL_KDEVELOP_LAUNCH_WRAPPER "Install a wrapper script that sets required environment variables. Only useful when installing into a separate prefix" OFF) if(INSTALL_KDEVELOP_LAUNCH_WRAPPER) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/start-kdevelop.py DESTINATION bin PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ) endif() if (WIN32) install(FILES windows/kdevelop-msvc.bat DESTINATION bin PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ) endif (WIN32) if (APPLE) # the MacOSX bundle display name property (CFBundleDisplayName) is not currently supported by cmake, # so has to be set for all targets in this cmake file set(MACOSX_BUNDLE_DISPLAY_NAME KDevelop) # We provide our own Info.plist to disable AppNap for KDevelop: set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in) set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.kde.KDevelop") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "KDevelop") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_DISPLAY_NAME "KDevelop") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_INFO_STRING "The KDevelop Integrated Development Environment") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING "KDevelop ${KDEVELOP_VERSION_MAJOR}.${KDEVELOP_VERSION_MINOR}") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STRING "${KDEVELOP_VERSION_MAJOR}.${KDEVELOP_VERSION_MINOR}") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_BUNDLE_VERSION "${KDEVELOP_VERSION_MAJOR}.${KDEVELOP_VERSION_MINOR}") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_ICON_FILE "kdevelop_SRCS.icns") set_target_properties(kdevelop PROPERTIES MACOSX_BUNDLE_COPYRIGHT "KDevelop Team") endif (APPLE) ########### install files ############### install( PROGRAMS org.kde.kdevelop.desktop DESTINATION ${KDE_INSTALL_APPDIR} ) install( PROGRAMS org.kde.kdevelop_ps.desktop DESTINATION ${KDE_INSTALL_APPDIR} ) install( FILES kdevelop.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFY5RCDIR} ) -install( FILES kdevelop.xml kdevelopinternal.xml DESTINATION ${KDE_INSTALL_MIMEDIR} ) +install( FILES kdevelop.xml DESTINATION ${KDE_INSTALL_MIMEDIR} ) update_xdg_mimetypes( ${KDE_INSTALL_MIMEDIR} ) diff --git a/app/kdevelopinternal.xml b/app/kdevelopinternal.xml deleted file mode 100644 index 3a00672427..0000000000 --- a/app/kdevelopinternal.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - KDevelop Internal File - - - diff --git a/cmake/modules/FindCppcheck.cmake b/cmake/modules/FindCppcheck.cmake new file mode 100644 index 0000000000..41bd9a5af7 --- /dev/null +++ b/cmake/modules/FindCppcheck.cmake @@ -0,0 +1,22 @@ +# Find the cppcheck executable +# +# Defines the following variables +# Cppcheck_EXECUTABLE - path of the Cppcheck executable + +#============================================================================= +# Copyright 2017 Friedrich W. H. Kossebau +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +find_program(Cppcheck_EXECUTABLE NAMES cppcheck) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Cppcheck DEFAULT_MSG Cppcheck_EXECUTABLE) + +mark_as_advanced(Cppcheck_EXECUTABLE)