diff options
author | David Cole <david.cole@kitware.com> | 2012-10-23 20:37:37 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2012-10-23 20:37:37 (GMT) |
commit | 23a257628bb70f0e182c9b537ddab2b452fbddb0 (patch) | |
tree | 877912194213200aea07cdd629cea3a88efcfc2e | |
parent | c26373f6ca9762c0bd9950eb3aa5f1183f370842 (diff) | |
parent | a22f4fabb7eb6a978c5f0ddf7988d1c57793f7e6 (diff) | |
download | CMake-23a257628bb70f0e182c9b537ddab2b452fbddb0.zip CMake-23a257628bb70f0e182c9b537ddab2b452fbddb0.tar.gz CMake-23a257628bb70f0e182c9b537ddab2b452fbddb0.tar.bz2 |
Merge topic 'test-SelectLibraryConfigurations'
a22f4fa SelectLibraryConfigurations: fix for release and debug libs being the same
5052fbc SelectLibraryConfigurations: add testcase
-rw-r--r-- | Modules/SelectLibraryConfigurations.cmake | 14 | ||||
-rw-r--r-- | Tests/CMakeOnly/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/CMakeOnly/SelectLibraryConfigurations/CMakeLists.txt | 64 |
3 files changed, 75 insertions, 5 deletions
diff --git a/Modules/SelectLibraryConfigurations.cmake b/Modules/SelectLibraryConfigurations.cmake index eb4d885..62137bb 100644 --- a/Modules/SelectLibraryConfigurations.cmake +++ b/Modules/SelectLibraryConfigurations.cmake @@ -48,6 +48,15 @@ macro( select_library_configurations basename ) # if only the debug version was found, set the release value to be the # debug value. _set_library_name( ${basename} DEBUG RELEASE ) + + # Set a default case, which will come into effect if + # -no build type is set and the generator only supports one build type + # at a time (i.e. CMAKE_CONFIGURATION_TYPES is false) + # -${basename}_LIBRARY_DEBUG and ${basename}_LIBRARY_RELEASE are the same + # -${basename}_LIBRARY_DEBUG and ${basename}_LIBRARY_RELEASE are both empty + set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) + set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} ) + if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE ) # if the generator supports configuration types or CMAKE_BUILD_TYPE @@ -61,11 +70,6 @@ macro( select_library_configurations basename ) list( APPEND ${basename}_LIBRARY debug "${_libname}" ) endforeach() set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" ) - else() - # If there are no configuration types or build type, just use - # the release version - set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) - set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} ) endif() endif() diff --git a/Tests/CMakeOnly/CMakeLists.txt b/Tests/CMakeOnly/CMakeLists.txt index ba681d8..51a630f 100644 --- a/Tests/CMakeOnly/CMakeLists.txt +++ b/Tests/CMakeOnly/CMakeLists.txt @@ -27,6 +27,8 @@ endif() add_CMakeOnly_test(AllFindModules) +add_CMakeOnly_test(SelectLibraryConfigurations) + add_CMakeOnly_test(TargetScope) add_CMakeOnly_test(find_library) diff --git a/Tests/CMakeOnly/SelectLibraryConfigurations/CMakeLists.txt b/Tests/CMakeOnly/SelectLibraryConfigurations/CMakeLists.txt new file mode 100644 index 0000000..5bf0f8a --- /dev/null +++ b/Tests/CMakeOnly/SelectLibraryConfigurations/CMakeLists.txt @@ -0,0 +1,64 @@ +cmake_minimum_required(VERSION 2.8) + +project(SelectLibraryConfigurations NONE) + +include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake) + +macro(check_slc basename expect) + message(STATUS "checking select_library_configurations(${basename})") + select_library_configurations(${basename}) + if (NOT ${basename}_LIBRARY STREQUAL "${expect}") + message(SEND_ERROR "select_library_configurations(${basename}) returned '${${basename}_LIBRARY}' but '${expect}' was expected") + endif () + if (NOT ${basename}_LIBRARY STREQUAL "${${basename}_LIBRARIES}") + message(SEND_ERROR "select_library_configurations(${basename}) LIBRARY: '${${basename}_LIBRARY}' LIBRARIES: '${${basename}_LIBRARIES}'") + endif () +endmacro(check_slc) + +if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + set(NOTYPE_RELONLY_LIBRARY_RELEASE "opt") + check_slc(NOTYPE_RELONLY "opt") + + set(NOTYPE_DBGONLY_LIBRARY_DEBUG "dbg") + check_slc(NOTYPE_DBGONLY "dbg") + + set(NOTYPE_RELDBG_LIBRARY_RELEASE "opt") + set(NOTYPE_RELDBG_LIBRARY_DEBUG "dbg") + check_slc(NOTYPE_RELDBG "opt") + + set(CMAKE_BUILD_TYPE Debug) +endif () + +check_slc(empty "") + +set(OPTONLY_LIBRARY_RELEASE "opt") +check_slc(OPTONLY "opt") + +set(DBGONLY_LIBRARY_RELEASE "dbg") +check_slc(DBGONLY "dbg") + +set(SAME_LIBRARY_RELEASE "same") +set(SAME_LIBRARY_DEBUG "same") +check_slc(SAME "same") + +set(OPTONLYLIST_LIBRARY_RELEASE "opt1;opt2") +check_slc(OPTONLYLIST "opt1;opt2") + +set(DBGONLYLIST_LIBRARY_RELEASE "dbg1;dbg2") +check_slc(DBGONLYLIST "dbg1;dbg2") + +set(OPT1DBG1_LIBRARY_RELEASE "opt") +set(OPT1DBG1_LIBRARY_DEBUG "dbg") +check_slc(OPT1DBG1 "optimized;opt;debug;dbg") + +set(OPT1DBG2_LIBRARY_RELEASE "opt") +set(OPT1DBG2_LIBRARY_DEBUG "dbg1;dbg2") +check_slc(OPT1DBG2 "optimized;opt;debug;dbg1;debug;dbg2") + +set(OPT2DBG1_LIBRARY_RELEASE "opt1;opt2") +set(OPT2DBG1_LIBRARY_DEBUG "dbg") +check_slc(OPT2DBG1 "optimized;opt1;optimized;opt2;debug;dbg") + +set(OPT2DBG2_LIBRARY_RELEASE "opt1;opt2") +set(OPT2DBG2_LIBRARY_DEBUG "dbg1;dbg2") +check_slc(OPT2DBG2 "optimized;opt1;optimized;opt2;debug;dbg1;debug;dbg2") |