Added cmake support for C++, initial python build support

This commit is contained in:
Amit Prakash Ambasta
2017-05-29 18:18:00 +05:30
parent 79a6d2b87e
commit 2a12468b93
18 changed files with 575 additions and 0 deletions

77
CMakeLists.txt Normal file
View File

@@ -0,0 +1,77 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
PROJECT(or_tools LANGUAGES CXX)
SET(CMAKE_CXX_STANDARD 17)
INCLUDE(FindPkgConfig)
IF(UNIX)
IF(NOT APPLE)
INCLUDE(GNUInstallDirs)
ENDIF()
ENDIF()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG")
IF(BUILD_PYTHON)
SET(BUILD_CXX ON)
FIND_PACKAGE(PythonInterp)
FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
IF(PYTHON_VERSION_MAJOR GREATER_EQUAL 3)
SET(CMAKE_SWIG_FLAGS "${CMAKE_SWIG_FLAGS};-py3;-DPY3")
ENDIF()
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(cmake/UseSWIG.cmake)
ENDIF(BUILD_PYTHON)
IF(BUILD_CXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_GLOP -DUSE_BOP")
FIND_PACKAGE(Protobuf REQUIRED)
FIND_PACKAGE(Gflags REQUIRED)
PKG_CHECK_MODULES(CBC cbc)
IF(CBC_FOUND)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CBC_CFLAGS} -DUSE_CBC")
ENDIF(CBC_FOUND)
PKG_CHECK_MODULES(CLP clp)
IF(CLP_FOUND)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLP_CFLAGS} -DUSE_CLP")
ENDIF(CLP_FOUND)
INCLUDE_DIRECTORIES(.)
INCLUDE_DIRECTORIES(examples)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
SET(SUBTARGETS "")
FOREACH(SUBPROJECT base util lp_data glop graph algorithms sat bop linear_solver constraint_solver)
ADD_SUBDIRECTORY(ortools/${SUBPROJECT})
LIST(APPEND SUBTARGETS "$<TARGET_OBJECTS:${PROJECT_NAME}_${SUBPROJECT}>")
ENDFOREACH()
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SUBTARGETS})
INSTALL(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}_Exports
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
ADD_SUBDIRECTORY(examples/cpp)
ENDIF(BUILD_CXX)
IF(BUILD_PYTHON)
FOREACH(SUBPROJECT constraint_solver algorithms graph linear_solver)
ADD_SUBDIRECTORY(ortools/${SUBPROJECT}/python)
ENDFOREACH(SUBPROJECT constraint_solver algorithms)
ENDIF(BUILD_PYTHON)
INSTALL(DIRECTORY ortools
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ortools
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.pb.h"
PATTERN CMakeFiles EXCLUDE)

239
cmake/UseSWIG.cmake Normal file
View File

