Imported Upstream version 1.4
[deb_x265.git] / source / cmake / FindVLD.cmake
CommitLineData
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
46INCLUDE (FindPackageHandleStandardArgs)
47
48SET (_VLD_POSSIBLE_LIB_SUFFIXES lib)
49
50# Version 2.0 uses vld_x86 and vld_x64 instead of simply vld as library names
51IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
52 LIST (APPEND _VLD_POSSIBLE_LIB_SUFFIXES lib/Win32)
53ELSEIF (CMAKE_SIZEOF_VOID_P EQUAL 8)
54 LIST (APPEND _VLD_POSSIBLE_LIB_SUFFIXES lib/Win64)
55ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
56
57FIND_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
66FIND_PATH (VLD_INCLUDE_DIR
67 NAMES vld.h
68 HINTS ${VLD_ROOT_DIR}
69 PATH_SUFFIXES include
70 DOC "VLD include directory")
71
72FIND_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
78IF (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})
108ENDIF (VLD_ROOT_DIR)
109
110IF (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")
114ENDIF (VLD_LIBRARY_DEBUG)
115
116SET (VLD_INCLUDE_DIRS ${VLD_INCLUDE_DIR})
117SET (VLD_LIBRARY_DIRS ${VLD_LIBRARY_DIR})
118SET (VLD_LIBRARIES ${VLD_LIBRARY})
119
120MARK_AS_ADVANCED (VLD_INCLUDE_DIR VLD_LIBRARY_DIR VLD_LIBRARY_DEBUG VLD_LIBRARY)
121
122FIND_PACKAGE_HANDLE_STANDARD_ARGS (VLD REQUIRED_VARS VLD_ROOT_DIR
123 VLD_INCLUDE_DIR VLD_LIBRARY VERSION_VAR VLD_VERSION)