diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ebad35d61d..f911d243e47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -590,6 +590,14 @@ IF (LAPACK_FOUND AND NOT (DARWIN AND RModular)) ENDIF() ENDIF() +FIND_PACKAGE(Cereal) +IF(NOT CEREAL_FOUND) + include(external/Cereal) + LIST(APPEND INCLUDES ${CEREAL_INCLUDE_DIRS}) +ELSE() + LIST(APPEND INCLUDES ${CEREAL_INCLUDE_DIRS}) +ENDIF() + FIND_PACKAGE(GLPK) IF (GLPK_FOUND) SET(USE_GLPK 1) diff --git a/cmake/FindCereal.cmake b/cmake/FindCereal.cmake new file mode 100644 index 00000000000..5ed51bd3e35 --- /dev/null +++ b/cmake/FindCereal.cmake @@ -0,0 +1,19 @@ +# - Try to find Cereal Serialization Library +# +# This sets the following variables: +# CEREAL_FOUND - True if Cereal was found. +# CEREAL_INCLUDE_DIRS - Directories containing the Cereal include files. + +find_path(CEREAL_INCLUDE_DIR cereal + HINTS "$ENV{CMAKE_SOURCE_DIR}/include" "/usr/include" "$ENV{CMAKE_BINARY_DIR}/cereal/include") + +set(CEREAL_INCLUDE_DIRS ${CEREAL_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Cereal DEFAULT_MSG CEREAL_INCLUDE_DIR) + +mark_as_advanced(CEREAL_INCLUDE_DIR) + +if(CEREAL_FOUND) + MESSAGE(STATUS "Found Cereal: ${CEREAL_INCLUDE_DIRS}") +endif(CEREAL_FOUND) diff --git a/cmake/external/Cereal.cmake b/cmake/external/Cereal.cmake new file mode 100644 index 00000000000..05add8b2a54 --- /dev/null +++ b/cmake/external/Cereal.cmake @@ -0,0 +1,14 @@ +include(ExternalProject) +ExternalProject_Add( + Cereal + PREFIX ${CMAKE_BINARY_DIR}/Cereal + DOWNLOAD_DIR ${THIRD_PARTY_DIR}/Cereal + URL https://github.com/USCiLab/cereal/archive/v1.1.2.tar.gz + URL_MD5 34d4ad174acbff005c36d4d10e48cbb9 + CMAKE_ARGS -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}${CMAKE_DEFINITIONS} + -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}${CMAKE_DEFINITIONS} + INSTALL_COMMAND "" + ) + +SET(CEREAL_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/Cereal/src/Cereal/include) +LIST(APPEND SHOGUN_DEPENDS Cereal)