Properly set XNN_ENABLE_ASSEMBLY macro in CMake builds

- Expose XNNPACK_ENABLE_ASSEMBLY CMake option
- Define XNN_ENABLE_ASSEMBLY macro
- Ensure assembly-implemented micro-kernels are checked in unit tests and benchmarks

PiperOrigin-RevId: 294936208
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b86ef61..40cafbf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,7 @@
 # ---[ Options.
 SET(XNNPACK_LIBRARY_TYPE "default" CACHE STRING "Type of library (shared, static, or default) to build")
 SET_PROPERTY(CACHE XNNPACK_LIBRARY_TYPE PROPERTY STRINGS default static shared)
+OPTION(XNNPACK_ENABLE_ASSEMBLY "Build XNNPACK with assembly micro-kernels" ON)
 OPTION(XNNPACK_BUILD_TESTS "Build XNNPACK unit tests" ON)
 OPTION(XNNPACK_BUILD_BENCHMARKS "Build XNNPACK benchmarks" ON)
 
@@ -24,6 +25,12 @@
   ENABLE_TESTING()
 ENDIF()
 
+IF(XNNPACK_ENABLE_ASSEMBLY)
+  ADD_DEFINITIONS(-DXNN_ENABLE_ASSEMBLY=1)
+ELSE()
+  ADD_DEFINITIONS(-DXNN_ENABLE_ASSEMBLY=0)
+ENDIF()
+
 # ---[ Build flags
 IF(NOT CMAKE_SYSTEM_PROCESSOR)
   IF(IOS)