dotnet: Full Rework

- Create native project runtime.{rid}.Google.OrTools
  - follow the microsoft convention e.g.:
  https://www.nuget.org/packages/Microsoft.NETCore.App/
  https://www.nuget.org/packages/runtime.linux-x64.Microsoft.NETCore.App/
- Target `make_dotnet` targets local nupkg instead of dll.
- Use 4096 RSA key for or-tools.snk
- Clean nuget cache in `clean_dotnet` recipe

Refactor:
- Move cs files to ortools/*/csharp
- Move dotnet project to ortools/dotnet/Google.OrTools
- Move example generation to temp_dotnet
  - Avoid to mess the `BIN_DIR`
- Rework Google.OrTools.FSharp

Cleanup:
- Remove deps to netfx.props since we only support:
  netstandard2.0 TFM and netcoreapp2.1 Runtime TFM
- Remove OrTools.nuspec.in
  -> use newly added properties to .csproj format
- Remove of ortools/dotnet/OrTools project
  - replaced by ortools/dotnet/Google.OrTools
- Remove provided protobuf.dll.
  - Automatically retrieved from nuget.org

Misc:
- Add **/*.csproj to gitignore
- Add **/runtime.json to gitignore

- dotnet: Makefile windows fix
  - make.exe doesn't support `else ifeq`
This commit is contained in:
Corentin Le Molgat
2018-08-07 17:31:13 +02:00
parent 5bd9c15341
commit 62cbe9a228
41 changed files with 784 additions and 495 deletions

3
.gitignore vendored
View File

@@ -97,7 +97,8 @@ ortools/fsharp/**/packages
examples/dotnet/**/bin
examples/dotnet/**/obj
ortools/dotnet/OrTools/*.csproj
ortools/dotnet/*/*.csproj
ortools/dotnet/*/runtime.json
ortools/dotnet/OrTools.FSharp/*.fsproj
ortools/dotnet/*.nuspec
ortools/dotnet/**/bin

View File

@@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<RestoreSources>../../../packages;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -14,8 +14,6 @@
<ItemGroup>
<Compile Include="a_puzzle.cs" />
<Reference Include="Google.OrTools">
<HintPath>..\..\..\bin\Google.OrTools.dll</HintPath>
</Reference>
<PackageReference Include="Google.OrTools" Version="6.8.*" />
</ItemGroup>
</Project>

View File

@@ -4,6 +4,7 @@
<LangVersion>7.2</LangVersion>
<TargetFramework>netcoreapp2.0</TargetFramework>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<RestoreSources>../../../packages;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -14,8 +15,6 @@
<ItemGroup>
<Compile Include="tsp.cs" />
<Reference Include="Google.OrTools">
<HintPath>..\..\..\bin\Google.OrTools.dll</HintPath>
</Reference>
<PackageReference Include="Google.OrTools" Version="6.8.*" />
</ItemGroup>
</Project>

View File

