~ubuntu-branches/ubuntu/trusty/jreen/trusty

« back to all changes in this revision

Viewing changes to cmake/FindLibraryWithDebug.cmake

  • Committer: Package Import Robot
  • Author(s): Prasad Murthy
  • Date: 2013-03-08 00:00:33 UTC
  • Revision ID: package-import@ubuntu.com-20130308000033-x8thp6syo1kkh63s
Tags: upstream-1.1.1
ImportĀ upstreamĀ versionĀ 1.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
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
 
7
 
 
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.
 
11
 
 
12
MACRO(FIND_LIBRARY_WITH_DEBUG var_name win32_dbg_postfix_name dgb_postfix libname)
 
13
 
 
14
  IF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
 
15
 
 
16
     # no WIN32_DEBUG_POSTFIX -> simply pass all arguments to FIND_LIBRARY
 
17
     FIND_LIBRARY(${var_name}
 
18
                  ${win32_dbg_postfix_name}
 
19
                  ${dgb_postfix}
 
20
                  ${libname}
 
21
                  ${ARGN}
 
22
     )
 
23
 
 
24
  ELSE(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
 
25
 
 
26
    IF(NOT WIN32)
 
27
      # on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX
 
28
 
 
29
      FIND_LIBRARY(${var_name} ${libname} ${ARGN})
 
30
 
 
31
    ELSE(NOT WIN32)
 
32
 
 
33
      # 1. get all possible libnames
 
34
      SET(args ${ARGN})
 
35
      SET(newargs "")
 
36
      SET(libnames_release "")
 
37
      SET(libnames_debug "")
 
38
 
 
39
      LIST(LENGTH args listCount)
 
40
 
 
41
      IF("${libname}" STREQUAL "NAMES")
 
42
        SET(append_rest 0)
 
43
        LIST(APPEND args " ")
 
44
 
 
45
        FOREACH(i RANGE ${listCount})
 
46
          LIST(GET args ${i} val)
 
47
 
 
48
          IF(append_rest)
 
49
            LIST(APPEND newargs ${val})
 
50
          ELSE(append_rest)
 
51
            IF("${val}" STREQUAL "PATHS")
 
52
              LIST(APPEND newargs ${val})
 
53
              SET(append_rest 1)
 
54
            ELSE("${val}" STREQUAL "PATHS")
 
55
              LIST(APPEND libnames_release "${val}")
 
56
              LIST(APPEND libnames_debug   "${val}${dgb_postfix}")
 
57
            ENDIF("${val}" STREQUAL "PATHS")
 
58
          ENDIF(append_rest)
 
59
 
 
60
        ENDFOREACH(i)
 
61
 
 
62
      ELSE("${libname}" STREQUAL "NAMES")
 
63
 
 
64
        # just one name
 
65
        LIST(APPEND libnames_release "${libname}")
 
66
        LIST(APPEND libnames_debug   "${libname}${dgb_postfix}")
 
67
 
 
68
        SET(newargs ${args})
 
69
 
 
70
      ENDIF("${libname}" STREQUAL "NAMES")
 
71
 
 
72
      # search the release lib
 
73
      FIND_LIBRARY(${var_name}_RELEASE
 
74
                   NAMES ${libnames_release}
 
75
                   ${newargs}
 
76
      )
 
77
 
 
78
      # search the debug lib
 
79
      FIND_LIBRARY(${var_name}_DEBUG
 
80
                   NAMES ${libnames_debug}
 
81
                   ${newargs}
 
82
      )
 
83
 
 
84
      IF(${var_name}_RELEASE AND ${var_name}_DEBUG)
 
85
 
 
86
        # both libs found
 
87
        SET(${var_name} optimized ${${var_name}_RELEASE}
 
88
                        debug     ${${var_name}_DEBUG})
 
89
 
 
90
      ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG)
 
91
 
 
92
        IF(${var_name}_RELEASE)
 
93
 
 
94
          # only release found
 
95
          SET(${var_name} ${${var_name}_RELEASE})
 
96
 
 
97
        ELSE(${var_name}_RELEASE)
 
98
 
 
99
          # only debug (or nothing) found
 
100
          SET(${var_name} ${${var_name}_DEBUG})
 
101
 
 
102
        ENDIF(${var_name}_RELEASE)
 
103
       
 
104
      ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG)
 
105
 
 
106
      MARK_AS_ADVANCED(${var_name}_RELEASE)
 
107
      MARK_AS_ADVANCED(${var_name}_DEBUG)
 
108
 
 
109
    ENDIF(NOT WIN32)
 
110
 
 
111
  ENDIF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX")
 
112
 
 
113
ENDMACRO(FIND_LIBRARY_WITH_DEBUG)