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