13d0407baSopenharmony_ci#!/usr/bin/env python3 23d0407baSopenharmony_ci 33d0407baSopenharmony_ci#encoding=utf-8 43d0407baSopenharmony_ci__author__ = 'addy.ke@rock-chips.com' 53d0407baSopenharmony_ci 63d0407baSopenharmony_ciimport traceback 73d0407baSopenharmony_ciimport os 83d0407baSopenharmony_ciimport sys 93d0407baSopenharmony_ciimport threading 103d0407baSopenharmony_ciimport time 113d0407baSopenharmony_ciimport math 123d0407baSopenharmony_ciimport getopt 133d0407baSopenharmony_ciimport fnmatch 143d0407baSopenharmony_ci 153d0407baSopenharmony_cimodule = "hardware" 163d0407baSopenharmony_cichips = ['Pisces', 'Koala', 'koala', 'Swallow', 'swallow', 'pisces', 'rv1126', 'rv1108', 'rk2108', 'rk2106', 'rk2206', 'rk3568', "rk1808"] 173d0407baSopenharmony_ci 183d0407baSopenharmony_ciclass BuildGn: 193d0407baSopenharmony_ci def __init__(self, chip, board): 203d0407baSopenharmony_ci self.chip = chip 213d0407baSopenharmony_ci self.board = board 223d0407baSopenharmony_ci self.fp = open("BUILD.gn", 'w+', encoding='utf-8') 233d0407baSopenharmony_ci 243d0407baSopenharmony_ci def head(self): 253d0407baSopenharmony_ci head = "# Copyright (c) 2020-2021 Lockzhiner Electronics Co., Ltd.\n" 263d0407baSopenharmony_ci head +="# limitations under the License.\n" 273d0407baSopenharmony_ci head +="# Licensed under the Apache License, Version 2.0 (the \"License\");\n" 283d0407baSopenharmony_ci head +="# you may not use this file except in compliance with the License.\n" 293d0407baSopenharmony_ci head +="# You may obtain a copy of the License at\n" 303d0407baSopenharmony_ci head +="#\n" 313d0407baSopenharmony_ci head +="# http://www.apache.org/licenses/LICENSE-2.0\n" 323d0407baSopenharmony_ci head +="#\n" 333d0407baSopenharmony_ci head +="# Unless required by applicable law or agreed to in writing, software\n" 343d0407baSopenharmony_ci head +="# distributed under the License is distributed on an \"AS IS\" BASIS,\n" 353d0407baSopenharmony_ci head +="# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" 363d0407baSopenharmony_ci head +="# See the License for the specific language governing permissions and\n" 373d0407baSopenharmony_ci head +="#\n\n" 383d0407baSopenharmony_ci head += "import(\"//drivers/adapter/khdf/liteos_m/hdf.gni\")\n" 393d0407baSopenharmony_ci head += "import(\"//device/rockchip/%s/sdk_liteos/board.gni\")\n" % self.chip 403d0407baSopenharmony_ci head += "\n" 413d0407baSopenharmony_ci head += "static_library(\"%s\") {\n" % module 423d0407baSopenharmony_ci self.fp.write(head) 433d0407baSopenharmony_ci 443d0407baSopenharmony_ci def include(self): 453d0407baSopenharmony_ci inc = " include_dirs = [\n" 463d0407baSopenharmony_ci inc += " \"./include\",\n" 473d0407baSopenharmony_ci inc += " \"./lib/hal/inc\",\n" 483d0407baSopenharmony_ci inc += " \"./lib/CMSIS/Device/%s/Include\",\n" % self.chip.upper() 493d0407baSopenharmony_ci inc += " \"./lib/CMSIS/Core/Include\",\n" 503d0407baSopenharmony_ci inc += " \"./lib/bsp/%s\",\n" % self.chip.upper() 513d0407baSopenharmony_ci inc += " \"./project/%s/src\",\n" % self.chip 523d0407baSopenharmony_ci inc += " \"$adapter_path/include\",\n" 533d0407baSopenharmony_ci inc += " \"$sdk_path/include\",\n" 543d0407baSopenharmony_ci inc += " \"$kernel_path/kernel/arch/include\",\n" 553d0407baSopenharmony_ci inc += " \"$hal_path/include\",\n" 563d0407baSopenharmony_ci inc += " \"./lz_hardware/wifi/include\",\n" 573d0407baSopenharmony_ci inc += " \"//third_party/musl/porting/liteos_m/kernel/include\",\n" 583d0407baSopenharmony_ci inc += " ]\n" 593d0407baSopenharmony_ci self.fp.write(inc) 603d0407baSopenharmony_ci 613d0407baSopenharmony_ci def tail(self): 623d0407baSopenharmony_ci tail = "}\n" 633d0407baSopenharmony_ci self.fp.write(tail) 643d0407baSopenharmony_ci 653d0407baSopenharmony_ci def source(self, path, init): 663d0407baSopenharmony_ci search = ['*.c'] 673d0407baSopenharmony_ci if init == 0: 683d0407baSopenharmony_ci source = " sources = [\n" 693d0407baSopenharmony_ci else: 703d0407baSopenharmony_ci source = " sources += [\n" 713d0407baSopenharmony_ci for root, dirnames, filenames in os.walk(path): 723d0407baSopenharmony_ci for extension in search: 733d0407baSopenharmony_ci for filename in fnmatch.filter(filenames, extension): 743d0407baSopenharmony_ci src = os.path.join(root, filename) 753d0407baSopenharmony_ci found = 1 763d0407baSopenharmony_ci for chip in chips: 773d0407baSopenharmony_ci if src.find(chip) >= 0 and chip != self.chip: 783d0407baSopenharmony_ci found = 0 793d0407baSopenharmony_ci if src.find(chip.upper()) >= 0 and chip != self.chip: 803d0407baSopenharmony_ci found = 0 813d0407baSopenharmony_ci if found == 1: 823d0407baSopenharmony_ci source += " \"%s\",\n" % src 833d0407baSopenharmony_ci 843d0407baSopenharmony_ci source += " ]\n" 853d0407baSopenharmony_ci self.fp.write(source) 863d0407baSopenharmony_cign = BuildGn("rk2206", "TB-RK2206H0-A") 873d0407baSopenharmony_ci 883d0407baSopenharmony_cign.head() 893d0407baSopenharmony_cign.source('./lib/hal', 0) 903d0407baSopenharmony_cign.source('./lib/bsp', 1) 913d0407baSopenharmony_cign.source('./lib/CMSIS/Device', 1) 923d0407baSopenharmony_cign.source('./driver', 1) 933d0407baSopenharmony_cign.source('./lz_hardware', 1) 943d0407baSopenharmony_cign.include() 953d0407baSopenharmony_cign.tail() 96