export init.h to all languages

This commit is contained in:
Laurent Perron
2021-03-19 18:55:20 +01:00
parent 814a32fa50
commit 3c1932b21a
9 changed files with 172 additions and 8 deletions

View File

@@ -88,6 +88,9 @@ $(GEN_DIR)/ortools/sat: | $(GEN_DIR)/ortools
$(GEN_DIR)/ortools/util: | $(GEN_DIR)/ortools
-$(MKDIR) $(GEN_PATH)$Sortools$Sutil
$(GEN_DIR)/ortools/init: | $(GEN_DIR)/ortools
-$(MKDIR) $(GEN_PATH)$Sortools$Sinit
$(GEN_DIR)/examples: | $(GEN_DIR)
-$(MKDIR) $(GEN_PATH)$Sexamples

View File

@@ -271,7 +271,27 @@ $(OBJ_DIR)/swig/sat_csharp_wrap.$O: \
-c $(GEN_PATH)$Sortools$Ssat$Ssat_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_csharp_wrap.$O
$(GEN_DIR)/ortools/util/sorted_interval_list_csharp_wrap.cc: \
$(GEN_DIR)/ortools/init/init_csharp_wrap.cc: \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/init/csharp/init.i \
$(INIT_DEPS) \
| $(GEN_DIR)/ortools/init
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Sinit$Sinit_csharp_wrap.cc \
-module operations_research_init \
-namespace $(DOTNET_ORTOOLS_ASSEMBLY_NAME).Init \
-dllimport "$(DOTNET_ORTOOLS_NATIVE)" \
-outdir $(GEN_PATH)$Sortools$Sinit \
$(SRC_DIR)$Sortools$Sinit$Scsharp$Sinit.i
$(OBJ_DIR)/swig/init_csharp_wrap.$O: \
$(GEN_DIR)/ortools/init/init_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Sinit$Sinit_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sinit_csharp_wrap.$O
$(GEN_DIR)/ortools/util/sorted_interval_list_csharp_wrap.cc: \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/sorted_interval_list.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
@@ -314,6 +334,7 @@ $(LIB_DIR)/$(DOTNET_ORTOOLS_NATIVE).$(SWIG_DOTNET_LIB_SUFFIX): \
$(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O \
$(OBJ_DIR)/swig/graph_csharp_wrap.$O \
$(OBJ_DIR)/swig/sorted_interval_list_csharp_wrap.$O \
$(OBJ_DIR)/swig/init_csharp_wrap.$O \
| $(LIB_DIR)
$(DYNAMIC_LD) \
$(LD_OUT)$(LIB_DIR)$S$(DOTNET_ORTOOLS_NATIVE).$(SWIG_DOTNET_LIB_SUFFIX) \
@@ -322,7 +343,7 @@ $(LIB_DIR)/$(DOTNET_ORTOOLS_NATIVE).$(SWIG_DOTNET_LIB_SUFFIX): \
$(OBJ_DIR)$Sswig$Sconstraint_solver_csharp_wrap.$O \
$(OBJ_DIR)$Sswig$Sknapsack_solver_csharp_wrap.$O \
$(OBJ_DIR)$Sswig$Sgraph_csharp_wrap.$O \
$(OBJ_DIR)/swig/sorted_interval_list_csharp_wrap.$O \
$(OBJ_DIR)/swig/init_csharp_wrap.$O \
$(OR_TOOLS_LNK) \
$(OR_TOOLS_LDFLAGS)
@@ -914,6 +935,8 @@ clean_dotnet:
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*csharp_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*.cs
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*csharp_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*.cs
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*csharp_wrap*
-$(DEL) $(OBJ_DIR)$Sswig$S*_csharp_wrap.$O
-$(DEL) $(LIB_DIR)$S$(DOTNET_ORTOOLS_NATIVE).*
-$(DEL) $(BIN_DIR)$S$(DOTNET_ORTOOLS_ASSEMBLY_NAME).*

View File

@@ -352,6 +352,10 @@ $(OBJ_DIR)/util/optional_boolean.pb.$O: \
$(GEN_DIR)/ortools/util/optional_boolean.pb.cc | $(OBJ_DIR)/util
$(CCC) $(CFLAGS) -c $(GEN_PATH)$Sortools$Sutil$Soptional_boolean.pb.cc $(OBJ_OUT)$(OBJ_DIR)$Sutil$Soptional_boolean.pb.$O
INIT_DEPS = \
$(SRC_DIR)/ortools/init/init.h \
DATA_DEPS = \
$(SRC_DIR)/ortools/data/jobshop_scheduling_parser.h \
$(SRC_DIR)/ortools/data/rcpsp_parser.h \

View File

@@ -92,6 +92,9 @@ $(GEN_DIR)/java/com/google/ortools/linearsolver:
$(GEN_DIR)/java/com/google/ortools/flatzinc:
-$(MKDIR_P) $(GEN_PATH)$Sjava$Scom$Sgoogle$Sortools$Sflatzinc
$(GEN_DIR)/java/com/google/ortools/init:
$(MKDIR_P) $(GEN_PATH)$Sjava$Scom$Sgoogle$Sortools$Sinit
$(GEN_DIR)/java/com/google/ortools/sat:
-$(MKDIR_P) $(GEN_PATH)$Sjava$Scom$Sgoogle$Sortools$Ssat
@@ -220,6 +223,26 @@ $(OBJ_DIR)/swig/sat_java_wrap.$O: \
-c $(GEN_PATH)$Sortools$Ssat$Ssat_java_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_java_wrap.$O
$(GEN_DIR)/ortools/init/init_java_wrap.cc: \
$(SRC_DIR)/ortools/init/java/init.i \
$(SRC_DIR)/ortools/base/base.i \
$(INIT_DEPS) \
| $(GEN_DIR)/ortools/init $(GEN_DIR)/java/com/google/ortools/init
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -java $(SWIG_DOXYGEN) \
-o $(GEN_PATH)$Sortools$Sinit$Sinit_java_wrap.cc \
-package com.google.ortools.init \
-module main \
-outdir $(GEN_PATH)$Sjava$Scom$Sgoogle$Sortools$Sinit \
$(SRC_DIR)$Sortools$Sinit$Sjava$Sinit.i
$(OBJ_DIR)/swig/init_java_wrap.$O: \
$(GEN_DIR)/ortools/init/init_java_wrap.cc \
$(INIT_DEPS) \
| $(OBJ_DIR)/swig
$(CCC) $(JNIFLAGS) $(JAVA_INC) \
-c $(GEN_PATH)$Sortools$Sinit$Sinit_java_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sinit_java_wrap.$O
$(GEN_DIR)/ortools/util/util_java_wrap.cc: \
$(SRC_DIR)/ortools/util/java/sorted_interval_list.i \
$(SRC_DIR)/ortools/base/base.i \
@@ -246,6 +269,7 @@ $(JAVA_ORTOOLS_NATIVE_LIBS): \
$(OBJ_DIR)/swig/knapsack_solver_java_wrap.$O \
$(OBJ_DIR)/swig/graph_java_wrap.$O \
$(OBJ_DIR)/swig/linear_solver_java_wrap.$O \
$(OBJ_DIR)/swig/init_java_wrap.$O \
$(OBJ_DIR)/swig/sat_java_wrap.$O \
$(OBJ_DIR)/swig/util_java_wrap.$O
$(DYNAMIC_LD) $(LD_OUT)$(LIB_DIR)$S$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) \
@@ -253,6 +277,7 @@ $(JAVA_ORTOOLS_NATIVE_LIBS): \
$(OBJ_DIR)$Sswig$Sknapsack_solver_java_wrap.$O \
$(OBJ_DIR)$Sswig$Sgraph_java_wrap.$O \
$(OBJ_DIR)$Sswig$Slinear_solver_java_wrap.$O \
$(OBJ_DIR)$Sswig$Sinit_java_wrap.$O \
$(OBJ_DIR)$Sswig$Ssat_java_wrap.$O \
$(OBJ_DIR)$Sswig$Sutil_java_wrap.$O \
$(OR_TOOLS_LNK) \
@@ -858,6 +883,7 @@ clean_java:
-$(DEL) $(GEN_PATH)$Sortools$Slinear_solver$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*java_wrap*
-$(DEL) $(OBJ_DIR)$Sswig$S*_java_wrap.$O
-$(DEL) $(LIB_DIR)$S$(LIB_PREFIX)jni*.$(JNI_LIB_EXT)
-$(DEL) $(LIB_DIR)$S*.jar

