# See Porting/pumpkin.pod for more information on metaconfig.
#
-# Generated on Thu Feb 16 16:57:30 CET 2012 [metaconfig 3.5 PL0]
+# Generated on Sun Apr 1 12:00:35 CEST 2012 [metaconfig 3.5 PL0]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
ccdlflags=''
dlsrc=''
ld=''
+ld_can_script=''
lddlflags=''
usedl=''
doublesize=''
while other systems (such as those using ELF) use $cc.
EOM
- case "$ld" in
- '') $cat >try.c <<EOM
+
+: Determine if this is ELF
+ $cat >try.c <<EOM
/* Test for whether ELF binaries are produced */
#include <fcntl.h>
#$i_stdlib I_STDLIB
if(i == -1)
exit(1); /* fail */
if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
- exit(0); /* succeed (yes, it's ELF) */
+ exit(0); /* succeed (yes, it is ELF) */
else
exit(1); /* fail */
}
EOM
- if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
+ if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
+ bin_ELF="$define"
+ fi
+ $rm_try
+
+ case "$ld" in
+ '') if $test $bin_ELF = "$define"; then
cat <<EOM
You appear to have ELF support. I'll use $cc to build dynamic libraries.
EOM
dflt="$cc"
- bin_ELF="$define"
else
echo "I'll use ld to build dynamic libraries."
dflt='ld'
fi
- $rm_try
;;
*) dflt="$ld"
;;
;;
esac
+ld_can_script="$undef"
+case "$bin_ELF$usedl" in
+$define$define)
+ # Abuse try.h and a.out names for neat cleanup
+ $cat >try.c <<EOM
+void foo() {}
+void bar() {}
+EOM
+ $cat >try.h <<EOM
+LIBTEST_42 {
+ global:
+ foo;
+ local: *;
+ };
+EOM
+ if $cc $cccdlflags $ccdlflags $ccflags \
+ $ldflags $lddlflags -o a.out try.c \
+ -Wl,--version-script=try.h >/dev/null 2>&1 \
+ && $test -s a.out ; then
+ echo "ld supports scripting" >&4
+ ld_can_script="$define"
+ else
+ echo "ld does not support scripting" >&4
+ fi
+ $rm_try
+ ;;
+esac
+
: Do we want a shared libperl?
also=''
case "$usedl" in
val=$undef
set try
-if eval $compile_ok; then
+if eval $compile; then
if $run ./try; then
echo "You can use sysctl with KERN_PROC_PATHNAME to find the executing program." >&4
val="$define"
val=$undef
set try
-if eval $compile_ok; then
+if eval $compile; then
if $run ./try; then
echo "You can use _NSGetExecutablePath to find the executing program." >&4
val="$define"
EOSH
chmod +x Cppsym.try
$eunicefix Cppsym.try
-./Cppsym < Cppsym.know > Cppsym.true
+./Cppsym < Cppsym.know | $sort | $uniq > Cppsym.true
: Add in any linux cpp "predefined macros":
case "$osname::$gccversion" in
*linux*::*.*|*gnukfreebsd*::*.*|gnu::*.*)
tHdrH=_tmpHdr
rm -f $tHdrH'.h' $tHdrH
touch $tHdrH'.h'
+ # Filter out macro arguments, such as Linux's __INT8_C(c)
if $cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
- sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
+ sed -e 's/#define[\ \ ]*//;s/[\ \ ].*$//' -e 's/(.*//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
if [ -s $tHdrH'_cppsym.real' ]; then
cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
fi
known_extensions='$known_extensions'
ksh='$ksh'
ld='$ld'
+ld_can_script='$ld_can_script'
lddlflags='$lddlflags'
ldflags='$ldflags'
ldflags_uselargefiles='$ldflags_uselargefiles'