Skip to content

Commit 9301ee2

Browse files
elfringDaniel Marjamäki
authored andcommitted
Added CMake files
1 parent 710eb8f commit 9301ee2

18 files changed

Lines changed: 716 additions & 110 deletions

CMake/xmlto.cmake

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# - Convert XML docBook files to various formats
2+
# This will convert XML docBook files to various formats like:
3+
# man html txt dvi ps pdf
4+
# macro XMLTO(outfiles infiles... MODES modes...)
5+
6+
set ( XmlTo_FOUND false )
7+
8+
find_program ( XMLTO_EXECUTABLE
9+
NAMES xmlto
10+
DOC "path to the xmlto docbook xslt frontend"
11+
)
12+
13+
if ( XMLTO_EXECUTABLE )
14+
set ( XmlTo_FOUND true )
15+
endif ( XMLTO_EXECUTABLE )
16+
17+
if ( NOT XmlTo_FIND_QUIETLY )
18+
if ( XmlTo_FIND_REQUIRED )
19+
FATAL_ERROR ( "xmlto not found" )
20+
endif ( XmlTo_FIND_REQUIRED )
21+
endif ( NOT XmlTo_FIND_QUIETLY )
22+
23+
macro ( _XMLTO_FILE outfiles mode)
24+
#special settings
25+
set ( XMLTO_FILEEXT_man 1 )
26+
set ( XMLTO_MODE_html xhtml-nochunks )
27+
28+
if ( NOT XMLTO_MODE_${mode})
29+
set ( XMLTO_MODE_${mode} ${mode} )
30+
endif ( NOT XMLTO_MODE_${mode} )
31+
if ( NOT XMLTO_FILEEXT_${mode} )
32+
set ( XMLTO_FILEEXT_${mode} ${mode} )
33+
endif ( NOT XMLTO_FILEEXT_${mode} )
34+
35+
foreach ( dbFile ${ARGN} )
36+
#TODO: set XMLTO_FILEEXT_man to value from <manvolnum>
37+
if ( "${mode}" STREQUAL "man" )
38+
file ( READ "${dbFile}" _DB_FILE_CONTENTS )
39+
string ( REGEX MATCH "<manvolnum>[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" )
40+
string ( REGEX REPLACE "^<manvolnum>" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
41+
string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
42+
endif ( "${mode}" STREQUAL "man" )
43+
44+
get_filename_component ( dbFilePath ${CMAKE_CURRENT_BINARY_DIR}/${dbFile} PATH )
45+
get_filename_component ( dbFileWE ${dbFile} NAME_WE )
46+
get_filename_component ( dbFileAbsWE ${dbFilePath}/${dbFileWE} ABSOLUTE )
47+
48+
add_custom_command (
49+
OUTPUT ${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
50+
COMMAND ${XMLTO_EXECUTABLE} ${XMLTO_COMMAND_ARGS} -o ${CMAKE_CURRENT_BINARY_DIR}
51+
${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}"
52+
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}
53+
VERBATIM
54+
)
55+
56+
set ( ${outfiles}
57+
${${outfiles}}
58+
${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}
59+
)
60+
endforeach ( dbFile )
61+
endmacro ( _XMLTO_FILE outfiles )
62+
63+
macro ( XMLTO )
64+
set ( XMLTO_MODES )
65+
set ( XMLTO_FILES )
66+
set ( XMLTO_HAS_MODES false )
67+
set ( XMLTO_ADD_DEFAULT false )
68+
foreach ( arg ${ARGN} )
69+
if ( ${arg} STREQUAL "MODES" )
70+
set ( XMLTO_HAS_MODES true )
71+
elseif ( ${arg} STREQUAL "ALL" )
72+
set ( XMLTO_ADD_DEFAULT true )
73+
else ( ${arg} STREQUAL "MODES" )
74+
if ( XMLTO_HAS_MODES )
75+
set ( XMLTO_MODES ${XMLTO_MODES} ${arg} )
76+
else ( XMLTO_HAS_MODES )
77+
set ( XMLTO_FILES ${XMLTO_FILES} ${arg} )
78+
endif ( XMLTO_HAS_MODES )
79+
endif ( ${arg} STREQUAL "MODES" )
80+
endforeach ( arg ${ARGN} )
81+
if ( NOT XMLTO_MODES )
82+
set ( XMLTO_MODES html )
83+
endif ( NOT XMLTO_MODES )
84+
85+
foreach ( mode ${XMLTO_MODES} )
86+
_xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} )
87+
if ( XMLTO_ADD_DEFAULT )
88+
add_custom_target ( ${mode} ALL
89+
DEPENDS ${XMLTO_FILES_${mode}}
90+
VERBATIM
91+
)
92+
else ( XMLTO_ADD_DEFAULT )
93+
add_custom_target ( ${mode}
94+
DEPENDS ${XMLTO_FILES_${mode}}
95+
VERBATIM
96+
)
97+
endif ( XMLTO_ADD_DEFAULT )
98+
endforeach ( mode )
99+
100+
set ( XMLTO_MODES )
101+
set ( XMLTO_FILES )
102+
endmacro ( XMLTO )
103+

