soc: nordic: Fix undefined z_arm_platform_init

Fixes #71511
Follow-up to #70977

Update the approach by moving the `PROVIDE` directive to a separate
linker script added using `zephyr_linker_sources()`. This makes the
change more likely to propagate to existing samples which are using
CONFIG_CUSTOM_LINKER_SCRIPT.

Signed-off-by: Grzegorz Swiderski <grzegorz.swiderski@nordicsemi.no>
diff --git a/soc/nordic/CMakeLists.txt b/soc/nordic/CMakeLists.txt
index 6dae6e9..9797d2e 100644
--- a/soc/nordic/CMakeLists.txt
+++ b/soc/nordic/CMakeLists.txt
@@ -2,7 +2,9 @@
 
 zephyr_library()
 
-set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld CACHE INTERNAL "SoC Linker script")
+if(CONFIG_ARM)
+  set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "SoC Linker script")
+endif()
 
 zephyr_library_sources(
   validate_base_addresses.c
diff --git a/soc/nordic/common/CMakeLists.txt b/soc/nordic/common/CMakeLists.txt
index b574caf..805113f 100644
--- a/soc/nordic/common/CMakeLists.txt
+++ b/soc/nordic/common/CMakeLists.txt
@@ -3,6 +3,8 @@
 
 add_subdirectory_ifdef(CONFIG_RISCV_CORE_NORDIC_VPR vpr)
 
+zephyr_linker_sources_ifdef(CONFIG_ARM SECTIONS arm_platform_init.ld)
+
 zephyr_library_sources_ifdef(CONFIG_POWEROFF poweroff.c)
 
 zephyr_include_directories(.)
diff --git a/soc/nordic/common/arm_platform_init.ld b/soc/nordic/common/arm_platform_init.ld
new file mode 100644
index 0000000..9773ada
--- /dev/null
+++ b/soc/nordic/common/arm_platform_init.ld
@@ -0,0 +1,8 @@
+/*
+ * Copyright (c) 2024 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/* Let SystemInit() be called in place of z_arm_platform_init() by default. */
+PROVIDE(z_arm_platform_init = SystemInit);
diff --git a/soc/nordic/common/vpr/CMakeLists.txt b/soc/nordic/common/vpr/CMakeLists.txt
index 3849a3f..d418954 100644
--- a/soc/nordic/common/vpr/CMakeLists.txt
+++ b/soc/nordic/common/vpr/CMakeLists.txt
@@ -4,3 +4,5 @@
 zephyr_include_directories(.)
 
 zephyr_library_sources(soc_idle.c soc_irq.S soc_irq.c vector.S)
+
+set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/riscv/common/linker.ld CACHE INTERNAL "")
diff --git a/soc/nordic/linker.ld b/soc/nordic/linker.ld
deleted file mode 100644
index c8dbb42..0000000
--- a/soc/nordic/linker.ld
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#if defined(CONFIG_ARM)
-#include <zephyr/arch/arm/cortex_m/scripts/linker.ld>
-
-/* Let SystemInit() be called in place of z_arm_platform_init() by default. */
-PROVIDE(z_arm_platform_init = SystemInit);
-
-#elif defined(CONFIG_RISCV)
-#include <zephyr/arch/riscv/common/linker.ld>
-
-#else
-#error Unsupported architecture
-
-#endif