書き忘れたこと。

古いAIXの環境を考慮して、dlopenとか使わない方向にしてあります。というわけで現状の差異。なんと言ってもこれでやっとスタート地点。

Index: common.mk
===================================================================
RCS file: /src/ruby/common.mk,v
retrieving revision 1.13.2.6
diff -u -r1.13.2.6 common.mk
--- common.mk   13 Feb 2006 14:22:56 -0000      1.13.2.6
+++ common.mk   6 Aug 2006 23:21:53 -0000
@@ -66,16 +66,16 @@

 $(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)

-$(LIBRUBY_A):  $(OBJS) $(DMYEXT)
+$(LIBRUBY_A):  $(OBJS) $(DMYEXT) $(ARCHFILE)

-$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(ARCHFILE)
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP)

 $(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
        @$(RM) $@
        $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)

-ruby.imp: $(LIBRUBY_A)
-       @$(NM) -Pgp $(LIBRUBY_A) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@
+ruby.imp: $(OBJS)
+       @$(NM) -Pgp $(OBJS) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@

 install: install-nodoc $(RDOCTARGET)
 install-all: install-nodoc install-doc
@@ -112,6 +112,8 @@

 pre-install: pre-install-local pre-install-ext
 pre-install-local:: PHONY
+       $(RM) $(prefix)/lib/$(LIBRUBY)
+       $(RM) -r $(prefix)/lib/ruby/$(MAJOR).$(MINOR)/$(arch)
 pre-install-ext:: PHONY
 pre-install-doc:: PHONY

Index: configure.in
===================================================================
RCS file: /src/ruby/configure.in,v
retrieving revision 1.212.2.58
diff -u -r1.212.2.58 configure.in
--- configure.in        26 Jul 2006 13:28:17 -0000      1.212.2.58
+++ configure.in        6 Aug 2006 23:21:53 -0000
@@ -993,16 +993,20 @@
                        : ${LDFLAGS=""}
                        : ${LIBPATHENV=DYLD_LIBRARY_PATH}
                        rb_cv_dlopen=yes ;;
-       aix*)           : ${LDSHARED='/usr/ccs/bin/ld'}
-                       XLDFLAGS="$XLDFLAGS -Wl,-bE:ruby.imp"
-                       DLDFLAGS='-brtl -eInit_$(TARGET) -bI:$(topdir)/ruby.imp -bM:SRE -T512 -H512 '"$DLDFLAGS"
-                       LDFLAGS="-brtl $LDFLAGS"
-                       : ${ARCHFILE="ruby.imp"}
-                       TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS) $(CFLAGS)'
-                       TRY_LINK="$TRY_LINK"' $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
-                       : ${LIBPATHENV=SHLIB_PATH}
-                       rb_cv_dlopen=yes ;;
-
+        aix*)           if test "$GCC" = yes; then
+                           : ${LDSHARED='gcc -shared'}
+                           DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
+                           LDFLAGS='-Wl,-brtl -Wl,-bE:ruby.imp'
+                        else
+                          : ${LDSHARED='/usr/ccs/bin/ld'}
+                          DLDFLAGS='-G -eInit_$(TARGET)'
+                          LDFLAGS="-brtl -bE:ruby.imp"
+                        fi
+                        : ${ARCHFILE="ruby.imp"}
+                        TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
+                        TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
+                        : ${LIBPATHENV=SHLIB_PATH}
+                        rb_cv_dlopen=yes ;;
        human*)         : ${DLDFLAGS=''}
                        : ${LDSHARED=''}
                        : ${LDFLAGS=''}
@@ -1305,12 +1309,12 @@
     aix*)
        if test "$GCC" = yes; then
            LIBRUBY_LDSHARED='$(CC) -shared'
-           LIBRUBY_DLDFLAGS='-Wl,-bE:ruby.imp'
+           LIBRUBY_DLDFLAGS='-Wl,-G -Wl,-bE:ruby.imp -Wl,-bnoentry'
        else
            LIBRUBY_LDSHARED='/usr/ccs/bin/ld'
-           LIBRUBY_DLDFLAGS='-bE:ruby.imp -bM:SRE -bnoentry'
+           LIBRUBY_DLDFLAGS='-G -bE:ruby.imp -bnoentry'
        fi
-       LIBRUBYARG_SHARED='-L${libdir} -Wl,lib$(RUBY_SO_NAME).so'
+       LIBRUBYARG_SHARED='-L${libdir} -lruby'
        SOLIBS='-lm -lc'
        ;;
     beos*)
Index: dln.c
===================================================================
RCS file: /src/ruby/dln.c,v
retrieving revision 1.59.2.9
diff -u -r1.59.2.9 dln.c
--- dln.c       25 Jan 2006 13:30:10 -0000      1.59.2.9
+++ dln.c       6 Aug 2006 23:21:53 -0000
@@ -27,10 +27,6 @@
 char *dln_argv0;
 #endif

-#ifdef _AIX
-#pragma alloca
-#endif
-
 #if defined(HAVE_ALLOCA_H)
 #include <alloca.h>
 #endif
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.616.2.189
diff -u -r1.616.2.189 eval.c
--- eval.c      1 Aug 2006 03:25:14 -0000       1.616.2.189
+++ eval.c      6 Aug 2006 23:21:53 -0000
@@ -53,9 +53,7 @@
 # ifdef HAVE_ALLOCA_H
 #  include <alloca.h>
 # else
-#  ifdef _AIX
- #pragma alloca
-#  else
+#  ifndef _AIX
 #   ifndef alloca /* predefined by HP cc +Olibcalls */
 void *alloca ();
 #   endif
