diff --git a/makefiles/Makefile.dotnet.mk b/makefiles/Makefile.dotnet.mk index a9dd170db9..181459ad97 100644 --- a/makefiles/Makefile.dotnet.mk +++ b/makefiles/Makefile.dotnet.mk @@ -314,6 +314,47 @@ $(OBJ_DIR)/swig/sorted_interval_list_csharp_wrap.$O: \ -c $(GEN_PATH)$Sortools$Sutil$Ssorted_interval_list_csharp_wrap.cc \ $(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssorted_interval_list_csharp_wrap.$O +################### +## .NET SOURCE ## +################### +# .Net C# +ifeq ($(SOURCE_SUFFIX),.cs) # Those rules will be used if SOURCE contain a .cs file + +SOURCE_PROJECT_DIR := $(SOURCE) +SOURCE_PROJECT_DIR := $(subst /$(SOURCE_NAME).cs,, $(SOURCE_PROJECT_DIR)) +SOURCE_PROJECT_PATH = $(subst /,$S,$(SOURCE_PROJECT_DIR)) + +.PHONY: build # Build a .Net C# program. +build: $(SOURCE) $(SOURCE)proj $(DOTNET_ORTOOLS_NUPKG) + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" build -c Release $(ARGS) + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" pack -c Release + +.PHONY: run # Run a .Net C# program (using 'dotnet run'). +run: build + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" run --no-build -c Release $(ARGS) + +.PHONY: run_test # Run a .Net C# program (using 'dotnet test'). +run_test: build + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" test --no-build -c Release $(ARGS) +endif + +# .Net F# +ifeq ($(SOURCE_SUFFIX),.fs) # Those rules will be used if SOURCE contain a .cs file + +SOURCE_PROJECT_DIR := $(SOURCE) +SOURCE_PROJECT_DIR := $(subst /$(SOURCE_NAME).fs,, $(SOURCE_PROJECT_DIR)) +SOURCE_PROJECT_PATH = $(subst /,$S,$(SOURCE_PROJECT_DIR)) + +.PHONY: build # Build a .Net F# program (using 'dotnet test'). +build: $(SOURCE) $(SOURCE)proj $(FSHARP_ORTOOLS_NUPKG) + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" build -c Release + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" pack -c Release + +.PHONY: run # Run a .Net F# program (using 'dotnet test'). +run: build + cd $(SOURCE_PROJECT_PATH) && "$(DOTNET_BIN)" run --no-build -c Release $(ARGS) +endif + ################### ## Nuget package ## ################### @@ -496,58 +537,57 @@ test_dotnet_fsharp: $(FSHARP_ORTOOLS_NUPKG) \ "$(DOTNET_BIN)" build $(DOTNET_BUILD_ARGS) $(TEMP_DOTNET_DIR)$S$(FSHARP_ORTOOLS_TESTS_ASSEMBLY_NAME)$S$(FSHARP_ORTOOLS_TESTS_ASSEMBLY_NAME).fsproj "$(DOTNET_BIN)" test $(DOTNET_BUILD_ARGS) $(TEMP_DOTNET_DIR)$S$(FSHARP_ORTOOLS_TESTS_ASSEMBLY_NAME) -################### -## .NET SOURCE ## -################### -# .Net C# -ifeq ($(SOURCE_SUFFIX),.cs) # Those rules will be used if SOURCE contain a .cs file -ifeq (,$(wildcard $(SOURCE)proj)) -$(error File "$(SOURCE)proj" does not exist !) -endif - -.PHONY: build # Build a .Net C# program. -build: $(SOURCE) $(SOURCE)proj $(DOTNET_ORTOOLS_NUPKG) - "$(DOTNET_BIN)" build $(SOURCE_PATH)proj - -.PHONY: run # Run a .Net C# program (using 'dotnet run'). -run: build - "$(DOTNET_BIN)" run --no-build $(ARGS) --project $(SOURCE_PATH)proj - -.PHONY: run_test # Run a .Net C# program (using 'dotnet test'). -run_test: build - "$(DOTNET_BIN)" test --no-build $(ARGS) $(SOURCE_PATH)proj -endif - -# .Net F# -ifeq ($(SOURCE_SUFFIX),.fs) # Those rules will be used if SOURCE contain a .cs file -ifeq (,$(wildcard $(SOURCE)proj)) -$(error File "$(SOURCE)proj" does not exist !) -endif - -.PHONY: build # Build a .Net F# program. -build: $(SOURCE) $(SOURCE)proj $(FSHARP_ORTOOLS_NUPKG) - "$(DOTNET_BIN)" build $(SOURCE_PATH)proj - -.PHONY: run # Run a .Net F# program. -run: build - "$(DOTNET_BIN)" run --no-build --project $(SOURCE_PATH)proj -- $(ARGS) -endif - +############################# +## .NET Examples/Samples ## +############################# DOTNET_SAMPLES := algorithms graph constraint_solver linear_solver sat define dotnet-sample-target = $$(TEMP_DOTNET_DIR)/$1: | $$(TEMP_DOTNET_DIR) -$$(MKDIR) $$(TEMP_DOTNET_DIR)$$S$1 +$$(TEMP_DOTNET_DIR)/$1/%: \ + $$(SRC_DIR)/ortools/$1/samples/%.cs \ + | $$(TEMP_DOTNET_DIR)/$1 + -$$(MKDIR) $$(TEMP_DOTNET_DIR)$$S$1$$S$$* + +$$(TEMP_DOTNET_DIR)/$1/%/%.csproj: \ + $${SRC_DIR}/ortools/dotnet/Sample.csproj.in \ + | $$(TEMP_DOTNET_DIR)/$1/% + $$(SED) -e "s/@DOTNET_PACKAGES_DIR@/..\/..\/packages/" \ + ortools$$Sdotnet$$SSample.csproj.in \ + > $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@DOTNET_PROJECT@/$$(DOTNET_ORTOOLS_ASSEMBLY_NAME)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@SAMPLE_NAME@/$$*/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION@/$$(OR_TOOLS_VERSION)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$$(OR_TOOLS_MAJOR)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$$(OR_TOOLS_MINOR)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$$(GIT_REVISION)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@FILE_NAME@/$$*.cs/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + +$$(TEMP_DOTNET_DIR)/$1/%/%.cs: \ + $$(SRC_DIR)/ortools/$1/samples/%.cs \ + | $$(TEMP_DOTNET_DIR)/$1/% + $$(COPY) $$(SRC_DIR)$$Sortools$$S$1$$Ssamples$$S$$*.cs \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$* + rdotnet_%: \ $(DOTNET_ORTOOLS_NUPKG) \ - $$(SRC_DIR)/ortools/$1/samples/%.cs \ - $$(SRC_DIR)/ortools/$1/samples/%.csproj \ + $$(TEMP_DOTNET_DIR)/$1/%/%.csproj \ + $$(TEMP_DOTNET_DIR)/$1/%/%.cs \ FORCE - $(MAKE) run SOURCE=ortools/$1/samples/$$*.cs $$(ARGS) + cd $$(TEMP_DOTNET_DIR)$$S$1$$S$$* && "$$(DOTNET_BIN)" build -c Release + cd $$(TEMP_DOTNET_DIR)$$S$1$$S$$* && "$$(DOTNET_BIN)" run --no-build -c Release $$(ARGS) endef -$(foreach sample,$(DOTNET_SAMPLES),$(eval $(call dotnet-sample-target,$(sample),$(subst _,,$(sample))))) +$(foreach sample,$(DOTNET_SAMPLES),$(eval $(call dotnet-sample-target,$(sample)))) DOTNET_EXAMPLES := contrib dotnet @@ -555,101 +595,165 @@ define dotnet-example-target = $$(TEMP_DOTNET_DIR)/$1: | $$(TEMP_DOTNET_DIR) -$$(MKDIR) $$(TEMP_DOTNET_DIR)$$S$1 +$$(TEMP_DOTNET_DIR)/$1/%: \ + $$(SRC_DIR)/examples/$1/%.cs \ + | $$(TEMP_DOTNET_DIR)/$1 + -$$(MKDIR) $$(TEMP_DOTNET_DIR)$$S$1$$S$$* + +$$(TEMP_DOTNET_DIR)/$1/%/%.csproj: \ + $${SRC_DIR}/ortools/dotnet/Sample.csproj.in \ + | $$(TEMP_DOTNET_DIR)/$1/% + $$(SED) -e "s/@DOTNET_PACKAGES_DIR@/..\/..\/packages/" \ + ortools$$Sdotnet$$SSample.csproj.in \ + > $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@DOTNET_PROJECT@/$$(DOTNET_ORTOOLS_ASSEMBLY_NAME)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@SAMPLE_NAME@/$$*/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION@/$$(OR_TOOLS_VERSION)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$$(OR_TOOLS_MAJOR)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$$(OR_TOOLS_MINOR)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$$(GIT_REVISION)/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + $$(SED) -i -e 's/@FILE_NAME@/$$*.cs/' \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$*$$S$$*.csproj + +$$(TEMP_DOTNET_DIR)/$1/%/%.cs: \ + $$(SRC_DIR)/examples/$1/%.cs \ + | $$(TEMP_DOTNET_DIR)/$1/% + $$(COPY) $$(SRC_DIR)$$Sortools$$S$1$$Ssamples$$S$$*.cs \ + $$(TEMP_DOTNET_DIR)$$S$1$$S$$* + rdotnet_%: \ $(DOTNET_ORTOOLS_NUPKG) \ - $$(SRC_DIR)/examples/$1/%.cs \ - $$(SRC_DIR)/examples/$1/%.csproj \ + $$(TEMP_DOTNET_DIR)/$1/%/%.csproj \ + $$(TEMP_DOTNET_DIR)/$1/%/%.cs \ FORCE - $(MAKE) run SOURCE=examples/$1/$$*.cs $$(ARGS) + cd $$(TEMP_DOTNET_DIR)$$S$1$$S$$* && "$$(DOTNET_BIN)" build -c Release + cd $$(TEMP_DOTNET_DIR)$$S$1$$S$$* && "$$(DOTNET_BIN)" test --no-build -c Release $$(ARGS) endef $(foreach example,$(DOTNET_EXAMPLES),$(eval $(call dotnet-example-target,$(example)))) DOTNET_TESTS := tests -define dotnet-test-target = -$$(TEMP_DOTNET_DIR)/$1: | $$(TEMP_DOTNET_DIR) - -$$(MKDIR) $$(TEMP_DOTNET_DIR)$$S$1 +$(TEMP_DOTNET_DIR)/tests: | $(TEMP_DOTNET_DIR) + -$(MKDIR) $(TEMP_DOTNET_DIR)$Stests + +$(TEMP_DOTNET_DIR)/tests/%: \ + $(SRC_DIR)/examples/tests/%.cs \ + | $(TEMP_DOTNET_DIR)/tests + -$(MKDIR) $(TEMP_DOTNET_DIR)$Stests$S$* + +$(TEMP_DOTNET_DIR)/tests/%/%.csproj: \ + ${SRC_DIR}/ortools/dotnet/Test.csproj.in \ + | $(TEMP_DOTNET_DIR)/tests/% + $(SED) -e "s/@DOTNET_PACKAGES_DIR@/..\/..\/packages/" \ + ortools$Sdotnet$STest.csproj.in \ + > $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@DOTNET_PROJECT@/$(DOTNET_ORTOOLS_ASSEMBLY_NAME)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@TEST_NAME@/$*/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$(OR_TOOLS_MAJOR)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$(OR_TOOLS_MINOR)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$(GIT_REVISION)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@DOTNET_PROJECT@/$(DOTNET_ORTOOLS_PROJECT)/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + $(SED) -i -e 's/@FILE_NAME@/$*.cs/' \ + $(TEMP_DOTNET_DIR)$Stests$S$*$S$*.csproj + +$(TEMP_DOTNET_DIR)/tests/%/%.cs: \ + $(SRC_DIR)/examples/tests/%.cs \ + | $(TEMP_DOTNET_DIR)/tests/% + $(COPY) $(SRC_DIR)$Sexamples$Stests$S$*.cs \ + $(TEMP_DOTNET_DIR)$Stests$S$* rdotnet_%: \ $(DOTNET_ORTOOLS_NUPKG) \ - $$(SRC_DIR)/examples/$1/%.cs \ - $$(SRC_DIR)/examples/$1/%.csproj \ + $(TEMP_DOTNET_DIR)/tests/%/%.cs \ + $(TEMP_DOTNET_DIR)/tests/%/%.csproj \ FORCE - $(MAKE) run_test SOURCE=examples/$1/$$*.cs $$(ARGS) -endef - -$(foreach example,$(DOTNET_TESTS),$(eval $(call dotnet-test-target,$(example)))) + cd $(TEMP_DOTNET_DIR)$Stests$S$* && "$(DOTNET_BIN)" build -c Release + cd $(TEMP_DOTNET_DIR)$Stests$S$* && "$(DOTNET_BIN)" test --no-build -c Release $(ARGS) ############################# ## .NET Examples/Samples ## ############################# .PHONY: test_dotnet_algorithms_samples # Build and Run all .Net LP Samples (located in ortools/algorithms/samples) -test_dotnet_algorithms_samples: - $(MAKE) run SOURCE=ortools/algorithms/samples/Knapsack.cs +test_dotnet_algorithms_samples: \ + rdotnet_Knapsack .PHONY: test_dotnet_constraint_solver_samples # Build and Run all .Net CP Samples (located in ortools/constraint_solver/samples) -test_dotnet_constraint_solver_samples: - $(MAKE) run SOURCE=ortools/constraint_solver/samples/SimpleCpProgram.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/SimpleRoutingProgram.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/Tsp.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/TspCities.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/TspCircuitBoard.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/TspDistanceMatrix.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/Vrp.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpBreaks.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpCapacity.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpDropNodes.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpGlobalSpan.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpInitialRoutes.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpPickupDelivery.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpPickupDeliveryFifo.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpPickupDeliveryLifo.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpResources.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpStartsEnds.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpTimeWindows.cs - $(MAKE) run SOURCE=ortools/constraint_solver/samples/VrpWithTimeLimit.cs +test_dotnet_constraint_solver_samples: \ + rdotnet_SimpleCpProgram \ + rdotnet_SimpleRoutingProgram \ + rdotnet_Tsp \ + rdotnet_TspCities \ + rdotnet_TspCircuitBoard \ + rdotnet_TspDistanceMatrix \ + rdotnet_Vrp \ + rdotnet_VrpBreaks \ + rdotnet_VrpCapacity \ + rdotnet_VrpDropNodes \ + rdotnet_VrpGlobalSpan \ + rdotnet_VrpInitialRoutes \ + rdotnet_VrpPickupDelivery \ + rdotnet_VrpPickupDeliveryFifo \ + rdotnet_VrpPickupDeliveryLifo \ + rdotnet_VrpResources \ + rdotnet_VrpStartsEnds \ + rdotnet_VrpTimeWindows \ + rdotnet_VrpWithTimeLimit .PHONY: test_dotnet_graph_samples # Build and Run all .Net LP Samples (located in ortools/graph/samples) -test_dotnet_graph_samples: ; - $(MAKE) run SOURCE=ortools/graph/samples/SimpleMaxFlowProgram.cs - $(MAKE) run SOURCE=ortools/graph/samples/SimpleMinCostFlowProgram.cs +test_dotnet_graph_samples: \ + rdotnet_SimpleMaxFlowProgram \ + rdotnet_SimpleMinCostFlowProgram \ .PHONY: test_dotnet_linear_solver_samples # Build and Run all .Net LP Samples (located in ortools/linear_solver/samples) -test_dotnet_linear_solver_samples: - $(MAKE) run SOURCE=ortools/linear_solver/samples/AssignmentMip.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/BasicExample.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/BinPackingMip.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/LinearProgrammingExample.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/MipVarArray.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/MultipleKnapsackMip.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/SimpleLpProgram.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/SimpleMipProgram.cs - $(MAKE) run SOURCE=ortools/linear_solver/samples/StiglerDiet.cs +test_dotnet_linear_solver_samples: \ + rdotnet_AssignmentMip \ + rdotnet_BasicExample \ + rdotnet_BinPackingMip \ + rdotnet_LinearProgrammingExample \ + rdotnet_MipVarArray \ + rdotnet_MultipleKnapsackMip \ + rdotnet_SimpleLpProgram \ + rdotnet_SimpleMipProgram \ + rdotnet_StiglerDiet .PHONY: test_dotnet_sat_samples # Build and Run all .Net SAT Samples (located in ortools/sat/samples) -test_dotnet_sat_samples: - $(MAKE) run SOURCE=ortools/sat/samples/AssignmentSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/AssumptionsSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/BinPackingProblemSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/BoolOrSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/ChannelingSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/CpIsFunSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/EarlinessTardinessCostSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/IntervalSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/LiteralSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/NoOverlapSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/OptionalIntervalSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/RabbitsAndPheasantsSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/RankingSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/ReifiedSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/SearchForAllSolutionsSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/SimpleSatProgram.cs - $(MAKE) run SOURCE=ortools/sat/samples/SolutionHintingSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/SolveAndPrintIntermediateSolutionsSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/SolveWithTimeLimitSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/StepFunctionSampleSat.cs - $(MAKE) run SOURCE=ortools/sat/samples/StopAfterNSolutionsSampleSat.cs +test_dotnet_sat_samples: \ + rdotnet_AssignmentSat \ + rdotnet_AssumptionsSampleSat \ + rdotnet_BinPackingProblemSat \ + rdotnet_BoolOrSampleSat \ + rdotnet_ChannelingSampleSat \ + rdotnet_CpIsFunSat \ + rdotnet_EarlinessTardinessCostSampleSat \ + rdotnet_IntervalSampleSat \ + rdotnet_LiteralSampleSat \ + rdotnet_NoOverlapSampleSat \ + rdotnet_OptionalIntervalSampleSat \ + rdotnet_RabbitsAndPheasantsSat \ + rdotnet_RankingSampleSat \ + rdotnet_ReifiedSampleSat \ + rdotnet_SearchForAllSolutionsSampleSat \ + rdotnet_SimpleSatProgram \ + rdotnet_SolutionHintingSampleSat \ + rdotnet_SolveAndPrintIntermediateSolutionsSampleSat \ + rdotnet_SolveWithTimeLimitSampleSat \ + rdotnet_StepFunctionSampleSat \ + rdotnet_StopAfterNSolutionsSampleSat .PHONY: check_dotnet_pimpl check_dotnet_pimpl: \ @@ -660,159 +764,159 @@ check_dotnet_pimpl: \ test_dotnet_sat_samples \ .PHONY: test_dotnet_tests # Build and Run all .Net Tests (located in examples/test) -test_dotnet_tests: - $(MAKE) run_test SOURCE=examples/tests/LinearSolverTests.cs - $(MAKE) run_test SOURCE=examples/tests/ConstraintSolverTests.cs - $(MAKE) run_test SOURCE=examples/tests/RoutingSolverTests.cs - $(MAKE) run_test SOURCE=examples/tests/SatSolverTests.cs - $(MAKE) run_test SOURCE=examples/tests/issue18.cs - $(MAKE) run_test SOURCE=examples/tests/issue22.cs - $(MAKE) run_test SOURCE=examples/tests/issue33.cs +test_dotnet_tests: \ + rdotnet_LinearSolverTests \ + rdotnet_ConstraintSolverTests \ + rdotnet_RoutingSolverTests \ + rdotnet_SatSolverTests \ + rdotnet_issue18 \ + rdotnet_issue22 \ + rdotnet_issue33 .PHONY: test_dotnet_contrib # Build and Run all .Net Examples (located in examples/contrib) -test_dotnet_contrib: - $(MAKE) run SOURCE=examples/contrib/3_jugs_regular.cs - $(MAKE) run SOURCE=examples/contrib/a_puzzle.cs - $(MAKE) run SOURCE=examples/contrib/a_round_of_golf.cs - $(MAKE) run SOURCE=examples/contrib/all_interval.cs - $(MAKE) run SOURCE=examples/contrib/alldifferent_except_0.cs - $(MAKE) run SOURCE=examples/contrib/assignment.cs - $(MAKE) run SOURCE=examples/contrib/broken_weights.cs - $(MAKE) run SOURCE=examples/contrib/bus_schedule.cs - $(MAKE) run SOURCE=examples/contrib/circuit.cs - $(MAKE) run SOURCE=examples/contrib/circuit2.cs - $(MAKE) run SOURCE=examples/contrib/coins3.cs - $(MAKE) run SOURCE=examples/contrib/coins_grid.cs ARGS="5 2" - $(MAKE) run SOURCE=examples/contrib/combinatorial_auction2.cs - $(MAKE) run SOURCE=examples/contrib/contiguity_regular.cs - $(MAKE) run SOURCE=examples/contrib/contiguity_transition.cs - $(MAKE) run SOURCE=examples/contrib/costas_array.cs - $(MAKE) run SOURCE=examples/contrib/covering_opl.cs - $(MAKE) run SOURCE=examples/contrib/crew.cs - $(MAKE) run SOURCE=examples/contrib/crossword.cs - $(MAKE) run SOURCE=examples/contrib/crypta.cs - $(MAKE) run SOURCE=examples/contrib/crypto.cs - $(MAKE) run SOURCE=examples/contrib/csdiet.cs - $(MAKE) run SOURCE=examples/contrib/curious_set_of_integers.cs - $(MAKE) run SOURCE=examples/contrib/debruijn.cs - $(MAKE) run SOURCE=examples/contrib/discrete_tomography.cs - $(MAKE) run SOURCE=examples/contrib/divisible_by_9_through_1.cs - $(MAKE) run SOURCE=examples/contrib/dudeney.cs - $(MAKE) run SOURCE=examples/contrib/einav_puzzle2.cs - $(MAKE) run SOURCE=examples/contrib/eq10.cs - $(MAKE) run SOURCE=examples/contrib/eq20.cs - $(MAKE) run SOURCE=examples/contrib/fill_a_pix.cs - $(MAKE) run SOURCE=examples/contrib/furniture_moving.cs - $(MAKE) run SOURCE=examples/contrib/futoshiki.cs - $(MAKE) run SOURCE=examples/contrib/golomb_ruler.cs - $(MAKE) run SOURCE=examples/contrib/grocery.cs - $(MAKE) run SOURCE=examples/contrib/hidato_table.cs - $(MAKE) run SOURCE=examples/contrib/just_forgotten.cs - $(MAKE) run SOURCE=examples/contrib/kakuro.cs - $(MAKE) run SOURCE=examples/contrib/kenken2.cs - $(MAKE) run SOURCE=examples/contrib/killer_sudoku.cs - $(MAKE) run SOURCE=examples/contrib/labeled_dice.cs - $(MAKE) run SOURCE=examples/contrib/langford.cs - $(MAKE) run SOURCE=examples/contrib/least_diff.cs - $(MAKE) run SOURCE=examples/contrib/lectures.cs - $(MAKE) run SOURCE=examples/contrib/magic_sequence.cs - $(MAKE) run SOURCE=examples/contrib/magic_square.cs - $(MAKE) run SOURCE=examples/contrib/magic_square_and_cards.cs - $(MAKE) run SOURCE=examples/contrib/map.cs - $(MAKE) run SOURCE=examples/contrib/map2.cs - $(MAKE) run SOURCE=examples/contrib/marathon2.cs - $(MAKE) run SOURCE=examples/contrib/max_flow_taha.cs - $(MAKE) run SOURCE=examples/contrib/max_flow_winston1.cs - $(MAKE) run SOURCE=examples/contrib/minesweeper.cs - $(MAKE) run SOURCE=examples/contrib/mr_smith.cs - $(MAKE) run SOURCE=examples/contrib/nqueens.cs - $(MAKE) run SOURCE=examples/contrib/nurse_rostering_regular.cs - $(MAKE) run SOURCE=examples/contrib/nurse_rostering_transition.cs - $(MAKE) run SOURCE=examples/contrib/olympic.cs - $(MAKE) run SOURCE=examples/contrib/organize_day.cs - $(MAKE) run SOURCE=examples/contrib/p_median.cs - $(MAKE) run SOURCE=examples/contrib/pandigital_numbers.cs - $(MAKE) run SOURCE=examples/contrib/perfect_square_sequence.cs - $(MAKE) run SOURCE=examples/contrib/photo_problem.cs - $(MAKE) run SOURCE=examples/contrib/place_number_puzzle.cs - $(MAKE) run SOURCE=examples/contrib/post_office_problem2.cs - $(MAKE) run SOURCE=examples/contrib/quasigroup_completion.cs - $(MAKE) run SOURCE=examples/contrib/regex.cs - $(MAKE) run SOURCE=examples/contrib/rogo2.cs - $(MAKE) run SOURCE=examples/contrib/scheduling_speakers.cs - $(MAKE) run SOURCE=examples/contrib/secret_santa2.cs - $(MAKE) run SOURCE=examples/contrib/send_more_money.cs - $(MAKE) run SOURCE=examples/contrib/send_more_money2.cs - $(MAKE) run SOURCE=examples/contrib/send_most_money.cs - $(MAKE) run SOURCE=examples/contrib/seseman.cs - $(MAKE) run SOURCE=examples/contrib/set_covering.cs - $(MAKE) run SOURCE=examples/contrib/set_covering2.cs - $(MAKE) run SOURCE=examples/contrib/set_covering3.cs - $(MAKE) run SOURCE=examples/contrib/set_covering4.cs - $(MAKE) run SOURCE=examples/contrib/set_covering_deployment.cs - $(MAKE) run SOURCE=examples/contrib/set_covering_skiena.cs - $(MAKE) run SOURCE=examples/contrib/set_partition.cs - $(MAKE) run SOURCE=examples/contrib/sicherman_dice.cs - $(MAKE) run SOURCE=examples/contrib/ski_assignment.cs - $(MAKE) run SOURCE=examples/contrib/stable_marriage.cs - $(MAKE) run SOURCE=examples/contrib/strimko2.cs - $(MAKE) run SOURCE=examples/contrib/subset_sum.cs - $(MAKE) run SOURCE=examples/contrib/sudoku.cs - $(MAKE) run SOURCE=examples/contrib/survo_puzzle.cs - $(MAKE) run SOURCE=examples/contrib/to_num.cs - $(MAKE) run SOURCE=examples/contrib/traffic_lights.cs - $(MAKE) run SOURCE=examples/contrib/volsay.cs - $(MAKE) run SOURCE=examples/contrib/volsay2.cs - $(MAKE) run SOURCE=examples/contrib/volsay3.cs - $(MAKE) run SOURCE=examples/contrib/wedding_optimal_chart.cs - $(MAKE) run SOURCE=examples/contrib/who_killed_agatha.cs - $(MAKE) run SOURCE=examples/contrib/xkcd.cs - $(MAKE) run SOURCE=examples/contrib/young_tableaux.cs - $(MAKE) run SOURCE=examples/contrib/zebra.cs - $(MAKE) run SOURCE=examples/contrib/fsdiet.fs - $(MAKE) run SOURCE=examples/contrib/fsequality-inequality.fs - $(MAKE) run SOURCE=examples/contrib/fsequality.fs - $(MAKE) run SOURCE=examples/contrib/fsinteger-linear-program.fs - $(MAKE) run SOURCE=examples/contrib/fsintegerprogramming.fs - $(MAKE) run SOURCE=examples/contrib/fsknapsack.fs - $(MAKE) run SOURCE=examples/contrib/fslinearprogramming.fs - $(MAKE) run SOURCE=examples/contrib/fsnetwork-max-flow-lpSolve.fs - $(MAKE) run SOURCE=examples/contrib/fsnetwork-max-flow.fs - $(MAKE) run SOURCE=examples/contrib/fsnetwork-min-cost-flow.fs - $(MAKE) run SOURCE=examples/contrib/fsProgram.fs - $(MAKE) run SOURCE=examples/contrib/fsrabbit-pheasant.fs - $(MAKE) run SOURCE=examples/contrib/fsvolsay.fs - $(MAKE) run SOURCE=examples/contrib/fsvolsay3-lpSolve.fs - $(MAKE) run SOURCE=examples/contrib/fsvolsay3.fs - $(MAKE) run SOURCE=examples/contrib/SimpleProgramFSharp.fs -# $(MAKE) run SOURCE=examples/contrib/nontransitive_dice.cs # too long -# $(MAKE) run SOURCE=examples/contrib/partition.cs # too long -# $(MAKE) run SOURCE=examples/contrib/secret_santa.cs # too long -# $(MAKE) run SOURCE=examples/contrib/word_square.cs # depends on /usr/share/dict/words +test_dotnet_contrib: \ + rdotnet_3_jugs_regular \ + rdotnet_a_puzzle \ + rdotnet_a_round_of_golf \ + rdotnet_all_interval \ + rdotnet_alldifferent_except_0 \ + rdotnet_assignment \ + rdotnet_broken_weights \ + rdotnet_bus_schedule \ + rdotnet_circuit \ + rdotnet_circuit2 \ + rdotnet_coins3 \ + rdotnet_combinatorial_auction2 \ + rdotnet_contiguity_regular \ + rdotnet_contiguity_transition \ + rdotnet_costas_array \ + rdotnet_covering_opl \ + rdotnet_crew \ + rdotnet_crossword \ + rdotnet_crypta \ + rdotnet_crypto \ + rdotnet_csdiet \ + rdotnet_curious_set_of_integers \ + rdotnet_debruijn \ + rdotnet_discrete_tomography \ + rdotnet_divisible_by_9_through_1 \ + rdotnet_dudeney \ + rdotnet_einav_puzzle2 \ + rdotnet_eq10 \ + rdotnet_eq20 \ + rdotnet_fill_a_pix \ + rdotnet_furniture_moving \ + rdotnet_futoshiki \ + rdotnet_golomb_ruler \ + rdotnet_grocery \ + rdotnet_hidato_table \ + rdotnet_just_forgotten \ + rdotnet_kakuro \ + rdotnet_kenken2 \ + rdotnet_killer_sudoku \ + rdotnet_labeled_dice \ + rdotnet_langford \ + rdotnet_least_diff \ + rdotnet_lectures \ + rdotnet_magic_sequence \ + rdotnet_magic_square \ + rdotnet_magic_square_and_cards \ + rdotnet_map \ + rdotnet_map2 \ + rdotnet_marathon2 \ + rdotnet_max_flow_taha \ + rdotnet_max_flow_winston1 \ + rdotnet_minesweeper \ + rdotnet_mr_smith \ + rdotnet_nqueens \ + rdotnet_nurse_rostering_regular \ + rdotnet_nurse_rostering_transition \ + rdotnet_olympic \ + rdotnet_organize_day \ + rdotnet_p_median \ + rdotnet_pandigital_numbers \ + rdotnet_perfect_square_sequence \ + rdotnet_photo_problem \ + rdotnet_place_number_puzzle \ + rdotnet_post_office_problem2 \ + rdotnet_quasigroup_completion \ + rdotnet_regex \ + rdotnet_rogo2 \ + rdotnet_scheduling_speakers \ + rdotnet_secret_santa2 \ + rdotnet_send_more_money \ + rdotnet_send_more_money2 \ + rdotnet_send_most_money \ + rdotnet_seseman \ + rdotnet_set_covering \ + rdotnet_set_covering2 \ + rdotnet_set_covering3 \ + rdotnet_set_covering4 \ + rdotnet_set_covering_deployment \ + rdotnet_set_covering_skiena \ + rdotnet_set_partition \ + rdotnet_sicherman_dice \ + rdotnet_ski_assignment \ + rdotnet_stable_marriage \ + rdotnet_strimko2 \ + rdotnet_subset_sum \ + rdotnet_sudoku \ + rdotnet_survo_puzzle \ + rdotnet_to_num \ + rdotnet_traffic_lights \ + rdotnet_volsay \ + rdotnet_volsay2 \ + rdotnet_volsay3 \ + rdotnet_wedding_optimal_chart \ + rdotnet_who_killed_agatha \ + rdotnet_xkcd \ + rdotnet_young_tableaux \ + rdotnet_zebra +# rdotnet_coins_grid ARGS="5 2" \ +# rdotnet_fsdiet.fs +# rdotnet_fsequality-inequality.fs +# rdotnet_fsequality.fs +# rdotnet_fsinteger-linear-program.fs +# rdotnet_fsintegerprogramming.fs +# rdotnet_fsknapsack.fs +# rdotnet_fslinearprogramming.fs +# rdotnet_fsnetwork-max-flow-lpSolve.fs +# rdotnet_fsnetwork-max-flow.fs +# rdotnet_fsnetwork-min-cost-flow.fs +# rdotnet_fsProgram.fs +# rdotnet_fsrabbit-pheasant.fs +# rdotnet_fsvolsay.fs +# rdotnet_fsvolsay3-lpSolve.fs +# rdotnet_fsvolsay3.fs +# rdotnet_SimpleProgramFSharp.fs +# rdotnet_nontransitive_dice \ # too long +# rdotnet_partition \ # too long +# rdotnet_secret_santa \ # too long +# rdotnet_word_square \ # depends on /usr/share/dict/words .PHONY: test_dotnet_dotnet # Build and Run all .Net Examples (located in examples/dotnet) -test_dotnet_dotnet: - $(MAKE) run SOURCE=examples/dotnet/BalanceGroupSat.cs - $(MAKE) run SOURCE=examples/dotnet/cscvrptw.cs - $(MAKE) run SOURCE=examples/dotnet/csflow.cs - $(MAKE) run SOURCE=examples/dotnet/csintegerprogramming.cs - $(MAKE) run SOURCE=examples/dotnet/csknapsack.cs - $(MAKE) run SOURCE=examples/dotnet/cslinearprogramming.cs - $(MAKE) run SOURCE=examples/dotnet/csls_api.cs - $(MAKE) run SOURCE=examples/dotnet/csrabbitspheasants.cs - $(MAKE) run SOURCE=examples/dotnet/cstsp.cs - $(MAKE) run SOURCE=examples/dotnet/furniture_moving_intervals.cs - $(MAKE) run SOURCE=examples/dotnet/organize_day_intervals.cs - $(MAKE) run SOURCE=examples/dotnet/techtalk_scheduling.cs - $(MAKE) run SOURCE=examples/dotnet/GateSchedulingSat.cs - $(MAKE) run SOURCE=examples/dotnet/JobshopFt06Sat.cs - $(MAKE) run SOURCE=examples/dotnet/JobshopSat.cs - $(MAKE) run SOURCE=examples/dotnet/NetworkRoutingSat.cs \ - ARGS="--clients=10 --backbones=5 --demands=10 --trafficMin=5 --trafficMax=10 --minClientDegree=2 --maxClientDegree=5 --minBackboneDegree=3 --maxBackboneDegree=5 --maxCapacity=20 --fixedChargeCost=10" - $(MAKE) run SOURCE=examples/dotnet/NursesSat.cs - $(MAKE) run SOURCE=examples/dotnet/ShiftSchedulingSat.cs - $(MAKE) run SOURCE=examples/dotnet/SpeakerSchedulingSat.cs - $(MAKE) run SOURCE=examples/dotnet/TaskSchedulingSat.cs +test_dotnet_dotnet: \ + rdotnet_BalanceGroupSat \ + rdotnet_cscvrptw \ + rdotnet_csflow \ + rdotnet_csintegerprogramming \ + rdotnet_csknapsack \ + rdotnet_cslinearprogramming \ + rdotnet_csls_api \ + rdotnet_csrabbitspheasants \ + rdotnet_cstsp \ + rdotnet_furniture_moving_intervals \ + rdotnet_organize_day_intervals \ + rdotnet_techtalk_scheduling \ + rdotnet_GateSchedulingSat \ + rdotnet_JobshopFt06Sat \ + rdotnet_JobshopSat \ + rdotnet_NursesSat \ + rdotnet_ShiftSchedulingSat \ + rdotnet_SpeakerSchedulingSat \ + rdotnet_TaskSchedulingSat +# rdotnet_NetworkRoutingSat \ + ARGS="--clients=10 --backbones=5 --demands=10 --trafficMin=5 --trafficMax=10 --minClientDegree=2 --maxClientDegree=5 --minBackboneDegree=3 --maxBackboneDegree=5 --maxCapacity=20 --fixedChargeCost=10" \ .PHONY: test_dotnet_pimpl test_dotnet_pimpl: \