1*cf78ab8cSAndroid Build Coastguard Workerset(BLUETOOTH_EMULATION True) 2*cf78ab8cSAndroid Build Coastguard Workerget_filename_component(AOSP "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) 3*cf78ab8cSAndroid Build Coastguard Workerset(EXTERNAL ${AOSP}/external) 4*cf78ab8cSAndroid Build Coastguard Workerset(EXTERNAL_QEMU ${EXTERNAL}/qemu) 5*cf78ab8cSAndroid Build Coastguard Workerset(ANDROID_QEMU2_TOP_DIR ${EXTERNAL_QEMU}) 6*cf78ab8cSAndroid Build Coastguard Worker 7*cf78ab8cSAndroid Build Coastguard Workerif(NOT Python_EXECUTABLE) 8*cf78ab8cSAndroid Build Coastguard Worker find_package(Python3 COMPONENTS Interpreter) 9*cf78ab8cSAndroid Build Coastguard Worker if(NOT Python3_FOUND) 10*cf78ab8cSAndroid Build Coastguard Worker message(FATAL_ERROR "A python interpreter is required. ") 11*cf78ab8cSAndroid Build Coastguard Worker endif() 12*cf78ab8cSAndroid Build Coastguard Worker set(Python_EXECUTABLE ${Python3_EXECUTABLE}) 13*cf78ab8cSAndroid Build Coastguard Workerendif() 14*cf78ab8cSAndroid Build Coastguard Worker 15*cf78ab8cSAndroid Build Coastguard Workermessage(STATUS "Using Python: ${Python_EXECUTABLE}") 16*cf78ab8cSAndroid Build Coastguard Workerif(NOT DEFINED ANDROID_TARGET_TAG) 17*cf78ab8cSAndroid Build Coastguard Worker message( 18*cf78ab8cSAndroid Build Coastguard Worker WARNING 19*cf78ab8cSAndroid Build Coastguard Worker "You should invoke the cmake generator with a proper toolchain from ${EXTERNAL_QEMU}/android/build/cmake, " 20*cf78ab8cSAndroid Build Coastguard Worker "Trying to infer toolchain, this might not work.") 21*cf78ab8cSAndroid Build Coastguard Worker list(APPEND CMAKE_MODULE_PATH "${EXTERNAL_QEMU}/android/build/cmake/") 22*cf78ab8cSAndroid Build Coastguard Worker include(toolchain) 23*cf78ab8cSAndroid Build Coastguard Worker _get_host_tag(TAG) 24*cf78ab8cSAndroid Build Coastguard Worker toolchain_configure_tags(${TAG}) 25*cf78ab8cSAndroid Build Coastguard Workerendif() 26*cf78ab8cSAndroid Build Coastguard Worker 27*cf78ab8cSAndroid Build Coastguard Workerinclude(android) 28*cf78ab8cSAndroid Build Coastguard Workerinclude(prebuilts) 29*cf78ab8cSAndroid Build Coastguard Worker 30*cf78ab8cSAndroid Build Coastguard Worker# Append the given flags to the existing CMAKE_C_FLAGS. Be careful as these 31*cf78ab8cSAndroid Build Coastguard Worker# flags are global and used for every target! Note this will not do anything 32*cf78ab8cSAndroid Build Coastguard Worker# under vs for now 33*cf78ab8cSAndroid Build Coastguard Workerfunction(add_c_flag FLGS) 34*cf78ab8cSAndroid Build Coastguard Worker foreach(FLAG ${FLGS}) 35*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG}" PARENT_SCOPE) 36*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}" PARENT_SCOPE) 37*cf78ab8cSAndroid Build Coastguard Worker endforeach() 38*cf78ab8cSAndroid Build Coastguard Workerendfunction() 39*cf78ab8cSAndroid Build Coastguard Worker 40*cf78ab8cSAndroid Build Coastguard Workerfunction(add_cxx_flag FLGS) 41*cf78ab8cSAndroid Build Coastguard Worker foreach(FLAG ${FLGS}) 42*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}" PARENT_SCOPE) 43*cf78ab8cSAndroid Build Coastguard Worker endforeach() 44*cf78ab8cSAndroid Build Coastguard Workerendfunction() 45*cf78ab8cSAndroid Build Coastguard Worker 46*cf78ab8cSAndroid Build Coastguard Workerif(WINDOWS_MSVC_X86_64) 47*cf78ab8cSAndroid Build Coastguard Worker add_cxx_flag("-std:c++17") 48*cf78ab8cSAndroid Build Coastguard Workerelse() 49*cf78ab8cSAndroid Build Coastguard Worker add_cxx_flag("-std=c++17") 50*cf78ab8cSAndroid Build Coastguard Workerendif() 51*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 17) 52*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD_REQUIRED ON) 53*cf78ab8cSAndroid Build Coastguard Worker 54*cf78ab8cSAndroid Build Coastguard Workerif(CMAKE_BUILD_TYPE STREQUAL "Debug") 55*cf78ab8cSAndroid Build Coastguard Worker add_definitions("-DANDROID_DEBUG") 56*cf78ab8cSAndroid Build Coastguard Worker if(NOT WINDOWS_MSVC_X86_64) 57*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-O0 -g3") 58*cf78ab8cSAndroid Build Coastguard Worker else() 59*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-Zi -Od") 60*cf78ab8cSAndroid Build Coastguard Worker endif() 61*cf78ab8cSAndroid Build Coastguard Worker 62*cf78ab8cSAndroid Build Coastguard Worker if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CROSSCOMPILE) 63*cf78ab8cSAndroid Build Coastguard Worker if(NOT OPTION_ASAN AND OPTION_ASAN_IN_DEBUG) 64*cf78ab8cSAndroid Build Coastguard Worker set(OPTION_ASAN address) 65*cf78ab8cSAndroid Build Coastguard Worker endif() 66*cf78ab8cSAndroid Build Coastguard Worker 67*cf78ab8cSAndroid Build Coastguard Worker if(OPTION_ASAN STREQUAL "thread" AND OPTION_COVERAGE_IN_DEBUG) 68*cf78ab8cSAndroid Build Coastguard Worker message(FATAL_ERROR "You cannot run tsan with code coverage enabled.") 69*cf78ab8cSAndroid Build Coastguard Worker endif() 70*cf78ab8cSAndroid Build Coastguard Worker if(NOT WINDOWS_MSVC_X86_64 AND OPTION_COVERAGE_IN_DEBUG) 71*cf78ab8cSAndroid Build Coastguard Worker message("Enabling code coverage") 72*cf78ab8cSAndroid Build Coastguard Worker # Build an instrumented version of the code that generates coverage 73*cf78ab8cSAndroid Build Coastguard Worker # mapping to enable code coverage analysis 74*cf78ab8cSAndroid Build Coastguard Worker set(ANDROID_CODE_COVERAGE TRUE) 75*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-fcoverage-mapping") 76*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-fprofile-instr-generate") 77*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-fprofile-arcs") 78*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-ftest-coverage") 79*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("--coverage") 80*cf78ab8cSAndroid Build Coastguard Worker endif() 81*cf78ab8cSAndroid Build Coastguard Worker endif() 82*cf78ab8cSAndroid Build Coastguard Workerelse() 83*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_INSTALL_DO_STRIP TRUE) 84*cf78ab8cSAndroid Build Coastguard Worker add_definitions("-DNDEBUG=1") 85*cf78ab8cSAndroid Build Coastguard Worker if(WINDOWS_MSVC_X86_64) 86*cf78ab8cSAndroid Build Coastguard Worker # clang-cl takes msvc based parameters, so -O3 is a nop 87*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-O2") 88*cf78ab8cSAndroid Build Coastguard Worker else() 89*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-O3 -g3") 90*cf78ab8cSAndroid Build Coastguard Worker endif() 91*cf78ab8cSAndroid Build Coastguard Workerendif() 92*cf78ab8cSAndroid Build Coastguard Worker 93*cf78ab8cSAndroid Build Coastguard Worker# Target specific configurations that we do not want to do in the 94*cf78ab8cSAndroid Build Coastguard Worker# toolchain.cmake Toolchain variables seem to be overwritten pending your cmake 95*cf78ab8cSAndroid Build Coastguard Worker# version. 96*cf78ab8cSAndroid Build Coastguard Workerif(LINUX_X86_64) 97*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-Werror") 98*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-Wno-deprecated-declarations") # Protobuf generates deprecation 99*cf78ab8cSAndroid Build Coastguard Worker # warnings for deprecated enums 100*cf78ab8cSAndroid Build Coastguard Worker # And the asm type if we are compiling with yasm 101*cf78ab8cSAndroid Build Coastguard Worker set(ANDROID_NASM_TYPE elf64) 102*cf78ab8cSAndroid Build Coastguard Worker # This should make sure we have sufficient information left to properly print 103*cf78ab8cSAndroid Build Coastguard Worker # std::string etc. see b/156534499 for details. 104*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-fno-limit-debug-info") 105*cf78ab8cSAndroid Build Coastguard Workerelseif(LINUX_AARCH64) 106*cf78ab8cSAndroid Build Coastguard Worker set(ANDROID_NASM_TYPE elf64) 107*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-fpermissive") 108*cf78ab8cSAndroid Build Coastguard Workerelseif(WINDOWS_MSVC_X86_64) 109*cf78ab8cSAndroid Build Coastguard Worker # And the asm type if we are compiling with yasm 110*cf78ab8cSAndroid Build Coastguard Worker set(ANDROID_NASM_TYPE win64) 111*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_SHARED_LIBRARY_PREFIX "lib") 112*cf78ab8cSAndroid Build Coastguard Workerelseif(DARWIN_X86_64 OR DARWIN_AARCH64) 113*cf78ab8cSAndroid Build Coastguard Worker # And the asm type if we are compiling with yasm 114*cf78ab8cSAndroid Build Coastguard Worker set(ANDROID_NASM_TYPE macho64) 115*cf78ab8cSAndroid Build Coastguard Worker # Always consider the source to be darwin. 116*cf78ab8cSAndroid Build Coastguard Worker add_definitions(-D_DARWIN_C_SOURCE=1) 117*cf78ab8cSAndroid Build Coastguard Worker add_c_flag("-Wno-everything") 118*cf78ab8cSAndroid Build Coastguard Workerelse() 119*cf78ab8cSAndroid Build Coastguard Worker message(FATAL_ERROR "Unknown target!") 120*cf78ab8cSAndroid Build Coastguard Workerendif() 121*cf78ab8cSAndroid Build Coastguard Worker 122*cf78ab8cSAndroid Build Coastguard Workerprebuilt(Threads) 123*cf78ab8cSAndroid Build Coastguard Worker 124*cf78ab8cSAndroid Build Coastguard Worker# We need the auto generated header for some components, so let's set the 125*cf78ab8cSAndroid Build Coastguard Worker# ANDROID_HW_CONFIG_H variable to point to the generated header. Those that need 126*cf78ab8cSAndroid Build Coastguard Worker# it can add it to their sources list, and it will be there. 127*cf78ab8cSAndroid Build Coastguard Workerset(HW_PROPERTIES_INI 128*cf78ab8cSAndroid Build Coastguard Worker ${EXTERNAL_QEMU}/android/emu/avd/src/android/avd/hardware-properties.ini) 129*cf78ab8cSAndroid Build Coastguard Workerandroid_generate_hw_config() 130*cf78ab8cSAndroid Build Coastguard Worker 131*cf78ab8cSAndroid Build Coastguard Workerif(DARWIN_AARCH64 AND NOT Rust_COMPILER) 132*cf78ab8cSAndroid Build Coastguard Worker message( 133*cf78ab8cSAndroid Build Coastguard Worker STATUS 134*cf78ab8cSAndroid Build Coastguard Worker "On Apple sillicon attempting to use platform toolchain if available.") 135*cf78ab8cSAndroid Build Coastguard Worker list(APPEND CMAKE_MODULE_PATH 136*cf78ab8cSAndroid Build Coastguard Worker "${EXTERNAL_QEMU}/android/build/cmake/corrosion/cmake/") 137*cf78ab8cSAndroid Build Coastguard Worker find_package(Rust REQUIRED) 138*cf78ab8cSAndroid Build Coastguard Worker if(TARGET Rust::Rustc) 139*cf78ab8cSAndroid Build Coastguard Worker set(OPTION_ENABLE_SYSTEM_RUST TRUE) 140*cf78ab8cSAndroid Build Coastguard Worker else() 141*cf78ab8cSAndroid Build Coastguard Worker message(STATUS "Unable to derive local toolchain") 142*cf78ab8cSAndroid Build Coastguard Worker message( 143*cf78ab8cSAndroid Build Coastguard Worker FATAL_ERROR 144*cf78ab8cSAndroid Build Coastguard Worker "If you are a developer you can install rust with `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`" 145*cf78ab8cSAndroid Build Coastguard Worker ) 146*cf78ab8cSAndroid Build Coastguard Worker endif() 147*cf78ab8cSAndroid Build Coastguard Workerendif() 148*cf78ab8cSAndroid Build Coastguard Worker 149*cf78ab8cSAndroid Build Coastguard Workerif(WINDOWS_MSVC_X86_64) 150*cf78ab8cSAndroid Build Coastguard Worker # Set of msvc compat layer libraries. 151*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(${EXTERNAL_QEMU}/android/third_party/mman-win32 mman-win32) 152*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(${EXTERNAL_QEMU}/android/third_party/regex-win32 regex-win32) 153*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(${EXTERNAL_QEMU}/android/third_party/dirent-win32 154*cf78ab8cSAndroid Build Coastguard Worker dirent-win32) 155*cf78ab8cSAndroid Build Coastguard Workerendif() 156*cf78ab8cSAndroid Build Coastguard Worker 157*cf78ab8cSAndroid Build Coastguard Workerif(Rust_COMPILER OR OPTION_ENABLE_SYSTEM_RUST) 158*cf78ab8cSAndroid Build Coastguard Worker if(OPTION_ENABLE_SYSTEM_RUST) 159*cf78ab8cSAndroid Build Coastguard Worker message(STATUS "Attempting to use the system rust compiler") 160*cf78ab8cSAndroid Build Coastguard Worker use_system_rust_toolchain() 161*cf78ab8cSAndroid Build Coastguard Worker endif() 162*cf78ab8cSAndroid Build Coastguard Worker 163*cf78ab8cSAndroid Build Coastguard Worker enable_vendorized_crates("${EXTERNAL_QEMU}/android/third_party/rust/crates") 164*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(${EXTERNAL_QEMU}/android/build/cmake/corrosion corrosion) 165*cf78ab8cSAndroid Build Coastguard Worker ensure_rust_version_is_compliant() 166*cf78ab8cSAndroid Build Coastguard Workerendif() 167*cf78ab8cSAndroid Build Coastguard Worker 168*cf78ab8cSAndroid Build Coastguard Workerset(_gRPC_RE2_INCLUDE_DIR "${EXTERNAL_QEMU}/android/third_party/re2") 169*cf78ab8cSAndroid Build Coastguard Workerset(_gRPC_RE2_LIBRARIES re2) 170*cf78ab8cSAndroid Build Coastguard Workerset(NETSIM_EXT TRUE) 171*cf78ab8cSAndroid Build Coastguard Worker 172*cf78ab8cSAndroid Build Coastguard Worker# Let's bin place everything in the root, with the shared libs in the right 173*cf78ab8cSAndroid Build Coastguard Worker# place 174*cf78ab8cSAndroid Build Coastguard Workerset(DBG_INFO ${CMAKE_BINARY_DIR}/build/debug_info) 175*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib64) 176*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) 177*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/archives) 178*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_PDB_OUTPUT_DIRECTORY ${DBG_INFO}) 179*cf78ab8cSAndroid Build Coastguard Worker# Feeling courageous? Set this to $ANDROID_SDK_ROOT 180*cf78ab8cSAndroid Build Coastguard Workerif(DARWIN_X86_64 OR DARWIN_AARCH64) 181*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/distribution/emulator) 182*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_INSTALL_CODESIGN ${CMAKE_BINARY_DIR}/distribution/_codesign) 183*cf78ab8cSAndroid Build Coastguard Workerelse() 184*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/distribution/emulator) 185*cf78ab8cSAndroid Build Coastguard Workerendif() 186*cf78ab8cSAndroid Build Coastguard Worker 187*cf78ab8cSAndroid Build Coastguard Worker# First make the protobuf and dependencies available to gRPC 188*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/third_party/protobuf protobuf) 189*cf78ab8cSAndroid Build Coastguard Worker 190*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${AOSP}/hardware/google/aemu/base aemu-base) 191*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${AOSP}/hardware/google/aemu/host-common host-common) 192*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${AOSP}/packages/modules/Bluetooth/tools/rootcanal rootcanal) 193*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/abseil-cpp abseil-cpp) 194*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/boringssl boringssl) 195*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/google-benchmark 196*cf78ab8cSAndroid Build Coastguard Worker google-benchmark) 197*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/hostapd hostapd) 198*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/libslirp libslirp) 199*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/googletest/ gtest) 200*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/lz4 lz4) 201*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/re2 re2) 202*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/libselinux libselinux) 203*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/libsparse libsparse) 204*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL_QEMU}/android/third_party/ext4_utils ext4_utils) 205*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/cares cares) 206*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/glib/glib glib2) 207*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/grpc/emulator grpc) 208*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/android-emu-base android-emu-base) 209*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/android-net/android android-emu-net) 210*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android-qemu2-glue/netsim 211*cf78ab8cSAndroid Build Coastguard Worker android-wifi-service) 212*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/emu/base emu-base) 213*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/emu/utils android-emu-utils) 214*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/emu/files android-emu-files) 215*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/emu/agents android-emu-agents) 216*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/qemu/android/emu/proxy android-emu-proxy) 217*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(${EXTERNAL}/webrtc/third_party/jsoncpp jsoncpp) 218*cf78ab8cSAndroid Build Coastguard Worker 219*cf78ab8cSAndroid Build Coastguard Worker# Short term fix for missing glib2 dll for Windows build 220*cf78ab8cSAndroid Build Coastguard Workerif(WINDOWS_MSVC_X86_64) 221*cf78ab8cSAndroid Build Coastguard Worker install(TARGETS glib2_${ANDROID_TARGET_TAG} RUNTIME DESTINATION . 222*cf78ab8cSAndroid Build Coastguard Worker LIBRARY DESTINATION .) 223*cf78ab8cSAndroid Build Coastguard Workerendif() 224*cf78ab8cSAndroid Build Coastguard Worker 225*cf78ab8cSAndroid Build Coastguard Workerif(NOT TARGET gfxstream-snapshot.headers) 226*cf78ab8cSAndroid Build Coastguard Worker # Fake dependency to satisfy linker 227*cf78ab8cSAndroid Build Coastguard Worker add_library(gfxstream-snapshot.headers INTERFACE) 228*cf78ab8cSAndroid Build Coastguard Workerendif() 229*cf78ab8cSAndroid Build Coastguard Worker 230*cf78ab8cSAndroid Build Coastguard Workerif(CMAKE_BUILD_TYPE MATCHES DEBUG) 231*cf78ab8cSAndroid Build Coastguard Worker # This will help you find issues. 232*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_C_FLAGS "-fsanitize=address -fno-omit-frame-pointer -g3 -O0") 233*cf78ab8cSAndroid Build Coastguard Worker set(CMAKE_EXE_LINKER_FLAGS "-fsanitize=address") 234*cf78ab8cSAndroid Build Coastguard Workerendif() 235*cf78ab8cSAndroid Build Coastguard Worker 236*cf78ab8cSAndroid Build Coastguard Workerif(LINUX_X86_64) 237*cf78ab8cSAndroid Build Coastguard Worker # Our linux headers are from 2013, and do not define newer socket options. 238*cf78ab8cSAndroid Build Coastguard Worker # (b/156635589) 239*cf78ab8cSAndroid Build Coastguard Worker target_compile_options(grpc PRIVATE -DSO_REUSEPORT=15) 240*cf78ab8cSAndroid Build Coastguard Worker target_compile_options(grpc_unsecure PRIVATE -DSO_REUSEPORT=15) 241*cf78ab8cSAndroid Build Coastguard Workerendif() 242*cf78ab8cSAndroid Build Coastguard Worker 243*cf78ab8cSAndroid Build Coastguard Worker# Testing 244*cf78ab8cSAndroid Build Coastguard Workerenable_testing() 245*cf78ab8cSAndroid Build Coastguard Workerinclude(GoogleTest) 246