#Makefile for GNU Objective C runtime library. #Copyright (C) 1993, 95-98, 1999, 2001 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 = @SHELL@ MAKEOVERRIDES= #### Start of system configuration section. #### srcdir = @glibcpp_srcdir@ VPATH = @glibcpp_srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ target_alias = @target_alias@ gcc_version = @gcc_version@ gcc_version_trigger = @gcc_version_trigger@ top_srcdir = @top_srcdir@ toplevel_srcdir = @toplevel_srcdir@ toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexecdir = @glibcpp_toolexecdir@ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@ top_builddir = . libdir = $(exec_prefix)/lib libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(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 # 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 = 1:0:0 LIBOBJC_GC_VERSION = 1:0:0 # @LIBTOOL@ does not get it right, so we hack it in - FIXME 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 # # 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 OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ # APPLE LOCAL libobjc OBJC_LIBOBJC=@OBJC_LIBOBJC@ .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)" # APPLE LOCAL libobjc all: $(OBJC_LIBOBJC) $(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 # 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 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 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.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) $< doc: info dvi html libobjc.la: $(OBJS) $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ -rpath $(glibcpp_toolexeclibdir) \ -version-info $(LIBOBJC_VERSION) libobjc_gc.la: $(OBJS_GC) $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ -rpath $(glibcpp_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: configure.in rm -f config.cache cd ${srcdir} && autoconf install: install-libs install-headers # APPLE LOCAL libobjc install-libs: installdirs if [ "$(OBJC_LIBOBJC)" ]; then \ $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(glibcpp_toolexeclibdir) \ $(LIBTOOL_INSTALL) $(INSTALL) libobjc.la $(DESTDIR)$(glibcpp_toolexeclibdir); \ fi if [ "$(OBJC_BOEHM_GC)" ]; then \ $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc.la \ $(DESTDIR)$(glibcpp_toolexeclibdir);\ fi $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@" @-$(LIBTOOL) --mode=finish $(DESTDIR)$(glibcpp_toolexeclibdir) # Copy Objective C headers to installation include directory. # APPLE LOCAL libobjc install-headers: if [ "$(OBJC_LIBOBJC)" ]; then \ $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(libsubdir)/include/objc; \ for file in $(OBJC_H); do \ realfile=$(srcdir)/objc/$${file}; \ $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/include/objc; \ done; \ fi check uninstall install-strip dist installcheck installdirs: mostlyclean: -$(LIBTOOL_CLEAN) rm -f libobjc.la libobjc_gc.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