CMakeLists.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Minimal CMake build file
2+
# Builds:
3+
# - static library from lib directory
4+
# - commandline executable
5+
# - test suite
6+
# - Qt GUI
7+
8+
# To build with CMake:
9+
# - install CMake 2.6 or later
10+
# - $ cmake .
11+
# - $ make
12+
13+
cmake_minimum_required (VERSION 2.6)
14+
15+
PROJECT(CPPCHECK)
16+
17+
set(CMAKE_MODULE_PATH "${CPPCHECK_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
18+
19+
# Building lib as static library is disabled due to bug
20+
# #1299 CMake: The CheckClass is not used
21+
# https://sourceforge.net/apps/trac/cppcheck/ticket/1299
22+
# Instead lib code is included directly into cli and gui targets
23+
# ADD_SUBDIRECTORY(lib)
24+
25+
ADD_SUBDIRECTORY(cli)
26+
27+
# Exclude tests from command line targets but include them to VS IDE targets.
28+
# There is 'make check' -target for compiling and running tests from
29+
# command line.
30+
IF (MSVC_IDE)
31+
ADD_SUBDIRECTORY(test)
32+
ELSE (MSVC_IDE)
33+
ADD_SUBDIRECTORY(test EXCLUDE_FROM_ALL)
34+
ENDIF (MSVC_IDE)
35+
36+
ADD_SUBDIRECTORY(gui)
37+
ADD_SUBDIRECTORY(man)

cli/CMakeLists.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Minimal CMake build file to build cppcheck command line executable
2+
find_package(PCRE REQUIRED)
3+
4+
set(TINYXML_INCLUDE_DIR "${CPPCHECK_SOURCE_DIR}/externals/tinyxml/")
5+
6+
SET(CHECKCLI_SRCS
7+
cmdlineparser.cpp
8+
cppcheckexecutor.cpp
9+
filelister.cpp
10+
main.cpp
11+
threadexecutor.cpp
12+
"${TINYXML_INCLUDE_DIR}tinystr.cpp"
13+
"${TINYXML_INCLUDE_DIR}tinyxml.cpp"
14+
"${TINYXML_INCLUDE_DIR}tinyxmlerror.cpp"
15+
"${TINYXML_INCLUDE_DIR}tinyxmlparser.cpp")
16+
17+
set(CPPCHECK_LIB_DIR "${CPPCHECK_SOURCE_DIR}/lib/")
18+
include("${CPPCHECK_LIB_DIR}library_sources.cmake")
19+
20+
if(WIN32)
21+
# Add Windows resource file
22+
set(CHECKCLI_SRCS ${CHECKCLI_SRCS} filelister_win32.cpp
23+
cppcheck.rc)
24+
25+
if(NOT CYGWIN)
26+
# Windows needs additional shlwapi library.
27+
set(CHECK_LIBS ${CHECK_LIBS} shlwapi)
28+
endif()
29+
else()
30+
set(CHECKCLI_SRCS ${CHECKCLI_SRCS} filelister_unix.cpp)
31+
endif()
32+
33+
if (CMAKE_COMPILER_IS_GNUCXX)
34+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wno-long-long -Wfloat-equal -Wcast-qual")
35+
endif (CMAKE_COMPILER_IS_GNUCXX)
36+
37+
include_directories("${CPPCHECK_SOURCE_DIR}/lib"
38+
"${PCRE_INCLUDE_DIR}"
39+
"${TINYXML_INCLUDE_DIR}")
40+
add_executable(cppcheck ${CHECKCLI_SRCS} ${CPPCHECK_LIB_SOURCES})
41+
TARGET_LINK_LIBRARIES(cppcheck ${CHECK_LIBS} ${PCRE_LIBRARIES})

cli/cli.pro

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
TEMPLATE = app
22
TARGET = cppcheck
33
DEPENDPATH += .
4-
INCLUDEPATH += . ../lib
4+
TINYXML_DIR = ../externals/tinyxml/
5+
INCLUDEPATH += . ../lib $${TINYXML_DIR}
56
OBJECTS_DIR = temp
67
CONFIG += warn_on
78
CONFIG -= qt app_bundle
89
DEFINES += HAVE_RULES
910

10-
BASEPATH = ../externals/tinyxml/
11-
include($$PWD/../externals/tinyxml/tinyxml.pri)
11+
BASEPATH = $${TINYXML_DIR}
12+
include($$PWD/$${TINYXML_DIR}tinyxml.pri)
1213
BASEPATH = ../lib/
1314
include($$PWD/../lib/lib.pri)
1415

cli/cppcheck.vcproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
UseOfMfc="0">
2020
<Tool
2121
Name="VCCLCompilerTool"
22-
AdditionalIncludeDirectories="&quot;.&quot;,&quot;..\lib&quot;,&quot;..\externals&quot;,&quot;..\externals\tinyxml&quot;,..\..\Qt\VS4.7.0\mkspecs\win32-msvc2008"
22+
AdditionalIncludeDirectories="&quot;.&quot;,&quot;..\lib&quot;,&quot;..\externals\tinyxml&quot;,c:\Qt\VS4.7.0\mkspecs\win32-msvc2008"
2323
AdditionalOptions="-Zm200 -w34100 -w34189"
2424
AssemblerListingLocation="temp\"
2525
BufferSecurityCheck="false"
@@ -271,4 +271,4 @@
271271
</Files>
272272
<Globals>
273273
</Globals>
274-
</VisualStudioProject>
274+
</VisualStudioProject>

cli/cppcheck.vcxproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
</PropertyGroup>
5151
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Debug|Win32&apos;">
5252
<ClCompile>
53-
<AdditionalIncludeDirectories>".";"..\lib";"..\externals";"..\externals\tinyxml";..\..\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
53+
<AdditionalIncludeDirectories>".";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
5454
<AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
5555
<AssemblerListingLocation>temp\</AssemblerListingLocation>
5656
<BrowseInformation>false</BrowseInformation>
@@ -84,7 +84,11 @@
8484
</ItemDefinitionGroup>
8585
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;Release|Win32&apos;">
8686
<ClCompile>
87+
<<<<<<< HEAD:cli/cppcheck.vcxproj
8788
<AdditionalIncludeDirectories>".";"..\lib";"..\externals";"..\externals\tinyxml";..\..\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
89+
=======
90+
<AdditionalIncludeDirectories>".";"..\lib";"..\externals\tinyxml";c:\Qt\VS4.7.0\mkspecs\win32-msvc2010;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
91+
>>>>>>> 8e379f65ec6b29de134be4013536fafe4d760a1c:cli/cppcheck.vcxproj
8892
<AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
8993
<AssemblerListingLocation>temp\</AssemblerListingLocation>
9094
<BrowseInformation>false</BrowseInformation>
@@ -193,4 +197,4 @@
193197
</ItemGroup>
194198
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
195199
<ImportGroup Label="ExtensionTargets" />
196-
</Project>
200+
</Project>

cmake/modules/FindPCRE.cmake

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# - Try to find the PCRE regular expression library
2+
# Once done this will define
3+
#
4+
# PCRE_FOUND - system has the PCRE library
5+
# PCRE_INCLUDE_DIR - the PCRE include directory
6+
# PCRE_LIBRARIES - The libraries needed to use PCRE
7+
8+
# Copyright (c) 2006, Alexander Neundorf, <[email protected]>
9+
#
10+
# Redistribution and use is allowed according to the terms of the BSD license.
11+
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
12+
13+
14+
if (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
15+
# Already in cache, be silent
16+
set(PCRE_FIND_QUIETLY TRUE)
17+
endif (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
18+
19+
20+
if (NOT WIN32)
21+
# use pkg-config to get the directories and then use these values
22+
# in the FIND_PATH() and FIND_LIBRARY() calls
23+
find_package(PkgConfig)
24+
25+
pkg_check_modules(PC_PCRE QUIET libpcre)
26+
27+
set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER})
28+
endif (NOT WIN32)
29+
30+
find_path(PCRE_INCLUDE_DIR pcre.h
31+
HINTS "${PC_PCRE_INCLUDEDIR}" ${PC_PCRE_INCLUDE_DIRS}
32+
PATH_SUFFIXES pcre)
33+
34+
find_library(PCRE_PCRE_LIBRARY NAMES pcre pcred HINTS "${PC_PCRE_LIBDIR}" ${PC_PCRE_LIBRARY_DIRS})
35+
find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix pcreposixd HINTS "${PC_PCRE_LIBDIR}" ${PC_PCRE_LIBRARY_DIRS})
36+
37+
include(FindPackageHandleStandardArgs)
38+
find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR PCRE_PCRE_LIBRARY PCRE_PCREPOSIX_LIBRARY )
39+
40+
set(PCRE_LIBRARIES "${PCRE_PCRE_LIBRARY}" "${PCRE_PCREPOSIX_LIBRARY}")
41+
42+
mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCREPOSIX_LIBRARY PCRE_PCRE_LIBRARY)

