diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake
new file mode 100644
index 0000000..e3b604a
--- /dev/null
+++ b/cmake/helpers.cmake
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2020 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+function(ethosu_link_options target scope)
+    cmake_parse_arguments(ARG "" "LINK_FILE" "" ${ARGN})
+
+    if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang")
+        set(LINK_FILE_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_LINK_FILE}.scatter)
+        set(LINK_FILE_OPTION "--scatter")
+
+    elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+        set(LINK_FILE ${ARG_LINK_FILE}.ld)
+        set(LINK_FILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/${LINK_FILE})
+        set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE})
+        set(LINK_FILE_OPTION "-T")
+
+        set(prop "$<TARGET_PROPERTY:${target},COMPILE_DEFINITIONS>")
+        add_custom_command(
+            OUTPUT ${LINK_FILE_OUT}
+            DEPENDS ${LINK_FILE_IN}
+            BYPRODUCTS ${LINK_FILE_OUT}
+            COMMAND ${CMAKE_C_COMPILER} -E -x c -P -o ${LINK_FILE_OUT} ${LINK_FILE_IN}
+            COMMAND_EXPAND_LISTS "$<$<BOOL:${prop}>:-D$<JOIN:${prop},;-D>>"
+            COMMENT "Preprocessing and generating linker script"
+            VERBATIM)
+        add_custom_target(${target}-linker-script
+            DEPENDS ${LINK_FILE_OUT}
+            VERBATIM)
+        add_dependencies(${target} ${target}-linker-script)
+    endif()
+
+    target_link_options(${target} ${scope} ${LINK_FILE_OPTION} ${LINK_FILE_OUT})
+    set_target_properties(${target} PROPERTIES LINK_DEPENDS ${LINK_FILE_OUT})
+endfunction()
