mirror of
https://github.com/openharmony/build_lite.git
synced 2026-07-01 21:24:06 -04:00
73 lines
2.4 KiB
Python
Executable File
73 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
#
|
|
# Copyright (c) 2020 Huawei Device Co., Ltd.
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
import os
|
|
import shutil
|
|
from utils import file_write
|
|
from utils import CallbackDict, makedirs
|
|
from utils import read_json_file
|
|
|
|
|
|
def args_gn_create(config):
|
|
# Delete and create output directory
|
|
out_path = config.get_out_path()
|
|
if os.path.exists(out_path):
|
|
shutil.rmtree(out_path)
|
|
makedirs(out_path)
|
|
|
|
|
|
def args_gn_write(config):
|
|
product_args_path = os.path.join(config.get_out_path(), 'args.gn')
|
|
ndk = config.ndk
|
|
build_type = config.build_type
|
|
|
|
file_write(product_args_path, 'at', 'product = "{}"\n'.format(
|
|
config.product))
|
|
# Add import to the file header
|
|
if ndk is not None:
|
|
ndk_gn_args = ('ohos_build_ndk = true\n'
|
|
'ohos_build_ndk_target_host = "{}"'
|
|
'\n'.format(ndk))
|
|
file_write(product_args_path, 'at', ndk_gn_args)
|
|
if config.test_args:
|
|
file_write(product_args_path, 'at',
|
|
'ohos_xts_test_args = "{}"\n'.format(config.test_args[1]))
|
|
file_write(product_args_path, 'at',
|
|
'ohos_build_type = "{}"\n'.format(build_type))
|
|
for feature in CallbackDict.args_list:
|
|
file_write(product_args_path, 'at', '{}\n'.format(feature))
|
|
|
|
|
|
def load_subsystem_feature(config):
|
|
product = config.product
|
|
product_json = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
|
'product', '{}.json'.format(product))
|
|
json_content = read_json_file(product_json)
|
|
for subsystem in json_content['subsystem']:
|
|
for component in subsystem['component']:
|
|
for feature in component['features']:
|
|
CallbackDict.args_list.append(feature)
|
|
|
|
|
|
def config_create(**kwargs):
|
|
config = kwargs['config']
|
|
args_gn_create(config)
|
|
load_subsystem_feature(config)
|
|
args_gn_write(config)
|
|
return True
|