diff --git a/CMakeLists.txt b/CMakeLists.txt index 819d43186c4..cadb547d9a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,13 @@ PROJECT(CPPCHECK) set(CMAKE_MODULE_PATH "${CPPCHECK_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) +option(CPPCHECK_BUILD_USE_RULES "Would you like to use customised check rules? +See also: +http://sourceforge.net/projects/cppcheck/files/Articles/writing-rules-1.pdf/download +(Software components which support the processing of Perl-compatible regular +expressions will be required for the build system if this feature is enabled.)" + ON) + # Building lib as static library is disabled due to bug # #1299 CMake: The CheckClass is not used # https://sourceforge.net/apps/trac/cppcheck/ticket/1299 diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 840d8a434db..ed8bf519bf8 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,5 +1,12 @@ # Minimal CMake build file to build cppcheck command line executable +if(CPPCHECK_BUILD_USE_RULES) + find_package(PCRE REQUIRED) + add_definitions(-DHAVE_RULES) + include_directories("${PCRE_INCLUDE_DIR}") + set(CHECK_LIBS ${PCRE_LIBRARIES}) +endif() + set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") SET(CHECKCLI_SRCS diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 5ea9334cd82..ebe2fbf8125 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -4,6 +4,12 @@ # - tests # - Qt GUI +if(CPPCHECK_BUILD_USE_RULES) + find_package(PCRE REQUIRED) + add_definitions(-DHAVE_RULES) + include_directories("${PCRE_INCLUDE_DIR}") +endif() + set(CPPCHECK_LIB_DIR "") include("library_sources.cmake") @@ -12,3 +18,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) add_library(checklib STATIC ${CPPCHECK_LIB_SOURCES}) + +if(CPPCHECK_BUILD_USE_RULES) + target_link_libraries(checklib ${PCRE_LIBRARIES}) +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f0450172075..1aca646d72a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,5 +1,12 @@ # Minimal CMake build file to build cppcheck test suite +if(CPPCHECK_BUILD_USE_RULES) + find_package(PCRE REQUIRED) + add_definitions(-DHAVE_RULES) + include_directories("${PCRE_INCLUDE_DIR}") + set(CHECK_LIBS ${PCRE_LIBRARIES}) +endif() + set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") SET(CHECKTEST_SRCS