# 移除 ANTLR 代码生成相关配置
# list(APPEND CMAKE_MODULE_PATH "${ANTLR_RUNTIME}/cmake")
# include(FindANTLR)
# antlr_target(SysYGen SysY.g4
#   LEXER PARSER
#   OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
#   VISITOR
# )

# 移除 SysYParser 库的构建（如果不需要独立库）
# add_library(SysYParser SHARED ${ANTLR_SysYGen_CXX_OUTPUTS})
# target_include_directories(SysYParser PUBLIC ${ANTLR_RUNTIME}/runtime/src)
# target_link_libraries(SysYParser PUBLIC antlr4_shared)

# 构建 sysyc 可执行文件，使用手动提供的 SysYLexer.cpp、SysYParser.cpp 等文件
add_executable(sysyc
  sysyc.cpp
  SysYLexer.cpp      # 手动提供的文件
  SysYParser.cpp     # 手动提供的文件
  SysYVisitor.cpp    # 手动提供的文件
  IR.cpp
  SysYIRGenerator.cpp
  SysYIRPrinter.cpp
  SysYIROptPre.cpp
  SysYIRAnalyser.cpp
  # DeadCodeElimination.cpp
  AddressCalculationExpansion.cpp
  # Mem2Reg.cpp
  # Reg2Mem.cpp
  RISCv64Backend.cpp
)

# 设置 include 路径，包含 ANTLR 运行时库和项目头文件
target_include_directories(sysyc PRIVATE
  ${CMAKE_CURRENT_SOURCE_DIR}/include  # 项目头文件目录
  ${ANTLR_RUNTIME}/runtime/src        # ANTLR 运行时库头文件
)

# 保留 ANTLR 运行时库的链接
target_link_libraries(sysyc PRIVATE antlr4_shared)

# 保留其他编译选项
target_compile_options(sysyc PRIVATE -frtti)

# 可选：线程支持（如果需要，取消注释）
# set(THREADS_PREFER_PTHREAD_FLAG ON)
# find_package(Threads REQUIRED)
# target_link_libraries(sysyc PRIVATE Threads::Threads)