@@ -10,25 +10,6 @@ else
@echo
endif
ORTOOLS_DLL_NAME := OrTools
ORTOOLS_TEST_DLL_NAME := $(ORTOOLS_DLL_NAME).Tests
ORTOOLS_FSHARP_DLL_NAME := $(ORTOOLS_DLL_NAME).FSharp
ORTOOLS_FSHARP_TEST_DLL_NAME := $(ORTOOLS_DLL_NAME).FSharp.Tests
ORTOOLS_NUSPEC_FILE := $(ORTOOLS_DLL_NAME).nuspec
CLR_PROTOBUF_DLL_NAME := Google.Protobuf
CLR_ORTOOLS_DLL_NAME := Google.$(ORTOOLS_DLL_NAME)
CLR_ORTOOLS_TEST_DLL_NAME := Google.$(ORTOOLS_TEST_DLL_NAME)
CLR_ORTOOLS_FSHARP_DLL_NAME := Google.$(ORTOOLS_FSHARP_DLL_NAME)
CLR_ORTOOLS_FSHARP_TEST_DLL_NAME := Google.$(ORTOOLS_FSHARP_TEST_DLL_NAME)
CLR_ORTOOLS_IMPORT_DLL_NAME := $(CLR_ORTOOLS_DLL_NAME).import
CLR_KEYFILE = $(BIN_DIR)/or-tools.snk
CLR_KEYFILE_PATH = $(subst /,$S,$(CLR_KEYFILE))
# relative to the project root folder
TEMP_DOTNET_TEST_DIR = temp_dotnet_test
# Check for required build tools
DOTNET = dotnet
ifeq ($(SYSTEM),win)
@@ -43,12 +24,16 @@ ifndef DOTNET_BIN
HAS_DOTNET =
endif
DOTNET_ORTOOLS_LIBS = $(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D $(BIN_DIR)/$(CLR_ORTOOLS_FSHARP_DLL_NAME)$D
# List Examples and Tests
TEMP_DOTNET_DIR=temp_dotnet
DOTNET_EXAMPLES = \
$(BIN_DIR)/a_puzzle$D \
$(BIN_DIR)/tsp$D \
$(BIN_DIR)/Program$D
$(TEMP_DOTNET_DIR)/tsp$D \
$(TEMP_DOTNET_DIR)/a_puzzle$D \
#$(TEMP_DOTNET_DIR)/Program$D
DOTNET_TESTS = \
#$(TEMP_DOTNET_DIR)/algorithms_test$D
# Main target
.PHONY: dotnet # Build OrTools for .NET
@@ -57,182 +42,55 @@ ifndef HAS_DOTNET
dotnet:
@echo DOTNET_BIN = $(DOTNET_BIN)
$(warning Cannot find '$@' command which is needed for build. Please make sure it is installed and in system path.)
test_dotnet: dotnet
else
dotnet: ortoolslibs $(DOTNET_ORTOOLS_LIBS) $(DOTNET_EXAMPLES)
dotnet: \
ortoolslibs \
csharp_dotnet \
fsharp_dotnet \
$(DOTNET_TESTS) \
$(DOTNET_EXAMPLES)
test_dotnet: test_dotnet_examples
"$(DOTNET_BIN)" restore \
--packages "ortools$Sdotnet$Spackages" \
"ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)$S$(ORTOOLS_TEST_DLL_NAME).csproj"
"$(DOTNET_BIN)" restore \
--packages "ortools$Sdotnet$Spackages" \
"ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)$S$(ORTOOLS_FSHARP_TEST_DLL_NAME).fsproj"
$(MKDIR_P) .$S$(TEMP_DOTNET_TEST_DIR)
$(COPY) $(BIN_DIR)$S$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX) .$S$(TEMP_DOTNET_TEST_DIR)
"$(DOTNET_BIN)" clean \
"ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)$S$(ORTOOLS_TEST_DLL_NAME).csproj"
"$(DOTNET_BIN)" build \
-o "..$S..$S..$S$(TEMP_DOTNET_TEST_DIR)" \
"ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)$S$(ORTOOLS_TEST_DLL_NAME).csproj"
"$(DOTNET_BIN)" clean \
"ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)$S$(ORTOOLS_FSHARP_TEST_DLL_NAME).fsproj"
"$(DOTNET_BIN)" build \
-o "..$S..$S..$S$(TEMP_DOTNET_TEST_DIR)" \
"ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)$S$(ORTOOLS_FSHARP_TEST_DLL_NAME).fsproj"
"$(DOTNET_BIN)" test \
--no-build -v n \
-o "..$S..$S..$S$(TEMP_DOTNET_TEST_DIR)" \
"ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)"
"$(DOTNET_BIN)" test \
--no-build -v n \
-o "..$S..$S..$S$(TEMP_DOTNET_TEST_DIR)" \
"ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)"
BUILT_LANGUAGES +=, dotnet \(netstandard2.0\)
endif
# Assembly Info
$(GEN_DIR)/ortools/properties:
$(MKDIR_P) $(GEN_PATH)$Sortools$Sproperties
$(PACKAGE_DIR):
$(MKDIR_P) $(PACKAGE_DIR)
$(GEN_DIR)/ortools/properties/GitVersion$(OR_TOOLS_VERSION).txt: \
| $(GEN_DIR)/ortools/properties
@echo $(OR_TOOLS_VERSION) > $(GEN_PATH)$Sortools$Sproperties$SGitVersion$(OR_TOOLS_VERSION).txt
$(TEMP_DOTNET_DIR):
$(MKDIR_P) $(TEMP_DOTNET_DIR)
# Detect RuntimeIDentifier
ifeq ($(OS),Windows)
RUNTIME_IDENTIFIER=win-x64
else
ifeq ($(OS),Linux)
RUNTIME_IDENTIFIER=linux-x64
else
ifeq ($(OS),Darwin)
RUNTIME_IDENTIFIER=osx-x64
else
$(error OS unknown !)
endif
endif
endif
# All libraries and dependecies
DOTNET_ORTOOLS_SNK := $(BIN_DIR)/or-tools.snk
DOTNET_ORTOOLS_SNK_PATH := $(subst /,$S,$(DOTNET_ORTOOLS_SNK))
OR_TOOLS_ASSEMBLY_NAME := Google.OrTools
OR_TOOLS_NATIVE_ASSEMBLY_NAME := runtime.$(RUNTIME_IDENTIFIER).$(OR_TOOLS_ASSEMBLY_NAME)
OR_TOOLS_FSHARP_ASSEMBLY_NAME := $(OR_TOOLS_ASSEMBLY_NAME).FSharp
DOTNET_ORTOOLS_NUPKG := $(PACKAGE_DIR)/$(OR_TOOLS_ASSEMBLY_NAME).$(OR_TOOLS_VERSION).nupkg
DOTNET_ORTOOLS_NATIVE_NUPKG := $(PACKAGE_DIR)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(OR_TOOLS_VERSION).nupkg
DOTNET_ORTOOLS_FSHARP_NUPKG := $(PACKAGE_DIR)/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).$(OR_TOOLS_VERSION).nupkg
.PHONY: csharp_dotnet # Build C# OR-Tools
csharp_dotnet: $(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D $(BIN_DIR)/$(CLR_PROTOBUF_DLL_NAME)$D
csharp_dotnet: $(DOTNET_ORTOOLS_NUPKG)
# Auto-generated code
$(BIN_DIR)/$(CLR_PROTOBUF_DLL_NAME)$D: tools/dotnet/$(CLR_PROTOBUF_DLL_NAME)$D | $(BIN_DIR)
$(COPY) tools$Sdotnet$S$(CLR_PROTOBUF_DLL_NAME)$D $(BIN_DIR)
$(GEN_DIR)/ortools/linear_solver/linear_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/linear_solver/csharp/linear_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(GLOP_DEPS) \
$(LP_DEPS) \
| $(GEN_DIR)/ortools/linear_solver
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_csharp_wrap.cc \
-module operations_research_linear_solver \
-namespace $(CLR_ORTOOLS_DLL_NAME).LinearSolver \
-dllimport "$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Slinear_solver \
$(SRC_DIR)$Sortools$Slinear_solver$Scsharp$Slinear_solver.i
$(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/linear_solver/linear_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Slinear_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/constraint_solver/constraint_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/constraint_solver/csharp/routing.i \
$(SRC_DIR)/ortools/constraint_solver/csharp/constraint_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SRC_DIR)/ortools/util/csharp/functions.i \
$(CP_DEPS) \
| $(GEN_DIR)/ortools/constraint_solver
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.cc \
-module operations_research_constraint_solver \
-namespace $(CLR_ORTOOLS_DLL_NAME).ConstraintSolver \
-dllimport "$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Sconstraint_solver \
$(SRC_DIR)$Sortools$Sconstraint_solver$Scsharp$Srouting.i
$(SED) -i -e 's/CSharp_new_Solver/CSharp_new_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_delete_Solver/CSharp_delete_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_Solver/CSharp_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_new_Constraint/CSharp_new_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_delete_Constraint/CSharp_delete_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_Constraint/CSharp_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(OBJ_DIR)/swig/constraint_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/constraint_solver/constraint_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sconstraint_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/algorithms/knapsack_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/algorithms/csharp/knapsack_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SRC_DIR)/ortools/algorithms/knapsack_solver.h \
| $(GEN_DIR)/ortools/algorithms
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_csharp_wrap.cc \
-module operations_research_algorithms \
-namespace $(CLR_ORTOOLS_DLL_NAME).Algorithms \
-dllimport "$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Salgorithms \
$(SRC_DIR)$Sortools$Salgorithms$Scsharp$Sknapsack_solver.i
$(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/algorithms/knapsack_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sknapsack_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/graph/graph_csharp_wrap.cc: \
$(SRC_DIR)/ortools/graph/csharp/graph.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(GRAPH_DEPS) \
| $(GEN_DIR)/ortools/graph $(GEN_DIR)/ortools/graph
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Sgraph$Sgraph_csharp_wrap.cc \
-module operations_research_graph \
-namespace $(CLR_ORTOOLS_DLL_NAME).Graph \
-dllimport "$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Sgraph \
$(SRC_DIR)$Sortools$Sgraph$Scsharp$Sgraph.i
$(OBJ_DIR)/swig/graph_csharp_wrap.$O: \
$(GEN_DIR)/ortools/graph/graph_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Sgraph$Sgraph_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sgraph_csharp_wrap.$O
$(GEN_DIR)/ortools/sat/sat_csharp_wrap.cc: \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/sat/csharp/sat.i \
$(SRC_DIR)/ortools/sat/swig_helper.h \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SAT_DEPS) \
| $(GEN_DIR)/ortools/sat $(GEN_DIR)/ortools/sat
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Ssat$Ssat_csharp_wrap.cc \
-module operations_research_sat \
-namespace $(CLR_ORTOOLS_DLL_NAME).Sat \
-dllimport "$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Ssat \
$(SRC_DIR)$Sortools$Ssat$Scsharp$Ssat.i
$(OBJ_DIR)/swig/sat_csharp_wrap.$O: \
$(GEN_DIR)/ortools/sat/sat_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Ssat$Ssat_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_csharp_wrap.$O
# Protobufs
# Protobufs generated code
$(GEN_DIR)/ortools/constraint_solver/SearchLimit.pb.cs: \
$(SRC_DIR)/ortools/constraint_solver/search_limit.proto \
| $(GEN_DIR)/ortools/constraint_solver
@@ -289,43 +147,147 @@ $(GEN_DIR)/ortools/sat/SatParameters.pb.cs: \
--csharp_opt=file_extension=.pb.cs \
$(SRC_DIR)$Sortools$Ssat$Ssat_parameters.proto
$(CLR_KEYFILE): $(SRC_DIR)/tools/dotnet/CreateSigningKey/CreateSigningKey.csproj | $(BIN_DIR)
"$(DOTNET_BIN)" run --project tools$Sdotnet$SCreateSigningKey$SCreateSigningKey.csproj $S$(CLR_KEYFILE_PATH)
# Auto-generated rid dependent source code
$(GEN_DIR)/ortools/linear_solver/linear_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/linear_solver/csharp/linear_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(GLOP_DEPS) \
$(LP_DEPS) \
| $(GEN_DIR)/ortools/linear_solver
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_csharp_wrap.cc \
-module operations_research_linear_solver \
-namespace $(OR_TOOLS_ASSEMBLY_NAME).LinearSolver \
-dllimport "$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Slinear_solver \
$(SRC_DIR)$Sortools$Slinear_solver$Scsharp$Slinear_solver.i
$(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D: \
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_DLL_NAME)/$(ORTOOLS_DLL_NAME).csproj \
$(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/linear_solver/linear_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Slinear_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/constraint_solver/constraint_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/constraint_solver/csharp/routing.i \
$(SRC_DIR)/ortools/constraint_solver/csharp/constraint_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SRC_DIR)/ortools/util/csharp/functions.i \
$(CP_DEPS) \
| $(GEN_DIR)/ortools/constraint_solver
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.cc \
-module operations_research_constraint_solver \
-namespace $(OR_TOOLS_ASSEMBLY_NAME).ConstraintSolver \
-dllimport "$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Sconstraint_solver \
$(SRC_DIR)$Sortools$Sconstraint_solver$Scsharp$Srouting.i
$(SED) -i -e 's/CSharp_new_Solver/CSharp_new_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_delete_Solver/CSharp_delete_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_Solver/CSharp_CpSolver/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_new_Constraint/CSharp_new_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_delete_Constraint/CSharp_delete_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(SED) -i -e 's/CSharp_Constraint/CSharp_CpConstraint/g' \
$(GEN_PATH)$Sortools$Sconstraint_solver$S*cs \
$(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.*
$(OBJ_DIR)/swig/constraint_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/constraint_solver/constraint_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sconstraint_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/algorithms/knapsack_solver_csharp_wrap.cc: \
$(SRC_DIR)/ortools/algorithms/csharp/knapsack_solver.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SRC_DIR)/ortools/algorithms/knapsack_solver.h \
| $(GEN_DIR)/ortools/algorithms
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_csharp_wrap.cc \
-module operations_research_algorithms \
-namespace $(OR_TOOLS_ASSEMBLY_NAME).Algorithms \
-dllimport "$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Salgorithms \
$(SRC_DIR)$Sortools$Salgorithms$Scsharp$Sknapsack_solver.i
$(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O: \
$(GEN_DIR)/ortools/algorithms/knapsack_solver_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sknapsack_solver_csharp_wrap.$O
$(GEN_DIR)/ortools/graph/graph_csharp_wrap.cc: \
$(SRC_DIR)/ortools/graph/csharp/graph.i \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(GRAPH_DEPS) \
| $(GEN_DIR)/ortools/graph $(GEN_DIR)/ortools/graph
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Sgraph$Sgraph_csharp_wrap.cc \
-module operations_research_graph \
-namespace $(OR_TOOLS_ASSEMBLY_NAME).Graph \
-dllimport "$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Sgraph \
$(SRC_DIR)$Sortools$Sgraph$Scsharp$Sgraph.i
$(OBJ_DIR)/swig/graph_csharp_wrap.$O: \
$(GEN_DIR)/ortools/graph/graph_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Sgraph$Sgraph_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Sgraph_csharp_wrap.$O
$(GEN_DIR)/ortools/sat/sat_csharp_wrap.cc: \
$(SRC_DIR)/ortools/base/base.i \
$(SRC_DIR)/ortools/sat/csharp/sat.i \
$(SRC_DIR)/ortools/sat/swig_helper.h \
$(SRC_DIR)/ortools/util/csharp/proto.i \
$(SAT_DEPS) \
| $(GEN_DIR)/ortools/sat $(GEN_DIR)/ortools/sat
$(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -csharp \
-o $(GEN_PATH)$Sortools$Ssat$Ssat_csharp_wrap.cc \
-module operations_research_sat \
-namespace $(OR_TOOLS_ASSEMBLY_NAME).Sat \
-dllimport "$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX)" \
-outdir $(GEN_PATH)$Sortools$Ssat \
$(SRC_DIR)$Sortools$Ssat$Scsharp$Ssat.i
$(OBJ_DIR)/swig/sat_csharp_wrap.$O: \
$(GEN_DIR)/ortools/sat/sat_csharp_wrap.cc \
| $(OBJ_DIR)/swig
$(CCC) $(CFLAGS) \
-c $(GEN_PATH)$Sortools$Ssat$Ssat_csharp_wrap.cc \
$(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_csharp_wrap.$O
$(DOTNET_ORTOOLS_SNK): $(SRC_DIR)/tools/dotnet/CreateSigningKey/CreateSigningKey.csproj | $(BIN_DIR)
"$(DOTNET_BIN)" run --project tools$Sdotnet$SCreateSigningKey$SCreateSigningKey.csproj $S$(DOTNET_ORTOOLS_SNK_PATH)
$(LIB_DIR)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX): \
$(OR_TOOLS_LIBS) \
$(BIN_DIR)/$(CLR_PROTOBUF_DLL_NAME)$D \
$(CLR_KEYFILE) \
$(SRC_DIR)/ortools/dotnet/OrTools/algorithms/IntArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/IntVarArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/IntervalVarArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/IntArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/NetDecisionBuilder.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/SolverHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/constraint_solver/ValCstPair.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/linear_solver/DoubleArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/linear_solver/LinearExpr.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/linear_solver/LinearConstraint.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/linear_solver/SolverHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/linear_solver/VariableHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/sat/CpModel.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/util/NestedArrayHelper.cs \
$(SRC_DIR)/ortools/dotnet/OrTools/util/ProtoHelper.cs \
$(GEN_DIR)/ortools/constraint_solver/Model.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/SearchLimit.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/SolverParameters.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/RoutingParameters.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/RoutingEnums.pb.cs \
$(GEN_DIR)/ortools/sat/CpModel.pb.cs \
$(OBJ_DIR)/swig/linear_solver_csharp_wrap.$O \
$(OBJ_DIR)/swig/sat_csharp_wrap.$O \
$(OBJ_DIR)/swig/constraint_solver_csharp_wrap.$O \
$(OBJ_DIR)/swig/knapsack_solver_csharp_wrap.$O \
$(OBJ_DIR)/swig/graph_csharp_wrap.$O \
| $(BIN_DIR)
| $(LIB_DIR)
$(DYNAMIC_LD) \
$(LD_OUT)$(BIN_DIR)$S$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX) \
$(LD_OUT)$(LIB_DIR)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX) \
$(OBJ_DIR)$Sswig$Slinear_solver_csharp_wrap.$O \
$(OBJ_DIR)$Sswig$Ssat_csharp_wrap.$O \
$(OBJ_DIR)$Sswig$Sconstraint_solver_csharp_wrap.$O \
@@ -333,41 +295,80 @@ $(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D: \
$(OBJ_DIR)$Sswig$Sgraph_csharp_wrap.$O \
$(OR_TOOLS_LNK) \
$(OR_TOOLS_LDFLAGS)
"$(DOTNET_BIN)" build -c Debug ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj
ifeq ($(SYSTEM),win)
$(COPY) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$Sbin$Sx64$SDebug$Snetstandard2.0$S*.* $(BIN_DIR)
else
$(COPY) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$Sbin$SDebug$Snetstandard2.0$S*.* $(BIN_DIR)
endif
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_DLL_NAME)/$(ORTOOLS_DLL_NAME).csproj: \
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_DLL_NAME)/$(ORTOOLS_DLL_NAME).csproj.in
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj: \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj.in
$(SED) -e "s/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/" \
ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj.in \
>ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj
ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj.in \
> ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj
$(DOTNET_ORTOOLS_NATIVE_NUPKG): \
$(DOTNET_ORTOOLS_SNK) \
$(LIB_DIR)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).$(SWIG_DOTNET_LIB_SUFFIX) \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)/$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj \
$(SRC_DIR)/ortools/algorithms/csharp/IntArrayHelper.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/IntVarArrayHelper.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/IntervalVarArrayHelper.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/IntArrayHelper.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/NetDecisionBuilder.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/SolverHelper.cs \
$(SRC_DIR)/ortools/constraint_solver/csharp/ValCstPair.cs \
$(SRC_DIR)/ortools/linear_solver/csharp/DoubleArrayHelper.cs \
$(SRC_DIR)/ortools/linear_solver/csharp/LinearExpr.cs \
$(SRC_DIR)/ortools/linear_solver/csharp/LinearConstraint.cs \
$(SRC_DIR)/ortools/linear_solver/csharp/SolverHelper.cs \
$(SRC_DIR)/ortools/linear_solver/csharp/VariableHelper.cs \
$(SRC_DIR)/ortools/sat/csharp/CpModel.cs \
$(SRC_DIR)/ortools/util/csharp/NestedArrayHelper.cs \
$(SRC_DIR)/ortools/util/csharp/ProtoHelper.cs \
$(GEN_DIR)/ortools/constraint_solver/Model.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/SearchLimit.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/SolverParameters.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/RoutingParameters.pb.cs \
$(GEN_DIR)/ortools/constraint_solver/RoutingEnums.pb.cs \
$(GEN_DIR)/ortools/sat/CpModel.pb.cs \
| $(PACKAGE_DIR)
"$(DOTNET_BIN)" build ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj
"$(DOTNET_BIN)" pack ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/$(OR_TOOLS_ASSEMBLY_NAME).csproj: \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/$(OR_TOOLS_ASSEMBLY_NAME).csproj.in
$(SED) -e "s/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/" \
ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj.in \
> ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/runtime.json: \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/runtime.json.in
$(SED) -e "s/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/" \
ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$Sruntime.json.in \
> ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$Sruntime.json
$(DOTNET_ORTOOLS_NUPKG): \
$(DOTNET_ORTOOLS_NATIVE_NUPKG) \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/$(OR_TOOLS_ASSEMBLY_NAME).csproj \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_ASSEMBLY_NAME)/runtime.json \
| $(PACKAGE_DIR)
"$(DOTNET_BIN)" build ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj
"$(DOTNET_BIN)" pack ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj
##############
## FSHARP ##
##############
.PHONY: fsharp_dotnet # Build F# OR-Tools
fsharp_dotnet: $(BIN_DIR)/$(CLR_ORTOOLS_FSHARP_DLL_NAME)$D
fsharp_dotnet: $(DOTNET_ORTOOLS_FSHARP_NUPKG)
$(BIN_DIR)/$(CLR_ORTOOLS_FSHARP_DLL_NAME)$D: \
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_FSHARP_DLL_NAME)/$(ORTOOLS_FSHARP_DLL_NAME).fsproj \
$(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D \
| $(BIN_DIR)
"$(DOTNET_BIN)" build -c Debug ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj
ifeq ($(SYSTEM),win)
$(COPY) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$Sbin$Sx64$SDebug$Snetstandard2.0$S*.* $(BIN_DIR)
else
$(COPY) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$Sbin$SDebug$Snetstandard2.0$S*.* $(BIN_DIR)
endif
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_FSHARP_DLL_NAME)/$(ORTOOLS_FSHARP_DLL_NAME).fsproj: \
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_FSHARP_DLL_NAME)/$(ORTOOLS_FSHARP_DLL_NAME).fsproj.in
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj: \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj.in
$(SED) -e "s/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/" \
ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj.in \
>ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj
ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj.in \
> ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj
$(DOTNET_ORTOOLS_FSHARP_NUPKG): \
$(DOTNET_ORTOOLS_NUPKG) \
$(SRC_DIR)/ortools/dotnet/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)/$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj \
| $(PACKAGE_DIR)
"$(DOTNET_BIN)" build ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj
"$(DOTNET_BIN)" pack ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj
#####################
## .NET Examples ##
@@ -389,16 +390,27 @@ rdotnet: $(BIN_DIR)/$(EX_NAME)$D
"$(DOTNET_BIN)" $(BIN_DIR)$S$(EX_NAME)$D
endif # ifeq ($(EX),)
$(BIN_DIR)/%$D: $(DOTNET_EX_DIR)/csharp/%.csproj $(DOTNET_EX_DIR)/csharp/%.cs \
$(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D | $(BIN_DIR)
"$(DOTNET_BIN)" build -o "..$S..$S..$S$(BIN_DIR)" \
$(TEMP_DOTNET_DIR)/%$D: \
$(DOTNET_EX_DIR)/csharp/%.csproj \
$(DOTNET_EX_DIR)/csharp/%.cs \
$(DOTNET_ORTOOLS_NUPKG) \
| $(TEMP_DOTNET_DIR)
"$(DOTNET_BIN)" build \
-o "..$S..$S..$S$(TEMP_DOTNET_DIR)" \
$(DOTNET_EX_PATH)$Scsharp$S$*.csproj
$(BIN_DIR)/%$D: $(DOTNET_EX_DIR)/fsharp/%.fsproj $(DOTNET_EX_DIR)/fsharp/%.fs \
$(BIN_DIR)/$(CLR_ORTOOLS_FSHARP_DLL_NAME)$D | $(BIN_DIR)
"$(DOTNET_BIN)" build -o "..$S..$S..$S$(BIN_DIR)" \
$(TEMP_DOTNET_DIR)/%$D: \
$(DOTNET_EX_DIR)/fsharp/%.fsproj \
$(DOTNET_EX_DIR)/fsharp/%.fs \
$(DOTNET_ORTOOLS_FSHARP_NUPKG) \
| $(BIN_DIR)
"$(DOTNET_BIN)" build \
-o "..$S..$S..$S$(TEMP_DOTNET_DIR)" \
$(DOTNET_EX_PATH)$Sfsharp$S$*.fsproj
rdotnet_%: $(DOTNET_EX_DIR)/csharp/%.csproj
"$(DOTNET_BIN)" run --project $(DOTNET_EX_PATH)$Scsharp$S$*.csproj -- $(ARGS)
################
## Cleaning ##
################
@@ -406,21 +418,18 @@ $(BIN_DIR)/%$D: $(DOTNET_EX_DIR)/fsharp/%.fsproj $(DOTNET_EX_DIR)/fsharp/%.fs \
clean_dotnet:
-$(DELREC) tools$Sdotnet$SCreateSigningKey$Sbin
-$(DELREC) tools$Sdotnet$SCreateSigningKey$Sobj
-$(DEL) $(CLR_KEYFILE_PATH)
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_TEST_DLL_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$Spackages
-$(DELREC) $(EX_PATH)$Sdotnet$Scsharp$Sbin
-$(DELREC) $(EX_PATH)$Sdotnet$Scsharp$Sobj
-$(DELREC) $(EX_PATH)$Sdotnet$Sfsharp$Sobj
-$(DEL) $(DOTNET_ORTOOLS_SNK_PATH)
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).csproj
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$Sruntime.json
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$Sobj
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).csproj
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$Sbin
-$(DELREC) ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$Sobj
-$(DELREC) $(PACKAGE_DIR)
-$(DEL) $(GEN_PATH)$Sortools$Salgorithms$S*.cs
-$(DEL) $(GEN_PATH)$Sortools$Salgorithms$S*csharp_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sgraph$S*.cs
@@ -432,44 +441,36 @@ clean_dotnet:
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*.cs
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*csharp_wrap*
-$(DEL) $(OBJ_DIR)$Sswig$S*_csharp_wrap.$O
-$(DEL) $(BIN_DIR)$S$(CLR_ORTOOLS_IMPORT_DLL_NAME).*
-$(DEL) $(BIN_DIR)$S$(CLR_PROTOBUF_DLL_NAME).*
-$(DEL) $(BIN_DIR)$S$(CLR_ORTOOLS_DLL_NAME).*
-$(DEL) $(BIN_DIR)$S$(CLR_ORTOOLS_FSHARP_DLL_NAME).*
-$(DEL) $(SRC_DIR)/ortools/dotnet/$(ORTOOLS_NUSPEC_FILE)
-$(DEL) $(LIB_DIR)$S$(OR_TOOLS_NATIVE_ASSEMBLY_NAME).*
-$(DEL) $(BIN_DIR)$S$(OR_TOOLS_ASSEMBLY_NAME).*
-$(DEL) $(BIN_DIR)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).*
-$(DELREC) $(EX_PATH)$Sdotnet$Scsharp$Sbin
-$(DELREC) $(EX_PATH)$Sdotnet$Scsharp$Sobj
-$(DELREC) $(EX_PATH)$Sdotnet$Sfsharp$Sbin
-$(DELREC) $(EX_PATH)$Sdotnet$Sfsharp$Sobj
-$(DELREC) $(TEMP_DOTNET_DIR)
-$(DELREC) $(TEMP_DOTNET_TEST_DIR)
-@"$(DOTNET_BIN)" nuget locals all --clear
######################
## Nuget artifact ##
######################
TEMP_DOTNET_DIR=temp_dotnet
$(TEMP_DOTNET_DIR):
$(MKDIR_P) $(TEMP_DOTNET_DIR)
$(SRC_DIR)/ortools/dotnet/$(ORTOOLS_NUSPEC_FILE): $(SRC_DIR)/ortools/dotnet/$(ORTOOLS_NUSPEC_FILE).in
$(SED) -e "s/@PROJECT_DLL_NAME@/$(CLR_ORTOOLS_DLL_NAME)/" \
ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE).in \
>ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE)
$(SED) -i -e "s/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/" \
ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE)
.PHONY: nuget_archive # Build .Net "Google.OrTools" Nuget Package
nuget_archive: dotnet $(SRC_DIR)/ortools/dotnet/$(ORTOOLS_NUSPEC_FILE) | $(TEMP_DOTNET_DIR)
nuget_archive: dotnet | $(TEMP_DOTNET_DIR)
"$(DOTNET_BIN)" publish -c Release --no-dependencies --no-restore -f netstandard2.0 \
-o "..$S..$S..$S$(TEMP_DOTNET_DIR)" \
ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj
ortools$Sdotnet$S$(OR_TOOLS_ASSEMBLY_NAME)$S$(OR_TOOLS_ASSEMBLY_NAME).csproj
"$(DOTNET_BIN)" publish -c Release --no-dependencies --no-restore -f netstandard2.0 \
-o "..$S..$S..$S$(TEMP_DOTNET_DIR)" \
ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj
ortools$Sdotnet$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME)$S$(OR_TOOLS_FSHARP_ASSEMBLY_NAME).fsproj
"$(DOTNET_BIN)" pack -c Release \
-o "..$S..$S..$S$(BIN_DIR)" \
ortools$Sdotnet
.PHONY: nuget_upload # Upload Nuget Package
nuget_upload: nuget_archive
@echo Uploading Nuget package for "netstandard2".
@echo Uploading Nuget package for "netstandard2.0".
$(warning Not Implemented)
#############
@@ -478,19 +479,17 @@ nuget_upload: nuget_archive
.PHONY: detect_dotnet # Show variables used to build dotnet OR-Tools.
detect_dotnet:
@echo Relevant info for the dotnet build:
@echo PROTOC = $(PROTOC)
@echo DOTNET_BIN = $(DOTNET_BIN)
@echo CLR_KEYFILE = $(CLR_KEYFILE)
@echo SWIG_PYTHON_LIB_SUFFIX = $(SWIG_PYTHON_LIB_SUFFIX)
@echo CLR_PROTOBUF_DLL_NAME = $(CLR_PROTOBUF_DLL_NAME)
@echo CLR_ORTOOLS_IMPORT_DLL_NAME = $(CLR_ORTOOLS_IMPORT_DLL_NAME)
@echo CLR_ORTOOLS_DLL_NAME = $(CLR_ORTOOLS_DLL_NAME)
@echo CLR_ORTOOLS_FSHARP_DLL_NAME = $(CLR_ORTOOLS_FSHARP_DLL_NAME)
@echo CLR_ORTOOLS_TEST_DLL_NAME = $(CLR_ORTOOLS_TEST_DLL_NAME)
@echo CLR_ORTOOLS_FSHARP_TEST_DLL_NAME = $(CLR_ORTOOLS_FSHARP_TEST_DLL_NAME)
@echo DOTNET_ORTOOLS_LIBS = $(DOTNET_ORTOOLS_LIBS)
@echo NUGET_BIN = $(NUGET_BIN)
@echo ORTOOLS_NUSPEC_FILE = $(ORTOOLS_NUSPEC_FILE)
@echo PROTOC = $(PROTOC)
@echo DOTNET_ORTOOLS_SNK = $(DOTNET_ORTOOLS_SNK)
@echo SWIG_DOTNET_LIB_SUFFIX = $(SWIG_DOTNET_LIB_SUFFIX)
@echo OR_TOOLS_NATIVE_ASSEMBLY_NAME = $(OR_TOOLS_NATIVE_ASSEMBLY_NAME)
@echo DOTNET_ORTOOLS_NATIVE_NUPKG = $(DOTNET_ORTOOLS_NATIVE_NUPKG)
@echo OR_TOOLS_ASSEMBLY_NAME = $(OR_TOOLS_ASSEMBLY_NAME)
@echo DOTNET_ORTOOLS_NUPKG = $(DOTNET_ORTOOLS_NUPKG)
@echo OR_TOOLS_FSHARP_ASSEMBLY_NAME = $(OR_TOOLS_FSHARP_ASSEMBLY_NAME)
@echo DOTNET_ORTOOLS_FSHARP_NUPKG = $(DOTNET_ORTOOLS_FSHARP_NUPKG)
ifeq ($(SYSTEM),win)
@echo off & echo(
else

View File

@@ -254,12 +254,10 @@ test_java_examples: java
$(MAKE) rjava_YoungTableaux
.PHONY: test_donet_examples
test_dotnet_examples: dotnet
# C# tests
"$(DOTNET_BIN)" $(BIN_DIR)$Sa_puzzle$D
"$(DOTNET_BIN)" $(BIN_DIR)$Stsp$D
# F# tests
"$(DOTNET_BIN)" $(BIN_DIR)$SProgram$D
test_dotnet_examples: dotnet \
rdotnet_a_puzzle \
rdotnet_tsp \
#rdotnet_Program
# csharp test
.PHONY: test_csharp_examples

View File

@@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<AssemblyTitle>Google.OrTools.FSharp</AssemblyTitle>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<AssemblyName>Google.OrTools.FSharp</AssemblyName>
<!-- Nuget Properties-->
<PackageId>Google.OrTools.FSharp</PackageId>
<Version>@PROJECT_VERSION@</Version>
<Authors>Google LLC</Authors>
<Description>.NET F# wrapper for the Operations Research Tools project</Description>
<Copyright>Copyright 2018 Google LLC</Copyright>
<PackageLicenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</PackageLicenseUrl>
<PackageProjectUrl>https://developers.google.com/optimization</PackageProjectUrl>
<PackageTags>math;LinearSolver;ConstraintSolver;ConstraintProgramming</PackageTags>
<PackageOutputPath>../../../packages</PackageOutputPath>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<AssemblyKeyFileAttribute>../../../bin/or-tools.snk</AssemblyKeyFileAttribute>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<!-- Build Properties -->
<IncludeBuildOutput>true</IncludeBuildOutput>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
<UseSharedCompilation>false</UseSharedCompilation>
<EnableDefaultCompileItems>true</EnableDefaultCompileItems>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugType>full</DebugType>
<Optimize>true</Optimize>
<GenerateTailCalls>true</GenerateTailCalls>
</PropertyGroup>
<PropertyGroup>
<RestoreSources>../../../packages;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.OrTools" Version="@PROJECT_VERSION@" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,158 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
<AssemblyName>Google.OrTools</AssemblyName>
<!-- Nuget Properties-->
<PackageId>Google.OrTools</PackageId>
<Version>@PROJECT_VERSION@</Version>
<Authors>Google LLC</Authors>
<Description>.NET wrapper for the Operations Research Tools project</Description>
<Copyright>Copyright 2018 Google LLC</Copyright>
<PackageLicenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</PackageLicenseUrl>
<PackageProjectUrl>https://developers.google.com/optimization</PackageProjectUrl>
<PackageTags>native;math;LinearSolver;ConstraintSolver;ConstraintProgramming</PackageTags>
<PackageOutputPath>../../../packages</PackageOutputPath>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<AssemblyOriginatorKeyFile>../../../bin/or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<!-- Build Properties -->
<!-- we want to create a Meta-Project only referencing runtime Project(s) -->
<IncludeBuildOutput>false</IncludeBuildOutput>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
<UseSharedCompilation>false</UseSharedCompilation>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
<!-- Check at least one reference assembly has been generated -->
<Target Name="ValidateRuntimeRef" BeforeTargets="Compile">
<ItemGroup>
<RefLinux Include="../runtime.linux-x64.Google.OrTools/bin/$(Configuration)/$(TargetFramework)/linux-x64/ref/*.dll" />
<RefOsx Include="../runtime.osx-x64.Google.OrTools/bin/$(Configuration)/$(TargetFramework)/osx-x64/ref/*.dll" />
<RefWin Include="../runtime.win-x64.Google.OrTools/bin/x64/$(Configuration)/$(TargetFramework)/win-x64/ref/*.dll" />
</ItemGroup>
<Message
Importance="high"
Text="RefAssembly from runtime.linux-x64.Google.OrTools: found"
Condition="Exists('@(RefLinux)')" />
<Message
Importance="high"
Text="RefAssembly from runtime.linux-x64.Google.OrTools: not found"
Condition="!Exists('@(RefLinux)')" />
<Message
Importance="high"
Text="RefAssembly from runtime.osx-x64.Google.OrTools: found"
Condition="Exists('@(RefOsx)')" />
<Message
Importance="high"
Text="RefAssembly from runtime.osx-x64.Google.OrTools: not found"
Condition="!Exists('@(RefOsx)')" />
<Message
Importance="high"
Text="RefAssembly from runtime.win-x64.Google.OrTools: found"
Condition="Exists('@(RefWin)')" />
<Message
Importance="high"
Text="RefAssembly from runtime.win-x64.Google.OrTools: not found"
Condition="!Exists('@(RefWin)')" />
<Error
Text="You must locally 'dotnet build' at least one runtime.{rid}.Google.OrTools Project."
Condition="!Exists('@(RefLinux)') AND !Exists('@(RefOsx)') AND !Exists('@(RefWin)')" />
</Target>
<!-- Need to copy one of the reference assembly generated -->
<ItemGroup>
<RefLinux Include="../runtime.linux-x64.Google.OrTools/bin/$(Configuration)/$(TargetFramework)/linux-x64/ref/*.dll" />
<RefOsx Include="../runtime.osx-x64.Google.OrTools/bin/$(Configuration)/$(TargetFramework)/osx-x64/ref/*.dll" />
<RefWin Include="../runtime.win-x64.Google.OrTools/bin/x64/$(Configuration)/$(TargetFramework)/win-x64/ref/*.dll" />
<Content
Include="@(RefLinux)"
Condition="Exists('@(RefLinux)')">
<PackagePath>ref/$(TargetFramework)/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content
Include="@(RefOsx)"
Condition="Exists('@(RefOsx)')">
<PackagePath>ref/$(TargetFramework)/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content
Include="@(RefWin)"
Condition="Exists('@(RefWin)')">
<PackagePath>ref/$(TargetFramework)/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!-- Check at least one runtime package has been generated -->
<Target Name="ValidateRuntimePack" BeforeTargets="GenerateNuspec">
<ItemGroup>
<RuntimeLinux Include="../../../packages/runtime.linux-x64.Google.OrTools.*.nupkg" />
<RuntimeOsx Include="../../../packages/runtime.osx-x64.Google.OrTools.*.nupkg" />
<RuntimeWin Include="../../../packages/runtime.win-x64.Google.OrTools.*.nupkg" />
</ItemGroup>
<Message
Importance="high"
Text="Package runtime.linux-x64.Google.OrTools: found"
Condition="Exists('@(RuntimeLinux)')" />
<Message
Importance="high"
Text="Package runtime.linux-x64.Google.OrTools: not found"
Condition="!Exists('@(RuntimeLinux)')" />
<Message
Importance="high"
Text="Package runtime.osx-x64.Google.OrTools: found"
Condition="Exists('@(RuntimeOsx)')" />
<Message
Importance="high"
Text="Package runtime.osx-x64.Google.OrTools: not found"
Condition="!Exists('@(RuntimeOsx)')" />
<Message
Importance="high"
Text="Package runtime.win-x64.Google.OrTools: found"
Condition="Exists('@(RuntimeWin)')" />
<Message
Importance="high"
Text="Package runtime.win-x64.Google.OrTools: not found"
Condition="!Exists('@(RuntimeWin)')" />
<Error
Text="You must locally 'dotnet pack' at least one runtime.{rid}.Google.OrTools Project."
Condition="!Exists('@(RuntimeLinux)') AND !Exists('@(RuntimeOsx)') AND !Exists('@(RuntimeWin)')" />
</Target>
<!-- Need to add some dependencies so Meta-Project will pull runtime Project(s) -->
<PropertyGroup>
<RestoreSources>../../../packages;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
</PropertyGroup>
<ItemGroup Condition="Exists('../../../packages/runtime.linux-x64.Google.OrTools.@PROJECT_VERSION@.nupkg')">
<PackageReference Include="runtime.linux-x64.Google.OrTools" Version="@PROJECT_VERSION@" />
</ItemGroup>
<ItemGroup Condition="Exists('../../../packages/runtime.osx-x64.Google.OrTools.@PROJECT_VERSION@.nupkg')">
<PackageReference Include="runtime.osx-x64.Google.OrTools" Version="@PROJECT_VERSION@" />
</ItemGroup>
<ItemGroup Condition="Exists('../../../packages/runtime.win-x64.Google.OrTools.@PROJECT_VERSION@.nupkg')">
<PackageReference Include="runtime.win-x64.Google.OrTools" Version="@PROJECT_VERSION@" />
</ItemGroup>
<ItemGroup>
<RuntimeLinux Include="../../../packages/runtime.linux-x64.Google.OrTools.*.nupkg" />
<RuntimeOsx Include="../../../packages/runtime.osx-x64.Google.OrTools.*.nupkg" />
<RuntimeWin Include="../../../packages/runtime.win-x64.Google.OrTools.*.nupkg" />
<Content
Include="runtime.json"
Condition="Exists('@(RuntimeLinux)') AND Exists('@(RuntimeOsx)') AND Exists('@(RuntimeWin)')">
<PackagePath>runtime.json</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,19 @@
{
"runtimes": {
"linux-x64": {
"Google.OrTools": {
"runtime.linux-x64.Google.OrTools": "@PROJECT_VERSION@"
}
},
"osx-x64": {
"Google.OrTools": {
"runtime.osx-x64.Google.OrTools": "@PROJECT_VERSION@"
}
},
"win-x64": {
"Google.OrTools": {
"runtime.win-x64.Google.OrTools": "@PROJECT_VERSION@"
}
}
}
}

View File

@@ -2,6 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<AssemblyName>Google.OrTools.FSharp.Tests</AssemblyName>
<RootNamespace>Google.OrTools.FSharp.Tests</RootNamespace>
</PropertyGroup>

View File

@@ -1,36 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../netfx.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
<AssemblyTitle>Google.OrTools.FSharp</AssemblyTitle>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<AssemblyName>Google.OrTools.FSharp</AssemblyName>
<NuspecFile>OrTools.FSharp.nuspec</NuspecFile>
<AssemblyOriginatorKeyFile>..\..\..\bin\or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Version>@PROJECT_VERSION@</Version>
<AssemblyVersion>@PROJECT_VERSION@</AssemblyVersion>
<FileVersion>@PROJECT_VERSION@</FileVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugType>full</DebugType>
<Optimize>true</Optimize>
<GenerateTailCalls>true</GenerateTailCalls>
</PropertyGroup>
<ItemGroup>
<Compile Include="OrTools.fs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Google.OrTools">
<HintPath>..\..\..\bin\Google.OrTools.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -1,7 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<AssemblyName>Google.OrTools.Tests</AssemblyName>
<RootNamespace>Google.OrTools.Tests</RootNamespace>
</PropertyGroup>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>@PROJECT_DLL_NAME@</id>
<version>@PROJECT_VERSION@</version>
<authors>Google Inc.</authors>
<licenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</licenseUrl>
<projectUrl>https://developers.google.com/optimization</projectUrl>
<description>.NET wrapper for the Operations Research Tools project</description>
<copyright>Copyright 2018 Google, Inc</copyright>
<tags>Operations Research Math Linear Constraint Programming C# F# .NETStandard</tags>
<references>
<reference file="Google.OrTools.dll" />
<reference file="Google.OrTools.FSharp.dll" />
</references>
</metadata>
<files>
<file src="../../temp_dotnet/**" target="lib/netstandard2.0"/>
<file src="OrTools/bin/Release/netstandard2.0/*.*" target="lib/netstandard2.0"/>
<file src="OrTools.FSharp/bin/Release/netstandard2.0/Google.OrTools.FSharp.*" target="lib/netstandard2.0"/>
<file src="../../bin/Google.Protobuf.dll" target="lib/netstandard2.0"/>
<file src="../../lib/*.*" target="lib/netstandard2.0" exclude="*.jar"/>
<file src="../../dependencies/install/lib/*.*" target="lib/netstandard2.0" exclude="*.jar;*.la"/>
<file src="../../dependencies/install/lib*/*.*" target="lib/netstandard2.0" exclude="*.jar;*.la"/>
<file src="../../LICENSE-2.0.txt"/>
<file src="../../examples/dotnet/**" target="examples" exclude="**/obj/**;**/bin/**"/>
</files>
</package>

View File

@@ -1,11 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Google.OrTools")]
[assembly: AssemblyDescription(".NET Assembly for the Operations Research Tools project")]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0a227c4c-8bb3-4db0-808f-55dae227d8c5")]

View File

@@ -1,52 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\netfx.props" />
<PropertyGroup>
<OutputType>Library</OutputType>
<AssemblyTitle>Google.OrTools</AssemblyTitle>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<AssemblyName>Google.OrTools</AssemblyName>
<UseSharedCompilation>False</UseSharedCompilation>
<NuspecFile>..\OrTools.nuspec</NuspecFile>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Version>@PROJECT_VERSION@</Version>
<AssemblyVersion>@PROJECT_VERSION@</AssemblyVersion>
<FileVersion>@PROJECT_VERSION@</FileVersion>
<RootNamespace>Google.OrTools</RootNamespace>
<AssemblyOriginatorKeyFile>..\..\..\bin\or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\ortools\gen\ortools\linear_solver\*.cs">
<Link>linear_solver\%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="..\..\..\ortools\gen\ortools\constraint_solver\*.cs">
<Link>constraint_solver\%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="..\..\..\ortools\gen\ortools\algorithms\*.cs">
<Link>algorithms\%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="..\..\..\ortools\gen\ortools\graph\*.cs">
<Link>graph\%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="..\..\..\ortools\gen\ortools\sat\*.cs">
<Link>sat\%(Filename)%(Extension)</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.5.1" />
</ItemGroup>
</Project>

View File

@@ -1,18 +1,15 @@
# Google OrTools
## Pre-requisites
- dotnet core 2.1
- .NET framework (mono, net46x)
- nuget
- .Net Core SDK >= 2.1.302
## Build
The library is compiled against `netstandard2.0`.
Either use the makefile or you can build in Visual Studio. The workflow is typically
`make test_fsharp` which will build both C# and F# libraries in debug mode. The output will be placed in `<OR_ROOT>/dotnet-test` folder. All tests will be run based on this folder. When you are ready to package the application `make dotnet` will change the version and install a release version in `bin` and in `build`.
`make test_dotnet` which will build both C# and F# libraries in debug mode. The output will be placed in `<OR_ROOT>/dotnet-test` folder. All tests will be run based on this folder. When you are ready to package the application `make dotnet` will change the version and install a release version in `bin` and in `build`.
## Examples
The Test projects show an example of building the application with `netcoreapp2.0`.
The F# example folder shows how to compile against the typical .NET Framework installed on machine. Before compiling be sure to run `nuget install -o ./packages` in the example folder.

View File

@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
The MIT License (MIT)
Copyright (c) Microsoft Corporation.
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- When compiling .NET SDK 2.0 projects targeting .NET 4.x on Mono using 'dotnet build' you -->
<!-- have to teach MSBuild where the Mono copy of the reference asssemblies is -->
<TargetIsMono Condition="$(TargetFramework.StartsWith('net4')) and '$(OS)' == 'Unix'">true</TargetIsMono>
<!-- Look in the standard install locations -->
<BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/Library/Frameworks/Mono.framework/Versions/Current/lib/mono')">/Library/Frameworks/Mono.framework/Versions/Current/lib/mono</BaseFrameworkPathOverrideForMono>
<BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/usr/lib/mono')">/usr/lib/mono</BaseFrameworkPathOverrideForMono>
<BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/usr/local/lib/mono')">/usr/local/lib/mono</BaseFrameworkPathOverrideForMono>
<!-- If we found Mono reference assemblies, then use them -->
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net45'">$(BaseFrameworkPathOverrideForMono)/4.5-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net451'">$(BaseFrameworkPathOverrideForMono)/4.5.1-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net452'">$(BaseFrameworkPathOverrideForMono)/4.5.2-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net46'">$(BaseFrameworkPathOverrideForMono)/4.6-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net461'">$(BaseFrameworkPathOverrideForMono)/4.6.1-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net462'">$(BaseFrameworkPathOverrideForMono)/4.6.2-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net47'">$(BaseFrameworkPathOverrideForMono)/4.7-api</FrameworkPathOverride>
<FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net471'">$(BaseFrameworkPathOverrideForMono)/4.7.1-api</FrameworkPathOverride>
<EnableFrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">true</EnableFrameworkPathOverride>
<!-- Add the Facades directory. Not sure how else to do this. Necessary at least for .NET 4.5 -->
<AssemblySearchPaths Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">$(FrameworkPathOverride)/Facades;$(AssemblySearchPaths)</AssemblySearchPaths>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,87 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<AssemblyName>Google.OrTools</AssemblyName>
<!-- Nuget Properties-->
<PackageId>runtime.linux-x64.Google.OrTools</PackageId>
<Version>@PROJECT_VERSION@</Version>
<Authors>Google LLC</Authors>
<Description>.NET native wrapper for the Operations Research Tools project</Description>
<Copyright>Copyright 2018 Google LLC</Copyright>
<PackageLicenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</PackageLicenseUrl>
<PackageProjectUrl>https://developers.google.com/optimization</PackageProjectUrl>
<PackageTags>native;math;LinearSolver;ConstraintSolver;ConstraintProgramming</PackageTags>
<PackageOutputPath>../../../packages</PackageOutputPath>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<AssemblyOriginatorKeyFile>../../../bin/or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<!-- Build Properties -->
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
<UseSharedCompilation>false</UseSharedCompilation>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<BuildOutputTargetFolder>runtimes/$(RuntimeIdentifier)/lib</BuildOutputTargetFolder>
</PropertyGroup>
<ItemGroup>
<Compile Include="../../gen/ortools/algorithms/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../algorithms/csharp/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/graph/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../graph/csharp/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/linear_solver/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../linear_solver/csharp/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/constraint_solver/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../constraint_solver/csharp/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/sat/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../sat/csharp/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../util/csharp/*.cs">
<Link>util/%(Filename)%(Extension)</Link>
</Compile>
<!-- Native library must be in native directory... -->
<Content Include="../../../dependencies/install/lib/*.so*">
<PackagePath>runtimes/linux-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="../../../lib/runtime.linux-x64.Google.OrTools.so; ../../../lib/libortools.so">
<PackagePath>runtimes/linux-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.5.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,85 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
<AssemblyName>Google.OrTools</AssemblyName>
<!-- Nuget Properties-->
<PackageId>runtime.osx-x64.Google.OrTools</PackageId>
<Version>@PROJECT_VERSION@</Version>
<Authors>Google LLC</Authors>
<Description>.NET native wrapper for the Operations Research Tools project</Description>
<Copyright>Copyright 2018 Google LLC</Copyright>
<PackageLicenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</PackageLicenseUrl>
<PackageProjectUrl>https://developers.google.com/optimization</PackageProjectUrl>
<PackageTags>native;math;LinearSolver;ConstraintSolver;ConstraintProgramming</PackageTags>
<PackageOutputPath>../../../packages</PackageOutputPath>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<AssemblyOriginatorKeyFile>../../../bin/or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
<UseSharedCompilation>false</UseSharedCompilation>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<BuildOutputTargetFolder>runtimes/$(RuntimeIdentifier)/lib</BuildOutputTargetFolder>
</PropertyGroup>
<ItemGroup>
<Compile Include="../../gen/ortools/algorithms/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../algorithms/csharp/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/graph/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../graph/csharp/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/linear_solver/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../linear_solver/csharp/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/constraint_solver/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../constraint_solver/csharp/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/sat/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../sat/csharp/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../util/csharp/*.cs">
<Link>util/%(Filename)%(Extension)</Link>
</Compile>
<!-- Native library must be in native directory... -->
<Content Include="../../../dependencies/install/lib/*.dylib*">
<PackagePath>runtimes/osx-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="../../../lib/runtime.osx-x64.Google.OrTools.dylib; ../../../lib/libortools.dylib">
<PackagePath>runtimes/osx-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.5.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,81 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<AssemblyName>Google.OrTools</AssemblyName>
<!-- Nuget Properties-->
<PackageId>runtime.win-x64.Google.OrTools</PackageId>
<Version>@PROJECT_VERSION@</Version>
<Authors>Google LLC</Authors>
<Description>.NET native wrapper for the Operations Research Tools project</Description>
<Copyright>Copyright 2018 Google LLC</Copyright>
<PackageLicenseUrl>https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt</PackageLicenseUrl>
<PackageProjectUrl>https://developers.google.com/optimization</PackageProjectUrl>
<PackageTags>native;math;LinearSolver;ConstraintSolver;ConstraintProgramming</PackageTags>
<PackageOutputPath>../../../packages</PackageOutputPath>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AssemblyOriginatorKeyFile>../../../bin/or-tools.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
<UseSharedCompilation>false</UseSharedCompilation>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<BuildOutputTargetFolder>runtimes/$(RuntimeIdentifier)/lib</BuildOutputTargetFolder>
</PropertyGroup>
<ItemGroup>
<Compile Include="../../gen/ortools/algorithms/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../algorithms/csharp/*.cs">
<Link>algorithms/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/graph/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../graph/csharp/*.cs">
<Link>graph/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/linear_solver/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../linear_solver/csharp/*.cs">
<Link>linear_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/constraint_solver/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../constraint_solver/csharp/*.cs">
<Link>constraint_solver/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../gen/ortools/sat/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../sat/csharp/*.cs">
<Link>sat/%(Filename)%(Extension)</Link>
</Compile>
<Compile Include="../../util/csharp/*.cs">
<Link>util/%(Filename)%(Extension)</Link>
</Compile>
<!-- Native library must be in native directory... -->
<!-- On windows libortools is built as static -->
<Content Include="../../../lib/runtime.win-x64.Google.OrTools.dll">
<PackagePath>runtimes/win-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.5.1" />
</ItemGroup>
</Project>

View File

@@ -16,7 +16,7 @@ namespace CreateSigningKey {
}
public static byte[] GenerateStrongNameKeyPair() {
using (var provider = new RSACryptoServiceProvider(1024)) {
using (var provider = new RSACryptoServiceProvider(4096)) {
return provider.ExportCspBlob(!provider.PublicOnly);
}
}

Binary file not shown.