#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #* * #* This file is part of the program and library * #* SCIP --- Solving Constraint Integer Programs * #* * #* Copyright (C) 2002-2016 Konrad-Zuse-Zentrum * #* fuer Informationstechnik Berlin * #* * #* SCIP is distributed under the terms of the ZIB Academic Licence. * #* * #* You should have received a copy of the ZIB Academic License * #* along with SCIP; see the file COPYING. If not email to scip@zib.de. * #* * #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #@file Makefile.doit #@brief SCIP Optimization Suite Makefile #@author Tobias Achterberg #@author Ambros Gleixner #@author Gerald Gamrath #@author Matthias Miltenberger BASEDIR := $(CURDIR) LIBS = DIRECTORIES = SOFTLINKS = #----------------------------------------------------------------------------- # include SCIP make environment #----------------------------------------------------------------------------- include $(SCIPDIR)/make/make.project MAKESOFTLINKS = true ifeq ($(LPS), spx) ifeq ($(IPOPT), false) MAKESOFTLINKS = false endif endif #----------------------------------------------------------------------------- # SCIPOPT library settings #----------------------------------------------------------------------------- SCIPOPTNAME = scipopt-$(VERSION) SCIPOPTLIB = $(SCIPOPTNAME).$(BASE) SCIPOPTLIBFILE = lib/lib$(SCIPOPTLIB).$(LIBEXT) SCIPOPTLIBSHORT = libscipopt.$(LIBEXT) SCIPOPTOBJFILES = obj/*.o SCIPOPTOBJFILES += $(SCIPDIR)/$(LIBOBJDIR)/objscip/*.o ifeq ($(LPS),spx) SCIPOPTOBJFILES += $(SOPLEXDIR)/obj/O.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT)/lib/*o endif ifeq ($(ZIMPL),true) SCIPOPTOBJFILES += obj/zimpl/*.o endif ifeq ($(LIBBUILD),$(LINKCC)) LIBBUILD = $(LINKCXX) endif #----------------------------------------------------------------------------- # GCG environment #----------------------------------------------------------------------------- ifneq ($(GCGDIR),) GCGDIRECTORIES = $(GCGDIR)/$(LIBDIR) GCGSCIPLINK = $(GCGDIR)/$(LIBDIR)/scip endif #----------------------------------------------------------------------------- # UG environment #----------------------------------------------------------------------------- ifneq ($(UGDIR),) UGDIRECTORIES = $(UGDIR)/$(LIBDIR) UGSCIPLINK = $(UGDIR)/$(LIBDIR)/scip endif #----------------------------------------------------------------------------- # SOPLEX environment #----------------------------------------------------------------------------- DIRECTORIES += $(SCIPDIR)/$(LIBDIR) SOPLEXINC = $(SOPLEXDIR)/src SOPLEXLIB = $(SOPLEXDIR)/lib/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(LIBEXT) SOPLEXINCLINK = $(SCIPDIR)/lib/spxinc SOPLEXLIBLINK = $(SCIPDIR)/lib/libsoplex.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT).$(LIBEXT) LIBS += $(SOPLEXLIB) SOFTLINKS += $(SOPLEXINCLINK) SOFTLINKS += $(SOPLEXLIBLINK) #----------------------------------------------------------------------------- # ZIMPL environment #----------------------------------------------------------------------------- DIRECTORIES += $(SCIPDIR)/$(LIBDIR)/zimplinc ZIMPLINC = $(ZIMPLDIR)/src ZIMPLLIB = $(ZIMPLDIR)/lib/libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).$(LIBEXT) ZIMPLINCLINK = $(SCIPDIR)/lib/zimplinc/zimpl ZIMPLLIBLINK = $(SCIPDIR)/lib/libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).$(LIBEXT) LIBS += $(ZIMPLLIB) SOFTLINKS += $(ZIMPLINCLINK) SOFTLINKS += $(ZIMPLLIBLINK) #----------------------------------------------------------------------------- # external libraries #----------------------------------------------------------------------------- ifeq ($(IPOPT),true) IPOPTLIBS = $(shell cat $(SCIPDIR)/$(LIBDIR)/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)/share/coin/doc/Ipopt/ipopt_addlibs_cpp.txt) IPOPTLIBS += -Wl,-rpath,$(realpath $(SCIPDIR)/$(LIBDIR)/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)/lib) endif ifeq ($(SHARED),true) ifeq ($(ZLIB),true) EXT_LIBS = $(ZLIB_LDFLAGS) endif ifeq ($(GMP),true) EXT_LIBS += $(GMP_LDFLAGS) endif ifeq ($(READLINE),true) EXT_LIBS += $(READLINE_LDFLAGS) endif EXT_LIBS += $(IPOPTLIBS) endif #----------------------------------------------------------------------------- ifeq ($(VERBOSE),false) .SILENT: scipoptlib endif .PHONY: all all: scipbinary $(DIRECTORIES): $(SCIPDIR) $(SOPLEXDIR) $(ZIMPLDIR) @echo "** Creating directory \"$@\"." @-mkdir -p $@ $(GCGDIRECTORIES): $(GCGDIR) @echo "** Creating directory \"$@\"." @-mkdir -p $@ $(UGDIRECTORIES): $(UGDIR) @echo "** Creating directory \"$@\"." @-mkdir -p $@ # declare lib to be phony to force building it - dependencies are not available here .PHONY: $(SOPLEXLIB) $(SOPLEXLIB): $(SOPLEXDIR) @echo "" @echo "** Building SoPlex library \"$@\"." @$(MAKE) -C $(SOPLEXDIR) OPT=$(LPSOPT) ZLIB=$(ZLIB) # declare lib to be phony to force building it - dependencies are not available here .PHONY: $(ZIMPLLIB) $(ZIMPLLIB): $(ZIMPLDIR) @echo "" ifeq ($(ZIMPL),true) @echo "** Building ZIMPL library \"$@\"." @$(MAKE) -C $(ZIMPLDIR) OPT=$(ZIMPLOPT) else @echo "** ZIMPL support disabled." endif .PHONY: softlinkmsg softlinkmsg: @echo "" @echo "** Creating necessary soft-links." $(SOPLEXINCLINK): softlinkmsg $(SCIPDIR) @rm -rf $@ @$(LN_s) $(SOPLEXINC) $@ $(SOPLEXLIBLINK): softlinkmsg $(SCIPDIR) @rm -f $@ @$(LN_s) $(SOPLEXLIB) $@ $(ZIMPLINCLINK): softlinkmsg $(SCIPDIR) @rm -rf $@ @$(LN_s) $(ZIMPLINC) $@ $(ZIMPLLIBLINK): softlinkmsg $(SCIPDIR) ifeq ($(ZIMPL),true) @rm -f $@ @$(LN_s) $(ZIMPLLIB) $@ endif $(GCGSCIPLINK): softlinkmsg $(SCIPDIR) @rm -rf $@ @$(LN_s) $(SCIPDIR) $@ $(UGSCIPLINK): softlinkmsg $(UGDIR) @rm -rf $@ @$(LN_s) $(SCIPDIR) $@ .PHONY: sciplibs sciplibs: $(DIRECTORIES) $(LIBS) $(SOFTLINKS) @echo "" @echo "** Building SCIP libraries." @$(MAKE) -C $(SCIPDIR) libs READLINE=$(READLINE) LPS=$(LPS) LPSOPT=$(LPSOPT) ZIMPL=$(ZIMPL) ZIMPLOPT=$(ZIMPLOPT) ZLIB=$(ZLIB) MAKESOFTLINKS=$(MAKESOFTLINKS) OPT=$(OPT) SPX_LEGACY=$(SPX_LEGACY) @echo "" .PHONY: scipbinary scipbinary: $(DIRECTORIES) $(LIBS) $(SOFTLINKS) @echo "" @echo "** Building SCIP libraries and executable." @$(MAKE) -C $(SCIPDIR) READLINE=$(READLINE) LPS=$(LPS) LPSOPT=$(LPSOPT) ZIMPL=$(ZIMPL) ZIMPLOPT=$(ZIMPLOPT) ZLIB=$(ZLIB) MAKESOFTLINKS=$(MAKESOFTLINKS) OPT=$(OPT) SPX_LEGACY=$(SPX_LEGACY) @echo "" @echo "** Build complete." @echo "** Find your SCIP binary in \"$(SCIPDIR)/bin\"." @echo "** Enter \"make test\" to solve a number of easy instances in order to verify that SCIP runs correctly." @echo "" .PHONY: scipoptlib scipoptlib: @echo "-> generating library $(SCIPOPTLIBFILE)" @-rm -f $(SCIPOPTLIBSHORT) @-(cd obj && rm -f *.o && rm -f *.a && ln -fs $(SCIPREALPATH)/lib/lib$(SCIPLIB).a && ar x lib$(SCIPLIB).a) @-(cd obj && ln -fs $(SCIPREALPATH)/lib/lib$(LPILIB).a && ar x lib$(LPILIB).a) @-(cd obj && ln -fs $(SCIPREALPATH)/lib/lib$(NLPILIB).a && ar x lib$(NLPILIB).a) ifeq ($(ZIMPL),true) @-(cd obj/zimpl && rm -f *.o && rm -f *.a && ln -fs $(ZIMPLDIR)/lib/libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).a && ar x libzimpl.$(OSTYPE).$(ARCH).$(COMP).$(ZIMPLOPT).a) endif $(LIBBUILD) $(LIBBUILDFLAGS) $(LIBBUILD_o)$(SCIPOPTLIBFILE) \ $(SCIPOPTOBJFILES) $(EXT_LIBS) ifneq ($(RANLIB),) $(RANLIB) $(SCIPOPTLIBFILE) endif @echo "-> generating short link $(SCIPOPTLIBSHORT)" @-(cd lib && ln -fs $(notdir $(SCIPOPTLIBFILE)) $(SCIPOPTLIBSHORT)) .PHONY: soplex soplex: $(SOPLEXDIR) @echo "" @echo "** Building SoPlex library and executable \"$@\"." @$(MAKE) -C $(SOPLEXDIR) OPT=$(OPT) ZLIB=$(ZLIB) @echo "" @echo "** Build complete." @echo "** Find your SoPlex binary in \"$(SOPLEXDIR)/bin\"." @echo "" .PHONY: gcg gcg: sciplibs $(GCGDIRECTORIES) $(GCGSCIPLINK) @echo "" @echo "** Building GCG executable." @$(MAKE) -C $(GCGDIR) READLINE=$(READLINE) LPS=$(LPS) LPSOPT=$(LPSOPT) ZIMPL=$(ZIMPL) ZIMPLOPT=$(ZIMPLOPT) ZLIB=$(ZLIB) OPT=$(OPT) @echo "" @echo "** Build complete." @echo "** Find your GCG binary in \"$(GCGDIR)/bin\"." @echo "" .PHONY: ug ug: sciplibs $(UGDIRECTORIES) $(UGSCIPLINK) @echo "" @echo "** Building UG executable." @$(MAKE) -C $(UGDIR) READLINE=$(READLINE) LPS=$(LPS) LPSOPT=$(LPSOPT) ZIMPL=$(ZIMPL) ZIMPLOPT=$(ZIMPLOPT) ZLIB=$(ZLIB) MAKESOFTLINKS=$(MAKESOFTLINKS) OPT=$(OPT) @echo "" @echo "** Build complete." @echo "** Find your UG binary in \"$(UGDIR)/bin\"." @echo ""