this repo has no description
1# -*-Makefile-*-
2#
3# Main authors:
4# Christian Schulte <schulte@gecode.org>
5# Guido Tack <tack@gecode.org>
6#
7# Contributing authors:
8# Mikael Lagerkvist <lagerkvist@gecode.org>
9#
10# Copyright:
11# Christian Schulte, 2005
12# Guido Tack, 2005
13# Mikael Lagerkvist, 2020
14#
15# This file is part of Gecode, the generic constraint
16# development environment:
17# http://www.gecode.org
18#
19# Permission is hereby granted, free of charge, to any person obtaining
20# a copy of this software and associated documentation files (the
21# "Software"), to deal in the Software without restriction, including
22# without limitation the rights to use, copy, modify, merge, publish,
23# distribute, sublicense, and/or sell copies of the Software, and to
24# permit persons to whom the Software is furnished to do so, subject to
25# the following conditions:
26#
27# The above copyright notice and this permission notice shall be
28# included in all copies or substantial portions of the Software.
29#
30# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37#
38
39#
40# General Settings
41#
42
43export prefix = @prefix@
44export exec_prefix = @exec_prefix@
45export bindir = @bindir@
46export libdir = @libdir@
47export sharedlibdir = @sharedlibdir@
48export includedir = @includedir@
49export srcdir = @srcdir@
50export datarootdir = @datarootdir@
51export datadir = @datadir@
52export docdir= @docdir@
53export top_srcdir = @top_srcdir@
54export top_builddir = .
55
56# Install to different root directory
57DESTDIR=
58
59export subdirs = @subdirs@
60
61export VERSION = @VERSION@
62
63export CXX = @CXX@
64export CC = @CC@
65export MOC = @MOC@
66ifeq "$(top_srcdir)" "$(top_builddir)"
67CPPFLAGS=-I$(top_srcdir)
68else
69CPPFLAGS=-I$(top_builddir) -I$(top_srcdir)
70endif
71export CPPFLAGS
72export CXXFLAGS = $(CPPFLAGS) @CXXFLAGS@ $(CXXUSR)
73export CFLAGS = $(CPPFLAGS) @CFLAGS@ $(CUSR)
74export EXAMPLES_EXTRA_CXXFLAGS = @EXAMPLES_EXTRA_CXXFLAGS@
75
76export QT_CPPFLAGS = @QTDEFINES@ @QTINCLUDES@
77export LINKQT = @QTLIBS@
78export MPFR_CPPFLAGS = @GMP_CPPFLAGS@ @MPFR_CPPFLAGS@
79ifeq "@enable_mpfr@" "yes"
80export LINKMPFR = @MPFR_LIB_PATH@ @GMP_LIB_PATH@ @MPFR_LINK@ @GMP_LINK@
81else
82export LINKMPFR =
83endif
84
85ifeq "@BUILDDLL@" "yes"
86export LINKSTATICQT
87else
88export LINKSTATICQT = $(LINKQT)
89endif
90
91export GLDFLAGS = @GLDFLAGS@
92export DLLFLAGS = @DLLFLAGS@
93export DLLPATH = @DLLPATH@
94
95export RANLIB = @RANLIB@
96export TAR = tar
97
98export RUNENVIRONMENT = @RUNENVIRONMENT@
99
100#
101# Use suffixes to get consistent treatment of dots
102#
103export OBJSUFFIX = .@OBJEXT@
104export SBJSUFFIX = .@SBJEXT@
105export DLLSUFFIX = @DLL_ARCH@@USERSUFFIX@.@DLLEXT@
106export MANIFESTSUFFIX = @DLL_ARCH@@USERSUFFIX@.@DLLEXT@.manifest
107export RCSUFFIX = @DLL_ARCH@@USERSUFFIX@.@DLLEXT@.rc
108export RESSUFFIX = @DLL_ARCH@@USERSUFFIX@.@DLLEXT@.res
109export LIBSUFFIX = @DLL_ARCH@@USERSUFFIX@.@LIBEXT@
110export PDBSUFFIX = @DLL_ARCH@@USERSUFFIX@.pdb
111export EXPSUFFIX = @DLL_ARCH@@USERSUFFIX@.exp
112export STATICLIBSUFFIX = .@STATICLIBEXT@
113export EXESUFFIX = @EXEEXT@
114
115export LIBPREFIX = @LIBPREFIX@
116export LINKPREFIX = @LINKPREFIX@
117export LINKSUFFIX = @DLL_ARCH@@USERSUFFIX@@LINKSUFFIX@
118
119export SOLINKSUFFIX = @DLL_ARCH@@USERSUFFIX@@SOLINKSUFFIX@
120export SOSUFFIX = @DLL_ARCH@@USERSUFFIX@@SOSUFFIX@
121
122#
123# Programs
124#
125export RMF = rm -rf
126export MV = mv
127export MANIFEST = @MANIFEST@ -nologo
128export FIXMANIFEST = perl $(top_srcdir)/misc/fixmanifest.perl $(DLLSUFFIX)
129export RESCOMP = @RESCOMP@ -n -i$(top_srcdir)
130export RCGEN = perl $(top_srcdir)/misc/genrc.perl $(DLLSUFFIX) $(top_srcdir)
131
132ifeq "@need_soname@" "yes"
133export CREATELINK = ln -fs
134else
135export CREATELINK = @true
136endif
137
138ifeq "@enable_resource@" "yes"
139%.res: %.rc
140 $(RESCOMP) -fo $@ $<
141.PRECIOUS: %.res %.rc
142endif
143
144#
145# SUPPORT COMPONENTS
146#
147SUPPORTSRC0 = \
148 exception allocator heap \
149 thread/thread thread/windows thread/pthreads \
150 hw-rnd
151SUPPORTHDR0 = \
152 block-allocator cast hash dynamic-array \
153 dynamic-stack exception allocator heap \
154 macros random sort static-stack \
155 marked-pointer int-type auto-link \
156 thread thread/thread thread/windows thread/pthreads thread/none timer \
157 dynamic-queue bitset-base bitset bitset-offset \
158 hw-rnd run-jobs ref-count
159
160SUPPORTSRC1 = $(SUPPORTSRC0:%=gecode/support/%.cpp)
161SUPPORTHDR = gecode/support.hh \
162 $(SUPPORTHDR0:%=gecode/support/%.hpp)
163SUPPORTOBJ = $(SUPPORTSRC1:%.cpp=%$(OBJSUFFIX))
164SUPPORTSRC = $(SUPPORTSRC1)
165
166export SUPPORTDLL = $(LIBPREFIX)@SUPPORT@$(DLLSUFFIX)
167export SUPPORTLIB = $(LIBPREFIX)@SUPPORT@$(LIBSUFFIX)
168ifeq "@need_soname@" "yes"
169export SUPPORTSONAME = \
170 @WLSONAME@$(LIBPREFIX)@SUPPORT@$(SOSUFFIX)
171else
172export SUPPORTSONAME =
173endif
174export SUPPORTSTATICLIB = $(LIBPREFIX)@SUPPORT@$(STATICLIBSUFFIX)
175export LINKSUPPORT = \
176 $(LINKPREFIX)@SUPPORT@$(LINKSUFFIX)
177ifeq "@enable_resource@" "yes"
178export SUPPORTRC = $(LIBPREFIX)@SUPPORT@$(RCSUFFIX)
179export SUPPORTRES = $(LIBPREFIX)@SUPPORT@$(RESSUFFIX)
180else
181export SUPPORTRES =
182export SUPPORTRC =
183endif
184
185SUPPORTBUILDDIRS = support support/thread
186
187
188#
189# KERNEL COMPONENTS
190#
191
192VARIMPHDR = \
193 gecode/kernel/var-type.hpp \
194 gecode/kernel/var-imp.hpp
195
196VARIMP = $(VARIMPHDR)
197
198KERNELSRC0 = \
199 archive core exception gpi \
200 data/rnd \
201 branch/action branch/afc branch/chb branch/function \
202 memory/manager memory/region \
203 trace/recorder trace/filter trace/tracer trace/general \
204 data/array
205
206KERNELHDR0 = \
207 archive core exception macros modevent gpi \
208 shared-object shared-space-data range-list \
209 view var \
210 memory/config memory/manager memory/region memory/allocators \
211 data/array data/rnd data/shared-array data/shared-data \
212 propagator/pattern propagator/advisor propagator/subscribed \
213 propagator/wait \
214 branch/var branch/val branch/tiebreak \
215 branch/traits branch/afc branch/action branch/chb \
216 branch/view-sel branch/merit \
217 branch/val-sel branch/val-commit branch/view branch/view-val \
218 branch/val-sel-commit branch/print branch/filter \
219 trace/traits trace/filter trace/tracer trace/recorder \
220 trace/general trace/print
221
222
223KERNELSRC = $(KERNELSRC0:%=gecode/kernel/%.cpp)
224KERNELHDR = \
225 gecode/kernel.hh \
226 $(KERNELHDR0:%=gecode/kernel/%.hpp)
227KERNELOBJ = $(KERNELSRC:%.cpp=%$(OBJSUFFIX))
228
229export KERNELDLL = $(LIBPREFIX)@KERNEL@$(DLLSUFFIX)
230export KERNELLIB = $(LIBPREFIX)@KERNEL@$(LIBSUFFIX)
231ifeq "@need_soname@" "yes"
232export KERNELSONAME = \
233 @WLSONAME@$(LIBPREFIX)@KERNEL@$(SOSUFFIX)
234else
235export KERNELSONAME =
236endif
237export KERNELSTATICLIB = $(LIBPREFIX)@KERNEL@$(STATICLIBSUFFIX)
238export LINKKERNEL = $(LINKPREFIX)@KERNEL@$(LINKSUFFIX)
239ifeq "@enable_resource@" "yes"
240export KERNELRC = $(LIBPREFIX)@KERNEL@$(RCSUFFIX)
241export KERNELRES = $(LIBPREFIX)@KERNEL@$(RESSUFFIX)
242else
243export KERNELRES =
244export KERNELRC =
245endif
246
247KERNELBUILDDIRS = kernel \
248 kernel/data kernel/propagator kernel/branch kernel/memory kernel/trace
249
250ifeq "@enable_flatzinc@" "yes"
251EXTRA_HEADERS = gecode/support/config.hpp gecode/flatzinc/parser.tab.hpp
252else
253EXTRA_HEADERS = gecode/support/config.hpp
254endif
255
256#
257# SEARCH COMPONENTS
258#
259
260SEARCHSRC0 = \
261 stop options cutoff engine \
262 dfs bab lds \
263 seq/rbs seq/dead seq/pbs par/pbs \
264 rbs pbs nogoods exception tracer \
265 cpprofiler/tracer
266SEARCHHDR0 = \
267 statistics.hpp stop.hpp options.hpp cutoff.hpp \
268 support.hh worker.hh exception.hpp engine.hpp base.hpp \
269 nogoods.hh nogoods.hpp build.hpp traits.hpp sebs.hpp \
270 seq/path.hh seq/path.hpp seq/dfs.hh seq/dfs.hpp \
271 seq/bab.hh seq/bab.hpp seq/lds.hh seq/lds.hpp \
272 seq/rbs.hh seq/rbs.hpp seq/dead.hh \
273 seq/pbs.hh seq/pbs.hpp \
274 par/path.hh par/path.hpp par/engine.hh par/engine.hpp \
275 par/dfs.hh par/dfs.hpp par/bab.hh par/bab.hpp \
276 par/pbs.hh par/pbs.hpp \
277 dfs.hpp bab.hpp lds.hpp rbs.hpp pbs.hpp \
278 relax.hh tracer.hpp trace-recorder.hpp \
279 cpprofiler/message.hpp cpprofiler/connector.hpp
280
281SEARCHSRC = $(SEARCHSRC0:%=gecode/search/%.cpp)
282SEARCHHDR = gecode/search.hh $(SEARCHHDR0:%=gecode/search/%)
283SEARCHOBJ = $(SEARCHSRC:%.cpp=%$(OBJSUFFIX))
284
285ifeq "@enable_search@" "yes"
286export SEARCHDLL = $(LIBPREFIX)@SEARCH@$(DLLSUFFIX)
287export SEARCHSTATICLIB = $(LIBPREFIX)@SEARCH@$(STATICLIBSUFFIX)
288export SEARCHLIB = $(LIBPREFIX)@SEARCH@$(LIBSUFFIX)
289export LINKSEARCH = $(LINKPREFIX)@SEARCH@$(LINKSUFFIX)
290ifeq "@need_soname@" "yes"
291export SEARCHSONAME = \
292 @WLSONAME@$(LIBPREFIX)@SEARCH@$(SOSUFFIX)
293else
294export SEARCHSONAME =
295ifeq "@enable_resource@" "yes"
296export SEARCHRC = $(LIBPREFIX)@SEARCH@$(RCSUFFIX)
297export SEARCHRES = $(LIBPREFIX)@SEARCH@$(RESSUFFIX)
298else
299export SEARCHRES =
300export SEARCHRC =
301endif
302endif
303else
304export SEARCHDLL =
305export SEARCHSTATICLIB =
306export SEARCHLIB =
307export LINKSEARCH =
308export SEARCHRES =
309export SEARCHRC =
310endif
311SEARCHBUILDDIRS = search search/seq search/par search/cpprofiler
312
313
314#
315# INTEGER COMPONENTS
316#
317
318INTSRC0 = \
319 int-set.cpp var-imp/int.cpp var-imp/bool.cpp var/int.cpp \
320 var/bool.cpp array.cpp bool.cpp bool/eqv.cpp \
321 extensional/dfa.cpp extensional/tuple-set.cpp \
322 extensional-regular.cpp extensional-tuple-set.cpp \
323 dom.cpp rel.cpp precede.cpp element.cpp count.cpp \
324 arithmetic.cpp exec.cpp \
325 exec/when.cpp element/pair.cpp \
326 linear/int-post.cpp linear-int.cpp \
327 linear/bool-post.cpp linear-bool.cpp \
328 branch.cpp distinct/eqite.cpp distinct/cbs.cpp \
329 distinct.cpp sorted.cpp gcc.cpp \
330 channel.cpp channel/link-single.cpp channel/link-multi.cpp \
331 unshare.cpp sequence.cpp \
332 bin-packing.cpp bin-packing/propagate.cpp \
333 bin-packing/conflict-graph.cpp \
334 order.cpp order/propagate.cpp \
335 unary.cpp cumulative.cpp cumulatives.cpp \
336 circuit.cpp no-overlap.cpp nvalues.cpp \
337 member.cpp branch/action.cpp branch/chb.cpp \
338 arithmetic/mult.cpp \
339 branch/view-sel.cpp branch/val-sel-commit.cpp \
340 branch/view-values.cpp \
341 relax.cpp \
342 ldsb.cpp ldsb/sym-imp.cpp ldsb/sym-obj.cpp \
343 trace.cpp trace/tracer.cpp \
344 exception.cpp
345
346INTHDR0 = \
347 limits.hpp support-values.hh support-values.hpp \
348 idx-view.hh idx-view.hpp div.hh div.hpp \
349 exec.hh exec/when.hpp \
350 arithmetic/abs.hpp arithmetic/max.hpp arithmetic/argmax.hpp \
351 arithmetic/mult.hpp arithmetic/divmod.hpp \
352 arithmetic/pow-ops.hpp arithmetic/pow.hpp arithmetic/nroot.hpp \
353 bool/or.hpp bool/eq.hpp bool/lq.hpp bool/eqv.hpp bool/base.hpp \
354 bool/clause.hpp bool/ite.hpp \
355 precede.hh precede/single.hpp \
356 branch/traits.hpp branch/var.hpp branch/val.hpp branch/assign.hpp \
357 branch/view-values.hpp branch/merit.hpp \
358 branch/val-sel.hpp branch/val-commit.hpp branch/ngl.hpp \
359 branch/cbs.hpp branch.hpp \
360 count.hh count/rel.hpp \
361 count/int-base.hpp count/int-eq.hpp \
362 count/int-gq.hpp count/int-lq.hpp \
363 count/view-base.hpp count/view-eq.hpp \
364 count/view-gq.hpp count/view-lq.hpp \
365 view-val-graph.hh view-val-graph/graph.hpp \
366 view-val-graph/bi-link.hpp view-val-graph/comb-ptr-flag.hpp \
367 view-val-graph/edge.hpp view-val-graph/node.hpp \
368 view-val-graph/iter-prune-val.hpp \
369 distinct/graph.hpp distinct/dom-ctrl.hpp \
370 distinct/bnd.hpp distinct/dom.hpp \
371 distinct/val.hpp distinct/ter-dom.hpp \
372 distinct/cbs.hpp \
373 distinct/eqite.hpp \
374 dom/range.hpp dom/set.hpp \
375 element/int.hpp element/view.hpp element/pair.hpp \
376 gcc/bnd.hpp gcc/dom.hpp gcc/bnd-sup.hpp gcc/dom-sup.hpp \
377 gcc/val.hpp gcc/view.hpp gcc/post.hpp \
378 linear/post.hpp \
379 linear/int-noview.hpp linear/int-bin.hpp linear/int-ter.hpp \
380 linear/int-nary.hpp linear/int-dom.hpp \
381 linear/bool-int.hpp linear/bool-view.hpp linear/bool-scale.hpp \
382 extensional/dfa.hpp extensional/layered-graph.hpp \
383 extensional/tuple-set.hpp extensional/compact.hpp \
384 extensional/tiny-bit-set.hpp extensional/bit-set.hpp \
385 extensional.hpp \
386 rel/eq.hpp rel/lex.hpp rel/lq-le.hpp rel/nq.hpp \
387 sorted/matching.hpp sorted/narrowing.hpp \
388 sorted/order.hpp sorted/propagate.hpp sorted/sortsup.hpp \
389 int-set-1.hpp int-set-2.hpp var-imp/delta.hpp var/print.hpp var/bool.hpp \
390 var-imp/int.hpp var-imp/bool.hpp var/int.hpp \
391 view/bool.hpp view/cached.hpp view/constint.hpp view/zero.hpp view/int.hpp \
392 view/minus.hpp view/print.hpp view/neg-bool.hpp view/bool-test.hpp \
393 view/offset.hpp view/rel-test.hpp view/scale.hpp view/iter.hpp \
394 arithmetic.hh array.hpp array-traits.hpp bool.hh branch.hh \
395 distinct.hh dom.hh \
396 element.hh exception.hpp gcc.hh linear.hh \
397 reify.hpp propagator.hpp extensional.hh rel.hh \
398 sorted.hh var-imp.hpp view.hpp ipl.hpp irt.hpp \
399 channel.hh channel.hpp channel/dom.hpp channel/val.hpp \
400 channel/base.hpp channel/link-single.hpp channel/link-multi.hpp \
401 sequence.hh sequence/int.hpp sequence/view.hpp \
402 sequence/set-op.hpp sequence/violations.hpp \
403 bin-packing.hh bin-packing/propagate.hpp \
404 bin-packing/conflict-graph.hpp \
405 task.hh task/fwd-to-bwd.hpp task/array.hpp task/sort.hpp \
406 task/iter.hpp task/tree.hpp task/purge.hpp task/prop.hpp \
407 task/man-to-opt.hpp task/event.hpp \
408 order.hh order/propagate.hpp \
409 unary.hh unary/task.hpp unary/task-view.hpp \
410 unary/tree.hpp unary/overload.hpp unary/detectable.hpp \
411 unary/time-tabling.hpp unary/not-first-not-last.hpp \
412 unary/edge-finding.hpp unary/subsumption.hpp \
413 unary/man-prop.hpp unary/opt-prop.hpp unary/post.hpp \
414 cumulative.hh cumulative/man-prop.hpp cumulative/opt-prop.hpp \
415 cumulative/task-view.hpp cumulative/overload.hpp \
416 cumulative/time-tabling.hpp cumulative/task.hpp \
417 cumulative/edge-finding.hpp cumulative/post.hpp \
418 cumulative/tree.hpp cumulative/limits.hpp \
419 cumulative/subsumption.hpp \
420 cumulatives.hh cumulatives/val.hpp \
421 circuit.hh circuit/base.hpp circuit/val.hpp circuit/dom.hpp \
422 no-overlap.hh no-overlap/dim.hpp no-overlap/box.hpp \
423 no-overlap/base.hpp no-overlap/man.hpp no-overlap/opt.hpp \
424 nvalues.hh nvalues/range-event.hpp \
425 nvalues/sym-bit-matrix.hpp nvalues/graph.hpp \
426 nvalues/bool-base.hpp nvalues/bool-eq.hpp \
427 nvalues/bool-lq.hpp nvalues/bool-gq.hpp \
428 nvalues/int-base.hpp nvalues/int-eq.hpp \
429 nvalues/int-lq.hpp nvalues/int-gq.hpp \
430 val-set.hh val-set.hpp \
431 member.hh member/prop.hpp member/re-prop.hpp \
432 branch/afc.hpp branch/action.hpp branch/chb.hpp \
433 ldsb.hh ldsb/brancher.hpp ldsb/sym-imp.hpp \
434 trace.hpp \
435 trace/bool-trace-view.hpp trace/int-trace-view.hpp \
436 trace/bool-delta.hpp trace/int-delta.hpp trace/traits.hpp
437
438INTSRC = $(INTSRC0:%=gecode/int/%)
439INTHDR = gecode/int.hh $(INTHDR0:%=gecode/int/%)
440INTOBJ = $(INTSRC:%.cpp=%$(OBJSUFFIX))
441
442ifeq "@enable_int_vars@" "yes"
443export INTDLL = $(LIBPREFIX)@INT@$(DLLSUFFIX)
444export INTSTATICLIB = $(LIBPREFIX)@INT@$(STATICLIBSUFFIX)
445export INTLIB = $(LIBPREFIX)@INT@$(LIBSUFFIX)
446export LINKINT = $(LINKPREFIX)@INT@$(LINKSUFFIX)
447ifeq "@need_soname@" "yes"
448export INTSONAME = \
449 @WLSONAME@$(LIBPREFIX)@INT@$(SOSUFFIX)
450else
451export INTSONAME =
452endif
453ifeq "@enable_resource@" "yes"
454export INTRC = $(LIBPREFIX)@INT@$(RCSUFFIX)
455export INTRES = $(LIBPREFIX)@INT@$(RESSUFFIX)
456else
457export INTRES =
458export INTRC =
459endif
460else
461export INTDLL =
462export INTSTATICLIB =
463export INTLIB =
464export LINKINT =
465export INTRES =
466export INTRC =
467endif
468INTBUILDDIRS = \
469 int int/var int/var-imp int/view int/extensional \
470 int/channel int/arithmetic int/linear int/bool int/branch int/exec \
471 int/element int/sequence int/bin-packing \
472 int/unary int/cumulative int/cumulatives int/task \
473 int/ldsb int/distinct int/trace int/order
474
475#
476# FLOAT COMPONENTS
477#
478
479FLOATSRC0 = \
480 var/float.cpp var-imp/float.cpp \
481 arithmetic.cpp array.cpp branch.cpp rel.cpp linear.cpp \
482 linear/post.cpp bool.cpp channel.cpp \
483 transcendental.cpp trigonometric.cpp \
484 branch/action.cpp branch/chb.cpp rounding.cpp exec.cpp \
485 branch/val-sel-commit.cpp branch/view-sel.cpp dom.cpp \
486 relax.cpp \
487 trace.cpp trace/tracer.cpp \
488 exception.cpp
489
490FLOATHDR0 = \
491 var-imp.hpp array.hpp array-traits.hpp limits.hpp exception.hpp \
492 view.hpp view/float.hpp view/minus.hpp view/offset.hpp \
493 view/scale.hpp view/print.hpp view/rel-test.hpp \
494 var-imp/float.hpp var-imp/delta.hpp \
495 var/float.hpp var/print.hpp linear.hh linear/nary.hpp \
496 arithmetic.hh arithmetic/sqr-sqrt.hpp arithmetic/pow-nroot.hpp \
497 arithmetic/mult.hpp arithmetic/div.hpp arithmetic/min-max.hpp \
498 arithmetic/abs.hpp \
499 channel.hh channel.hpp channel/channel.hpp \
500 transcendental.hh transcendental/exp-log.hpp trigonometric.hh \
501 trigonometric/sincos.hpp trigonometric/asinacos.hpp \
502 trigonometric/tanatan.hpp \
503 rel.hh rel/eq.hpp rel/lq-le.hpp rel/nq.hpp \
504 bool.hh bool/ite.hpp \
505 branch.hh branch/afc.hpp branch/action.hpp branch/chb.hpp \
506 branch/traits.hpp branch.hpp \
507 branch/var.hpp branch/val.hpp branch/assign.hpp \
508 branch/val-commit.hpp branch/val-sel.hpp branch/merit.hpp \
509 num.hpp val.hpp rounding.hpp nextafter.hpp \
510 trace.hpp trace/trace-view.hpp trace/delta.hpp trace/traits.hpp
511
512FLOATSRC = $(FLOATSRC0:%=gecode/float/%)
513FLOATHDR = gecode/float.hh $(FLOATHDR0:%=gecode/float/%)
514FLOATOBJ = $(FLOATSRC:%.cpp=%$(OBJSUFFIX))
515
516ifeq "@enable_float_vars@" "yes"
517export FLOATDLL = $(LIBPREFIX)@FLOAT@$(DLLSUFFIX)
518export FLOATSTATICLIB = $(LIBPREFIX)@FLOAT@$(STATICLIBSUFFIX)
519export FLOATLIB = $(LIBPREFIX)@FLOAT@$(LIBSUFFIX)
520export LINKFLOAT = $(LINKPREFIX)@FLOAT@$(LINKSUFFIX)
521ifeq "@need_soname@" "yes"
522export FLOATSONAME = \
523 @WLSONAME@$(LIBPREFIX)@FLOAT@$(SOSUFFIX)
524else
525export FLOATSONAME =
526endif
527ifeq "@enable_resource@" "yes"
528export FLOATRC = $(LIBPREFIX)@FLOAT@$(RCSUFFIX)
529export FLOATRES = $(LIBPREFIX)@FLOAT@$(RESSUFFIX)
530else
531export FLOATRES =
532export FLOATRC =
533endif
534else
535export FLOATDLL =
536export FLOATSTATICLIB =
537export FLOATLIB =
538export LINKFLOAT =
539export FLOATRES =
540export FLOATRC =
541endif
542FLOATBUILDDIRS = \
543 float float/var float/var-imp float/view \
544 float/linear float/branch float/rel float/branch \
545 float/arithmetic float/transcendental float/trigonometric \
546 float/trace float/channel
547
548#
549# SET COMPONENTS
550#
551
552SETSRC0 = \
553 branch.cpp cardinality.cpp convex.cpp convex/conv.cpp convex/hull.cpp \
554 dom.cpp rel.cpp \
555 rel-op.cpp rel-op-ternary.cpp rel-op-singleton.cpp \
556 rel-op/post-compl.cpp rel-op/post-nocompl.cpp \
557 rel-op/post-compl-cvv.cpp rel-op/post-nocompl-cvv.cpp \
558 rel-op/post-compl-vvc.cpp rel-op/post-nocompl-vvc.cpp \
559 rel-op/post-compl-cvc.cpp rel-op/post-nocompl-cvc.cpp \
560 rel-op-const-vvc.cpp rel-op-const-vcv.cpp rel-op-const-vcc.cpp \
561 rel-op-const-cvc.cpp rel-op-const-cvv.cpp \
562 int.cpp channel.cpp bool.cpp \
563 element.cpp sequence.cpp \
564 distinct.cpp distinct/atmostOne.cpp \
565 precede.cpp \
566 sequence/seq.cpp sequence/seq-u.cpp array.cpp var-imp/set.cpp \
567 var-imp/integerset.cpp var/set.cpp \
568 exec.cpp branch/action.cpp branch/chb.cpp branch/view-sel.cpp \
569 branch/val-sel-commit.cpp branch/ngl.cpp \
570 ldsb.cpp ldsb/sym-imp.cpp \
571 relax.cpp \
572 trace.cpp trace/tracer.cpp \
573 exception.cpp
574SETHDR0 = \
575 limits.hpp \
576 view.hpp exception.hpp int.hh int.hpp element.hh var-imp.hpp \
577 int/card.hpp \
578 int/minmax.hpp int/weights.hpp \
579 channel/sorted.hpp channel/int.hpp channel/bool.hpp channel/set.hpp \
580 element/inter.hpp element/union.hpp \
581 element/unionConst.hpp \
582 element/disjoint.hpp array.hpp array-traits.hpp \
583 var-imp/set.hpp var-imp/integerset.hpp \
584 var-imp/delta.hpp var-imp/iter.hpp \
585 var/set.hpp var/print.hpp \
586 view/complement.hpp view/const.hpp view/set.hpp view/singleton.hpp \
587 view/cached.hpp view/print.hpp \
588 rel/subset.hpp rel/re-subset.hpp rel/eq.hpp rel/nq.hpp rel/re-eq.hpp \
589 rel/lq.hpp rel/re-lq.hpp \
590 rel/common.hpp rel/nosubset.hpp sequence.hh \
591 rel-op/union.hpp rel-op/partition.hpp rel-op/subofunion.hpp \
592 rel-op/inter.hpp rel-op/superofinter.hpp \
593 rel-op/post.hpp rel-op/common.hpp rel.hh \
594 distinct.hh distinct/atmostOne.hpp \
595 sequence/seq.hpp sequence/seq-u.hpp \
596 sequence/common.hpp convex/conv.hpp convex/hull.hpp convex.hh \
597 precede.hh precede/single.hpp \
598 rel-op.hh \
599 branch.hh branch/afc.hpp branch/action.hpp branch/chb.hpp \
600 branch/traits.hpp branch.hpp \
601 branch/var.hpp branch/val.hpp branch/assign.hpp \
602 branch/merit.hpp branch/val-commit.hpp branch/val-sel.hpp \
603 branch/ngl.hpp \
604 ldsb.hh ldsb/brancher.hpp channel.hh \
605 trace.hpp trace/trace-view.hpp trace/delta.hpp trace/traits.hpp
606
607
608SETSRC = $(SETSRC0:%=gecode/set/%)
609SETHDR = gecode/set.hh $(SETHDR0:%=gecode/set/%)
610SETOBJ = $(SETSRC:%.cpp=%$(OBJSUFFIX))
611
612ifeq "@enable_set_vars@" "yes"
613export SETDLL = $(LIBPREFIX)@SET@$(DLLSUFFIX)
614export SETSTATICLIB = $(LIBPREFIX)@SET@$(STATICLIBSUFFIX)
615export SETLIB = $(LIBPREFIX)@SET@$(LIBSUFFIX)
616export LINKSET = $(LINKPREFIX)@SET@$(LINKSUFFIX)
617ifeq "@need_soname@" "yes"
618export SETSONAME = \
619 @WLSONAME@$(LIBPREFIX)@SET@$(SOSUFFIX)
620else
621export SETSONAME =
622endif
623ifeq "@enable_resource@" "yes"
624export SETRC = $(LIBPREFIX)@SET@$(RCSUFFIX)
625export SETRES = $(LIBPREFIX)@SET@$(RESSUFFIX)
626else
627export SETRES =
628export SETRC =
629endif
630else
631export SETDLL =
632export SETSTATICLIB =
633export SETLIB =
634export LINKSET =
635export SETRES =
636export SETRC =
637endif
638SETBUILDDIRS = \
639 set set/convex set/distinct set/int set/rel set/rel-op \
640 set/element set/sequence set/var set/var-imp set/view \
641 set/branch set/channel set/ldsb set/trace
642
643
644#
645# MINIMODEL COMPONENTS
646#
647
648MMSRC0 = \
649 int-expr.cpp int-rel.cpp int-arith.cpp bool-expr.cpp \
650 set-expr.cpp set-rel.cpp dom.cpp \
651 float-expr.cpp float-rel.cpp float-arith.cpp \
652 reg.cpp optimize.cpp exception.cpp ipl.cpp
653MMHDR0 = \
654 int-expr.hpp int-rel.hpp float-expr.hpp float-rel.hpp \
655 bool-expr.hpp set-expr.hpp set-rel.hpp \
656 exception.hpp matrix.hpp \
657 optimize.hpp reg.hpp ldsb.hpp channel.hpp aliases.hpp \
658 ipl.hpp
659
660MMSRC = $(MMSRC0:%=gecode/minimodel/%)
661MMHDR = gecode/minimodel.hh $(MMHDR0:%=gecode/minimodel/%)
662MMOBJ = $(MMSRC:%.cpp=%$(OBJSUFFIX))
663MMSBJ = $(MMSRC:%.cpp=%$(SBJSUFFIX))
664
665ifeq "@enable_minimodel@" "yes"
666export MMDLL = $(LIBPREFIX)@MM@$(DLLSUFFIX)
667export MMSTATICLIB = $(LIBPREFIX)@MM@$(STATICLIBSUFFIX)
668export MMLIB = $(LIBPREFIX)@MM@$(LIBSUFFIX)
669export LINKMM = $(LINKPREFIX)@MM@$(LINKSUFFIX)
670ifeq "@need_soname@" "yes"
671export MMSONAME = \
672 @WLSONAME@$(LIBPREFIX)@MM@$(SOSUFFIX)
673else
674export MMSONAME =
675endif
676ifeq "@enable_resource@" "yes"
677export MMRC = $(LIBPREFIX)@MM@$(RCSUFFIX)
678export MMRES = $(LIBPREFIX)@MM@$(RESSUFFIX)
679else
680export MMRES =
681export MMRC =
682endif
683else
684export MMDLL =
685export MMSTATICLIB =
686export MMLIB =
687export LINKMM =
688export MMRES =
689export MMRC =
690endif
691MMBUILDDIRS = minimodel
692
693#
694# DRIVER COMPONENTS
695#
696
697DRIVERSRC0 = options.cpp script.cpp
698DRIVERHDR0 = options.hpp script.hpp
699
700DRIVERSRC = $(DRIVERSRC0:%=gecode/driver/%)
701DRIVERHDR = gecode/driver.hh $(DRIVERHDR0:%=gecode/driver/%)
702DRIVEROBJ = $(DRIVERSRC:%.cpp=%$(OBJSUFFIX))
703DRIVERSBJ = $(DRIVERSRC:%.cpp=%$(SBJSUFFIX))
704
705ifeq "@enable_driver@" "yes"
706export DRIVERDLL = $(LIBPREFIX)@DRIVER@$(DLLSUFFIX)
707export DRIVERSTATICLIB = $(LIBPREFIX)@DRIVER@$(STATICLIBSUFFIX)
708export DRIVERLIB = $(LIBPREFIX)@DRIVER@$(LIBSUFFIX)
709export LINKDRIVER = $(LINKPREFIX)@DRIVER@$(LINKSUFFIX)
710ifeq "@need_soname@" "yes"
711export DRIVERSONAME = \
712 @WLSONAME@$(LIBPREFIX)@DRIVER@$(SOSUFFIX)
713else
714export DRIVERSONAME =
715endif
716ifeq "@enable_resource@" "yes"
717export DRIVERRC = $(LIBPREFIX)@DRIVER@$(RCSUFFIX)
718export DRIVERRES = $(LIBPREFIX)@DRIVER@$(RESSUFFIX)
719else
720export DRIVERRES =
721export DRIVERRC =
722endif
723else
724export DRIVERDLL =
725export DRIVERSTATICLIB =
726export DRIVERLIB =
727export LINKDRIVER =
728export DRIVERRES =
729export DRIVERRC =
730endif
731DRIVERBUILDDIRS = driver
732
733#
734# ITERATOR HEADERS
735#
736ITERHDR0 = \
737 ranges-add ranges-append ranges-array ranges-cache \
738 ranges-compl ranges-diff ranges-empty \
739 ranges-inter ranges-minmax ranges-minus \
740 ranges-offset ranges-operations ranges-rangelist \
741 ranges-scale ranges-singleton ranges-singleton-append \
742 ranges-size ranges-union ranges-values \
743 ranges-negative ranges-positive ranges-map \
744 ranges-list \
745 values-array values-minus values-offset values-ranges \
746 values-positive values-negative \
747 values-singleton values-unique values-inter \
748 values-union values-map values-bitset values-list \
749 values-bitsetoffset
750ITERHDR = gecode/iter.hh \
751 $(ITERHDR0:%=gecode/iter/%.hpp)
752
753
754#
755# GIST
756#
757
758GISTHDR0 = \
759 drawingcursor.hh drawingcursor.hpp \
760 gist.hpp gecodelogo.hh node.hh node.hpp \
761 nodecursor.hh nodecursor.hpp nodevisitor.hh \
762 nodevisitor.hpp layoutcursor.hh layoutcursor.hpp \
763 spacenode.hh spacenode.hpp qtgist.hh \
764 textoutput.hh treecanvas.hh zoomToFitIcon.hpp \
765 visualnode.hh visualnode.hpp nodestats.hh \
766 nodewidget.hh mainwindow.hh preferences.hh \
767 stopbrancher.hh
768
769GISTSRC0 = \
770 drawingcursor.cpp gist.cpp gecodelogo.cpp node.cpp \
771 spacenode.cpp \
772 textoutput.cpp treecanvas.cpp qtgist.cpp visualnode.cpp nodestats.cpp \
773 nodewidget.cpp mainwindow.cpp preferences.cpp stopbrancher.cpp
774
775GISTMOCSRC0 = \
776 moc_treecanvas.cpp moc_qtgist.cpp moc_mainwindow.cpp moc_textoutput.cpp\
777 moc_preferences.cpp moc_nodestats.cpp
778
779GISTSRC = $(GISTSRC0:%=gecode/gist/%)
780GISTMOCSRC = $(GISTMOCSRC0:%=gecode/gist/%)
781GISTHDR = $(GISTHDR0:%=gecode/gist/%) gecode/gist.hh
782
783GISTOBJ = $(GISTSRC:%.cpp=%$(OBJSUFFIX)) $(GISTMOCSRC:%.cpp=%$(OBJSUFFIX))
784GISTSBJ = $(GISTSRC:%.cpp=%$(SBJSUFFIX)) $(GISTMOCSRC:%.cpp=%$(SBJSUFFIX))
785
786GISTBUILDDIRS = gist
787
788ifeq "@enable_gist@" "yes"
789export GISTDLL = $(LIBPREFIX)@GIST@$(DLLSUFFIX)
790export GISTSTATICLIB = $(LIBPREFIX)@GIST@$(STATICLIBSUFFIX)
791export GISTLIB = $(LIBPREFIX)@GIST@$(LIBSUFFIX)
792export LINKGIST = $(LINKPREFIX)@GIST@$(LINKSUFFIX)
793ifeq "@need_soname@" "yes"
794export GISTSONAME = \
795 @WLSONAME@$(LIBPREFIX)@GIST@$(SOSUFFIX)
796else
797export GISTSONAME =
798endif
799ifeq "@enable_resource@" "yes"
800export GISTRC = $(LIBPREFIX)@GIST@$(RCSUFFIX)
801export GISTRES = $(LIBPREFIX)@GIST@$(RESSUFFIX)
802else
803export GISTRES =
804export GISTRC =
805endif
806else
807export GISTDLL =
808export GISTSTATICLIB =
809export GISTLIB =
810export LINKGIST =
811export GISTSONAME =
812export GISTRES =
813export GISTRC =
814endif
815
816#
817# FLATZINC
818#
819
820FLATZINCSRC0 = flatzinc.cpp registry.cpp branch.cpp
821FLATZINC_GENSRC0 = parser.tab.cpp lexer.yy.cpp
822FLATZINCHDR0 = ast.hh conexpr.hh option.hh parser.hh \
823 plugin.hh registry.hh symboltable.hh varspec.hh \
824 branch.hh branch.hpp
825
826FLATZINCSRC = $(FLATZINCSRC0:%=gecode/flatzinc/%)
827FLATZINC_GENSRC = $(FLATZINC_GENSRC0:%=gecode/flatzinc/%)
828FLATZINCHDR = $(FLATZINCHDR0:%=gecode/flatzinc/%) gecode/flatzinc.hh
829
830FLATZINCOBJ = \
831 $(FLATZINCSRC:%.cpp=%$(OBJSUFFIX)) \
832 $(FLATZINC_GENSRC:%.cpp=%$(OBJSUFFIX))
833
834FLATZINCEXESRC0 = fzn-gecode.cpp
835FLATZINCEXESRC = $(FLATZINCEXESRC0:%=tools/flatzinc/%)
836FLATZINCEXEOBJ = $(FLATZINCEXESRC:%.cpp=%$(OBJSUFFIX))
837
838FLATZINCALLSRC = $(FLATZINCSRC) $(FLATZINCEXESRC)
839
840FLATZINCBUILDDIRS = gecode/flatzinc tools/flatzinc
841
842ifeq "@enable_flatzinc@" "yes"
843export FLATZINCDLL = $(LIBPREFIX)@FLATZINC@$(DLLSUFFIX)
844export FLATZINCSTATICLIB = $(LIBPREFIX)@FLATZINC@$(STATICLIBSUFFIX)
845export FLATZINCLIB = $(LIBPREFIX)@FLATZINC@$(LIBSUFFIX)
846export LINKFLATZINC = $(LINKPREFIX)@FLATZINC@$(LINKSUFFIX)
847export FLATZINCMZNLIB = gecode/flatzinc/mznlib
848export FLATZINCCONFIG = tools/flatzinc/gecode.msc
849FLATZINCEXE = tools/flatzinc/fzn-gecode$(EXESUFFIX)
850ifeq "@need_soname@" "yes"
851export FLATZINCSONAME = @WLSONAME@$(LIBPREFIX)@FLATZINC@$(SOSUFFIX)
852else
853export FLATZINCSONAME =
854endif
855ifeq "@enable_resource@" "yes"
856export FLATZINCRC = $(LIBPREFIX)@FLATZINC@$(RCSUFFIX)
857export FLATZINCRES = $(LIBPREFIX)@FLATZINC@$(RESSUFFIX)
858else
859export FLATZINCRES =
860export FLATZINCRC =
861endif
862else
863export FLATZINCDLL =
864export FLATZINCSTATICLIB =
865export FLATZINCLIB =
866export LINKFLATZINC =
867export FLATZINCSONAME =
868export FLATZINCMZNLIB =
869export FLATZINCRES =
870export FLATZINCRC =
871FLATZINCEXE =
872endif
873
874#
875# EXAMPLES
876#
877
878
879INTEXAMPLEHDR0 = \
880 scowl job-shop-instances
881INTEXAMPLESRC0 = \
882 alpha bacp bibd donald efpa eq20 golomb-ruler \
883 graph-color grocery ind-set magic-sequence magic-square \
884 money ortho-latin partition photo queens sudoku sudoku-advanced kakuro \
885 nonogram pentominoes crowded-chess black-hole \
886 minesweeper domino steel-mill sports-league \
887 all-interval langford-number warehouses radiotherapy \
888 word-square crossword open-shop car-sequencing sat \
889 bin-packing knights tsp perfect-square schurs-lemma \
890 dominating-queens colored-matrix multi-bin-packing \
891 qcp job-shop
892
893
894INTEXAMPLEHDR = $(INTEXAMPLEHDR0:%=examples/%.hpp)
895INTEXAMPLESRC = $(INTEXAMPLESRC0:%=examples/%.cpp)
896ifeq "@enable_int_vars@" "yes"
897INTEXAMPLEEXE = $(INTEXAMPLESRC:%.cpp=%$(EXESUFFIX))
898else
899INTEXAMPLEEXE =
900endif
901
902MPFRFLOATEXAMPLESRC0 = \
903 archimedean-spiral golden-spiral
904MPFRFLOATEXAMPLESRC = $(MPFRFLOATEXAMPLESRC0:%=examples/%.cpp)
905ifeq "@enable_float_vars@" "yes"
906 ifeq "@enable_mpfr@" "yes"
907 MPFRFLOATEXAMPLEEXE = $(MPFRFLOATEXAMPLESRC:%.cpp=%$(EXESUFFIX))
908 else
909 MPFRFLOATEXAMPLEEXE =
910 endif
911endif
912
913FLOATEXAMPLESRC0 = \
914 cartesian-heart descartes-folium
915FLOATEXAMPLESRC = $(FLOATEXAMPLESRC0:%=examples/%.cpp)
916ifeq "@enable_float_vars@" "yes"
917FLOATEXAMPLEEXE = $(FLOATEXAMPLESRC:%.cpp=%$(EXESUFFIX))
918else
919FLOATEXAMPLEEXE =
920endif
921
922SETEXAMPLESRC0 = \
923 crew golf hamming steiner queen-armies
924SETEXAMPLESRC = $(SETEXAMPLESRC0:%=examples/%.cpp)
925ifeq "@enable_set_vars@" "yes"
926SETEXAMPLEEXE = $(SETEXAMPLESRC:%.cpp=%$(EXESUFFIX))
927else
928SETEXAMPLEEXE =
929endif
930
931EXAMPLEBUILDDIRS = examples
932
933EXAMPLEEXE = \
934 $(INTEXAMPLEEXE) $(SETEXAMPLEEXE) $(FLOATEXAMPLEEXE) $(MPFRFLOATEXAMPLEEXE)
935
936
937#
938# THIRD PARTY SOFTWARE
939#
940
941BOOSTHDR = \
942 config/compiler/borland.hpp config/compiler/clang.hpp \
943 config/compiler/codegear.hpp config/compiler/comeau.hpp \
944 config/compiler/common_edg.hpp config/compiler/compaq_cxx.hpp \
945 config/compiler/digitalmars.hpp config/compiler/gcc.hpp \
946 config/compiler/gcc_xml.hpp config/compiler/greenhills.hpp \
947 config/compiler/hp_acc.hpp config/compiler/intel.hpp \
948 config/compiler/kai.hpp config/compiler/metrowerks.hpp \
949 config/compiler/mpw.hpp config/compiler/nvcc.hpp \
950 config/compiler/pathscale.hpp config/compiler/pgi.hpp \
951 config/compiler/sgi_mipspro.hpp config/compiler/sunpro_cc.hpp \
952 config/compiler/vacpp.hpp config/compiler/visualc.hpp \
953 config/no_tr1/cmath.hpp config/no_tr1/utility.hpp \
954 config/platform/aix.hpp config/platform/amigaos.hpp \
955 config/platform/beos.hpp config/platform/bsd.hpp \
956 config/platform/cygwin.hpp config/platform/hpux.hpp \
957 config/platform/irix.hpp config/platform/linux.hpp \
958 config/platform/macos.hpp config/platform/qnxnto.hpp \
959 config/platform/solaris.hpp config/platform/symbian.hpp \
960 config/platform/vms.hpp config/platform/vxworks.hpp \
961 config/platform/win32.hpp config/posix_features.hpp \
962 config/select_compiler_config.hpp \
963 config/select_platform_config.hpp \
964 config/select_stdlib_config.hpp \
965 config/stdlib/dinkumware.hpp config/stdlib/libcomo.hpp \
966 config/stdlib/libcpp.hpp config/stdlib/libstdcpp3.hpp \
967 config/stdlib/modena.hpp config/stdlib/msl.hpp \
968 config/stdlib/roguewave.hpp config/stdlib/sgi.hpp \
969 config/stdlib/stlport.hpp config/stdlib/vacpp.hpp \
970 config/suffix.hpp config/user.hpp config.hpp \
971 detail/endian.hpp detail/limits.hpp \
972 numeric/interval/arith.hpp \
973 numeric/interval/arith2.hpp \
974 numeric/interval/arith3.hpp \
975 numeric/interval/checking.hpp \
976 numeric/interval/compare/certain.hpp \
977 numeric/interval/compare/explicit.hpp \
978 numeric/interval/compare/lexicographic.hpp \
979 numeric/interval/compare/possible.hpp \
980 numeric/interval/compare/set.hpp \
981 numeric/interval/compare.hpp \
982 numeric/interval/constants.hpp \
983 numeric/interval/detail/alpha_rounding_control.hpp \
984 numeric/interval/detail/bcc_rounding_control.hpp \
985 numeric/interval/detail/bugs.hpp \
986 numeric/interval/detail/c99sub_rounding_control.hpp \
987 numeric/interval/detail/c99_rounding_control.hpp \
988 numeric/interval/detail/division.hpp \
989 numeric/interval/detail/ia64_rounding_control.hpp \
990 numeric/interval/detail/interval_prototype.hpp \
991 numeric/interval/detail/msvc_rounding_control.hpp \
992 numeric/interval/detail/ppc_rounding_control.hpp \
993 numeric/interval/detail/sparc_rounding_control.hpp \
994 numeric/interval/detail/test_input.hpp \
995 numeric/interval/detail/x86gcc_rounding_control.hpp \
996 numeric/interval/detail/x86_rounding_control.hpp \
997 numeric/interval/hw_rounding.hpp \
998 numeric/interval/interval.hpp \
999 numeric/interval/policies.hpp \
1000 numeric/interval/rounded_arith.hpp \
1001 numeric/interval/rounded_transc.hpp \
1002 numeric/interval/rounding.hpp \
1003 numeric/interval/transc.hpp \
1004 numeric/interval/utility.hpp \
1005 numeric/interval.hpp \
1006 LICENSE_1_0.txt \
1007 limits.hpp non_type.hpp type.hpp
1008THIRDHDR = \
1009 $(BOOSTHDR:%=gecode/third-party/boost/%)
1010
1011#
1012# COLLECTING ALL
1013#
1014
1015ALLSRC = \
1016 $(SUPPORTSRC) $(KERNELSRC) $(SEARCHSRC) \
1017 $(INTSRC) $(FLOATSRC) $(SETSRC) $(MMSRC) $(DRIVERSRC) \
1018 $(INTEXAMPLESRC) $(SETEXAMPLESRC) $(FLOATEXAMPLESRC) $(MPFRFLOATEXAMPLESRC) \
1019 $(GISTSRC) $(FLATZINCALLSRC)
1020ALLGECODEHDR = \
1021 $(SUPPORTHDR) $(KERNELHDR) $(SEARCHHDR) \
1022 $(INTHDR) $(FLOATHDR) $(SETHDR) $(MMHDR) \
1023 $(DRIVERHDR) $(ITERHDR) $(GISTHDR) $(FLATZINCHDR) \
1024 $(INTEXAMPLEHDR)
1025ALLHDR = \
1026 $(ALLGECODEHDR) $(THIRDHDR)
1027ALLOBJ0 = $(ALLSRC:%.cpp=%$(OBJSUFFIX)) \
1028 $(GISTMOCSRC:%.cpp=%$(OBJSUFFIX)) \
1029 $(FLATZINC_GENSRC:%.cpp=%$(OBJSUFFIX))
1030ALLOBJ = $(ALLOBJ0:%.c=%$(OBJSUFFIX))
1031
1032ALLSBJ0 = $(ALLSRC:%.cpp=%$(SBJSUFFIX))
1033ALLSBJ = $(ALLSBJ0:%.c=%$(SBJSUFFIX))
1034
1035ifeq "@BUILDDLL@" "yes"
1036DLLTARGETS= \
1037 $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL) $(FLOATDLL) $(SETDLL) \
1038 $(MMDLL) $(DRIVERDLL) $(GISTDLL) $(FLATZINCDLL)
1039export ALLLIB = \
1040 $(SUPPORTLIB) $(KERNELLIB) $(SEARCHLIB) $(INTLIB) $(FLOATLIB) $(SETLIB) \
1041 $(MMLIB) $(DRIVERLIB) $(GISTLIB) $(FLATZINCLIB)
1042else
1043DLLTARGETS=
1044ifeq "@BUILD_MACOS_FRAMEWORK@" "yes"
1045export ALLLIB = gecode.framework/Versions/@GECODE_SOVERSION@/gecode
1046else
1047export ALLLIB = \
1048 $(SUPPORTSTATICLIB) $(KERNELSTATICLIB) $(SEARCHSTATICLIB) \
1049 $(INTSTATICLIB) $(FLOATSTATICLIB) $(SETSTATICLIB) $(MMSTATICLIB) \
1050 $(DRIVERSTATICLIB) $(GISTSTATICLIB) $(FLATZINCSTATICLIB)
1051endif
1052endif
1053
1054ifeq "@BUILDSTATIC@" "yes"
1055STATICTARGETS = \
1056 $(SUPPORTSTATICLIB) $(KERNELSTATICLIB) $(SEARCHSTATICLIB) \
1057 $(INTSTATICLIB) $(FLOATSTATICLIB) $(SETSTATICLIB) $(MMSTATICLIB) \
1058 $(DRIVERSTATICLIB) $(GISTSTATICLIB) $(FLATZINCSTATICLIB)
1059else
1060STATICTARGETS=
1061endif
1062
1063export LIBTARGETS = $(DLLTARGETS) $(STATICTARGETS)
1064
1065ifeq "@need_soname@" "yes"
1066export LIBLINKTARGETS = \
1067 $(DLLTARGETS:%$(DLLSUFFIX)=%$(SOSUFFIX)) \
1068 $(DLLTARGETS:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1069else
1070export LIBLINKTARGETS =
1071endif
1072
1073PDBS = $(ALLLIB:%$(LIBSUFFIX)=%$(PDBSUFFIX))
1074
1075ifeq "@INSTALLLIBS@" "yes"
1076LIBLIBTARGETS = $(ALLLIB)
1077PDBTARGETS = $(PDBS)
1078else
1079LIBLIBTARGETS =
1080PDBTARGETS =
1081endif
1082
1083EXETARGETS = $(FLATZINCEXE) tools/flatzinc/mzn-gecode@BATCHFILE@
1084
1085#
1086# Testing
1087#
1088
1089INTTESTSRC00 = \
1090 channel arithmetic basic bool count dom distinct element extensional \
1091 rel linear gcc sorted unshare exec sequence \
1092 mm-arithmetic mm-bool mm-lin mm-count mm-rel \
1093 bin-packing order unary cumulative cumulatives circuit \
1094 no-overlap precede nvalues member
1095INTTESTSRC0 = test/int.cpp $(INTTESTSRC00:%=test/int/%.cpp)
1096INTTESTOBJ = $(INTTESTSRC0:%.cpp=%$(OBJSUFFIX))
1097
1098FLOATTESTSRC00 = \
1099 basic arithmetic transcendental trigonometric linear rel channel \
1100 mm-lin dom
1101FLOATTESTSRC0 = test/float.cpp $(FLOATTESTSRC00:%=test/float/%.cpp)
1102
1103ifeq "@enable_float_vars@" "yes"
1104FLOATTESTOBJ = $(FLOATTESTSRC0:%.cpp=%$(OBJSUFFIX))
1105else
1106FLOATTESTOBJ=
1107endif
1108
1109SETTESTSRC00 = \
1110 construct dom rel rel-op rel-op-const convex sequence int element \
1111 precede distinct exec mm-set channel
1112SETTESTSRC0 = test/set.cpp $(SETTESTSRC00:%=test/set/%.cpp)
1113
1114ifeq "@enable_set_vars@" "yes"
1115SETTESTOBJ = $(SETTESTSRC0:%.cpp=%$(OBJSUFFIX))
1116else
1117SETTESTOBJ=
1118endif
1119
1120FLATZINCTESTSRC0 = \
1121 test/flatzinc.cpp \
1122 test/flatzinc/bool_clause.cpp \
1123 test/flatzinc/bug232.cpp \
1124 test/flatzinc/bug319.cpp \
1125 test/flatzinc/bugfix_r6746.cpp \
1126 test/flatzinc/bugfix_r7854.cpp \
1127 test/flatzinc/empty_domain_1.cpp \
1128 test/flatzinc/empty_domain_2.cpp \
1129 test/flatzinc/int_set_as_type1.cpp \
1130 test/flatzinc/int_set_as_type2.cpp \
1131 test/flatzinc/jobshop.cpp \
1132 test/flatzinc/no_warn_empty_domain.cpp \
1133 test/flatzinc/output_test.cpp \
1134 test/flatzinc/queens4.cpp \
1135 test/flatzinc/sat_arith1.cpp \
1136 test/flatzinc/sat_array_bool_and.cpp \
1137 test/flatzinc/sat_array_bool_or.cpp \
1138 test/flatzinc/sat_cmp_reif.cpp \
1139 test/flatzinc/sat_eq_reif.cpp \
1140 test/flatzinc/test_approx_bnb.cpp \
1141 test/flatzinc/test_array_just_right.cpp \
1142 test/flatzinc/test_assigned_var_bounds_bad.cpp \
1143 test/flatzinc/test_flatzinc_output_anns.cpp \
1144 test/flatzinc/test_fzn_arith.cpp \
1145 test/flatzinc/test_fzn_arrays.cpp \
1146 test/flatzinc/test_fzn_coercions.cpp \
1147 test/flatzinc/test_fzn_comparison.cpp \
1148 test/flatzinc/test_fzn_logic.cpp \
1149 test/flatzinc/test_fzn_sets.cpp \
1150 test/flatzinc/test_int_div.cpp \
1151 test/flatzinc/test_int_mod.cpp \
1152 test/flatzinc/test_int_ranges_as_values.cpp \
1153 test/flatzinc/test_seq_search.cpp \
1154 test/flatzinc/2dpacking.cpp \
1155 test/flatzinc/alpha.cpp \
1156 test/flatzinc/battleships1.cpp \
1157 test/flatzinc/battleships10.cpp \
1158 test/flatzinc/battleships2.cpp \
1159 test/flatzinc/battleships3.cpp \
1160 test/flatzinc/battleships4.cpp \
1161 test/flatzinc/battleships5.cpp \
1162 test/flatzinc/battleships7.cpp \
1163 test/flatzinc/battleships9.cpp \
1164 test/flatzinc/blocksworld_instance_1.cpp \
1165 test/flatzinc/blocksworld_instance_2.cpp \
1166 test/flatzinc/cumulatives.cpp \
1167 test/flatzinc/cutstock.cpp \
1168 test/flatzinc/eq20.cpp \
1169 test/flatzinc/factory_planning_instance.cpp \
1170 test/flatzinc/golomb.cpp \
1171 test/flatzinc/jobshop2x2.cpp \
1172 test/flatzinc/knights.cpp \
1173 test/flatzinc/langford2.cpp \
1174 test/flatzinc/latin_squares_fd.cpp \
1175 test/flatzinc/multidim_knapsack_simple.cpp \
1176 test/flatzinc/packing.cpp \
1177 test/flatzinc/perfsq.cpp \
1178 test/flatzinc/perfsq2.cpp \
1179 test/flatzinc/photo.cpp \
1180 test/flatzinc/product_fd.cpp \
1181 test/flatzinc/product_lp.cpp \
1182 test/flatzinc/quasigroup_qg5.cpp \
1183 test/flatzinc/queen_cp2.cpp \
1184 test/flatzinc/queen_ip.cpp \
1185 test/flatzinc/radiation.cpp \
1186 test/flatzinc/shared_array_element.cpp \
1187 test/flatzinc/simple_sat.cpp \
1188 test/flatzinc/singHoist2.cpp \
1189 test/flatzinc/sudoku.cpp \
1190 test/flatzinc/template_design.cpp \
1191 test/flatzinc/tenpenki_1.cpp \
1192 test/flatzinc/tenpenki_2.cpp \
1193 test/flatzinc/tenpenki_3.cpp \
1194 test/flatzinc/tenpenki_4.cpp \
1195 test/flatzinc/tenpenki_5.cpp \
1196 test/flatzinc/tenpenki_6.cpp \
1197 test/flatzinc/warehouses.cpp \
1198 test/flatzinc/warehouses_small.cpp \
1199 test/flatzinc/wolf_goat_cabbage.cpp \
1200 test/flatzinc/zebra.cpp \
1201 test/flatzinc/magicsq_3.cpp \
1202 test/flatzinc/magicsq_4.cpp \
1203 test/flatzinc/magicsq_5.cpp \
1204 test/flatzinc/oss.cpp \
1205 test/flatzinc/steiner_triples.cpp \
1206 test/flatzinc/timetabling.cpp \
1207 test/flatzinc/trucking.cpp
1208
1209ifeq "@enable_flatzinc@" "yes"
1210FLATZINCTESTOBJ = $(FLATZINCTESTSRC0:%.cpp=%$(OBJSUFFIX))
1211else
1212FLATZINCTESTOBJ=
1213endif
1214
1215BRANCHTESTSRC0 = \
1216 test/branch.cpp test/branch/int.cpp test/branch/bool.cpp \
1217 test/branch/set.cpp test/branch/float.cpp \
1218 test/assign.cpp test/assign/int.cpp test/assign/bool.cpp \
1219 test/assign/set.cpp test/assign/float.cpp
1220
1221SEARCHTESTSRC0 = \
1222 test/search.cpp test/nogoods.cpp
1223
1224ARRAYTESTSRC0 = \
1225 test/array.cpp
1226
1227TESTSRC0 = test/test.cpp test/afc.cpp test/ldsb.cpp test/region.cpp \
1228 test/groups.cpp
1229
1230TESTSRC = \
1231 $(TESTSRC0) $(INTTESTSRC0) $(SETTESTSRC0) $(FLOATTESTSRC0) \
1232 $(BRANCHTESTSRC0) $(SEARCHTESTSRC0) \
1233 $(ARRAYTESTSRC0) $(FLATZINCTESTSRC0)
1234
1235TESTHDR0 = \
1236 test.hh test.hpp int.hh int.hpp set.hh set.hpp float.hh float.hpp \
1237 branch.hh assign.hh flatzinc.hh
1238TESTHDR = $(TESTHDR0:%=test/%)
1239TESTOBJ = $(INTTESTOBJ) $(SETTESTOBJ) $(FLOATTESTOBJ) \
1240 $(FLATZINCTESTOBJ:%.cpp=%$(OBJSUFFIX)) \
1241 $(BRANCHTESTSRC0:%.cpp=%$(OBJSUFFIX)) \
1242 $(SEARCHTESTSRC0:%.cpp=%$(OBJSUFFIX)) \
1243 $(ARRAYTESTSRC0:%.cpp=%$(OBJSUFFIX)) \
1244 $(TESTSRC0:%.cpp=%$(OBJSUFFIX))
1245TESTSBJ = $(TESTOBJ:%$(OBJSUFFIX)=%$(SBJSUFFIX))
1246TESTEXE = test/test$(EXESUFFIX)
1247TESTBUILDDIRS = \
1248 test test/int test/set test/float \
1249 test/branch test/assign \
1250 test/flatzinc
1251
1252BUILDDIRS = \
1253 tools \
1254 $(SUPPORTBUILDDIRS:%=gecode/%) \
1255 $(KERNELBUILDDIRS:%=gecode/%) $(SEARCHBUILDDIRS:%=gecode/%) \
1256 $(INTBUILDDIRS:%=gecode/%) $(FLOATBUILDDIRS:%=gecode/%) $(SETBUILDDIRS:%=gecode/%) \
1257 $(MMBUILDDIRS:%=gecode/%) \
1258 $(DRIVERBUILDDIRS:%=gecode/%) \
1259 $(GISTBUILDDIRS:%=gecode/%) \
1260 $(FLATZINCBUILDDIRS) \
1261 $(EXAMPLEBUILDDIRS) $(TESTBUILDDIRS)
1262
1263ifeq "@enable_examples@" "yes"
1264all: compilelib
1265 @$(MAKE) compileexamples
1266 @$(MAKE) makecompletedmessage
1267else
1268all: compilelib
1269 @$(MAKE) makecompletedmessage
1270endif
1271compilelib: mkcompiledirs
1272 @$(MAKE) $(VARIMP) $(LIBTARGETS)
1273 @$(MAKE) compilesubdirs
1274 @$(MAKE) framework
1275 @$(MAKE) flatzinc
1276
1277compileexamples: $(EXAMPLEEXE)
1278
1279test: mkcompiledirs
1280 @$(MAKE) $(VARIMP) $(TESTEXE)
1281
1282# A basic integrity test
1283check: test
1284 $(RUNENVIRONMENT) $(TESTEXE) -iter 2 -test Branch::Int::Dense::3 \
1285 -test FlatZinc::magic_square \
1286 -test Int::Arithmetic::Abs \
1287 -test Int::Arithmetic::ArgMax \
1288 -test Int::Arithmetic::Max::Nary \
1289 -test Int::Cumulative::Man::Fix::0::4 \
1290 -test Int::Distinct::Random \
1291 -test Int::Linear::Bool::Int::Lq \
1292 -test Int::MiniModel::LinExpr::Bool::352 \
1293 -test NoGoods::Queens \
1294 -test Search::DFS::Sol::Binary::Nary::Binary::1::1::1 \
1295 -test Set::Dom::Dom::Gr \
1296 -test Set::RelOp::ConstSSI::Union \
1297 -test Set::Sequence::SeqU1 \
1298 -test Set::Wait
1299
1300ifeq "@top_srcdir@" "."
1301mkcompiledirs:
1302else
1303mkcompiledirs:
1304 for_builddirs="$(BUILDDIRS)"; for f in $$for_builddirs; do \
1305 (test -z "$(top_builddir)"/$$f || mkdir -p "$(top_builddir)"/$$f); \
1306 done
1307endif
1308
1309makecompletedmessage:
1310 @echo
1311 @echo Compilation of Gecode finished successfully. To use Gecode, either add
1312 @echo $(PWD)
1313 @echo to your search path for libraries, or install Gecode using
1314 @echo make install
1315 @echo
1316
1317# ugly hack by Gr�goire Dooms to call a target on a contribs after evaluating all the variables in this Makefile.
1318# used as make contribs:cpgraph:doc or make contribs:cpgraph:Makefile.in
1319.PHONY: contribs\:%
1320contribs\:%:
1321 $(MAKE) -C $(shell echo $@ | sed 's/\(contribs:[^:]*\):.*/\1/;s+:+/+') $(shell echo $@ | sed 's/contribs:[^:]*:\(.*\)/\1/;s+:+/+')
1322
1323# less ugly hack by Guido Tack to call a target
1324# Just give ICD (in-contrib-dir) and ICT (in-contrib-target) as arguments
1325# to make incontrib
1326ICT=
1327ICD=
1328.PHONY: incontrib
1329incontrib:
1330 $(MAKE) -C contribs/$(ICD) $(ICT)
1331
1332compilesubdirs:
1333 @for_subdirs="$(subdirs)"; for i in $$for_subdirs; do \
1334 if test -f $$i/Makefile; then \
1335 echo "Making in directory $$i"; \
1336 $(MAKE) -C $$i; \
1337 fi; \
1338 done
1339
1340#
1341# Generated variable implementations
1342#
1343
1344VIS = @ALLVIS@
1345VISDEP = $(VIS) \
1346 $(top_srcdir)/misc/genvarimp.perl Makefile
1347
1348gecode/kernel/var-type.hpp: $(VISDEP)
1349 perl $(top_srcdir)/misc/genvarimp.perl -typehpp $(VIS) > $@
1350gecode/kernel/var-imp.hpp: $(VISDEP)
1351 perl $(top_srcdir)/misc/genvarimp.perl -header $(VIS) > $@
1352
1353#
1354# Object targets
1355#
1356
1357gecode/support/%$(OBJSUFFIX): $(top_srcdir)/gecode/support/%.cpp
1358 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SUPPORT_FLAG@ \
1359 @COMPILEOBJ@$@ @CXXIN@$<
1360gecode/support/%$(SBJSUFFIX): $(top_srcdir)/gecode/support/%.cpp
1361 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SUPPORT_FLAG@ \
1362 @COMPILESBJ@$@ @CXXIN@$<
1363gecode/support/%$(OBJSUFFIX): $(top_srcdir)/gecode/support/%.c
1364 $(CC) $(CFLAGS) @GECODE_BUILD_SUPPORT_FLAG@ \
1365 @COMPILEOBJ@$@ @CCIN@$<
1366gecode/support/%$(SBJSUFFIX): $(top_srcdir)/gecode/support/%.c
1367 $(CC) $(CFLAGS) @GECODE_BUILD_SUPPORT_FLAG@ \
1368 @COMPILESBJ@$@ @CCIN@$<
1369
1370gecode/kernel/%$(OBJSUFFIX): $(top_srcdir)/gecode/kernel/%.cpp
1371 $(CXX) $(CXXFLAGS) @GECODE_BUILD_KERNEL_FLAG@ \
1372 @COMPILEOBJ@$@ @CXXIN@$<
1373gecode/kernel/%$(SBJSUFFIX): $(top_srcdir)/gecode/kernel/%.cpp
1374 $(CXX) $(CXXFLAGS) @GECODE_BUILD_KERNEL_FLAG@ \
1375 @COMPILESBJ@$@ @CXXIN@$<
1376
1377gecode/search/%$(OBJSUFFIX): $(top_srcdir)/gecode/search/%.cpp
1378 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SEARCH_FLAG@ \
1379 @COMPILEOBJ@$@ @CXXIN@$<
1380gecode/search/%$(SBJSUFFIX): $(top_srcdir)/gecode/search/%.cpp
1381 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SEARCH_FLAG@ \
1382 @COMPILESBJ@$@ @CXXIN@$<
1383
1384gecode/int/%$(OBJSUFFIX): $(top_srcdir)/gecode/int/%.cpp
1385 $(CXX) $(CXXFLAGS) @GECODE_BUILD_INT_FLAG@ \
1386 @COMPILEOBJ@$@ @CXXIN@$<
1387gecode/int/%$(SBJSUFFIX): $(top_srcdir)/gecode/int/%.cpp
1388 $(CXX) $(CXXFLAGS) @GECODE_BUILD_INT_FLAG@ \
1389 @COMPILESBJ@$@ @CXXIN@$<
1390
1391gecode/float/%$(OBJSUFFIX): $(top_srcdir)/gecode/float/%.cpp
1392 $(CXX) $(CXXFLAGS) $(MPFR_CPPFLAGS) @GECODE_BUILD_FLOAT_FLAG@ \
1393 @COMPILEOBJ@$@ @CXXIN@$<
1394gecode/float/%$(SBJSUFFIX): $(top_srcdir)/gecode/float/%.cpp
1395 $(CXX) $(CXXFLAGS) $(MPFR_CPPFLAGS) @GECODE_BUILD_FLOAT_FLAG@ \
1396 @COMPILESBJ@$@ @CXXIN@$<
1397
1398gecode/set/%$(OBJSUFFIX): $(top_srcdir)/gecode/set/%.cpp
1399 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SET_FLAG@ \
1400 @COMPILEOBJ@$@ @CXXIN@$<
1401gecode/set/%$(SBJSUFFIX): $(top_srcdir)/gecode/set/%.cpp
1402 $(CXX) $(CXXFLAGS) @GECODE_BUILD_SET_FLAG@ \
1403 @COMPILESBJ@$@ @CXXIN@$<
1404
1405gecode/minimodel/%$(OBJSUFFIX): $(top_srcdir)/gecode/minimodel/%.cpp
1406 $(CXX) $(CXXFLAGS) @GECODE_BUILD_MINIMODEL_FLAG@ \
1407 @COMPILEOBJ@$@ @CXXIN@$<
1408gecode/minimodel/%$(SBJSUFFIX): $(top_srcdir)/gecode/minimodel/%.cpp
1409 $(CXX) $(CXXFLAGS) @GECODE_BUILD_MINIMODEL_FLAG@ \
1410 @COMPILESBJ@$@ @CXXIN@$<
1411
1412gecode/driver/%$(OBJSUFFIX): $(top_srcdir)/gecode/driver/%.cpp
1413 $(CXX) $(CXXFLAGS) @GECODE_BUILD_DRIVER_FLAG@ \
1414 @COMPILEOBJ@$@ @CXXIN@$<
1415gecode/driver/%$(SBJSUFFIX): $(top_srcdir)/gecode/driver/%.cpp
1416 $(CXX) $(CXXFLAGS) @GECODE_BUILD_DRIVER_FLAG@ \
1417 @COMPILESBJ@$@ @CXXIN@$<
1418
1419
1420examples/%$(OBJSUFFIX): $(top_srcdir)/examples/%.cpp
1421 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) $(QT_CPPFLAGS) \
1422 @COMPILEOBJ@$@ @CXXIN@$<
1423examples/%$(SBJSUFFIX): $(top_srcdir)/examples/%.cpp
1424 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) $(QT_CPPFLAGS) \
1425 @COMPILESBJ@$@ @CXXIN@$<
1426
1427
1428test/%$(OBJSUFFIX): $(top_srcdir)/test/%.cpp
1429 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) \
1430 @COMPILEOBJ@$@ @CXXIN@$<
1431test/%$(SBJSUFFIX): $(top_srcdir)/test/%.cpp
1432 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) \
1433 @COMPILESBJ@$@ @CXXIN@$<
1434
1435tools/%$(OBJSUFFIX): $(top_srcdir)/tools/%.cpp
1436 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) \
1437 @COMPILEOBJ@$@ @CXXIN@$<
1438tools/%$(SBJSUFFIX): $(top_srcdir)/tools/%.cpp
1439 $(CXX) $(CXXFLAGS) $(EXAMPLES_EXTRA_CXXFLAGS) \
1440 @COMPILESBJ@$@ @CXXIN@$<
1441
1442$(GISTSRC:%.cpp=%$(OBJSUFFIX)): gecode/gist/%$(OBJSUFFIX): $(top_srcdir)/gecode/gist/%.cpp
1443 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1444 @GECODE_BUILD_GIST_FLAG@ \
1445 @COMPILEOBJ@$@ @CXXIN@$<
1446
1447$(GISTSRC:%.cpp=%$(SBJSUFFIX)): gecode/gist/%$(SBJSUFFIX): $(top_srcdir)/gecode/gist/%.cpp
1448 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1449 @GECODE_BUILD_GIST_FLAG@ \
1450 @COMPILESBJ@$@ @CXXIN@$<
1451
1452$(GISTMOCSRC:%.cpp=%$(OBJSUFFIX)): gecode/gist/moc_%$(OBJSUFFIX): gecode/gist/moc_%.cpp
1453 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1454 @GECODE_BUILD_GIST_FLAG@ \
1455 @COMPILEOBJ@$@ @CXXIN@$<
1456
1457$(GISTMOCSRC:%.cpp=%$(SBJSUFFIX)): gecode/gist/moc_%$(SBJSUFFIX): gecode/gist/moc_%.cpp
1458 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1459 @GECODE_BUILD_GIST_FLAG@ \
1460 @COMPILESBJ@$@ @CXXIN@$<
1461
1462.PRECIOUS: gecode/gist/moc_%.cpp
1463gecode/gist/moc_%.cpp: $(top_srcdir)/gecode/gist/%.hh
1464 $(MOC) $(CPPFLAGS) -pgecode/gist $< -o $@
1465
1466.PRECIOUS: gecode/flatzinc/%.cpp gecode/flatzinc/%.hh
1467ifeq "@HAVE_FLEXBISON@" "yes"
1468gecode/flatzinc/lexer.yy.cpp: \
1469 $(top_srcdir)/gecode/flatzinc/lexer.lxx \
1470 $(top_srcdir)/gecode/flatzinc/parser.tab.hpp
1471 flex -ogecode/flatzinc/lexer.yy.cpp \
1472 $(top_srcdir)/gecode/flatzinc/lexer.lxx
1473
1474gecode/flatzinc/parser.tab.hpp gecode/flatzinc/parser.tab.cpp: \
1475 $(top_srcdir)/gecode/flatzinc/parser.yxx
1476 bison -t -o gecode/flatzinc/parser.tab.cpp -d $<
1477else
1478ifneq "$(top_srcdir)" "."
1479gecode/flatzinc/lexer.yy.cpp: $(top_srcdir)/gecode/flatzinc/lexer.yy.cpp
1480 cp $(@:%=$(top_srcdir)/%) $@
1481gecode/flatzinc/parser.tab.hpp: $(top_srcdir)/gecode/flatzinc/parser.tab.hpp
1482 cp $(@:%=$(top_srcdir)/%) $@
1483gecode/flatzinc/parser.tab.cpp: $(top_srcdir)/gecode/flatzinc/parser.tab.cpp
1484 cp $(@:%=$(top_srcdir)/%) $@
1485endif
1486endif
1487
1488$(FLATZINCSRC:%.cpp=%$(OBJSUFFIX)): gecode/flatzinc/%$(OBJSUFFIX): $(top_srcdir)/gecode/flatzinc/%.cpp
1489 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1490 @GECODE_BUILD_FLATZINC_FLAG@ \
1491 @COMPILEOBJ@$@ @CXXIN@$<
1492
1493$(FLATZINCSRC:%.cpp=%$(SBJSUFFIX)): gecode/flatzinc/%$(SBJSUFFIX): $(top_srcdir)/gecode/flatzinc/%.cpp
1494 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1495 @GECODE_BUILD_FLATZINC_FLAG@ \
1496 @COMPILESBJ@$@ @CXXIN@$<
1497
1498$(FLATZINC_GENSRC:%.cpp=%$(OBJSUFFIX)): gecode/flatzinc/%$(OBJSUFFIX): gecode/flatzinc/%.cpp
1499 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1500 @GECODE_BUILD_FLATZINC_FLAG@ \
1501 @COMPILEOBJ@$@ @CXXIN@$<
1502
1503$(FLATZINC_GENSRC:%.cpp=%$(SBJSUFFIX)): gecode/flatzinc/%$(SBJSUFFIX): gecode/flatzinc/%.cpp
1504 $(CXX) $(CXXFLAGS) $(QT_CPPFLAGS) \
1505 @GECODE_BUILD_FLATZINC_FLAG@ \
1506 @COMPILESBJ@$@ @CXXIN@$<
1507
1508#
1509# DLL Targets
1510#
1511
1512ifeq "$(DLLSUFFIX)" "$(LIBSUFFIX)"
1513
1514ifeq "@BUILD_MACOS_FRAMEWORK@" "yes"
1515export LINKALL = -F. -framework gecode
1516else
1517export LINKALL = \
1518 $(LINKFLATZINC) $(LINKDRIVER) $(LINKGIST) \
1519 $(LINKSEARCH) $(LINKMM) $(LINKSET) $(LINKFLOAT) $(LINKMPFR) $(LINKINT) \
1520 $(LINKKERNEL) $(LINKSUPPORT)
1521endif
1522
1523$(SUPPORTDLL): $(SUPPORTOBJ)
1524 $(CXX) $(DLLFLAGS) $(SUPPORTOBJ) $(SUPPORTSONAME) \
1525 @LINKOUTPUT@$(SUPPORTDLL)
1526 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1527 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1528$(KERNELDLL): $(KERNELOBJ) $(SUPPORTDLL)
1529 $(CXX) $(DLLFLAGS) $(KERNELOBJ) $(KERNELSONAME) \
1530 @DLLPATH@ $(LINKSUPPORT) \
1531 @LINKOUTPUT@$(KERNELDLL)
1532 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1533 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1534$(SEARCHDLL): $(SEARCHOBJ) $(SUPPORTDLL) $(KERNELDLL)
1535 $(CXX) $(DLLFLAGS) $(SEARCHOBJ) $(SEARCHSONAME) \
1536 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) \
1537 @LINKOUTPUT@$(SEARCHDLL)
1538 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1539 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1540$(INTDLL): $(INTOBJ) $(SUPPORTDLL) $(KERNELDLL)
1541 $(CXX) $(DLLFLAGS) $(INTOBJ) $(INTSONAME) \
1542 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) \
1543 @LINKOUTPUT@$(INTDLL)
1544 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1545 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1546$(FLOATDLL): $(FLOATOBJ) $(SUPPORTDLL) $(KERNELDLL) $(INTDLL)
1547 $(CXX) $(DLLFLAGS) $(FLOATOBJ) $(FLOATSONAME) \
1548 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKINT) $(LINKMPFR)\
1549 @LINKOUTPUT@$(FLOATDLL)
1550 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1551 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1552$(SETDLL): $(SETOBJ) $(SUPPORTDLL) $(KERNELDLL) $(INTDLL)
1553 $(CXX) $(DLLFLAGS) $(SETOBJ) $(SETSONAME) \
1554 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKINT) \
1555 @LINKOUTPUT@$(SETDLL)
1556 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1557 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1558$(MMDLL): $(MMOBJ) $(SUPPORTDLL) $(KERNELDLL) $(INTDLL) $(SETDLL) $(FLOATDLL)
1559 $(CXX) $(DLLFLAGS) $(MMOBJ) $(MMSONAME) \
1560 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKINT) $(LINKFLOAT) $(LINKSET) \
1561 @LINKOUTPUT@$(MMDLL)
1562 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1563 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1564$(DRIVERDLL): $(DRIVEROBJ) $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL) $(MMDLL) $(GISTDLL)
1565 $(CXX) $(DLLFLAGS) $(DRIVEROBJ) $(DRIVERSONAME) \
1566 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKMM) $(LINKGIST) \
1567 @LINKOUTPUT@$(DRIVERDLL)
1568 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1569 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1570$(GISTDLL): $(GISTOBJ) $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL)
1571 $(CXX) $(DLLFLAGS) $(GISTOBJ) $(GISTSONAME) \
1572 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) $(LINKQT) \
1573 @LINKOUTPUT@$(GISTDLL)
1574 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1575 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1576$(FLATZINCDLL): $(FLATZINCOBJ) $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) \
1577 $(INTDLL) $(SETDLL) $(FLOATDLL) $(GISTDLL) $(MMDLL) $(DRIVERDLL)
1578 $(CXX) $(DLLFLAGS) $(FLATZINCOBJ) $(FLATZINCSONAME) \
1579 @DLLPATH@ $(LINKSUPPORT) $(LINKKERNEL) $(LINKSEARCH) $(LINKINT) \
1580 $(LINKSET) $(LINKFLOAT) $(LINKMM) $(LINKGIST) $(LINKDRIVER) $(LINKQT) \
1581 @LINKOUTPUT@$(FLATZINCDLL)
1582 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOLINKSUFFIX))
1583 $(CREATELINK) $@ $(@:%$(DLLSUFFIX)=%$(SOSUFFIX))
1584else
1585export LINKALL =
1586
1587ifeq "@enable_resource@" "yes"
1588$(SUPPORTRC):
1589 $(RCGEN) $(SUPPORTDLL) $(SUPPORTHDR) $(SUPPORTSRC) > $@
1590endif
1591$(SUPPORTDLL) $(SUPPORTLIB): $(SUPPORTOBJ) $(SUPPORTRES)
1592 $(CXX) $(DLLFLAGS) $(SUPPORTOBJ) $(SUPPORTRES) \
1593 @LINKOUTPUT@$(SUPPORTDLL) $(GLDFLAGS)
1594 $(FIXMANIFEST) $(SUPPORTDLL).manifest
1595 $(MANIFEST) -manifest $(SUPPORTDLL).manifest \
1596 -outputresource:$(SUPPORTDLL)\;2
1597ifeq "@enable_resource@" "yes"
1598$(KERNELRC):
1599 $(RCGEN) $(KERNELDLL) $(KERNELHDR) $(VARIMPHDR) $(KERNELSRC) > $@
1600endif
1601$(KERNELDLL) $(KERNELLIB): $(KERNELOBJ) $(KERNELRES) $(SUPPORTDLL)
1602 $(CXX) $(DLLFLAGS) $(KERNELOBJ) $(KERNELRES) \
1603 @DLLPATH@ @LINKOUTPUT@$(KERNELDLL) $(GLDFLAGS)
1604 $(FIXMANIFEST) $(KERNELDLL).manifest
1605 $(MANIFEST) -manifest $(KERNELDLL).manifest \
1606 -outputresource:$(KERNELDLL)\;2
1607ifeq "@enable_resource@" "yes"
1608$(SEARCHRC):
1609 $(RCGEN) $(SEARCHDLL) $(SEARCHHDR) $(SEARCHSRC) > $@
1610endif
1611$(SEARCHDLL) $(SEARCHLIB): $(SEARCHOBJ) $(SEARCHRES) $(SUPPORTDLL) $(KERNELDLL)
1612 $(CXX) $(DLLFLAGS) $(SEARCHOBJ) $(SEARCHRES) \
1613 @DLLPATH@ @LINKOUTPUT@$(SEARCHDLL) $(GLDFLAGS)
1614 $(FIXMANIFEST) $(SEARCHDLL).manifest
1615 $(MANIFEST) -manifest $(SEARCHDLL).manifest \
1616 -outputresource:$(SEARCHDLL)\;2
1617ifeq "@enable_resource@" "yes"
1618$(INTRC):
1619 $(RCGEN) $(INTDLL) $(INTHDR) $(INTSRC) > $@
1620endif
1621$(INTDLL) $(INTLIB): $(INTOBJ) $(INTRES) $(SUPPORTDLL) $(KERNELDLL)
1622 $(CXX) $(DLLFLAGS) $(INTOBJ) $(INTRES) \
1623 @DLLPATH@ @LINKOUTPUT@$(INTDLL) $(GLDFLAGS)
1624 $(FIXMANIFEST) $(INTDLL).manifest
1625 $(MANIFEST) -manifest $(INTDLL).manifest \
1626 -outputresource:$(INTDLL)\;2
1627ifeq "@enable_resource@" "yes"
1628$(FLOATRC):
1629 $(RCGEN) $(FLOATDLL) $(FLOATHDR) $(FLOATSRC) > $@
1630endif
1631$(FLOATDLL) $(FLOATLIB): $(FLOATOBJ) $(FLOATRES) $(SUPPORTDLL) $(KERNELDLL) $(INTDLL)
1632 $(CXX) $(DLLFLAGS) $(FLOATOBJ) $(FLOATRES) \
1633 @DLLPATH@ @LINKOUTPUT@$(FLOATDLL) $(GLDFLAGS) $(LINKMPFR)
1634 $(FIXMANIFEST) $(FLOATDLL).manifest
1635 $(MANIFEST) -manifest $(FLOATDLL).manifest \
1636 -outputresource:$(FLOATDLL)\;2
1637ifeq "@enable_resource@" "yes"
1638$(SETRC):
1639 $(RCGEN) $(SETDLL) $(SETHDR) $(SETSRC) > $@
1640endif
1641$(SETDLL) $(SETLIB): $(SETOBJ) $(SETRES) $(SUPPORTDLL) $(KERNELDLL) $(INTDLL)
1642 $(CXX) $(DLLFLAGS) $(SETOBJ) $(SETRES) \
1643 @DLLPATH@ @LINKOUTPUT@$(SETDLL) $(GLDFLAGS)
1644 $(FIXMANIFEST) $(SETDLL).manifest
1645 $(MANIFEST) -manifest $(SETDLL).manifest \
1646 -outputresource:$(SETDLL)\;2
1647ifeq "@enable_resource@" "yes"
1648$(MMRC):
1649 $(RCGEN) $(MMDLL) $(MMHDR) $(MMSRC) > $@
1650endif
1651$(MMDLL) $(MMLIB): $(MMOBJ) $(MMRES) \
1652 $(SUPPORTDLL) $(KERNELDLL) $(INTDLL) $(FLOATDLL) $(SETDLL)
1653 $(CXX) $(DLLFLAGS) $(MMOBJ) $(MMRES) \
1654 @DLLPATH@ @LINKOUTPUT@$(MMDLL) $(GLDFLAGS)
1655 $(FIXMANIFEST) $(MMDLL).manifest
1656 $(MANIFEST) -manifest $(MMDLL).manifest \
1657 -outputresource:$(MMDLL)\;2
1658ifeq "@enable_resource@" "yes"
1659$(DRIVERRC):
1660 $(RCGEN) $(DRIVERDLL) $(DRIVERHDR) $(DRIVERSRC) > $@
1661endif
1662$(DRIVERDLL) $(DRIVERLIB): $(DRIVEROBJ) $(DRIVERRES) \
1663 $(SUPPORTDLL) $(KERNELDLL) \
1664 $(SEARCHDLL) $(INTDLL) $(MMDLL) $(GISTDLL)
1665 $(CXX) $(DLLFLAGS) $(DRIVEROBJ) $(DRIVERRES) \
1666 @DLLPATH@ @LINKOUTPUT@$(DRIVERDLL) $(GLDFLAGS)
1667 $(FIXMANIFEST) $(DRIVERDLL).manifest
1668 $(MANIFEST) -manifest $(DRIVERDLL).manifest \
1669 -outputresource:$(DRIVERDLL)\;2
1670ifeq "@enable_resource@" "yes"
1671$(GISTRC):
1672 $(RCGEN) $(GISTDLL) $(GISTHDR) $(GISTSRC) > $@
1673endif
1674$(GISTDLL) $(GISTLIB): $(GISTOBJ) $(GISTRES) \
1675 $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL)
1676 $(CXX) $(DLLFLAGS) $(GISTOBJ) $(GISTRES) \
1677 @DLLPATH@ @LINKOUTPUT@$(GISTDLL) $(GLDFLAGS) $(LINKQT)
1678 $(FIXMANIFEST) $(GISTDLL).manifest
1679 $(MANIFEST) -manifest $(GISTDLL).manifest \
1680 -outputresource:$(GISTDLL)\;2
1681ifeq "@enable_resource@" "yes"
1682$(FLATZINCRC):
1683 $(RCGEN) $(FLATZINCDLL) $(FLATZINCHDR) $(FLATZINCSRC) > $@
1684endif
1685$(FLATZINCDLL) $(FLATZINCLIB): $(FLATZINCOBJ) $(FLATZINCRES) \
1686 $(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL) \
1687 $(SETDLL) $(FLOATDLL) $(GISTDLL) $(MMDLL) $(DRIVERDLL)
1688 $(CXX) $(DLLFLAGS) $(FLATZINCOBJ) $(FLATZINCRES) \
1689 @DLLPATH@ @LINKOUTPUT@$(FLATZINCDLL) $(GLDFLAGS) $(LINKQT)
1690 $(FIXMANIFEST) $(FLATZINCDLL).manifest
1691 $(MANIFEST) -manifest $(FLATZINCDLL).manifest \
1692 -outputresource:$(FLATZINCDLL)\;2
1693endif
1694
1695#
1696# Static libraries
1697#
1698
1699$(SUPPORTSTATICLIB): $(SUPPORTOBJ)
1700 $(AR) $(ARFLAGS) $@ $(SUPPORTOBJ)
1701 $(RANLIB) $@
1702$(KERNELSTATICLIB): $(KERNELOBJ)
1703 $(AR) $(ARFLAGS) $@ $(KERNELOBJ)
1704 $(RANLIB) $@
1705$(SEARCHSTATICLIB): $(SEARCHOBJ)
1706 $(AR) $(ARFLAGS) $@ $(SEARCHOBJ)
1707 $(RANLIB) $@
1708$(INTSTATICLIB): $(INTOBJ)
1709 $(AR) $(ARFLAGS) $@ $(INTOBJ)
1710 $(RANLIB) $@
1711$(FLOATSTATICLIB): $(FLOATOBJ)
1712 $(AR) $(ARFLAGS) $@ $(FLOATOBJ)
1713 $(RANLIB) $@
1714$(SETSTATICLIB): $(SETOBJ)
1715 $(AR) $(ARFLAGS) $@ $(SETOBJ)
1716 $(RANLIB) $@
1717$(MMSTATICLIB): $(MMOBJ)
1718 $(AR) $(ARFLAGS) $@ $(MMOBJ)
1719 $(RANLIB) $@
1720$(DRIVERSTATICLIB): $(DRIVEROBJ)
1721 $(AR) $(ARFLAGS) $@ $(DRIVEROBJ)
1722 $(RANLIB) $@
1723$(GISTSTATICLIB): $(GISTOBJ)
1724 $(AR) $(ARFLAGS) $@ $(GISTOBJ)
1725 $(RANLIB) $@
1726$(FLATZINCSTATICLIB): $(FLATZINCOBJ)
1727 $(AR) $(ARFLAGS) $@ $(FLATZINCOBJ)
1728 $(RANLIB) $@
1729
1730#
1731# Mac OS X Framework
1732#
1733
1734.PHONY: framework
1735ifeq "@BUILD_MACOS_FRAMEWORK@" "yes"
1736framework: gecode.framework/Versions/@GECODE_SOVERSION@/gecode
1737
1738gecode.framework/Versions/@GECODE_SOVERSION@/gecode: $(STATICTARGETS)
1739 $(RMF) gecode.framework
1740 mkdir -p gecode.framework/Versions/@GECODE_SOVERSION@
1741 $(CXX) -all_load -compatibility_version @GECODE_SOVERSION@.0 \
1742 -current_version @GECODE_SOVERSION@.0 \
1743 $(DLLFLAGS) $(LINKQT) \
1744 -o gecode.framework/Versions/@GECODE_SOVERSION@/gecode $^
1745 $(MAKE) doinstallheaders \
1746 prefix=gecode.framework/Versions/@GECODE_SOVERSION@ DESTDIR=
1747 mv gecode.framework/Versions/@GECODE_SOVERSION@/include/gecode/* \
1748 gecode.framework/Versions/@GECODE_SOVERSION@/include/
1749 rmdir gecode.framework/Versions/@GECODE_SOVERSION@/include/gecode
1750 cd gecode.framework/Versions && ln -s @GECODE_SOVERSION@ Current
1751 ln -s Versions/Current/include \
1752 gecode.framework/Headers
1753 ln -s Versions/Current/gecode \
1754 gecode.framework/gecode
1755else
1756framework:
1757endif
1758
1759#
1760# EXE Targets
1761#
1762
1763.PRECIOUS: examples/%$(OBJSUFFIX)
1764ifeq "@enable_resource@" "yes"
1765.PRECIOUS: examples/%$(EXESUFFIX).rc examples/%$(EXESUFFIX).res
1766examples/%$(EXESUFFIX).rc:
1767 $(RCGEN) $(@:%.rc=%) $< > $@
1768examples/%$(EXESUFFIX): examples/%$(OBJSUFFIX) examples/%$(EXESUFFIX).res \
1769 $(ALLLIB)
1770 $(CXX) @EXEOUTPUT@$@ $< $@.res \
1771 $(DLLPATH) $(CXXFLAGS) \
1772 $(LINKALL) $(GLDFLAGS) $(LINKQT)
1773 $(FIXMANIFEST) $@.manifest
1774 $(MANIFEST) -manifest $@.manifest -outputresource:$@\;1
1775else
1776examples/%$(EXESUFFIX): examples/%$(OBJSUFFIX) $(ALLLIB)
1777 $(CXX) @EXEOUTPUT@$@ $< $(DLLPATH) $(CXXFLAGS) \
1778 $(LINKALL) $(GLDFLAGS) $(LINKQT)
1779 $(FIXMANIFEST) $@.manifest
1780 $(MANIFEST) -manifest $@.manifest -outputresource:$@\;1
1781endif
1782
1783ifeq "@enable_resource@" "yes"
1784TESTRES = $(TESTEXE).res
1785$(TESTEXE).rc:
1786 $(RCGEN) $(TESTEXE) $(TESTSRC) $(TESTHDR) > $@
1787else
1788TESTRES =
1789endif
1790$(TESTEXE): $(TESTOBJ) $(TESTRES) $(ALLLIB)
1791 $(CXX) @EXEOUTPUT@$@ $(TESTOBJ) $(TESTRES) $(DLLPATH) $(CXXFLAGS) \
1792 $(LINKALL) $(GLDFLAGS) $(LINKQT)
1793 $(FIXMANIFEST) $@.manifest $(DLLSUFFIX)
1794 $(MANIFEST) -manifest $@.manifest -outputresource:$@\;1
1795
1796.PHONY: flatzinc
1797ifeq "@enable_flatzinc@" "yes"
1798flatzinc: $(FLATZINCEXE)
1799else
1800flatzinc:
1801endif
1802
1803ifeq "@enable_resource@" "yes"
1804FLATZINCEXERES = $(FLATZINCEXE).res
1805$(FLATZINCEXE).rc:
1806 $(RCGEN) $(FLATZINCEXE) $(FLATZINCEXESRC) > $@
1807else
1808FLATZINCEXERES =
1809endif
1810$(FLATZINCEXE): $(FLATZINCEXEOBJ) $(FLATZINCEXERES) $(ALLLIB)
1811 $(CXX) @EXEOUTPUT@$@ $(FLATZINCEXEOBJ) $(FLATZINCEXERES) \
1812 $(DLLPATH) $(CXXFLAGS) \
1813 $(LINKALL) $(GLDFLAGS) $(LINKSTATICQT)
1814 $(FIXMANIFEST) $@.manifest
1815 $(MANIFEST) -manifest $@.manifest -outputresource:$@\;1
1816
1817
1818#
1819# Autoconf
1820#
1821
1822$(top_srcdir)/configure: $(top_srcdir)/configure.ac
1823 (cd $(top_srcdir) && autoconf)
1824config.status: $(top_srcdir)/configure
1825 ./config.status --recheck
1826Makefile: $(top_srcdir)/Makefile.in config.status
1827 ./config.status --file $@:$<
1828doxygen.hh: $(top_srcdir)/doxygen/doxygen.hh.in config.status
1829 ./config.status --file $@:$<
1830doxygen.conf: $(top_srcdir)/doxygen/doxygen.conf.in config.status
1831 ./config.status --file $@:$<
1832
1833
1834#
1835# Documentation
1836#
1837
1838export ENABLEDOCCHM = @ENABLEDOCCHM@
1839export ENABLEDOCDOCSET = @ENABLEDOCDOCSET@
1840ENABLEDOCSEARCH = @ENABLEDOCSEARCH@
1841
1842.PHONY: doc
1843
1844DOCSRC_NOTGENERATED = \
1845 misc/doxygen/back.png misc/doxygen/footer.html \
1846 misc/doxygen/gecode-logo-100.png \
1847 misc/doxygen/stylesheet.css \
1848 misc/genlicense.perl misc/genstatistics.perl \
1849 misc/genchangelog.perl
1850DOCSRC = $(DOCSRC_NOTGENERATED:%=$(top_srcdir)/%) \
1851 doxygen.conf.use header.html \
1852 doxygen.hh license.hh stat.hh changelog.hh
1853
1854changelog.hh: $(top_srcdir)/changelog.in
1855 perl $(top_srcdir)/misc/genchangelog.perl < $^ > changelog.hh
1856
1857ChangeLog: $(top_srcdir)/changelog.in
1858 perl $(top_srcdir)/misc/gentxtchangelog.perl < $^ > ChangeLog
1859
1860license.hh: $(ALLGECODEHDR:%=$(top_srcdir)/%) $(ALLSRC:%=$(top_srcdir)/%) \
1861 $(VARIMPHDR)
1862 perl $(top_srcdir)/misc/genlicense.perl $^ > license.hh
1863
1864stat.hh: $(ALLGECODEHDR:%=$(top_srcdir)/%) $(ALLSRC:%=$(top_srcdir)/%) \
1865 $(TESTHDR:%=$(top_srcdir)/%) $(TESTSRC:%=$(top_srcdir)/%) \
1866 $(VARIMPHDR)
1867 perl $(top_srcdir)/misc/genstatistics.perl $^ > stat.hh
1868
1869
1870ifeq "@ENABLEDOCCHM@" "yes"
1871
1872DOCTARGET=GecodeReference.chm
1873
1874header.html: $(top_srcdir)/misc/doxygen/header.html doxygen.conf
1875 grep -v '<form.*form>' < $< > $@
1876doxygen.conf.use: doxygen.conf
1877 (echo "GENERATE_HTMLHELP = YES"; \
1878 echo "SEARCHENGINE = NO";\
1879 echo "HAVE_DOT = @GECODE_DOXYGEN_DOT@") | \
1880 cat $< - > $@
1881
1882doc: $(ALLGECODEHDR:%=$(top_srcdir)/%) $(VARIMPHDR) \
1883 $(ALLSRC:%=$(top_srcdir)/%) $(DOCSRC)
1884 mkdir -p doc/html
1885 cp -f $(top_srcdir)/misc/doxygen/back.png \
1886 $(top_srcdir)/misc/doxygen/gecode-logo-100.png doc/html
1887 doxygen doxygen.conf.use
1888 mv doc/html/GecodeReference.chm GecodeReference.chm
1889
1890else
1891ifeq "@ENABLEDOCDOCSET@" "yes"
1892
1893DOCTARGET=org.gecode.@VERSION@.docset
1894
1895header.html: $(top_srcdir)/misc/doxygen/header.html doxygen.conf
1896 grep -v '<form.*form>' < $< > $@
1897doxygen.conf.use: doxygen.conf
1898 (echo "SEARCHENGINE = NO";\
1899 echo "HAVE_DOT = @GECODE_DOXYGEN_DOT@";\
1900 echo "GENERATE_DOCSET = YES";\
1901 echo "DOCSET_BUNDLE_ID = org.gecode.@VERSION@";\
1902 echo "DOCSET_FEEDNAME = Gecode") | \
1903 cat $< - > $@
1904
1905doc: $(ALLGECODEHDR:%=$(top_srcdir)/%) $(VARIMPHDR) \
1906 $(ALLSRC:%=$(top_srcdir)/%) $(DOCSRC)
1907 mkdir -p doc/html
1908 cp -f $(top_srcdir)/misc/doxygen/back.png \
1909 $(top_srcdir)/misc/doxygen/gecode-logo-100.png doc/html
1910 doxygen doxygen.conf.use
1911 cd doc/html && make
1912 mv doc/html/$(DOCTARGET) .
1913
1914else
1915DOCTARGET=doc/html
1916
1917ifeq "@ENABLEDOCSEARCH@" "yes"
1918
1919header.html: $(top_srcdir)/misc/doxygen/header.html doxygen.conf
1920 cat < $< > $@
1921doxygen.conf.use: doxygen.conf
1922 (echo "GENERATE_HTMLHELP = NO"; \
1923 echo "SEARCHENGINE = YES"; \
1924 echo "SERVER_BASED_SEARCH = YES"; \
1925 echo "HAVE_DOT = @GECODE_DOXYGEN_DOT@") | \
1926 cat $< - > $@
1927else
1928
1929header.html: $(top_srcdir)/misc/doxygen/header.html doxygen.conf
1930 grep -v '<form.*form>' < $< > $@
1931doxygen.conf.use: doxygen.conf
1932 (echo "GENERATE_HTMLHELP = NO"; \
1933 echo "SEARCHENGINE = NO"; \
1934 echo "HAVE_DOT = @GECODE_DOXYGEN_DOT@") | \
1935 cat $< - > $@
1936
1937endif
1938
1939doc: $(ALLGECODEHDR:%=$(top_srcdir)/%) $(VARIMPHDR) \
1940 $(ALLSRC:%=$(top_srcdir)/%) $(DOCSRC)
1941 mkdir -p doc/html
1942 cp -f $(top_srcdir)/misc/doxygen/back.png \
1943 $(top_srcdir)/misc/doxygen/gecode-logo-100.png doc/html
1944 doxygen doxygen.conf.use
1945
1946ifeq "@ENABLEDOCSEARCH@" "yes"
1947 # Work around a doxygen bug (a missing div screws up the layout)
1948 mv doc/html/search.php doc/html/search2.php
1949 sed -e 's|<div class="qindex">|<div><div class="qindex">|' \
1950 doc/html/search2.php > doc/html/search.php
1951 rm doc/html/search2.php
1952endif
1953
1954endif
1955endif
1956
1957#
1958# Installation
1959#
1960
1961.PHONY: install
1962
1963ifeq "@BUILD_MACOS_FRAMEWORK@" "yes"
1964install: installframework
1965else
1966
1967ifeq "@enable_examples@" "yes"
1968install: installlib installexamples
1969else
1970install: installlib
1971endif
1972
1973endif
1974
1975doinstallheaders: $(ALLHDR:%=$(top_srcdir)/%) $(EXTRA_HEADERS) $(VARIMPHDR)
1976 mkdir -p $(DESTDIR)$(includedir) && \
1977 (cd $(top_srcdir) && tar cf - $(ALLHDR)) | \
1978 (cd $(DESTDIR)$(includedir) && tar xf -) && \
1979 for_varimpheaders="$(VARIMPHDR)" && \
1980 for f in $$for_varimpheaders; do \
1981 cp $$f $(DESTDIR)$(includedir)/gecode/kernel; done && \
1982 for_extraheaders="$(EXTRA_HEADERS)" && \
1983 for f in $$for_extraheaders; do \
1984 cp $$f $(DESTDIR)$(includedir)/$$f; done && \
1985 for_mznlib="$(FLATZINCMZNLIB)" && \
1986 mkdir -p $(DESTDIR)$(datadir)/minizinc/solvers; \
1987 cp $(FLATZINCCONFIG) $(DESTDIR)$(datadir)/minizinc/solvers/; \
1988 mkdir -p $(DESTDIR)$(datadir)/minizinc/gecode; \
1989 for f in $$for_mznlib; do \
1990 cp $(top_srcdir)/$$f/*.mzn \
1991 $(DESTDIR)$(datadir)/minizinc/gecode; done
1992
1993doinstalllib:
1994 mkdir -p $(DESTDIR)$(sharedlibdir) && \
1995 mkdir -p $(DESTDIR)$(libdir) && \
1996 mkdir -p $(DESTDIR)$(bindir) && \
1997 for_libtargets="$(LIBTARGETS) $(PDBTARGETS)" && \
1998 for f in $$for_libtargets; do \
1999 cp $$f $(DESTDIR)$(sharedlibdir); done && \
2000 for_liblinktargets="$(LIBLINKTARGETS)" && \
2001 for f in $$for_liblinktargets; do \
2002 cp -pR $$f $(DESTDIR)$(sharedlibdir); done &&\
2003 for_liblibtargets="$(LIBLIBTARGETS)" && \
2004 for f in $$for_liblibtargets; do \
2005 cp $$f $(DESTDIR)$(libdir); done &&\
2006 for_exetargets="$(EXETARGETS)" && \
2007 for f in $$for_exetargets; do \
2008 cp $$f $(DESTDIR)$(bindir); done
2009
2010ifeq "@BUILDSTATIC@" "yes"
2011ranliblib:
2012 for_static="$(STATICTARGETS)" ; \
2013 for f in $$for_static; do \
2014 $(RANLIB) $(DESTDIR)$(sharedlibdir)/$$f; done
2015else
2016ranliblib:
2017endif
2018
2019installlib: compilelib
2020 $(MAKE) doinstalllib
2021 $(MAKE) doinstallheaders
2022 $(MAKE) ranliblib
2023 $(MAKE) installsubdirs
2024
2025installexamples: compileexamples
2026 mkdir -p $(DESTDIR)$(bindir); \
2027 for_exampleexe="$(EXAMPLEEXE)" ; \
2028 for f in $$for_exampleexe; do cp $$f $(DESTDIR)$(bindir); done \
2029
2030installframework: framework
2031 mkdir -p $(DESTDIR)/Library/Frameworks/gecode.framework && \
2032 (cd gecode.framework && tar cf - *) | \
2033 (cd $(DESTDIR)/Library/Frameworks/gecode.framework && tar xf -)
2034
2035installdoc: doc
2036 mkdir -p $(DESTDIR)$(docdir); \
2037 cp -r $(DOCTARGET) $(DESTDIR)$(docdir)
2038
2039installsubdirs:
2040 @for_subdirs="$(subdirs)" ; for i in $$for_subdirs; do \
2041 cd $$i && if test -f Makefile; then \
2042 echo "Making install in directory $$i"; \
2043 $(MAKE) install; \
2044 fi; \
2045 done
2046
2047#
2048# Source Distribution
2049#
2050
2051.PHONY: distdoc
2052
2053ifeq "@ENABLEDOCSEARCH@" "yes"
2054DOCSUFFIX = search-$(VERSION)
2055else
2056DOCSUFFIX = $(VERSION)
2057endif
2058
2059distdoc: doc
2060 rm -rf gecode-doc-$(DOCSUFFIX) && \
2061 mv doc/html gecode-doc-$(DOCSUFFIX) && \
2062 $(TAR) cf - gecode-doc-$(DOCSUFFIX) | \
2063 gzip -9 > gecode-doc-$(DOCSUFFIX).tar.gz && \
2064 7z a -mx9 gecode-doc-$(DOCSUFFIX).7z gecode-doc-$(DOCSUFFIX) && \
2065 $(RMF) gecode-doc-$(DOCSUFFIX) && \
2066 if test -f doc/gecode-doc.tag; then \
2067 mv doc/gecode-doc.tag gecode-doc-$(DOCSUFFIX).tag && \
2068 gzip -9 gecode-doc-$(DOCSUFFIX).tag; \
2069 fi
2070
2071
2072#
2073# Maintenance targets
2074#
2075
2076clean:
2077 $(RMF) *.stackdump core gmon.out \
2078 vc70.pdb vc80.pdb vc90.pdb vc100.pdb vc110.pdb \
2079 vc120.pdb vc130.pdb vc140.pdb
2080 $(RMF) doxygen.log doxygen.hh doxygen.conf.use stat.hh \
2081 changelog.hh doxygen.hh license.hh header.html
2082 $(RMF) $(ALLOBJ) $(ALLSBJ) $(ALLOBJ:%$(OBJSUFFIX)=%.pdb)
2083 $(RMF) $(TESTOBJ) $(TESTSBJ) $(TESTOBJ:%$(OBJSUFFIX)=%.pdb)
2084 $(RMF) $(GISTMOCSRC)
2085 $(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%$(MANIFESTSUFFIX)) \
2086 $(LIBTARGETS:%$(DLLSUFFIX)=%$(RCSUFFIX)) \
2087 $(LIBTARGETS:%$(DLLSUFFIX)=%$(RESSUFFIX)) \
2088 $(LIBTARGETS:%$(DLLSUFFIX)=%$(EXPSUFFIX))
2089 $(RMF) $(EXAMPLEEXE:%.exe=%.pdb) $(EXAMPLEEXE:%=%.manifest) \
2090 $(EXAMPLEEXE:%=%.rc) $(EXAMPLEEXE:%=%.res)
2091 $(RMF) $(TESTEXE:%.exe=%.pdb) $(TESTEXE:%=%.manifest) \
2092 $(TESTEXE:%=%.rc) $(TESTEXE:%=%.res)
2093 $(RMF) $(FLATZINCEXE:%.exe=%.pdb) $(FLATZINCEXE:%=%.manifest) \
2094 $(FLATZINCEXE:%=%.rc) $(FLATZINCEXE:%=%.res)
2095
2096veryclean: clean
2097 $(RMF) $(LIBTARGETS) \
2098 $(LIBTARGETS:%$(DLLSUFFIX)=%$(LIBSUFFIX)) \
2099 $(LIBTARGETS:%$(DLLSUFFIX)=%$(PDBSUFFIX))
2100 $(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%$(SOLINKSUFFIX)) \
2101 $(LIBTARGETS:%$(DLLSUFFIX)=%$(SOSUFFIX))
2102 $(RMF) $(EXAMPLEEXE)
2103 $(RMF) $(TESTEXE)
2104 $(RMF) $(FLATZINCEXE)
2105 $(RMF) doc GecodeReference.chm ChangeLog
2106 $(RMF) $(ALLOBJ:%$(OBJSUFFIX)=%.gcno) $(TESTOBJ:%$(OBJSUFFIX)=%.gcno)
2107 $(RMF) $(ALLOBJ:%$(OBJSUFFIX)=%.gcda) $(TESTOBJ:%$(OBJSUFFIX)=%.gcda)
2108
2109distclean: veryclean
2110 $(RMF) $(VARIMP)
2111 $(RMF) Makefile doxygen.conf
2112 $(RMF) $(EXTRA_HEADERS)
2113 $(RMF) config.log config.status Makefile.dep
2114
2115depend: mkcompiledirs
2116 @$(MAKE) $(VARIMP) gecode/flatzinc/parser.tab.hpp
2117 perl $(top_srcdir)/misc/makedepend.perl \
2118 $(top_srcdir) \
2119 $(ALLSRC) \
2120 $(FLATZINC_GENSRC) \
2121 $(TESTSRC) > Makefile.dep
2122
2123-include Makefile.dep