this repo has no description
1# Qecode Makefile
2# Largely inspired from the map makefile by Gregoire Dooms
3#
4# Jeremie Vautard, Universite d'Orleans
5
6#
7gecode_top_srcdir = ../../$(top_srcdir)
8gecode_top_builddir = ../..
9
10qecode_top_srcdir = $(gecode_top_srcdir)/contribs/qecode
11qecode_top_builddir = .
12
13KERNELDLL := $(KERNELDLL:%=../../%)
14INTDLL := $(INTDLL:%=../../%)
15MMDLL := $(MMDLL:%=../../%)
16SEARCHDLL := $(SEARCHDLL:%=../../%)
17SUPPORTDLL := $(SUPPORTDLL:%=../../%)
18SUPPORTOBJ := $(SUPPORTOBJ:%=../../%)
19
20
21ifeq "$(LIBPREFIX)" "$(LINKPREFIX)"
22LINKSUPPORT:=../../$(LINKSUPPORT)
23LINKKERNEL:=../../$(LINKKERNEL)
24LINKINT:=../../$(LINKINT)
25LINKMM:=../../$(LINKMM)
26LINKSEARCH:=../../$(LINKSEARCH)
27LINKALL := $(LINKMM) $(LINKINT) $(LINKSEARCH) $(LINKKERNEL)
28else
29EXTRALINKFLAGS := -L../..
30endif
31
32#
33# QECODE COMPONENTS
34#
35
36QECODESRC0 = 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
37QECODEHDR0 =
38
39
40QECODESRC = $(QECODESRC0)
41QECODEHDR = qecode.hh $(QECODEHDR0)
42QECODEOBJ = $(QECODESRC:%.cc=%$(OBJSUFFIX))
43QECODEFLAGS = \
44 -I$(gecode_top_srcdir) -I$(gecode_top_builddir) \
45 -I$(qecode_top_srcdir) -I$(qecode_top_builddir) \
46 -L$(gecode_top_builddir) -L$(qecode_top_builddir)
47QECODEDLL = $(LIBPREFIX)@QECODE@$(DLLSUFFIX)
48QECODESTATICLIB = $(LIBPREFIX)@QECODE@$(STATICLIBSUFFIX)
49QECODELIB = $(LIBPREFIX)@QECODE@$(LIBSUFFIX)
50LINKQECODE = $(LINKPREFIX)@QECODE@$(LINKSUFFIX)
51
52LINKALL := $(LINKALL) $(LINKQECODE)
53
54ALLLIB := $(ALLLIB) $(QECODELIB)
55
56
57ifeq "@BUILDDLL@" "yes"
58DLLTARGETS = $(QECODEDLL)
59else
60DLTARGETS=
61endif
62
63ifeq "@BUILDSTATIC@" "yes"
64STATICTARGETS = \
65 $(QECODESTATICLIB)
66else
67STATICTARGETS=
68endif
69
70LIBTARGETS= $(DLLTARGETS) $(STATICTARGETS)
71
72
73all : $(LIBTARGETS)
74
75#
76# Object targets
77#
78
79%$(OBJSUFFIX): $(qecode_top_srcdir)/%.cc
80 $(CXX) $(CXXFLAGS) $(QECODEFLAGS) \
81 @COMPILEOBJ@$@ @CXXIN@ $<
82%$(SBJSUFFIX): $(qecode_top_srcdir)/%.cc
83 $(CXX) $(CXXFLAGS) $(QECODEFLAGS) \
84 @COMPILESBJ@$@ @CXXIN@ $<
85
86
87
88
89#
90# DLL Targets
91#
92
93ifeq "$(DLLSUFFIX)" "$(LIBSUFFIX)"
94#linux
95$(QECODEDLL): $(QECODEOBJ) $(KERNELDLL) $(INTDLL) $(SEARCHDLL) $(SUPPORTDLL) $(MMDLL)
96 $(CXX) $(DLLFLAGS) $(QECODEOBJ) $(QECODEFLAGS) \
97 @DLLPATH@ $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKMM) $(LINKSUPPORT) \
98 @LINKOUTPUT@$(QECODEDLL)
99 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
100 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
101else
102#win
103$(QECODEDLL) $(QECODELIB): $(QECODEOBJ) $(KERNELDLL) $(INTDLL) $(SEARCHDLL) $(SUPPORTDLL) $(MMDLL)
104 $(CXX) $(DLLFLAGS) $(QECODEOBJ) $(QECODEFLAGS)\
105 @DLLPATH@ $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKMM) $(LINKSUPPORT) \
106 @LINKOUTPUT@$(QECODEDLL)
107endif
108
109
110#
111# Static libraries
112#
113
114$(QECODESTATICLIB): $(QECODEOBJ)
115 $(AR) $(ARFLAGS) $@ $(QECODEOBJ)
116 $(RANLIB) $@
117
118#
119# EXE targets
120#
121#
122
123
124#for linux: ?
125CXXFLAGS := $(CXXFLAGS) $(QECODEFLAGS)
126
127#
128# Autoconf
129#
130
131$(qecode_top_srcdir)/configure: $(qecode_top_srcdir)/configure.ac
132 (cd $(qecode_top_srcdir) && autoconf)
133config.status: $(qecode_top_srcdir)/configure
134 ../../config.status --recheck
135 ./config.status --recheck
136# use the sustitutions from gecode to generate the Makefile.in
137Makefile.in: $(qecode_top_srcdir)/Makefile.in.in ../../config.status
138 ../../config.status \
139 --file Makefile.in:$(qecode_top_srcdir)/Makefile.in.in
140
141# use the sustitutions from configure to generate the Makefile
142Makefile: Makefile.in ./config.status
143 ./config.status --file ./Makefile:./Makefile.in
144
145
146.PHONY: clean veryclean distclean
147clean:
148 $(RMF) $(QECODEOBJ) $(QECODESBJ)
149
150veryclean: clean
151 $(RMF) $(LIBTARGETS)
152 $(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%.exp) $(LIBTARGETS:%$(DLLSUFFIX)=%.lib)
153 $(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%.ilk) $(LIBTARGETS:%$(DLLSUFFIX)=%.pdb)
154 $(RMF) $(QECODEDLL)
155
156distclean: veryclean
157 $(RMF) config.log config.status
158
159.PHONY: doc
160doc: $(QECODEHDR) $(QECODESRC)
161 mkdir -p doc/html
162 doxygen doxygen.conf