Index: gc.c
===================================================================
RCS file: /src/ruby/gc.c,v
retrieving revision 1.168.2.43
diff -u -r1.168.2.43 gc.c
--- gc.c        14 Jul 2006 17:12:47 -0000      1.168.2.43
+++ gc.c        6 Aug 2006 23:21:53 -0000
@@ -66,9 +66,7 @@
 # ifdef HAVE_ALLOCA_H
 #  include <alloca.h>
 # else
-#  ifdef _AIX
- #pragma alloca
-#  else
+#  ifndef _AIX
 #   ifndef alloca /* predefined by HP cc +Olibcalls */
 void *alloca ();
 #   endif
Index: regex.c
===================================================================
RCS file: /src/ruby/Attic/regex.c,v
retrieving revision 1.96.2.8
diff -u -r1.96.2.8 regex.c
--- regex.c     24 Apr 2006 15:15:21 -0000      1.96.2.8
+++ regex.c     6 Aug 2006 23:21:53 -0000
@@ -84,16 +84,19 @@
 #  endif
 # endif /* atarist */
 #else
-# if defined(HAVE_ALLOCA_H)
+# ifdef HAVE_ALLOCA_H
 #  include <alloca.h>
-# elif !defined(alloca)
-char *alloca();
-# endif
-#endif /* __GNUC__ */
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca ();
+#   endif
+#  endif /* AIX */
+# endif /* HAVE_ALLOCA_H */

-#ifdef _AIX
-#pragma alloca
-#endif
+#endif /* __GNUC__ */

 #ifdef HAVE_STRING_H
 # include <string.h>
Index: ruby.h
===================================================================
RCS file: /src/ruby/ruby.h,v
retrieving revision 1.97.2.20
diff -u -r1.97.2.20 ruby.h
--- ruby.h      31 Jul 2006 06:34:10 -0000      1.97.2.20
+++ ruby.h      6 Aug 2006 23:21:53 -0000
@@ -65,10 +65,10 @@

 #if defined(HAVE_ALLOCA_H)
 #include <alloca.h>
-#endif
-
-#ifdef _AIX
+#else
+#  ifdef _AIX
 #pragma alloca
+#  endif
 #endif

 #if defined(__VMS)
Index: ext/bigdecimal/bigdecimal.c
===================================================================
RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v
retrieving revision 1.41.2.8
diff -u -r1.41.2.8 bigdecimal.c
--- ext/bigdecimal/bigdecimal.c 13 Jul 2006 15:42:59 -0000      1.41.2.8
+++ ext/bigdecimal/bigdecimal.c 6 Aug 2006 23:21:53 -0000
@@ -13,6 +13,7 @@
  *
  */

+#include "ruby.h"
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -20,7 +21,6 @@
 #include <errno.h>
 #include <float.h>
 #include <math.h>
-#include "ruby.h"
 #include "math.h"
 #include "version.h"

Index: ext/digest/rmd160/rmd160ossl.c
===================================================================
RCS file: /src/ruby/ext/digest/rmd160/rmd160ossl.c,v
retrieving revision 1.1
diff -u -r1.1 rmd160ossl.c
--- ext/digest/rmd160/rmd160ossl.c      26 Sep 2002 17:26:46 -0000      1.1
+++ ext/digest/rmd160/rmd160ossl.c      6 Aug 2006 23:21:53 -0000
@@ -1,7 +1,7 @@
 /* $Id: rmd160ossl.c,v 1.1 2002/09/26 17:26:46 knu Exp $ */

-#include "rmd160ossl.h"
 #include "defs.h"
+#include "rmd160ossl.h"
 #include <assert.h>
 #include <stdlib.h>

Index: ext/digest/sha1/sha1ossl.c
===================================================================
RCS file: /src/ruby/ext/digest/sha1/sha1ossl.c,v
retrieving revision 1.1
diff -u -r1.1 sha1ossl.c
--- ext/digest/sha1/sha1ossl.c  26 Sep 2002 17:44:33 -0000      1.1
+++ ext/digest/sha1/sha1ossl.c  6 Aug 2006 23:21:53 -0000
@@ -1,7 +1,7 @@
 /* $Id: sha1ossl.c,v 1.1 2002/09/26 17:44:33 knu Exp $ */

-#include "sha1ossl.h"
 #include "defs.h"
+#include "sha1ossl.h"
 #include <assert.h>
 #include <stdlib.h>

Index: ext/readline/readline.c
===================================================================
RCS file: /src/ruby/ext/readline/readline.c,v
retrieving revision 1.16.2.9
diff -u -r1.16.2.9 readline.c
--- ext/readline/readline.c     24 Jul 2006 06:55:26 -0000      1.16.2.9
+++ ext/readline/readline.c     6 Aug 2006 23:21:53 -0000
@@ -1,6 +1,7 @@
 /* readline.c -- GNU Readline module
    Copyright (C) 1997-2001  Shugo Maeda */

+#include "config.h"
 #include <errno.h>
 #include <stdio.h>
 #include <ctype.h>
Index: ext/socket/socket.c
===================================================================
RCS file: /src/ruby/ext/socket/socket.c,v
retrieving revision 1.108.2.52
diff -u -r1.108.2.52 socket.c
--- ext/socket/socket.c 21 Jun 2006 20:19:07 -0000      1.108.2.52
+++ ext/socket/socket.c 6 Aug 2006 23:21:54 -0000
@@ -195,6 +195,12 @@
 }
 #undef getaddrinfo
 #define getaddrinfo(node,serv,hints,res) ruby_getaddrinfo__aix((node),(serv),(hints),(res))
+#ifndef CMSG_SPACE
+# define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len))
+#endif
+#ifndef CMSG_LEN
+# define CMSG_LEN(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
+#endif
 #endif

 #ifdef HAVE_CLOSESOCKET