13af6ab5fSopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
23af6ab5fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
33af6ab5fSopenharmony_ci# you may not use this file except in compliance with the License.
43af6ab5fSopenharmony_ci# You may obtain a copy of the License at
53af6ab5fSopenharmony_ci#
63af6ab5fSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
73af6ab5fSopenharmony_ci#
83af6ab5fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
93af6ab5fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
103af6ab5fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
113af6ab5fSopenharmony_ci# See the License for the specific language governing permissions and
123af6ab5fSopenharmony_ci# limitations under the License.
133af6ab5fSopenharmony_ci
143af6ab5fSopenharmony_cicmake_minimum_required (VERSION 3.5.0)
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ciproject (es2panda)
173af6ab5fSopenharmony_ciset(CMAKE_EXPORT_COMPILE_COMMANDS ON)
183af6ab5fSopenharmony_ci
193af6ab5fSopenharmony_ciset(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/out)
203af6ab5fSopenharmony_ciset(GENERATED_DIR ${OUTPUT_DIR}/gen)
213af6ab5fSopenharmony_ciset(GENERATED_STAMP ${OUTPUT_DIR}/gen_dir.stamp)
223af6ab5fSopenharmony_ciadd_custom_target(es2panda-gen)
233af6ab5fSopenharmony_ci
243af6ab5fSopenharmony_ciadd_custom_command(
253af6ab5fSopenharmony_ci  OUTPUT ${GENERATED_STAMP}
263af6ab5fSopenharmony_ci  COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
273af6ab5fSopenharmony_ci  COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATED_DIR}
283af6ab5fSopenharmony_ci  COMMAND ${CMAKE_COMMAND} -E touch ${GENERATED_STAMP}
293af6ab5fSopenharmony_ci)
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ciset(TEMPLATES
323af6ab5fSopenharmony_ci  isa.h.erb
333af6ab5fSopenharmony_ci  formats.h.erb
343af6ab5fSopenharmony_ci)
353af6ab5fSopenharmony_ci
363af6ab5fSopenharmony_cipanda_isa_gen(
373af6ab5fSopenharmony_ci  TEMPLATES ${TEMPLATES}
383af6ab5fSopenharmony_ci  SOURCE ${CMAKE_CURRENT_LIST_DIR}/compiler/templates
393af6ab5fSopenharmony_ci  DESTINATION ${GENERATED_DIR}
403af6ab5fSopenharmony_ci  EXTRA_DEPENDENCIES ${GENERATED_STAMP}
413af6ab5fSopenharmony_ci)
423af6ab5fSopenharmony_ci
433af6ab5fSopenharmony_ciadd_dependencies(es2panda-gen isa_gen_es2panda)
443af6ab5fSopenharmony_ci
453af6ab5fSopenharmony_cifunction(gen_keywords TEMPLATE OUT_DIR)
463af6ab5fSopenharmony_ci  set(TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lexer/templates/${TEMPLATE})
473af6ab5fSopenharmony_ci
483af6ab5fSopenharmony_ci  string(REGEX REPLACE "\.erb$" "" NAME ${TEMPLATE})
493af6ab5fSopenharmony_ci  string(REPLACE "\." "_" CUSTOM_TARGET ${NAME})
503af6ab5fSopenharmony_ci  string(REPLACE "/" "_" CUSTOM_TARGET ${CUSTOM_TARGET})
513af6ab5fSopenharmony_ci  set(CUSTOM_TARGET "panda_es2panda_parser_gen_${CUSTOM_TARGET}")
523af6ab5fSopenharmony_ci
533af6ab5fSopenharmony_ci  set(OUT_FILE ${OUT_DIR}/${NAME})
543af6ab5fSopenharmony_ci  set(GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.rb)
553af6ab5fSopenharmony_ci
563af6ab5fSopenharmony_ci  add_custom_command(OUTPUT ${OUT_FILE}
573af6ab5fSopenharmony_ci    COMMAND ruby ${GENERATOR} ${TEMPLATE_FILE} ${OUT_FILE}
583af6ab5fSopenharmony_ci    DEPENDS ${GENERATED_STAMP} ${GENERATOR} ${TEMPLATE_FILE}
593af6ab5fSopenharmony_ci  )
603af6ab5fSopenharmony_ci
613af6ab5fSopenharmony_ci  add_custom_target(${CUSTOM_TARGET} DEPENDS ${OUT_FILE})
623af6ab5fSopenharmony_ci  add_dependencies(es2panda-gen ${CUSTOM_TARGET})
633af6ab5fSopenharmony_ciendfunction()
643af6ab5fSopenharmony_ci
653af6ab5fSopenharmony_cigen_keywords(keywords.h.erb ${GENERATED_DIR})
663af6ab5fSopenharmony_cigen_keywords(keywordsMap.h.erb ${GENERATED_DIR})
673af6ab5fSopenharmony_ci
683af6ab5fSopenharmony_ciset(ES2PANDA_LIB_SRC
693af6ab5fSopenharmony_ci  es2panda.cpp
703af6ab5fSopenharmony_ci  binder/binder.cpp
713af6ab5fSopenharmony_ci  binder/declaration.cpp
723af6ab5fSopenharmony_ci  binder/scope.cpp
733af6ab5fSopenharmony_ci  binder/variable.cpp
743af6ab5fSopenharmony_ci  compiler/base/catchTable.cpp
753af6ab5fSopenharmony_ci  compiler/base/condition.cpp
763af6ab5fSopenharmony_ci  compiler/base/destructuring.cpp
773af6ab5fSopenharmony_ci  compiler/base/hoisting.cpp
783af6ab5fSopenharmony_ci  compiler/base/iterators.cpp
793af6ab5fSopenharmony_ci  compiler/base/lexenv.cpp
803af6ab5fSopenharmony_ci  compiler/base/literals.cpp
813af6ab5fSopenharmony_ci  compiler/base/lreference.cpp
823af6ab5fSopenharmony_ci  compiler/core/compileQueue.cpp
833af6ab5fSopenharmony_ci  compiler/core/compilerContext.cpp
843af6ab5fSopenharmony_ci  compiler/core/compilerImpl.cpp
853af6ab5fSopenharmony_ci  compiler/core/dynamicContext.cpp
863af6ab5fSopenharmony_ci  compiler/core/emitter.cpp
873af6ab5fSopenharmony_ci  compiler/core/envScope.cpp
883af6ab5fSopenharmony_ci  compiler/core/function.cpp
893af6ab5fSopenharmony_ci  compiler/core/inlineCache.cpp
903af6ab5fSopenharmony_ci  compiler/core/labelTarget.cpp
913af6ab5fSopenharmony_ci  compiler/core/moduleContext.cpp
923af6ab5fSopenharmony_ci  compiler/core/pandagen.cpp
933af6ab5fSopenharmony_ci  compiler/core/regAllocator.cpp
943af6ab5fSopenharmony_ci  compiler/core/regScope.cpp
953af6ab5fSopenharmony_ci  compiler/core/switchBuilder.cpp
963af6ab5fSopenharmony_ci  compiler/debugger/debuginfoDumper.cpp
973af6ab5fSopenharmony_ci  compiler/function/asyncFunctionBuilder.cpp
983af6ab5fSopenharmony_ci  compiler/function/asyncGeneratorFunctionBuilder.cpp
993af6ab5fSopenharmony_ci  compiler/function/functionBuilder.cpp
1003af6ab5fSopenharmony_ci  compiler/function/generatorFunctionBuilder.cpp
1013af6ab5fSopenharmony_ci  ir/astDump.cpp
1023af6ab5fSopenharmony_ci  ir/base/annotation.cpp
1033af6ab5fSopenharmony_ci  ir/base/catchClause.cpp
1043af6ab5fSopenharmony_ci  ir/base/classDefinition.cpp
1053af6ab5fSopenharmony_ci  ir/base/classProperty.cpp
1063af6ab5fSopenharmony_ci  ir/base/decorator.cpp
1073af6ab5fSopenharmony_ci  ir/base/metaProperty.cpp
1083af6ab5fSopenharmony_ci  ir/base/methodDefinition.cpp
1093af6ab5fSopenharmony_ci  ir/base/property.cpp
1103af6ab5fSopenharmony_ci  ir/base/scriptFunction.cpp
1113af6ab5fSopenharmony_ci  ir/base/spreadElement.cpp
1123af6ab5fSopenharmony_ci  ir/base/templateElement.cpp
1133af6ab5fSopenharmony_ci  ir/expression.cpp
1143af6ab5fSopenharmony_ci  ir/expressions/arrayExpression.cpp
1153af6ab5fSopenharmony_ci  ir/expressions/arrowFunctionExpression.cpp
1163af6ab5fSopenharmony_ci  ir/expressions/assignmentExpression.cpp
1173af6ab5fSopenharmony_ci  ir/expressions/awaitExpression.cpp
1183af6ab5fSopenharmony_ci  ir/expressions/binaryExpression.cpp
1193af6ab5fSopenharmony_ci  ir/expressions/callExpression.cpp
1203af6ab5fSopenharmony_ci  ir/expressions/chainExpression.cpp
1213af6ab5fSopenharmony_ci  ir/expressions/classExpression.cpp
1223af6ab5fSopenharmony_ci  ir/expressions/conditionalExpression.cpp
1233af6ab5fSopenharmony_ci  ir/expressions/functionExpression.cpp
1243af6ab5fSopenharmony_ci  ir/expressions/identifier.cpp
1253af6ab5fSopenharmony_ci  ir/expressions/importExpression.cpp
1263af6ab5fSopenharmony_ci  ir/expressions/literal.cpp
1273af6ab5fSopenharmony_ci  ir/expressions/literals/bigIntLiteral.cpp
1283af6ab5fSopenharmony_ci  ir/expressions/literals/booleanLiteral.cpp
1293af6ab5fSopenharmony_ci  ir/expressions/literals/nullLiteral.cpp
1303af6ab5fSopenharmony_ci  ir/expressions/literals/numberLiteral.cpp
1313af6ab5fSopenharmony_ci  ir/expressions/literals/regExpLiteral.cpp
1323af6ab5fSopenharmony_ci  ir/expressions/literals/stringLiteral.cpp
1333af6ab5fSopenharmony_ci  ir/expressions/literals/taggedLiteral.cpp
1343af6ab5fSopenharmony_ci  ir/expressions/memberExpression.cpp
1353af6ab5fSopenharmony_ci  ir/expressions/newExpression.cpp
1363af6ab5fSopenharmony_ci  ir/expressions/objectExpression.cpp
1373af6ab5fSopenharmony_ci  ir/expressions/omittedExpression.cpp
1383af6ab5fSopenharmony_ci  ir/expressions/sequenceExpression.cpp
1393af6ab5fSopenharmony_ci  ir/expressions/superExpression.cpp
1403af6ab5fSopenharmony_ci  ir/expressions/taggedTemplateExpression.cpp
1413af6ab5fSopenharmony_ci  ir/expressions/templateLiteral.cpp
1423af6ab5fSopenharmony_ci  ir/expressions/thisExpression.cpp
1433af6ab5fSopenharmony_ci  ir/expressions/unaryExpression.cpp
1443af6ab5fSopenharmony_ci  ir/expressions/updateExpression.cpp
1453af6ab5fSopenharmony_ci  ir/expressions/yieldExpression.cpp
1463af6ab5fSopenharmony_ci  ir/module/exportAllDeclaration.cpp
1473af6ab5fSopenharmony_ci  ir/module/exportDefaultDeclaration.cpp
1483af6ab5fSopenharmony_ci  ir/module/exportNamedDeclaration.cpp
1493af6ab5fSopenharmony_ci  ir/module/exportSpecifier.cpp
1503af6ab5fSopenharmony_ci  ir/module/importDeclaration.cpp
1513af6ab5fSopenharmony_ci  ir/module/importDefaultSpecifier.cpp
1523af6ab5fSopenharmony_ci  ir/module/importNamespaceSpecifier.cpp
1533af6ab5fSopenharmony_ci  ir/module/importSpecifier.cpp
1543af6ab5fSopenharmony_ci  ir/statement.cpp
1553af6ab5fSopenharmony_ci  ir/statements/blockStatement.cpp
1563af6ab5fSopenharmony_ci  ir/statements/breakStatement.cpp
1573af6ab5fSopenharmony_ci  ir/statements/classDeclaration.cpp
1583af6ab5fSopenharmony_ci  ir/statements/continueStatement.cpp
1593af6ab5fSopenharmony_ci  ir/statements/debuggerStatement.cpp
1603af6ab5fSopenharmony_ci  ir/statements/doWhileStatement.cpp
1613af6ab5fSopenharmony_ci  ir/statements/emptyStatement.cpp
1623af6ab5fSopenharmony_ci  ir/statements/expressionStatement.cpp
1633af6ab5fSopenharmony_ci  ir/statements/forInStatement.cpp
1643af6ab5fSopenharmony_ci  ir/statements/forOfStatement.cpp
1653af6ab5fSopenharmony_ci  ir/statements/forUpdateStatement.cpp
1663af6ab5fSopenharmony_ci  ir/statements/functionDeclaration.cpp
1673af6ab5fSopenharmony_ci  ir/statements/ifStatement.cpp
1683af6ab5fSopenharmony_ci  ir/statements/labelledStatement.cpp
1693af6ab5fSopenharmony_ci  ir/statements/loopStatement.cpp
1703af6ab5fSopenharmony_ci  ir/statements/returnStatement.cpp
1713af6ab5fSopenharmony_ci  ir/statements/switchCaseStatement.cpp
1723af6ab5fSopenharmony_ci  ir/statements/switchStatement.cpp
1733af6ab5fSopenharmony_ci  ir/statements/throwStatement.cpp
1743af6ab5fSopenharmony_ci  ir/statements/tryStatement.cpp
1753af6ab5fSopenharmony_ci  ir/statements/variableDeclaration.cpp
1763af6ab5fSopenharmony_ci  ir/statements/variableDeclarator.cpp
1773af6ab5fSopenharmony_ci  ir/statements/whileStatement.cpp
1783af6ab5fSopenharmony_ci  ir/ts/tsAnyKeyword.cpp
1793af6ab5fSopenharmony_ci  ir/ts/tsArrayType.cpp
1803af6ab5fSopenharmony_ci  ir/ts/tsAsExpression.cpp
1813af6ab5fSopenharmony_ci  ir/ts/tsBigintKeyword.cpp
1823af6ab5fSopenharmony_ci  ir/ts/tsBooleanKeyword.cpp
1833af6ab5fSopenharmony_ci  ir/ts/tsClassImplements.cpp
1843af6ab5fSopenharmony_ci  ir/ts/tsConditionalType.cpp
1853af6ab5fSopenharmony_ci  ir/ts/tsConstructorType.cpp
1863af6ab5fSopenharmony_ci  ir/ts/tsEnumDeclaration.cpp
1873af6ab5fSopenharmony_ci  ir/ts/tsEnumMember.cpp
1883af6ab5fSopenharmony_ci  ir/ts/tsExternalModuleReference.cpp
1893af6ab5fSopenharmony_ci  ir/ts/tsFunctionType.cpp
1903af6ab5fSopenharmony_ci  ir/ts/tsImportEqualsDeclaration.cpp
1913af6ab5fSopenharmony_ci  ir/ts/tsImportType.cpp
1923af6ab5fSopenharmony_ci  ir/ts/tsIndexSignature.cpp
1933af6ab5fSopenharmony_ci  ir/ts/tsIndexedAccessType.cpp
1943af6ab5fSopenharmony_ci  ir/ts/tsInferType.cpp
1953af6ab5fSopenharmony_ci  ir/ts/tsInterfaceBody.cpp
1963af6ab5fSopenharmony_ci  ir/ts/tsInterfaceDeclaration.cpp
1973af6ab5fSopenharmony_ci  ir/ts/tsInterfaceHeritage.cpp
1983af6ab5fSopenharmony_ci  ir/ts/tsIntersectionType.cpp
1993af6ab5fSopenharmony_ci  ir/ts/tsLiteralType.cpp
2003af6ab5fSopenharmony_ci  ir/ts/tsMappedType.cpp
2013af6ab5fSopenharmony_ci  ir/ts/tsMethodSignature.cpp
2023af6ab5fSopenharmony_ci  ir/ts/tsModuleBlock.cpp
2033af6ab5fSopenharmony_ci  ir/ts/tsModuleDeclaration.cpp
2043af6ab5fSopenharmony_ci  ir/ts/tsNamedTupleMember.cpp
2053af6ab5fSopenharmony_ci  ir/ts/tsNeverKeyword.cpp
2063af6ab5fSopenharmony_ci  ir/ts/tsNonNullExpression.cpp
2073af6ab5fSopenharmony_ci  ir/ts/tsNullKeyword.cpp
2083af6ab5fSopenharmony_ci  ir/ts/tsNumberKeyword.cpp
2093af6ab5fSopenharmony_ci  ir/ts/tsObjectKeyword.cpp
2103af6ab5fSopenharmony_ci  ir/ts/tsOptionalType.cpp
2113af6ab5fSopenharmony_ci  ir/ts/tsParameterProperty.cpp
2123af6ab5fSopenharmony_ci  ir/ts/tsParenthesizedType.cpp
2133af6ab5fSopenharmony_ci  ir/ts/tsPrivateIdentifier.cpp
2143af6ab5fSopenharmony_ci  ir/ts/tsPropertySignature.cpp
2153af6ab5fSopenharmony_ci  ir/ts/tsQualifiedName.cpp
2163af6ab5fSopenharmony_ci  ir/ts/tsRestType.cpp
2173af6ab5fSopenharmony_ci  ir/ts/tsSignatureDeclaration.cpp
2183af6ab5fSopenharmony_ci  ir/ts/tsStringKeyword.cpp
2193af6ab5fSopenharmony_ci  ir/ts/tsSymbolKeyword.cpp
2203af6ab5fSopenharmony_ci  ir/ts/tsTemplateLiteralType.cpp
2213af6ab5fSopenharmony_ci  ir/ts/tsThisType.cpp
2223af6ab5fSopenharmony_ci  ir/ts/tsTupleType.cpp
2233af6ab5fSopenharmony_ci  ir/ts/tsTypeAliasDeclaration.cpp
2243af6ab5fSopenharmony_ci  ir/ts/tsTypeAssertion.cpp
2253af6ab5fSopenharmony_ci  ir/ts/tsTypeLiteral.cpp
2263af6ab5fSopenharmony_ci  ir/ts/tsTypeOperator.cpp
2273af6ab5fSopenharmony_ci  ir/ts/tsTypeParameter.cpp
2283af6ab5fSopenharmony_ci  ir/ts/tsTypeParameterDeclaration.cpp
2293af6ab5fSopenharmony_ci  ir/ts/tsTypeParameterInstantiation.cpp
2303af6ab5fSopenharmony_ci  ir/ts/tsTypePredicate.cpp
2313af6ab5fSopenharmony_ci  ir/ts/tsTypeQuery.cpp
2323af6ab5fSopenharmony_ci  ir/ts/tsTypeReference.cpp
2333af6ab5fSopenharmony_ci  ir/ts/tsUndefinedKeyword.cpp
2343af6ab5fSopenharmony_ci  ir/ts/tsUnionType.cpp
2353af6ab5fSopenharmony_ci  ir/ts/tsUnknownKeyword.cpp
2363af6ab5fSopenharmony_ci  ir/ts/tsVoidKeyword.cpp
2373af6ab5fSopenharmony_ci  lexer/keywordsUtil.cpp
2383af6ab5fSopenharmony_ci  lexer/lexer.cpp
2393af6ab5fSopenharmony_ci  lexer/regexp/regexp.cpp
2403af6ab5fSopenharmony_ci  lexer/token/sourceLocation.cpp
2413af6ab5fSopenharmony_ci  lexer/token/token.cpp
2423af6ab5fSopenharmony_ci  parser/context/parserContext.cpp
2433af6ab5fSopenharmony_ci  parser/expressionParser.cpp
2443af6ab5fSopenharmony_ci  parser/parserImpl.cpp
2453af6ab5fSopenharmony_ci  parser/program/program.cpp
2463af6ab5fSopenharmony_ci  parser/statementParser.cpp
2473af6ab5fSopenharmony_ci  parser/transformer/transformer.cpp
2483af6ab5fSopenharmony_ci  typescript/checker.cpp
2493af6ab5fSopenharmony_ci  typescript/core/binaryLikeExpression.cpp
2503af6ab5fSopenharmony_ci  typescript/core/destructuringContext.cpp
2513af6ab5fSopenharmony_ci  typescript/core/function.cpp
2523af6ab5fSopenharmony_ci  typescript/core/helpers.cpp
2533af6ab5fSopenharmony_ci  typescript/core/object.cpp
2543af6ab5fSopenharmony_ci  typescript/core/typeCreation.cpp
2553af6ab5fSopenharmony_ci  typescript/core/typeElaborationContext.cpp
2563af6ab5fSopenharmony_ci  typescript/core/typeRelation.cpp
2573af6ab5fSopenharmony_ci  typescript/core/util.cpp
2583af6ab5fSopenharmony_ci  typescript/types/anyType.cpp
2593af6ab5fSopenharmony_ci  typescript/types/arrayType.cpp
2603af6ab5fSopenharmony_ci  typescript/types/bigintLiteralType.cpp
2613af6ab5fSopenharmony_ci  typescript/types/bigintType.cpp
2623af6ab5fSopenharmony_ci  typescript/types/booleanLiteralType.cpp
2633af6ab5fSopenharmony_ci  typescript/types/booleanType.cpp
2643af6ab5fSopenharmony_ci  typescript/types/constructorType.cpp
2653af6ab5fSopenharmony_ci  typescript/types/enumLiteralType.cpp
2663af6ab5fSopenharmony_ci  typescript/types/enumType.cpp
2673af6ab5fSopenharmony_ci  typescript/types/functionType.cpp
2683af6ab5fSopenharmony_ci  typescript/types/globalTypesHolder.cpp
2693af6ab5fSopenharmony_ci  typescript/types/indexInfo.cpp
2703af6ab5fSopenharmony_ci  typescript/types/interfaceType.cpp
2713af6ab5fSopenharmony_ci  typescript/types/neverType.cpp
2723af6ab5fSopenharmony_ci  typescript/types/nonPrimitiveType.cpp
2733af6ab5fSopenharmony_ci  typescript/types/nullType.cpp
2743af6ab5fSopenharmony_ci  typescript/types/numberLiteralType.cpp
2753af6ab5fSopenharmony_ci  typescript/types/numberType.cpp
2763af6ab5fSopenharmony_ci  typescript/types/objectDescriptor.cpp
2773af6ab5fSopenharmony_ci  typescript/types/objectLiteralType.cpp
2783af6ab5fSopenharmony_ci  typescript/types/objectType.cpp
2793af6ab5fSopenharmony_ci  typescript/types/signature.cpp
2803af6ab5fSopenharmony_ci  typescript/types/stringLiteralType.cpp
2813af6ab5fSopenharmony_ci  typescript/types/stringType.cpp
2823af6ab5fSopenharmony_ci  typescript/types/symbolType.cpp
2833af6ab5fSopenharmony_ci  typescript/types/tupleType.cpp
2843af6ab5fSopenharmony_ci  typescript/types/type.cpp
2853af6ab5fSopenharmony_ci  typescript/types/typeParameter.cpp
2863af6ab5fSopenharmony_ci  typescript/types/typeReference.cpp
2873af6ab5fSopenharmony_ci  typescript/types/typeRelation.cpp
2883af6ab5fSopenharmony_ci  typescript/types/undefinedType.cpp
2893af6ab5fSopenharmony_ci  typescript/types/unionType.cpp
2903af6ab5fSopenharmony_ci  typescript/types/unknownType.cpp
2913af6ab5fSopenharmony_ci  typescript/types/voidType.cpp
2923af6ab5fSopenharmony_ci  util/bitset.cpp
2933af6ab5fSopenharmony_ci  util/helpers.cpp
2943af6ab5fSopenharmony_ci  util/ustring.cpp
2953af6ab5fSopenharmony_ci)
2963af6ab5fSopenharmony_ci
2973af6ab5fSopenharmony_ciadd_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC})
2983af6ab5fSopenharmony_ciadd_dependencies(es2panda-lib es2panda-gen)
2993af6ab5fSopenharmony_ci
3003af6ab5fSopenharmony_ciset(ICU_INCLUDE_DIRS
3013af6ab5fSopenharmony_ci    ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/common
3023af6ab5fSopenharmony_ci    ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/i18n
3033af6ab5fSopenharmony_ci    ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source
3043af6ab5fSopenharmony_ci)
3053af6ab5fSopenharmony_ci
3063af6ab5fSopenharmony_citarget_include_directories(es2panda-lib
3073af6ab5fSopenharmony_ci  PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
3083af6ab5fSopenharmony_ci  PRIVATE ${OUTPUT_DIR}
3093af6ab5fSopenharmony_ci  PRIVATE ${ICU_INCLUDE_DIRS}
3103af6ab5fSopenharmony_ci)
3113af6ab5fSopenharmony_ci
3123af6ab5fSopenharmony_citarget_compile_options(es2panda-lib
3133af6ab5fSopenharmony_ci  PRIVATE -fexceptions -Werror=shadow
3143af6ab5fSopenharmony_ci)
3153af6ab5fSopenharmony_ci
3163af6ab5fSopenharmony_citarget_link_libraries(es2panda-lib
3173af6ab5fSopenharmony_ci  PUBLIC arkbase hmicuuc.z
3183af6ab5fSopenharmony_ci  PRIVATE arkassembler
3193af6ab5fSopenharmony_ci)
3203af6ab5fSopenharmony_ci
3213af6ab5fSopenharmony_ciif (PANDA_FUZZILLI)
3223af6ab5fSopenharmony_ci  target_compile_options(es2panda-lib
3233af6ab5fSopenharmony_ci      PRIVATE -fPIC
3243af6ab5fSopenharmony_ci  )
3253af6ab5fSopenharmony_ciendif()
3263af6ab5fSopenharmony_ci
3273af6ab5fSopenharmony_cipanda_add_sanitizers(TARGET es2panda-lib SANITIZERS ${PANDA_SANITIZERS_LIST})
3283af6ab5fSopenharmony_cipanda_add_to_clang_tidy(TARGET es2panda-lib CHECKS
3293af6ab5fSopenharmony_ci    "-modernize-use-trailing-return-type"
3303af6ab5fSopenharmony_ci    "-llvmlibc-restrict-system-libc-headers"
3313af6ab5fSopenharmony_ci    "-llvmlibc-callee-namespace"
3323af6ab5fSopenharmony_ci    "-cert-dcl21-cpp"
3333af6ab5fSopenharmony_ci    "-cppcoreguidelines-macro-usage"
3343af6ab5fSopenharmony_ci    "-cppcoreguidelines-pro-bounds-pointer-arithmetic"
3353af6ab5fSopenharmony_ci    "-fuchsia-default-arguments-calls"
3363af6ab5fSopenharmony_ci    "-fuchsia-default-arguments-declarations"
3373af6ab5fSopenharmony_ci    "-readability-implicit-bool-conversion"
3383af6ab5fSopenharmony_ci    "-misc-non-private-member-variables-in-classes"
3393af6ab5fSopenharmony_ci    "-hicpp-signed-bitwise"
3403af6ab5fSopenharmony_ci    "-altera-struct-pack-align"
3413af6ab5fSopenharmony_ci)
3423af6ab5fSopenharmony_ci
3433af6ab5fSopenharmony_ciadd_subdirectory(aot)
344