cmake_minimum_required(VERSION 2.8)
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)

project(shrg_graph_parser)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

option(ENABLE_PROFILING "Enable gprof" OFF)
option(ENABLE_PARSER_CHECK "Enable parser check" OFF)
option(USE_SYSTEM_BOOST "Use system FindBoost.cmake" OFF)
option(USE_PYTHON "Compile python interface with pybind11" OFF)

if(ENABLE_PROFILING)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
endif()

if(ENABLE_PARSER_CHECK)
  add_definitions( -DSHRG_PARSER_CHECK )
endif()

if(USE_SYSTEM_BOOST)
  find_package(Boost REQUIRED)
  message(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}")

  include_directories(${Boost_INCLUDE_DIRS})
else()
  message(STATUS "Boost_INCLUDE_DIRS = ${PROJECT_SOURCE_DIR}/third-party/")

  include_directories(${PROJECT_SOURCE_DIR}/third-party/)
endif()

include_directories(${PROJECT_SOURCE_DIR}/third-party/sparsehash-c11)

file(GLOB SOURCE_FILES "src/graph_parser/*.cpp")
add_library(shrg STATIC "src/include/bleu.cpp" ${SOURCE_FILES})

add_executable(shrg_parser "src/shrg_parser.cpp" "src/manager.cpp")

set_target_properties(shrg PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
target_link_libraries(shrg_parser PRIVATE shrg)

if(USE_PYTHON)
  add_subdirectory(${PROJECT_SOURCE_DIR}/third-party/pybind11)
  set(PYBIND11_CPP_STANDARD -std=c++14)

  include_directories(${PYTHON_INCLUDE_DIRS})

  file(GLOB PYTHON_SOURCE_FILES "src/python/*.cpp")
  pybind11_add_module(pyshrg MODULE "src/manager.cpp" ${PYTHON_SOURCE_FILES})
  target_link_libraries(pyshrg PRIVATE shrg)
endif()
