# @configure_input@ # # src makefile for GNU Objective-C Class library # Copyright (C) 1995, 1996 Free Software Foundation, Inc. # # Written by: R. Andrew McCallum # # This file is part of the GNU Objective-C Class library. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. SHELL = /bin/sh #### Start of system configuration section. #### srcdir = @srcdir@ VPATH = @srcdir@ # Installation locations prefix = @prefix@ exec_prefix = @exec_prefix@ libdir = $(exec_prefix)/lib includedir = $(prefix)/include CC = @CC@ -pipe RANLIB = @RANLIB@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ AR = ar AROUT = ARFLAGS = rc LN_S = @LN_S@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi LEX = flex LEXFLAGS = DEFS = @DEFS@ # File name extensions OEXT = .o EXEEXT = LIBEXT = .a # All these are optional. You can redefine CFLAGS, CPPFLAGS and # INCLUDEFLAGS on the command line however you like. CFLAGS = -g -O -Wall -Wno-implicit CPPFLAGS = INCLUDEFLAGS = #### End of system configuration section. #### include $(srcdir)/../Makeconf include $(srcdir)/../Version # Grep for these names to build the legally-required "AUTHORS" file. FILE_AUTHORS = \ "R. Andrew McCallum" \ "Kresten Krab Thorup" \ "Adam Fedor" \ "Mark Lakata" \ "Jeremy Bettis" \ "Georg Tuparev" \ "Peter Burka" \ "Albin L. Jones" DYNAMIC_LINKER=@DYNAMIC_LINKER@ NEXT_NEXT_INCLUDES = -I/usr/include OBJECTS_NEXT_INCLUDES = -I$(srcdir) NEXT_INCLUDES = @NEXT_INCLUDES@ ALL_INCLUDE_FLAGS = -I. -I$(srcdir) $(NEXT_INCLUDES) $(INCLUDEFLAGS) ALL_CPPFLAGS = $(ALL_INCLUDE_FLAGS) $(CPPFLAGS) ALL_CFLAGS = $(CFLAGS) ALL_OBJCFLAGS = $(CFLAGS) -Wno-protocol # definitions to be passed to subdir Makefile's MAKEDEFINES = CC='$(CC)' CFLAGS='$(CFLAGS)' CPPFLAGS='$(CPPFLAGS)' \ INCLUDEFLAGS='$(INCLUDEFLAGS)' DEFS='$(DEFS)' .SUFFIXES: .m .m$(OEXT): $(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) -o $@ $< .c$(OEXT): $(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_CFLAGS) -o $@ $< %_pic$(OEXT): %.m $(CC) -c $(ALL_CPPFLAGS) -fPIC -DPIC $(DEFS) \ $(ALL_OBJCFLAGS) -o $@ $< %_pic$(OEXT): %.c $(CC) -c $(ALL_CPPFLAGS) -fPIC -DPIC $(DEFS) \ $(ALL_CFLAGS) -o $@ $< # GNU Class source files #RetainingNotifier.m \ #Time.m \ GNU_MFILES = \ Archiver.m \ Array.m \ Bag.m \ BinaryCStream.m \ BinaryTree.m \ BinaryTreeNode.m \ CircularArray.m \ Collection.m \ ConnectedCoder.m \ CString.m \ Coder.m \ Connection.m \ ConstantString.m \ CStream.m \ Decoder.m \ DelegatePool.m \ Dictionary.m \ Encoder.m \ GapArray.m \ Heap.m \ IndexedCollection.m \ Invocation.m \ KeyedCollection.m \ LinkedList.m \ LinkedListNode.m \ Lock.m \ MachPort.m \ Magnitude.m \ MallocAddress.m \ MappedCollector.m \ MemoryStream.m \ MutableCString.m \ MutableString.m \ Notification.m \ NotificationDispatcher.m \ OrderedCollection.m \ Port.m \ Proxy.m \ Queue.m \ Random.m \ RawCStream.m \ RBTree.m \ RBTreeNode.m \ RNGAdditiveCongruential.m \ RNGBerkeley.m \ RunLoop.m \ Set.m \ SplayTree.m \ Stack.m \ StdioStream.m \ Stream.m \ String.m \ TcpPort.m \ TextCStream.m \ UdpPort.m \ array.m \ array-bas.m \ array-cbs.m \ callbacks.m \ cbs-char-p.m \ cbs-id.m \ cbs-int.m \ cbs-int-p.m \ cbs-void-p.m \ hash.m \ hash-bas.m \ hash-cbs.m \ list.m \ list-bas.m \ list-cbs.m \ map.m \ map-bas.m \ map-cbs.m \ stdobjects.m \ mframe.m \ objc-gnu2next.m GNU_CFILES = \ behavior.c \ md5.c \ numbers.c \ objc-malloc.c \ o_vscanf.c GNU_OTHER_SRCFILES = \ x-bas.m.in \ x-cbs.m.in \ objects/x-bas.h.in \ objects/x-cbs.h.in \ md5.h GNU_OBJS = \ $(GNU_MFILES:.m=$(OEXT)) \ $(GNU_CFILES:.c=$(OEXT)) GNU_HEADERS = \ objects/Archiver.h \ objects/Array.h \ objects/ArrayPrivate.h \ objects/Bag.h \ objects/BinaryCStream.h \ objects/BinaryTree.h \ objects/BinaryTreeNode.h \ objects/CircularArray.h \ objects/CircularArrayPrivate.h \ objects/Coder.h \ objects/CoderPrivate.h \ objects/Coding.h \ objects/Collecting.h \ objects/Collection.h \ objects/CollectionPrivate.h \ objects/ConnectedCoder.h \ objects/Connection.h \ objects/CStream.h \ objects/CStreaming.h \ objects/DelegatePool.h \ objects/Dictionary.h \ objects/Enumerating.h \ objects/GapArray.h \ objects/GapArrayPrivate.h \ objects/Heap.h \ objects/IndexedCollecting.h \ objects/IndexedCollection.h \ objects/IndexedCollectionPrivate.h \ objects/InvalidationListening.h \ objects/Invocation.h \ objects/Invoking.h \ objects/KeyedCollecting.h \ objects/KeyedCollection.h \ objects/LibobjectsMain.h \ objects/LinkedList.h \ objects/LinkedListNode.h \ objects/Lock.h \ objects/Locking.h \ objects/MachPort.h \ objects/Magnitude.h \ objects/MallocAddress.h \ objects/MappedCollector.h \ objects/MemoryStream.h \ objects/Notification.h \ objects/NotificationDispatcher.h \ objects/NSArray.h \ objects/NSCoder.h \ objects/NSDictionary.h \ objects/NSSet.h \ objects/NSString.h \ objects/Ordering.h \ objects/OrderedCollecting.h \ objects/OrderedCollection.h \ objects/Port.h \ objects/Proxy.h \ objects/Queue.h \ objects/RBTree.h \ objects/RBTreeNode.h \ objects/RNGAdditiveCongruential.h \ objects/RNGBerkeley.h \ objects/Random.h \ objects/RandomGenerating.h \ objects/RawCStream.h \ objects/Retaining.h \ objects/RetainingNotifier.h \ objects/RunLoop.h \ objects/Set.h \ objects/SplayTree.h \ objects/Stack.h \ objects/StdioStream.h \ objects/Stream.h \ objects/Streaming.h \ objects/String.h \ objects/TcpPort.h \ objects/TextCStream.h \ objects/Time.h \ objects/UdpPort.h \ objects/ValueHolding.h \ objects/array.h \ objects/array-bas.h \ objects/array-cbs.h \ objects/behavior.h \ objects/callbacks.h \ objects/hash.h \ objects/hash-bas.h \ objects/hash-cbs.h \ objects/list.h \ objects/list-bas.h \ objects/list-cbs.h \ objects/map.h \ objects/map-bas.h \ objects/map-cbs.h \ objects/mframe.h \ objects/numbers.h \ objects/objc-gnu2next.h \ objects/objc-malloc.h \ objects/objects.h \ objects/README # NEXTSTEP source files NEXTSTEP_MFILES = \ HashTable.m \ List.m \ NXStringTable.m \ Storage.m NEXTSTEP_CFILES = NEXTSTEP_DERIVED_CFILES = \ NXStringTable_scan.c NEXTSTEP_OTHER_SRCFILES = \ NXStringTable_scan.l NEXTSTEP_OBJS = \ $(NEXTSTEP_MFILES:.m=$(OEXT)) \ $(NEXTSTEP_CFILES:.c=$(OEXT)) \ $(NEXTSTEP_DERIVED_CFILES:.c=$(OEXT)) NEXTSTEP_HEADERS = \ objc/HashTable.h \ objc/List.h \ objc/NXStringTable.h \ objc/Storage.h \ objc/zone.h # GNUStep source files GNUSTEP_MFILES = \ NSAllocateObject.m \ NSArchiver.m \ NSArray.m \ NSAssertionHandler.m \ NSAutoreleasePool.m \ NSBitmapCharSet.m \ NSBundle.m \ NSCallBacks.m \ NSCharacterSet.m \ NSCoder.m \ NSCopyObject.m \ NSConcreteValue.m \ NSCountedSet.m \ NSData.m \ NSDate.m \ NSDeallocateObject.m \ NSDictionary.m \ NSEnumerator.m \ NSException.m \ NSGeometry.m \ NSGArchiver.m \ NSGArray.m \ NSGCountedSet.m \ NSGCString.m \ NSGData.m \ NSGDictionary.m \ NSGSet.m \ NSHashTable.m \ NSInvocation.m \ NSLock.m \ NSMapTable.m \ NSMethodSignature.m \ NSNotification.m \ NSNotificationCenter.m \ NSNumber.m \ NSObjCRuntime.m \ NSObject.m \ NSProcessInfo.m \ NSRange.m \ NSSet.m \ NSString.m \ NSThread.m \ NSTimer.m \ NSTimeZone.m \ NSValue.m NSVALUE_MFILES = \ NSValue0.m NSValue1.m NSValue2.m NSValue3.m \ NSValue4.m NSNUMBER_MFILES = \ NSNumber0.m NSNumber1.m NSNumber2.m NSNumber3.m \ NSNumber4.m NSNumber5.m NSNumber6.m NSNumber7.m \ NSNumber8.m NSNumber9.m NSNumber10.m NSNumber11.m \ NSNumber12.m GNUSTEP_CFILES = \ NSZone.c \ find_exec.c \ objc-load.c GNUSTEP_OTHER_SRCFILES = \ NSConcreteNumber.m \ NSCTemplateValue.m \ dld-load.h \ hpux-load.h \ null-load.h \ simple-load.h \ NSCallBacks.h GNUSTEP_OBJS = \ $(GNUSTEP_MFILES:.m=$(OEXT)) \ $(GNUSTEP_CFILES:.c=$(OEXT)) \ $(NSVALUE_MFILES:.m=$(OEXT)) \ $(NSNUMBER_MFILES:.m=$(OEXT)) GNUSTEP_HEADERS = \ Foundation/NSArchiver.h \ Foundation/NSArray.h \ Foundation/NSAutoreleasePool.h \ Foundation/NSBitmapCharSet.h \ Foundation/NSBundle.h \ Foundation/NSCharacterSet.h \ Foundation/NSCoder.h \ Foundation/NSConcreteNumber.h \ Foundation/NSConcreteValue.h \ Foundation/NSData.h \ Foundation/NSDate.h \ Foundation/NSDictionary.h \ Foundation/NSException.h \ Foundation/NSGeometry.h \ Foundation/NSGArchiver.h \ Foundation/NSGArray.h \ Foundation/NSGCString.h \ Foundation/NSGData.h \ Foundation/NSGDictionary.h \ Foundation/NSGSet.h \ Foundation/NSHashTable.h \ Foundation/NSInvocation.h \ Foundation/NSLock.h \ Foundation/NSMapTable.h \ Foundation/NSMethodSignature.h \ Foundation/NSNotification.h \ Foundation/NSObjCRuntime.h \ Foundation/NSObject.h \ Foundation/NSProcessInfo.h \ Foundation/NSRange.h \ Foundation/NSSerialization.h \ Foundation/NSSet.h \ Foundation/NSString.h \ Foundation/NSThread.h \ Foundation/NSTimer.h \ Foundation/NSUtilities.h \ Foundation/NSValue.h \ Foundation/NSZone.h \ Foundation/objc-load.h HEADERS_INSTALL = @HEADERS_INSTALL@ \ objects/stdobjects.h OBJS_INSTALL = @OBJS_INSTALL@ OBJS_INSTALL_PIC = $(OBJS_INSTALL:$(OEXT)=_pic$(OEXT)) DIST_FILES = \ Makefile.in AUTHORS \ objects/config.h.in objects/stdobjects.h.in \ $(GNU_MFILES) \ $(GNU_CFILES) \ $(GNU_HEADERS) \ $(GNU_OTHER_SRCFILES) \ $(NEXTSTEP_MFILES) \ $(NEXTSTEP_CFILES) \ $(NEXTSTEP_DERIVED_CFILES) \ $(NEXTSTEP_HEADERS) \ $(NEXTSTEP_OTHER_SRCFILES) \ $(GNUSTEP_MFILES) \ $(GNUSTEP_CFILES) \ $(GNUSTEP_HEADERS) \ $(GNUSTEP_OTHER_SRCFILES) RCS_FILES = \ Makefile.in Makefile.sed.nt \ objects/config.h.in objects/stdobjects.h.in \ $(GNU_MFILES) \ $(GNU_CFILES) \ $(GNU_HEADERS) \ $(GNU_OTHER_SRCFILES) \ $(NEXTSTEP_MFILES) \ $(NEXTSTEP_CFILES) \ $(NEXTSTEP_HEADERS) \ $(NEXTSTEP_OTHER_SRCFILES) \ $(GNUSTEP_MFILES) \ $(GNUSTEP_CFILES) \ $(GNUSTEP_HEADERS) \ $(GNUSTEP_OTHER_SRCFILES) all: libobjects$(LIBEXT) @LIBOBJECTS_SO@ libobjects.so.$(OBJECTS_VERSION): $(HEADERS_INSTALL) $(OBJS_INSTALL_PIC) $(CC) -shared -o libobjects.so.$(OBJECTS_VERSION) \ -Wl,-soname,libobjects.so.$(OBJECTS_MAJOR_VERSION) \ $(OBJS_INSTALL_PIC) rm -f libobjects.so.$(OBJECTS_MAJOR_VERSION) rm -f libobjects.so ln -s libobjects.so.$(OBJECTS_VERSION) \ libobjects.so.$(OBJECTS_MAJOR_VERSION) ln -s libobjects.so.$(OBJECTS_MAJOR_VERSION) \ libobjects.so libobjects$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(AR) $(ARFLAGS) $(AROUT)libobjects$(LIBEXT) $(OBJS_INSTALL) $(RANLIB) libobjects$(LIBEXT) install: installdirs all # Install the library $(INSTALL_DATA) libobjects$(LIBEXT) $(libdir) $(RANLIB) $(libdir)/libobjects$(LIBEXT); \ if [ -n "@LIBOBJECTS_SO@" ]; then \ $(INSTALL_DATA) libobjects.so.$(OBJECTS_VERSION) $(libdir) ; \ rm -f $(libdir)/libobjects.so.$(OBJECTS_MAJOR_VERSION) ; \ rm -f $(libdir)/libobjects.so ; \ ln -s $(libdir)/libobjects.so.$(OBJECTS_VERSION) \ $(libdir)/libobjects.so.$(OBJECTS_MAJOR_VERSION) ; \ ln -s $(libdir)/libobjects.so.$(OBJECTS_MAJOR_VERSION) \ $(libdir)/libobjects.so ; \ fi # Install the headers for file in $(HEADERS_INSTALL); do \ $(INSTALL_DATA) $(srcdir)/$$file $(includedir)/$$file ; \ done $(INSTALL_DATA) objects/config.h $(includedir)/objects/config.h cd $(includedir)/Foundation; rm -f README; ln -s ../objects/README . cd $(includedir)/objc; rm -f README; ln -s ../objects/README . installdirs: $(srcdir)/../mkinstalldirs \ $(libdir) \ $(includedir)/objects \ $(includedir)/objc \ $(includedir)/Foundation uninstall: rm -f $(libdir)/libobjects$(LIBEXT) rm -rf $(includedir)/objects \ $(includedir)/Foundation for file in $(NEXTSTEP_HEADERS); do \ rm -f $(includedir)/$$file ; \ done # Creation of NSValue and NSNumber concrete classes from templates $(NSVALUE_MFILES) : NSCTemplateValue.m rm -f $@ echo '#define TYPE_ORDER' `echo $@ | sed -e "s,[^0-9],,g"` >$@ cat $(srcdir)/NSCTemplateValue.m >> $@ $(NSNUMBER_MFILES) : NSConcreteNumber.m rm -f $@ echo '#define TYPE_ORDER' `echo $@ | sed -e "s,[^0-9],,g"` >$@ cat $(srcdir)/NSConcreteNumber.m >> $@ NXStringTable_scan.c: NXStringTable_scan.l $(LEX) $(LEXFLAGS) -t $(srcdir)/NXStringTable_scan.l \ > NXStringTable_scan.temp sed "s/yy/NXlex_/g" < NXStringTable_scan.temp \ > NXStringTable_scan.c $(RM) -f NXStringTable_scan.temp objc-load$(OEXT): dynamic-load.h dynamic-load.h: ../config.status rm -f dynamic-load.h cp $(srcdir)/$(DYNAMIC_LINKER)-load.h dynamic-load.h objects/stdobjects.h: $(srcdir)/../Version $(srcdir)/objects/stdobjects.h.in rm -f $(srcdir)/objects/stdobjects.h sed -e "s/@OBJECTS_VERSION@/$(OBJECTS_VERSION)/" \ < $(srcdir)/objects/stdobjects.h.in | \ sed -e "s/@OBJECTS_MAJOR_VERSION@/$(OBJECTS_MAJOR_VERSION)/" | \ sed -e "s/@OBJECTS_MINOR_VERSION@/$(OBJECTS_MINOR_VERSION)/" | \ sed -e "s/@OBJECTS_SUBMINOR_VERSION@/$(OBJECTS_SUBMINOR_VERSION)/" | \ sed -e "s/@OBJECTS_GCC_VERSION@/$(OBJECTS_GCC_VERSION)/" \ > $(srcdir)/objects/stdobjects.h stdobjects$(OEXT): objects/stdobjects.h # The Xs and Ys...Don't mess with these without thinking first. objects/%-bas.h: objects/x-bas.h.in sed -e "s/@XX@/$*/g" $< > $@ objects/%-cbs.h: objects/x-cbs.h.in sed -e "s/@YY@/$*/g" $< > $@ %-bas.m: x-bas.m.in objects/%.h sed -e "s/@XX@/$*/g" $< > $@ %-cbs.m: x-cbs.m.in objects/%.h sed -e "s/@YY@/$*/g" $< > $@ array.o: array.m objects/array.h objects/array.h: objects/array-bas.h objects/array-cbs.h objects/hash.h hash.o: hash.m objects/hash.h objects/hash.h: objects/hash-bas.h objects/hash-cbs.h list.o: list.m objects/list.h objects/list.h: objects/list-bas.h objects/list-cbs.h objects/array.h objects/hash.h map.o: map.m objects/map.h objects/map.h: objects/map-bas.h objects/map-cbs.h objects/hash.h Makefile: $(srcdir)/Makefile.in ../config.status cd ..; $(SHELL) config.status ../config.status: cd ..; $(SHELL) configure --no-create TAGS: $(DIST_FILES) etags $(DIST_FILES) AUTHORS: Makefile.in rm -f AUTHORS @echo Finding file authors... @echo 'For the legal record, here is a list of who wrote what:'>AUTHORS @for a in $(FILE_AUTHORS) \ ; do \ echo >>AUTHORS; \ echo >>AUTHORS; \ echo "$${a}:" >>AUTHORS; \ egrep -l "((Written by)|(Author)).*$${a}" \ $(DIST_FILES) >>AUTHORS; \ done mostlyclean: rm -f core \ *~ \ objects/*~ \ Foundation/*~ \ objc/*~ clean: mostlyclean rm -f libobjects$(LIBEXT) *$(OEXT) rm -f $(NSVALUE_MFILES) $(NSNUMBER_MFILES) distclean: clean rm -f Makefile rm -f dynamic-load.h maintainer-clean: distclean rm -f TAGS objects/stdobjects.h objects/config.h copy-dist: $(DIST_FILES) mkdir ../snap/src mkdir ../snap/src/objects mkdir ../snap/src/objc mkdir ../snap/src/Foundation for file in $(DIST_FILES); do \ ln $$file ../snap/src/$$file ; \ done ln AUTHORS ../snap