-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
95 lines (79 loc) · 2.47 KB
/
CMakeLists.txt
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
90
91
92
93
94
95
cmake_minimum_required(VERSION 3.14.0)
project(verona_dyn VERSION 1.0.0 LANGUAGES CXX)
include(FetchContent)
# Used to provide
# FetchContent_MakeAvailable_ExcludeFromAll
FetchContent_Declare(
cmake_utils
GIT_REPOSITORY https://github.com/mjp41/cmake_utils
GIT_TAG 2bf98b5773ea7282197c823e205547d8c2e323c0
GIT_SHALLOW FALSE
)
FetchContent_MakeAvailable(cmake_utils)
FetchContent_Declare(
trieste
GIT_REPOSITORY https://github.com/microsoft/trieste
GIT_TAG 467157a167d2e929095498089f29fc9419f4ef11
GIT_SHALLOW FALSE
)
set (TRIESTE_BUILD_SAMPLES OFF)
set (TRIESTE_BUILD_PARSERS OFF)
set (TRIESTE_ENABLE_TESTING OFF)
FetchContent_MakeAvailable_ExcludeFromAll(trieste)
set(CMAKE_CXX_STANDARD 20)
if(SANITIZER)
message(STATUS "Run-time sanitizer=${SANITIZER}")
endif()
macro(add_san target)
# ASAN must be added first, or it gets upset.
if(SANITIZER)
if(MSVC)
message(FATAL_ERROR "MSVC does not support sanitizers")
endif()
target_compile_definitions(${target} INTERFACE -DSNMALLOC_PASS_THROUGH)
target_compile_options(${target} INTERFACE -g -fsanitize=${SANITIZER} -fno-omit-frame-pointer)
target_link_libraries(${target} INTERFACE -fsanitize=${SANITIZER})
endif()
endmacro()
add_library(
rt OBJECT
src/rt/rt.cc
src/rt/objects/region.cc
src/rt/ui/mermaid.cc
src/rt/core/builtin.cc
)
add_san(rt)
add_library(
lang OBJECT
src/lang/lang.cc
src/lang/interpreter.cc
src/lang/passes/parse.cc
src/lang/passes/grouping.cc
src/lang/passes/call_stmts.cc
src/lang/passes/flatten.cc
src/lang/passes/bytecode.cc
)
add_san(lang)
target_link_libraries(lang PRIVATE trieste::trieste)
add_executable(verona_dyn src/main.cc)
add_san(verona_dyn)
target_link_libraries(verona_dyn PRIVATE rt lang)
set_property(TARGET verona_dyn PROPERTY COMPILE_WARNING_AS_ERROR ON)
# Add snmallocs clang format targets
clangformat_targets()
message(STATUS "Adding tests")
FILE(GLOB_RECURSE ALL_FILES
CONFIGURE_DEPENDS
tests/*
)
enable_testing()
foreach(FILE ${ALL_FILES})
get_filename_component(FILENAME ${FILE} NAME)
message(STATUS "Adding test: ${FILENAME} -- ${FILE}")
add_test(NAME ${FILENAME} COMMAND verona_dyn build ${FILE})
endforeach()
set_property(TEST three_regions.vpy PROPERTY WILL_FAIL true)
set_property(TEST leak_with_global.vpy PROPERTY WILL_FAIL true)
set_property(TEST invalid_read.vpy PROPERTY WILL_FAIL true)
set_property(TEST invalid_shared_region.vpy PROPERTY WILL_FAIL true)
set_property(TEST invalid_write.vpy PROPERTY WILL_FAIL true)