Rework CMake dependencies management (Fix #1116)
- By default don't build dependencies simply call find_package() - By default only build C++ library - IF building Python, Java or .Net wrapper then force build dependencies - Build dependencies as STATIC - Build and Install (in CMAKE_BINARY_DIR) dependencies at configure time
This commit is contained in:
146
CMakeLists.txt
146
CMakeLists.txt
@@ -1,100 +1,92 @@
|
||||
# This file is just an orchestration
|
||||
cmake_minimum_required(VERSION 3.8.2)
|
||||
cmake_minimum_required(VERSION 3.5.2)
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
# Default Build Type to be Release
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release)"
|
||||
FORCE)
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
# Use find_package everywhere, no-op if it's a subproject
|
||||
macro(find_package)
|
||||
if(NOT TARGET ${ARGV0} AND NOT TARGET ${ARGV0}::${ARGV0})
|
||||
_find_package(${ARGV})
|
||||
else()
|
||||
if(TARGET ${ARGV0})
|
||||
get_target_property(TGT_VER ${ARGV0} VERSION)
|
||||
set(TGT ${ARGV0})
|
||||
else()
|
||||
get_target_property(TGT_VER ${ARGV0}::${ARGV0} VERSION)
|
||||
set(TGT ${ARGV0}::${ARGV0})
|
||||
endif()
|
||||
message(STATUS "Found ${ARGV0}: CMake Target ${TGT} (found version \"${TGT_VER}\")")
|
||||
set(${ARGV0}_FOUND TRUE)
|
||||
endif()
|
||||
endmacro()
|
||||
# Apple: Don't modify install_name when touching RPATH.
|
||||
if(POLICY CMP0068)
|
||||
cmake_policy(SET CMP0068 NEW)
|
||||
endif()
|
||||
|
||||
project(ortools-meta NONE)
|
||||
include(utils)
|
||||
set_version(VERSION)
|
||||
|
||||
project(ortools LANGUAGES CXX VERSION ${VERSION})
|
||||
message(STATUS "version: ${PROJECT_VERSION}")
|
||||
|
||||
# Default Build Type to be Release
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel. (default: Release)"
|
||||
FORCE)
|
||||
endif()
|
||||
|
||||
include(CTest)
|
||||
if(UNIX)
|
||||
# Needed to create python package from the build directory
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries(.so)." ON)
|
||||
elseif(MSVC)
|
||||
# Windows only support static build.
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
endif()
|
||||
|
||||
# When incorporating ortools in a CMake Project, then only C++ library will be built.
|
||||
# Consequently Python, Java and C# wrapper won't be built.
|
||||
if("^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$")
|
||||
set(ORTOOLS_IS_SUBPROJECT FALSE)
|
||||
else()
|
||||
set(ORTOOLS_IS_SUBPROJECT TRUE)
|
||||
endif()
|
||||
|
||||
include(CMakeDependentOption)
|
||||
option(BUILD_DEPS "Force re-build of all dependencies" ON)
|
||||
# By default only the ortools C++ library is built.
|
||||
option(BUILD_CXX "Build C++ library" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_PYTHON "Build Python Library" OFF
|
||||
"BUILD_CXX; NOT ORTOOLS_IS_SUBPROJECT" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java Library" OFF
|
||||
"BUILD_CXX; NOT ORTOOLS_IS_SUBPROJECT" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_DOTNET "Build .NET Library" OFF
|
||||
"BUILD_CXX; NOT ORTOOLS_IS_SUBPROJECT" OFF)
|
||||
option(BUILD_PYTHON "Build Python Library" OFF)
|
||||
option(BUILD_JAVA "Build Java Library" OFF)
|
||||
option(BUILD_DOTNET "Build .NET Library" OFF)
|
||||
message(STATUS "Build C++ library: ${BUILD_CXX}")
|
||||
message(STATUS "Build Python: ${BUILD_PYTHON}")
|
||||
message(STATUS "Build Java: ${BUILD_JAVA}")
|
||||
message(STATUS "Build .Net: ${BUILD_DOTNET}")
|
||||
|
||||
#option(BUILD_DOC "Build doxygen" OFF)
|
||||
#message(STATUS "Build doxygen: ${BUILD_DOC}")
|
||||
|
||||
# By default all dependencies are NOT built (i.e. BUILD_DEPS=OFF).
|
||||
# IF building any wrapper THEN Force BUILD_DEPS=ON
|
||||
# IF BUILD_DEPS=ON THEN Force all BUILD_*=ON
|
||||
include(CMakeDependentOption)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_DEPS "Force re-build of all dependencies" OFF
|
||||
"NOT BUILD_PYTHON; NOT BUILD_JAVA; NOT BUILD_DOTNET" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_ZLIB "Build the ZLIB dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_absl "Build the abseil-cpp dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_gflags "Build the gflags dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_glog "Build the glog dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Protobuf "Build the Protobuf dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_CoinUtils "Build the CoinUtils dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Osi "Build the Osi dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Clp "Build the Clp dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cgl "Build the Cgl dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cbc "Build the Cbc dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
|
||||
message(STATUS "Build all dependencies: ${BUILD_DEPS}")
|
||||
message(STATUS "Build CXX library: ${BUILD_CXX}")
|
||||
message(STATUS "Build Python Binding: ${BUILD_PYTHON}")
|
||||
message(STATUS "Build Java Binding: ${BUILD_JAVA}")
|
||||
message(STATUS "Build .Net Binding: ${BUILD_DOTNET}")
|
||||
message(STATUS "Build ZLIB: ${BUILD_ZLIB}")
|
||||
message(STATUS "Build abseil-cpp: ${BUILD_absl}")
|
||||
message(STATUS "Build gflags: ${BUILD_gflags}")
|
||||
message(STATUS "Build glog: ${BUILD_glog}")
|
||||
message(STATUS "Build protobuf: ${BUILD_Protobuf}")
|
||||
message(STATUS "Build CoinUtils: ${BUILD_CoinUtils}")
|
||||
message(STATUS "Build Osi: ${BUILD_Osi}")
|
||||
message(STATUS "Build Clp: ${BUILD_Clp}")
|
||||
message(STATUS "Build Cgl: ${BUILD_Cgl}")
|
||||
message(STATUS "Build Cbc: ${BUILD_Cbc}")
|
||||
|
||||
# Add OR Tools Dependencies as CMake subproject if missing
|
||||
if(BUILD_DEPS)
|
||||
add_subdirectory(cmake/external external)
|
||||
endif()
|
||||
# Build Needed dependencies
|
||||
add_subdirectory(cmake/dependencies dependencies)
|
||||
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/dependencies/install)
|
||||
|
||||
if(BUILD_CXX)
|
||||
include(cpp)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/cpp)
|
||||
endif()
|
||||
endif()
|
||||
include(CTest)
|
||||
|
||||
if(BUILD_PYTHON)
|
||||
include(python)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/python)
|
||||
add_subdirectory(examples/notebook)
|
||||
endif()
|
||||
endif()
|
||||
include(cpp)
|
||||
|
||||
if(BUILD_JAVA)
|
||||
include(java)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/java)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(BUILD_DOTNET)
|
||||
include(dotnet)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/dotnet)
|
||||
endif()
|
||||
endif()
|
||||
include(python)
|
||||
include(java)
|
||||
include(dotnet)
|
||||
|
||||
@@ -1,7 +1,33 @@
|
||||
include(utils)
|
||||
set_version(VERSION)
|
||||
project(ortools LANGUAGES CXX VERSION ${VERSION})
|
||||
message(STATUS "ortools version: ${PROJECT_VERSION}")
|
||||
if(NOT BUILD_CXX)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check dependencies
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
set(THREAD_PREFER_PTHREAD_FLAG TRUE)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(ZLIB REQUIRED)
|
||||
find_package(absl REQUIRED CONFIG)
|
||||
set(GFLAGS_USE_TARGET_NAMESPACE TRUE)
|
||||
find_package(gflags REQUIRED CONFIG)
|
||||
if(BUILD_gflags)
|
||||
set(GFLAGS_DEP gflags::gflags_static)
|
||||
else()
|
||||
set(GFLAGS_DEP gflags::gflags)
|
||||
endif()
|
||||
find_package(glog REQUIRED CONFIG)
|
||||
find_package(Protobuf REQUIRED CONFIG)
|
||||
find_package(CoinUtils REQUIRED CONFIG)
|
||||
find_package(Osi REQUIRED CONFIG)
|
||||
find_package(Clp REQUIRED CONFIG)
|
||||
find_package(Cgl REQUIRED CONFIG)
|
||||
find_package(Cbc REQUIRED CONFIG)
|
||||
|
||||
# If wrapper are built, we need to have the install rpath in BINARY_DIR to package
|
||||
if(BUILD_PYTHON OR BUILD_JAVA OR BUILD_DOTNET)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
# config options
|
||||
if(MSVC)
|
||||
@@ -44,25 +70,30 @@ else()
|
||||
endif()
|
||||
add_definitions(-DUSE_GLOP -DUSE_BOP -DUSE_CBC -DUSE_CLP)
|
||||
|
||||
# Verify Dependencies
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# Main Target
|
||||
add_library(${PROJECT_NAME} "")
|
||||
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS "3.8.2")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
CXX_STANDARD 11
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS OFF
|
||||
)
|
||||
else()
|
||||
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
|
||||
endif()
|
||||
|
||||
if(NOT APPLE)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
|
||||
else()
|
||||
# Clang don't support version x.y.z with z > 255
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR})
|
||||
endif()
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 11)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS OFF)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
INTERFACE_POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES INTERFACE_${PROJECT_NAME}_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION)
|
||||
if(APPLE)
|
||||
@@ -86,9 +117,10 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||
absl::strings
|
||||
absl::synchronization
|
||||
absl::any
|
||||
gflags::gflags glog::glog
|
||||
${GFLAGS_DEP}
|
||||
glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::CbcSolver Cbc::OsiCbc Cbc::ClpSolver Cbc::OsiClp
|
||||
Coin::CbcSolver Coin::OsiCbc Coin::ClpSolver Coin::OsiClp
|
||||
Threads::Threads)
|
||||
if(WIN32)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC psapi.lib ws2_32.lib)
|
||||
@@ -108,7 +140,7 @@ file(GLOB_RECURSE proto_files RELATIVE ${PROJECT_SOURCE_DIR} "ortools/*.proto")
|
||||
get_target_property(protobuf_dirs protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)
|
||||
foreach(dir ${protobuf_dirs})
|
||||
if ("${dir}" MATCHES "BUILD_INTERFACE")
|
||||
list(APPEND PROTO_DIRS "--proto_path=${dir}")
|
||||
list(APPEND PROTO_DIRS "\"--proto_path=${dir}\"")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
@@ -124,7 +156,7 @@ foreach (PROTO_FILE ${proto_files})
|
||||
OUTPUT ${PROTO_SRC} ${PROTO_HDR}
|
||||
COMMAND protobuf::protoc
|
||||
"--proto_path=${PROJECT_SOURCE_DIR}"
|
||||
"${PROTO_DIRS}"
|
||||
${PROTO_DIRS}
|
||||
"--cpp_out=${PROJECT_BINARY_DIR}"
|
||||
${PROTO_FILE}
|
||||
DEPENDS ${PROTO_FILE} protobuf::protoc
|
||||
@@ -161,6 +193,10 @@ foreach(SUBPROJECT
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}::${SUBPROJECT})
|
||||
endforeach()
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/cpp)
|
||||
endif()
|
||||
|
||||
# Install rules
|
||||
include(GNUInstallDirs)
|
||||
|
||||
|
||||
179
cmake/dependencies/CMakeLists.txt
Normal file
179
cmake/dependencies/CMakeLists.txt
Normal file
@@ -0,0 +1,179 @@
|
||||
####################
|
||||
## SWIG (WIN32) ##
|
||||
####################
|
||||
if(WIN32 AND (BUILD_PYTHON OR BUILD_JAVA OR BUILD_DOTNET))
|
||||
message(STATUS "Getting SWIG: ...")
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/SWIG.CMakeLists.txt.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/SWIG/CMakeLists.txt @ONLY)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -H. -Bproject_build -G "${CMAKE_GENERATOR}"
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SWIG)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for SWIG failed: ${result}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build project_build --config ${CMAKE_BUILD_TYPE}
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SWIG)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for SWIG failed: ${result}")
|
||||
endif()
|
||||
message(STATUS "Getting SWIG: ...DONE")
|
||||
|
||||
set(SWIG_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/SWIG/source/swig.exe
|
||||
CACHE INTERNAL "swig.exe location" FORCE)
|
||||
endif()
|
||||
|
||||
############
|
||||
## ZLIB ##
|
||||
############
|
||||
if(BUILD_ZLIB)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
ZLIB
|
||||
REPOSITORY
|
||||
"https://github.com/madler/ZLIB.git"
|
||||
TAG
|
||||
"v1.2.11"
|
||||
APPLY_PATCH
|
||||
"${CMAKE_SOURCE_DIR}/patches/ZLIB.patch"
|
||||
)
|
||||
endif()
|
||||
|
||||
##################
|
||||
## ABSEIL-CPP ##
|
||||
##################
|
||||
if(BUILD_absl)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
abseil-cpp
|
||||
REPOSITORY
|
||||
"https://github.com/abseil/abseil-cpp.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
|
||||
##############
|
||||
## GFLAGS ##
|
||||
##############
|
||||
if(BUILD_gflags)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
gflags
|
||||
REPOSITORY
|
||||
"https://github.com/gflags/gflags.git"
|
||||
TAG
|
||||
"v2.2.2"
|
||||
CMAKE_ARGS
|
||||
-DINSTALL_SHARED_LIBS:BOOL=OFF
|
||||
-DBUILD_STATIC_LIBS:BOOL=ON
|
||||
-DINSTALL_STATIC_LIBS:BOOL=ON
|
||||
)
|
||||
endif()
|
||||
|
||||
############
|
||||
## GLOG ##
|
||||
############
|
||||
if(BUILD_glog)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
glog
|
||||
REPOSITORY
|
||||
"https://github.com/google/glog.git"
|
||||
TAG
|
||||
"v0.4.0"
|
||||
CMAKE_ARGS
|
||||
-DWITH_GFLAGS:BOOL=OFF
|
||||
)
|
||||
endif()
|
||||
|
||||
################
|
||||
## Protobuf ##
|
||||
################
|
||||
if(BUILD_Protobuf)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
Protobuf
|
||||
REPOSITORY
|
||||
"https://github.com/protocolbuffers/protobuf.git"
|
||||
TAG
|
||||
"v3.7.1"
|
||||
CMAKE_ARGS
|
||||
"SOURCE_SUBDIR cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
#################
|
||||
## Coinutils ##
|
||||
#################
|
||||
if(BUILD_CoinUtils)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
CoinUtils
|
||||
REPOSITORY
|
||||
"https://github.com/Mizux/CoinUtils.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
|
||||
###########
|
||||
## Osi ##
|
||||
###########
|
||||
if(BUILD_Osi)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
Osi
|
||||
REPOSITORY
|
||||
"https://github.com/Mizux/Osi.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
|
||||
###########
|
||||
## Clp ##
|
||||
###########
|
||||
if(BUILD_Clp)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
Clp
|
||||
REPOSITORY
|
||||
"https://github.com/Mizux/Clp.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
|
||||
###########
|
||||
## Cgl ##
|
||||
###########
|
||||
if(BUILD_Cgl)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
Cgl
|
||||
REPOSITORY
|
||||
"https://github.com/Mizux/Cgl.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
|
||||
###########
|
||||
## Cbc ##
|
||||
###########
|
||||
if(BUILD_Cbc)
|
||||
build_git_dependency(
|
||||
NAME
|
||||
Cbc
|
||||
REPOSITORY
|
||||
"https://github.com/Mizux/Cbc.git"
|
||||
TAG
|
||||
"master"
|
||||
)
|
||||
endif()
|
||||
43
cmake/dependencies/CMakeLists.txt.in
Normal file
43
cmake/dependencies/CMakeLists.txt.in
Normal file
@@ -0,0 +1,43 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(@GIT_DEP_NAME@ NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(${PROJECT_NAME}_project
|
||||
TMP_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/tmp"
|
||||
STAMP_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/stamp"
|
||||
DOWNLOAD_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/download"
|
||||
SOURCE_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/source"
|
||||
BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/build"
|
||||
|
||||
GIT_REPOSITORY "@GIT_DEP_REPOSITORY@"
|
||||
GIT_TAG "@GIT_DEP_TAG@"
|
||||
LOG_DOWNLOAD FALSE
|
||||
|
||||
# UPDATE_COMMAND ""
|
||||
LOG_UPDATE FALSE
|
||||
|
||||
PATCH_COMMAND @PATCH_CMD@
|
||||
#LOG_PATCH FALSE
|
||||
|
||||
# CONFIGURE_COMMAND ""
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_PREFIX_PATH=@CMAKE_CURRENT_BINARY_DIR@/install
|
||||
-DCMAKE_INSTALL_PREFIX=@CMAKE_CURRENT_BINARY_DIR@/install
|
||||
-DCMAKE_BUILD_TYPE=@CMAKE_BUILD_TYPE@
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
@GIT_DEP_CMAKE_ARGS@
|
||||
LOG_CONFIGURE FALSE
|
||||
|
||||
# BUILD_COMMAND ""
|
||||
LOG_BUILD FALSE
|
||||
|
||||
# INSTALL_COMMAND ""
|
||||
LOG_INSTALL FALSE
|
||||
|
||||
TEST_COMMAND ""
|
||||
LOG_TEST FALSE
|
||||
)
|
||||
34
cmake/dependencies/SWIG.CMakeLists.txt.in
Normal file
34
cmake/dependencies/SWIG.CMakeLists.txt.in
Normal file
@@ -0,0 +1,34 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(SWIG NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(SWIG_project
|
||||
TMP_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/tmp"
|
||||
STAMP_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/stamp"
|
||||
DOWNLOAD_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/download"
|
||||
SOURCE_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/source"
|
||||
BUILD_IN_SOURCE 1
|
||||
|
||||
URL "https://superb-dca2.dl.sourceforge.net/project/swig/swigwin/swigwin-3.0.12/swigwin-3.0.12.zip"
|
||||
LOG_DOWNLOAD TRUE
|
||||
|
||||
UPDATE_COMMAND ""
|
||||
LOG_UPDATE TRUE
|
||||
|
||||
PATCH_COMMAND ""
|
||||
LOG_PATCH TRUE
|
||||
|
||||
CONFIGURE_COMMAND ""
|
||||
LOG_CONFIGURE TRUE
|
||||
|
||||
BUILD_COMMAND ""
|
||||
LOG_BUILD TRUE
|
||||
|
||||
INSTALL_COMMAND ""
|
||||
LOG_INSTALL TRUE
|
||||
|
||||
TEST_COMMAND ""
|
||||
LOG_TEST TRUE
|
||||
)
|
||||
@@ -4,3 +4,7 @@ endif()
|
||||
|
||||
find_package(SWIG)
|
||||
find_program (DOTNET_CLI NAMES dotnet)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/dotnet)
|
||||
endif()
|
||||
|
||||
228
cmake/external/CMakeLists.txt
vendored
228
cmake/external/CMakeLists.txt
vendored
@@ -1,228 +0,0 @@
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# Force dependencies to be built as static
|
||||
set(BUILD_SHARED_BCKP ${BUILD_SHARED_LIBS})
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
# Disable test rules for dependencies
|
||||
set(BUILD_TESTING OFF)
|
||||
|
||||
# Build Dependencies
|
||||
#file(READ ${PROJECT_SOURCE_DIR}/Dependencies.txt _Dependency_file)
|
||||
#foreach(DEPENDENCY Protobuf gflags glog)
|
||||
# string(REGEX REPLACE ".*${DEPENDENCY} = ([0-9.]+).*" "\\1" ${DEPENDENCY}_VERSION ${_Dependency_file})
|
||||
#endforeach()
|
||||
|
||||
####################
|
||||
## SWIG (WIN32) ##
|
||||
####################
|
||||
if(WIN32 AND (BUILD_PYTHON OR BUILD_JAVA OR BUILD_CSHARP))
|
||||
message(STATUS "Adding CMake Subproject: Swig...")
|
||||
# Download and unpack swig at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_LIST_DIR}/swig.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/swig-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/swig-download )
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for swig failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/swig-download )
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for swig failed: ${result}")
|
||||
endif()
|
||||
|
||||
set(SWIG_EXECUTABLE ${CMAKE_BINARY_DIR}/swig/swig.exe
|
||||
CACHE INTERNAL "swig.exe location" FORCE)
|
||||
message(STATUS "Adding CMake Subproject: Swig...DONE")
|
||||
endif()
|
||||
|
||||
##############
|
||||
## GFLAGS ##
|
||||
##############
|
||||
if(NOT TARGET gflags::gflags)
|
||||
message(STATUS "Target gflags::gflags not found.")
|
||||
message(STATUS "Adding CMake Subproject: Gflags...")
|
||||
# Download and unpack gflags at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gflags.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/gflags-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gflags-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for gflags failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gflags-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for gflags failed: ${result}")
|
||||
endif()
|
||||
|
||||
set(GFLAGS_NAMESPACE "gflags")
|
||||
set(GFLAGS_INSTALL_HEADERS ON)
|
||||
set(GFLAGS_BUILD_SHARED_LIBS OFF)
|
||||
set(GFLAGS_INSTALL_SHARED_LIBS OFF)
|
||||
set(GFLAGS_BUILD_STATIC_LIBS ON)
|
||||
set(GFLAGS_INSTALL_STATIC_LIBS ON)
|
||||
#set(GFLAGS_IS_SUBPROJECT TRUE)
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/gflags-src
|
||||
${CMAKE_BINARY_DIR}/gflags-build)
|
||||
message(STATUS "Adding CMake Subproject: Gflag...DONE")
|
||||
endif()
|
||||
|
||||
############
|
||||
## GLOG ##
|
||||
############
|
||||
if(NOT TARGET glog::glog)
|
||||
message(STATUS "Target glog::glog not found.")
|
||||
message(STATUS "Adding CMake Subproject: Glog...")
|
||||
# Download and unpack glog at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/glog.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/glog-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/glog-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for glog failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/glog-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for glog failed: ${result}")
|
||||
endif()
|
||||
|
||||
set(gflags_NAMESPACE "gflags" CACHE INTERNAL "Namespace for gflags")
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/glog-src
|
||||
${CMAKE_BINARY_DIR}/glog-build)
|
||||
message(STATUS "Adding CMake Subproject: Glog...DONE")
|
||||
endif()
|
||||
|
||||
############
|
||||
## ZLIB ##
|
||||
############
|
||||
if(NOT TARGET ZLIB::ZLIB)
|
||||
message(STATUS "Target ZLIB::ZLIB not found.")
|
||||
message(STATUS "Adding CMake Subproject: ZLIB...")
|
||||
# Download and unpack zlib at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/zlib.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/zlib-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/zlib-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for zlib failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/zlib-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for zlib failed: ${result}")
|
||||
endif()
|
||||
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/zlib-src
|
||||
${CMAKE_BINARY_DIR}/zlib-build)
|
||||
message(STATUS "Adding CMake Subproject: ZLIB...DONE")
|
||||
endif()
|
||||
|
||||
################
|
||||
## PROTOBUF ##
|
||||
################
|
||||
if(NOT TARGET protobuf::libprotobuf OR NOT TARGET protobuf::protoc)
|
||||
message(STATUS "Target protobuf::libprotobuf or protobuf::protoc not found.")
|
||||
message(STATUS "Adding CMake Subproject: Protobuf...")
|
||||
# Download and unpack protobuf at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/protobuf.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/protobuf-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/protobuf-download )
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for protobuf failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/protobuf-download )
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for protobuf failed: ${result}")
|
||||
endif()
|
||||
|
||||
set(protobuf_BUILD_TESTS OFF CACHE INTERNAL "Disable Protobuf tests")
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/protobuf-src/cmake
|
||||
${CMAKE_BINARY_DIR}/protobuf-build)
|
||||
message(STATUS "Adding CMake Subproject: Protobuf...DONE")
|
||||
endif()
|
||||
|
||||
##############
|
||||
## ABSEIL ##
|
||||
##############
|
||||
if(NOT TARGET absl::base)
|
||||
message(STATUS "Target absl::base not found.")
|
||||
message(STATUS "Adding CMake Subproject: Abseil...")
|
||||
# Download and unpack abseil at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/abseil.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/abseil-cpp-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for abseil failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/abseil-cpp-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for abseil failed: ${result}")
|
||||
endif()
|
||||
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/abseil-cpp-src
|
||||
${CMAKE_BINARY_DIR}/abseil-cpp-build)
|
||||
message(STATUS "Adding CMake Subproject: Abseil...DONE")
|
||||
endif()
|
||||
|
||||
###########
|
||||
## CBC ##
|
||||
###########
|
||||
if(NOT TARGET Cbc::CbcSolver OR NOT TARGET Cbc::ClpSolver)
|
||||
message(STATUS "Target Cbc::CbcSolver or Cbc::ClpSolver not found.")
|
||||
message(STATUS "Adding CMake Subproject: Cbc...")
|
||||
# Download and unpack cbc at configure time
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cbc.CMakeLists.txt
|
||||
${CMAKE_BINARY_DIR}/cbc-download/CMakeLists.txt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/cbc-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for cbc failed: ${result}")
|
||||
endif()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/cbc-download)
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for cbc failed: ${result}")
|
||||
endif()
|
||||
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/cbc-src
|
||||
${CMAKE_BINARY_DIR}/cbc-build)
|
||||
message(STATUS "Adding CMake Subproject: Cbc...DONE")
|
||||
endif()
|
||||
|
||||
# Reapply previous state
|
||||
set(BUILD_SHARED_LIBS ${BUILD_SHARED_BCKP})
|
||||
22
cmake/external/abseil.CMakeLists.txt
vendored
22
cmake/external/abseil.CMakeLists.txt
vendored
@@ -1,22 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(abseil-cpp-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(abseil-cpp_project
|
||||
GIT_REPOSITORY https://github.com/abseil/abseil-cpp
|
||||
GIT_TAG "bf29470"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/abseil-cpp-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/abseil-cpp-build"
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/abseil-cpp-bf29470.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
22
cmake/external/cbc.CMakeLists.txt
vendored
22
cmake/external/cbc.CMakeLists.txt
vendored
@@ -1,22 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(cbc-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(cbc_project
|
||||
GIT_REPOSITORY https://github.com/Mizux/coinor-cbc
|
||||
GIT_TAG "097659fae0c9ce690e4108ad1fed1541488d083d"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/cbc-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/cbc-build"
|
||||
UPDATE_COMMAND ""
|
||||
#PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/cbc.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
22
cmake/external/gflags.CMakeLists.txt
vendored
22
cmake/external/gflags.CMakeLists.txt
vendored
@@ -1,22 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(gflags-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(gflags_project
|
||||
GIT_REPOSITORY https://github.com/gflags/gflags
|
||||
GIT_TAG "v2.2.2"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/gflags-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/gflags-build"
|
||||
UPDATE_COMMAND ""
|
||||
#PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/gflags-2.2.1.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
23
cmake/external/glog.CMakeLists.txt
vendored
23
cmake/external/glog.CMakeLists.txt
vendored
@@ -1,23 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(glog-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(glog_project
|
||||
GIT_REPOSITORY https://github.com/google/glog
|
||||
GIT_TAG "55cc27b6eca3d7906fc1a920ca95df7717deb4e7"
|
||||
#GIT_TAG "v0.3.5"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/glog-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/glog-build"
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/glog.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
22
cmake/external/protobuf.CMakeLists.txt
vendored
22
cmake/external/protobuf.CMakeLists.txt
vendored
@@ -1,22 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(protobuf-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(protobuf_project
|
||||
GIT_REPOSITORY https://github.com/google/protobuf
|
||||
GIT_TAG "v3.7.1"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/protobuf-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/protobuf-build"
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/protobuf-3.7.1.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
18
cmake/external/swig.CMakeLists.txt
vendored
18
cmake/external/swig.CMakeLists.txt
vendored
@@ -1,18 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(swig-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(SWIG_project
|
||||
URL "https://superb-dca2.dl.sourceforge.net/project/swig/swigwin/swigwin-3.0.12/swigwin-3.0.12.zip"
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/swig"
|
||||
UPDATE_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
LOG_CONFIGURE ON
|
||||
LOG_BUILD ON
|
||||
)
|
||||
22
cmake/external/zlib.CMakeLists.txt
vendored
22
cmake/external/zlib.CMakeLists.txt
vendored
@@ -1,22 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# simplify variable expansion
|
||||
cmake_policy(SET CMP0053 NEW)
|
||||
cmake_policy(SET CMP0010 NEW)
|
||||
|
||||
project(zlib-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(zlib_project
|
||||
GIT_REPOSITORY "https://github.com/madler/zlib.git"
|
||||
GIT_TAG "v1.2.11"
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/zlib-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/zlib-build"
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND git apply "${PROJECT_SOURCE_DIR}/patches/zlib.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
@@ -9,3 +9,7 @@ find_package(JNI REQUIRED)
|
||||
if(NOT TARGET ortools::ortools)
|
||||
message(FATAL_ERROR "Java: missing ortools TARGET")
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(examples/java)
|
||||
endif()
|
||||
|
||||
@@ -4,12 +4,51 @@ set(@PACKAGE_PREFIX@_VERSION @PROJECT_VERSION@)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include (CMakeFindDependencyMacro)
|
||||
include(CMakeFindDependencyMacro)
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.9.6")
|
||||
if(NOT ZLIB_FOUND)
|
||||
find_dependency(ZLIB REQUIRED)
|
||||
endif()
|
||||
if(NOT absl_FOUND)
|
||||
find_dependency(absl REQUIRED)
|
||||
endif()
|
||||
if(NOT gflags_FOUND)
|
||||
find_dependency(gflags REQUIRED)
|
||||
endif()
|
||||
if(NOT glog_FOUND)
|
||||
find_dependency(glog REQUIRED)
|
||||
endif()
|
||||
if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND)
|
||||
find_dependency(Protobuf REQUIRED)
|
||||
endif()
|
||||
if(NOT Clp_FOUND)
|
||||
find_dependency(Clp REQUIRED)
|
||||
endif()
|
||||
if(NOT Cbc_FOUND)
|
||||
find_dependency(Cbc REQUIRED)
|
||||
endif()
|
||||
else()
|
||||
if(NOT ZLIB_FOUND)
|
||||
find_dependency(ZLIB REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT absl_FOUND)
|
||||
find_dependency(absl REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT gflags_FOUND)
|
||||
find_dependency(gflags REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT glog_FOUND)
|
||||
find_dependency(glog REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT Protobuf_FOUND AND NOT PROTOBUF_FOUND)
|
||||
find_dependency(Protobuf REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT Clp_FOUND)
|
||||
find_dependency(Clp REQUIRED CONFIG)
|
||||
endif()
|
||||
if(NOT Cbc_FOUND)
|
||||
find_dependency(Cbc REQUIRED CONFIG)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_dependency(ZLIB REQUIRED NO_MODULE)
|
||||
find_dependency(gflags REQUIRED NO_MODULE)
|
||||
find_dependency(glog REQUIRED NO_MODULE)
|
||||
find_dependency(Protobuf REQUIRED NO_MODULE)
|
||||
find_dependency(Cbc REQUIRED NO_MODULE)
|
||||
|
||||
include ("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
|
||||
@@ -198,4 +198,7 @@ if(BUILD_TESTING)
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
# run the tests within the virtualenv
|
||||
add_test(pytest_venv ${VENV_BIN_DIR}/python ${VENV_DIR}/test.py)
|
||||
|
||||
add_subdirectory(examples/python)
|
||||
add_subdirectory(examples/notebook)
|
||||
endif()
|
||||
|
||||
@@ -61,3 +61,67 @@ function(check_target my_target)
|
||||
CMake target in your project, see CMake/README.md for more details")
|
||||
endif(NOT TARGET ${my_target})
|
||||
endfunction()
|
||||
|
||||
|
||||
# build_git_dependency()
|
||||
#
|
||||
# CMake function to download, build and install (in staging area) a dependency at configure
|
||||
# time.
|
||||
#
|
||||
# Parameters:
|
||||
# NAME: name of the dependency
|
||||
# REPOSITORY: git url of the dependency
|
||||
# TAG: tag of the dependency
|
||||
# APPLY_PATCH: apply patch
|
||||
# CMAKE_ARGS: List of specific CMake args to add
|
||||
#
|
||||
# build_dependency(
|
||||
# NAME
|
||||
# abseil-cpp
|
||||
# URL
|
||||
# https://github.com/abseil/abseil-cpp.git
|
||||
# TAG
|
||||
# master
|
||||
# APPLY_PATCH
|
||||
# ${CMAKE_SOURCE_DIR}/patches/abseil-cpp.patch
|
||||
# )
|
||||
function(build_git_dependency)
|
||||
set(options "")
|
||||
set(oneValueArgs NAME REPOSITORY TAG APPLY_PATCH)
|
||||
set(multiValueArgs CMAKE_ARGS)
|
||||
cmake_parse_arguments(GIT_DEP
|
||||
"${options}"
|
||||
"${oneValueArgs}"
|
||||
"${multiValueArgs}"
|
||||
${ARGN}
|
||||
)
|
||||
message(STATUS "Building ${GIT_DEP_NAME}: ...")
|
||||
|
||||
if(GIT_DEP_APPLY_PATCH)
|
||||
set(PATCH_CMD "git apply \"${GIT_DEP_APPLY_PATCH}\"")
|
||||
else()
|
||||
set(PATCH_CMD "\"\"")
|
||||
endif()
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${GIT_DEP_NAME}/CMakeLists.txt @ONLY)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -H. -Bproject_build -G "${CMAKE_GENERATOR}"
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${GIT_DEP_NAME})
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for ${GIT_DEP_NAME} failed: ${result}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build project_build --config ${CMAKE_BUILD_TYPE}
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${GIT_DEP_NAME})
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for ${GIT_DEP_NAME} failed: ${result}")
|
||||
endif()
|
||||
|
||||
message(STATUS "Building ${GIT_DEP_NAME}: ...DONE")
|
||||
endfunction()
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ endif()
|
||||
|
||||
get_filename_component(PARENT_SOURCE_DIR ${PROJECT_SOURCE_DIR} DIRECTORY)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
foreach(EXECUTABLE
|
||||
costas_array_sat
|
||||
cvrp_disjoint_tw
|
||||
|
||||
@@ -16,7 +16,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::base absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -28,7 +27,6 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:ZLIB::ZLIB,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -38,7 +36,6 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -49,7 +46,6 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
@@ -57,6 +53,5 @@ add_dependencies(${NAME}
|
||||
absl::base absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::base ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::memory absl::synchronization absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -26,7 +25,6 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -35,7 +33,6 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -45,13 +42,11 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::memory absl::synchronization absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::bop ALIAS ${NAME})
|
||||
|
||||
@@ -16,7 +16,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::base absl::memory absl::container absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -30,7 +29,6 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:ZLIB::ZLIB,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -42,7 +40,6 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -55,7 +52,6 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
@@ -63,6 +59,5 @@ add_dependencies(${NAME}
|
||||
absl::base absl::memory absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::constraint_solver ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::strings
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -24,14 +23,12 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::strings,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -39,13 +36,11 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::strings
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::data ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::memory absl::container absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -27,7 +26,6 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -37,7 +35,6 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -48,13 +45,11 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::memory absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::glop ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,7 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::hash absl::meta absl::memory absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# Coin::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -28,7 +28,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::hash,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -39,7 +39,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -51,13 +51,13 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::hash absl::meta absl::memory absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::graph ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,7 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::memory absl::container absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# Coin::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -27,7 +27,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -37,7 +37,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -48,13 +48,13 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::memory absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::linear_solver ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::synchronization absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -26,7 +25,6 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::synchronization,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -35,7 +33,6 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -45,13 +42,11 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::synchronization absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::lp_data ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,6 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::strings
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -24,14 +23,12 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::strings,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -39,13 +36,11 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::strings
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::port ALIAS ${NAME})
|
||||
|
||||
@@ -15,7 +15,7 @@ set_target_properties(${NAME} PROPERTIES
|
||||
# absl::any absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
# gflags::gflags glog::glog
|
||||
# protobuf::libprotobuf
|
||||
# Cbc::Cbc
|
||||
# Coin::Cbc
|
||||
# ${PROJECT_NAME}::proto)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
@@ -29,7 +29,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::any,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -41,7 +41,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -54,13 +54,13 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Cbc::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::any absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Cbc::Cbc
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::sat ALIAS ${NAME})
|
||||
|
||||
210
patches/ZLIB.patch
Normal file
210
patches/ZLIB.patch
Normal file
@@ -0,0 +1,210 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 0fe939d..5f25cce 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1,24 +1,23 @@
|
||||
-cmake_minimum_required(VERSION 2.4.4)
|
||||
-set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
|
||||
+cmake_minimum_required(VERSION 2.8.12)
|
||||
+cmake_policy(SET CMP0048 NEW)
|
||||
+project(zlib VERSION 1.2.11.1 LANGUAGES C)
|
||||
|
||||
-project(zlib C)
|
||||
+option(ASM686 "Enable building i686 assembly implementation" OFF)
|
||||
+option(AMD64 "Enable building amd64 assembly implementation" OFF)
|
||||
|
||||
-set(VERSION "1.2.11")
|
||||
+include(GNUInstallDirs)
|
||||
+set(INSTALL_BIN_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH "Installation directory for executables")
|
||||
+set(INSTALL_LIB_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation directory for libraries")
|
||||
+set(INSTALL_INC_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE PATH "Installation directory for headers")
|
||||
|
||||
-option(ASM686 "Enable building i686 assembly implementation")
|
||||
-option(AMD64 "Enable building amd64 assembly implementation")
|
||||
-
|
||||
-set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
|
||||
-set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
|
||||
-set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
|
||||
-set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
|
||||
-set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
|
||||
+set(INSTALL_MAN_DIR "${CMAKE_INSTALL_MANDIR}" CACHE PATH "Installation directory for manual pages")
|
||||
+set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_DATADIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
|
||||
|
||||
include(CheckTypeSize)
|
||||
include(CheckFunctionExists)
|
||||
include(CheckIncludeFile)
|
||||
include(CheckCSourceCompiles)
|
||||
-enable_testing()
|
||||
+include(CTest)
|
||||
|
||||
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
||||
check_include_file(stdint.h HAVE_STDINT_H)
|
||||
@@ -63,7 +62,6 @@ if(MSVC)
|
||||
set(CMAKE_DEBUG_POSTFIX "d")
|
||||
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
|
||||
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
- include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
|
||||
@@ -83,7 +81,6 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
|
||||
${ZLIB_PC} @ONLY)
|
||||
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
|
||||
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
|
||||
-include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
|
||||
|
||||
|
||||
#============================================================================
|
||||
@@ -132,9 +129,9 @@ endif()
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
if(ASM686)
|
||||
set(ZLIB_ASMS contrib/asm686/match.S)
|
||||
- elseif (AMD64)
|
||||
+ elseif(AMD64)
|
||||
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
|
||||
- endif ()
|
||||
+ endif()
|
||||
|
||||
if(ZLIB_ASMS)
|
||||
add_definitions(-DASMV)
|
||||
@@ -143,20 +140,20 @@ if(CMAKE_COMPILER_IS_GNUCC)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
- if(ASM686)
|
||||
+ if(ASM686)
|
||||
ENABLE_LANGUAGE(ASM_MASM)
|
||||
- set(ZLIB_ASMS
|
||||
+ set(ZLIB_ASMS
|
||||
contrib/masmx86/inffas32.asm
|
||||
contrib/masmx86/match686.asm
|
||||
- )
|
||||
- elseif (AMD64)
|
||||
+ )
|
||||
+ elseif(AMD64)
|
||||
ENABLE_LANGUAGE(ASM_MASM)
|
||||
- set(ZLIB_ASMS
|
||||
+ set(ZLIB_ASMS
|
||||
contrib/masmx64/gvmat64.asm
|
||||
contrib/masmx64/inffasx64.asm
|
||||
- )
|
||||
- endif()
|
||||
-
|
||||
+ )
|
||||
+ # set(ZLIB_SRCS ${ZLIB_SRCS} contrib/masmx64/inffas8664.c)
|
||||
+ endif()
|
||||
if(ZLIB_ASMS)
|
||||
add_definitions(-DASMV -DASMINF)
|
||||
endif()
|
||||
@@ -184,9 +181,25 @@ if(MINGW)
|
||||
endif(MINGW)
|
||||
|
||||
add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
||||
+target_include_directories(zlib PUBLIC
|
||||
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||||
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
+ $<INSTALL_INTERFACE:include>)
|
||||
+set_target_properties(zlib PROPERTIES
|
||||
+ DEFINE_SYMBOL ZLIB_DLL
|
||||
+ SOVERSION 1)
|
||||
+
|
||||
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
|
||||
-set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
|
||||
-set_target_properties(zlib PROPERTIES SOVERSION 1)
|
||||
+target_include_directories(zlibstatic PUBLIC
|
||||
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||||
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
+ $<INSTALL_INTERFACE:include>)
|
||||
+
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ add_library(ZLIB::ZLIB ALIAS zlib)
|
||||
+else()
|
||||
+ add_library(ZLIB::ZLIB ALIAS zlibstatic)
|
||||
+endif()
|
||||
|
||||
if(NOT CYGWIN)
|
||||
# This property causes shared libraries on Linux to have the full version
|
||||
@@ -197,6 +210,7 @@ if(NOT CYGWIN)
|
||||
# This has no effect with MSVC, on that platform the version info for
|
||||
# the DLL comes from the resource file win32/zlib1.rc
|
||||
set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION})
|
||||
+ set_target_properties(zlibstatic PROPERTIES VERSION ${ZLIB_FULL_VERSION})
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -210,12 +224,30 @@ elseif(BUILD_SHARED_LIBS AND WIN32)
|
||||
set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
|
||||
endif()
|
||||
|
||||
-if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
|
||||
+#if(WIN32)
|
||||
+# add_definitions(-DZLIB_WINAPI)
|
||||
+#endif()
|
||||
+
|
||||
+if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
||||
install(TARGETS zlib zlibstatic
|
||||
- RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
|
||||
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
|
||||
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
|
||||
-endif()
|
||||
+ EXPORT ZLIBTargets
|
||||
+ RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
|
||||
+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
|
||||
+ LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
|
||||
+ install(EXPORT ZLIBTargets
|
||||
+ NAMESPACE ZLIB::
|
||||
+ DESTINATION lib/cmake/ZLIB)
|
||||
+ include(CMakePackageConfigHelpers)
|
||||
+ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake"
|
||||
+ VERSION ${PROJECT_VERSION}
|
||||
+ COMPATIBILITY SameMajorVersion)
|
||||
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake"
|
||||
+ "include(\"\${CMAKE_CURRENT_LIST_DIR}/ZLIBTargets.cmake\")"
|
||||
+ )
|
||||
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfig.cmake"
|
||||
+ "${CMAKE_CURRENT_BINARY_DIR}/ZLIBConfigVersion.cmake"
|
||||
+ DESTINATION lib/cmake/ZLIB)
|
||||
+ endif()
|
||||
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
|
||||
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
|
||||
endif()
|
||||
@@ -229,21 +261,22 @@ endif()
|
||||
#============================================================================
|
||||
# Example binaries
|
||||
#============================================================================
|
||||
-
|
||||
-add_executable(example test/example.c)
|
||||
-target_link_libraries(example zlib)
|
||||
-add_test(example example)
|
||||
-
|
||||
-add_executable(minigzip test/minigzip.c)
|
||||
-target_link_libraries(minigzip zlib)
|
||||
-
|
||||
-if(HAVE_OFF64_T)
|
||||
- add_executable(example64 test/example.c)
|
||||
- target_link_libraries(example64 zlib)
|
||||
- set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||
- add_test(example64 example64)
|
||||
-
|
||||
- add_executable(minigzip64 test/minigzip.c)
|
||||
- target_link_libraries(minigzip64 zlib)
|
||||
- set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||
+if(BUILD_TESTING)
|
||||
+ add_executable(example test/example.c)
|
||||
+ target_link_libraries(example zlib)
|
||||
+ add_test(example example)
|
||||
+
|
||||
+ add_executable(minigzip test/minigzip.c)
|
||||
+ target_link_libraries(minigzip zlib)
|
||||
+
|
||||
+ if(HAVE_OFF64_T)
|
||||
+ add_executable(example64 test/example.c)
|
||||
+ target_link_libraries(example64 zlib)
|
||||
+ set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||
+ add_test(example64 example64)
|
||||
+
|
||||
+ add_executable(minigzip64 test/minigzip.c)
|
||||
+ target_link_libraries(minigzip64 zlib)
|
||||
+ set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||
+ endif()
|
||||
endif()
|
||||
Reference in New Issue
Block a user