1.SUFFIXES: .lo .to .tlo
2
3prefix=@prefix@
4exec_prefix=@exec_prefix@
5bindir=@bindir@
6sbindir=@sbindir@
7datarootdir=@datarootdir@
8libdir=@libdir@
9includedir=@includedir@
10mandir=@mandir@
11mansubdir=@mansubdir@
12sysconfdir=@sysconfdir@
13piddir=@piddir@
14srcdir=@srcdir@
15top_srcdir=@top_srcdir@
16buildtoolsdir=$(top_srcdir)/buildtools
17host=@host@
18
19DESTDIR=
20VPATH=@srcdir@ $(top_srcdir)/daemon
21SPREAD_PROGRAM=@sbindir@/spread
22SP_MAJOR_VERSION=@SP_MAJOR_VERSION@
23SP_MINOR_VERSION=@SP_MINOR_VERSION@
24SP_PATCH_VERSION=@SP_PATCH_VERSION@
25VERSION=@SP_MAJOR_VERSION@.@SP_MINOR_VERSION@.@SP_PATCH_VERSION@
26
27#Shared Library version -- Must be changed upon each release
28#Rules: major  -- inc for incompatible change
29#     : minor  -- inc for backwards compatible change (add new api, but not break or remove old one)
30#     : bugfix -- inc for bugfix that is fully compatible
31
32LIBFULLVERSION=3.0.0
33LIBCOMPATVERSION=3.0
34LIBVERSION=3
35
36PATHS=
37
38CC=@CC@
39LD=@LD@
40
41# don't use debugging (asserts and dprintfs) (optional)
42NO_DEBUG = -DNDEBUG
43#flush defines
44DEFINES= $(NO_DEBUG)
45
46CFLAGS=@CFLAGS@ $(DEFINES)
47#libspread-util includes
48LIBSPREADUTIL_DIR=../libspread-util
49LIBSPREADUTIL_PATHS=-I$(LIBSPREADUTIL_DIR)/include -I$(top_srcdir)/libspread-util/include
50#stdutil includes
51FLUSH_INC_DIR = -I../stdutil/src -I$(top_srcdir)/stdutil/src -I$(srcdir)
52CPPFLAGS=-I$(top_srcdir)/daemon -I../daemon -I$(top_srcdir)/include $(FLUSH_INC_DIR) $(LIBSPREADUTIL_PATHS) @CPPFLAGS@ $(PATHS) @DEFS@
53LDFLAGS=@LDFLAGS@
54LIBS=@LIBS@
55THLDFLAGS=@THLDFLAGS@
56THLIBS=@THLIBS@
57AR=@AR@
58LEX=@LEX@
59SHCC=@SHCC@
60SHLD=@SHLD@
61SHCFLAGS=@SHCFLAGS@ $(DEFINES)
62SHCPPFLAGS=@SHCPPFLAGS@ -I$(top_srcdir)/daemon -I../daemon -I$(top_srcdir)/include $(FLUSH_INC_DIR) $(LIBSPREADUTIL_PATHS)
63SHLDFLAGS=@SHLDFLAGS@
64SHLIBS=@SHLIBS@
65SHLDOPTION=@SHLDOPTION@
66SHLDNAME=@SHLDNAME@
67SHLDCONVERTSTATIC=@SHLDCONVERTSTATIC@
68SHLDCONVERTSTATICEND=@SHLDCONVERTSTATICEND@
69RANLIB=@RANLIB@
70INSTALL=@INSTALL@
71SOFTLINK=@LN_S@
72PERL=@PERL@
73ENT=@ENT@
74EXEEXT=@EXEEXT@
75
76SP_OBJ_DIR=../daemon
77
78TARGETS=libspread-core.a libtspread-core.a libspread.a @LIBSPSO@ @LIBSPCORESO@ @LIBTSPCORESO@
79
80LIBSP_OBJS= sp.o
81
82LIBSP_SHOBJS= sp.lo
83
84LIBTSP_OBJS= sp.to
85
86LIBTSP_SHOBJS= sp.tlo
87
88LIBTFL_OBJS= fl.to scatp.to sp.to
89
90LIBTFL_SHOBJS= fl.tlo scatp.tlo sp.tlo
91
92# A bit of a hack to grab the -fPIC threaded object files to merge into the shared spread library
93# since the stdutil.so cannot be merged, and the stdutil.a is not compiled -fPIC
94# Can be fixed correctly if stdutil generates incremental shared library versions
95STDUTIL_DIR=../stdutil/src
96
97SHARED_STDUTIL= $(STDUTIL_DIR)/stdarr.lto $(STDUTIL_DIR)/stdcarr.lto $(STDUTIL_DIR)/stddll.lto $(STDUTIL_DIR)/stderror.lto $(STDUTIL_DIR)/stdfd.lto $(STDUTIL_DIR)/stdhash.lto $(STDUTIL_DIR)/stdit.lto $(STDUTIL_DIR)/stdskl.lto $(STDUTIL_DIR)/stdthread.lto $(STDUTIL_DIR)/stdtime.lto $(STDUTIL_DIR)/stdutil.lto
98
99all: $(TARGETS)
100
101.c.o:
102	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
103
104.c.to:
105	$(CC) $(CFLAGS) $(CPPFLAGS) -D_REENTRANT -c $< -o $*.to
106
107.c.lo:
108	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -c $< -o $*.lo
109
110.c.tlo:
111	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -D_REENTRANT -c $< -o $*.tlo
112
113none:
114	@echo "Skipping shared library creation."
115
116install-none:
117	@echo "Skipping shared library installation."
118
119# libspread-core is the core spread library without Flush or Stdutil
120libspread-core.a: $(LIBSP_OBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
121	$(AR) rv $@ $(LIBSP_OBJS)
122	$(AR) x $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
123	$(AR) rv $@ alarm.o data_link.o memory.o events.o
124	$(RANLIB) $@
125
126libspread-core.dylib:	$(LIBSP_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
127	$(SHLD) -o libspread-core.$(LIBFULLVERSION).dylib $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLDCONVERTSTATIC) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(SHLDNAME)libspread-core.$(LIBVERSION).dylib  -current_version $(LIBFULLVERSION) -compatibility_version $(LIBCOMPATVERSION)
128	$(SOFTLINK) -f libspread-core.$(LIBFULLVERSION).dylib $@
129
130install-libspread-core.dylib:	libspread-core.dylib
131	$(INSTALL) -m 0755 libspread-core.$(LIBFULLVERSION).dylib $(DESTDIR)$(libdir)/libspread-core.$(LIBFULLVERSION).dylib
132	(cd $(DESTDIR)$(libdir); \
133		$(SOFTLINK) -f libspread-core.$(LIBFULLVERSION).dylib libspread-core.dylib; \
134		$(SOFTLINK) -f libspread-core.$(LIBFULLVERSION).dylib libspread-core.$(LIBVERSION).dylib; \
135		install_name_tool -id $(DESTDIR)$(libdir)/libspread-core.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libspread-core.$(LIBFULLVERSION).dylib \
136	)
137
138libspread-core.so:	$(LIBSP_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
139	$(SHLD) -o $@ $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLDCONVERTSTATIC) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(SHLDOPTION)$(SHLDNAME)$@.$(LIBVERSION)
140
141install-libspread-core.so:	libspread-core.so
142	$(INSTALL) -m 0755 libspread-core.so $(DESTDIR)$(libdir)/libspread-core.so.$(LIBFULLVERSION)
143	(cd $(DESTDIR)$(libdir); \
144		$(SOFTLINK) -f libspread-core.so.$(LIBFULLVERSION) libspread-core.so; \
145		$(SOFTLINK) -f libspread-core.so.$(LIBFULLVERSION) libspread-core.so.$(LIBVERSION) \
146	)
147
148libtspread-core.a: $(LIBTSP_OBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
149	$(AR) rv $@ $(LIBTSP_OBJS)
150	$(AR) x $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
151	$(AR) rv $@ alarm.o data_link.o memory.o events.o
152	$(RANLIB) $@
153
154libtspread-core.dylib:	$(LIBTSP_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
155	$(SHLD) -o libtspread-core.$(LIBFULLVERSION).dylib $(LIBTSP_SHOBJS) $(SHLDFLAGS) $(SHLDCONVERTSTATIC) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(THLIBS) $(SHLDNAME)libtspread-core.$(LIBVERSION).dylib  -current_version $(LIBFULLVERSION) -compatibility_version $(LIBCOMPATVERSION)
156	$(SOFTLINK) -f libtspread-core.$(LIBFULLVERSION).dylib $@
157
158install-libtspread-core.dylib:	libtspread-core.dylib
159	$(INSTALL) -m 0755 libtspread-core.$(LIBFULLVERSION).dylib $(DESTDIR)$(libdir)/libtspread-core.$(LIBFULLVERSION).dylib
160	(cd $(DESTDIR)$(libdir); \
161		$(SOFTLINK) -f libtspread-core.$(LIBFULLVERSION).dylib libtspread-core.dylib; \
162		$(SOFTLINK) -f libtspread-core.$(LIBFULLVERSION).dylib libtspread-core.$(LIBVERSION).dylib; \
163		install_name_tool -id $(DESTDIR)$(libdir)/libtspread-core.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libtspread-core.$(LIBFULLVERSION).dylib \
164	)
165
166libtspread-core.so:	$(LIBTSP_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
167	$(SHLD) -o $@ $(LIBTSP_SHOBJS) $(SHLDFLAGS) $(SHLDCONVERTSTATIC) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(THLIBS) $(SHLDOPTION)$(SHLDNAME)$@.$(LIBVERSION)
168
169install-libtspread-core.so:	libtspread-core.so
170	$(INSTALL) -m 0755 libtspread-core.so $(DESTDIR)$(libdir)/libtspread-core.so.$(LIBFULLVERSION)
171	(cd $(DESTDIR)$(libdir); \
172		$(SOFTLINK) -f libtspread-core.so.$(LIBFULLVERSION) libtspread-core.so; \
173		$(SOFTLINK) -f libtspread-core.so.$(LIBFULLVERSION) libtspread-core.so.$(LIBVERSION) \
174	)
175
176# Full Spread library with Fl_, SP_, and support modules linked in
177libspread.a: $(LIBTFL_OBJS) ../stdutil/lib/libstdutil-threaded-release.a $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
178	$(AR) rv $@ $(LIBTFL_OBJS)
179	$(AR) x ../stdutil/lib/libstdutil-threaded-release.a
180	$(AR) rv $@ std*.to
181	$(AR) x $(LIBSPREADUTIL_DIR)/lib/libspread-util.a
182	$(AR) rv $@ alarm.o data_link.o memory.o events.o
183	$(RANLIB) $@
184
185libspread.dylib:	$(LIBTFL_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
186	$(SHLD) -o libspread.$(LIBFULLVERSION).dylib $(LIBTFL_SHOBJS) $(SHLDFLAGS) $(SHLDCONVERTSTATIC) ../stdutil/lib/libstdutil-threaded-release.a $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(THLIBS) $(SHLDNAME)libspread.$(LIBVERSION).dylib  -current_version $(LIBFULLVERSION) -compatibility_version $(LIBCOMPATVERSION)
187	$(SOFTLINK) -f libspread.$(LIBFULLVERSION).dylib $@
188
189install-libspread.dylib:	libspread.dylib
190	$(INSTALL) -m 0755 libspread.$(LIBFULLVERSION).dylib $(DESTDIR)$(libdir)/libspread.$(LIBFULLVERSION).dylib
191	(cd $(DESTDIR)$(libdir); \
192		$(SOFTLINK) -f libspread.$(LIBFULLVERSION).dylib libspread.dylib; \
193		$(SOFTLINK) -f libspread.$(LIBFULLVERSION).dylib libspread.$(LIBVERSION).dylib; \
194		install_name_tool -id $(DESTDIR)$(libdir)/libspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libspread.$(LIBFULLVERSION).dylib \
195	)
196
197libspread.so:	$(LIBTFL_SHOBJS) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa
198	$(SHLD) -o $@ $(LIBTFL_SHOBJS) $(SHLDFLAGS) $(SHARED_STDUTIL) $(SHLDCONVERTSTATIC) $(LIBSPREADUTIL_DIR)/lib/libspread-util.sa $(SHLDCONVERTSTATICEND) $(SHLIBS) $(THLIBS) $(SHLDOPTION)$(SHLDNAME)$@.$(LIBVERSION)
199
200install-libspread.so:	libspread.so
201	$(INSTALL) -m 0755 libspread.so $(DESTDIR)$(libdir)/libspread.so.$(LIBFULLVERSION)
202	(cd $(DESTDIR)$(libdir); \
203		$(SOFTLINK) -f libspread.so.$(LIBFULLVERSION) libspread.so; \
204		$(SOFTLINK) -f libspread.so.$(LIBFULLVERSION) libspread.so.$(LIBVERSION); \
205	)
206
207clean:
208	rm -f *.lo *.tlo *.to *.o *.a *.dylib *.so $(TARGETS)
209	rm -f core
210	rm -rf autom4te.cache
211	rm -rf ../lib/$(host)
212
213distclean: clean
214	rm -f Makefile config.status *~
215
216binrelease: $(TARGETS)
217	$(buildtoolsdir)/mkinstalldirs ../lib/$(host)
218	$(INSTALL) -m 644 libspread.a ../lib/$(host)/libspread.a
219	$(INSTALL) -m 644 libspread-core.a ../lib/$(host)/libspread-core.a
220	$(INSTALL) -m 644 libtspread-core.a ../lib/$(host)/libtspread-core.a
221ifeq (@LIBSPSO@, libspread.so)
222	  $(INSTALL) -m 755 libspread.so ../lib/$(host)/libspread.so.$(LIBFULLVERSION)
223	  $(INSTALL) -m 755 libspread-core.so ../lib/$(host)/libspread-core.so.$(LIBFULLVERSION)
224	  $(INSTALL) -m 755 libtspread-core.so ../lib/$(host)/libtspread-core.so.$(LIBFULLVERSION)
225endif
226ifeq (@LIBSPSO@, libspread.dylib)
227	  $(INSTALL) -m 755 libspread.$(LIBFULLVERSION).dylib ../lib/$(host)/libspread.$(LIBFULLVERSION).dylib
228	  $(INSTALL) -m 755 libspread-core.$(LIBFULLVERSION).dylib ../lib/$(host)/libspread-core.$(LIBFULLVERSION).dylib
229	  $(INSTALL) -m 755 libtspread-core.$(LIBFULLVERSION).dylib ../lib/$(host)/libtspread-core.$(LIBFULLVERSION).dylib
230endif
231
232install: $(TARGETS) install-files install-@LIBSPSO@ install-@LIBSPCORESO@ install-@LIBTSPCORESO@
233
234install-files:
235	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(libdir)
236	$(buildtoolsdir)/mkinstalldirs $(DESTDIR)$(includedir)
237	$(INSTALL) -m 644 libspread.a $(DESTDIR)$(libdir)/libspread.a
238	$(INSTALL) -m 644 libspread-core.a $(DESTDIR)$(libdir)/libspread-core.a
239	$(INSTALL) -m 644 libtspread-core.a $(DESTDIR)$(libdir)/libtspread-core.a
240	$(INSTALL) -m 644 $(top_srcdir)/include/sp.h $(DESTDIR)$(includedir)/sp.h
241	$(INSTALL) -m 644 $(top_srcdir)/include/sp_func.h $(DESTDIR)$(includedir)/sp_func.h
242	$(INSTALL) -m 644 $(top_srcdir)/include/sp_events.h $(DESTDIR)$(includedir)/sp_events.h
243	$(INSTALL) -m 644 $(top_srcdir)/include/fl.h $(DESTDIR)$(includedir)/fl.h
244
245uninstallall:	uninstall
246	-rmdir $(DESTDIR)$(libdir)
247
248uninstall:
249	-rm -f $(DESTDIR)$(libdir)/libspread.a
250	-rm -f $(DESTDIR)$(libdir)/libspread-core.a
251	-rm -f $(DESTDIR)$(libdir)/libtspread-core.a
252	-rm -f $(DESTDIR)$(libdir)/@LIBSPSO@
253	-rm -f $(DESTDIR)$(libdir)/@LIBSPCORESO@
254	-rm -f $(DESTDIR)$(libdir)/@LIBTSPCORESO@
255	-rm -f $(DESTDIR)$(includedir)/sp.h
256	-rm -f $(DESTDIR)$(includedir)/sp_func.h
257	-rm -f $(DESTDIR)$(includedir)/sp_events.h
258	-rm -f $(DESTDIR)$(includedir)/fl.h
259