]>
Commit | Line | Data |
---|---|---|
1 | # Makefile for GNU Objective C runtime library. | |
2 | # Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 | |
3 | # Free Software Foundation, Inc. | |
4 | ||
5 | #This file is part of GCC. | |
6 | ||
7 | #GCC is free software; you can redistribute it and/or modify | |
8 | #it under the terms of the GNU General Public License as published by | |
9 | #the Free Software Foundation; either version 2, or (at your option) | |
10 | #any later version. | |
11 | ||
12 | #GCC is distributed in the hope that it will be useful, | |
13 | #but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | #GNU General Public License for more details. | |
16 | ||
17 | #You should have received a copy of the GNU General Public License | |
18 | #along with GCC; see the file COPYING. If not, write to | |
19 | #the Free Software Foundation, 59 Temple Place - Suite 330, | |
20 | #Boston, MA 02111-1307, USA. */ | |
21 | ||
22 | #This was cribbed from the libchill, libiberty and libstdc++ | |
23 | #Makefile.in files. Some of this stuff may be unnecessary and | |
24 | #worthless. | |
25 | ||
26 | SHELL = @SHELL@ | |
27 | MAKEOVERRIDES= | |
28 | ||
29 | #### Start of system configuration section. #### | |
30 | ||
31 | srcdir = @glibcpp_srcdir@ | |
32 | VPATH = @glibcpp_srcdir@ | |
33 | prefix = @prefix@ | |
34 | exec_prefix = @exec_prefix@ | |
35 | target_noncanonical = @target_noncanonical@ | |
36 | gcc_version = @gcc_version@ | |
37 | top_srcdir = @top_srcdir@ | |
38 | toplevel_srcdir = @toplevel_srcdir@ | |
39 | toolexecdir = @toolexecdir@ | |
40 | # Toolexecdir is used only by toolexeclibdir | |
41 | toolexeclibdir = @toolexeclibdir@ | |
42 | ||
43 | includedir = @includedir@ | |
44 | libext = @libext@ | |
45 | ||
46 | top_builddir = . | |
47 | ||
48 | libdir = $(exec_prefix)/lib | |
49 | libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) | |
50 | ||
51 | # Multilib support variables. | |
52 | MULTISRCTOP = | |
53 | MULTIBUILDTOP = | |
54 | MULTIDIRS = | |
55 | MULTISUBDIR = | |
56 | MULTIDO = true | |
57 | MULTICLEAN = true | |
58 | ||
59 | # Not configured per top-level version, since that doesn't get passed | |
60 | # down at configure time, but overrridden by the top-level install | |
61 | # target. | |
62 | INSTALL = @INSTALL@ | |
63 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | |
64 | INSTALL_DATA = @INSTALL_DATA@ | |
65 | ||
66 | AR = @AR@ | |
67 | AR_FLAGS = rc | |
68 | ||
69 | RANLIB = @RANLIB@ | |
70 | ||
71 | CC = @CC@ | |
72 | CFLAGS = @CFLAGS@ | |
73 | WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes | |
74 | GTHREAD_FLAGS=@GTHREAD_FLAGS@ | |
75 | ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(WARN_CFLAGS) \ | |
76 | $(GTHREAD_FLAGS) -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing | |
77 | ||
78 | # Libtool | |
79 | # The following strings describe the version of the obj-C library | |
80 | # begin compiled and compatibility issues. | |
81 | # Please refer to Libtool documentation about how to manage these | |
82 | # numbers. | |
83 | LIBOBJC_VERSION = @VERSION@ | |
84 | LIBOBJC_GC_VERSION = @VERSION@ | |
85 | LIBTOOL = @LIBTOOL@ | |
86 | LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile | |
87 | LIBTOOL_LINK = $(LIBTOOL) --mode=link | |
88 | LIBTOOL_INSTALL = $(LIBTOOL) --mode=install | |
89 | LIBTOOL_CLEAN = $(LIBTOOL) --mode=clean | |
90 | #LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall | |
91 | ||
92 | INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \ | |
93 | -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \ | |
94 | -I$(srcdir)/$(MULTISRCTOP)../include | |
95 | ||
96 | OBJC_GCFLAGS=-DOBJC_WITH_GC=1 | |
97 | OBJC_THREAD_FILE=thr-objc | |
98 | OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ | |
99 | ||
100 | .SUFFIXES: | |
101 | .SUFFIXES: .c .m .lo | |
102 | ||
103 | .c.lo: | |
104 | $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< | |
105 | ||
106 | .m.lo: | |
107 | $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< | |
108 | ||
109 | # Flags to pass to a recursive make. | |
110 | FLAGS_TO_PASS = \ | |
111 | "AR=$(AR)" \ | |
112 | "AR_FLAGS=$(AR_FLAGS)" \ | |
113 | "CC=$(CC)" \ | |
114 | "CFLAGS=$(CFLAGS)" \ | |
115 | "DESTDIR=$(DESTDIR)" \ | |
116 | "LIBCFLAGS=$(LIBCFLAGS)" \ | |
117 | "EXTRA_OFILES=$(EXTRA_OFILES)" \ | |
118 | "HDEFINES=$(HDEFINES)" \ | |
119 | "INSTALL=$(INSTALL)" \ | |
120 | "INSTALL_DATA=$(INSTALL_DATA)" \ | |
121 | "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ | |
122 | "LDFLAGS=$(LDFLAGS)" \ | |
123 | "LIBTOOL=$(LIBTOOL)" \ | |
124 | "LOADLIBES=$(LOADLIBES)" \ | |
125 | "PICFLAG=$(PICFLAG)" \ | |
126 | "RANLIB=$(RANLIB)" \ | |
127 | "SHELL=$(SHELL)" \ | |
128 | "prefix=$(prefix)" \ | |
129 | "exec_prefix=$(exec_prefix)" \ | |
130 | "libdir=$(libdir)" \ | |
131 | "libsubdir=$(libsubdir)" \ | |
132 | "tooldir=$(tooldir)" | |
133 | ||
134 | all: libobjc$(libext).la $(OBJC_BOEHM_GC) | |
135 | : $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all | |
136 | ||
137 | # User-visible header files. | |
138 | ||
139 | OBJC_H = hash.h objc-list.h sarray.h objc.h objc-api.h \ | |
140 | NXConstStr.h Object.h Protocol.h encoding.h typedstream.h \ | |
141 | thr.h objc-decls.h | |
142 | ||
143 | # Modules that comprise the runtime library. | |
144 | ||
145 | OBJS = archive.lo class.lo encoding.lo gc.lo hash.lo init.lo linking.lo \ | |
146 | misc.lo nil_method.lo NXConstStr.lo Object.lo objects.lo \ | |
147 | Protocol.lo sarray.lo selector.lo sendmsg.lo thr.lo \ | |
148 | $(OBJC_THREAD_FILE).lo | |
149 | ||
150 | OBJS_GC = archive_gc.lo class_gc.lo encoding_gc.lo gc_gc.lo hash_gc.lo \ | |
151 | init_gc.lo linking_gc.lo misc_gc.lo nil_method_gc.lo \ | |
152 | NXConstStr_gc.lo Object_gc.lo objects_gc.lo Protocol_gc.lo \ | |
153 | sarray_gc.lo selector_gc.lo sendmsg_gc.lo thr_gc.lo \ | |
154 | $(OBJC_THREAD_FILE)_gc.lo | |
155 | ||
156 | runtime-info.h: | |
157 | echo "" > tmp-runtime.m | |
158 | echo "/* This file is automatically generated */" > $@ | |
159 | $(CC) $(MULTIFLAGS) -print-objc-runtime-info -S tmp-runtime.m >> $@ | |
160 | rm -f tmp-runtime.m tmp-runtime.s | |
161 | ||
162 | archive_gc.lo: archive.c | |
163 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
164 | $(INCLUDES) $< | |
165 | ||
166 | class_gc.lo: class.c | |
167 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
168 | $(INCLUDES) $< | |
169 | ||
170 | encoding_gc.lo: encoding.c | |
171 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
172 | $(INCLUDES) $< | |
173 | ||
174 | gc.lo: gc.c | |
175 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
176 | ||
177 | gc_gc.lo: gc.c | |
178 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
179 | $(INCLUDES) $< | |
180 | ||
181 | hash_gc.lo: hash.c | |
182 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
183 | $(INCLUDES) $< | |
184 | ||
185 | init_gc.lo: init.c | |
186 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
187 | $(INCLUDES) $< | |
188 | ||
189 | linking.lo: linking.m | |
190 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
191 | $(INCLUDES) $< | |
192 | ||
193 | linking_gc.lo: linking.m | |
194 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
195 | $(OBJC_GCFLAGS) $(INCLUDES) $< | |
196 | ||
197 | misc_gc.lo: misc.c | |
198 | $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ | |
199 | $(INCLUDES) $< | |
200 | ||
201 | nil_method_gc.lo: nil_method.c | |
202 | $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ | |
203 | $(INCLUDES) $< | |
204 | ||
205 | NXConstStr.lo: NXConstStr.m | |
206 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
207 | $(INCLUDES) $< | |
208 | ||
209 | NXConstStr_gc.lo: NXConstStr.m | |
210 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
211 | $(OBJC_GCFLAGS) $(INCLUDES) $< | |
212 | ||
213 | Object.lo: Object.m | |
214 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
215 | $(INCLUDES) $< | |
216 | ||
217 | Object_gc.lo: Object.m | |
218 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
219 | $(OBJC_GCFLAGS) $(INCLUDES) $< | |
220 | ||
221 | objects_gc.lo: objects.c | |
222 | $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ | |
223 | $(INCLUDES) $< | |
224 | ||
225 | Protocol.lo: Protocol.m | |
226 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
227 | $(INCLUDES) $< | |
228 | ||
229 | Protocol_gc.lo: Protocol.m | |
230 | $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ | |
231 | $(OBJC_GCFLAGS) $(INCLUDES) $< | |
232 | ||
233 | sarray_gc.lo: sarray.c | |
234 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
235 | $(INCLUDES) $< | |
236 | ||
237 | selector_gc.lo: selector.c | |
238 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
239 | $(INCLUDES) $< | |
240 | ||
241 | sendmsg.lo: sendmsg.c runtime-info.h | |
242 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
243 | ||
244 | sendmsg_gc.lo: sendmsg.c runtime-info.h | |
245 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
246 | $(INCLUDES) $< | |
247 | ||
248 | thr_gc.lo: thr.c | |
249 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
250 | $(INCLUDES) $< | |
251 | ||
252 | $(OBJC_THREAD_FILE)_gc.lo: $(OBJC_THREAD_FILE).c | |
253 | $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
254 | $(INCLUDES) $< | |
255 | ||
256 | doc: info dvi html | |
257 | ||
258 | libobjc$(libext).la: $(OBJS) | |
259 | $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ | |
260 | -rpath $(toolexeclibdir) \ | |
261 | -version-info $(LIBOBJC_VERSION) | |
262 | ||
263 | libobjc_gc$(libext).la: $(OBJS_GC) | |
264 | $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ | |
265 | -rpath $(toolexeclibdir) \ | |
266 | -version-info $(LIBOBJC_GC_VERSION) | |
267 | ||
268 | # | |
269 | # FIXME -- The following part does not fit in the libtool context. | |
270 | # Libtool is supposed to [going to] be able to create a win 32 DLL | |
271 | # without extra code but since I don't have a win machine to test | |
272 | # if it already works, I leave the old code here. | |
273 | # | |
274 | libobjc_s.a: libobjc.la | |
275 | mv libobjc.a libobjc_s.a | |
276 | ||
277 | # Create a relocatable DLL | |
278 | libobjc.dll: libobjc_s.a libobjc_entry.o | |
279 | $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \ | |
280 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
281 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
282 | --base-file libobjc.base --output-exp libobjc.exp | |
283 | $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \ | |
284 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
285 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
286 | --base-file libobjc.base --output-exp libobjc.exp | |
287 | $(GCC_FOR_TARGET) libobjc.exp -mdll \ | |
288 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
289 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
290 | --output-lib libobjc.a | |
291 | # | |
292 | # | |
293 | # | |
294 | # | |
295 | # | |
296 | ||
297 | info: | |
298 | dvi: | |
299 | html: | |
300 | ||
301 | Makefile: Makefile.in config.status | |
302 | $(SHELL) config.status | |
303 | ||
304 | config.status: configure | |
305 | rm -f config.cache | |
306 | CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \ | |
307 | CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck | |
308 | ||
309 | ${srcdir}/configure: configure.ac | |
310 | rm -f config.cache | |
311 | cd ${srcdir} && autoconf | |
312 | ||
313 | install: install-libs install-headers | |
314 | ||
315 | install-libs: installdirs | |
316 | $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(toolexeclibdir) | |
317 | $(LIBTOOL_INSTALL) $(INSTALL) libobjc$(libext).la $(DESTDIR)$(toolexeclibdir); | |
318 | if [ "$(OBJC_BOEHM_GC)" ]; then \ | |
319 | $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc$(libext).la \ | |
320 | $(DESTDIR)$(toolexeclibdir);\ | |
321 | fi | |
322 | $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@" | |
323 | @-$(LIBTOOL) --mode=finish $(DESTDIR)$(toolexeclibdir) | |
324 | ||
325 | # Copy Objective C headers to installation include directory. | |
326 | install-headers: | |
327 | $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(libsubdir)/$(includedir)/objc | |
328 | for file in $(OBJC_H); do \ | |
329 | realfile=$(srcdir)/objc/$${file}; \ | |
330 | $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/$(includedir)/objc; \ | |
331 | done | |
332 | ||
333 | check uninstall install-strip dist installcheck installdirs: | |
334 | ||
335 | mostlyclean: | |
336 | -$(LIBTOOL_CLEAN) rm -f libobjc$(libext).la libobjc_gc$(libext).la *.lo | |
337 | -rm -f runtime-info.h tmp-runtime.s *.o *.lo libobjc* xforward \ | |
338 | fflags *.aux *.cp *.dvi *.fn *.info *.ky *.log *.pg \ | |
339 | *.toc *.tp *.vr *.html libobj.exp | |
340 | @$(MULTICLEAN) multi-clean DO=mostlyclean | |
341 | ||
342 | clean: mostlyclean | |
343 | rm -f config.log | |
344 | @$(MULTICLEAN) multi-clean DO=clean | |
345 | ||
346 | distclean: clean | |
347 | @$(MULTICLEAN) multi-clean DO=distclean | |
348 | rm -f config.cache config.status Makefile configure | |
349 | ||
350 | maintainer-clean realclean: distclean | |
351 | ||
352 | .PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \ | |
353 | install-strip dist installcheck installdirs | |
354 | ||
355 | # Don't export variables to the environment, in order to not confuse | |
356 | # configure. | |
357 | .NOEXPORT: |