Rhapsody/Darwin patches from Wilfredo Sanchez.
Jarkko Hietaniemi [Sat, 26 Feb 2000 03:10:47 +0000 (03:10 +0000)]
p4raw-id: //depot/cfgperl@5262

Configure
INSTALL
MANIFEST
Makefile.SH
README.threads
ext/DynaLoader/dl_dyld.xs [moved from ext/DynaLoader/dl_rhapsody.xs with 91% similarity]
hints/darwin.sh [new file with mode: 0644]
hints/rhapsody.sh
installperl
pp_sys.c

index 0abed23..76c189d 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sat Feb 26 04:42:42 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Sat Feb 26 05:10:12 EET 2000 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <<EOF
@@ -11644,7 +11644,7 @@ case "$crosscompile" in
 esac
 
 case "$osname" in
-next|rhapsody) multiarch="$define" ;;
+next|rhapsody|darwin) multiarch="$define" ;;
 esac
 case "$multiarch" in
 ''|[nN]*) multiarch="$undef" ;;
diff --git a/INSTALL b/INSTALL
index 5fe174d..bb0eeb0 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -740,7 +740,7 @@ You can elect to build a shared libperl by
 
 To build a shared libperl, the environment variable controlling shared
 library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for
-NeXTSTEP/OPENSTEP/Rhapsody, LIBRARY_PATH for BeOS, SHLIB_PATH for
+NeXTSTEP/OPENSTEP/Darwin, LIBRARY_PATH for BeOS, SHLIB_PATH for
 HP-UX, LIBPATH for AIX, PATH for Cygwin) must be set up to include
 the Perl build directory because that's where the shared libperl will
 be created.  Configure arranges makefile to have the correct shared
index 746a170..8d5fac9 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -235,11 +235,11 @@ ext/DynaLoader/dl_aix.xs  AIX implementation
 ext/DynaLoader/dl_beos.xs      BeOS implementation
 ext/DynaLoader/dl_dld.xs       GNU dld style implementation
 ext/DynaLoader/dl_dlopen.xs    BSD/SunOS4&5 dlopen() style implementation
+ext/DynaLoader/dl_dyld.xs      NeXT/Apple dyld implementation
 ext/DynaLoader/dl_hpux.xs      HP-UX implementation
 ext/DynaLoader/dl_mpeix.xs     MPE/iX implementation
-ext/DynaLoader/dl_next.xs      Next implementation
+ext/DynaLoader/dl_next.xs      NeXT implementation
 ext/DynaLoader/dl_none.xs      Stub implementation
-ext/DynaLoader/dl_rhapsody.xs  Rhapsody implementation
 ext/DynaLoader/dl_vmesa.xs     VM/ESA implementation
 ext/DynaLoader/dl_vms.xs       VMS implementation
 ext/DynaLoader/dlutils.c       Dynamic loader utilities for dl_*.xs files
@@ -440,6 +440,7 @@ hints/bsdos.sh              Hints for named architecture
 hints/convexos.sh      Hints for named architecture
 hints/cxux.sh          Hints for named architecture
 hints/cygwin.sh                Hints for named architecture
+hints/darwin.sh                Hints for named architecture
 hints/dcosx.sh         Hints for named architecture
 hints/dec_osf.sh       Hints for named architecture
 hints/dgux.sh          Hints for named architecture
index bfb5610..0817c99 100644 (file)
@@ -45,6 +45,14 @@ true)
                -compatibility_version 1 -current_version $patchlevel \
                -prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
                ;;
+       rhapsody*|darwin*)
+               shrpldflags="${ldflags} -dynamiclib \
+                            -compatibility_version 1 \
+                            -current_version \
+                               ${api_version}.${api_subversion} \
+                            -image_base 0x4be00000 \
+                            -install_name \$(shrpdir)/\$@"
+               ;;
        cygwin*)
                linklibperl="-lperl"
                ;;
@@ -76,9 +84,6 @@ true)
            os2)
                ldlibpth=''
                ;;
-           rhapsody)
-               eval "ldlibpth=\"$ldlibpthname=`pwd`/Perl:\$$ldlibpthname\""
-               ;;
            *)
                eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
                ;;
@@ -532,6 +537,9 @@ extra.pods: miniperl
        -@test -f README.vms && $(LNS) ../README.vms pod/README_vms.pod && echo "pod/README_vms.pod" >> extra.pods
        -@test -f vms/perlvms.pod && $(LNS) ../vms/perlvms.pod pod/perlvms.pod && echo "pod/perlvms.pod" >> extra.pods
 
+install-strip:
+       $(MAKE) STRIPFLAGS=-s install
+
 install: all install.perl install.man
 
 install.perl:  all installperl
@@ -542,7 +550,7 @@ install.perl:       all installperl
                cd ../pod; $(MAKE) compile; \
        else :; \
        fi
-       $(LDLIBPTH) ./perl installperl
+       $(LDLIBPTH) ./perl installperl $(STRIPFLAGS)
 
 install.man:   all installman
        $(LDLIBPTH) ./perl installman
