-nil_method_gc.o: nil_method.c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-NXConstStr.o: NXConstStr.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
-
-NXConstStr_gc.o: NXConstStr.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
- $(INCLUDES) $<
-
-Object.o: Object.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
-
-Object_gc.o: Object.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
- $(INCLUDES) $<
-
-objects_gc.o: objects.c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-Protocol.o: Protocol.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
-
-Protocol_gc.o: Protocol.m
- $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \
- $(INCLUDES) $<
-
-sarray_gc.o: sarray.c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-selector_gc.o: selector.c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-sendmsg.o: sendmsg.c runtime-info.h
- $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $<
-
-sendmsg_gc.o: sendmsg.c runtime-info.h
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-thr_gc.o: thr.c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-$(OBJC_THREAD_FILE)_gc.o: $(OBJC_THREAD_FILE).c
- $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $<
-
-doc: info dvi html
-
-libobjc.a: $(OBJS)
- $(AR) $(AR_FLAGS) $@ $(OBJS)
- $(RANLIB) $@
-
-libobjc_gc.a: $(OBJS_GC)
- $(AR) $(AR_FLAGS) $@ $(OBJS_GC)
- $(RANLIB) $@
-
-libobjc_s.a: libobjc.a
- mv libobjc.a libobjc_s.a
-
-# Create a relocatable DLL
-libobjc.dll: libobjc_s.a libobjc_entry.o
- $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \
- -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
- $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
- --base-file libobjc.base --output-exp libobjc.exp
- $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \
- -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
- $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
- --base-file libobjc.base --output-exp libobjc.exp
- $(GCC_FOR_TARGET) libobjc.exp -mdll \
- -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32
- $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \
- --output-lib libobjc.a
-
-info: objc-features.info
-dvi: objc-features.dvi
-html: objc-features_toc.html
-
-objc-features.info: $(srcdir)/objc-features.texi
- makeinfo $(srcdir)/objc-features.texi
-
-objc-features.dvi: $(srcdir)/objc-features.texi
- texi2dvi $(srcdir)/objc-features.texi
-
-objc-features_toc.html: objc-features.texi
- texi2html -split_node $(srcdir)/objc-features.texi
+.SUFFIXES:
+.SUFFIXES: .c .m .lo
+
+%.lo: %.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) \
+ -o $@
+
+%_gc.lo: %.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) \
+ -o $@
+
+%.lo: %.m
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) -fgnu-runtime \
+ -o $@
+
+%_gc.lo: %.m
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -fgnu-runtime \
+ -o $@
+
+# sendmsg has a special rule because it depends on runtime-info.h.
+runtime-info.h:
+ echo "" > tmp-runtime.m
+ echo "/* This file is automatically generated */" > $@
+ $(CC) $(MULTIFLAGS) -print-objc-runtime-info -S tmp-runtime.m >> $@
+ rm -f tmp-runtime.m tmp-runtime.s
+
+sendmsg.lo: sendmsg.c runtime-info.h
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) \
+ -o $@
+
+sendmsg_gc.lo: sendmsg.c runtime-info.h
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) \
+ -o $@
+
+# These files have separate rules because they require special
+# compiler flags.
+archive.lo: archive.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) -Wno-deprecated-declarations \
+ -o $@
+
+archive_gc.lo: archive.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -Wno-deprecated-declarations \
+ -o $@
+
+# -Wno-deprecated-declarations is for the objc/typedstream.h functions.
+Object.lo: Object.m
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) -fgnu-runtime -Wno-deprecated-declarations \
+ -o $@
+
+# -Wno-deprecated-declarations is for the objc/typedstream.h functions.
+Object_gc.lo: Object.m
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -fgnu-runtime -Wno-deprecated-declarations \
+ -o $@
+
+# -Wno-deprecated-declarations is to silence warnings from using
+# _objc_unexpected_exception.
+exception.lo: exception.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) -fexceptions -Wno-deprecated-declarations \
+ -o $@
+
+exception_gc.lo: exception.c
+ $(LIBTOOL_COMPILE) $(CC) $< -c \
+ $(ALL_CFLAGS) $(INCLUDES) $(OBJC_GCFLAGS) -fexceptions -Wno-deprecated-declarations \
+ -o $@
+
+doc: info dvi pdf html
+
+# No install-html or install-pdf support
+.PHONY: install-html install-pdf install-info
+install-html:
+install-pdf:
+install-info:
+
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+
+libobjc$(libsuffix).la: $(OBJS)
+ $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \
+ -rpath $(toolexeclibdir) \
+ -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) \
+ $(LTLDFLAGS)
+
+libobjc_gc$(libsuffix).la: $(OBJS_GC)
+ $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) $(OBJC_BOEHM_GC_LIBS) \
+ -rpath $(toolexeclibdir) \
+ -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) \
+ $(LTLDFLAGS)
+
+info:
+dvi:
+pdf:
+html: