123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- cmake_minimum_required(VERSION 3.9)
- set(PROJECT_NAME qlow)
- project(${PROJECT_NAME})
- include(CheckIPOSupported)
- check_ipo_supported(RESULT ipo_supported)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -g -DDEBUGGING -std=gnu++17")
- find_package(BISON 3.0.0 REQUIRED)
- find_package(FLEX 2.4.0 REQUIRED)
- find_package(LLVM REQUIRED CONFIG)
- if( NOT LLVM_FOUND )
- message(FATAL_ERROR "LLVM package can't be found. Set CMAKE_PREFIX_PATH variable to LLVM's installation prefix.")
- endif()
- BISON_TARGET(QlowParser ast/syntax.y ${CMAKE_CURRENT_BINARY_DIR}/syntax.cpp)
- FLEX_TARGET(QlowLexer ast/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
- ADD_FLEX_BISON_DEPENDENCY(QlowLexer QlowParser)
- FILE(GLOB CppSources *.cpp ast/*.cpp sem/*.cpp)
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
- include_directories(ast sem .)
- add_executable(${PROJECT_NAME} ${BISON_QlowParser_OUTPUTS} ${FLEX_QlowLexer_OUTPUTS} ${CppSources})
- include_directories( ${LLVM_INCLUDE_DIRS} )
- link_directories( ${LLVM_LIBRARY_DIRS} )
- add_definitions(${LLVM_DEFINITIONS})
- if(ipo_supported)
- set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
- endif()
- llvm_config(${PROJECT_NAME})
- target_link_libraries(${PROJECT_NAME} LLVM)
|