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 cumulative scheduling application
18#@author  Stefan Heinz
19
20
21#-----------------------------------------------------------------------------
22# paths
23#-----------------------------------------------------------------------------
24
25SCIPDIR         =       ../..
26CPOPT		=	false
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# Main Program
59#-----------------------------------------------------------------------------
60
61MAINNAME	=	scheduler
62MAINOBJ		=	cons_optcumulative.o \
63			heur_listscheduling.o \
64			heur_optcumulative.o \
65			reader_cmin.o \
66			reader_sch.o \
67			reader_sm.o \
68			reader_rcp.o
69
70MAINCXXOBJ	= 	main.o \
71			cpoptimizer.o
72
73MAINSRC		=	$(addprefix $(SRCDIR)/,$(MAINOBJ:.o=.c))
74MAINSRC		+=	$(addprefix $(SRCDIR)/,$(MAINCXXOBJ:.o=.cpp))
75
76MAIN		=	$(MAINNAME).$(BASE).$(LPS)$(EXEEXTENSION)
77MAINFILE	=	$(BINDIR)/$(MAIN)
78MAINSHORTLINK	=	$(BINDIR)/$(MAINNAME)
79MAINOBJFILES	=	$(addprefix $(OBJDIR)/,$(MAINOBJ))
80MAINOBJFILES	+=	$(addprefix $(OBJDIR)/,$(MAINCXXOBJ))
81
82ifeq ($(CPOPT),true)
83FLAGS		+=	-DWITH_CPOPTIMIZER -DIL_STD -I$(LIBDIR)/cpinc -I$(LIBDIR)/cpxinc
84FLAGS		+=	-I$(LIBDIR)/ilconcertinc
85LDFLAGS         +=       $(LIBDIR)/libcp.a $(LIBDIR)/libconcert.a  $(LIBDIR)/libcplex.a -lpthread
86endif
87
88LASTSETTINGS	=	$(OBJDIR)/make.lastsettings
89
90CPOPTDEP	:=	$(SRCDIR)/depend.cpoptimizer
91CPOPTSRC	:=	$(shell cat $(CPOPTDEP))
92
93#-----------------------------------------------------------------------------
94# Rules
95#-----------------------------------------------------------------------------
96
97ifeq ($(VERBOSE),false)
98.SILENT:	$(MAINFILE) $(MAINOBJFILES) $(MAINSHORTLINK)
99endif
100
101.PHONY: all
102all:            $(SCIPDIR) $(MAINFILE) $(MAINSHORTLINK)
103
104.PHONY: lint
105lint:		$(MAINSRC)
106		-rm -f lint.out
107		$(SHELL) -ec 'for i in $^; \
108			do \
109			echo $$i; \
110			$(LINT) -I$(SCIPDIR) lint/main-gcc.lnt +os\(lint.out\) -u -zero \
111			$(FLAGS) -UNDEBUG -USCIP_WITH_READLINE -USCIP_ROUNDING_FE $$i; \
112			done'
113
114.PHONY: scip
115scip:
116		@$(MAKE) -C $(SCIPDIR) libs $^
117		@$(MAKE) $^
118
119.PHONY: doc
120doc:
121		@-(cd doc && $(LN_sf) ../$(SCIPDIR)/doc/pictures/scippy.png);
122		@-(cd doc && $(LN_sf) ../$(SCIPDIR)/doc/pictures/miniscippy.png);
123		@-(cd doc && $(LN_sf) ../$(SCIPDIR)/doc/scipfooter.html footer.html);
124		cd doc; $(DOXY) scheduler.dxy
125
126$(MAINSHORTLINK):	$(MAINFILE)
127		@rm -f $@
128		cd $(dir $@) && $(LN_s) $(notdir $(MAINFILE)) $(notdir $@)
129
130$(OBJDIR):
131		@-rm -f $(LASTSETTINGS)
132		@-mkdir -p $(OBJDIR)
133
134$(BINDIR):
135		@-mkdir -p $(BINDIR)
136
137$(CHECKDIR):
138		@-mkdir -p $(CHECKDIR)
139
140.PHONY: test
141test:		$(MAINFILE) $(CHECKDIR)
142		@-(cd check && ln -fs ../$(SCIPDIR)/check/check.sh);
143		@-(cd check && ln -fs ../$(SCIPDIR)/check/evaluate.sh);
144		@-(cd check && ln -fs ../$(SCIPDIR)/check/evalcheck.sh);
145		@-(cd check && ln -fs ../$(SCIPDIR)/check/evalcheck_cluster.sh);
146		@-(cd check && ln -fs ../$(SCIPDIR)/check/check.awk);
147		@-(cd check && ln -fs ../$(SCIPDIR)/check/getlastprob.awk);
148		@-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_set.sh);
149		@-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_solufile.sh);
150		@-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_logfiles.sh);
151		@-(cd check && ln -fs ../$(SCIPDIR)/check/configuration_tmpfile_setup_scip.sh);
152		@-(cd check && ln -fs ../$(SCIPDIR)/check/run.sh);
153		cd check; \
154		$(SHELL) ./check.sh $(TEST) $(EXECUTABLE) $(SETTINGS) $(BINID) $(OUTPUTDIR) $(TIME) $(NODES) $(MEM) $(THREADS) $(FEASTOL) $(DISPFREQ) \
155		$(CONTINUE) $(LOCK) "example" $(LPS) $(DEBUGTOOL) $(CLIENTTMPDIR) $(REOPT) $(OPTCOMMAND) $(SETCUTOFF) $(MAXJOBS) $(VISUALIZE) $(PERMUTE) $(SEEDS) $(GLBSEEDSHIFT) $(STARTPERM);
156
157# include local targets
158-include $(SCIPDIR)/make/local/make.targets
159
160.PHONY: clean
161clean:		$(OBJDIR)
162ifneq ($(OBJDIR),)
163		@-rm -f $(LASTSETTINGS)
164		@-(rm -f $(OBJDIR)/*.o $(OBJDIR)/*.d && rmdir $(OBJDIR));
165		@echo "-> remove main objective files"
166endif
167		@-rm -f $(MAINFILE) $(MAINLINK) $(MAINSHORTLINK)
168		@echo "-> remove binary"
169
170.PHONY: tags
171tags:
172		rm -f TAGS; ctags -e src/*.c src/*.h $(SCIPDIR)/src/scip/*.c $(SCIPDIR)/src/scip/*.h;
173
174.PHONY: depend
175depend:		$(SCIPDIR)
176		@echo `grep -l "WITH_CPOPTIMIZER" $(MAINSRC)` >$(CPOPTDEP)
177
178
179-include $(LASTSETTINGS)
180
181.PHONY: touchexternal
182touchexternal:	$(CPOPTDEP)
183ifneq ($(CPOPT),$(LAST_CPOPT))
184		@-touch $(CPOPTSRC)
185endif
186		@-rm -f $(LASTSETTINGS)
187		@echo "LAST_CPOPT=$(CPOPT)" >> $(LASTSETTINGS)
188
189
190-include	$(MAINOBJFILES:.o=.d)
191
192$(MAINFILE):	$(BINDIR) $(OBJDIR) $(SCIPLIBFILE) $(LPILIBFILE) $(NLPILIBFILE) touchexternal $(MAINOBJFILES)
193		@echo "-> linking $@"
194		$(LINKCXX) $(MAINOBJFILES) $(LINKCXXSCIPALL) $(LDFLAGS) $(LINKCXX_o)$@
195
196$(OBJDIR)/%.o:	$(SRCDIR)/%.c
197		@echo "-> compiling $@"
198		$(CC) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CFLAGS) $(DFLAGS) -c $< $(CC_o)$@
199
200$(OBJDIR)/%.o:	$(SRCDIR)/%.cpp
201		@echo "-> compiling $@"
202		$(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) $(DFLAGS) -c $< $(CXX_o)$@
203
204#---- EOF --------------------------------------------------------------------
205