build: Support --silent-rules
[jimtcl.git] / Makefile.in
blob6defd5d30c9345724fe7db8b413c42e0dd9f5682
1 @if NO_SILENT_RULES
2 Q :=
3 ECHO := @:
4 @else
5 # make V=1 for verbose make output
6 Q := @
7 ECHO := @echo
8 ifeq ($(V),1)
9 ifeq ("$(origin V)", "command line")
10 Q :=
11 ECHO := @:
12 endif
13 endif
14 @endif
16 # Tools
17 CC = @CCACHE@ @CC@
18 CXX = @CCACHE@ @CXX@
19 RANLIB = @RANLIB@
20 AR = @AR@
21 STRIP = @STRIP@
23 # Configuration
25 SH_CFLAGS ?= @SH_CFLAGS@
26 SH_LDFLAGS ?= @SH_LDFLAGS@
27 @if SH_SOPREFIX
28 SH_LDFLAGS += @SH_SOPREFIX@libjim@LIBSOEXT@
29 @endif
30 SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
31 @if JIM_STATICLIB
32 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
33 @else
34 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS_R@
35 @endif
36 CFLAGS = @CFLAGS@ @CCOPTS@ @CPPFLAGS@
37 CXXFLAGS = @CXXFLAGS@ @CXXOPTS@
38 LDFLAGS = @LDFLAGS@
39 LDLIBS += @LDLIBS@
40 LIBS += @LIBS@
41 exec_prefix ?= @exec_prefix@
42 prefix ?= @prefix@
43 docdir = @docdir@
45 CC += -Wall $(OPTIM) -I.
46 CXX += -Wall $(OPTIM) -I.
47 @if srcdir != .
48 CFLAGS += -I@srcdir@
49 CXXFLAGS += -I@srcdir@
50 VPATH := @srcdir@
51 @endif
53 @if JIM_STATICLIB
54 LIBJIM := libjim.a
55 @else
56 LIBJIM := libjim@LIBSOEXT@
57 SH_LIBJIM := $(LIBJIM)
58 CC += $(SH_CFLAGS)
59 CXX += $(SH_CFLAGS)
60 DEF_LD_PATH := @LD_LIBRARY_PATH@="@builddir@:$(@LD_LIBRARY_PATH@)"
61 @endif
63 @if HAVE_CXX_EXTENSIONS
64 JIMSH_CC := $(CXX) $(CXXFLAGS)
65 @else
66 JIMSH_CC := $(CC) $(CFLAGS)
67 @endif
69 OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o jimiocompat.o \
70 @EXTRA_OBJS@ @C_EXT_OBJS@ @TCL_EXT_OBJS@
72 JIMSH := jimsh@EXEEXT@
74 @if JIM_INSTALL
75 INSTALL_DATA_DIR ?= mkdir -p
76 INSTALL_DATA ?= cp
77 INSTALL_PROGRAM ?= cp
78 @endif
80 all: $(JIMSH) @C_EXT_SHOBJS@
82 # Create C extensions from pure Tcl extensions
83 .SUFFIXES: .tcl
84 .tcl.o:
85 $(ECHO) " TCLEXT _$*.c"
86 $(Q)@tclsh@ @srcdir@/make-c-ext.tcl $< >_$*.c
87 $(ECHO) " CC $@"
88 $(Q)$(CC) $(CFLAGS) -c -o $@ _$*.c
90 .c.o:
91 $(ECHO) " CC $@"
92 $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $*.c -o $@
94 $(JIMSH): $(LIBJIM) jimsh.o initjimsh.o
95 $(ECHO) " LINK $@"
96 $(Q)$(JIMSH_CC) @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o initjimsh.o $(LIBJIM) $(LDLIBS) $(LIBS)
98 @if JIM_INSTALL
99 install: all @TCL_EXTS@ install-exec install-docs
100 $(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/jim
101 $(INSTALL_DATA) $(LIBJIM) $(DESTDIR)@libdir@
102 $(INSTALL_DATA) @srcdir@/README.extensions @C_EXT_SHOBJS@ $(DESTDIR)@libdir@/jim
103 for i in tcltest.tcl @TCL_EXTS@; do $(INSTALL_DATA) @srcdir@/$$i $(DESTDIR)@libdir@/jim; done
104 $(INSTALL_DATA_DIR) $(DESTDIR)@includedir@
105 $(INSTALL_DATA) @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-signal.h \
106 @srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)@includedir@
107 $(INSTALL_DATA) jim-config.h $(DESTDIR)@includedir@
108 $(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
109 $(INSTALL_DATA) build-jim-ext $(DESTDIR)@bindir@
110 $(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/pkgconfig
111 $(INSTALL_DATA) jimtcl.pc $(DESTDIR)@libdir@/pkgconfig
113 install-exec: all
114 $(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
115 $(INSTALL_PROGRAM) $(JIMSH) $(DESTDIR)@bindir@
117 uninstall:
118 rm -f $(DESTDIR)@bindir@/$(JIMSH)
119 rm -f $(DESTDIR)@bindir@/build-jim-ext
120 rm -f $(DESTDIR)@libdir@/$(LIBJIM)
121 for i in README.extensions @C_EXT_SHOBJS@ @TCL_EXTS@; do rm -f $(DESTDIR)@libdir@/jim/$$i; done
122 rm -f $(DESTDIR)@includedir@/jim*.h
123 rm -f $(DESTDIR)@datadir@/doc/jim/Tcl.html
124 @else
125 install install-exec: all
126 uninstall:
127 @endif
129 test check: $(JIMSH)
130 cd @srcdir@/tests; $(DEF_LD_PATH) $(MAKE) jimsh=@builddir@/jimsh TOPSRCDIR=..
132 $(OBJS) jimsh.o initjimsh.o: Makefile $(wildcard *.h)
134 @if JIM_UTF8
135 # Generate the unicode case mapping
136 utf8.o: _unicode_mapping.c
138 _unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl
139 $(ECHO) " UNIDATA $@"
140 $(Q)@tclsh@ @srcdir@/parse-unidata.tcl @PARSE_UNIDATA_FLAGS@ @srcdir@/UnicodeData.txt @srcdir@/EastAsianWidth.txt >$@ || ( rm $@; exit 1)
141 @endif
143 _load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile
144 $(ECHO) " MKLDEXT $@"
145 $(Q)@tclsh@ @srcdir@/make-load-static-exts.tcl @STATIC_EXTS@ >$@ || ( rm $@; exit 1)
147 $(LIBJIM): $(OBJS)
148 @if JIM_STATICLIB
149 $(ECHO) " AR $@"
150 $(Q)$(AR) cr $@ $(OBJS)
151 $(Q)$(RANLIB) $@
152 @else
153 $(ECHO) " LDSO $@"
154 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS) $(LIBS)
155 @endif
157 # Note that $> $^ is for compatibility with both GNU make and BSD make
158 readdir.so: jim-readdir.c
159 $(ECHO) " CC ${@:.so=.o}"
160 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readdir.o $> $^
161 $(ECHO) " LDSO $@"
162 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readdir.o $(SH_LIBJIM)
164 array.so: jim-array.c
165 $(ECHO) " CC ${@:.so=.o}"
166 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-array.o $> $^
167 $(ECHO) " LDSO $@"
168 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-array.o $(SH_LIBJIM)
170 clock.so: jim-clock.c
171 $(ECHO) " CC ${@:.so=.o}"
172 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-clock.o $> $^
173 $(ECHO) " LDSO $@"
174 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-clock.o $(SH_LIBJIM)
176 file.so: jim-file.c
177 $(ECHO) " CC ${@:.so=.o}"
178 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-file.o $> $^
179 $(ECHO) " LDSO $@"
180 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-file.o $(SH_LIBJIM)
182 interp.so: jim-interp.c
183 $(ECHO) " CC ${@:.so=.o}"
184 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-interp.o jim-interp.c
185 $(ECHO) " LDSO $@"
186 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-interp.o $(SH_LIBJIM) @LDLIBS_interp@
188 posix.so: jim-posix.c
189 $(ECHO) " CC ${@:.so=.o}"
190 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-posix.o $> $^
191 $(ECHO) " LDSO $@"
192 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-posix.o $(SH_LIBJIM)
194 regexp.so: jim-regexp.c
195 $(ECHO) " CC ${@:.so=.o}"
196 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-regexp.o $> $^
197 $(ECHO) " LDSO $@"
198 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-regexp.o $(SH_LIBJIM)
200 syslog.so: jim-syslog.c
201 $(ECHO) " CC ${@:.so=.o}"
202 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-syslog.o $> $^
203 $(ECHO) " LDSO $@"
204 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-syslog.o $(SH_LIBJIM)
206 readline.so: jim-readline.c
207 $(ECHO) " CC ${@:.so=.o}"
208 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readline.o $> $^
209 $(ECHO) " LDSO $@"
210 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readline.o $(SH_LIBJIM) @LDLIBS_readline@
212 pack.so: jim-pack.c
213 $(ECHO) " CC ${@:.so=.o}"
214 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-pack.o $> $^
215 $(ECHO) " LDSO $@"
216 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-pack.o $(SH_LIBJIM) @LDLIBS_pack@
218 tclprefix.so: jim-tclprefix.c
219 $(ECHO) " CC ${@:.so=.o}"
220 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-tclprefix.o $> $^
221 $(ECHO) " LDSO $@"
222 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-tclprefix.o $(SH_LIBJIM) @LDLIBS_tclprefix@
224 sqlite3.so: jim-sqlite3.c
225 $(ECHO) " CC ${@:.so=.o}"
226 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sqlite3.o $> $^
227 $(ECHO) " LDSO $@"
228 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sqlite3.o $(SH_LIBJIM) @LDLIBS_sqlite3@
230 win32.so: jim-win32.c
231 $(ECHO) " CC ${@:.so=.o}"
232 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-win32.o $> $^
233 $(ECHO) " LDSO $@"
234 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-win32.o $(SH_LIBJIM) @LDLIBS_win32@
236 mk.so: jim-mk.cpp
237 $(ECHO) " CC ${@:.so=.o}"
238 $(Q)$(CXX) $(CXXFLAGS) $(SHOBJ_CFLAGS) -c -o jim-mk.o $> $^
239 $(ECHO) " LDSO $@"
240 $(Q)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-mk.o $(SH_LIBJIM) @LDLIBS_mk@
242 sdl.so: jim-sdl.c
243 $(ECHO) " CC ${@:.so=.o}"
244 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sdl.o $> $^
245 $(ECHO) " LDSO $@"
246 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sdl.o $(SH_LIBJIM) @LDLIBS_sdl@
248 zlib.so: jim-zlib.c
249 $(ECHO) " CC ${@:.so=.o}"
250 $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-zlib.o $> $^
251 $(ECHO) " LDSO $@"
252 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-zlib.o $(SH_LIBJIM) @LDLIBS_zlib@
254 docs: Tcl.html
256 @if INSTALL_DOCS == nodocs
257 install-docs:
258 @endif
260 @if INSTALL_DOCS == docs
261 install-docs: docs
262 $(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
263 $(INSTALL_DATA) Tcl.html $(DESTDIR)$(docdir)
264 @endif
266 @if INSTALL_DOCS == shipped
267 install-docs:
268 $(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
269 @echo "Warning: asciidoc not available - installing Tcl_shipped.html"
270 $(INSTALL_DATA) Tcl_shipped.html $(DESTDIR)$(docdir)/Tcl.html
271 @endif
273 Tcl.html: jim_tcl.txt @srcdir@/make-index
274 @if HAVE_ASCIIDOC
275 @tclsh@ @srcdir@/make-index $> $^ | @ASCIIDOC@ -d manpage - | @SED@ -e '/^<div.*id="footer-text"/,/<\/div>/d' >$@
276 @else
277 @echo "asciidoc is not available"; false
278 @endif
280 clean:
281 rm -f *.o *.so *.dll *.exe lib*.a $(JIMSH) $(LIBJIM) Tcl.html _*.c
283 distclean: clean
284 rm -f jimautoconf.h jim-config.h Makefile config.log @srcdir@/autosetup/jimsh0@EXEEXT@ build-jim-ext
285 rm -f jimtcl.pc
287 ship: Tcl.html
288 cp $< Tcl_shipped.html
290 # automake compatibility. do nothing for all these targets
291 EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
292 install-pdf install-ps install-info install-html -install-dvi uninstall install-data
293 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
294 $(EMPTY_AUTOMAKE_TARGETS):
296 # automake compatibility - install sources from the current dir to $(distdir)
297 distdir_full := $(shell cd $(distdir); pwd)
298 distdir:
299 cd "@srcdir@"; git ls-files | cpio -pdmu $(distdir_full)
301 reconfig:
302 CC='@CC@' @AUTOREMAKE@