# Makefile for GNU Objective C runtime library. # Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. #This file is part of GCC. #GCC 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. #GCC 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 GCC; 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 = @SHELL@ MAKEOVERRIDES= #### Start of system configuration section. #### srcdir = @glibcpp_srcdir@ VPATH = @glibcpp_srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ target_noncanonical = @target_noncanonical@ gcc_version = @gcc_version@ top_srcdir = @top_srcdir@ toplevel_srcdir = @toplevel_srcdir@ toolexecdir = @toolexecdir@ # Toolexecdir is used only by toolexeclibdir toolexeclibdir = @toolexeclibdir@ includedirname = @includedirname@ libext = @libext@ top_builddir = . libdir = $(exec_prefix)/lib libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) # 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@ WARN_CFLAGS = -W -Wall -Wwrite-strings -Wstrict-prototypes GTHREAD_FLAGS=@GTHREAD_FLAGS@ ALL_CFLAGS = -I. -I$(srcdir) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(WARN_CFLAGS) \ $(GTHREAD_FLAGS) -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing # Libtool # The following strings describe the version of the obj-C library # begin compiled and compatibility issues. # Please refer to Libtool documentation about how to manage these # numbers. LIBOBJC_VERSION = @VERSION@ LIBOBJC_GC_VERSION = @VERSION@ LIBTOOL = @LIBTOOL@ LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile LIBTOOL_LINK = $(LIBTOOL) --mode=link LIBTOOL_INSTALL = $(LIBTOOL) --mode=install LIBTOOL_CLEAN = $(LIBTOOL) --mode=clean #LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall 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 OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ .SUFFIXES: .SUFFIXES: .c .m .lo .c.lo: $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) $(INCLUDES) $< .m.lo: $(LIBTOOL_COMPILE) $(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)" \ "DESTDIR=$(DESTDIR)" \ "LIBCFLAGS=$(LIBCFLAGS)" \ "EXTRA_OFILES=$(EXTRA_OFILES)" \ "HDEFINES=$(HDEFINES)" \ "INSTALL=$(INSTALL)" \ "INSTALL_DATA=$(INSTALL_DATA)" \ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ "LDFLAGS=$(LDFLAGS)" \ "LIBTOOL=$(LIBTOOL)" \ "LOADLIBES=$(LOADLIBES)" \ "PICFLAG=$(PICFLAG)" \ "RANLIB=$(RANLIB)" \ "SHELL=$(SHELL)" \ "prefix=$(prefix)" \ "exec_prefix=$(exec_prefix)" \ "libdir=$(libdir)" \ "libsubdir=$(libsubdir)" \ "tooldir=$(tooldir)" all: libobjc$(libext).la $(OBJC_BOEHM_GC) : $(MAKE) ; exec $(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 objc-decls.h # Modules that comprise the runtime library. OBJS = archive.lo class.lo encoding.lo gc.lo hash.lo init.lo linking.lo \ misc.lo nil_method.lo NXConstStr.lo Object.lo objects.lo \ Protocol.lo sarray.lo selector.lo sendmsg.lo thr.lo \ $(OBJC_THREAD_FILE).lo exception.lo OBJS_GC = archive_gc.lo class_gc.lo encoding_gc.lo gc_gc.lo hash_gc.lo \ init_gc.lo linking_gc.lo misc_gc.lo nil_method_gc.lo \ NXConstStr_gc.lo Object_gc.lo objects_gc.lo Protocol_gc.lo \ sarray_gc.lo selector_gc.lo sendmsg_gc.lo thr_gc.lo \ $(OBJC_THREAD_FILE)_gc.lo exception_gc.lo 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 archive_gc.lo: archive.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< class_gc.lo: class.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< encoding_gc.lo: encoding.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< gc.lo: gc.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< gc_gc.lo: gc.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< hash_gc.lo: hash.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< init_gc.lo: init.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< linking.lo: linking.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(INCLUDES) $< linking_gc.lo: linking.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(OBJC_GCFLAGS) $(INCLUDES) $< misc_gc.lo: misc.c $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ $(INCLUDES) $< nil_method_gc.lo: nil_method.c $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ $(INCLUDES) $< NXConstStr.lo: NXConstStr.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(INCLUDES) $< NXConstStr_gc.lo: NXConstStr.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(OBJC_GCFLAGS) $(INCLUDES) $< Object.lo: Object.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(INCLUDES) $< Object_gc.lo: Object.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(OBJC_GCFLAGS) $(INCLUDES) $< objects_gc.lo: objects.c $(LIBTOOL_COMPILE) $(CC) -c $(ALL_CFLAGS) -o $@ $(OBJC_GCFLAGS) \ $(INCLUDES) $< Protocol.lo: Protocol.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(INCLUDES) $< Protocol_gc.lo: Protocol.m $(LIBTOOL_COMPILE) $(CC) -fgnu-runtime -c -o $@ $(ALL_CFLAGS) \ $(OBJC_GCFLAGS) $(INCLUDES) $< sarray_gc.lo: sarray.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< selector_gc.lo: selector.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< sendmsg.lo: sendmsg.c runtime-info.h $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(INCLUDES) $< sendmsg_gc.lo: sendmsg.c runtime-info.h $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< thr_gc.lo: thr.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< $(OBJC_THREAD_FILE)_gc.lo: $(OBJC_THREAD_FILE).c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ $(INCLUDES) $< exception.lo: exception.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) \ -fexceptions $(INCLUDES) $< exception_gc.lo: exception.c $(LIBTOOL_COMPILE) $(CC) -c -o $@ $(ALL_CFLAGS) $(OBJC_GCFLAGS) \ -fexceptions $(INCLUDES) $< doc: info dvi html libobjc$(libext).la: $(OBJS) $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ -rpath $(toolexeclibdir) \ -version-info $(LIBOBJC_VERSION) libobjc_gc$(libext).la: $(OBJS_GC) $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ -rpath $(toolexeclibdir) \ -version-info $(LIBOBJC_GC_VERSION) # # FIXME -- The following part does not fit in the libtool context. # Libtool is supposed to [going to] be able to create a win 32 DLL # without extra code but since I don't have a win machine to test # if it already works, I leave the old code here. # libobjc_s.a: libobjc.la 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: dvi: html: 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: @MAINT@ configure.ac rm -f config.cache cd ${srcdir} && autoconf install: install-libs install-headers install-libs: installdirs $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(toolexeclibdir) $(LIBTOOL_INSTALL) $(INSTALL) libobjc$(libext).la $(DESTDIR)$(toolexeclibdir); if [ "$(OBJC_BOEHM_GC)" ]; then \ $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc$(libext).la \ $(DESTDIR)$(toolexeclibdir);\ fi $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@" @-$(LIBTOOL) --mode=finish $(DESTDIR)$(toolexeclibdir) # Copy Objective C headers to installation include directory. install-headers: $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(libsubdir)/$(includedirname)/objc for file in $(OBJC_H); do \ realfile=$(srcdir)/objc/$${file}; \ $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/$(includedirname)/objc; \ done check uninstall install-strip dist installcheck installdirs: mostlyclean: -$(LIBTOOL_CLEAN) rm -f libobjc$(libext).la libobjc_gc$(libext).la *.lo -rm -f runtime-info.h tmp-runtime.s *.o *.lo 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 # Don't export variables to the environment, in order to not confuse # configure. .NOEXPORT: