Make some more static data read-only
[jimtcl.git] / Makefile.in
blobe8b545ed47c76e8e38e87644c97eb86557e3ca02
1 # Tools
2 CC = @CCACHE@ @CC@
3 RANLIB = @RANLIB@
4 AR = @AR@
5 STRIP = @STRIP@
7 # Configuration
9 jim_libtype := @JIM_LIBTYPE@
10 SH_CFLAGS ?= @SH_CFLAGS@
11 SH_LDFLAGS ?= @SH_LDFLAGS@
12 SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
13 SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
14 CFLAGS = @CFLAGS@
15 LDFLAGS = @LDFLAGS@
16 LDLIBS += @LIBS@
17 exec_prefix ?= @exec_prefix@
18 prefix ?= @prefix@
19 install_jim = @install_jim@
21 CPPFLAGS += -D_GNU_SOURCE -Wall $(OPTIM) -I.
22 ifneq (@srcdir@,.)
23 CPPFLAGS += -I@srcdir@
24 VPATH := @srcdir@
25 endif
27 ifeq ($(jim_libtype),static)
28 LIBJIM := libjim.a
29 else
30 LIBJIM := libjim.so
31 SH_LIBJIM := $(LIBJIM)
32 CPPFLAGS += $(SH_CFLAGS)
33 DEF_LD_PATH := @LD_LIBRARY_PATH@=`pwd`
34 endif
36 .EXPORT_ALL_VARIABLES:
38 OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o @EXTRA_OBJS@
40 JIMSH := jimsh@EXEEXT@
42 JIM_EXTENSIONS := @JIM_STATIC_C_EXTS@ @JIM_STATIC_TCL_EXTS@
43 C_EXT_OBJS := $(patsubst %,jim-%.o,@JIM_STATIC_C_EXTS@) $(patsubst %,_jim-%.o,@JIM_STATIC_TCL_EXTS@)
44 C_EXT_SHOBJS := $(patsubst %,%.so,@JIM_MOD_EXTENSIONS@)
45 EXTENSION_TCL := $(patsubst %,%.tcl,@JIM_TCL_EXTENSIONS@)
47 .PRECIOUS: jim-%.c
49 all: $(JIMSH) $(C_EXT_SHOBJS)
51 # Create C extensions from pure Tcl extensions
52 _jim-%.c: %.tcl
53 @tclsh@ @srcdir@/make-c-ext.tcl $< >$@ || ( rm $@; exit 1)
55 _initjimsh.c: initjimsh.tcl
56 @tclsh@ @srcdir@/make-c-ext.tcl $< >$@ || ( rm $@; exit 1)
58 docs: Tcl.html
60 $(JIMSH): $(LIBJIM) jimsh.o _initjimsh.o
61 $(CC) $(CFLAGS) @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o _initjimsh.o $(LIBJIM) $(LDLIBS)
63 ifdef install_jim
64 install: all docs $(EXTENSION_TCL) install-exec
65 mkdir -p $(DESTDIR)$(prefix)/lib/jim
66 cp $(LIBJIM) $(DESTDIR)$(prefix)/lib
67 cp @srcdir@/README.extensions $(C_EXT_SHOBJS) $(EXTENSION_TCL) $(DESTDIR)$(prefix)/lib/jim
68 mkdir -p $(DESTDIR)$(prefix)/include
69 cp @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-nvp.h @srcdir@/jim-signal.h \
70 @srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)$(prefix)/include
71 cp jim-config.h $(DESTDIR)$(prefix)/include
72 mkdir -p $(DESTDIR)$(prefix)/doc/jim
73 cp Tcl.html $(DESTDIR)$(prefix)/doc/jim
75 install-exec: all
76 mkdir -p $(DESTDIR)$(prefix)/bin
77 cp $(JIMSH) $(DESTDIR)$(prefix)/bin
79 uninstall:
80 rm -f $(DESTDIR)$(prefix)/bin/$(JIMSH)
81 rm -f $(DESTDIR)$(prefix)/lib/$(LIBJIM)
82 for i in README.extensions $(C_EXT_SHOBJS) $(EXTENSION_TCL); do rm -f $(DESTDIR)$(prefix)/lib/jim/$$i; done
83 rm -f $(DESTDIR)$(prefix)/include/jim*.h
84 rm -f $(DESTDIR)$(prefix)/doc/jim/Tcl.html
85 else
86 install install-exec uninstall:
87 endif
89 test: $(JIMSH)
90 $(DEF_LD_PATH) $(MAKE) jimsh=`pwd`/jimsh -C @srcdir@/tests
92 $(OBJS) $(C_EXT_OBJS): Makefile
94 ifeq (@JIM_UTF8@,1)
95 # Generate the unicode case mapping
96 utf8.o: _unicode_mapping.c
98 _unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl
99 @tclsh@ @srcdir@/parse-unidata.tcl @srcdir@/UnicodeData.txt >$@ || ( rm $@; exit 1)
100 endif
102 _load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile
103 @tclsh@ @srcdir@/make-load-static-exts.tcl $(JIM_EXTENSIONS) >$@ || ( rm $@; exit 1)
105 ifeq ($(jim_libtype),static)
106 $(LIBJIM): $(OBJS) $(C_EXT_OBJS)
107 $(AR) cr $@ $^
108 $(RANLIB) $@
109 else
110 $(LIBJIM): $(OBJS) $(C_EXT_OBJS)
111 $(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $^ $(LDLIBS)
112 endif
114 %.so: jim-%.c
115 $(CC) $(CPPFLAGS) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o $*.o $^
116 $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ $*.o $(SH_LIBJIM) $(LDLIBS)
118 Tcl.html: jim_tcl.txt
119 @tclsh@ @srcdir@/make-index $^ | asciidoc -o $@ -d manpage - || cp @srcdir@/Tcl_shipped.html Tcl.html
121 clean:
122 rm -f *.o *.so lib*.a $(JIMSH) Tcl.html _*.c
124 distclean: clean
125 rm -f jimautoconf.h jim-config.h Makefile config.log autosetup/jimsh0@EXEEXT@
127 ship: Tcl.html
128 cp Tcl.html Tcl_shipped.html
130 # automake compatibility. do nothing for all these targets
131 EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
132 install-pdf install-ps install-info install-html -install-dvi uninstall install-data
133 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
134 $(EMPTY_AUTOMAKE_TARGETS):
136 # automake compatibilty - install sources from the current dir to $(distdir)
137 distdir_full := $(shell cd $(distdir); pwd)
138 distdir:
139 cd "@srcdir@"; git ls-files | cpio -pdmu $(distdir_full)
141 ifeq ($(findstring clean,$(MAKECMDGOALS)),)
142 Makefile: @AUTODEPS@ @srcdir@/Makefile.in
143 @CC='@CC@' @AUTOREMAKE@
144 endif
146 reconfig:
147 CC='@CC@' @AUTOREMAKE@