interface/cpp.cc: store C++ callback function in a struct
[isl.git] / Makefile.am
blob5b42d17f8ba92cf62942efb4409e038c5aa8a69e
1 if HAVE_CLANG
2 MAYBE_INTERFACE = interface
3 FORCE:
4 interface/extract_interface: FORCE
5         $(MAKE) $(AM_MAKEFLAGS) -C interface extract_interface
6 endif
7 SUBDIRS = . $(MAYBE_INTERFACE) doc
8 DIST_SUBDIRS = $(MAYBE_INTERFACE) doc
10 ACLOCAL_AMFLAGS = -I m4
11 AUTOMAKE_OPTIONS = nostdinc subdir-objects
13 lib_LTLIBRARIES = libisl.la
14 noinst_PROGRAMS = isl_test isl_polyhedron_sample isl_pip \
15         isl_polyhedron_minimize isl_polytope_scan \
16         isl_polyhedron_detect_equalities isl_cat \
17         isl_closure isl_bound isl_schedule isl_codegen isl_test_int \
18         isl_flow isl_flow_cmp isl_schedule_cmp
19 TESTS = isl_test codegen_test.sh pip_test.sh bound_test.sh isl_test_int \
20         flow_test.sh schedule_test.sh
21 if HAVE_CLANG
22 if HAVE_CXX11
23   noinst_PROGRAMS += isl_test_cpp-checked
24   TESTS += isl_test_cpp-checked
25 endif
26 if HAVE_PYTHON
27   TESTS += isl_test_python.py
28   isl_test_python.py: interface/isl.py libisl.la
29 endif
30 endif
31 TEST_EXTENSIONS = .py
32 AM_TESTS_ENVIRONMENT = \
33         export PYTHONPATH=interface; \
34         export LD_LIBRARY_PATH=.libs;
35 PY_LOG_COMPILER = $(PYTHON)
37 if IMATH_FOR_MP
39 MP_SRC = \
40         isl_imath.c \
41         isl_imath.h \
42         isl_int_imath.h \
43         imath_wrap/gmp_compat.h \
44         imath_wrap/imath.h \
45         imath_wrap/imrat.h \
46         imath_wrap/wrap.h \
47         imath_wrap/gmp_compat.c \
48         imath_wrap/imath.c \
49         imath_wrap/imrat.c
51 noinst_PROGRAMS += isl_test_imath
52 TESTS += isl_test_imath
54 if SMALL_INT_OPT
55 MP_SRC += isl_int_sioimath.h \
56         isl_int_sioimath.c \
57         isl_val_sioimath.c
58 else
59 MP_SRC += isl_val_imath.c
60 endif
62 MP_INCLUDE_H =
63 endif
65 if GMP_FOR_MP
66 if NEED_GET_MEMORY_FUNCTIONS
67 GET_MEMORY_FUNCTIONS=mp_get_memory_functions.c
68 endif
70 MP_SRC = \
71         $(GET_MEMORY_FUNCTIONS) \
72         isl_int_gmp.h \
73         isl_gmp.c \
74         isl_val_gmp.c
76 MP_INCLUDE_H = include/isl/val_gmp.h
77 endif
79 includes = -I. -I$(srcdir) -I$(srcdir)/include -Iinclude/
80 AM_CPPFLAGS = $(includes) @MP_CPPFLAGS@
81 AM_CFLAGS = @WARNING_FLAGS@
83 libisl_la_SOURCES = \
84         $(MP_SRC) \
85         isl_aff.c \
86         isl_aff_private.h \
87         isl_affine_hull.c \
88         isl_arg.c \
89         isl_ast.c \
90         isl_ast_private.h \
91         isl_ast_build.c \
92         isl_ast_build_private.h \
93         isl_ast_build_expr.c \
94         isl_ast_build_expr.h \
95         isl_ast_codegen.c \
96         isl_ast_graft.c \
97         isl_ast_graft_private.h \
98         isl_basis_reduction.h \
99         basis_reduction_tab.c \
100         isl_bernstein.c \
101         isl_bernstein.h \
102         isl_blk.c \
103         isl_blk.h \
104         isl_bound.c \
105         isl_bound.h \
106         isl_coalesce.c \
107         isl_constraint.c \
108         isl_constraint_private.h \
109         isl_convex_hull.c \
110         isl_ctx.c \
111         isl_ctx_private.h \
112         isl_deprecated.c \
113         isl_dim_map.h \
114         isl_dim_map.c \
115         isl_equalities.c \
116         isl_equalities.h \
117         isl_factorization.c \
118         isl_factorization.h \
119         isl_farkas.c \
120         isl_ffs.c \
121         isl_flow.c \
122         isl_fold.c \
123         isl_hash.c \
124         isl_hash_private.h \
125         isl_id_to_ast_expr.c \
126         isl_id_to_id.c \
127         isl_id_to_pw_aff.c \
128         isl_ilp.c \
129         isl_ilp_private.h \
130         isl_input.c \
131         isl_int.h \
132         isl_local.h \
133         isl_local.c \
134         isl_local_space_private.h \
135         isl_local_space.c \
136         isl_lp.c \
137         isl_lp_private.h \
138         isl_map.c \
139         isl_map_list.c \
140         isl_map_simplify.c \
141         isl_map_subtract.c \
142         isl_map_private.h \
143         isl_map_to_basic_set.c \
144         isl_mat.c \
145         isl_mat_private.h \
146         isl_morph.c \
147         isl_morph.h \
148         isl_id.c \
149         isl_id_private.h \
150         isl_obj.c \
151         isl_options.c \
152         isl_options_private.h \
153         isl_output.c \
154         isl_output_private.h \
155         isl_point_private.h \
156         isl_point.c \
157         isl_polynomial_private.h \
158         isl_polynomial.c \
159         isl_printer_private.h \
160         isl_printer.c \
161         print.c \
162         isl_range.c \
163         isl_range.h \
164         isl_reordering.c \
165         isl_reordering.h \
166         isl_sample.h \
167         isl_sample.c \
168         isl_scan.c \
169         isl_scan.h \
170         isl_schedule.c \
171         isl_schedule_band.c \
172         isl_schedule_band.h \
173         isl_schedule_node.c \
174         isl_schedule_node_private.h \
175         isl_schedule_read.c \
176         isl_schedule_tree.c \
177         isl_schedule_tree.h \
178         isl_schedule_private.h \
179         isl_schedule_constraints.c \
180         isl_schedule_constraints.h \
181         isl_scheduler.c \
182         isl_set_list.c \
183         isl_sort.c \
184         isl_sort.h \
185         isl_space.c \
186         isl_space_private.h \
187         isl_stream.c \
188         isl_stream_private.h \
189         isl_seq.c \
190         isl_seq.h \
191         isl_stride.c \
192         isl_tab.c \
193         isl_tab.h \
194         isl_tab_pip.c \
195         isl_tarjan.c \
196         isl_tarjan.h \
197         isl_transitive_closure.c \
198         isl_union_map.c \
199         isl_union_map_private.h \
200         isl_union_set_private.h \
201         isl_val.c \
202         isl_val_private.h \
203         isl_vec_private.h \
204         isl_vec.c \
205         isl_version.c \
206         isl_vertices_private.h \
207         isl_vertices.c \
208         isl_yaml.h
209 libisl_la_LIBADD = @MP_LIBS@
210 libisl_la_LDFLAGS = -version-info @versioninfo@ \
211         @MP_LDFLAGS@
213 isl_test_LDFLAGS = @MP_LDFLAGS@
214 isl_test_LDADD = libisl.la @MP_LIBS@
216 isl_test_int_LDFLAGS = @MP_LDFLAGS@
217 isl_test_int_LDADD = libisl.la @MP_LIBS@
219 if IMATH_FOR_MP
220 isl_test_imath_LDFLAGS = @MP_LDFLAGS@
221 isl_test_imath_LDADD = libisl.la @MP_LIBS@
222 endif
224 isl_polyhedron_sample_LDADD = libisl.la
225 isl_polyhedron_sample_SOURCES = \
226         polyhedron_sample.c
228 isl_pip_LDFLAGS = @MP_LDFLAGS@
229 isl_pip_LDADD = libisl.la @MP_LIBS@
230 isl_pip_SOURCES = \
231         pip.c
233 isl_schedule_LDFLAGS = @MP_LDFLAGS@
234 isl_schedule_LDADD = libisl.la @MP_LIBS@
235 isl_schedule_SOURCES = \
236         schedule.c
238 isl_schedule_cmp_LDFLAGS = @MP_LDFLAGS@
239 isl_schedule_cmp_LDADD = libisl.la @MP_LIBS@
240 isl_schedule_cmp_SOURCES = \
241         schedule_cmp.c
243 isl_flow_LDFLAGS = @MP_LDFLAGS@
244 isl_flow_LDADD = libisl.la @MP_LIBS@
245 isl_flow_SOURCES = \
246         flow.c
248 isl_flow_cmp_LDFLAGS = @MP_LDFLAGS@
249 isl_flow_cmp_LDADD = libisl.la @MP_LIBS@
250 isl_flow_cmp_SOURCES = \
251         flow_cmp.c
253 isl_codegen_LDFLAGS = @MP_LDFLAGS@
254 isl_codegen_LDADD = libisl.la @MP_LIBS@
255 isl_codegen_SOURCES = \
256         codegen.c
258 isl_bound_LDFLAGS = @MP_LDFLAGS@
259 isl_bound_LDADD = libisl.la @MP_LIBS@
260 isl_bound_SOURCES = \
261         bound.c
263 isl_polyhedron_minimize_LDFLAGS = @MP_LDFLAGS@
264 isl_polyhedron_minimize_LDADD = libisl.la @MP_LIBS@
265 isl_polyhedron_minimize_SOURCES = \
266         polyhedron_minimize.c
268 isl_polytope_scan_LDADD = libisl.la
269 isl_polytope_scan_SOURCES = \
270         polytope_scan.c
272 isl_polyhedron_detect_equalities_LDADD = libisl.la
273 isl_polyhedron_detect_equalities_SOURCES = \
274         polyhedron_detect_equalities.c
276 isl_cat_LDADD = libisl.la
277 isl_cat_SOURCES = \
278         cat.c
280 isl_closure_LDADD = libisl.la
281 isl_closure_SOURCES = \
282         closure.c
284 isl_test_cpp_checked_CXXFLAGS = @CXX11FLAGS@
285 isl_test_cpp_checked_SOURCES = \
286         isl_test_cpp-checked.cc \
287         include/isl/cpp-checked.h
288 isl_test_cpp_checked_LDFLAGS = @MP_LDFLAGS@
289 isl_test_cpp_checked_LDADD = libisl.la @MP_LIBS@
291 # dummy library that captures the dependencies on all headers
292 # that are relevant for the bindings
293 noinst_LIBRARIES = libdep.a
294 libdep_a_SOURCES = all.c
296 if HAVE_CLANG
297 interface/isl.py: interface/extract_interface libdep.a python/isl.py.top
298         (cat $(srcdir)/python/isl.py.top && \
299                 interface/extract_interface$(EXEEXT) --language=python \
300                         $(includes) $(srcdir)/all.h) \
301                         > $@ || (rm $@ && false)
303 include/isl/cpp-checked.h: interface/extract_interface libdep.a \
304                 cpp/cpp-checked.h.top \
305                 cpp/cpp-checked.h.pre cpp/cpp-checked.h.bot
306         (cat $(srcdir)/cpp/cpp-checked.h.top $(srcdir)/all.h \
307             $(srcdir)/cpp/cpp-checked.h.pre && \
308                 interface/extract_interface$(EXEEXT) \
309                         --language=cpp-checked \
310                         $(includes) $(srcdir)/all.h && \
311                 cat $(srcdir)/cpp/cpp-checked.h.bot) \
312                         > $@ || (rm $@ && false)
313 endif
315 nodist_pkginclude_HEADERS = \
316         include/isl/stdint.h
317 pkginclude_HEADERS = \
318         $(MP_INCLUDE_H) \
319         include/isl/aff.h \
320         include/isl/aff_type.h \
321         include/isl/arg.h \
322         include/isl/ast.h \
323         include/isl/ast_type.h \
324         include/isl/ast_build.h \
325         include/isl/constraint.h \
326         include/isl/ctx.h \
327         include/isl/flow.h \
328         include/isl/id.h \
329         include/isl/id_to_ast_expr.h \
330         include/isl/id_to_id.h \
331         include/isl/id_to_pw_aff.h \
332         include/isl/ilp.h \
333         include/isl/hash.h \
334         include/isl/hmap.h \
335         include/isl/hmap_templ.c \
336         include/isl/list.h \
337         include/isl/local_space.h \
338         include/isl/lp.h \
339         include/isl/mat.h \
340         include/isl/map.h \
341         include/isl/map_to_basic_set.h \
342         include/isl/map_type.h \
343         include/isl/maybe.h \
344         include/isl/maybe_ast_expr.h \
345         include/isl/maybe_basic_set.h \
346         include/isl/maybe_id.h \
347         include/isl/maybe_pw_aff.h \
348         include/isl/maybe_templ.h \
349         include/isl/multi.h \
350         include/isl/obj.h \
351         include/isl/options.h \
352         include/isl/point.h \
353         include/isl/polynomial.h \
354         include/isl/polynomial_type.h \
355         include/isl/printer.h \
356         include/isl/printer_type.h \
357         include/isl/schedule.h \
358         include/isl/schedule_node.h \
359         include/isl/schedule_type.h \
360         include/isl/set.h \
361         include/isl/set_type.h \
362         include/isl/space.h \
363         include/isl/stream.h \
364         include/isl/union_map.h \
365         include/isl/union_map_type.h \
366         include/isl/union_set.h \
367         include/isl/union_set_type.h \
368         include/isl/val.h \
369         include/isl/vec.h \
370         include/isl/version.h \
371         include/isl/vertices.h
373 if HAVE_CLANG
374     CPP_INTERFACE = include/isl/cpp-checked.h
375 endif
376 BUILT_SOURCES = gitversion.h $(CPP_INTERFACE)
377 CLEANFILES = gitversion.h interface/isl.py $(CPP_INTERFACE)
379 DISTCLEANFILES = \
380         isl-uninstalled.sh \
381         isl-uninstalled.pc \
382         isl.pc \
383         isl.pc.in \
384         include/isl/stdint.h
386 EXTRA_DIST = \
387         LICENSE \
388         isl_config_post.h \
389         basis_reduction_templ.c \
390         bset_to_bmap.c \
391         bset_from_bmap.c \
392         extract_key.c \
393         isl_list_templ.c \
394         isl_list_templ.h \
395         isl_map_lexopt_templ.c \
396         isl_maybe_map.h \
397         isl_multi_macro.h \
398         isl_multi_templ.c \
399         isl_multi_templ.h \
400         isl_multi_apply_templ.c \
401         isl_multi_apply_set.c \
402         isl_multi_apply_union_set.c \
403         isl_multi_cmp.c \
404         isl_multi_coalesce.c \
405         isl_multi_dims.c \
406         isl_multi_floor.c \
407         isl_multi_gist.c \
408         isl_multi_hash.c \
409         isl_multi_intersect.c \
410         print_templ.c \
411         print_templ_yaml.c \
412         isl_power_templ.c \
413         isl_pw_macro.h \
414         isl_pw_templ.c \
415         isl_pw_hash.c \
416         isl_pw_union_opt.c \
417         read_in_string_templ.c \
418         set_to_map.c \
419         set_from_map.c \
420         isl_tab_lexopt_templ.c \
421         uset_to_umap.c \
422         isl_union_macro.h \
423         isl_union_templ.c \
424         isl_union_single.c \
425         isl_union_multi.c \
426         isl_union_eval.c \
427         isl_union_neg.c \
428         libisl-gdb.py \
429         doc/CodingStyle \
430         doc/SubmittingPatches \
431         doc/implementation.tex \
432         doc/isl.bib \
433         doc/mypod2latex \
434         doc/manual.tex \
435         doc/reading.tex \
436         doc/user.pod \
437         imath/gmp_compat.c \
438         imath/gmp_compat.h \
439         imath/imath.c \
440         imath/imath.h \
441         imath/imrat.c \
442         imath/imrat.h \
443         all.h \
444         cpp \
445         python \
446         isl_test_cpp-generic.cc \
447         isl_test_python.py \
448         test_inputs
450 if HAVE_CLANG
451 dist-hook: interface/isl.py
452         cp interface/isl.py $(distdir)/interface/
453 else
454 dist-hook:
455 endif
456         echo @GIT_HEAD_VERSION@ > $(distdir)/GIT_HEAD_ID
457         (cd doc; make manual.pdf)
458         cp doc/manual.pdf $(distdir)/doc/
460 pkgconfigdir=$(pkgconfig_libdir)
461 pkgconfig_DATA = $(pkgconfig_libfile)
463 gitversion.h: @GIT_HEAD@
464         $(AM_V_GEN)echo '#define GIT_HEAD_ID "'@GIT_HEAD_VERSION@'"' > $@
466 install-data-local: $(srcdir)/libisl-gdb.py
467         @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
468                  $(builddir)/libisl.la`; \
469         case $$libisl in \
470         '') echo Cannot find isl library name. GDB bindings not installed.;; \
471         *) echo $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
472                 $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
473         test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"; \
474         $(INSTALL_DATA) $(srcdir)/libisl-gdb.py \
475             $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
476         esac
478 uninstall-local:
479         @libisl=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
480                  $(builddir)/libisl.la`; \
481         if test -n "$${libisl}"; then \
482                 rm -f $(DESTDIR)$(libdir)/$$libisl-gdb.py; \
483         fi