Archive: Rework cc/java/dotnet (Fix #723)
- 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
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -31,6 +31,7 @@ temp_fz_test/
|
||||
temp-python*
|
||||
temp_dotnet/
|
||||
temp_dotnet_test/
|
||||
temp_archive/
|
||||
lib/
|
||||
install/
|
||||
examples/csharp/solution/*.csproj
|
||||
|
||||
6
Makefile
6
Makefile
@@ -91,7 +91,7 @@ else
|
||||
endif
|
||||
|
||||
.PHONY: help_all
|
||||
help_all: help_usage help_third_party help_cc help_python help_java help_dotnet
|
||||
help_all: help_usage help_third_party help_cc help_python help_java help_dotnet help_archive
|
||||
|
||||
.PHONY: build_all
|
||||
build_all: cc python java dotnet
|
||||
@@ -102,7 +102,7 @@ test_all: test_cc test_python test_java test_dotnet
|
||||
@echo Or-tools have been built and tested for $(BUILT_LANGUAGES)
|
||||
|
||||
.PHONY: clean_all
|
||||
clean_all: clean_cc clean_python clean_java clean_dotnet clean_compat
|
||||
clean_all: clean_cc clean_python clean_java clean_dotnet clean_compat clean_archive
|
||||
-$(DELREC) $(BIN_DIR)
|
||||
-$(DELREC) $(LIB_DIR)
|
||||
-$(DELREC) $(OBJ_DIR)
|
||||
@@ -110,6 +110,6 @@ clean_all: clean_cc clean_python clean_java clean_dotnet clean_compat
|
||||
@echo Or-tools have been cleaned for $(BUILT_LANGUAGES)
|
||||
|
||||
.PHONY: detect_all
|
||||
detect_all: detect_port detect_third_party detect_cc detect_python detect_java detect_dotnet
|
||||
detect_all: detect_port detect_third_party detect_cc detect_python detect_java detect_dotnet detect_archive
|
||||
|
||||
print-% : ; @echo $* = $($*)
|
||||
|
||||
@@ -1,273 +1,190 @@
|
||||
# ---------- 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)
|
||||
|
||||
$(INSTALL_DIR)$(ARCHIVE_EXT): $(LIB_DIR)$S$(LIB_PREFIX)ortools.$L create_dirs cc_archive dotnet_archive java_archive $(PATCHELF)
|
||||
ifeq ($(SYSTEM),win)
|
||||
cd temp && ..$Stools$Szip.exe -r ..$S$(INSTALL_DIR).zip $(INSTALL_DIR)
|
||||
else
|
||||
ifeq ($(PLATFORM),LINUX)
|
||||
tools/fix_libraries_on_linux.sh
|
||||
else
|
||||
$(COPY) tools/install_libortools_mac.sh temp/$(INSTALL_DIR)
|
||||
chmod 775 temp/$(INSTALL_DIR)/install_libortools_mac.sh
|
||||
cd temp/$(INSTALL_DIR) && ./install_libortools_mac.sh && rm install_libortools_mac.sh
|
||||
endif
|
||||
cd temp && tar -c -v -z --no-same-owner -f ..$S$(INSTALL_DIR).tar.gz $(INSTALL_DIR)
|
||||
endif
|
||||
-$(DELREC) temp
|
||||
|
||||
create_dirs:
|
||||
-$(DELREC) temp
|
||||
$(MKDIR) temp
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Slib
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sobjs
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sbin
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Salgorithms
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sbase
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sconstraint_solver
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sdata
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sgflags
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sglog
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sbop
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sglop
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sgoogle
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sgraph
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Slinear_solver
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Slp_data
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sport
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Ssat
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sutil
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scpp
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scsharp
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scsharp$Ssolution
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scsharp$Ssolution$SProperties
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scom
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scom$Sgoogle
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scom$Sgoogle$Sortools
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Scom$Sgoogle$Sortools$Ssamples
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Sfsharp
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Sfsharp$Slib
|
||||
$(MKDIR) temp$S$(INSTALL_DIR)$Sexamples$Snetstandard
|
||||
#credits
|
||||
$(COPY) LICENSE-2.0.txt temp$S$(INSTALL_DIR)
|
||||
$(COPY) tools$SREADME.cc.java.csharp temp$S$(INSTALL_DIR)$SREADME
|
||||
$(COPY) tools$SMakefile.cc temp$S$(INSTALL_DIR)$SMakefile
|
||||
|
||||
create_data_dirs:
|
||||
-$(DELREC) temp_data
|
||||
$(MKDIR) temp_data
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Set_jobshop
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Sflexible_jobshop
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Sjobshop
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Smultidim_knapsack
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Scvrptw
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Spdptw
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Sfill_a_pix
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Sminesweeper
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Srogo
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Ssurvo_puzzle
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Squasigroup_completion
|
||||
$(MKDIR) temp_data$S$(INSTALL_DIR)$Sexamples$Sdata$Sdiscrete_tomography
|
||||
$(COPY) LICENSE-2.0.txt temp_data$S$(INSTALL_DIR)
|
||||
.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)
|
||||
|
||||
$(INSTALL_DIR)_data$(ARCHIVE_EXT): create_data_dirs
|
||||
ifeq ($(SYSTEM),win)
|
||||
tools$Star.exe -c -v --exclude *svn* --exclude *roadef* --exclude *vector_packing* --exclude *nsplib* examples\\data | tools$Star.exe xvm -C temp_data\\$(INSTALL_DIR)
|
||||
cd temp_data && ..$Stools$Szip.exe -r ..$S$(INSTALL_DIR)_data.zip $(INSTALL_DIR)
|
||||
else
|
||||
tar -c -v --exclude *svn* --exclude *roadef* --exclude *vector_packing* --exclude *nsplib* examples/data | tar xvm -C temp_data/$(INSTALL_DIR)
|
||||
cd temp_data && tar -c -v -z --no-same-owner -f ..$S$(INSTALL_DIR)_data.tar.gz $(INSTALL_DIR)
|
||||
endif
|
||||
-$(DELREC) temp_data
|
||||
|
||||
cc_archive: cc
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)cvrptw_lib.$L temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)dimacs.$L temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)ortools.$L temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)fap.$L temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) examples$Scpp$S*.cc temp$S$(INSTALL_DIR)$Sexamples$Scpp
|
||||
$(COPY) examples$Scpp$S*.h temp$S$(INSTALL_DIR)$Sexamples$Scpp
|
||||
$(COPY) ortools$Salgorithms$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Salgorithms
|
||||
$(COPY) ortools$Sbase$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sbase
|
||||
$(COPY) ortools$Sconstraint_solver$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sconstraint_solver
|
||||
$(COPY) ortools$Sgen$Sortools$Sconstraint_solver$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sconstraint_solver
|
||||
$(COPY) ortools$Sdata$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sdata
|
||||
$(COPY) ortools$Sgen$Sortools$Sdata$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sdata
|
||||
$(COPY) ortools$Sbop$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sbop
|
||||
$(COPY) ortools$Sgen$Sortools$Sbop$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sbop
|
||||
$(COPY) ortools$Sglop$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sglop
|
||||
$(COPY) ortools$Sgen$Sortools$Sglop$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sglop
|
||||
$(COPY) ortools$Sgraph$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sgraph
|
||||
$(COPY) ortools$Sgen$Sortools$Sgraph$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sgraph
|
||||
$(COPY) ortools$Slinear_solver$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Slinear_solver
|
||||
$(COPY) ortools$Slp_data$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Slp_data
|
||||
$(COPY) ortools$Sgen$Sortools$Slinear_solver$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Slinear_solver
|
||||
$(COPY) ortools$Sport$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sport
|
||||
$(COPY) ortools$Ssat$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Ssat
|
||||
$(COPY) ortools$Sgen$Sortools$Ssat$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Ssat
|
||||
$(COPY) ortools$Sutil$S*.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sutil
|
||||
$(COPY) ortools$Sgen$Sortools$Sutil$S*.pb.h temp$S$(INSTALL_DIR)$Sinclude$Sortools$Sutil
|
||||
ifeq ($(SYSTEM),win)
|
||||
$(COPY) tools$Smake.exe temp$S$(INSTALL_DIR)
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && ..$S..$S..$Stools$Star.exe -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v gflags | ..$S..$S..$Stools$Star.exe xvm
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && ..$S..$S..$Stools$Star.exe -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v glog | ..$S..$S..$Stools$Star.exe xvm
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && ..$S..$S..$Stools$Star.exe -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v google | ..$S..$S..$Stools$Star.exe xvm
|
||||
else
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && tar -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v gflags | tar xvm
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && tar -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v glog | tar xvm
|
||||
cd temp$S$(INSTALL_DIR)$Sinclude && tar -C ..$S..$S..$Sdependencies$Sinstall$Sinclude -c -v google | tar xvm
|
||||
endif
|
||||
|
||||
dotnet_archive: csharp
|
||||
$(COPY) bin$SGoogle.Protobuf.dll temp$S$(INSTALL_DIR)$Sbin
|
||||
$(COPY) bin$S$(CLR_ORTOOLS_DLL_NAME).dll temp$S$(INSTALL_DIR)$Sbin
|
||||
$(COPY) examples$Scsharp$S*.cs temp$S$(INSTALL_DIR)$Sexamples$Scsharp
|
||||
$(COPY) examples$Sfsharp$S*fsx temp$S$(INSTALL_DIR)$Sexamples$Sfsharp
|
||||
$(COPY) examples$Sfsharp$SREADME.md temp$S$(INSTALL_DIR)$Sexamples$Sfsharp
|
||||
$(COPY) examples$Scsharp$Ssolution$SProperties$S*.cs temp$S$(INSTALL_DIR)$Sexamples$Scsharp$Ssolution$SProperties
|
||||
-$(COPY) examples$Sfsharp$Slib$S* temp$S$(INSTALL_DIR)$Sexamples$Sfsharp$Slib
|
||||
ifeq ($(SYSTEM),win)
|
||||
$(COPY) examples$Scsharp$SCsharp_examples.sln temp$S$(INSTALL_DIR)$Sexamples$Scsharp
|
||||
$(COPY) examples$Scsharp$Ssolution$S*.csproj temp$S$(INSTALL_DIR)$Sexamples$Scsharp$Ssolution
|
||||
$(COPY) examples$Scsharp$Ssolution$Sapp.config temp$S$(INSTALL_DIR)$Sexamples$Scsharp$Ssolution
|
||||
else
|
||||
$(COPY) lib$Slib$(CLR_ORTOOLS_DLL_NAME).so temp$S$(INSTALL_DIR)$Sbin
|
||||
endif
|
||||
|
||||
netstandard_archive: NET_STANDARD_EXAMPLES = $(wildcard examples/csharp/*.cs)
|
||||
netstandard_archive: netstandard_example_archive
|
||||
$(COPY) bin$S$(NETSTANDARD_ORTOOLS_DLL_NAME).dll temp$S$(INSTALL_DIR)$Sbin$S
|
||||
$(COPY) bin$S$(NETSTANDARD_ORTOOLS_IMPORT_DLL_NAME).$(SWIG_DOTNET_LIB_SUFFIX) temp$S$(INSTALL_DIR)$Sbin$S
|
||||
$(COPY) bin$S$(NETSTANDARD_ORTOOLS_DLL_NAME).$(OR_TOOLS_VERSION).nupkg temp$S$(INSTALL_DIR)$Sbin$S
|
||||
$(COPY) tools$SREADME.netstandard temp$S$(INSTALL_DIR)$Sexamples$Snetstandard
|
||||
|
||||
netstandard_example_archive:
|
||||
$(foreach file, $(NET_STANDARD_EXAMPLES), $(call netstandard_example_archive_copy,$(file))) :
|
||||
|
||||
define netstandard_example_archive_copy
|
||||
$(MKDIR_P) temp$S$(INSTALL_DIR)$Sexamples$Snetstandard$S$(basename $(notdir $(1))) &&\
|
||||
$(COPY) tools$Snetstandard$Snuget.config temp$S$(INSTALL_DIR)$Sexamples$Snetstandard$S$(basename $(notdir $(1))) &&\
|
||||
$(COPY) tools$Snetstandard$Sexample.csproj temp$S$(INSTALL_DIR)$Sexamples$Snetstandard$S$(basename $(notdir $(1))) &&\
|
||||
$(COPY) examples$Scsharp$S$(notdir $(1)) temp$S$(INSTALL_DIR)$Sexamples$Snetstandard$S$(basename $(notdir $(1)))$S &&
|
||||
endef
|
||||
|
||||
java_archive: java
|
||||
$(COPY) lib$S*.jar temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) lib$S$(LIB_PREFIX)jni*.$(JNI_LIB_EXT) temp$S$(INSTALL_DIR)$Slib
|
||||
$(COPY) examples$Scom$Sgoogle$Sortools$Ssamples$S*.java temp$S$(INSTALL_DIR)$Sexamples$Scom$Sgoogle$Sortools$Ssamples
|
||||
|
||||
TEMP_FZ_DIR = temp_fz
|
||||
fz_archive: cc fz
|
||||
.PHONY: clean_archive # Clean Archive output from previous build.
|
||||
clean_archive:
|
||||
-$(DELREC) $(TEMP_ARCHIVE_DIR)
|
||||
-$(DELREC) $(TEMP_FZ_DIR)
|
||||
mkdir $(TEMP_FZ_DIR)
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sbin
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Slib
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_cp
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sshare$Sminizinc_sat
|
||||
mkdir $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sexamples
|
||||
$(COPY) LICENSE-2.0.txt $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)
|
||||
$(COPY) bin$Sfz$E $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sbin$Sfzn-or-tools$E
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)ortools.$L $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Slib
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)fz.$L $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Slib
|
||||
-$(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) && ..$Stools$Szip.exe -r ..$S$(FZ_INSTALL_DIR).zip $(FZ_INSTALL_DIR)
|
||||
cd $(TEMP_FZ_DIR) && ..$S$(ZIP) -r ..$S$(FZ_INSTALL_DIR)$(ARCHIVE_EXT) $(FZ_INSTALL_DIR)
|
||||
else
|
||||
ifeq ($(PLATFORM),LINUX)
|
||||
$(DEP_BIN_DIR)$Spatchelf --set-rpath '$$ORIGIN/../lib' $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sbin$Sfzn-or-tools
|
||||
endif
|
||||
ifeq ($(PLATFORM),MACOSX)
|
||||
$(COPY) tools$Sfix_fz_libraries_on_mac.sh $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)
|
||||
chmod u+x $(TEMP_FZ_DIR)/$(FZ_INSTALL_DIR)$Sfix_fz_libraries_on_mac.sh
|
||||
cd $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR) && .$Sfix_fz_libraries_on_mac.sh
|
||||
$(RM) $(TEMP_FZ_DIR)$S$(FZ_INSTALL_DIR)$Sfix_fz_libraries_on_mac.sh
|
||||
endif
|
||||
cd $(TEMP_FZ_DIR) && tar cvzf ..$S$(FZ_INSTALL_DIR).tar.gz $(FZ_INSTALL_DIR)
|
||||
$(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
|
||||
$(MKDIR) temp
|
||||
-$(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)
|
||||
tools$Sunzip.exe $(INSTALL_DIR).zip -d temp
|
||||
$(UNZIP) $< -d $(TEMP_TEST_DIR)
|
||||
else
|
||||
tar -x -v -f $(INSTALL_DIR).tar.gz -C temp
|
||||
$(TAR) -xvf $< -C $(TEMP_TEST_DIR)
|
||||
endif
|
||||
cd temp$S$(INSTALL_DIR) && $(MAKE) test && cd ../.. && $(RENAME) lib2 lib && echo "archive test succeeded" || ( cd ../.. && $(RENAME) lib2 lib && echo "archive test failed" && exit 1)
|
||||
( 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)
|
||||
tools$Sunzip.exe $(FZ_INSTALL_DIR).zip -d $(TEMP_FZ_TEST_DIR)
|
||||
$(UNZIP) $< -d $(TEMP_FZ_TEST_DIR)
|
||||
else
|
||||
tar -x -v -f $(FZ_INSTALL_DIR).tar.gz -C $(TEMP_FZ_TEST_DIR)
|
||||
$(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 && cd ../.. && $(RENAME) lib2 lib && echo "fz archive test succeeded" || ( cd ../.. && $(RENAME) lib2 lib && echo "fz archive test failed" && exit 1)
|
||||
|
||||
|
||||
ifeq "$(PYTHON3)" "true"
|
||||
build_release: clean python test_python
|
||||
pre_release: pypi_archive
|
||||
release: pypi_upload
|
||||
else #platform check
|
||||
( 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)
|
||||
|
||||
ifeq "$(VISUAL_STUDIO_YEAR)" "2013"
|
||||
build_release: clean all test
|
||||
pre_release: archive test_archive
|
||||
release:
|
||||
@echo off & echo(
|
||||
else
|
||||
ifeq "$(VISUAL_STUDIO_YEAR)" "2015"
|
||||
build_release: clean all test fz
|
||||
pre_release: archive test_archive fz_archive test_fz_archive python_examples_archive pypi_archive nuget_archive
|
||||
release: pypi_upload nuget_upload
|
||||
endif #ifeq "$(VISUAL_STUDIO_YEAR)" "2015"
|
||||
|
||||
endif # ifeq"$(VISUAL_STUDIO_YEAR)" "2013"
|
||||
|
||||
else # unix
|
||||
|
||||
ifeq "$(PLATFORM)" "LINUX"
|
||||
ifeq "$(DISTRIBUTION_NUMBER)" "14.04"
|
||||
build_release: clean all test fz
|
||||
pre_release: archive test_archive fz_archive test_fz_archive python_examples_archive pypi_archive
|
||||
release: pypi_upload
|
||||
else
|
||||
ifeq "$(DISTRIBUTION_NUMBER)" "16.04"
|
||||
build_release: clean all test fz
|
||||
pre_release: archive test_archive fz_archive test_fz_archive
|
||||
release:
|
||||
endif # ifeq "$(DISTRIBUTION_NUMBER)" "16.04"
|
||||
endif # ifeq "$(DISTRIBUTION_NUMBER)" "14.04"
|
||||
endif # ifeq "$(PLATFORM)" "LINUX"
|
||||
|
||||
ifeq "$(PLATFORM)" "MACOSX"
|
||||
build_release: clean all test fz
|
||||
pre_release: archive test_archive fz_archive test_fz_archive pypi_archive
|
||||
release: pypi_upload
|
||||
endif #ifeq "$(PLATFORM)" "MACOSX"
|
||||
|
||||
endif #ifeq ($(SYSTEM),win)
|
||||
endif #ifeq "$(PYTHON3)" "true"
|
||||
@echo
|
||||
endif
|
||||
|
||||
@@ -827,6 +827,7 @@ install_dirs:
|
||||
.PHONY: install_cc # Install C++ OR-Tools to $(DESTDIR)$(prefix)
|
||||
install_cc: install_libortools install_third_party install_doc
|
||||
|
||||
.PHONY: install_libortools
|
||||
install_libortools: ortoolslibs install_dirs
|
||||
$(COPY) LICENSE-2.0.txt "$(DESTDIR)$(prefix)"
|
||||
$(COPY) ortools$Salgorithms$S*.h "$(DESTDIR)$(prefix)$Sinclude$Sortools$Salgorithms"
|
||||
@@ -849,6 +850,7 @@ install_libortools: ortoolslibs install_dirs
|
||||
$(COPY) $(GEN_PATH)$Sortools$Sutil$S*.pb.h "$(DESTDIR)$(prefix)$Sinclude$Sortools$Sutil"
|
||||
$(COPY) $(LIB_DIR)$S$(LIB_PREFIX)ortools.$L "$(DESTDIR)$(prefix)$Slib"
|
||||
|
||||
.PHONY: install_third_party
|
||||
install_third_party: install_dirs
|
||||
ifeq ($(UNIX_GFLAGS_DIR),$(OR_TOOLS_TOP)/dependencies/install)
|
||||
$(COPYREC) dependencies$Sinstall$Sinclude$Sgflags "$(DESTDIR)$(prefix)$Sinclude"
|
||||
|
||||
@@ -8,8 +8,3 @@ install_full_cc: install_cc install_deps_dirs
|
||||
$(TAR) -cf - -C dependencies$Sinstall$Sinclude glog | $(TAR) -xpf - -C "$(prefix)$Sinclude"
|
||||
$(TAR) -cf - -C dependencies$Sinstall$Sinclude google | $(TAR) -xpf - -C "$(prefix)$Sinclude"
|
||||
$(COPY) LICENSE-2.0.txt "$(prefix)"
|
||||
ifeq ($(PLATFORM),MACOSX)
|
||||
$(COPY) tools/install_libortools_mac.sh "$(prefix)"
|
||||
chmod 775 "$(prefix)/install_libortools_mac.sh"
|
||||
cd "$(prefix)" && ./install_libortools_mac.sh && rm install_libortools_mac.sh
|
||||
endif
|
||||
|
||||
@@ -9,6 +9,8 @@ GEN_DIR = $(OR_ROOT)ortools/gen
|
||||
GEN_PATH = $(subst /,$S,$(GEN_DIR))
|
||||
JAVA_EX_DIR = $(OR_ROOT)examples/java
|
||||
JAVA_EX_PATH = $(subst /,$S,$(JAVA_EX_DIR))
|
||||
DOTNET_EX_DIR = $(OR_ROOT)examples/dotnet
|
||||
DOTNET_EX_PATH = $(subst /,$S,$(DOTNET_EX_DIR))
|
||||
OBJ_DIR = $(OR_ROOT)objs
|
||||
CLASS_DIR = $(OR_ROOT)classes
|
||||
LIB_DIR = $(OR_ROOT)lib
|
||||
|
||||
@@ -22,6 +22,8 @@ GEN_DIR = $(OR_ROOT)ortools/gen
|
||||
GEN_PATH = $(subst /,$S,$(GEN_DIR))
|
||||
JAVA_EX_DIR = $(OR_ROOT)examples/java
|
||||
JAVA_EX_PATH = $(subst /,$S,$(JAVA_EX_DIR))
|
||||
DOTNET_EX_DIR = $(OR_ROOT)examples/dotnet
|
||||
DOTNET_EX_PATH = $(subst /,$S,$(DOTNET_EX_DIR))
|
||||
OBJ_DIR = $(OR_ROOT)objs
|
||||
CLASS_DIR = $(OR_ROOT)classes
|
||||
LIB_DIR = $(OR_ROOT)lib
|
||||
|
||||
@@ -1,472 +0,0 @@
|
||||
# OR_ROOT is the minimal prefix to define the root of or-tools, if we
|
||||
# are compiling in the or-tools root, it is empty. Otherwise, it is
|
||||
# $(OR_TOOLS_TOP)/ or $(OR_TOOLS_TOP)\\ depending on the platform. It
|
||||
# contains the trailing separator if not empty.
|
||||
|
||||
# Let's discover something about where we run
|
||||
# Let's discover something about where we run
|
||||
ifeq ($(OS), Windows_NT)
|
||||
SYSTEM = win
|
||||
else
|
||||
SYSTEM = unix
|
||||
endif
|
||||
|
||||
# Define the OR_ROOT directory.
|
||||
ifeq ($(OR_TOOLS_TOP),)
|
||||
OR_ROOT =
|
||||
else
|
||||
ifeq "$(SYSTEM)" "win"
|
||||
OR_ROOT = $(OR_TOOLS_TOP)\\
|
||||
else
|
||||
OR_ROOT = $(OR_TOOLS_TOP)/
|
||||
endif
|
||||
endif
|
||||
|
||||
# Useful directories.
|
||||
BIN_DIR = $(OR_ROOT)bin
|
||||
OBJ_DIR = $(OR_ROOT)objs
|
||||
EX_DIR = $(OR_ROOT)examples
|
||||
CPP_EX_DIR = $(OR_ROOT)examples$Scpp
|
||||
CS_EX_DIR = $(OR_ROOT)examples$Scsharp
|
||||
INC_EX_DIR = $(OR_ROOT).
|
||||
INC_DIR = $(OR_ROOT)include
|
||||
LIB_DIR = $(OR_ROOT)lib
|
||||
|
||||
CLR_DLL_NAME?=Google.OrTools
|
||||
|
||||
JAVAC_BIN = javac
|
||||
JAVA_BIN = java
|
||||
|
||||
# Unix specific part.
|
||||
ifeq ("$(SYSTEM)","unix")
|
||||
# Defines OR_TOOLS_TOP if it is not already defined.
|
||||
OR_TOOLS_TOP ?= $(shell pwd)
|
||||
OS = $(shell uname -s)
|
||||
LIB_PREFIX = lib
|
||||
PRE_LIB = -Wl,-rpath $(OR_TOOLS_TOP)/lib -L$(OR_TOOLS_TOP)/lib
|
||||
OR_TOOLS_LNK = $(PRE_LIB) -lortools
|
||||
CVRPTW_LNK = $(PRE_LIB) -lcvrptw_lib $(PRE_LIB) -lortools
|
||||
DIMACS_LNK = $(PRE_LIB) -ldimacs $(PRE_LIB) -lortools
|
||||
FAP_LNK = $(PRE_LIB) -lfap $(PRE_LIB) -lortools
|
||||
ifeq ($(OS),Linux)
|
||||
CPP_COMPILER = g++
|
||||
CCC = $(CPP_COMPILER) -fPIC -std=c++0x
|
||||
LD_FLAGS = -lz -lrt -lpthread
|
||||
LBITS = $(shell getconf LONG_BIT)
|
||||
ifeq ($(LBITS),64)
|
||||
PORT = Linux64
|
||||
ARCH = -DARCH_K8
|
||||
NETPLATFORM = anycpu
|
||||
else
|
||||
PORT = Linux32
|
||||
NETPLATFORM = x86
|
||||
endif
|
||||
CSC = mcs
|
||||
MONO = LD_LIBRARY_PATH=$(LIB_DIR):$(LD_LIBRARY_PATH) mono
|
||||
L = so
|
||||
endif
|
||||
ifeq ($(OS),Darwin) # Assume Mac Os X
|
||||
CPP_COMPILER = clang++
|
||||
CCC = $(CPP_COMPILER) -fPIC -std=c++11
|
||||
LD_FLAGS = -lz
|
||||
ARCH = -DARCH_K8
|
||||
PORT = MacOsX64
|
||||
CSC = mcs
|
||||
MONO = DYLD_FALLBACK_LIBRARY_PATH=$(LIB_DIR):$(DYLD_LIBRARY_PATH) mono
|
||||
NETPLATFORM = x64
|
||||
L = dylib
|
||||
endif
|
||||
O = o
|
||||
E =
|
||||
OBJ_OUT = -o #
|
||||
EXE_OUT = -o #
|
||||
DEL = rm -f
|
||||
S = /
|
||||
CPSEP = :
|
||||
CLP_INC = -DUSE_CLP
|
||||
CBC_INC = -DUSE_CBC
|
||||
GLOP_INC = -DUSE_GLOP
|
||||
BOP_INC = -DUSE_BOP
|
||||
DEBUG = -O4 -DNDEBUG
|
||||
CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(INC_EX_DIR) $(ARCH) -Wno-deprecated \
|
||||
$(CBC_INC) $(CLP_INC) $(GLOP_INC) $(BOP_INC)
|
||||
WHICH = which
|
||||
TO_NULL = 2\> /dev/null
|
||||
endif
|
||||
|
||||
# Windows specific part.
|
||||
ifeq ("$(SYSTEM)","win")
|
||||
ifeq ("$(Platform)", "X64")
|
||||
PLATFORM = Win64
|
||||
endif
|
||||
ifeq ("$(Platform)", "x64")
|
||||
PLATFORM = Win64
|
||||
endif
|
||||
ifeq ("$(PLATFORM)", "Win64")
|
||||
PORT = VisualStudio$(VISUAL_STUDIO)-64b
|
||||
NETPLATFORM = x64
|
||||
else
|
||||
PORT = VisualStudio$(VISUAL_STUDIO)-32b
|
||||
NETPLATFORM = x86
|
||||
endif
|
||||
CLP_INC = -DUSE_CLP
|
||||
CBC_INC = -DUSE_CBC
|
||||
GLOP_INC = -DUSE_GLOP
|
||||
BOP_INC = -DUSE_BOP
|
||||
CFLAGS= /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS -nologo $(DEBUG) \
|
||||
$(CBC_INC) $(CLP_INC) /D__WIN32__ /I$(INC_DIR)\\src\\windows \
|
||||
/DGFLAGS_DLL_DECL= /DGFLAGS_DLL_DECLARE_FLAG= /DGFLAGS_DLL_DEFINE_FLAG= \
|
||||
/I$(INC_DIR) /I$(INC_EX_DIR) $(GLOP_INC) $(BOP_INC)
|
||||
LD_FLAGS = psapi.lib ws2_32.lib
|
||||
LIB_PREFIX =
|
||||
PRE_LIB =
|
||||
L = lib
|
||||
OR_TOOLS_LNK = lib\\ortools.lib
|
||||
CVRPTW_LNK = lib\\cvrptw_lib.lib lib\\ortools.lib
|
||||
DIMACS_LNK = lib\\dimacs.lib lib\\ortools.lib
|
||||
O=obj
|
||||
E=.exe
|
||||
OBJ_OUT = /Fo
|
||||
EXE_OUT = /Fe
|
||||
DEL = del
|
||||
S = \\
|
||||
CPSEP = ;
|
||||
DEBUG=/O2 -DNDEBUG
|
||||
CPP_COMPILER = cl
|
||||
CCC = $(CPP_COMPILER) /EHsc /MD /nologo
|
||||
CSC=csc
|
||||
MONO=
|
||||
WHICH = where
|
||||
TO_NULL = 2> NUL
|
||||
endif
|
||||
|
||||
OR_TOOLS_LIBS = $(LIB_DIR)/$(LIB_PREFIX)ortools.$L
|
||||
CVRPTW_LIBS = $(LIB_DIR)/$(LIB_PREFIX)cvrptw_lib.$L
|
||||
DIMACS_LIBS = $(LIB_DIR)/$(LIB_PREFIX)dimacs.$L
|
||||
FAP_LIBS = $(LIB_DIR)/$(LIB_PREFIX)fap.$L
|
||||
|
||||
.PHONY: all clean test
|
||||
|
||||
all: cc test
|
||||
|
||||
EXE = \
|
||||
$(BIN_DIR)/costas_array$E \
|
||||
$(BIN_DIR)/cryptarithm$E \
|
||||
$(BIN_DIR)/cvrp_disjoint_tw$E \
|
||||
$(BIN_DIR)/cvrptw$E \
|
||||
$(BIN_DIR)/cvrptw_with_breaks$E \
|
||||
$(BIN_DIR)/cvrptw_with_refueling$E \
|
||||
$(BIN_DIR)/cvrptw_with_resources$E \
|
||||
$(BIN_DIR)/cvrptw_with_stop_times_and_resources$E \
|
||||
$(BIN_DIR)/dimacs_assignment$E \
|
||||
$(BIN_DIR)/dobble_ls$E \
|
||||
$(BIN_DIR)/flexible_jobshop$E \
|
||||
$(BIN_DIR)/golomb$E \
|
||||
$(BIN_DIR)/jobshop$E \
|
||||
$(BIN_DIR)/jobshop_ls$E \
|
||||
$(BIN_DIR)/jobshop_earlytardy$E \
|
||||
$(BIN_DIR)/magic_square$E \
|
||||
$(BIN_DIR)/model_util$E \
|
||||
$(BIN_DIR)/multidim_knapsack$E \
|
||||
$(BIN_DIR)/network_routing$E \
|
||||
$(BIN_DIR)/nqueens$E \
|
||||
$(BIN_DIR)/pdptw$E \
|
||||
$(BIN_DIR)/sports_scheduling$E \
|
||||
$(BIN_DIR)/tsp$E \
|
||||
$(BIN_DIR)/linear_assignment_api$E \
|
||||
$(BIN_DIR)/strawberry_fields_with_column_generation$E \
|
||||
$(BIN_DIR)/linear_programming$E \
|
||||
$(BIN_DIR)/linear_solver_protocol_buffers$E \
|
||||
$(BIN_DIR)/integer_programming$E \
|
||||
$(BIN_DIR)/flow_api$E
|
||||
|
||||
|
||||
cc: $(EXE)
|
||||
|
||||
clean:
|
||||
-$(DEL) $(EXE)
|
||||
-$(DEL) $(BIN_DIR)$S$.exe
|
||||
-$(DEL) $(OBJ_DIR)$S*$O
|
||||
|
||||
ifeq ($(shell $(WHICH) $(CPP_COMPILER) $(TO_NULL)),)
|
||||
test_cc ccc rcc:
|
||||
@echo the $(CPP_COMPILER) command was not find in your Path
|
||||
else
|
||||
test_cc: $(BIN_DIR)/golomb$E $(BIN_DIR)/cvrptw$E
|
||||
$(BIN_DIR)$Sgolomb$E
|
||||
$(BIN_DIR)/cvrptw$E
|
||||
# C++ generic running command
|
||||
ifeq ($(EX),)
|
||||
ccc rcc:
|
||||
@echo No C++ file was provided, the $@ target must be used like so: \
|
||||
make $@ EX=path/to/the/example/example.cc
|
||||
else
|
||||
ccc: $(BIN_DIR)$S$(basename $(notdir $(EX)))$E
|
||||
|
||||
rcc: $(BIN_DIR)$S$(basename $(notdir $(EX)))$E
|
||||
@echo running $(BIN_DIR)$S$(basename $(notdir $(EX)))$E
|
||||
$(BIN_DIR)$S$(basename $(notdir $(EX)))$E $(ARGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(shell $(WHICH) java $(TO_NULL)),)
|
||||
test_java rjava cjava:
|
||||
@echo the java command was not find in your Path
|
||||
else
|
||||
test_java:
|
||||
javac -d $(OBJ_DIR) -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar $(EX_DIR)$Scom$Sgoogle$Sortools$Ssamples$STsp.java
|
||||
java -Djava.library.path=$(LIB_DIR) -cp $(OBJ_DIR)$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar com.google.ortools.samples.Tsp $(ARGS)
|
||||
@echo $(WHICH) javaa $(TO_NULL)
|
||||
|
||||
# Java generic compilation command.
|
||||
ifeq ($(EX),)
|
||||
rjava cjava:
|
||||
@echo No java file was provided, the rjava target must be used like so: \
|
||||
make rjava EX=path/to/the/example/example.java
|
||||
else
|
||||
ifeq ($(SYSTEM),win)
|
||||
EX_read_package = $(shell findstr /r "^package.*\;" $(EX))
|
||||
else
|
||||
EX_read_package = $(shell grep '^package.*\;' $(EX))
|
||||
endif
|
||||
EX_name = $(basename $(notdir $(EX)))
|
||||
EX_package = $(subst ;,,$(subst package ,,$(EX_read_package)))
|
||||
ifeq ($(EX_read_package),)
|
||||
EX_class_file = $(OBJ_DIR)$S$(EX_name).class
|
||||
EX_class = $(EX_name)
|
||||
else
|
||||
EX_class_file = $(OBJ_DIR)$S$(subst .,$S,$(EX_package))$S$(EX_name).class
|
||||
EX_class = $(EX_package).$(EX_name)
|
||||
endif
|
||||
$(EX_class_file): $(LIB_DIR)$Scom.google.ortools.jar $(LIB_DIR)$Sprotobuf.jar $(EX)
|
||||
$(JAVAC_BIN) -d $(OBJ_DIR) -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar $(EX)
|
||||
|
||||
cjava: $(EX_class_file)
|
||||
|
||||
rjava: $(EX_class_file)
|
||||
$(JAVA_BIN) -Djava.library.path=$(LIB_DIR) -cp $(OBJ_DIR)$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar $(EX_class) $(ARGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(shell $(WHICH) $(CSC) $(TO_NULL)),)
|
||||
test_cs:
|
||||
@echo the $(CSC) command was not find in your Path
|
||||
else
|
||||
test_cs:
|
||||
$(CSC) /target:exe /out:$(BIN_DIR)$Scsflow.exe /platform:$(NETPLATFORM) /lib:$(BIN_DIR) /r:Google.OrTools.dll /r:Google.Protobuf.dll $(CS_EX_DIR)$Scsflow.cs
|
||||
$(MONO) $(BIN_DIR)$Scsflow.exe $(ARGS)
|
||||
|
||||
test: test_cc test_java test_cs
|
||||
|
||||
ifeq ($(EX),)
|
||||
rcs:
|
||||
@echo No csharp file was provided, the rcs target must be used like so: \
|
||||
make rcs EX=path/to/the/example/example.cs
|
||||
else
|
||||
# .NET generic compilation command.
|
||||
$(BIN_DIR)$S$(basename $(notdir $(EX))).exe: $(BIN_DIR)/$(CLR_DLL_NAME).dll $(EX)
|
||||
$(CSC) $(SIGNING_FLAGS) /target:exe /out:$(BIN_DIR)$S$(basename $(notdir $(EX))).exe /platform:$(NETPLATFORM) /lib:$(BIN_DIR) /r:$(CLR_DLL_NAME).dll /r:Google.Protobuf.dll $(EX)
|
||||
|
||||
csc: $(BIN_DIR)$S$(basename $(notdir $(EX))).exe
|
||||
|
||||
rcs: $(BIN_DIR)$S$(basename $(notdir $(EX))).exe
|
||||
@echo running $(BIN_DIR)$S$(basename $(notdir $(EX))).exe
|
||||
$(MONO) $(BIN_DIR)$S$(basename $(notdir $(EX))).exe $(ARGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
# Constraint Programming and Routing examples.
|
||||
|
||||
$(OBJ_DIR)$Scostas_array.$O: $(CPP_EX_DIR)$Scostas_array.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scostas_array.cc $(OBJ_OUT)$(OBJ_DIR)$Scostas_array.$O
|
||||
|
||||
$(BIN_DIR)/costas_array$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Scostas_array.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scostas_array.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scostas_array$E
|
||||
|
||||
$(OBJ_DIR)$Scryptarithm.$O:$(CPP_EX_DIR)$Scryptarithm.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scryptarithm.cc $(OBJ_OUT)$(OBJ_DIR)$Scryptarithm.$O
|
||||
|
||||
$(BIN_DIR)/cryptarithm$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Scryptarithm.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scryptarithm.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scryptarithm$E
|
||||
|
||||
$(OBJ_DIR)$Scvrp_disjoint_tw.$O: $(CPP_EX_DIR)$Scvrp_disjoint_tw.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrp_disjoint_tw.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrp_disjoint_tw.$O
|
||||
|
||||
$(BIN_DIR)/cvrp_disjoint_tw$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrp_disjoint_tw.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrp_disjoint_tw.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrp_disjoint_tw$E
|
||||
|
||||
$(OBJ_DIR)$Scvrptw.$O: $(CPP_EX_DIR)$Scvrptw.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrptw.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrptw.$O
|
||||
|
||||
$(BIN_DIR)/cvrptw$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrptw.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrptw.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw$E
|
||||
|
||||
$(OBJ_DIR)$Scvrptw_with_breaks.$O: $(CPP_EX_DIR)$Scvrptw_with_breaks.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrptw_with_breaks.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrptw_with_breaks.$O
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_breaks$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrptw_with_breaks.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrptw_with_breaks.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_breaks$E
|
||||
|
||||
$(OBJ_DIR)$Scvrptw_with_refueling.$O: $(CPP_EX_DIR)$Scvrptw_with_refueling.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrptw_with_refueling.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrptw_with_refueling.$O
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_refueling$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrptw_with_refueling.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrptw_with_refueling.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_refueling$E
|
||||
|
||||
$(OBJ_DIR)$Scvrptw_with_resources.$O: $(CPP_EX_DIR)$Scvrptw_with_resources.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrptw_with_resources.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrptw_with_resources.$O
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_resources$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrptw_with_resources.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrptw_with_resources.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_resources$E
|
||||
|
||||
$(OBJ_DIR)$Scvrptw_with_stop_times_and_resources.$O: $(CPP_EX_DIR)$Scvrptw_with_stop_times_and_resources.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Scvrptw_with_stop_times_and_resources.cc $(OBJ_OUT)$(OBJ_DIR)$Scvrptw_with_stop_times_and_resources.$O
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_stop_times_and_resources$E: $(OR_TOOLS_LIBS) $(CVRPTW_LIBS) $(OBJ_DIR)$Scvrptw_with_stop_times_and_resources.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Scvrptw_with_stop_times_and_resources.$O $(CVRPTW_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_stop_times_and_resources$E
|
||||
|
||||
$(OBJ_DIR)$Sdimacs_assignment.$O:$(CPP_EX_DIR)$Sdimacs_assignment.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sdimacs_assignment.cc $(OBJ_OUT)$(OBJ_DIR)$Sdimacs_assignment.$O
|
||||
|
||||
$(BIN_DIR)/dimacs_assignment$E: $(OR_TOOLS_LIBS) $(DIMACS_LIBS) $(OBJ_DIR)$Sdimacs_assignment.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sdimacs_assignment.$O $(DIMACS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sdimacs_assignment$E
|
||||
|
||||
$(OBJ_DIR)$Sdobble_ls.$O:$(CPP_EX_DIR)$Sdobble_ls.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sdobble_ls.cc $(OBJ_OUT)$(OBJ_DIR)$Sdobble_ls.$O
|
||||
|
||||
$(BIN_DIR)/dobble_ls$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sdobble_ls.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sdobble_ls.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sdobble_ls$E
|
||||
|
||||
$(OBJ_DIR)$Sflexible_jobshop.$O:$(CPP_EX_DIR)$Sflexible_jobshop.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h $(CPP_EX_DIR)$Sflexible_jobshop.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sflexible_jobshop.cc $(OBJ_OUT)$(OBJ_DIR)$Sflexible_jobshop.$O
|
||||
|
||||
$(BIN_DIR)/flexible_jobshop$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sflexible_jobshop.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sflexible_jobshop.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sflexible_jobshop$E
|
||||
|
||||
$(OBJ_DIR)$Sgolomb.$O:$(CPP_EX_DIR)$Sgolomb.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sgolomb.cc $(OBJ_OUT)$(OBJ_DIR)$Sgolomb.$O
|
||||
|
||||
$(BIN_DIR)/golomb$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sgolomb.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sgolomb.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sgolomb$E
|
||||
|
||||
$(OBJ_DIR)$Sjobshop.$O:$(CPP_EX_DIR)$Sjobshop.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sjobshop.cc $(OBJ_OUT)$(OBJ_DIR)$Sjobshop.$O
|
||||
|
||||
$(BIN_DIR)/jobshop$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sjobshop.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sjobshop.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sjobshop$E
|
||||
|
||||
$(OBJ_DIR)$Sjobshop_ls.$O:$(CPP_EX_DIR)$Sjobshop_ls.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sjobshop_ls.cc $(OBJ_OUT)$(OBJ_DIR)$Sjobshop_ls.$O
|
||||
|
||||
$(BIN_DIR)/jobshop_ls$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sjobshop_ls.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sjobshop_ls.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sjobshop_ls$E
|
||||
|
||||
$(OBJ_DIR)$Sjobshop_earlytardy.$O:$(CPP_EX_DIR)$Sjobshop_earlytardy.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h $(CPP_EX_DIR)$Sjobshop_earlytardy.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sjobshop_earlytardy.cc $(OBJ_OUT)$(OBJ_DIR)$Sjobshop_earlytardy.$O
|
||||
|
||||
$(BIN_DIR)/jobshop_earlytardy$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sjobshop_earlytardy.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sjobshop_earlytardy.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sjobshop_earlytardy$E
|
||||
|
||||
$(OBJ_DIR)$Smagic_square.$O:$(CPP_EX_DIR)$Smagic_square.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Smagic_square.cc $(OBJ_OUT)$(OBJ_DIR)$Smagic_square.$O
|
||||
|
||||
$(BIN_DIR)/magic_square$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Smagic_square.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Smagic_square.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Smagic_square$E
|
||||
|
||||
$(OBJ_DIR)$Smodel_util.$O:$(CPP_EX_DIR)$Smodel_util.cc $(INC_DIR)$Sortools$Sconstraint_solver$Smodel.pb.h $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Smodel_util.cc $(OBJ_OUT)$(OBJ_DIR)$Smodel_util.$O
|
||||
|
||||
$(BIN_DIR)/model_util$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Smodel_util.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Smodel_util.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Smodel_util$E
|
||||
|
||||
$(OBJ_DIR)$Smultidim_knapsack.$O:$(CPP_EX_DIR)$Smultidim_knapsack.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Smultidim_knapsack.cc $(OBJ_OUT)$(OBJ_DIR)$Smultidim_knapsack.$O
|
||||
|
||||
$(BIN_DIR)/multidim_knapsack$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Smultidim_knapsack.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Smultidim_knapsack.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Smultidim_knapsack$E
|
||||
|
||||
$(OBJ_DIR)$Snetwork_routing.$O:$(CPP_EX_DIR)$Snetwork_routing.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Snetwork_routing.cc $(OBJ_OUT)$(OBJ_DIR)$Snetwork_routing.$O
|
||||
|
||||
$(BIN_DIR)/network_routing$E: $(OR_TOOLS_LIBS) $(GRAPH_DEPS) $(OBJ_DIR)$Snetwork_routing.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Snetwork_routing.$O $(OR_TOOLS_LNK) $(GRAPH_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Snetwork_routing$E
|
||||
|
||||
$(OBJ_DIR)$Snqueens.$O: $(CPP_EX_DIR)$Snqueens.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Snqueens.cc $(OBJ_OUT)$(OBJ_DIR)$Snqueens.$O
|
||||
|
||||
$(BIN_DIR)/nqueens$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Snqueens.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Snqueens.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Snqueens$E
|
||||
|
||||
$(OBJ_DIR)$Spdptw.$O: $(CPP_EX_DIR)$Spdptw.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Spdptw.cc $(OBJ_OUT)$(OBJ_DIR)$Spdptw.$O
|
||||
|
||||
$(BIN_DIR)/pdptw$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Spdptw.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Spdptw.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Spdptw$E
|
||||
|
||||
$(OBJ_DIR)$Ssports_scheduling.$O:$(CPP_EX_DIR)$Ssports_scheduling.cc $(INC_DIR)$Sortools$Sconstraint_solver$Sconstraint_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Ssports_scheduling.cc $(OBJ_OUT)$(OBJ_DIR)$Ssports_scheduling.$O
|
||||
|
||||
$(BIN_DIR)/sports_scheduling$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Ssports_scheduling.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Ssports_scheduling.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Ssports_scheduling$E
|
||||
|
||||
$(OBJ_DIR)$Stsp.$O: $(CPP_EX_DIR)$Stsp.cc $(INC_DIR)$Sortools$Sconstraint_solver$Srouting.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Stsp.cc $(OBJ_OUT)$(OBJ_DIR)$Stsp.$O
|
||||
|
||||
$(BIN_DIR)/tsp$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Stsp.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Stsp.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Stsp$E
|
||||
|
||||
# Flow and linear assignment cpp
|
||||
|
||||
$(OBJ_DIR)$Slinear_assignment_api.$O:$(CPP_EX_DIR)$Slinear_assignment_api.cc
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Slinear_assignment_api.cc $(OBJ_OUT)$(OBJ_DIR)$Slinear_assignment_api.$O
|
||||
|
||||
$(BIN_DIR)/linear_assignment_api$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Slinear_assignment_api.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Slinear_assignment_api.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Slinear_assignment_api$E
|
||||
|
||||
$(OBJ_DIR)$Sflow_api.$O:$(CPP_EX_DIR)$Sflow_api.cc
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sflow_api.cc $(OBJ_OUT)$(OBJ_DIR)$Sflow_api.$O
|
||||
|
||||
$(BIN_DIR)/flow_api$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sflow_api.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sflow_api.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sflow_api$E
|
||||
|
||||
# Linear Programming Examples
|
||||
|
||||
$(OBJ_DIR)$Sstrawberry_fields_with_column_generation.$O: $(CPP_EX_DIR)$Sstrawberry_fields_with_column_generation.cc $(INC_DIR)$Sortools$Slinear_solver$Slinear_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sstrawberry_fields_with_column_generation.cc $(OBJ_OUT)$(OBJ_DIR)$Sstrawberry_fields_with_column_generation.$O
|
||||
|
||||
$(BIN_DIR)/strawberry_fields_with_column_generation$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sstrawberry_fields_with_column_generation.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sstrawberry_fields_with_column_generation.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sstrawberry_fields_with_column_generation$E
|
||||
|
||||
$(OBJ_DIR)$Slinear_programming.$O: $(CPP_EX_DIR)$Slinear_programming.cc $(INC_DIR)$Sortools$Slinear_solver$Slinear_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Slinear_programming.cc $(OBJ_OUT)$(OBJ_DIR)$Slinear_programming.$O
|
||||
|
||||
$(BIN_DIR)/linear_programming$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Slinear_programming.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Slinear_programming.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Slinear_programming$E
|
||||
|
||||
$(OBJ_DIR)$Slinear_solver_protocol_buffers.$O: $(CPP_EX_DIR)$Slinear_solver_protocol_buffers.cc $(INC_DIR)$Sortools$Slinear_solver$Slinear_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Slinear_solver_protocol_buffers.cc $(OBJ_OUT)$(OBJ_DIR)$Slinear_solver_protocol_buffers.$O
|
||||
|
||||
$(BIN_DIR)/linear_solver_protocol_buffers$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Slinear_solver_protocol_buffers.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Slinear_solver_protocol_buffers.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Slinear_solver_protocol_buffers$E
|
||||
|
||||
$(OBJ_DIR)$Sinteger_programming.$O: $(CPP_EX_DIR)$Sinteger_programming.cc $(INC_DIR)$Sortools$Slinear_solver$Slinear_solver.h
|
||||
$(CCC) $(CFLAGS) -c $(CPP_EX_DIR)$Sinteger_programming.cc $(OBJ_OUT)$(OBJ_DIR)$Sinteger_programming.$O
|
||||
|
||||
$(BIN_DIR)/integer_programming$E: $(OR_TOOLS_LIBS) $(OBJ_DIR)$Sinteger_programming.$O
|
||||
$(CCC) $(CFLAGS) $(OBJ_DIR)$Sinteger_programming.$O $(OR_TOOLS_LNK) $(LD_FLAGS) $(EXE_OUT)$(BIN_DIR)$Sinteger_programming$E
|
||||
|
||||
# Debug
|
||||
|
||||
printport:
|
||||
@echo SHELL = $(SHELL)
|
||||
@echo SYSTEM = $(SYSTEM)
|
||||
@echo PORT = $(PORT)
|
||||
@echo OS = $(OS)
|
||||
@echo CCC = $(CCC)
|
||||
|
||||
# Include user makefile
|
||||
|
||||
-include $(OR_ROOT)Makefile.user
|
||||
|
||||
print-% : ; @echo $* = $($*)
|
||||
495
tools/Makefile.cc.java.dotnet
Normal file
495
tools/Makefile.cc.java.dotnet
Normal file
@@ -0,0 +1,495 @@
|
||||
# Let's discover something about where we run
|
||||
ifeq ($(OS), Windows_NT)
|
||||
SYSTEM = win
|
||||
else
|
||||
SYSTEM = unix
|
||||
endif
|
||||
|
||||
.SECONDARY:
|
||||
|
||||
# Useful directories.
|
||||
INC_DIR = include
|
||||
EX_DIR = examples
|
||||
CPP_EX_DIR = examples/cpp
|
||||
CPP_EX_PATH = $(subst /,$S,$(CPP_EX_DIR))
|
||||
JAVA_EX_DIR = examples/java
|
||||
JAVA_EX_PATH = $(subst /,$S,$(JAVA_EX_DIR))
|
||||
DOTNET_EX_DIR = examples/dotnet
|
||||
DOTNET_EX_PATH = $(subst /,$S,$(DOTNET_EX_DIR))
|
||||
OBJ_DIR = objs
|
||||
CLASS_DIR = classes
|
||||
LIB_DIR = lib
|
||||
BIN_DIR = bin
|
||||
|
||||
# Unix specific part.
|
||||
ifeq ($(SYSTEM),unix)
|
||||
OS = $(shell uname -s)
|
||||
# C++
|
||||
ifeq ($(OS),Linux)
|
||||
CXX = g++
|
||||
LDFLAGS = \
|
||||
-Wl,-rpath,"\$$ORIGIN" \
|
||||
-Wl,-rpath,"\$$ORIGIN/../lib64" \
|
||||
-Wl,-rpath,"\$$ORIGIN/../lib" \
|
||||
-lz -lrt -lpthread
|
||||
LBITS = $(shell getconf LONG_BIT)
|
||||
ifeq ($(LBITS),64)
|
||||
PORT = Linux64
|
||||
ARCH = -DARCH_K8
|
||||
NETPLATFORM = anycpu
|
||||
else
|
||||
PORT = Linux32
|
||||
ARCH =
|
||||
NETPLATFORM = x86
|
||||
endif
|
||||
MONO = LD_LIBRARY_PATH=$(LIB_DIR):$(LD_LIBRARY_PATH) mono
|
||||
L = .so
|
||||
endif # ifeq($(OS),Linux)
|
||||
ifeq ($(OS),Darwin) # Assume Mac Os X
|
||||
CXX = clang++
|
||||
LDFLAGS = \
|
||||
-Wl,-rpath,@loader_path \
|
||||
-Wl,-rpath,@loader_path/../lib \
|
||||
-lz
|
||||
PORT = MacOsX64
|
||||
ARCH = -DARCH_K8
|
||||
NETPLATFORM = x64
|
||||
MONO = DYLD_FALLBACK_LIBRARY_PATH=$(LIB_DIR):$(DYLD_LIBRARY_PATH) mono
|
||||
L = .dylib
|
||||
endif # ifeq($(OS),Darwin)
|
||||
CXX_BIN := $(shell command -v $(CXX) 2> /dev/null)
|
||||
DEBUG = -O4 -DNDEBUG
|
||||
CXXFLAGS = -fPIC -std=c++11 $(DEBUG) \
|
||||
-I$(INC_DIR) -I. $(ARCH) -Wno-deprecated \
|
||||
-DUSE_CBC -DUSE_CLP -DUSE_BOP -DUSE_GLOP
|
||||
LIB_PREFIX = lib
|
||||
PRE_LIB = -Llib -Llib64
|
||||
CBC_LNK = -lCbcSolver -lCbc -lOsiCbc -lCgl -lClpSolver -lClp -lOsiClp -lOsi -lCoinUtils
|
||||
OR_TOOLS_LNK = $(PRE_LIB) -lprotobuf -lglog -lgflags $(CBC_LNK) -lortools
|
||||
CVRPTW_LNK = $(PRE_LIB) -lcvrptw_lib -lprotobuf -lglog -lgflags -lortools
|
||||
DIMACS_LNK = $(PRE_LIB) -ldimacs -lglog -lgflags -lortools
|
||||
FAP_LNK = $(PRE_LIB) -lfap -lglog -lgflags -lortools
|
||||
OBJ_OUT = -o #
|
||||
EXE_OUT = -o #
|
||||
O = .o
|
||||
E =
|
||||
# Java
|
||||
ifneq ($(JAVA_HOME),)
|
||||
JAVAC_BIN := $(shell command -v $(JAVA_HOME)/bin/javac 2> /dev/null)
|
||||
JAR_BIN := $(shell command -v $(JAVA_HOME)/bin/jar 2> /dev/null)
|
||||
JAVA_BIN := $(shell command -v $(JAVA_HOME)/bin/java 2> /dev/null)
|
||||
else
|
||||
JAVAC_BIN := $(shell command -v javac 2> /dev/null)
|
||||
JAR_BIN := $(shell command -v jar 2> /dev/null)
|
||||
JAVA_BIN := $(shell command -v java 2> /dev/null)
|
||||
endif
|
||||
JAVAFLAGS = -Djava.library.path=$(LIB_DIR)
|
||||
CPSEP = :
|
||||
# .Net
|
||||
DOTNET = dotnet
|
||||
DOTNET_BIN := $(shell command -v $(DOTNET) 2> /dev/null)
|
||||
# Makefile
|
||||
S = /
|
||||
DEL = rm -f
|
||||
DEL_REC = rm -rf
|
||||
MKDIR = mkdir
|
||||
endif # SYSTEM == unix
|
||||
|
||||
# Windows specific part.
|
||||
ifeq ($(SYSTEM),win)
|
||||
ifeq ("$(Platform)", "X64")
|
||||
PLATFORM = Win64
|
||||
endif
|
||||
ifeq ("$(Platform)", "x64")
|
||||
PLATFORM = Win64
|
||||
endif
|
||||
ifeq ("$(PLATFORM)", "Win64")
|
||||
PORT = VisualStudio$(VISUAL_STUDIO)-64b
|
||||
NETPLATFORM = x64
|
||||
else
|
||||
PORT = VisualStudio$(VISUAL_STUDIO)-32b
|
||||
NETPLATFORM = x86
|
||||
endif
|
||||
CXX = cl
|
||||
# We can't use `where` since it's return all matching pathnames
|
||||
# so we ship which.exe and use it
|
||||
CXX_BIN := $(shell $(WHICH) $(CXX) 2> NUL)
|
||||
DEBUG = /O2 -DNDEBUG
|
||||
CXXFLAGS = /EHsc /MD /nologo /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS -nologo $(DEBUG) \
|
||||
/D__WIN32__ /DGFLAGS_DLL_DECL= /DGFLAGS_DLL_DECLARE_FLAG= /DGFLAGS_DLL_DEFINE_FLAG= \
|
||||
/I$(INC_DIR)\\src\\windows /I$(INC_DIR) /I. \
|
||||
-DUSE_CBC -DUSE_CLP -DUSE_BOP -DUSE_GLOP
|
||||
LDFLAGS = psapi.lib ws2_32.lib
|
||||
LIB_PREFIX =
|
||||
OR_TOOLS_LNK = lib\\ortools.lib
|
||||
CVRPTW_LNK = lib\\cvrptw_lib.lib lib\\ortools.lib
|
||||
DIMACS_LNK = lib\\dimacs.lib lib\\ortools.lib
|
||||
FAP_LNK = lib\\fap.lib lib\\ortools.lib
|
||||
OBJ_OUT = /Fo
|
||||
EXE_OUT = /Fe
|
||||
O = .obj
|
||||
L = .lib
|
||||
E = .exe
|
||||
# Java
|
||||
JAVAC_BIN := $(shell $(WHICH) javac 2> NUL)
|
||||
JAR_BIN := $(shell $(WHICH) jar 2> NUL)
|
||||
JAVA_BIN := $(shell $(WHICH) java 2> NUL)
|
||||
JAVAFLAGS = -Djava.library.path=$(LIB_DIR)
|
||||
CPSEP = ;
|
||||
# .Net
|
||||
DOTNET = dotnet
|
||||
DOTNET_BIN := $(shell $(WHICH) $(DOTNET) 2> NUL)
|
||||
# Makefile
|
||||
S = \\
|
||||
DEL = del
|
||||
DEL_REC = rd /S /Q
|
||||
MKDIR = md
|
||||
WHICH = tools$Swin$Swhich.exe
|
||||
endif # SYSTEM == win
|
||||
|
||||
OR_TOOLS_LIBS = $(LIB_DIR)/$(LIB_PREFIX)ortools$L
|
||||
CVRPTW_LIBS = $(LIB_DIR)/$(LIB_PREFIX)cvrptw_lib$L
|
||||
DIMACS_LIBS = $(LIB_DIR)/$(LIB_PREFIX)dimacs$L
|
||||
FAP_LIBS = $(LIB_DIR)/$(LIB_PREFIX)fap$L
|
||||
CLR_DLL_NAME ?= Google.OrTools
|
||||
|
||||
.PHONY: all
|
||||
all: detect cc java dotnet test
|
||||
|
||||
.PHONY: detect
|
||||
detect: detect_port detect_cc detect_java detect_dotnet
|
||||
|
||||
.PHONY: test
|
||||
test: test_cc test_java test_dotnet
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-$(DEL) $(EXE)
|
||||
-$(DEL_REC) $(OBJ_DIR)
|
||||
-$(DEL_REC) $(CLASS_DIR)
|
||||
|
||||
.PHONY: detect_port
|
||||
detect_port:
|
||||
@echo SHELL = $(SHELL)
|
||||
@echo SYSTEM = $(SYSTEM)
|
||||
@echo PORT = $(PORT)
|
||||
@echo OS = $(OS)
|
||||
ifeq ($(SYSTEM),win)
|
||||
@echo off & echo(
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
###########
|
||||
## C++ ##
|
||||
###########
|
||||
EXE = \
|
||||
$(BIN_DIR)/costas_array$E \
|
||||
$(BIN_DIR)/cryptarithm$E \
|
||||
$(BIN_DIR)/cvrp_disjoint_tw$E \
|
||||
$(BIN_DIR)/cvrptw$E \
|
||||
$(BIN_DIR)/cvrptw_with_breaks$E \
|
||||
$(BIN_DIR)/cvrptw_with_refueling$E \
|
||||
$(BIN_DIR)/cvrptw_with_resources$E \
|
||||
$(BIN_DIR)/cvrptw_with_stop_times_and_resources$E \
|
||||
$(BIN_DIR)/dimacs_assignment$E \
|
||||
$(BIN_DIR)/dobble_ls$E \
|
||||
$(BIN_DIR)/flexible_jobshop$E \
|
||||
$(BIN_DIR)/golomb$E \
|
||||
$(BIN_DIR)/jobshop$E \
|
||||
$(BIN_DIR)/jobshop_ls$E \
|
||||
$(BIN_DIR)/jobshop_earlytardy$E \
|
||||
$(BIN_DIR)/magic_square$E \
|
||||
$(BIN_DIR)/model_util$E \
|
||||
$(BIN_DIR)/multidim_knapsack$E \
|
||||
$(BIN_DIR)/network_routing$E \
|
||||
$(BIN_DIR)/nqueens$E \
|
||||
$(BIN_DIR)/pdptw$E \
|
||||
$(BIN_DIR)/sports_scheduling$E \
|
||||
$(BIN_DIR)/tsp$E \
|
||||
$(BIN_DIR)/linear_assignment_api$E \
|
||||
$(BIN_DIR)/strawberry_fields_with_column_generation$E \
|
||||
$(BIN_DIR)/linear_programming$E \
|
||||
$(BIN_DIR)/linear_solver_protocol_buffers$E \
|
||||
$(BIN_DIR)/integer_programming$E \
|
||||
$(BIN_DIR)/flow_api$E
|
||||
|
||||
ifndef CXX_BIN
|
||||
cc test_cc ccc rcc:
|
||||
@echo the $(CXX) command was not found in your PATH
|
||||
else
|
||||
cc: $(EXE)
|
||||
|
||||
test_cc: detect_cc $(BIN_DIR)/nqueens$E $(BIN_DIR)/golomb$E $(BIN_DIR)/cvrptw$E
|
||||
$(BIN_DIR)$Snqueens$E
|
||||
$(BIN_DIR)$Sgolomb$E
|
||||
$(BIN_DIR)$Scvrptw$E
|
||||
|
||||
# C++ generic running command
|
||||
.PHONY: ccc rcc
|
||||
ifeq ($(EX),)
|
||||
ccc rcc:
|
||||
@echo No C++ file was provided, the $@ target must be used like so: \
|
||||
make $@ EX=examples/cpp/example.cc
|
||||
else # ifeq ($(EX),)
|
||||
EX_NAME = $(basename $(notdir $(EX)))
|
||||
|
||||
ccc: $(BIN_DIR)/$(EX_NAME)$E
|
||||
|
||||
rcc: $(BIN_DIR)/$(EX_NAME)$E
|
||||
@echo running $<
|
||||
$(BIN_DIR)$S$(EX_NAME)$E $(ARGS)
|
||||
endif # ifeq ($(EX),)
|
||||
endif # ifndef CXX_BIN
|
||||
|
||||
$(OBJ_DIR):
|
||||
$(MKDIR) $(OBJ_DIR)
|
||||
|
||||
$(OBJ_DIR)/%$O: $(CPP_EX_DIR)/%.cc | $(OBJ_DIR)
|
||||
$(CXX) $(CXXFLAGS) -c $(CPP_EX_PATH)$S$*.cc $(OBJ_OUT)$(OBJ_DIR)$S$*$O
|
||||
|
||||
$(BIN_DIR)/%$E: $(OBJ_DIR)/%$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$S$*$O $(OR_TOOLS_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$S$*$E
|
||||
|
||||
$(BIN_DIR)/cvrp_disjoint_tw$E: $(OBJ_DIR)/cvrp_disjoint_tw$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrp_disjoint_tw$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrp_disjoint_tw$E
|
||||
|
||||
$(BIN_DIR)/cvrptw$E: $(OBJ_DIR)/cvrptw$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrptw$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw$E
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_breaks$E: $(OBJ_DIR)/cvrptw_with_breaks$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrptw_with_breaks$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_breaks$E
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_refueling$E: $(OBJ_DIR)/cvrptw_with_refueling$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrptw_with_refueling$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_refueling$E
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_resources$E: $(OBJ_DIR)/cvrptw_with_resources$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrptw_with_resources$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_resources$E
|
||||
|
||||
$(BIN_DIR)/cvrptw_with_stop_times_and_resources$E: $(OBJ_DIR)/cvrptw_with_stop_times_and_resources$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Scvrptw_with_stop_times_and_resources$O $(CVRPTW_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Scvrptw_with_stop_times_and_resources$E
|
||||
|
||||
$(BIN_DIR)/dimacs_assignment$E: $(OBJ_DIR)/dimacs_assignment$O
|
||||
$(CXX) $(CXXFLAGS) $(OBJ_DIR)$Sdimacs_assignment$O $(DIMACS_LNK) $(LDFLAGS) $(EXE_OUT)$(BIN_DIR)$Sdimacs_assignment$E
|
||||
|
||||
.PHONY: detect_cc
|
||||
detect_cc:
|
||||
@echo CXX = $(CXX)
|
||||
@echo CXX_BIN = $(CXX_BIN)
|
||||
@echo CXXFLAGS = $(CXXFLAGS)
|
||||
@echo LDFLAGS = $(LDFLAGS)
|
||||
@echo OR_TOOLS_LNK = $(OR_TOOLS_LNK)
|
||||
@echo CVRPTW_LNK = $(CVRPTW_LNK)
|
||||
@echo DIMACS_LNK = $(DIMACS_LNK)
|
||||
@echo FAP_LNK = $(FAP_LNK)
|
||||
ifeq ($(SYSTEM),win)
|
||||
@echo off & echo(
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
############
|
||||
## JAVA ##
|
||||
############
|
||||
JAR = \
|
||||
$(LIB_DIR)/AllDifferentExcept0.jar \
|
||||
$(LIB_DIR)/AllInterval.jar \
|
||||
$(LIB_DIR)/CapacitatedVehicleRoutingProblemWithTimeWindows.jar \
|
||||
$(LIB_DIR)/Circuit.jar \
|
||||
$(LIB_DIR)/CoinsGrid.jar \
|
||||
$(LIB_DIR)/CoinsGridMIP.jar \
|
||||
$(LIB_DIR)/ColoringMIP.jar \
|
||||
$(LIB_DIR)/CoveringOpl.jar \
|
||||
$(LIB_DIR)/Crossword.jar \
|
||||
$(LIB_DIR)/DeBruijn.jar \
|
||||
$(LIB_DIR)/Diet.jar \
|
||||
$(LIB_DIR)/DietMIP.jar \
|
||||
$(LIB_DIR)/DivisibleBy9Through1.jar \
|
||||
$(LIB_DIR)/FlowExample.jar \
|
||||
$(LIB_DIR)/GolombRuler.jar \
|
||||
$(LIB_DIR)/IntegerProgramming.jar \
|
||||
$(LIB_DIR)/Issue173.jar \
|
||||
$(LIB_DIR)/Knapsack.jar \
|
||||
$(LIB_DIR)/KnapsackMIP.jar \
|
||||
$(LIB_DIR)/LeastDiff.jar \
|
||||
$(LIB_DIR)/LinearAssignmentAPI.jar \
|
||||
$(LIB_DIR)/LinearProgramming.jar \
|
||||
$(LIB_DIR)/LsApi.jar \
|
||||
$(LIB_DIR)/MagicSquare.jar \
|
||||
$(LIB_DIR)/Map2.jar \
|
||||
$(LIB_DIR)/Map.jar \
|
||||
$(LIB_DIR)/Minesweeper.jar \
|
||||
$(LIB_DIR)/MultiThreadTest.jar \
|
||||
$(LIB_DIR)/NQueens2.jar \
|
||||
$(LIB_DIR)/NQueens.jar \
|
||||
$(LIB_DIR)/Partition.jar \
|
||||
$(LIB_DIR)/QuasigroupCompletion.jar \
|
||||
$(LIB_DIR)/RabbitsPheasants.jar \
|
||||
$(LIB_DIR)/SendMoreMoney2.jar \
|
||||
$(LIB_DIR)/SendMoreMoney.jar \
|
||||
$(LIB_DIR)/SendMostMoney.jar \
|
||||
$(LIB_DIR)/Seseman.jar \
|
||||
$(LIB_DIR)/SetCovering2.jar \
|
||||
$(LIB_DIR)/SetCovering3.jar \
|
||||
$(LIB_DIR)/SetCovering4.jar \
|
||||
$(LIB_DIR)/SetCoveringDeployment.jar \
|
||||
$(LIB_DIR)/SetCovering.jar \
|
||||
$(LIB_DIR)/SimpleRoutingTest.jar \
|
||||
$(LIB_DIR)/StableMarriage.jar \
|
||||
$(LIB_DIR)/StiglerMIP.jar \
|
||||
$(LIB_DIR)/Strimko2.jar \
|
||||
$(LIB_DIR)/Sudoku.jar \
|
||||
$(LIB_DIR)/SurvoPuzzle.jar \
|
||||
$(LIB_DIR)/ToNum.jar \
|
||||
$(LIB_DIR)/Tsp.jar \
|
||||
$(LIB_DIR)/WhoKilledAgatha.jar \
|
||||
$(LIB_DIR)/Xkcd.jar \
|
||||
$(LIB_DIR)/YoungTableaux.jar
|
||||
|
||||
HAS_JAVA = true
|
||||
ifndef JAVAC_BIN
|
||||
HAS_JAVA =
|
||||
endif
|
||||
ifndef JAR_BIN
|
||||
HAS_JAVA =
|
||||
endif
|
||||
ifndef JAVA_BIN
|
||||
HAS_JAVA =
|
||||
endif
|
||||
|
||||
ifndef HAS_JAVA
|
||||
java test_java rjava cjava:
|
||||
@echo the java, javac or jar command was not found in your PATH
|
||||
else
|
||||
java: $(JAR)
|
||||
|
||||
test_java: detect_java \
|
||||
$(LIB_DIR)/LinearProgramming.jar \
|
||||
$(LIB_DIR)/IntegerProgramming.jar \
|
||||
$(LIB_DIR)/StiglerMIP.jar \
|
||||
$(LIB_DIR)/Sudoku.jar \
|
||||
$(LIB_DIR)/NQueens.jar \
|
||||
$(LIB_DIR)/Tsp.jar
|
||||
"$(JAVA_BIN)" $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$SLinearProgramming.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
LinearProgramming
|
||||
"$(JAVA_BIN)" $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$SIntegerProgramming.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
IntegerProgramming
|
||||
"$(JAVA_BIN)" $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$SStiglerMIP.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
StiglerMIP
|
||||
"$(JAVA_BIN)" $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$SSudoku.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
Sudoku
|
||||
"$(JAVA_BIN)" $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$STsp.jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
Tsp
|
||||
|
||||
# Java generic compilation command.
|
||||
.PHONY: cjava rjava
|
||||
ifeq ($(EX),)
|
||||
rjava cjava:
|
||||
@echo No Java file was provided, the $@ target must be used like so: \
|
||||
make $@ EX=examples/java/example.java
|
||||
else # ifeq ($(EX),)
|
||||
EX_NAME = $(basename $(notdir $(EX)))
|
||||
|
||||
cjava: $(CLASS_DIR)/$(EX_NAME)
|
||||
|
||||
rjava: $(LIB_DIR)/$(EX_NAME).jar
|
||||
@echo running $<
|
||||
"$(JAVA_BIN)" -Xss2048k $(JAVAFLAGS) \
|
||||
-cp $(LIB_DIR)$S$(EX_NAME).jar$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \
|
||||
$(EX_NAME) $(ARGS)
|
||||
endif # ifeq ($(EX),)
|
||||
endif # ifndef HAS_JAVA
|
||||
|
||||
$(CLASS_DIR):
|
||||
$(MKDIR) $(CLASS_DIR)
|
||||
|
||||
$(CLASS_DIR)/%: $(JAVA_EX_DIR)/%.java | $(CLASS_DIR)
|
||||
$(MKDIR) $(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
|
||||
|
||||
$(LIB_DIR)/%.jar: $(CLASS_DIR)/% | $(LIB_DIR)
|
||||
"$(JAR_BIN)" cvf $(LIB_DIR)$S$*.jar -C $(CLASS_DIR)$S$* .
|
||||
|
||||
.PHONY: detect_java
|
||||
detect_java:
|
||||
@echo JAVA_HOME = $(JAVA_HOME)
|
||||
@echo JAVAC_BIN = $(JAVAC_BIN)
|
||||
@echo CLASS_DIR = $(CLASS_DIR)
|
||||
@echo JAR_BIN = $(JAR_BIN)
|
||||
@echo JAVA_BIN = $(JAVA_BIN)
|
||||
@echo JAVAFLAGS = $(JAVAFLAGS)
|
||||
ifeq ($(SYSTEM),win)
|
||||
@echo off & echo(
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
##############
|
||||
## DOTNET ##
|
||||
##############
|
||||
DLL = \
|
||||
$(BIN_DIR)/a_puzzle.dll \
|
||||
$(BIN_DIR)/Program.dll
|
||||
|
||||
ifndef DOTNET_BIN
|
||||
NUGET_BIN =
|
||||
dotnet test_dotnet cdotnet rdotnet:
|
||||
@echo the $(DOTNET) command was not found in your PATH
|
||||
else
|
||||
NUGET_BIN = $(DOTNET_BIN) nuget
|
||||
dotnet: $(DLL)
|
||||
|
||||
test_dotnet: detect_dotnet $(BIN_DIR)/a_puzzle.dll $(BIN_DIR)/Program.dll
|
||||
"$(DOTNET_BIN)" $(BIN_DIR)$Sa_puzzle.dll
|
||||
"$(DOTNET_BIN)" $(BIN_DIR)$SProgram.dll
|
||||
|
||||
# .NET generic compilation command.
|
||||
.PHONY: cdotnet rdotnet
|
||||
ifeq ($(EX),)
|
||||
cdotnet rdotnet:
|
||||
@echo No CSharp file was provided, the $@ target must be used like so: \
|
||||
make $@ EX=example/dotnet/example.cs
|
||||
else # ifeq ($(EX),)
|
||||
EX_NAME = $(basename $(notdir $(EX)))
|
||||
|
||||
cdotnet: $(BIN_DIR)/$(EX_NAME).dll
|
||||
|
||||
rdotnet: $(BIN_DIR)/$(EX_NAME).dll
|
||||
@echo running $<
|
||||
"$(DOTNET_BIN)" $(BIN_DIR)$S$(EX_NAME).dll
|
||||
endif # ifeq ($(EX),)
|
||||
endif # ifndef DOTNET_BIN
|
||||
|
||||
$(BIN_DIR)/%.dll: $(DOTNET_EX_DIR)/csharp/%.cs
|
||||
"$(DOTNET_BIN)" build -o "..$S..$S..$S$(BIN_DIR)" \
|
||||
$(DOTNET_EX_PATH)$Scsharp$S$*.csproj
|
||||
|
||||
$(BIN_DIR)/%.dll: $(DOTNET_EX_DIR)/fsharp/%.fs
|
||||
"$(DOTNET_BIN)" build -o "..$S..$S..$S$(BIN_DIR)" \
|
||||
$(DOTNET_EX_PATH)$Sfsharp$S$*.fsproj
|
||||
|
||||
.PHONY: detect_dotnet
|
||||
detect_dotnet:
|
||||
@echo DOTNET_BIN = $(DOTNET_BIN)
|
||||
@echo NUGET_BIN = $(NUGET_BIN)
|
||||
@echo CLR_DLL_NAME = $(CLR_DLL_NAME)
|
||||
ifeq ($(SYSTEM),win)
|
||||
@echo off & echo(
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
############
|
||||
## MISC ##
|
||||
############
|
||||
# Include user makefile
|
||||
-include Makefile.user
|
||||
|
||||
print-% : ; @echo $* = $($*)
|
||||
@@ -1,10 +0,0 @@
|
||||
export or=`otool -L bin/fzn-or-tools | grep -v ':' | grep libortools | cut -d '(' -f 1`
|
||||
export fz=`otool -L bin/fzn-or-tools | grep -v ':' | grep libfz | cut -d '(' -f 1`
|
||||
|
||||
install_name_tool -change $or @loader_path/../lib/libortools.dylib bin/fzn-or-tools
|
||||
install_name_tool -change $fz @loader_path/../lib/libfz.dylib bin/fzn-or-tools
|
||||
|
||||
export new_or=`otool -L bin/fzn-or-tools | grep -v ':' | grep libortools | cut -d '(' -f 1`
|
||||
echo the new path of or-tools library is $new_or
|
||||
export new_fz=`otool -L bin/fzn-or-tools | grep -v ':' | grep libfz | cut -d '(' -f 1`
|
||||
echo the new path of fz library is $new_f
|
||||
@@ -1,4 +0,0 @@
|
||||
dependencies/install/bin/patchelf --set-rpath '$ORIGIN' temp/or-tools*/lib/libjniortools.so
|
||||
dependencies/install/bin/patchelf --set-rpath '$ORIGIN' temp/or-tools*/lib/libcvrptw_lib.so
|
||||
dependencies/install/bin/patchelf --set-rpath '$ORIGIN' temp/or-tools*/lib/libdimacs.so
|
||||
dependencies/install/bin/patchelf --set-rpath '$ORIGIN/../../lib' temp/or-tools*/bin/libGoogle.OrTools.so
|
||||
@@ -1,41 +0,0 @@
|
||||
export N=`pwd`/lib
|
||||
export B=`pwd`/bin
|
||||
export O=`otool -L lib/libortools.dylib | grep -v ':' | grep libortools | cut -d '(' -f 1`
|
||||
|
||||
echo install or-tools libraries in path $N
|
||||
echo the current path of the or-tools library is $O
|
||||
|
||||
install_name_tool -id @rpath/libortools.dylib $N/libortools.dylib
|
||||
|
||||
if [ -e $B/libGoogle.OrTools.so ]
|
||||
then
|
||||
install_name_tool -change $O @loader_path/../../lib/libortools.dylib $B/libGoogle.OrTools.so
|
||||
fi
|
||||
|
||||
if [ -e $N/libjniortools.dylib ]
|
||||
then
|
||||
install_name_tool -change $O @loader_path/libortools.dylib $N/libjniortools.dylib
|
||||
fi
|
||||
|
||||
if [ -e $N/libfap.dylib ]
|
||||
then
|
||||
install_name_tool -id @rpath/libfap.dylib $N/libfap.dylib
|
||||
fi
|
||||
|
||||
if [ -e $N/libdimacs.dylib ]
|
||||
then
|
||||
install_name_tool -id @rpath/libdimacs.dylib $N/libdimacs.dylib
|
||||
fi
|
||||
|
||||
if [ -e $N/libcvrptw_lib.dylib ]
|
||||
then
|
||||
install_name_tool -id @rpath/libcvrptw_lib.dylib $N/libcvrptw_lib.dylib
|
||||
fi
|
||||
|
||||
if [ -e $N/libjniortools.jnilib ]
|
||||
then
|
||||
install_name_tool -change $O @loader_path/libortools.dylib $N/libjniortools.jnilib
|
||||
fi
|
||||
|
||||
export P=`otool -L lib/libortools.dylib | grep -v ':' | grep libortools | cut -d '(' -f 1`
|
||||
echo the new path of the or-tools library is $P
|
||||
Reference in New Issue
Block a user