Allow cmake to generate error.c

Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index a5d692c..a6d626b 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -109,6 +109,24 @@
     ssl_tls13_generic.c
 )
 
+find_package(Perl REQUIRED)
+
+file(GLOB error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/*.h)
+add_custom_command(
+    OUTPUT
+        ${CMAKE_CURRENT_BINARY_DIR}/error.c
+    COMMAND
+        ${PERL_EXECUTABLE}
+            ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
+            ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls
+            ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files
+            ${CMAKE_CURRENT_BINARY_DIR}/error.c
+    DEPENDS
+        ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
+        ${error_headers}
+        ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/error.fmt
+)
+
 if(CMAKE_COMPILER_IS_GNUCC)
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes")
 endif(CMAKE_COMPILER_IS_GNUCC)