xref: /aosp_15_r20/external/aws-crt-java/cmake/AwsPlatformDetect.cmake (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
1*3c7ae9deSAndroid Build Coastguard Worker
2*3c7ae9deSAndroid Build Coastguard Worker# save the folder when this file is included, for use later
3*3c7ae9deSAndroid Build Coastguard Workerset(THIS_FILE_DIR ${CMAKE_CURRENT_LIST_DIR})
4*3c7ae9deSAndroid Build Coastguard Worker
5*3c7ae9deSAndroid Build Coastguard Workerfunction(aws_detect_target_platform out_os out_arch)
6*3c7ae9deSAndroid Build Coastguard Worker    if (CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Android")
7*3c7ae9deSAndroid Build Coastguard Worker        set(${out_os} "android" PARENT_SCOPE)
8*3c7ae9deSAndroid Build Coastguard Worker        set(${out_arch} "${ANDROID_ABI}" PARENT_SCOPE)
9*3c7ae9deSAndroid Build Coastguard Worker        return()
10*3c7ae9deSAndroid Build Coastguard Worker    endif()
11*3c7ae9deSAndroid Build Coastguard Worker    try_compile(
12*3c7ae9deSAndroid Build Coastguard Worker        RESULT_UNUSED
13*3c7ae9deSAndroid Build Coastguard Worker        ${CMAKE_CURRENT_BINARY_DIR}
14*3c7ae9deSAndroid Build Coastguard Worker        SOURCES "${THIS_FILE_DIR}/osdetect.c"
15*3c7ae9deSAndroid Build Coastguard Worker        OUTPUT_VARIABLE OS_OUTPUT
16*3c7ae9deSAndroid Build Coastguard Worker    )
17*3c7ae9deSAndroid Build Coastguard Worker    # Find the error in the output, then strip the identifier off
18*3c7ae9deSAndroid Build Coastguard Worker    string(REGEX MATCH "OS ([a-zA-Z]+)" OS "${OS_OUTPUT}")
19*3c7ae9deSAndroid Build Coastguard Worker    string(REPLACE "OS " "" OS "${OS}")
20*3c7ae9deSAndroid Build Coastguard Worker
21*3c7ae9deSAndroid Build Coastguard Worker    try_compile(
22*3c7ae9deSAndroid Build Coastguard Worker        RESULT_UNUSED
23*3c7ae9deSAndroid Build Coastguard Worker        ${CMAKE_CURRENT_BINARY_DIR}
24*3c7ae9deSAndroid Build Coastguard Worker        SOURCES "${THIS_FILE_DIR}/archdetect.c"
25*3c7ae9deSAndroid Build Coastguard Worker        OUTPUT_VARIABLE ARCH_OUTPUT
26*3c7ae9deSAndroid Build Coastguard Worker    )
27*3c7ae9deSAndroid Build Coastguard Worker
28*3c7ae9deSAndroid Build Coastguard Worker    # Find the error in the output, then strip the identifier off
29*3c7ae9deSAndroid Build Coastguard Worker    string(REGEX MATCH "ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH_OUTPUT}")
30*3c7ae9deSAndroid Build Coastguard Worker    string(REPLACE "ARCH " "" ARCH "${ARCH}")
31*3c7ae9deSAndroid Build Coastguard Worker
32*3c7ae9deSAndroid Build Coastguard Worker    set(${out_os} "${OS}" PARENT_SCOPE)
33*3c7ae9deSAndroid Build Coastguard Worker    set(${out_arch} "${ARCH}" PARENT_SCOPE)
34*3c7ae9deSAndroid Build Coastguard Workerendfunction()
35