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)