diff --git a/CMakeLists.txt b/CMakeLists.txt
index 264eafcf4bb0f3e401fa47866027f78d61a8ab14..f9f56bf262f0797a14f0118d6a13911678dbbd1d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -123,16 +123,12 @@ target_include_directories(shadertoy PRIVATE
 	${SOIL_INCLUDE_DIRS}
 	${JPEG_INCLUDE_DIRS})
 
-if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
-    set(UNWIND_ARCH "x86_64")
-elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
-    set(UNWIND_ARCH "x86")
-else()
-	if (UNWIND_FOUND)
-		message("-- Unsupported architecture for libunwind")
-		set(UNWIND_ARCH OFF)
-	endif()
-endif()
+execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} -dumpmachine
+				OUTPUT_VARIABLE COMPILER_ARCH
+				OUTPUT_STRIP_TRAILING_WHITESPACE)
+string(REPLACE "-" ";" COMPILER_ARCH_LIST ${COMPILER_ARCH})
+list(GET COMPILER_ARCH_LIST 0 COMPILER_ARCH_NAME)
+string(REGEX REPLACE "i.86" "x86" UNWIND_ARCH ${COMPILER_ARCH_NAME})
 
 # Add UNWIND if found
 if (UNWIND_FOUND AND UNWIND_ARCH)