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:
Corentin Le Molgat
2018-07-05 14:56:31 +02:00
parent 898e7bc055
commit ef5a2a2775
13 changed files with 660 additions and 773 deletions

1
.gitignore vendored
View File

@@ -31,6 +31,7 @@ temp_fz_test/
temp-python*
temp_dotnet/
temp_dotnet_test/
temp_archive/
lib/
install/
examples/csharp/solution/*.csproj

View File

@@ -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 $* = $($*)

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 $* = $($*)

View 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 $* = $($*)

View File

@@ -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

View File

@@ -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

View File

@@ -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