1## Makefile.am
2##
3## Copyright (C) 2010,2018-2020 Free Software Foundation, Inc.
4##
5## This file is part of LibreDWG.
6##
7## LibreDWG is free software: you can redistribute it and/or modify it
8## under the terms of the GNU General Public License as published by
9## the Free Software Foundation, either version 3 of the License, or
10## (at your option) any later version.
11##
12## LibreDWG is distributed in the hope that it will be useful,
13## but WITHOUT ANY WARRANTY; without even the implied warranty
14## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15## See the GNU General Public License for more details.
16##
17## You should have received a copy of the GNU General Public License
18## along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20WARN_CFLAGS = @WARN_CFLAGS@
21AM_CFLAGS   = -I$(top_srcdir)/include -I$(top_srcdir)/src $(WARN_CFLAGS)
22LDADD       = $(top_builddir)/src/libredwg.la -lm
23
24bin_PROGRAMS    = dwgread
25noinst_PROGRAMS =
26dist_man1_MANS  = $(srcdir)/dwgread.1
27if !DISABLE_DXF
28bin_PROGRAMS   += dwgbmp dwg2dxf dwg2SVG dwglayers dwggrep
29dist_bin_SCRIPTS = dwgfilter
30dist_man1_MANS += $(srcdir)/dwgbmp.1 $(srcdir)/dwg2dxf.1 \
31	          $(srcdir)/dwg2SVG.1 $(srcdir)/dwglayers.1 \
32		  $(srcdir)/dwggrep.1 $(srcdir)/dwgfilter.1
33endif
34
35if !DISABLE_DXF
36if HAVE_LIBPS
37bin_PROGRAMS   += dwg2ps
38dist_man1_MANS += $(srcdir)/dwg2ps.1
39dwg2ps_SOURCES = dwg2ps.c geom.c
40dwg2ps_LDADD   = $(LDADD) -lps
41endif
42endif
43
44dwgread_SOURCES    = dwgread.c
45dwgbmp_SOURCES     = dwgbmp.c
46dwg2dxf_SOURCES    = dwg2dxf.c
47dwglayers_SOURCES  = dwglayers.c
48dwg2SVG_SOURCES    = dwg2SVG.c escape.c geom.c
49dwggrep_SOURCES    = dwggrep.c
50dwggrep_CFLAGS     = $(AM_CFLAGS) $(CFLAGS) $(PCRE2_CFLAGS)
51dwggrep_LDADD      = $(LDADD) $(PCRE2_LIBS)
52
53if USE_WRITE
54bin_PROGRAMS      += dwgrewrite
55dist_man1_MANS    += $(srcdir)/dwgrewrite.1
56dwgrewrite_SOURCES = dwgrewrite.c
57if !DISABLE_DXF
58bin_PROGRAMS      += dxf2dwg dwgwrite dxfwrite
59dist_man1_MANS    += $(srcdir)/dxf2dwg.1 $(srcdir)/dwgwrite.1 $(srcdir)/dxfwrite.1
60dxf2dwg_SOURCES    = dxf2dwg.c
61dwgwrite_SOURCES   = dwgwrite.c
62dxfwrite_SOURCES   = dxfwrite.c
63endif
64endif
65
66if HAVE_WINE
67TESTS_ENVIRONMENT = \
68 PROGS='$(bin_PROGRAMS)' \
69 DATADIR='$(top_srcdir)/test/test-data' \
70 TESTPROG='wine'
71else
72if DISABLE_DXF
73TESTS_ENVIRONMENT = \
74 PROGS='$(bin_PROGRAMS)' \
75 DATADIR='$(top_srcdir)/test/test-data' \
76 TESTPROG=''
77else
78TESTS_ENVIRONMENT = \
79 PROGS='$(bin_PROGRAMS)' \
80 DATADIR='$(top_srcdir)/test/test-data' \
81 TESTPROG=''
82endif
83endif
84
85TESTS = alive.test
86if !DISABLE_DXF
87TESTS += dxf.test
88if !DISABLE_JSON
89if HAVE_JQ
90TESTS += json.test
91endif
92endif
93if HAVE_JING
94TESTS += svg.test
95endif
96endif
97
98EXTRA_DIST  = suffix.inc escape.h geom.h common.inc $(TESTS) cmp_dxf.pl
99CLEANFILES  = {example_,sample_}*.{bmp,ps,svg,dxf,log}
100if USE_WRITE
101CLEANFILES += {example_,sample_}*rewrite.{dwg,log}
102CLEANFILES += {example_,sample_}*.dwg
103CLEANFILES += example_*.{log1,log2}
104endif
105MAINTAINERCLEANFILES = *_flymake.[ch] *~ *.i *.ii *.log
106DISTCLEANFILES       = core alive.test dxf.test json.test svg.test
107
108.PHONY: man dsymutil clean-dsymutil check-syntax
109
110.c.i:
111	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
112	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -E -o $@ $<
113
114.c.ii: # no linemarkers
115	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
116	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -E -P -o $@ $<
117
118man: $(dist_man1_MANS)
119
120if !HAVE_MINGW_CROSS
121# Note: These rules do not work cross-compiled
122regen-man: $(bin_PROGRAMS) $(noinst_PROGRAMS)
123	-for p in $(dist_man1_MANS); do \
124	  base=`basename $$p .1`; \
125	  help2man -p $(PACKAGE_NAME) -o $$p ./$$base$(EXEEXT); done
126endif
127
128#.c.1: $(bin_PROGRAMS) $(noinst_PROGRAMS)
129#	help2man -p LibreDWG -o $@ $(*F) || true
130
131dsymutil:
132	for e in $(bin_PROGRAMS) $(noinst_PROGRAMS); do dsymutil $$e; done
133clean-dsymutil:
134	for e in $(bin_PROGRAMS) $(noinst_PROGRAMS); do rm -rf $$e.dSYM; done
135
136# emacs flymake-mode
137check-syntax:
138	test -n "$(CHK_SOURCES)" && \
139	  $(COMPILE) -o /dev/null -S $(CHK_SOURCES)
140
141if ENABLE_GCOV
142AM_CFLAGS += @GCOV_CFLAGS@
143LIBS      += @GCOV_LIBS@
144gcov: $(CHECK)
145	-test -f gcov.log && rm gcov.log
146	$(GCOV) -lp *.gcno | tee -a $(builddir)/gcov.log
147
148CLEANFILES  += *.gcov *.gcno *.gcda gcov.log
149endif
150
151#TODO: alive.test => runtests with VALGRIND support
152@VALGRIND_CHECK_RULES@
153VALGRIND_SUPPRESSIONS_FILE = @VALGRIND_SUPPRESSIONS_FILE@
154VALGRIND_SUPPRESSIONS = @VALGRIND_SUPPRESSIONS@
155