commit f625ad510ae376aa6dea7033e450ee6429d4fdbd
Author: Eduard Valeyev <eduard.valeyev@gmail.com>
Date:   Thu Dec 29 20:32:16 2016 -0500

    generalized handling of PIE-disabling linker flags to prevent issues like https://github.com/ValeevGroup/tiledarray/issues/100

Index: madness-0.10.1~gite4aa500e/CMakeLists.txt
===================================================================
--- madness-0.10.1~gite4aa500e.orig/CMakeLists.txt
+++ madness-0.10.1~gite4aa500e/CMakeLists.txt
@@ -466,6 +466,11 @@ check_cxx_source_compiles(
     int main() { return 0; }
     " HAVE_UNQUALIFIED_STATIC_DECL)
 
+# Check linker feature support ===============================================
+
+include(CheckDisablePIESupport)
+check_disablepie_support(LINKER_HAS_DISABLEPIE_SUPPORT DISABLEPIE_LINKER_FLAG)
+
 # Check for applications =======================================================
 
 find_package(Doxygen)
Index: madness-0.10.1~gite4aa500e/cmake/modules/AddMADLibrary.cmake
===================================================================
--- madness-0.10.1~gite4aa500e.orig/cmake/modules/AddMADLibrary.cmake
+++ madness-0.10.1~gite4aa500e/cmake/modules/AddMADLibrary.cmake
@@ -75,9 +75,6 @@ macro(add_mad_library _name _source_file
   if(CXX11_COMPILE_FLAG)
     target_compile_options(MAD${_name} INTERFACE $<INSTALL_INTERFACE:${CXX11_COMPILE_FLAG}>)
   endif()
-  if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
-    target_link_libraries(MAD${_name} PUBLIC "-Wl,-no_pie")
-  endif()
 
 endmacro()
 
Index: madness-0.10.1~gite4aa500e/cmake/modules/CheckDisablePIESupport.cmake
===================================================================
--- /dev/null
+++ madness-0.10.1~gite4aa500e/cmake/modules/CheckDisablePIESupport.cmake
@@ -0,0 +1,27 @@
+
+include(CheckCXXCompilerFlag)
+
+macro(check_disablepie_support _outvar _disablepie_linker_flags)
+
+  if(NOT ${_outvar})
+    message(STATUS "Checking for PIE-disabling linker flags")
+  endif()
+  
+  foreach(_disablepie_test_flag "-no-pie" "-Wl,-no_pie")
+    
+    # Try compiling
+    unset(${_outvar} CACHE)
+    check_cxx_compiler_flag(${_disablepie_test_flag} ${_outvar})
+    
+    if(${_outvar})
+      set(${_disablepie_linker_flags} "${_disablepie_test_flag}" 
+          CACHE STRING "Linker flags required to disable PIE support")
+
+      mark_as_advanced(${_disablepie_linker_flags})
+      message(STATUS "PIE-disabling linker flags: ${${_disablepie_linker_flags}}")
+      break()
+    endif()
+      
+  endforeach()
+
+endmacro(check_disablepie_support)
\ No newline at end of file
Index: madness-0.10.1~gite4aa500e/src/madness/CMakeLists.txt
===================================================================
--- madness-0.10.1~gite4aa500e.orig/src/madness/CMakeLists.txt
+++ madness-0.10.1~gite4aa500e/src/madness/CMakeLists.txt
@@ -28,8 +28,8 @@ add_library(madness
 if(CXX11_COMPILE_FLAG)
   target_compile_options(madness INTERFACE $<INSTALL_INTERFACE:${CXX11_COMPILE_FLAG}>)
 endif()
-if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
-  target_link_libraries(madness PUBLIC "-Wl,-no_pie")
+if(LINKER_HAS_DISABLEPIE_SUPPORT)
+  target_link_libraries(madness PUBLIC "${DISABLEPIE_LINKER_FLAG}")
 endif()
 if(GPERFTOOLS_FOUND)
   target_include_directories(madness PUBLIC ${GPERFTOOLS_INCLUDE_DIRS})
Index: madness-0.10.1~gite4aa500e/src/madness/world/CMakeLists.txt
===================================================================
--- madness-0.10.1~gite4aa500e.orig/src/madness/world/CMakeLists.txt
+++ madness-0.10.1~gite4aa500e/src/madness/world/CMakeLists.txt
@@ -23,6 +23,10 @@ set(MADWORLD_SOURCES
 # Create the MADworld-obj and MADworld library targets
 add_mad_library(world MADWORLD_SOURCES MADWORLD_HEADERS "common;${ELEMENTAL_PACKAGE_NAME}" "madness/world")
 
+if(LINKER_HAS_DISABLEPIE_SUPPORT)
+  target_link_libraries(MADworld PUBLIC "${DISABLEPIE_LINKER_FLAG}")
+endif()
+
 # create an additional, MADworld-only, export
 install(TARGETS MADworld EXPORT madworld
       COMPONENT world
