• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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