Commit | Line | Data |
43051805 |
1 | # hints/openbsd.sh |
2 | # |
3 | # hints file for OpenBSD; Todd Miller <millert@openbsd.org> |
4 | # Edited to allow Configure command-line overrides by |
1973dd96 |
5 | # Andy Dougherty <doughera@lafayette.edu> |
43051805 |
6 | # |
c347f277 |
7 | # To build with distribution paths, use: |
48827ca2 |
8 | # ./Configure -des -Dopenbsd_distribution=defined |
c347f277 |
9 | # |
43051805 |
10 | |
11 | # OpenBSD has a better malloc than perl... |
12 | test "$usemymalloc" || usemymalloc='n' |
13 | |
da0b61dd |
14 | # malloc wrap works |
15 | case "$usemallocwrap" in |
16 | '') usemallocwrap='define' ;; |
17 | esac |
18 | |
35356583 |
19 | # Currently, vfork(2) is not a real win over fork(2). |
20 | usevfork="$undef" |
43051805 |
21 | |
35356583 |
22 | # In OpenBSD < 3.3, the setre?[ug]id() are emulated using the |
23 | # _POSIX_SAVED_IDS functionality which does not have the same |
24 | # semantics as 4.3BSD. Starting with OpenBSD 3.3, the original |
25 | # semantics have been restored. |
26 | case "$osvers" in |
27 | [0-2].*|3.[0-2]) |
28 | d_setregid=$undef |
29 | d_setreuid=$undef |
30 | d_setrgid=$undef |
31 | d_setruid=$undef |
32 | esac |
43051805 |
33 | |
34 | # |
48827ca2 |
35 | # Not all platforms support dynamic loading... |
e9c1fd70 |
36 | # For the case of "$openbsd_distribution", the hints file |
37 | # needs to know whether we are using dynamic loading so that |
38 | # it can set the libperl name appropriately. |
39 | # Allow command line overrides. |
43051805 |
40 | # |
5c75dbfa |
41 | ARCH=`arch | sed 's/^OpenBSD.//'` |
42 | case "${ARCH}-${osvers}" in |
35356583 |
43 | alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-*|hppa-*|vax-*) |
e9c1fd70 |
44 | test -z "$usedl" && usedl=$undef |
43051805 |
45 | ;; |
46 | *) |
e9c1fd70 |
47 | test -z "$usedl" && usedl=$define |
5c75dbfa |
48 | # We use -fPIC here because -fpic is *NOT* enough for some of the |
43051805 |
49 | # extensions like Tk on some OpenBSD platforms (ie: sparc) |
50 | cccdlflags="-DPIC -fPIC $cccdlflags" |
154d43cb |
51 | case "$osvers" in |
52 | [01].*|2.[0-7]|2.[0-7].*) |
53 | lddlflags="-Bshareable $lddlflags" |
54 | ;; |
5c75dbfa |
55 | 2.[8-9]|3.0) |
154d43cb |
56 | ld=${cc:-cc} |
eb9cd59d |
57 | lddlflags="-shared -fPIC $lddlflags" |
154d43cb |
58 | ;; |
5c75dbfa |
59 | *) # from 3.1 onwards |
60 | ld=${cc:-cc} |
61 | lddlflags="-shared -fPIC $lddlflags" |
62 | libswanted=`echo $libswanted | sed 's/ dl / /'` |
63 | ;; |
154d43cb |
64 | esac |
29b55857 |
65 | |
66 | # We need to force ld to export symbols on ELF platforms. |
67 | # Without this, dlopen() is crippled. |
68 | ELF=`${cc:-cc} -dM -E - </dev/null | grep __ELF__` |
69 | test -n "$ELF" && ldflags="-Wl,-E $ldflags" |
43051805 |
70 | ;; |
71 | esac |
72 | |
1528c3db |
73 | # |
74 | # Tweaks for various versions of OpenBSD |
75 | # |
76 | case "$osvers" in |
77 | 2.5) |
78 | # OpenBSD 2.5 has broken odbm support |
79 | i_dbm=$undef |
80 | ;; |
81 | esac |
82 | |
43051805 |
83 | # OpenBSD doesn't need libcrypt but many folks keep a stub lib |
84 | # around for old NetBSD binaries. |
85 | libswanted=`echo $libswanted | sed 's/ crypt / /'` |
86 | |
43051805 |
87 | # Configure can't figure this out non-interactively |
1528c3db |
88 | d_suidsafe=$define |
43051805 |
89 | |
90 | # cc is gcc so we can do better than -O |
91 | # Allow a command-line override, such as -Doptimize=-g |
5c75dbfa |
92 | case ${ARCH} in |
1bd427d5 |
93 | m88k) |
94 | optimize='-O0' |
95 | ;; |
35356583 |
96 | hppa) |
97 | optimize='-O0' |
98 | ;; |
1bd427d5 |
99 | *) |
100 | test "$optimize" || optimize='-O2' |
101 | ;; |
102 | esac |
43051805 |
103 | |
619ffc2b |
104 | # This script UU/usethreads.cbu will get 'called-back' by Configure |
105 | # after it has prompted the user for whether to use threads. |
106 | cat > UU/usethreads.cbu <<'EOCBU' |
107 | case "$usethreads" in |
108 | $define|true|[yY]*) |
109 | # any openbsd version dependencies with pthreads? |
34163b21 |
110 | ccflags="-pthread $ccflags" |
111 | ldflags="-pthread $ldflags" |
1ac0c030 |
112 | case "$osvers" in |
113 | [0-2].*|3.[0-2]) |
114 | # Change from -lc to -lc_r |
115 | set `echo "X $libswanted " | sed 's/ c / c_r /'` |
116 | shift |
117 | libswanted="$*" |
118 | ;; |
119 | esac |
36e43f01 |
120 | case "$osvers" in |
d767353b |
121 | [012].*|3.[0-6]) |
122 | # Broken at least up to OpenBSD 3.6, we'll see about 3.7 |
36e43f01 |
123 | d_getservbyname_r=$undef ;; |
124 | esac |
619ffc2b |
125 | esac |
126 | EOCBU |
127 | |
cde16453 |
128 | # This script UU/use64bitint.cbu will get 'called-back' by Configure |
129 | # after it has prompted the user for whether to use 64-bitness. |
130 | cat > UU/use64bitint.cbu <<'EOCBU' |
131 | case "$use64bitint" in |
132 | $define|true|[yY]*) |
133 | echo " " |
134 | echo "Checking if your C library has broken 64-bit functions..." >&4 |
135 | $cat >check.c <<EOCP |
136 | #include <stdio.h> |
013ad2b3 |
137 | typedef $uquadtype myULL; |
cde16453 |
138 | int main (void) |
139 | { |
140 | struct { |
141 | double d; |
142 | myULL u; |
143 | } *p, test[] = { |
144 | {4294967303.15, 4294967303ULL}, |
145 | {4294967294.2, 4294967294ULL}, |
146 | {4294967295.7, 4294967295ULL}, |
147 | {0.0, 0ULL} |
148 | }; |
149 | for (p = test; p->u; p++) { |
150 | myULL x = (myULL)p->d; |
151 | if (x != p->u) { |
152 | printf("buggy\n"); |
153 | return 0; |
154 | } |
155 | } |
156 | printf("ok\n"); |
157 | return 0; |
158 | } |
159 | EOCP |
160 | set check |
161 | if eval $compile_ok; then |
162 | libcquad=`./check` |
163 | echo "Your C library's 64-bit functions are $libcquad." |
164 | else |
165 | echo "(I can't seem to compile the test program.)" |
166 | echo "Assuming that your C library's 64-bit functions are ok." |
167 | libcquad="ok" |
168 | fi |
169 | $rm -f check.c check |
170 | |
171 | case "$libcquad" in |
172 | buggy*) |
173 | cat >&4 <<EOM |
174 | |
175 | *** You have a C library with broken 64-bit functions. |
176 | *** 64-bit support does not work reliably in this configuration. |
013ad2b3 |
177 | *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits. |
cde16453 |
178 | *** Cannot continue, aborting. |
013ad2b3 |
179 | |
cde16453 |
180 | EOM |
181 | exit 1 |
182 | ;; |
183 | esac |
184 | esac |
185 | EOCBU |
186 | |
c347f277 |
187 | # When building in the OpenBSD tree we use different paths |
188 | # This is only part of the story, the rest comes from config.over |
189 | case "$openbsd_distribution" in |
48827ca2 |
190 | ''|$undef|false) ;; |
c347f277 |
191 | *) |
192 | # We put things in /usr, not /usr/local |
193 | prefix='/usr' |
194 | prefixexp='/usr' |
195 | sysman='/usr/share/man/man1' |
c347f277 |
196 | libpth='/usr/lib' |
48827ca2 |
197 | glibpth='/usr/lib' |
eb9cd59d |
198 | # Local things, however, do go in /usr/local |
199 | siteprefix='/usr/local' |
200 | siteprefixexp='/usr/local' |
48827ca2 |
201 | # Ports installs non-std libs in /usr/local/lib so look there too |
202 | locincpth='/usr/local/include' |
203 | loclibpth='/usr/local/lib' |
204 | # Link perl with shared libperl |
205 | if [ "$usedl" = "$define" -a -r shlib_version ]; then |
206 | useshrplib=true |
207 | libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}` |
208 | fi |
c347f277 |
209 | ;; |
210 | esac |
211 | |
43051805 |
212 | # end |