make: Rework .Net csproj management

This commit is contained in:
Corentin Le Molgat
2021-12-03 17:24:08 +01:00
parent 282a310ab9
commit 497d9e4842

View File

@@ -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: \