blob: 9db7b218c572360b19efbf1d17efc7887a23d973 [file] [log] [blame]
# Copyright 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
# Netsim - a network simulator for discovery, ranging and communication
project(netsim)
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0079 NEW)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(NOT ANDROID_EMULATOR_BUILD)
message(STATUS "Building netsim standalone.")
include(netsim_dependencies)
endif()
if(TARGET Rust::Rustc)
add_subdirectory(pdl)
add_subdirectory(rust)
else()
message(WARNING "Only building client side dependencies.")
endif()
add_subdirectory(proto)
add_subdirectory(src)
if(TARGET Rust::Rustc)
android_add_executable(
TARGET netsim LICENSE Apache-2.0 INSTALL . SRC rust/netsim.cc
DEPS frontend-client grpc++ netsim-cli-proto-lib netsim-cli-rust-lib
protobuf::libprotobuf util-lib)
android_add_executable(
TARGET netsimd
LICENSE Apache-2.0 INSTALL .
SRC rust/netsimd.cc
DEPS grpc++
libbt-rootcanal
netsim-cli-proto-lib
netsim-daemon
netsimd-lib
netsimd-proto-lib
packet-streamer-proto-lib)
if(NOT DARWIN_AARCH64 AND NOT DARWIN_X86_64)
# Prevent duplicate symbol for cxx Rust crate.
target_link_libraries(netsimd PRIVATE -Wl,--allow-multiple-definition)
endif()
android_target_dependency(netsimd linux TCMALLOC_OS_DEPENDENCIES)
android_add_test(
TARGET netsim-test LICENSE Apache-2.0
SRC src/util/ini_file_test.cc src/util/os_utils_test.cc
src/util/string_utils_test.cc
DEPS android-emu-base-headers
grpc++
gtest
gtest_main
libbt-rootcanal
netsim-cli-proto-lib
netsim-daemon
netsim-proto
netsimd-lib
netsimd-proto-lib
protobuf::libprotobuf
util-lib)
target_compile_definitions(netsim-test PUBLIC NETSIM_ANDROID_EMULATOR)
target_include_directories(netsim-test PRIVATE src)
# Link NtDll to netsim executables.
if(WIN32)
target_link_libraries(netsim PRIVATE ntdll)
target_link_libraries(netsimd PRIVATE ntdll)
target_link_libraries(netsim-test PRIVATE ntdll)
android_license(TARGET "ntdll" LIBNAME None SPDX None LICENSE None
LOCAL None)
endif()
endif()
if(NOT NETSIM_EXT)
android_add_executable(
TARGET netsim-packet-streamer-client
LICENSE Apache-2.0
SRC src/netsim-packet-streamer-client.cc
DEPS grpc++ packet-streamer-client-lib packet-streamer-proto-lib
protobuf::libprotobuf)
endif()
add_subdirectory(ui)