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