xref: /aosp_15_r20/external/deqp/scripts/ctsbuild/build.py (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker# -*- coding: utf-8 -*-
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker#-------------------------------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker# drawElements Quality Program utilities
5*35238bceSAndroid Build Coastguard Worker# --------------------------------------
6*35238bceSAndroid Build Coastguard Worker#
7*35238bceSAndroid Build Coastguard Worker# Copyright 2015 The Android Open Source Project
8*35238bceSAndroid Build Coastguard Worker#
9*35238bceSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
10*35238bceSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
11*35238bceSAndroid Build Coastguard Worker# You may obtain a copy of the License at
12*35238bceSAndroid Build Coastguard Worker#
13*35238bceSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
14*35238bceSAndroid Build Coastguard Worker#
15*35238bceSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
16*35238bceSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
17*35238bceSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*35238bceSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
19*35238bceSAndroid Build Coastguard Worker# limitations under the License.
20*35238bceSAndroid Build Coastguard Worker#
21*35238bceSAndroid Build Coastguard Worker#-------------------------------------------------------------------------
22*35238bceSAndroid Build Coastguard Worker
23*35238bceSAndroid Build Coastguard Workerimport os
24*35238bceSAndroid Build Coastguard Workerimport sys
25*35238bceSAndroid Build Coastguard Workerimport shutil
26*35238bceSAndroid Build Coastguard Worker
27*35238bceSAndroid Build Coastguard Workerfrom . common import *
28*35238bceSAndroid Build Coastguard Workerfrom . config import *
29*35238bceSAndroid Build Coastguard Worker
30*35238bceSAndroid Build Coastguard Workerdef initBuildDir (config, generator):
31*35238bceSAndroid Build Coastguard Worker    cfgArgs = []
32*35238bceSAndroid Build Coastguard Worker
33*35238bceSAndroid Build Coastguard Worker    # Build base configuration args
34*35238bceSAndroid Build Coastguard Worker    cfgArgs += config.getArgs()
35*35238bceSAndroid Build Coastguard Worker
36*35238bceSAndroid Build Coastguard Worker    # Generator args
37*35238bceSAndroid Build Coastguard Worker    cfgArgs += generator.getGenerateArgs(config.getBuildType())
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker    if not os.path.exists(config.buildDir):
40*35238bceSAndroid Build Coastguard Worker        os.makedirs(config.buildDir)
41*35238bceSAndroid Build Coastguard Worker
42*35238bceSAndroid Build Coastguard Worker    pushWorkingDir(config.getBuildDir())
43*35238bceSAndroid Build Coastguard Worker
44*35238bceSAndroid Build Coastguard Worker    try:
45*35238bceSAndroid Build Coastguard Worker        execute([config.getCMakePath(), config.getSrcPath()] + cfgArgs)
46*35238bceSAndroid Build Coastguard Worker    finally:
47*35238bceSAndroid Build Coastguard Worker        popWorkingDir()
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Workerdef build (config, generator, targets = None):
50*35238bceSAndroid Build Coastguard Worker    if os.path.exists(config.buildDir):
51*35238bceSAndroid Build Coastguard Worker        try:
52*35238bceSAndroid Build Coastguard Worker            initBuildDir(config, generator)
53*35238bceSAndroid Build Coastguard Worker        except Exception as e:
54*35238bceSAndroid Build Coastguard Worker            print(e)
55*35238bceSAndroid Build Coastguard Worker            print("WARNING: Using existing build directory failed; re-creating build directory")
56*35238bceSAndroid Build Coastguard Worker            shutil.rmtree(config.buildDir)
57*35238bceSAndroid Build Coastguard Worker            initBuildDir(config, generator)
58*35238bceSAndroid Build Coastguard Worker    else:
59*35238bceSAndroid Build Coastguard Worker        initBuildDir(config, generator)
60*35238bceSAndroid Build Coastguard Worker
61*35238bceSAndroid Build Coastguard Worker    baseCmd = [config.getCMakePath(), '--build', '.']
62*35238bceSAndroid Build Coastguard Worker    buildArgs = generator.getBuildArgs(config.getBuildType())
63*35238bceSAndroid Build Coastguard Worker
64*35238bceSAndroid Build Coastguard Worker    pushWorkingDir(config.getBuildDir())
65*35238bceSAndroid Build Coastguard Worker
66*35238bceSAndroid Build Coastguard Worker    if targets == None:
67*35238bceSAndroid Build Coastguard Worker        execute(baseCmd + buildArgs)
68*35238bceSAndroid Build Coastguard Worker    else:
69*35238bceSAndroid Build Coastguard Worker        for target in targets:
70*35238bceSAndroid Build Coastguard Worker            execute(baseCmd + ['--target', target] + buildArgs)
71*35238bceSAndroid Build Coastguard Worker
72*35238bceSAndroid Build Coastguard Worker    popWorkingDir()
73