diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf691d70ac8eaa6a8aae9731a4f01979bb9f335a..cd427a91191a55ca71365b5db2a82a23718074a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,31 +55,40 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
 
 include(CMakeDependentOption)
 
-# Setup shared library / -fPIC stuff
+# Setup shared library defaults.  If explicitly specified somehow, then default 
+# to that.  Otherwise base the default on whether or not shared libs are even
+# supported.
 get_property(SHARED_LIBS_SUPPORTED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
-if(DEFINED BUILD_SHARED_LIBS)
-  set(ADIOS2_BUILD_SHARED_LIBS_DEFAULT ${BUILD_SHARED_LIBS})
-elseif(DEFINED ADIOS2_BUILD_SHARED_LIBS)
+if(DEFINED ADIOS2_BUILD_SHARED_LIBS)
   set(ADIOS2_BUILD_SHARED_LIBS_DEFAULT ${ADIOS2_BUILD_SHARED_LIBS})
+elseif(DEFINED BUILD_SHARED_LIBS)
+  set(ADIOS2_BUILD_SHARED_LIBS_DEFAULT ${BUILD_SHARED_LIBS})
 else()
   set(ADIOS2_BUILD_SHARED_LIBS_DEFAULT ${SHARED_LIBS_SUPPORTED})
 endif()
-unset(BUILD_SHARED_LIBS)
-option(ADIOS2_BUILD_SHARED_LIBS "Build shared libraries (so/dylib/dll)." ${ADIOS2_BUILD_SHARED_LIBS})
+cmake_dependent_option(ADIOS2_BUILD_SHARED_LIBS
+  "Build shared libraries (so/dylib/dll)." ${ADIOS2_BUILD_SHARED_LIBS_DEFAULT}
+  "SHARED_LIBS_SUPPORTED" OFF
+)
 set(BUILD_SHARED_LIBS ${ADIOS2_BUILD_SHARED_LIBS})
-if(NOT SHARED_LIBS_SUPPORTED)
-  if(BUILD_SHARED_LIBS)
-    message(WARNING "A shared library build was requested but is not supported on this platform / compiler.  Unexpected build results will likely occur")
-  endif()
-  set(BUILD_SHARED_LIBS OFF)
+mark_as_advanced(BUILD_SHARED_LIBS)
+
+# Setup PIC defaults.  If explicitly specified somehow, then default 
+# to that.  Otherwise base the default on whether or not shared libs are even
+# supported.
+if(DEFINED ADIOS2_ENABLE_PIC)
+  set(ADIOS2_ENABLE_PIC_DEFAULT ${ADIOS2_ENABLE_PIC})
+elseif(DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
+  set(ADIOS2_ENABLE_PIC_DEFAULT ${CMAKE_POSITION_INDEPENDENT_CODE})
+else()
+  set(ADIOS2_ENABLE_PIC_DEFAULT ${SHARED_LIBS_SUPPORTED})
 endif()
-
 cmake_dependent_option(ADIOS2_ENABLE_PIC
-  "Build with Position Independent Code" ON
-  "SHARED_LIBS_SUPPORTED" OFF)
-if(ADIOS2_ENABLE_PIC)
-  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-endif()
+  "Build with Position Independent Code" ${ADIOS2_ENABLE_PIC_DEFAULT}
+  "SHARED_LIBS_SUPPORTED" OFF
+)
+set(CMAKE_POSITION_INDEPENDENT_CODE ${ADIOS2_ENABLE_PIC})
+mark_as_advanced(CMAKE_POSITION_INDEPENDENT_CODE)
 
 adios_option(BZip2     "Enable support for BZip2 transforms" AUTO)
 adios_option(ZFP       "Enable support for ZFP transforms" AUTO)
@@ -162,10 +171,13 @@ message("")
 message("  Installation prefix: ${CMAKE_INSTALL_PREFIX}")
 message("  Features:")
 if(BUILD_SHARED_LIBS)
-  message("    Library Type: shared")
+  set(msg_lib_type "shared")
+elseif(CMAKE_POSITION_INDEPENDENT_CODE)
+  set(msg_lib_type "static (with PIC)")
 else()
-  message("    Library Type: static")
+  set(msg_lib_type "static (without PIC)")
 endif()
+message("    Library Type: ${msg_lib_type}")
 message("    Build Type:   ${CMAKE_BUILD_TYPE}")
 message("    Testing: ${BUILD_TESTING}")
 message("    Build Options:")