# @configure_input@ # # src makefile for GNU Objective-C Class library # Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. # # Written by: Andrew Kachites 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 = YACC = bison # GNUSTEP_INSTALL_PREFIX must be defined here and not in config.h because # the installing person may set it on the `make' command line. DEFS = -DGNUSTEP_INSTALL_PREFIX=$(prefix) @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 = \ "Andrew Kachites McCallum" \ "Kresten Krab Thorup" \ "Adam Fedor" \ "Mark Lakata" \ "Jeremy Bettis" \ "Georg Tuparev" \ "Peter Burka" \ "Albin L. Jones" \ "Scott Christley" DYNAMIC_LINKER=@DYNAMIC_LINKER@ # Flags to pass to $(CC) for making a shared library CFLAGS_SHAREDLIB_GNU = \ -shared -Wl,-soname,lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) CFLAGS_SHAREDLIB_SOLARIS = -G CFLAGS_SHAREDLIB = @CFLAGS_SHAREDLIB@ NEXT_NEXT_INCLUDES = -I/usr/include GNU_NEXT_INCLUDES = -I$(srcdir) NEXT_INCLUDES = @NEXT_INCLUDES@ ALL_INCLUDE_FLAGS = -I. -I./srcdir-include $(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 \ GNU_MFILES = \ Archiver.m \ Array.m \ Bag.m \ BinaryCStream.m \ BinaryTree.m \ BinaryTreeNode.m \ CircularArray.m \ Collection.m \ ConnectedCoder.m \ Coder.m \ Connection.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 \ 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 \ TcpPort.m \ TextCStream.m \ Time.m \ UdpPort.m \ behavior.m \ lex.pl.m \ lex.sf.m \ ostream.m \ o_array.m \ o_array_bas.m \ o_array_cbs.m \ o_cbs.m \ o_cbs_char_p.m \ o_cbs_id.m \ o_cbs_int.m \ o_cbs_int_p.m \ o_cbs_void_p.m \ o_hash.m \ o_hash_bas.m \ o_hash_cbs.m \ o_list.m \ o_list_bas.m \ o_list_cbs.m \ o_map.m \ o_map_bas.m \ o_map_cbs.m \ preface.m \ proplist.tab.m \ stringsfile.tab.m \ mframe.m \ objc-gnu2next.m GNU_CFILES = \ md5.c \ numbers.c \ o_vscanf.c GNU_OTHER_SRCFILES = \ o_x_bas.m.in \ o_x_cbs.m.in \ include/o_x_bas.h.in \ include/o_x_cbs.h.in \ md5.h \ proplist.l \ proplist.tab.h \ proplist.y \ stringsfile.l \ stringsfile.tab.h \ stringsfile.y \ win32-entry.c \ win32-def.top GNU_OBJS = \ $(GNU_MFILES:.m=${OEXT}) \ $(GNU_CFILES:.c=${OEXT}) GNU_HEADERS = \ include/Archiver.h \ include/Array.h \ include/ArrayPrivate.h \ include/Bag.h \ include/BinaryCStream.h \ include/BinaryTree.h \ include/BinaryTreeNode.h \ include/CircularArray.h \ include/CircularArrayPrivate.h \ include/Coder.h \ include/CoderPrivate.h \ include/Coding.h \ include/Collecting.h \ include/Collection.h \ include/CollectionPrivate.h \ include/ConnectedCoder.h \ include/Connection.h \ include/CStream.h \ include/CStreaming.h \ include/DelegatePool.h \ include/Dictionary.h \ include/Enumerating.h \ include/GapArray.h \ include/GapArrayPrivate.h \ include/Heap.h \ include/IndexedCollecting.h \ include/IndexedCollection.h \ include/IndexedCollectionPrivate.h \ include/InvalidationListening.h \ include/Invocation.h \ include/Invoking.h \ include/KeyedCollecting.h \ include/KeyedCollection.h \ include/LinkedList.h \ include/LinkedListNode.h \ include/Lock.h \ include/Locking.h \ include/MachPort.h \ include/Magnitude.h \ include/MallocAddress.h \ include/MappedCollector.h \ include/MemoryStream.h \ include/Notification.h \ include/NotificationDispatcher.h \ include/Ordering.h \ include/OrderedCollecting.h \ include/OrderedCollection.h \ include/Port.h \ include/Proxy.h \ include/Queue.h \ include/RBTree.h \ include/RBTreeNode.h \ include/RNGAdditiveCongruential.h \ include/RNGBerkeley.h \ include/Random.h \ include/RandomGenerating.h \ include/RawCStream.h \ include/Retaining.h \ include/RetainingNotifier.h \ include/RunLoop.h \ include/Set.h \ include/SplayTree.h \ include/Stack.h \ include/StdioStream.h \ include/Stream.h \ include/Streaming.h \ include/TcpPort.h \ include/TextCStream.h \ include/Time.h \ include/UdpPort.h \ include/ValueHolding.h \ include/behavior.h \ include/fake-main.h \ include/mframe.h \ include/numbers.h \ include/ostream.h \ include/o_array.h \ include/o_array_bas.h \ include/o_array_cbs.h \ include/o_cbs.h \ include/o_hash.h \ include/o_hash_bas.h \ include/o_hash_cbs.h \ include/o_list.h \ include/o_list_bas.h \ include/o_list_cbs.h \ include/o_map.h \ include/o_map_bas.h \ include/o_map_cbs.h \ include/objc-gnu2next.h \ include/all.h \ include/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 \ NSCalendarDate.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 \ NSLog.m \ NSMapTable.m \ NSMethodSignature.m \ NSNotification.m \ NSNotificationCenter.m \ NSNumber.m \ NSObjCRuntime.m \ NSObject.m \ NSPage.m \ NSProcessInfo.m \ NSRange.m \ NSRunLoop.m \ NSScanner.m \ NSSet.m \ NSString.m \ NSThread.m \ NSTimer.m \ NSTimeZone.m \ NSUser.m \ NSUserDefaults.m \ NSValue.m \ NSZone.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 = \ 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 = \ include/NSArchiver.h \ include/NSArray.h \ include/NSAutoreleasePool.h \ include/NSBitmapCharSet.h \ include/NSBundle.h \ include/NSCharacterSet.h \ include/NSCoder.h \ include/NSConcreteNumber.h \ include/NSConcreteValue.h \ include/NSData.h \ include/NSDate.h \ include/NSDictionary.h \ include/NSException.h \ include/NSGeometry.h \ include/NSGArchiver.h \ include/NSGArray.h \ include/NSGCString.h \ include/NSGData.h \ include/NSGDictionary.h \ include/NSGSet.h \ include/NSHashTable.h \ include/NSInvocation.h \ include/NSLock.h \ include/NSMapTable.h \ include/NSMethodSignature.h \ include/NSNotification.h \ include/NSObjCRuntime.h \ include/NSObject.h \ include/NSPathUtilities.h \ include/NSProcessInfo.h \ include/NSRange.h \ include/NSRunLoop.h \ include/NSScanner.h \ include/NSSerialization.h \ include/NSSet.h \ include/NSString.h \ include/NSThread.h \ include/NSTimer.h \ include/NSUserDefaults.h \ include/NSUtilities.h \ include/NSValue.h \ include/NSZone.h \ include/objc-load.h HEADERS_INSTALL = @HEADERS_INSTALL@ \ include/preface.h \ include/config.h OBJS_INSTALL = @OBJS_INSTALL@ OBJS_INSTALL_PIC = $(OBJS_INSTALL:${OEXT}=_pic${OEXT}) DIST_FILES = \ Makefile.in AUTHORS Makefile.sed.nt \ include/config.h.in include/preface.h.in \ include/config-win32.h \ $(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) # Targets all: gnustep/base Foundation lib$(LIBRARY_NAME)$(LIBEXT) @SHARED_LIBRARY@ lib$(LIBRARY_NAME).so.$(VERSION): $(HEADERS_INSTALL) $(OBJS_INSTALL_PIC) $(CC) -o lib$(LIBRARY_NAME).so.$(VERSION) $(CFLAGS_SHAREDLIB) \ $(OBJS_INSTALL_PIC) rm -f lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) rm -f lib$(LIBRARY_NAME).so ln -s lib$(LIBRARY_NAME).so.$(VERSION) \ lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) ln -s lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) \ lib$(LIBRARY_NAME).so lib$(LIBRARY_NAME)$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(AR) $(ARFLAGS) $(AROUT)lib$(LIBRARY_NAME)$(LIBEXT) $(OBJS_INSTALL) $(RANLIB) lib$(LIBRARY_NAME)$(LIBEXT) # Local links to the include files gnustep/base: rm -f gnustep base ln -s . gnustep ln -s ./include base # Make necessary links to source headers if compiling in seperate dir # These are separate directories because one contains the .h files # generated during the build; the other contains the unchanged sources. if [ ! -r ./include/Collection.h ]; then \ mkdir srcdir-include; \ mkdir srcdir-include/gnustep; \ (cd srcdir-include/gnustep; ln -s ../../$(srcdir)/include ./base) ; \ (cd srcdir-include; ln -s ../$(srcdir)/include ./Foundation) ; \ fi # This deletion is necessary, because the CVS repository contains # an emtpy `Foundation' directory that used to hold the OpenStep headers. Foundation: ../configure rm -rf Foundation ln -s $(srcdir)/include Foundation install: installdirs all # Install the library $(INSTALL_DATA) lib$(LIBRARY_NAME)$(LIBEXT) $(libdir) $(RANLIB) $(libdir)/lib$(LIBRARY_NAME)$(LIBEXT); \ if [ -n "@SHARED_LIBRARY@" ]; then \ $(INSTALL_DATA) lib$(LIBRARY_NAME).so.$(VERSION) $(libdir) ; \ rm -f $(libdir)/lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) ; \ rm -f $(libdir)/lib$(LIBRARY_NAME).so ; \ ln -s $(libdir)/lib$(LIBRARY_NAME).so.$(VERSION) \ $(libdir)/lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) ; \ ln -s $(libdir)/lib$(LIBRARY_NAME).so.$(MAJOR_VERSION) \ $(libdir)/lib$(LIBRARY_NAME).so ; \ fi # Install the headers for file in $(HEADERS_INSTALL); do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(includedir)/gnustep/base/`basename $$file` ; \ done cd $(includedir); rm -f Foundation; ln -s ./gnustep/base ./Foundation cd $(includedir); rm -f objc; ln -s ./gnustep/base ./objc cd $(includedir)/objc; rm -f README; ln -s ../include/README . installdirs: $(srcdir)/../mkinstalldirs \ $(libdir) \ $(includedir)/gnustep/base uninstall: rm -f $(libdir)/lib$(LIBRARY_NAME)$(LIBEXT) rm -rf $(includedir)/gnustep/base rm -f $(includedir)/Foundation # 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 proplist.tab.m proplist.tab.h: proplist.y rm -f proplist.tab.m.h $(YACC) -d -p pl proplist.y -o proplist.tab.m mv proplist.tab.m.h proplist.tab.h lex.pl.m: proplist.l proplist.tab.h $(LEX) -t -B -Ppl proplist.l > $@ stringsfile.tab.m stringsfile.tab.h: stringsfile.y rm -f stringsfile.tab.m.h $(YACC) -d -p sf stringsfile.y -o stringsfile.tab.m mv stringsfile.tab.m.h stringsfile.tab.h lex.sf.m: stringsfile.l stringsfile.tab.h $(LEX) -t -B -Psf stringsfile.l > $@ 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 include/preface.h: $(srcdir)/include/preface.h.in ../Version rm -f $@ sed -e "s/@VERSION@/$(LIBRARY_VAR)_VERSION $(VERSION)/" \ < $(srcdir)/include/preface.h.in | \ sed -e "s/@MAJOR_VERSION@/$(LIBRARY_VAR)_MAJOR_VERSION $(MAJOR_VERSION)/" | \ sed -e "s/@MINOR_VERSION@/$(LIBRARY_VAR)_MINOR_VERSION $(MINOR_VERSION)/" | \ sed -e "s/@SUBMINOR_VERSION@/$(LIBRARY_VAR)_SUBMINOR_VERSION $(SUBMINOR_VERSION)/" | \ sed -e "s/@GCC_VERSION@/$(LIBRARY_VAR)_GCC_VERSION $(GCC_VERSION)/" | \ sed -e "s/@LIBRARY_NAME@/$(LIBRARY_VAR)_LIBRARY_NAME $(LIBRARY_NAME)/" | \ sed -e "s/@PACKAGE_NAME@/$(LIBRARY_VAR)_PACKAGE_NAME $(PACKAGE_NAME)/" \ > $@ preface${OEXT}: include/preface.h # Turn off warnings for o_vscanf.c, it generates a bunch of unimportant ones. o_vscanf${OEXT}: o_vscanf.c $(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) -w -o $@ $< o_vscanf_pic${OEXT}: o_vscanf.c $(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) -w -o $@ $< include/o_%_bas.h: include/o_x_bas.h.in sed -e "s/@XX@/$*/g" $< > $@ include/o_%_cbs.h: include/o_x_cbs.h.in sed -e "s/@YY@/$*/g" $< > $@ o_%_bas.m: o_x_bas.m.in include/o_%.h sed -e "s/@XX@/$*/g" $< > $@ o_%_cbs.m: o_x_cbs.m.in include/o_%.h sed -e "s/@YY@/$*/g" $< > $@ o_array.o: o_array.m include/o_array.h include/o_array.h: include/o_array_bas.h include/o_array_cbs.h include/o_hash.h o_hash.o: o_hash.m include/o_hash.h include/o_hash.h: include/o_hash_bas.h include/o_hash_cbs.h o_list.o: o_list.m include/o_list.h include/o_list.h: include/o_list_bas.h include/o_list_cbs.h include/o_array.h include/o_hash.h o_map.o: o_map.m include/o_map.h include/o_map.h: include/o_map_bas.h include/o_map_cbs.h include/o_hash.h Makefile: $(srcdir)/Makefile.in ../config.status cd ..; $(SHELL) config.status ../config.status: cd ..; $(SHELL) configure --no-create include/config.h.in: $(srcdir)/../configure.in $(srcdir)/../acconfig.h cd ..; $(SHELL) autoheader include/config.h: include/config.h.in 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)|(Rewritten by)).*$${a}" \ $(DIST_FILES) >>AUTHORS; \ done mostlyclean: rm -f core \ *~ \ include/*~ \ objc/*~ clean: mostlyclean rm -f lib$(LIBRARY_NAME)$(LIBEXT) *${OEXT} rm -f $(NSVALUE_MFILES) $(NSNUMBER_MFILES) distclean: clean rm -f Makefile rm -f dynamic-load.h rm -f include/preface.h include/config.h rm -f o_*_bas.m o_*_cbs.m include/o_*_bas.h include/o_*_cbs.h maintainer-clean: distclean rm -f TAGS copy-dist: $(DIST_FILES) mkdir ../snap/src mkdir ../snap/src/include mkdir ../snap/src/objc for file in $(DIST_FILES); do \ ln $$file ../snap/src/$$file ; \ done ln AUTHORS ../snap FORCE: