Browse Source

Merge topic 'test-SelectLibraryConfigurations'

a22f4fa SelectLibraryConfigurations: fix for release and debug libs being the same
5052fbc SelectLibraryConfigurations: add testcase
David Cole 13 years ago
parent
commit
23a257628b

+ 9 - 5
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
     # if only the debug version was found, set the release value to be the
     # debug value.
     # debug value.
     _set_library_name( ${basename} DEBUG RELEASE )
     _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
     if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND
            NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE )
            NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE )
         # if the generator supports configuration types or CMAKE_BUILD_TYPE
         # 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}" )
                 list( APPEND ${basename}_LIBRARY debug "${_libname}" )
             endforeach()
             endforeach()
             set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" )
             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()
     endif()
     endif()
 
 

+ 2 - 0
Tests/CMakeOnly/CMakeLists.txt

@@ -27,6 +27,8 @@ endif()
 
 
 add_CMakeOnly_test(AllFindModules)
 add_CMakeOnly_test(AllFindModules)
 
 
+add_CMakeOnly_test(SelectLibraryConfigurations)
+
 add_CMakeOnly_test(TargetScope)
 add_CMakeOnly_test(TargetScope)
 
 
 add_CMakeOnly_test(find_library)
 add_CMakeOnly_test(find_library)

+ 64 - 0
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")