diff --git a/cmake/FindOTF2.cmake b/cmake/FindOTF2.cmake
index 15f075ad4d5a2353d08dcabf732231d02eaf5a6d..8089bf8097305bc4df698ccc39816a25c7c00676 100644
--- a/cmake/FindOTF2.cmake
+++ b/cmake/FindOTF2.cmake
@@ -1,56 +1,75 @@
 #
-# Find the OTF2 libraries and include dir
+# Find the OTF2 library
 #
-
 # OTF2_INCLUDE_DIR  - Directories to include to use OTF2
-# OTF2_LIBRARY    - Files to link against to use OTF2
-# OTF2_FOUND        - When false, don't try to use OTF2
-#
-# OTF2_DIR can be used to make it simpler to find the various include
-# directories and compiled libraries when OTF2 was not installed in the
-# usual/well-known directories (e.g. because you made an in tree-source
-# compilation or because you installed it in an "unusual" directory).
-# Just set OTF2_DIR it to your specific installation directory
-#
-FIND_LIBRARY(OTF2_LIBRARY otf2
-  PATHS
-  /usr/lib
-  /usr/local/lib
-  ${OTF2_DIR}/lib
-)
+# OTF2_LIBRARY_PATH  - Files to link against to use OTF2
+# OTF2_CONFIG        - Path to otf2-config
+
+
+find_program(OTF2_CONFIG otf2-config REQUIRED)
+find_program(OTF2_PRINT otf2-print REQUIRED)
 
