00643ca2f9c0959b5461c2ee862f69022af9c0b1
[p5sagit/p5-mst-13.2.git] / hints / linux.sh
1 # hints/linux.sh
2 # Original version by rsanders
3 # Additional support by Kenneth Albanowski <kjahds@kjahds.com>
4 #
5 # ELF support by H.J. Lu <hjl@nynexst.com>
6 # Additional info from Nigel Head <nhead@ESOC.bitnet>
7 # and Kenneth Albanowski <kjahds@kjahds.com>
8 #
9 # Consolidated by Andy Dougherty <doughera@lafcol.lafayette.edu>
10 #
11 # Last updated Thu Apr  6 12:22:03 EDT 1995
12 #
13 # If you wish to use something other than 'gcc' for your compiler,
14 # you should specify it on the Configure command line.  To use
15 # gcc-elf, for exmample, type 
16 # ./Configure -Dcc=gcc-elf
17
18 # perl goes into the /usr tree.  See the Filesystem Standard
19 # available via anonymous FTP at tsx-11.mit.edu in
20 # /pub/linux/docs/linux-standards/fsstnd.
21 # This used to be
22 # bin='/usr/bin'
23 # but it doesn't seem sensible to put the binary in /usr and all the
24 # rest of the support stuff (lib, man pages) into /usr/local.
25 # However, allow a command line override, e.g. Configure -Dprefix=/foo/bar
26 case "$prefix" in
27 '') prefix='/usr' ;;
28 esac
29
30 # Perl expects BSD style signal handling.
31 # gcc defines _G_HAVE_BOOL to 1, but doesn't actually supply bool.
32 ccflags="-D__USE_BSD_SIGNAL -Dbool=char -DHAS_BOOL $ccflags"
33
34 # The following functions are gcc built-ins, but the Configure tests
35 # may fail because it doesn't supply a proper prototype.
36 d_memcmp=define
37 d_memcpy=define
38
39 # Configure may fail to find lstat() since it's a static/inline
40 # function in <sys/stat.h>.
41 d_lstat=define
42
43 d_dosuid='define'
44
45 malloctype='void *'
46 usemymalloc='n'
47
48 case "$optimize" in
49 '') optimize='-O2' ;;
50 esac
51
52 # Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
53 # for this test.
54 cat >try.c <<'EOM'
55 /* Test for whether ELF binaries are produced */
56 #include <fcntl.h>
57 #include <stdlib.h>
58 main() {
59         char buffer[4];
60         int i=open("a.out",O_RDONLY);
61         if(i==-1)
62                 exit(1); /* fail */
63         if(read(i,&buffer[0],4)<4)
64                 exit(1); /* fail */
65         if(buffer[0] != 127 || buffer[1] != 'E' ||
66            buffer[2] != 'L' || buffer[3] != 'F')
67                 exit(1); /* fail */
68         exit(0); /* succeed (yes, it's ELF) */
69 }
70 EOM
71 if ${cc:-gcc} try.c >/dev/null 2>&1 && ./a.out; then
72     cat <<'EOM'
73
74 You appear to have ELF support.  I'll try to use it for dynamic loading.
75 EOM
76     # Configure now handles these automatically.
77 else
78     echo "You don't have an ELF gcc, using dld if available."
79     # We might possibly have a version of DLD around.
80     lddlflags="-r $lddlflags"
81     # These empty values are so that Configure doesn't put in the
82     # Linux ELF values.
83     ccdlflags=' '
84     cccdlflags=' '
85     so='sa'
86     dlext='o'
87     ## If you are using DLD 3.2.4 which does not support shared libs,
88     ## uncomment the next two lines:
89     #ldflags="-static"
90     #so='none'
91 fi
92 rm -rf try.c a.out
93
94 cat <<'EOM'
95
96 You should take a look at hints/linux.sh. There are a some lines you
97 may wish to change.
98 EOM
99
100 # And -- reported by one user:
101 # We need to get -lc away from the link lines.
102 # If we leave it there we get SEGV from miniperl during the build.
103 # This may have to do with bugs in the pre-release version of libc for ELF.
104 # Uncomment the next two lines to remove -lc from the link line.
105 # set `echo " $libswanted " | sed -e 's@ c @ @'`
106 # libswanted="$*"