index 1f5f7ea..15d36de 100644 (file)
@@ -51,7 +51,7 @@ from the "Problems" section.
 
        * OpenBSD
 
-       * NeXTstep, OpenStep (Rhapsody?)
+       * NeXTstep, OpenStep
 
        * OS/2
 
similarity index 91%
rename from ext/DynaLoader/dl_rhapsody.xs
rename to ext/DynaLoader/dl_dyld.xs
index 768e99e..688e474 100644 (file)
@@ -1,6 +1,7 @@
-/* dl_rhapsody.xs
+/* dl_dyld.xs
  *
- * Platform:   Apple Rhapsody 5.0
+ * Platform:   Darwin (Mac OS)
+ * Author:     Wilfredo Sanchez <wsanchez@apple.com>
  * Based on:   dl_next.xs by Paul Marquess
  * Based on:   dl_dlopen.xs by Anno Siegel
  * Created:    Aug 15th, 1994
 
 /* Porting notes:
 
-dl_next.xs is itself a port from dl_dlopen.xs by Paul Marquess.  It
+dl_dyld.xs is based on dl_next.xs by Anno Siegel.
+
+dl_next.xs is in turn a port from dl_dlopen.xs by Paul Marquess.  It
 should not be used as a base for further ports though it may be used
 as an example for how dl_dlopen.xs can be ported to other platforms.
 
 The method used here is just to supply the sun style dlopen etc.
-functions in terms of NeXTs rld_*.  The xs code proper is unchanged
-from Paul's original.
+functions in terms of NeXT's/Apple's dyld.  The xs code proper is
+unchanged from Paul's original.
 
 The port could use some streamlining.  For one, error handling could
 be simplified.
 
-Anno Siegel
+This should be useable as a replacement for dl_next.xs, but it has not
+been tested on NeXT platforms.
+
+  Wilfredo Sanchez
 
 */
 
@@ -40,6 +46,7 @@ Anno Siegel
 #include "dlutils.c"   /* SaveError() etc      */
 
 #undef environ
+#undef bool
 #import <mach-o/dyld.h>
 
 static char * dl_last_error = (char *) 0;
@@ -216,4 +223,4 @@ dl_error()
     OUTPUT:
     RETVAL
 
-+# end.
+# end.
diff --git a/hints/darwin.sh b/hints/darwin.sh
new file mode 100644 (file)
index 0000000..fd61e42
--- /dev/null
@@ -0,0 +1,63 @@
+##
+# Darwin (Mac OS) hints
+# Wilfredo Sanchez <wsanchez@apple.com>
+##
+
+##
+# Paths
+##
+
+# BSD paths
+prefix='/usr';
+siteprefix='/usr/local';
+vendorprefix='/usr/local'; usevendorprefix='define';
+
+# 4BSD uses /usr/share/man, not /usr/man.
+# Don't put man pages in /usr/lib; that's goofy.
+man1dir='/usr/share/man/man1';
+man3dir='/usr/share/man/man3';
+
+# Where to put modules.
+privlib='/System/Library/Perl';
+sitelib='/Local/Library/Perl';
+vendorlib='/Network/Library/Perl';
+
+##
+# Tool chain settings
+##
+
+# Since we can build fat, the archname doesn't need the processor type
+archname='darwin';
+
+# nm works.
+usenm='true';
+
+# Libc is in libsystem.
+libc='/System/Library/Frameworks/System.framework/System';
+
+# Optimize.
+optimize='-O3';
+
+# We have a prototype for telldir.
+ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE";
+
+# Shared library extension is .dylib.
+# Bundle extension is .bundle.
+ld='cc';
+so='dylib';
+dlext='bundle';
+dlsrc='dl_dyld.xs'; usedl='define';
+cccdlflags='';
+lddlflags="${ldflags} -bundle -undefined suppress";
+ldlibpthname='DYLD_LIBRARY_PATH';
+useshrplib='true';
+
+##
+# System libraries
+##
+
+# vfork works
+usevfork='true';
+
+# malloc works
+usemymalloc='n';
index c564c88..933081b 100644 (file)
@@ -3,57 +3,65 @@
 # Wilfredo Sanchez <wsanchez@apple.com>
 ##
 
-# Since we can build fat, the archname doesn't need the processor type
-archname='rhapsody';
+##
+# Paths
+##
 
-# Perl5.003 precedes this platform
-d_bincompat3='undef';
+# BSD paths
+prefix='/usr';
+siteprefix='/usr/local';
+vendorprefix='/usr/local'; usevendorprefix='define';
 
-# Libc is in libsystem.
-libc='/System/Library/Frameworks/System.framework/System';
+# 4BSD uses /usr/share/man, not /usr/man.
+# Don't put man pages in /usr/lib; that's goofy.
+man1dir='/usr/share/man/man1';
+man3dir='/usr/share/man/man3';
+
+# Where to put modules.
+privlib='/System/Library/Perl';
+sitelib='/Local/Library/Perl';
+vendorlib='/Network/Library/Perl';
+
+##
+# Tool chain settings
+##
+
+# Since we can build fat, the archname doesn't need the processor type
+archname='rhapsody';
 
 # nm works.
 usenm='true';
