mirror of
https://github.com/espressif/openthread.git
synced 2025-05-21 09:17:22 +08:00

Android.bp is unable to be checked by github actions. This commit removes the Android.bp. The Android.bp will be added to the Android repo.
192 lines
8.0 KiB
Python
Executable File
192 lines
8.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Copyright (c) 2021, The OpenThread Authors.
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
# 3. Neither the name of the copyright holder nor the
|
|
# names of its contributors may be used to endorse or promote products
|
|
# derived from this software without specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
|
|
# This script updates different make/build files (CMakeLists.txt, BUILD.gn,
|
|
# Andriod.mk, Andriod.bp, auto-make) in OpenThread repo based on the
|
|
# current files present in `./src/core/` & `./include/openthread/`
|
|
# folders. This script MUST be called from openthread root folder.
|
|
|
|
import os
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
# Helper functions
|
|
|
|
|
|
def get_file_list(path, extension):
|
|
"""Get a sorted list of full file names (with path) in a given `path` folder having a given `extension`"""
|
|
return sorted([
|
|
"{}/{}".format(dir_path, file_name)[2:]
|
|
for dir_path, dir_names, file_names in os.walk(path)
|
|
for file_name in file_names
|
|
if file_name.endswith(extension)
|
|
])
|
|
|
|
|
|
def read_txt_file(file_name):
|
|
"""Read the content of a text file with name `file_name` and return content as a list of lines"""
|
|
with open(file_name, 'r') as file:
|
|
lines = file.readlines()
|
|
return lines
|
|
|
|
|
|
def write_txt_file(file_name, lines):
|
|
"""Write a text file with name `file_name` with the content given as a list of `lines`"""
|
|
with open(file_name, 'w') as file:
|
|
file.writelines(lines)
|
|
|
|
|
|
def update_build_file(file_name, start_string, end_string, new_list, search_string=None):
|
|
"""
|
|
Update the file given by `file_name` by replacing the list after the first occurrence of `start_string` up to
|
|
`end_string` with the `new_list`. If `search_string` is given, then the search for `start_string` only starts
|
|
after seeing the `search_string` line in the file.
|
|
"""
|
|
STATE_SEARCH = 1
|
|
STATE_MATCH_START = 2
|
|
STATE_MATCH_END = 3
|
|
STATE_DONE = 4
|
|
|
|
lines = read_txt_file(file_name)
|
|
new_lines = []
|
|
state = STATE_SEARCH if search_string else STATE_MATCH_START
|
|
|
|
for line in lines:
|
|
if state == STATE_SEARCH:
|
|
new_lines.append(line)
|
|
if line.startswith(search_string):
|
|
state = STATE_MATCH_START
|
|
elif state == STATE_MATCH_START:
|
|
new_lines.append(line)
|
|
if line.startswith(start_string):
|
|
new_lines.extend(new_list)
|
|
state = STATE_MATCH_END
|
|
elif state == STATE_MATCH_END:
|
|
if line.startswith(end_string):
|
|
new_lines.append(line)
|
|
state = STATE_DONE
|
|
else:
|
|
new_lines.append(line)
|
|
|
|
if state != STATE_DONE:
|
|
raise RuntimeError('failed to update build file: {}'.format(file_name))
|
|
|
|
if new_lines != lines:
|
|
write_txt_file(file_name, new_lines)
|
|
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
|
|
# Get the list of hpp/h/cpp files in different folders.
|
|
|
|
src_core_path = "./src/core"
|
|
core_h_files = get_file_list(src_core_path, '.h')
|
|
core_hpp_files = get_file_list(src_core_path, '.hpp')
|
|
core_cpp_files = get_file_list(src_core_path, '.cpp')
|
|
core_cpp_files = [item for item in core_cpp_files if not item.endswith("extension_example.cpp")]
|
|
core_hpp_cpp_files = sorted(core_hpp_files + core_cpp_files)
|
|
core_h_hpp_files = sorted(core_h_files + core_hpp_files)
|
|
|
|
include_path = "./include/openthread"
|
|
include_h_files = get_file_list(include_path, '.h')
|
|
include_ot_h_files = [name[8:] for name in include_h_files if not name.startswith("include/openthread/platform")]
|
|
include_platform_h_files = [name[8:] for name in include_h_files if name.startswith("include/openthread/platform")]
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
# Update CMakeLists.txt files
|
|
|
|
core_cmakelist_txt_file = "./src/core/CMakeLists.txt"
|
|
|
|
formatted_list = [" {}\n".format(file_name[9:]) for file_name in core_cpp_files]
|
|
update_build_file(core_cmakelist_txt_file, "set(COMMON_SOURCES\n", ")\n", formatted_list)
|
|
|
|
print("Updated " + core_cmakelist_txt_file)
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
# Update Build.gn files
|
|
|
|
core_build_gn_file = "./src/core/BUILD.gn"
|
|
|
|
formatted_list = [" \"{}\",\n".format(file_name[9:]) for file_name in core_hpp_cpp_files]
|
|
update_build_file(core_build_gn_file, "openthread_core_files = [\n", "]\n", formatted_list)
|
|
|
|
formatted_list = [" \"{}\",\n".format(file_name[9:]) for file_name in core_h_files]
|
|
update_build_file(core_build_gn_file, " public = [\n", " ]\n", formatted_list)
|
|
|
|
print("Updated " + core_build_gn_file)
|
|
|
|
include_build_gn_file = "./include/openthread/BUILD.gn"
|
|
|
|
formatted_list = [" \"{}\",\n".format(file_name[19:]) for file_name in include_h_files]
|
|
update_build_file(include_build_gn_file, " public = [\n", " ]\n", formatted_list)
|
|
|
|
print("Updated " + include_build_gn_file)
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
# Update Android.mk file
|
|
|
|
android_mk_file = "./Android.mk"
|
|
|
|
formatted_list = [" {:<55} \\\n".format(file_name) for file_name in core_cpp_files]
|
|
start_string = "LOCAL_SRC_FILES := \\\n"
|
|
end_string = " src/lib/hdlc/hdlc.cpp"
|
|
update_build_file(android_mk_file, start_string, end_string, formatted_list)
|
|
|
|
print("Updated " + android_mk_file)
|
|
|
|
#----------------------------------------------------------------------------------------------
|
|
# Update Makefile.am files
|
|
|
|
core_makefile_am_file = "./src/core/Makefile.am"
|
|
|
|
formatted_list = [" {:<45} \\\n".format(file_name[9:]) for file_name in core_cpp_files]
|
|
start_string = "SOURCES_COMMON = \\\n"
|
|
end_string = " $(NULL)\n"
|
|
update_build_file(core_makefile_am_file, start_string, end_string, formatted_list)
|
|
|
|
formatted_list = [" {:<45} \\\n".format(file_name[9:]) for file_name in core_h_hpp_files]
|
|
start_string = "HEADERS_COMMON = \\\n"
|
|
end_string = " $(NULL)\n"
|
|
update_build_file(core_makefile_am_file, start_string, end_string, formatted_list)
|
|
|
|
print("Updated " + core_makefile_am_file)
|
|
|
|
include_makefile_am_file = "./include/Makefile.am"
|
|
|
|
formatted_list = [" {:<37} \\\n".format(file_name) for file_name in include_ot_h_files]
|
|
start_string = "openthread_headers = \\\n"
|
|
end_string = " $(NULL)\n"
|
|
update_build_file(include_makefile_am_file, start_string, end_string, formatted_list)
|
|
|
|
formatted_list = [" {:<37} \\\n".format(file_name) for file_name in include_platform_h_files]
|
|
start_string = "ot_platform_headers = \\\n"
|
|
end_string = " $(NULL)\n"
|
|
update_build_file(include_makefile_am_file, start_string, end_string, formatted_list)
|
|
|
|
print("Updated " + include_makefile_am_file)
|