From 656fde90c0b21dc0b76b2e3a6303a463c04e2e2a Mon Sep 17 00:00:00 2001 From: fedor Date: Fri, 30 Jun 2000 22:42:48 +0000 Subject: [PATCH] Final fixes for DLLs git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@6848 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 15 +++ Headers/gnustep/base/NSHashTable.h | 32 ++--- Headers/gnustep/base/NSMapTable.h | 36 +++--- Source/GNUmakefile | 3 + Source/Makefile.postamble | 13 ++ Source/NSProcessInfo.m | 9 ++ Source/behavior.m | 5 +- Source/libgnustep-base.def | 187 ++++++++++++++++++++++++++++- Source/objc-load.m | 5 +- Source/win32-def.top | 9 +- Testing/benchmark.m | 2 +- Testing/client.m | 3 +- Testing/server.h | 1 - Testing/server.m | 2 +- configure | 133 ++++++-------------- configure.in | 3 +- 16 files changed, 309 insertions(+), 149 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6518d0c4f..787f06cba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2000-06-30 Adam Fedor + + libgstep-base now compiles (and links) into a DLL on Cygwin. + * configure.in: Typo in checking for cygwin. + + * Headers/gnustep/base/NSHashTable.h: GS_EXPORT functions. + * Headers/gnustep/base/NSMapTable.h: Likewise. + + * Source/Makefile.postamble (libgnustep-base.def) Target to generate + def file. + * Source/libgnustep-base.def: Updated. + + * Source/NSProcessInfo.m: Error message if GS_PASS_ARGUMENTS. Don't + define main if GS_PASS_ARGUMENTS. + 2000-06-30 Richard Frith-Macdonald * Headers/gnustep/base/NSDate.h: Added GSTime() function diff --git a/Headers/gnustep/base/NSHashTable.h b/Headers/gnustep/base/NSHashTable.h index 0464c75f4..e42c2e56c 100644 --- a/Headers/gnustep/base/NSHashTable.h +++ b/Headers/gnustep/base/NSHashTable.h @@ -95,7 +95,7 @@ typedef NSString *(*NSHT_describe_func_t)(NSHashTable *, const void *); /* Returns a (pointer to) an NSHashTable space for which is allocated * in the default zone. If CAPACITY is small or 0, then the returned * table has a reasonable (but still small) capacity. */ -NSHashTable * +GS_EXPORT NSHashTable * NSCreateHashTable(NSHashTableCallBacks callBacks, unsigned int capacity); @@ -103,7 +103,7 @@ NSCreateHashTable(NSHashTableCallBacks callBacks, * in the memory zone ZONE, rather than in the default zone. (Of course, * if you send 0 for ZONE, then the hash table will be created in the * default zone.) */ -NSHashTable * +GS_EXPORT NSHashTable * NSCreateHashTableWithZone(NSHashTableCallBacks callBacks, unsigned int capacity, NSZone *zone); @@ -112,7 +112,7 @@ NSCreateHashTableWithZone(NSHashTableCallBacks callBacks, * has (newly retained) copies of TABLE's keys and values. As always, * if ZONE is 0, then the returned hash table is allocated in the * default zone. */ -NSHashTable * +GS_EXPORT NSHashTable * NSCopyHashTableWithZone(NSHashTable *table, NSZone *zone); /** Freeing an NSHashTable... **/ @@ -120,25 +120,25 @@ NSCopyHashTableWithZone(NSHashTable *table, NSZone *zone); /* Releases all the keys and values of TABLE (using the callbacks * specified at the time of TABLE's creation), and then proceeds * to deallocate the space allocated for TABLE itself. */ -void +GS_EXPORT void NSFreeHashTable(NSHashTable *table); /* Releases every element of TABLE, while preserving * TABLE's "capacity". */ -void +GS_EXPORT void NSResetHashTable(NSHashTable *table); /** Comparing two NSHashTables... **/ /* Returns 'YES' if and only if every element of TABLE1 is an element * of TABLE2, and vice versa. */ -BOOL +GS_EXPORT BOOL NSCompareHashTables(NSHashTable *table1, NSHashTable *table2); /** Getting the number of items in an NSHashTable... **/ /* Returns the total number of elements in TABLE. */ -unsigned int +GS_EXPORT unsigned int NSCountHashTable(NSHashTable *table); /** Retrieving items from an NSHashTable... **/ @@ -146,25 +146,25 @@ NSCountHashTable(NSHashTable *table); /* Returns the element of TABLE equal to POINTER, if POINTER is a * member of TABLE. If not, then 0 (the only completely * forbidden element) is returned. */ -void * +GS_EXPORT void * NSHashGet(NSHashTable *table, const void *pointer); /* Returns an NSArray which contains all of the elements of TABLE. * WARNING: Call this function only when the elements of TABLE * are objects. */ -NSArray * +GS_EXPORT NSArray * NSAllHashTableObjects(NSHashTable *table); /* Returns an NSHashEnumerator structure (a pointer to) which * can be passed repeatedly to the function 'NSNextHashEnumeratorItem()' * to enumerate the elements of TABLE. */ -NSHashEnumerator +GS_EXPORT NSHashEnumerator NSEnumerateHashTable(NSHashTable *table); /* Return 0 if ENUMERATOR has completed its enumeration of * its hash table's elements. If not, then the next element is * returned. */ -void * +GS_EXPORT void * NSNextHashEnumeratorItem(NSHashEnumerator *enumerator); /** Adding an item to an NSHashTable... **/ @@ -173,24 +173,24 @@ NSNextHashEnumeratorItem(NSHashEnumerator *enumerator); * If POINTER is already an element of TABLE, then its previously * incarnation is released from TABLE, and POINTER is put in its place. * Raises an NSInvalidArgumentException if POINTER is 0. */ -void +GS_EXPORT void NSHashInsert(NSHashTable *table, const void *pointer); /* Just like 'NSHashInsert()', with one exception: If POINTER is already * in TABLE, then an NSInvalidArgumentException is raised. */ -void +GS_EXPORT void NSHashInsertKnownAbsent(NSHashTable *table, const void *pointer); /* If POINTER is already in TABLE, the pre-existing item is returned. * Otherwise, 0 is returned, and this is just like 'NSHashInsert()'. */ -void * +GS_EXPORT void * NSHashInsertIfAbsent(NSHashTable *table, const void *pointer); /** Removing an item from an NSHashTable... **/ /* Releases POINTER from TABLE. It is not * an error if POINTER is not already in TABLE. */ -void +GS_EXPORT void NSHashRemove(NSHashTable *table, const void *pointer); /** Getting an NSString representation of an NSHashTable... **/ @@ -199,7 +199,7 @@ NSHashRemove(NSHashTable *table, const void *pointer); * is produced by iterating over the elements of TABLE, * appending the string "X;\n", where X is the description of * the element (obtained from the callbacks, of course). */ -NSString * +GS_EXPORT NSString * NSStringFromHashTable(NSHashTable *table); #endif /* __NSHashTable_h_GNUSTEP_BASE_INCLUDE */ diff --git a/Headers/gnustep/base/NSMapTable.h b/Headers/gnustep/base/NSMapTable.h index 009e71098..dbd74b8df 100644 --- a/Headers/gnustep/base/NSMapTable.h +++ b/Headers/gnustep/base/NSMapTable.h @@ -158,7 +158,7 @@ typedef NSString *(*NSMT_describe_func_t)(NSMapTable *, const void *); /* Returns a (pointer to) an NSMapTable space for which is allocated * in the default zone. If CAPACITY is small or 0, then the returned * table has a reasonable capacity. */ -NSMapTable * +GS_EXPORT NSMapTable * NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, unsigned int capacity); @@ -167,7 +167,7 @@ NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks, * in the memory zone ZONE, rather than in the default zone. (Of course, * if you send 0 for ZONE, then the map table will be created in the * default zone.) */ -NSMapTable * +GS_EXPORT NSMapTable * NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallbacks, unsigned int capacity, @@ -177,7 +177,7 @@ NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks, * has (newly retained) copies of TABLE's keys and values. As always, * if ZONE is 0, then the returned map table is allocated in the * default zone. */ -NSMapTable * +GS_EXPORT NSMapTable * NSCopyMapTableWithZone(NSMapTable *table, NSZone *zone); /** Freeing an NSMapTable... **/ @@ -185,12 +185,12 @@ NSCopyMapTableWithZone(NSMapTable *table, NSZone *zone); /* Releases all the keys and values of TABLE (using the key and * value callbacks specified at the time of TABLE's creation), * and then proceeds to deallocate the space allocated for TABLE itself. */ -void +GS_EXPORT void NSFreeMapTable(NSMapTable *table); /* Releases every key and value of TABLE, while preserving * TABLE's "capacity". */ -void +GS_EXPORT void NSResetMapTable(NSMapTable *table); /** Comparing two NSMapTables... **/ @@ -198,13 +198,13 @@ NSResetMapTable(NSMapTable *table); /* Returns 'YES' if and only if every key of TABLE1 is a key * of TABLE2, and vice versa. NOTE: This function only cares * about keys, never values. */ -BOOL +GS_EXPORT BOOL NSCompareMapTables(NSMapTable *table1, NSMapTable *table2); /** Getting the number of items in an NSMapTable... **/ /* Returns the total number of key/value pairs in TABLE. */ -unsigned int +GS_EXPORT unsigned int NSCountMapTable(NSMapTable *table); /** Retrieving items from an NSMapTable... **/ @@ -212,7 +212,7 @@ NSCountMapTable(NSMapTable *table); /* Returns 'YES' iff TABLE contains a key that is "equal" to KEY. * If so, then ORIGINALKEY is set to that key of TABLE, while * VALUE is set to the value to which it maps in TABLE. */ -BOOL +GS_EXPORT BOOL NSMapMember(NSMapTable *table, const void *key, void **originalKey, @@ -221,20 +221,20 @@ NSMapMember(NSMapTable *table, /* Returns the value to which TABLE maps KEY, if KEY is a * member of TABLE. If not, then 0 (the only completely * forbidden value) is returned. */ -void * +GS_EXPORT void * NSMapGet(NSMapTable *table, const void *key); /* Returns an NSMapEnumerator structure (a pointer to) which * can be passed repeatedly to the function 'NSNextMapEnumeratorPair()' * to enumerate the key/value pairs of TABLE. */ -NSMapEnumerator +GS_EXPORT NSMapEnumerator NSEnumerateMapTable(NSMapTable *table); /* Return 'NO' if ENUMERATOR has completed its enumeration of * its map table's key/value pairs. If not, then 'YES' is * returned and KEY and VALUE are set to the next key and * value (respectively) in ENUMERATOR's table. */ -BOOL +GS_EXPORT BOOL NSNextMapEnumeratorPair(NSMapEnumerator *enumerator, void **key, void **value); @@ -242,13 +242,13 @@ NSNextMapEnumeratorPair(NSMapEnumerator *enumerator, /* Returns an NSArray which contains all of the keys of TABLE. * WARNING: Call this function only when the keys of TABLE * are objects. */ -NSArray * +GS_EXPORT NSArray * NSAllMapTableKeys(NSMapTable *table); /* Returns an NSArray which contains all of the values of TABLE. * WARNING: Call this function only when the values of TABLE * are objects. */ -NSArray * +GS_EXPORT NSArray * NSAllMapTableValues(NSMapTable *table); /** Adding an item to an NSMapTable... **/ @@ -258,17 +258,17 @@ NSAllMapTableValues(NSMapTable *table); * value is released from TABLE, and VALUE is put in its place. * Raises an NSInvalidArgumentException if KEY is the "not a key * marker" for TABLE (as specified in its key callbacks). */ -void +GS_EXPORT void NSMapInsert(NSMapTable *table, const void *key, const void *value); /* If KEY is already in TABLE, the pre-existing key is returned. * Otherwise, 0 is returned, and this is just like 'NSMapInsert()'. */ -void * +GS_EXPORT void * NSMapInsertIfAbsent(NSMapTable *table, const void *key, const void *value); /* Just like 'NSMapInsert()', with one exception: If KEY is already * in TABLE, then an NSInvalidArgumentException is raised. */ -void +GS_EXPORT void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value); @@ -277,7 +277,7 @@ NSMapInsertKnownAbsent(NSMapTable *table, /* Releases KEY (and its associated value) from TABLE. It is not * an error if KEY is not already in TABLE. */ -void +GS_EXPORT void NSMapRemove(NSMapTable *table, const void *key); /** Getting an NSString representation of an NSMapTable **/ @@ -287,6 +287,6 @@ NSMapRemove(NSMapTable *table, const void *key); * appending the string "X = Y;\n", where X is the description of * the key, and Y is the description of the value (each obtained * from the respective callbacks, of course). */ -NSString *NSStringFromMapTable (NSMapTable *table); +GS_EXPORT NSString *NSStringFromMapTable (NSMapTable *table); #endif /* __NSMapTable_h_GNUSTEP_BASE_INCLUDE */ diff --git a/Source/GNUmakefile b/Source/GNUmakefile index 68ccacf9f..a70c6c3a1 100644 --- a/Source/GNUmakefile +++ b/Source/GNUmakefile @@ -384,6 +384,9 @@ libgnustep-base_C_FILES = $(GNU_CFILES) libgnustep-base_OBJC_FILES = $(GNU_MFILES) \ $(BASE_MFILES) $(NSVALUE_MFILES) $(NSNUMBER_MFILES) +# Extra DLL exports file +libgnustep-base_DLL_DEF = libgnustep-base.def + libgnustep-base_HEADER_FILES_DIR = ../Headers libgnustep-base_HEADER_FILES_INSTALL_DIR = /gnustep diff --git a/Source/Makefile.postamble b/Source/Makefile.postamble index 7fb30fca1..11356e680 100644 --- a/Source/Makefile.postamble +++ b/Source/Makefile.postamble @@ -279,6 +279,19 @@ $(GNUSTEP_OBJ_DIR)/NSGCString.o \ $(GNUSTEP_OBJ_DIR)/NSGeometry.o \ : Foundation/NSGeometry.h + +# +# Make list of class names for DLL exports. Edit to suit +# +libgnustep-base.def: $(GNUSTEP_OBJ_DIR)/*o + rm -f libgnustep-base.def + rm -f _tmp.def + cat win32-def.top > libgnustep-base.def + nm $^ | grep '^........ [T] _' | sed 's/[^_]*_//' > _tmp.def + cat _tmp.def | grep "_class_name_" >> libgnustep-base.def + rm -rf _tmp.def + + TAGS: $(DIST_FILES) etags $(DIST_FILES) diff --git a/Source/NSProcessInfo.m b/Source/NSProcessInfo.m index 9b918cad5..85031edac 100644 --- a/Source/NSProcessInfo.m +++ b/Source/NSProcessInfo.m @@ -84,11 +84,18 @@ Perhaps your program failed to #include or\n\ ?\n\ If that is not the problem, Please report the error to bug-gnustep@gnu.org.\n\n" #else +#ifdef GS_PASS_ARGUMENTS +#define _GNU_MISSING_MAIN_FUNCTION_CALL @"\nGNUSTEP Error:\n\ +A call to NSProcessInfo +initializeWithArguments:... must be made\n\ +as the first ObjC statment in main. This function is used to \n\ +establish the argv and environment variables.\n" +#else #define _GNU_MISSING_MAIN_FUNCTION_CALL @"\nGNUSTEP Internal Error:\n\ The private GNUstep function to establish the argv and environment\n\ variables was not called.\n\ Please report the error to bug-gnustep@gnu.org.\n\n" #endif +#endif /************************************************************************* *** _NSConcreteProcessInfo @@ -483,6 +490,7 @@ extern char** _environ; } #else +#ifndef GS_PASS_ARGUMENTS #undef main int main(int argc, char *argv[], char *env[]) { @@ -506,6 +514,7 @@ int main(int argc, char *argv[], char *env[]) /* Call the user defined main function */ return gnustep_base_user_main(argc, argv, env); } +#endif /* !GS_PASS_ARGUMENTS */ #endif /* __MINGW32__ */ #endif /* HAS_LOAD_METHOD && HAS_PROC_FS */ diff --git a/Source/behavior.m b/Source/behavior.m index 581bfdcd8..2fc9388b6 100644 --- a/Source/behavior.m +++ b/Source/behavior.m @@ -56,7 +56,10 @@ static int behavior_debug = 0; #ifndef HAVE_OBJC_GET_UNINSTALLED_DTABLE -extern void *__objc_uninstalled_dtable; +#ifndef objc_EXPORT +#define objc_EXPORT export +#endif +objc_EXPORT void *__objc_uninstalled_dtable; static void * objc_get_uninstalled_dtable() { diff --git a/Source/libgnustep-base.def b/Source/libgnustep-base.def index d5916b882..2967a15dd 100644 --- a/Source/libgnustep-base.def +++ b/Source/libgnustep-base.def @@ -4,10 +4,10 @@ ; Exports for libgnustep-base DLL ; Specific to WIN32 operating systems ; -; Copyright (C) 1996 Free Software Foundation, Inc. +; Copyright (C) 2000 Free Software Foundation, Inc. ; -; Author: Scott Christley -; Date: 1996 +; Author: Adam Fedor +; Date: Jun 2000 ; ; This file is part of the GNUstep Base Library. ; @@ -21,12 +21,187 @@ ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ; Library General Public License for more details. ; -; If you are interested in a warranty or support for this source code, -; contact Scott Christley for more information. -; ; 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. ; LIBRARY libgnustep-base EXPORTS +__objc_class_name_BinaryCStream +__objc_class_name_CStream +__objc_class_name_Coder +__objc_class_name_Decoder +__objc_class_name_Encoder +__objc_class_name_GSClassInfo +__objc_class_name_GSPortCoder +__objc_class_name_GSTcpHandle +__objc_class_name_GSTcpPort +__objc_class_name_MemoryStream +__objc_class_name_NSArchiver +__objc_class_name_NSArray +__objc_class_name_NSArrayEnumerator +__objc_class_name_NSArrayEnumeratorReverse +__objc_class_name_NSArrayNonCore +__objc_class_name_NSMutableArray +__objc_class_name_NSMutableArrayNonCore +__objc_class_name_NSAssertionHandler +__objc_class_name_GSMutableAttributedStringTracker +__objc_class_name_NSAttributedString +__objc_class_name_NSMutableAttributedString +__objc_class_name_NSAutoreleasePool +__objc_class_name_NSBitmapCharSet +__objc_class_name_NSMutableBitmapCharSet +__objc_class_name_NSBundle +__objc_class_name_NSCalendarDate +__objc_class_name_NSCharacterSet +__objc_class_name_NSMutableCharacterSet +__objc_class_name_NSCoder +__objc_class_name_NSCoderNonCore +__objc_class_name_NSConcreteValue +__objc_class_name_CachedLocalObject +__objc_class_name_GSLocalCounter +__objc_class_name_NSConnection +__objc_class_name_NSCountedSet +__objc_class_name_NSData +__objc_class_name_NSDataMalloc +__objc_class_name_NSDataMappedFile +__objc_class_name_NSDataStatic +__objc_class_name_NSMutableData +__objc_class_name_NSMutableDataMalloc +__objc_class_name_GSDateFuture +__objc_class_name_GSDatePast +__objc_class_name_GSDateSingle +__objc_class_name_NSDate +__objc_class_name_NSGDate +__objc_class_name_NSDateFormatter +__objc_class_name_GSDebugAlloc +__objc_class_name_NSDictionary +__objc_class_name_NSDictionaryNonCore +__objc_class_name_NSMutableDictionary +__objc_class_name_NSMutableDictionaryNonCore +__objc_class_name_GSDistantObjectPlaceHolder +__objc_class_name_NSDistantObject +__objc_class_name_NSDistributedLock +__objc_class_name_NSDistributedNotificationCenter +__objc_class_name_NSEnumerator +__objc_class_name_NSException +__objc_class_name_NSFileHandle +__objc_class_name_NSDirectoryEnumerator +__objc_class_name_NSFileManager +__objc_class_name_NSFormatter +__objc_class_name_NSGArray +__objc_class_name_NSGArrayEnumerator +__objc_class_name_NSGArrayEnumeratorReverse +__objc_class_name_NSGMutableArray +__objc_class_name_GSAttrInfo +__objc_class_name_NSGAttributedString +__objc_class_name_NSGMutableAttributedString +__objc_class_name_NSGCString +__objc_class_name_NSGMutableCString +__objc_class_name_NXConstantString +__objc_class_name_NSGCountedSet +__objc_class_name_NSGCountedSetEnumerator +__objc_class_name_NSGDictionary +__objc_class_name_NSGDictionaryKeyEnumerator +__objc_class_name_NSGDictionaryObjectEnumerator +__objc_class_name_NSGMutableDictionary +__objc_class_name_NSGMutableSet +__objc_class_name_NSGSet +__objc_class_name_NSGSetEnumerator +__objc_class_name_NSGMutableString +__objc_class_name_NSGString +__objc_class_name_NSHost +__objc_class_name_NSInvocation +__objc_class_name_NSConditionLock +__objc_class_name_NSLock +__objc_class_name_NSRecursiveLock +__objc_class_name_NSMethodSignature +__objc_class_name_NSNotification +__objc_class_name_NSNotificationCenter +__objc_class_name_NSNotificationQueue +__objc_class_name_NotificationQueueList +__objc_class_name_NSNumber +__objc_class_name_NSBoolNumber +__objc_class_name_NSCharNumber +__objc_class_name_NSULongLongNumber +__objc_class_name_NSFloatNumber +__objc_class_name_NSDoubleNumber +__objc_class_name_NSUCharNumber +__objc_class_name_NSShortNumber +__objc_class_name_NSUShortNumber +__objc_class_name_NSIntNumber +__objc_class_name_NSUIntNumber +__objc_class_name_NSLongNumber +__objc_class_name_NSULongNumber +__objc_class_name_NSLongLongNumber +__objc_class_name_NSObject +__objc_class_name__FastMallocBuffer +__objc_class_name_NSPipe +__objc_class_name_NSPort +__objc_class_name_NSPortCoder +__objc_class_name_PortDecoder +__objc_class_name_PortEncoder +__objc_class_name_NSPortMessage +__objc_class_name_GSPortCom +__objc_class_name_NSPortNameServer +__objc_class_name_NSProcessInfo +__objc_class_name__NSConcreteProcessInfo +__objc_class_name_NSProtocolChecker +__objc_class_name_NSProxy +__objc_class_name_GSRunLoopPerformer +__objc_class_name_GSRunLoopWatcher +__objc_class_name_GSTimedPerformer +__objc_class_name_NSRunLoop +__objc_class_name_NSScanner +__objc_class_name_NSDeserializer +__objc_class_name_NSSerializer +__objc_class_name__NSDeserializerProxy +__objc_class_name_NSMutableSet +__objc_class_name_NSMutableSetNonCore +__objc_class_name_NSSet +__objc_class_name_NSSetNonCore +__objc_class_name_NSMutableString +__objc_class_name_NSString +__objc_class_name_NSTask +__objc_class_name_NSThread +__objc_class_name_NSConcreteAbsoluteTimeZone +__objc_class_name_NSConcreteTimeZone +__objc_class_name_NSConcreteTimeZoneDetail +__objc_class_name_NSInternalAbbrevDict +__objc_class_name_NSInternalAbbrevDictObjectEnumerator +__objc_class_name_NSInternalTimeTransition +__objc_class_name_NSTimeZone +__objc_class_name_NSTimeZoneDetail +__objc_class_name_NSTimer +__objc_class_name_NSURL +__objc_class_name_NSURLHandle +__objc_class_name_NSUnarchiver +__objc_class_name_NSUnarchiverClassInfo +__objc_class_name_NSUnarchiverObjectInfo +__objc_class_name_NSUndoManager +__objc_class_name_PrivateUndoGroup +__objc_class_name_NSUserDefaults +__objc_class_name_NSValue +__objc_class_name_NSNonretainedObjectValue +__objc_class_name_NSPointValue +__objc_class_name_NSPointerValue +__objc_class_name_NSRectValue +__objc_class_name_NSSizeValue +__objc_class_name_InPacket +__objc_class_name_InPort +__objc_class_name_OutPacket +__objc_class_name_OutPort +__objc_class_name_Port +__objc_class_name_RawCStream +__objc_class_name_StdioStream +__objc_class_name_Stream +__objc_class_name_TcpInPacket +__objc_class_name_TcpInPort +__objc_class_name_TcpOutPacket +__objc_class_name_TcpOutPort +__objc_class_name_TcpPrefPacket +__objc_class_name_TextCStream +__objc_class_name_UdpInPacket +__objc_class_name_UdpInPort +__objc_class_name_UdpOutPort +__objc_class_name_UnixFileHandle diff --git a/Source/objc-load.m b/Source/objc-load.m index 8473a3783..a537889c4 100644 --- a/Source/objc-load.m +++ b/Source/objc-load.m @@ -45,7 +45,10 @@ extern void __objc_install_premature_dtable(Class); extern void sarray_free(struct sarray*); #ifndef HAVE_OBJC_GET_UNINSTALLED_DTABLE -extern void *__objc_uninstalled_dtable; +#ifndef objc_EXPORT +#define objc_EXPORT export +#endif +objc_EXPORT void *__objc_uninstalled_dtable; static void * objc_get_uninstalled_dtable() { diff --git a/Source/win32-def.top b/Source/win32-def.top index d5916b882..d524ef061 100644 --- a/Source/win32-def.top +++ b/Source/win32-def.top @@ -4,10 +4,10 @@ ; Exports for libgnustep-base DLL ; Specific to WIN32 operating systems ; -; Copyright (C) 1996 Free Software Foundation, Inc. +; Copyright (C) 2000 Free Software Foundation, Inc. ; -; Author: Scott Christley -; Date: 1996 +; Author: Adam Fedor +; Date: Jun 2000 ; ; This file is part of the GNUstep Base Library. ; @@ -21,9 +21,6 @@ ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ; Library General Public License for more details. ; -; If you are interested in a warranty or support for this source code, -; contact Scott Christley for more information. -; ; 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., 59 Temple Place, Suite 330, Boston, MA 02111 USA. diff --git a/Testing/benchmark.m b/Testing/benchmark.m index 4e4f36a15..0bbb2a4a5 100755 --- a/Testing/benchmark.m +++ b/Testing/benchmark.m @@ -410,7 +410,7 @@ int main(int argc, char *argv[], char **env) { id pool; -#if 0 || LIB_FOUNDATION_LIBRARY +#if LIB_FOUNDATION_LIBRARY || defined(GS_PASS_ARGUMENTS) [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif diff --git a/Testing/client.m b/Testing/client.m index 3c5034365..7a8694a28 100644 --- a/Testing/client.m +++ b/Testing/client.m @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include "server.h" @@ -45,7 +45,6 @@ GSDebugAllocationActive(YES); [NSDistantObject setDebug: 10]; [TcpInPort setDebug: 10]; - [Coder setDebugging:YES]; [BinaryCStream setDebugging:YES]; #if NeXT_runtime diff --git a/Testing/server.h b/Testing/server.h index 673f0b22f..8028137fe 100644 --- a/Testing/server.h +++ b/Testing/server.h @@ -3,7 +3,6 @@ #include #include -#include typedef struct _small_struct { unsigned char z; diff --git a/Testing/server.m b/Testing/server.m index 98f80c396..22f956cdd 100644 --- a/Testing/server.m +++ b/Testing/server.m @@ -13,7 +13,7 @@ @implementation Server - init { - the_array = [[Array alloc] init]; + the_array = [[NSMutableArray alloc] init]; return self; } - (unsigned) count diff --git a/configure b/configure index 770eadfa6..27f717ed0 100755 --- a/configure +++ b/configure @@ -3699,61 +3699,6 @@ else fi done -for ac_func in mkstemp -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3706: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:3734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - #-------------------------------------------------------------------- # This function needed by UnixFileHandle.m @@ -3761,12 +3706,12 @@ done for ac_func in inet_aton do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3765: checking for $ac_func" >&5 +echo "configure:3710: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3820,12 +3765,12 @@ done for ac_func in killpg setpgrp setpgid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3824: checking for $ac_func" >&5 +echo "configure:3769: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3873,7 +3818,7 @@ fi done echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:3877: checking whether setpgrp takes no argument" >&5 +echo "configure:3822: checking whether setpgrp takes no argument" >&5 if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3881,7 +3826,7 @@ else { echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_setpgrp_void=no else @@ -3931,12 +3876,12 @@ fi for ac_func in usleep do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3935: checking for $ac_func" >&5 +echo "configure:3880: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3990,12 +3935,12 @@ done for ac_func in strerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3994: checking for $ac_func" >&5 +echo "configure:3939: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4047,12 +3992,12 @@ done # This function needed by NSString for handling of %@ printf directive. #-------------------------------------------------------------------- echo $ac_n "checking for register_printf_function""... $ac_c" 1>&6 -echo "configure:4051: checking for register_printf_function" >&5 +echo "configure:3996: checking for register_printf_function" >&5 if eval "test \"`echo '$''{'ac_cv_func_register_printf_function'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_register_printf_function=yes" else @@ -4100,11 +4045,11 @@ if test $register_printf = 1; then working_register_printf=1 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then working_register_printf=1 else @@ -4130,12 +4075,12 @@ fi for ac_func in realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4134: checking for $ac_func" >&5 +echo "configure:4079: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4188,7 +4133,7 @@ done # Used in critical cases by NSProcessInfo.m #-------------------------------------------------------------------- echo $ac_n "checking program_invocation_name in C Library""... $ac_c" 1>&6 -echo "configure:4192: checking program_invocation_name in C Library" >&5 +echo "configure:4137: checking program_invocation_name in C Library" >&5 if eval "test \"`echo '$''{'program_invocation_name_worked'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4196,7 +4141,7 @@ else program_invocation_name_worked=no else cat > conftest.$ac_ext < @@ -4208,7 +4153,7 @@ main (int argc, char *argv[]) } EOF -if { (eval echo configure:4212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then program_invocation_name_worked=yes else @@ -4237,7 +4182,7 @@ fi # Needed by NSProcessInfo.m #-------------------------------------------------------------------- echo $ac_n "checking kernel support for /proc filesystem""... $ac_c" 1>&6 -echo "configure:4241: checking kernel support for /proc filesystem" >&5 +echo "configure:4186: checking kernel support for /proc filesystem" >&5 if (grep proc /etc/fstab >/dev/null 2>/dev/null); then sys_proc_fs=yes; cat >> confdefs.h <<\EOF @@ -4260,7 +4205,7 @@ fi sys_proc_fs_exe=no; if test $sys_proc_fs = yes; then echo $ac_n "checking link to executable in /proc""... $ac_c" 1>&6 -echo "configure:4264: checking link to executable in /proc" >&5 +echo "configure:4209: checking link to executable in /proc" >&5 if test -L /proc/self/exe; then sys_proc_fs_exe=yes; echo "$ac_t""yes" 1>&6 @@ -4273,16 +4218,16 @@ fi # Check if short and int values need to be word aligned #-------------------------------------------------------------------- echo $ac_n "checking short/int needs to be word aligned""... $ac_c" 1>&6 -echo "configure:4277: checking short/int needs to be word aligned" >&5 +echo "configure:4222: checking short/int needs to be word aligned" >&5 if test "$cross_compiling" = yes; then NEED_WORD_ALIGNMENT=1 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then NEED_WORD_ALIGNMENT=0 else @@ -4310,7 +4255,7 @@ fi # doesn't work. Allow NSProcessInfo initialization method also. #-------------------------------------------------------------------- echo $ac_n "checking "use of pass-through arguments"""... $ac_c" 1>&6 -echo "configure:4314: checking "use of pass-through arguments"" >&5 +echo "configure:4259: checking "use of pass-through arguments"" >&5 # Check whether --enable-pass-arguments or --disable-pass-arguments was given. if test "${enable_pass_arguments+set}" = set; then enableval="$enable_pass_arguments" @@ -4321,7 +4266,7 @@ fi case "$target_os" in - cygnus*) enable_pass_arguments=yes;; + cygwin*) enable_pass_arguments=yes;; esac if test "$enable_pass_arguments" = "yes"; then GS_PASS_ARGUMENTS=1 @@ -4332,7 +4277,7 @@ fi echo "$ac_t""$enable_pass_arguments" 1>&6 echo $ac_n "checking "use of fake-main definition"""... $ac_c" 1>&6 -echo "configure:4336: checking "use of fake-main definition"" >&5 +echo "configure:4281: checking "use of fake-main definition"" >&5 # Check whether --enable-fake-main or --disable-fake-main was given. if test "${enable_fake_main+set}" = set; then enableval="$enable_fake_main" @@ -4379,17 +4324,17 @@ for ac_hdr in libxml/xmlversion.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4383: checking for $ac_hdr" >&5 +echo "configure:4328: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4422,7 +4367,7 @@ if test $ac_cv_header_libxml_xmlversion_h = no; then HAVE_LIBXML=0 else cat > conftest.$ac_ext <&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* diff --git a/configure.in b/configure.in index d5dfb308e..ac4849c26 100644 --- a/configure.in +++ b/configure.in @@ -607,7 +607,6 @@ AC_CHECK_FUNCS(times) AC_CHECK_FUNCS(mkstemp) AC_CHECK_FUNCS(shmctl) AC_CHECK_FUNCS(mmap) -AC_CHECK_FUNCS(mkstemp) #-------------------------------------------------------------------- # This function needed by UnixFileHandle.m @@ -729,7 +728,7 @@ AC_ARG_ENABLE(pass-arguments, enable_pass_arguments=no) case "$target_os" in - cygnus*) enable_pass_arguments=yes;; + cygwin*) enable_pass_arguments=yes;; esac if test "$enable_pass_arguments" = "yes"; then GS_PASS_ARGUMENTS=1