Commit | Line | Data |
---|---|---|
72b9787e JB |
1 | # Module for locating Visual Leak Detector. |
2 | # | |
3 | # Customizable variables: | |
4 | # VLD_ROOT_DIR | |
5 | # This variable points to the Visual Leak Detector root directory. By | |
6 | # default, the module looks for the installation directory by examining the | |
7 | # Program Files/Program Files (x86) folders and the VLDROOT environment | |
8 | # variable. | |
9 | # | |
10 | # Read-only variables: | |
11 | # VLD_FOUND | |
12 | # Indicates that the library has been found. | |
13 | # | |
14 | # VLD_INCLUDE_DIRS | |
15 | # Points to the Visual Leak Detector include directory. | |
16 | # | |
17 | # VLD_LIBRARY_DIRS | |
18 | # Points to the Visual Leak Detector directory that contains the libraries. | |
19 | # The content of this variable can be passed to link_directories. | |
20 | # | |
21 | # VLD_LIBRARIES | |
22 | # Points to the Visual Leak Detector libraries that can be passed to | |
23 | # target_link_libararies. | |
24 | # | |
25 | # | |
26 | # Copyright (c) 2012 Sergiu Dotenco | |
27 | # | |
28 | # Permission is hereby granted, free of charge, to any person obtaining a copy | |
29 | # of this software and associated documentation files (the "Software"), to deal | |
30 | # in the Software without restriction, including without limitation the rights | |
31 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
32 | # copies of the Software, and to permit persons to whom the Software is | |
33 | # furnished to do so, subject to the following conditions: | |
34 | # | |
35 | # The above copyright notice and this permission notice shall be included in all | |
36 | # copies or substantial portions of the Software. | |
37 | # | |
38 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
39 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
40 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
41 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
42 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
43 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
44 | # SOFTWARE. | |
45 | ||
46 | INCLUDE (FindPackageHandleStandardArgs) | |
47 | ||
48 | SET (_VLD_POSSIBLE_LIB_SUFFIXES lib) | |
49 | ||
50 | # Version 2.0 uses vld_x86 and vld_x64 instead of simply vld as library names | |
51 | IF (CMAKE_SIZEOF_VOID_P EQUAL 4) | |
52 | LIST (APPEND _VLD_POSSIBLE_LIB_SUFFIXES lib/Win32) | |
53 | ELSEIF (CMAKE_SIZEOF_VOID_P EQUAL 8) | |
54 | LIST (APPEND _VLD_POSSIBLE_LIB_SUFFIXES lib/Win64) | |
55 | ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4) | |
56 | ||
57 | FIND_PATH (VLD_ROOT_DIR | |
58 | NAMES include/vld.h | |
59 | PATHS ENV VLDROOT | |
60 | "$ENV{PROGRAMFILES}/Visual Leak Detector" | |
61 | "$ENV{PROGRAMFILES(X86)}/Visual Leak Detector" | |
62 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Visual Leak Detector;InstallLocation]" | |
63 | "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Visual Leak Detector;InstallLocation]" | |
64 | DOC "VLD root directory") | |
65 | ||
66 | FIND_PATH (VLD_INCLUDE_DIR | |
67 | NAMES vld.h | |
68 | HINTS ${VLD_ROOT_DIR} | |
69 | PATH_SUFFIXES include | |
70 | DOC "VLD include directory") | |
71 | ||
72 | FIND_LIBRARY (VLD_LIBRARY_DEBUG | |
73 | NAMES vld | |
74 | HINTS ${VLD_ROOT_DIR} | |
75 | PATH_SUFFIXES ${_VLD_POSSIBLE_LIB_SUFFIXES} | |
76 | DOC "VLD debug library") | |
77 | ||
78 | IF (VLD_ROOT_DIR) | |
79 | SET (_VLD_VERSION_FILE ${VLD_ROOT_DIR}/CHANGES.txt) | |
80 | ||
81 | IF (EXISTS ${_VLD_VERSION_FILE}) | |
82 | SET (_VLD_VERSION_REGEX | |
83 | "Visual Leak Detector \\(VLD\\) Version (([0-9]+)\\.([0-9]+)([a-z]|(.([0-9]+)))?)") | |
84 | FILE (STRINGS ${_VLD_VERSION_FILE} _VLD_VERSION_TMP REGEX | |
85 | ${_VLD_VERSION_REGEX}) | |
86 | ||
87 | STRING (REGEX REPLACE ${_VLD_VERSION_REGEX} "\\1" _VLD_VERSION_TMP | |
88 | "${_VLD_VERSION_TMP}") | |
89 | ||
90 | STRING (REGEX REPLACE "([0-9]+).([0-9]+).*" "\\1" VLD_VERSION_MAJOR | |
91 | "${_VLD_VERSION_TMP}") | |
92 | STRING (REGEX REPLACE "([0-9]+).([0-9]+).*" "\\2" VLD_VERSION_MINOR | |
93 | "${_VLD_VERSION_TMP}") | |
94 | ||
95 | SET (VLD_VERSION ${VLD_VERSION_MAJOR}.${VLD_VERSION_MINOR}) | |
96 | ||
97 | IF ("${_VLD_VERSION_TMP}" MATCHES "^([0-9]+).([0-9]+).([0-9]+)$") | |
98 | # major.minor.patch version numbering scheme | |
99 | STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\3" | |
100 | VLD_VERSION_PATCH "${_VLD_VERSION_TMP}") | |
101 | SET (VLD_VERSION "${VLD_VERSION}.${VLD_VERSION_PATCH}") | |
102 | SET (VLD_VERSION_COUNT 3) | |
103 | ELSE ("${_VLD_VERSION_TMP}" MATCHES "^([0-9]+).([0-9]+).([0-9]+)$") | |
104 | # major.minor version numbering scheme. The trailing letter is ignored. | |
105 | SET (VLD_VERSION_COUNT 2) | |
106 | ENDIF ("${_VLD_VERSION_TMP}" MATCHES "^([0-9]+).([0-9]+).([0-9]+)$") | |
107 | ENDIF (EXISTS ${_VLD_VERSION_FILE}) | |
108 | ENDIF (VLD_ROOT_DIR) | |
109 | ||
110 | IF (VLD_LIBRARY_DEBUG) | |
111 | SET (VLD_LIBRARY debug ${VLD_LIBRARY_DEBUG} CACHE DOC "VLD library") | |
112 | GET_FILENAME_COMPONENT (_VLD_LIBRARY_DIR ${VLD_LIBRARY_DEBUG} PATH) | |
113 | SET (VLD_LIBRARY_DIR ${_VLD_LIBRARY_DIR} CACHE PATH "VLD library directory") | |
114 | ENDIF (VLD_LIBRARY_DEBUG) | |
115 | ||
116 | SET (VLD_INCLUDE_DIRS ${VLD_INCLUDE_DIR}) | |
117 | SET (VLD_LIBRARY_DIRS ${VLD_LIBRARY_DIR}) | |
118 | SET (VLD_LIBRARIES ${VLD_LIBRARY}) | |
119 | ||
120 | MARK_AS_ADVANCED (VLD_INCLUDE_DIR VLD_LIBRARY_DIR VLD_LIBRARY_DEBUG VLD_LIBRARY) | |
121 | ||
122 | FIND_PACKAGE_HANDLE_STANDARD_ARGS (VLD REQUIRED_VARS VLD_ROOT_DIR | |
123 | VLD_INCLUDE_DIR VLD_LIBRARY VERSION_VAR VLD_VERSION) |