80 lines · plain
1cmake_minimum_required(VERSION 3.20.0)2project(standalone-dialect LANGUAGES CXX C)3 4set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)5 6set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")7 8if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)9 set(EXTERNAL_PROJECT_BUILD FALSE)10 find_package(MLIR REQUIRED CONFIG)11 12 # Define the default argument to use by `lit` when testing.13 set(LLVM_LIT_ARGS "-sv" CACHE STRING "Default options for lit")14 15 message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")16 message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")17 18 set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)19 set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)20 set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})21 22 list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")23 list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")24 25 include(TableGen)26 include(AddLLVM)27 include(AddMLIR)28 include(HandleLLVMOptions)29else()30 set(EXTERNAL_PROJECT_BUILD TRUE)31 # Build via external projects mechanism32 set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)33 set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/tools/Standalone/lib)34 35 set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})36 set(MLIR_MAIN_SRC_DIR ${LLVM_MAIN_SRC_DIR}/../mlir)37 set(MLIR_INCLUDE_DIR ${MLIR_MAIN_SRC_DIR}/include)38 set(MLIR_GENERATED_INCLUDE_DIR ${LLVM_BINARY_DIR}/tools/mlir/include)39 set(MLIR_INCLUDE_DIRS "${MLIR_INCLUDE_DIR};${MLIR_GENERATED_INCLUDE_DIR}")40 41 list(APPEND CMAKE_MODULE_PATH "${MLIR_MAIN_SRC_DIR}/cmake/modules")42 list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules")43endif()44 45if(MLIR_ENABLE_BINDINGS_PYTHON)46 include(MLIRDetectPythonEnv)47 mlir_configure_python_dev_packages()48endif()49 50set(STANDALONE_SOURCE_DIR ${PROJECT_SOURCE_DIR})51set(STANDALONE_BINARY_DIR ${PROJECT_BINARY_DIR})52include_directories(${LLVM_INCLUDE_DIRS})53include_directories(${MLIR_INCLUDE_DIRS})54include_directories(${STANDALONE_SOURCE_DIR}/include)55include_directories(${STANDALONE_BINARY_DIR}/include)56link_directories(${LLVM_BUILD_LIBRARY_DIR})57add_definitions(${LLVM_DEFINITIONS})58 59add_subdirectory(include)60add_subdirectory(lib)61if(MLIR_ENABLE_BINDINGS_PYTHON)62 message(STATUS "Enabling Python API")63 include(MLIRDetectPythonEnv)64 mlir_configure_python_dev_packages()65 # Note: for EXTERNAL_PROJECT_BUILD this must be set from the command line.66 if(NOT MLIR_PYTHON_PACKAGE_PREFIX)67 set(MLIR_PYTHON_PACKAGE_PREFIX "mlir_standalone" CACHE STRING "" FORCE)68 endif()69 if(NOT MLIR_BINDINGS_PYTHON_INSTALL_PREFIX)70 set(MLIR_BINDINGS_PYTHON_INSTALL_PREFIX "python_packages/standalone/${MLIR_PYTHON_PACKAGE_PREFIX}" CACHE STRING "" FORCE)71 endif()72 add_subdirectory(python)73endif()74add_subdirectory(test)75add_subdirectory(standalone-opt)76if(NOT WIN32)77 add_subdirectory(standalone-plugin)78endif()79add_subdirectory(standalone-translate)80