2017-06-28 15:45:56 +05:30
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
|
2017-06-14 15:06:43 +05:30
|
|
|
|
|
|
|
|
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
2017-05-29 18:18:00 +05:30
|
|
|
|
2017-07-03 15:21:31 +05:30
|
|
|
INCLUDE(cmake/utils.cmake)
|
|
|
|
|
INCLUDE(GenerateExportHeader)
|
2017-05-31 16:22:00 +05:30
|
|
|
INCLUDE(ExternalProject)
|
2017-07-03 15:21:31 +05:30
|
|
|
INCLUDE(CMakePackageConfigHelpers)
|
|
|
|
|
|
|
|
|
|
SET_VERSION(VERSION)
|
|
|
|
|
|
|
|
|
|
PROJECT(ortools LANGUAGES CXX VERSION ${VERSION})
|
|
|
|
|
SET(CMAKE_CXX_STANDARD 17)
|
2017-05-29 18:18:00 +05:30
|
|
|
|
|
|
|
|
IF(UNIX)
|
|
|
|
|
IF(NOT APPLE)
|
|
|
|
|
INCLUDE(GNUInstallDirs)
|
2017-06-20 14:33:05 +05:30
|
|
|
ELSE()
|
|
|
|
|
SET(CMAKE_INSTALL_LIBDIR lib)
|
|
|
|
|
SET(CMAKE_INSTALL_BINDIR bin)
|
|
|
|
|
SET(CMAKE_INSTALL_INCLUDEDIR include)
|
2017-05-29 18:18:00 +05:30
|
|
|
ENDIF()
|
2017-06-20 14:33:05 +05:30
|
|
|
ELSE()
|
|
|
|
|
SET(CMAKE_INSTALL_LIBDIR lib)
|
|
|
|
|
SET(CMAKE_INSTALL_BINDIR bin)
|
|
|
|
|
SET(CMAKE_INSTALL_INCLUDEDIR include)
|
2017-05-29 18:18:00 +05:30
|
|
|
ENDIF()
|
|
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
SET(BUILD_CXX OFF CACHE BOOL "Build C++ library")
|
|
|
|
|
SET(BUILD_PY OFF CACHE BOOL "Build Python library")
|
2017-07-03 15:42:24 +05:30
|
|
|
SET(BUILD_DEPS OFF CACHE BOOL "Force re-build of all dependencies")
|
2017-05-31 16:22:00 +05:30
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
SET(DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE PATH "Location where external projects will be downloaded.")
|
2017-05-31 16:22:00 +05:30
|
|
|
MARK_AS_ADVANCED(DOWNLOAD_LOCATION)
|
|
|
|
|
|
2017-06-01 15:22:07 +05:30
|
|
|
FILE(READ ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies.txt _Dependency_file)
|
2017-06-14 15:06:43 +05:30
|
|
|
FOREACH(DEPENDENCY Protobuf gflags glog Cbc CoinUtils Osi Clp Cgl)
|
2017-06-01 15:22:07 +05:30
|
|
|
STRING(REGEX REPLACE ".*${DEPENDENCY} = ([0-9.]+).*" "\\1" ${DEPENDENCY}_VERSION ${_Dependency_file})
|
|
|
|
|
ENDFOREACH()
|
|
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(BUILD_PY)
|
2017-07-03 15:21:31 +05:30
|
|
|
FIND_PACKAGE(${PROJECT_NAME} QUIET)
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT ${PROJECT_NAME}_FOUND)
|
|
|
|
|
SET(BUILD_CXX ON)
|
2017-06-14 15:06:43 +05:30
|
|
|
ELSE()
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT BUILD_CXX)
|
|
|
|
|
INCLUDE_DIRECTORIES(${${PROJECT_NAME}_INCLUDE_DIRS})
|
2017-06-14 15:06:43 +05:30
|
|
|
ENDIF()
|
2017-05-31 18:50:57 +05:30
|
|
|
ENDIF()
|
2017-06-28 15:45:56 +05:30
|
|
|
ENDIF()
|
2017-05-29 18:18:00 +05:30
|
|
|
|
2017-07-03 16:48:03 +05:30
|
|
|
FIND_PACKAGE(Threads REQUIRED QUIET)
|
2017-05-29 18:37:41 +05:30
|
|
|
|
2017-07-03 16:48:03 +05:30
|
|
|
FIND_PACKAGE(Protobuf ${Protobuf_VERSION} QUIET)
|
2017-07-03 15:42:24 +05:30
|
|
|
IF(BUILD_DEPS)
|
|
|
|
|
SET(Protobuf_FOUND False)
|
|
|
|
|
ENDIF()
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT Protobuf_FOUND)
|
2017-07-03 15:42:24 +05:30
|
|
|
MESSAGE(STATUS "Did not find system protobuf or forced build. Building as an external project")
|
2017-06-28 15:45:56 +05:30
|
|
|
INCLUDE(cmake/external/protobuf.cmake)
|
|
|
|
|
ENDIF()
|
|
|
|
|
INCLUDE_DIRECTORIES(${Protobuf_INCLUDE_DIRS})
|
|
|
|
|
SET(PROTOBUF_IMPORT_DIRS ${PROJECT_SOURCE_DIR})
|
|
|
|
|
SET(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
|
2017-05-30 15:51:19 +05:30
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(MSVC)
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /DNDEBUG /DUSE_GLOP /DUSE_BOP")
|
|
|
|
|
ELSE()
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG -DUSE_GLOP -DUSE_BOP")
|
|
|
|
|
ENDIF()
|
2017-06-06 16:42:16 +05:30
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
|
2017-06-06 16:42:16 +05:30
|
|
|
|
2017-07-03 16:48:03 +05:30
|
|
|
MESSAGE(STATUS "Build cxx library: ${BUILD_CXX}")
|
|
|
|
|
MESSAGE(STATUS "Build python library: ${BUILD_PY}")
|
2017-06-28 15:45:56 +05:30
|
|
|
|
|
|
|
|
IF(BUILD_CXX)
|
|
|
|
|
INCLUDE(cmake/cpp.cmake)
|
|
|
|
|
ENDIF()
|
2017-06-09 16:39:31 +05:30
|
|
|
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(BUILD_PY)
|
|
|
|
|
INCLUDE(cmake/python.cmake)
|
|
|
|
|
ENDIF()
|