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