diff --git a/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake b/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake --- a/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake +++ b/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake @@ -4,10 +4,9 @@ if(${LIBC_TARGET_MACHINE} MATCHES "x86|x86_64") set(ALL_CPU_FEATURES SSE SSE2 AVX AVX2 AVX512F) + list(SORT ALL_CPU_FEATURES) endif() -list(SORT ALL_CPU_FEATURES) - # Function to check whether the host supports the provided set of features. # Usage: # host_supports( @@ -126,4 +125,11 @@ endfunction() # Populates the HOST_CPU_FEATURES list. -_check_defined_cpu_feature(HOST_CPU_FEATURES MARCH native) +# Use -march=native only when the compiler supports it. +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE) +if(COMPILER_SUPPORTS_MARCH_NATIVE) + _check_defined_cpu_feature(HOST_CPU_FEATURES MARCH native) +else() + _check_defined_cpu_feature(HOST_CPU_FEATURES) +endif() diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt new file mode 100644 --- /dev/null +++ b/libc/config/linux/aarch64/entrypoints.txt @@ -0,0 +1,25 @@ +set(TARGET_LIBC_ENTRYPOINTS + # errno.h entrypoints + libc.src.errno.__errno_location + + # string.h entrypoints + libc.src.string.strlen +) + +set(TARGET_LIBM_ENTRYPOINTS + # math.h entrypoints + libc.src.math.ceil + libc.src.math.ceilf + libc.src.math.cosf + libc.src.math.expf + libc.src.math.exp2f + libc.src.math.fabs + libc.src.math.fabsf + libc.src.math.floor + libc.src.math.floorf + libc.src.math.round + libc.src.math.sincosf + libc.src.math.sinf + libc.src.math.trunc + libc.src.math.truncf +) diff --git a/libc/config/linux/aarch64/headers.txt b/libc/config/linux/aarch64/headers.txt new file mode 100644 --- /dev/null +++ b/libc/config/linux/aarch64/headers.txt @@ -0,0 +1,5 @@ +set(PUBLIC_HEADERS + libc.include.errno + libc.include.math + libc.include.sys_syscall +)