49 lines
1.7 KiB
CMake
49 lines
1.7 KiB
CMake
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})
|