+  
+# Libc is in libsystem.
+libc='/System/Library/Frameworks/System.framework/System';
 
 # Optimize.
 optimize='-O3';
 
 # We have a prototype for telldir.
-# We are not NeXTStep.
-ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE -UNeXT -U__NeXT__";
+ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE";
 
-# Don't use /usr/local/lib; we may have junk there.
-libpth='/lib /usr/lib';
-
-# Shared library extension in .dylib.
-# Bundle extension in .bundle.
+# Shared library extension is .dylib.
+# Bundle extension is .bundle.
 ld='cc';
 so='dylib';
 dlext='bundle';
-dlsrc='dl_rhapsody.xs';
+dlsrc='dl_dyld.xs';
+usedl='define';
 cccdlflags='';
 lddlflags="${ldflags} -bundle -undefined suppress";
+ldlibpthname='DYLD_LIBRARY_PATH';
 useshrplib='true';
-libperl='Perl';
-framework_path='/System/Library/Frameworks/Perl.framework';
 base_address='0x4be00000';
 
-# 4BSD uses /usr/share/man, not /usr/man.
-# Don't put man pages in /usr/lib; that's goofy.
-man1dir='/usr/share/man/man1';
-man3dir='/usr/share/man/man3';
-
-# Where to put modules.
-privlib='/System/Library/Perl';
-sitelib='/Local/Library/Perl';
-
+##
+# System libraries
+##
+  
 # vfork works
 usevfork='true';
 
 # malloc works
 usemymalloc='n';
 
-case "$ldlibpthname" in
-'') ldlibpthname=DYLD_LIBRARY_PATH ;;
-esac
 
index 7c0bed7..920f036 100755 (executable)
@@ -8,7 +8,7 @@ BEGIN {
 }
 
 use strict;
-use vars qw($Is_VMS $Is_W32 $Is_OS2 $Is_Cygwin $nonono $versiononly $depth);
+use vars qw($Is_VMS $Is_W32 $Is_OS2 $Is_Cygwin $nonono $dostrip $versiononly $depth);
 
 BEGIN {
     $Is_VMS = $^O eq 'VMS';
@@ -50,6 +50,7 @@ my $perl_verbase = defined($ENV{PERLNAME_VERBASE})
 
 while (@ARGV) {
     $nonono = 1 if $ARGV[0] eq '-n';
+    $dostrip = 1 if $ARGV[0] eq '-s';
     $versiononly = 1 if $ARGV[0] eq '-v';
     shift;
 }
@@ -196,7 +197,7 @@ elsif ($^O eq 'mpeix') {
 elsif ($^O ne 'dos') {
     safe_unlink("$installbin/$perl_verbase$ver$exe_ext");
     copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext");
-    strip("$installbin/$perl_verbase$ver$exe_ext") if $^O =~ /^(rhapsody)$/;
+    strip("$installbin/$perl_verbase$ver$exe_ext");
     chmod(0755, "$installbin/$perl_verbase$ver$exe_ext");
 }
 else {
@@ -259,9 +260,9 @@ foreach my $file (@corefiles) {
     # HP-UX (at least) needs to maintain execute permissions
     # on dynamically-loadable libraries. So we do it for all.
     if (copy_if_diff($file,"$installarchlib/CORE/$file")) {
-       if ($file =~ /\.(so|\Q$dlext\E)$/) {
+       if ($file =~ /\.(\Q$so\E|\Q$dlext\E)$/) {
            chmod(0555, "$installarchlib/CORE/$file");
-           strip("-S", "$installarchlib/CORE/$file") if $^O =~ /^(rhapsody)$/;
+           strip("-S", "$installarchlib/CORE/$file") if $^O =~ /^(rhapsody|darwin)$/;
        } else {
            chmod(0444, "$installarchlib/CORE/$file");
        }
@@ -651,6 +652,8 @@ sub strip
 {
     my(@args) = @_;
 
+    return unless $dostrip;
+
     my @opts;
     while (@args && $args[0] =~ /^(-\w+)$/) {
         push @opts, shift @args;
index 9e3ad52..ffe6af9 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -928,7 +928,7 @@ PP(pp_sselect)
     /* If SELECT_MIN_BITS is greater than one we most probably will want
      * to align the sizes with SELECT_MIN_BITS/8 because for example
      * in many little-endian (Intel, Alpha) systems (Linux, OS/2, Digital
-     * UNIX, Solaris, NeXT, Rhapsody) the smallest quantum select() operates
+     * UNIX, Solaris, NeXT, Darwin) the smallest quantum select() operates
      * on (sets/tests/clears bits) is 32 bits.  */
     growsize = maxlen + (SELECT_MIN_BITS/8 - (maxlen % (SELECT_MIN_BITS/8)));
 #  else