2
# FIND_LIBRARY_WITH_DEBUG
3
# -> enhanced FIND_LIBRARY to allow the search for an
4
# optional debug library with a WIN32_DEBUG_POSTFIX similar
5
# to CMAKE_DEBUG_POSTFIX when creating a shared lib
6
# it has to be the second and third argument
8
# Copyright (c) 2007, Christian Ehrlicher, <ch.ehrlicher@gmx.de>
9
# Redistribution and use is allowed according to the terms of the BSD license.
10
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
12
MACRO(FIND_LIBRARY_WITH_DEBUG var_name win32_dbg_postfix_name dgb_postfix libname)
14
IF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
16
# no WIN32_DEBUG_POSTFIX -> simply pass all arguments to FIND_LIBRARY
17
FIND_LIBRARY(${var_name}
18
${win32_dbg_postfix_name}
24
ELSE(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
27
# on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX
29
FIND_LIBRARY(${var_name} ${libname} ${ARGN})
33
# 1. get all possible libnames
36
SET(libnames_release "")
37
SET(libnames_debug "")
39
LIST(LENGTH args listCount)
41
IF("${libname}" STREQUAL "NAMES")
45
FOREACH(i RANGE ${listCount})
46
LIST(GET args ${i} val)
49
LIST(APPEND newargs ${val})
51
IF("${val}" STREQUAL "PATHS")
52
LIST(APPEND newargs ${val})
54
ELSE("${val}" STREQUAL "PATHS")
55
LIST(APPEND libnames_release "${val}")
56
LIST(APPEND libnames_debug "${val}${dgb_postfix}")
57
ENDIF("${val}" STREQUAL "PATHS")
62
ELSE("${libname}" STREQUAL "NAMES")
65
LIST(APPEND libnames_release "${libname}")
66
LIST(APPEND libnames_debug "${libname}${dgb_postfix}")
70
ENDIF("${libname}" STREQUAL "NAMES")
72
# search the release lib
73
FIND_LIBRARY(${var_name}_RELEASE
74
NAMES ${libnames_release}
78
# search the debug lib
79
FIND_LIBRARY(${var_name}_DEBUG
80
NAMES ${libnames_debug}
84
IF(${var_name}_RELEASE AND ${var_name}_DEBUG)
87
SET(${var_name} optimized ${${var_name}_RELEASE}
88
debug ${${var_name}_DEBUG})
90
ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG)
92
IF(${var_name}_RELEASE)
95
SET(${var_name} ${${var_name}_RELEASE})
97
ELSE(${var_name}_RELEASE)
99
# only debug (or nothing) found
100
SET(${var_name} ${${var_name}_DEBUG})
102
ENDIF(${var_name}_RELEASE)
104
ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG)
106
MARK_AS_ADVANCED(${var_name}_RELEASE)
107
MARK_AS_ADVANCED(${var_name}_DEBUG)
111
ENDIF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
113
ENDMACRO(FIND_LIBRARY_WITH_DEBUG)