xref: /aosp_15_r20/tools/netsim/scripts/tasks/configure_task.py (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*cf78ab8cSAndroid Build Coastguard Worker#
3*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2024 - The Android Open Source Project
4*cf78ab8cSAndroid Build Coastguard Worker#
5*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the',  help="License");
6*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*cf78ab8cSAndroid Build Coastguard Worker#
9*cf78ab8cSAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
10*cf78ab8cSAndroid Build Coastguard Worker#
11*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an',  help="AS IS" BASIS,
13*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License.
16*cf78ab8cSAndroid Build Coastguard Worker
17*cf78ab8cSAndroid Build Coastguard Workerfrom pathlib import Path
18*cf78ab8cSAndroid Build Coastguard Workerimport platform
19*cf78ab8cSAndroid Build Coastguard Workerimport shutil
20*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.task import Task
21*cf78ab8cSAndroid Build Coastguard Workerfrom utils import (AOSP_ROOT, cmake_toolchain, run)
22*cf78ab8cSAndroid Build Coastguard Worker
23*cf78ab8cSAndroid Build Coastguard Worker
24*cf78ab8cSAndroid Build Coastguard Workerclass ConfigureTask(Task):
25*cf78ab8cSAndroid Build Coastguard Worker  BUILDCONFIG = {
26*cf78ab8cSAndroid Build Coastguard Worker      "debug": "-DCMAKE_BUILD_TYPE=Debug",
27*cf78ab8cSAndroid Build Coastguard Worker      "release": "-DCMAKE_BUILD_TYPE=Release",
28*cf78ab8cSAndroid Build Coastguard Worker  }
29*cf78ab8cSAndroid Build Coastguard Worker
30*cf78ab8cSAndroid Build Coastguard Worker  def __init__(self, args, env):
31*cf78ab8cSAndroid Build Coastguard Worker    super().__init__("Configure")
32*cf78ab8cSAndroid Build Coastguard Worker    self.out = Path(args.out_dir)
33*cf78ab8cSAndroid Build Coastguard Worker    self.env = env
34*cf78ab8cSAndroid Build Coastguard Worker    if args.target:
35*cf78ab8cSAndroid Build Coastguard Worker      self.target = args.target.lower()
36*cf78ab8cSAndroid Build Coastguard Worker    else:
37*cf78ab8cSAndroid Build Coastguard Worker      self.target = platform.system().lower()
38*cf78ab8cSAndroid Build Coastguard Worker    self.build_config = self.BUILDCONFIG[args.config]
39*cf78ab8cSAndroid Build Coastguard Worker
40*cf78ab8cSAndroid Build Coastguard Worker  def do_run(self):
41*cf78ab8cSAndroid Build Coastguard Worker    if self.out.exists():
42*cf78ab8cSAndroid Build Coastguard Worker      shutil.rmtree(self.out)
43*cf78ab8cSAndroid Build Coastguard Worker    self.out.mkdir(exist_ok=True, parents=True)
44*cf78ab8cSAndroid Build Coastguard Worker    cmake = shutil.which(
45*cf78ab8cSAndroid Build Coastguard Worker        "cmake",
46*cf78ab8cSAndroid Build Coastguard Worker        path=str(
47*cf78ab8cSAndroid Build Coastguard Worker            AOSP_ROOT
48*cf78ab8cSAndroid Build Coastguard Worker            / "prebuilts"
49*cf78ab8cSAndroid Build Coastguard Worker            / "cmake"
50*cf78ab8cSAndroid Build Coastguard Worker            / f"{platform.system().lower()}-x86"
51*cf78ab8cSAndroid Build Coastguard Worker            / "bin"
52*cf78ab8cSAndroid Build Coastguard Worker        ),
53*cf78ab8cSAndroid Build Coastguard Worker    )
54*cf78ab8cSAndroid Build Coastguard Worker    launcher = [
55*cf78ab8cSAndroid Build Coastguard Worker        cmake,
56*cf78ab8cSAndroid Build Coastguard Worker        f"-B{self.out}",
57*cf78ab8cSAndroid Build Coastguard Worker        "-G Ninja",
58*cf78ab8cSAndroid Build Coastguard Worker        self.build_config,
59*cf78ab8cSAndroid Build Coastguard Worker        f"-DCMAKE_TOOLCHAIN_FILE={cmake_toolchain(self.target)}",
60*cf78ab8cSAndroid Build Coastguard Worker        AOSP_ROOT / "tools" / "netsim",
61*cf78ab8cSAndroid Build Coastguard Worker    ]
62*cf78ab8cSAndroid Build Coastguard Worker
63*cf78ab8cSAndroid Build Coastguard Worker    run(launcher, self.env, "bld")
64*cf78ab8cSAndroid Build Coastguard Worker    return True
65