cmake/modules/FindXmlTo.cmake

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Is Hendrik Sattler the original author of the following script?
2+
# http://cmake.org/pipermail/cmake/2007-April/013545.html
3+
4+
# - Convert XML docBook files to various formats
5+
# This will convert XML docBook files to various formats like:
6+
# man html txt dvi ps pdf
7+
# macro XMLTO(outfiles infiles... MODES modes...)
8+
9+
set ( XmlTo_FOUND false )
10+
11+
find_program ( XMLTO_EXECUTABLE NAMES xmlto
12+
DOC "path to the xmlto docbook xslt frontend" )
13+
14+
if ( XMLTO_EXECUTABLE )
15+
set ( XmlTo_FOUND true )
16+
17+
if ( NOT XmlTo_FIND_QUIETLY )
18+
message ( STATUS "Found ${XMLTO_EXECUTABLE}" )
19+
endif ( NOT XmlTo_FIND_QUIETLY )
20+
else ( XMLTO_EXECUTABLE )
21+
if ( XmlTo_FIND_REQUIRED )
22+
message ( FATAL_ERROR "The xmlto program was not found." )
23+
endif ( XmlTo_FIND_REQUIRED )
24+
endif ( XMLTO_EXECUTABLE )
25+
26+
macro ( _XMLTO_FILE outfiles mode)
27+
#special settings
28+
set ( XMLTO_FILEEXT_man 1 )
29+
set ( XMLTO_MODE_html xhtml-nochunks )
30+
31+
if ( NOT XMLTO_MODE_${mode})
32+
set ( XMLTO_MODE_${mode} ${mode} )
33+
endif ( NOT XMLTO_MODE_${mode} )
34+
if ( NOT XMLTO_FILEEXT_${mode} )
35+
set ( XMLTO_FILEEXT_${mode} ${mode} )
36+
endif ( NOT XMLTO_FILEEXT_${mode} )
37+
38+
foreach ( dbFile ${ARGN} )
39+
#TODO: set XMLTO_FILEEXT_man to value from <manvolnum>
40+
if ( "${mode}" STREQUAL "man" )
41+
file ( READ "${dbFile}" _DB_FILE_CONTENTS )
42+
string ( REGEX MATCH "<manvolnum>[^<]*" XMLTO_FILEEXT_${mode} "${_DB_FILE_CONTENTS}" )
43+
string ( REGEX REPLACE "^<manvolnum>" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
44+
string ( REGEX REPLACE "[[:space:]]" "" XMLTO_FILEEXT_${mode} "${XMLTO_FILEEXT_${mode}}" )
45+
endif ( "${mode}" STREQUAL "man" )
46+
47+
get_filename_component ( dbFilePath "${CMAKE_CURRENT_BINARY_DIR}/${dbFile}" PATH )
48+
get_filename_component ( dbFileWE "${dbFile}" NAME_WE )
49+
get_filename_component ( dbFileAbsWE "${dbFilePath}/${dbFileWE}" ABSOLUTE )
50+
51+
add_custom_command (
52+
OUTPUT "${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}"
53+
COMMAND "${XMLTO_EXECUTABLE}" ${XMLTO_COMMAND_ARGS} -o "${CMAKE_CURRENT_BINARY_DIR}"
54+
${XMLTO_MODE_${mode}} "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}"
55+
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${dbFile}"
56+
VERBATIM
57+
)
58+
59+
set ( ${outfiles}
60+
${${outfiles}}
61+
"${dbFileAbsWE}.${XMLTO_FILEEXT_${mode}}"
62+
)
63+
endforeach ( dbFile )
64+
endmacro ( _XMLTO_FILE outfiles )
65+
66+
macro ( XMLTO )
67+
set ( XMLTO_MODES )
68+
set ( XMLTO_FILES )
69+
set ( XMLTO_HAS_MODES false )
70+
set ( XMLTO_ADD_DEFAULT false )
71+
foreach ( arg ${ARGN} )
72+
if ( ${arg} STREQUAL "MODES" )
73+
set ( XMLTO_HAS_MODES true )
74+
elseif ( ${arg} STREQUAL "ALL" )
75+
set ( XMLTO_ADD_DEFAULT true )
76+
else ( ${arg} STREQUAL "MODES" )
77+
if ( XMLTO_HAS_MODES )
78+
set ( XMLTO_MODES ${XMLTO_MODES} ${arg} )
79+
else ( XMLTO_HAS_MODES )
80+
set ( XMLTO_FILES ${XMLTO_FILES} ${arg} )
81+
endif ( XMLTO_HAS_MODES )
82+
endif ( ${arg} STREQUAL "MODES" )
83+
endforeach ( arg ${ARGN} )
84+
if ( NOT XMLTO_MODES )
85+
set ( XMLTO_MODES html )
86+
endif ( NOT XMLTO_MODES )
87+
88+
foreach ( mode ${XMLTO_MODES} )
89+
_xmlto_file ( XMLTO_FILES_${mode} ${mode} ${XMLTO_FILES} )
90+
if ( XMLTO_ADD_DEFAULT )
91+
add_custom_target ( ${mode} ALL
92+
DEPENDS ${XMLTO_FILES_${mode}}
93+
VERBATIM
94+
)
95+
else ( XMLTO_ADD_DEFAULT )
96+
add_custom_target ( ${mode}
97+
DEPENDS ${XMLTO_FILES_${mode}}
98+
VERBATIM
99+
)
100+
endif ( XMLTO_ADD_DEFAULT )
101+
endforeach ( mode )
102+
103+
set ( XMLTO_MODES )
104+
set ( XMLTO_FILES )
105+
endmacro ( XMLTO )

0 commit comments

Comments
 (0)