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