@@ -0,0 +1,239 @@
SET(SWIG_CXX_EXTENSION cxx)
SET(SWIG_EXTRA_LIBRARIES "")
SET(SWIG_PYTHON_EXTRA_FILE_EXTENSIONS .py)
SET(SWIG_JAVA_EXTRA_FILE_EXTENSIONS .java JNI.java)
MACRO(SWIG_MODULE_INITIALIZE NAME LANGUAGE)
STRING(TOUPPER "${LANGUAGE}" SWIG_UPPERCASE_LANGUAGE)
STRING(TOLOWER "${LANGUAGE}" SWIG_LOWERCASE_LANGUAGE)
SET(SWIG_MODULE_${NAME}_LANGUAGE ${SWIG_UPPERCASE_LANGUAGE})
SET(SWIG_MODULE_${NAME}_SWIG_LANGUAGE_FLAG ${SWIG_LOWERCASE_LANGUAGE})
SET(SWIG_MODULE_${NAME}_REAL_NAME ${NAME})
IF(";${CMAKE_SWIG_FLAGS};" MATCHES ";-noproxy;")
SET(SWIG_MODULE_${NAME}_NOPROXY TRUE)
ENDIF()
IF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xUNKNOWN")
MESSAGE(FATAL_ERROR "SWIG Error: Language \"${LANGUAGE}\" not found")
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xPYTHON" AND NOT SWIG_MODULE_${NAME}_NOPROXY)
SET(SWIG_MODULE_${NAME}_REAL_NAME "_${NAME}")
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xPERL")
SET(SWIG_MODULE_${NAME}_EXTRA_FLAGS "-shadow")
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xCSHARP")
SET(SWIG_MODULE_${NAME}_EXTRA_FLAGS "-dllimport;${NAME}")
ENDIF()
ENDMACRO()
MACRO(SWIG_GET_EXTRA_OUTPUT_FILES LANGUAGE OUTFILES GENERATEDPATH INFILE)
SET(${OUTFILES} "")
GET_SOURCE_FILE_PROPERTY(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${INFILE} SWIG_MODULE_NAME)
IF(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename STREQUAL "NOTFOUND")
IF(EXISTS ${INFILE})
FILE(STRINGS ${INFILE} _MODULE_NAME REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*")
ENDIF()
IF(_MODULE_NAME)
STRING(REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}")
SET(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
ELSE()
IF(EXISTS ${INFILE})
FILE(STRINGS ${INFILE} _MODULE_NAME REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*")
ENDIF()
IF(_MODULE_NAME)
STRING(REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}")
SET(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
ELSE()
GET_FILENAME_COMPONENT(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${INFILE} NAME_WE)
ENDIF()
ENDIF()
ENDIF()
FOREACH(IT ${SWIG_${LANGUAGE}_EXTRA_FILE_EXTENSIONS})
SET(${OUTFILES} ${${OUTFILES}} "${GENERATEDPATH}/${SWIG_GET_EXTRA_OUTPUT_FILES_module_basename}${IT}")
ENDFOREACH()
ENDMACRO()
MACRO(SWIG_ADD_SOURCE_TO_MODULE NAME OUTFILES INFILE)
SET(SWIG_FULL_INFILE ${INFILE})
GET_FILENAME_COMPONENT(SWIG_SOURCE_FILE_NAME_WE "${INFILE}" NAME_WE)
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_GENERATED ${INFILE} GENERATED)
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_CPLUSPLUS ${INFILE} CPLUSPLUS)
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_FLAGS ${INFILE} SWIG_FLAGS)
IF("${SWIG_SOURCE_FILE_FLAGS}" STREQUAL "NOTFOUND")
SET(SWIG_SOURCE_FILE_FLAGS "")
ENDIF()
GET_FILENAME_COMPONENT(SWIG_SOURCE_FILE_FULLNAME "${INFILE}" ABSOLUTE)
IF(CMAKE_SWIG_OUTDIR)
SET(SWIG_OUTDIR ${CMAKE_SWIG_OUTDIR})
ELSE()
SET(SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
ENDIF()
IF(SWIG_OUTFILE_DIR)
SET(SWIG_OUTFILE_DIR ${SWIG_OUTFILE_DIR})
ELSE()
SET(SWIG_OUTFILE_DIR ${SWIG_OUTDIR})
ENDIF()
IF(NOT SWIG_MODULE_${NAME}_NOPROXY)
SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${NAME}_LANGUAGE}
SWIG_EXTRA_GENERATED_FILES
"${SWIG_OUTDIR}" "${SWIG_SOURCE_FILE_FULLNAME}")
ENDIF()
SET(SWIG_GENERATED_FILE_FULLNAME "${SWIG_OUTFILE_DIR}/${SWIG_SOURCE_FILE_NAME_WE}")
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME "${SWIG_MODULE_${NAME}_LANGUAGE}_wrap")
IF(SWIG_SOURCE_FILE_CPLUSPLUS)
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME ".${SWIG_CXX_EXTENSION}")
ELSE()
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME ".c")
ENDIF()
GET_DIRECTORY_PROPERTY(CMAKE_INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES)
LIST(REMOVE_DUPLICATES CMAKE_INCLUDE_DIRECTORIES)
SET(SWIG_INCLUDE_DIRS)
FOREACH(IT ${CMAKE_INCLUDE_DIRECTORIES})
SET(SWIG_INCLUDE_DIRS ${SWIG_INCLUDE_DIRS} "-I${IT}")
ENDFOREACH()
SET(SWIG_SPECIAL_FLAGS)
IF(SWIG_SOURCE_FILE_CPLUSPLUS)
SET(SWIG_SPECIAL_FLAGS ${SWIG_SPECIAL_FLAGS} "-c++")
ENDIF()
SET(SWIG_EXTRA_FLAGS)
IF(SWIG_MODULE_${NAME}_EXTRA_FLAGS)
SET(SWIG_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS} ${SWIG_MODULE_${NAME}_EXTRA_FLAGS})
ENDIF()
ADD_CUSTOM_COMMAND(
OUTPUT "${SWIG_GENERATED_FILE_FULLNAME}" ${SWIG_EXTRA_GENERATED_FILES}
COMMAND ${CMAKE_COMMAND} -E make_directory ${SWIG_OUTDIR}
COMMAND "${SWIG_EXECUTABLE}"
ARGS "-${SWIG_MODULE_${NAME}_SWIG_LANGUAGE_FLAG}"
${SWIG_SOURCE_FILE_FLAGS}
${CMAKE_SWIG_FLAGS}
-outdir ${SWIG_OUTDIR}
${SWIG_SPECIAL_FLAGS}
${SWIG_EXTRA_FLAGS}
${SWIG_INCLUDE_DIRS}
-o "${SWIG_GENERATED_FILE_FULLNAME}"
-module "${NAME}"
"${SWIG_SOURCE_FILE_FULLNAME}"
MAIN_DEPENDENCY "${SWIG_SOURCE_FILE_FULLNAME}"
DEPENDS ${SWIG_MODULE_${NAME}_EXTRA_DEPS}
IMPLICIT_DEPENDS CXX "${SWIG_SOURCE_FILE_FULLNAME}"
COMMENT "Swig source")
SET_SOURCE_FILES_PROPERTIES("${SWIG_GENERATED_FILE_FULLNAME}"
${SWIG_EXTRA_GENERATED_FILES} PROPERTIES GENERATED TRUE)
SET(${OUTFILES} "${SWIG_GENERATED_FILE_FULLNAME}" ${SWIG_EXTRA_GENERATED_FILES})
ENDMACRO()
MACRO(SWIG_ADD_LIBRARY NAME)
SET(OPTIONS "")
SET(ONEVALUEARGS LANGUAGE TYPE)
SET(MULTIVALUEARGS SOURCES)
CMAKE_PARSE_ARGUMENTS(_SAM "${OPTIONS}" "${ONEVALUEARGS}" "${MULTIVALUEARGS}" ${ARGN})
IF(NOT DEFINED _SAM_LANGUAGE)
MESSAGE(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing LANGUAGE argument")
ENDIF()
IF(NOT DEFINED _SAM_SOURCES)
MESSAGE(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing SOURCES argument")
ENDIF()
IF(NOT DEFINED _SAM_TYPE)
SET(_SAM_TYPE MODULE)
ELSEIF("${_SAM_TYPE}" STREQUAL "USE_BUILD_SHARED_LIBS")
UNSET(_SAM_TYPE)
ENDIF()
SWIG_MODULE_INITIALIZE(${NAME} ${_SAM_LANGUAGE})
SET(SWIG_DOT_I_SOURCES)
SET(SWIG_OTHER_SOURCES)
FOREACH(IT ${_SAM_SOURCES})
IF(${IT} MATCHES "\\.i$")
SET(SWIG_DOT_I_SOURCES ${SWIG_DOT_I_SOURCES} "${IT}")
ELSE()
SET(SWIG_OTHER_SOURCES ${SWIG_OTHER_SOURCES} "${IT}")
ENDIF()
ENDFOREACH()
SET(SWIG_GENERATED_SOURCES)
FOREACH(IT ${SWIG_DOT_I_SOURCES})
SWIG_ADD_SOURCE_TO_MODULE(${NAME} SWIG_GENERATED_SOURCE ${IT})
SET(SWIG_GENERATED_SOURCES ${SWIG_GENERATED_SOURCES} "${SWIG_GENERATED_SOURCE}")
ENDFOREACH()
GET_DIRECTORY_PROPERTY(SWIG_EXTRA_CLEAN_FILES ADDITIONAL_MAKE_CLEAN_FILES)
SET_DIRECTORY_PROPERTIES(PROPERTIES
ADDITIONAL_MAKE_CLEAN_FILES "${SWIG_EXTRA_CLEAN_FILES};${SWIG_GENERATED_SOURCES}")
ADD_LIBRARY(${SWIG_MODULE_${NAME}_REAL_NAME} ${_SAM_TYPE} ${SWIG_GENERATED_SOURCES} ${SWIG_OTHER_SOURCES})
IF("${_SAM_TYPE}" STREQUAL "MODULE")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES NO_SONAME ON)
ENDIF()
STRING(TOLOWER "${_SAM_LANGUAGE}" SWIG_LOWERCASE_LANGUAGE)
IF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "octave")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".oct")
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "go")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "java")
IF(APPLE)
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".jnilib")
ENDIF(APPLE)
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "lua")
IF("${_SAM_TYPE}" STREQUAL "MODULE")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
ENDIF()
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "python")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
IF(WIN32 AND NOT CYGWIN)
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".pyd")
ENDIF()
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "r")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "ruby")
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
IF(APPLE)
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".bundle")
ENDIF(APPLE)
ELSE()
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
ENDIF()
ENDMACRO()
MACRO(SWIG_LINK_LIBRARIES NAME)
IF(SWIG_MODULE_${NAME}_REAL_NAME)
TARGET_LINK_LIBRARIES(${SWIG_MODULE_${NAME}_REAL_NAME} ${ARGN})
ELSE()
MESSAGE(SEND_ERROR "Can not find Swig library \"${NAME}\".")
ENDIF()
ENDMACRO()