-IF(OTF2_LIBRARY)
-  GET_FILENAME_COMPONENT(OTF2_GUESSED_INCLUDE_DIR_tmp "${OTF2_LIBRARY}" PATH)
-  STRING(REGEX REPLACE "lib$" "include" OTF2_GUESSED_INCLUDE_DIR "${OTF2_GUESSED_INCLUDE_DIR_tmp}")
-ENDIF(OTF2_LIBRARY)
-
-FIND_PATH( OTF2_INCLUDE_DIR otf2/otf2.h
-  PATHS
-  ${OTF2_GUESSED_INCLUDE_DIR}
-  ${OTF2_DIR}/include
-  /usr/include
-  /usr/local/include
-  ${CMAKE_SOURCE_DIR}/externals/otf2/include/
+IF(NOT OTF2_CONFIG OR NOT EXISTS ${OTF2_CONFIG})
+  MESSAGE(STATUS "Cannot find otf2-config")
+  SET(OTF2_VERSION ${OTF2_REQUIRED_VERSION})
+ELSE()
+  message(STATUS "OTF2 installation found. (using ${OTF2_CONFIG})")
+
+  execute_process(COMMAND ${OTF2_CONFIG} "--cppflags" OUTPUT_VARIABLE OTF2_INCLUDE_DIR)
+  STRING(REPLACE "\n" "" OTF2_INCLUDE_DIR ${OTF2_INCLUDE_DIR})
+  STRING(REPLACE "-I" "" OTF2_INCLUDE_DIR ${OTF2_INCLUDE_DIR})
+  
+  execute_process(COMMAND ${OTF2_CONFIG} "--ldflags" OUTPUT_VARIABLE _LINK_LD_ARGS)
+  STRING( REPLACE " " ";" _LINK_LD_ARGS ${_LINK_LD_ARGS} )
+  FOREACH( _ARG ${_LINK_LD_ARGS} )
+    IF(${_ARG} MATCHES "^-L")
+      STRING(REGEX REPLACE "^-L" "" _ARG ${_ARG})
+      STRING(STRIP "${_ARG}" _ARG)
+      SET(OTF2_LINK_DIRS ${OTF2_LINK_DIRS} ${_ARG})
+    ENDIF(${_ARG} MATCHES "^-L")
+  ENDFOREACH(_ARG)
+
+  execute_process(COMMAND ${OTF2_CONFIG} "--libs" OUTPUT_VARIABLE _LINK_LD_ARGS)
+  STRING( REPLACE " " ";" _LINK_LD_ARGS ${_LINK_LD_ARGS} )
+  FOREACH( _ARG ${_LINK_LD_ARGS} )
+    IF(${_ARG} MATCHES "^-l")
+      STRING(REGEX REPLACE "^-l" "" _ARG "${_ARG}")
+      STRING(STRIP "${_ARG}" _ARG)
+      FIND_LIBRARY(_OTF2_LIB_FROM_ARG NAMES ${_ARG}
+        HINTS ${OTF2_LINK_DIRS} NO_DEFAULT_PATH
+      )
+      IF(${_ARG} STREQUAL "otf2" OR ${_ARG} STREQUAL "open-trace-format2")
+        SET(OTF2_LIBRARY ${_OTF2_LIB_FROM_ARG})
+      ELSE()
+        IF(_OTF2_LIB_FROM_ARG)
+          LIST(APPEND OTF2_LIBRARIES ${_OTF2_LIB_FROM_ARG})
+        ENDIF(_OTF2_LIB_FROM_ARG)
+      ENDIF()
+      UNSET(_OTF2_LIB_FROM_ARG CACHE)
+    ENDIF(${_ARG} MATCHES "^-l")
+  ENDFOREACH(_ARG)
+
+
+  execute_process(COMMAND ${OTF2_CONFIG} "--version" OUTPUT_VARIABLE OTF2_VERSION)
+  STRING( REPLACE "otf2-config: version " "" OTF2_VERSION ${OTF2_VERSION} )
+  STRING( REPLACE "\n" "" OTF2_VERSION ${OTF2_VERSION} )
+  STRING( REPLACE "." ";" _VERSION ${OTF2_VERSION} )
+  LIST( GET _VERSION 0 OTF2_MAJOR_VERSION)
+  LIST( GET _VERSION 1 OTF2_MINOR_VERSION)
+ENDIF()
+
+include (FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OTF2
+  FOUND_VAR OTF2_FOUND
+  REQUIRED_VARS OTF2_CONFIG OTF2_LIBRARY OTF2_INCLUDE_DIR
+  VERSION_VAR OTF2_VERSION
 )
 
-IF( OTF2_INCLUDE_DIR )
-  IF( OTF2_LIBRARY )
-    SET( OTF2_FOUND "YES" )
-    MARK_AS_ADVANCED( OTF2_DIR )
-    MARK_AS_ADVANCED( OTF2_INCLUDE_DIR )
-    MARK_AS_ADVANCED( OTF2_LIBRARY )
-  ENDIF( OTF2_LIBRARY )
-ENDIF( OTF2_INCLUDE_DIR )
-
-IF( NOT OTF2_FOUND )
-  MESSAGE("OTF2 installation was not found. Please provide OTF2_DIR:")
-  MESSAGE("  - through the GUI when working with ccmake, ")
-  MESSAGE("  - as a command line argument when working with cmake e.g. ")
-  MESSAGE("    cmake .. -DOTF2_DIR:PATH=/usr/local/otf ")
-  MESSAGE("Note: the following message is triggered by cmake on the first ")
-  MESSAGE("    undefined necessary PATH variable (e.g. OTF2_INCLUDE_DIR).")
-  MESSAGE("    Providing OTF2_DIR (as above described) is probably the")
-  MESSAGE("    simplest solution unless you have a really customized/odd")
-  MESSAGE("    OTF2 installation...")
-  SET(OTF2_DIR "" CACHE PATH "Root of OTF2 install tree." )
-ENDIF( NOT OTF2_FOUND )
+if(NOT OTF2_FOUND)
+    unset(OTF2_CONFIG)
+    unset(OTF2_CONFIG CACHE)
+    unset(OTF2_LINK_DIRS)
+    unset(OTF2_LIBRARIES)
+endif()
+
+mark_as_advanced(OTF2_LIBRARY)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 57dc7831954b8048240735c0fa8a536cb27f00d8..2bc3da7d589b65968aa67811c8c1433fe0ffdb39 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -413,10 +413,6 @@ include_directories(
   ${QTCOLORPICKERDIR}
   )
 
-if(VITE_ENABLE_OTF2)
-  link_directories(${OTF2_LIBRARY_DIR})
-endif()
-
 #resource
 if(WIN32)
   set(VITE_RES