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