1# If this file has the name "Makefile.in" then it is a template for a
2# Makefile;  to generate the actual Makefile, run "./configure", which
3# is a configuration script generated by the "autoconf" program.
4
5SHELL =   /bin/sh
6
7LOBJS =   column.o custom.o derived.o fileio.o field.o format.o \
8          handler.o persist.o remap.o std.o store.o string.o table.o \
9	  univ.o view.o viewx.o
10
11PYOBJS  = PyProperty.o PyRowRef.o PyStorage.o PyView.o PWOImp.o
12
13TSTOBJS = regress.o tbasic1.o tbasic2.o tcusto1.o tcusto2.o tdiffer.o \
14	  textend.o tformat.o tlimits.o tmapped.o tnotify.o tresize.o \
15	  tstore1.o tstore2.o tstore3.o tstore4.o tstore5.o
16
17DEMOS   = demo dump myio
18
19LINK_SPECIAL_FLAGS	=	@LINK_SPECIAL_FLAGS@ @LIBS@
20LINK_SPECIAL_FILES	=	@LINK_SPECIAL_FILES@
21
22#---------- Autoconf settings, can be overriden as "make" args
23
24prefix = @prefix@
25exec_prefix = @exec_prefix@
26includedir = @includedir@
27libdir = @libdir@
28srcdir = @srcdir@
29top_builddir = .
30
31python = python
32pyincludedir = @PY_INCLUDE_DIR@
33pylibdir = @PY_LIB_DIR@
34
35tclsh = tclsh
36tclincludedir = @TCL_INCLUDE_DIR@
37tcllibdir = @TCL_LIB_DIR@
38
39CXX_FLAGS = @CPPFLAGS@ @CXXFLAGS@ @MK_THREADS@ @SHLIB_CFLAGS@ \
40		-I$(srcdir)/../include
41
42# Compiling without frame pointers can play tricks with exception handling
43# (e.g. in Mk4py).  This does not affect standard operation, *only* errors.
44# Happens in gcc 2.95.3, it has been disabled for now (even though slower).
45#CXXFLAGS = -fomit-frame-pointer $(CXX_FLAGS)
46CXXFLAGS = $(CXX_FLAGS)
47#CXXFLAGS = -Dq4_CHECK $(CXX_FLAGS)
48#CXXFLAGS = -Wall -pedantic -Wno-unused $(CXX_FLAGS)
49
50CXX = @CXX@
51INSTALL = @INSTALL@
52INSTALL_DATA = @INSTALL_DATA@
53INSTALL_PROGRAM = @INSTALL_PROGRAM@
54LIB_SUFFIX = @LIB_SUFFIX@
55SHLIB_SUFFIX = @SHLIB_SUFFIX@
56SHLIB_LD = @SHLIB_LD@
57SHLIB_FLAGS = @SHLIB_FLAGS@
58STRIP_FLAGS = @STRIP_FLAGS@
59LIBEXT = @LIBEXT@
60EXEEXT = @EXEEXT@
61DESTDIR=
62
63#---------- Do not change, shorthand only
64
65CXX_SWITCHES      = $(CXXFLAGS) -I$(srcdir)/../src -I.
66CXX_SWITCHES_TCL  = $(CXXFLAGS) -I$(tclincludedir)/generic -I$(tclincludedir)
67CXX_SWITCHES_PY   = $(CXXFLAGS) -I$(srcdir)/../python/scxx -I$(pyincludedir)
68
69#---------- The targets normally specified when calling "make"
70
71all: @MK_TARGETS@
72
73core: Makefile libmk4$(LIBEXT) $(DEMOS)
74
75tcl: Makefile Mk4tcl$(LIBEXT)
76
77python: Makefile Mk4py$(LIBEXT)
78
79test: Makefile libmk4$(LIBEXT) regress
80	test -d tests || mkdir tests
81	-test -d ../tests/ok/CVS && (test -d tests/CVS || mkdir tests/CVS)
82	test -f reversed || cp $(srcdir)/reversed .
83	./regress
84	diff --exclude=.svn $(srcdir)/../tests/ok tests
85
86test-tcl: tcl
87	cd $(srcdir)/../tcl/test && $(tclsh) all.tcl
88
89test-python: python
90	$(python) $(srcdir)/../python/test/all.py
91
92install: @MK_INSTALL@
93
94install-mk: libmk4$(LIBEXT)
95	mkdir -p $(DESTDIR)$(includedir) $(DESTDIR)$(libdir)
96	$(INSTALL_DATA) $(srcdir)/../include/mk4.h \
97			$(srcdir)/../include/mk4.inl \
98			$(srcdir)/../include/mk4str.h \
99			$(srcdir)/../include/mk4str.inl $(DESTDIR)$(includedir)
100	$(INSTALL_PROGRAM) libmk4$(LIBEXT) $(DESTDIR)$(libdir)
101	if [ '${LIBEXT}' = '.a' ]; then ranlib $(DESTDIR)$(libdir)/libmk4.a; fi
102
103install-tcl: Mk4tcl$(LIBEXT)
104	mkdir -p $(DESTDIR)$(tcllibdir)/Mk4tcl
105	$(INSTALL_PROGRAM) Mk4tcl$(LIBEXT) $(DESTDIR)$(tcllibdir)/Mk4tcl
106	if [ '${LIBEXT}' = '.a' ]; then ranlib $(DESTDIR)$(tcllibdir)/Mk4tcl/Mk4tcl.a; fi
107	echo 'package ifneeded Mk4tcl 2.4.9.7 [list load [file join $$dir Mk4tcl$(LIBEXT)] Mk4tcl]' >$(DESTDIR)$(tcllibdir)/Mk4tcl/pkgIndex.tcl
108
109install-python: Mk4py$(LIBEXT)
110	mkdir -p $(DESTDIR)$(pylibdir)
111	$(INSTALL_PROGRAM) Mk4py$(LIBEXT) $(DESTDIR)$(pylibdir)
112	$(INSTALL_PROGRAM) $(srcdir)/../python/metakit.py $(DESTDIR)$(pylibdir)
113
114clean:
115	rm -f *$(LIBEXT) *.o
116	rm -f $(DEMOS) struct regress myfile.dat secret.dat
117	rm -rf tests/[a-z]*
118
119distclean: clean
120	rm -f Makefile config.h config.status config.log config.cache
121
122#---------- This defines what each of the targets does
123
124Makefile: $(srcdir)/Makefile.in config.status
125	$(SHELL) ./config.status
126
127config.status: $(srcdir)/configure
128	$(SHELL) ./config.status --recheck
129
130$(srcdir)/configure: $(srcdir)/configure.in
131	cd $(srcdir) && autoconf
132
133libmk4$(LIB_SUFFIX): $(LOBJS)
134	ar rcu $@ $(LOBJS)
135	ranlib $@
136
137libmk4$(SHLIB_SUFFIX): $(LOBJS) $(LINK_SPECIAL_FILES)
138	$(SHLIB_LD) -o $@ $(LOBJS) $(LINK_SPECIAL_FLAGS) $(LDFLAGS)
139
140Mk4tcl$(LIB_SUFFIX): mk4tcl.o mk4too.o $(LOBJS)
141	ar rcu $@ mk4tcl.o mk4too.o $(LOBJS)
142	ranlib $@
143
144Mk4tcl$(SHLIB_SUFFIX): mk4tcl.o mk4too.o $(LOBJS) $(LINK_SPECIAL_FILES)
145	$(SHLIB_LD) -o $@ mk4tcl.o mk4too.o \
146			$(LOBJS) $(LINK_SPECIAL_FLAGS) $(LDFLAGS)
147
148Mk4py$(LIB_SUFFIX): $(PYOBJS) $(LOBJS)
149	ar cru $@ $(PYOBJS) $(LOBJS)
150	ranlib $@
151
152Mk4py$(SHLIB_SUFFIX): $(PYOBJS) $(LOBJS) $(LINK_SPECIAL_FILES)
153	$(SHLIB_LD) -o $@ $(PYOBJS) $(LOBJS) $(LINK_SPECIAL_FLAGS) $(LDFLAGS)
154
155demo: $(srcdir)/../demos/demo.cpp libmk4$(LIBEXT)
156	$(CXX) $(CXX_SWITCHES) -o $@$(EXEEXT) \
157		$(srcdir)/../demos/demo.cpp libmk4$(LIBEXT) @LIBS@
158
159dump: $(srcdir)/../demos/dump.cpp libmk4$(LIBEXT)
160	$(CXX) $(CXX_SWITCHES) -o $@$(EXEEXT) \
161		$(srcdir)/../demos/dump.cpp libmk4$(LIBEXT) @LIBS@
162
163myio: $(srcdir)/../demos/myio.cpp libmk4$(LIBEXT)
164	$(CXX) $(CXX_SWITCHES) -o $@$(EXEEXT) \
165		$(srcdir)/../demos/myio.cpp libmk4$(LIBEXT) @LIBS@
166
167struct: $(srcdir)/../demos/struct.cpp
168	$(CXX) $(CXX_SWITCHES) -o $@$(EXEEXT) \
169		$(srcdir)/../demos/struct.cpp -lmk4 @LIBS@
170
171regress: $(TSTOBJS) libmk4$(LIBEXT)
172	$(CXX) $(CXX_SWITCHES) -o $@$(EXEEXT) $(TSTOBJS) libmk4$(LIBEXT) @LIBS@
173
174#---------- Dependencies
175
176# Hack.
177# Configuration: HPUX, CXX=aCC, CC=cc, cpu PA-RISC
178# => Have to link this object file to satisfy symbols.
179#
180cpprt0_stubs.o: $(srcdir)/cpprt0_stubs.s
181	as -o $@ $?
182
183mk4tcl.o: $(srcdir)/../tcl/mk4tcl.cpp
184	$(CXX) -c $(CXX_SWITCHES_TCL) $?
185mk4too.o: $(srcdir)/../tcl/mk4too.cpp
186	$(CXX) -c $(CXX_SWITCHES_TCL) $?
187
188PyProperty.o: $(srcdir)/../python/PyProperty.cpp
189	$(CXX) -c $(CXX_SWITCHES_PY) $?
190PyRowRef.o: $(srcdir)/../python/PyRowRef.cpp
191	$(CXX) -c $(CXX_SWITCHES_PY) $?
192PyStorage.o: $(srcdir)/../python/PyStorage.cpp
193	$(CXX) -c $(CXX_SWITCHES_PY) $?
194PyView.o: $(srcdir)/../python/PyView.cpp
195	$(CXX) -c $(CXX_SWITCHES_PY) $?
196
197PWOImp.o: $(srcdir)/../python/scxx/PWOImp.cpp \
198	  $(srcdir)/../python/scxx/PWOBase.h \
199	  $(srcdir)/../python/scxx/PWOCallable.h \
200	  $(srcdir)/../python/scxx/PWOMSequence.h \
201	  $(srcdir)/../python/scxx/PWOMapping.h \
202	  $(srcdir)/../python/scxx/PWONumber.h \
203	  $(srcdir)/../python/scxx/PWOSequence.h
204	$(CXX) -c $(CXX_SWITCHES_PY) $(srcdir)/../python/scxx/PWOImp.cpp
205
206column.o:  $(srcdir)/../src/column.cpp
207	$(CXX) -c $(CXX_SWITCHES) $?
208custom.o:  $(srcdir)/../src/custom.cpp
209	$(CXX) -c $(CXX_SWITCHES) $?
210derived.o: $(srcdir)/../src/derived.cpp
211	$(CXX) -c $(CXX_SWITCHES) $?
212field.o:   $(srcdir)/../src/field.cpp
213	$(CXX) -c $(CXX_SWITCHES) $?
214fileio.o:  $(srcdir)/../src/fileio.cpp
215	$(CXX) -c $(CXX_SWITCHES) $?
216format.o:  $(srcdir)/../src/format.cpp
217	$(CXX) -c $(CXX_SWITCHES) $?
218handler.o: $(srcdir)/../src/handler.cpp
219	$(CXX) -c $(CXX_SWITCHES) $?
220persist.o: $(srcdir)/../src/persist.cpp
221	$(CXX) -c $(CXX_SWITCHES) $?
222remap.o:   $(srcdir)/../src/remap.cpp
223	$(CXX) -c $(CXX_SWITCHES) $?
224std.o:     $(srcdir)/../src/std.cpp
225	$(CXX) -c $(CXX_SWITCHES) $?
226store.o:   $(srcdir)/../src/store.cpp
227	$(CXX) -c $(CXX_SWITCHES) $?
228string.o:  $(srcdir)/../src/string.cpp
229	$(CXX) -c $(CXX_SWITCHES) $?
230table.o:   $(srcdir)/../src/table.cpp
231	$(CXX) -c $(CXX_SWITCHES) $?
232univ.o:    $(srcdir)/../src/univ.cpp
233	$(CXX) -c $(CXX_SWITCHES) $?
234view.o:    $(srcdir)/../src/view.cpp
235	$(CXX) -c $(CXX_SWITCHES) $?
236viewx.o:   $(srcdir)/../src/viewx.cpp
237	$(CXX) -c $(CXX_SWITCHES) $?
238
239regress.o: $(srcdir)/../tests/regress.cpp
240	$(CXX) -c $(CXX_SWITCHES) $?
241tbasic1.o: $(srcdir)/../tests/tbasic1.cpp
242	$(CXX) -c $(CXX_SWITCHES) $?
243tbasic2.o: $(srcdir)/../tests/tbasic2.cpp
244	$(CXX) -c $(CXX_SWITCHES) $?
245tcusto1.o: $(srcdir)/../tests/tcusto1.cpp
246	$(CXX) -c $(CXX_SWITCHES) $?
247tcusto2.o: $(srcdir)/../tests/tcusto2.cpp
248	$(CXX) -c $(CXX_SWITCHES) $?
249tdiffer.o: $(srcdir)/../tests/tdiffer.cpp
250	$(CXX) -c $(CXX_SWITCHES) $?
251textend.o: $(srcdir)/../tests/textend.cpp
252	$(CXX) -c $(CXX_SWITCHES) $?
253tformat.o: $(srcdir)/../tests/tformat.cpp
254	$(CXX) -c $(CXX_SWITCHES) $?
255tlimits.o: $(srcdir)/../tests/tlimits.cpp
256	$(CXX) -c $(CXX_SWITCHES) $?
257tmapped.o: $(srcdir)/../tests/tmapped.cpp
258	$(CXX) -c $(CXX_SWITCHES) $?
259tnotify.o: $(srcdir)/../tests/tnotify.cpp
260	$(CXX) -c $(CXX_SWITCHES) $?
261tresize.o: $(srcdir)/../tests/tresize.cpp
262	$(CXX) -c $(CXX_SWITCHES) $?
263tstore1.o: $(srcdir)/../tests/tstore1.cpp
264	$(CXX) -c $(CXX_SWITCHES) $?
265tstore2.o: $(srcdir)/../tests/tstore2.cpp
266	$(CXX) -c $(CXX_SWITCHES) $?
267tstore3.o: $(srcdir)/../tests/tstore3.cpp
268	$(CXX) -c $(CXX_SWITCHES) $?
269tstore4.o: $(srcdir)/../tests/tstore4.cpp
270	$(CXX) -c $(CXX_SWITCHES) $?
271tstore5.o: $(srcdir)/../tests/tstore5.cpp
272	$(CXX) -c $(CXX_SWITCHES) $?
273
274#---------- End
275