-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
58 lines (41 loc) · 1.75 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
cmake_minimum_required(VERSION 2.6)
project(libmozart-experiments)
# Configure paths
set(MOZART_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../mozart2"
CACHE PATH "Path to Mozart2 source directory")
set(MOZART_BUILD_DIR "${MOZART_DIR}/build"
CACHE PATH "Path to Mozart2 build directory")
set(DEFAULT_LLVM_BUILD_DIR "${MOZART_BUILD_DIR}/externals/Build/llvm")
set(LLVM_BUILD_DIR ${DEFAULT_LLVM_BUILD_DIR}
CACHE PATH "Path to LLVM build (with Clang)")
# Configure compiler
set(CMAKE_CXX_FLAGS "-Wall -std=c++0x -O3 -DNDEBUG")
# Import Mozart VM library
add_library(mozartvm STATIC IMPORTED)
set_property(TARGET mozartvm PROPERTY
IMPORTED_LOCATION "${MOZART_DIR}/build/vm/main/libmozartvm.a")
include_directories("${MOZART_DIR}/vm/main" "${MOZART_DIR}/build/vm/main")
# Run the generator on "customlib.hh"
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/customlib.hh.gen
COMMAND ${LLVM_BUILD_DIR}/bin/clang++ -std=c++0x -femit-ast
-o ${CMAKE_CURRENT_BINARY_DIR}/customlib.hh.ast
-I "${MOZART_DIR}/vm/main"
-DMOZART_GENERATOR
${CMAKE_CURRENT_SOURCE_DIR}/customlib.hh
COMMAND ${MOZART_BUILD_DIR}/generator/main/generator
${CMAKE_CURRENT_BINARY_DIR}/customlib.hh.ast
${CMAKE_CURRENT_BINARY_DIR}/
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/customlib.hh.gen
IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR}/customlib.hh"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT Processing customlib.hh
VERBATIM)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_custom_target(gensources
DEPENDS customlib.hh.gen
VERBATIM)
# Compile the executable
add_executable(libmozart-experiments main.cc)
target_link_libraries(libmozart-experiments mozartvm)
add_dependencies(libmozart-experiments gensources)