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 SCIP Makefile 18#@author Thorsten Koch 19#@author Tobias Achterberg 20#@author Marc Pfetsch 21#@author Timo Berthold 22 23#----------------------------------------------------------------------------- 24# paths variables 25#----------------------------------------------------------------------------- 26 27SCIPDIR = ./ 28 29INSTALLDIR = 30 31#----------------------------------------------------------------------------- 32# include make.project file 33#----------------------------------------------------------------------------- 34 35# do not use other open source projects; needs to be set before including make.project 36ifeq ($(OPENSOURCE),false) 37 override EXPRINT = none 38 override GMP = false 39 override READLINE = false 40 override ZLIB = false 41 override ZIMPL = false 42 override IPOPT = false 43endif 44 45# mark that this is a SCIP internal makefile 46SCIPINTERNAL = true 47 48# use PARASCIP=true if compiled with TPI not equal to none 49ifeq ($(TPI),omp) 50 override PARASCIP = true 51endif 52ifeq ($(TPI),tny) 53 override PARASCIP = true 54endif 55 56 57# load default settings and detect host architecture 58include $(SCIPDIR)/make/make.project 59 60#----------------------------------------------------------------------------- 61# default settings 62#----------------------------------------------------------------------------- 63 64VERSION = $(SCIP_VERSION) 65SCIPGITHASH = 66SOFTLINKS = 67MAKESOFTLINKS = true 68TOUCHLINKS = false 69 70#----------------------------------------------------------------------------- 71# define build flags 72#----------------------------------------------------------------------------- 73BUILDFLAGS = " ARCH=$(ARCH)\\n\ 74 COMP=$(COMP)\\n\ 75 DEBUGSOL=$(DEBUGSOL)\\n\ 76 EXPRINT=$(EXPRINT)\\n\ 77 GAMS=$(GAMS)\\n\ 78 GMP=$(GMP)\\n\ 79 IPOPT=$(IPOPT)\\n\ 80 IPOPTOPT=$(IPOPTOPT)\\n\ 81 LPS=$(LPS)\\n\ 82 LPSCHECK=$(LPSCHECK)\\n\ 83 LPSOPT=$(LPSOPT)\\n\ 84 NOBLKBUFMEM=$(NOBLKBUFMEM)\\n\ 85 NOBLKMEM=$(NOBLKMEM)\\n\ 86 NOBUFMEM=$(NOBUFMEM)\\n\ 87 OPT=$(OPT)\\n\ 88 OSTYPE=$(OSTYPE)\\n\ 89 PARASCIP=$(PARASCIP)\\n\ 90 PAPILO=$(PAPILO)\\n\ 91 READLINE=$(READLINE)\\n\ 92 SANITIZE=$(SANITIZE)\\n\ 93 SHARED=$(SHARED)\\n\ 94 SYM=$(SYM)\\n\ 95 USRARFLAGS=$(USRARFLAGS)\\n\ 96 USRCFLAGS=$(USRCFLAGS)\\n\ 97 USRCXXFLAGS=$(USRCXXFLAGS)\\n\ 98 USRFLAGS=$(USRFLAGS)\\n\ 99 USRLDFLAGS=$(USRLDFLAGS)\\n\ 100 USROFLAGS=$(USROFLAGS)\\n\ 101 VERSION=$(VERSION)\\n\ 102 WORHP=$(WORHP)\\n\ 103 WORHPOPT=$(WORHPOPT)\\n\ 104 ZIMPL=$(ZIMPL)\\n\ 105 ZIMPLOPT=$(ZIMPLOPT)\\n\ 106 ZLIB=$(ZLIB)" 107 108#----------------------------------------------------------------------------- 109# LP Solver Interface 110#----------------------------------------------------------------------------- 111 112LPILIBSHORTNAME = lpi$(LPS) 113LPILIBNAME = $(LPILIBSHORTNAME)-$(VERSION) 114LPILIBOBJ = 115LPSOPTIONS = 116LPIINSTMSG = 117 118LPSCHECKDEP := $(SRCDIR)/depend.lpscheck 119LPSCHECKSRC := $(shell cat $(LPSCHECKDEP)) 120 121LPSOPTIONS += cpx 122ifeq ($(LPS),cpx) 123FLAGS += -I$(LIBDIR)/include/cpxinc 124LPILIBOBJ = lpi/lpi_cpx.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 125LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 126SOFTLINKS += $(LIBDIR)/include/cpxinc 127ifeq ($(SHARED),true) 128SOFTLINKS += $(LIBDIR)/shared/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 129else 130SOFTLINKS += $(LIBDIR)/static/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 131endif 132LPIINSTMSG = " -> \"cpxinc\" is the path to the CPLEX \"include\" directory, e.g., \"<CPLEX-path>/include/ilcplex\".\n" 133LPIINSTMSG += " -> \"libcplex.*.a\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/lib/x86-64_linux/static_pic/libcplex.a\"\n" 134LPIINSTMSG += " -> \"libcplex.*.so\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/bin/x86-64_linux/libcplex1263.so\"" 135endif 136 137# XPRESS is only available as shared library 138LPSOPTIONS += xprs 139ifeq ($(LPS),xprs) 140FLAGS += -I$(LIBDIR)/include/xprsinc 141LPILIBOBJ = lpi/lpi_xprs.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 142LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 143SOFTLINKS += $(LIBDIR)/include/xprsinc 144SOFTLINKS += $(LIBDIR)/shared/libxprs.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 145LPIINSTMSG = " -> \"xprsinc\" is the path to the XPRESS \"include\" directory, e.g., \"<XPRESS-path>/include\".\n" 146LPIINSTMSG += " -> \"libxprs.*\" is the path to the XPRESS library, e.g., \"<XPRESS-path>/lib/libxprs.so\"" 147endif 148 149# mosek only supports shared libraries 150LPSOPTIONS += msk 151ifeq ($(LPS),msk) 152FLAGS += -I$(LIBDIR)/include/mskinc 153LPILIBOBJ = lpi/lpi_msk.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 154LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 155SOFTLINKS += $(LIBDIR)/include/mskinc 156SOFTLINKS += $(LIBDIR)/shared/libmosek.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 157SOFTLINKS += $(LIBDIR)/shared/libiomp5.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) # for Mosek < 9 158SOFTLINKS += $(LIBDIR)/shared/libcilkrts.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 159LPIINSTMSG = " -> \"mskinc\" is the path to the Mosek \"include\" directory, e.g., \"<Mosek-path>/tools/platform/linux64x86/h\".\n" 160LPIINSTMSG += " -> \"libmosek.*\" is the path to the Mosek library, e.g., \"<Mosek-path>/tools/platform/linux64x86/bin/libmosek64.so\".\n" 161LPIINSTMSG += " -> \"libiomp5.*\" is the path to the Intel OpenMP library, e.g., \"<Mosek-path>/tools/platform/linux64x86/bin/libiomp5.so\" (required for Mosek < 9.0 only).\n" 162LPIINSTMSG += " -> \"libcilkrts.*\" is the path to the cilk library, e.g., \"<Mosek-path>/tools/platform/linux64x86/bin/libcilkrts.so.5\".\n" 163endif 164 165LPSOPTIONS += spx1 166ifeq ($(LPS),spx1) 167LINKER = CPP 168FLAGS += -I$(LIBDIR)/include/spxinc 169LPILIBOBJ = lpi/lpi_spx1.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 170LPILIBSRC = $(SRCDIR)/lpi/lpi_spx1.cpp $(SRCDIR)/scip/bitencode.c $(SRCDIR)/blockmemshell/memory.c $(SRCDIR)/scip/rbtree.c $(SRCDIR)/scip/message.c 171SOFTLINKS += $(LIBDIR)/include/spxinc 172ifeq ($(SHARED),true) 173SOFTLINKS += $(LIBDIR)/shared/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(SHAREDLIBEXT) 174else 175SOFTLINKS += $(LIBDIR)/static/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(STATICLIBEXT) 176endif 177LPIINSTMSG = " -> \"spxinc\" is the path to the SoPlex \"src\" directory, e.g., \"<SoPlex-path>/src\".\n" 178LPIINSTMSG += " -> \"libsoplex.*\" is the path to the SoPlex library, e.g., \"<SoPlex-path>/lib/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(STATICLIBEXT)\"" 179ifeq ($(LPSCHECK),true) 180FLAGS += -DSCIP_WITH_LPSCHECK -I$(LIBDIR)/include/cpxinc 181SOFTLINKS += $(LIBDIR)/include/cpxinc 182ifeq ($(SHARED),true) 183SOFTLINKS += $(LIBDIR)/shared/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 184else 185SOFTLINKS += $(LIBDIR)/static/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 186endif 187LPIINSTMSG += " -> \"cpxinc\" is the path to the CPLEX \"include\" directory, e.g., \"<CPLEX-path>/include/ilcplex\".\n" 188LPIINSTMSG += " -> \"libcplex.*.a\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/lib/x86-64_linux/static_pic/libcplex.a\"\n" 189LPIINSTMSG += " -> \"libcplex.*.so\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/bin/x86-64_linux/libcplex1263.so\"" 190endif 191endif 192 193LPSOPTIONS += spx ( = spx2) 194ifeq ($(LPS),spx2) 195LINKER = CPP 196FLAGS += -I$(LIBDIR)/include/spxinc 197LPILIBOBJ = lpi/lpi_spx2.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 198LPILIBSRC = $(SRCDIR)/lpi/lpi_spx2.cpp $(SRCDIR)/scip/bitencode.c $(SRCDIR)/blockmemshell/memory.c $(SRCDIR)/scip/rbtree.c $(SRCDIR)/scip/message.c 199SOFTLINKS += $(LIBDIR)/include/spxinc 200ifeq ($(SHARED),true) 201SOFTLINKS += $(LIBDIR)/shared/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(SHAREDLIBEXT) 202else 203SOFTLINKS += $(LIBDIR)/static/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(STATICLIBEXT) 204endif 205LPIINSTMSG = " -> \"spxinc\" is the path to the SoPlex \"src\" directory, e.g., \"<SoPlex-path>/src\".\n" 206LPIINSTMSG += " -> \"libsoplex.*\" is the path to the SoPlex library, e.g., \"<SoPlex-path>/lib/libsoplex.linux.x86.gnu.opt.a\"" 207ifeq ($(LPSCHECK),true) 208FLAGS += -DSCIP_WITH_LPSCHECK -I$(LIBDIR)/include/cpxinc 209SOFTLINKS += $(LIBDIR)/include/cpxinc 210ifeq ($(SHARED),true) 211SOFTLINKS += $(LIBDIR)/shared/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 212else 213SOFTLINKS += $(LIBDIR)/static/libcplex.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 214endif 215LPIINSTMSG += " -> \"cpxinc\" is the path to the CPLEX \"include\" directory, e.g., \"<CPLEX-path>/include/ilcplex\".\n" 216LPIINSTMSG += " -> \"libcplex.*.a\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/lib/x86_rhel4.0_3.4/static_pic/libcplex.a\"\n" 217LPIINSTMSG += " -> \"libcplex.*.so\" is the path to the CPLEX library, e.g., \"<CPLEX-path>/bin/x86-64_linux/libcplex1263.so\"" 218endif 219endif 220 221ifeq ($(DEBUGSOL),true) 222FLAGS += -DWITH_DEBUG_SOLUTION 223endif 224 225LPSOPTIONS += clp 226ifeq ($(LPS),clp) 227LINKER = CPP 228FLAGS += -I$(LIBDIR)/$(LIBTYPE)/clp.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT)/include/coin 229LPILIBOBJ = lpi/lpi_clp.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 230LPILIBSRC = $(SRCDIR)/lpi/lpi_clp.cpp $(SRCDIR)/scip/bitencode.c $(SRCDIR)/blockmemshell/memory.c $(SRCDIR)/scip/rbtree.c $(SRCDIR)/scip/message.c 231SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/clp.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT) 232LPIINSTMSG = " -> \"clp.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT)\" is the path to the Clp installation directory, i.e., \"<Clp-path>/include/coin/ClpModel.hpp\" should exist.\n" 233endif 234 235LPSOPTIONS += qso 236ifeq ($(LPS),qso) 237FLAGS += -I$(LIBDIR)/include/qsinc 238LPILIBOBJ = lpi/lpi_qso.o scip/bitencode.o blockmemshell/memory.o scip/rbtree.o scip/message.o 239LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 240SOFTLINKS += $(LIBDIR)/include/qsinc 241SOFTLINKS += $(LIBDIR)/static/libqsopt.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 242LPIINSTMSG = " -> \"qsinc\" is the path to the QSopt \"include\" directory, e.g., \"<QSopt-path>\".\n" 243LPIINSTMSG += " -> \"libqsopt.*\" is the path to the QSopt library, e.g., \"<QSopt-path>/libqsopt.a\"" 244endif 245 246# Gurobi only supports shared libraries 247LPSOPTIONS += grb 248ifeq ($(LPS),grb) 249FLAGS += -I$(LIBDIR)/include/grbinc 250LPILIBOBJ = lpi/lpi_grb.o blockmemshell/memory.o scip/rbtree.o scip/message.o 251LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 252SOFTLINKS += $(LIBDIR)/include/grbinc 253SOFTLINKS += $(LIBDIR)/shared/libgurobi.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 254LPIINSTMSG = " -> \"grbinc\" is the path to the Gurobi \"include\" directory, e.g., \"<Gurobi-path>/include\".\n" 255LPIINSTMSG += " -> \"libgurobi.*\" is the path to the Gurobi library, e.g., \"<Gurobi-path>/lib/libgurobi.so\"" 256endif 257 258# glop only supports shared libraries 259LPSOPTIONS += glop 260ifeq ($(LPS),glop) 261LPILIBOBJ = lpi/lpi_glop.o scip/bitencode.o scip/rbtree.o scip/message.o 262LPILIBSRC = $(SRCDIR)/lpi/lpi_glop.cpp $(SRCDIR)/scip/bitencode.c $(SRCDIR)/scip/rbtree.c $(SRCDIR)/scip/message.c 263SOFTLINKS += $(LIBDIR)/shared/ortools 264LPIINSTMSG = " -> \"ortools\" is the path to the OR-Tools directory.\n" 265endif 266 267LPSOPTIONS += none 268ifeq ($(LPS),none) 269LPILIBOBJ = lpi/lpi_none.o blockmemshell/memory.o scip/rbtree.o scip/message.o 270LPILIBSRC = $(addprefix $(SRCDIR)/,$(LPILIBOBJ:.o=.c)) 271endif 272 273LPILIB = $(LPILIBNAME).$(BASE) 274LPILIBFILE = $(LIBDIR)/$(LIBTYPE)/lib$(LPILIB).$(LIBEXT) 275LPILIBOBJFILES = $(addprefix $(LIBOBJDIR)/,$(LPILIBOBJ)) 276LPILIBLINK = $(LIBDIR)/$(LIBTYPE)/lib$(LPILIBSHORTNAME).$(BASE).$(LIBEXT) 277LPILIBSHORTLINK = $(LIBDIR)/$(LIBTYPE)/lib$(LPILIBSHORTNAME).$(LIBEXT) 278ALLSRC += $(LPILIBSRC) 279 280ifeq ($(SHARED),true) 281LPILIBEXTLIBS = $(LIBBUILD_L)$(LIBDIR)/$(LIBTYPE) $(LPSLDFLAGS) $(LINKRPATH)$(realpath $(LIBDIR)/$(LIBTYPE)) 282endif 283 284#----------------------------------------------------------------------------- 285# Parallel Interface 286#----------------------------------------------------------------------------- 287 288TPILIBSHORTNAME = tpi$(TPI) 289TPILIBNAME = $(TPILIBSHORTNAME)-$(VERSION) 290TPILIBOBJ = 291 292TPIOPTIONS += none 293ifeq ($(TPI),none) 294TPILIBOBJ = tpi/tpi_none.o 295FLAGS += -DTPI_NONE 296endif 297 298TPIOPTIONS += omp 299ifeq ($(TPI),omp) 300TPILIBOBJ = tpi/tpi_openmp.o 301FLAGS += -DTPI_OMP 302endif 303 304TPIOPTIONS += tny 305ifeq ($(TPI),tny) 306TPILIBOBJ = tpi/tpi_tnycthrd.o \ 307 tinycthread/tinycthread.o 308FLAGS += -DTPI_TNYC 309endif 310 311TPILIBSRC = $(addprefix $(SRCDIR)/,$(TPILIBOBJ:.o=.c)) 312TPILIB = $(TPILIBNAME).$(BASE) 313TPILIBFILE = $(LIBDIR)/$(LIBTYPE)/lib$(TPILIB).$(LIBEXT) 314TPILIBOBJFILES = $(addprefix $(LIBOBJDIR)/,$(TPILIBOBJ)) 315TPILIBLINK = $(LIBDIR)/$(LIBTYPE)/lib$(TPILIBSHORTNAME).$(BASE).$(LIBEXT) 316TPILIBSHORTLINK = $(LIBDIR)/$(LIBTYPE)/lib$(TPILIBSHORTNAME).$(LIBEXT) 317ALLSRC += $(TPILIBSRC) 318 319#----------------------------------------------------------------------------- 320# Symmetry Interface 321#----------------------------------------------------------------------------- 322 323SYMOPTIONS += none 324ifeq ($(SYM),none) 325SYMOBJ = symmetry/compute_symmetry_none.o 326SYMOBJFILES = $(addprefix $(LIBOBJDIR)/,$(SYMOBJ)) 327SYMSRC = $(addprefix $(SRCDIR)/,$(SYMOBJ:.o=.cpp)) 328ALLSRC += $(SYMSRC) 329endif 330 331SYMOPTIONS += bliss 332ifeq ($(SYM),bliss) 333FLAGS += -I$(LIBDIR)/include/ 334SYMOBJ = symmetry/compute_symmetry_bliss.o 335SYMOBJFILES = $(addprefix $(LIBOBJDIR)/,$(SYMOBJ)) 336SYMSRC = $(addprefix $(SRCDIR)/,$(SYMOBJ:.o=.cpp)) 337ALLSRC += $(SYMSRC) 338SOFTLINKS += $(LIBDIR)/include/bliss 339ifeq ($(SHARED),true) 340SOFTLINKS += $(LIBDIR)/shared/libbliss.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 341else 342SOFTLINKS += $(LIBDIR)/static/libbliss.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 343endif 344LPIINSTMSG += "\n -> \"blissinc\" is the path to the BLISS directory, e.g., \"<BLISS-path>\".\n" 345LPIINSTMSG += " -> \"libbliss.*.a\" is the path to the BLISS library, e.g., \"<BLISS-path>/libbliss.a\"\n" 346LPIINSTMSG += " -> \"libbliss.*.so\" is the path to the BLISS library, e.g., \"<BLISS-path>/libbliss.so\"" 347endif 348 349#----------------------------------------------------------------------------- 350# PaPILO Library 351#----------------------------------------------------------------------------- 352 353ifeq ($(PAPILO),true) 354FLAGS += -DSCIP_WITH_PAPILO -DPAPILO_NO_CMAKE_CONFIG -isystem $(LIBDIR)/include/papilo/external/tbb/include -isystem $(LIBDIR)/include/papilo/external -isystem $(LIBDIR)/include/papilo/src 355SOFTLINKS += $(LIBDIR)/include/papilo 356LPIINSTMSG += "\n -> \"papilo\" is the path to the PaPILO directory\n" 357endif 358 359#----------------------------------------------------------------------------- 360# NLP Solver Interfaces and expression interpreter 361#----------------------------------------------------------------------------- 362 363NLPILIBCOBJ = nlpi/nlpi.o \ 364 nlpi/nlpi_all.o \ 365 nlpi/nlpioracle.o \ 366 nlpi/expr.o 367 368NLPILIBCXXOBJ = nlpi/intervalarithext.o 369 370NLPILIBSCIPOBJ = blockmemshell/memory.o \ 371 scip/misc.o \ 372 scip/intervalarith.o \ 373 scip/interrupt.o \ 374 scip/message.o \ 375 scip/rbtree.o 376 377ifeq ($(EXPRINT),none) 378NLPILIBCOBJ += nlpi/exprinterpret_none.o 379endif 380ifeq ($(EXPRINT),cppad) 381NLPILIBCXXOBJ += nlpi/exprinterpret_cppad.o 382endif 383 384ifeq ($(IPOPT),true) 385NLPILIBCXXOBJ += nlpi/nlpi_ipopt.o 386else 387NLPILIBCOBJ += nlpi/nlpi_ipopt_dummy.o 388endif 389 390ifeq ($(FILTERSQP),true) 391NLPILIBCOBJ += nlpi/nlpi_filtersqp.o 392else 393NLPILIBCOBJ += nlpi/nlpi_filtersqp_dummy.o 394endif 395 396ifeq ($(WORHP),true) 397NLPILIBCOBJ += nlpi/nlpi_worhp.o 398else 399NLPILIBCOBJ += nlpi/nlpi_worhp_dummy.o 400endif 401 402NLPILIBSHORTNAME = nlpi$(NLPILIBSHORTNAMECPPAD)$(NLPILIBSHORTNAMEIPOPT)$(NLPILIBSHORTNAMEFILTERSQP) 403 404NLPILIBNAME = $(NLPILIBSHORTNAME)-$(VERSION) 405NLPILIB = $(NLPILIBNAME).$(BASE) 406NLPILIBFILE = $(LIBDIR)/$(LIBTYPE)/lib$(NLPILIB).$(LIBEXT) 407NLPILIBOBJFILES = $(addprefix $(LIBOBJDIR)/,$(NLPILIBCOBJ)) $(addprefix $(LIBOBJDIR)/,$(NLPILIBCXXOBJ)) 408NLPILIBSCIPOBJFILES = $(addprefix $(LIBOBJDIR)/,$(NLPILIBSCIPOBJ)) 409NLPILIBSRC = $(addprefix $(SRCDIR)/,$(NLPILIBCOBJ:.o=.c)) $(addprefix $(SRCDIR)/,$(NLPILIBCXXOBJ:.o=.cpp)) 410NLPILIBLINK = $(LIBDIR)/$(LIBTYPE)/lib$(NLPILIBSHORTNAME).$(BASE).$(LIBEXT) 411NLPILIBSHORTLINK = $(LIBDIR)/$(LIBTYPE)/lib$(NLPILIBSHORTNAME).$(LIBEXT) 412ALLSRC += $(NLPILIBSRC) 413 414ifeq ($(SHARED),true) 415NLPILIBEXTLIBS = $(LIBBUILD_L)$(LIBDIR)/$(LIBTYPE) $(IPOPTLIBS) $(FILTERSQPLIBS) 416ifeq ($(IPOPT),true) 417NLPILIBEXTLIBS += $(LINKRPATH)$(realpath $(LIBDIR)/$(LIBTYPE)/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)/lib) 418endif 419ifeq ($(WORHP),true) 420NLPILIBEXTLIBS += $(LINKRPATH)$(realpath $(LIBDIR)/$(LIBTYPE)/worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT)/lib) 421endif 422endif 423 424 425#----------------------------------------------------------------------------- 426# External Libraries 427#----------------------------------------------------------------------------- 428 429ZLIBDEP := $(SRCDIR)/depend.zlib 430ZLIBSRC := $(shell cat $(ZLIBDEP)) 431 432GMPDEP := $(SRCDIR)/depend.gmp 433GMPSRC := $(shell cat $(GMPDEP)) 434 435READLINEDEP := $(SRCDIR)/depend.readline 436READLINESRC := $(shell cat $(READLINEDEP)) 437 438ZIMPLDEP := $(SRCDIR)/depend.zimpl 439ZIMPLSRC := $(shell cat $(ZIMPLDEP)) 440 441GAMSDEP := $(SRCDIR)/depend.gams 442GAMSSRC := $(shell cat $(GAMSDEP)) 443 444PARASCIPDEP := $(SRCDIR)/depend.parascip 445PARASCIPSRC := $(shell cat $(PARASCIPDEP)) 446 447ifeq ($(ZIMPL),true) 448ifeq ($(GMP),false) 449$(error ZIMPL requires the GMP to be linked. Use either ZIMPL=false or GMP=true.) 450endif 451FLAGS += -DSCIP_WITH_ZIMPL -I$(LIBDIR)/include/zimplinc $(ZIMPL_FLAGS) 452DIRECTORIES += $(LIBDIR)/include/zimplinc 453SOFTLINKS += $(LIBDIR)/include/zimplinc/zimpl 454SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).$(STATICLIBEXT) 455LPIINSTMSG += "\n -> \"zimplinc\" is a directory containing the path to the ZIMPL \"src\" directory, e.g., \"<ZIMPL-path>/src\".\n" 456LPIINSTMSG += " -> \"libzimpl.*\" is the path to the ZIMPL library, e.g., \"<ZIMPL-path>/lib/libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).$(STATICLIBEXT)\"" 457endif 458 459ifeq ($(GMP),true) 460ifeq ($(COMP),msvc) 461SOFTLINKS += $(LIBDIR)/mpir.$(ARCH) 462SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libmpir.$(ARCH).$(OPT).lib 463SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libpcre.$(ARCH).$(OPT).lib 464LPIINSTMSG += "\n -> \"mpir.$(ARCH)\" is a directory containing the mpir installation, i.e., \"mpir.$(ARCH)/gmp.h\" should exist.\n" 465LPIINSTMSG += " -> \"libmpir.*\" is the path to the MPIR library\n" 466LPIINSTMSG += " -> \"libpcre.*\" is the path to the PCRE library" 467endif 468endif 469 470ifeq ($(IPOPT),true) 471SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT) 472LPIINSTMSG += "\n -> \"ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)\" is a directory containing the ipopt installation, i.e., \"ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)/include/coin/IpIpoptApplication.hpp\", \"ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)/lib/libipopt*\", ... should exist.\n" 473endif 474 475ifeq ($(FILTERSQP),true) 476SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libfiltersqp.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 477#SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libfiltersqp.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 478SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libbqpd.$(OSTYPE).$(ARCH).$(COMP).$(STATICLIBEXT) 479#SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/libbqpd.$(OSTYPE).$(ARCH).$(COMP).$(SHAREDLIBEXT) 480LPIINSTMSG += " -> \"libfiltersqp.$(OSTYPE).$(ARCH).$(COMP).*\" is the path to the filterSQP library.\n" 481LPIINSTMSG += " -> \"libbqpd.$(OSTYPE).$(ARCH).$(COMP).*\" is the path to the BQPD library.\n" 482endif 483 484# WORHP provides only shared libraries 485ifeq ($(WORHP),true) 486SOFTLINKS += $(LIBDIR)/$(LIBTYPE)/worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT) 487LPIINSTMSG += "\n -> \"worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT)\" is a directory containing the WORHP installation, i.e., \"worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT)/include/worhp/worhp.h\" should exist.\n" 488endif 489 490ifeq ($(GAMS),true) 491GAMSDIR = $(LIBDIR)/gams.$(OSTYPE).$(ARCH).$(COMP) 492FLAGS += -DWITH_GAMS=\"$(abspath $(GAMSDIR))\" 493FLAGS += -I$(SCIPDIR)/interfaces/gams/src -I$(GAMSDIR)/apifiles/C/api 494SOFTLINKS += $(GAMSDIR) 495LPIINSTMSG += "\n -> \"$(GAMSDIR)\" is the path to the GAMS system directory" 496endif 497 498ifeq ($(SHARED),true) 499SCIPLIBEXTLIBS = $(LIBBUILD_L)$(LIBDIR)/$(LIBTYPE) 500ifeq ($(ZLIB),true) 501SCIPLIBEXTLIBS += $(ZLIB_LDFLAGS) 502endif 503ifeq ($(GMP),true) 504SCIPLIBEXTLIBS += $(GMP_LDFLAGS) 505endif 506ifeq ($(READLINE_LDFLAGS),true) 507SCIPLIBEXTLIBS += $(READLINE_LDFLAGS) 508endif 509SCIPLIBEXTLIBS += $(ZIMPLLIB) $(LINKRPATH)$(realpath $(LIBDIR)/$(LIBTYPE)) 510endif 511 512 513#----------------------------------------------------------------------------- 514# SCIP Library 515#----------------------------------------------------------------------------- 516 517SCIPLIBSHORTNAME= scip 518SCIPLIBNAME = $(SCIPLIBSHORTNAME)-$(VERSION) 519SCIPPLUGINLIBOBJ= scip/benders_default.o \ 520 scip/benderscut_feas.o \ 521 scip/benderscut_feasalt.o \ 522 scip/benderscut_int.o \ 523 scip/benderscut_nogood.o \ 524 scip/benderscut_opt.o \ 525 scip/branch_allfullstrong.o \ 526 scip/branch_cloud.o \ 527 scip/branch_distribution.o \ 528 scip/branch_fullstrong.o \ 529 scip/branch_inference.o \ 530 scip/branch_leastinf.o \ 531 scip/branch_lookahead.o \ 532 scip/branch_mostinf.o \ 533 scip/branch_multaggr.o \ 534 scip/branch_nodereopt.o \ 535 scip/branch_pscost.o \ 536 scip/branch_random.o \ 537 scip/branch_relpscost.o \ 538 scip/branch_vanillafullstrong.o \ 539 scip/cons_abspower.o \ 540 scip/compr_largestrepr.o \ 541 scip/compr_weakcompr.o \ 542 scip/concsolver_scip.o \ 543 scip/cons_and.o \ 544 scip/cons_benders.o \ 545 scip/cons_benderslp.o \ 546 scip/cons_bivariate.o \ 547 scip/cons_bounddisjunction.o \ 548 scip/cons_cardinality.o \ 549 scip/cons_conjunction.o \ 550 scip/cons_countsols.o \ 551 scip/cons_cumulative.o \ 552 scip/cons_disjunction.o \ 553 scip/cons_indicator.o \ 554 scip/cons_integral.o \ 555 scip/cons_knapsack.o \ 556 scip/cons_linear.o \ 557 scip/cons_linking.o \ 558 scip/cons_logicor.o \ 559 scip/cons_nonlinear.o \ 560 scip/cons_or.o \ 561 scip/cons_orbisack.o \ 562 scip/cons_orbitope.o \ 563 scip/cons_pseudoboolean.o \ 564 scip/cons_quadratic.o \ 565 scip/cons_setppc.o \ 566 scip/cons_soc.o \ 567 scip/cons_sos1.o \ 568 scip/cons_sos2.o \ 569 scip/cons_superindicator.o \ 570 scip/cons_symresack.o \ 571 scip/cons_varbound.o \ 572 scip/cons_xor.o \ 573 scip/cons_components.o \ 574 scip/dialog_default.o \ 575 scip/event_softtimelimit.o \ 576 scip/disp_default.o \ 577 scip/event_solvingphase.o \ 578 scip/prop_sync.o \ 579 scip/event_globalbnd.o \ 580 scip/event_estim.o \ 581 scip/heur_sync.o \ 582 scip/heur_actconsdiving.o \ 583 scip/heur_adaptivediving.o \ 584 scip/heur_bound.o \ 585 scip/heur_clique.o \ 586 scip/heur_coefdiving.o \ 587 scip/heur_completesol.o \ 588 scip/heur_conflictdiving.o \ 589 scip/heur_crossover.o \ 590 scip/heur_dins.o \ 591 scip/heur_distributiondiving.o \ 592 scip/heur_dualval.o \ 593 scip/heur_farkasdiving.o \ 594 scip/heur_feaspump.o \ 595 scip/heur_fixandinfer.o \ 596 scip/heur_fracdiving.o \ 597 scip/heur_gins.o \ 598 scip/heur_guideddiving.o \ 599 scip/heur_indicator.o \ 600 scip/heur_intdiving.o \ 601 scip/heur_intshifting.o \ 602 scip/heur_linesearchdiving.o \ 603 scip/heur_localbranching.o \ 604 scip/heur_lpface.o \ 605 scip/heur_alns.o \ 606 scip/heur_locks.o \ 607 scip/heur_mutation.o \ 608 scip/heur_multistart.o \ 609 scip/heur_mpec.o \ 610 scip/heur_nlpdiving.o \ 611 scip/heur_objpscostdiving.o \ 612 scip/heur_octane.o \ 613 scip/heur_ofins.o \ 614 scip/heur_oneopt.o \ 615 scip/heur_padm.o \ 616 scip/heur_proximity.o \ 617 scip/heur_pscostdiving.o \ 618 scip/heur_reoptsols.o \ 619 scip/heur_repair.o \ 620 scip/heur_randrounding.o \ 621 scip/heur_rens.o \ 622 scip/heur_rins.o \ 623 scip/heur_rootsoldiving.o \ 624 scip/heur_rounding.o \ 625 scip/heur_shiftandpropagate.o \ 626 scip/heur_shifting.o \ 627 scip/heur_simplerounding.o \ 628 scip/heur_subnlp.o \ 629 scip/heur_trivial.o \ 630 scip/heur_trivialnegation.o \ 631 scip/heur_trustregion.o \ 632 scip/heur_trysol.o \ 633 scip/heur_twoopt.o \ 634 scip/heur_undercover.o \ 635 scip/heur_vbounds.o \ 636 scip/heur_veclendiving.o \ 637 scip/heur_zeroobj.o \ 638 scip/heur_zirounding.o \ 639 scip/message_default.o \ 640 scip/nodesel_bfs.o \ 641 scip/nodesel_breadthfirst.o \ 642 scip/nodesel_dfs.o \ 643 scip/nodesel_estimate.o \ 644 scip/nodesel_hybridestim.o \ 645 scip/nodesel_restartdfs.o \ 646 scip/nodesel_uct.o \ 647 scip/presol_boundshift.o \ 648 scip/presol_convertinttobin.o \ 649 scip/presol_domcol.o\ 650 scip/presol_dualagg.o\ 651 scip/presol_dualcomp.o\ 652 scip/presol_dualinfer.o\ 653 scip/presol_gateextraction.o \ 654 scip/presol_implics.o \ 655 scip/presol_inttobinary.o \ 656 scip/presol_qpkktref.o \ 657 scip/presol_redvub.o \ 658 scip/presol_trivial.o \ 659 scip/presol_tworowbnd.o \ 660 scip/presol_sparsify.o \ 661 scip/presol_dualsparsify.o \ 662 scip/presol_stuffing.o \ 663 scip/prop_dualfix.o \ 664 scip/prop_genvbounds.o \ 665 scip/prop_nlobbt.o \ 666 scip/prop_obbt.o \ 667 scip/prop_probing.o \ 668 scip/prop_pseudoobj.o \ 669 scip/prop_redcost.o \ 670 scip/prop_rootredcost.o \ 671 scip/prop_symmetry.o \ 672 scip/prop_vbounds.o \ 673 scip/reader_bnd.o \ 674 scip/reader_ccg.o \ 675 scip/reader_cip.o \ 676 scip/reader_cnf.o \ 677 scip/reader_cor.o \ 678 scip/reader_dec.o \ 679 scip/reader_diff.o \ 680 scip/reader_fix.o \ 681 scip/reader_fzn.o \ 682 scip/reader_gms.o \ 683 scip/reader_lp.o \ 684 scip/reader_mps.o \ 685 scip/reader_mst.o \ 686 scip/reader_opb.o \ 687 scip/reader_osil.o \ 688 scip/reader_pip.o \ 689 scip/reader_pbm.o \ 690 scip/reader_ppm.o \ 691 scip/reader_rlp.o \ 692 scip/reader_smps.o \ 693 scip/reader_sol.o \ 694 scip/reader_sto.o \ 695 scip/reader_tim.o \ 696 scip/reader_wbo.o \ 697 scip/reader_zpl.o \ 698 scip/sepa_cgmip.o \ 699 scip/sepa_clique.o \ 700 scip/sepa_closecuts.o \ 701 scip/sepa_aggregation.o \ 702 scip/sepa_convexproj.o \ 703 scip/sepa_disjunctive.o \ 704 scip/sepa_eccuts.o \ 705 scip/sepa_gauge.o \ 706 scip/sepa_gomory.o \ 707 scip/sepa_impliedbounds.o \ 708 scip/sepa_intobj.o \ 709 scip/sepa_mcf.o \ 710 scip/sepa_oddcycle.o \ 711 scip/sepa_rapidlearning.o \ 712 scip/sepa_strongcg.o \ 713 scip/sepa_zerohalf.o \ 714 scip/table_default.o 715 716SCIPPLUGINLIBCPPOBJ = scip/presol_milp.o 717 718SCIPLIBOBJ = scip/boundstore.o \ 719 scip/branch.o \ 720 scip/bandit.o \ 721 scip/bandit_epsgreedy.o \ 722 scip/bandit_exp3.o \ 723 scip/bandit_ucb.o \ 724 scip/benders.o \ 725 scip/benderscut.o \ 726 scip/bendersdefcuts.o \ 727 scip/clock.o \ 728 scip/concsolver.o \ 729 scip/concurrent.o \ 730 scip/conflict.o \ 731 scip/conflictstore.o \ 732 scip/cons.o \ 733 scip/cutpool.o \ 734 scip/cuts.o \ 735 scip/debug.o \ 736 scip/dcmp.o \ 737 scip/dialog.o \ 738 scip/disp.o \ 739 scip/event.o \ 740 scip/fileio.o \ 741 scip/heur.o \ 742 scip/heuristics.o \ 743 scip/compr.o \ 744 scip/history.o \ 745 scip/implics.o \ 746 scip/interrupt.o \ 747 scip/intervalarith.o \ 748 scip/lp.o \ 749 scip/matrix.o \ 750 scip/mem.o \ 751 scip/misc.o \ 752 scip/misc_linear.o \ 753 scip/misc_nonlinear.o \ 754 scip/nlp.o \ 755 scip/nodesel.o \ 756 scip/paramset.o \ 757 scip/presol.o \ 758 scip/presolve.o \ 759 scip/pricestore.o \ 760 scip/pricer.o \ 761 scip/primal.o \ 762 scip/prob.o \ 763 scip/prop.o \ 764 scip/reader.o \ 765 scip/relax.o \ 766 scip/reopt.o \ 767 scip/retcode.o \ 768 scip/scip_benders.o \ 769 scip/scip_branch.o \ 770 scip/scip_compr.o \ 771 scip/scip_concurrent.o \ 772 scip/scip_conflict.o \ 773 scip/scip_cons.o \ 774 scip/scip_copy.o \ 775 scip/scip_cut.o \ 776 scip/scip_datastructures.o\ 777 scip/scip_debug.o \ 778 scip/scip_dcmp.o \ 779 scip/scip_dialog.o \ 780 scip/scip_disp.o \ 781 scip/scip_event.o \ 782 scip/scip_expr.o \ 783 scip/scip_general.o \ 784 scip/scip_heur.o \ 785 scip/scip_lp.o \ 786 scip/scip_mem.o \ 787 scip/scip_message.o \ 788 scip/scip_nlp.o \ 789 scip/scip_nodesel.o \ 790 scip/scip_nonlinear.o \ 791 scip/scip_numerics.o \ 792 scip/scip_param.o \ 793 scip/scip_presol.o \ 794 scip/scip_pricer.o \ 795 scip/scip_prob.o \ 796 scip/scip_probing.o \ 797 scip/scip_prop.o \ 798 scip/scip_randnumgen.o \ 799 scip/scip_reader.o \ 800 scip/scip_relax.o \ 801 scip/scip_reopt.o \ 802 scip/scip_sepa.o \ 803 scip/scip_sol.o \ 804 scip/scip_solve.o \ 805 scip/scip_solvingstats.o \ 806 scip/scip_table.o \ 807 scip/scip_timing.o \ 808 scip/scip_tree.o \ 809 scip/scip_validation.o \ 810 scip/scip_var.o \ 811 scip/scip_bandit.o \ 812 scip/scipbuildflags.o \ 813 scip/scipcoreplugins.o \ 814 scip/scipdefplugins.o \ 815 scip/scipgithash.o \ 816 scip/scipshell.o \ 817 scip/sepa.o \ 818 scip/sepastore.o \ 819 scip/set.o \ 820 scip/sol.o \ 821 scip/solve.o \ 822 scip/stat.o \ 823 scip/symmetry.o \ 824 scip/syncstore.o \ 825 scip/table.o \ 826 scip/tree.o \ 827 scip/treemodel.o \ 828 scip/var.o \ 829 scip/visual.o \ 830 tclique/tclique_branch.o \ 831 tclique/tclique_coloring.o \ 832 tclique/tclique_graph.o \ 833 dijkstra/dijkstra.o \ 834 xml/xmlparse.o 835 836SCIPLIB = $(SCIPLIBNAME).$(BASE) 837SCIPLIBFILE = $(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIB).$(LIBEXT) 838SCIPLIBOBJFILES = $(addprefix $(LIBOBJDIR)/,$(SCIPPLUGINLIBOBJ)) 839SCIPLIBOBJFILES += $(addprefix $(LIBOBJDIR)/,$(SCIPPLUGINLIBCPPOBJ)) 840SCIPLIBOBJFILES += $(addprefix $(LIBOBJDIR)/,$(SCIPLIBOBJ)) 841SCIPLIBSRC = $(addprefix $(SRCDIR)/,$(SCIPPLUGINLIBOBJ:.o=.c)) 842SCIPLIBSRC += $(addprefix $(SRCDIR)/,$(SCIPPLUGINLIBCPPOBJ:.o=.cpp)) 843SCIPLIBSRC += $(addprefix $(SRCDIR)/,$(SCIPLIBOBJ:.o=.c)) 844SCIPPLUGININCSRC= $(addprefix $(SRCDIR)/,$(SCIPPLUGINLIBOBJ:.o=.h)) 845SCIPPLUGININCSRC += $(addprefix $(SRCDIR)/,$(SCIPPLUGINLIBCPPOBJ:.o=.h)) 846SCIPLIBLINK = $(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIBSHORTNAME).$(BASE).$(LIBEXT) 847SCIPLIBSHORTLINK = $(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIBSHORTNAME).$(LIBEXT) 848 849# define library that contains everything 850SCIPLIBSOLVERSHORTNAME= scipsolver 851SCIPLIBSOLVERNAME = $(SCIPLIBSOLVERSHORTNAME)-$(VERSION) 852SCIPLIBSOLVER = $(SCIPLIBSOLVERNAME).$(BASE).$(LPS) 853SCIPLIBSOLVERFILE = $(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIBSOLVER).$(LIBEXT) 854SCIPLIBSOLVERLINK = $(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIBSOLVERSHORTNAME).$(BASE).$(LPS).$(LIBEXT) 855SCIPLIBSOLVERSHORTLINK =$(LIBDIR)/$(LIBTYPE)/lib$(SCIPLIBSOLVERSHORTNAME).$(LIBEXT) 856 857ifeq ($(GAMS),true) 858SCIPLIBOBJFILES += $(addprefix $(LIBOBJDIR)/scip/,gmomcc.o gevmcc.o reader_gmo.o) 859endif 860 861ALLSRC += $(SCIPLIBSRC) 862 863SCIPGITHASHFILE = $(SRCDIR)/scip/githash.c 864SCIPBUILDFLAGSFILE = $(SRCDIR)/scip/buildflags.c 865 866#----------------------------------------------------------------------------- 867# Objective SCIP Library 868#----------------------------------------------------------------------------- 869 870OBJSCIPLIBSHORTNAME= objscip 871OBJSCIPLIBNAME = $(OBJSCIPLIBSHORTNAME)-$(VERSION) 872OBJSCIPLIBOBJ = objscip/objbenders.o \ 873 objscip/objbenderscut.o \ 874 objscip/objbranchrule.o \ 875 objscip/objconshdlr.o \ 876 objscip/objdialog.o \ 877 objscip/objdisp.o \ 878 objscip/objeventhdlr.o \ 879 objscip/objheur.o \ 880 objscip/objmessagehdlr.o \ 881 objscip/objnodesel.o \ 882 objscip/objpresol.o \ 883 objscip/objpricer.o \ 884 objscip/objprobdata.o \ 885 objscip/objprop.o \ 886 objscip/objreader.o \ 887 objscip/objrelax.o \ 888 objscip/objsepa.o \ 889 objscip/objtable.o \ 890 objscip/objvardata.o 891 892OBJSCIPLIB = $(OBJSCIPLIBNAME).$(BASE) 893OBJSCIPLIBFILE = $(LIBDIR)/$(LIBTYPE)/lib$(OBJSCIPLIB).$(LIBEXT) 894OBJSCIPLIBOBJFILES= $(addprefix $(LIBOBJDIR)/,$(OBJSCIPLIBOBJ)) 895OBJSCIPLIBSRC = $(addprefix $(SRCDIR)/,$(OBJSCIPLIBOBJ:.o=.cpp)) 896OBJSCIPINCSRC = $(addprefix $(SRCDIR)/,$(OBJSCIPLIBOBJ:.o=.h)) 897OBJSCIPLIBLINK = $(LIBDIR)/$(LIBTYPE)/lib$(OBJSCIPLIBSHORTNAME).$(BASE).$(LIBEXT) 898OBJSCIPLIBSHORTLINK= $(LIBDIR)/$(LIBTYPE)/lib$(OBJSCIPLIBSHORTNAME).$(LIBEXT) 899ALLSRC += $(OBJSCIPLIBSRC) 900 901 902#----------------------------------------------------------------------------- 903# Main Program 904#----------------------------------------------------------------------------- 905 906MAINSHORTNAME = scip 907MAINNAME = $(MAINSHORTNAME)-$(VERSION) 908 909MAINOBJ = main.o 910MAINSRC = $(addprefix $(SRCDIR)/,$(MAINOBJ:.o=.c)) 911 912MAINFILE = $(BINDIR)/$(MAINNAME).$(BASE).$(LPS).$(TPI)$(EXEEXTENSION) 913MAINOBJFILES = $(addprefix $(BINOBJDIR)/,$(MAINOBJ)) 914MAINLINK = $(BINDIR)/$(MAINSHORTNAME).$(BASE).$(LPS).$(TPI)$(EXEEXTENSION) 915MAINSHORTLINK = $(BINDIR)/$(MAINSHORTNAME)$(EXEEXTENSION) 916ALLSRC += $(MAINSRC) 917 918ifeq ($(SHARED),true) 919WINLIBFILENAME = lib$(MAINNAME).$(BASE).$(LPS).dll 920else 921WINLIBFILENAME = lib$(MAINNAME).$(BASE).$(LPS).lib 922endif 923 924LINKSMARKERFILE = $(LIBDIR)/$(LIBTYPE)/linkscreated.$(LPS)-$(LPSOPT).$(OSTYPE).$(ARCH).$(COMP)$(LINKLIBSUFFIX).$(ZIMPL)-$(ZIMPLOPT).$(IPOPT)-$(IPOPTOPT).$(FILTERSQP).$(GAMS).$(SYM).$(PAPILO) 925LASTSETTINGS = $(OBJDIR)/make.lastsettings 926 927#----------------------------------------------------------------------------- 928# Rules 929#----------------------------------------------------------------------------- 930 931ifeq ($(VERBOSE),false) 932.SILENT: $(MAINFILE) $(SCIPLIBFILE) $(OBJSCIPLIBFILE) $(LPILIBFILE) $(TPILIBFILE) $(NLPILIBFILE) \ 933 $(LPILIBLINK) $(LPILIBSHORTLINK) $(TPILIBLINK) $(TPILIBSHORTLINK) $(SCIPLIBLINK) $(SCIPLIBSHORTLINK) \ 934 $(OBJSCIPLIBLINK) $(OBJSCIPLIBSHORTLINK) $(NLPILIBLINK) $(NLPILIBSHORTLINK) \ 935 $(MAINLINK) $(MAINSHORTLINK) \ 936 $(LPILIBOBJFILES) $(TPILIBOBJFILES) $(NLPILIBOBJFILES) $(SCIPLIBOBJFILES) $(OBJSCIPLIBOBJFILES) $(MAINOBJFILES) $(SYMOBJFILES) \ 937 $(SCIPLIBSOLVERFILE) $(SCIPLIBSOLVERLINK) $(SCIPLIBSOLVERSHORTLINK) 938MAKE += -s 939endif 940 941.PHONY: all 942all: libs 943 @$(MAKE) $(MAINFILE) $(MAINLINK) $(MAINSHORTLINK) 944 945.PHONY: libs 946libs: libscip libobjscip liblpi libtpi libnlpi 947ifeq ($(SHARED),true) 948 @$(MAKE) libscipsolver 949endif 950 951.PHONY: preprocess 952preprocess: checkdefines 953 @$(SHELL) -ec 'if test ! -e $(LINKSMARKERFILE) ; \ 954 then \ 955 echo "-> generating necessary links" ; \ 956 $(MAKE) -j1 $(LINKSMARKERFILE) ; \ 957 fi' 958 @$(MAKE) touchexternal 959 960.PHONY: lint 961lint: $(SCIPLIBSRC) $(OBJSCIPLIBSRC) $(LPILIBSRC) $(TPILIBSRC) $(NLPILIBSRC) $(MAINSRC) $(SYMSRC) githash 962 -rm -f lint.out 963 964 @$(SHELL) -ec 'if test -e lint/co-gcc.mak ; \ 965 then \ 966 echo "-> generating gcc-include-path lint-file" ; \ 967 cd lint; $(MAKE) -f co-gcc.mak ; \ 968 else \ 969 echo "-> lint Makefile not found"; \ 970 fi' 971ifeq ($(FILES),) 972 $(SHELL) -ec 'for i in $^; \ 973 do \ 974 echo $$i; \ 975 $(LINT) lint/main-gcc.lnt +os\(lint.out\) -u -zero \ 976 $(USRFLAGS) $(FLAGS) -I/usr/include -UNDEBUG -USCIP_WITH_READLINE -USCIP_ROUNDING_FE -D_BSD_SOURCE $$i; \ 977 done' 978else 979 $(SHELL) -ec 'for i in $(FILES); \ 980 do \ 981 echo $$i; \ 982 $(LINT) lint/main-gcc.lnt +os\(lint.out\) -u -zero \ 983 $(USRFLAGS) $(FLAGS) -I/usr/include -UNDEBUG -USCIP_WITH_READLINE -USCIP_ROUNDING_FE -D_BSD_SOURCE $$i; \ 984 done' 985endif 986 987.PHONY: pclint 988pclint: $(SCIPLIBSRC) $(OBJSCIPLIBSRC) $(LPILIBSRC) $(TPILIBSRC) $(NLPILIBSRC) $(MAINSRC) $(SYMSRC) 989 -rm -f pclint.out 990 991 @$(SHELL) -ec 'if ! test -e pclint/co-gcc.h ; \ 992 then \ 993 echo "-> running pclint configuration"; \ 994 CCPATH=`which $(CC)`; \ 995 echo "-> path to compiler: "$${CCPATH}; \ 996 cd pclint; \ 997 echo "-> running $(PCLINTCONFIG)"; \ 998 python $(PCLINTCONFIG) --compiler=$(CC) --compiler-bin=$${CCPATH} --config-output-lnt-file=co-gcc.lnt --config-output-header-file=co-gcc.h --generate-compiler-config ; \ 999 fi' 1000ifeq ($(FILES),) 1001 @$(SHELL) -ec 'echo "-> running pclint on $^..."; \ 1002 $(PCLINT) pclint/main-gcc.lnt +os\(pclint.out\) -u -zero -max_threads=$(MAXJOBS) \ 1003 $(USRFLAGS) $(FLAGS) -Ipclint -uNDEBUG -uSCIP_WITH_READLINE -uSCIP_ROUNDING_FE -D_BSD_SOURCE $^;' 1004else 1005 @$(SHELL) -ec 'echo "-> running pclint on files $(FILES) ..."; \ 1006 $(PCLINT) pclint/main-gcc.lnt +os\(pclint.out\) -u -zero -max_threads=$(MAXJOBS) \ 1007 $(USRFLAGS) $(FLAGS) -Ipclint -uNDEBUG -uSCIP_WITH_READLINE -uSCIP_ROUNDING_FE -D_BSD_SOURCE $(FILES);' 1008endif 1009 1010.PHONY: splint 1011splint: $(SCIPLIBSRC) $(OBJSCIPLIBSRC) $(LPILIBSRC) $(TPILIBSRC) $(NLPILIBSRC) $(MAINSRC) $(SYMSRC) 1012 -rm -f splint.out 1013ifeq ($(FILES),) 1014 $(SHELL) -c '$(SPLINT) -I$(SRCDIR) -I/usr/include/linux $(FLAGS) $(SPLINTFLAGS) $(filter %.c %.h,$^) >> splint.out;' 1015else 1016 $(SHELL) -c '$(SPLINT) -I$(SRCDIR) -I/usr/include/linux $(FLAGS) $(SPLINTFLAGS) $(filter %.c %.h,$(FILES)) >> splint.out;' 1017endif 1018 1019.PHONY: doc 1020doc: 1021 cd doc; $(SHELL) builddoc.sh; 1022 1023.PHONY: docpreview 1024docpreview: 1025# generates preview for a list of files 1026ifneq ($(FILES),) 1027 echo "generating doxygen preview for $(FILES)" 1028 cd doc; ( cat $(MAINSHORTNAME).dxy && echo 'FILE_PATTERNS = $(FILES)' ) | $(DOXY) - 1029else 1030 echo "please specify file(s) for which preview should be created" 1031endif 1032.PHONY: check 1033check: test 1034 1035.PHONY: test 1036test: 1037 cd check; \ 1038 $(SHELL) ./check.sh $(TEST) $(EXECUTABLE) $(SETTINGS) $(BINID) $(OUTPUTDIR) $(TIME) $(NODES) $(MEM) $(THREADS) $(FEASTOL) $(DISPFREQ) \ 1039 $(CONTINUE) $(LOCK) $(VERSION) $(LPS) $(DEBUGTOOL) $(CLIENTTMPDIR) $(REOPT) $(OPTCOMMAND) $(SETCUTOFF) $(MAXJOBS) $(VISUALIZE) $(PERMUTE) \ 1040 $(SEEDS) $(GLBSEEDSHIFT) $(STARTPERM); 1041 1042.PHONY: testcount 1043testcount: 1044 cd check; \ 1045 $(SHELL) ./check_count.sh $(TEST) $(MAINFILE) $(SETTINGS) $(notdir $(MAINFILE)).$(HOSTNAME) $(TIME) $(NODES) $(MEM) $(FEASTOL) \ 1046 $(DISPFREQ) $(CONTINUE) $(LOCK) $(VERSION) $(LPS) $(OUTPUTDIR); 1047 1048.PHONY: tags 1049tags: 1050 rm -f TAGS; ctags -e -R -h ".c.cpp.h" --exclude=".*" src/; sed -i 's!\#undef .*!!g' TAGS 1051 1052# include target to detect the current git hash 1053-include make/local/make.detectgithash 1054 1055# this empty target is needed for the SCIP release versions 1056githash:: # do not remove the double-colon 1057 1058# include local targets 1059-include make/local/make.targets 1060 1061# include install/uninstall targets 1062-include make/make.install 1063 1064# the testgams target need to come after make/local/make.targets has been included (if any), because the latter may assign a value to CLIENTTMPDIR 1065# if calling with GAMS=true, assume user wants the GAMS system that is linked in lib/gams.* 1066# if calling with GAMS=false (default), assume user has a GAMS system in the path (keeping original default behavior) 1067ifeq ($(GAMS),true) 1068 TESTGAMS = $(abspath $(GAMSDIR))/gams 1069else 1070ifeq ($(GAMS),false) 1071 TESTGAMS = gams 1072else 1073 TESTGAMS = $(GAMS) 1074endif 1075endif 1076.PHONY: testgams 1077testgams: 1078 cd check; \ 1079 $(SHELL) ./check_gamscluster.sh $(TEST) $(TESTGAMS) "$(GAMSSOLVER)" $(SETTINGS) $(OSTYPE).$(ARCH) $(TIME) $(NODES) $(MEM) "$(GAP)" \ 1080 $(THREADS) $(CONTINUE) "$(CONVERTSCIP)" local dummy dummy "$(CLIENTTMPDIR)" 1 true $(SETCUTOFF); 1081 1082$(LPILIBLINK): $(LPILIBFILE) 1083 @rm -f $@ 1084 cd $(dir $@) && $(LN_s) $(notdir $(LPILIBFILE)) $(notdir $@) 1085 1086# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1087.PHONY: $(LPILIBSHORTLINK) 1088$(LPILIBSHORTLINK): $(LPILIBFILE) 1089 @rm -f $@ 1090 cd $(dir $@) && $(LN_s) $(notdir $(LPILIBFILE)) $(notdir $@) 1091 1092$(TPILIBLINK): $(TPILIBFILE) 1093 @rm -f $@ 1094 cd $(dir $@) && $(LN_s) $(notdir $(TPILIBFILE)) $(notdir $@) 1095 1096# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1097.PHONY: $(TPILIBSHORTLINK) 1098$(TPILIBSHORTLINK): $(TPILIBFILE) 1099 @rm -f $@ 1100 cd $(dir $@) && $(LN_s) $(notdir $(TPILIBFILE)) $(notdir $@) 1101 1102$(NLPILIBLINK): $(NLPILIBFILE) 1103 @rm -f $@ 1104 cd $(dir $@) && $(LN_s) $(notdir $(NLPILIBFILE)) $(notdir $@) 1105 1106# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1107.PHONY: $(NLPILIBSHORTLINK) 1108$(NLPILIBSHORTLINK): $(NLPILIBFILE) 1109 @rm -f $@ 1110 cd $(dir $@) && $(LN_s) $(notdir $(NLPILIBFILE)) $(notdir $@) 1111 1112$(SCIPLIBLINK): $(SCIPLIBFILE) 1113 @rm -f $@ 1114 cd $(dir $@) && $(LN_s) $(notdir $(SCIPLIBFILE)) $(notdir $@) 1115 1116# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1117.PHONY: $(SCIPLIBSHORTLINK) 1118$(SCIPLIBSHORTLINK): $(SCIPLIBFILE) 1119 @rm -f $@ 1120 cd $(dir $@) && $(LN_s) $(notdir $(SCIPLIBFILE)) $(notdir $@) 1121 1122$(OBJSCIPLIBLINK): $(OBJSCIPLIBFILE) 1123 @rm -f $@ 1124 cd $(dir $@) && $(LN_s) $(notdir $(OBJSCIPLIBFILE)) $(notdir $@) 1125 1126# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1127.PHONY: $(OBJSCIPLIBSHORTLINK) 1128$(OBJSCIPLIBSHORTLINK): $(OBJSCIPLIBFILE) 1129 @rm -f $@ 1130 cd $(dir $@) && $(LN_s) $(notdir $(OBJSCIPLIBFILE)) $(notdir $@) 1131 1132$(SCIPLIBSOLVERLINK): $(SCIPLIBSOLVERFILE) 1133 @rm -f $@ 1134 cd $(dir $@) && $(LN_s) $(notdir $(SCIPLIBSOLVERFILE)) $(notdir $@) 1135 1136# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1137.PHONY: $(SCIPLIBSOLVERSHORTLINK) 1138$(SCIPLIBSOLVERSHORTLINK): $(SCIPLIBSOLVERFILE) 1139 @rm -f $@ 1140 cd $(dir $@) && $(LN_s) $(notdir $(SCIPLIBSOLVERFILE)) $(notdir $@) 1141 1142# the short link targets should be phony such that they are always updated and point to the files with last make options, even if nothing needed to be rebuilt 1143.PHONY: $(MAINSHORTLINK) 1144$(MAINLINK) $(MAINSHORTLINK): $(MAINFILE) 1145 @rm -f $@ 1146 cd $(dir $@) && $(LN_s) $(notdir $(MAINFILE)) $(notdir $@) 1147 1148$(OBJDIR): 1149 @-mkdir -p $(OBJDIR) 1150 1151$(BINOBJDIR): | $(OBJDIR) 1152 @-mkdir -p $(BINOBJDIR) 1153 1154$(LIBOBJDIR): | $(OBJDIR) 1155 @-mkdir -p $(LIBOBJDIR) 1156 1157$(LIBOBJSUBDIRS): | $(LIBOBJDIR) 1158 @-mkdir -p $(LIBOBJSUBDIRS) 1159 1160$(LIBDIR): 1161 @-mkdir -p $(LIBDIR) 1162 1163$(LIBDIR)/static: $(LIBDIR) 1164 @-mkdir -p $(LIBDIR)/static 1165 1166$(LIBDIR)/shared: $(LIBDIR) 1167 @-mkdir -p $(LIBDIR)/shared 1168 1169$(LIBDIR)/include: $(LIBDIR) 1170 @-mkdir -p $(LIBDIR)/include 1171 1172$(LIBDIR)/src: $(LIBDIR) 1173 @-mkdir -p $(LIBDIR)/src 1174 1175$(BINDIR): 1176 @-mkdir -p $(BINDIR) 1177 1178.PHONY: clean 1179clean: cleanlibs cleanbin | $(LIBOBJSUBDIRS) $(LIBOBJDIR) $(BINOBJDIR) $(OBJDIR) 1180ifneq ($(LIBOBJDIR),) 1181 @-(cd $(LIBOBJDIR) && rm -f */*.o */*.d) 1182 @-rmdir $(LIBOBJSUBDIRS) 1183 @-rmdir $(LIBOBJDIR) 1184endif 1185ifneq ($(BINOBJDIR),) 1186 @-rm -f $(BINOBJDIR)/*.o $(BINOBJDIR)/*.d && rmdir $(BINOBJDIR) 1187endif 1188ifneq ($(OBJDIR),) 1189 @-rm -f $(LASTSETTINGS) 1190 @-rmdir $(OBJDIR) 1191endif 1192 1193.PHONY: cleanlibs 1194cleanlibs: | $(LIBDIR)/$(LIBTYPE) 1195 @echo "-> remove library $(SCIPLIBFILE)" 1196 @-rm -f $(SCIPLIBFILE) $(SCIPLIBLINK) $(SCIPLIBSHORTLINK) 1197 @echo "-> remove library $(OBJSCIPLIBFILE)" 1198 @-rm -f $(OBJSCIPLIBFILE) $(OBJSCIPLIBLINK) $(OBJSCIPLIBSHORTLINK) 1199 @echo "-> remove library $(LPILIBFILE)" 1200 @-rm -f $(LPILIBFILE) $(LPILIBLINK) $(LPILIBSHORTLINK) 1201 @echo "-> remove library $(TPILIBFILE)" 1202 @-rm -f $(TPILIBFILE) $(TPILIBLINK) $(TPILIBSHORTLINK) 1203 @echo "-> remove library $(NLPILIBFILE)" 1204 @-rm -f $(NLPILIBFILE) $(NLPILIBLINK) $(NLPILIBSHORTLINK) 1205 @echo "-> remove library $(SCIPLIBSOLVERFILE)" 1206 @-rm -f $(SCIPLIBSOLVERFILE) $(SCIPLIBSOLVERLINK) $(SCIPLIBSOLVERSHORTLINK) 1207 1208.PHONY: cleanbin 1209cleanbin: | $(BINDIR) 1210 @echo "-> remove binary $(MAINFILE)" 1211 @-rm -f $(MAINFILE) $(MAINLINK) $(MAINSHORTLINK) 1212 1213depend: 1214# We explicitely add all lpi's here, since the content of depend.lpscheck should be independent of the currently selected LPI, 1215# but contain all LPI's that use the SCIP_WITH_LPSCHECK define. 1216 @echo `grep -l "SCIP_WITH_LPSCHECK" $(SCIPLIBSRC) $(OBJSCIPLIBSRC) $(MAINSRC) $(NLPILIBSRC) src/lpi/lpi*.{c,cpp}` >$(LPSCHECKDEP) 1217 @echo `grep -l "SCIP_WITH_ZLIB" $(ALLSRC)` >$(ZLIBDEP) 1218 @echo `grep -l "SCIP_WITH_GMP" $(ALLSRC)` >$(GMPDEP) 1219 @echo `grep -l "SCIP_WITH_READLINE" $(ALLSRC)` >$(READLINEDEP) 1220 @echo `grep -l "SCIP_WITH_ZIMPL" $(ALLSRC)` >$(ZIMPLDEP) 1221 @echo `grep -l "WITH_GAMS" $(ALLSRC)` >$(GAMSDEP) 1222 @echo `grep -l "NPARASCIP" $(ALLSRC)` >$(PARASCIPDEP) 1223 1224# do not attempt to include .d files if there will definitely be any (empty DFLAGS), because it slows down the build on Windows considerably 1225ifneq ($(DFLAGS),) 1226-include $(MAINOBJFILES:.o=.d) 1227-include $(SCIPLIBOBJFILES:.o=.d) 1228-include $(OBJSCIPOBJFILES:.o=.d) 1229-include $(LPILIBOBJFILES:.o=.d) 1230-include $(TPILIBOBJFILES:.o=.d) 1231-include $(NLPILIBOBJFILES:.o=.d) 1232else 1233ifeq ($(VERBOSE),true) 1234$(info No compilation dependencies. If changing header files, do a make clean before building.) 1235endif 1236endif 1237 1238# make binary 1239$(MAINFILE): $(MAINOBJFILES) $(SCIPLIBFILE) $(OBJSCIPLIBFILE) $(LPILIBFILE) $(TPILIBFILE) $(NLPILIBFILE) | $(BINDIR) $(BINOBJDIR) $(LIBOBJSUBDIRS) 1240 @echo "-> linking $@" 1241ifeq ($(LINKER),C) 1242 $(LINKCC) $(MAINOBJFILES) $(LINKCCSCIPALL) $(LINKCC_o)$@ \ 1243 || ($(MAKE) errorhints && false) 1244endif 1245ifeq ($(LINKER),CPP) 1246 $(LINKCXX) $(MAINOBJFILES) $(LINKCCSCIPALL) $(LINKCXX_o)$@ \ 1247 || ($(MAKE) errorhints && false) 1248endif 1249 1250.PHONY: libscip 1251libscip: preprocess 1252 @$(MAKE) $(SCIPLIBFILE) $(SCIPLIBLINK) $(SCIPLIBSHORTLINK) 1253 1254$(SCIPLIBFILE): $(SCIPLIBOBJFILES) $(SYMOBJFILES) | $(LIBDIR)/$(LIBTYPE) $(LIBOBJSUBDIRS) 1255 @echo "-> generating library $@" 1256 -rm -f $@ 1257 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(SCIPLIBOBJFILES) $(SYMOBJFILES) $(SCIPLIBEXTLIBS) 1258ifneq ($(RANLIB),) 1259 $(RANLIB) $@ 1260endif 1261 1262.PHONY: libobjscip 1263libobjscip: preprocess 1264 @$(MAKE) $(OBJSCIPLIBFILE) $(OBJSCIPLIBLINK) $(OBJSCIPLIBSHORTLINK) 1265 1266$(OBJSCIPLIBFILE): $(OBJSCIPLIBOBJFILES) | $(LIBOBJSUBDIRS) $(LIBDIR)/$(LIBTYPE) 1267 @echo "-> generating library $@" 1268 -rm -f $@ 1269 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(OBJSCIPLIBOBJFILES) 1270ifneq ($(RANLIB),) 1271 $(RANLIB) $@ 1272endif 1273 1274.PHONY: liblpi 1275liblpi: preprocess 1276 @$(MAKE) $(LPILIBFILE) $(LPILIBLINK) $(LPILIBSHORTLINK) 1277 1278$(LPILIBFILE): $(LPILIBOBJFILES) | $(LIBOBJSUBDIRS) $(LIBDIR)/$(LIBTYPE) 1279 @echo "-> generating library $@" 1280 -rm -f $@ 1281 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(LPILIBOBJFILES) $(LPILIBEXTLIBS) 1282ifneq ($(RANLIB),) 1283 $(RANLIB) $@ 1284endif 1285 1286.PHONY: libnlpi 1287libnlpi: preprocess 1288 @$(MAKE) $(NLPILIBFILE) $(NLPILIBLINK) $(NLPILIBSHORTLINK) 1289 1290$(NLPILIBFILE): $(NLPILIBOBJFILES) $(NLPILIBSCIPOBJFILES) | $(LIBOBJSUBDIRS) $(LIBDIR)/$(LIBTYPE) 1291 @echo "-> generating library $@" 1292 -rm -f $@ 1293 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(NLPILIBOBJFILES) $(NLPILIBSCIPOBJFILES) $(NLPILIBEXTLIBS) 1294ifneq ($(RANLIB),) 1295 $(RANLIB) $@ 1296endif 1297 1298.PHONY: libtpi 1299libtpi: preprocess 1300 @$(MAKE) $(TPILIBFILE) $(TPILIBLINK) $(TPILIBSHORTLINK) 1301 1302$(TPILIBFILE): $(TPILIBOBJFILES) | $(LIBOBJSUBDIRS) $(LIBDIR)/$(LIBTYPE) 1303 @echo "-> generating library $@" 1304 -rm -f $@ 1305 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(TPILIBOBJFILES) 1306ifneq ($(RANLIB),) 1307 $(RANLIB) $@ 1308endif 1309 1310.PHONY: libscipsolver 1311libscipsolver: preprocess 1312 @$(MAKE) $(SCIPLIBSOLVERFILE) $(SCIPLIBSOLVERLINK) $(SCIPLIBSOLVERSHORTLINK) 1313 1314$(SCIPLIBSOLVERFILE): $(SCIPLIBOBJFILES) $(NLPILIBOBJFILES) $(LPILIBOBJFILES) $(TPILIBOBJFILES) $(SYMOBJFILES) $(OBJSCIPLIBOBJFILES) | $(LIBDIR)/$(LIBTYPE) $(LIBOBJSUBDIRS) 1315 @echo "-> generating library $@" 1316 -rm -f $@ 1317ifeq ($(SHARED),false) 1318 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(SCIPLIBOBJFILES) $(NLPILIBOBJFILES) $(LPILIBOBJFILES) $(TPILIBOBJFILES) $(SYMOBJFILES) $(OBJSCIPLIBOBJFILES) 1319ifneq ($(RANLIB),) 1320 $(RANLIB) $@ 1321endif 1322else 1323 $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$@ $(SCIPLIBOBJFILES) $(NLPILIBOBJFILES) $(LPILIBOBJFILES) $(LPILIBEXTLIBS) $(NLPILIBEXTLIBS) $(TPILIBOBJFILES) $(SYMOBJFILES) $(OBJSCIPLIBOBJFILES) $(SCIPLIBEXTLIBS) \ 1324 $(LPSLDFLAGS) $(LDFLAGS) $(LINKRPATH)$(SCIPREALPATH)/$(LIBDIR)/shared 1325endif 1326 1327$(BINOBJDIR)/%.o: $(SRCDIR)/%.c | $(BINOBJDIR) 1328 @echo "-> compiling $@" 1329 $(CC) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CFLAGS) $(DFLAGS) $(TPICFLAGS) $(CC_c)$< $(CC_o)$@ 1330 1331$(BINOBJDIR)/%.o: $(SRCDIR)/%.cpp | $(BINOBJDIR) 1332 @echo "-> compiling $@" 1333 $(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) $(DFLAGS) $(TPICFLAGS) $(CXX_c)$< $(CXX_o)$@ 1334 1335$(LIBOBJDIR)/%.o: $(SRCDIR)/%.c | $(LIBOBJDIR) $(LIBOBJSUBDIRS) 1336 @echo "-> compiling $@" 1337 $(CC) $(FLAGS) $(OFLAGS) $(LIBOFLAGS) $(CFLAGS) $(DFLAGS) $(TPICFLAGS) $(CC_c)$< $(CC_o)$@ 1338 1339# add special target for papilo to avoid sanitizers (leading to false positives in TBB) 1340ifeq ($(SANITIZE),true) 1341$(LIBOBJDIR)/scip/presol_milp.o: $(SRCDIR)/scip/presol_milp.cpp | $(LIBOBJDIR) $(LIBOBJSUBDIRS) 1342 @echo "-> compiling $@" 1343 $(CXX) $(FLAGS) $(OFLAGS) $(LIBOFLAGS) $(CXXFLAGS) $(DFLAGS) $(TPICFLAGS) $(CXX_c)$< $(CXX_o)$@ -fno-sanitize=all 1344endif 1345 1346$(LIBOBJDIR)/%.o: $(SRCDIR)/%.cpp | $(LIBOBJDIR) $(LIBOBJSUBDIRS) 1347 @echo "-> compiling $@" 1348 $(CXX) $(FLAGS) $(OFLAGS) $(LIBOFLAGS) $(CXXFLAGS) $(DFLAGS) $(TPICFLAGS) $(CXX_c)$< $(CXX_o)$@ 1349 1350ifeq ($(GAMS),true) 1351$(LIBOBJDIR)/scip/%.o: $(GAMSDIR)/apifiles/C/api/%.c | $(LIBOBJDIR) 1352 @echo "-> compiling $@" 1353 $(CC) $(FLAGS) $(OFLAGS) $(LIBOFLAGS) $(CFLAGS) $(CC_c)$< $(CC_o)$@ 1354$(LIBOBJDIR)/scip/%.o: $(SRCDIR)/../interfaces/gams/src/%.c | $(LIBOBJDIR) 1355 @echo "-> compiling $@" 1356 $(CC) $(FLAGS) $(OFLAGS) $(LIBOFLAGS) $(CFLAGS) $(CC_c)$< $(CC_o)$@ 1357endif 1358 1359-include $(LASTSETTINGS) 1360 1361.PHONY: windowslib 1362windowslib: $(SCIPLIBOBJFILES) $(MAINOBJFILES) $(LPILIBOBJFILES) $(NLPILIBOBJFILES) $(OBJSCIPLIBOBJFILES) $(TPILIBOBJFILES) | $(LIBOBJSUBDIRS) $(LIBDIR)/$(LIBTYPE) 1363 @echo "-> generating Windows library $@" 1364ifeq ($(SHARED),true) 1365 $(LINKCC) $(LIBBUILDFLAGS) $(LINKCC_L)$(LIBDIR)/$(LIBTYPE) $(LIBBUILD_o)$(LIBDIR)/$(LIBTYPE)/$(WINLIBFILENAME) \ 1366 $(SCIPLIBOBJFILES) $(OBJSCIPLIBOBJFILES) $(NLPILIBOBJFILES) $(LPILIBOBJFILES) $(TPILIBOBJFILES) \ 1367 $(LPSLDFLAGS) $(LDFLAGS) 1368else 1369 $(LIBBUILD) $(LIBBUILDFLAGS) $(LINKCC_L)$(LIBDIR)/$(LIBTYPE) $(LIBBUILD_o)$(LIBDIR)/$(LIBTYPE)/$(WINLIBFILENAME) \ 1370 $(SCIPLIBOBJFILES) $(OBJSCIPLIBOBJFILES) $(NLPILIBOBJFILES) $(LPILIBOBJFILES) $(TPILIBOBJFILES) \ 1371 $(LPSLDFLAGS) $(LDFLAGS) 1372endif 1373 1374.PHONY: touchexternal 1375touchexternal: $(ZLIBDEP) $(GMPDEP) $(READLINEDEP) $(ZIMPLDEP) $(GAMSDEP) $(LPSCHECKDEP) $(PARASCIPDEP) | $(LIBOBJDIR) 1376ifeq ($(TOUCHLINKS),true) 1377 @-touch $(ZLIBSRC) 1378 @-touch $(GMPSRC) 1379 @-touch $(READLINESRC) 1380 @-touch $(ZIMPLSRC) 1381 @-touch $(GAMSSRC) 1382 @-touch $(LPSCHECKSRC) 1383 @-touch $(LPILIBSRC) 1384 @-touch $(NLPILIBSRC) 1385endif 1386ifneq ($(SCIPGITHASH),$(LAST_SCIPGITHASH)) 1387 @$(MAKE) githash 1388endif 1389 @$(SHELL) -ec 'if test ! -e $(SCIPGITHASHFILE) ; \ 1390 then \ 1391 echo "-> generating $(SCIPGITHASHFILE)" ; \ 1392 $(MAKE) githash ; \ 1393 fi' 1394ifneq ($(subst \\n,\n,$(BUILDFLAGS)),$(LAST_BUILDFLAGS)) 1395 @echo "#define SCIP_BUILDFLAGS \"$(BUILDFLAGS)\"" > $(SCIPBUILDFLAGSFILE) 1396endif 1397ifneq ($(ZLIB),$(LAST_ZLIB)) 1398 @-touch $(ZLIBSRC) 1399endif 1400ifneq ($(GMP),$(LAST_GMP)) 1401 @-touch $(GMPSRC) 1402endif 1403ifneq ($(READLINE),$(LAST_READLINE)) 1404 @-touch $(READLINESRC) 1405endif 1406ifneq ($(ZIMPL),$(LAST_ZIMPL)) 1407 @-touch $(ZIMPLSRC) 1408endif 1409ifneq ($(IPOPT),$(LAST_IPOPT)) 1410 @-touch $(NLPILIBSRC) 1411endif 1412ifneq ($(WORHP),$(LAST_WORHP)) 1413 @-touch $(NLPILIBSRC) 1414endif 1415ifneq ($(GAMS),$(LAST_GAMS)) 1416 @-touch $(GAMSSRC) 1417endif 1418ifneq ($(SYM),$(LAST_SYM)) 1419 @-touch $(SYMSRC) 1420endif 1421ifneq ($(LPSCHECK),$(LAST_LPSCHECK)) 1422 @-touch $(LPSCHECKSRC) 1423endif 1424ifneq ($(PARASCIP),$(LAST_PARASCIP)) 1425 @-touch $(PARASCIPSRC) 1426endif 1427ifneq ($(USRFLAGS),$(LAST_USRFLAGS)) 1428 @-touch $(ALLSRC) 1429endif 1430ifneq ($(USROFLAGS),$(LAST_USROFLAGS)) 1431 @-touch $(ALLSRC) 1432endif 1433ifneq ($(USRCFLAGS),$(LAST_USRCFLAGS)) 1434 @-touch $(ALLSRC) 1435endif 1436ifneq ($(USRCXXFLAGS),$(LAST_USRCXXFLAGS)) 1437 @-touch $(ALLSRC) 1438endif 1439ifneq ($(USRLDFLAGS),$(LAST_USRLDFLAGS)) 1440 @-touch -c $(SCIPLIBOBJFILES) $(LPILIBOBJFILES) $(TPILIBOBJFILES) $(NLPILIBOBJFILES) $(TPILIBOBJFILES) $(MAINOBJFILES) 1441endif 1442ifneq ($(USRARFLAGS),$(LAST_USRARFLAGS)) 1443 @-touch -c $(SCIPLIBOBJFILES) $(OBJSCIPLIBOBJFILES) $(LPILIBOBJFILES) $(NLPILIBOBJFILES) $(TPILIBOBJFILES) $(NLPILIBSCIPOBJFILES) 1444endif 1445ifneq ($(NOBLKMEM),$(LAST_NOBLKMEM)) 1446 @-touch -c $(ALLSRC) 1447endif 1448ifneq ($(NOBUFMEM),$(LAST_NOBUFMEM)) 1449 @-touch -c $(ALLSRC) 1450endif 1451ifneq ($(NOBLKBUFMEM),$(LAST_NOBLKBUFMEM)) 1452 @-touch -c $(ALLSRC) 1453endif 1454ifneq ($(SANITIZE),$(LAST_SANITIZE)) 1455 @-touch -c $(ALLSRC) 1456endif 1457ifneq ($(TPI),$(LAST_TPI)) 1458 @-touch -c $(ALLSRC) 1459endif 1460ifneq ($(DEBUGSOL),$(LAST_DEBUGSOL)) 1461 @-touch -c $(ALLSRC) 1462endif 1463ifneq ($(PAPILO),$(LAST_PAPILO)) 1464 @-touch -c $(ALLSRC) 1465endif 1466 @-rm -f $(LASTSETTINGS) 1467 @echo "LAST_BUILDFLAGS=\"$(BUILDFLAGS)\"" >> $(LASTSETTINGS) 1468 @echo "LAST_SCIPGITHASH=$(SCIPGITHASH)" >> $(LASTSETTINGS) 1469 @echo "LAST_ZLIB=$(ZLIB)" >> $(LASTSETTINGS) 1470 @echo "LAST_GMP=$(GMP)" >> $(LASTSETTINGS) 1471 @echo "LAST_READLINE=$(READLINE)" >> $(LASTSETTINGS) 1472 @echo "LAST_ZIMPL=$(ZIMPL)" >> $(LASTSETTINGS) 1473 @echo "LAST_IPOPT=$(IPOPT)" >> $(LASTSETTINGS) 1474 @echo "LAST_WORHP=$(WORHP)" >> $(LASTSETTINGS) 1475 @echo "LAST_GAMS=$(GAMS)" >> $(LASTSETTINGS) 1476 @echo "LAST_SYM=$(SYM)" >> $(LASTSETTINGS) 1477 @echo "LAST_PARASCIP=$(PARASCIP)" >> $(LASTSETTINGS) 1478 @echo "LAST_LPSCHECK=$(LPSCHECK)" >> $(LASTSETTINGS) 1479 @echo "LAST_USRFLAGS=$(USRFLAGS)" >> $(LASTSETTINGS) 1480 @echo "LAST_USROFLAGS=$(USROFLAGS)" >> $(LASTSETTINGS) 1481 @echo "LAST_USRCFLAGS=$(USRCFLAGS)" >> $(LASTSETTINGS) 1482 @echo "LAST_USRCXXFLAGS=$(USRCXXFLAGS)" >> $(LASTSETTINGS) 1483 @echo "LAST_USRLDFLAGS=$(USRLDFLAGS)" >> $(LASTSETTINGS) 1484 @echo "LAST_USRARFLAGS=$(USRARFLAGS)" >> $(LASTSETTINGS) 1485 @echo "LAST_NOBLKMEM=$(NOBLKMEM)" >> $(LASTSETTINGS) 1486 @echo "LAST_NOBUFMEM=$(NOBUFMEM)" >> $(LASTSETTINGS) 1487 @echo "LAST_NOBLKBUFMEM=$(NOBLKBUFMEM)" >> $(LASTSETTINGS) 1488 @echo "LAST_SANITIZE=$(SANITIZE)" >> $(LASTSETTINGS) 1489 @echo "LAST_TPI=$(TPI)" >> $(LASTSETTINGS) 1490 @echo "LAST_DEBUGSOL=$(DEBUGSOL)" >> $(LASTSETTINGS) 1491 @echo "LAST_PAPILO=$(PAPILO)" >> $(LASTSETTINGS) 1492 1493$(LINKSMARKERFILE): 1494 @$(MAKE) links 1495 1496.PHONY: links 1497links: | $(LIBDIR)/static $(LIBDIR)/shared $(LIBDIR)/include $(DIRECTORIES) echosoftlinks $(SOFTLINKS) 1498 @rm -f $(LINKSMARKERFILE) 1499 @echo "this is only a marker" > $(LINKSMARKERFILE) 1500 1501.PHONY: echosoftlinks 1502echosoftlinks: 1503 @echo 1504 @echo "- Current settings: LPS=$(LPS) OSTYPE=$(OSTYPE) ARCH=$(ARCH) COMP=$(COMP) SHARED=$(SHARED) SUFFIX=$(LINKLIBSUFFIX) ZIMPL=$(ZIMPL) ZIMPLOPT=$(ZIMPLOPT) IPOPT=$(IPOPT) IPOPTOPT=$(IPOPTOPT) WORHP=$(WORHP) WORHPOPT=$(WORHPOPT) FILTERSQP=$(FILTERSQP) EXPRINT=$(EXPRINT) GAMS=$(GAMS) SYM=$(SYM)" 1505 @echo 1506 @echo "* SCIP needs some softlinks to external programs, in particular, LP-solvers." 1507 @echo "* Please insert the paths to the corresponding directories/libraries below." 1508 @echo "* The links will be installed in the 'lib/include' and 'lib/$(LIBTYPE)' directories." 1509 @echo "* For more information and if you experience problems see the INSTALL file." 1510 @echo 1511 @echo -e $(LPIINSTMSG) 1512 1513$(DIRECTORIES): 1514 @echo 1515 @echo "- creating directory \"$@\"" 1516 @-mkdir -p $@ 1517 1518 1519# Create softlinks for external libraries. The user can enter the 1520# filename and the link is created in the corresponding directories 1521# (lib/include, lib/shared, lib/static). 1522# 1523# We also test whether older links in lib/ still exist. In later 1524# releases this feature can be removed. 1525.PHONY: $(SOFTLINKS) 1526$(SOFTLINKS): 1527ifeq ($(MAKESOFTLINKS), true) 1528 @$(SHELL) -ec 'if test ! -e $@ ; \ 1529 then \ 1530 DIRNAME=`dirname $@` ; \ 1531 echo ; \ 1532 echo "> Enter soft-link target file or directory for \"$@\" (return if not needed): " ; \ 1533 echo -n "> " ; \ 1534 cd $$DIRNAME ; \ 1535 eval $(READ) TARGET ; \ 1536 cd $(SCIPREALPATH) ; \ 1537 if test "$$TARGET" != "" ; \ 1538 then \ 1539 echo "-> creating softlink \"$@\" -> \"$$TARGET\"" ; \ 1540 rm -f $@ ; \ 1541 $(LN_s) $$TARGET $@ ; \ 1542 else \ 1543 echo "* skipped creation of softlink \"$@\". Call \"make links\" if needed later." ; \ 1544 fi ; \ 1545 FILENAME=$@ ; \ 1546 FNAME=$${FILENAME#lib/static} ; \ 1547 FNAME=$${FNAME#lib/include} ; \ 1548 FNAME="lib"$$FNAME ; \ 1549 if test -e $$FNAME ; \ 1550 then \ 1551 echo ; \ 1552 echo "The link "$$FNAME" still exists. Consider removing it." ; \ 1553 fi ; \ 1554 echo ; \ 1555 fi' 1556endif 1557 1558.PHONY: checkdefines 1559checkdefines: 1560ifeq ($(LPILIBOBJ),) 1561 $(error invalid LP solver selected: LPS=$(LPS). Possible options are: $(LPSOPTIONS)) 1562endif 1563ifneq ($(TPI),none) 1564ifneq ($(TPI),omp) 1565ifneq ($(TPI),tny) 1566 $(error invalid TPI flag selected: TPI=$(TPI). Possible options are: $(TPIOPTIONS)) 1567endif 1568endif 1569endif 1570ifneq ($(GMP),true) 1571ifneq ($(GMP),false) 1572 $(error invalid GMP flag selected: GMP=$(GMP). Possible options are: true false) 1573endif 1574endif 1575ifneq ($(ZIMPL),true) 1576ifneq ($(ZIMPL),false) 1577 $(error invalid ZIMPL flag selected: ZIMPL=$(ZIMPL). Possible options are: true false auto) 1578endif 1579endif 1580ifneq ($(GAMS),true) 1581ifneq ($(GAMS),false) 1582 $(error invalid GAMS flag selected: GAMS=$(GAMS). Possible options are: true false) 1583endif 1584endif 1585ifneq ($(IPOPT),true) 1586ifneq ($(IPOPT),false) 1587 $(error invalid IPOPT flag selected: IPOPT=$(IPOPT). Possible options are: true false) 1588endif 1589endif 1590ifneq ($(FILTERSQP),true) 1591ifneq ($(FILTERSQP),false) 1592 $(error invalid FILTERSQP flag selected: FILTERSQP=$(FILTERSQP). Possible options are: true false) 1593endif 1594endif 1595ifneq ($(WORHP),true) 1596ifneq ($(WORHP),false) 1597 $(error invalid WORHP flag selected: WORHP=$(WORHP). Possible options are: true false) 1598endif 1599endif 1600ifneq ($(READLINE),true) 1601ifneq ($(READLINE),false) 1602 $(error invalid READLINE flag selected: READLINE=$(READLINE). Possible options are: true false) 1603endif 1604endif 1605ifneq ($(ZLIB),true) 1606ifneq ($(ZLIB),false) 1607 $(error invalid ZLIB flag selected: ZLIB=$(ZLIB). Possible options are: true false) 1608endif 1609endif 1610ifneq ($(PARASCIP),true) 1611ifneq ($(PARASCIP),false) 1612 $(error invalid PARASCIP flag selected: PARASCIP=$(PARASCIP). Possible options are: true false) 1613endif 1614endif 1615ifeq ($(SHARED),true) 1616ifeq ($(COMP),msvc) 1617 $(error invalid flags selected: SHARED=$(SHARED) and COMP=$(COMP). Please use 'make dll' to generate a dynamic library with MSVC) 1618endif 1619endif 1620ifneq ($(SYM),bliss) 1621ifneq ($(SYM),none) 1622 $(error invalid SYM flag selected: SYM=$(SYM). Possible options are: $(SYMOPTIONS)) 1623endif 1624endif 1625ifneq ($(PAPILO),true) 1626ifneq ($(PAPILO),false) 1627 $(error invalid PAPILO flag selected: PAPILO=$(PAPILO). Possible options are: true false) 1628endif 1629endif 1630 1631.PHONY: errorhints 1632errorhints: 1633ifeq ($(READLINE),true) 1634 @echo "build failed with READLINE=true: if readline is not available, try building with READLINE=false" 1635endif 1636ifeq ($(ZLIB),true) 1637 @echo "build failed with ZLIB=true: if ZLIB is not available, try building with ZLIB=false" 1638endif 1639ifeq ($(GMP),true) 1640 @echo "build failed with GMP=true: if GMP is not available, try building with GMP=false (note that this will deactivate Zimpl support)" 1641endif 1642ifeq ($(GMP),false) 1643ifeq ($(LPS),spx1) 1644 @echo "build failed with GMP=false and LPS=spx1: use GMP=true or make sure that SoPlex is also built without GMP support (make GMP=false)" 1645endif 1646ifeq ($(LPS),spx2) 1647 @echo "build failed with GMP=false and LPS=spx2: use GMP=true or make sure that SoPlex is also built without GMP support (make GMP=false)" 1648endif 1649endif 1650 1651.PHONY: help 1652help: 1653 @echo "Use the SCIP makefile system." 1654 @echo 1655 @echo " The main options for the SCIP makefile system are as follows:" 1656 @echo 1657 @echo " General options:" 1658 @echo " - OPT={dbg|opt}: Use debug or optimized (default) mode, respectively." 1659 @echo " - LPS={clp|cpx|grb|glop|msk|qso|spx|xprs|none}: Determine LP-solver." 1660 @echo " clp: COIN-OR Clp LP-solver" 1661 @echo " cpx: CPLEX LP-solver" 1662 @echo " glop: Glop LP-solver" 1663 @echo " grb: Gurobi LP-solver" 1664 @echo " msk: Mosek LP-solver" 1665 @echo " qso: QSopt LP-solver" 1666 @echo " spx: old SoPlex LP-solver (for versions < 2)" 1667 @echo " spx2: new SoPlex LP-solver (default) (from version 2)" 1668 @echo " xprs: XPress LP-solver" 1669 @echo " none: no LP-solver" 1670 @echo " - COMP={clang|gnu|intel}: Determine compiler." 1671 @echo " - TPI={none|omp|tny}: Determine parallel interface for concurrent solve (default: none)." 1672 @echo " - SHARED={true|false}: Build shared libraries or not (default)." 1673 @echo 1674 @echo " More detailed options:" 1675 @echo " - ZIMPL=<true|false>: Turn ZIMPL support on (default) or off." 1676 @echo " - ZIMPLOPT=<dbg|opt>: Use debug or optimized (default) mode for ZIMPL." 1677 @echo " - LPSOPT=<dbg|opt>: Use debug or optimized (default) mode for LP-solver (SoPlex and Clp only)." 1678 @echo " - READLINE=<true|false>: Turns support via the readline library on (default) or off." 1679 @echo " - IPOPT=<true|false>: Turns support of IPOPT on or off (default)." 1680 @echo " - EXPRINT=<cppad|none>: Use CppAD as expressions interpreter (default) or no expressions interpreter." 1681 @echo " - GAMS=<true|false>: To enable or disable (default) reading functionality in GAMS reader (needs GAMS)." 1682 @echo " - SYM=<none|bliss>: To choose type of symmetry handling." 1683 @echo " - NOBLKMEM=<true|false>: Turn off block memory or on (default)." 1684 @echo " - NOBUFMEM=<true|false>>: Turn off buffer memory or on (default)." 1685 @echo " - NOBLKBUFMEM=<true|false>: Turn usage of internal memory functions off or on (default)." 1686 @echo " - VERBOSE=<true|false>: Turn on verbose messages of makefile or off (default)." 1687 @echo 1688 @echo " Main targets:" 1689 @echo " - all (default): Build SCIP libraries and binary." 1690 @echo " - libscipsolver: Build standalone SCIP library." 1691 @echo " - libscip: Build library for the main part of SCIP." 1692 @echo " - libobjscip: Build library for the C++-interface of SCIP." 1693 @echo " - liblpi: Build library for the LP interface in SCIP." 1694 @echo " - libnlpi: Build library for the NLP interface in SCIP." 1695 @echo " - libtpi: Build library for the parallel task interface in SCIP." 1696 @echo " - links: Reconfigures the links in the \"lib\" directory." 1697 @echo " - doc: Creates documentation in the \"doc\" directory." 1698 @echo " - libs: Create all SCIP libraries." 1699 @echo " - lint: Run lint on all SCIP files. (Needs flexelint.)" 1700 @echo " - pclint: Run pclint on all SCIP files. (Needs pclint.)" 1701 @echo " - splint: Run splint on all C SCIP files. (Needs splint.)" 1702 @echo " - clean: Removes all object files." 1703 @echo " - cleanlibs: Remove all SCIP libraries." 1704 @echo " - depend: Updates dependencies files. This is only needed if you modify SCIP source." 1705 @echo " - tags: Creates TAGS file that can be used in (x)emacs." 1706 @echo " - check or test: Runs the check/test script, see the online documentation." 1707 1708# --- EOF --------------------------------------------------------------------- 1709# DO NOT DELETE 1710