From 8af93de5c57a49c638b8d70f549e9d8f7bd203f6 Mon Sep 17 00:00:00 2001 From: Mizux Seiha Date: Mon, 21 Sep 2020 18:15:13 +0200 Subject: [PATCH] make: Rework archive_java --- makefiles/Makefile.archive.mk | 92 +++++++++++++----- makefiles/Makefile.java.mk | 16 +++- tools/Makefile.cc.java.dotnet | 176 +++++++++++++++++----------------- 3 files changed, 167 insertions(+), 117 deletions(-) diff --git a/makefiles/Makefile.archive.mk b/makefiles/Makefile.archive.mk index 2f75b516f0..63ca531619 100644 --- a/makefiles/Makefile.archive.mk +++ b/makefiles/Makefile.archive.mk @@ -36,26 +36,36 @@ clean_archive: -$(DEL) $(DATA_INSTALL_DIR)$(ARCHIVE_EXT) $(TEMP_ARCHIVE_DIR): - -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR) + $(MKDIR_P) $(TEMP_ARCHIVE_DIR) + +$(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR): | $(TEMP_ARCHIVE_DIR) + $(MKDIR) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR) + +$(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples: | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR) + $(MKDIR) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples $(INSTALL_DIR)$(ARCHIVE_EXT): archive_cc archive_java archive_dotnet \ tools/README.cc.java.dotnet tools/Makefile.cc.java.dotnet $(COPY) tools$SREADME.cc.java.dotnet $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$SREADME.md $(COPY) tools$SMakefile.cc.java.dotnet $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$SMakefile + $(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$SMakefile ifeq ($(SYSTEM),win) -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools$Swin $(COPY) tools$Smake.exe $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools $(COPY) $(WHICH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools$Swin + $(COPY) $(TOUCH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools$Swin cd $(TEMP_ARCHIVE_DIR) && ..$S$(ZIP) -r ..$S$(INSTALL_DIR)$(ARCHIVE_EXT) $(INSTALL_DIR) else $(TAR) -C $(TEMP_ARCHIVE_DIR) --no-same-owner -czvf $(INSTALL_DIR)$(ARCHIVE_EXT) $(INSTALL_DIR) endif # -$(DELREC) $(TEMP_ARCHIVE_DIR) +$(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/cpp: | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples + $(MKDIR) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp + .PHONY: archive_cc # Add C++ OR-Tools to archive. -archive_cc: cc | $(TEMP_ARCHIVE_DIR) +archive_cc: cc | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/cpp $(MAKE) install_cc prefix=$(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR) - -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp -$(COPY) $(CC_EX_PATH)$S*.h $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp -$(COPY) $(CC_EX_PATH)$S*.cc $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp -$(COPY) $(CC_EX_PATH)$SREADME.md $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp @@ -68,34 +78,64 @@ archive_cc: cc | $(TEMP_ARCHIVE_DIR) -$(COPY) ortools$Srouting$Ssamples$S*.cc $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp -$(COPY) ortools$Ssat$Ssamples$S*.cc $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp +$(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/java: | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples + $(MKDIR) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava + +define java-sample-archive +$$(TEMP_ARCHIVE_DIR)/$$(INSTALL_DIR)/examples/java/%/pom.xml: \ + $$(TEMP_JAVA_DIR)/$1/%/pom.xml \ + ortools/$1/samples/%.java \ + | $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava + -$$(MKDIR_P) $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$*$$S$$(JAVA_SRC_PATH) + $$(COPY) $$(SRC_DIR)$$Sortools$$S$1$$Ssamples$$S$$*.java \ + $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$*$$S$$(JAVA_SRC_PATH) + $$(COPY) $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml \ + $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$* + +endef + +$(foreach sample,$(SAMPLES),$(eval $(call java-sample-archive,$(sample)))) + +define java-example-archive +$$(TEMP_ARCHIVE_DIR)/$$(INSTALL_DIR)/examples/java/%/pom.xml: \ + $$(TEMP_JAVA_DIR)/$1/%/pom.xml \ + examples/$1/%.java \ + | $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava + -$$(MKDIR_P) $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$*$$S$$(JAVA_SRC_PATH) + $$(COPY) $$(SRC_DIR)$$Sexamples$$S$1$$S$$*.java \ + $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$*$$S$$(JAVA_SRC_PATH) + $$(COPY) $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml \ + $$(TEMP_ARCHIVE_DIR)$$S$$(INSTALL_DIR)$$Sexamples$$Sjava$$S$$* + +endef + +$(foreach example,$(EXAMPLES),$(eval $(call java-example-archive,$(example)))) + + +SAMPLE_JAVA_FILES = $(addsuffix /pom.xml,$(addprefix $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/java/,$(basename $(notdir $(wildcard ortools/*/samples/*.java))))) + +EXAMPLE_JAVA_FILES = \ + $(addsuffix /pom.xml,$(addprefix $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/java/,$(basename $(notdir $(wildcard examples/contrib/*.java))))) \ + $(addsuffix /pom.xml,$(addprefix $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/java/,$(basename $(notdir $(wildcard examples/java/*.java))))) + .PHONY: archive_java # Add Java OR-Tools to archive. -archive_java: java | $(TEMP_ARCHIVE_DIR) - $(COPY) $(LIB_DIR)$Scom.google.ortools.jar $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib - $(COPY) $(LIB_DIR)$Sprotobuf.jar $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib - $(COPY) $(LIB_DIR)$S$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib - -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(COPY) $(JAVA_EX_PATH)$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(COPY) $(JAVA_EX_PATH)$SREADME.md $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(COPY) $(CONTRIB_EX_PATH)$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/ortools.contrib/ortools.examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Salgorithms$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/algorithms.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Sgraph$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/graph.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Slinear_solver$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/linearsolver.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Sconstraint_solver$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/constraintsolver.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Srouting$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/routing.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java - -$(COPY) ortools$Ssat$Ssamples$S*.java $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava - -$(SED) -i -e 's/sat.samples/examples/' $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava$S*.java +archive_java: java \ + $(SAMPLE_JAVA_FILES) \ + $(EXAMPLE_JAVA_FILES) \ + | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/java + $(COPY) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT)$Starget$Sortools-*.jar $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR) + $(COPY) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT)$Spom.xml $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Spom-runtime.xml + $(COPY) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT)$Starget$Sortools-*.jar $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR) + $(COPY) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT)$Spom.xml $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Spom-local.xml + $(COPY) $(JAVA_EX_PATH)$SREADME.md $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sjava + +$(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/dotnet: | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples + $(MKDIR) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sdotnet .PHONY: archive_dotnet # Add .Net OR-Tools to archive. -archive_dotnet: dotnet | $(TEMP_ARCHIVE_DIR) +archive_dotnet: dotnet | $(TEMP_ARCHIVE_DIR)/$(INSTALL_DIR)/examples/dotnet -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Spackages $(COPY) packages$S*.nupkg $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Spackages - -$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sdotnet -$(COPY) $(DOTNET_EX_PATH)$S*.cs* $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sdotnet -$(COPY) $(DOTNET_EX_PATH)$S*.fs* $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sdotnet -$(COPY) $(DOTNET_EX_PATH)$SREADME.md $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Sdotnet diff --git a/makefiles/Makefile.java.mk b/makefiles/Makefile.java.mk index 5a24b2206d..badf65ca5a 100644 --- a/makefiles/Makefile.java.mk +++ b/makefiles/Makefile.java.mk @@ -49,10 +49,10 @@ check_java: java test_java: java package_java: java else -java: $(JAVA_ORTOOLS_JAR) +java: java_package check_java: check_java_pimpl test_java: test_java_pimpl -package_java: package_java_pimpl +package_java: java BUILT_LANGUAGES +=, Java endif @@ -378,8 +378,6 @@ clean_java: ################### ## Maven package ## ################### -package_java_pimpl: java_package - $(TEMP_JAVA_DIR): -$(MKDIR) $(TEMP_JAVA_DIR) @@ -404,7 +402,7 @@ $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/pom.xml: \ java_runtime: $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/timestamp $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/timestamp: \ - $(JAVA_ORTOOLS_JAR) \ + $(JAVA_ORTOOLS_NATIVE_LIBS) \ $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/pom.xml $(MKDIR_P) $(JAVA_NATIVE_PATH)$Sresources$S$(JAVA_NATIVE_IDENTIFIER) $(COPY) $(subst /,$S,$(JAVA_ORTOOLS_NATIVE_LIBS)) $(JAVA_NATIVE_PATH)$Sresources$S$(JAVA_NATIVE_IDENTIFIER) @@ -435,6 +433,14 @@ java_package: $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_PROJECT)/timestamp $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_PROJECT)/timestamp: \ $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/timestamp \ + $(GEN_DIR)/java/com/google/ortools/constraintsolver/SolverParameters.java \ + $(GEN_DIR)/java/com/google/ortools/constraintsolver/SearchLimitProtobuf.java \ + $(GEN_DIR)/java/com/google/ortools/constraintsolver/RoutingParameters.java \ + $(GEN_DIR)/java/com/google/ortools/constraintsolver/RoutingEnums.java \ + $(GEN_DIR)/java/com/google/ortools/linearsolver/MPModelProto.java \ + $(GEN_DIR)/java/com/google/ortools/sat/SatParameters.java \ + $(GEN_DIR)/java/com/google/ortools/util/OptionalBoolean.java \ + $(GEN_DIR)/java/com/google/ortools/sat/CpModel.java \ $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_PROJECT)/pom.xml $(MKDIR_P) $(JAVA_PATH)$Sjava ifeq ($(SYSTEM),unix) diff --git a/tools/Makefile.cc.java.dotnet b/tools/Makefile.cc.java.dotnet index 01f8da00a8..cc5cf5b228 100644 --- a/tools/Makefile.cc.java.dotnet +++ b/tools/Makefile.cc.java.dotnet @@ -1,3 +1,4 @@ +VERSION := @PROJECT_VERSION@ # Let's discover something about where we run ifeq ($(OS),Windows_NT) OS = Windows @@ -27,6 +28,7 @@ BIN_DIR = bin # Unix specific part. ifeq ($(SYSTEM),unix) OS = $(shell uname -s) + TOUCH = touch # C++ ifeq ($(OS),Linux) CXX = g++ @@ -102,6 +104,7 @@ endif # SYSTEM == unix # Windows specific part. ifeq ($(SYSTEM),win) WHICH = tools\\win\\which.exe + TOUCH = tools\\win\\touch.exe ifeq ("$(Platform)","X64") PLATFORM = Win64 endif @@ -180,6 +183,7 @@ clean: .PHONY: detect_port detect_port: + @echo VERSION = $(VERSION) @echo SHELL = $(SHELL) @echo SYSTEM = $(SYSTEM) @echo PORT = $(PORT) @@ -325,62 +329,6 @@ endif ############ ## JAVA ## ############ -JAR = \ -$(LIB_DIR)/LinearProgramming$J \ -$(LIB_DIR)/IntegerProgramming$J \ -$(LIB_DIR)/RabbitsPheasants$J \ -$(LIB_DIR)/Tsp$J \ -$(LIB_DIR)/Vrp$J \ -$(LIB_DIR)/Knapsack$J \ -\ -$(LIB_DIR)/AllDifferentExcept0$J \ -$(LIB_DIR)/AllInterval$J \ -$(LIB_DIR)/CapacitatedVehicleRoutingProblemWithTimeWindows$J \ -$(LIB_DIR)/Circuit$J \ -$(LIB_DIR)/CoinsGrid$J \ -$(LIB_DIR)/CoinsGridMIP$J \ -$(LIB_DIR)/ColoringMIP$J \ -$(LIB_DIR)/CoveringOpl$J \ -$(LIB_DIR)/Crossword$J \ -$(LIB_DIR)/DeBruijn$J \ -$(LIB_DIR)/Diet$J \ -$(LIB_DIR)/DietMIP$J \ -$(LIB_DIR)/DivisibleBy9Through1$J \ -$(LIB_DIR)/FlowExample$J \ -$(LIB_DIR)/GolombRuler$J \ -$(LIB_DIR)/Issue173$J \ -$(LIB_DIR)/KnapsackMIP$J \ -$(LIB_DIR)/LeastDiff$J \ -$(LIB_DIR)/LinearAssignmentAPI$J \ -$(LIB_DIR)/MagicSquare$J \ -$(LIB_DIR)/Map2$J \ -$(LIB_DIR)/Map$J \ -$(LIB_DIR)/Minesweeper$J \ -$(LIB_DIR)/MultiThreadTest$J \ -$(LIB_DIR)/NQueens2$J \ -$(LIB_DIR)/NQueens$J \ -$(LIB_DIR)/Partition$J \ -$(LIB_DIR)/QuasigroupCompletion$J \ -$(LIB_DIR)/SendMoreMoney2$J \ -$(LIB_DIR)/SendMoreMoney$J \ -$(LIB_DIR)/SendMostMoney$J \ -$(LIB_DIR)/Seseman$J \ -$(LIB_DIR)/SetCovering2$J \ -$(LIB_DIR)/SetCovering3$J \ -$(LIB_DIR)/SetCovering4$J \ -$(LIB_DIR)/SetCoveringDeployment$J \ -$(LIB_DIR)/SetCovering$J \ -$(LIB_DIR)/SimpleRoutingTest$J \ -$(LIB_DIR)/StableMarriage$J \ -$(LIB_DIR)/StiglerMIP$J \ -$(LIB_DIR)/Strimko2$J \ -$(LIB_DIR)/Sudoku$J \ -$(LIB_DIR)/SurvoPuzzle$J \ -$(LIB_DIR)/ToNum$J \ -$(LIB_DIR)/WhoKilledAgatha$J \ -$(LIB_DIR)/Xkcd$J \ -$(LIB_DIR)/YoungTableaux$J - HAS_JAVA = true ifndef JAVAC_BIN HAS_JAVA = @@ -401,52 +349,107 @@ java test_java: @echo the command 'java', 'javac', 'jar' or 'mvn' was not found in your PATH exit 127 else -java: $(JAR) +java: + $(MAKE) run SOURCE=examples/java/LinearProgramming/src/main/java/com/google/ortools/LinearProgramming.java + $(MAKE) run SOURCE=examples/java/IntegerProgramming/src/main/java/com/google/ortools/IntegerProgramming.java + $(MAKE) run SOURCE=examples/java/RabbitsPheasants/src/main/java/com/google/ortools/RabbitsPheasants.java + $(MAKE) run SOURCE=examples/java/Tsp/src/main/java/com/google/ortools/Tsp.java + $(MAKE) run SOURCE=examples/java/Vrp/src/main/java/com/google/ortools/Vrp.java + $(MAKE) run SOURCE=examples/java/Knapsack/src/main/java/com/google/ortools/Knapsack.java + $(MAKE) run SOURCE=examples/java/AllDifferentExcept0/src/main/java/com/google/ortools/AllDifferentExcept0.java + $(MAKE) run SOURCE=examples/java/AllInterval/src/main/java/com/google/ortools/AllInterval.java + $(MAKE) run SOURCE=examples/java/CapacitatedVehicleRoutingProblemWithTimeWindows/src/main/java/com/google/ortools/CapacitatedVehicleRoutingProblemWithTimeWindows.java + $(MAKE) run SOURCE=examples/java/Circuit/src/main/java/com/google/ortools/Circuit.java + $(MAKE) run SOURCE=examples/java/CoinsGrid/src/main/java/com/google/ortools/CoinsGrid.java + $(MAKE) run SOURCE=examples/java/CoinsGridMIP/src/main/java/com/google/ortools/CoinsGridMIP.java + $(MAKE) run SOURCE=examples/java/ColoringMIP/src/main/java/com/google/ortools/ColoringMIP.java + $(MAKE) run SOURCE=examples/java/CoveringOpl/src/main/java/com/google/ortools/CoveringOpl.java + $(MAKE) run SOURCE=examples/java/Crossword/src/main/java/com/google/ortools/Crossword.java + $(MAKE) run SOURCE=examples/java/DeBruijn/src/main/java/com/google/ortools/DeBruijn.java + $(MAKE) run SOURCE=examples/java/Diet/src/main/java/com/google/ortools/Diet.java + $(MAKE) run SOURCE=examples/java/DietMIP/src/main/java/com/google/ortools/DietMIP.java + $(MAKE) run SOURCE=examples/java/DivisibleBy9Through1/src/main/java/com/google/ortools/DivisibleBy9Through1.java + $(MAKE) run SOURCE=examples/java/FlowExample/src/main/java/com/google/ortools/FlowExample.java + $(MAKE) run SOURCE=examples/java/GolombRuler/src/main/java/com/google/ortools/GolombRuler.java + $(MAKE) run SOURCE=examples/java/Issue173/src/main/java/com/google/ortools/Issue173.java + $(MAKE) run SOURCE=examples/java/KnapsackMIP/src/main/java/com/google/ortools/KnapsackMIP.java + $(MAKE) run SOURCE=examples/java/LeastDiff/src/main/java/com/google/ortools/LeastDiff.java + $(MAKE) run SOURCE=examples/java/LinearAssignmentAPI/src/main/java/com/google/ortools/LinearAssignmentAPI.java + $(MAKE) run SOURCE=examples/java/MagicSquare/src/main/java/com/google/ortools/MagicSquare.java + $(MAKE) run SOURCE=examples/java/Map2/src/main/java/com/google/ortools/Map2.java + $(MAKE) run SOURCE=examples/java/Map/src/main/java/com/google/ortools/Map.java + $(MAKE) run SOURCE=examples/java/Minesweeper/src/main/java/com/google/ortools/Minesweeper.java + $(MAKE) run SOURCE=examples/java/MultiThreadTest/src/main/java/com/google/ortools/MultiThreadTest.java + $(MAKE) run SOURCE=examples/java/NQueens2/src/main/java/com/google/ortools/NQueens2.java + $(MAKE) run SOURCE=examples/java/NQueens/src/main/java/com/google/ortools/NQueens.java + $(MAKE) run SOURCE=examples/java/Partition/src/main/java/com/google/ortools/Partition.java + $(MAKE) run SOURCE=examples/java/QuasigroupCompletion/src/main/java/com/google/ortools/QuasigroupCompletion.java + $(MAKE) run SOURCE=examples/java/SendMoreMoney2/src/main/java/com/google/ortools/SendMoreMoney2.java + $(MAKE) run SOURCE=examples/java/SendMoreMoney/src/main/java/com/google/ortools/SendMoreMoney.java + $(MAKE) run SOURCE=examples/java/SendMostMoney/src/main/java/com/google/ortools/SendMostMoney.java + $(MAKE) run SOURCE=examples/java/Seseman/src/main/java/com/google/ortools/Seseman.java + $(MAKE) run SOURCE=examples/java/SetCovering2/src/main/java/com/google/ortools/SetCovering2.java + $(MAKE) run SOURCE=examples/java/SetCovering3/src/main/java/com/google/ortools/SetCovering3.java + $(MAKE) run SOURCE=examples/java/SetCovering4/src/main/java/com/google/ortools/SetCovering4.java + $(MAKE) run SOURCE=examples/java/SetCoveringDeployment/src/main/java/com/google/ortools/SetCoveringDeployment.java + $(MAKE) run SOURCE=examples/java/SetCovering/src/main/java/com/google/ortools/SetCovering.java + $(MAKE) run SOURCE=examples/java/SimpleRoutingTest/src/main/java/com/google/ortools/SimpleRoutingTest.java + $(MAKE) run SOURCE=examples/java/StableMarriage/src/main/java/com/google/ortools/StableMarriage.java + $(MAKE) run SOURCE=examples/java/StiglerMIP/src/main/java/com/google/ortools/StiglerMIP.java + $(MAKE) run SOURCE=examples/java/Strimko2/src/main/java/com/google/ortools/Strimko2.java + $(MAKE) run SOURCE=examples/java/Sudoku/src/main/java/com/google/ortools/Sudoku.java + $(MAKE) run SOURCE=examples/java/SurvoPuzzle/src/main/java/com/google/ortools/SurvoPuzzle.java + $(MAKE) run SOURCE=examples/java/ToNum/src/main/java/com/google/ortools/ToNum.java + $(MAKE) run SOURCE=examples/java/WhoKilledAgatha/src/main/java/com/google/ortools/WhoKilledAgatha.java + $(MAKE) run SOURCE=examples/java/Xkcd/src/main/java/com/google/ortools/Xkcd.java + $(MAKE) run SOURCE=examples/java/YoungTableaux/src/main/java/com/google/ortools/YoungTableaux.java + test_java: detect_java - $(MAKE) run SOURCE=examples/java/SimpleLpProgram.java - $(MAKE) run SOURCE=examples/java/SimpleMipProgram.java - $(MAKE) run SOURCE=examples/java/SimpleSatProgram.java - $(MAKE) run SOURCE=examples/java/Tsp.java - $(MAKE) run SOURCE=examples/java/Vrp.java - $(MAKE) run SOURCE=examples/java/Knapsack.java + $(MAKE) run SOURCE=examples/java/SimpleLpProgram/src/main/java/com/google/ortools/SimpleLpProgram.java + $(MAKE) run SOURCE=examples/java/SimpleMipProgram/src/main/java/com/google/ortools/SimpleMipProgram.java + $(MAKE) run SOURCE=examples/java/SimpleSatProgram/src/main/java/com/google/ortools/SimpleSatProgram.java + $(MAKE) run SOURCE=examples/java/Tsp/src/main/java/com/google/ortools/Tsp.java + $(MAKE) run SOURCE=examples/java/Vrp/src/main/java/com/google/ortools/Vrp.java + $(MAKE) run SOURCE=examples/java/Knapsack/src/main/java/com/google/ortools/Knapsack.java ################### ## Java SOURCE ## ################### ifeq ($(SOURCE_SUFFIX),.java) # Those rules will be used if SOURCE contain a .java file -$(CLASS_DIR)/$(SOURCE_NAME): $(SOURCE) | $(CLASS_DIR) - -$(MKDIR) $(CLASS_DIR)$S$(SOURCE_NAME) - "$(JAVAC_BIN)" -encoding UTF-8 -d $(CLASS_DIR)$S$(SOURCE_NAME) \ - -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $(SOURCE_PATH) - -$(LIB_DIR)/$(SOURCE_NAME)$J: $(CLASS_DIR)/$(SOURCE_NAME) | $(LIB_DIR) - -$(DEL) $(LIB_DIR)$S$(SOURCE_NAME)$J - "$(JAR_BIN)" cvf $(LIB_DIR)$S$(SOURCE_NAME)$J -C $(CLASS_DIR)$S$(SOURCE_NAME) . - .PHONY: build # Build a Java program. -build: $(LIB_DIR)/$(SOURCE_NAME)$J +build: $(SOURCE) examples/java/$(SOURCE_NAME)/pom.xml | java.log + cd examples$Sjava$S$(SOURCE_NAME) && "$(MVN_BIN)" compile .PHONY: run # Run a Java program. run: build - "$(JAVA_BIN)" -Xss2048k $(JAVAFLAGS) \ - -cp $(LIB_DIR)$S$(SOURCE_NAME)$J$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - com.google.ortools.examples.$(SOURCE_NAME) $(ARGS) + cd examples$Sjava$S$(SOURCE_NAME) && "$(MVN_BIN)" exec:java $(ARGS) endif # ifeq ($(SOURCE_SUFFIX),.java) endif # ifndef HAS_JAVA -$(CLASS_DIR): - -$(MKDIR) $(CLASS_DIR) +ifeq ($(OS),Windows) +JAVA_NATIVE_IDENTIFIER=win32-x86-64 +else + ifeq ($(OS),Linux) + JAVA_NATIVE_IDENTIFIER=linux-x86-64 + else + ifeq ($(OS),Darwin) + JAVA_NATIVE_IDENTIFIER=darwin + else + $(error OS unknown !) + endif + endif +endif -$(CLASS_DIR)/%: $(JAVA_EX_DIR)/%.java | $(CLASS_DIR) - -$(MKDIR) $(CLASS_DIR)$S$* - "$(JAVAC_BIN)" -d $(CLASS_DIR)$S$* \ - -cp $(LIB_DIR)$Scom.google.ortools$J$(CPSEP)$(LIB_DIR)$Sprotobuf$J \ - $(JAVA_EX_PATH)$S$*.java +JAVA_NATIVE_PROJECT := ortools-$(JAVA_NATIVE_IDENTIFIER)-@PROJECT_VERSION@.jar +JAVA_PROJECT := ortools-java-@PROJECT_VERSION@.jar -$(LIB_DIR)/%$J: $(CLASS_DIR)/% | $(LIB_DIR) - "$(JAR_BIN)" cvf $(LIB_DIR)$S$*$J -C $(CLASS_DIR)$S$* . +java.log: pom-runtime.xml pom-local.xml + "$(MVN_BIN)" org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ +-Dfile=$(JAVA_NATIVE_PROJECT) -DpomFile=pom-runtime.xml + "$(MVN_BIN)" org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ +-Dfile=$(JAVA_PROJECT) -DpomFile=pom-local.xml + @$(TOUCH) $@ .PHONY: detect_java detect_java: @@ -456,6 +459,7 @@ detect_java: @echo JAR_BIN = $(JAR_BIN) @echo JAVA_BIN = $(JAVA_BIN) @echo JAVAFLAGS = $(JAVAFLAGS) + @echo MVN_BIN = $(MVN_BIN) ifeq ($(SYSTEM),win) @echo off & echo( else