X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fdarwin.sh;h=518af30026977e366d4120b87b687975f7a75bb6;hb=416e7255471199e449f09747b8a3f428fc8e2bb5;hp=da34d65f96e4eae84d0b9700f12a3aa391d341d4;hpb=23131aa47a1f039c7b6f6bb5dd48b8406773ecac;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/darwin.sh b/hints/darwin.sh index da34d65..518af30 100644 --- a/hints/darwin.sh +++ b/hints/darwin.sh @@ -9,24 +9,33 @@ # BSD paths 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'; - # 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. + privlib='/Library/Perl'; # Built-in perl uses /System/Library/Perl + sitelib='/Library/Perl'; + vendorlib='/Network/Library/Perl'; + ;; +'/usr') + # We are building/replacing the built-in perl + siteprefix='/usr/local'; + vendorprefix='/usr/local'; usevendorprefix='define'; # Where to put modules. - # Built-in perl uses /System/Library/Perl - privlib='/Library/Perl'; + privlib='/System/Library/Perl'; sitelib='/Library/Perl'; vendorlib='/Network/Library/Perl'; ;; esac +# 4BSD uses ${prefix}/share/man, not ${prefix}/man. +man1dir="${prefix}/share/man/man1"; +man3dir="${prefix}/share/man/man3"; + ## # Tool chain settings ## @@ -37,15 +46,17 @@ archname='darwin'; # nm works. usenm='true'; -# Libc is in libsystem. -#libc='/usr/lib/libSystem.dylib'; - # Optimize. if [ "x$optimize" = 'x' ]; then optimize='-O3' fi -# XXX Unclear why we require -pipe and -fno-common here. +# -pipe: makes compilation go faster. +# -fno-common: we don't like commons. Common symbols are not allowed +# in MH_DYLIB binaries, which is what libperl.dylib is. You will fail +# to link without that option, unless you otherwise eliminate all commons +# by, for example, initializing all globals. +# --Fred Sánchez ccflags="${ccflags} -pipe -fno-common" # At least on Darwin 1.3.x: @@ -67,8 +78,16 @@ ccflags="${ccflags} -pipe -fno-common" # ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" -# cpp-precomp is problematic. -cppflags='-traditional-cpp'; +# cppflags='-traditional-cpp'; +# avoid Apple's cpp precompiler, better for extensions +cppflags="${cppflags} -no-cpp-precomp" +# and ccflags needs them aswell since we don't use cpp directly +ccflags="${ccflags} -no-cpp-precomp" + +# Known optimizer problems. +case "`cc -v 2>&1`" in +*"3.1 20020105"*) toke_cflags='optimize=""' ;; +esac # Shared library extension is .dylib. # Bundle extension is .bundle. @@ -77,6 +96,13 @@ so='dylib'; dlext='bundle'; dlsrc='dl_dyld.xs'; usedl='define'; cccdlflags=' '; # space, not empty, because otherwise we get -fpic +# ldflag: -flat_namespace is only available since OS X 10.1 (Darwin 1.4.1) +# - but not in 10.0.x (Darwin 1.3.x) +# -- Kay Roepke +case "$osvers" in +1.[0-3].*) ;; +*) ldflags="${ldflags} -flat_namespace" ;; +esac lddlflags="${ldflags} -bundle -undefined suppress"; ldlibpthname='DYLD_LIBRARY_PATH'; useshrplib='true'; @@ -97,8 +123,26 @@ usemymalloc='n'; # 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. +# +# Fix when Apple fixes libc. +# +case "$usethreads$useithreads$use5005threads" 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