X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Frhapsody.sh;h=6151e7858d136fb54d39f2d95e0d04d2374ab933;hb=2c7d6b9cd25b3389315952363d5b645ced967d61;hp=7f652234c779f211df862b68e132b8e721a6a4ae;hpb=8f1f23e8b15dc90b39e5be39711437f27f72b526;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/rhapsody.sh b/hints/rhapsody.sh index 7f65223..6151e78 100644 --- a/hints/rhapsody.sh +++ b/hints/rhapsody.sh @@ -1,54 +1,138 @@ ## # Rhapsody (Mac OS X Server) hints -# Wilfredo Sanchez +# Wilfredo Sanchez ## -# Since we can build fat, the archname doesn't need the processor type -archname='rhapsody'; +## +# Paths +## -# Perl5.003 precedes this platform -d_bincompat3='undef'; +# 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}" -# Libc is in libsystem. -libc='/System/Library/Frameworks/System.framework/System'; +# BSD paths +case "$prefix" in + '') + # 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 + +## +# 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__"; +# -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 -# Don't use /usr/local/lib; we may have junk there. -libpth='/lib /usr/lib'; +# cpp-precomp is problematic. +cppflags='${cppflags} -traditional-cpp'; -# Shared library extension in .dylib. -# Bundle extension in .bundle. +# 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. 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'; +# 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 +# the problem. +firstmakefile=GNUmakefile;