core: improvements to garbage collection
[jimtcl.git] / Makefile.in
blob1207b0f46e8432ba60932bfe36b167f08467eaca
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@
22 @if COVERAGE
23 export CCACHE_DISABLE := 1
24 @endif
26 # Configuration
28 SH_CFLAGS ?= @SH_CFLAGS@
29 SH_LDFLAGS ?= @SH_LDFLAGS@
30 @if SH_SOPREFIX
31 SH_LDFLAGS += @SH_SOPREFIX@libjim@LIBSOEXT@
32 @endif
33 SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
34 @if JIM_STATICLIB
35 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
36 @else
37 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS_R@
38 @endif
39 CFLAGS = @CFLAGS@ @CCOPTS@ @CPPFLAGS@
40 CXXFLAGS = @CXXFLAGS@ @CXXOPTS@
41 LDFLAGS = @LDFLAGS@
42 LDLIBS += @LDLIBS@
43 LIBS += @LIBS@
44 exec_prefix ?= @exec_prefix@
45 prefix ?= @prefix@
46 docdir = @docdir@
48 CC += -Wall $(OPTIM) -I.
49 CXX += -Wall $(OPTIM) -I.
50 @if [get-define srcdir] ne "."
51 CFLAGS += -I@srcdir@
52 CXXFLAGS += -I@srcdir@
53 VPATH := @srcdir@
54 @endif
56 @if JIM_STATICLIB
57 LIBJIM := libjim.a
58 @else
59 LIBJIM := libjim@LIBSOEXT@
60 SH_LIBJIM := $(LIBJIM)
61 CC += $(SH_CFLAGS)
62 CXX += $(SH_CFLAGS)
63 DEF_LD_PATH := @LD_LIBRARY_PATH@="@builddir@:$(@LD_LIBRARY_PATH@)"
64 @endif
66 @if HAVE_CXX_EXTENSIONS
67 JIMSH_CC := $(CXX) $(CXXFLAGS)
68 @else
69 JIMSH_CC := $(CC) $(CFLAGS)
70 @endif
72 OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o jimiocompat.o \
73 @EXTRA_OBJS@ @C_EXT_OBJS@ @TCL_EXT_OBJS@
75 JIMSH := jimsh@EXEEXT@
77 @if JIM_INSTALL
78 INSTALL_DATA_DIR ?= mkdir -p
79 INSTALL_DATA ?= cp
80 INSTALL_PROGRAM ?= cp
81 @endif
83 all: $(JIMSH) @C_EXT_SHOBJS@
85 # Create C extensions from pure Tcl extensions
86 .SUFFIXES: .tcl
87 .tcl.o:
88 $(ECHO) " TCLEXT _$*.c"
89 $(Q)@tclsh@ @srcdir@/make-c-ext.tcl $< >_$*.c
90 $(ECHO) " CC $@"
91 $(Q)$(CC) $(CFLAGS) -c -o $@ _$*.c
93 .c.o:
94 $(ECHO) " CC $@"
95 $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
97 $(JIMSH): $(LIBJIM) jimsh.o initjimsh.o
98 $(ECHO) " LINK $@"
99 $(Q)$(JIMSH_CC) @SH_LINKRPATH_FLAGS@ @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o initjimsh.o $(LIBJIM) $(LDLIBS) $(LIBS)
101 @if JIM_INSTALL
102 install: all @TCL_EXTS@ install-exec install-docs
103 $(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/jim
104 $(INSTALL_DATA) $(LIBJIM) $(DESTDIR)@libdir@
105 $(INSTALL_DATA) @srcdir@/README.extensions @C_EXT_SHOBJS@ $(DESTDIR)@libdir@/jim
106 for i in tcltest.tcl @TCL_EXTS@; do $(INSTALL_DATA) @srcdir@/$$i $(DESTDIR)@libdir@/jim; done
107 $(INSTALL_DATA_DIR) $(DESTDIR)@includedir@
108 $(INSTALL_DATA) @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-signal.h \
109 @srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)@includedir@
110 $(INSTALL_DATA) jim-config.h $(DESTDIR)@includedir@
111 $(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
112 $(INSTALL_DATA) build-jim-ext $(DESTDIR)@bindir@
113 $(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/pkgconfig
114 $(INSTALL_DATA) jimtcl.pc $(DESTDIR)@libdir@/pkgconfig
116 install-exec: all
117 $(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
118 $(INSTALL_PROGRAM) $(JIMSH) $(DESTDIR)@bindir@
120 uninstall:
121 rm -f $(DESTDIR)@bindir@/$(JIMSH)
122 rm -f $(DESTDIR)@bindir@/build-jim-ext
123 rm -f $(DESTDIR)@libdir@/$(LIBJIM)
124 for i in README.extensions @C_EXT_SHOBJS@ @TCL_EXTS@; do rm -f $(DESTDIR)@libdir@/jim/$$i; done
125 rm -f $(DESTDIR)@includedir@/jim*.h
126 rm -f $(DESTDIR)@datadir@/doc/jim/Tcl.html
127 @else
128 install install-exec: all
129 uninstall:
130 @endif
132 test check: $(JIMSH)
133 cd @srcdir@/tests; $(DEF_LD_PATH) $(MAKE) jimsh=@builddir@/jimsh TOPSRCDIR=..
135 $(OBJS) jimsh.o initjimsh.o: Makefile $(wildcard *.h)
137 @if JIM_UTF8
138 # Generate the unicode case mapping
139 utf8.o: _unicode_mapping.c
141 _unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl
142 $(ECHO) " UNIDATA $@"
143 $(Q)@tclsh@ @srcdir@/parse-unidata.tcl @PARSE_UNIDATA_FLAGS@ @srcdir@/UnicodeData.txt @srcdir@/EastAsianWidth.txt >$@ || ( rm $@; exit 1)
144 @endif
146 _load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile
147 $(ECHO) " MKLDEXT $@"
148 $(Q)@tclsh@ @srcdir@/make-load-static-exts.tcl @STATIC_EXTS@ >$@ || ( rm $@; exit 1)
150 $(LIBJIM): $(OBJS)
151 @if JIM_STATICLIB
152 $(ECHO) " AR $@"
153 $(Q)$(AR) cr $@ $(OBJS)
154 $(Q)$(RANLIB) $@
155 @else
156 $(ECHO) " LDSO $@"
157 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS) $(LIBS)
158 @endif
160 @BUILD_SHOBJS@
162 docs: Tcl.html
164 @if INSTALL_DOCS eq "nodocs"
165 install-docs:
166 @endif
168 @if INSTALL_DOCS eq "docs"
169 install-docs: docs
170 $(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
171 $(INSTALL_DATA) Tcl.html $(DESTDIR)$(docdir)
172 @endif
174 @if INSTALL_DOCS eq "shipped"
175 install-docs:
176 $(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
177 @echo "Warning: asciidoc not available - installing Tcl_shipped.html"
178 $(INSTALL_DATA) Tcl_shipped.html $(DESTDIR)$(docdir)/Tcl.html
179 @endif
181 Tcl.html: jim_tcl.txt @srcdir@/make-index
182 @if HAVE_ASCIIDOC
183 @tclsh@ @srcdir@/make-index $> $^ | @ASCIIDOC@ -d manpage - | @SED@ -e '/^<div.*id="footer-text"/,/<\/div>/d' >$@
184 @else
185 @echo "asciidoc is not available"; false
186 @endif
188 coverage:
189 @if COVERAGE
190 @if COVERAGE_TOOL eq "lcov"
191 @LCOV@ -c --rc genhtml_branch_coverage=1 -d . -o lcov.txt
192 @GENHTML@ --rc genhtml_branch_coverage=1 -o coverage_html lcov.txt > genhtml_output.txt
193 @LCOV@ --summary lcov.txt
194 @endif
195 @if COVERAGE_TOOL eq "gcovr"
196 @GCOVR@ -s -e 'conftest*' --html --html-details --output coverage.html
197 @endif
198 @if COVERAGE_TOOL eq "gcov"
199 gcov @srcdir@/*.c
200 @endif
201 @else
202 @echo "Use ./configure --coverage to enable code coverage"
203 @endif
205 clean:
206 rm -f *.o *.so *.dll *.exe lib*.a $(JIMSH) $(LIBJIM) Tcl.html _*.c
207 @if COVERAGE
208 rm -f *.gcno *.gcov *.gcda */*.gcno */*.gcda */*.gcov coverage*.html
209 rm -rf coverage_html lcov.txt genhtml_output.txt
210 @endif
212 distclean: clean
213 rm -f jimautoconf.h jim-config.h Makefile config.log @srcdir@/autosetup/jimsh0@EXEEXT@ build-jim-ext
214 rm -f jimtcl.pc tests/Makefile
216 ship: Tcl.html
217 cp $< Tcl_shipped.html
219 # automake compatibility. do nothing for all these targets
220 EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
221 install-pdf install-ps install-info install-html -install-dvi uninstall install-data
222 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
223 $(EMPTY_AUTOMAKE_TARGETS):
225 # automake compatibility - install sources from the current dir to $(distdir)
226 distdir_full := $(shell cd $(distdir); pwd)
227 distdir:
228 cd "@srcdir@"; git ls-files | cpio -pdmu $(distdir_full)
230 reconfig:
231 CC='@CC@' @AUTOREMAKE@