View File

@@ -46,6 +46,7 @@ PYLP_LIBS = $(LIB_DIR)/_pywraplp.$(SWIG_PYTHON_LIB_SUFFIX)
PYSAT_LIBS = $(LIB_DIR)/_pywrapsat.$(SWIG_PYTHON_LIB_SUFFIX)
PYDATA_LIBS = $(LIB_DIR)/_pywraprcpsp.$(SWIG_PYTHON_LIB_SUFFIX)
PYSORTED_INTERVAL_LIST_LIBS = $(LIB_DIR)/_sorted_interval_list.$(SWIG_PYTHON_LIB_SUFFIX)
PYINIT_LIBS = $(LIB_DIR)/_init.$(SWIG_PYTHON_LIB_SUFFIX)
PYTHON_OR_TOOLS_LIBS = \
$(GEN_DIR)/ortools/__init__.py \
$(PYALGORITHMS_LIBS) \
@@ -54,7 +55,8 @@ PYTHON_OR_TOOLS_LIBS = \
$(PYLP_LIBS) \
$(PYSAT_LIBS) \
$(PYDATA_LIBS) \
$(PYSORTED_INTERVAL_LIST_LIBS)
$(PYSORTED_INTERVAL_LIST_LIBS) \
$(PYINIT_LIBS)
# Main target
.PHONY: python # Build Python OR-Tools.
@@ -494,6 +496,49 @@ else
cp $(PYSORTED_INTERVAL_LIST_LIBS) $(GEN_PATH)/ortools/util
endif
# init
ifeq ($(PLATFORM),MACOSX)
PYINIT_LDFLAGS = -install_name @rpath/_init.$(SWIG_PYTHON_LIB_SUFFIX) #
endif
$(GEN_DIR)/ortools/init/init.py: \
$(SRC_DIR)/ortools/init/init.h \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/python/vector.i \
$(SRC_DIR)/ortools/init/python/init.i \
$(INIT_DEPS) \
| $(GEN_DIR)/ortools/init
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -python $(SWIG_DOXYGEN) $(SWIG_PYTHON3_FLAG) \
-o $(GEN_PATH)$Sortools$Sinit$Sinit_python_wrap.cc \
-module init \
$(SRC_DIR)$Sortools$Sinit$Spython$Sinit.i
$(GEN_DIR)/ortools/init/init_python_wrap.cc: \
$(GEN_DIR)/ortools/init/init.py
$(OBJ_DIR)/swig/init_python_wrap.$O: \
$(GEN_DIR)/ortools/init/init_python_wrap.cc \
$(INIT_DEPS) \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) $(PYTHON_INC) $(PYTHON3_CFLAGS) \
-c $(GEN_PATH)$Sortools$Sinit$Sinit_python_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sinit_python_wrap.$O
$(PYINIT_LIBS): $(OBJ_DIR)/swig/init_python_wrap.$O $(OR_TOOLS_LIBS)
$(DYNAMIC_LD) \
$(PYINIT_LDFLAGS) \
$(LD_OUT)$(LIB_DIR)$S_init.$(SWIG_PYTHON_LIB_SUFFIX) \
$(OBJ_DIR)$Sswig$Sinit_python_wrap.$O \
$(OR_TOOLS_LNK) \
$(SYS_LNK) \
$(PYTHON_LNK) \
$(PYTHON_LDFLAGS)
ifeq ($(SYSTEM),win)
copy $(LIB_DIR)$S_init.$(SWIG_PYTHON_LIB_SUFFIX) $(GEN_PATH)\\ortools\\init\\_init.pyd
else
cp $(PYINIT_LIBS) $(GEN_PATH)/ortools/init
endif
#######################
## Python SOURCE ##
#######################
@@ -1132,6 +1177,11 @@ clean_python:
-$(DELREC) ortools$Sutil$S__pycache__
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*_python_wrap.*
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S_*
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*.py
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*.pyc
-$(DELREC) $(GEN_PATH)$Sortools$Sinit$S__pycache__
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S*_python_wrap.*
-$(DEL) $(GEN_PATH)$Sortools$Sinit$S_*
-$(DEL) $(LIB_DIR)$S_*.$(SWIG_PYTHON_LIB_SUFFIX)
-$(DEL) $(OBJ_DIR)$Sswig$S*python_wrap.$O
-$(DELREC) temp_python*

