CMAKE_MINIMUM_REQUIRED(VERSION 3.30 FATAL_ERROR) PROJECT(HOOLANG) SET (CMAKE_CXX_STANDARD 17) SET (ANTLR_JAR /usr/local/lib/antlr4-4.13.2-complete.jar) SET (ANTLR_INCLUDE_DIR /usr/local/include/antlr4-runtime/) SET (ANTLR_GENERATED_DIR "${CMAKE_BINARY_DIR}/antlr4/generated") SET (GRAMMAR_FILE "${CMAKE_SOURCE_DIR}/Hoo.g4") SET (LLVM_LIBRARY_DIRS "/usr/lib/llvm-19/lib") # SET (LLVM_LIBS # ${LLVM_LIBRARY_DIRS}/libLLVMCore.a # ${LLVM_LIBRARY_DIRS}/libLLVMIRReader.a # ${LLVM_LIBRARY_DIRS}/libLLVMSupport.a # ) FIND_PACKAGE(LLVM REQUIRED CONFIG) MESSAGE (STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") MESSAGE (${LLVM_DEFINITIONS}) LLVM_MAP_COMPONENTS_TO_LIBNAMES(llvm_libs support core irreader) MESSAGE (${llvm_libs}) # ADD_CUSTOM_COMMAND(OUTPUT ${ANTLR_GENERATED_DIR}/HooBaseVisitor.cpp # COMMAND java -jar ${ANTLR_JAR} -no-listener -visitor -o ${ANTLR_GENERATED_DIR} -Dlanguage=Cpp ${GRAMMAR_FILE} # WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} # DEPENDS ${GRAMMAR_FILE}) EXECUTE_PROCESS( COMMAND java -jar ${ANTLR_JAR} -no-listener -visitor -o ${ANTLR_GENERATED_DIR} -Dlanguage=Cpp ${GRAMMAR_FILE} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_FILE ${ANTLR_GENERATED_DIR}/HooBaseVisitor.cpp ) ADD_CUSTOM_TARGET(HooBaseVisitor ALL DEPENDS ${ANTLR_GENERATED_DIR}/HooBaseVisitor.cpp) INCLUDE_DIRECTORIES(${ANTLR_GENERATED_DIR} ${ANTLR_INCLUDE_DIR}) ADD_EXECUTABLE(hoo Hoo.cpp Visitor.cpp ${ANTLR_GENERATED_DIR}/HooBaseVisitor.cpp ${ANTLR_GENERATED_DIR}/HooVisitor.cpp ${ANTLR_GENERATED_DIR}/HooLexer.cpp ${ANTLR_GENERATED_DIR}/HooParser.cpp) ADD_DEPENDENCIES(hoo HooBaseVisitor) TARGET_LINK_LIBRARIES(hoo antlr4-runtime ${LLVM_LIBS})