forked from ANTsX/ANTs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
External_Cppcheck.cmake
87 lines (75 loc) · 3.78 KB
/
External_Cppcheck.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Make sure this file is included only once by creating globally unique varibles
# based on the name of this included file.
get_filename_component(CMAKE_CURRENT_LIST_FILENAME ${CMAKE_CURRENT_LIST_FILE} NAME_WE)
if(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED)
return()
endif()
set(${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED 1)
## External_${extProjName}.cmake files can be recurisvely included,
## and cmake variables are global, so when including sub projects it
## is important make the extProjName and proj variables
## appear to stay constant in one of these files.
## Store global variables before overwriting (then restore at end of this file.)
ProjectDependancyPush(CACHED_extProjName ${extProjName})
ProjectDependancyPush(CACHED_proj ${proj})
# Make sure that the ExtProjName/IntProjName variables are unique globally
# even if other External_${ExtProjName}.cmake files are sourced by
# SlicerMacroCheckExternalProjectDependency
set(extProjName Cppcheck ) #The find_package known name
set(proj Cppcheck ) #This local name
set(${extProjName}_REQUIRED_VERSION "") #If a required version is necessary, then set this, else leave blank
#if(${USE_SYSTEM_${extProjName}})
# unset(${extProjName}_DIR CACHE)
#endif()
# Sanity checks
if(DEFINED ${extProjName}_DIR AND NOT EXISTS ${${extProjName}_DIR})
message(FATAL_ERROR "${extProjName}_DIR variable is defined but corresponds to non-existing directory (${${extProjName}_DIR})")
endif()
# Set dependency list
set(${proj}_DEPENDENCIES "")
# Include dependent projects if any
SlicerMacroCheckExternalProjectDependency(${proj})
if(NOT ( DEFINED "${extProjName}_DIR" OR ( DEFINED "${USE_SYSTEM_${extProjName}}" AND NOT "${USE_SYSTEM_${extProjName}}" ) ) )
#message(STATUS "${__indent}Adding project ${proj}")
# Set CMake OSX variable to pass down the external project
set(CMAKE_OSX_EXTERNAL_PROJECT_ARGS)
if(APPLE)
list(APPEND CMAKE_OSX_EXTERNAL_PROJECT_ARGS
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET})
endif()
### --- Project specific additions here
### --- End Project specific additions
set(${proj}_REPOSITORY ${git_protocol}://github.com/danmar/cppcheck.git)
set(${proj}_GIT_TAG origin/master)
ExternalProject_Add(${proj}
GIT_REPOSITORY ${${proj}_REPOSITORY}
GIT_TAG ${${proj}_GIT_TAG}
SOURCE_DIR ${proj}
BUILD_IN_SOURCE 1
LOG_CONFIGURE 0 # Wrap configure in script to ignore log output from dashboards
LOG_BUILD 0 # Wrap build in script to to ignore log output from dashboards
LOG_TEST 0 # Wrap test in script to to ignore log output from dashboards
LOG_INSTALL 0 # Wrap install in script to to ignore log output from dashboards
${cmakeversion_external_update} "${cmakeversion_external_update_value}"
CONFIGURE_COMMAND ""
BUILD_COMMAND HAVE_RULES=no CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${CMAKE_MAKE_PROGRAM}
INSTALL_COMMAND HAVE_RULES=no DESTDIR=${CMAKE_BINARY_DIR}/ PREFIX=Utils ${CMAKE_MAKE_PROGRAM} install
DEPENDS
${${proj}_DEPENDENCIES}
)
set(${extProjName}_EXE ${CMAKE_BINARY_DIR}/Utils/bin/cppcheck)
else()
if(${USE_SYSTEM_${extProjName}})
find_program(${proj}_EXE cppcheck DOC "Path of Cppcheck program")
if(NOT ${proj}_EXE)
message(FATAL_ERROR "To use the system ${extProjName}, set ${extProjName}_EXE")
endif()
message("USING the system ${extProjName}, set ${extProjName}_EXE=${${extProjName}_EXE}")
endif()
# The project is provided using ${extProjName}_EXE, nevertheless since other
# project may depend on ${extProjName}, let's add an 'empty' one
SlicerMacroEmptyExternalProject(${proj} "${${proj}_DEPENDENCIES}")
endif()
list(APPEND ${CMAKE_PROJECT_NAME}_SUPERBUILD_EP_VARS ${extProjName}_EXE:FILEPATH)