diff --git a/cmake/Packages.cmake b/cmake/Packages.cmake
index 07c60eb..c736b3e 100644
--- a/cmake/Packages.cmake
+++ b/cmake/Packages.cmake
@@ -12,24 +12,29 @@ set_target_properties(${target} PROPERTIES
   IMPORTED_LOCATION \"${target_path}\")")
 endforeach()
 configure_file(AMDDeviceLibsConfig.cmake.in
-  ${PACKAGE_PREFIX}/AMDDeviceLibsConfig.cmake
+  lib/cmake/AMDDeviceLibs/AMDDeviceLibsConfig.cmake
   @ONLY)
 
 
 set(install_path_suffix "amdgcn/bitcode")
 
 # Generate the install-tree package.
-# We do not know the absolute path to the intall tree until we are installed,
-# so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use
-# relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE.
-set(AMD_DEVICE_LIBS_PREFIX_CODE "
+if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
+  set(AMD_DEVICE_LIBS_PREFIX_CODE "set(AMD_DEVICE_LIBS_PREFIX \"${CMAKE_INSTALL_PREFIX}\")")
+else()
+  # We do not know the absolute path to the install tree until we are installed,
+  # so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use
+  # relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE.
+  set(AMD_DEVICE_LIBS_PREFIX_CODE "
 # Derive absolute install prefix from config file path.
 get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
-string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}")
-foreach(p ${count})
-  set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE}
+  string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}")
+  foreach(p ${count})
+    set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE}
 get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${AMD_DEVICE_LIBS_PREFIX}\" PATH)")
-endforeach()
+  endforeach()
+endif()
+
 set(AMD_DEVICE_LIBS_TARGET_CODE)
 foreach(target ${AMDGCN_LIB_LIST})
   get_target_property(target_name ${target} ARCHIVE_OUTPUT_NAME)
