# ------------------- Source files --------------------

add_subdirectory(node_processor)

add_library(
  PugsLanguage
  ASTBuilder.cpp
  ASTDotPrinter.cpp
  ASTModulesImporter.cpp
  ASTNodeAffectationExpressionBuilder.cpp
  ASTNodeArraySubscriptExpressionBuilder.cpp
  ASTNodeBinaryOperatorExpressionBuilder.cpp
  ASTNodeBuiltinFunctionExpressionBuilder.cpp
  ASTNodeDataType.cpp
  ASTNodeDataTypeFlattener.cpp
  ASTNodeDataTypeBuilder.cpp
  ASTNodeDataTypeChecker.cpp
  ASTNodeDeclarationToAffectationConverter.cpp
  ASTNodeEmptyBlockCleaner.cpp
  ASTNodeExpressionBuilder.cpp
  ASTNodeFunctionExpressionBuilder.cpp
  ASTNodeFunctionEvaluationExpressionBuilder.cpp
  ASTNodeIncDecExpressionBuilder.cpp
  ASTNodeJumpPlacementChecker.cpp
  ASTNodeListAffectationExpressionBuilder.cpp
  ASTNodeNaturalConversionChecker.cpp
  ASTNodeUnaryOperatorExpressionBuilder.cpp
  ASTPrinter.cpp
  ASTSymbolTableBuilder.cpp
  ASTSymbolInitializationChecker.cpp
  BuiltinModule.cpp
  EmbeddedData.cpp
  MathModule.cpp
  MeshModule.cpp
  VTKModule.cpp
  ModuleRepository.cpp
  PugsParser.cpp)

# Additional dependencies
add_dependencies(PugsLanguage
  PugsUtils
  PugsMesh)

# ------------------- Installation --------------------
# temporary version workaround
if(${CMAKE_VERSION} VERSION_LESS "3.13.0")
  install(TARGETS PugsLanguage
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib)
endif()
