1*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2022 The Android Open Source Project 2*cf78ab8cSAndroid Build Coastguard Worker# 3*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*cf78ab8cSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*cf78ab8cSAndroid Build Coastguard Worker# the License at 6*cf78ab8cSAndroid Build Coastguard Worker# 7*cf78ab8cSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*cf78ab8cSAndroid Build Coastguard Worker# 9*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*cf78ab8cSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*cf78ab8cSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*cf78ab8cSAndroid Build Coastguard Worker# the License. 14*cf78ab8cSAndroid Build Coastguard Worker 15*cf78ab8cSAndroid Build Coastguard Worker# Netsim - a network simulator for discovery, ranging and communication 16*cf78ab8cSAndroid Build Coastguard Worker 17*cf78ab8cSAndroid Build Coastguard Workerproject(netsim) 18*cf78ab8cSAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.5) 19*cf78ab8cSAndroid Build Coastguard Workercmake_policy(SET CMP0079 NEW) 20*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 17) 21*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD_REQUIRED True) 22*cf78ab8cSAndroid Build Coastguard Workerset(CMAKE_POSITION_INDEPENDENT_CODE ON) 23*cf78ab8cSAndroid Build Coastguard Workerlist(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") 24*cf78ab8cSAndroid Build Coastguard Worker 25*cf78ab8cSAndroid Build Coastguard Workerif(NOT ANDROID_EMULATOR_BUILD) 26*cf78ab8cSAndroid Build Coastguard Worker message(STATUS "Building netsim standalone.") 27*cf78ab8cSAndroid Build Coastguard Worker include(netsim_dependencies) 28*cf78ab8cSAndroid Build Coastguard Workerendif() 29*cf78ab8cSAndroid Build Coastguard Worker 30*cf78ab8cSAndroid Build Coastguard Workerif(TARGET Rust::Rustc) 31*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(pdl) 32*cf78ab8cSAndroid Build Coastguard Worker add_subdirectory(rust) 33*cf78ab8cSAndroid Build Coastguard Workerelse() 34*cf78ab8cSAndroid Build Coastguard Worker message(WARNING "Only building client side dependencies.") 35*cf78ab8cSAndroid Build Coastguard Workerendif() 36*cf78ab8cSAndroid Build Coastguard Worker 37*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(proto) 38*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(src) 39*cf78ab8cSAndroid Build Coastguard Worker 40*cf78ab8cSAndroid Build Coastguard Workerif(TARGET Rust::Rustc) 41*cf78ab8cSAndroid Build Coastguard Worker android_add_executable( 42*cf78ab8cSAndroid Build Coastguard Worker TARGET netsim LICENSE Apache-2.0 INSTALL . SRC rust/netsim.cc 43*cf78ab8cSAndroid Build Coastguard Worker DEPS frontend-client grpc++ netsim-cli-proto-lib netsim-cli-rust-lib 44*cf78ab8cSAndroid Build Coastguard Worker protobuf::libprotobuf util-lib) 45*cf78ab8cSAndroid Build Coastguard Worker 46*cf78ab8cSAndroid Build Coastguard Worker android_add_executable( 47*cf78ab8cSAndroid Build Coastguard Worker TARGET netsimd 48*cf78ab8cSAndroid Build Coastguard Worker LICENSE Apache-2.0 INSTALL . 49*cf78ab8cSAndroid Build Coastguard Worker SRC rust/netsimd.cc 50*cf78ab8cSAndroid Build Coastguard Worker DEPS grpc++ 51*cf78ab8cSAndroid Build Coastguard Worker libbt-rootcanal 52*cf78ab8cSAndroid Build Coastguard Worker netsim-cli-proto-lib 53*cf78ab8cSAndroid Build Coastguard Worker netsim-daemon 54*cf78ab8cSAndroid Build Coastguard Worker netsimd-lib 55*cf78ab8cSAndroid Build Coastguard Worker netsimd-proto-lib 56*cf78ab8cSAndroid Build Coastguard Worker packet-streamer-proto-lib) 57*cf78ab8cSAndroid Build Coastguard Worker 58*cf78ab8cSAndroid Build Coastguard Worker if(NOT DARWIN_AARCH64 AND NOT DARWIN_X86_64) 59*cf78ab8cSAndroid Build Coastguard Worker # Prevent duplicate symbol for cxx Rust crate. 60*cf78ab8cSAndroid Build Coastguard Worker target_link_libraries(netsimd PRIVATE -Wl,--allow-multiple-definition) 61*cf78ab8cSAndroid Build Coastguard Worker endif() 62*cf78ab8cSAndroid Build Coastguard Worker 63*cf78ab8cSAndroid Build Coastguard Worker android_target_dependency(netsimd linux TCMALLOC_OS_DEPENDENCIES) 64*cf78ab8cSAndroid Build Coastguard Worker 65*cf78ab8cSAndroid Build Coastguard Worker android_add_test( 66*cf78ab8cSAndroid Build Coastguard Worker TARGET netsim-test LICENSE Apache-2.0 67*cf78ab8cSAndroid Build Coastguard Worker SRC src/util/ini_file_test.cc src/util/os_utils_test.cc 68*cf78ab8cSAndroid Build Coastguard Worker src/util/string_utils_test.cc 69*cf78ab8cSAndroid Build Coastguard Worker DEPS android-emu-base-headers 70*cf78ab8cSAndroid Build Coastguard Worker grpc++ 71*cf78ab8cSAndroid Build Coastguard Worker gtest 72*cf78ab8cSAndroid Build Coastguard Worker gtest_main 73*cf78ab8cSAndroid Build Coastguard Worker libbt-rootcanal 74*cf78ab8cSAndroid Build Coastguard Worker netsim-cli-proto-lib 75*cf78ab8cSAndroid Build Coastguard Worker netsim-daemon 76*cf78ab8cSAndroid Build Coastguard Worker netsim-proto 77*cf78ab8cSAndroid Build Coastguard Worker netsimd-lib 78*cf78ab8cSAndroid Build Coastguard Worker netsimd-proto-lib 79*cf78ab8cSAndroid Build Coastguard Worker protobuf::libprotobuf 80*cf78ab8cSAndroid Build Coastguard Worker util-lib) 81*cf78ab8cSAndroid Build Coastguard Worker 82*cf78ab8cSAndroid Build Coastguard Worker target_compile_definitions(netsim-test PUBLIC NETSIM_ANDROID_EMULATOR) 83*cf78ab8cSAndroid Build Coastguard Worker target_include_directories(netsim-test PRIVATE src) 84*cf78ab8cSAndroid Build Coastguard Worker 85*cf78ab8cSAndroid Build Coastguard Worker # Link NtDll to netsim executables. 86*cf78ab8cSAndroid Build Coastguard Worker if(WIN32) 87*cf78ab8cSAndroid Build Coastguard Worker target_link_libraries(netsim PRIVATE ntdll) 88*cf78ab8cSAndroid Build Coastguard Worker target_link_libraries(netsimd PRIVATE ntdll) 89*cf78ab8cSAndroid Build Coastguard Worker target_link_libraries(netsim-test PRIVATE ntdll) 90*cf78ab8cSAndroid Build Coastguard Worker android_license(TARGET "ntdll" LIBNAME None SPDX None LICENSE None 91*cf78ab8cSAndroid Build Coastguard Worker LOCAL None) 92*cf78ab8cSAndroid Build Coastguard Worker endif() 93*cf78ab8cSAndroid Build Coastguard Workerendif() 94*cf78ab8cSAndroid Build Coastguard Worker 95*cf78ab8cSAndroid Build Coastguard Workerif(NOT NETSIM_EXT) 96*cf78ab8cSAndroid Build Coastguard Worker android_add_executable( 97*cf78ab8cSAndroid Build Coastguard Worker TARGET netsim-packet-streamer-client 98*cf78ab8cSAndroid Build Coastguard Worker LICENSE Apache-2.0 99*cf78ab8cSAndroid Build Coastguard Worker SRC src/netsim-packet-streamer-client.cc 100*cf78ab8cSAndroid Build Coastguard Worker DEPS grpc++ packet-streamer-client-lib packet-streamer-proto-lib 101*cf78ab8cSAndroid Build Coastguard Worker protobuf::libprotobuf) 102*cf78ab8cSAndroid Build Coastguard Workerendif() 103*cf78ab8cSAndroid Build Coastguard Worker 104*cf78ab8cSAndroid Build Coastguard Workeradd_subdirectory(ui) 105