Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
71583c89
Commit
71583c89
authored
Aug 30, 2006
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
portability fix in BUILD/* for solaris
parent
4321eb12
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
179 additions
and
176 deletions
+179
-176
BUILD/check-cpu
BUILD/check-cpu
+179
-176
No files found.
BUILD/check-cpu
View file @
71583c89
...
...
@@ -3,203 +3,206 @@
# Check cpu of current machine and find the
# best compiler optimization flags for gcc
#
#
if
test
-r
/proc/cpuinfo
;
then
# on Linux (and others?) we can get detailed CPU information out of /proc
cpuinfo
=
"cat /proc/cpuinfo"
check_cpu
()
{
if
test
-r
/proc/cpuinfo
;
then
# on Linux (and others?) we can get detailed CPU information out of /proc
cpuinfo
=
"cat /proc/cpuinfo"
# detect CPU family
cpu_family
=
`
$cpuinfo
|
grep
'family'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
if
test
-z
"
$cpu_family
"
;
then
cpu_family
=
`
$cpuinfo
|
grep
'cpu'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
fi
# detect CPU family
cpu_family
=
`
$cpuinfo
|
grep
'family'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
if
test
-z
"
$cpu_family
"
;
then
cpu_family
=
`
$cpuinfo
|
grep
'cpu'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
fi
# detect CPU vendor and model
cpu_vendor
=
`
$cpuinfo
|
grep
'vendor_id'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
model_name
=
`
$cpuinfo
|
grep
'model name'
|
cut
-d
':'
-f
2 |
head
-1
`
if
test
-z
"
$model_name
"
;
then
model_name
=
`
$cpuinfo
|
grep
'cpu model'
|
cut
-d
':'
-f
2 |
head
-1
`
fi
# detect CPU vendor and model
cpu_vendor
=
`
$cpuinfo
|
grep
'vendor_id'
|
cut
-d
':'
-f
2 |
cut
-d
' '
-f
2 |
head
-1
`
model_name
=
`
$cpuinfo
|
grep
'model name'
|
cut
-d
':'
-f
2 |
head
-1
`
if
test
-z
"
$model_name
"
;
then
model_name
=
`
$cpuinfo
|
grep
'cpu model'
|
cut
-d
':'
-f
2 |
head
-1
`
fi
# fallback: get CPU model from uname output
if
test
-z
"
$model_name
"
;
then
model_name
=
`
uname
-m
`
fi
# fallback: get CPU model from uname output
if
test
-z
"
$model_name
"
;
then
model_name
=
`
uname
-m
`
# parse CPU flags
for
flag
in
`
$cpuinfo
|
grep
'^flags'
|
sed
-e
's/^flags.*: //'
`
;
do
eval
cpu_flag_
$flag
=
yes
done
else
# Fallback when there is no /proc/cpuinfo
case
"
`
uname
-s
`
"
in
FreeBSD|OpenBSD
)
cpu_family
=
`
uname
-m
`
;
model_name
=
`
sysctl
-n
hw.model
`
;;
Darwin
)
cpu_family
=
`
uname
-p
`
model_name
=
`
machine
`
;;
*
)
cpu_family
=
`
uname
-m
`
;
model_name
=
`
uname
-p
`
;
;;
esac
fi
# parse CPU flags
for
flag
in
`
$cpuinfo
|
grep
'^flags'
|
sed
-e
's/^flags.*: //'
`
;
do
eval
cpu_flag_
$flag
=
yes
done
else
# Fallback when there is no /proc/cpuinfo
case
"
`
uname
-s
`
"
in
FreeBSD|OpenBSD
)
cpu_family
=
`
uname
-m
`
;
model_name
=
`
sysctl
-n
hw.model
`
;;
Darwin
)
cpu_family
=
`
uname
-p
`
model_name
=
`
machine
`
# detect CPU shortname as used by gcc options
# this list is not complete, feel free to add further entries
cpu_arg
=
""
case
"
$cpu_family
--
$model_name
"
in
# DEC Alpha
Alpha
*
EV6
*
)
cpu_arg
=
"ev6"
;
;;
*
)
cpu_family
=
`
uname
-m
`
;
model_name
=
`
uname
-p
`
;
# Intel ia32
*
Xeon
*
)
# a Xeon is just another pentium4 ...
# ... unless it has the "lm" (long-mode) flag set,
# in that case it's a Xeon with EM64T support
if
[
-z
"
$cpu_flag_lm
"
]
;
then
cpu_arg
=
"pentium4"
;
else
cpu_arg
=
"nocona"
;
fi
;;
esac
fi
# detect CPU shortname as used by gcc options
# this list is not complete, feel free to add further entries
cpu_arg
=
""
case
"
$cpu_family
--
$model_name
"
in
# DEC Alpha
Alpha
*
EV6
*
)
cpu_arg
=
"ev6"
;
*
Pentium
*
4
*
Mobile
*
)
cpu_arg
=
"pentium4m"
;
;;
# Intel ia32
*
Xeon
*
)
# a Xeon is just another pentium4 ...
# ... unless it has the "lm" (long-mode) flag set,
# in that case it's a Xeon with EM64T support
if
[
-z
"
$cpu_flag_lm
"
]
;
then
*
Pentium
*
4
*
)
cpu_arg
=
"pentium4"
;
else
cpu_arg
=
"nocona"
;
fi
;;
*
Pentium
*
4
*
Mobile
*
)
cpu_arg
=
"pentium4m"
;
;;
*
Pentium
*
4
*
)
cpu_arg
=
"pentium4"
;
;;
*
Pentium
*
III
*
Mobile
*
)
cpu_arg
=
"pentium3m"
;
;;
*
Pentium
*
III
*
Mobile
*
)
cpu_arg
=
"pentium3m"
;
;;
*
Pentium
*
III
*
)
cpu_arg
=
"pentium3"
;
;;
*
Pentium
*
M
*
pro
*
)
cpu_arg
=
"pentium-m"
;
;;
*
Athlon
*
64
*
)
cpu_arg
=
"athlon64"
;
*
Pentium
*
III
*
)
cpu_arg
=
"pentium3"
;
;;
*
Athlon
*
)
cpu_arg
=
"athlon
"
;
*
Pentium
*
M
*
pro
*
)
cpu_arg
=
"pentium-m
"
;
;;
*
Athlon
*
64
*
)
cpu_arg
=
"athlon64"
;
;;
*
Athlon
*
)
cpu_arg
=
"athlon"
;
;;
# Intel ia64
*
Itanium
*
)
# Don't need to set any flags for itanium(at the moment)
cpu_arg
=
""
;
;;
# Intel ia64
*
Itanium
*
)
# Don't need to set any flags for itanium(at the moment)
cpu_arg
=
""
;
;;
#
*
ppc
*
)
cpu_arg
=
'powerpc'
;;
*
powerpc
*
)
cpu_arg
=
'powerpc'
;;
#
*
ppc
*
)
cpu_arg
=
'powerpc'
;;
*
powerpc
*
)
cpu_arg
=
'powerpc'
;;
# unknown
*
)
cpu_arg
=
""
;
;;
esac
if
test
-z
"
$cpu_arg
"
;
then
echo
"BUILD/check-cpu: Oops, could not find out what kind of cpu this machine is using."
check_cpu_cflags
=
""
return
fi
# different compiler versions have different option names
# for CPU specific command line options
if
test
-z
"
$CC
"
;
then
cc
=
"gcc"
;
else
cc
=
$CC
fi
cc_ver
=
`
$cc
--version
|
sed
1q
`
cc_verno
=
`
echo
$cc_ver
|
sed
-e
's/[^0-9. ]//g; s/^ *//g; s/ .*//g'
`
case
"
$cc_ver
--
$cc_verno
"
in
*
GCC
*
)
# different gcc backends (and versions) have different CPU flags
case
`
gcc
-dumpmachine
`
in
i?86-
*
)
case
"
$cc_verno
"
in
3.4
*
|
3.5
*
|
4.
*
)
check_cpu_args
=
'-mtune=$cpu_arg -march=$cpu_arg'
;;
*
)
check_cpu_args
=
'-mcpu=$cpu_arg -march=$cpu_arg'
;;
esac
;;
ppc-
*
)
check_cpu_args
=
'-mcpu=$cpu_arg -mtune=$cpu_arg'
;;
*
)
check_cpu_cflags
=
""
return
;;
esac
;;
2.95.
*
)
# GCC 2.95 doesn't expose its name in --version output
check_cpu_args
=
'-m$cpu_arg'
;;
*
)
# unknown
*
)
cpu_arg
=
""
;
;;
esac
if
test
-z
"
$cpu_arg
"
;
then
echo
"BUILD/check-cpu: Oops, could not find out what kind of cpu this machine is using."
>
&2
check_cpu_cflags
=
""
return
;;
esac
# now we check whether the compiler really understands the cpu type
touch
__test.c
while
[
"
$cpu_arg
"
]
;
do
echo
-n
testing
$cpu_arg
"... "
# compile check
check_cpu_cflags
=
`
eval echo
$check_cpu_args
`
if
$cc
-c
$check_cpu_cflags
__test.c 2>/dev/null
;
then
echo
ok
break
;
fi
echo
failed
check_cpu_cflags
=
""
# different compiler versions have different option names
# for CPU specific command line options
if
test
-z
"
$CC
"
;
then
cc
=
"gcc"
;
else
cc
=
$CC
fi
# if compile failed: check whether it supports a predecessor of this CPU
# this list is not complete, feel free to add further entries
case
"
$cpu_arg
"
in
# Intel ia32
nocona
)
cpu_arg
=
pentium4
;;
prescott
)
cpu_arg
=
pentium4
;;
pentium4m
)
cpu_arg
=
pentium4
;;
pentium4
)
cpu_arg
=
pentium3
;;
pentium3m
)
cpu_arg
=
pentium3
;;
pentium3
)
cpu_arg
=
pentium2
;;
pentium2
)
cpu_arg
=
pentiumpro
;;
pentiumpro
)
cpu_arg
=
pentium
;;
pentium
)
cpu_arg
=
i486
;;
i486
)
cpu_arg
=
i386
;;
# power / powerPC
7450
)
cpu_arg
=
7400
;;
*
)
cpu_arg
=
""
;;
cc_ver
=
`
$cc
--version
|
sed
1q
`
cc_verno
=
`
echo
$cc_ver
|
sed
-e
's/[^0-9. ]//g; s/^ *//g; s/ .*//g'
`
case
"
$cc_ver
--
$cc_verno
"
in
*
GCC
*
)
# different gcc backends (and versions) have different CPU flags
case
`
gcc
-dumpmachine
`
in
i?86-
*
)
case
"
$cc_verno
"
in
3.4
*
|
3.5
*
|
4.
*
)
check_cpu_args
=
'-mtune=$cpu_arg -march=$cpu_arg'
;;
*
)
check_cpu_args
=
'-mcpu=$cpu_arg -march=$cpu_arg'
;;
esac
;;
ppc-
*
)
check_cpu_args
=
'-mcpu=$cpu_arg -mtune=$cpu_arg'
;;
*
)
check_cpu_cflags
=
""
return
;;
esac
;;
2.95.
*
)
# GCC 2.95 doesn't expose its name in --version output
check_cpu_args
=
'-m$cpu_arg'
;;
*
)
check_cpu_cflags
=
""
return
;;
esac
done
rm
__test.
*
# now we check whether the compiler really understands the cpu type
touch
__test.c
while
[
"
$cpu_arg
"
]
;
do
# FIXME: echo -n isn't portable - see contortions autoconf goes through
echo
-n
testing
$cpu_arg
"... "
>
&2
# compile check
check_cpu_cflags
=
`
eval echo
$check_cpu_args
`
if
$cc
-c
$check_cpu_cflags
__test.c 2>/dev/null
;
then
echo
ok
>
&2
break
;
fi
echo
failed
>
&2
check_cpu_cflags
=
""
# if compile failed: check whether it supports a predecessor of this CPU
# this list is not complete, feel free to add further entries
case
"
$cpu_arg
"
in
# Intel ia32
nocona
)
cpu_arg
=
pentium4
;;
prescott
)
cpu_arg
=
pentium4
;;
pentium4m
)
cpu_arg
=
pentium4
;;
pentium4
)
cpu_arg
=
pentium3
;;
pentium3m
)
cpu_arg
=
pentium3
;;
pentium3
)
cpu_arg
=
pentium2
;;
pentium2
)
cpu_arg
=
pentiumpro
;;
pentiumpro
)
cpu_arg
=
pentium
;;
pentium
)
cpu_arg
=
i486
;;
i486
)
cpu_arg
=
i386
;;
# power / powerPC
7450
)
cpu_arg
=
7400
;;
*
)
cpu_arg
=
""
;;
esac
done
rm
__test.
*
}
check_cpu
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment