summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: c6686680320b7f1b71db0557964586f1c2ec6400 (plain)
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
96
97
98
99
100
101
102
103
104
cmake_minimum_required(VERSION 2.8)
project(chill)
set(CHILL_VERSION 0.2.1) # 2.8 doesn't support project version clause

find_package(PythonLibs 2.7 REQUIRED)
find_package(LLVM REQUIRED CONFIG)

add_definitions(${LLVM_DEFINITIONS})

string(TIMESTAMP build_date "\\\"%m/%d/%Y\\\"")

set(CORE_LIBS 
    omega codegen chillcg parseRel)

set(CORE_SRC
    src/dep.cc
    src/irtools.cc
        src/transformations/loop.cc
        src/transformations/loop_basic.cc
        src/transformations/loop_datacopy.cc
        src/transformations/loop_extra.cc
        src/transformations/loop_tile.cc
        src/transformations/loop_unroll.cc
    src/omegatools.cc
    )

set(IR_CHILL_SRC
    src/ir_clang.cc
        src/chillASTs.cc
    )

set(PYTHON_SRC
    src/chillmodule.cc
    )

llvm_map_components_to_libnames(llvm_libs all)
set(clang_libs
        clangTooling
        clangFrontendTool
        clangFrontend
        clangDriver
        clangSerialization
        clangCodeGen
        clangParse
        clangSema
        clangStaticAnalyzerFrontend
        clangStaticAnalyzerCheckers
        clangStaticAnalyzerCore
        clangAnalysis
        clangARCMigrate
        clangRewrite
        clangRewriteFrontend
        clangEdit
        clangAST
        clangLex
        clangBasic
        )

set(COMMON_FLAGS "-DCHILL_BUILD_DATE=\"${build_date}\" -DCHILL_BUILD_VERSION=\"\\\"${CHILL_VERSION}\\\"\"")

set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${CMAKE_CXX_FLAGS}")

if (DEFINED OMEGAHOME)
    link_directories(${OMEGAHOME}/lib)
    set(OMEGA_INC ${OMEGAHOME}/include)
else()
    set(OMEGA_INC
        ${CMAKE_CURRENT_SOURCE_DIR}/lib/omega/include
        ${CMAKE_CURRENT_SOURCE_DIR}/lib/parserel/include
        ${CMAKE_CURRENT_SOURCE_DIR}/lib/codegen/include
        ${CMAKE_CURRENT_SOURCE_DIR}/lib/chillcg/include
        )
endif()

include_directories(
    include
    lib/chillcg/include
    lib/iegenlib/src
    ${OMEGA_INC}
    ${LLVM_INCLUDE_DIRS}
    ${PYTHON_INCLUDE_DIRS})

add_executable(chill
        src/chill.cc
        ${CORE_SRC}
        ${PYTHON_SRC}
        ${IR_CHILL_SRC})

target_link_libraries(chill
        ${CORE_LIBS}
        ${llvm_libs}
        ${clang_libs}
        ${PYTHON_LIBRARY})
add_dependencies(chill omega codegen chillcg parseRel)

install(TARGETS chill
        RUNTIME DESTINATION bin)

add_subdirectory(lib/omega)
add_subdirectory(lib/codegen)
add_subdirectory(lib/chillcg)
add_subdirectory(lib/parserel)

add_subdirectory(doc)