View File

@@ -0,0 +1,53 @@
ADD_LIBRARY(executable_libs STATIC
cvrptw_lib.cc
parse_dimacs_assignment.cc
fap_model_printer.cc
fap_parser.cc
fap_utilities.cc)
FOREACH(EXECUTABLE
costas_array
cryptarithm
cvrp_disjoint_tw
cvrptw
cvrptw_with_breaks
cvrptw_with_refueling
cvrptw_with_resources
cvrptw_with_stop_times_and_resources
dimacs_assignment
dobble_ls
flow_api
frequency_assignment_problem
golomb
integer_programming
jobshop
jobshop_earlytardy
jobshop_ls
jobshop_sat
linear_assignment_api
linear_programming
linear_solver_protocol_buffers
ls_api
magic_square
model_util
mps_driver
multidim_knapsack
network_routing
nqueens
pdptw
rcpsp_sat
shift_minimization_sat
solve
sports_scheduling
strawberry_fields_with_column_generation
tsp
weighted_tardiness_sat)
ADD_EXECUTABLE(${EXECUTABLE} ${EXECUTABLE}.cc)
TARGET_LINK_LIBRARIES(${EXECUTABLE}
executable_libs
${PROJECT_NAME}
${Protobuf_LIBRARIES}
${gflags_LIBRARIES}
${CBC_LIBRARIES})
INSTALL(TARGETS ${EXECUTABLE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
ENDFOREACH()

9
ortools/CMakeLists.txt Normal file
View File

@@ -0,0 +1,9 @@
ENABLE_LANGUAGE(CXX)
ENABLE_LANGUAGE(Python)
PROJECT(or_tools_algorithms)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,10 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_algorithms)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
LIST(REMOVE_ITEM ${PROJECT_NAME}_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/hungarian_test.cc")
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,7 @@
IF(BUILD_PYTHON)
SET_PROPERTY(SOURCE knapsack_solver.i PROPERTY CPLUSPLUS ON)
SET_PROPERTY(SOURCE knapsack_solver.i PROPERTY SWIG_MODULE_NAME pywrapknapsack_solver)
SWIG_ADD_LIBRARY(pywrapknapsack_solver TYPE MODULE LANGUAGE python SOURCES knapsack_solver.i)
SWIG_LINK_LIBRARIES(pywrapknapsack_solver ${PROJECT_NAME})
ENDIF(BUILD_PYTHON)

View File

@@ -0,0 +1,9 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_base)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,15 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_bop)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS bop_parameters.proto)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${PROTO_SRCS})
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,51 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_constraint_solver)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(SOLVER_PROTO_SRCS SOLVER_PARAM_HDRS solver_parameters.proto)
PROTOBUF_GENERATE_CPP(MODEL__PROTO_SRCS MODEL__PROTO_HDRS model.proto)
PROTOBUF_GENERATE_CPP(SEARCH_PROTO_SRCS SEARCH_PROTO_HDRS search_limit.proto)
PROTOBUF_GENERATE_CPP(ASSIGN_PROTO_SRCS ASSIGN_PROTO_HDRS assignment.proto)
PROTOBUF_GENERATE_CPP(PROFIL_PROTO_SRCS PROFIL_PROTO_HDRS demon_profiler.proto)
PROTOBUF_GENERATE_CPP(ROUTEN_PROTO_SRCS ROUTEN_PROTO_HDRS routing_enums.proto)
PROTOBUF_GENERATE_CPP(ROUTPA_PROTO_SRCS ROUTPA_PROTO_HDRS routing_parameters.proto)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${SOLVER_PROTO_SRCS}
${MODEL__PROTO_SRCS}
${SEARCH_PROTO_SRCS}
${ASSIGN_PROTO_SRCS}
${PROFIL_PROTO_SRCS}
${ROUTEN_PROTO_SRCS}
${ROUTPA_PROTO_SRCS})
IF(BUILD_PYTHON)
PROTOBUF_GENERATE_PYTHON(PY_ASSIGN_PROTO_SRCS assignment.proto)
PROTOBUF_GENERATE_PYTHON(PY_SEARCH_PROTO_SRCS search_limit.proto)
PROTOBUF_GENERATE_PYTHON(PY_MODEL__PROTO_SRCS model.proto)
PROTOBUF_GENERATE_PYTHON(PY_ROUTEN_PROTO_SRCS routing_enums.proto)
PROTOBUF_GENERATE_PYTHON(PY_SOLVER_PROTO_SRCS solver_parameters.proto)
PROTOBUF_GENERATE_PYTHON(PY_ROUTPA_PROTO_SRCS routing_parameters.proto)
ENDIF(BUILD_PYTHON)
ADD_LIBRARY(${PROJECT_NAME}
OBJECT
${${PROJECT_NAME}_SOURCES}
${SOLVER_PROTO_SRCS}
${MODEL__PROTO_SRCS}
${SEARCH_PROTO_SRCS}
${ASSIGN_PROTO_SRCS}
${PROFIL_PROTO_SRCS}
${ROUTEN_PROTO_SRCS}
${ROUTPA_PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
ADD_DEPENDENCIES(${PROJECT_NAME}
ForceProtobufGen_${ROOT_PROJECT}_glop
ForceProtobufGen_${ROOT_PROJECT}_linear_solver
ForceProtobufGen_${ROOT_PROJECT}_sat)

View File

@@ -0,0 +1,7 @@
IF(BUILD_PYTHON)
SET_PROPERTY(SOURCE routing.i PROPERTY CPLUSPLUS ON)
SET_PROPERTY(SOURCE routing.i PROPERTY SWIG_MODULE_NAME pywrapcp)
SWIG_ADD_LIBRARY(pywrapcp TYPE MODULE LANGUAGE python SOURCES routing.i)
SWIG_LINK_LIBRARIES(pywrapcp ${PROJECT_NAME})
ENDIF(BUILD_PYTHON)

View File

@@ -0,0 +1,15 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(or_tools_glop)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS parameters.proto)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${PROTO_SRCS})
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,15 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_graph)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS flow_problem.proto)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${PROTO_SRCS})
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,7 @@
IF(BUILD_PYTHON)
SET_PROPERTY(SOURCE graph.i PROPERTY CPLUSPLUS ON)
SET_PROPERTY(SOURCE graph.i PROPERTY SWIG_MODULE_NAME pywrapgraph)
SWIG_ADD_LIBRARY(pywrapgraph TYPE MODULE LANGUAGE python SOURCES graph.i)
SWIG_LINK_LIBRARIES(pywrapgraph ${PROJECT_NAME})
ENDIF(BUILD_PYTHON)

