diff --git a/.gitignore b/.gitignore index 93eddb46d5..5f1fff3aa3 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ temp_fz_test/ temp-python* temp_dotnet/ temp_dotnet_test/ +temp_archive/ lib/ install/ examples/csharp/solution/*.csproj diff --git a/Makefile b/Makefile index 55bfa0416c..47f1f00fbf 100755 --- a/Makefile +++ b/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 $* = $($*) diff --git a/makefiles/Makefile.archive.mk b/makefiles/Makefile.archive.mk index 374470b33c..157418dd12 100644 --- a/makefiles/Makefile.archive.mk +++ b/makefiles/Makefile.archive.mk @@ -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 diff --git a/makefiles/Makefile.cpp.mk b/makefiles/Makefile.cpp.mk index 7e1f1a92eb..a2ec90738b 100755 --- a/makefiles/Makefile.cpp.mk +++ b/makefiles/Makefile.cpp.mk @@ -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" diff --git a/makefiles/Makefile.install.mk b/makefiles/Makefile.install.mk index 3d3b7b06fc..2307cd929d 100644 --- a/makefiles/Makefile.install.mk +++ b/makefiles/Makefile.install.mk @@ -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 diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index 628ca10a9d..4855221714 100644 --- a/makefiles/Makefile.unix.mk +++ b/makefiles/Makefile.unix.mk @@ -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 diff --git a/makefiles/Makefile.win.mk b/makefiles/Makefile.win.mk index 4c410739cc..7df7d2a842 100644 --- a/makefiles/Makefile.win.mk +++ b/makefiles/Makefile.win.mk @@ -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 diff --git a/tools/Makefile.cc b/tools/Makefile.cc deleted file mode 100644 index 6d97814008..0000000000 --- a/tools/Makefile.cc +++ /dev/null @@ -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 $* = $($*) diff --git a/tools/Makefile.cc.java.dotnet b/tools/Makefile.cc.java.dotnet new file mode 100644 index 0000000000..766e08aaa2 --- /dev/null +++ b/tools/Makefile.cc.java.dotnet @@ -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 $* = $($*) diff --git a/tools/README.cc.java.csharp b/tools/README.cc.java.dotnet similarity index 100% rename from tools/README.cc.java.csharp rename to tools/README.cc.java.dotnet diff --git a/tools/fix_fz_libraries_on_mac.sh b/tools/fix_fz_libraries_on_mac.sh deleted file mode 100755 index f56d1f36ee..0000000000 --- a/tools/fix_fz_libraries_on_mac.sh +++ /dev/null @@ -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 \ No newline at end of file diff --git a/tools/fix_libraries_on_linux.sh b/tools/fix_libraries_on_linux.sh deleted file mode 100755 index cf92283008..0000000000 --- a/tools/fix_libraries_on_linux.sh +++ /dev/null @@ -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 diff --git a/tools/install_libortools_mac.sh b/tools/install_libortools_mac.sh deleted file mode 100755 index 7c38d05946..0000000000 --- a/tools/install_libortools_mac.sh +++ /dev/null @@ -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