1#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2#* * 3#* This file is part of the program and library * 4#* SCIP --- Solving Constraint Integer Programs * 5#* * 6#* Copyright (C) 2002-2021 Konrad-Zuse-Zentrum * 7#* fuer Informationstechnik Berlin * 8#* * 9#* SCIP is distributed under the terms of the ZIB Academic License. * 10#* * 11#* You should have received a copy of the ZIB Academic License * 12#* along with SCIP; see the file COPYING. If not email to scip@zib.de. * 13#* * 14#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 15 16#@file Makefile 17#@brief Makefile for SCIP project 18#@author Timo Berthold 19#@author Stefan Heinz 20 21#----------------------------------------------------------------------------- 22# path 23#----------------------------------------------------------------------------- 24 25SCIPDIR = ../.. 26 27 28#----------------------------------------------------------------------------- 29# include default project Makefile from SCIP (need to do this twice, once to 30# find the correct binary, then, after getting the correct flags from the 31# binary (which is necessary since the ZIMPL flags differ from the default 32# if compiled with the SCIP Optsuite instead of SCIP), we need to set the 33# compile flags, e.g., for the ZIMPL library, which is again done in make.project 34#----------------------------------------------------------------------------- 35include $(SCIPDIR)/make/make.project 36SCIPVERSION :=$(shell $(SCIPDIR)/bin/scip.$(BASE).$(LPS).$(TPI)$(EXEEXTENSION) -v | sed -e 's/$$/@/') 37override ARCH :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* ARCH=\([^@]*\).*/\1/') 38override EXPRINT :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* EXPRINT=\([^@]*\).*/\1/') 39override GAMS :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* GAMS=\([^@]*\).*/\1/') 40override GMP :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* GMP=\([^@]*\).*/\1/') 41override SYM :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* SYM=\([^@]*\).*/\1/') 42override IPOPT :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* IPOPT=\([^@]*\).*/\1/') 43override IPOPTOPT :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* IPOPTOPT=\([^@]*\).*/\1/') 44override LPSCHECK :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* LPSCHECK=\([^@]*\).*/\1/') 45override LPSOPT :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* LPSOPT=\([^@]*\).*/\1/') 46override NOBLKBUFMEM :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* NOBLKBUFMEM=\([^@]*\).*/\1/') 47override NOBLKMEM :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* NOBLKMEM=\([^@]*\).*/\1/') 48override NOBUFMEM :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* NOBUFMEM=\([^@]*\).*/\1/') 49override PARASCIP :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* PARASCIP=\([^@]*\).*/\1/') 50override READLINE :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* READLINE=\([^@]*\).*/\1/') 51override SANITIZE :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* SANITIZE=\([^@]*\).*/\1/') 52override ZIMPL :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* ZIMPL=\([^@]*\).*/\1/') 53override ZIMPLOPT :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* ZIMPLOPT=\([^@]*\).*/\1/') 54override ZLIB :=$(shell echo "$(SCIPVERSION)" | sed -e 's/.* ZLIB=\([^@]*\).*/\1/') 55include $(SCIPDIR)/make/make.project 56 57 58#----------------------------------------------------------------------------- 59# Main Program 60#----------------------------------------------------------------------------- 61 62MAINNAME = binpacking 63CMAINOBJ = branch_ryanfoster.o \ 64 cmain.o \ 65 cons_samediff.o \ 66 pricer_binpacking.o \ 67 probdata_binpacking.o \ 68 reader_bpa.o \ 69 vardata_binpacking.o 70 71CXXMAINOBJ = 72 73MAINSRC = $(addprefix $(SRCDIR)/,$(CMAINOBJ:.o=.c)) 74MAINSRC += $(addprefix $(SRCDIR)/,$(CXXMAINOBJ:.o=.cpp)) 75 76MAIN = $(MAINNAME).$(BASE).$(LPS)$(EXEEXTENSION) 77MAINFILE = $(BINDIR)/$(MAIN) 78MAINSHORTLINK = $(BINDIR)/$(MAINNAME) 79MAINOBJFILES = $(addprefix $(OBJDIR)/,$(CMAINOBJ)) 80MAINOBJFILES += $(addprefix $(OBJDIR)/,$(CXXMAINOBJ)) 81 82#----------------------------------------------------------------------------- 83# External libraries 84#----------------------------------------------------------------------------- 85 86FLAGS += 87LDFLAGS += 88 89#----------------------------------------------------------------------------- 90# Rules 91#----------------------------------------------------------------------------- 92 93ifeq ($(VERBOSE),false) 94.SILENT: $(MAINFILE) $(MAINOBJFILES) $(MAINSHORTLINK) 95endif 96 97.PHONY: all 98all: $(SCIPDIR) $(MAINFILE) $(MAINSHORTLINK) 99 100.PHONY: lint 101lint: $(MAINSRC) 102 -rm -f lint.out 103 $(SHELL) -ec 'for i in $^; \ 104 do \ 105 echo $$i; \ 106 $(LINT) -I$(SCIPDIR) lint/main-gcc.lnt +os\(lint.out\) -u -zero \ 107 $(FLAGS) -UNDEBUG -USCIP_WITH_READLINE -USCIP_ROUNDING_FE $$i; \ 108 done' 109.PHONY: scip 110scip: 111 @$(MAKE) -C $(SCIPDIR) libs $^ 112 113$(MAINSHORTLINK): $(MAINFILE) 114 @rm -f $@ 115 cd $(dir $@) && ln -s $(notdir $(MAINFILE)) $(notdir $@) 116 117$(OBJDIR): 118 @-mkdir -p $(OBJDIR) 119 120$(BINDIR): 121 @-mkdir -p $(BINDIR) 122 123.PHONY: clean 124clean: $(OBJDIR) 125ifneq ($(OBJDIR),) 126 @-(rm -f $(OBJDIR)/*.o $(OBJDIR)/*.d && rmdir $(OBJDIR)); 127 @echo "-> remove main objective files" 128endif 129 @-rm -f $(MAINFILE) $(MAINLINK) $(MAINSHORTLINK) 130 @echo "-> remove binary" 131 132.PHONY: test 133test: $(MAINFILE) 134 @-(cd check && ln -fs ../$(SCIPDIR)/check/check.sh); 135 @-(cd check && ln -fs ../$(SCIPDIR)/check/evaluate.sh); 136 @-(cd check && ln -fs ../$(SCIPDIR)/check/evalcheck.sh); 137 @-(cd check && ln -fs ../$(SCIPDIR)/check/evalcheck_cluster.sh); 138 @-(cd check && ln -fs ../$(SCIPDIR)/check/check.awk); 139 @-(cd check && ln -fs ../$(SCIPDIR)/check/getlastprob.awk); 140 @-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_set.sh); 141 @-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_solufile.sh); 142 @-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_logfiles.sh); 143 @-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_tmpfile_setup_scip.sh configuration_tmpfile_setup_binpacking.sh); 144 @-(cd check && ln -fs ../$(SCIPDIR)/check/run.sh); 145 cd check; \ 146 $(SHELL) ./check.sh $(TEST) $(EXECUTABLE) $(SETTINGS) $(BINID) $(OUTPUTDIR) $(TIME) $(NODES) $(MEM) $(THREADS) $(FEASTOL) $(DISPFREQ) $(CONTINUE) $(LOCK) "example" $(LPS) $(DEBUGTOOL) $(CLIENTTMPDIR) false $(OPTCOMMAND) $(SETCUTOFF) $(MAXJOBS) $(VISUALIZE) $(PERMUTE) $(SEEDS) $(GLBSEEDSHIFT) $(STARTPERM); 147 148.PHONY: tags 149tags: 150 rm -f TAGS; ctags -e src/*.c src/*.h $(SCIPDIR)/src/scip/*.c $(SCIPDIR)/src/scip/*.h; 151 152-include $(MAINOBJFILES:.o=.d) 153 154$(MAINFILE): $(BINDIR) $(OBJDIR) $(SCIPLIBFILE) $(LPILIBFILE) $(NLPILIBFILE) $(MAINOBJFILES) 155 @echo "-> linking $@" 156 $(LINKCXX) $(MAINOBJFILES) $(LINKCXXSCIPALL) $(LDFLAGS) $(LINKCXX_o)$@ 157 158$(OBJDIR)/%.o: $(SRCDIR)/%.c 159 @echo "-> compiling $@" 160 $(CC) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CFLAGS) $(DFLAGS) -c $< $(CC_o)$@ 161 162$(OBJDIR)/%.o: $(SRCDIR)/%.cpp 163 @echo "-> compiling $@" 164 $(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) $(DFLAGS) -c $< $(CXX_o)$@ 165 166#---- EOF -------------------------------------------------------------------- 167