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