2017-01-17 16:56:40 -08:00
|
|
|
# Code for compiling flatbuffers
|
2016-07-20 21:47:37 -07:00
|
|
|
|
2017-01-17 16:56:40 -08:00
|
|
|
include(ExternalProject)
|
2017-02-28 18:47:40 -08:00
|
|
|
include(CMakeParseArguments)
|
2016-07-20 21:47:37 -07:00
|
|
|
|
2017-02-28 18:47:40 -08:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
2016-07-20 21:47:37 -07:00
|
|
|
|
2017-03-07 21:33:46 -08:00
|
|
|
set(FLATBUFFERS_VERSION "1.6.0")
|
2017-02-28 18:47:40 -08:00
|
|
|
|
|
|
|
set(FLATBUFFERS_PREFIX "${CMAKE_BINARY_DIR}/flatbuffers_ep-prefix/src/flatbuffers_ep-install")
|
|
|
|
if (NOT TARGET flatbuffers_ep)
|
|
|
|
ExternalProject_Add(flatbuffers_ep
|
|
|
|
URL "https://github.com/google/flatbuffers/archive/v${FLATBUFFERS_VERSION}.tar.gz"
|
|
|
|
CMAKE_ARGS
|
|
|
|
"-DCMAKE_CXX_FLAGS=-fPIC"
|
|
|
|
"-DCMAKE_INSTALL_PREFIX:PATH=${FLATBUFFERS_PREFIX}"
|
|
|
|
"-DFLATBUFFERS_BUILD_TESTS=OFF")
|
2017-01-09 20:15:54 -08:00
|
|
|
endif()
|
2016-11-19 02:27:21 -08:00
|
|
|
|
2017-02-28 18:47:40 -08:00
|
|
|
set(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_PREFIX}/include")
|
|
|
|
set(FLATBUFFERS_STATIC_LIB "${FLATBUFFERS_PREFIX}/lib/libflatbuffers.a")
|
|
|
|
set(FLATBUFFERS_COMPILER "${FLATBUFFERS_PREFIX}/bin/flatc")
|
2017-01-17 16:56:40 -08:00
|
|
|
|
2017-02-28 18:47:40 -08:00
|
|
|
message(STATUS "Flatbuffers include dir: ${FLATBUFFERS_INCLUDE_DIR}")
|
|
|
|
message(STATUS "Flatbuffers static library: ${FLATBUFFERS_STATIC_LIB}")
|
|
|
|
message(STATUS "Flatbuffers compiler: ${FLATBUFFERS_COMPILER}")
|
|
|
|
include_directories(SYSTEM ${FLATBUFFERS_INCLUDE_DIR})
|
2017-01-17 16:56:40 -08:00
|
|
|
|
|
|
|
# Custom CFLAGS
|
|
|
|
|
|
|
|
set(CMAKE_C_FLAGS "-g -Wall -Wextra -Werror=implicit-function-declaration -Wno-sign-compare -Wno-unused-parameter -Wno-type-limits -Wno-missing-field-initializers --std=c99 -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L -fPIC -std=c99")
|
|
|
|
|
|
|
|
# Code for finding Python
|
|
|
|
|
2016-11-29 14:32:54 -08:00
|
|
|
message(STATUS "Trying custom approach for finding Python.")
|
|
|
|
# Start off by figuring out which Python executable to use.
|
|
|
|
find_program(CUSTOM_PYTHON_EXECUTABLE python)
|
|
|
|
message(STATUS "Found Python program: ${CUSTOM_PYTHON_EXECUTABLE}")
|
2016-12-11 12:25:31 -08:00
|
|
|
execute_process(COMMAND ${CUSTOM_PYTHON_EXECUTABLE} -c "import sys; print('python' + sys.version[0:3])"
|
2016-11-29 14:32:54 -08:00
|
|
|
OUTPUT_VARIABLE PYTHON_LIBRARY_NAME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
message(STATUS "PYTHON_LIBRARY_NAME: " ${PYTHON_LIBRARY_NAME})
|
|
|
|
# Now find the Python include directories.
|
2016-12-11 12:25:31 -08:00
|
|
|
execute_process(COMMAND ${CUSTOM_PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_python_inc())"
|
2016-11-29 14:32:54 -08:00
|
|
|
OUTPUT_VARIABLE PYTHON_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
message(STATUS "PYTHON_INCLUDE_DIRS: " ${PYTHON_INCLUDE_DIRS})
|
2017-05-25 19:01:12 -07:00
|
|
|
|
2016-11-29 14:32:54 -08:00
|
|
|
# If we found the Python libraries and the include directories, then continue
|
|
|
|
# on. If not, then try find_package as a last resort, but it probably won't
|
|
|
|
# work.
|
2017-05-25 19:01:12 -07:00
|
|
|
if(PYTHON_INCLUDE_DIRS)
|
2016-11-29 14:32:54 -08:00
|
|
|
message(STATUS "The custom approach for finding Python succeeded.")
|
|
|
|
SET(PYTHONLIBS_FOUND TRUE)
|
|
|
|
else()
|
|
|
|
message(WARNING "The custom approach for finding Python failed. Defaulting to find_package.")
|
|
|
|
find_package(PythonInterp REQUIRED)
|
2017-05-25 19:01:12 -07:00
|
|
|
find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT)
|
2016-11-29 14:32:54 -08:00
|
|
|
set(CUSTOM_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
|
|
|
|
endif()
|
|
|
|
|
2016-11-19 19:00:42 -08:00
|
|
|
message(STATUS "Using CUSTOM_PYTHON_EXECUTABLE: " ${CUSTOM_PYTHON_EXECUTABLE})
|
|
|
|
message(STATUS "Using PYTHON_INCLUDE_DIRS: " ${PYTHON_INCLUDE_DIRS})
|
2016-07-24 21:24:26 -07:00
|
|
|
|
2017-01-17 16:56:40 -08:00
|
|
|
# Common libraries
|
2016-07-20 21:47:37 -07:00
|
|
|
|
2017-01-17 16:56:40 -08:00
|
|
|
set(COMMON_LIB "${CMAKE_BINARY_DIR}/src/common/libcommon.a"
|
|
|
|
CACHE STRING "Path to libcommon.a")
|
2017-01-09 20:15:54 -08:00
|
|
|
|
2017-01-17 16:56:40 -08:00
|
|
|
include_directories("${CMAKE_CURRENT_LIST_DIR}/..")
|
|
|
|
include_directories("${CMAKE_CURRENT_LIST_DIR}/../thirdparty/")
|
|
|
|
include_directories("${CMAKE_CURRENT_LIST_DIR}/../lib/python")
|