* Makefile.in (INCLUDES): Make it multilib-friendly
[gcc.git] / libobjc / Makefile.in
1 #Makefile for GNU Objective C runtime library.
2 #Copyright (C) 1993, 95-97, 1998 Free Software Foundation, Inc.
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
18 #the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19
20 #This was cribbed from the libchill, libiberty and libstdc++
21 #Makefile.in files. Some of this stuff may be unnecessary and
22 #worthless.
23
24 SHELL = /bin/sh
25
26 #### Start of system configuration section. ####
27
28 srcdir = @srcdir@
29 VPATH = @srcdir@
30 prefix = @prefix@
31 exec_prefix = @exec_prefix@
32 target_alias = @target_alias@
33 gcc_version = @gcc_version@
34 gcc_version_trigger = @gcc_version_trigger@
35
36 libdir = $(exec_prefix)/lib
37 libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)
38 incinstalldir = $(libsubdir)/include
39
40 # Multilib support variables.
41 MULTISRCTOP =
42 MULTIBUILDTOP =
43 MULTIDIRS =
44 MULTISUBDIR =
45 MULTIDO = true
46 MULTICLEAN = true
47
48 # Not configured per top-level version, since that doesn't get passed
49 # down at configure time, but overrridden by the top-level install
50 # target.
51 INSTALL = @INSTALL@
52 INSTALL_PROGRAM = @INSTALL_PROGRAM@
53 INSTALL_DATA = @INSTALL_DATA@
54
55 AR = @AR@
56 AR_FLAGS = rc
57
58 RANLIB = @RANLIB@
59
60 CC = @CC@
61 CFLAGS = @CFLAGS@
62 ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS)
63
64 INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \
65 -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc
66
67 OBJC_GCFLAGS=-DOBJC_WITH_GC=1
68 OBJC_THREAD_FILE=thr-@OBJC_THREAD_FILE@
69
70 .SUFFIXES:
71 .SUFFIXES: .c .m .o
72
73 .c.o:
74 $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $<
75
76 .m.o:
77 $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $<
78
79 # Flags to pass to a recursive make.
80 FLAGS_TO_PASS = \
81 "AR=$(AR)" \
82 "AR_FLAGS=$(AR_FLAGS)" \
83 "CC=$(CC)" \
84 "CFLAGS=$(CFLAGS)" \
85 "LIBCFLAGS=$(LIBCFLAGS)" \
86 "EXTRA_OFILES=$(EXTRA_OFILES)" \
87 "HDEFINES=$(HDEFINES)" \
88 "INSTALL=$(INSTALL)" \
89 "INSTALL_DATA=$(INSTALL_DATA)" \
90 "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
91 "LDFLAGS=$(LDFLAGS)" \
92 "LOADLIBES=$(LOADLIBES)" \
93 "PICFLAG=$(PICFLAG)" \
94 "RANLIB=$(RANLIB)" \
95 "SHELL=$(SHELL)"
96
97 all: libobjc.a @OBJC_BOEHM_GC@
98 $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all
99
100 # User-visible header files.
101
102 OBJC_H = hash.h objc-list.h sarray.h objc.h objc-api.h \
103 NXConstStr.h Object.h Protocol.h encoding.h typedstream.h \
104 thr.h
105
106 # Modules that comprise the runtime library.
107
108 OBJS = archive.o class.o encoding.o gc.o hash.o init.o linking.o \
109 misc.o nil_method.o NXConstStr.o Object.o objects.o \
110 Protocol.o sarray.o selector.o sendmsg.o thr.o \
111 $(OBJC_THREAD_FILE).o
112
113 OBJS_GC = archive_gc.o class_gc.o encoding_gc.o gc_gc.o hash_gc.o \
114 init_gc.o linking_gc.o misc_gc.o nil_method_gc.o \
115 NXConstStr_gc.o Object_gc.o objects_gc.o Protocol_gc.o \
116 sarray_gc.o selector_gc.o sendmsg_gc.o thr_gc.o \
117 $(OBJC_THREAD_FILE)_gc.o
118
119 runtime-info.h: $(MULTIBUILDTOP)../../gcc/cc1obj
120 echo "" > tmp-runtime
121 echo "/* This file is automatically generated */" > $@
122 $< -print-objc-runtime-info tmp-runtime >> $@
123 rm -f tmp-runtime
124
125 archive_gc.o: archive.c
126 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
127
128 class_gc.o: class.c
129 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
130
131 encoding_gc.o: encoding.c
132 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
133
134 gc.o: gc.c
135 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
136
137 gc_gc.o: gc.c
138 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
139 $(INCLUDES) $<
140
141 hash_gc.o: hash.c
142 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
143
144 init_gc.o: init.c
145 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
146
147 linking.o: linking.m
148 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
149
150 linking_gc.o: linking.m
151 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
152 $(INCLUDES) $<
153
154 misc_gc.o: misc.c
155 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
156
157 nil_method_gc.o: nil_method.c
158 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
159
160 NXConstStr.o: NXConstStr.m
161 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
162
163 NXConstStr_gc.o: NXConstStr.m
164 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
165 $(INCLUDES) $<
166
167 Object.o: Object.m
168 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
169
170 Object_gc.o: Object.m
171 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
172 $(INCLUDES) $<
173
174 objects_gc.o: objects.c
175 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
176
177 Protocol.o: Protocol.m
178 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
179
180 Protocol_gc.o: Protocol.m
181 $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
182 $(INCLUDES) $<
183
184 sarray_gc.o: sarray.c
185 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
186
187 selector_gc.o: selector.c
188 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
189
190 sendmsg.o: sendmsg.c runtime-info.h
191 $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
192
193 sendmsg_gc.o: sendmsg.c runtime-info.h
194 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
195
196 thr_gc.o: thr.c
197 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
198
199 $(OBJC_THREAD_FILE)_gc.o: $(OBJC_THREAD_FILE).c
200 $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
201
202 doc: info dvi html
203
204 libobjc.a: $(OBJS)
205 $(AR) $(AR_FLAGS) $@ $(OBJS)
206 $(RANLIB) $@
207
208 libobjc_gc.a: $(OBJS_GC)
209 $(AR) $(AR_FLAGS) $@ $(OBJS_GC)
210 $(RANLIB) $@
211
212 libobjc_s.a: libobjc.a
213 mv libobjc.a libobjc_s.a
214
215 # Create a relocatable DLL
216 libobjc.dll: libobjc_s.a libobjc_entry.o
217 $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \
218 -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
219 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
220 --base-file libobjc.base --output-exp libobjc.exp
221 $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \
222 -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
223 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
224 --base-file libobjc.base --output-exp libobjc.exp
225 $(GCC_FOR_TARGET) libobjc.exp -mdll \
226 -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
227 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
228 --output-lib libobjc.a
229
230 info: objc-features.info
231 dvi: objc-features.dvi
232 html: objc-features_toc.html
233
234 objc-features.info: $(srcdir)/objc-features.texi
235 makeinfo $(srcdir)/objc-features.texi
236
237 objc-features.dvi: $(srcdir)/objc-features.texi
238 texi2dvi $(srcdir)/objc-features.texi
239
240 objc-features_toc.html: objc-features.texi
241 texi2html -split_node $(srcdir)/objc-features.texi
242
243 Makefile: Makefile.in config.status
244 $(SHELL) config.status
245
246 config.status: configure
247 rm -f config.cache
248 CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \
249 CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck
250
251 ${srcdir}/configure: configure.in
252 rm -f config.cache
253 cd ${srcdir} && autoconf
254
255 install: install-libs copy-headers
256
257 install-libs: installdirs
258 -if test -f libobjc.a ; then \
259 rm -f $(libsubdir)/libobjc.a; \
260 $(INSTALL_DATA) libobjc.a $(libsubdir)/libobjc.a; \
261 chmod a-x $(libsubdir)/libobjc.a; \
262 else true; fi
263 -if test -f libobjc_gc.a ; then \
264 rm -f $(libsubdir)/libobjc_gc.a; \
265 $(INSTALL_DATA) libobjc_gc.a $(libsubdir)/libobjc_gc.a; \
266 chmod a-x $(libsubdir)/libobjc_gc.a; \
267 else true; fi
268 -if test -f libobjc_s.a ; then \
269 rm -f $(libsubdir)/libobjc_s.a; \
270 $(INSTALL_DATA) libobjc_s.a $(libsubdir)/libobjc_s.a; \
271 chmod a-x $(libsubdir)/libobjc_s.a; \
272 else true; fi
273 -if test -f libobjc.dll ; then \
274 rm -f $(bindir)/libobjc.dll; \
275 $(INSTALL_DATA) libobjc.dll $(bindir)/libobjc.dll; \
276 else true; fi
277
278 # Copy Objective C headers to installation include directory.
279 copy-headers:
280 -rm -rf $(incinstalldir)/objc
281 -mkdir $(incinstalldir)/objc
282 for file in $(OBJC_H); do \
283 realfile=$(srcdir)/objc/$${file}; \
284 cp $${realfile} $(incinstalldir)/objc; \
285 chmod a+r $(incinstalldir)/objc/$${file}; \
286 done
287
288 check uninstall install-strip dist installcheck installdirs:
289
290 mostlyclean:
291 -rm -f runtime-info.h tmp-runtime.s *.o libobjc* xforward \
292 fflags *.aux *.cp *.dvi *.fn *.info *.ky *.log *.pg \
293 *.toc *.tp *.vr *.html libobj.exp
294 @$(MULTICLEAN) multi-clean DO=mostlyclean
295
296 clean: mostlyclean
297 rm -f config.log
298 @$(MULTICLEAN) multi-clean DO=clean
299
300 distclean: clean
301 @$(MULTICLEAN) multi-clean DO=distclean
302 rm -f config.cache config.status Makefile configure
303
304 maintainer-clean realclean: distclean
305
306 .PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \
307 install-strip dist installcheck installdirs