diff --git a/cmake/GResources.cmake b/cmake/GResources.cmake
new file mode 100644
index 0000000..9766c8f
--- /dev/null
+++ b/cmake/GResources.cmake
@@ -0,0 +1,81 @@
+# The code below was taken from the Venom project which is released under the
+# GNU General Public License, version 3
+#
+# Copyright (C) 2013 Venom authors and contributors
+#
+# See https://github.com/naxuroqa/Venom for a list of contributors.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+# Additional permission under GNU GPL version 3 section 7:
+#
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+#
+
+FIND_PROGRAM(GLIB_COMPILE_RESOURCES_EXECUTABLE NAMES glib-compile-resources)
+MARK_AS_ADVANCED(GLIB_COMPILE_RESOURCES_EXECUTABLE)
+
+INCLUDE(CMakeParseArguments)
+
+FUNCTION(GLIB_COMPILE_RESOURCES output)
+  CMAKE_PARSE_ARGUMENTS(ARGS "" "SOURCE" ${ARGN})
+  SET(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+  SET(out_files "")
+
+  FOREACH(src ${ARGS_SOURCE} ${ARGS_UNPARSED_ARGUMENTS})
+    SET(in_file "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
+    GET_FILENAME_COMPONENT(WORKING_DIR ${in_file} PATH)
+    STRING(REPLACE ".xml" ".c" src ${src})
+    SET(out_file "${DIRECTORY}/${src}")
+    GET_FILENAME_COMPONENT(OUPUT_DIR ${out_file} PATH)
+    FILE(MAKE_DIRECTORY ${OUPUT_DIR})
+    LIST(APPEND out_files "${DIRECTORY}/${src}")
+
+    #FIXME implicit depends currently not working
+    EXECUTE_PROCESS(
+      COMMAND
+        ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
+          "--generate-dependencies"
+          ${in_file}
+      WORKING_DIRECTORY ${WORKING_DIR}
+      OUTPUT_VARIABLE in_file_dep
+    )
+    STRING(REGEX REPLACE "(\r?\n)" ";" in_file_dep "${in_file_dep}")
+    SET(in_file_dep_path "")
+    FOREACH(dep ${in_file_dep})
+      LIST(APPEND in_file_dep_path "${WORKING_DIR}/${dep}")
+    ENDFOREACH(dep ${in_file_dep})
+    ADD_CUSTOM_COMMAND(
+      OUTPUT ${out_file}
+      WORKING_DIRECTORY ${WORKING_DIR}
+      COMMAND
+        ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
+      ARGS
+        "--generate-source"
+        "--target=${out_file}"
+        ${in_file}
+      DEPENDS
+        ${in_file};${in_file_dep_path}
+    )
+  ENDFOREACH(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS})
+  SET(${output} ${out_files} PARENT_SCOPE)
+ENDFUNCTION(GLIB_COMPILE_RESOURCES)