View File

@@ -0,0 +1,19 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_linear_solver)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS linear_solver.proto)
IF(BUILD_PYTHON)
PROTOBUF_GENERATE_PYTHON(PY_PROTO_SRCS linear_solver.proto)
ENDIF(BUILD_PYTHON)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${PROTO_SRCS})
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,7 @@
IF(BUILD_PYTHON)
SET_PROPERTY(SOURCE linear_solver.i PROPERTY CPLUSPLUS ON)
SET_PROPERTY(SOURCE linear_solver.i PROPERTY SWIG_MODULE_NAME pywraplp)
SWIG_ADD_LIBRARY(pywraplp TYPE MODULE LANGUAGE python SOURCES linear_solver.i)
SWIG_LINK_LIBRARIES(pywraplp ${PROJECT_NAME})
ENDIF()

View File

@@ -0,0 +1,9 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_lp_data)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,17 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_sat)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
PROTOBUF_GENERATE_CPP(BOOL_PROTO_SRCS BOOL_PROTO_HDRS boolean_problem.proto)
PROTOBUF_GENERATE_CPP(SAT_PROTO_SRCS SAT_PROTO_HDRS sat_parameters.proto)
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
ALL
DEPENDS
${BOOL_PROTO_SRCS}
${SAT_PROTO_SRCS})
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${BOOL_PROTO_SRCS} ${SAT_PROTO_SRCS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

View File

@@ -0,0 +1,9 @@
ENABLE_LANGUAGE(CXX)
# ENABLE_LANGUAGE(Python)
SET(ROOT_PROJECT ${PROJECT_NAME})
PROJECT(${PROJECT_NAME}_util)
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)