Ok, this is a weird one. Apparently platform detection either fails or isn' "remembered" when "-S ." is used to specify the source directory but if "." is added to the end of the cmake command line it configures fine. 

Shouldn't these work exactly the same?

When "-S ." is used (as it's set in %cmake) the configure fails in two ways:

1. GNUInstallDirs complains it can't set CMAKE_INSTALL_LIBDIR

CMake Warning (dev) at /usr/share/cmake/Modules/GNUInstallDirs.cmake:239 (message):
  Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
  target architecture is known.  Please enable at least one language before
  including GNUInstallDirs.


2. Some libraries are not found, I think for the same reason. Using --debug-find I see that no incarnation of "lib64" is checked:

  find_library considered the following locations:

    /builddir/.local/bin/lib/(lib)mbedtls(\.so|\.a)
    /builddir/.local/bin/(lib)mbedtls(\.so|\.a)
    /builddir/bin/lib/(lib)mbedtls(\.so|\.a)
    /builddir/bin/(lib)mbedtls(\.so|\.a)
    /usr/bin/lib/(lib)mbedtls(\.so|\.a)
    /usr/bin/(lib)mbedtls(\.so|\.a)
    /bin/lib/(lib)mbedtls(\.so|\.a)
    /bin/(lib)mbedtls(\.so|\.a)
    /usr/sbin/lib/(lib)mbedtls(\.so|\.a)
    /usr/sbin/(lib)mbedtls(\.so|\.a)
    /sbin/lib/(lib)mbedtls(\.so|\.a)
    /sbin/(lib)mbedtls(\.so|\.a)
    /usr/local/sbin/lib/(lib)mbedtls(\.so|\.a)
    /usr/local/sbin/(lib)mbedtls(\.so|\.a)
    /usr/local/lib/lib/(lib)mbedtls(\.so|\.a)
    /usr/local/lib/(lib)mbedtls(\.so|\.a)
    /usr/local/lib/(lib)mbedtls(\.so|\.a)
    /usr/local/(lib)mbedtls(\.so|\.a)
    /usr/lib/lib/(lib)mbedtls(\.so|\.a)
    /usr/lib/(lib)mbedtls(\.so|\.a)
    /usr/lib/(lib)mbedtls(\.so|\.a)
    /usr/(lib)mbedtls(\.so|\.a)
    /lib/lib/(lib)mbedtls(\.so|\.a)
    /lib/(lib)mbedtls(\.so|\.a)
    /usr/X11R6/lib/lib/(lib)mbedtls(\.so|\.a)
    /usr/X11R6/lib/(lib)mbedtls(\.so|\.a)
    /usr/X11R6/lib/(lib)mbedtls(\.so|\.a)
    /usr/X11R6/(lib)mbedtls(\.so|\.a)
    /usr/pkg/lib/lib/(lib)mbedtls(\.so|\.a)
    /usr/pkg/lib/(lib)mbedtls(\.so|\.a)
    /usr/pkg/lib/(lib)mbedtls(\.so|\.a)
    /usr/pkg/(lib)mbedtls(\.so|\.a)
    /opt/lib/lib/(lib)mbedtls(\.so|\.a)
    /opt/lib/(lib)mbedtls(\.so|\.a)
    /opt/lib/(lib)mbedtls(\.so|\.a)
    /opt/(lib)mbedtls(\.so|\.a)
    /usr/lib/X11/lib/(lib)mbedtls(\.so|\.a)
    /usr/lib/X11/(lib)mbedtls(\.so|\.a)


Looking at the source of GNUInstallDirs the only reason to see that message is:

  if (NOT DEFINED CMAKE_SYSTEM_NAME OR NOT DEFINED CMAKE_SIZEOF_VOID_P)
    message(AUTHOR_WARNING
      "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
      "Please enable at least one language before including GNUInstallDirs.")
  endif()


So why the heck would using "-S ." make any difference?