• 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})
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