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