diff --git a/makefiles/Makefile.java.mk b/makefiles/Makefile.java.mk index 88b769d2ab..84e1e4ad73 100755 --- a/makefiles/Makefile.java.mk +++ b/makefiles/Makefile.java.mk @@ -10,7 +10,8 @@ else @echo endif -JAVA_OR_TOOLS_LIBS= $(LIB_DIR)/com.google.ortools$J $(LIB_DIR)/$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) +JAVA_OR_TOOLS_LIBS= $(LIB_DIR)/com.google.ortools$J +JAVA_OR_TOOLS_NATIVE_LIBS := $(LIB_DIR)/$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) JAVAFLAGS = -Djava.library.path=$(LIB_DIR) JAR = \ @@ -93,7 +94,9 @@ java: test_java: java else java: ortoolslibs $(JAVA_OR_TOOLS_LIBS) $(JAR) -test_java: test_java_examples +test_java: \ + test_java_samples \ + test_java_examples BUILT_LANGUAGES +=, Java endif @@ -127,6 +130,9 @@ $(CLASS_DIR)/com/google: | $(CLASS_DIR)/com $(CLASS_DIR)/com/google/ortools: | $(CLASS_DIR)/com/google $(MKDIR) $(CLASS_DIR)$Scom$Sgoogle$Sortools +################ +## JAVA JNI ## +################ $(GEN_DIR)/ortools/constraint_solver/constraint_solver_java_wrap.cc: \ $(SRC_DIR)/ortools/constraint_solver/java/constraint_solver.i \ $(SRC_DIR)/ortools/constraint_solver/java/routing.i \ @@ -137,14 +143,21 @@ $(GEN_DIR)/ortools/constraint_solver/constraint_solver_java_wrap.cc: \ $(CP_DEPS) \ $(SRC_DIR)/ortools/constraint_solver/routing.h \ | $(GEN_DIR)/ortools/constraint_solver $(GEN_DIR)/com/google/ortools/constraintsolver - $(SWIG_BINARY) -I$(INC_DIR) -c++ -java -o $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_java_wrap.cc -package com.google.ortools.constraintsolver -module operations_research_constraint_solver -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Sconstraintsolver $(SRC_DIR)$Sortools$Sconstraint_solver$Sjava$Srouting.i + $(SWIG_BINARY) -I$(INC_DIR) -c++ -java \ + -o $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_java_wrap.cc \ + -package com.google.ortools.constraintsolver \ + -module operations_research_constraint_solver \ + -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Sconstraintsolver \ + $(SRC_DIR)$Sortools$Sconstraint_solver$Sjava$Srouting.i $(OBJ_DIR)/swig/constraint_solver_java_wrap.$O: \ $(GEN_DIR)/ortools/constraint_solver/constraint_solver_java_wrap.cc \ $(CP_DEPS) \ $(SRC_DIR)/ortools/constraint_solver/routing.h \ | $(OBJ_DIR)/swig - $(CCC) $(JNIFLAGS) $(JAVA_INC) -c $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_java_wrap.cc $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sconstraint_solver_java_wrap.$O + $(CCC) $(JNIFLAGS) $(JAVA_INC) \ + -c $(GEN_PATH)$Sortools$Sconstraint_solver$Sconstraint_solver_java_wrap.cc \ + $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sconstraint_solver_java_wrap.$O $(GEN_DIR)/ortools/algorithms/knapsack_solver_java_wrap.cc: \ $(SRC_DIR)/ortools/algorithms/java/knapsack_solver.i \ @@ -152,19 +165,39 @@ $(GEN_DIR)/ortools/algorithms/knapsack_solver_java_wrap.cc: \ $(SRC_DIR)/ortools/util/java/vector.i \ $(SRC_DIR)/ortools/algorithms/knapsack_solver.h \ | $(GEN_DIR)/ortools/algorithms $(GEN_DIR)/com/google/ortools/algorithms - $(SWIG_BINARY) -I$(INC_DIR) -c++ -java -o $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_java_wrap.cc -package com.google.ortools.algorithms -module operations_research_algorithms -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Salgorithms $(SRC_DIR)$Sortools$Salgorithms$Sjava$Sknapsack_solver.i + $(SWIG_BINARY) -I$(INC_DIR) -c++ -java \ + -o $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_java_wrap.cc \ + -package com.google.ortools.algorithms \ + -module operations_research_algorithms \ + -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Salgorithms \ + $(SRC_DIR)$Sortools$Salgorithms$Sjava$Sknapsack_solver.i $(OBJ_DIR)/swig/knapsack_solver_java_wrap.$O: \ $(GEN_DIR)/ortools/algorithms/knapsack_solver_java_wrap.cc \ | $(OBJ_DIR)/swig - $(CCC) $(JNIFLAGS) $(JAVA_INC) -c $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_java_wrap.cc $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sknapsack_solver_java_wrap.$O + $(CCC) $(JNIFLAGS) $(JAVA_INC) \ + -c $(GEN_PATH)$Sortools$Salgorithms$Sknapsack_solver_java_wrap.cc \ + $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sknapsack_solver_java_wrap.$O $(GEN_DIR)/ortools/graph/graph_java_wrap.cc: \ $(SRC_DIR)/ortools/graph/java/graph.i \ $(SRC_DIR)/ortools/base/base.i \ $(GRAPH_DEPS) \ | $(GEN_DIR)/ortools/graph $(GEN_DIR)/com/google/ortools/graph - $(SWIG_BINARY) -I$(INC_DIR) -c++ -java -o $(GEN_PATH)$Sortools$Sgraph$Sgraph_java_wrap.cc -package com.google.ortools.graph -module operations_research_graph -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Sgraph $(SRC_DIR)$Sortools$Sgraph$Sjava$Sgraph.i + $(SWIG_BINARY) -I$(INC_DIR) -c++ -java \ + -o $(GEN_PATH)$Sortools$Sgraph$Sgraph_java_wrap.cc \ + -package com.google.ortools.graph \ + -module operations_research_graph \ + -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Sgraph \ + $(SRC_DIR)$Sortools$Sgraph$Sjava$Sgraph.i + +$(OBJ_DIR)/swig/graph_java_wrap.$O: \ + $(GEN_DIR)/ortools/graph/graph_java_wrap.cc \ + $(GRAPH_DEPS) \ + | $(OBJ_DIR)/swig + $(CCC) $(JNIFLAGS) $(JAVA_INC) \ + -c $(GEN_PATH)$Sortools$Sgraph$Sgraph_java_wrap.cc \ + $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sgraph_java_wrap.$O $(GEN_DIR)/ortools/linear_solver/linear_solver_java_wrap.cc: \ $(SRC_DIR)/ortools/linear_solver/java/linear_solver.i \ @@ -172,32 +205,64 @@ $(GEN_DIR)/ortools/linear_solver/linear_solver_java_wrap.cc: \ $(SRC_DIR)/ortools/util/java/vector.i \ $(LP_DEPS) \ | $(GEN_DIR)/ortools/linear_solver $(GEN_DIR)/com/google/ortools/linearsolver - $(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -java -o $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_java_wrap.cc -package com.google.ortools.linearsolver -module operations_research_linear_solver -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Slinearsolver $(SRC_DIR)$Sortools$Slinear_solver$Sjava$Slinear_solver.i + $(SWIG_BINARY) $(SWIG_INC) -I$(INC_DIR) -c++ -java \ + -o $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_java_wrap.cc \ + -package com.google.ortools.linearsolver \ + -module operations_research_linear_solver \ + -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Slinearsolver \ + $(SRC_DIR)$Sortools$Slinear_solver$Sjava$Slinear_solver.i + +$(OBJ_DIR)/swig/linear_solver_java_wrap.$O: \ + $(GEN_DIR)/ortools/linear_solver/linear_solver_java_wrap.cc \ + $(LP_DEPS) \ + | $(OBJ_DIR)/swig + $(CCC) $(JNIFLAGS) $(JAVA_INC) \ + -c $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_java_wrap.cc \ + $(OBJ_OUT)$(OBJ_DIR)$Sswig$Slinear_solver_java_wrap.$O $(GEN_DIR)/ortools/sat/sat_java_wrap.cc: \ $(SRC_DIR)/ortools/sat/java/sat.i \ $(SRC_DIR)/ortools/base/base.i \ $(SAT_DEPS) \ | $(GEN_DIR)/ortools/sat $(GEN_DIR)/com/google/ortools/sat - $(SWIG_BINARY) -I$(INC_DIR) -c++ -java -o $(GEN_PATH)$Sortools$Ssat$Ssat_java_wrap.cc -package com.google.ortools.sat -module operations_research_sat -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Ssat $(SRC_DIR)$Sortools$Ssat$Sjava$Ssat.i - -$(OBJ_DIR)/swig/linear_solver_java_wrap.$O: \ - $(GEN_DIR)/ortools/linear_solver/linear_solver_java_wrap.cc \ - $(LP_DEPS) \ - | $(OBJ_DIR)/swig - $(CCC) $(JNIFLAGS) $(JAVA_INC) -c $(GEN_PATH)$Sortools$Slinear_solver$Slinear_solver_java_wrap.cc $(OBJ_OUT)$(OBJ_DIR)$Sswig$Slinear_solver_java_wrap.$O - -$(OBJ_DIR)/swig/graph_java_wrap.$O: \ - $(GEN_DIR)/ortools/graph/graph_java_wrap.cc \ - $(GRAPH_DEPS) \ - | $(OBJ_DIR)/swig - $(CCC) $(JNIFLAGS) $(JAVA_INC) -c $(GEN_PATH)$Sortools$Sgraph$Sgraph_java_wrap.cc $(OBJ_OUT)$(OBJ_DIR)$Sswig$Sgraph_java_wrap.$O + $(SWIG_BINARY) -I$(INC_DIR) -c++ -java \ + -o $(GEN_PATH)$Sortools$Ssat$Ssat_java_wrap.cc \ + -package com.google.ortools.sat \ + -module operations_research_sat \ + -outdir $(GEN_PATH)$Scom$Sgoogle$Sortools$Ssat \ + $(SRC_DIR)$Sortools$Ssat$Sjava$Ssat.i $(OBJ_DIR)/swig/sat_java_wrap.$O: \ $(GEN_DIR)/ortools/sat/sat_java_wrap.cc \ $(SAT_DEPS) \ | $(OBJ_DIR)/swig - $(CCC) $(JNIFLAGS) $(JAVA_INC) -c $(GEN_PATH)$Sortools$Ssat$Ssat_java_wrap.cc $(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_java_wrap.$O + $(CCC) $(JNIFLAGS) $(JAVA_INC) \ + -c $(GEN_PATH)$Sortools$Ssat$Ssat_java_wrap.cc \ + $(OBJ_OUT)$(OBJ_DIR)$Sswig$Ssat_java_wrap.$O + +$(JAVA_OR_TOOLS_NATIVE_LIBS): \ + $(OBJ_DIR)/swig/constraint_solver_java_wrap.$O \ + $(OBJ_DIR)/swig/knapsack_solver_java_wrap.$O \ + $(OBJ_DIR)/swig/graph_java_wrap.$O \ + $(OBJ_DIR)/swig/linear_solver_java_wrap.$O \ + $(OBJ_DIR)/swig/sat_java_wrap.$O \ + $(OR_TOOLS_LIBS) + $(DYNAMIC_LD) $(LD_OUT)$(LIB_DIR)$S$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) \ + $(OBJ_DIR)$Sswig$Sconstraint_solver_java_wrap.$O \ + $(OBJ_DIR)$Sswig$Sknapsack_solver_java_wrap.$O \ + $(OBJ_DIR)$Sswig$Sgraph_java_wrap.$O \ + $(OBJ_DIR)$Sswig$Slinear_solver_java_wrap.$O \ + $(OBJ_DIR)$Sswig$Ssat_java_wrap.$O \ + $(OR_TOOLS_LNK) \ + $(OR_TOOLS_LDFLAGS) + +############ +## JAVA ## +############ +$(LIB_DIR)/protobuf.jar: \ + dependencies/install/lib/protobuf.jar \ + | $(LIB_DIR) + $(COPY) dependencies$Sinstall$Slib$Sprotobuf.jar $(LIB_DIR) $(GEN_DIR)/com/google/ortools/constraintsolver/SearchLimitProtobuf.java: \ $(SRC_DIR)/ortools/constraint_solver/search_limit.proto \ @@ -229,16 +294,9 @@ $(GEN_DIR)/com/google/ortools/sat/SatParameters.java: \ | $(GEN_DIR)/com/google/ortools/sat $(PROTOC) --proto_path=$(SRC_DIR) --java_out=$(GEN_PATH) $(SRC_DIR)$Sortools$Ssat$Ssat_parameters.proto -$(LIB_DIR)/protobuf.jar: dependencies/install/lib/protobuf.jar | $(LIB_DIR) - $(COPY) dependencies$Sinstall$Slib$Sprotobuf.jar $(LIB_DIR) - -$(LIB_DIR)/com.google.ortools.jar: \ +$(JAVA_OR_TOOLS_LIBS): \ + $(JAVA_OR_TOOLS_NATIVE_LIBS) \ $(LIB_DIR)/protobuf.jar \ - $(GEN_DIR)/ortools/constraint_solver/constraint_solver_java_wrap.cc \ - $(GEN_DIR)/ortools/algorithms/knapsack_solver_java_wrap.cc \ - $(GEN_DIR)/ortools/graph/graph_java_wrap.cc \ - $(GEN_DIR)/ortools/linear_solver/linear_solver_java_wrap.cc \ - $(GEN_DIR)/ortools/sat/sat_java_wrap.cc \ $(GEN_DIR)/com/google/ortools/constraintsolver/SolverParameters.java \ $(GEN_DIR)/com/google/ortools/constraintsolver/SearchLimitProtobuf.java \ $(GEN_DIR)/com/google/ortools/constraintsolver/RoutingParameters.java \ @@ -257,25 +315,106 @@ $(LIB_DIR)/com.google.ortools.jar: \ $(GEN_PATH)$Scom$Sgoogle$Sortools$Slinearsolver$S*.java $(JAR_BIN) cvf $(LIB_DIR)$Scom.google.ortools.jar -C $(CLASS_DIR) com$Sgoogle$Sortools$S -$(LIB_DIR)/$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT): \ - $(OBJ_DIR)/swig/constraint_solver_java_wrap.$O \ - $(OBJ_DIR)/swig/knapsack_solver_java_wrap.$O \ - $(OBJ_DIR)/swig/graph_java_wrap.$O \ - $(OBJ_DIR)/swig/linear_solver_java_wrap.$O \ - $(OBJ_DIR)/swig/sat_java_wrap.$O \ - $(OR_TOOLS_LIBS) - $(DYNAMIC_LD) $(LD_OUT)$(LIB_DIR)$S$(LIB_PREFIX)jniortools.$(JNI_LIB_EXT) \ - $(OBJ_DIR)$Sswig$Sconstraint_solver_java_wrap.$O \ - $(OBJ_DIR)$Sswig$Sknapsack_solver_java_wrap.$O \ - $(OBJ_DIR)$Sswig$Sgraph_java_wrap.$O \ - $(OBJ_DIR)$Sswig$Slinear_solver_java_wrap.$O \ - $(OBJ_DIR)$Sswig$Ssat_java_wrap.$O \ - $(OR_TOOLS_LNK) \ - $(OR_TOOLS_LDFLAGS) +############################# +## Java Examples/Samples ## +############################# +.PHONY: test_java_examples # Build and Run all Java Examples (located in examples/java) +test_java_examples: $(JAVA_OR_TOOLS_LIBS) + $(MAKE) rjava_AllDifferentExcept0 + $(MAKE) rjava_AllInterval + $(MAKE) rjava_CapacitatedVehicleRoutingProblemWithTimeWindows + $(MAKE) rjava_Circuit + $(MAKE) rjava_CoinsGridMIP + $(MAKE) rjava_ColoringMIP + $(MAKE) rjava_CoveringOpl + $(MAKE) rjava_Crossword + $(MAKE) rjava_DeBruijn + $(MAKE) rjava_Diet + $(MAKE) rjava_DietMIP + $(MAKE) rjava_DivisibleBy9Through1 + $(MAKE) rjava_FlowExample + $(MAKE) rjava_GolombRuler + $(MAKE) rjava_IntegerProgramming + $(MAKE) rjava_Knapsack + $(MAKE) rjava_KnapsackMIP + $(MAKE) rjava_LeastDiff + $(MAKE) rjava_LinearAssignmentAPI + $(MAKE) rjava_LinearProgramming + $(MAKE) rjava_LsApi + $(MAKE) rjava_MagicSquare + $(MAKE) rjava_Map2 + $(MAKE) rjava_Map + $(MAKE) rjava_Minesweeper + $(MAKE) rjava_MultiThreadTest + $(MAKE) rjava_NQueens2 + $(MAKE) rjava_NQueens + $(MAKE) rjava_Partition + $(MAKE) rjava_QuasigroupCompletion + $(MAKE) rjava_RabbitsPheasants + $(MAKE) rjava_SendMoreMoney2 + $(MAKE) rjava_SendMoreMoney + $(MAKE) rjava_SendMostMoney + $(MAKE) rjava_Seseman + $(MAKE) rjava_SetCovering2 + $(MAKE) rjava_SetCovering3 + $(MAKE) rjava_SetCovering4 + $(MAKE) rjava_SetCoveringDeployment + $(MAKE) rjava_SetCovering + $(MAKE) rjava_SimpleRoutingTest + $(MAKE) rjava_StableMarriage + $(MAKE) rjava_StiglerMIP + $(MAKE) rjava_Strimko2 + $(MAKE) rjava_Sudoku + $(MAKE) rjava_SurvoPuzzle + $(MAKE) rjava_ToNum + $(MAKE) rjava_Tsp + $(MAKE) rjava_Vrp + $(MAKE) rjava_WhoKilledAgatha + $(MAKE) rjava_Xkcd + $(MAKE) rjava_YoungTableaux + +.PHONY: test_java_samples # Build and Run all Java Samples (located in ortools/*/samples) +test_java_samples: $(JAVA_OR_TOOLS_LIBS) + $(MAKE) rjava_BinPackingProblem + $(MAKE) rjava_BoolOrSample + $(MAKE) rjava_ChannelingSample + $(MAKE) rjava_CodeSample + $(MAKE) rjava_IntervalSample + $(MAKE) rjava_LiteralSample + $(MAKE) rjava_NoOverlapSample + $(MAKE) rjava_OptionalIntervalSample + $(MAKE) rjava_RabbitsAndPheasants + $(MAKE) rjava_RankingSample + $(MAKE) rjava_ReifiedSample + $(MAKE) rjava_SimpleSolve + $(MAKE) rjava_SolveAllSolutions + $(MAKE) rjava_SolveWithIntermediateSolutions + $(MAKE) rjava_SolveWithTimeLimit + $(MAKE) rjava_StopAfterNSolutions + +$(CLASS_DIR)/%: $(JAVA_EX_DIR)/%.java $(JAVA_OR_TOOLS_LIBS) | $(CLASS_DIR) + -$(DELREC) $(CLASS_DIR)$S$* + -$(MKDIR_P) $(CLASS_DIR)$S$* + $(JAVAC_BIN) -d $(CLASS_DIR)$S$* \ + -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ + $(JAVA_EX_PATH)$S$*.java + +$(CLASS_DIR)/%: $(SRC_DIR)/ortools/sat/samples/%.java $(JAVA_OR_TOOLS_LIBS) | $(CLASS_DIR) + -$(DELREC) $(CLASS_DIR)$S$* + -$(MKDIR_P) $(CLASS_DIR)$S$* + $(JAVAC_BIN) -d $(CLASS_DIR)$S$* \ + -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ + ortools$Ssat$Ssamples$S$*.java + +$(LIB_DIR)/%$J: $(CLASS_DIR)/% | $(LIB_DIR) + -$(DEL) $(LIB_DIR)$S$*.jar + $(JAR_BIN) cvf $(LIB_DIR)$S$*.jar -C $(CLASS_DIR)$S$* . + +rjava_%: $(LIB_DIR)/%$J + $(JAVA_BIN) -Xss2048k $(JAVAFLAGS) \ + -cp $(LIB_DIR)$S$*.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ + $* $(ARGS) -##################### -## Java Examples ## -##################### ifeq ($(EX),) # Those rules will be used if EX variable is not set .PHONY: rjava cjava rjava cjava: @@ -293,29 +432,6 @@ rjava: $(LIB_DIR)/$(EX_NAME)$J $(MAKE) rjava_$(EX_NAME) endif # ifeq ($(EX),) -$(CLASS_DIR)/%: $(JAVA_EX_DIR)/%.java $(JAVA_OR_TOOLS_LIBS) | $(CLASS_DIR) - -$(DELREC) $(CLASS_DIR)$S$* - -$(MKDIR_P) $(CLASS_DIR)$S$* - $(JAVAC_BIN) -d $(CLASS_DIR)$S$* \ - -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $(JAVA_EX_PATH)$S$*.java - -$(CLASS_DIR)/%: $(SRC_DIR)/ortools/sat/samples/%.java $(JAVA_OR_TOOLS_LIBS) | $(CLASS_DIR) - -$(DELREC) $(CLASS_DIR)$S$* - -$(MKDIR_P) $(CLASS_DIR)$S$* - $(JAVAC_BIN) -d $(CLASS_DIR)$S$* \ - -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $(SRC_DIR)$Sortools$Ssat$Ssamples$S$*.java - -$(LIB_DIR)/%$J: $(CLASS_DIR)/% | $(LIB_DIR) - -$(DEL) $(LIB_DIR)$S$*.jar - $(JAR_BIN) cvf $(LIB_DIR)$S$*.jar -C $(CLASS_DIR)$S$* . - -rjava_%: $(LIB_DIR)/%$J - $(JAVA_BIN) -Xss2048k $(JAVAFLAGS) \ - -cp $(LIB_DIR)$S$*.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $* $(ARGS) - ################ ## Cleaning ## ################