make: Generate example archives for each languages

This commit is contained in:
Mizux Seiha
2020-09-25 17:45:25 +02:00
parent 0ae0f0e1f6
commit d83e4c1fce
8 changed files with 532 additions and 214 deletions

View File

@@ -349,37 +349,17 @@ run: build
cd $(SOURCE_PROJECT_PATH) && "$(MVN_BIN)" exec:java $(ARGS)
endif
################
## Cleaning ##
################
.PHONY: clean_java # Clean Java output from previous build.
clean_java:
-$(DELREC) $(GEN_PATH)$Sjava
-$(DELREC) $(OBJ_DIR)$Scom
-$(DEL) $(CLASS_DIR)$S*.class
-$(DELREC) $(CLASS_DIR)
-$(DEL) $(GEN_PATH)$Sortools$Salgorithms$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sconstraint_solver$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sgraph$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Slinear_solver$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*java_wrap*
-$(DEL) $(OBJ_DIR)$Sswig$S*_java_wrap.$O
-$(DEL) $(LIB_DIR)$S$(LIB_PREFIX)jni*.$(JNI_LIB_EXT)
-$(DEL) $(LIB_DIR)$S*.jar
-$(DELREC) temp_java
###################
## Maven package ##
###################
$(TEMP_JAVA_DIR):
-$(MKDIR) $(TEMP_JAVA_DIR)
$(MKDIR) $(TEMP_JAVA_DIR)
$(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_PROJECT): | $(TEMP_JAVA_DIR)
-$(MKDIR) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT)
$(MKDIR) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT)
$(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT): | $(TEMP_JAVA_DIR)
-$(MKDIR) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT)
$(MKDIR) $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_NATIVE_PROJECT)
$(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_NATIVE_PROJECT)/pom.xml: \
${SRC_DIR}/ortools/java/pom-native.xml.in \
@@ -455,7 +435,10 @@ endif
JAVA_SRC_DIR := src/main/java/com/google/ortools
JAVA_SRC_PATH := $(subst /,$S,$(JAVA_SRC_DIR))
SAMPLES := algorithms graph constraint_solver linear_solver sat
JAVA_TEST_DIR := src/test/java/com/google/ortools
JAVA_TEST_PATH := $(subst /,$S,$(JAVA_TEST_DIR))
JAVA_SAMPLES := algorithms graph constraint_solver linear_solver sat
define java-sample-target
$$(TEMP_JAVA_DIR)/$1: | $$(TEMP_JAVA_DIR)
@@ -499,9 +482,9 @@ rjava_%: \
endef
$(foreach sample,$(SAMPLES),$(eval $(call java-sample-target,$(sample),$(subst _,,$(sample)))))
$(foreach sample,$(JAVA_SAMPLES),$(eval $(call java-sample-target,$(sample),$(subst _,,$(sample)))))
EXAMPLES := contrib java
JAVA_EXAMPLES := contrib java
define java-example-target
$$(TEMP_JAVA_DIR)/$1: | $$(TEMP_JAVA_DIR)
@@ -545,11 +528,9 @@ rjava_%: \
endef
$(foreach example,$(EXAMPLES),$(eval $(call java-example-target,$(example))))
$(foreach example,$(JAVA_EXAMPLES),$(eval $(call java-example-target,$(example))))
JAVA_TEST_DIR := src/test/java/com/google/ortools
JAVA_TEST_PATH := $(subst /,$S,$(JAVA_TEST_DIR))
JAVA_TESTS := tests
$(TEMP_JAVA_DIR)/tests: | $(TEMP_JAVA_DIR)
-$(MKDIR) $(TEMP_JAVA_DIR)$Stests
@@ -732,6 +713,100 @@ test_java_pimpl: \
test_java_contrib \
test_java_java
#######################
## EXAMPLE ARCHIVE ##
#######################
TEMP_JAVA_DIR=temp_java
$(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
$(TEMP_JAVA_DIR)/ortools_examples/examples/data: | $(TEMP_JAVA_DIR)/ortools_examples/examples
$(MKDIR) $(TEMP_JAVA_DIR)$Sortools_examples$Sexamples$Sdata
define java-sample-archive
$$(TEMP_JAVA_DIR)/ortools_examples/examples/java/%/pom.xml: \
$$(TEMP_JAVA_DIR)/$1/%/pom.xml \
ortools/$1/samples/%.java \
| $$(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$$*
endef
$(foreach sample,$(JAVA_SAMPLES),$(eval $(call java-sample-archive,$(sample))))
define java-example-archive
$$(TEMP_JAVA_DIR)/ortools_examples/examples/java/%/pom.xml: \
$$(TEMP_JAVA_DIR)/$1/%/pom.xml \
examples/$1/%.java \
| $$(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$$*
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)))))
.PHONY: java_examples_archive # Build stand-alone C++ examples archive file for redistribution.
java_examples_archive: \
$(SAMPLE_JAVA_FILES) \
$(EXAMPLE_JAVA_FILES) \
| $(TEMP_JAVA_DIR)/ortools_examples/examples/java
$(COPY) tools$SREADME.examples.java $(TEMP_JAVA_DIR)$Sortools_examples$SREADME.md
$(COPY) LICENSE-2.0.txt $(TEMP_JAVA_DIR)$Sortools_examples
ifeq ($(SYSTEM),win)
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
################
## Cleaning ##
################
.PHONY: clean_java # Clean Java output from previous build.
clean_java:
-$(DELREC) $(GEN_PATH)$Sjava
-$(DELREC) $(OBJ_DIR)$Scom
-$(DEL) $(CLASS_DIR)$S*.class
-$(DELREC) $(CLASS_DIR)
-$(DEL) $(GEN_PATH)$Sortools$Salgorithms$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sconstraint_solver$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sgraph$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Slinear_solver$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Ssat$S*java_wrap*
-$(DEL) $(GEN_PATH)$Sortools$Sutil$S*java_wrap*
-$(DEL) $(OBJ_DIR)$Sswig$S*_java_wrap.$O
-$(DEL) $(LIB_DIR)$S$(LIB_PREFIX)jni*.$(JNI_LIB_EXT)
-$(DEL) $(LIB_DIR)$S*.jar
-$(DELREC) $(TEMP_DATA_DIR)
#############
## DEBUG ##
#############