- Rename [Makefile|Readme].cc.java.dotnet - Add missing dynamic lib on unix archive (Fix #723) - Add rpah to lib64 for centos - Use CXX, CXXFLAGS and LDFLAGS src: https://www.gnu.org/software/make/manual/make.html#Catalogue-of-Rules - Add which.exe to archive on windows - Add test_archive to .PHONY - Add detect_archive
191 lines
8.0 KiB
Makefile
191 lines
8.0 KiB
Makefile
# ---------- Archive support ----------
|
|
.PHONY: help_archive # Generate list of Archive targets with descriptions.
|
|
help_archive:
|
|
@echo Use one of the following Archive targets:
|
|
ifeq ($(SYSTEM),win)
|
|
@$(GREP) "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.archive.mk | $(SED) "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/"
|
|
@echo off & echo(
|
|
else
|
|
@$(GREP) "^.PHONY: .* #" $(CURDIR)/makefiles/Makefile.archive.mk | $(SED) "s/\.PHONY: \(.*\) # \(.*\)/\1\t\2/" | expand -t20
|
|
@echo
|
|
endif
|
|
|
|
TEMP_ARCHIVE_DIR = temp_archive
|
|
TEMP_FZ_DIR = temp_fz_archive
|
|
TEMP_DATA_DIR = temp_data
|
|
|
|
# Main target
|
|
.PHONY: archive # Create OR-Tools archive for C++, Java and .Net with examples.
|
|
archive: $(INSTALL_DIR)$(ARCHIVE_EXT)
|
|
|
|
.PHONY: fz_archive # Create OR-Tools flatzinc archive with examples.
|
|
fz_archive: $(FZ_INSTALL_DIR)$(ARCHIVE_EXT)
|
|
|
|
.PHONY: data_archive # Create OR-Tools archive for data examples.
|
|
data_archive: $(INSTALL_DIR)_data$(ARCHIVE_EXT)
|
|
|
|
.PHONY: clean_archive # Clean Archive output from previous build.
|
|
clean_archive:
|
|
-$(DELREC) $(TEMP_ARCHIVE_DIR)
|
|
-$(DELREC) $(TEMP_FZ_DIR)
|
|
-$(DELREC) $(TEMP_DATA_DIR)
|
|
-$(DELREC) $(TEMP_TEST_DIR)
|
|
-$(DELREC) $(TEMP_FZ_TEST_DIR)
|
|
-$(DEL) $(INSTALL_DIR)$(ARCHIVE_EXT)
|
|
-$(DEL) $(FZ_INSTALL_DIR)$(ARCHIVE_EXT)
|
|
-$(DEL) $(INSTALL_DIR)_data$(ARCHIVE_EXT)
|
|
|
|
$(TEMP_ARCHIVE_DIR):
|
|
$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)
|
|
|
|
$(INSTALL_DIR)$(ARCHIVE_EXT): archive_cc archive_java archive_dotnet
|
|
$(COPY) tools$SREADME.cc.java.dotnet $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$SREADME
|
|
$(COPY) tools$SMakefile.cc.java.dotnet $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$SMakefile
|
|
ifeq ($(SYSTEM),win)
|
|
$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools$Swin
|
|
$(COPY) $(MAKE) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Stools
|
|
$(COPY) $(WHICH) $(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)
|
|
|
|
.PHONY: archive_cc # Add C++ OR-Tools to archive.
|
|
archive_cc: cc | $(TEMP_ARCHIVE_DIR)
|
|
$(MAKE) install_cc prefix=$(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)
|
|
$(COPY) $(CVRPTW_PATH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib
|
|
$(COPY) $(DIMACS_PATH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib
|
|
$(COPY) $(FAP_PATH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Slib
|
|
$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp
|
|
$(COPY) examples$Scpp$S*.cc $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp
|
|
$(COPY) examples$Scpp$S*.h $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples$Scpp
|
|
|
|
.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
|
|
$(COPYREC) $(JAVA_EX_PATH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples
|
|
|
|
.PHONY: archive_dotnet # Add .Net OR-Tools to archive.
|
|
archive_dotnet: dotnet | $(TEMP_ARCHIVE_DIR)
|
|
$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sbin
|
|
"$(DOTNET_BIN)" publish \
|
|
-f netstandard2.0 \
|
|
-c Release \
|
|
-o "..$S..$S..$Stemp_archive$S$(INSTALL_DIR)$Sbin" \
|
|
ortools$Sdotnet$S$(ORTOOLS_DLL_NAME)$S$(ORTOOLS_DLL_NAME).csproj
|
|
"$(DOTNET_BIN)" publish \
|
|
-f netstandard2.0 \
|
|
-c Release \
|
|
-o "..$S..$S..$Stemp_archive$S$(INSTALL_DIR)$Sbin" \
|
|
ortools$Sdotnet$S$(ORTOOLS_FSHARP_DLL_NAME)$S$(ORTOOLS_FSHARP_DLL_NAME).fsproj
|
|
$(COPY) $(BIN_DIR)$S$(CLR_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sbin
|
|
$(COPY) $(BIN_DIR)$S$(CLR_PROTOBUF_DLL_NAME)$(DLL) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sbin
|
|
$(MKDIR_P) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples
|
|
$(COPYREC) $(DOTNET_EX_PATH) $(TEMP_ARCHIVE_DIR)$S$(INSTALL_DIR)$Sexamples
|
|
|
|
$(FZ_INSTALL_DIR)$(ARCHIVE_EXT): fz | $(TEMP_FZ_DIR)
|
|
$(MAKE) install_cc prefix=$(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)
|
|
$(COPY) $(FLATZINC_PATH) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Slib
|
|
$(COPY) $(BIN_DIR)$Sfz$E $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sbin$S$(FZ_EXE)
|
|
$(COPY) $(BIN_DIR)$Sparser_main$E $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sbin$Sparser-or-tools$E
|
|
$(MKDIR) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare
|
|
$(MKDIR) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_cp
|
|
$(COPY) ortools$Sflatzinc$Smznlib_cp$S* $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_cp
|
|
$(MKDIR) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_sat
|
|
$(COPY) ortools$Sflatzinc$Smznlib_sat$S* $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_sat
|
|
$(MKDIR) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sexamples
|
|
$(COPY) examples$Sflatzinc$S* $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sexamples
|
|
ifeq ($(SYSTEM),win)
|
|
cd $(TEMP_FZ_DIR) && ..$S$(ZIP) -r ..$S$(FZ_INSTALL_DIR)$(ARCHIVE_EXT) $(FZ_INSTALL_DIR)
|
|
else
|
|
$(TAR) -C $(TEMP_FZ_DIR) --no-same-owner -czvf $(FZ_INSTALL_DIR)$(ARCHIVE_EXT) $(FZ_INSTALL_DIR)
|
|
endif
|
|
-$(DELREC) $(TEMP_FZ_DIR)
|
|
|
|
$(TEMP_FZ_DIR):
|
|
$(MKDIR_P) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)
|
|
|
|
$(INSTALL_DIR)_data$(ARCHIVE_EXT):
|
|
-$(DELREC) $(TEMP_DATA_DIR)
|
|
$(MKDIR) $(TEMP_DATA_DIR)
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Set_jobshop
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Sflexible_jobshop
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Sjobshop
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Smultidim_knapsack
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Scvrptw
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Spdptw
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Sfill_a_pix
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Sminesweeper
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Srogo
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Ssurvo_puzzle
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Squasigroup_completion
|
|
$(MKDIR) $(TEMP_DATA_DIR)$S$(INSTALL_DIR)$Sexamples$Sdata$Sdiscrete_tomography
|
|
#credits
|
|
$(COPY) LICENSE-2.0.txt $(TEMP_DATA_DIR)$S$(INSTALL_DIR)
|
|
$(TAR) -c -v \
|
|
--exclude *svn* \
|
|
--exclude *roadef* \
|
|
--exclude *vector_packing* \
|
|
--exclude *nsplib* \
|
|
examples$Sdata | $(TAR) -xvm -C $(TEMP_DATA_DIR)$S$(INSTALL_DIR)
|
|
ifeq ($(SYSTEM),win)
|
|
cd $(TEMP_DATA_DIR) && ..$S$(ZIP) -r ..$S$(INSTALL_DIR)_data$(ARCHIVE_EXT) $(INSTALL_DIR)
|
|
else
|
|
$(TAR) -C $(TEMP_DATA_DIR) --no-same-owner -czvf $(INSTALL_DIR)_data$(ARCHIVE_EXT) $(INSTALL_DIR)
|
|
endif
|
|
-$(DELREC) $(TEMP_DATA_DIR)
|
|
|
|
###############
|
|
## TESTING ##
|
|
###############
|
|
TEMP_TEST_DIR = temp_test
|
|
.PHONY: test_archive
|
|
test_archive: $(INSTALL_DIR)$(ARCHIVE_EXT)
|
|
-$(DELREC) $(TEMP_TEST_DIR)
|
|
$(MKDIR) $(TEMP_TEST_DIR)
|
|
#this is to make sure the archive tests don't use the root libraries
|
|
$(RENAME) lib lib2
|
|
ifeq ($(SYSTEM),win)
|
|
$(UNZIP) $< -d $(TEMP_TEST_DIR)
|
|
else
|
|
$(TAR) -xvf $< -C $(TEMP_TEST_DIR)
|
|
endif
|
|
( cd $(TEMP_TEST_DIR)$S$(INSTALL_DIR) && $(MAKE) all ) && \
|
|
$(RENAME) lib2 lib && echo "archive test succeeded" || \
|
|
( $(RENAME) lib2 lib && echo "archive test failed" && exit 1)
|
|
|
|
TEMP_FZ_TEST_DIR = temp_fz_test
|
|
.PHONY: test_fz_archive
|
|
test_fz_archive: $(FZ_INSTALL_DIR)$(ARCHIVE_EXT)
|
|
-$(DELREC) $(TEMP_FZ_TEST_DIR)
|
|
$(MKDIR) $(TEMP_FZ_TEST_DIR)
|
|
#this is to make sure the archive tests don't use the root libraries
|
|
$(RENAME) lib lib2
|
|
ifeq ($(SYSTEM),win)
|
|
$(UNZIP) $< -d $(TEMP_FZ_TEST_DIR)
|
|
else
|
|
$(TAR) -xvf $< -C $(TEMP_FZ_TEST_DIR)
|
|
endif
|
|
( cd $(TEMP_FZ_TEST_DIR)$S$(FZ_INSTALL_DIR) && .$Sbin$S$(FZ_EXE) examples$Scircuit_test.fzn ) && \
|
|
$(RENAME) lib2 lib && echo "fz archive test succeeded" || \
|
|
( $(RENAME) lib2 lib && echo "fz archive test failed" && exit 1)
|
|
|
|
.PHONY: detect_archive # Show variables used to build archive OR-Tools.
|
|
detect_archive:
|
|
@echo Relevant info for the archive build:
|
|
@echo INSTALL_DIR = $(INSTALL_DIR)
|
|
@echo FZ_INSTALL_DIR = $(FZ_INSTALL_DIR)
|
|
@echo ARCHIVE_EXT = $(ARCHIVE_EXT)
|
|
ifeq ($(SYSTEM),win)
|
|
@echo off & echo(
|
|
else
|
|
@echo
|
|
endif
|