Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/better find package #1019

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from 15 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ macro(find_package)
if(NOT TARGET ${ARGV0} AND NOT TARGET ${ARGV0}::${ARGV0})
_find_package(${ARGV})
else()
if(TARGET ${ARGV0})
if(${ARGV0}_FOUND)
set(TGT_VER ${${ARGV0}_VERSION})
set(TGT ${ARGV0})
elseif(TARGET ${ARGV0})
get_target_property(TGT_VER ${ARGV0} VERSION)
set(TGT ${ARGV0})
else()
Expand Down Expand Up @@ -66,8 +69,26 @@ message(STATUS "Build Java Binding: ${BUILD_JAVA}")
message(STATUS "Build .Net Binding: ${BUILD_DOTNET}")

# Add OR Tools Dependencies as CMake subproject if missing
if(BUILD_DEPS)
add_subdirectory(cmake/external external)
if(NOT Swig_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/SWIG)
endif()
if(NOT gflags_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/gflags)
endif()
if(NOT glog_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/glog)
endif()
if(NOT ZLIB_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/ZLIB)
endif()
if(NOT Protobuf_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/Protobuf)
endif()
if(NOT abseil_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/abseil)
Copy link
Collaborator

@Mizux Mizux Jan 29, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

abseil-cpp ? (I can also do it in a later commit)
just becaue there is also https://github.com/abseil/abseil-py and maybe we will need it one day too
note: shame on me of not doing it too ;)

endif()
if(NOT Cbc_DIR AND BUILD_DEPS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/external/Cbc)
endif()

if(BUILD_CXX)
Expand Down
114 changes: 113 additions & 1 deletion cmake/cpp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,124 @@ if(MSVC)
else()
add_definitions(-fwrapv)
endif()
add_definitions(-DUSE_GLOP -DUSE_BOP -DUSE_CBC -DUSE_CLP)

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)

# Since it is not possible to ALIAS an already aliased target, this macro get
# the real target name of an aliased target and create a new alias
macro(alias_target target_to_aliased alias_name)
get_target_property(alias_TARGET ${target_to_aliased} ALIASED_TARGET)
if (NOT ${alias_TARGET})
# The target was not an alias so we can use it !
set(alias_TARGET ${target_to_aliased})
endif()
add_library(${alias_name} ALIAS ${alias_TARGET})
endmacro()

########
# Swig #
########

if(WIN32 AND (BUILD_PYTHON OR BUILD_JAVA OR BUILD_CSHARP))
find_package(Swig REQUIRED)
endif()

##########
# gflags #
##########

find_package(gflags REQUIRED)

if(NOT TARGET gflags::gflags)
if(TARGET gflags)
alias_target(gflags gflags::gflags)
else()
message(FATAL_ERROR "Cannot find target gflags::gflags")
endif()
endif()

########
# glog #
########

find_package(glog REQUIRED)

if(NOT TARGET glog::glog)
if(TARGET glog)
alias_target(glog glog::glog)
else()
message(FATAL_ERROR "Cannot find target glog::glog")
endif()
endif()

########
# ZLIB #
########

find_package(ZLIB REQUIRED)

if(NOT TARGET ZLIB::ZLIB)
if(TARGET zlib)
add_library(ZLIB::ZLIB ALIAS zlib)
elseif(TARGET zlibstatic)
add_library(ZLIB::ZLIB ALIAS zlibstatic)
else()
message(FATAL_ERROR "Cannot find target ZLIB::ZLIB")
endif()
endif()

############
# Protobuf #
############

find_package(Protobuf REQUIRED)

# By default, not present until CMake v3.9
if(NOT TARGET protobuf::libprotobuf)
if(TARGET libprotobuf)
add_library(protobuf::libprotobuf ALIAS libprotobuf)
else()
message(FATAL_ERROR "Cannot find target protobuf::libprotobuf")
endif()
endif()

# By default, not present until CMake v3.10
if(NOT TARGET protobuf::protoc)
if(TARGET protoc)
add_library(protobuf::protoc ALIAS protoc)
else()
message(FATAL_ERROR "Cannot find target protobuf::protoc")
endif()
endif()

##########
# abseil #
##########

find_package(abseil REQUIRED)

#######
# Cbc #
#######

find_package(Cbc REQUIRED)

# Reapply previous state
set(BUILD_SHARED_LIBS ${BUILD_SHARED_BCKP})

# Verify Dependencies
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)

add_definitions(-DUSE_GLOP -DUSE_BOP -DUSE_CBC -DUSE_CLP)

# Main Target
add_library(${PROJECT_NAME} "")
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
Expand Down
228 changes: 0 additions & 228 deletions cmake/external/CMakeLists.txt

This file was deleted.

Loading