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)