xref: /Universal-ctags/Makefile.am (revision 72ae698186a95e6b87de4fb39d82b76eb3190c03)
1ACLOCAL_AMFLAGS = -I m4
2#AM_CPPFLAGS = -I$(top_builddir)/gnulib -I$(top_srcdir)/gnulib
3GNULIB_DIR = gnulib
4GNULIB_CPPFLAGS = -I$(top_builddir)/$(GNULIB_DIR) -I$(top_srcdir)/$(GNULIB_DIR)
5GNULIB_LIBS = $(GNULIB_DIR)/libgnu.a $(LIBPTHREAD)
6$(GNULIB_LIBS):
7	$(MAKE) -C $(GNULIB_DIR) all
8SUBDIRS = $(GNULIB_DIR) . man
9
10include $(top_srcdir)/source.mak
11
12PACKCC_FILES = misc/packcc/.gitignore   \
13	       misc/packcc/README.md    \
14	       misc/packcc/LICENSE      \
15	       misc/packcc/src/packcc.c \
16	       \
17	       $(NULL)
18
19EXTRA_DIST   = README.md autogen.sh \
20	       misc/optlib2c \
21	       .ctags.d/exclusion.ctags .dir-locals.el .editorconfig .gdbinit .gitignore \
22	       .indent.pro .uncrustify.cfg \
23	       misc/ctags-optlib-mode.el \
24	       misc/mk-interactive-request.sh misc/roundtrip misc/tinst \
25	       $(PACKCC_FILES) \
26	       misc/validators/validator-jq \
27	       misc/validators/validator-KNOWN-INVALIDATION \
28	       misc/validators/validator-NONE \
29	       misc/validators/validator-puppet \
30	       $(WIN32_HEADS) $(WIN32_SRCS) mk_mingw.mak mk_mvc.mak \
31	       win32/mkstemp/COPYING.MinGW-w64-runtime.txt \
32	       win32/ctags.rc win32/ctags.exe.manifest win32/resource.h \
33	       win32/ctags_vs2013.sln \
34	       win32/ctags_vs2013.vcxproj win32/ctags_vs2013.vcxproj.filters \
35	       win32/ctags_vs2013.vcxproj.in win32/ctags_vs2013.vcxproj.filters.in \
36	       win32/GNUmakefile \
37	       win32/gen-repoinfo.bat \
38	       misc/txt2cstr \
39	       $(PEG_INPUT) $(OPTLIB2C_INPUT) $(OPTLIB2C_PCRE2_INPUT) $(TXT2CSTR_INPUT) \
40	       docs Tmain Units m4/gnulib-cache.m4
41
42CLEANFILES =
43MOSTLYCLEANFILES =
44MAINTAINERCLEANFILES = autom4te.cache
45
46# for distcheck
47clean-local:
48	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
49		rm -rf $(OPTLIB2C_SRCS) $(OPTLIB2C_PCRE2_SRCS); \
50		rm -rf $(TXT2CSTR_SRCS); \
51	else \
52		$(MAKE) -C docs clean; \
53	fi
54
55maintainer-clean-local:
56	rm -rf .deps misc/packcc/.dirstamp
57
58bin_PROGRAMS = ctags
59noinst_LIBRARIES =
60noinst_LIBRARIES += libctags.a
61noinst_LIBRARIES += libutil.a
62
63noinst_PROGRAMS =
64
65# packcc always uses native compiler even when cross-compiling.
66# packcc cannot use the standard Automake rule.
67PACKCC_CPPFLAGS_FOR_BUILD  = -fsigned-char
68if HAVE_STRNLEN_FOR_BUILD
69PACKCC_CPPFLAGS_FOR_BUILD += -DPCC_USE_SYSTEM_STRNLEN
70endif
71
72PACKCC = $(top_builddir)/packcc$(BUILD_EXEEXT)
73CLEANFILES += $(PACKCC)
74
75cc4b_verbose = $(cc4b_verbose_@AM_V@)
76cc4b_verbose_ = $(cc4b_verbose_@AM_DEFAULT_V@)
77cc4b_verbose_0 = @echo CC4BUILD "  $@";
78$(PACKCC): $(srcdir)/$(PACKCC_SRC)
79	$(cc4b_verbose)$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(PACKCC_CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $(srcdir)/$(PACKCC_SRC)
80
81if USE_READCMD
82bin_PROGRAMS+= readtags
83readtags_CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/main -I$(srcdir)/libreadtags
84if ENABLE_DEBUGGING
85readtags_CPPFLAGS+= $(DEBUG_CPPFLAGS)
86endif
87readtags_CFLAGS = $(COVERAGE_CFLAGS) $(WARNING_CFLAGS)
88dist_readtags_SOURCES = $(READTAGS_SRCS) $(READTAGS_HEADS)
89readtags_CPPFLAGS += $(GNULIB_CPPFLAGS)
90readtags_CPPFLAGS += -DREADTAGS_DSL -I$(srcdir)/dsl
91readtags_LDADD  =
92readtags_LDADD += $(GNULIB_LIBS)
93readtags_LDADD += libutil.a
94dist_readtags_SOURCES += $(READTAGS_DSL_SRCS) $(READTAGS_DSL_HEADS)
95endif
96
97if HAVE_PCRE2
98PARSER_SRCS += $(PCRE2_SRCS) $(OPTLIB2C_PCRE2_SRCS)
99PARSER_HEADS += $(PCRE2_HEADS)
100endif
101
102if HAVE_LIBXML
103PARSER_SRCS += $(XML_SRCS)
104PARSER_HEADS += $(XML_HEADS)
105endif
106
107if HAVE_JANSSON
108LIB_SRCS += $(JANSSON_SRCS)
109LIB_HEADS += $(JANSSON_HEADS)
110endif
111
112if HAVE_LIBYAML
113PARSER_SRCS += $(YAML_SRCS)
114PARSER_HEADS += $(YAML_HEADS)
115endif
116
117PARSER_HEADS += $(PEG_EXTRA_HEADS)
118
119libutil_a_CPPFLAGS = -I$(srcdir) -I$(srcdir)/main
120libutil_a_CFLAGS   =
121libutil_a_CFLAGS  += $(EXTRA_CFLAGS)
122libutil_a_CFLAGS  += $(WARNING_CFLAGS)
123libutil_a_CFLAGS  += $(COVERAGE_CFLAGS)
124if ENABLE_DEBUGGING
125libutil_a_CPPFLAGS+= $(DEBUG_CPPFLAGS)
126endif
127dist_libutil_a_SOURCES = $(UTIL_HEADS) $(UTIL_SRCS)
128
129libctags_a_CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/main -I$(srcdir)/dsl -I$(srcdir)/peg -DHAVE_PACKCC
130if ENABLE_DEBUGGING
131libctags_a_CPPFLAGS+= $(DEBUG_CPPFLAGS)
132endif
133if HAVE_STRNLEN
134libctags_a_CPPFLAGS += -DUSE_SYSTEM_STRNLEN
135endif
136libctags_a_CPPFLAGS+= $(GNULIB_CPPFLAGS)
137libctags_a_CPPFLAGS+= -DHAVE_REPOINFO_H
138
139libctags_a_CFLAGS   =
140libctags_a_CFLAGS  += $(EXTRA_CFLAGS)
141libctags_a_CFLAGS  += $(WARNING_CFLAGS)
142libctags_a_CFLAGS  += $(COVERAGE_CFLAGS)
143libctags_a_CFLAGS  += $(CGCC_CFLAGS)
144libctags_a_CFLAGS  += $(LIBXML_CFLAGS)
145libctags_a_CFLAGS  += $(JANSSON_CFLAGS)
146libctags_a_CFLAGS  += $(LIBYAML_CFLAGS)
147libctags_a_CFLAGS  += $(SECCOMP_CFLAGS)
148libctags_a_CFLAGS  += $(PCRE2_CFLAGS)
149
150nodist_libctags_a_SOURCES = $(REPOINFO_HEADS) $(PEG_SRCS) $(PEG_HEADS)
151BUILT_SOURCES = $(REPOINFO_HEADS)
152CLEANFILES += $(REPOINFO_HEADS) $(PEG_SRCS) $(PEG_HEADS)
153EXTRA_libctags_a_DEPENDENCIES = $(GNULIB_LIBS)
154$(REPOINFO_SRCS): $(REPOINFO_HEADS)
155repoinfo_verbose = $(repoinfo_verbose_@AM_V@)
156repoinfo_verbose_ = $(repoinfo_verbose_@AM_DEFAULT_V@)
157repoinfo_verbose_0 = @echo REPOINFO "  $@";
158if BUILD_IN_GIT_REPO
159GEN_REPOINFO = $(srcdir)/misc/gen-repoinfo
160$(REPOINFO_HEADS): FORCE
161	$(repoinfo_verbose)$(GEN_REPOINFO) $@
162FORCE:
163else
164$(REPOINFO_HEADS):
165	$(repoinfo_verbose)echo > $@
166endif
167
168SUFFIXES=
169
170if RUN_OPTLIB2C
171optlib2c_verbose = $(optlib2c_verbose_@AM_V@)
172optlib2c_verbose_ = $(optlib2c_verbose_@AM_DEFAULT_V@)
173optlib2c_verbose_0 = @echo OPTLIB2C "  $@";
174OPTLIB2C = $(srcdir)/misc/optlib2c
175OPTLIB2C_DIR = optlib
176SUFFIXES += .ctags
177.ctags.c:
178	$(optlib2c_verbose)$(OPTLIB2C) $< > $@
179$(OPTLIB2C_SRCS): $(OPTLIB2C) Makefile
180if HAVE_PCRE2
181$(OPTLIB2C_PCRE2_SRCS): $(OPTLIB2C) Makefile
182endif
183endif
184
185if RUN_TXT2CSTR
186txt2cstr_verbose = $(txt2cstr_verbose_@AM_V@)
187txt2cstr_verbose_ = $(txt2cstr_verbose_@AM_DEFAULT_V@)
188txt2cstr_verbose_0 = @echo TXT2CSTR "  $@";
189TXT2CSTR = $(srcdir)/misc/txt2cstr
190TXT2CSTR_DIR = main
191SUFFIXES += .ps
192.ps.c:
193	$(txt2cstr_verbose)$(TXT2CSTR) $< > $@
194$(TXT2CSTR_SRCS): $(TXT2CSTR) Makefile
195endif
196
197packcc_verbose = $(packcc_verbose_@AM_V@)
198packcc_verbose_ = $(packcc_verbose_@AM_DEFAULT_V@)
199packcc_verbose_0 = @echo PACKCC "    $@";
200SUFFIXES += .peg
201.peg.c:
202	$(packcc_verbose)$(PACKCC) -o $(top_builddir)/peg/$(*F) "$<"
203.peg.h:
204	$(packcc_verbose)$(PACKCC) -o $(top_builddir)/peg/$(*F) "$<"
205# You cannot use $(PACKCC) as a target name here.
206$(PEG_SRCS) $(PEG_HEADS): $(PACKCC) Makefile
207dist_libctags_a_SOURCES = $(ALL_LIB_HEADS) $(ALL_LIB_SRCS)
208
209ctags_CPPFLAGS = $(libctags_a_CPPFLAGS)
210ctags_CFLAGS = $(libctags_a_CFLAGS)
211ctags_LDADD  = libctags.a
212ctags_LDADD += $(GNULIB_LIBS)
213ctags_LDADD += $(LIBXML_LIBS)
214ctags_LDADD += $(JANSSON_LIBS)
215ctags_LDADD += $(LIBYAML_LIBS)
216ctags_LDADD += $(SECCOMP_LIBS)
217ctags_LDADD += $(ICONV_LIBS)
218ctags_LDADD += $(PCRE2_LIBS)
219dist_ctags_SOURCES = $(CMDLINE_HEADS) $(CMDLINE_SRCS)
220
221if HOST_MINGW
222RES_OBJ = win32/ctags.res.o
223ctags_LDADD += $(RES_OBJ)
224windres_verbose = $(windres_verbose_@AM_V@)
225windres_verbose_ = $(windres_verbose_@AM_DEFAULT_V@)
226windres_verbose_0 = @echo WINDRES "   $@";
227$(RES_OBJ): win32/ctags.rc win32/ctags.exe.manifest win32/resource.h
228	@mkdir -p $(builddir)/win32
229	$(windres_verbose)$(WINDRES) -o $@ -O coff $<
230MOSTLYCLEANFILES += $(RES_OBJ)
231endif
232
233noinst_PROGRAMS += mini-geany
234mini_geany_CPPFLAGS = $(libctags_a_CPPFLAGS)
235mini_geany_CFLAGS = $(libctags_a_CFLAGS)
236mini_geany_LDADD  = libctags.a
237mini_geany_LDADD += $(GNULIB_LIBS)
238mini_geany_LDADD += $(LIBXML_LIBS)
239mini_geany_LDADD += $(JANSSON_LIBS)
240mini_geany_LDADD += $(LIBYAML_LIBS)
241mini_geany_LDADD += $(SECCOMP_LIBS)
242mini_geany_LDADD += $(ICONV_LIBS)
243mini_geany_LDADD += $(PCRE2_LIBS)
244mini_geany_SOURCES = $(MINI_GEANY_HEADS) $(MINI_GEANY_SRCS)
245
246bin_PROGRAMS += optscript
247optscript_CPPFLAGS = $(libctags_a_CPPFLAGS)
248optscript_CFLAGS = $(libctags_a_CFLAGS)
249optscript_LDADD  = libctags.a
250# TODO: remove these dependencies from optscript command.
251optscript_LDADD += $(GNULIB_LIBS)
252optscript_LDADD += $(LIBXML_LIBS)
253optscript_LDADD += $(JANSSON_LIBS)
254optscript_LDADD += $(LIBYAML_LIBS)
255optscript_LDADD += $(SECCOMP_LIBS)
256optscript_LDADD += $(ICONV_LIBS)
257optscript_LDADD += $(PCRE2_LIBS)
258optscript_SOURCES = $(OPTSCRIPT_SRCS)
259
260if INSTALL_ETAGS
261install-exec-hook:
262	cd $(DESTDIR)$(bindir) && \
263		$(LN_S) ctags$(EXEEXT) etags$(EXEEXT)
264
265uninstall-hook:
266	rm $(DESTDIR)$(bindir)/etags$(EXEEXT)
267endif
268
269dist-hook:
270	rm -rf $(distdir)/docs/_build
271	find $(distdir)/Tmain $(distdir)/Units \( \
272		-name '*-actual.txt' -o -name '*-diff.txt' -o \
273		-name '*.TMP' -o -name '*.tmp' -o -name '*~' -o \
274		-name 'dist.m4' -o -name 'Makefile.am' -o \
275		-name 'Makefile.in' -o -name 'Makefile' -o \
276		-name 'BUNDLES' \) -exec rm -f {} +
277
278include $(top_srcdir)/makefiles/testing.mak
279
280include $(top_srcdir)/makefiles/help.mak
281