1
2# ------------------------------------------------------------------------
3# 	Makefile for static version of BLT library
4# ------------------------------------------------------------------------
5
6# ------------------------------------------------------------------------
7# 	C Compiler options
8# ------------------------------------------------------------------------
9
10BLT_LIBRARY =	@BLT_LIBRARY@
11TCLLIBPATH   =	@TCL_LIB_DIR@/tcl@TCL_VERSION@
12CC =		@CC@
13CFLAGS =	@CFLAGS@
14DEFINES =	@DEFINES@
15EXTRA_CFLAGS =	@GCCFLAGS@
16LDFLAGS =	@LDFLAGS@ @LD_RUN_PATH@
17version =	@BLT_MAJOR_VERSION@@BLT_MINOR_VERSION@
18
19# ------------------------------------------------------------------------
20# 	Source and targer installation directories
21# ------------------------------------------------------------------------
22
23bindir =	$(exec_prefix)/bin
24exec_prefix =	@exec_prefix@
25incdir =	$(prefix)/include
26libdir = 	@libdir@
27scriptdir =	$(exec_prefix)/lib
28
29prefix =	@prefix@
30srcdir =	@srcdir@
31
32instdirs =	$(prefix) $(exec_prefix) $(bindir) $(libdir) $(incdir)
33
34# ------------------------------------------------------------------------
35# 	Directories containing Tcl and Tk include files and libraries
36# ------------------------------------------------------------------------
37
38INCLUDES =	-I. -I$(srcdir) @INCLUDES@
39
40# ------------------------------------------------------------------------
41#       Libraries directives for Tcl, Tk, X11, and BLT
42# ------------------------------------------------------------------------
43
44LIBS =		@LIB_SPECS@ @EXTRA_LIB_SPECS@
45TCL_ONLY_LIBS = @TCL_ONLY_LIB_SPECS@ @EXTRA_LIB_SPECS@
46
47# ------------------------------------------------------------------------
48# 	You don't need to edit anything beyond this point
49# ------------------------------------------------------------------------
50
51N_OBJS =	bltTed.o
52V3_OBJS =	bltTri.o bltGrMt.o
53
54TK_OBJS =	tkButton.o tkFrame.o bltScrollbar.o
55
56GRAPH_OBJS =	bltGrAxis.o \
57		bltGrBar.o \
58		bltGrElem.o \
59		bltGrGrid.o \
60		bltGrHairs.o \
61		bltGrLegd.o \
62		bltGrLine.o \
63		bltGrMarker.o \
64		bltGrMisc.o \
65		bltGrPen.o \
66		bltGrPs.o \
67		bltGraph.o
68
69
70ifeq ($(ARCH),WIN32)
71
72DND_OBJS =
73IMAGE_OBJS =    bltWinImage.o
74PIPE_OBJS =     bltWinPipe.o \
75		bltWinUtil.o \
76		bltWinDde.o \
77		bltWinDraw.o \
78		bltWinPrnt.o
79
80else
81
82DND_OBJS =      bltUnixDnd.o
83IMAGE_OBJS =    bltUnixImage.o
84PIPE_OBJS =	bltUnixPipe.o
85
86endif
87
88TCL_ONLY_OBJS =	bltAlloc.o \
89		bltArrayObj.o \
90		bltBgexec.o \
91		bltChain.o \
92		bltDebug.o \
93		bltHash.o \
94		bltList.o \
95		bltNsUtil.o \
96		bltParse.o \
97		bltPool.o \
98		bltSpline.o \
99		bltSwitch.o \
100		bltTree.o \
101		bltTreeCmd.o \
102                $(PIPE_OBJS) \
103		bltUtil.o \
104		bltVector.o \
105		bltVecMath.o \
106		bltVecCmd.o \
107		bltVecObjCmd.o \
108		bltStubLib.o \
109		bltStubInit.o \
110		bltWatch.o
111
112OBJS =		$(GRAPH_OBJS) \
113		$(TCL_ONLY_OBJS) \
114		bltBeep.o \
115		bltBind.o \
116		bltBitmap.o \
117		bltBusy.o \
118		bltCanvEps.o \
119		bltColor.o \
120		bltConfig.o \
121		bltContainer.o \
122		bltCutbuffer.o \
123		bltDragdrop.o \
124		bltHierbox.o \
125		bltHtext.o \
126		bltImage.o \
127		$(IMAGE_OBJS) \
128		bltPs.o \
129		bltTable.o \
130		bltTabnotebook.o \
131		bltTabset.o \
132		bltText.o \
133		bltTile.o \
134		bltTreeView.o \
135		bltTreeViewCmd.o \
136		bltTreeViewEdit.o \
137		bltTreeViewColumn.o \
138		bltTreeViewStyle.o \
139		$(DND_OBJS) \
140		bltWindow.o \
141		bltObjConfig.o \
142		bltWinop.o \
143		$(TK_OBJS) $(N_OBJS)
144
145# GNU Make-specific macro
146SRCS =		$(patsubst %.o,$(srcdir)/%.c,$(OBJS))
147
148bltwish =	bltwish
149bltsh =		bltsh
150headers =	$(srcdir)/blt.h \
151		$(srcdir)/bltOldConfig.h \
152		$(srcdir)/bltBind.h \
153		$(srcdir)/bltChain.h \
154		bltHash.h \
155		$(srcdir)/bltList.h \
156		$(srcdir)/bltPool.h \
157		$(srcdir)/bltTree.h \
158		$(srcdir)/bltDecls.h \
159		$(srcdir)/bltVector.h
160
161lib_a =		libBLT.a
162libvers_a =	libBLT$(version).a
163tcl_only_lib_a =  libBLTlite.a
164tcl_only_libvers_a = libBLTlite$(version).a
165stub_a =	libBLTstub.a
166stub_libvers_a = libBLTstub$(version).a
167
168CC_SWITCHES =	$(EXTRA_CFLAGS) $(CFLAGS) $(DEFINES) $(INCLUDES)
169INSTALL =	@INSTALL@
170INSTALL_DATA =	@INSTALL_DATA@
171INSTALL_ROOT =  ${DESTDIR}
172RANLIB =	@RANLIB@
173SHELL =		/bin/sh
174AR =		ar rc
175RM =		rm -f
176LINT =		lint
177LINTFLAGS =	-axhbns
178XREF =		cxref
179XREFFLAGS =	-dltR
180LN_S =		@LN_S@
181VPATH =		$(srcdir)
182
183all: $(bltsh) $(bltwish) @SHLIB_TARGET@
184#all: $(bltwish) @SHLIB_TARGET@
185
186build_shared:
187	(cd shared; $(MAKE) CFLAGS="$(CFLAGS)" all)
188
189$(bltwish): $(lib_a) $(srcdir)/bltUnixMain.c
190	$(RM) $(bltwish)
191	$(CC) $(CC_SWITCHES) $(LDFLAGS) -o $(bltwish) \
192		-DTCLLIBPATH=\"$(TCLLIBPATH)\" \
193		$(srcdir)/bltUnixMain.c $(lib_a) $(LIBS)
194
195$(bltsh): $(tcl_only_lib_a) $(srcdir)/bltUnixMain.c
196	$(RM) $(bltsh)
197	$(CC) $(CC_SWITCHES) $(LDFLAGS) -DTCL_ONLY -o $(bltsh) \
198		-DTCLLIBPATH=\"$(TCLLIBPATH)\" \
199		$(srcdir)/bltUnixMain.c $(tcl_only_lib_a) $(TCL_ONLY_LIBS)
200
201$(lib_a): $(OBJS) $(srcdir)/bltInit.c
202	$(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
203		$(srcdir)/bltInit.c
204	$(RM) $@
205	$(AR) $@ $(OBJS) bltInit.o
206	$(RANLIB) $@
207
208$(tcl_only_lib_a):  $(TCL_ONLY_OBJS) $(srcdir)/bltInit.c
209	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
210		$(srcdir)/bltInit.c
211	$(RM) $@
212	$(AR) $@ $(TCL_ONLY_OBJS) bltInit.o
213	$(RANLIB) $@
214
215install: mkdirs install-lib install-demo install-headers
216
217install-demo: $(bltwish) $(bltsh)
218	$(INSTALL) -m 0755 $(bltwish) $(INSTALL_ROOT)$(bindir)
219	$(INSTALL) -m 0755 $(bltsh) $(INSTALL_ROOT)$(bindir)
220
221install-lib: $(lib_a) $(tcl_only_lib_a) $(stub_a)
222	$(INSTALL_DATA) $(lib_a) $(INSTALL_ROOT)$(libdir)/$(libvers_a)
223	(cd $(INSTALL_ROOT)$(libdir); $(RM) $(lib_a) ; $(LN_S) $(libvers_a) $(lib_a))
224	$(RANLIB) $(INSTALL_ROOT)$(libdir)/$(libvers_a)
225	$(INSTALL_DATA) $(tcl_only_lib_a) $(INSTALL_ROOT)$(libdir)/$(tcl_only_libvers_a)
226	(cd $(INSTALL_ROOT)$(libdir); $(RM) $(tcl_only_lib_a) ; $(LN_S) $(tcl_only_libvers_a) $(tcl_only_lib_a))
227	$(RANLIB) $(INSTALL_ROOT)$(libdir)/$(tcl_only_libvers_a)
228	$(INSTALL_DATA) $(stub_a) $(INSTALL_ROOT)$(libdir)/$(stub_libvers_a)
229	(cd $(INSTALL_ROOT)$(libdir); $(RM) $(stub_a) ; $(LN_S) $(stub_libvers_a) $(stub_a))
230	(cd shared; $(MAKE) install)
231
232mkdirs:
233	@for i in $(instdirs) ; do \
234          if test -d $(INSTALL_ROOT)$$i ; then \
235            : ; \
236          else \
237            echo " mkdir $(INSTALL_ROOT)$$i" ; \
238            mkdir $(INSTALL_ROOT)$$i ; \
239          fi ; \
240        done
241
242install-headers:
243	@for i in $(headers) ; do \
244	    echo "installing $$i..." ; \
245	    $(INSTALL_DATA) -m 0444 $$i $(INSTALL_ROOT)$(incdir) ; \
246	done
247
248lint:
249	$(LINT) $(LINTFLAGS) $(DEFINES) $(INCLUDES) $(SRCS)
250
251libBLTstub.a:
252	$(CC) -fPIC -I$(srcdir) @INCLUDES@ -c $(srcdir)/bltStubLib.c
253	$(AR) libBLTstub.a bltStubLib.o
254	$(RANLIB) libBLTstub.a
255
256
257genstubs:
258	tclsh $(TCLLIBPATH)/tools/genStubs.tcl $(srcdir) blt.decl
259
260xref:
261	$(XREF) $(XREFFLAGS) $(DEFINES) $(INCLUDES) $(SRCS)
262
263clean:
264	$(RM) $(OBJS) bltInit.o $(lib_a) $(tcl_only_lib_a) \
265		$(bltsh)* $(bltwish)*
266	(cd shared; $(MAKE) clean)
267
268distclean: clean
269	$(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"*  Makefile
270	$(RM) bltConfig.h Makefile TAGS
271
272.c.o:
273	$(CC) -c $(CC_SWITCHES) $<
274
275QUANTIFYFLAGS=
276quant: $(lib_a)
277	$(QUANTIFYHOME)/quantify $(QUANTIFYFLAGS) $(CC) $(CC_SWITCHES) \
278		$(srcdir)/bltUnixMain.c -o bltwish $(lib_a) $(LIBS)
279