Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ include(CheckLibraryExists)
include(GNUInstallDirs)
include(UseSystemExtensions)
include(TestBigEndian)
include(CheckCPUArch)
enable_testing()

check_include_file("byteswap.h" HAVE_BYTESWAP_H)
Expand All @@ -128,10 +129,13 @@ if(NOT HAVE_STDINT_H OR NOT HAVE_STDBOOL_H)
message(SEND_ERROR "Header stdint.h and/or stdbool.h not found")
endif()

if(MSVC)
check_include_file("intrin.h" FLAC__HAS_X86INTRIN)
else()
check_include_file("x86intrin.h" FLAC__HAS_X86INTRIN)
check_cpu_arch_arm64(FLAC__CPU_ARM64)
if(NOT FLAC__CPU_ARM64)
if(MSVC)
check_include_file("intrin.h" FLAC__HAS_X86INTRIN)
else()
check_include_file("x86intrin.h" FLAC__HAS_X86INTRIN)
endif()
endif()


Expand Down
2 changes: 1 addition & 1 deletion cmake/CheckCPUArch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ macro(CHECK_CPU_ARCH_X86 VARIABLE)
endmacro(CHECK_CPU_ARCH_X86)

macro(CHECK_CPU_ARCH_ARM64 VARIABLE)
_CHECK_CPU_ARCH(arm64 "defined(__aarch64__) || defined(__arm64__)" ${VARIABLE})
_CHECK_CPU_ARCH(arm64 "defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64) || defined(_M_ARM64EC)" ${VARIABLE})
endmacro(CHECK_CPU_ARCH_ARM64)
10 changes: 6 additions & 4 deletions src/libFLAC/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ include(CheckCSourceCompiles)
include(CheckCPUArch)
include(CheckA64NEON)

check_cpu_arch_x64(FLAC__CPU_X86_64)
if(NOT FLAC__CPU_X86_64)
check_cpu_arch_x86(FLAC__CPU_IA32)
check_cpu_arch_arm64(FLAC__CPU_ARM64)
if(NOT FLAC__CPU_ARM64)
check_cpu_arch_x64(FLAC__CPU_X86_64)
if(NOT FLAC__CPU_X86_64)
check_cpu_arch_x86(FLAC__CPU_IA32)
endif()
endif()

if(FLAC__CPU_X86_64 OR FLAC__CPU_IA32)
Expand All @@ -22,7 +25,6 @@ if(FLAC__CPU_X86_64 OR FLAC__CPU_IA32)
set_source_files_properties(fixed_intrin_avx2.c lpc_intrin_avx2.c stream_encoder_intrin_avx2.c lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS /arch:AVX2)
endif()
else()
check_cpu_arch_arm64(FLAC__CPU_ARM64)
if(FLAC__CPU_ARM64)
check_a64neon(FLAC__HAS_A64NEONINTRIN)
endif()
Expand Down
2 changes: 1 addition & 1 deletion src/libFLAC/include/private/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

#ifndef FLAC__CPU_X86_64

#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || ((defined(_M_X64) || defined(_M_AMD64)) && !defined(_M_ARM64EC))
#define FLAC__CPU_X86_64
#endif

Expand Down
Loading