From: Rafael Garcia-Suarez Date: Sat, 12 Apr 2003 21:21:04 +0000 (+0000) Subject: Darwin/Rhapsody hints files updates by Wilfredo Sánchez X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=835bc3f3709faed7fcdc19f9e1d8703aa21e0355;p=p5sagit%2Fp5-mst-13.2.git Darwin/Rhapsody hints files updates by Wilfredo Sánchez p4raw-id: //depot/perl@19194 --- diff --git a/hints/darwin.sh b/hints/darwin.sh index 65cd322..cdb61b0 100644 --- a/hints/darwin.sh +++ b/hints/darwin.sh @@ -1,6 +1,6 @@ ## # Darwin (Mac OS) hints -# Wilfredo Sanchez +# Wilfredo Sanchez ## ## @@ -19,22 +19,21 @@ case "$prefix" in # Default install; use non-system directories prefix='/usr/local'; # Built-in perl uses /usr siteprefix='/usr/local'; - vendorprefix='/usr/local'; usevendorprefix='define'; + vendorprefix='/usr'; usevendorprefix='define'; # Where to put modules. - privlib="/Library/Perl/${version}"; # Built-in perl uses /System/Library/Perl - sitelib="/Library/Perl/${version}"; - vendorlib="/Network/Library/Perl/${version}"; + sitelib="/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. - privlib="/System/Library/Perl/${version}"; - sitelib="/Library/Perl/${version}"; - vendorlib="/Network/Library/Perl/${version}"; + sitelib="/Library/Perl/${version}"; # FIXME: Want "/Network/Perl/${version}" also + vendorlib="/System/Library/Perl/${version}"; # Apple-supplied modules ;; esac @@ -66,7 +65,6 @@ else optimize='-O3' fi - # -pipe: makes compilation go faster. # -fno-common because common symbols are not allowed in MH_DYLIB ccflags="${ccflags} -pipe -fno-common" @@ -96,12 +94,12 @@ case "$(grep '^#define INT32_MIN' /usr/include/stdint.h)" in *-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; esac -# cppflags='-traditional-cpp'; # Avoid Apple's cpp precompiler, better for extensions cppflags="${cppflags} -no-cpp-precomp" -# and ccflags needs them as well since we don't use cpp directly -# -- If this is necessary, it's a bug. -wsv -ccflags="${ccflags} -no-cpp-precomp" + +# This is necessary because perl's build system doesn't +# apply cppflags to cc compile lines as it should. +ccflags="${ccflags} ${cppflags}" # Known optimizer problems. case "`cc -v 2>&1`" in @@ -134,19 +132,10 @@ usevfork='true'; # malloc works usemymalloc='n'; -## -# Build process -## - # Locales aren't feeling well. LC_ALL=C; export LC_ALL; LANG=C; export LANG; -# Case-insensitive filesystems don't get along with Makefile and -# makefile in the same place. Since Darwin uses GNU make, this dodges -# the problem. -firstmakefile=GNUmakefile; - # # The libraries are not threadsafe as of OS X 10.1. # @@ -169,3 +158,12 @@ EOM esac 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 +# the problem. +firstmakefile=GNUmakefile; diff --git a/hints/rhapsody.sh b/hints/rhapsody.sh index 96d57f2..d12afec 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,38 @@ libc='/System/Library/Frameworks/System.framework/System'; # Optimize. optimize='-O3'; -# XXX Unclear why we require -pipe and -fno-common here. +# -pipe: makes compilation go faster. +# -fno-common because common symbols are not allowed in MH_DYLIB ccflags="${ccflags} -pipe -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. @@ -71,6 +108,29 @@ usevfork='true'; # malloc works usemymalloc='n'; +# +# 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 # the problem.