1include(CheckCXXCompilerFlag) 2set(CMAKE_C_STANDARD 99) 3# Adds compiler options for all targets 4function(libxaac_add_compile_options) 5 if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") 6 add_compile_options(-std=gnu99 -march=armv8-a) 7 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch32") 8 add_compile_options(-O3 -Wall -std=c99 -mcpu=cortex-a8 -march=armv7-a -mfloat-abi=softfp -mfpu=neon) 9 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") 10 add_compile_options(-O3 -Wall -Wsequence-point -fwrapv) 11 endif() 12 13 set(CMAKE_REQUIRED_FLAGS -fsanitize=fuzzer-no-link) 14 check_cxx_compiler_flag(-fsanitize=fuzzer-no-link 15 COMPILER_HAS_SANITIZE_FUZZER) 16 unset(CMAKE_REQUIRED_FLAGS) 17 18 if(DEFINED SANITIZE) 19 set(CMAKE_REQUIRED_FLAGS -fsanitize=${SANITIZE}) 20 check_cxx_compiler_flag(-fsanitize=${SANITIZE} COMPILER_HAS_SANITIZER) 21 unset(CMAKE_REQUIRED_FLAGS) 22 23 if(NOT COMPILER_HAS_SANITIZER) 24 message( 25 FATAL_ERROR "ERROR: Compiler doesn't support -fsanitize=${SANITIZE}") 26 return() 27 endif() 28 add_compile_options(-fno-omit-frame-pointer -fsanitize=${SANITIZE}) 29 endif() 30 31endfunction() 32 33# Adds defintions for all targets 34function(libxaac_add_definitions) 35 if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") 36 add_definitions(-DARMV8 -DDEFAULT_ARCH=D_ARCH_ARMV8_GENERIC) 37 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch32") 38 add_definitions(-DARMV7 -DDEFAULT_ARCH=D_ARCH_ARM_A9Q) 39 elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686") 40 add_definitions(-DX86 -DX86_LINUX=1 -DDISABLE_AVX2 -DDEFAULT_ARCH=D_ARCH_X86_SSE42) 41 endif() 42endfunction() 43 44# Adds libraries needed for executables 45function(libxaac_set_link_libraries) 46 if(NOT MSVC) 47 link_libraries(Threads::Threads --static) 48 endif() 49endfunction() 50 51#Adds libraries for fuzzer 52function(libxaac_fuzzer_set_link_libraries) 53 link_libraries(Threads::Threads m) 54endfunction()