cmake_minimum_required(VERSION 3.20)
project(prisma LANGUAGES CXX C)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

find_package(MLIR REQUIRED CONFIG)

message(STATUS "Using MLIR in: ${MLIR_DIR}")
message(STATUS "Using LLVM in: ${LLVM_DIR}")

# MLIR's cmake helpers (mlir_check_all_link_libraries etc.)
list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")

option(PRISMA_BUILD_PYTHON "Build Python bindings" ON)
option(PRISMA_BUILD_TESTS  "Build C++ tests" OFF)

# include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)

include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${MLIR_INCLUDE_DIRS})

add_definitions(${LLVM_DEFINITIONS})

include_directories(${PROJECT_SOURCE_DIR}/include)

add_subdirectory(src)

if(PRISMA_BUILD_PYTHON)
    add_subdirectory(bindings)
endif()

if(PRISMA_BUILD_TESTS)
    enable_testing()
    add_subdirectory(tests/cpp)
endif()
