1/* 2* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd. 3* Licensed under the Apache License, Version 2.0 (the "License"); 4* you may not use this file except in compliance with the License. 5* You may obtain a copy of the License at 6* 7* http://www.apache.org/licenses/LICENSE-2.0 8* 9* Unless required by applicable law or agreed to in writing, software 10* distributed under the License is distributed on an "AS IS" BASIS, 11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12* See the License for the specific language governing permissions and 13* limitations under the License. 14*/ 15const { writeFile } = require('../tools/FileRW'); 16const re = require('../tools/re'); 17 18let gnTemplete = `\ 19import("//build/ohos.gni") 20 21ohos_shared_library("[implName]") 22{ 23 sources = [[businessCodeCpp] 24 "[implName]_middle.cpp", 25 "[implName].cpp", 26 "tool_utility.cpp", 27 ] 28 include_dirs = [ 29 ".", 30 "//third_party/node/src", 31 ] 32 deps=[ 33 "//foundation/arkui/napi:ace_napi", 34 "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", 35 ] 36 remove_configs = [ "//build/config/compiler:no_rtti" ] 37 cflags=[ 38 ] 39 cflags_cc=[ 40 "-frtti", 41 ] 42 ldflags = [ 43 ] 44 45 relative_install_dir = "module" 46 part_name = "[partName]" 47 subsystem_name = "[subsystemName]" 48} 49`; 50 51/**创建nodejs编译文件,用于在ubuntu测试 */ 52function generateGN(destDir, implName, license, partName, buildCpp) { 53 let subsystemName = implName; 54 let gnFile = gnTemplete.replaceAll('[implName]', implName); 55 gnFile = gnFile.replaceAll('[businessCodeCpp]', buildCpp); 56 gnFile = gnFile.replaceAll('[subsystemName]', subsystemName); 57 gnFile = gnFile.replaceAll('[partName]', partName); 58 if (license) { 59 license = getGnLicense(license); 60 } 61 writeFile(re.pathJoin(destDir, 'BUILD.gn'), (null !== license && undefined !== license) ? 62 (license + '\n' + gnFile) : gnFile); 63} 64 65function getGnLicense(license) { 66 let s2 = license.substring(2, license.length - 2).split('\n'); 67 license = ''; 68 for (let i = 1; i < s2.length; i++) { 69 if (s2[i].length > 0) { 70 while (s2[i][0] === ' ') 71 { 72 s2[i] = s2[i].substring(1); 73 } 74 if (s2[i].length > 3 && s2[i][0] === '*') { 75 license += '#' + s2[i].substring(1) + '\n'; 76 } 77 } 78 } 79 return license; 80} 81 82module.exports = { 83 generateGN 84}; 85