File: AwsCRuntime.cmake

package info (click to toggle)
aws-crt-python 0.20.4%2Bdfsg-1~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 72,656 kB
  • sloc: ansic: 381,805; python: 23,008; makefile: 6,251; sh: 4,536; cpp: 699; ruby: 208; java: 77; perl: 73; javascript: 46; xml: 11
file content (32 lines) | stat: -rw-r--r-- 1,585 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0.

# This function detects the local host's c runtime and writes a tag into the supplied output variable
# Output is "cruntime" on non-Linux platforms.  Output is "glibc" or "musl" on Linux platforms.
#
# Intended usage is for managed language CRTs to use this function to build native artifact paths, facilitating
# support for alternative C runtimes like Musl.
#
function(aws_determine_local_c_runtime target)
    if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
        execute_process(COMMAND "ldd" "--version" OUTPUT_VARIABLE AWS_LDD_OUTPUT ERROR_VARIABLE AWS_LDD_OUTPUT)
        string(TOLOWER "${AWS_LDD_OUTPUT}" AWS_LDD_OUTPUT_LOWER)
        message(STATUS "ldd output lower: ${AWS_LDD_OUTPUT_LOWER}")
        string(FIND "${AWS_LDD_OUTPUT_LOWER}" "musl" AWS_MUSL_INDEX)
        string(FIND "${AWS_LDD_OUTPUT_LOWER}" "glibc" AWS_GLIBC_INDEX)
        string(FIND "${AWS_LDD_OUTPUT_LOWER}" "gnu" AWS_GNU_INDEX)
        if (NOT(${AWS_MUSL_INDEX} EQUAL -1))
            message(STATUS "MUSL libc detected")
            set(${target} "musl" PARENT_SCOPE)
        else()
            if ((NOT(${AWS_GLIBC_INDEX} EQUAL -1)) OR (NOT(${AWS_GNU_INDEX} EQUAL -1)))
                message(STATUS "Gnu libc detected")
            else()
                message(STATUS "Could not determine C runtime, defaulting to gnu libc")
            endif()
            set(${target} "glibc" PARENT_SCOPE)
        endif()
    else()
        set(${target} "cruntime" PARENT_SCOPE)
    endif()
endfunction()