| #Makefile for GNU Objective C runtime library. |
| #Copyright (C) 1993, 95-97, 1998 Free Software Foundation, Inc. |
| |
| #This file is part of GNU CC. |
| |
| #GNU CC is free software; you can redistribute it and/or modify |
| #it under the terms of the GNU General Public License as published by |
| #the Free Software Foundation; either version 2, or (at your option) |
| #any later version. |
| |
| #GNU CC is distributed in the hope that it will be useful, |
| #but WITHOUT ANY WARRANTY; without even the implied warranty of |
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| #GNU General Public License for more details. |
| |
| #You should have received a copy of the GNU General Public License |
| #along with GNU CC; see the file COPYING. If not, write to |
| #the Free Software Foundation, 59 Temple Place - Suite 330, |
| #Boston, MA 02111-1307, USA. */ |
| |
| #This was cribbed from the libchill, libiberty and libstdc++ |
| #Makefile.in files. Some of this stuff may be unnecessary and |
| #worthless. |
| |
| SHELL = /bin/sh |
| |
| #### Start of system configuration section. #### |
| |
| srcdir = @srcdir@ |
| VPATH = @srcdir@ |
| prefix = @prefix@ |
| exec_prefix = @exec_prefix@ |
| target_alias = @target_alias@ |
| gcc_version = @gcc_version@ |
| gcc_version_trigger = @gcc_version_trigger@ |
| |
| libdir = $(exec_prefix)/lib |
| libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version) |
| incinstalldir = $(libsubdir)/include |
| |
| # Multilib support variables. |
| MULTISRCTOP = |
| MULTIBUILDTOP = |
| MULTIDIRS = |
| MULTISUBDIR = |
| MULTIDO = true |
| MULTICLEAN = true |
| |
| # Not configured per top-level version, since that doesn't get passed |
| # down at configure time, but overrridden by the top-level install |
| # target. |
| INSTALL = @INSTALL@ |
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
| INSTALL_DATA = @INSTALL_DATA@ |
| |
| AR = @AR@ |
| AR_FLAGS = rc |
| |
| RANLIB = @RANLIB@ |
| |
| CC = @CC@ |
| CFLAGS = @CFLAGS@ |
| ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) -DIN_GCC |
| |
| # |
| # Define the cc1obj in terms of the CC that is passed on from higher |
| # level make. This is needed to make sure we can create runtime-info.h |
| # when doing canadian cross builds where running ../../gcc/cc1obj |
| # does not make any sense. |
| # |
| CC1OBJ = `$(CC) -print-prog-name=cc1obj` |
| |
| INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \ |
| -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \ |
| -I$(srcdir)/$(MULTISRCTOP)../include |
| |
| OBJC_GCFLAGS=-DOBJC_WITH_GC=1 |
| OBJC_THREAD_FILE=thr-@OBJC_THREAD_FILE@ |
| |
| .SUFFIXES: |
| .SUFFIXES: .c .m .o |
| |
| .c.o: |
| $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< |
| |
| .m.o: |
| $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< |
| |
| # Flags to pass to a recursive make. |
| FLAGS_TO_PASS = \ |
| "AR=$(AR)" \ |
| "AR_FLAGS=$(AR_FLAGS)" \ |
| "CC=$(CC)" \ |
| "CFLAGS=$(CFLAGS)" \ |
| "LIBCFLAGS=$(LIBCFLAGS)" \ |
| "EXTRA_OFILES=$(EXTRA_OFILES)" \ |
| "HDEFINES=$(HDEFINES)" \ |
| "INSTALL=$(INSTALL)" \ |
| "INSTALL_DATA=$(INSTALL_DATA)" \ |
| "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ |
| "LDFLAGS=$(LDFLAGS)" \ |
| "LOADLIBES=$(LOADLIBES)" \ |
| "PICFLAG=$(PICFLAG)" \ |
| "RANLIB=$(RANLIB)" \ |
| "SHELL=$(SHELL)" \ |
| "prefix=$(prefix)" \ |
| "exec_prefix=$(exec_prefix)" \ |
| "libdir=$(libdir)" \ |
| "libsubdir=$(libsubdir)" \ |
| "tooldir=$(tooldir)" |
| |
| all: libobjc.a @OBJC_BOEHM_GC@ |
| $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all |
| |
| # User-visible header files. |
| |
| OBJC_H = hash.h objc-list.h sarray.h objc.h objc-api.h \ |
| NXConstStr.h Object.h Protocol.h encoding.h typedstream.h \ |
| thr.h |
| |
| # Modules that comprise the runtime library. |
| |
| OBJS = archive.o class.o encoding.o gc.o hash.o init.o linking.o \ |
| misc.o nil_method.o NXConstStr.o Object.o objects.o \ |
| Protocol.o sarray.o selector.o sendmsg.o thr.o \ |
| $(OBJC_THREAD_FILE).o |
| |
| OBJS_GC = archive_gc.o class_gc.o encoding_gc.o gc_gc.o hash_gc.o \ |
| init_gc.o linking_gc.o misc_gc.o nil_method_gc.o \ |
| NXConstStr_gc.o Object_gc.o objects_gc.o Protocol_gc.o \ |
| sarray_gc.o selector_gc.o sendmsg_gc.o thr_gc.o \ |
| $(OBJC_THREAD_FILE)_gc.o |
| |
| runtime-info.h: |
| echo "" > tmp-runtime |
| echo "/* This file is automatically generated */" > $@ |
| $(CC1OBJ) -print-objc-runtime-info tmp-runtime >> $@ |
| rm -f tmp-runtime |
| |
| archive_gc.o: archive.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| class_gc.o: class.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| encoding_gc.o: encoding.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| gc.o: gc.c |
| $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< |
| |
| gc_gc.o: gc.c |
| $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ |
| $(INCLUDES) $< |
| |
| hash_gc.o: hash.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| init_gc.o: init.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| linking.o: linking.m |
| $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< |
| |
| linking_gc.o: linking.m |
| $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ |
| $(INCLUDES) $< |
| |
| misc_gc.o: misc.c |
| $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) $(INCLUDES) $< |
| |
| 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 |
| |
| Makefile: Makefile.in config.status |
| $(SHELL) config.status |
| |
| config.status: configure |
| rm -f config.cache |
| CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \ |
| CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck |
| |
| ${srcdir}/configure: configure.in |
| rm -f config.cache |
| cd ${srcdir} && autoconf |
| |
| install: install-libs copy-headers |
| |
| install-libs: installdirs |
| -if test -f libobjc.a ; then \ |
| rm -f $(libsubdir)/libobjc.a; \ |
| $(INSTALL_DATA) libobjc.a $(libsubdir)/libobjc.a; \ |
| chmod a-x $(libsubdir)/libobjc.a; \ |
| else true; fi |
| -if test -f libobjc_gc.a ; then \ |
| rm -f $(libsubdir)/libobjc_gc.a; \ |
| $(INSTALL_DATA) libobjc_gc.a $(libsubdir)/libobjc_gc.a; \ |
| chmod a-x $(libsubdir)/libobjc_gc.a; \ |
| else true; fi |
| -if test -f libobjc_s.a ; then \ |
| rm -f $(libsubdir)/libobjc_s.a; \ |
| $(INSTALL_DATA) libobjc_s.a $(libsubdir)/libobjc_s.a; \ |
| chmod a-x $(libsubdir)/libobjc_s.a; \ |
| else true; fi |
| -if test -f libobjc.dll ; then \ |
| rm -f $(bindir)/libobjc.dll; \ |
| $(INSTALL_DATA) libobjc.dll $(bindir)/libobjc.dll; \ |
| else true; fi |
| |
| # Copy Objective C headers to installation include directory. |
| copy-headers: |
| -rm -rf $(incinstalldir)/objc |
| -mkdir $(incinstalldir)/objc |
| for file in $(OBJC_H); do \ |
| realfile=$(srcdir)/objc/$${file}; \ |
| cp $${realfile} $(incinstalldir)/objc; \ |
| chmod a+r $(incinstalldir)/objc/$${file}; \ |
| done |
| |
| check uninstall install-strip dist installcheck installdirs: |
| |
| mostlyclean: |
| -rm -f runtime-info.h tmp-runtime.s *.o libobjc* xforward \ |
| fflags *.aux *.cp *.dvi *.fn *.info *.ky *.log *.pg \ |
| *.toc *.tp *.vr *.html libobj.exp |
| @$(MULTICLEAN) multi-clean DO=mostlyclean |
| |
| clean: mostlyclean |
| rm -f config.log |
| @$(MULTICLEAN) multi-clean DO=clean |
| |
| distclean: clean |
| @$(MULTICLEAN) multi-clean DO=distclean |
| rm -f config.cache config.status Makefile configure |
| |
| maintainer-clean realclean: distclean |
| |
| .PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \ |
| install-strip dist installcheck installdirs |