diff options
| author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2007-09-24 10:52:04 +0000 | 
|---|---|---|
| committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2007-09-24 10:52:04 +0000 | 
| commit | f835d46e735a731e38cfcfa39a91a97851123ad6 (patch) | |
| tree | 4ac05ac6cd0d719679f445fb2f8d96b3fac9dbaf /modules | |
| parent | 7b4afb2127ceda17d05653fcb89d58b1d5c591e0 (diff) | |
| download | extra-cmake-modules-f835d46e735a731e38cfcfa39a91a97851123ad6.tar.gz extra-cmake-modules-f835d46e735a731e38cfcfa39a91a97851123ad6.tar.bz2 | |
new macro FIND_LIBRARY_EX() for win32
svn path=/trunk/KDE/kdelibs/; revision=716251
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/FindLibraryEx.cmake | 111 | 
1 files changed, 111 insertions, 0 deletions
| diff --git a/modules/FindLibraryEx.cmake b/modules/FindLibraryEx.cmake new file mode 100644 index 00000000..30dc87b8 --- /dev/null +++ b/modules/FindLibraryEx.cmake @@ -0,0 +1,111 @@ +# +#  FIND_LIBRARY_EX - enhanced FIND_LIBRARY to allow the search for an +#                    optional debug library with a WIN32_DEBUG_POSTFIX similar +#                    to CMAKE_DEBUG_POSTFIX when creating a shared lib +#                    it has to be the second and third argument +# +# Copyright (c) 2007, Christian Ehrlicher, <ch.ehrlicher@gmx.de> +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +MACRO(FIND_LIBRARY_EX var_name win32_dbg_postfix_name dgb_postfix libname) + +  IF(NOT ${win32_dbg_postfix_name} STREQUAL "WIN32_DEBUG_POSTFIX") + +    # no WIN32_DEBUG_POSTFIX -> simply pass all arguments to FIND_LIBRARY +    FIND_LIBRARY(${var_name} +                 ${win32_dbg_postfix_name} +                 ${dgb_postfix} +                 ${libname} +                 ${ARGN} +    ) + +  ELSE(NOT ${win32_dbg_postfix_name} STREQUAL "WIN32_DEBUG_POSTFIX") + +   IF(NOT WIN32) +     # on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX + +     FIND_LIBRARY(var_name ${libname} ${ARGN}) + +   ELSE(NOT WIN32) + +     # 1. get all possible libnames +     SET(args ${ARGN}) +     SET(libnames_release "") +     SET(libnames_debug "") + +     LIST(LENGTH args listCount) + +     IF("${libname}" STREQUAL "NAMES") +       SET(append_rest 0) +       LIST(APPEND args " ") + +       FOREACH(i RANGE ${listCount}) +         LIST(GET args ${i} val) + +         IF(append_rest) +           LIST(APPEND newargs ${val}) +         ELSE(append_rest) +           IF("${val}" STREQUAL "PATHS") +             LIST(APPEND newargs ${val}) +             SET(append_rest 1) +           ELSE("${val}" STREQUAL "PATHS") +             LIST(APPEND libnames_release "${val}") +             LIST(APPEND libnames_debug   "${val}${dgb_postfix}") +           ENDIF("${val}" STREQUAL "PATHS") +         ENDIF(append_rest) + +       ENDFOREACH(i) + +     ELSE("${libname}" STREQUAL "NAMES") + +       # just one name +       LIST(APPEND libnames_release "${libname}") +       LIST(APPEND libnames_debug   "${libname}${dgb_postfix}") + +       SET(newargs ${args}) + +     ENDIF("${libname}" STREQUAL "NAMES") +      +     # search the release lib +     FIND_LIBRARY(${var_name}_RELEASE +                  NAMES ${libnames_release} +                  ${newargs} +     ) + +     # search the debug lib +     FIND_LIBRARY(${var_name}_DEBUG +                  NAMES ${libnames_debug} +                  ${newargs} +     ) + +     IF(${var_name}_RELEASE AND ${var_name}_DEBUG) + +       # both libs found +       SET(${var_name} optimized ${${var_name}_RELEASE} +                       debug     ${${var_name}_DEBUG}) + +     ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG) + +       IF(${var_name}_RELEASE) + +         # only release found +         SET(${var_name} ${${var_name}_RELEASE}) + +       ELSE(${var_name}_RELEASE) + +         # only debug (or nothing) found +         SET(${var_name} ${${var_name}_DEBUG}) + +       ENDIF(${var_name}_RELEASE) +        +     ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG) + +     MARK_AS_ADVANCED(${var_name}_RELEASE) +     MARK_AS_ADVANCED(${var_name}_DEBUG) + +   ENDIF(NOT WIN32) + +  ENDIF(NOT ${win32_dbg_postfix_name} STREQUAL "WIN32_DEBUG_POSTFIX") + +ENDMACRO(FIND_LIBRARY_EX) | 
