-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
57 lines (47 loc) · 1.69 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
# Recommend minimum version from https://cliutils.gitlab.io/modern-cmake/chapters/basics.html
cmake_minimum_required(VERSION 3.1...3.12)
if(${CMAKE_VERSION} VERSION_LESS 3.12)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
project(Mondriaan VERSION 0.0.0
DESCRIPTION "LLVM-based Piet compiler"
LANGUAGES CXX)
# C++ settings
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Define executable and sources
add_executable(mondriaan main.cpp
src/Image.cpp
src/Reader.cpp
src/PNG.cpp
src/Parser.cpp
src/Graph.cpp
src/Translator.cpp
src/ColorTransition.cpp
src/DirectionPoint.cpp)
# Include LLVM
# Copied from https://llvm.org/docs/CMake.html#embedding-llvm-in-your-project
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
llvm_map_components_to_libnames(llvm_libs all)
message(STATUS "Using llvm libs: ${llvm_libs}")
add_definitions(${LLVM_DEFINITIONS})
link_directories(${llvm_libs})
include_directories(${LLVM_INCLUDE_DIRS})
# Define tests
# Depends on LLVM.
add_subdirectory(test/unit)
enable_testing()
add_test(NAME MondriaanUnitTest COMMAND Test)
# Include PNG
find_package(PNG MODULE REQUIRED)
include_directories(${PNG_INCLUDE_DIRS})
link_directories(${PNG_LIBRARY_DIRS})
target_link_libraries(mondriaan PUBLIC PNG::PNG ${llvm_libs})
# Configure debug builds (so many segmentation faults)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Weverything -g -O0")
# Include third-party tools.
include(clang-format.cmake)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)