Fixed testing with out-of-source builds using cmake
diff --git a/ChangeLog b/ChangeLog
index 3c26b01..baf67fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,7 @@
      statistics
    * Fix buf in RSA PKCS#1 v1.5 "reversed" operations
    * Threading in x509_crt depended on PTHREAD instead of generic
+   * Fixed testing with out-of-source builds using cmake
 
 = PolarSSL 1.3.4 released on 2014-01-27
 Features
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index cf05bce..00e15e5 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -83,3 +83,25 @@
 add_test_suite(xtea)
 add_test_suite(x509parse)
 add_test_suite(x509write)
+
+# Make data_files available in an out-of-source build
+if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+    # Get OS dependent path to use in `execute_process`
+    file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/data_files" link)
+    file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/data_files" target)
+
+    if (UNIX)
+        set(command ln -s ${target} ${link})
+    else()
+        set(command cmd.exe /c mklink ${link} ${target})
+    endif()
+
+    execute_process(COMMAND ${command}
+                    RESULT_VARIABLE result
+                    ERROR_VARIABLE output)
+
+    if (NOT ${result} EQUAL 0)
+        message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}")
+    endif()
+endif()
+