From 34926ef085752336cc5963f07dce9bdee13b1c5a Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Sat, 6 Mar 2010 21:20:23 +0200 Subject: [PATCH 01/18] Add back CMake build files. --- CMake/xmlto.cmake | 103 ++++++++++++++++++++++++++++++++ CMakeLists.txt | 35 +++++++++++ cli/CMakeLists.txt | 52 ++++++++++++++++ gui/CMakeLists.txt | 141 ++++++++++++++++++++++++++++++++++++++++++++ lib/CMakeLists.txt | 61 +++++++++++++++++++ test/CMakeLists.txt | 65 ++++++++++++++++++++ 6 files changed, 457 insertions(+) create mode 100644 CMake/xmlto.cmake create mode 100644 CMakeLists.txt create mode 100644 cli/CMakeLists.txt create mode 100644 gui/CMakeLists.txt create mode 100644 lib/CMakeLists.txt create mode 100644 test/CMakeLists.txt diff --git a/CMake/xmlto.cmake b/CMake/xmlto.cmake new file mode 100644 index 00000000000..ab7f0e3b77d --- /dev/null +++ b/CMake/xmlto.cmake @@ -0,0 +1,103 @@ +# - Convert XML docBook files to various formats +# This will convert XML docBook files to various formats like: +# man html txt dvi ps pdf +# macro XMLTO(outfiles infiles... MODES modes...) + +set ( XmlTo_FOUND false ) + +find_program ( XMLTO_EXECUTABLE + NAMES xmlto + DOC "path to the xmlto docbook xslt frontend" +) + +if ( XMLTO_EXECUTABLE ) + set ( XmlTo_FOUND true ) +endif ( XMLTO_EXECUTABLE ) + +if ( NOT XmlTo_FIND_QUIETLY ) + if ( XmlTo_FIND_REQUIRED ) + FATAL_ERROR ( "xmlto not found" ) + endif ( XmlTo_FIND_REQUIRED ) +endif ( NOT XmlTo_FIND_QUIETLY ) + +macro ( _XMLTO_FILE outfiles mode) + #special settings + set ( XMLTO_FILEEXT_man 1 ) + set ( XMLTO_MODE_html xhtml-nochunks ) + + if ( NOT XMLTO_MODE_${mode}) + set ( XMLTO_MODE_${mode} ${mode} ) + endif ( NOT XMLTO_MODE_${mode} ) + if ( NOT XMLTO_FILEEXT_${mode} ) + set ( XMLTO_FILEEXT_${mode} ${mode} ) + endif ( NOT XMLTO_FILEEXT_${mode} ) + + foreach ( dbFile ${ARGN} ) + #TODO: set XMLTO_FILEEXT_man to value from + if ( "${mode}" STREQUAL "man" ) + file ( READ "${dbFile}" _DB_FILE_CONTENTS ) + string ( REGEX MATCH "[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" ) + string ( REGEX REPLACE "^" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" ) + string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" ) + endif ( "${mode}" STREQUAL "man" ) + + get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH ) + get_filename_component ( dbFileWE ${dbFile} NAME_WE ) + get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE ) + + add_custom_command ( + OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} + COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${CMAKE_CURRENT_BINARY_DIR} + ${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}" + MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile} + VERBATIM + ) + + set ( ${outfiles} + ${${outfiles}} + ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} + ) + endforeach ( dbFile ) +endmacro ( _XMLTO_FILE outfiles ) + +macro ( XMLTO ) + set ( XMLTO_MODES ) + set ( XMLTO_FILES ) + set ( XMLTO_HAS_MODES false ) + set ( XMLTO_ADD_DEFAULT false ) + foreach ( arg ${ARGN} ) + if ( ${arg} STREQUAL "MODES" ) + set ( XMLTO_HAS_MODES true ) + elseif ( ${arg} STREQUAL "ALL" ) + set ( XMLTO_ADD_DEFAULT true ) + else ( ${arg} STREQUAL "MODES" ) + if ( XMLTO_HAS_MODES ) + set ( XMLTO_MODES ${XMLTO_MODES} ${arg} ) + else ( XMLTO_HAS_MODES ) + set ( XMLTO_FILES ${XMLTO_FILES} ${arg} ) + endif ( XMLTO_HAS_MODES ) + endif ( ${arg} STREQUAL "MODES" ) + endforeach ( arg ${ARGN} ) + if ( NOT XMLTO_MODES ) + set ( XMLTO_MODES html ) + endif ( NOT XMLTO_MODES ) + + foreach ( mode ${XMLTO_MODES} ) + _xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} ) + if ( XMLTO_ADD_DEFAULT ) + add_custom_target ( ${mode} ALL + DEPENDS ${XMLTO_FILES_${mode}} + VERBATIM + ) + else ( XMLTO_ADD_DEFAULT ) + add_custom_target ( ${mode} + DEPENDS ${XMLTO_FILES_${mode}} + VERBATIM + ) + endif ( XMLTO_ADD_DEFAULT ) + endforeach ( mode ) + + set ( XMLTO_MODES ) + set ( XMLTO_FILES ) +endmacro ( XMLTO ) + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000000..efa4e400ec7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +# Minimal CMake build file +# Builds: +# - static library from lib directory +# - commandline executable +# - test suite +# - Qt GUI + +# To build with CMake: +# - install CMake 2.6 or later +# - $ cmake . +# - $ make + +cmake_minimum_required (VERSION 2.6) + +PROJECT(CPPCHECK) + +# 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 +# Instead lib code is included directly into cli and gui targets +# ADD_SUBDIRECTORY(lib) + +ADD_SUBDIRECTORY(cli) + +# Exclude tests from command line targets but include them to VS IDE targets. +# There is 'make check' -target for compiling and running tests from +# command line. +IF (MSVC_IDE) + ADD_SUBDIRECTORY(test) +ELSE (MSVC_IDE) + ADD_SUBDIRECTORY(test EXCLUDE_FROM_ALL) +ENDIF (MSVC_IDE) + +ADD_SUBDIRECTORY(gui) +ADD_SUBDIRECTORY(man) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt new file mode 100644 index 00000000000..0ea7021e786 --- /dev/null +++ b/cli/CMakeLists.txt @@ -0,0 +1,52 @@ +# Minimal CMake build file to build cppcheck command line executable + +SET(CHECKCLI_HDRS + cppcheckexecutor.h + threadexecutor.h +) + +SET(CHECKCLI_SRCS + cppcheckexecutor.cpp + threadexecutor.cpp + main.cpp +) + +# Add Windows resource file +if (WIN32) + SET(CHECKCLI_HDRS + ${CHECKCLI_HDRS} + resource.h + ) + + SET(CHECKCLI_SRCS + ${CHECKCLI_SRCS} + cppcheck.rc + ) +endif (WIN32) + +# Libraries to link +#set(CHECK_LIBS +# checklib +#) + +aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) + +# Windows needs additional shlwapi library +if (WIN32 AND NOT CYGWIN) +set(CHECK_LIBS + ${CHECK_LIBS} + shlwapi +) +endif (WIN32 AND NOT CYGWIN) + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS + ${CMAKE_CXX_FLAGS} + "-Wall -Wextra -pedantic" + ) +endif (CMAKE_COMPILER_IS_GNUCXX) + +include_directories (${CPPCHECK_SOURCE_DIR}/lib) +ADD_EXECUTABLE(../cppcheck ${CHECKCLI_SRCS} ${CHECKCLI_HDRS} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(cppcheck ${CHECK_LIBS}) + diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt new file mode 100644 index 00000000000..0fb32182e04 --- /dev/null +++ b/gui/CMakeLists.txt @@ -0,0 +1,141 @@ +# Minimal CMake build file to build cppcheck Qt GUI + +# find and setup Qt4 for this project +find_package(Qt4) + +IF(QT4_FOUND) + +# Add needed Qt modules +set(QT_USE_QTMAIN TRUE) +set(QT_USE_QTXML TRUE) +include(${QT_USE_FILE}) + +include_directories (${CPPCHECK_SOURCE_DIR}/lib) +# Generated files (in build directory) need to know gui directory +include_directories (${CPPCHECK_SOURCE_DIR}/gui) + +# Header files - listed for mocking +SET(CHECK_HEADERS + aboutdialog.h + applicationdialog.h + applicationlist.h + checkthread.h + common.h + csvreport.h + fileviewdialog.h + mainwindow.h + projectfile.h + report.h + resultstree.h + resultsview.h + settingsdialog.h + threadhandler.h + threadresult.h + translationhandler.h + txtreport.h + xmlreport.h +) + +# Source files +SET(CHECKGUI_SRCS + aboutdialog.cpp + applicationdialog.cpp + applicationlist.cpp + checkthread.cpp + csvreport.cpp + fileviewdialog.cpp + main.cpp + mainwindow.cpp + projectfile.cpp + report.cpp + resultstree.cpp + resultsview.cpp + settingsdialog.cpp + threadhandler.cpp + threadresult.cpp + translationhandler.cpp + txtreport.cpp + xmlreport.cpp +) + +# Add Windows resource file +if (WIN32) + SET(CHECKGUI_SRCS + ${CHECKGUI_SRCS} + cppcheck-gui.rc + ) +endif (WIN32) + +# UI files +SET(CHECK_UIS + about.ui + application.ui + file.ui + main.ui + resultsview.ui + settings.ui +) + +# Translation files +SET(CHECK_TRANS + cppcheck_de.ts + cppcheck_fi.ts + cppcheck_pl.ts + cppcheck_se.ts + cppcheck_en.ts + cppcheck_nl.ts + cppcheck_ru.ts +) + +SET(CHECK_RCCS gui.qrc) + +aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) + +# Libraries to link +#set(CHECK_LIBS +# checklib +#) + +# Windows needs additional shlwapi library +if (WIN32 AND NOT CYGWIN) +set(CHECK_LIBS + ${CHECK_LIBS} + shlwapi + htmlhelp +) +endif (WIN32 AND NOT CYGWIN) + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS + ${CMAKE_CXX_FLAGS} + "-Wall" + ) +endif (CMAKE_COMPILER_IS_GNUCXX) + +# Generate rules for building source files from the resources +QT4_ADD_RESOURCES(CHECK_RCC_SRCS ${CHECK_RCCS}) + +# Process UI files +QT4_WRAP_UI(CHECK_UIS_H ${CHECK_UIS}) + +# Mock header files +QT4_WRAP_CPP(CHECK_MOC_SRCS ${CHECK_HEADERS}) + +# add translations ... +QT4_ADD_TRANSLATION(CHECK_QM ${CHECK_TRANS}) + +# Create folders for Visual Studio IDE +SOURCE_GROUP("Header Files" FILES ${CHECK_HEADERS}) +SOURCE_GROUP("Ui Files" ".ui$") +SOURCE_GROUP("Moc Files" "moc_.*cxx$") + +# Include binary directory where code from UI files gets created +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +ADD_EXECUTABLE(gui WIN32 ${CHECKGUI_SRCS} ${CHECK_MOC_SRCS} ${CHECK_HEADERS} + ${CHECK_UIS_H} ${CHECK_RCC_SRCS} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(gui ${CHECK_LIBS} ${QT_LIBRARIES}) + +ELSE(QT4_FOUND) +message("GUI not built since QT4 not found.") +ENDIF(QT4_FOUND) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 00000000000..1f181a5f28d --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,61 @@ +# Minimal CMake build file to build static cppcheck library +# This static library is used to build executables: +# - cli +# - tests +# - Qt GUI + +SET(CHECKLIB_HDRS + check.h + checkautovariables.h + checkbufferoverrun.h + checkclass.h + checkdangerousfunctions.h + checkexceptionsafety.h + checkheaders.h + checkmemoryleak.h + checkother.h + checkstl.h + checkunusedfunctions.h + classinfo.h + cppcheck.h + errorlogger.h + executionpath.h + filelister.h + mathlib.h + preprocessor.h + settings.h + token.h + tokenize.h +) + +SET(CHECKLIB_SRCS + checkautovariables.cpp + checkbufferoverrun.cpp + checkclass.cpp + checkdangerousfunctions.cpp + checkexceptionsafety.cpp + checkheaders.cpp + checkmemoryleak.cpp + checkother.cpp + checkstl.cpp + checkunusedfunctions.cpp + cppcheck.cpp + errorlogger.cpp + executionpath.cpp + filelister.cpp + mathlib.cpp + preprocessor.cpp + settings.cpp + token.cpp + tokenize.cpp +) + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS + ${CMAKE_CXX_FLAGS} + "-Wall -Wextra -pedantic" + ) +endif (CMAKE_COMPILER_IS_GNUCXX) + +ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS} ${CHECKLIB_HDRS}) + diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000000..87a0906ab2a --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,65 @@ +# Minimal CMake build file to build cppcheck test suite + +SET(CHECKTEST_HDRS + testsuite.h +) + +SET(CHECKTEST_SRCS + testmemleak.cpp + testother.cpp + testpreprocessor.cpp + testautovariables.cpp + testredundantif.cpp + testbufferoverrun.cpp + testrunner.cpp + testcharvar.cpp + testsimplifytokens.cpp + testclass.cpp + teststl.cpp + testconstructors.cpp + testsuite.cpp + testcppcheck.cpp + testdangerousfunctions.cpp + testtoken.cpp + testdivision.cpp + testtokenize.cpp + testexceptionsafety.cpp + testunusedfunctions.cpp + testfilelister.cpp + testunusedprivfunc.cpp + testincompletestatement.cpp + testunusedvar.cpp + testmathlib.cpp +) + +aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) + +# Libraries to link +#set(CHECK_LIBS +# checklib +#) + +# Windows needs additional shlwapi library +if (WIN32 AND NOT CYGWIN) +set(CHECK_LIBS + ${CHECK_LIBS} + shlwapi +) +endif (WIN32 AND NOT CYGWIN) + +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS + ${CMAKE_CXX_FLAGS} + "-Wall -Wextra -pedantic" + ) +endif (CMAKE_COMPILER_IS_GNUCXX) + +include_directories (${CPPCHECK_SOURCE_DIR}/lib) +ADD_EXECUTABLE(test ${CHECKTEST_SRCS} ${CHECKTEST_HDRS} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(test ${CHECK_LIBS}) + +# Add custom 'make check' -target +# It compiles and runs tests +add_custom_target(check COMMAND test) +add_dependencies(check test) + From 12c800c5849d2ec9083c82093119e745d3d10eb3 Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Sun, 23 May 2010 21:50:22 +0300 Subject: [PATCH 02/18] CMake: Add some missing files. --- lib/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 1f181a5f28d..eefeac42112 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -21,6 +21,8 @@ SET(CHECKLIB_HDRS errorlogger.h executionpath.h filelister.h + filelister_unix.h + filelister_win32.h mathlib.h preprocessor.h settings.h @@ -43,6 +45,8 @@ SET(CHECKLIB_SRCS errorlogger.cpp executionpath.cpp filelister.cpp + filelister_unix.cpp + filelister_win32.cpp mathlib.cpp preprocessor.cpp settings.cpp From 57b0794860cc250d4221acf9d272e26a0cc4fd06 Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Fri, 9 Jul 2010 19:33:27 +0300 Subject: [PATCH 03/18] CMake: Fix link path. --- cli/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 0ea7021e786..756d7670a42 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -48,5 +48,5 @@ endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) ADD_EXECUTABLE(../cppcheck ${CHECKCLI_SRCS} ${CHECKCLI_HDRS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(cppcheck ${CHECK_LIBS}) +TARGET_LINK_LIBRARIES(../cppcheck ${CHECK_LIBS}) From 2469313157fae798f0ac07cd5a40c1c6c8da86b0 Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Sun, 11 Jul 2010 17:47:12 +0300 Subject: [PATCH 04/18] CMake: Update gcc warning flags. --- cli/CMakeLists.txt | 2 +- lib/CMakeLists.txt | 2 +- test/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 756d7670a42..54830ab0355 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -42,7 +42,7 @@ endif (WIN32 AND NOT CYGWIN) if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic" + "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" ) endif (CMAKE_COMPILER_IS_GNUCXX) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index eefeac42112..8286fb013f9 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -57,7 +57,7 @@ SET(CHECKLIB_SRCS if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic" + "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" ) endif (CMAKE_COMPILER_IS_GNUCXX) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 87a0906ab2a..a2eae30cf05 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -50,7 +50,7 @@ endif (WIN32 AND NOT CYGWIN) if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic" + "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" ) endif (CMAKE_COMPILER_IS_GNUCXX) From 3d3dc7e98a6063f27d223e19c8f7ae25ecbdeca9 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sat, 29 Jan 2011 15:47:51 +0100 Subject: [PATCH 05/18] Bug #2524: Addition of CMake build files - correction for flags setting Additional compilation flags were passed to the command "set" as a second parameter. This had the effect that the passed parameters were converted to a CMake list. The variable "CMAKE_CXX_FLAGS" got an unwanted semicolon. These flags are handled by a single string now. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 5 +---- gui/CMakeLists.txt | 5 +---- lib/CMakeLists.txt | 5 +---- test/CMakeLists.txt | 5 +---- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 54830ab0355..8912329adca 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -40,10 +40,7 @@ set(CHECK_LIBS endif (WIN32 AND NOT CYGWIN) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" - ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 0fb32182e04..b83f0d448c9 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -106,10 +106,7 @@ set(CHECK_LIBS endif (WIN32 AND NOT CYGWIN) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS} - "-Wall" - ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") endif (CMAKE_COMPILER_IS_GNUCXX) # Generate rules for building source files from the resources diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 8286fb013f9..fb9d1b9dde3 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -55,10 +55,7 @@ SET(CHECKLIB_SRCS ) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" - ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS} ${CHECKLIB_HDRS}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a2eae30cf05..063bbf87dae 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -48,10 +48,7 @@ set(CHECK_LIBS endif (WIN32 AND NOT CYGWIN) if (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS - ${CMAKE_CXX_FLAGS} - "-Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual" - ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) From 6bd3651786e5e059c1458424476383e820b2a411 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Tue, 1 Mar 2011 20:00:29 +0100 Subject: [PATCH 06/18] Bug #2524: Addition of CMake build files - deletion of unneeded variables Some header file names were assigned to CMake variables. Some of them were not needed to be mentioned explicitly because such dependencies will be automatically determined by the build system. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 13 +------------ lib/CMakeLists.txt | 29 +---------------------------- test/CMakeLists.txt | 7 +------ 3 files changed, 3 insertions(+), 46 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 8912329adca..daf55b015fa 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,10 +1,5 @@ # Minimal CMake build file to build cppcheck command line executable -SET(CHECKCLI_HDRS - cppcheckexecutor.h - threadexecutor.h -) - SET(CHECKCLI_SRCS cppcheckexecutor.cpp threadexecutor.cpp @@ -13,11 +8,6 @@ SET(CHECKCLI_SRCS # Add Windows resource file if (WIN32) - SET(CHECKCLI_HDRS - ${CHECKCLI_HDRS} - resource.h - ) - SET(CHECKCLI_SRCS ${CHECKCLI_SRCS} cppcheck.rc @@ -44,6 +34,5 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) -ADD_EXECUTABLE(../cppcheck ${CHECKCLI_SRCS} ${CHECKCLI_HDRS} ${LIB_SRCS}) +ADD_EXECUTABLE(../cppcheck ${CHECKCLI_SRCS} ${LIB_SRCS}) TARGET_LINK_LIBRARIES(../cppcheck ${CHECK_LIBS}) - diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index fb9d1b9dde3..6a8b63eea73 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -4,32 +4,6 @@ # - tests # - Qt GUI -SET(CHECKLIB_HDRS - check.h - checkautovariables.h - checkbufferoverrun.h - checkclass.h - checkdangerousfunctions.h - checkexceptionsafety.h - checkheaders.h - checkmemoryleak.h - checkother.h - checkstl.h - checkunusedfunctions.h - classinfo.h - cppcheck.h - errorlogger.h - executionpath.h - filelister.h - filelister_unix.h - filelister_win32.h - mathlib.h - preprocessor.h - settings.h - token.h - tokenize.h -) - SET(CHECKLIB_SRCS checkautovariables.cpp checkbufferoverrun.cpp @@ -58,5 +32,4 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS} ${CHECKLIB_HDRS}) - +ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 063bbf87dae..43556a4eecf 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,9 +1,5 @@ # Minimal CMake build file to build cppcheck test suite -SET(CHECKTEST_HDRS - testsuite.h -) - SET(CHECKTEST_SRCS testmemleak.cpp testother.cpp @@ -52,11 +48,10 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) -ADD_EXECUTABLE(test ${CHECKTEST_SRCS} ${CHECKTEST_HDRS} ${LIB_SRCS}) +ADD_EXECUTABLE(test ${CHECKTEST_SRCS} ${LIB_SRCS}) TARGET_LINK_LIBRARIES(test ${CHECK_LIBS}) # Add custom 'make check' -target # It compiles and runs tests add_custom_target(check COMMAND test) add_dependencies(check test) - From f1dfbf6cea3a8cb742ac870e88f3c3d822b80ea1 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Wed, 2 Mar 2011 17:00:26 +0100 Subject: [PATCH 07/18] Bug #2524: Addition of CMake build files - merge of checks for Windows A few checks for the Windows environment were merged to stress their relationship. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 24 +++++++++--------------- gui/CMakeLists.txt | 25 +++++++++---------------- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index daf55b015fa..e0ada25871c 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -6,14 +6,6 @@ SET(CHECKCLI_SRCS main.cpp ) -# Add Windows resource file -if (WIN32) - SET(CHECKCLI_SRCS - ${CHECKCLI_SRCS} - cppcheck.rc - ) -endif (WIN32) - # Libraries to link #set(CHECK_LIBS # checklib @@ -21,13 +13,15 @@ endif (WIN32) aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) -# Windows needs additional shlwapi library -if (WIN32 AND NOT CYGWIN) -set(CHECK_LIBS - ${CHECK_LIBS} - shlwapi -) -endif (WIN32 AND NOT CYGWIN) +if(WIN32) + # Add Windows resource file + set(CHECKCLI_SRCS ${CHECKCLI_SRCS} cppcheck.rc) + + if(NOT CYGWIN) + # Windows needs additional shlwapi library. + set(CHECK_LIBS ${CHECK_LIBS} shlwapi) + endif() +endif() if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index b83f0d448c9..3a669cfb168 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -58,14 +58,6 @@ SET(CHECKGUI_SRCS xmlreport.cpp ) -# Add Windows resource file -if (WIN32) - SET(CHECKGUI_SRCS - ${CHECKGUI_SRCS} - cppcheck-gui.rc - ) -endif (WIN32) - # UI files SET(CHECK_UIS about.ui @@ -96,14 +88,15 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) # checklib #) -# Windows needs additional shlwapi library -if (WIN32 AND NOT CYGWIN) -set(CHECK_LIBS - ${CHECK_LIBS} - shlwapi - htmlhelp -) -endif (WIN32 AND NOT CYGWIN) +if(WIN32) + # Add Windows resource file + set(CHECKGUI_SRCS ${CHECKGUI_SRCS} cppcheck-gui.rc) + + if(NOT CYGWIN) + # Windows needs additional shlwapi library. + set(CHECK_LIBS ${CHECK_LIBS} shlwapi htmlhelp) + endif() +endif() if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") From 1c4124a3a3365efdd9dd57cc69db675da7ed7937 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Wed, 2 Mar 2011 18:40:22 +0100 Subject: [PATCH 08/18] Bug #2524: Addition of CMake build files - use of module "FindXmlTo" A few build scripts were updated for the use of the module "FindXmlTo.cmake". Signed-off-by: Markus Elfring --- CMakeLists.txt | 2 + cmake/modules/FindXmlTo.cmake | 105 ++++++++++++++++++++++++++++++++++ man/CMakeLists.txt | 28 ++++----- 3 files changed, 118 insertions(+), 17 deletions(-) create mode 100644 cmake/modules/FindXmlTo.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index efa4e400ec7..1c119d0bebf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,8 @@ cmake_minimum_required (VERSION 2.6) PROJECT(CPPCHECK) +set(CMAKE_MODULE_PATH "${CPPCHECK_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) + # 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/cmake/modules/FindXmlTo.cmake b/cmake/modules/FindXmlTo.cmake new file mode 100644 index 00000000000..ae9fd6fda72 --- /dev/null +++ b/cmake/modules/FindXmlTo.cmake @@ -0,0 +1,105 @@ +# Is Hendrik Sattler the original author of the following script? +# http://cmake.org/pipermail/cmake/2007-April/013545.html + +# - Convert XML docBook files to various formats +# This will convert XML docBook files to various formats like: +# man html txt dvi ps pdf +# macro XMLTO(outfiles infiles... MODES modes...) + +set ( XmlTo_FOUND false ) + +find_program ( XMLTO_EXECUTABLE NAMES xmlto + DOC "path to the xmlto docbook xslt frontend" ) + +if ( XMLTO_EXECUTABLE ) + set ( XmlTo_FOUND true ) + + if ( NOT XmlTo_FIND_QUIETLY ) + message ( STATUS "Found ${XMLTO_EXECUTABLE}" ) + endif ( NOT XmlTo_FIND_QUIETLY ) +else ( XMLTO_EXECUTABLE ) + if ( XmlTo_FIND_REQUIRED ) + message ( FATAL_ERROR "The xmlto program was not found." ) + endif ( XmlTo_FIND_REQUIRED ) +endif ( XMLTO_EXECUTABLE ) + +macro ( _XMLTO_FILE outfiles mode) + #special settings + set ( XMLTO_FILEEXT_man 1 ) + set ( XMLTO_MODE_html xhtml-nochunks ) + + if ( NOT XMLTO_MODE_${mode}) + set ( XMLTO_MODE_${mode} ${mode} ) + endif ( NOT XMLTO_MODE_${mode} ) + if ( NOT XMLTO_FILEEXT_${mode} ) + set ( XMLTO_FILEEXT_${mode} ${mode} ) + endif ( NOT XMLTO_FILEEXT_${mode} ) + + foreach ( dbFile ${ARGN} ) + #TODO: set XMLTO_FILEEXT_man to value from + if ( "${mode}" STREQUAL "man" ) + file ( READ "${dbFile}" _DB_FILE_CONTENTS ) + string ( REGEX MATCH "[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" ) + string ( REGEX REPLACE "^" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" ) + string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" ) + endif ( "${mode}" STREQUAL "man" ) + + get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH ) + get_filename_component ( dbFileWE ${dbFile} NAME_WE ) + get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE ) + + add_custom_command ( + OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} + COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${CMAKE_CURRENT_BINARY_DIR} + ${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}" + MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile} + VERBATIM + ) + + set ( ${outfiles} + ${${outfiles}} + ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} + ) + endforeach ( dbFile ) +endmacro ( _XMLTO_FILE outfiles ) + +macro ( XMLTO ) + set ( XMLTO_MODES ) + set ( XMLTO_FILES ) + set ( XMLTO_HAS_MODES false ) + set ( XMLTO_ADD_DEFAULT false ) + foreach ( arg ${ARGN} ) + if ( ${arg} STREQUAL "MODES" ) + set ( XMLTO_HAS_MODES true ) + elseif ( ${arg} STREQUAL "ALL" ) + set ( XMLTO_ADD_DEFAULT true ) + else ( ${arg} STREQUAL "MODES" ) + if ( XMLTO_HAS_MODES ) + set ( XMLTO_MODES ${XMLTO_MODES} ${arg} ) + else ( XMLTO_HAS_MODES ) + set ( XMLTO_FILES ${XMLTO_FILES} ${arg} ) + endif ( XMLTO_HAS_MODES ) + endif ( ${arg} STREQUAL "MODES" ) + endforeach ( arg ${ARGN} ) + if ( NOT XMLTO_MODES ) + set ( XMLTO_MODES html ) + endif ( NOT XMLTO_MODES ) + + foreach ( mode ${XMLTO_MODES} ) + _xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} ) + if ( XMLTO_ADD_DEFAULT ) + add_custom_target ( ${mode} ALL + DEPENDS ${XMLTO_FILES_${mode}} + VERBATIM + ) + else ( XMLTO_ADD_DEFAULT ) + add_custom_target ( ${mode} + DEPENDS ${XMLTO_FILES_${mode}} + VERBATIM + ) + endif ( XMLTO_ADD_DEFAULT ) + endforeach ( mode ) + + set ( XMLTO_MODES ) + set ( XMLTO_FILES ) +endmacro ( XMLTO ) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 3a6ff0e29ca..33cf79fce77 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -1,22 +1,16 @@ # Build Docbook manual # Run 'make html' to build manual -# Build manual in Linux/Cygwin - xmlto is not available in Windows +set(DOC_TARGETS "html") -SET(DOC_TARGETS "html") +if(CYGWIN) + # Build also htmlhelp in Cygwin - this can be used to build + # htmlhelp manual for Windows. + set(DOC_TARGETS ${DOC_TARGETS} "htmlhelp") +endif() -# Build also htmlhelp in Cygwin - this can be used to build -# htmlhelp manual for Windows. - -IF (CYGWIN) - SET(DOC_TARGETS - ${DOC_TARGETS} - "htmlhelp" - ) -ENDIF(CYGWIN) - -IF (UNIX OR CYGWIN) - #macro XMLTO(outfiles infiles... MODES modes...) - INCLUDE("../CMake/xmlto.cmake") - XMLTO("" "manual.docbook" MODES ${DOC_TARGETS}) -ENDIF (UNIX OR CYGWIN) +if(UNIX OR CYGWIN) + # Build manual in Linux/Cygwin - xmlto is not available in Windows + find_package(XmlTo REQUIRED) + xmlto("" "manual.docbook" MODES ${DOC_TARGETS}) +endif() From 031ebde147aafb81d2c393f3ef0e7e6832b47715 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Fri, 4 Mar 2011 20:41:07 +0100 Subject: [PATCH 09/18] Bug #2524: Addition of CMake build files - use of module "FindPCRE" A few build scripts were updated for the use of the module "FindPCRE.cmake" and corresponding variables so that the software can work with the programming interface "Perl-compatible regular expressions". Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 1 + cmake/modules/FindPCRE.cmake | 44 ++++++++++++++++++++++++++++++++++++ gui/CMakeLists.txt | 13 ++++++----- lib/CMakeLists.txt | 3 +++ test/CMakeLists.txt | 5 ++-- 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 cmake/modules/FindPCRE.cmake diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index e0ada25871c..e9b3fa37cd5 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,4 +1,5 @@ # Minimal CMake build file to build cppcheck command line executable +find_package(PCRE REQUIRED) SET(CHECKCLI_SRCS cppcheckexecutor.cpp diff --git a/cmake/modules/FindPCRE.cmake b/cmake/modules/FindPCRE.cmake new file mode 100644 index 00000000000..f26ba1681e6 --- /dev/null +++ b/cmake/modules/FindPCRE.cmake @@ -0,0 +1,44 @@ +# - Try to find the PCRE regular expression library +# Once done this will define +# +# PCRE_FOUND - system has the PCRE library +# PCRE_INCLUDE_DIR - the PCRE include directory +# PCRE_LIBRARIES - The libraries needed to use PCRE + +# Copyright (c) 2006, Alexander Neundorf, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +if (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY) + # Already in cache, be silent + set(PCRE_FIND_QUIETLY TRUE) +endif (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY) + + +if (NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + find_package(PkgConfig) + + pkg_check_modules(PC_PCRE QUIET libpcre) + + set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER}) + +endif (NOT WIN32) + +find_path(PCRE_INCLUDE_DIR pcre.h + HINTS ${PC_PCRE_INCLUDEDIR} ${PC_PCRE_INCLUDE_DIRS} + PATH_SUFFIXES pcre) + +find_library(PCRE_PCRE_LIBRARY NAMES pcre pcred HINTS ${PC_PCRE_LIBDIR} ${PC_PCRE_LIBRARY_DIRS}) + +find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix pcreposixd HINTS ${PC_PCRE_LIBDIR} ${PC_PCRE_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR PCRE_PCRE_LIBRARY PCRE_PCREPOSIX_LIBRARY ) + +set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY} ${PCRE_PCREPOSIX_LIBRARY}) + +mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCREPOSIX_LIBRARY PCRE_PCRE_LIBRARY) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 3a669cfb168..e0c9e6e784d 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,4 +1,5 @@ # Minimal CMake build file to build cppcheck Qt GUI +find_package(PCRE REQUIRED) # find and setup Qt4 for this project find_package(Qt4) @@ -10,9 +11,12 @@ set(QT_USE_QTMAIN TRUE) set(QT_USE_QTXML TRUE) include(${QT_USE_FILE}) -include_directories (${CPPCHECK_SOURCE_DIR}/lib) +include_directories("${CPPCHECK_SOURCE_DIR}/lib" # Generated files (in build directory) need to know gui directory -include_directories (${CPPCHECK_SOURCE_DIR}/gui) + "${CPPCHECK_SOURCE_DIR}/gui" +# Include binary directory where code from UI files gets created + "${CMAKE_CURRENT_BINARY_DIR}" + "${PCRE_INCLUDE_DIR}") # Header files - listed for mocking SET(CHECK_HEADERS @@ -119,12 +123,9 @@ SOURCE_GROUP("Header Files" FILES ${CHECK_HEADERS}) SOURCE_GROUP("Ui Files" ".ui$") SOURCE_GROUP("Moc Files" "moc_.*cxx$") -# Include binary directory where code from UI files gets created -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - ADD_EXECUTABLE(gui WIN32 ${CHECKGUI_SRCS} ${CHECK_MOC_SRCS} ${CHECK_HEADERS} ${CHECK_UIS_H} ${CHECK_RCC_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(gui ${CHECK_LIBS} ${QT_LIBRARIES}) +TARGET_LINK_LIBRARIES(gui ${CHECK_LIBS} ${PCRE_LIBRARIES} ${QT_LIBRARIES}) ELSE(QT4_FOUND) message("GUI not built since QT4 not found.") diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 6a8b63eea73..c4fe238807f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -3,6 +3,8 @@ # - cli # - tests # - Qt GUI +find_package(PCRE REQUIRED) +include_directories("${PCRE_INCLUDE_DIR}") SET(CHECKLIB_SRCS checkautovariables.cpp @@ -33,3 +35,4 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS}) +target_link_libraries(checklib ${PCRE_LIBRARIES}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 43556a4eecf..31fc25b669c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,5 @@ # Minimal CMake build file to build cppcheck test suite +find_package(PCRE REQUIRED) SET(CHECKTEST_SRCS testmemleak.cpp @@ -47,9 +48,9 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -include_directories (${CPPCHECK_SOURCE_DIR}/lib) +include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}") ADD_EXECUTABLE(test ${CHECKTEST_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(test ${CHECK_LIBS}) +TARGET_LINK_LIBRARIES(test ${CHECK_LIBS} ${PCRE_LIBRARIES}) # Add custom 'make check' -target # It compiles and runs tests From 1d6a183e12f06c859425a389c7e9bc5c280006a3 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Fri, 4 Mar 2011 22:00:59 +0100 Subject: [PATCH 10/18] Bug #2524: Addition of CMake build files - deletion of path selection "../" for CLI executable The path selection "../" was deleted for the executable target in the build script for the command line interface. File name conflicts can be avoided by proper out-of-source builds. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index e9b3fa37cd5..04b568355a3 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -29,5 +29,5 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) -ADD_EXECUTABLE(../cppcheck ${CHECKCLI_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(../cppcheck ${CHECK_LIBS}) +ADD_EXECUTABLE(cppcheck ${CHECKCLI_SRCS} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(cppcheck ${CHECK_LIBS}) From 106ec9b3c00d26be0384d1c62678ee793ea6160e Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sat, 5 Mar 2011 18:48:16 +0100 Subject: [PATCH 11/18] Bug #2524: Addition of CMake build files - renaming of some variables Some variables were renamed in the build scripts to make their meaning clearer. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 10 +++++----- gui/CMakeLists.txt | 30 ++++++++++++++---------------- test/CMakeLists.txt | 10 ++++------ 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 04b568355a3..904e4be22c3 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,7 +1,7 @@ # Minimal CMake build file to build cppcheck command line executable find_package(PCRE REQUIRED) -SET(CHECKCLI_SRCS +SET(CPPCHECK_CLI_SOURCES cppcheckexecutor.cpp threadexecutor.cpp main.cpp @@ -16,11 +16,11 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) if(WIN32) # Add Windows resource file - set(CHECKCLI_SRCS ${CHECKCLI_SRCS} cppcheck.rc) + set(CPPCHECK_CLI_SOURCES ${CPPCHECK_CLI_SOURCES} cppcheck.rc) if(NOT CYGWIN) # Windows needs additional shlwapi library. - set(CHECK_LIBS ${CHECK_LIBS} shlwapi) + set(CPPCHECK_CLI_LINK_LIBRARIES ${CPPCHECK_CLI_LINK_LIBRARIES} shlwapi) endif() endif() @@ -29,5 +29,5 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) -ADD_EXECUTABLE(cppcheck ${CHECKCLI_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(cppcheck ${CHECK_LIBS}) +ADD_EXECUTABLE(cppcheck ${CPPCHECK_CLI_SOURCES} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES}) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index e0c9e6e784d..5106a074c2b 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -19,7 +19,7 @@ include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}") # Header files - listed for mocking -SET(CHECK_HEADERS +SET(CPPCHECK_GUI_HEADERS aboutdialog.h applicationdialog.h applicationlist.h @@ -41,7 +41,7 @@ SET(CHECK_HEADERS ) # Source files -SET(CHECKGUI_SRCS +SET(CPPCHECK_GUI_SOURCES aboutdialog.cpp applicationdialog.cpp applicationlist.cpp @@ -63,7 +63,7 @@ SET(CHECKGUI_SRCS ) # UI files -SET(CHECK_UIS +SET(CPPCHECK_UIS about.ui application.ui file.ui @@ -73,7 +73,7 @@ SET(CHECK_UIS ) # Translation files -SET(CHECK_TRANS +SET(CPPCHECK_GUI_TRANS cppcheck_de.ts cppcheck_fi.ts cppcheck_pl.ts @@ -83,8 +83,6 @@ SET(CHECK_TRANS cppcheck_ru.ts ) -SET(CHECK_RCCS gui.qrc) - aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) # Libraries to link @@ -94,11 +92,11 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) if(WIN32) # Add Windows resource file - set(CHECKGUI_SRCS ${CHECKGUI_SRCS} cppcheck-gui.rc) + set(CPPCHECK_GUI_SOURCES ${CPPCHECK_GUI_SOURCES} cppcheck-gui.rc) if(NOT CYGWIN) # Windows needs additional shlwapi library. - set(CHECK_LIBS ${CHECK_LIBS} shlwapi htmlhelp) + set(CPPCHECK_GUI_LINK_LIBRARIES ${CPPCHECK_GUI_LINK_LIBRARIES} shlwapi htmlhelp) endif() endif() @@ -107,25 +105,25 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) # Generate rules for building source files from the resources -QT4_ADD_RESOURCES(CHECK_RCC_SRCS ${CHECK_RCCS}) +QT4_ADD_RESOURCES(CPPCHECK_RCC_SOURCES gui.qrc) # Process UI files -QT4_WRAP_UI(CHECK_UIS_H ${CHECK_UIS}) +QT4_WRAP_UI(CPPCHECK_FORMS_HEADERS ${CPPCHECK_UIS}) # Mock header files -QT4_WRAP_CPP(CHECK_MOC_SRCS ${CHECK_HEADERS}) +QT4_WRAP_CPP(CPPCHECK_MOC_SOURCES ${CPPCHECK_GUI_HEADERS}) # add translations ... -QT4_ADD_TRANSLATION(CHECK_QM ${CHECK_TRANS}) +QT4_ADD_TRANSLATION(CPPCHECK_QM ${CPPCHECK_GUI_TRANS}) # Create folders for Visual Studio IDE -SOURCE_GROUP("Header Files" FILES ${CHECK_HEADERS}) +SOURCE_GROUP("Header Files" FILES ${CPPCHECK_GUI_HEADERS}) SOURCE_GROUP("Ui Files" ".ui$") SOURCE_GROUP("Moc Files" "moc_.*cxx$") -ADD_EXECUTABLE(gui WIN32 ${CHECKGUI_SRCS} ${CHECK_MOC_SRCS} ${CHECK_HEADERS} - ${CHECK_UIS_H} ${CHECK_RCC_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(gui ${CHECK_LIBS} ${PCRE_LIBRARIES} ${QT_LIBRARIES}) +ADD_EXECUTABLE(gui WIN32 ${CPPCHECK_GUI_SOURCES} ${CPPCHECK_MOC_SOURCES} + ${CPPCHECK_FORMS_HEADERS} ${CPPCHECK_RCC_SOURCES} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(gui ${CPPCHECK_GUI_LINK_LIBRARIES} ${PCRE_LIBRARIES} ${QT_LIBRARIES}) ELSE(QT4_FOUND) message("GUI not built since QT4 not found.") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 31fc25b669c..7e57753e7c8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,7 @@ # Minimal CMake build file to build cppcheck test suite find_package(PCRE REQUIRED) -SET(CHECKTEST_SRCS +SET(CPPCHECK_TEST_SOURCES testmemleak.cpp testother.cpp testpreprocessor.cpp @@ -38,9 +38,7 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) # Windows needs additional shlwapi library if (WIN32 AND NOT CYGWIN) -set(CHECK_LIBS - ${CHECK_LIBS} - shlwapi + set(CPPCHECK_TEST_LINK_LIBRARIES ${CPPCHECK_TEST_LINK_LIBRARIES} shlwapi ) endif (WIN32 AND NOT CYGWIN) @@ -49,8 +47,8 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}") -ADD_EXECUTABLE(test ${CHECKTEST_SRCS} ${LIB_SRCS}) -TARGET_LINK_LIBRARIES(test ${CHECK_LIBS} ${PCRE_LIBRARIES}) +ADD_EXECUTABLE(test ${CPPCHECK_TEST_SOURCES} ${LIB_SRCS}) +TARGET_LINK_LIBRARIES(test ${CPPCHECK_TEST_LINK_LIBRARIES} ${PCRE_LIBRARIES}) # Add custom 'make check' -target # It compiles and runs tests From 38827fe658fc6c4ac551bacbbdc15972af12a74e Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sat, 5 Mar 2011 19:00:22 +0100 Subject: [PATCH 12/18] Bug #2524: Addition of CMake build files - support for "QtHelp" The activation of Qt's help module was added to the build specification for the graphical user interface. Signed-off-by: Markus Elfring --- gui/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 5106a074c2b..64c1200d5c6 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -7,6 +7,7 @@ find_package(Qt4) IF(QT4_FOUND) # Add needed Qt modules +set(QT_USE_QTHELP TRUE) set(QT_USE_QTMAIN TRUE) set(QT_USE_QTXML TRUE) include(${QT_USE_FILE}) @@ -27,6 +28,7 @@ SET(CPPCHECK_GUI_HEADERS common.h csvreport.h fileviewdialog.h + helpwindow.h mainwindow.h projectfile.h report.h From dc52158b69bd8dfd938b9f07788b5c660a003748 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sun, 6 Mar 2011 14:30:41 +0100 Subject: [PATCH 13/18] Bug #2524: Addition of CMake build files - Bug #2445: Move filelister* to CLI Kimmo Varis reorganised a few source files because of his bug report "Move FileLister classes from LIB to CLI". https://sourceforge.net/apps/trac/cppcheck/ticket/2445 The CMake build scripts were updated for these changes. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 6 +++++- lib/CMakeLists.txt | 3 --- test/CMakeLists.txt | 18 +++++++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 904e4be22c3..88ef02dadf8 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -3,6 +3,7 @@ find_package(PCRE REQUIRED) SET(CPPCHECK_CLI_SOURCES cppcheckexecutor.cpp + filelister.cpp threadexecutor.cpp main.cpp ) @@ -16,12 +17,15 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) if(WIN32) # Add Windows resource file - set(CPPCHECK_CLI_SOURCES ${CPPCHECK_CLI_SOURCES} cppcheck.rc) + set(CPPCHECK_CLI_SOURCES ${CPPCHECK_CLI_SOURCES} filelister_win32.cpp + cppcheck.rc) if(NOT CYGWIN) # Windows needs additional shlwapi library. set(CPPCHECK_CLI_LINK_LIBRARIES ${CPPCHECK_CLI_LINK_LIBRARIES} shlwapi) endif() +else() + set(CPPCHECK_CLI_SOURCES ${CPPCHECK_CLI_SOURCES} filelister_unix.cpp) endif() if (CMAKE_COMPILER_IS_GNUCXX) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index c4fe238807f..92df3ea2a1c 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -20,9 +20,6 @@ SET(CHECKLIB_SRCS cppcheck.cpp errorlogger.cpp executionpath.cpp - filelister.cpp - filelister_unix.cpp - filelister_win32.cpp mathlib.cpp preprocessor.cpp settings.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7e57753e7c8..c642cae6dbf 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,6 +2,7 @@ find_package(PCRE REQUIRED) SET(CPPCHECK_TEST_SOURCES + "${CPPCHECK_SOURCE_DIR}/cli/filelister.cpp" testmemleak.cpp testother.cpp testpreprocessor.cpp @@ -36,11 +37,18 @@ aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) # checklib #) -# Windows needs additional shlwapi library -if (WIN32 AND NOT CYGWIN) - set(CPPCHECK_TEST_LINK_LIBRARIES ${CPPCHECK_TEST_LINK_LIBRARIES} shlwapi -) -endif (WIN32 AND NOT CYGWIN) +if(WIN32) + set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} + "${CPPCHECK_SOURCE_DIR}/cli/filelister_win32.cpp") + + if(NOT CYGWIN) + # Windows needs additional shlwapi library. + set(CPPCHECK_TEST_LINK_LIBRARIES ${CPPCHECK_TEST_LINK_LIBRARIES} shlwapi) + endif() +else() + set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} + "${CPPCHECK_SOURCE_DIR}/cli/filelister_unix.cpp") +endif() if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") From 46a6e8d49d231cde034ad47eb7050902fdd4e62d Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sun, 6 Mar 2011 15:15:23 +0100 Subject: [PATCH 14/18] Bug #2524: Addition of CMake build files - consistent use of Cppcheck's library sources Three build scripts used the command "aux_source_directory" while Cppcheck's library build script used the recommended way of listing the relevant source file names explicitly. This list of source file names was moved to a separate file which is referenced in the other scripts now. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 10 +++------- gui/CMakeLists.txt | 10 +++------- lib/CMakeLists.txt | 24 +++--------------------- lib/library_sources.cmake | 24 ++++++++++++++++++++++++ test/CMakeLists.txt | 10 +++------- 5 files changed, 36 insertions(+), 42 deletions(-) create mode 100644 lib/library_sources.cmake diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 88ef02dadf8..e403316bd6a 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -8,12 +8,8 @@ SET(CPPCHECK_CLI_SOURCES main.cpp ) -# Libraries to link -#set(CHECK_LIBS -# checklib -#) - -aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) +set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") +include("${CPPCHECK_LIB_DIR}library_sources.cmake") if(WIN32) # Add Windows resource file @@ -33,5 +29,5 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories (${CPPCHECK_SOURCE_DIR}/lib) -ADD_EXECUTABLE(cppcheck ${CPPCHECK_CLI_SOURCES} ${LIB_SRCS}) +add_executable(cppcheck ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) TARGET_LINK_LIBRARIES(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES}) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 64c1200d5c6..31359610f6d 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -85,12 +85,8 @@ SET(CPPCHECK_GUI_TRANS cppcheck_ru.ts ) -aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) - -# Libraries to link -#set(CHECK_LIBS -# checklib -#) +set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") +include("${CPPCHECK_LIB_DIR}library_sources.cmake") if(WIN32) # Add Windows resource file @@ -124,7 +120,7 @@ SOURCE_GROUP("Ui Files" ".ui$") SOURCE_GROUP("Moc Files" "moc_.*cxx$") ADD_EXECUTABLE(gui WIN32 ${CPPCHECK_GUI_SOURCES} ${CPPCHECK_MOC_SOURCES} - ${CPPCHECK_FORMS_HEADERS} ${CPPCHECK_RCC_SOURCES} ${LIB_SRCS}) + ${CPPCHECK_FORMS_HEADERS} ${CPPCHECK_RCC_SOURCES} ${CPPCHECK_LIB_SOURCES}) TARGET_LINK_LIBRARIES(gui ${CPPCHECK_GUI_LINK_LIBRARIES} ${PCRE_LIBRARIES} ${QT_LIBRARIES}) ELSE(QT4_FOUND) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 92df3ea2a1c..41c5a650667 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -6,30 +6,12 @@ find_package(PCRE REQUIRED) include_directories("${PCRE_INCLUDE_DIR}") -SET(CHECKLIB_SRCS - checkautovariables.cpp - checkbufferoverrun.cpp - checkclass.cpp - checkdangerousfunctions.cpp - checkexceptionsafety.cpp - checkheaders.cpp - checkmemoryleak.cpp - checkother.cpp - checkstl.cpp - checkunusedfunctions.cpp - cppcheck.cpp - errorlogger.cpp - executionpath.cpp - mathlib.cpp - preprocessor.cpp - settings.cpp - token.cpp - tokenize.cpp -) +set(CPPCHECK_LIB_DIR "") +include("${CPPCHECK_LIB_DIR}library_sources.cmake") if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -ADD_LIBRARY(checklib STATIC ${CHECKLIB_SRCS}) +add_library(checklib STATIC ${CPPCHECK_LIB_SOURCES}) target_link_libraries(checklib ${PCRE_LIBRARIES}) diff --git a/lib/library_sources.cmake b/lib/library_sources.cmake new file mode 100644 index 00000000000..84caa6bc86f --- /dev/null +++ b/lib/library_sources.cmake @@ -0,0 +1,24 @@ +set(CPPCHECK_LIB_SOURCES + "${CPPCHECK_LIB_DIR}checkautovariables.cpp" + "${CPPCHECK_LIB_DIR}checkbufferoverrun.cpp" + "${CPPCHECK_LIB_DIR}checkclass.cpp" + "${CPPCHECK_LIB_DIR}checkexceptionsafety.cpp" + "${CPPCHECK_LIB_DIR}checkmemoryleak.cpp" + "${CPPCHECK_LIB_DIR}checknullpointer.cpp" + "${CPPCHECK_LIB_DIR}checkobsoletefunctions.cpp" + "${CPPCHECK_LIB_DIR}checkother.cpp" + "${CPPCHECK_LIB_DIR}checkpostfixoperator.cpp" + "${CPPCHECK_LIB_DIR}checkstl.cpp" + "${CPPCHECK_LIB_DIR}checkuninitvar.cpp" + "${CPPCHECK_LIB_DIR}checkunusedfunctions.cpp" + "${CPPCHECK_LIB_DIR}cppcheck.cpp" + "${CPPCHECK_LIB_DIR}errorlogger.cpp" + "${CPPCHECK_LIB_DIR}executionpath.cpp" + "${CPPCHECK_LIB_DIR}mathlib.cpp" + "${CPPCHECK_LIB_DIR}path.cpp" + "${CPPCHECK_LIB_DIR}preprocessor.cpp" + "${CPPCHECK_LIB_DIR}settings.cpp" + "${CPPCHECK_LIB_DIR}symboldatabase.cpp" + "${CPPCHECK_LIB_DIR}timer.cpp" + "${CPPCHECK_LIB_DIR}token.cpp" + "${CPPCHECK_LIB_DIR}tokenize.cpp") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c642cae6dbf..c5a836d2e73 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -30,12 +30,8 @@ SET(CPPCHECK_TEST_SOURCES testmathlib.cpp ) -aux_source_directory(${CPPCHECK_SOURCE_DIR}/lib LIB_SRCS) - -# Libraries to link -#set(CHECK_LIBS -# checklib -#) +set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") +include("${CPPCHECK_LIB_DIR}library_sources.cmake") if(WIN32) set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} @@ -55,7 +51,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}") -ADD_EXECUTABLE(test ${CPPCHECK_TEST_SOURCES} ${LIB_SRCS}) +add_executable(test ${CPPCHECK_TEST_SOURCES} ${CPPCHECK_LIB_SOURCES}) TARGET_LINK_LIBRARIES(test ${CPPCHECK_TEST_LINK_LIBRARIES} ${PCRE_LIBRARIES}) # Add custom 'make check' -target From 265ea8e7dcea85df283b8354fc4d39bdfdaa06c1 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Sun, 6 Mar 2011 21:41:36 +0100 Subject: [PATCH 15/18] Bug #2524: Addition of CMake build files - support for "TinyXML" Source files were embedded into the Cppcheck project from the class library "TinyXML". The build specifications were adjusted accordingly. The TinyXML header file is referenced by a few source files without specification of a subdirectory now. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 10 ++++++++-- cli/cli.pro | 7 ++++--- cli/cmdlineparser.cpp | 2 +- cli/cppcheck.vcproj | 2 +- cli/cppcheck.vcxproj | 4 ++-- test/CMakeLists.txt | 11 +++++++++-- test/test.pro | 7 ++++--- test/test.vcproj | 4 ++-- test/test.vcxproj | 4 ++-- test/testcppcheck.cpp | 2 +- tools/dmake.cpp | 4 ++-- 11 files changed, 36 insertions(+), 21 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index e403316bd6a..dd90cf332ff 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,12 +1,17 @@ # Minimal CMake build file to build cppcheck command line executable find_package(PCRE REQUIRED) +set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") + SET(CPPCHECK_CLI_SOURCES cppcheckexecutor.cpp filelister.cpp threadexecutor.cpp main.cpp -) + "${TINYXML_INCLUDE_DIR}tinystr.cpp" + "${TINYXML_INCLUDE_DIR}tinyxml.cpp" + "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" + "${TINYXML_INCLUDE_DIR}tinyxmlparser.cpp") set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") include("${CPPCHECK_LIB_DIR}library_sources.cmake") @@ -28,6 +33,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -include_directories (${CPPCHECK_SOURCE_DIR}/lib) +include_directories(${CPPCHECK_SOURCE_DIR}/lib + "${TINYXML_INCLUDE_DIR}") add_executable(cppcheck ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) TARGET_LINK_LIBRARIES(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES}) diff --git a/cli/cli.pro b/cli/cli.pro index 85702b9fb0e..69f95826573 100644 --- a/cli/cli.pro +++ b/cli/cli.pro @@ -1,13 +1,14 @@ TEMPLATE = app TARGET = cppcheck DEPENDPATH += . -INCLUDEPATH += . ../lib +TINYXML_DIR = ../externals/tinyxml/ +INCLUDEPATH += . ../lib $${TINYXML_DIR} OBJECTS_DIR = temp CONFIG += warn_on CONFIG -= qt app_bundle -BASEPATH = ../externals/tinyxml/ -include($$PWD/../externals/tinyxml/tinyxml.pri) +BASEPATH = $${TINYXML_DIR} +include($$PWD/$${TINYXML_DIR}tinyxml.pri) BASEPATH = ../lib/ include($$PWD/../lib/lib.pri) diff --git a/cli/cmdlineparser.cpp b/cli/cmdlineparser.cpp index a333804a86c..3d13d2a19b0 100644 --- a/cli/cmdlineparser.cpp +++ b/cli/cmdlineparser.cpp @@ -28,7 +28,7 @@ #include "path.h" // xml is used in rules -#include "tinyxml/tinyxml.h" +#include "tinyxml.h" static void AddFilesToList(const std::string& FileList, std::vector& PathNames) { diff --git a/cli/cppcheck.vcproj b/cli/cppcheck.vcproj index 5413634750f..696b28aaab7 100755 --- a/cli/cppcheck.vcproj +++ b/cli/cppcheck.vcproj @@ -19,7 +19,7 @@ UseOfMfc="0"> - ".";"..\lib";"..\externals";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) + ".";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) -Zm200 -w34100 -w34189 %(AdditionalOptions) temp\ false @@ -84,7 +84,7 @@ - ".";"..\lib";"..\externals";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) + ".";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) -Zm200 -w34100 -w34189 %(AdditionalOptions) temp\ false diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c5a836d2e73..fef2e674de5 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,6 +1,8 @@ # Minimal CMake build file to build cppcheck test suite find_package(PCRE REQUIRED) +set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") + SET(CPPCHECK_TEST_SOURCES "${CPPCHECK_SOURCE_DIR}/cli/filelister.cpp" testmemleak.cpp @@ -28,7 +30,10 @@ SET(CPPCHECK_TEST_SOURCES testincompletestatement.cpp testunusedvar.cpp testmathlib.cpp -) + "${TINYXML_INCLUDE_DIR}tinystr.cpp" + "${TINYXML_INCLUDE_DIR}tinyxml.cpp" + "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" + "${TINYXML_INCLUDE_DIR}tinyxmlparser.cpp") set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") include("${CPPCHECK_LIB_DIR}library_sources.cmake") @@ -50,7 +55,9 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}") +include_directories("${CPPCHECK_SOURCE_DIR}/lib" + "${PCRE_INCLUDE_DIR}" + "${TINYXML_INCLUDE_DIR}") add_executable(test ${CPPCHECK_TEST_SOURCES} ${CPPCHECK_LIB_SOURCES}) TARGET_LINK_LIBRARIES(test ${CPPCHECK_TEST_LINK_LIBRARIES} ${PCRE_LIBRARIES}) diff --git a/test/test.pro b/test/test.pro index 0196222ed80..b5f1ccce660 100644 --- a/test/test.pro +++ b/test/test.pro @@ -2,7 +2,8 @@ TEMPLATE = app TARGET = test DEPENDPATH += . -INCLUDEPATH += . ../cli ../lib +TINYXML_DIR = ../externals/tinyxml/ +INCLUDEPATH += . ../cli ../lib $${TINYXML_DIR} OBJECTS_DIR = temp CONFIG += warn_on console CONFIG -= qt app_bundle @@ -10,8 +11,8 @@ win32 { LIBS += -lshlwapi } -BASEPATH = ../externals/tinyxml/ -include(../externals/tinyxml/tinyxml.pri) +BASEPATH = $${TINYXML_DIR} +include($${TINYXML_DIR}tinyxml.pri) BASEPATH = ../lib/ include(../lib/lib.pri) diff --git a/test/test.vcproj b/test/test.vcproj index 45d3f294825..e847bed4eb2 100755 --- a/test/test.vcproj +++ b/test/test.vcproj @@ -19,7 +19,7 @@ UseOfMfc="0"> - ".";"..\cli";"..\lib";"..\externals";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) + ".";"..\cli";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) -Zm200 -w34100 -w34189 %(AdditionalOptions) temp\ false @@ -84,7 +84,7 @@ - ".";"..\cli";"..\lib";"..\externals";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) + ".";"..\cli";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories) -Zm200 -w34100 -w34189 %(AdditionalOptions) temp\ false diff --git a/test/testcppcheck.cpp b/test/testcppcheck.cpp index af6e33883d7..8241a75fe05 100644 --- a/test/testcppcheck.cpp +++ b/test/testcppcheck.cpp @@ -32,7 +32,7 @@ #include // use tinyxml with STL -#include "tinyxml/tinyxml.h" +#include "tinyxml.h" extern std::ostringstream errout; extern std::ostringstream output; diff --git a/tools/dmake.cpp b/tools/dmake.cpp index 0ff33c09938..66681fa41a0 100644 --- a/tools/dmake.cpp +++ b/tools/dmake.cpp @@ -256,8 +256,8 @@ int main(int argc, char **argv) fout << "\n###### Build\n\n"; compilefiles(fout, libfiles, "-Ilib"); - compilefiles(fout, clifiles, "-Ilib -Iexternals"); - compilefiles(fout, testfiles, "-Ilib -Icli -Iexternals"); + compilefiles(fout, clifiles, "-Ilib -Iexternals/tinyxml -Iexternals"); + compilefiles(fout, testfiles, "-Ilib -Icli -Iexternals/tinyxml -Iexternals"); return 0; } From 59cb2d2f67331322064c63ab97ee5b05e25742e3 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Wed, 9 Mar 2011 12:30:15 +0100 Subject: [PATCH 16/18] Bug #2524: Addition of CMake build files - completion of variable assignments Some source file names were added to variable assignments in CMake scripts to update relevant dependencies. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 6 ++++-- gui/CMakeLists.txt | 30 ++++++++++++++++++++++++++---- test/CMakeLists.txt | 41 +++++++++++++++++++++++++++-------------- 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index dd90cf332ff..5c3370ba1e2 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -4,10 +4,11 @@ find_package(PCRE REQUIRED) set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") SET(CPPCHECK_CLI_SOURCES + cmdlineparser.cpp cppcheckexecutor.cpp filelister.cpp - threadexecutor.cpp main.cpp + threadexecutor.cpp "${TINYXML_INCLUDE_DIR}tinystr.cpp" "${TINYXML_INCLUDE_DIR}tinyxml.cpp" "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" @@ -34,6 +35,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories(${CPPCHECK_SOURCE_DIR}/lib + "${PCRE_INCLUDE_DIR}" "${TINYXML_INCLUDE_DIR}") add_executable(cppcheck ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) -TARGET_LINK_LIBRARIES(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES}) +target_link_libraries(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES} ${PCRE_LIBRARIES}) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 31359610f6d..7c6077367a8 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -24,17 +24,24 @@ SET(CPPCHECK_GUI_HEADERS aboutdialog.h applicationdialog.h applicationlist.h + checkstatistics.h checkthread.h common.h csvreport.h + erroritem.h + filelist.h fileviewdialog.h helpwindow.h mainwindow.h + logview.h + project.h projectfile.h + projectfiledialog.h report.h resultstree.h resultsview.h settingsdialog.h + statsdialog.h threadhandler.h threadresult.h translationhandler.h @@ -45,18 +52,26 @@ SET(CPPCHECK_GUI_HEADERS # Source files SET(CPPCHECK_GUI_SOURCES aboutdialog.cpp - applicationdialog.cpp + applicationdialog.cpp applicationlist.cpp + checkstatistics.cpp checkthread.cpp csvreport.cpp + erroritem.cpp + filelist.cpp fileviewdialog.cpp + helpwindow.cpp + logview.cpp main.cpp mainwindow.cpp + project.cpp projectfile.cpp + projectfiledialog.cpp report.cpp resultstree.cpp resultsview.cpp settingsdialog.cpp + statsdialog.cpp threadhandler.cpp threadresult.cpp translationhandler.cpp @@ -69,20 +84,27 @@ SET(CPPCHECK_UIS about.ui application.ui file.ui + helpwindow.ui + logview.ui main.ui + projectfile.ui resultsview.ui settings.ui + stats.ui ) # Translation files SET(CPPCHECK_GUI_TRANS cppcheck_de.ts - cppcheck_fi.ts - cppcheck_pl.ts - cppcheck_se.ts cppcheck_en.ts + cppcheck_fi.ts + cppcheck_fr.ts + cppcheck_ja.ts cppcheck_nl.ts + cppcheck_pl.ts cppcheck_ru.ts + cppcheck_se.ts + cppcheck_sr.ts ) set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fef2e674de5..25b4d4795ec 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,32 +4,44 @@ find_package(PCRE REQUIRED) set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") SET(CPPCHECK_TEST_SOURCES + "${CPPCHECK_SOURCE_DIR}/cli/cmdlineparser.cpp" + "${CPPCHECK_SOURCE_DIR}/cli/cppcheckexecutor.cpp" "${CPPCHECK_SOURCE_DIR}/cli/filelister.cpp" + "${CPPCHECK_SOURCE_DIR}/cli/threadexecutor.cpp" + options.cpp + testautovariables.cpp + testbufferoverrun.cpp + testcharvar.cpp + testclass.cpp + testcmdlineparser.cpp + testconstructors.cpp + testcppcheck.cpp + testdivision.cpp + testerrorlogger.cpp + testexceptionsafety.cpp + testincompletestatement.cpp + testmathlib.cpp testmemleak.cpp + testnullpointer.cpp + testobsoletefunctions.cpp + testoptions.cpp testother.cpp + testpath.cpp + testpostfixoperator.cpp testpreprocessor.cpp - testautovariables.cpp - testredundantif.cpp - testbufferoverrun.cpp testrunner.cpp - testcharvar.cpp + testsettings.cpp testsimplifytokens.cpp - testclass.cpp teststl.cpp - testconstructors.cpp testsuite.cpp - testcppcheck.cpp - testdangerousfunctions.cpp + testsymboldatabase.cpp + testthreadexecutor.cpp testtoken.cpp - testdivision.cpp testtokenize.cpp - testexceptionsafety.cpp + testuninitvar.cpp testunusedfunctions.cpp - testfilelister.cpp testunusedprivfunc.cpp - testincompletestatement.cpp testunusedvar.cpp - testmathlib.cpp "${TINYXML_INCLUDE_DIR}tinystr.cpp" "${TINYXML_INCLUDE_DIR}tinyxml.cpp" "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" @@ -47,7 +59,7 @@ if(WIN32) set(CPPCHECK_TEST_LINK_LIBRARIES ${CPPCHECK_TEST_LINK_LIBRARIES} shlwapi) endif() else() - set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} + set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} testfilelister_unix.cpp "${CPPCHECK_SOURCE_DIR}/cli/filelister_unix.cpp") endif() @@ -56,6 +68,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_COMPILER_IS_GNUCXX) include_directories("${CPPCHECK_SOURCE_DIR}/lib" + "${CPPCHECK_SOURCE_DIR}/cli" "${PCRE_INCLUDE_DIR}" "${TINYXML_INCLUDE_DIR}") add_executable(test ${CPPCHECK_TEST_SOURCES} ${CPPCHECK_LIB_SOURCES}) From 6f5fa11265fd53b57229a33c1db0bf1456f20d55 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Wed, 9 Mar 2011 13:10:46 +0100 Subject: [PATCH 17/18] Bug #2524: Addition of CMake build files - quoting of parameters Some parameters must be enclosed by quotation marks so that the passed value will be processed as a single string. http://cmake.org/Wiki/CMake/Language_Syntax#CMake_splits_arguments_unless_you_use_quotation_marks_or_escapes. Signed-off-by: Markus Elfring --- cli/CMakeLists.txt | 2 +- cmake/modules/FindPCRE.cmake | 12 +++++------- cmake/modules/FindXmlTo.cmake | 14 +++++++------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 5c3370ba1e2..6a06d81dc41 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -34,7 +34,7 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -include_directories(${CPPCHECK_SOURCE_DIR}/lib +include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}" "${TINYXML_INCLUDE_DIR}") add_executable(cppcheck ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) diff --git a/cmake/modules/FindPCRE.cmake b/cmake/modules/FindPCRE.cmake index f26ba1681e6..a86fc90ee01 100644 --- a/cmake/modules/FindPCRE.cmake +++ b/cmake/modules/FindPCRE.cmake @@ -25,20 +25,18 @@ if (NOT WIN32) pkg_check_modules(PC_PCRE QUIET libpcre) set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER}) - endif (NOT WIN32) -find_path(PCRE_INCLUDE_DIR pcre.h - HINTS ${PC_PCRE_INCLUDEDIR} ${PC_PCRE_INCLUDE_DIRS} +find_path(PCRE_INCLUDE_DIR "pcre.h" + HINTS "${PC_PCRE_INCLUDEDIR}" ${PC_PCRE_INCLUDE_DIRS} PATH_SUFFIXES pcre) -find_library(PCRE_PCRE_LIBRARY NAMES pcre pcred HINTS ${PC_PCRE_LIBDIR} ${PC_PCRE_LIBRARY_DIRS}) - -find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix pcreposixd HINTS ${PC_PCRE_LIBDIR} ${PC_PCRE_LIBRARY_DIRS}) +find_library(PCRE_PCRE_LIBRARY NAMES pcre pcred HINTS "${PC_PCRE_LIBDIR}" ${PC_PCRE_LIBRARY_DIRS}) +find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix pcreposixd HINTS "${PC_PCRE_LIBDIR}" ${PC_PCRE_LIBRARY_DIRS}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR PCRE_PCRE_LIBRARY PCRE_PCREPOSIX_LIBRARY ) -set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY} ${PCRE_PCREPOSIX_LIBRARY}) +set(PCRE_LIBRARIES "${PCRE_PCRE_LIBRARY}" "${PCRE_PCREPOSIX_LIBRARY}") mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCREPOSIX_LIBRARY PCRE_PCRE_LIBRARY) diff --git a/cmake/modules/FindXmlTo.cmake b/cmake/modules/FindXmlTo.cmake index ae9fd6fda72..47ee9ba3b1d 100644 --- a/cmake/modules/FindXmlTo.cmake +++ b/cmake/modules/FindXmlTo.cmake @@ -44,21 +44,21 @@ macro ( _XMLTO_FILE outfiles mode) string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" ) endif ( "${mode}" STREQUAL "man" ) - get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH ) - get_filename_component ( dbFileWE ${dbFile} NAME_WE ) - get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE ) + get_filename_component ( dbFilePath "${CMAKE_CURRENT_BINARY_DIR}/${dbFile}" PATH ) + get_filename_component ( dbFileWE "${dbFile}" NAME_WE ) + get_filename_component ( dbFileAbsWE "${dbFilePath}/${dbFileWE}" ABSOLUTE ) add_custom_command ( - OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} - COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${CMAKE_CURRENT_BINARY_DIR} + OUTPUT "${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}" + COMMAND "${XMLTO_EXECUTABLE}" ${XMLTO_COMMAND_ARGS} -o "${CMAKE_CURRENT_BINARY_DIR}" ${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}" - MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile} + MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}" VERBATIM ) set ( ${outfiles} ${${outfiles}} - ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}} + "${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}" ) endforeach ( dbFile ) endmacro ( _XMLTO_FILE outfiles ) From 1936168b3a12d08bb6a88851f1c0e6b5d78e6199 Mon Sep 17 00:00:00 2001 From: Markus Elfring Date: Wed, 9 Mar 2011 14:00:52 +0100 Subject: [PATCH 18/18] Bug #2524: Addition of CMake build files - options for the selection of library code source Build options were added for the following features. * The source files of Cppchecks's library can be directly included for the compilation. * Choice of linking with the static or shared library file that was generated for Cppchecks's class library. See also the feature request "Build lib code as static/dynamic library". https://sourceforge.net/apps/trac/cppcheck/ticket/1842 Signed-off-by: Markus Elfring --- CMakeLists.txt | 24 +++--------------------- cli/CMakeLists.txt | 30 +++++++++++++++++++++++++----- gui/CMakeLists.txt | 30 +++++++++++++++++++++++++----- lib/CMakeLists.txt | 20 +++++++++++++------- test/CMakeLists.txt | 30 +++++++++++++++++++++++++----- 5 files changed, 91 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c119d0bebf..186438fc2b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,28 +1,13 @@ -# Minimal CMake build file -# Builds: -# - static library from lib directory -# - commandline executable -# - test suite -# - Qt GUI - -# To build with CMake: -# - install CMake 2.6 or later -# - $ cmake . -# - $ make - cmake_minimum_required (VERSION 2.6) PROJECT(CPPCHECK) set(CMAKE_MODULE_PATH "${CPPCHECK_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) -# 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 -# Instead lib code is included directly into cli and gui targets -# ADD_SUBDIRECTORY(lib) - +ADD_SUBDIRECTORY(lib) ADD_SUBDIRECTORY(cli) +ADD_SUBDIRECTORY(gui) +ADD_SUBDIRECTORY(man) # Exclude tests from command line targets but include them to VS IDE targets. # There is 'make check' -target for compiling and running tests from @@ -32,6 +17,3 @@ IF (MSVC_IDE) ELSE (MSVC_IDE) ADD_SUBDIRECTORY(test EXCLUDE_FROM_ALL) ENDIF (MSVC_IDE) - -ADD_SUBDIRECTORY(gui) -ADD_SUBDIRECTORY(man) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 6a06d81dc41..46280380ee5 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,4 +1,4 @@ -# Minimal CMake build file to build cppcheck command line executable +# Instructions for building of the cppcheck command line executable find_package(PCRE REQUIRED) set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") @@ -14,8 +14,28 @@ SET(CPPCHECK_CLI_SOURCES "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" "${TINYXML_INCLUDE_DIR}tinyxmlparser.cpp") -set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") -include("${CPPCHECK_LIB_DIR}library_sources.cmake") +option(CPPCHECK_CLI_BUILD_EMBED_LIBRARY_SOURCE_CODE + "The source files of Cppchecks's library should be directly included +for the compilation of the command line interface.") +mark_as_advanced(CPPCHECK_CLI_BUILD_EMBED_LIBRARY_SOURCE_CODE) + +if(CPPCHECK_CLI_BUILD_EMBED_LIBRARY_SOURCE_CODE) + set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") + include("${CPPCHECK_LIB_DIR}library_sources.txt") + set(CPPCHECK_CLI_SOURCES ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) + set(CPPCHECK_CLI_LINK_LIBRARIES ${PCRE_LIBRARIES}) +else() + option(CPPCHECK_CLI_BUILD_USE_STATICALLY_LINKED_LIBRARY + "The static library file that was generated for Cppchecks's class library should be +used for the link step of the command line interface.") + mark_as_advanced(CPPCHECK_CLI_BUILD_USE_STATICALLY_LINKED_LIBRARY) + + if(CPPCHECK_CLI_BUILD_USE_STATICALLY_LINKED_LIBRARY) + set(CPPCHECK_CLI_LINK_LIBRARIES libchecks ${PCRE_LIBRARIES}) # static approach + else() + set(CPPCHECK_CLI_LINK_LIBRARIES checks ${PCRE_LIBRARIES}) # shared approach + endif() +endif() if(WIN32) # Add Windows resource file @@ -37,5 +57,5 @@ endif (CMAKE_COMPILER_IS_GNUCXX) include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${PCRE_INCLUDE_DIR}" "${TINYXML_INCLUDE_DIR}") -add_executable(cppcheck ${CPPCHECK_CLI_SOURCES} ${CPPCHECK_LIB_SOURCES}) -target_link_libraries(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES} ${PCRE_LIBRARIES}) +add_executable(cppcheck ${CPPCHECK_CLI_SOURCES}) +target_link_libraries(cppcheck ${CPPCHECK_CLI_LINK_LIBRARIES}) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 7c6077367a8..9f3a7f4011b 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,4 +1,4 @@ -# Minimal CMake build file to build cppcheck Qt GUI +# Instructions for building of the cppcheck Qt GUI find_package(PCRE REQUIRED) # find and setup Qt4 for this project @@ -107,8 +107,28 @@ SET(CPPCHECK_GUI_TRANS cppcheck_sr.ts ) -set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") -include("${CPPCHECK_LIB_DIR}library_sources.cmake") +option(CPPCHECK_GUI_BUILD_EMBED_LIBRARY_SOURCE_CODE + "The source files of Cppchecks's library should be directly included +for the compilation of the graphical user interface.") +mark_as_advanced(CPPCHECK_GUI_BUILD_EMBED_LIBRARY_SOURCE_CODE) + +if(CPPCHECK_GUI_BUILD_EMBED_LIBRARY_SOURCE_CODE) + set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") + include("${CPPCHECK_LIB_DIR}library_sources.txt") + set(CPPCHECK_GUI_SOURCES ${CPPCHECK_GUI_SOURCES} ${CPPCHECK_LIB_SOURCES}) + set(CPPCHECK_GUI_LINK_LIBRARIES ${PCRE_LIBRARIES}) +else() + option(CPPCHECK_GUI_BUILD_USE_STATICALLY_LINKED_LIBRARY + "The static library file that was generated for Cppchecks's class library should be +used for the link step of the graphical user interface.") + mark_as_advanced(CPPCHECK_GUI_BUILD_USE_STATICALLY_LINKED_LIBRARY) + + if(CPPCHECK_GUI_BUILD_USE_STATICALLY_LINKED_LIBRARY) + set(CPPCHECK_GUI_LINK_LIBRARIES libchecks ${PCRE_LIBRARIES}) # static approach + else() + set(CPPCHECK_GUI_LINK_LIBRARIES checks ${PCRE_LIBRARIES}) # shared approach + endif() +endif() if(WIN32) # Add Windows resource file @@ -142,8 +162,8 @@ SOURCE_GROUP("Ui Files" ".ui$") SOURCE_GROUP("Moc Files" "moc_.*cxx$") ADD_EXECUTABLE(gui WIN32 ${CPPCHECK_GUI_SOURCES} ${CPPCHECK_MOC_SOURCES} - ${CPPCHECK_FORMS_HEADERS} ${CPPCHECK_RCC_SOURCES} ${CPPCHECK_LIB_SOURCES}) -TARGET_LINK_LIBRARIES(gui ${CPPCHECK_GUI_LINK_LIBRARIES} ${PCRE_LIBRARIES} ${QT_LIBRARIES}) + ${CPPCHECK_FORMS_HEADERS} ${CPPCHECK_RCC_SOURCES}) +TARGET_LINK_LIBRARIES(gui ${CPPCHECK_GUI_LINK_LIBRARIES} ${QT_LIBRARIES}) ELSE(QT4_FOUND) message("GUI not built since QT4 not found.") diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 41c5a650667..5926434b9f3 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,8 +1,4 @@ -# Minimal CMake build file to build static cppcheck library -# This static library is used to build executables: -# - cli -# - tests -# - Qt GUI +# Instructions for building of the cppcheck library find_package(PCRE REQUIRED) include_directories("${PCRE_INCLUDE_DIR}") @@ -13,5 +9,15 @@ if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual") endif (CMAKE_COMPILER_IS_GNUCXX) -add_library(checklib STATIC ${CPPCHECK_LIB_SOURCES}) -target_link_libraries(checklib ${PCRE_LIBRARIES}) +add_library(checks SHARED ${CPPCHECK_LIB_SOURCES}) +add_library(static_checks STATIC ${CPPCHECK_LIB_SOURCES}) +set_target_properties(static_checks PROPERTIES OUTPUT_NAME "checks") +set_target_properties(static_checks PROPERTIES PREFIX "lib") + +if(NOT(${CMAKE_MAJOR_VERSION} GREATER 2) AND NOT(${CMAKE_MINOR_VERSION} GREATER 8)) + set_target_properties(checks PROPERTIES CLEAN_DIRECT_OUTPUT 1) + set_target_properties(static_checks PROPERTIES CLEAN_DIRECT_OUTPUT 1) +endif() + +target_link_libraries(checks ${PCRE_LIBRARIES}) +target_link_libraries(static_checks ${PCRE_LIBRARIES}) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 25b4d4795ec..01af10c2410 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,4 @@ -# Minimal CMake build file to build cppcheck test suite +# Instructions for building of the cppcheck test suite find_package(PCRE REQUIRED) set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/") @@ -47,8 +47,28 @@ SET(CPPCHECK_TEST_SOURCES "${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp" "${TINYXML_INCLUDE_DIR}tinyxmlparser.cpp") -set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") -include("${CPPCHECK_LIB_DIR}library_sources.cmake") +option(CPPCHECK_TEST_BUILD_EMBED_LIBRARY_SOURCE_CODE + "The source files of Cppchecks's library should be directly included +for the compilation of the test suite.") +mark_as_advanced(CPPCHECK_TEST_BUILD_EMBED_LIBRARY_SOURCE_CODE) + +if(CPPCHECK_TEST_BUILD_EMBED_LIBRARY_SOURCE_CODE) + set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/") + include("${CPPCHECK_LIB_DIR}library_sources.txt") + set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} ${CPPCHECK_LIB_SOURCES}) + set(CPPCHECK_TEST_LINK_LIBRARIES ${PCRE_LIBRARIES}) +else() + option(CPPCHECK_TEST_BUILD_USE_STATICALLY_LINKED_LIBRARY + "The static library file that was generated for Cppchecks's class library should be +used for the link step of the test suite.") + mark_as_advanced(CPPCHECK_TEST_BUILD_USE_STATICALLY_LINKED_LIBRARY) + + if(CPPCHECK_TEST_BUILD_USE_STATICALLY_LINKED_LIBRARY) + set(CPPCHECK_TEST_LINK_LIBRARIES libchecks ${PCRE_LIBRARIES}) # static approach + else() + set(CPPCHECK_TEST_LINK_LIBRARIES checks ${PCRE_LIBRARIES}) # shared approach + endif() +endif() if(WIN32) set(CPPCHECK_TEST_SOURCES ${CPPCHECK_TEST_SOURCES} @@ -71,8 +91,8 @@ include_directories("${CPPCHECK_SOURCE_DIR}/lib" "${CPPCHECK_SOURCE_DIR}/cli" "${PCRE_INCLUDE_DIR}" "${TINYXML_INCLUDE_DIR}") -add_executable(test ${CPPCHECK_TEST_SOURCES} ${CPPCHECK_LIB_SOURCES}) -TARGET_LINK_LIBRARIES(test ${CPPCHECK_TEST_LINK_LIBRARIES} ${PCRE_LIBRARIES}) +add_executable(test ${CPPCHECK_TEST_SOURCES}) +target_link_libraries(test ${CPPCHECK_TEST_LINK_LIBRARIES}) # Add custom 'make check' -target # It compiles and runs tests