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:")
diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
index 8403e7306894667f7b63a93f844a4562d938d0d3..90d030a55245ad5ee4e0d691a093d6e160567fa7 100644
--- a/bindings/python/CMakeLists.txt
+++ b/bindings/python/CMakeLists.txt
@@ -1,7 +1,3 @@
-if(NOT BUILD_SHARED_LIBS)
-  message(ERROR "Python bindings are only supported for shared libraries")
-endif()
-
 set(Python_ADDITIONAL_VERSIONS 3 2.7)
 find_package(PythonInterp REQUIRED)
 find_package(PythonLibsNew REQUIRED)
diff --git a/cmake/DetectOptions.cmake b/cmake/DetectOptions.cmake
index a484a5957f7c862b724cd102639b6339e7460c98..5022c676d3c31fe1dbaa82907f0ec9b72417a614 100644
--- a/cmake/DetectOptions.cmake
+++ b/cmake/DetectOptions.cmake
@@ -94,7 +94,7 @@ list(INSERT CMAKE_MODULE_PATH 0
   "${ADIOS2_SOURCE_DIR}/thirdparty/pybind11/pybind11/tools"
 )
 if(ADIOS2_USE_Python STREQUAL AUTO)
-  if(BUILD_SHARED_LIBS)
+  if(SHARED_LIBS_SUPPORTED AND ADIOS2_ENABLE_PIC)
     set(Python_ADDITIONAL_VERSIONS 3 2.7)
     find_package(PythonInterp)
     find_package(PythonLibsNew)