1# Copyright (c) 2021-2024 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 " \"import_tests\": [\"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/import_tests\"],\n" 52 " \"dynamic_import_tests\": [\"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests\"]\n" 53 " },\n" 54 " \"dynamicPaths\": {\n" 55 " \"dynamic_js_import_tests\": {\"language\": \"js\", \"hasDecl\": false},\n" 56 " \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests\": {\"language\": \"js\", \"hasDecl\": true}\n" 57 " }\n" 58 " }\n" 59 "}\n" 60 ) 61 MESSAGE("Generated default arktsconfig to ${GENERATED_DIR}/arktsconfig.json") 62 file(COPY "${GENERATED_DIR}/arktsconfig.json" DESTINATION "${DEFAULT_ARKTSCONFIG}/") 63 file(COPY "${GENERATED_DIR}/arktsconfig.json" DESTINATION "${CMAKE_BINARY_DIR}/bin") 64endif() 65 66# add check for PANDA_PRODUCT_BUILD after normal version tracking will be implemented 67execute_process( 68 COMMAND date "+%Y-%m-%d_%H:%M:%S" 69 OUTPUT_VARIABLE CURRENT_DATE 70 OUTPUT_STRIP_TRAILING_WHITESPACE 71) 72execute_process( 73 COMMAND git rev-parse HEAD 74 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 75 OUTPUT_VARIABLE LAST_COMMIT_HASH 76 OUTPUT_STRIP_TRAILING_WHITESPACE 77) 78 79add_definitions(-DES2PANDA_DATE="${CURRENT_DATE}") 80add_definitions(-DES2PANDA_HASH="${LAST_COMMIT_HASH}") 81 82 83add_custom_command( 84 OUTPUT ${GENERATED_STAMP} 85 COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR} 86 COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATED_DIR} 87 COMMAND ${CMAKE_COMMAND} -E touch ${GENERATED_STAMP} 88) 89 90set(TEMPLATES 91 isa.h.erb 92 formats.h.erb 93) 94 95panda_isa_gen( 96 TEMPLATES ${TEMPLATES} 97 SOURCE ${CMAKE_CURRENT_LIST_DIR}/compiler/templates 98 DESTINATION ${GENERATED_DIR} 99 EXTRA_DEPENDENCIES ${GENERATED_STAMP} 100) 101 102panda_gen( 103 DATA ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.yaml 104 TARGET_NAME es2panda_keywords 105 TEMPLATES keywords.h.erb 106 API 107 ${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.rb 108 SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/lexer/templates 109 DESTINATION ${GENERATED_DIR} 110) 111 112panda_gen( 113 DATA ${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.yaml 114 TARGET_NAME es2panda_signatures 115 TEMPLATES signatures.h.erb 116 API 117 ${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.rb 118 SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/compiler/templates 119 DESTINATION ${GENERATED_DIR} 120) 121 122set(ES2PANDA_LIB_SRC 123 ast_verifier/ASTVerifier.cpp 124 ast_verifier/arithmeticOperationValid.cpp 125 ast_verifier/checkAbstractMethod.cpp 126 ast_verifier/checkConstProperties.cpp 127 ast_verifier/checkContext.cpp 128 ast_verifier/checkInfiniteLoop.cpp 129 ast_verifier/checkScopeDeclaration.cpp 130 ast_verifier/everyChildHasValidParent.cpp 131 ast_verifier/everyChildInParentRange.cpp 132 ast_verifier/getterSetterValidation.cpp 133 ast_verifier/helpers.cpp 134 ast_verifier/identifierHasVariable.cpp 135 ast_verifier/importExportAccessValid.cpp 136 ast_verifier/nodeHasParent.cpp 137 ast_verifier/nodeHasSourceRange.cpp 138 ast_verifier/nodeHasType.cpp 139 ast_verifier/referenceTypeAnnotationIsNull.cpp 140 ast_verifier/forLoopCorrectlyInitialized.cpp 141 ast_verifier/modifierAccessValid.cpp 142 ast_verifier/sequenceExpressionHasLastType.cpp 143 ast_verifier/variableHasEnclosingScope.cpp 144 ast_verifier/variableHasScope.cpp 145 ast_verifier/variableNameIdentifierNameSame.cpp 146 es2panda.cpp 147 varbinder/ASBinder.cpp 148 varbinder/TSBinder.cpp 149 varbinder/TypedBinder.cpp 150 varbinder/ETSBinder.cpp 151 varbinder/JSBinder.cpp 152 varbinder/varbinder.cpp 153 varbinder/declaration.cpp 154 varbinder/recordTable.cpp 155 varbinder/scope.cpp 156 varbinder/variable.cpp 157 compiler/base/catchTable.cpp 158 compiler/base/condition.cpp 159 compiler/base/destructuring.cpp 160 compiler/base/hoisting.cpp 161 compiler/base/iterators.cpp 162 compiler/base/lexenv.cpp 163 compiler/base/literals.cpp 164 compiler/base/lreference.cpp 165 compiler/base/optionalChain.cpp 166 compiler/core/codeGen.cpp 167 compiler/core/compileJob.cpp 168 compiler/core/compileQueue.cpp 169 compiler/core/compilerImpl.cpp 170 compiler/core/dynamicContext.cpp 171 compiler/core/emitter.cpp 172 compiler/core/JSCompiler.cpp 173 compiler/core/JSCompilerUnreachable.cpp 174 compiler/core/JSemitter.cpp 175 compiler/core/envScope.cpp 176 compiler/core/function.cpp 177 compiler/core/labelTarget.cpp 178 compiler/core/moduleContext.cpp 179 compiler/core/pandagen.cpp 180 compiler/core/programElement.cpp 181 compiler/core/regAllocator.cpp 182 compiler/core/regScope.cpp 183 compiler/core/regSpiller.cpp 184 compiler/core/ETSCompiler.cpp 185 compiler/core/ETSCompilerUnrechable.cpp 186 compiler/core/ETSemitter.cpp 187 compiler/core/ETSGen.cpp 188 compiler/core/ETSfunction.cpp 189 compiler/core/switchBuilder.cpp 190 compiler/core/targetTypeContext.cpp 191 compiler/core/vReg.cpp 192 compiler/debugger/debuginfoDumper.cpp 193 compiler/function/asyncFunctionBuilder.cpp 194 compiler/function/asyncGeneratorFunctionBuilder.cpp 195 compiler/function/functionBuilder.cpp 196 compiler/function/generatorFunctionBuilder.cpp 197 compiler/lowering/checkerPhase.cpp 198 compiler/lowering/scopesInit/savedBindingsCtx.cpp 199 compiler/lowering/scopesInit/scopesInitPhase.cpp 200 compiler/lowering/phase.cpp 201 compiler/lowering/plugin_phase.cpp 202 compiler/lowering/resolveIdentifiers.cpp 203 compiler/lowering/util.cpp 204 compiler/lowering/ets/topLevelStmts/importExportDecls.cpp 205 compiler/lowering/ets/topLevelStmts/globalClassHandler.cpp 206 compiler/lowering/ets/topLevelStmts/globalDeclTransformer.cpp 207 compiler/lowering/ets/topLevelStmts/topLevelStmts.cpp 208 compiler/lowering/ets/expressionLambdaLowering.cpp 209 compiler/lowering/ets/genericBridgesLowering.cpp 210 compiler/lowering/ets/boxingForLocals.cpp 211 compiler/lowering/ets/capturedVariables.cpp 212 compiler/lowering/ets/lambdaLowering.cpp 213 compiler/lowering/ets/spreadLowering.cpp 214 compiler/lowering/ets/localClassLowering.cpp 215 compiler/lowering/ets/objectIndexAccess.cpp 216 compiler/lowering/ets/objectIterator.cpp 217 compiler/lowering/ets/interfacePropertyDeclarations.cpp 218 compiler/lowering/ets/opAssignment.cpp 219 compiler/lowering/ets/ambientLowering.cpp 220 compiler/lowering/ets/bigintLowering.cpp 221 compiler/lowering/ets/constStringToCharLowering.cpp 222 compiler/lowering/ets/recordLowering.cpp 223 compiler/lowering/ets/tupleLowering.cpp 224 compiler/lowering/ets/unionLowering.cpp 225 compiler/lowering/ets/optionalLowering.cpp 226 compiler/lowering/ets/expandBrackets.cpp 227 compiler/lowering/ets/packageImplicitImport.cpp 228 compiler/lowering/ets/partialExportClassGen.cpp 229 compiler/lowering/ets/promiseVoid.cpp 230 compiler/lowering/ets/structLowering.cpp 231 compiler/lowering/ets/defaultParameterLowering.cpp 232 compiler/lowering/ets/objectLiteralLowering.cpp 233 compiler/lowering/ets/interfaceObjectLiteralLowering.cpp 234 compiler/lowering/ets/stringComparison.cpp 235 compiler/lowering/ets/stringConstantsLowering.cpp 236 compiler/lowering/ets/stringConstructorLowering.cpp 237 compiler/lowering/ets/enumLowering.cpp 238 compiler/lowering/ets/enumPostCheckLowering.cpp 239 ir/astDump.cpp 240 ir/srcDump.cpp 241 ir/astNode.cpp 242 ir/irnode.cpp 243 ir/typeNode.cpp 244 ir/opaqueTypeNode.cpp 245 ir/base/catchClause.cpp 246 ir/base/classElement.cpp 247 ir/base/classDefinition.cpp 248 ir/base/classProperty.cpp 249 ir/base/classStaticBlock.cpp 250 ir/base/decorator.cpp 251 ir/base/metaProperty.cpp 252 ir/base/methodDefinition.cpp 253 ir/base/namespaceDefinition.cpp 254 ir/base/property.cpp 255 ir/base/scriptFunction.cpp 256 ir/base/scriptFunctionSignature.cpp 257 ir/base/spreadElement.cpp 258 ir/base/templateElement.cpp 259 ir/base/tsIndexSignature.cpp 260 ir/base/tsMethodSignature.cpp 261 ir/base/tsPropertySignature.cpp 262 ir/base/tsSignatureDeclaration.cpp 263 ir/expression.cpp 264 ir/expressions/arrayExpression.cpp 265 ir/expressions/arrowFunctionExpression.cpp 266 ir/expressions/assignmentExpression.cpp 267 ir/expressions/awaitExpression.cpp 268 ir/expressions/binaryExpression.cpp 269 ir/expressions/blockExpression.cpp 270 ir/expressions/callExpression.cpp 271 ir/expressions/chainExpression.cpp 272 ir/expressions/classExpression.cpp 273 ir/expressions/conditionalExpression.cpp 274 ir/expressions/directEvalExpression.cpp 275 ir/expressions/functionExpression.cpp 276 ir/expressions/identifier.cpp 277 ir/expressions/dummyNode.cpp 278 ir/expressions/importExpression.cpp 279 ir/expressions/literal.cpp 280 ir/expressions/literals/bigIntLiteral.cpp 281 ir/expressions/literals/booleanLiteral.cpp 282 ir/expressions/literals/charLiteral.cpp 283 ir/expressions/literals/nullLiteral.cpp 284 ir/expressions/literals/numberLiteral.cpp 285 ir/expressions/literals/regExpLiteral.cpp 286 ir/expressions/literals/stringLiteral.cpp 287 ir/expressions/literals/undefinedLiteral.cpp 288 ir/expressions/memberExpression.cpp 289 ir/expressions/newExpression.cpp 290 ir/expressions/objectExpression.cpp 291 ir/expressions/omittedExpression.cpp 292 ir/expressions/sequenceExpression.cpp 293 ir/expressions/superExpression.cpp 294 ir/expressions/taggedTemplateExpression.cpp 295 ir/expressions/templateLiteral.cpp 296 ir/expressions/thisExpression.cpp 297 ir/expressions/typeofExpression.cpp 298 ir/expressions/unaryExpression.cpp 299 ir/expressions/updateExpression.cpp 300 ir/expressions/yieldExpression.cpp 301 ir/module/exportAllDeclaration.cpp 302 ir/module/exportDefaultDeclaration.cpp 303 ir/module/exportNamedDeclaration.cpp 304 ir/module/exportSpecifier.cpp 305 ir/module/importDeclaration.cpp 306 ir/module/importDefaultSpecifier.cpp 307 ir/module/importNamespaceSpecifier.cpp 308 ir/module/importSpecifier.cpp 309 ir/statement.cpp 310 ir/statements/annotationDeclaration.cpp 311 ir/statements/annotationUsage.cpp 312 ir/statements/assertStatement.cpp 313 ir/statements/blockStatement.cpp 314 ir/statements/breakStatement.cpp 315 ir/statements/classDeclaration.cpp 316 ir/ets/etsStructDeclaration.cpp 317 ir/ets/etsReExportDeclaration.cpp 318 ir/statements/continueStatement.cpp 319 ir/statements/debuggerStatement.cpp 320 ir/statements/doWhileStatement.cpp 321 ir/statements/emptyStatement.cpp 322 ir/statements/expressionStatement.cpp 323 ir/statements/forInStatement.cpp 324 ir/statements/forOfStatement.cpp 325 ir/statements/forUpdateStatement.cpp 326 ir/statements/functionDeclaration.cpp 327 ir/statements/ifStatement.cpp 328 ir/statements/labelledStatement.cpp 329 ir/statements/loopStatement.cpp 330 ir/statements/namespaceDeclaration.cpp 331 ir/statements/returnStatement.cpp 332 ir/statements/switchCaseStatement.cpp 333 ir/statements/switchStatement.cpp 334 ir/statements/throwStatement.cpp 335 ir/statements/tryStatement.cpp 336 ir/statements/variableDeclaration.cpp 337 ir/statements/variableDeclarator.cpp 338 ir/statements/whileStatement.cpp 339 ir/as/namedType.cpp 340 ir/as/prefixAssertionExpression.cpp 341 ir/ets/etsClassLiteral.cpp 342 ir/ets/etsFunctionType.cpp 343 ir/ets/etsLaunchExpression.cpp 344 ir/ets/etsNewArrayInstanceExpression.cpp 345 ir/ets/etsNewClassInstanceExpression.cpp 346 ir/ets/etsNewMultiDimArrayInstanceExpression.cpp 347 ir/ets/etsPackageDeclaration.cpp 348 ir/ets/etsParameterExpression.cpp 349 ir/ets/etsPrimitiveType.cpp 350 ir/ets/etsNullishTypes.cpp 351 ir/ets/etsNeverType.cpp 352 ir/ets/etsScript.cpp 353 ir/ets/etsStringLiteralType.cpp 354 ir/ets/etsTuple.cpp 355 ir/ets/etsTypeReference.cpp 356 ir/ets/etsTypeReferencePart.cpp 357 ir/ets/etsUnionType.cpp 358 ir/ets/etsWildcardType.cpp 359 ir/ets/etsImportSource.cpp 360 ir/ts/tsAnyKeyword.cpp 361 ir/ts/tsArrayType.cpp 362 ir/ts/tsAsExpression.cpp 363 ir/ts/tsBigintKeyword.cpp 364 ir/ts/tsBooleanKeyword.cpp 365 ir/ts/tsClassImplements.cpp 366 ir/ts/tsConditionalType.cpp 367 ir/ts/tsConstructorType.cpp 368 ir/ts/tsEnumDeclaration.cpp 369 ir/ts/tsEnumMember.cpp 370 ir/ts/tsExternalModuleReference.cpp 371 ir/ts/tsFunctionType.cpp 372 ir/ts/tsImportEqualsDeclaration.cpp 373 ir/ts/tsImportType.cpp 374 ir/ts/tsIndexedAccessType.cpp 375 ir/ts/tsInferType.cpp 376 ir/ts/tsInterfaceBody.cpp 377 ir/ts/tsInterfaceDeclaration.cpp 378 ir/ts/tsInterfaceHeritage.cpp 379 ir/ts/tsIntersectionType.cpp 380 ir/ts/tsLiteralType.cpp 381 ir/ts/tsMappedType.cpp 382 ir/ts/tsModuleBlock.cpp 383 ir/ts/tsModuleDeclaration.cpp 384 ir/ts/tsNamedTupleMember.cpp 385 ir/ts/tsNeverKeyword.cpp 386 ir/ts/tsNonNullExpression.cpp 387 ir/ts/tsNullKeyword.cpp 388 ir/ts/tsNumberKeyword.cpp 389 ir/ts/tsObjectKeyword.cpp 390 ir/ts/tsParameterProperty.cpp 391 ir/ts/tsParenthesizedType.cpp 392 ir/ts/tsQualifiedName.cpp 393 ir/ts/tsStringKeyword.cpp 394 ir/ts/tsThisType.cpp 395 ir/ts/tsTupleType.cpp 396 ir/ts/tsTypeAliasDeclaration.cpp 397 ir/ts/tsTypeAssertion.cpp 398 ir/ts/tsTypeLiteral.cpp 399 ir/ts/tsTypeOperator.cpp 400 ir/ts/tsTypeParameter.cpp 401 ir/ts/tsTypeParameterDeclaration.cpp 402 ir/ts/tsTypeParameterInstantiation.cpp 403 ir/ts/tsTypePredicate.cpp 404 ir/ts/tsTypeQuery.cpp 405 ir/ts/tsTypeReference.cpp 406 ir/ts/tsUndefinedKeyword.cpp 407 ir/ts/tsUnionType.cpp 408 ir/ts/tsUnknownKeyword.cpp 409 ir/ts/tsVoidKeyword.cpp 410 lexer/ASLexer.cpp 411 lexer/keywords.cpp 412 lexer/keywordsUtil.cpp 413 lexer/lexer.cpp 414 lexer/ETSLexer.cpp 415 lexer/TSLexer.cpp 416 lexer/regexp/regexp.cpp 417 lexer/token/number.cpp 418 lexer/token/sourceLocation.cpp 419 lexer/token/token.cpp 420 parser/context/classPrivateContext.cpp 421 parser/context/parserContext.cpp 422 parser/expressionParser.cpp 423 parser/expressionTSParser.cpp 424 parser/ASparser.cpp 425 parser/JSparser.cpp 426 parser/parserImpl.cpp 427 parser/ETSFormattedParser.cpp 428 parser/ETSparser.cpp 429 parser/ETSparserClasses.cpp 430 parser/ETSparserEnums.cpp 431 parser/ETSparserExpressions.cpp 432 parser/ETSparserNamespaces.cpp 433 parser/ETSparserStatements.cpp 434 parser/ETSparserTypes.cpp 435 parser/ETSNolintParser.cpp 436 parser/TSparser.cpp 437 parser/TypedParser.cpp 438 parser/program/entityNameVisitor.cpp 439 parser/program/program.cpp 440 parser/statementParser.cpp 441 parser/statementTSParser.cpp 442 checker/checker.cpp 443 checker/checkerContext.cpp 444 checker/ETSAnalyzer.cpp 445 checker/ETSAnalyzerHelpers.cpp 446 checker/ETSAnalyzerUnreachable.cpp 447 checker/ETSchecker.cpp 448 checker/TSchecker.cpp 449 checker/ASchecker.cpp 450 checker/TSAnalyzer.cpp 451 checker/TSAnalyzerUnreachable.cpp 452 checker/JSchecker.cpp 453 checker/typeChecker/TypeChecker.cpp 454 checker/ets/aliveAnalyzer.cpp 455 checker/ets/etsWarningAnalyzer.cpp 456 checker/ets/arithmetic.cpp 457 checker/ets/assignAnalyzer.cpp 458 checker/ets/baseAnalyzer.cpp 459 checker/ets/boxingConverter.cpp 460 checker/ets/castingContext.cpp 461 checker/ets/conversion.cpp 462 checker/ets/dynamic.cpp 463 checker/ets/dynamic/dynamicCall.cpp 464 checker/ets/function.cpp 465 checker/ets/validateHelpers.cpp 466 checker/ets/typeCheckingHelpers.cpp 467 checker/ets/helpers.cpp 468 checker/ets/narrowingConverter.cpp 469 checker/ets/narrowingWideningConverter.cpp 470 checker/ets/object.cpp 471 checker/ets/primitiveWrappers.cpp 472 checker/ets/typeConverter.cpp 473 checker/ets/typeCreation.cpp 474 checker/ets/typeRelationContext.cpp 475 checker/ets/unboxingConverter.cpp 476 checker/ets/utilityTypeHandlers.cpp 477 checker/ets/wideningConverter.cpp 478 checker/ts/binaryLikeExpression.cpp 479 checker/ts/destructuringContext.cpp 480 checker/ts/function.cpp 481 checker/ts/helpers.cpp 482 checker/ts/object.cpp 483 checker/ts/typeCreation.cpp 484 checker/ts/typeElaborationContext.cpp 485 checker/ts/util.cpp 486 checker/types/signature.cpp 487 checker/types/type.cpp 488 checker/types/typeRelation.cpp 489 checker/types/globalTypesHolder.cpp 490 checker/types/ets/byteType.cpp 491 checker/types/ets/charType.cpp 492 checker/types/ets/doubleType.cpp 493 checker/types/ets/floatType.cpp 494 checker/types/ets/intType.cpp 495 checker/types/ets/longType.cpp 496 checker/types/ets/shortType.cpp 497 checker/types/ets/etsArrayType.cpp 498 checker/types/ets/etsBooleanType.cpp 499 checker/types/ets/etsDynamicType.cpp 500 checker/types/ets/etsEnumType.cpp 501 checker/types/ets/etsExtensionFuncHelperType.cpp 502 checker/types/ets/etsFunctionType.cpp 503 checker/types/ets/etsNonNullishType.cpp 504 checker/types/ets/etsNeverType.cpp 505 checker/types/ets/etsReadonlyType.cpp 506 checker/types/ets/etsNullishTypes.cpp 507 checker/types/ets/etsObjectType.cpp 508 checker/types/ets/etsStringType.cpp 509 checker/types/ets/etsBigIntType.cpp 510 checker/types/ets/etsTupleType.cpp 511 checker/types/ets/etsTypeAliasType.cpp 512 checker/types/ets/etsTypeParameter.cpp 513 checker/types/ets/etsPartialTypeParameter.cpp 514 checker/types/ets/etsUnionType.cpp 515 checker/types/ets/etsVoidType.cpp 516 checker/types/ets/wildcardType.cpp 517 checker/types/ets/etsAsyncFuncReturnType.cpp 518 checker/types/ts/anyType.cpp 519 checker/types/ts/arrayType.cpp 520 checker/types/ts/bigintLiteralType.cpp 521 checker/types/ts/bigintType.cpp 522 checker/types/ts/booleanLiteralType.cpp 523 checker/types/ts/booleanType.cpp 524 checker/types/ts/constructorType.cpp 525 checker/types/ts/enumLiteralType.cpp 526 checker/types/ts/enumType.cpp 527 checker/types/ts/functionType.cpp 528 checker/types/ts/indexInfo.cpp 529 checker/types/ts/interfaceType.cpp 530 checker/types/ts/neverType.cpp 531 checker/types/ts/nonPrimitiveType.cpp 532 checker/types/ts/nullType.cpp 533 checker/types/ts/numberLiteralType.cpp 534 checker/types/ts/numberType.cpp 535 checker/types/ts/objectDescriptor.cpp 536 checker/types/ts/objectLiteralType.cpp 537 checker/types/ts/objectType.cpp 538 checker/types/ts/stringLiteralType.cpp 539 checker/types/ts/stringType.cpp 540 checker/types/ts/tupleType.cpp 541 checker/types/ts/typeParameter.cpp 542 checker/types/ts/typeReference.cpp 543 checker/types/ts/undefinedType.cpp 544 checker/types/ts/unionType.cpp 545 checker/types/ts/unknownType.cpp 546 checker/types/ts/voidType.cpp 547 util/arktsconfig.cpp 548 util/bitset.cpp 549 util/errorHandler.cpp 550 util/errorLogger.cpp 551 util/errorRecovery.cpp 552 util/helpers.cpp 553 util/importPathManager.cpp 554 util/path.cpp 555 util/ustring.cpp 556 test/utils/panda_executable_path_getter.cpp 557 evaluate/debugInfoDeserialization/debugInfoDeserializer.cpp 558 evaluate/debugInfoDeserialization/inheritanceResolution.cpp 559 evaluate/debugInfoDeserialization/methodBuilder.cpp 560 evaluate/debugInfoDeserialization/classBuilder.cpp 561 evaluate/debugInfoStorage.cpp 562 evaluate/helpers.cpp 563 evaluate/pathResolver.cpp 564 evaluate/irCheckHelper.cpp 565 evaluate/proxyProgramsCache.cpp 566 evaluate/scopedDebugInfoPlugin.cpp 567 evaluate/entityDeclarator.cpp 568 evaluate/evaluateContext.cpp 569) 570 571# libes2panda does not include bytecode optimizer, because it is used in 572# libarkruntime, and conflict with JIT setup ensues 573panda_add_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC}) 574add_dependencies(es2panda-lib isa_gen_es2panda es2panda_keywords es2panda_signatures) 575 576set(ICU_INCLUDE_DIRS 577 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/common 578 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/i18n 579 ${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source 580) 581 582panda_target_include_directories(es2panda-lib SYSTEM 583 PRIVATE ${ICU_INCLUDE_DIRS} 584) 585 586panda_target_include_directories(es2panda-lib 587 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} 588 PRIVATE ${OUTPUT_DIR} 589) 590 591panda_target_compile_options(es2panda-lib 592 PRIVATE -fexceptions -Werror=shadow 593) 594 595panda_target_link_libraries(es2panda-lib 596 PUBLIC arkbase hmicuuc.z 597 PRIVATE arkassembler arkdisassembler arkfile 598) 599 600if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.1) OR 601 (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)) 602 panda_target_link_libraries(es2panda-lib 603 PUBLIC stdc++fs 604 ) 605endif() 606 607if (PANDA_FUZZILLI) 608 panda_target_compile_options(es2panda-lib 609 PRIVATE -fPIC 610 ) 611endif() 612panda_add_sanitizers(TARGET es2panda-lib SANITIZERS 613 ${PANDA_SANITIZERS_LIST}) 614 615SET(ES2PANDA_LIB_DIR public) 616add_subdirectory(${ES2PANDA_LIB_DIR}) 617 618add_subdirectory(aot) 619add_subdirectory(declgen_ets2ts) 620 621if(PANDA_WITH_TESTS) 622 add_subdirectory(test) 623endif() 624