objc.exp (objc_target_compile): Revert the '-framework Foundation' flag fix...
authorDavid Ayers <d.ayers@inode.at>
Mon, 7 Jun 2004 08:48:31 +0000 (10:48 +0200)
committerZiemowit Laski <zlaski@gcc.gnu.org>
Mon, 7 Jun 2004 08:48:31 +0000 (08:48 +0000)
[gcc/testsuite/ChangeLog]
2004-06-07  David Ayers  <d.ayers@inode.at>
    Ziemowit Laski  <zlaski@apple.com>

* lib/objc.exp (objc_target_compile): Revert the '-framework
Foundation' flag fix, since bare Darwin does not ship
with the Foundation framework.
* objc/execute/next_mapping.h: Provide a local NSConstantString
@interface and @implementation.
(objc_constant_string_init): A constructor function, used to
initialize the NSConstantString meta-class object.
* objc/execute/string1.m: Include "next_mapping.h" instead of
<Foundation/NSString.h>.
* objc/execute/string2.m: Likewise.
* objc/execute/string3.m: Likewise.
* objc/execute/string4.m: Likewise.

Co-Authored-By: Ziemowit Laski <zlaski@apple.com>
From-SVN: r82685

gcc/testsuite/ChangeLog
gcc/testsuite/lib/objc.exp
gcc/testsuite/objc/execute/next_mapping.h
gcc/testsuite/objc/execute/string1.m
gcc/testsuite/objc/execute/string2.m
gcc/testsuite/objc/execute/string3.m
gcc/testsuite/objc/execute/string4.m

index 8d6561fc5a562fc214af5e4731b5e14acfd44075..55cd0942b3e393a81251fe6c355a198c533c3bfc 100644 (file)
@@ -1,3 +1,19 @@
+2004-06-07  David Ayers  <d.ayers@inode.at>
+           Ziemowit Laski  <zlaski@apple.com>
+
+       * lib/objc.exp (objc_target_compile): Revert the '-framework
+       Foundation' flag fix, since bare Darwin does not ship
+       with the Foundation framework.
+       * objc/execute/next_mapping.h: Provide a local NSConstantString
+       @interface and @implementation.
+       (objc_string_init): A constructor function, used to initialize
+       the NSConstantString meta-class object.
+       * objc/execute/string1.m: Include "next_mapping.h" instead of
+       <Foundation/NSString.h>.
+       * objc/execute/string2.m: Likewise.
+       * objc/execute/string3.m: Likewise.
+       * objc/execute/string4.m: Likewise.
+
 2004-06-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * gcc.c-torture/execute/ieee/fp-cmp-4.c (FLOAT): New. Default
index d75f6f582ab8fff9ac6c06c81a0de643ea9d3077..1b6c10d60fec80f29023d99167ddd78d22fb1dfb 100644 (file)
@@ -144,7 +144,6 @@ proc objc_target_compile { source dest type options } {
     global TOOL_OPTIONS
     global ld_library_path
     global objc_libgcc_s_path
-    global target_triplet
 
     set ld_library_path ".:${objc_libgcc_s_path}"
     lappend options "libs=-lobjc"
@@ -183,14 +182,6 @@ proc objc_target_compile { source dest type options } {
        lappend options "additional_flags=${objc_link_flags}"
        append ld_library_path ":${libobjc_dir}"
     }
-
-    # If we are running on Darwin, we'll need to point the linker at 
-    # the Foundation framework, where many goodies (e.g., NSConstantString)
-    # reside.
-    if { [string match "*-*-darwin*" $target_triplet] } {
-       lappend options "libs=-framework Foundation"
-    }
-
     lappend options "compiler=$OBJC_UNDER_TEST"
 
     # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
index 67c2ce342573ec841c38820855f57d0d205adbc0..0a361896e125c294fb2f24a15ece5ff1c01836ef 100644 (file)
@@ -1,10 +1,12 @@
 /* This file "renames" various ObjC GNU runtime entry points
    (and fakes the existence of several others)
    if the NeXT runtime is being used.  */
-/* Author: Ziemowit Laski <zlaski@apple.com>  */
+/* Authors: Ziemowit Laski <zlaski@apple.com>  */
+/*         David Ayers <d.ayers@inode.at>  */
 
 #ifdef __NEXT_RUNTIME__
 #include <objc/objc-class.h>
+#include <objc/Object.h>
 #include <ctype.h>
 
 #define objc_get_class(C)                      objc_getClass(C)
@@ -848,4 +850,52 @@ void objc_layout_structure_get_info (struct objc_struct_layout *layout,
     *type = layout->prev_type;
 }
 
+/* A small, portable NSConstantString implementation for use with the NeXT
+   runtime.
+   
+   On full-fledged Mac OS X systems, NSConstantString is provided
+   as part of the Foundation framework.  However, on bare Darwin systems,
+   Foundation is not included, and hence there is no NSConstantString 
+   implementation to link against.
+
+   This code is derived from the GNU runtime's NXConstantString implementation.
+*/
+
+struct objc_class _NSConstantStringClassReference;
+
+@interface NSConstantString : Object
+{
+  char *c_string;
+  unsigned int len;
+}
+
+-(const char *) cString;
+-(unsigned int) length;
+
+@end
+
+@implementation NSConstantString
+
+-(const char *) cString
+{
+  return (c_string);
+}
+
+-(unsigned int) length
+{
+  return (len);
+}
+
+@end
+
+/* The NSConstantString metaclass will need to be initialized before we can
+   send messages to strings.  */
+
+void objc_constant_string_init (void) __attribute__((constructor));
+void objc_constant_string_init (void) {
+  memcpy (&_NSConstantStringClassReference,
+         objc_getClass ("NSConstantString"),
+         sizeof (_NSConstantStringClassReference));
+}
+
 #endif  /* #ifdef __NEXT_RUNTIME__ */
index 58a603c1f1f9348753160069b7ec89a473df1348..ac49bd1f4f38081b957ef0ecd40539e53673cad8 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 
 #ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
 #else
 #include <objc/NXConstStr.h>
 #endif
index 01fb85c11893746be84a1014d5b5d27ca5173122..63b0e9b8056d190864ffe09adb08ce952061dd37 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 
 #ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
 #else
 #include <objc/NXConstStr.h>
 #endif
index a8d2969689968e7a56adfe2be26cc5bbbc8a8bfd..442952478b7fa519b8e4e3f00a3fedfcb1156848 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 
 #ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
 #else
 #include <objc/NXConstStr.h>
 #endif
index 16025cbaed618e5104bb10ca52304a01c41ee22d..87b081c084dc0574a9eadc77524d2f393a17ef70 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 
 #ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
 #else
 #include <objc/NXConstStr.h>
 #endif