Remove tab from CMakeLists.txt
- Mandatory to follow google internal convention
This commit is contained in:
@@ -52,8 +52,8 @@ endif()
|
||||
include(CMakeDependentOption)
|
||||
option(BUILD_DEPS "Force re-build of all dependencies" ON)
|
||||
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_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
|
||||
|
||||
222
cmake/cpp.cmake
222
cmake/cpp.cmake
@@ -5,42 +5,42 @@ message(STATUS "ortools version: ${PROJECT_VERSION}")
|
||||
|
||||
# config options
|
||||
if(MSVC)
|
||||
# Allow big object
|
||||
add_definitions(/bigobj)
|
||||
add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_DEPRECATE)
|
||||
# Build with multiple processes
|
||||
add_definitions(/MP)
|
||||
# Prefer /MD over /MT and add NDEBUG in Release
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
add_definitions(/MDd)
|
||||
else()
|
||||
add_definitions(/MD /DNDEBUG)
|
||||
endif()
|
||||
# MSVC warning suppressions
|
||||
add_definitions(
|
||||
/wd4005 # 'macro-redefinition'
|
||||
/wd4018 # 'expression' : signed/unsigned mismatch
|
||||
/wd4065 # switch statement contains 'default' but no 'case' labels
|
||||
/wd4068 # 'unknown pragma'
|
||||
/wd4101 # 'identifier' : unreferenced local variable
|
||||
/wd4146 # unary minus operator applied to unsigned type, result still unsigned
|
||||
/wd4200 # nonstandard extension used : zero-sized array in struct/union
|
||||
/wd4244 # 'conversion' conversion from 'type1' to 'type2', possible loss of data
|
||||
/wd4251 # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
|
||||
/wd4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data
|
||||
/wd4305 # 'identifier' : truncation from 'type1' to 'type2'
|
||||
/wd4307 # 'operator' : integral constant overflow
|
||||
/wd4309 # 'conversion' : truncation of constant value
|
||||
/wd4334 # 'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
|
||||
/wd4355 # 'this' : used in base member initializer list
|
||||
/wd4477 # 'fwprintf' : format string '%s' requires an argument of type 'wchar_t *'
|
||||
/wd4506 # no definition for inline function 'function'
|
||||
/wd4715 # function' : not all control paths return a value
|
||||
/wd4800 # 'type' : forcing value to bool 'true' or 'false' (performance warning)
|
||||
/wd4996 # The compiler encountered a deprecated declaration.
|
||||
)
|
||||
# Allow big object
|
||||
add_definitions(/bigobj)
|
||||
add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_DEPRECATE)
|
||||
# Build with multiple processes
|
||||
add_definitions(/MP)
|
||||
# Prefer /MD over /MT and add NDEBUG in Release
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
add_definitions(/MDd)
|
||||
else()
|
||||
add_definitions(/MD /DNDEBUG)
|
||||
endif()
|
||||
# MSVC warning suppressions
|
||||
add_definitions(
|
||||
/wd4005 # 'macro-redefinition'
|
||||
/wd4018 # 'expression' : signed/unsigned mismatch
|
||||
/wd4065 # switch statement contains 'default' but no 'case' labels
|
||||
/wd4068 # 'unknown pragma'
|
||||
/wd4101 # 'identifier' : unreferenced local variable
|
||||
/wd4146 # unary minus operator applied to unsigned type, result still unsigned
|
||||
/wd4200 # nonstandard extension used : zero-sized array in struct/union
|
||||
/wd4244 # 'conversion' conversion from 'type1' to 'type2', possible loss of data
|
||||
/wd4251 # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
|
||||
/wd4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data
|
||||
/wd4305 # 'identifier' : truncation from 'type1' to 'type2'
|
||||
/wd4307 # 'operator' : integral constant overflow
|
||||
/wd4309 # 'conversion' : truncation of constant value
|
||||
/wd4334 # 'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
|
||||
/wd4355 # 'this' : used in base member initializer list
|
||||
/wd4477 # 'fwprintf' : format string '%s' requires an argument of type 'wchar_t *'
|
||||
/wd4506 # no definition for inline function 'function'
|
||||
/wd4715 # function' : not all control paths return a value
|
||||
/wd4800 # 'type' : forcing value to bool 'true' or 'false' (performance warning)
|
||||
/wd4996 # The compiler encountered a deprecated declaration.
|
||||
)
|
||||
else()
|
||||
add_definitions(-fwrapv)
|
||||
add_definitions(-fwrapv)
|
||||
endif()
|
||||
add_definitions(-DUSE_GLOP -DUSE_BOP -DUSE_CBC -DUSE_CLP)
|
||||
|
||||
@@ -52,10 +52,10 @@ find_package(Threads REQUIRED)
|
||||
add_library(${PROJECT_NAME} "")
|
||||
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
|
||||
if(NOT APPLE)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
|
||||
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})
|
||||
# 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)
|
||||
@@ -66,26 +66,26 @@ set_target_properties(${PROJECT_NAME} PROPERTIES INTERFACE_POSITION_INDEPENDENT_
|
||||
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)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INSTALL_RPATH
|
||||
"@loader_path")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INSTALL_RPATH
|
||||
"@loader_path")
|
||||
endif()
|
||||
target_include_directories(${PROJECT_NAME} INTERFACE
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
||||
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||
gflags::gflags glog::glog
|
||||
ZLIB::ZLIB protobuf::libprotobuf
|
||||
Cbc::CbcSolver Cbc::OsiCbc Cbc::ClpSolver Cbc::OsiClp
|
||||
Threads::Threads)
|
||||
gflags::gflags glog::glog
|
||||
ZLIB::ZLIB protobuf::libprotobuf
|
||||
Cbc::CbcSolver Cbc::OsiCbc Cbc::ClpSolver Cbc::OsiClp
|
||||
Threads::Threads)
|
||||
if(WIN32)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC psapi.lib ws2_32.lib)
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC __WIN32__)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC psapi.lib ws2_32.lib)
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC __WIN32__)
|
||||
endif()
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PUBLIC USE_BOP USE_GLOP USE_CBC USE_CLP)
|
||||
PUBLIC USE_BOP USE_GLOP USE_CBC USE_CLP)
|
||||
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
|
||||
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||
|
||||
@@ -97,31 +97,31 @@ file(GLOB_RECURSE proto_files RELATIVE ${PROJECT_SOURCE_DIR} "ortools/*.proto")
|
||||
# Get Protobuf include dir
|
||||
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}")
|
||||
if ("${dir}" MATCHES "BUILD_INTERFACE")
|
||||
list(APPEND PROTO_DIRS "--proto_path=${dir}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach (PROTO_FILE ${proto_files})
|
||||
#message(STATUS "protoc proto(cc): ${PROTO_FILE}")
|
||||
get_filename_component(PROTO_DIR ${PROTO_FILE} DIRECTORY)
|
||||
get_filename_component(PROTO_NAME ${PROTO_FILE} NAME_WE)
|
||||
set(PROTO_HDR ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}.pb.h)
|
||||
set(PROTO_SRC ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}.pb.cc)
|
||||
#message(STATUS "protoc hdr: ${PROTO_HDR}")
|
||||
#message(STATUS "protoc src: ${PROTO_SRC}")
|
||||
add_custom_command(
|
||||
OUTPUT ${PROTO_SRC} ${PROTO_HDR}
|
||||
COMMAND protobuf::protoc
|
||||
"--proto_path=${PROJECT_SOURCE_DIR}"
|
||||
"${PROTO_DIRS}"
|
||||
"--cpp_out=${PROJECT_BINARY_DIR}"
|
||||
${PROTO_FILE}
|
||||
DEPENDS ${PROTO_FILE} protobuf::protoc
|
||||
COMMENT "Running C++ protocol buffer compiler on ${PROTO_FILE}"
|
||||
VERBATIM)
|
||||
list(APPEND PROTO_HDRS ${PROTO_HDR})
|
||||
list(APPEND PROTO_SRCS ${PROTO_SRC})
|
||||
#message(STATUS "protoc proto(cc): ${PROTO_FILE}")
|
||||
get_filename_component(PROTO_DIR ${PROTO_FILE} DIRECTORY)
|
||||
get_filename_component(PROTO_NAME ${PROTO_FILE} NAME_WE)
|
||||
set(PROTO_HDR ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}.pb.h)
|
||||
set(PROTO_SRC ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}.pb.cc)
|
||||
#message(STATUS "protoc hdr: ${PROTO_HDR}")
|
||||
#message(STATUS "protoc src: ${PROTO_SRC}")
|
||||
add_custom_command(
|
||||
OUTPUT ${PROTO_SRC} ${PROTO_HDR}
|
||||
COMMAND protobuf::protoc
|
||||
"--proto_path=${PROJECT_SOURCE_DIR}"
|
||||
"${PROTO_DIRS}"
|
||||
"--cpp_out=${PROJECT_BINARY_DIR}"
|
||||
${PROTO_FILE}
|
||||
DEPENDS ${PROTO_FILE} protobuf::protoc
|
||||
COMMENT "Running C++ protocol buffer compiler on ${PROTO_FILE}"
|
||||
VERBATIM)
|
||||
list(APPEND PROTO_HDRS ${PROTO_HDR})
|
||||
list(APPEND PROTO_SRCS ${PROTO_SRC})
|
||||
endforeach()
|
||||
#add_library(${PROJECT_NAME}_proto STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
||||
add_library(${PROJECT_NAME}_proto OBJECT ${PROTO_SRCS} ${PROTO_HDRS})
|
||||
@@ -130,10 +130,10 @@ set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD 11)
|
||||
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD_REQUIRED ON)
|
||||
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_EXTENSIONS OFF)
|
||||
target_include_directories(${PROJECT_NAME}_proto PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
#target_link_libraries(${PROJECT_NAME}_proto PRIVATE protobuf::libprotobuf)
|
||||
add_dependencies(${PROJECT_NAME}_proto protobuf::libprotobuf)
|
||||
add_library(${PROJECT_NAME}::proto ALIAS ${PROJECT_NAME}_proto)
|
||||
@@ -143,12 +143,12 @@ target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}::proto>)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}::proto)
|
||||
|
||||
foreach(SUBPROJECT
|
||||
algorithms base bop constraint_solver data glop graph linear_solver lp_data
|
||||
port sat util)
|
||||
add_subdirectory(ortools/${SUBPROJECT})
|
||||
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}::${SUBPROJECT})
|
||||
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}::${SUBPROJECT}>)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}::${SUBPROJECT})
|
||||
algorithms base bop constraint_solver data glop graph linear_solver lp_data
|
||||
port sat util)
|
||||
add_subdirectory(ortools/${SUBPROJECT})
|
||||
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}::${SUBPROJECT})
|
||||
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}::${SUBPROJECT}>)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}::${SUBPROJECT})
|
||||
endforeach()
|
||||
|
||||
# Install rules
|
||||
@@ -157,44 +157,44 @@ include(GNUInstallDirs)
|
||||
include(GenerateExportHeader)
|
||||
GENERATE_EXPORT_HEADER(${PROJECT_NAME})
|
||||
install(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_export.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
install(EXPORT ${PROJECT_NAME}Targets
|
||||
NAMESPACE ${PROJECT_NAME}::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||
install(DIRECTORY ortools
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT Devel
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h")
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT Devel
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h")
|
||||
install(DIRECTORY ${PROJECT_BINARY_DIR}/ortools
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT Devel
|
||||
FILES_MATCHING
|
||||
PATTERN "*.pb.h"
|
||||
PATTERN CMakeFiles EXCLUDE)
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT Devel
|
||||
FILES_MATCHING
|
||||
PATTERN "*.pb.h"
|
||||
PATTERN CMakeFiles EXCLUDE)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
string (TOUPPER "${PROJECT_NAME}" PACKAGE_PREFIX)
|
||||
configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(
|
||||
FILES
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
COMPONENT Devel)
|
||||
FILES
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
COMPONENT Devel)
|
||||
|
||||
272
cmake/external/CMakeLists.txt
vendored
272
cmake/external/CMakeLists.txt
vendored
@@ -18,178 +18,178 @@ set(BUILD_TESTING OFF)
|
||||
## 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()
|
||||
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")
|
||||
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()
|
||||
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_STATIC_LIBS ON)
|
||||
set(GFLAGS_INSTALL_HEADERS 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")
|
||||
set(GFLAGS_NAMESPACE "gflags")
|
||||
set(GFLAGS_INSTALL_STATIC_LIBS ON)
|
||||
set(GFLAGS_INSTALL_HEADERS 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()
|
||||
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")
|
||||
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()
|
||||
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")
|
||||
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()
|
||||
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")
|
||||
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()
|
||||
|
||||
###########
|
||||
## 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()
|
||||
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")
|
||||
add_subdirectory(
|
||||
${CMAKE_BINARY_DIR}/cbc-src
|
||||
${CMAKE_BINARY_DIR}/cbc-build)
|
||||
message(STATUS "Adding CMake Subproject: Cbc...DONE")
|
||||
endif()
|
||||
|
||||
# Reapply previous state
|
||||
|
||||
22
cmake/external/cbc.CMakeLists.txt
vendored
22
cmake/external/cbc.CMakeLists.txt
vendored
@@ -8,15 +8,15 @@ project(cbc-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(cbc_project
|
||||
GIT_REPOSITORY https://github.com/Mizux/Cbc
|
||||
GIT_TAG "master"
|
||||
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
|
||||
GIT_REPOSITORY https://github.com/Mizux/Cbc
|
||||
GIT_TAG "master"
|
||||
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
@@ -8,15 +8,15 @@ project(gflags-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(gflags_project
|
||||
GIT_REPOSITORY https://github.com/gflags/gflags
|
||||
GIT_TAG "v2.2.1"
|
||||
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.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
GIT_REPOSITORY https://github.com/gflags/gflags
|
||||
GIT_TAG "v2.2.1"
|
||||
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.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
|
||||
24
cmake/external/glog.CMakeLists.txt
vendored
24
cmake/external/glog.CMakeLists.txt
vendored
@@ -8,16 +8,16 @@ 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
|
||||
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
@@ -8,15 +8,15 @@ project(protobuf-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(protobuf_project
|
||||
GIT_REPOSITORY https://github.com/google/protobuf
|
||||
GIT_TAG "v3.6.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.6.1.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
GIT_REPOSITORY https://github.com/google/protobuf
|
||||
GIT_TAG "v3.6.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.6.1.patch"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
LOG_DOWNLOAD ON
|
||||
)
|
||||
|
||||
23
cmake/external/swig.CMakeLists.txt
vendored
23
cmake/external/swig.CMakeLists.txt
vendored
@@ -4,16 +4,15 @@ 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
|
||||
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
@@ -8,15 +8,15 @@ 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
|
||||
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
|
||||
)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
if(NOT BUILD_PYTHON)
|
||||
return()
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT TARGET ortools::ortools)
|
||||
message(FATAL_ERROR "Python: missing ortools TARGET")
|
||||
message(FATAL_ERROR "Python: missing ortools TARGET")
|
||||
endif()
|
||||
|
||||
# Will need swig
|
||||
@@ -13,28 +13,28 @@ include(UseSWIG)
|
||||
# Generate Protobuf py sources
|
||||
set(PROTO_PYS)
|
||||
file(GLOB_RECURSE proto_py_files RELATIVE ${PROJECT_SOURCE_DIR}
|
||||
"ortools/constraint_solver/*.proto"
|
||||
"ortools/linear_solver/*.proto"
|
||||
"ortools/sat/*.proto"
|
||||
"ortools/util/*.proto"
|
||||
)
|
||||
"ortools/constraint_solver/*.proto"
|
||||
"ortools/linear_solver/*.proto"
|
||||
"ortools/sat/*.proto"
|
||||
"ortools/util/*.proto"
|
||||
)
|
||||
list(REMOVE_ITEM proto_py_files "ortools/constraint_solver/demon_profiler.proto")
|
||||
foreach(PROTO_FILE ${proto_py_files})
|
||||
#message(STATUS "protoc proto(py): ${PROTO_FILE}")
|
||||
get_filename_component(PROTO_DIR ${PROTO_FILE} DIRECTORY)
|
||||
get_filename_component(PROTO_NAME ${PROTO_FILE} NAME_WE)
|
||||
set(PROTO_PY ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}_pb2.py)
|
||||
#message(STATUS "protoc py: ${PROTO_PY}")
|
||||
add_custom_command(
|
||||
OUTPUT ${PROTO_PY}
|
||||
COMMAND protobuf::protoc
|
||||
"--proto_path=${PROJECT_SOURCE_DIR}"
|
||||
"--python_out=${PROJECT_BINARY_DIR}"
|
||||
${PROTO_FILE}
|
||||
DEPENDS ${PROTO_FILE} protobuf::protoc
|
||||
COMMENT "Running C++ protocol buffer compiler on ${PROTO_FILE}"
|
||||
VERBATIM)
|
||||
list(APPEND PROTO_PYS ${PROTO_PY})
|
||||
#message(STATUS "protoc proto(py): ${PROTO_FILE}")
|
||||
get_filename_component(PROTO_DIR ${PROTO_FILE} DIRECTORY)
|
||||
get_filename_component(PROTO_NAME ${PROTO_FILE} NAME_WE)
|
||||
set(PROTO_PY ${PROJECT_BINARY_DIR}/${PROTO_DIR}/${PROTO_NAME}_pb2.py)
|
||||
#message(STATUS "protoc py: ${PROTO_PY}")
|
||||
add_custom_command(
|
||||
OUTPUT ${PROTO_PY}
|
||||
COMMAND protobuf::protoc
|
||||
"--proto_path=${PROJECT_SOURCE_DIR}"
|
||||
"--python_out=${PROJECT_BINARY_DIR}"
|
||||
${PROTO_FILE}
|
||||
DEPENDS ${PROTO_FILE} protobuf::protoc
|
||||
COMMENT "Running C++ protocol buffer compiler on ${PROTO_FILE}"
|
||||
VERBATIM)
|
||||
list(APPEND PROTO_PYS ${PROTO_PY})
|
||||
endforeach()
|
||||
add_custom_target(Py${PROJECT_NAME}_proto DEPENDS ${PROTO_PYS} ortools::ortools)
|
||||
|
||||
@@ -48,7 +48,7 @@ enable_language(CXX)
|
||||
find_package(PythonLibs REQUIRED)
|
||||
|
||||
if(${PYTHON_VERSION_STRING} VERSION_GREATER 3)
|
||||
set(CMAKE_SWIG_FLAGS "-py3;-DPY3")
|
||||
set(CMAKE_SWIG_FLAGS "-py3;-DPY3")
|
||||
endif()
|
||||
|
||||
# CMake will remove all '-D' prefix (i.e. -DUSE_FOO become USE_FOO)
|
||||
@@ -57,7 +57,7 @@ set(FLAGS -DUSE_BOP -DUSE_GLOP -DUSE_CBC -DUSE_CLP -DMUST_USE_RESULT)
|
||||
list(APPEND CMAKE_SWIG_FLAGS ${FLAGS} "-I${PROJECT_SOURCE_DIR}")
|
||||
|
||||
foreach(SUBPROJECT constraint_solver linear_solver sat graph algorithms data)
|
||||
add_subdirectory(ortools/${SUBPROJECT}/python)
|
||||
add_subdirectory(ortools/${SUBPROJECT}/python)
|
||||
endforeach()
|
||||
|
||||
configure_file(${PROJECT_SOURCE_DIR}/ortools/__init__.py ${PROJECT_BINARY_DIR}/ortools/ COPYONLY)
|
||||
@@ -71,99 +71,99 @@ configure_file(${PROJECT_SOURCE_DIR}/ortools/__init__.py ${PROJECT_BINARY_DIR}/o
|
||||
configure_file(${PROJECT_SOURCE_DIR}/ortools/__init__.py ${PROJECT_BINARY_DIR}/ortools/data/ COPYONLY)
|
||||
|
||||
configure_file(${PROJECT_SOURCE_DIR}/ortools/linear_solver/linear_solver_natural_api.py
|
||||
${PROJECT_BINARY_DIR}/ortools/linear_solver/ COPYONLY)
|
||||
${PROJECT_BINARY_DIR}/ortools/linear_solver/ COPYONLY)
|
||||
configure_file(${PROJECT_SOURCE_DIR}/ortools/sat/python/cp_model.py
|
||||
${PROJECT_BINARY_DIR}/ortools/sat/python COPYONLY)
|
||||
${PROJECT_BINARY_DIR}/ortools/sat/python COPYONLY)
|
||||
configure_file(${PROJECT_SOURCE_DIR}/ortools/sat/python/visualization.py
|
||||
${PROJECT_BINARY_DIR}/ortools/sat/python COPYONLY)
|
||||
${PROJECT_BINARY_DIR}/ortools/sat/python COPYONLY)
|
||||
|
||||
# To use a cmake generator expression (aka $<>), it must be processed at build time
|
||||
# i.e. inside a add_custom_command()
|
||||
# This command will depend on TARGET(s) in cmake generator expression
|
||||
add_custom_command(OUTPUT setup.py dist ${PROJECT_NAME}.egg-info
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "from setuptools import dist, find_packages, setup" > setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "class BinaryDistribution(dist.Distribution):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def is_pure(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " return False" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def has_ext_modules(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " return True" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "from setuptools.command.install import install" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "class InstallPlatlib(install):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def finalize_options(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " install.finalize_options(self)" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " self.install_lib=self.install_platlib" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "setup(" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " name='ortools'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " license='Apache 2.0'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " version='${PROJECT_VERSION}'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " author='Google Inc'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " author_email='lperron@google.com'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " description='Google OR-Tools python libraries and modules'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " long_description='read(README.txt)'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " keywords=('operations research' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', constraint programming' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', linear programming' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', flow algoritms' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', python')," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " url='https://developers.google.com/optimization/'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " download_url='https://github.com/google/or-tools/releases'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " distclass=BinaryDistribution," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " cmdclass={'install': InstallPlatlib}," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " packages=find_packages()," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " package_data={" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools':[$<$<NOT:$<PLATFORM_ID:Windows>>:'.libs/*', '../$<TARGET_SONAME_FILE_NAME:ortools>'>]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.constraint_solver':['$<TARGET_FILE_NAME:_pywrapcp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.linear_solver':['$<TARGET_FILE_NAME:_pywraplp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.sat':['$<TARGET_FILE_NAME:_pywrapsat>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.graph':['$<TARGET_FILE_NAME:_pywrapgraph>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.algorithms':['$<TARGET_FILE_NAME:_pywrapknapsack_solver>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.data':['$<TARGET_FILE_NAME:_pywraprcpsp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " }," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " include_package_data=True," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " install_requires=[" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'protobuf >= ${Protobuf_VERSION}'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'six >= 1.10'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " classifiers=[" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Development Status :: 5 - Production/Stable'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Intended Audience :: Developers'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'License :: OSI Approved :: Apache Software License'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: POSIX :: Linux'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: MacOS :: MacOS X'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: Microsoft :: Windows'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 2'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 2.7'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3.5'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3.6'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Office/Business :: Scheduling'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Scientific/Engineering'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Scientific/Engineering :: Mathematics'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Software Development :: Libraries :: Python Modules'" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo ")" >> setup.py
|
||||
VERBATIM)
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "from setuptools import dist, find_packages, setup" > setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "class BinaryDistribution(dist.Distribution):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def is_pure(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " return False" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def has_ext_modules(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " return True" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "from setuptools.command.install import install" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "class InstallPlatlib(install):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " def finalize_options(self):" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " install.finalize_options(self)" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " self.install_lib=self.install_platlib" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "setup(" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " name='ortools'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " license='Apache 2.0'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " version='${PROJECT_VERSION}'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " author='Google Inc'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " author_email='lperron@google.com'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " description='Google OR-Tools python libraries and modules'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " long_description='read(README.txt)'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " keywords=('operations research' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', constraint programming' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', linear programming' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', flow algoritms' +" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ', python')," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " url='https://developers.google.com/optimization/'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " download_url='https://github.com/google/or-tools/releases'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " distclass=BinaryDistribution," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " cmdclass={'install': InstallPlatlib}," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " packages=find_packages()," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " package_data={" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools':[$<$<NOT:$<PLATFORM_ID:Windows>>:'.libs/*', '../$<TARGET_SONAME_FILE_NAME:ortools>'>]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.constraint_solver':['$<TARGET_FILE_NAME:_pywrapcp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.linear_solver':['$<TARGET_FILE_NAME:_pywraplp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.sat':['$<TARGET_FILE_NAME:_pywrapsat>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.graph':['$<TARGET_FILE_NAME:_pywrapgraph>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.algorithms':['$<TARGET_FILE_NAME:_pywrapknapsack_solver>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'ortools.data':['$<TARGET_FILE_NAME:_pywraprcpsp>']," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " }," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " include_package_data=True," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " install_requires=[" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'protobuf >= ${Protobuf_VERSION}'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'six >= 1.10'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " classifiers=[" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Development Status :: 5 - Production/Stable'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Intended Audience :: Developers'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'License :: OSI Approved :: Apache Software License'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: POSIX :: Linux'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: MacOS :: MacOS X'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Operating System :: Microsoft :: Windows'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 2'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 2.7'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3.5'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Programming Language :: Python :: 3.6'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Office/Business :: Scheduling'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Scientific/Engineering'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Scientific/Engineering :: Mathematics'," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " 'Topic :: Software Development :: Libraries :: Python Modules'" >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " ]," >> setup.py
|
||||
COMMAND ${CMAKE_COMMAND} -E echo ")" >> setup.py
|
||||
VERBATIM)
|
||||
|
||||
function(search_python_module MODULE_NAME)
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "import ${MODULE_NAME}; print(${MODULE_NAME}.__version__)"
|
||||
RESULT_VARIABLE _RESULT
|
||||
OUTPUT_VARIABLE MODULE_VERSION
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(${_RESULT} STREQUAL "0")
|
||||
message(STATUS "Found python module: ${MODULE_NAME} (found version \"${MODULE_VERSION}\")")
|
||||
else()
|
||||
message(WARNING "Can't find python module \"${MODULE_NAME}\", install it using pip...")
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -m pip install --user ${MODULE_NAME}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "import ${MODULE_NAME}; print(${MODULE_NAME}.__version__)"
|
||||
RESULT_VARIABLE _RESULT
|
||||
OUTPUT_VARIABLE MODULE_VERSION
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(${_RESULT} STREQUAL "0")
|
||||
message(STATUS "Found python module: ${MODULE_NAME} (found version \"${MODULE_VERSION}\")")
|
||||
else()
|
||||
message(WARNING "Can't find python module \"${MODULE_NAME}\", install it using pip...")
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -m pip install --user ${MODULE_NAME}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Look for python module wheel
|
||||
@@ -171,31 +171,31 @@ search_python_module(wheel)
|
||||
|
||||
# Main Target
|
||||
add_custom_target(bdist ALL
|
||||
DEPENDS setup.py Py${PROJECT_NAME}_proto
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory dist
|
||||
COMMAND ${PYTHON_EXECUTABLE} setup.py bdist bdist_wheel
|
||||
)
|
||||
DEPENDS setup.py Py${PROJECT_NAME}_proto
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory dist
|
||||
COMMAND ${PYTHON_EXECUTABLE} setup.py bdist bdist_wheel
|
||||
)
|
||||
|
||||
# Test
|
||||
if(BUILD_TESTING)
|
||||
# Look for python module virtualenv
|
||||
search_python_module(virtualenv)
|
||||
# Testing using a vitual environment
|
||||
set(VENV_EXECUTABLE ${PYTHON_EXECUTABLE} -m virtualenv)
|
||||
set(VENV_DIR ${CMAKE_BINARY_DIR}/venv)
|
||||
if(WIN32)
|
||||
set(VENV_BIN_DIR "${VENV_DIR}\\Scripts")
|
||||
else()
|
||||
set(VENV_BIN_DIR ${VENV_DIR}/bin)
|
||||
endif()
|
||||
# make a virtualenv to install our python package in it
|
||||
add_custom_command(TARGET bdist POST_BUILD
|
||||
COMMAND ${VENV_EXECUTABLE} -p ${PYTHON_EXECUTABLE} ${VENV_DIR}
|
||||
COMMAND ${VENV_BIN_DIR}/python setup.py install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test.py.in
|
||||
${VENV_DIR}/test.py
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
# run the tests within the virtualenv
|
||||
add_test(pytest_venv ${VENV_BIN_DIR}/python ${VENV_DIR}/test.py)
|
||||
# Look for python module virtualenv
|
||||
search_python_module(virtualenv)
|
||||
# Testing using a vitual environment
|
||||
set(VENV_EXECUTABLE ${PYTHON_EXECUTABLE} -m virtualenv)
|
||||
set(VENV_DIR ${CMAKE_BINARY_DIR}/venv)
|
||||
if(WIN32)
|
||||
set(VENV_BIN_DIR "${VENV_DIR}\\Scripts")
|
||||
else()
|
||||
set(VENV_BIN_DIR ${VENV_DIR}/bin)
|
||||
endif()
|
||||
# make a virtualenv to install our python package in it
|
||||
add_custom_command(TARGET bdist POST_BUILD
|
||||
COMMAND ${VENV_EXECUTABLE} -p ${PYTHON_EXECUTABLE} ${VENV_DIR}
|
||||
COMMAND ${VENV_BIN_DIR}/python setup.py install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test.py.in
|
||||
${VENV_DIR}/test.py
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
# run the tests within the virtualenv
|
||||
add_test(pytest_venv ${VENV_BIN_DIR}/python ${VENV_DIR}/test.py)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user