xref: /aosp_15_r20/tools/netsim/cmake/netsim_dependencies.cmake (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
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