]>
Commit | Line | Data |
---|---|---|
bce1b489 | 1 | #Makefile for GNU Objective C runtime library. |
c5c76735 | 2 | #Copyright (C) 1993, 95-98, 1999 Free Software Foundation, Inc. |
bce1b489 BE |
3 | |
4 | #This file is part of GNU CC. | |
5 | ||
6 | #GNU CC is free software; you can redistribute it and/or modify | |
7 | #it under the terms of the GNU General Public License as published by | |
8 | #the Free Software Foundation; either version 2, or (at your option) | |
9 | #any later version. | |
10 | ||
11 | #GNU CC is distributed in the hope that it will be useful, | |
12 | #but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | #GNU General Public License for more details. | |
15 | ||
16 | #You should have received a copy of the GNU General Public License | |
17 | #along with GNU CC; see the file COPYING. If not, write to | |
5f38fdda JL |
18 | #the Free Software Foundation, 59 Temple Place - Suite 330, |
19 | #Boston, MA 02111-1307, USA. */ | |
bce1b489 BE |
20 | |
21 | #This was cribbed from the libchill, libiberty and libstdc++ | |
22 | #Makefile.in files. Some of this stuff may be unnecessary and | |
23 | #worthless. | |
24 | ||
25 | SHELL = /bin/sh | |
26 | ||
27 | #### Start of system configuration section. #### | |
28 | ||
29 | srcdir = @srcdir@ | |
30 | VPATH = @srcdir@ | |
31 | prefix = @prefix@ | |
32 | exec_prefix = @exec_prefix@ | |
33 | target_alias = @target_alias@ | |
34 | gcc_version = @gcc_version@ | |
35 | gcc_version_trigger = @gcc_version_trigger@ | |
36 | ||
37 | libdir = $(exec_prefix)/lib | |
38 | libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version) | |
39 | incinstalldir = $(libsubdir)/include | |
40 | ||
41 | # Multilib support variables. | |
42 | MULTISRCTOP = | |
43 | MULTIBUILDTOP = | |
44 | MULTIDIRS = | |
45 | MULTISUBDIR = | |
46 | MULTIDO = true | |
47 | MULTICLEAN = true | |
48 | ||
49 | # Not configured per top-level version, since that doesn't get passed | |
50 | # down at configure time, but overrridden by the top-level install | |
51 | # target. | |
52 | INSTALL = @INSTALL@ | |
53 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | |
54 | INSTALL_DATA = @INSTALL_DATA@ | |
55 | ||
56 | AR = @AR@ | |
57 | AR_FLAGS = rc | |
58 | ||
59 | RANLIB = @RANLIB@ | |
60 | ||
61 | CC = @CC@ | |
62 | CFLAGS = @CFLAGS@ | |
15794a95 | 63 | GTHREAD_FLAGS=@GTHREAD_FLAGS@ |
6fc605d8 | 64 | ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) \ |
15794a95 | 65 | $(GTHREAD_FLAGS) -DIN_GCC -DIN_TARGET_LIBS |
bce1b489 | 66 | |
7af06410 MK |
67 | # |
68 | # Define the cc1obj in terms of the CC that is passed on from higher | |
69 | # level make. This is needed to make sure we can create runtime-info.h | |
70 | # when doing canadian cross builds where running ../../gcc/cc1obj | |
71 | # does not make any sense. | |
72 | # | |
73 | CC1OBJ = `$(CC) -print-prog-name=cc1obj` | |
74 | ||
5e2f657b | 75 | INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \ |
84beab38 KG |
76 | -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \ |
77 | -I$(srcdir)/$(MULTISRCTOP)../include | |
bce1b489 BE |
78 | |
79 | OBJC_GCFLAGS=-DOBJC_WITH_GC=1 | |
15794a95 | 80 | OBJC_THREAD_FILE=thr-objc |
bce1b489 BE |
81 | |
82 | .SUFFIXES: | |
83 | .SUFFIXES: .c .m .o | |
84 | ||
85 | .c.o: | |
86 | $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< | |
87 | ||
88 | .m.o: | |
89 | $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< | |
90 | ||
4102f627 RL |
91 | # Flags to pass to a recursive make. |
92 | FLAGS_TO_PASS = \ | |
93 | "AR=$(AR)" \ | |
94 | "AR_FLAGS=$(AR_FLAGS)" \ | |
95 | "CC=$(CC)" \ | |
96 | "CFLAGS=$(CFLAGS)" \ | |
97 | "LIBCFLAGS=$(LIBCFLAGS)" \ | |
98 | "EXTRA_OFILES=$(EXTRA_OFILES)" \ | |
99 | "HDEFINES=$(HDEFINES)" \ | |
100 | "INSTALL=$(INSTALL)" \ | |
101 | "INSTALL_DATA=$(INSTALL_DATA)" \ | |
102 | "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ | |
103 | "LDFLAGS=$(LDFLAGS)" \ | |
104 | "LOADLIBES=$(LOADLIBES)" \ | |
105 | "PICFLAG=$(PICFLAG)" \ | |
106 | "RANLIB=$(RANLIB)" \ | |
76632dd0 DJ |
107 | "SHELL=$(SHELL)" \ |
108 | "prefix=$(prefix)" \ | |
109 | "exec_prefix=$(exec_prefix)" \ | |
110 | "libdir=$(libdir)" \ | |
111 | "libsubdir=$(libsubdir)" \ | |
112 | "tooldir=$(tooldir)" | |
4102f627 | 113 | |
bce1b489 BE |
114 | all: libobjc.a @OBJC_BOEHM_GC@ |
115 | $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all | |
116 | ||
117 | # User-visible header files. | |
118 | ||
119 | OBJC_H = hash.h objc-list.h sarray.h objc.h objc-api.h \ | |
120 | NXConstStr.h Object.h Protocol.h encoding.h typedstream.h \ | |
121 | thr.h | |
122 | ||
123 | # Modules that comprise the runtime library. | |
124 | ||
125 | OBJS = archive.o class.o encoding.o gc.o hash.o init.o linking.o \ | |
126 | misc.o nil_method.o NXConstStr.o Object.o objects.o \ | |
127 | Protocol.o sarray.o selector.o sendmsg.o thr.o \ | |
128 | $(OBJC_THREAD_FILE).o | |
129 | ||
130 | OBJS_GC = archive_gc.o class_gc.o encoding_gc.o gc_gc.o hash_gc.o \ | |
131 | init_gc.o linking_gc.o misc_gc.o nil_method_gc.o \ | |
132 | NXConstStr_gc.o Object_gc.o objects_gc.o Protocol_gc.o \ | |
133 | sarray_gc.o selector_gc.o sendmsg_gc.o thr_gc.o \ | |
134 | $(OBJC_THREAD_FILE)_gc.o | |
135 | ||
7af06410 | 136 | runtime-info.h: |
bce1b489 BE |
137 | echo "" > tmp-runtime |
138 | echo "/* This file is automatically generated */" > $@ | |
7af06410 | 139 | $(CC1OBJ) -print-objc-runtime-info tmp-runtime >> $@ |
bce1b489 BE |
140 | rm -f tmp-runtime |
141 | ||
142 | archive_gc.o: archive.c | |
143 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
144 | ||
145 | class_gc.o: class.c | |
146 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
147 | ||
148 | encoding_gc.o: encoding.c | |
149 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
150 | ||
151 | gc.o: gc.c | |
e36e6e02 | 152 | $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< |
bce1b489 BE |
153 | |
154 | gc_gc.o: gc.c | |
e36e6e02 | 155 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ |
bce1b489 BE |
156 | $(INCLUDES) $< |
157 | ||
158 | hash_gc.o: hash.c | |
159 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
160 | ||
161 | init_gc.o: init.c | |
162 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
163 | ||
164 | linking.o: linking.m | |
165 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
166 | ||
167 | linking_gc.o: linking.m | |
168 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
169 | $(INCLUDES) $< | |
170 | ||
171 | misc_gc.o: misc.c | |
172 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
173 | ||
174 | nil_method_gc.o: nil_method.c | |
175 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
176 | ||
177 | NXConstStr.o: NXConstStr.m | |
178 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
179 | ||
180 | NXConstStr_gc.o: NXConstStr.m | |
181 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
182 | $(INCLUDES) $< | |
183 | ||
184 | Object.o: Object.m | |
185 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
186 | ||
187 | Object_gc.o: Object.m | |
188 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
189 | $(INCLUDES) $< | |
190 | ||
191 | objects_gc.o: objects.c | |
192 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
193 | ||
194 | Protocol.o: Protocol.m | |
195 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
196 | ||
197 | Protocol_gc.o: Protocol.m | |
198 | $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ | |
199 | $(INCLUDES) $< | |
200 | ||
201 | sarray_gc.o: sarray.c | |
202 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
203 | ||
204 | selector_gc.o: selector.c | |
205 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
206 | ||
207 | sendmsg.o: sendmsg.c runtime-info.h | |
208 | $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< | |
209 | ||
210 | sendmsg_gc.o: sendmsg.c runtime-info.h | |
211 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
212 | ||
213 | thr_gc.o: thr.c | |
214 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
215 | ||
216 | $(OBJC_THREAD_FILE)_gc.o: $(OBJC_THREAD_FILE).c | |
217 | $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< | |
218 | ||
219 | doc: info dvi html | |
220 | ||
221 | libobjc.a: $(OBJS) | |
222 | $(AR) $(AR_FLAGS) $@ $(OBJS) | |
223 | $(RANLIB) $@ | |
224 | ||
225 | libobjc_gc.a: $(OBJS_GC) | |
226 | $(AR) $(AR_FLAGS) $@ $(OBJS_GC) | |
227 | $(RANLIB) $@ | |
228 | ||
229 | libobjc_s.a: libobjc.a | |
230 | mv libobjc.a libobjc_s.a | |
231 | ||
232 | # Create a relocatable DLL | |
233 | libobjc.dll: libobjc_s.a libobjc_entry.o | |
234 | $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \ | |
235 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
236 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
237 | --base-file libobjc.base --output-exp libobjc.exp | |
238 | $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \ | |
239 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
240 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
241 | --base-file libobjc.base --output-exp libobjc.exp | |
242 | $(GCC_FOR_TARGET) libobjc.exp -mdll \ | |
243 | -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 | |
244 | $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ | |
245 | --output-lib libobjc.a | |
246 | ||
247 | info: objc-features.info | |
248 | dvi: objc-features.dvi | |
249 | html: objc-features_toc.html | |
250 | ||
251 | objc-features.info: $(srcdir)/objc-features.texi | |
252 | makeinfo $(srcdir)/objc-features.texi | |
253 | ||
254 | objc-features.dvi: $(srcdir)/objc-features.texi | |
255 | texi2dvi $(srcdir)/objc-features.texi | |
256 | ||
257 | objc-features_toc.html: objc-features.texi | |
258 | texi2html -split_node $(srcdir)/objc-features.texi | |
259 | ||
260 | Makefile: Makefile.in config.status | |
261 | $(SHELL) config.status | |
262 | ||
263 | config.status: configure | |
264 | rm -f config.cache | |
265 | CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \ | |
266 | CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck | |
267 | ||
268 | ${srcdir}/configure: configure.in | |
269 | rm -f config.cache | |
270 | cd ${srcdir} && autoconf | |
271 | ||
272 | install: install-libs copy-headers | |
273 | ||
274 | install-libs: installdirs | |
275 | -if test -f libobjc.a ; then \ | |
276 | rm -f $(libsubdir)/libobjc.a; \ | |
277 | $(INSTALL_DATA) libobjc.a $(libsubdir)/libobjc.a; \ | |
278 | chmod a-x $(libsubdir)/libobjc.a; \ | |
279 | else true; fi | |
280 | -if test -f libobjc_gc.a ; then \ | |
281 | rm -f $(libsubdir)/libobjc_gc.a; \ | |
282 | $(INSTALL_DATA) libobjc_gc.a $(libsubdir)/libobjc_gc.a; \ | |
283 | chmod a-x $(libsubdir)/libobjc_gc.a; \ | |
284 | else true; fi | |
285 | -if test -f libobjc_s.a ; then \ | |
286 | rm -f $(libsubdir)/libobjc_s.a; \ | |
287 | $(INSTALL_DATA) libobjc_s.a $(libsubdir)/libobjc_s.a; \ | |
288 | chmod a-x $(libsubdir)/libobjc_s.a; \ | |
289 | else true; fi | |
290 | -if test -f libobjc.dll ; then \ | |
291 | rm -f $(bindir)/libobjc.dll; \ | |
292 | $(INSTALL_DATA) libobjc.dll $(bindir)/libobjc.dll; \ | |
293 | else true; fi | |
294 | ||
295 | # Copy Objective C headers to installation include directory. | |
296 | copy-headers: | |
297 | -rm -rf $(incinstalldir)/objc | |
298 | -mkdir $(incinstalldir)/objc | |
c5c76735 | 299 | -chmod a+rx $(incinstalldir)/objc |
bce1b489 | 300 | for file in $(OBJC_H); do \ |
789eb4f5 | 301 | realfile=$(srcdir)/objc/$${file}; \ |
bce1b489 BE |
302 | cp $${realfile} $(incinstalldir)/objc; \ |
303 | chmod a+r $(incinstalldir)/objc/$${file}; \ | |
304 | done | |
305 | ||
306 | check uninstall install-strip dist installcheck installdirs: | |
307 | ||
308 | mostlyclean: | |
309 | -rm -f runtime-info.h tmp-runtime.s *.o libobjc* xforward \ | |
310 | fflags *.aux *.cp *.dvi *.fn *.info *.ky *.log *.pg \ | |
311 | *.toc *.tp *.vr *.html libobj.exp | |
312 | @$(MULTICLEAN) multi-clean DO=mostlyclean | |
313 | ||
314 | clean: mostlyclean | |
315 | rm -f config.log | |
316 | @$(MULTICLEAN) multi-clean DO=clean | |
317 | ||
318 | distclean: clean | |
319 | @$(MULTICLEAN) multi-clean DO=distclean | |
320 | rm -f config.cache config.status Makefile configure | |
321 | ||
322 | maintainer-clean realclean: distclean | |
323 | ||
324 | .PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \ | |
325 | install-strip dist installcheck installdirs |