g++/Tru64: got perl linking once got the linkage right
Jarkko Hietaniemi [Fri, 18 Aug 2006 13:03:17 +0000 (16:03 +0300)]
Message-Id: <200608181003.k7IA3Hso276655@kosh.hut.fi>

p4raw-id: //depot/perl@28741

hints/dec_osf.sh
perl.h
pp_sys.c

index c0f2bfc..336e0ef 100644 (file)
@@ -163,6 +163,11 @@ ccflags="$ccflags $_ccflags_strict_ansi"
 
 # g++ needs a lot of definitions to see the same set of
 # prototypes from <unistd.h> et alia as cxx/cc see.
+# Note that we cannot define _XOPEN_SOURCE_EXTENDED or
+# its moral equivalent, _XOPEN_SOURCE=500 (which would
+# define a lot of the required prototypes for us), because
+# the gcc-processed version of <sys/wait.h> contains fatally
+# conflicting prototypes for wait3().
 case "$cc" in
 *g++*) ccflags="$ccflags -D_XOPEN_SOURCE -D_OSF_SOURCE -D_AES_SOURCE -D_BSD -D_POSIX_C_SOURCE=199309L -D_POSIX_PII_SOCKET" ;;
 esac
diff --git a/perl.h b/perl.h
index b2b9a9c..7d7e257 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1150,6 +1150,13 @@ int sockatmark(int);
 # endif
 #endif
 
+#if defined(__osf__) && defined(__cplusplus) && !defined(_XOPEN_SOURCE_EXTENDED)
+EXTERN_C int fchdir(int);
+EXTERN_C int flock(int, int);
+EXTERN_C int fseeko(FILE *, off_t, int);
+EXTERN_C off_t ftello(FILE *);
+#endif
+
 #ifdef SETERRNO
 # undef SETERRNO  /* SOCKS might have defined this */
 #endif
index 909f5f7..9591410 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -197,11 +197,6 @@ void setservent(int);
 void endservent(void);
 #endif
 
-#if defined(__osf__) && defined(__cplusplus) && !defined(_XOPEN_SOURCE_EXTENDED)
-extern int readlink(const char *, char *, size_t);
-extern int fchdir(int);
-#endif
-
 #undef PERL_EFF_ACCESS /* EFFective uid/gid ACCESS */
 
 /* AIX 5.2 and below use mktime for localtime, and defines the edge case