-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
89 lines (75 loc) · 3.16 KB
/
Copy pathCMakeLists.txt
File metadata and controls
89 lines (75 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# ===----------------------------------------------------------------------===
# SAR-DSL: an MLIR-based compiler for SAR imaging pipelines.
# ===----------------------------------------------------------------------===
cmake_minimum_required(VERSION 3.20)
project(sar-dsl LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
# ------------------------------------------------------------------------- #
# MLIR / LLVM
#
# By default the in-tree submodule build is used; override MLIR_DIR / LLVM_DIR
# to build against an external installation.
# ------------------------------------------------------------------------- #
set(SAR_DSL_LLVM_BUILD_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/externals/llvm-project/build"
CACHE PATH "LLVM build/install tree providing LLVM and MLIR")
if(NOT DEFINED MLIR_DIR)
set(MLIR_DIR "${SAR_DSL_LLVM_BUILD_DIR}/lib/cmake/mlir")
endif()
if(NOT DEFINED LLVM_DIR)
set(LLVM_DIR "${SAR_DSL_LLVM_BUILD_DIR}/lib/cmake/llvm")
endif()
find_package(MLIR REQUIRED CONFIG)
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)
include_directories(SYSTEM ${LLVM_INCLUDE_DIRS} ${MLIR_INCLUDE_DIRS})
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/include)
link_directories(${LLVM_BUILD_LIBRARY_DIR})
add_definitions(${LLVM_DEFINITIONS})
# ------------------------------------------------------------------------- #
# Subdirectories
# ------------------------------------------------------------------------- #
add_subdirectory(include/sar)
add_subdirectory(lib)
add_subdirectory(runtime)
add_subdirectory(tools)
option(SAR_DSL_ENABLE_TESTS "Build SAR-DSL lit tests" ON)
if(SAR_DSL_ENABLE_TESTS)
add_subdirectory(test)
endif()
# ------------------------------------------------------------------------- #
# Python build configuration
#
# Generates python/sar/_build_config.py so the Python driver can locate the
# freshly built tools without any environment setup.
# ------------------------------------------------------------------------- #
set(SAR_DSL_TOOL_DIR "${PROJECT_BINARY_DIR}/bin")
set(SAR_DSL_RUNTIME_LIB "${PROJECT_BINARY_DIR}/lib/libsar_runtime.so")
set(SAR_DSL_LLVM_TOOL_DIR "${SAR_DSL_LLVM_BUILD_DIR}/bin")
configure_file(
${PROJECT_SOURCE_DIR}/cmake/_build_config.py.in
${PROJECT_SOURCE_DIR}/python/sar/_build_config.py
@ONLY)
# Editor LSP servers referenced by .vscode/settings.json.
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
foreach(tool tblgen-lsp-server mlir-pdll-lsp-server)
if(EXISTS "${SAR_DSL_LLVM_TOOL_DIR}/${tool}")
file(CREATE_LINK "${SAR_DSL_LLVM_TOOL_DIR}/${tool}"
"${PROJECT_BINARY_DIR}/bin/${tool}" SYMBOLIC)
endif()
endforeach()