cmake: Add init
This commit is contained in:
@@ -214,6 +214,7 @@ foreach(SUBPROJECT IN ITEMS
|
||||
glop
|
||||
graph
|
||||
gurobi
|
||||
init
|
||||
linear_solver
|
||||
lp_data
|
||||
port
|
||||
|
||||
@@ -95,7 +95,7 @@ else()
|
||||
endif()
|
||||
set(DOTNET_NATIVE_PROJECT ${DOTNET_PROJECT}.runtime.${RUNTIME_IDENTIFIER})
|
||||
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph linear_solver constraint_solver sat util)
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph init linear_solver constraint_solver sat util)
|
||||
add_subdirectory(ortools/${SUBPROJECT}/csharp)
|
||||
target_link_libraries(google-ortools-native PRIVATE dotnet_${SUBPROJECT})
|
||||
endforeach()
|
||||
|
||||
@@ -116,7 +116,7 @@ elseif(UNIX)
|
||||
endif()
|
||||
|
||||
# Swig wrap all libraries
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph linear_solver constraint_solver sat util)
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph init linear_solver constraint_solver sat util)
|
||||
add_subdirectory(ortools/${SUBPROJECT}/java)
|
||||
target_link_libraries(jniortools PRIVATE jni${SUBPROJECT})
|
||||
endforeach()
|
||||
|
||||
@@ -109,7 +109,7 @@ if(USE_COINOR)
|
||||
endif()
|
||||
list(APPEND CMAKE_SWIG_FLAGS ${FLAGS} "-I${PROJECT_SOURCE_DIR}")
|
||||
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph linear_solver constraint_solver sat data util)
|
||||
foreach(SUBPROJECT IN ITEMS algorithms graph init linear_solver constraint_solver sat data util)
|
||||
add_subdirectory(ortools/${SUBPROJECT}/python)
|
||||
endforeach()
|
||||
|
||||
@@ -118,14 +118,15 @@ endforeach()
|
||||
#######################
|
||||
#file(MAKE_DIRECTORY python/${PROJECT_NAME})
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME})
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/util)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/constraint_solver)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/init)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/algorithms)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/graph)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/linear_solver)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/constraint_solver)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/sat)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/sat/python)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/graph)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/algorithms)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/data)
|
||||
file(COPY ortools/__init__.py DESTINATION python/${PROJECT_NAME}/util)
|
||||
|
||||
file(COPY
|
||||
ortools/linear_solver/linear_solver_natural_api.py
|
||||
@@ -163,6 +164,7 @@ add_custom_target(python_package ALL
|
||||
# Don't need to copy static lib on windows.
|
||||
COMMAND ${CMAKE_COMMAND} -E $<IF:$<BOOL:${UNIX}>,copy,true>
|
||||
$<$<BOOL:${UNIX}>:$<TARGET_SONAME_FILE:ortools>> ${PROJECT_NAME}/.libs
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pywrapinit> ${PROJECT_NAME}/init
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pywrapknapsack_solver> ${PROJECT_NAME}/algorithms
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pywrapgraph> ${PROJECT_NAME}/graph
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pywrapcp> ${PROJECT_NAME}/constraint_solver
|
||||
|
||||
20
ortools/init/CMakeLists.txt
Normal file
20
ortools/init/CMakeLists.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
file(GLOB _SRCS "*.h")
|
||||
set(NAME ${PROJECT_NAME}_init)
|
||||
|
||||
# Will be merge in libortools.so
|
||||
#add_library(${NAME} STATIC ${_SRCS})
|
||||
add_library(${NAME} OBJECT ${_SRCS})
|
||||
set_target_properties(${NAME} PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS OFF
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
target_include_directories(${NAME} PRIVATE
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR})
|
||||
target_link_libraries(${NAME} PRIVATE
|
||||
absl::flags
|
||||
protobuf::libprotobuf
|
||||
${PROJECT_NAME}::proto)
|
||||
#add_library(${PROJECT_NAME}::init ALIAS ${NAME})
|
||||
18
ortools/init/csharp/CMakeLists.txt
Normal file
18
ortools/init/csharp/CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
set_property(SOURCE init.i PROPERTY CPLUSPLUS ON)
|
||||
set_property(SOURCE init.i PROPERTY SWIG_MODULE_NAME operations_research_init)
|
||||
set_property(SOURCE init.i PROPERTY COMPILE_DEFINITIONS
|
||||
${OR_TOOLS_COMPILE_DEFINITIONS} ABSL_MUST_USE_RESULT)
|
||||
set_property(SOURCE init.i PROPERTY COMPILE_OPTIONS
|
||||
-namespace ${DOTNET_PROJECT}.init
|
||||
-dllimport google-ortools-native)
|
||||
swig_add_library(dotnet_init
|
||||
TYPE OBJECT
|
||||
LANGUAGE csharp
|
||||
OUTPUT_DIR ${PROJECT_BINARY_DIR}/dotnet/${PROJECT_NAME}/init
|
||||
SOURCES init.i)
|
||||
|
||||
#target_include_directories(dotnet_init PRIVATE ${DOTNET_INCLUDE_DIRS})
|
||||
set_target_properties(dotnet_init PROPERTIES
|
||||
SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON
|
||||
POSITION_INDEPENDENT_CODE ON)
|
||||
target_link_libraries(dotnet_init PRIVATE ortools::ortools)
|
||||
18
ortools/init/java/CMakeLists.txt
Normal file
18
ortools/init/java/CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
set_property(SOURCE init.i PROPERTY CPLUSPLUS ON)
|
||||
set_property(SOURCE init.i PROPERTY SWIG_MODULE_NAME main)
|
||||
set_property(SOURCE init.i PROPERTY COMPILE_DEFINITIONS
|
||||
${OR_TOOLS_COMPILE_DEFINITIONS} ABSL_MUST_USE_RESULT)
|
||||
set_property(SOURCE init.i PROPERTY COMPILE_OPTIONS
|
||||
-package ${JAVA_PACKAGE}.init)
|
||||
swig_add_library(jniinit
|
||||
TYPE OBJECT
|
||||
LANGUAGE java
|
||||
OUTPUT_DIR
|
||||
${PROJECT_BINARY_DIR}/java/${JAVA_PROJECT}/${JAVA_PACKAGE_PATH}/init
|
||||
SOURCES init.i)
|
||||
|
||||
target_include_directories(jniinit PRIVATE ${JNI_INCLUDE_DIRS})
|
||||
set_target_properties(jniinit PROPERTIES
|
||||
SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON
|
||||
POSITION_INDEPENDENT_CODE ON)
|
||||
target_link_libraries(jniinit PRIVATE ortools::ortools)
|
||||
36
ortools/init/python/CMakeLists.txt
Normal file
36
ortools/init/python/CMakeLists.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
set_property(SOURCE graph.i PROPERTY CPLUSPLUS ON)
|
||||
set_property(SOURCE graph.i PROPERTY SWIG_MODULE_NAME pywrapgraph)
|
||||
set_property(SOURCE graph.i PROPERTY COMPILE_DEFINITIONS
|
||||
${OR_TOOLS_COMPILE_DEFINITIONS} ABSL_MUST_USE_RESULT)
|
||||
swig_add_library(pywrapgraph
|
||||
TYPE SHARED
|
||||
LANGUAGE python
|
||||
OUTPUT_DIR ${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}/graph
|
||||
SOURCES graph.i)
|
||||
|
||||
target_include_directories(pywrapgraph PRIVATE ${Python_INCLUDE_DIRS})
|
||||
set_property(TARGET pywrapgraph PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON)
|
||||
if(Python_VERSION VERSION_GREATER_EQUAL 3)
|
||||
target_compile_definitions(pywrapgraph PUBLIC "PY3")
|
||||
endif()
|
||||
|
||||
# note: macOS is APPLE and also UNIX !
|
||||
if(APPLE)
|
||||
set_target_properties(pywrapgraph PROPERTIES
|
||||
SUFFIX ".so"
|
||||
INSTALL_RPATH "@loader_path;@loader_path/../../${PROJECT_NAME}/.libs")
|
||||
set_property(TARGET pywrapgraph APPEND PROPERTY
|
||||
LINK_FLAGS "-flat_namespace -undefined suppress")
|
||||
elseif(UNIX)
|
||||
set_target_properties(pywrapgraph PROPERTIES
|
||||
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../${PROJECT_NAME}/.libs")
|
||||
endif()
|
||||
target_link_libraries(pywrapgraph PRIVATE ortools::ortools)
|
||||
|
||||
# Variable PYTHON_LIBRARIES can contains keyword `optimized`
|
||||
# which won't be interpreted inside a generator expression.
|
||||
# i.e. we can't use: $<$<PLATFORM_ID:Windows>:${PYTHON_LIBRARIES}>
|
||||
# see: https://cmake.org/cmake/help/git-stage/command/target_link_libraries.html#command:target_link_libraries
|
||||
if(MSVC)
|
||||
target_link_libraries(pywrapgraph PRIVATE ${Python_LIBRARIES})
|
||||
endif()
|
||||
@@ -47,6 +47,7 @@ setup(
|
||||
],
|
||||
package_data={
|
||||
'@PROJECT_NAME@':[$<$<NOT:$<PLATFORM_ID:Windows>>:'.libs/*', '../$<TARGET_SONAME_FILE_NAME:ortools>'>],
|
||||
'@PROJECT_NAME@.init':['$<TARGET_FILE_NAME:pywrapinit>'],
|
||||
'@PROJECT_NAME@.constraint_solver':['$<TARGET_FILE_NAME:pywrapcp>', '*.pyi'],
|
||||
'@PROJECT_NAME@.linear_solver':['$<TARGET_FILE_NAME:pywraplp>', '*.pyi'],
|
||||
'@PROJECT_NAME@.sat':['$<TARGET_FILE_NAME:pywrapsat>', '*.pyi'],
|
||||
|
||||
Reference in New Issue
Block a user