blob: b976e1d8496d7aff471e3ae36ee592cf7f258b8e [file] [log] [blame]
Brenden Blanco246b9422015-06-05 11:15:27 -07001# Copyright (c) PLUMgrid, Inc.
2# Licensed under the Apache License, Version 2.0 (the "License")
Brenden Blancoa94bd932015-04-26 00:56:42 -07003cmake_minimum_required(VERSION 2.8.7)
4
Brenden Blancof275d3d2015-07-06 23:41:23 -07005project(bcc)
6set(CMAKE_BUILD_TYPE Release)
Brenden Blancocd5cb412015-04-26 09:41:58 -07007
8enable_testing()
Brenden Blancoa94bd932015-04-26 00:56:42 -07009
Brenden Blanco974e8912015-09-04 09:36:37 -070010include(cmake/GetGitRevisionDescription.cmake)
11include(cmake/version.cmake)
Brenden Blanco6470bbe2015-09-23 07:23:35 -070012include(GNUInstallDirs)
Brenden Blancod8acf6f2015-06-07 22:32:33 -070013
Brenden Blanco439a9f32015-07-03 16:10:29 -070014if(NOT PYTHON_ONLY)
Brenden Blancoa94bd932015-04-26 00:56:42 -070015find_package(BISON)
16find_package(FLEX)
17find_package(LLVM REQUIRED CONFIG)
Brenden Blancocd5cb412015-04-26 09:41:58 -070018message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIRS}")
Brenden Blanco25245bf2015-05-10 12:15:06 -070019
20# clang is linked as a library, but the library path searching is
21# primitively supported, unlike libLLVM
Brenden Blancof275d3d2015-07-06 23:41:23 -070022set(CLANG_SEARCH "/opt/local/llvm/lib;/usr/lib/llvm-3.7/lib;${LLVM_LIBRARY_DIRS}")
Brenden Blanco25245bf2015-05-10 12:15:06 -070023find_library(libclangAnalysis NAMES clangAnalysis HINTS ${CLANG_SEARCH})
24find_library(libclangAST NAMES clangAST HINTS ${CLANG_SEARCH})
25find_library(libclangBasic NAMES clangBasic HINTS ${CLANG_SEARCH})
26find_library(libclangCodeGen NAMES clangCodeGen HINTS ${CLANG_SEARCH})
27find_library(libclangDriver NAMES clangDriver HINTS ${CLANG_SEARCH})
28find_library(libclangEdit NAMES clangEdit HINTS ${CLANG_SEARCH})
29find_library(libclangFrontend NAMES clangFrontend HINTS ${CLANG_SEARCH})
30find_library(libclangLex NAMES clangLex HINTS ${CLANG_SEARCH})
31find_library(libclangParse NAMES clangParse HINTS ${CLANG_SEARCH})
Brenden Blanco7009b552015-05-26 11:48:17 -070032find_library(libclangRewrite NAMES clangRewrite HINTS ${CLANG_SEARCH})
Brenden Blanco25245bf2015-05-10 12:15:06 -070033find_library(libclangSema NAMES clangSema HINTS ${CLANG_SEARCH})
34find_library(libclangSerialization NAMES clangSerialization HINTS ${CLANG_SEARCH})
Brenden Blanco83102912015-06-09 17:43:27 -070035if(libclangBasic STREQUAL "libclangBasic-NOTFOUND")
36 message(FATAL_ERROR "Unable to find clang libraries")
37endif()
Alexei Starovoitov955f3b62015-06-09 19:37:38 -070038FOREACH(DIR ${LLVM_INCLUDE_DIRS})
39 include_directories("${DIR}/../tools/clang/include")
40ENDFOREACH()
Brenden Blancoa94bd932015-04-26 00:56:42 -070041
42set(CMAKE_C_FLAGS "-Wall")
43set(CMAKE_CXX_FLAGS "-std=c++11 -Wall")
Brenden Blanco439a9f32015-07-03 16:10:29 -070044endif()
Brenden Blancoa94bd932015-04-26 00:56:42 -070045
Brenden Blanco46176a12015-07-07 13:05:22 -070046add_subdirectory(examples)
Brenden Blancoc175cf82015-11-25 18:22:42 -080047add_subdirectory(man)
Brenden Blancocd5cb412015-04-26 09:41:58 -070048add_subdirectory(src)
49add_subdirectory(tests)
Brenden Blancoc175cf82015-11-25 18:22:42 -080050add_subdirectory(tools)