View File

@@ -0,0 +1,19 @@
%include "ortools/base/base.i"
%include "std_string.i"
%{
#include "ortools/init/init.h"
%}
%ignoreall
%unignore operations_research;
%unignore operations_research::Init;
%unignore operations_research::Init::InitCppLogging;
%unignore operations_research::Init::LoadGurobiSharedLibrary;
%include "ortools/init/init.h"
%unignoreall

View File

@@ -1,9 +1,11 @@
#include <string>
#include <vector>
#include "absl/flags/flag.h"
#include "ortools/base/logging.h"
#include "ortools/gurobi/environment.h"
namespace operations_research {
// This class performs various C++ initialization.
@@ -14,17 +16,16 @@ class Init {
// If logtostderr is false, all C++ logging will be ignored.
// If true, all logging will the displayed on stderr.
static void InitCppLogging(const std::string& program_name, bool logtostderr) {
absl::SetFlags(&FLAGS_logtostderr, logtostderr);
InitLogging(program_name.c_str());
absl::SetFlag(&FLAGS_logtostderr, logtostderr);
google::InitGoogleLogging(program_name.c_str());
}
// Load the gurobi shared library.
// This is necessary if the library is installed in a non canonical
// directory, or if for any reason, it is not found.
// You need to pass the full path, including the shared library file.
// You can pass multiple paths. They will be tried in order.
static void LoadGurobiSharedLibrary(const std::vector<std::string>& possible_paths) {
LoadGurobiDynamicLibrary(possible_paths);
static void LoadGurobiSharedLibrary(const std::string& full_library_path) {
LoadGurobiDynamicLibrary({full_library_path});
}
};

19
ortools/init/java/init.i Normal file
View File

@@ -0,0 +1,19 @@
%include "ortools/base/base.i"
%include "std_string.i"
%{
#include "ortools/init/init.h"
%}
%ignoreall
%unignore operations_research;
%unignore operations_research::Init;
%rename (initCppLogging) operations_research::Init::InitCppLogging;
%rename (logGurobiSharedLibrary) operations_research::Init::LoadGurobiSharedLibrary;
%include "ortools/init/init.h"
%unignoreall

View File

@@ -0,0 +1,19 @@
%include "ortools/base/base.i"
%include "std_string.i"
%{
#include "ortools/init/init.h"
%}
%ignoreall
%unignore operations_research;
%unignore operations_research::Init;
%unignore operations_research::Init::InitCppLogging;
%unignore operations_research::Init::LoadGurobiSharedLibrary;
%include "ortools/init/init.h"
%unignoreall