| cmake_minimum_required(VERSION 3.10) |
| |
| if(POLICY CMP0068) |
| cmake_policy(SET CMP0068 NEW) |
| set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON) |
| endif() |
| |
| if(POLICY CMP0075) |
| cmake_policy(SET CMP0075 NEW) |
| endif() |
| |
| if(POLICY CMP0077) |
| cmake_policy(SET CMP0077 NEW) |
| endif() |
| |
| project(mlir-emitc LANGUAGES CXX C) |
| set(CMAKE_C_STANDARD 11) |
| set(CMAKE_CXX_STANDARD 14) |
| |
| if(${IREE_ENABLE_EMITC}) |
| message(STATUS "Building EmitC (with reduced deps) for use within IREE") |
| add_definitions(-DIREE_BUILD_EMITC) |
| endif() |
| |
| if(${IREE_ENABLE_EMITC} AND ${IREE_MLIR_DEP_MODE} STREQUAL "BUNDLED") |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}/lib/cmake/mlir") |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}/third_party/llvm-project/llvm/lib/cmake/llvm/") |
| else() |
| find_package(MLIR REQUIRED CONFIG) |
| |
| message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}") |
| message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") |
| |
| set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin) |
| set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib) |
| set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR}) |
| |
| list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}") |
| list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") |
| endif() |
| include(TableGen) |
| include(AddLLVM) |
| include(AddMLIR) |
| include(HandleLLVMOptions) |
| |
| # TODO: With LLVM_ENABLE_WARNINGS set to ON in HandleLLVMOptions, the |
| # compilation of googletest fails. As a workaround, we remove the |
| # `-Wcovered-switch-default` flag. |
| string(REPLACE "-Wcovered-switch-default" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") |
| |
| if(${IREE_ENABLE_EMITC} AND ${IREE_MLIR_DEP_MODE} STREQUAL "BUNDLED") |
| include_directories(${IREE_COMMON_INCLUDE_DIRS}) |
| elseif(${IREE_ENABLE_EMITC} AND ${IREE_MLIR_DEP_MODE} STREQUAL "INSTALLED") |
| include_directories(${iree_SOURCE_DIR}) |
| include_directories(${iree_BINARY_DIR}) |
| include_directories(${LLVM_INCLUDE_DIRS}) |
| include_directories(${MLIR_INCLUDE_DIRS}) |
| else() |
| include_directories(${LLVM_INCLUDE_DIRS}) |
| include_directories(${MLIR_INCLUDE_DIRS}) |
| endif() |
| include_directories(${PROJECT_SOURCE_DIR}/include) |
| include_directories(${PROJECT_BINARY_DIR}/include) |
| link_directories(${LLVM_BUILD_LIBRARY_DIR}) |
| add_definitions(${LLVM_DEFINITIONS}) |
| |
| add_subdirectory(include/emitc) |
| add_subdirectory(lib) |
| add_subdirectory(test) |
| add_subdirectory(tools) |