Fix memory management of aio event handlers
[jimtcl.git] / Makefile.in
blob847ef0cd54b0f23626ec4cd49e987051c3627f5f
1 # Tools
2 CC = @CCACHE@ @CC@
3 CXX = @CCACHE@ @CXX@
4 RANLIB = @RANLIB@
5 AR = @AR@
6 STRIP = @STRIP@
8 # Configuration
10 SH_CFLAGS ?= @SH_CFLAGS@
11 SH_LDFLAGS ?= @SH_LDFLAGS@ @SH_SOPREFIX@libjim.@LIBSOEXT@.0.74
12 SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
13 @if JIM_STATICLIB
14 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
15 @else
16 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS_R@
17 @endif
18 CFLAGS = @CFLAGS@
19 CXXFLAGS = @CXXFLAGS@
20 LDFLAGS = @LDFLAGS@
21 LDLIBS += @LDLIBS@
22 exec_prefix ?= @exec_prefix@
23 prefix ?= @prefix@
25 CC += -D_GNU_SOURCE -Wall $(OPTIM) -I.
26 CXX += -D_GNU_SOURCE -Wall $(OPTIM) -I.
27 @if srcdir != .
28 CFLAGS += -I@srcdir@
29 CXXFLAGS += -I@srcdir@
30 VPATH := @srcdir@
31 @endif
33 @if JIM_STATICLIB
34 LIBJIM := libjim.a
35 @else
36 LIBJIM := libjim.@LIBSOEXT@.0.74
37 SH_LIBJIM := $(LIBJIM)
38 CC += $(SH_CFLAGS)
39 CXX += $(SH_CFLAGS)
40 DEF_LD_PATH := @LD_LIBRARY_PATH@=@builddir@
41 @endif
43 @if HAVE_CXX_EXTENSIONS
44 JIMSH_CC := $(CXX) $(CXXFLAGS)
45 @else
46 JIMSH_CC := $(CC) $(CFLAGS)
47 @endif
49 OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o \
50 @EXTRA_OBJS@ @C_EXT_OBJS@ @TCL_EXT_OBJS@
52 JIMSH := jimsh@EXEEXT@
54 all: $(JIMSH) @C_EXT_SHOBJS@
56 # Create C extensions from pure Tcl extensions
57 .SUFFIXES: .tcl
58 .tcl.o:
59 @tclsh@ @srcdir@/make-c-ext.tcl $< >_$*.c
60 $(CC) $(CFLAGS) -c -o $@ _$*.c
62 docs: Tcl.html
64 @if JIM_DOCS
65 install-docs: docs
66 mkdir -p $(DESTDIR)$(prefix)/doc/jim
67 cp Tcl.html $(DESTDIR)$(prefix)/doc/jim
68 @else
69 install-docs:
70 @endif
72 $(JIMSH): $(LIBJIM) jimsh.o initjimsh.o
73 $(JIMSH_CC) @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o initjimsh.o $(LIBJIM) $(LDLIBS)
75 @if JIM_INSTALL
76 install: all @TCL_EXTS@ install-exec install-docs
77 mkdir -p $(DESTDIR)@libdir@/jim
78 cp $(LIBJIM) $(DESTDIR)@libdir@
79 cp @srcdir@/README.extensions @C_EXT_SHOBJS@ $(DESTDIR)@libdir@/jim
80 for i in @TCL_EXTS@; do cp @srcdir@/$$i $(DESTDIR)@libdir@/jim; done
81 mkdir -p $(DESTDIR)@includedir@
82 cp @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-signal.h \
83 @srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)@includedir@
84 cp jim-config.h $(DESTDIR)@includedir@
85 mkdir -p $(DESTDIR)@bindir@
86 cp build-jim-ext $(DESTDIR)@bindir@
88 install-exec: all
89 mkdir -p $(DESTDIR)@bindir@
90 cp $(JIMSH) $(DESTDIR)@bindir@
92 uninstall:
93 rm -f $(DESTDIR)@bindir@/$(JIMSH)
94 rm -f $(DESTDIR)@bindir@/build-jim-ext
95 rm -f $(DESTDIR)@libdir@/$(LIBJIM)
96 for i in README.extensions @C_EXT_SHOBJS@ @TCL_EXTS@; do rm -f $(DESTDIR)@libdir@/jim/$$i; done
97 rm -f $(DESTDIR)@includedir@/jim*.h
98 rm -f $(DESTDIR)@datadir@/doc/jim/Tcl.html
99 @else
100 install install-exec: all
101 uninstall:
102 @endif
104 test: $(JIMSH)
105 cd @srcdir@/tests; $(DEF_LD_PATH) $(MAKE) jimsh=@builddir@/jimsh
107 $(OBJS): Makefile $(wildcard *.h)
109 @if JIM_UTF8
110 # Generate the unicode case mapping
111 utf8.o: _unicode_mapping.c
113 _unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl
114 @tclsh@ @srcdir@/parse-unidata.tcl @srcdir@/UnicodeData.txt >$@ || ( rm $@; exit 1)
115 @endif
117 _load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile
118 @tclsh@ @srcdir@/make-load-static-exts.tcl @STATIC_EXTS@ >$@ || ( rm $@; exit 1)
120 @if JIM_STATICLIB
121 $(LIBJIM): $(OBJS)
122 $(AR) cr $@ $(OBJS)
123 $(RANLIB) $@
124 @else
125 $(LIBJIM): $(OBJS)
126 $(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
127 @endif
129 # Note that $> $^ is for compatibility with both GNU make and BSD make
130 readdir.so: jim-readdir.c
131 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readdir.o $> $^
132 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readdir.o $(SH_LIBJIM)
134 array.so: jim-array.c
135 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-array.o $> $^
136 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-array.o $(SH_LIBJIM)
138 clock.so: jim-clock.c
139 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-clock.o $> $^
140 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-clock.o $(SH_LIBJIM)
142 file.so: jim-file.c
143 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-file.o $> $^
144 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-file.o $(SH_LIBJIM)
146 posix.so: jim-posix.c
147 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-posix.o $> $^
148 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-posix.o $(SH_LIBJIM)
150 regexp.so: jim-regexp.c
151 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-regexp.o $> $^
152 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-regexp.o $(SH_LIBJIM)
154 syslog.so: jim-syslog.c
155 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-syslog.o $> $^
156 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-syslog.o $(SH_LIBJIM)
158 readline.so: jim-readline.c
159 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readline.o $> $^
160 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readline.o $(SH_LIBJIM) @LDLIBS_readline@
162 pack.so: jim-pack.c
163 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-pack.o $> $^
164 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-pack.o $(SH_LIBJIM) @LDLIBS_pack@
166 tclprefix.so: jim-tclprefix.c
167 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-tclprefix.o $> $^
168 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-tclprefix.o $(SH_LIBJIM) @LDLIBS_tclprefix@
170 sqlite3.so: jim-sqlite3.c
171 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sqlite3.o $> $^
172 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sqlite3.o $(SH_LIBJIM) @LDLIBS_sqlite3@
174 win32.so: jim-win32.c
175 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-win32.o $> $^
176 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-win32.o $(SH_LIBJIM) @LDLIBS_win32@
178 mk.so: jim-mk.cpp
179 $(CXX) $(CXXFLAGS) $(SHOBJ_CFLAGS) -c -o jim-mk.o $> $^
180 $(CXX) $(CXXFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-mk.o $(SH_LIBJIM) @LDLIBS_mk@
182 sdl.so: jim-sdl.c
183 $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sdl.o $> $^
184 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sdl.o $(SH_LIBJIM) @LDLIBS_sdl@
186 Tcl.html: jim_tcl.txt
187 @tclsh@ @srcdir@/make-index $> $^ | asciidoc -o $@ -d manpage - || cp @srcdir@/Tcl_shipped.html Tcl.html
189 clean:
190 rm -f *.o *.so *.dll *.exe lib*.a $(JIMSH) Tcl.html _*.c
192 distclean: clean
193 rm -f jimautoconf.h jim-config.h Makefile config.log autosetup/jimsh0@EXEEXT@ build-jim-ext
195 ship: Tcl.html
196 cp $< Tcl_shipped.html
198 # automake compatibility. do nothing for all these targets
199 EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
200 install-pdf install-ps install-info install-html -install-dvi uninstall install-data
201 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
202 $(EMPTY_AUTOMAKE_TARGETS):
204 # automake compatibility - install sources from the current dir to $(distdir)
205 distdir_full := $(shell cd $(distdir); pwd)
206 distdir:
207 cd "@srcdir@"; git ls-files | cpio -pdmu $(distdir_full)
209 reconfig:
210 CC='@CC@' @AUTOREMAKE@