X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Frhapsody.sh;h=6151e7858d136fb54d39f2d95e0d04d2374ab933;hb=2c7d6b9cd25b3389315952363d5b645ced967d61;hp=96d57f241260e334b53bcb363e1c2cb227aac8c2;hpb=0ac8ade191a3daa1a2b035aa05120c2c33501d50;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/rhapsody.sh b/hints/rhapsody.sh index 96d57f2..6151e78 100644 --- a/hints/rhapsody.sh +++ b/hints/rhapsody.sh @@ -1,30 +1,40 @@ ## # Rhapsody (Mac OS X Server) hints -# Wilfredo Sanchez +# Wilfredo Sanchez ## ## # Paths ## +# Configure hasn't figured out the version number yet. Bummer. +perl_revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $src/patchlevel.h` +perl_version=`awk '/define[ ]+PERL_VERSION/ {print $3}' $src/patchlevel.h` +perl_subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h` +version="${perl_revision}.${perl_version}.${perl_subversion}" + # BSD paths case "$prefix" in -'') - prefix='/usr/local'; # Built-in perl uses /usr - siteprefix='/usr/local'; - vendorprefix='/usr/local'; usevendorprefix='define'; - - # 4BSD uses ${prefix}/share/man, not ${prefix}/man. - # Don't put man pages in ${prefix}/lib; that's goofy. - man1dir="${prefix}/share/man/man1"; - man3dir="${prefix}/share/man/man3"; - - # Where to put modules. - # Built-in perl uses /System/Library/Perl - privlib='/Local/Library/Perl'; - sitelib='/Local/Library/Perl'; - vendorlib='/Network/Library/Perl'; - ;; + '') + # Default install; use non-system directories + prefix='/usr/local'; # Built-in perl uses /usr + siteprefix='/usr/local'; + vendorprefix='/usr'; usevendorprefix='define'; + + # Where to put modules. + sitelib="/Local/Library/Perl/${version}"; # FIXME: Want "/Network/Perl/${version}" also + vendorlib="/System/Library/Perl/${version}"; # Apple-supplied modules + ;; + + '/usr') + # We are building/replacing the built-in perl + siteprefix='/usr/local'; + vendorprefix='/usr/local'; usevendorprefix='define'; + + # Where to put modules. + sitelib="/Local/Library/Perl/${version}"; # FIXME: Want "/Network/Perl/${version}" also + vendorlib="/System/Library/Perl/${version}"; # Apple-supplied modules + ;; esac ## @@ -43,11 +53,37 @@ libc='/System/Library/Frameworks/System.framework/System'; # Optimize. optimize='-O3'; -# XXX Unclear why we require -pipe and -fno-common here. -ccflags="${ccflags} -pipe -fno-common" +# -fno-common because common symbols are not allowed in MH_DYLIB +ccflags="${ccflags} -fno-common" + +# Unverified whether this is necessary on Rhapsody, but the test shouldn't hurt. +# At least on Darwin 1.3.x: +# +# # define INT32_MIN -2147483648 +# int main () { +# double a = INT32_MIN; +# printf ("INT32_MIN=%g\n", a); +# return 0; +# } +# will output: +# INT32_MIN=2.14748e+09 +# Note that the INT32_MIN has become positive. +# INT32_MIN is set in /usr/include/stdint.h by: +# #define INT32_MIN -2147483648 +# which seems to break the gcc. Defining INT32_MIN as (-2147483647-1) +# seems to work. INT64_MIN seems to be similarly broken. +# -- Nicholas Clark, Ken Williams, and Edward Moy +# +case "$(grep '^#define INT32_MIN' /usr/include/stdint.h)" in + *-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; +esac # cpp-precomp is problematic. -cppflags='-traditional-cpp'; +cppflags='${cppflags} -traditional-cpp'; + +# This is necessary because perl's build system doesn't +# apply cppflags to cc compile lines as it should. +ccflags="${ccflags} ${cppflags}" # Shared library extension is .dylib. # Bundle extension is .bundle. @@ -68,8 +104,33 @@ useshrplib='true'; # vfork works usevfork='true'; -# malloc works -usemymalloc='n'; +# our malloc works (but allow users to override) +case "$usemymalloc" in +'') usemymalloc='n' ;; +esac + +# +# The libraries are not threadsafe in Rhapsody +# +# Fix when Apple fixes libc. +# +case "$usethreads$useithreads" in + *define*) + cat <&4 + + + +*** Warning, there might be problems with your libraries with +*** regards to threading. The test ext/threads/t/libc.t is likely +*** to fail. + +EOM + ;; +esac + +## +# Build process +## # Case-insensitive filesystems don't get along with Makefile and # makefile in the same place. Since Darwin uses GNU make, this dodges