2025-01-10 11:33:35 +01:00
|
|
|
# Copyright 2010-2025 Google LLC
|
2022-06-20 18:27:09 +02:00
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
|
#
|
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
#
|
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
|
# limitations under the License.
|
|
|
|
|
|
2022-02-25 17:11:38 +01:00
|
|
|
# ---------- Java support ----------
|
|
|
|
|
.PHONY: help_java # Generate list of Java targets with descriptions.
|
|
|
|
|
help_java:
|
|
|
|
|
@echo Use one of the following Java targets:
|
2022-03-07 14:05:12 +01:00
|
|
|
ifeq ($(PLATFORM),WIN64)
|
2022-02-25 17:11:38 +01:00
|
|
|
@$(GREP) "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.java.mk | $(SED) "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/"
|
|
|
|
|
@echo off & echo(
|
|
|
|
|
else
|
|
|
|
|
@$(GREP) "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.java.mk | $(SED) "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/" | expand -t24
|
|
|
|
|
@echo
|
|
|
|
|
endif
|
|
|
|
|
|
2022-04-08 11:33:18 +02:00
|
|
|
# Main targets.
|
|
|
|
|
.PHONY: detect_java # Show variables used to build Java OR-Tools.
|
|
|
|
|
.PHONY: java_runtime # Build Java OR-Tools runtime.
|
|
|
|
|
.PHONY: java # Build Java OR-Tools.
|
|
|
|
|
.PHONY: check_java # Quick check only running Java OR-Tools samples.
|
|
|
|
|
.PHONY: test_java # Test Java OR-Tools using various examples.
|
|
|
|
|
.PHONY: archive_java # Generate OR-Tools's maven archive.
|
|
|
|
|
.PHONY: clean_java # Clean Java output from previous build.
|
2022-02-25 17:11:38 +01:00
|
|
|
|
2022-03-07 14:05:12 +01:00
|
|
|
ifeq ($(HAS_JAVA),OFF)
|
2022-02-22 10:11:08 +01:00
|
|
|
java_runtime: java
|
|
|
|
|
java:
|
|
|
|
|
@echo JAVA_HOME = $(JAVA_HOME)
|
|
|
|
|
@echo JAVAC_BIN = $(JAVAC_BIN)
|
|
|
|
|
@echo JAR_BIN = $(JAR_BIN)
|
|
|
|
|
@echo JAVA_BIN = $(JAVA_BIN)
|
|
|
|
|
@echo MVN_BIN = $(MVN_BIN)
|
2024-03-26 22:56:14 +08:00
|
|
|
$(warning Either JAVA support was turned off, or the makefile cannot\
|
2022-03-28 18:29:33 +02:00
|
|
|
find 'java' or 'maven' command which is needed for build. \
|
|
|
|
|
Please make sure it is installed and in system path. \
|
|
|
|
|
Or turn java support ON.)
|
2022-02-22 10:11:08 +01:00
|
|
|
check_java: java
|
|
|
|
|
test_java: java
|
|
|
|
|
package_java: java
|
|
|
|
|
|
2022-03-07 14:05:12 +01:00
|
|
|
else # HAS_JAVA=ON
|
2022-02-22 10:11:08 +01:00
|
|
|
|
2022-03-28 18:29:33 +02:00
|
|
|
JAVA_BUILD_PATH := $(BUILD_DIR)$Sjava
|
|
|
|
|
TEMP_JAVA_DIR := temp_java
|
2020-09-07 17:21:35 +02:00
|
|
|
JAVA_ORTOOLS_PACKAGE := com.google.ortools
|
2020-09-02 22:32:13 +02:00
|
|
|
|
2022-03-07 14:05:12 +01:00
|
|
|
# OR Tools unique library.
|
|
|
|
|
java:
|
|
|
|
|
$(MAKE) third_party BUILD_JAVA=ON
|
2022-03-30 09:35:51 +02:00
|
|
|
cmake --build $(BUILD_DIR) --target install --config $(BUILD_TYPE) -j $(JOBS) -v
|
2022-02-22 10:11:08 +01:00
|
|
|
|
2020-09-07 17:21:35 +02:00
|
|
|
# Detect RuntimeIDentifier
|
|
|
|
|
ifeq ($(OS),Windows)
|
2022-03-28 18:29:33 +02:00
|
|
|
JAVA_NATIVE_IDENTIFIER := win32-x86-64
|
2020-09-07 17:21:35 +02:00
|
|
|
else
|
|
|
|
|
ifeq ($(OS),Linux)
|
2022-08-08 15:47:48 +02:00
|
|
|
ifeq ($(CPU),aarch64)
|
|
|
|
|
JAVA_NATIVE_IDENTIFIER := linux-aarch64
|
|
|
|
|
else
|
|
|
|
|
JAVA_NATIVE_IDENTIFIER := linux-x86-64
|
|
|
|
|
endif
|
2020-09-07 17:21:35 +02:00
|
|
|
else
|
|
|
|
|
ifeq ($(OS),Darwin)
|
2022-08-08 15:47:48 +02:00
|
|
|
ifeq ($(CPU),arm64)
|
|
|
|
|
JAVA_NATIVE_IDENTIFIER := darwin-aarch64
|
|
|
|
|
else
|
|
|
|
|
JAVA_NATIVE_IDENTIFIER := darwin-x86-64
|
|
|
|
|
endif
|
2020-09-07 17:21:35 +02:00
|
|
|
else
|
|
|
|
|
$(error OS unknown !)
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# All libraries and dependencies
|
|
|
|
|
JAVA_ORTOOLS_NATIVE_PROJECT := ortools-$(JAVA_NATIVE_IDENTIFIER)
|
|
|
|
|
JAVA_ORTOOLS_PROJECT := ortools-java
|
|
|
|
|
JAVA_NATIVE_PATH := $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT)$Ssrc$Smain
|
|
|
|
|
JAVA_PATH := $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT)$Ssrc$Smain
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR):
|
2020-09-25 17:45:25 +02:00
|
|
|
$(MKDIR) $(TEMP_JAVA_DIR)
|
2020-09-07 17:21:35 +02:00
|
|
|
|
2022-04-08 11:33:18 +02:00
|
|
|
.PHONY: package_java
|
2022-03-30 09:35:51 +02:00
|
|
|
package_java: java
|
2022-02-21 16:44:53 +01:00
|
|
|
-$(DEL) *.jar
|
2022-03-30 09:35:51 +02:00
|
|
|
$(COPY) $(JAVA_BUILD_PATH)$Sortools-java$Starget$S*.jar .
|
|
|
|
|
$(COPY) $(JAVA_BUILD_PATH)$Sortools-$(JAVA_NATIVE_IDENTIFIER)$Starget$S*.jar .
|
|
|
|
|
|
|
|
|
|
###################
|
|
|
|
|
## Java SOURCE ##
|
|
|
|
|
###################
|
|
|
|
|
ifeq ($(SOURCE_SUFFIX),.java) # Those rules will be used if SOURCE contain a .java file
|
|
|
|
|
|
|
|
|
|
SOURCE_PROJECT_DIR := $(SOURCE)
|
|
|
|
|
SOURCE_PROJECT_DIR := $(subst /$(SOURCE_NAME).java,, $(SOURCE_PROJECT_DIR))
|
|
|
|
|
SOURCE_PROJECT_PATH = $(subst /,$S,$(SOURCE_PROJECT_DIR))
|
|
|
|
|
|
|
|
|
|
.PHONY: build # Build a Java program.
|
|
|
|
|
build: $(SOURCE) #$(SOURCE_PROJECT_DIR)/pom.xml java
|
|
|
|
|
$(warning This is not supported.\
|
|
|
|
|
Prefer to place your java file in a samples/ or examples/ java directory\
|
|
|
|
|
and call "make rjava_$(SOURCE_NAME)" target instead.)
|
|
|
|
|
# cd $(SOURCE_PROJECT_PATH) && "$(MVN_BIN)" compile -b $(ARGS)
|
|
|
|
|
# cd $(SOURCE_PROJECT_PATH) && "$(MVN_BIN)" pack -c Release
|
|
|
|
|
|
|
|
|
|
.PHONY: run # Run a Java program.
|
|
|
|
|
run: build
|
|
|
|
|
endif
|
2022-02-21 16:38:34 +01:00
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
###################################
|
|
|
|
|
## Java Samples/Examples/Tests ##
|
|
|
|
|
###################################
|
2020-09-11 03:07:18 +02:00
|
|
|
JAVA_SRC_DIR := src/main/java/com/google/ortools
|
|
|
|
|
JAVA_SRC_PATH := $(subst /,$S,$(JAVA_SRC_DIR))
|
|
|
|
|
|
2020-09-25 17:45:25 +02:00
|
|
|
JAVA_TEST_DIR := src/test/java/com/google/ortools
|
|
|
|
|
JAVA_TEST_PATH := $(subst /,$S,$(JAVA_TEST_DIR))
|
|
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
# Samples
|
2020-09-28 11:34:44 +02:00
|
|
|
define java-sample-target =
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1: | $(TEMP_JAVA_DIR)
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_DIR)$S$1
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%: \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/samples/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_DIR)$S$1$S$$*
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml: \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(SRC_DIR)/ortools/$1/samples/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
${SRC_DIR}/ortools/java/pom-sample.xml.in \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
|
|
|
|
$(SED) -e "s/@JAVA_PACKAGE@/$(JAVA_ORTOOLS_PACKAGE)/" \
|
|
|
|
|
ortools$Sjava$Spom-sample.xml.in \
|
|
|
|
|
> $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_SAMPLE_PROJECT@/$$*/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_MAIN_CLASS@/com.google.ortools.$2.samples.$$*/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$(OR_TOOLS_MAJOR)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$(OR_TOOLS_MINOR)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2022-06-02 15:37:05 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$(OR_TOOLS_PATCH)/' \
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_PROJECT@/$(JAVA_ORTOOLS_PROJECT)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_SRC_DIR)/%.java: \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/samples/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
|
|
|
|
$(MKDIR_P) $(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sortools$S$1$Ssamples$S$$*.java \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_SRC_PATH)
|
2020-09-11 03:07:18 +02:00
|
|
|
|
|
|
|
|
rjava_%: \
|
2022-03-30 09:35:51 +02:00
|
|
|
java \
|
2022-10-19 17:51:20 +02:00
|
|
|
$(SRC_DIR)/ortools/$1/samples/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_SRC_DIR)/%.java \
|
2020-09-11 03:07:18 +02:00
|
|
|
FORCE
|
2022-03-30 09:35:51 +02:00
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" compile -B
|
|
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" exec:java $(ARGS)
|
2020-09-11 03:07:18 +02:00
|
|
|
endef
|
|
|
|
|
|
2025-06-02 14:52:21 +02:00
|
|
|
JAVA_SAMPLES := init algorithms graph constraint_solver linear_solver routing sat util
|
2020-09-25 17:45:25 +02:00
|
|
|
$(foreach sample,$(JAVA_SAMPLES),$(eval $(call java-sample-target,$(sample),$(subst _,,$(sample)))))
|
2020-09-11 03:07:18 +02:00
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
# Examples
|
2020-09-28 11:34:44 +02:00
|
|
|
define java-example-target =
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1: | $(TEMP_JAVA_DIR)
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_DIR)$S$1
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%: \
|
|
|
|
|
$(SRC_DIR)/examples/$1/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_DIR)$S$1$S$$*
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml: \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(SRC_DIR)/examples/$1/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
${SRC_DIR}/ortools/java/pom-sample.xml.in \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
|
|
|
|
$(SED) -e "s/@JAVA_PACKAGE@/$(JAVA_ORTOOLS_PACKAGE)/" \
|
|
|
|
|
ortools$Sjava$Spom-sample.xml.in \
|
|
|
|
|
> $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_SAMPLE_PROJECT@/$$*/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_MAIN_CLASS@/com.google.ortools.$1.$$*/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$(OR_TOOLS_MAJOR)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$(OR_TOOLS_MINOR)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2022-06-02 15:37:05 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$(OR_TOOLS_PATCH)/' \
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_PROJECT@/$(JAVA_ORTOOLS_PROJECT)/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_SRC_DIR)/%.java: \
|
|
|
|
|
$(SRC_DIR)/examples/$1/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
|
|
|
|
$(MKDIR_P) $(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sexamples$S$1$S$$*.java \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_SRC_PATH)
|
2020-09-11 21:17:23 +02:00
|
|
|
|
|
|
|
|
rjava_%: \
|
2021-04-19 15:05:13 +02:00
|
|
|
java \
|
2022-10-19 17:51:20 +02:00
|
|
|
$(SRC_DIR)/examples/$1/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_SRC_DIR)/%.java \
|
2020-09-11 21:17:23 +02:00
|
|
|
FORCE
|
2022-03-30 09:35:51 +02:00
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" compile -B
|
|
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" exec:java $(ARGS)
|
2020-09-11 21:17:23 +02:00
|
|
|
endef
|
|
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
JAVA_EXAMPLES := contrib java
|
2020-09-25 17:45:25 +02:00
|
|
|
$(foreach example,$(JAVA_EXAMPLES),$(eval $(call java-example-target,$(example))))
|
2020-09-11 21:17:23 +02:00
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
# Tests
|
2022-09-28 15:50:07 +02:00
|
|
|
define java-test-target =
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%: \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/java/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_DIR)$S$1$S$$*
|
2020-09-14 23:49:23 +02:00
|
|
|
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml: \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/java/%.java \
|
2020-09-14 23:49:23 +02:00
|
|
|
${SRC_DIR}/ortools/java/pom-test.xml.in \
|
2022-09-28 15:50:07 +02:00
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
2020-09-14 23:49:23 +02:00
|
|
|
$(SED) -e "s/@JAVA_PACKAGE@/$(JAVA_ORTOOLS_PACKAGE)/" \
|
|
|
|
|
ortools$Sjava$Spom-test.xml.in \
|
2022-09-28 15:50:07 +02:00
|
|
|
> $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
|
|
|
|
$(SED) -i -e 's/@JAVA_TEST_PROJECT@/$$*/' \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2020-09-14 23:49:23 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2020-10-02 08:48:40 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MAJOR@/$(OR_TOOLS_MAJOR)/' \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2020-10-02 08:48:40 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_MINOR@/$(OR_TOOLS_MINOR)/' \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2022-06-02 15:37:05 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION_PATCH@/$(OR_TOOLS_PATCH)/' \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2020-09-14 23:49:23 +02:00
|
|
|
$(SED) -i -e 's/@JAVA_PROJECT@/$(JAVA_ORTOOLS_PROJECT)/' \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml
|
2020-09-14 23:49:23 +02:00
|
|
|
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_TEST_DIR)/%.java: \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/java/%.java \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/$1/%
|
|
|
|
|
$(MKDIR_P) $(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_TEST_PATH)
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sortools$S$1$Sjava$S$$*.java \
|
|
|
|
|
$(TEMP_JAVA_DIR)$S$1$S$$*$S$(JAVA_TEST_PATH)
|
2020-09-14 23:49:23 +02:00
|
|
|
|
|
|
|
|
rjava_%: \
|
2021-04-19 15:05:13 +02:00
|
|
|
java \
|
2022-10-19 17:51:20 +02:00
|
|
|
$(SRC_DIR)/ortools/$1/java/%.java \
|
2022-09-28 15:50:07 +02:00
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/$(JAVA_TEST_DIR)/%.java \
|
2020-09-14 23:49:23 +02:00
|
|
|
FORCE
|
2022-09-28 15:50:07 +02:00
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" compile -B
|
|
|
|
|
cd $(TEMP_JAVA_DIR)$S$1$S$$* && "$(MVN_BIN)" test $(ARGS)
|
|
|
|
|
endef
|
|
|
|
|
|
2025-06-02 14:52:21 +02:00
|
|
|
JAVA_TESTS := init algorithms graph constraint_solver linear_solver routing sat util
|
2022-09-28 15:50:07 +02:00
|
|
|
$(foreach test,$(JAVA_TESTS),$(eval $(call java-test-target,$(test))))
|
2020-09-14 23:49:23 +02:00
|
|
|
|
2022-03-30 09:35:51 +02:00
|
|
|
####################
|
|
|
|
|
## Test targets ##
|
|
|
|
|
####################
|
|
|
|
|
|
2020-09-14 23:49:23 +02:00
|
|
|
.PHONY: test_java_algorithms_samples # Build and Run all Java Algorithms Samples (located in ortools/algorithms/samples)
|
|
|
|
|
test_java_algorithms_samples: \
|
|
|
|
|
rjava_Knapsack
|
|
|
|
|
|
|
|
|
|
.PHONY: test_java_constraint_solver_samples # Build and Run all Java CP Samples (located in ortools/constraint_solver/samples)
|
|
|
|
|
test_java_constraint_solver_samples: \
|
|
|
|
|
rjava_SimpleCpProgram \
|
|
|
|
|
rjava_SimpleRoutingProgram \
|
|
|
|
|
rjava_Tsp \
|
|
|
|
|
rjava_TspCities \
|
|
|
|
|
rjava_TspCircuitBoard \
|
|
|
|
|
rjava_TspDistanceMatrix \
|
|
|
|
|
rjava_Vrp \
|
2021-03-26 12:10:57 +01:00
|
|
|
rjava_VrpBreaks \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_VrpCapacity \
|
|
|
|
|
rjava_VrpDropNodes \
|
|
|
|
|
rjava_VrpGlobalSpan \
|
|
|
|
|
rjava_VrpInitialRoutes \
|
|
|
|
|
rjava_VrpPickupDelivery \
|
|
|
|
|
rjava_VrpPickupDeliveryFifo \
|
|
|
|
|
rjava_VrpPickupDeliveryLifo \
|
|
|
|
|
rjava_VrpResources \
|
2022-10-17 18:27:46 +02:00
|
|
|
rjava_VrpSolutionCallback \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_VrpStartsEnds \
|
|
|
|
|
rjava_VrpTimeWindows \
|
|
|
|
|
rjava_VrpWithTimeLimit
|
|
|
|
|
|
|
|
|
|
.PHONY: test_java_graph_samples # Build and Run all Java Graph Samples (located in ortools/graph/samples)
|
|
|
|
|
test_java_graph_samples: \
|
2021-12-22 11:05:53 +01:00
|
|
|
rjava_AssignmentLinearSumAssignment \
|
|
|
|
|
rjava_AssignmentMinFlow \
|
|
|
|
|
rjava_BalanceMinFlow \
|
|
|
|
|
rjava_SimpleMaxFlowProgram \
|
|
|
|
|
rjava_SimpleMinCostFlowProgram
|
2020-09-14 23:49:23 +02:00
|
|
|
|
|
|
|
|
.PHONY: test_java_linear_solver_samples # Build and Run all Java LP Samples (located in ortools/linear_solver/samples)
|
|
|
|
|
test_java_linear_solver_samples: \
|
|
|
|
|
rjava_AssignmentMip \
|
2020-12-07 14:57:42 +01:00
|
|
|
rjava_BasicExample \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_BinPackingMip \
|
|
|
|
|
rjava_LinearProgrammingExample \
|
|
|
|
|
rjava_MipVarArray \
|
|
|
|
|
rjava_MultipleKnapsackMip \
|
|
|
|
|
rjava_SimpleLpProgram \
|
2021-08-04 15:12:49 +02:00
|
|
|
rjava_SimpleMipProgram \
|
|
|
|
|
rjava_StiglerDiet
|
2020-09-14 23:49:23 +02:00
|
|
|
|
2022-04-03 23:22:02 +02:00
|
|
|
.PHONY: test_java_model_builder_samples # Build and Run all Java MB Samples (located in ortools/model_builder/samples)
|
|
|
|
|
test_java_model_builder_samples: \
|
|
|
|
|
rjava_SimpleLpProgramMb \
|
|
|
|
|
rjava_SimpleMipProgramMb
|
2022-03-28 18:29:33 +02:00
|
|
|
|
2020-09-14 23:49:23 +02:00
|
|
|
.PHONY: test_java_sat_samples # Build and Run all Java SAT Samples (located in ortools/sat/samples)
|
|
|
|
|
test_java_sat_samples: \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_AssignmentGroupsSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_AssignmentSat \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_AssignmentTaskSizesSat \
|
|
|
|
|
rjava_AssignmentTeamsSat \
|
2021-02-04 14:21:52 +01:00
|
|
|
rjava_AssumptionsSampleSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_BinPackingProblemSat \
|
|
|
|
|
rjava_BoolOrSampleSat \
|
|
|
|
|
rjava_ChannelingSampleSat \
|
|
|
|
|
rjava_CpIsFunSat \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_CpSatExample \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_EarlinessTardinessCostSampleSat \
|
|
|
|
|
rjava_IntervalSampleSat \
|
|
|
|
|
rjava_LiteralSampleSat \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_MinimalJobshopSat \
|
|
|
|
|
rjava_MultipleKnapsackSat \
|
|
|
|
|
rjava_NQueensSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_NoOverlapSampleSat \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_NonLinearSat \
|
|
|
|
|
rjava_NursesSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_OptionalIntervalSampleSat \
|
|
|
|
|
rjava_RabbitsAndPheasantsSat \
|
|
|
|
|
rjava_RankingSampleSat \
|
|
|
|
|
rjava_ReifiedSampleSat \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_ScheduleRequestsSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_SearchForAllSolutionsSampleSat \
|
|
|
|
|
rjava_SimpleSatProgram \
|
2022-10-17 16:11:22 +02:00
|
|
|
rjava_SolutionHintingSampleSat \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_SolveAndPrintIntermediateSolutionsSampleSat \
|
|
|
|
|
rjava_SolveWithTimeLimitSampleSat \
|
|
|
|
|
rjava_StepFunctionSampleSat \
|
|
|
|
|
rjava_StopAfterNSolutionsSampleSat
|
|
|
|
|
|
2022-02-22 10:11:08 +01:00
|
|
|
.PHONY: check_java
|
|
|
|
|
check_java: \
|
2020-09-14 23:49:23 +02:00
|
|
|
test_java_algorithms_samples \
|
|
|
|
|
test_java_constraint_solver_samples \
|
|
|
|
|
test_java_graph_samples \
|
|
|
|
|
test_java_linear_solver_samples \
|
2022-04-03 23:22:02 +02:00
|
|
|
test_java_model_builder_samples \
|
2020-09-14 23:49:23 +02:00
|
|
|
test_java_sat_samples \
|
|
|
|
|
rjava_LinearProgramming \
|
|
|
|
|
rjava_IntegerProgramming
|
|
|
|
|
|
2026-01-07 16:14:45 +01:00
|
|
|
.PHONY: test_java_tests # Build and Run all Java Tests (located in ortools/*/java)
|
2020-09-14 23:49:23 +02:00
|
|
|
test_java_tests: \
|
2022-09-28 15:50:07 +02:00
|
|
|
rjava_InitTest \
|
2021-08-31 11:58:46 +02:00
|
|
|
rjava_KnapsackSolverTest \
|
|
|
|
|
rjava_FlowTest \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_LinearSolverTest \
|
2022-09-28 15:50:07 +02:00
|
|
|
rjava_ModelBuilderTest \
|
2020-09-14 23:49:23 +02:00
|
|
|
rjava_ConstraintSolverTest \
|
|
|
|
|
rjava_RoutingSolverTest \
|
2021-08-31 11:58:46 +02:00
|
|
|
rjava_CpModelTest \
|
|
|
|
|
rjava_CpSolverTest \
|
2023-02-07 19:44:39 +01:00
|
|
|
rjava_LinearExprTest
|
2020-09-14 23:49:23 +02:00
|
|
|
|
|
|
|
|
.PHONY: test_java_contrib # Build and Run all Java Contrib (located in examples/contrib)
|
|
|
|
|
test_java_contrib: \
|
|
|
|
|
rjava_AllDifferentExcept0 \
|
|
|
|
|
rjava_AllInterval \
|
|
|
|
|
rjava_Circuit \
|
|
|
|
|
rjava_CoinsGridMIP \
|
|
|
|
|
rjava_ColoringMIP \
|
|
|
|
|
rjava_CoveringOpl \
|
|
|
|
|
rjava_Crossword \
|
|
|
|
|
rjava_DeBruijn \
|
|
|
|
|
rjava_Diet \
|
|
|
|
|
rjava_DietMIP \
|
|
|
|
|
rjava_DivisibleBy9Through1 \
|
|
|
|
|
rjava_GolombRuler \
|
|
|
|
|
rjava_KnapsackMIP \
|
|
|
|
|
rjava_LeastDiff \
|
|
|
|
|
rjava_MagicSquare \
|
|
|
|
|
rjava_Map2 \
|
|
|
|
|
rjava_Map \
|
|
|
|
|
rjava_Minesweeper \
|
|
|
|
|
rjava_MultiThreadTest \
|
|
|
|
|
rjava_NQueens2 \
|
|
|
|
|
rjava_NQueens \
|
|
|
|
|
rjava_Partition \
|
|
|
|
|
rjava_QuasigroupCompletion \
|
|
|
|
|
rjava_SendMoreMoney2 \
|
|
|
|
|
rjava_SendMoreMoney \
|
|
|
|
|
rjava_SendMostMoney \
|
|
|
|
|
rjava_Seseman \
|
|
|
|
|
rjava_SetCovering2 \
|
|
|
|
|
rjava_SetCovering3 \
|
|
|
|
|
rjava_SetCovering4 \
|
|
|
|
|
rjava_SetCoveringDeployment \
|
|
|
|
|
rjava_SetCovering \
|
|
|
|
|
rjava_SimpleRoutingTest \
|
|
|
|
|
rjava_StableMarriage \
|
|
|
|
|
rjava_StiglerMIP \
|
|
|
|
|
rjava_Strimko2 \
|
|
|
|
|
rjava_Sudoku \
|
|
|
|
|
rjava_SurvoPuzzle \
|
|
|
|
|
rjava_ToNum \
|
|
|
|
|
rjava_WhoKilledAgatha \
|
|
|
|
|
rjava_Xkcd \
|
|
|
|
|
rjava_YoungTableaux
|
|
|
|
|
|
2022-10-05 12:46:43 +02:00
|
|
|
.PHONY: test_java_java # Build and Run all Java Examples (located in examples/java)
|
2020-09-14 23:49:23 +02:00
|
|
|
test_java_java: \
|
|
|
|
|
rjava_CapacitatedVehicleRoutingProblemWithTimeWindows \
|
|
|
|
|
rjava_FlowExample \
|
|
|
|
|
rjava_IntegerProgramming \
|
|
|
|
|
rjava_LinearAssignmentAPI \
|
|
|
|
|
rjava_LinearProgramming \
|
|
|
|
|
rjava_RabbitsPheasants \
|
|
|
|
|
rjava_RandomTsp
|
|
|
|
|
|
2022-02-22 10:11:08 +01:00
|
|
|
.PHONY: test_java
|
|
|
|
|
test_java: \
|
|
|
|
|
check_java \
|
2020-09-14 23:49:23 +02:00
|
|
|
test_java_tests \
|
|
|
|
|
test_java_contrib \
|
|
|
|
|
test_java_java
|
|
|
|
|
|
2022-03-28 18:29:33 +02:00
|
|
|
###############
|
|
|
|
|
## Archive ##
|
|
|
|
|
###############
|
|
|
|
|
archive_java: $(INSTALL_JAVA_NAME)$(ARCHIVE_EXT)
|
|
|
|
|
|
|
|
|
|
$(INSTALL_JAVA_NAME):
|
|
|
|
|
$(MKDIR) $(INSTALL_JAVA_NAME)
|
|
|
|
|
|
|
|
|
|
$(INSTALL_JAVA_NAME)/examples: | $(INSTALL_JAVA_NAME)
|
|
|
|
|
$(MKDIR) $(INSTALL_JAVA_NAME)$Sexamples
|
|
|
|
|
|
|
|
|
|
define java-sample-archive =
|
|
|
|
|
$(INSTALL_JAVA_NAME)/examples/%/pom.xml: \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
|
|
|
|
$(SRC_DIR)/ortools/$1/samples/%.java \
|
|
|
|
|
| $(INSTALL_JAVA_NAME)/examples
|
|
|
|
|
-$(MKDIR_P) $(INSTALL_JAVA_NAME)$Sexamples$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml $(INSTALL_JAVA_NAME)$Sexamples$S$$*
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sortools$S$1$Ssamples$S$$*.java $(INSTALL_JAVA_NAME)$Sexamples$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
$(foreach sample,$(JAVA_SAMPLES),$(eval $(call java-sample-archive,$(sample))))
|
|
|
|
|
|
|
|
|
|
define java-example-archive =
|
|
|
|
|
$(INSTALL_JAVA_NAME)/examples/%/pom.xml: \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
|
|
|
|
$(SRC_DIR)/examples/$1/%.java \
|
|
|
|
|
| $(INSTALL_JAVA_NAME)/examples
|
|
|
|
|
-$(MKDIR_P) $(INSTALL_JAVA_NAME)$Sexamples$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml $(INSTALL_JAVA_NAME)$Sexamples$S$$*
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sexamples$S$1$S$$*.java $(INSTALL_JAVA_NAME)$Sexamples$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
$(foreach example,$(JAVA_EXAMPLES),$(eval $(call java-example-archive,$(example))))
|
|
|
|
|
|
|
|
|
|
SAMPLE_JAVA_FILES = \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(INSTALL_JAVA_NAME)/examples/,$(basename $(notdir $(wildcard ortools/*/samples/*.java)))))
|
|
|
|
|
|
|
|
|
|
EXAMPLE_JAVA_FILES = \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(INSTALL_JAVA_NAME)/examples/,$(basename $(notdir $(wildcard examples/contrib/*.java))))) \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(INSTALL_JAVA_NAME)/examples/,$(basename $(notdir $(wildcard examples/java/*.java)))))
|
|
|
|
|
|
|
|
|
|
$(INSTALL_JAVA_NAME)$(ARCHIVE_EXT): java \
|
|
|
|
|
$(SAMPLE_JAVA_FILES) \
|
|
|
|
|
$(EXAMPLE_JAVA_FILES) \
|
2022-04-25 15:36:48 +02:00
|
|
|
LICENSE tools/README.java.md tools/Makefile.java.mk
|
2022-03-28 18:29:33 +02:00
|
|
|
$(COPY) $(JAVA_BUILD_PATH)$Sortools-java$Starget$S*.jar $(INSTALL_JAVA_NAME)$S
|
|
|
|
|
$(COPY) $(JAVA_BUILD_PATH)$Sortools-$(JAVA_NATIVE_IDENTIFIER)$Starget$S*.jar $(INSTALL_JAVA_NAME)$S
|
|
|
|
|
$(COPY) LICENSE $(INSTALL_JAVA_NAME)$SLICENSE
|
|
|
|
|
$(COPY) tools$SREADME.java.md $(INSTALL_JAVA_NAME)$SREADME.md
|
2022-04-25 15:36:48 +02:00
|
|
|
$(COPY) tools$SMakefile.java.mk $(INSTALL_JAVA_NAME)$SMakefile
|
2022-03-28 18:29:33 +02:00
|
|
|
$(SED) -i -e 's/@PROJECT_VERSION@/$(OR_TOOLS_VERSION)/' $(INSTALL_JAVA_NAME)$SMakefile
|
|
|
|
|
ifeq ($(PLATFORM),WIN64)
|
|
|
|
|
$(MKDIR) $(INSTALL_JAVA_NAME)$Sbin
|
|
|
|
|
$(COPY) $(WHICH) $(INSTALL_JAVA_NAME)$Sbin$S
|
|
|
|
|
$(COPY) $(TOUCH) $(INSTALL_JAVA_NAME)$Sbin$S
|
|
|
|
|
$(ZIP) -r $(INSTALL_JAVA_NAME)$(ARCHIVE_EXT) $(INSTALL_JAVA_NAME)
|
|
|
|
|
else
|
|
|
|
|
$(TAR) --no-same-owner -czvf $(INSTALL_JAVA_NAME)$(ARCHIVE_EXT) $(INSTALL_JAVA_NAME)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# Test archive
|
|
|
|
|
TEMP_JAVA_TEST_DIR := temp_java_test
|
|
|
|
|
.PHONY: test_archive_java # Test C++ OR-Tools archive is OK.
|
|
|
|
|
test_archive_java: $(INSTALL_JAVA_NAME)$(ARCHIVE_EXT)
|
|
|
|
|
-$(DELREC) $(TEMP_JAVA_TEST_DIR)
|
|
|
|
|
-$(MKDIR) $(TEMP_JAVA_TEST_DIR)
|
|
|
|
|
ifeq ($(PLATFORM),WIN64)
|
|
|
|
|
$(UNZIP) $< -d $(TEMP_JAVA_TEST_DIR)
|
|
|
|
|
else
|
|
|
|
|
$(TAR) -xvf $< -C $(TEMP_JAVA_TEST_DIR)
|
|
|
|
|
endif
|
|
|
|
|
cd $(TEMP_JAVA_TEST_DIR)$S$(INSTALL_JAVA_NAME) \
|
|
|
|
|
&& $(MAKE) MAKEFLAGS= \
|
|
|
|
|
&& $(MAKE) MAKEFLAGS= test
|
|
|
|
|
|
|
|
|
|
########################
|
|
|
|
|
## Publish Java Pkg ##
|
|
|
|
|
########################
|
2022-02-22 10:11:08 +01:00
|
|
|
.PHONY: publish_java_runtime
|
|
|
|
|
publish_java_runtime: java_runtime
|
2021-04-19 15:05:13 +02:00
|
|
|
cd $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT) && "$(MVN_BIN)" deploy
|
|
|
|
|
|
2022-02-22 10:11:08 +01:00
|
|
|
.PHONY: publish_java
|
|
|
|
|
publish_java: java
|
2021-03-29 15:50:39 +02:00
|
|
|
cd $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT) && "$(MVN_BIN)" deploy
|
|
|
|
|
|
2020-09-25 17:45:25 +02:00
|
|
|
#######################
|
|
|
|
|
## EXAMPLE ARCHIVE ##
|
|
|
|
|
#######################
|
|
|
|
|
$(TEMP_JAVA_DIR)/ortools_examples: | $(TEMP_JAVA_DIR)
|
|
|
|
|
$(MKDIR) $(TEMP_JAVA_DIR)$Sortools_examples
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/ortools_examples/examples: | $(TEMP_JAVA_DIR)/ortools_examples
|
|
|
|
|
$(MKDIR) $(TEMP_JAVA_DIR)$Sortools_examples$Sexamples
|
|
|
|
|
|
|
|
|
|
$(TEMP_JAVA_DIR)/ortools_examples/examples/java: | $(TEMP_JAVA_DIR)/ortools_examples/examples
|
|
|
|
|
$(MKDIR) $(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava
|
|
|
|
|
|
2020-09-28 11:34:44 +02:00
|
|
|
define java-sample-archive =
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/ortools_examples/examples/java/%/pom.xml: \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
2020-09-25 17:45:25 +02:00
|
|
|
ortools/$1/samples/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
| $(TEMP_JAVA_DIR)/ortools_examples/examples/java
|
|
|
|
|
-$(MKDIR_P) $(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sortools$S$1$Ssamples$S$$*.java \
|
|
|
|
|
$(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml \
|
|
|
|
|
$(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*
|
2020-09-25 17:45:25 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
$(foreach sample,$(JAVA_SAMPLES),$(eval $(call java-sample-archive,$(sample))))
|
|
|
|
|
|
2020-09-28 11:34:44 +02:00
|
|
|
define java-example-archive =
|
2022-03-30 09:35:51 +02:00
|
|
|
$(TEMP_JAVA_DIR)/ortools_examples/examples/java/%/pom.xml: \
|
|
|
|
|
$(TEMP_JAVA_DIR)/$1/%/pom.xml \
|
2020-09-25 17:45:25 +02:00
|
|
|
examples/$1/%.java \
|
2022-03-30 09:35:51 +02:00
|
|
|
| $(TEMP_JAVA_DIR)/ortools_examples/examples/java
|
|
|
|
|
-$(MKDIR_P) $(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(SRC_DIR)$Sexamples$S$1$S$$*.java \
|
|
|
|
|
$(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*$S$(JAVA_SRC_PATH)
|
|
|
|
|
$(COPY) $(TEMP_JAVA_DIR)$S$1$S$$*$Spom.xml \
|
|
|
|
|
$(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sjava$S$$*
|
2020-09-25 17:45:25 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
$(foreach example,$(JAVA_EXAMPLES),$(eval $(call java-example-archive,$(example))))
|
|
|
|
|
|
|
|
|
|
SAMPLE_JAVA_FILES = \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(TEMP_JAVA_DIR)/ortools_examples/examples/java/,$(basename $(notdir $(wildcard ortools/*/samples/*.java)))))
|
|
|
|
|
|
|
|
|
|
EXAMPLE_JAVA_FILES = \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(TEMP_JAVA_DIR)/ortools_examples/examples/java/,$(basename $(notdir $(wildcard examples/contrib/*.java))))) \
|
|
|
|
|
$(addsuffix /pom.xml,$(addprefix $(TEMP_JAVA_DIR)/ortools_examples/examples/java/,$(basename $(notdir $(wildcard examples/java/*.java)))))
|
|
|
|
|
|
2022-07-01 16:59:30 +02:00
|
|
|
.PHONY: java_examples_archive # Build stand-alone Java examples archive file for redistribution.
|
2020-09-25 17:45:25 +02:00
|
|
|
java_examples_archive: \
|
|
|
|
|
$(SAMPLE_JAVA_FILES) \
|
|
|
|
|
$(EXAMPLE_JAVA_FILES) \
|
|
|
|
|
| $(TEMP_JAVA_DIR)/ortools_examples/examples/java
|
2020-10-02 17:47:54 +02:00
|
|
|
$(COPY) tools$SREADME.java.md $(TEMP_JAVA_DIR)$Sortools_examples$SREADME.md
|
2022-03-02 21:24:52 +01:00
|
|
|
$(COPY) LICENSE $(TEMP_JAVA_DIR)$Sortools_examples
|
2022-03-07 14:05:12 +01:00
|
|
|
ifeq ($(PLATFORM),WIN64)
|
2020-09-25 17:45:25 +02:00
|
|
|
cd $(TEMP_JAVA_DIR) \
|
|
|
|
|
&& ..\$(ZIP) \
|
|
|
|
|
-r ..\or-tools_java_examples_v$(OR_TOOLS_VERSION).zip \
|
|
|
|
|
ortools_examples
|
|
|
|
|
else
|
|
|
|
|
cd $(TEMP_JAVA_DIR) \
|
|
|
|
|
&& tar -c -v -z --no-same-owner \
|
|
|
|
|
-f ../or-tools_java_examples_v$(OR_TOOLS_VERSION).tar.gz \
|
|
|
|
|
ortools_examples
|
|
|
|
|
endif
|
|
|
|
|
-$(DELREC) $(TEMP_JAVA_DIR)$Sortools_examples
|
|
|
|
|
|
2022-03-07 14:05:12 +01:00
|
|
|
endif # HAS_JAVA=ON
|
2022-02-22 10:11:08 +01:00
|
|
|
|
2020-09-25 17:45:25 +02:00
|
|
|
################
|
|
|
|
|
## Cleaning ##
|
|
|
|
|
################
|
|
|
|
|
clean_java:
|
2020-09-28 14:41:09 +02:00
|
|
|
-$(DELREC) $(TEMP_JAVA_DIR)
|
2022-03-28 18:29:33 +02:00
|
|
|
-$(DELREC) $(INSTALL_JAVA_NAME)
|
|
|
|
|
-$(DELREC) or-tools_java_*
|
|
|
|
|
-$(DELREC) $(TEMP_JAVA_TEST_DIR)
|
2022-03-30 09:35:51 +02:00
|
|
|
-$(DEL) *.jar
|
2020-09-25 17:45:25 +02:00
|
|
|
|
2018-07-17 15:02:26 +02:00
|
|
|
#############
|
|
|
|
|
## DEBUG ##
|
|
|
|
|
#############
|
2018-02-23 14:55:24 +01:00
|
|
|
detect_java:
|
2018-03-06 14:34:17 +01:00
|
|
|
@echo Relevant info for the Java build:
|
2022-02-22 10:36:26 +01:00
|
|
|
@echo BUILD_JAVA = $(BUILD_JAVA)
|
2022-03-07 14:05:12 +01:00
|
|
|
@echo HAS_JAVA = $(HAS_JAVA)
|
2018-07-06 21:03:33 +02:00
|
|
|
@echo JAVA_HOME = $(JAVA_HOME)
|
2018-02-23 14:55:24 +01:00
|
|
|
@echo JAVAC_BIN = $(JAVAC_BIN)
|
|
|
|
|
@echo JAR_BIN = $(JAR_BIN)
|
2018-07-06 21:03:33 +02:00
|
|
|
@echo JAVA_BIN = $(JAVA_BIN)
|
2020-09-07 17:21:35 +02:00
|
|
|
@echo MVN_BIN = $(MVN_BIN)
|
|
|
|
|
@echo JAVA_ORTOOLS_PACKAGE = $(JAVA_ORTOOLS_PACKAGE)
|
|
|
|
|
@echo JAVA_ORTOOLS_NATIVE_PROJECT = $(JAVA_ORTOOLS_NATIVE_PROJECT)
|
|
|
|
|
@echo JAVA_ORTOOLS_PROJECT = $(JAVA_ORTOOLS_PROJECT)
|
2022-03-30 09:35:51 +02:00
|
|
|
@echo INSTALL_JAVA_NAME = $(INSTALL_JAVA_NAME)
|
2022-03-07 14:05:12 +01:00
|
|
|
ifeq ($(PLATFORM),WIN64)
|
2018-03-06 15:03:19 +01:00
|
|
|
@echo off & echo(
|
2018-03-06 14:34:17 +01:00
|
|
|
else
|
|
|
|
|
@echo
|
|
|
|
|
endif
|