X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fdarwin.sh;h=d5e27a593e9e38d5136695e71352965952787b30;hb=8f4f83badb7d1ba9fbdc45673bc7277e7619b775;hp=bf5e487751b6c54a6ab1972a61c18886c90d6b4a;hpb=437cf18808fc508c7e03cae0f2d2beec3d718651;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/darwin.sh b/hints/darwin.sh index bf5e487..d5e27a5 100644 --- a/hints/darwin.sh +++ b/hints/darwin.sh @@ -8,19 +8,33 @@ ## # BSD paths -prefix='/usr'; -siteprefix='/usr/local'; -vendorprefix='/usr/local'; usevendorprefix='define'; - -# 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'; -vendorlib='/Network/Library/Perl'; +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'; + + # 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. + 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 @@ -32,17 +46,41 @@ archname='darwin'; # nm works. usenm='true'; -# Libc is in libsystem. -libc='/System/Library/Frameworks/System.framework/System'; - # Optimize. -optimize='-O3'; - -# We have a prototype for telldir. -ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE"; - -# For Errno. -cppflags='-traditional-cpp'; +if [ "x$optimize" = 'x' ]; then + optimize='-O3' +fi + +# -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: +# +# # 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 +# +ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" + +# cppflags='-traditional-cpp'; +# avoid Apple's cpp precompiler, better for extensions +cppflags="${cppflags} -no-cpp-precomp" # Shared library extension is .dylib. # Bundle extension is .bundle. @@ -51,6 +89,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'; @@ -71,8 +116,26 @@ usemymalloc='n'; # Locales aren't feeling well. LC_ALL=C; export LC_ALL; +LANG=C; export LANG; -# HFS+ will throw "make depend" into confusion since -# Makefile and makefile are the same. +# 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. +# Better stop now. +# +# Fix when Apple fixes libc. +# +case "$usethreads$useithreads$use5005threads" in +*define*) +cat <&4 + +*** You do not have threadsafe libraries, I cannot use threads. +*** Cannot continue, aborting. +EOM + exit 1 + ;; +esac