1# Copyright (c) 2021-2025 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14cmake_minimum_required (VERSION 3.5.0) 15 16include(cmake/coverage.cmake) 17 18project (es2panda) 19set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 20 21set(ES2PANDA_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) 22set(ES2PANDA_BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR}) 23 24set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) 25 26if(PANDA_TARGET_WINDOWS) 27 set(DELIM "\\\\") 28 string(REPLACE "/" "\\\\" STATIC_CORE ${PANDA_ROOT}) 29else() 30 set(STATIC_CORE ${PANDA_ROOT}) 31 set(DELIM "/") 32endif() 33 34set(GENERATED_DIR ${OUTPUT_DIR}/generated) 35set(GENERATED_STAMP ${OUTPUT_DIR}/gen_dir.stamp) 36if(CMAKE_CROSSCOMPILING) 37 ExternalProject_Get_Property(panda_host_tools binary_dir) 38 set(DEFAULT_ARKTSCONFIG "${binary_dir}/tools/es2panda/aot") 39else() 40 set(DEFAULT_ARKTSCONFIG "${CMAKE_BINARY_DIR}/bin") 41endif() 42file(MAKE_DIRECTORY "${GENERATED_DIR}") 43if(PANDA_WITH_ETS) 44 file(WRITE "${GENERATED_DIR}/arktsconfig.json" 45 "{\n" 46 " \"compilerOptions\": {\n" 47 " \"baseUrl\": \"${PANDA_ROOT}\",\n" 48 " \"paths\": {\n" 49 " \"std\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}stdlib${DELIM}std\"],\n" 50 " \"escompat\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}stdlib${DELIM}escompat\"],\n" 51 " \"@ohos.buffer\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.buffer.ets\"],\n" 52 " \"@ohos.util.ArrayList\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.ArrayList.ets\"],\n" 53 " \"@ohos.util.Deque\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.Deque.ets\"],\n" 54 " \"@ohos.util.HashMap\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.HashMap.ets\"],\n" 55 " \"@ohos.util.HashSet\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.HashSet.ets\"],\n" 56 " \"@ohos.util.json\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.json.ets\"],\n" 57 " \"@ohos.util.LightWeightMap\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.LightWeightMap.ets\"],\n" 58 " \"@ohos.util.LightWeightSet\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.LightWeightSet.ets\"],\n" 59 " \"@ohos.util.LinkedList\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.LinkedList.ets\"],\n" 60 " \"@ohos.util.List\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.List.ets\"],\n" 61 " \"@ohos.util.PlainArray\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.PlainArray.ets\"],\n" 62 " \"@ohos.util.Queue\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.Queue.ets\"],\n" 63 " \"@ohos.util.Stack\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.Stack.ets\"],\n" 64 " \"@ohos.util.stream\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.stream.ets\"],\n" 65 " \"@ohos.util\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.ets\"],\n" 66 " \"@ohos.util.TreeMap\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.TreeMap.ets\"],\n" 67 " \"@ohos.util.TreeSet\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.util.TreeSet.ets\"],\n" 68 " \"@ohos.uri\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.uri.ets\"],\n" 69 " \"@ohos.url\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.url.ets\"],\n" 70 " \"@ohos.xml\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.xml.ets\"],\n" 71 " \"@ohos.base\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}api${DELIM}@ohos.base.ets\"],\n" 72 " \"@arkts.math.Decimal\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}arkts${DELIM}@arkts.math.Decimal.ets\"],\n" 73 " \"@arkts.collections\": [\"${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk${DELIM}arkts${DELIM}@arkts.collections.ets\"],\n" 74 " \"import_tests\": [\"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/import_tests\"]\n" 75 " },\n" 76 " \"dynamicPaths\": {\n" 77 " \"dynamic_import_tests\": {\"language\": \"js\", \"ohmUrl\": \"dynamic_import_tests\"},\n" 78 " \"dynamic_import_tests/modules/instanceof\": {\"language\": \"js\", \"declPath\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/instanceof.ets\", \"ohmUrl\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/instanceof.ets\"},\n" 79 " \"dynamic_import_tests/modules/module\": {\"language\": \"js\", \"declPath\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/module.ets\", \"ohmUrl\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/module.ets\"}\n" 80 " }\n" 81 " }\n" 82 "}\n" 83 ) 84 MESSAGE("Generated default arktsconfig to ${GENERATED_DIR}/arktsconfig.json") 85 file(COPY "${GENERATED_DIR}/arktsconfig.json" DESTINATION "${DEFAULT_ARKTSCONFIG}/") 86 file(COPY "${GENERATED_DIR}/arktsconfig.json" DESTINATION "${CMAKE_BINARY_DIR}/bin") 87 file(COPY "${GENERATED_DIR}/arktsconfig.json" DESTINATION "${CMAKE_BINARY_DIR}/bin-gtests") 88endif() 89 90# add check for PANDA_PRODUCT_BUILD after normal version tracking will be implemented 91execute_process( 92 COMMAND date "+%Y-%m-%d_%H:%M:%S" 93 OUTPUT_VARIABLE CURRENT_DATE 94 OUTPUT_STRIP_TRAILING_WHITESPACE 95) 96execute_process( 97 COMMAND git rev-parse HEAD 98 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 99 OUTPUT_VARIABLE LAST_COMMIT_HASH 100 OUTPUT_STRIP_TRAILING_WHITESPACE 101) 102 103add_definitions(-DES2PANDA_DATE="${CURRENT_DATE}") 104add_definitions(-DES2PANDA_HASH="${LAST_COMMIT_HASH}") 105 106 107add_custom_command( 108 OUTPUT ${GENERATED_STAMP} 109 COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR} 110 COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATED_DIR} 111 COMMAND ${CMAKE_COMMAND} -E touch ${GENERATED_STAMP} 112) 113 114set(TEMPLATES 115 isa.h.erb 116 formats.h.erb 117) 118 119panda_isa_gen( 120 TEMPLATES ${TEMPLATES} 121 SOURCE ${CMAKE_CURRENT_LIST_DIR}/compiler/templates 122 DESTINATION ${GENERATED_DIR} 123 EXTRA_DEPENDENCIES ${GENERATED_STAMP} 124) 125 126panda_gen( 127 DATA ${CMAKE_CURRENT_SOURCE_DIR}/util/options.yaml 128 TARGET_NAME es2panda_options_gen 129 TEMPLATES options.h.erb 130 SOURCE ${PANDA_ROOT}/templates/options 131 DESTINATION ${GENERATED_DIR} 132 API ${PANDA_ROOT}/templates/common.rb 133) 134 135set(DIAGNOSTIC_DIR 136 ${CMAKE_CURRENT_SOURCE_DIR}/util/diagnostic/ 137) 138 139panda_gen( 140 DATA 141 ${DIAGNOSTIC_DIR}/syntax.yaml 142 ${DIAGNOSTIC_DIR}/semantic.yaml 143 ${DIAGNOSTIC_DIR}/warning.yaml 144 ${DIAGNOSTIC_DIR}/fatal.yaml 145 ${CMAKE_CURRENT_SOURCE_DIR}/declgen_ets2ts/declgen_ets2ts_error.yaml 146 ${CMAKE_CURRENT_SOURCE_DIR}/declgen_ets2ts/declgen_ets2ts_warning.yaml 147 ${DIAGNOSTIC_DIR}/arktsconfig_error.yaml 148 ${DIAGNOSTIC_DIR}/isolated_declgen.yaml 149 TARGET_NAME es2panda_diagnostic_gen 150 TEMPLATES diagnostic.h.erb 151 SOURCE ${DIAGNOSTIC_DIR} 152 DESTINATION ${GENERATED_DIR} 153 API 154 ${DIAGNOSTIC_DIR}/diagnostic.rb 155 ${DIAGNOSTIC_DIR}/diagnostic.rb 156 ${DIAGNOSTIC_DIR}/diagnostic.rb 157 ${DIAGNOSTIC_DIR}/diagnostic.rb 158 ${DIAGNOSTIC_DIR}/diagnostic.rb 159 ${DIAGNOSTIC_DIR}/diagnostic.rb 160 ${DIAGNOSTIC_DIR}/diagnostic.rb 161 ${DIAGNOSTIC_DIR}/diagnostic.rb 162) 163 164panda_gen( 165 TARGET_NAME es2panda_keywords 166 TEMPLATES 167 keywords.h.erb 168 token.inl.erb 169 tokenType.h.erb 170 DATA 171 ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.yaml 172 ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/tokens.yaml 173 API 174 ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.rb 175 ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/tokens.rb 176 SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/lexer/templates 177 DESTINATION ${GENERATED_DIR} 178) 179 180panda_gen( 181 DATA ${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.yaml 182 TARGET_NAME es2panda_signatures 183 TEMPLATES signatures.h.erb 184 API 185 ${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.rb 186 SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/compiler/templates 187 DESTINATION ${GENERATED_DIR} 188) 189 190set(ES2PANDA_LIB_SRC 191 ast_verifier/ASTVerifier.cpp 192 ast_verifier/helpers.cpp 193 ast_verifier/invariants/arithmeticOperationValid.cpp 194 ast_verifier/invariants/checkAbstractMethod.cpp 195 ast_verifier/invariants/checkConstProperties.cpp 196 ast_verifier/invariants/checkScopeDeclaration.cpp 197 ast_verifier/invariants/checkStructDeclaration.cpp 198 ast_verifier/invariants/everyChildHasValidParent.cpp 199 ast_verifier/invariants/everyChildInParentRange.cpp 200 ast_verifier/invariants/getterSetterValidation.cpp 201 ast_verifier/invariants/identifierHasVariable.cpp 202 ast_verifier/invariants/importExportAccessValid.cpp 203 ast_verifier/invariants/nodeHasParent.cpp 204 ast_verifier/invariants/nodeHasSourceRange.cpp 205 ast_verifier/invariants/nodeHasType.cpp 206 ast_verifier/invariants/referenceTypeAnnotationIsNull.cpp 207 ast_verifier/invariants/forLoopCorrectlyInitialized.cpp 208 ast_verifier/invariants/modifierAccessValid.cpp 209 ast_verifier/invariants/sequenceExpressionHasLastType.cpp 210 ast_verifier/invariants/variableHasEnclosingScope.cpp 211 ast_verifier/invariants/variableHasScope.cpp 212 ast_verifier/invariants/variableNameIdentifierNameSame.cpp 213 es2panda.cpp 214 varbinder/ASBinder.cpp 215 varbinder/TSBinder.cpp 216 varbinder/TypedBinder.cpp 217 varbinder/ETSBinder.cpp 218 varbinder/JSBinder.cpp 219 varbinder/varbinder.cpp 220 varbinder/declaration.cpp 221 varbinder/recordTable.cpp 222 varbinder/scope.cpp 223 varbinder/variable.cpp 224 compiler/base/catchTable.cpp 225 compiler/base/condition.cpp 226 compiler/base/destructuring.cpp 227 compiler/base/hoisting.cpp 228 compiler/base/iterators.cpp 229 compiler/base/lexenv.cpp 230 compiler/base/literals.cpp 231 compiler/base/lreference.cpp 232 compiler/base/optionalChain.cpp 233 compiler/core/CFG.cpp 234 compiler/core/codeGen.cpp 235 compiler/core/compileJob.cpp 236 compiler/core/compileQueue.cpp 237 compiler/core/compilerImpl.cpp 238 compiler/core/dynamicContext.cpp 239 compiler/core/emitter.cpp 240 compiler/core/JSCompiler.cpp 241 compiler/core/JSCompilerUnreachable.cpp 242 compiler/core/JSemitter.cpp 243 compiler/core/envScope.cpp 244 compiler/core/function.cpp 245 compiler/core/labelTarget.cpp 246 compiler/core/moduleContext.cpp 247 compiler/core/pandagen.cpp 248 compiler/core/programElement.cpp 249 compiler/core/regAllocator.cpp 250 compiler/core/regScope.cpp 251 compiler/core/regSpiller.cpp 252 compiler/core/ETSCompiler.cpp 253 compiler/core/ETSCompilerUnrechable.cpp 254 compiler/core/ETSemitter.cpp 255 compiler/core/ETSGen.cpp 256 compiler/core/ETSfunction.cpp 257 compiler/core/switchBuilder.cpp 258 compiler/core/targetTypeContext.cpp 259 compiler/core/vReg.cpp 260 compiler/debugger/debuginfoDumper.cpp 261 compiler/function/asyncFunctionBuilder.cpp 262 compiler/function/asyncGeneratorFunctionBuilder.cpp 263 compiler/function/functionBuilder.cpp 264 compiler/function/generatorFunctionBuilder.cpp 265 compiler/lowering/checkerPhase.cpp 266 compiler/lowering/scopesInit/savedBindingsCtx.cpp 267 compiler/lowering/scopesInit/scopesInitPhase.cpp 268 compiler/lowering/phase.cpp 269 compiler/lowering/plugin_phase.cpp 270 compiler/lowering/resolveIdentifiers.cpp 271 compiler/lowering/util.cpp 272 compiler/lowering/ets/topLevelStmts/importExportDecls.cpp 273 compiler/lowering/ets/topLevelStmts/globalClassHandler.cpp 274 compiler/lowering/ets/topLevelStmts/globalDeclTransformer.cpp 275 compiler/lowering/ets/topLevelStmts/topLevelStmts.cpp 276 compiler/lowering/ets/expressionLambdaLowering.cpp 277 compiler/lowering/ets/extensionAccessorLowering.cpp 278 compiler/lowering/ets/genericBridgesLowering.cpp 279 compiler/lowering/ets/arrayLiteralLowering.cpp 280 compiler/lowering/ets/boxedTypeLowering.cpp 281 compiler/lowering/ets/boxingForLocals.cpp 282 compiler/lowering/ets/capturedVariables.cpp 283 compiler/lowering/ets/cfgBuilderPhase.cpp 284 compiler/lowering/ets/constantExpressionLowering.cpp 285 compiler/lowering/ets/convertPrimitiveCastMethodCall.cpp 286 compiler/lowering/ets/declareOverloadLowering.cpp 287 compiler/lowering/ets/defaultParametersInConstructorLowering.cpp 288 compiler/lowering/ets/defaultParametersLowering.cpp 289 compiler/lowering/ets/dynamicImportLowering.cpp 290 compiler/lowering/ets/exportAnonymousConst.cpp 291 compiler/lowering/ets/lateInitialization.cpp 292 compiler/lowering/ets/lambdaLowering.cpp 293 compiler/lowering/ets/restTupleLowering.cpp 294 compiler/lowering/ets/spreadLowering.cpp 295 compiler/lowering/ets/objectIndexAccess.cpp 296 compiler/lowering/ets/objectIterator.cpp 297 compiler/lowering/ets/insertOptionalParametersAnnotation.cpp 298 compiler/lowering/ets/interfacePropertyDeclarations.cpp 299 compiler/lowering/ets/opAssignment.cpp 300 compiler/lowering/ets/ambientLowering.cpp 301 compiler/lowering/ets/asyncMethodLowering.cpp 302 compiler/lowering/ets/bigintLowering.cpp 303 compiler/lowering/ets/recordLowering.cpp 304 compiler/lowering/ets/resizableArrayLowering.cpp 305 compiler/lowering/ets/restArgsLowering.cpp 306 compiler/lowering/ets/unionLowering.cpp 307 compiler/lowering/ets/optionalArgumentsLowering.cpp 308 compiler/lowering/ets/optionalLowering.cpp 309 compiler/lowering/ets/expandBrackets.cpp 310 compiler/lowering/ets/packageImplicitImport.cpp 311 compiler/lowering/ets/partialExportClassGen.cpp 312 compiler/lowering/ets/promiseVoid.cpp 313 compiler/lowering/ets/objectLiteralLowering.cpp 314 compiler/lowering/ets/interfaceObjectLiteralLowering.cpp 315 compiler/lowering/ets/stringComparison.cpp 316 compiler/lowering/ets/stringConstantsLowering.cpp 317 compiler/lowering/ets/stringConstructorLowering.cpp 318 compiler/lowering/ets/typeFromLowering.cpp 319 compiler/lowering/ets/enumLowering.cpp 320 compiler/lowering/ets/enumPostCheckLowering.cpp 321 compiler/lowering/ets/setJumpTarget.cpp 322 ir/astDump.cpp 323 ir/srcDump.cpp 324 ir/astNode.cpp 325 ir/astNodeHistory.cpp 326 ir/irnode.cpp 327 ir/typeNode.cpp 328 ir/opaqueTypeNode.cpp 329 ir/brokenTypeNode.cpp 330 ir/base/catchClause.cpp 331 ir/base/classElement.cpp 332 ir/base/classDefinition.cpp 333 ir/base/classProperty.cpp 334 ir/base/classStaticBlock.cpp 335 ir/base/decorator.cpp 336 ir/base/metaProperty.cpp 337 ir/base/methodDefinition.cpp 338 ir/base/property.cpp 339 ir/base/scriptFunction.cpp 340 ir/base/scriptFunctionSignature.cpp 341 ir/base/spreadElement.cpp 342 ir/base/templateElement.cpp 343 ir/base/tsIndexSignature.cpp 344 ir/base/tsMethodSignature.cpp 345 ir/base/tsPropertySignature.cpp 346 ir/base/tsSignatureDeclaration.cpp 347 ir/expression.cpp 348 ir/expressions/arrayExpression.cpp 349 ir/expressions/arrowFunctionExpression.cpp 350 ir/expressions/assignmentExpression.cpp 351 ir/expressions/awaitExpression.cpp 352 ir/expressions/binaryExpression.cpp 353 ir/expressions/blockExpression.cpp 354 ir/expressions/callExpression.cpp 355 ir/expressions/chainExpression.cpp 356 ir/expressions/classExpression.cpp 357 ir/expressions/conditionalExpression.cpp 358 ir/expressions/directEvalExpression.cpp 359 ir/expressions/functionExpression.cpp 360 ir/expressions/identifier.cpp 361 ir/expressions/dummyNode.cpp 362 ir/expressions/importExpression.cpp 363 ir/expressions/literal.cpp 364 ir/expressions/literals/bigIntLiteral.cpp 365 ir/expressions/literals/booleanLiteral.cpp 366 ir/expressions/literals/charLiteral.cpp 367 ir/expressions/literals/nullLiteral.cpp 368 ir/expressions/literals/numberLiteral.cpp 369 ir/expressions/literals/regExpLiteral.cpp 370 ir/expressions/literals/stringLiteral.cpp 371 ir/expressions/literals/undefinedLiteral.cpp 372 ir/expressions/memberExpression.cpp 373 ir/expressions/newExpression.cpp 374 ir/expressions/objectExpression.cpp 375 ir/expressions/omittedExpression.cpp 376 ir/expressions/sequenceExpression.cpp 377 ir/expressions/superExpression.cpp 378 ir/expressions/taggedTemplateExpression.cpp 379 ir/expressions/templateLiteral.cpp 380 ir/expressions/thisExpression.cpp 381 ir/expressions/typeofExpression.cpp 382 ir/expressions/unaryExpression.cpp 383 ir/expressions/updateExpression.cpp 384 ir/expressions/yieldExpression.cpp 385 ir/module/exportAllDeclaration.cpp 386 ir/module/exportDefaultDeclaration.cpp 387 ir/module/exportNamedDeclaration.cpp 388 ir/module/exportSpecifier.cpp 389 ir/module/importDeclaration.cpp 390 ir/module/importDefaultSpecifier.cpp 391 ir/module/importNamespaceSpecifier.cpp 392 ir/module/importSpecifier.cpp 393 ir/statement.cpp 394 ir/statements/annotationDeclaration.cpp 395 ir/statements/annotationUsage.cpp 396 ir/statements/assertStatement.cpp 397 ir/statements/blockStatement.cpp 398 ir/statements/breakStatement.cpp 399 ir/statements/classDeclaration.cpp 400 ir/ets/etsStructDeclaration.cpp 401 ir/ets/etsReExportDeclaration.cpp 402 ir/statements/continueStatement.cpp 403 ir/statements/debuggerStatement.cpp 404 ir/statements/doWhileStatement.cpp 405 ir/statements/emptyStatement.cpp 406 ir/statements/expressionStatement.cpp 407 ir/statements/forInStatement.cpp 408 ir/statements/forOfStatement.cpp 409 ir/statements/forUpdateStatement.cpp 410 ir/statements/functionDeclaration.cpp 411 ir/statements/ifStatement.cpp 412 ir/statements/labelledStatement.cpp 413 ir/statements/loopStatement.cpp 414 ir/statements/returnStatement.cpp 415 ir/statements/switchCaseStatement.cpp 416 ir/statements/switchStatement.cpp 417 ir/statements/throwStatement.cpp 418 ir/statements/tryStatement.cpp 419 ir/statements/variableDeclaration.cpp 420 ir/statements/variableDeclarator.cpp 421 ir/statements/whileStatement.cpp 422 ir/as/namedType.cpp 423 ir/as/prefixAssertionExpression.cpp 424 ir/ets/etsClassLiteral.cpp 425 ir/ets/etsFunctionType.cpp 426 ir/ets/etsKeyofType.cpp 427 ir/ets/etsNewArrayInstanceExpression.cpp 428 ir/ets/etsNewClassInstanceExpression.cpp 429 ir/ets/etsNewMultiDimArrayInstanceExpression.cpp 430 ir/ets/etsPackageDeclaration.cpp 431 ir/ets/etsParameterExpression.cpp 432 ir/ets/etsPrimitiveType.cpp 433 ir/ets/etsNonNullishTypeNode.cpp 434 ir/ets/etsNullishTypes.cpp 435 ir/ets/etsNeverType.cpp 436 ir/ets/etsModule.cpp 437 ir/ets/etsStringLiteralType.cpp 438 ir/ets/etsTuple.cpp 439 ir/ets/etsTypeReference.cpp 440 ir/ets/etsTypeReferencePart.cpp 441 ir/ets/etsUnionType.cpp 442 ir/ets/etsWildcardType.cpp 443 ir/ts/tsAnyKeyword.cpp 444 ir/ts/tsArrayType.cpp 445 ir/ts/tsAsExpression.cpp 446 ir/ts/tsBigintKeyword.cpp 447 ir/ts/tsBooleanKeyword.cpp 448 ir/ts/tsClassImplements.cpp 449 ir/ts/tsConditionalType.cpp 450 ir/ts/tsConstructorType.cpp 451 ir/ts/tsEnumDeclaration.cpp 452 ir/ts/tsEnumMember.cpp 453 ir/ts/tsExternalModuleReference.cpp 454 ir/ts/tsFunctionType.cpp 455 ir/ts/tsImportEqualsDeclaration.cpp 456 ir/ts/tsImportType.cpp 457 ir/ts/tsIndexedAccessType.cpp 458 ir/ts/tsInferType.cpp 459 ir/ts/tsInterfaceBody.cpp 460 ir/ts/tsInterfaceDeclaration.cpp 461 ir/ts/tsInterfaceHeritage.cpp 462 ir/ts/tsIntersectionType.cpp 463 ir/ts/tsLiteralType.cpp 464 ir/ts/tsMappedType.cpp 465 ir/ts/tsModuleBlock.cpp 466 ir/ts/tsModuleDeclaration.cpp 467 ir/ts/tsNamedTupleMember.cpp 468 ir/ts/tsNeverKeyword.cpp 469 ir/ts/tsNonNullExpression.cpp 470 ir/ts/tsNullKeyword.cpp 471 ir/ts/tsNumberKeyword.cpp 472 ir/ts/tsObjectKeyword.cpp 473 ir/ts/tsParameterProperty.cpp 474 ir/ts/tsParenthesizedType.cpp 475 ir/ts/tsQualifiedName.cpp 476 ir/ts/tsStringKeyword.cpp 477 ir/ts/tsThisType.cpp 478 ir/ts/tsTupleType.cpp 479 ir/ts/tsTypeAliasDeclaration.cpp 480 ir/ts/tsTypeAssertion.cpp 481 ir/ts/tsTypeLiteral.cpp 482 ir/ts/tsTypeOperator.cpp 483 ir/ts/tsTypeParameter.cpp 484 ir/ts/tsTypeParameterDeclaration.cpp 485 ir/ts/tsTypeParameterInstantiation.cpp 486 ir/ts/tsTypePredicate.cpp 487 ir/ts/tsTypeQuery.cpp 488 ir/ts/tsTypeReference.cpp 489 ir/ts/tsUndefinedKeyword.cpp 490 ir/ts/tsUnionType.cpp 491 ir/ts/tsUnknownKeyword.cpp 492 ir/ts/tsVoidKeyword.cpp 493 lexer/ASLexer.cpp 494 lexer/keywords.cpp 495 lexer/keywordsUtil.cpp 496 lexer/lexer.cpp 497 lexer/ETSLexer.cpp 498 lexer/TSLexer.cpp 499 lexer/regexp/regexp.cpp 500 lexer/token/number.cpp 501 lexer/token/sourceLocation.cpp 502 lexer/token/token.cpp 503 parser/context/classPrivateContext.cpp 504 parser/context/parserContext.cpp 505 parser/expressionParser.cpp 506 parser/expressionTSParser.cpp 507 parser/ASparser.cpp 508 parser/JSparser.cpp 509 parser/parserImpl.cpp 510 parser/ETSFormattedParser.cpp 511 parser/ETSparser.cpp 512 parser/ETSparserAnnotations.cpp 513 parser/ETSparserClasses.cpp 514 parser/ETSparserEnums.cpp 515 parser/ETSparserExpressions.cpp 516 parser/ETSparserJsDocInfo.cpp 517 parser/ETSparserNamespaces.cpp 518 parser/ETSparserStatements.cpp 519 parser/ETSparserTypes.cpp 520 parser/ETSNolintParser.cpp 521 parser/TSparser.cpp 522 parser/ThrowingTypedParser.cpp 523 parser/TypedParser.cpp 524 parser/program/entityNameVisitor.cpp 525 parser/program/program.cpp 526 parser/statementParser.cpp 527 parser/statementTSParser.cpp 528 checker/checker.cpp 529 checker/checkerContext.cpp 530 checker/ETSAnalyzer.cpp 531 checker/ETSAnalyzerHelpers.cpp 532 checker/ETSAnalyzerUnreachable.cpp 533 checker/ETSchecker.cpp 534 checker/TSchecker.cpp 535 checker/ASchecker.cpp 536 checker/TSAnalyzer.cpp 537 checker/TSAnalyzerUnreachable.cpp 538 checker/JSchecker.cpp 539 checker/IsolatedDeclgenChecker.cpp 540 checker/typeChecker/TypeChecker.cpp 541 checker/ets/aliveAnalyzer.cpp 542 checker/ets/etsWarningAnalyzer.cpp 543 checker/ets/arithmetic.cpp 544 checker/ets/assignAnalyzer.cpp 545 checker/ets/baseAnalyzer.cpp 546 checker/ets/boxingConverter.cpp 547 checker/ets/castingContext.cpp 548 checker/ets/conversion.cpp 549 checker/ets/dynamic.cpp 550 checker/ets/dynamic/dynamicCall.cpp 551 checker/ets/function.cpp 552 checker/ets/validateHelpers.cpp 553 checker/ets/typeCheckingHelpers.cpp 554 checker/ets/helpers.cpp 555 checker/ets/narrowingConverter.cpp 556 checker/ets/narrowingWideningConverter.cpp 557 checker/ets/object.cpp 558 checker/ets/typeConverter.cpp 559 checker/ets/typeCreation.cpp 560 checker/ets/typeRelationContext.cpp 561 checker/ets/unboxingConverter.cpp 562 checker/ets/utilityTypeHandlers.cpp 563 checker/ets/wideningConverter.cpp 564 checker/ts/binaryLikeExpression.cpp 565 checker/ts/destructuringContext.cpp 566 checker/ts/function.cpp 567 checker/ts/helpers.cpp 568 checker/ts/object.cpp 569 checker/ts/typeCreation.cpp 570 checker/ts/typeElaborationContext.cpp 571 checker/ts/util.cpp 572 checker/types/signature.cpp 573 checker/types/type.cpp 574 checker/types/typeRelation.cpp 575 checker/types/globalTypesHolder.cpp 576 checker/types/ets/byteType.cpp 577 checker/types/ets/charType.cpp 578 checker/types/ets/doubleType.cpp 579 checker/types/ets/floatType.cpp 580 checker/types/ets/intType.cpp 581 checker/types/ets/longType.cpp 582 checker/types/ets/shortType.cpp 583 checker/types/ets/etsAnyType.cpp 584 checker/types/ets/etsArrayType.cpp 585 checker/types/ets/etsBooleanType.cpp 586 checker/types/ets/etsDynamicType.cpp 587 checker/types/ets/etsEnumType.cpp 588 checker/types/ets/etsExtensionFuncHelperType.cpp 589 checker/types/ets/etsFunctionType.cpp 590 checker/types/ets/etsNonNullishType.cpp 591 checker/types/ets/etsNeverType.cpp 592 checker/types/ets/etsReadonlyType.cpp 593 checker/types/ets/etsResizableArrayType.cpp 594 checker/types/ets/etsNullishTypes.cpp 595 checker/types/ets/etsObjectType.cpp 596 checker/types/ets/etsStringType.cpp 597 checker/types/ets/etsBigIntType.cpp 598 checker/types/ets/etsTupleType.cpp 599 checker/types/ets/etsTypeAliasType.cpp 600 checker/types/ets/etsTypeParameter.cpp 601 checker/types/ets/etsPartialTypeParameter.cpp 602 checker/types/ets/etsUnionType.cpp 603 checker/types/ets/etsVoidType.cpp 604 checker/types/ets/wildcardType.cpp 605 checker/types/ets/etsAsyncFuncReturnType.cpp 606 checker/types/ts/anyType.cpp 607 checker/types/ts/arrayType.cpp 608 checker/types/ts/bigintLiteralType.cpp 609 checker/types/ts/bigintType.cpp 610 checker/types/ts/booleanLiteralType.cpp 611 checker/types/ts/booleanType.cpp 612 checker/types/ts/constructorType.cpp 613 checker/types/ts/enumLiteralType.cpp 614 checker/types/ts/enumType.cpp 615 checker/types/ts/functionType.cpp 616 checker/types/ts/indexInfo.cpp 617 checker/types/ts/interfaceType.cpp 618 checker/types/ts/neverType.cpp 619 checker/types/ts/nonPrimitiveType.cpp 620 checker/types/ts/nullType.cpp 621 checker/types/ts/numberLiteralType.cpp 622 checker/types/ts/numberType.cpp 623 checker/types/ts/objectDescriptor.cpp 624 checker/types/ts/objectLiteralType.cpp 625 checker/types/ts/objectType.cpp 626 checker/types/ts/stringLiteralType.cpp 627 checker/types/ts/stringType.cpp 628 checker/types/ts/tupleType.cpp 629 checker/types/ts/typeParameter.cpp 630 checker/types/ts/typeReference.cpp 631 checker/types/ts/undefinedType.cpp 632 checker/types/ts/unionType.cpp 633 checker/types/ts/unknownType.cpp 634 checker/types/ts/voidType.cpp 635 util/arktsconfig.cpp 636 util/bitset.cpp 637 util/dtoa_helper.cpp 638 util/diagnostic.cpp 639 util/diagnosticEngine.cpp 640 util/errorRecovery.cpp 641 util/es2pandaMacros.cpp 642 util/helpers.cpp 643 util/importPathManager.cpp 644 util/path.cpp 645 util/ustring.cpp 646 test/utils/panda_executable_path_getter.cpp 647 evaluate/debugInfoDeserialization/debugInfoDeserializer.cpp 648 evaluate/debugInfoDeserialization/inheritanceResolution.cpp 649 evaluate/debugInfoDeserialization/methodBuilder.cpp 650 evaluate/debugInfoDeserialization/classBuilder.cpp 651 evaluate/debugInfoStorage.cpp 652 evaluate/helpers.cpp 653 evaluate/pathResolver.cpp 654 evaluate/irCheckHelper.cpp 655 evaluate/proxyProgramsCache.cpp 656 evaluate/scopedDebugInfoPlugin.cpp 657 evaluate/entityDeclarator.cpp 658 evaluate/evaluateContext.cpp 659) 660 661# libes2panda does not include bytecode optimizer, because it is used in 662# libarkruntime, and conflict with JIT setup ensues 663panda_add_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC}) 664add_dependencies(es2panda-lib isa_gen_es2panda es2panda_options_gen es2panda_diagnostic_gen es2panda_keywords es2panda_signatures) 665 666set(ICU_INCLUDE_DIRS 667 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/common 668 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/i18n 669 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source 670) 671 672panda_target_include_directories(es2panda-lib SYSTEM 673 PRIVATE ${ICU_INCLUDE_DIRS} 674) 675 676panda_target_include_directories(es2panda-lib 677 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} 678 PRIVATE ${OUTPUT_DIR} 679) 680 681panda_target_compile_options(es2panda-lib 682 PRIVATE -fexceptions -Werror=shadow 683) 684 685panda_target_link_libraries(es2panda-lib 686 PUBLIC arkbase hmicuuc.z 687 PRIVATE arkassembler arkdisassembler arkfile 688) 689 690if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.1) OR 691 (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)) 692 panda_target_link_libraries(es2panda-lib 693 PUBLIC stdc++fs 694 ) 695endif() 696 697if (PANDA_FUZZILLI) 698 panda_target_compile_options(es2panda-lib 699 PRIVATE -fPIC 700 ) 701endif() 702panda_add_sanitizers(TARGET es2panda-lib SANITIZERS 703 ${PANDA_SANITIZERS_LIST}) 704 705if(ES2PANDA_ENABLE_PCH AND NOT PANDA_USE_PREBUILT_TARGETS) 706 target_precompile_headers(es2panda-lib 707 PRIVATE 708 util/ustring.h 709 ir/astNode.h 710 compiler/core/pandagen.h 711 compiler/core/ETSGen.h 712 checker/TSchecker.h 713 public/public.h 714 ) 715endif() 716 717SET(ES2PANDA_LIB_DIR public) 718add_subdirectory(${ES2PANDA_LIB_DIR}) 719 720add_subdirectory(aot) 721add_subdirectory(declgen_ets2ts) 722add_subdirectory(driver/dependency_analyzer) 723 724if(PANDA_TARGET_LINUX OR PANDA_TARGET_WINDOWS) 725 SET(LSP_LIB "es2panda_lsp") 726 add_subdirectory(lsp) 727 set(ES2PANDA_NAPI_LIB_DIR "bindings") 728 add_subdirectory(${ES2PANDA_NAPI_LIB_DIR}) 729endif() 730 731if(PANDA_WITH_TESTS) 732 add_subdirectory(test) 733endif() 734