1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
Jip J. Dekker 3e72b0e857 Squashed 'software/gecode_on_record/' content from commit 37ed9bda4
git-subtree-dir: software/gecode_on_record
git-subtree-split: 37ed9bda495ea87e63217c19a374b5a93bb0078e
2021-06-16 14:03:52 +10:00

163 lines
3.8 KiB
Makefile

# Qecode Makefile
# Largely inspired from the map makefile by Gregoire Dooms
#
# Jeremie Vautard, Universite d'Orleans
#
gecode_top_srcdir = ../../$(top_srcdir)
gecode_top_builddir = ../..
qecode_top_srcdir = $(gecode_top_srcdir)/contribs/qecode
qecode_top_builddir = .
KERNELDLL := $(KERNELDLL:%=../../%)
INTDLL := $(INTDLL:%=../../%)
MMDLL := $(MMDLL:%=../../%)
SEARCHDLL := $(SEARCHDLL:%=../../%)
SUPPORTDLL := $(SUPPORTDLL:%=../../%)
SUPPORTOBJ := $(SUPPORTOBJ:%=../../%)
ifeq "$(LIBPREFIX)" "$(LINKPREFIX)"
LINKSUPPORT:=../../$(LINKSUPPORT)
LINKKERNEL:=../../$(LINKKERNEL)
LINKINT:=../../$(LINKINT)
LINKMM:=../../$(LINKMM)
LINKSEARCH:=../../$(LINKSEARCH)
LINKALL := $(LINKMM) $(LINKINT) $(LINKSEARCH) $(LINKKERNEL)
else
EXTRALINKFLAGS := -L../..
endif
#
# QECODE COMPONENTS
#
QECODESRC0 = QCOPPlus.cc myspace.cc OptVar.cc qsolver_qcop.cc qsolver_qcsp.cc Strategy.cc StrategyNode.cc QCSPPlusUnblockable.cc qsolver_unblockable.cc UnblockableViewValBranching.cc Work.cc Worker.cc WorkManager.cc qsolver_parallel.cc
QECODEHDR0 =
QECODESRC = $(QECODESRC0)
QECODEHDR = qecode.hh $(QECODEHDR0)
QECODEOBJ = $(QECODESRC:%.cc=%$(OBJSUFFIX))
QECODEFLAGS = \
-I$(gecode_top_srcdir) -I$(gecode_top_builddir) \
-I$(qecode_top_srcdir) -I$(qecode_top_builddir) \
-L$(gecode_top_builddir) -L$(qecode_top_builddir)
QECODEDLL = $(LIBPREFIX)@QECODE@$(DLLSUFFIX)
QECODESTATICLIB = $(LIBPREFIX)@QECODE@$(STATICLIBSUFFIX)
QECODELIB = $(LIBPREFIX)@QECODE@$(LIBSUFFIX)
LINKQECODE = $(LINKPREFIX)@QECODE@$(LINKSUFFIX)
LINKALL := $(LINKALL) $(LINKQECODE)
ALLLIB := $(ALLLIB) $(QECODELIB)
ifeq "@BUILDDLL@" "yes"
DLLTARGETS = $(QECODEDLL)
else
DLTARGETS=
endif
ifeq "@BUILDSTATIC@" "yes"
STATICTARGETS = \
$(QECODESTATICLIB)
else
STATICTARGETS=
endif
LIBTARGETS= $(DLLTARGETS) $(STATICTARGETS)
all : $(LIBTARGETS)
#
# Object targets
#
%$(OBJSUFFIX): $(qecode_top_srcdir)/%.cc
$(CXX) $(CXXFLAGS) $(QECODEFLAGS) \
@COMPILEOBJ@$@ @CXXIN@ $<
%$(SBJSUFFIX): $(qecode_top_srcdir)/%.cc
$(CXX) $(CXXFLAGS) $(QECODEFLAGS) \
@COMPILESBJ@$@ @CXXIN@ $<
#
# DLL Targets
#
ifeq "$(DLLSUFFIX)" "$(LIBSUFFIX)"
#linux
$(QECODEDLL): $(QECODEOBJ) $(KERNELDLL) $(INTDLL) $(SEARCHDLL) $(SUPPORTDLL) $(MMDLL)
$(CXX) $(DLLFLAGS) $(QECODEOBJ) $(QECODEFLAGS) \
@DLLPATH@ $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKMM) $(LINKSUPPORT) \
@LINKOUTPUT@$(QECODEDLL)
$(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
$(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
else
#win
$(QECODEDLL) $(QECODELIB): $(QECODEOBJ) $(KERNELDLL) $(INTDLL) $(SEARCHDLL) $(SUPPORTDLL) $(MMDLL)
$(CXX) $(DLLFLAGS) $(QECODEOBJ) $(QECODEFLAGS)\
@DLLPATH@ $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKMM) $(LINKSUPPORT) \
@LINKOUTPUT@$(QECODEDLL)
endif
#
# Static libraries
#
$(QECODESTATICLIB): $(QECODEOBJ)
$(AR) $(ARFLAGS) $@ $(QECODEOBJ)
$(RANLIB) $@
#
# EXE targets
#
#
#for linux: ?
CXXFLAGS := $(CXXFLAGS) $(QECODEFLAGS)
#
# Autoconf
#
$(qecode_top_srcdir)/configure: $(qecode_top_srcdir)/configure.ac
(cd $(qecode_top_srcdir) && autoconf)
config.status: $(qecode_top_srcdir)/configure
../../config.status --recheck
./config.status --recheck
# use the sustitutions from gecode to generate the Makefile.in
Makefile.in: $(qecode_top_srcdir)/Makefile.in.in ../../config.status
../../config.status \
--file Makefile.in:$(qecode_top_srcdir)/Makefile.in.in
# use the sustitutions from configure to generate the Makefile
Makefile: Makefile.in ./config.status
./config.status --file ./Makefile:./Makefile.in
.PHONY: clean veryclean distclean
clean:
$(RMF) $(QECODEOBJ) $(QECODESBJ)
veryclean: clean
$(RMF) $(LIBTARGETS)
$(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%.exp) $(LIBTARGETS:%$(DLLSUFFIX)=%.lib)
$(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%.ilk) $(LIBTARGETS:%$(DLLSUFFIX)=%.pdb)
$(RMF) $(QECODEDLL)
distclean: veryclean
$(RMF) config.log config.status
.PHONY: doc
doc: $(QECODEHDR) $(QECODESRC)
mkdir -p doc/html
doxygen doxygen.conf