From 496be1627aba0dcd4da9319861dddf84027794f6 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Fri, 13 Jul 2018 16:08:10 +0200 Subject: [PATCH] dotnet: rework input files --- .gitignore | 3 + makefiles/Makefile.dotnet.mk | 68 +++++++++++++------ ...FSharp.fsproj => OrTools.FSharp.fsproj.in} | 6 +- .../{OrTools.nuspec => OrTools.nuspec.in} | 8 ++- .../{OrTools.csproj => OrTools.csproj.in} | 6 +- 5 files changed, 62 insertions(+), 29 deletions(-) rename ortools/dotnet/OrTools.FSharp/{OrTools.FSharp.fsproj => OrTools.FSharp.fsproj.in} (87%) rename ortools/dotnet/{OrTools.nuspec => OrTools.nuspec.in} (71%) rename ortools/dotnet/OrTools/{OrTools.csproj => OrTools.csproj.in} (91%) diff --git a/.gitignore b/.gitignore index 3427d6c439b..415e18cd643 100644 --- a/.gitignore +++ b/.gitignore @@ -95,6 +95,9 @@ ortools/fsharp/**/packages examples/dotnet/**/bin examples/dotnet/**/obj +ortools/dotnet/OrTools/*.csproj +ortools/dotnet/OrTools.FSharp/*.fsproj +ortools/dotnet/*.nuspec ortools/dotnet/**/bin ortools/dotnet/**/obj ortools/dotnet/**/packages diff --git a/makefiles/Makefile.dotnet.mk b/makefiles/Makefile.dotnet.mk index 9880b14d1d6..12bcc104915 100644 --- a/makefiles/Makefile.dotnet.mk +++ b/makefiles/Makefile.dotnet.mk @@ -28,7 +28,6 @@ CLR_KEYFILE_PATH = $(subst /,$S,$(CLR_KEYFILE)) # relative to the project root folder TEMP_DOTNET_TEST_DIR=temp_dotnet_test -TEMP_DOTNET_DIR=temp_dotnet # Check for required build tools ifeq ($(SYSTEM), win) @@ -252,6 +251,11 @@ $(CLR_KEYFILE): | $(BIN_DIR) "$(DOTNET_BIN)" run --project tools$Sdotnet$SCreateSigningKey$SCreateSigningKey.csproj $S$(CLR_KEYFILE_PATH) # Main DLL +.PHONY: dotnet # Build OrTools for .NET +dotnet: ortoolslibs csharp_dotnet fsharp_dotnet + +BUILT_LANGUAGES +=, dotnet \(netstandard2.0\) + $(BIN_DIR)/$(CLR_ORTOOLS_DLL_NAME)$D: \ $(SRC_DIR)/ortools/dotnet/$(ORTOOLS_DLL_NAME)/$(ORTOOLS_DLL_NAME).csproj \ $(OR_TOOLS_LIBS) \ @@ -300,6 +304,15 @@ 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 + $(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 + +############## +## FSHARP ## +############## .PHONY: fsharp_dotnet # Build F# OR-Tools fsharp_dotnet: $(BIN_DIR)/$(CLR_ORTOOLS_FSHARP_DLL_NAME)$D @@ -314,6 +327,12 @@ 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 + $(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 + .PHONY: clean_dotnet # Clean files clean_dotnet: -$(DELREC) tools$Sdotnet$SCreateSigningKey$Sbin @@ -375,28 +394,32 @@ test_dotnet: dotnet -o "..$S..$S..$S$(TEMP_DOTNET_TEST_DIR)" \ "ortools$Sdotnet$S$(ORTOOLS_FSHARP_TEST_DLL_NAME)" -.PHONY: dotnet # Build OrTools for .NET -dotnet: ortoolslibs csharp_dotnet fsharp_dotnet - $(SED) -i -e "s/.*<\/Version>/$(OR_TOOLS_VERSION)<\/Version>/" ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj - $(SED) -i -e "s/.*<\/AssemblyVersion>/$(OR_TOOLS_VERSION)<\/AssemblyVersion>/" ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj - $(SED) -i -e "s/.*<\/FileVersion>/$(OR_TOOLS_VERSION)<\/FileVersion>/" ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj - $(SED) -i -e "s/.*<\/Version>/$(OR_TOOLS_VERSION)<\/Version>/" ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj - $(SED) -i -e "s/.*<\/AssemblyVersion>/$(OR_TOOLS_VERSION)<\/AssemblyVersion>/" ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj - $(SED) -i -e "s/.*<\/FileVersion>/$(OR_TOOLS_VERSION)<\/FileVersion>/" ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj - "$(DOTNET_BIN)" build -c Release -o $(BIN_DIR) ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj - "$(DOTNET_BIN)" build -c Release -o $(BIN_DIR) ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj - $(MKDIR_P) $(TEMP_DOTNET_DIR) - "$(DOTNET_BIN)" publish -c Release -o "..$S..$S..$S$(TEMP_DOTNET_DIR)" -f netstandard2.0 ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj - "$(DOTNET_BIN)" publish -c Release -o "..$S..$S..$S$(TEMP_DOTNET_DIR)" -f netstandard2.0 ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj - -BUILT_LANGUAGES +=, dotnet \(netstandard2.0\) +##################### +## Nuget artifact ## +##################### +TEMP_DOTNET_DIR=temp_dotnet -.PHONY: pkg_dotnet # Build Nuget Package -pkg_dotnet: - $(warning Not Implemented) +$(TEMP_DOTNET_DIR): + $(MKDIR_P) $(TEMP_DOTNET_DIR) -.PHONY: pkg_dotnet-upload # Upload Nuget Package -pkg_dotnet-upload: nuget_archive +.PHONY: nuget_archive # Build .Net "Google.OrTools" Nuget Package +nuget_archive: dotnet $(SRC_DIR)/ortools/dotnet/$(ORTOOLS_NUSPEC_FILE).in | $(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 + "$(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 + $(SED) -e "s/MMMM/$(CLR_ORTOOLS_DLL_NAME)/" \ + ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE).in \ + >ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE) + $(SED) -i -e "s/VVVV/$(OR_TOOLS_VERSION)/" \ + ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE) + "$(NUGET_BIN)" pack ortools$Sdotnet$S$(ORTOOLS_NUSPEC_FILE) + +.PHONY: nuget_upload # Upload Nuget Package +nuget_upload: nuget_archive + @echo Uploading Nuget package for "netstandard2". $(warning Not Implemented) .PHONY: detect_dotnet # Show variables used to build dotnet OR-Tools. @@ -405,7 +428,6 @@ detect_dotnet: @echo PROTOC = $(PROTOC) @echo DOTNET_BIN = $(DOTNET_BIN) @echo CLR_KEYFILE = $(CLR_KEYFILE) - @echo NUGET_BIN = $(NUGET_BIN) @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) @@ -413,6 +435,8 @@ detect_dotnet: @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 NUGET_BIN = $(NUGET_BIN) + @echo ORTOOLS_NUSPEC_FILE = $(ORTOOLS_NUSPEC_FILE) ifeq ($(SYSTEM),win) @echo off & echo( else diff --git a/ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj b/ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj.in similarity index 87% rename from ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj rename to ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj.in index 3742a7a64c6..159f3af8c0e 100644 --- a/ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj +++ b/ortools/dotnet/OrTools.FSharp/OrTools.FSharp.fsproj.in @@ -14,9 +14,9 @@ false - 6.7.5238 - 6.7.5238 - 6.7.5238 + @PROJECT_VERSION@ + @PROJECT_VERSION@ + @PROJECT_VERSION@ diff --git a/ortools/dotnet/OrTools.nuspec b/ortools/dotnet/OrTools.nuspec.in similarity index 71% rename from ortools/dotnet/OrTools.nuspec rename to ortools/dotnet/OrTools.nuspec.in index f1eebf45445..861c0f51fd0 100644 --- a/ortools/dotnet/OrTools.nuspec +++ b/ortools/dotnet/OrTools.nuspec.in @@ -9,12 +9,18 @@ .NET wrapper for the Operations Research Tools project Copyright 2018 Google, Inc Operations Research Math Linear Constraint Programming C# F# .NETStandard + + + + + + + - \ No newline at end of file + diff --git a/ortools/dotnet/OrTools/OrTools.csproj b/ortools/dotnet/OrTools/OrTools.csproj.in similarity index 91% rename from ortools/dotnet/OrTools/OrTools.csproj rename to ortools/dotnet/OrTools/OrTools.csproj.in index 88704efb1f9..121cff58131 100644 --- a/ortools/dotnet/OrTools/OrTools.csproj +++ b/ortools/dotnet/OrTools/OrTools.csproj.in @@ -13,9 +13,9 @@ false - 6.7.5238 - 6.7.5238 - 6.7.5238 + @PROJECT_VERSION@ + @PROJECT_VERSION@ + @PROJECT_VERSION@ Google.OrTools