Skip to content

Commit ed4ba23

Browse files
committed
cmake: Add check_arm32_assembly function
1 parent e5cf4bf commit ed4ba23

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,13 @@ set_property(CACHE SECP256K1_ASM PROPERTY STRINGS "AUTO" "OFF" "x86_64" "arm32")
107107
check_string_option_value(SECP256K1_ASM)
108108
if(SECP256K1_ASM STREQUAL "arm32")
109109
enable_language(ASM)
110-
add_compile_definitions(USE_EXTERNAL_ASM=1)
110+
include(CheckArm32Assembly)
111+
check_arm32_assembly()
112+
if(HAVE_ARM32_ASM)
113+
add_compile_definitions(USE_EXTERNAL_ASM=1)
114+
else()
115+
message(FATAL_ERROR "ARM32 assembly optimization requested but not available.")
116+
endif()
111117
elseif(SECP256K1_ASM)
112118
include(Check64bitAssembly)
113119
check_64bit_assembly()

cmake/CheckArm32Assembly.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function(check_arm32_assembly)
2+
try_compile(HAVE_ARM32_ASM
3+
${CMAKE_BINARY_DIR}/check_arm32_assembly
4+
SOURCES ${CMAKE_SOURCE_DIR}/cmake/source_arm32.s
5+
)
6+
endfunction()

cmake/source_arm32.s

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.syntax unified
2+
.eabi_attribute 24, 1
3+
.eabi_attribute 25, 1
4+
.text
5+
.global main
6+
main:
7+
ldr r0, =0x002A
8+
mov r7, #1
9+
swi 0

0 commit comments

Comments
 (0)