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
35
SET(libnames_release "")
36
SET(libnames_debug "")
38
LIST(LENGTH args listCount)
40
IF("${libname}" STREQUAL "NAMES")
44
FOREACH(i RANGE ${listCount})
45
LIST(GET args ${i} val)
48
LIST(APPEND newargs ${val})
50
IF("${val}" STREQUAL "PATHS")
51
LIST(APPEND newargs ${val})
53
ELSE("${val}" STREQUAL "PATHS")
54
LIST(APPEND libnames_release "${val}")
55
LIST(APPEND libnames_debug "${val}${dgb_postfix}")
56
ENDIF("${val}" STREQUAL "PATHS")
61
ELSE("${libname}" STREQUAL "NAMES")
64
LIST(APPEND libnames_release "${libname}")
65
LIST(APPEND libnames_debug "${libname}${dgb_postfix}")
69
ENDIF("${libname}" STREQUAL "NAMES")
71
# search the release lib
72
FIND_LIBRARY(${var_name}_RELEASE
73
NAMES ${libnames_release}
77
# search the debug lib
78
FIND_LIBRARY(${var_name}_DEBUG
79
NAMES ${libnames_debug}
83
IF(${var_name}_RELEASE AND ${var_name}_DEBUG)
86
SET(${var_name} optimized ${${var_name}_RELEASE}
87
debug ${${var_name}_DEBUG})
89
ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG)
91
IF(${var_name}_RELEASE)
94
SET(${var_name} ${${var_name}_RELEASE})
96
ELSE(${var_name}_RELEASE)
98
# only debug (or nothing) found
99
SET(${var_name} ${${var_name}_DEBUG})
101
ENDIF(${var_name}_RELEASE)
103
ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG)
105
MARK_AS_ADVANCED(${var_name}_RELEASE)
106
MARK_AS_ADVANCED(${var_name}_DEBUG)
110
ENDIF(NOT ${win32_dbg_postfix_name} STREQUAL "WIN32_DEBUG_POSTFIX")
112
ENDMACRO(FIND_LIBRARY_WITH_DEBUG)