sim: sh: use common configure options

In preparation for converting to nrun, call the common functions that
are needed.  This also produces a bunch of warnings, but one thing at
a time.
This commit is contained in:
Mike Frysinger 2015-03-28 13:39:31 -04:00
parent 92c695a14f
commit 6d89786cb3
4 changed files with 555 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2015-03-28 Mike Frysinger <vapier@gentoo.org>
* config.in, configure: Regenerate.
* configure.ac: Call SIM_AC_OPTION_ENDIAN, SIM_AC_OPTION_ALIGNMENT,
SIM_AC_OPTION_HOSTENDIAN, SIM_AC_OPTION_ENVIRONMENT,
SIM_AC_OPTION_INLINE, SIM_AC_OPTION_WARNINGS.
2015-03-16 Mike Frysinger <vapier@gentoo.org>
* config.in, configure: Regenerate.

View File

@ -1,5 +1,8 @@
/* config.in. Generated from configure.ac by autoheader. */
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
@ -135,6 +138,18 @@
#endif
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
# undef WORDS_BIGENDIAN
# endif
#endif
/* Define to 1 if on MINIX. */
#undef _MINIX

528
sim/sh/configure vendored
View File

@ -759,6 +759,14 @@ enable_sim_trace
enable_sim_profile
with_pkgversion
with_bugurl
enable_sim_endian
enable_sim_alignment
enable_sim_hostendian
enable_sim_environment
enable_sim_inline
enable_werror
enable_build_warnings
enable_sim_build_warnings
'
ac_precious_vars='build_alias
host_alias
@ -1401,6 +1409,16 @@ Optional Features:
--enable-sim-stdio Specify whether to use stdio for console input/output.
--enable-sim-trace=opts Enable tracing flags
--enable-sim-profile=opts Enable profiling flags
--enable-sim-endian=endian Specify target byte endian orientation.
--enable-sim-alignment=align Specify strict, nonstrict or forced alignment of memory accesses.
--enable-sim-hostendian=end Specify host byte endian orientation.
--enable-sim-environment=environment Specify mixed, user, virtual or operating environment.
--enable-sim-inline=inlines Specify which functions should be inlined.
--enable-werror treat compile warnings as errors
--enable-build-warnings enable build-time compiler warnings if gcc is used
--enable-sim-build-warnings
enable SIM specific build-time compiler warnings if
gcc is used
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@ -12354,7 +12372,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12357 "configure"
#line 12375 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -12460,7 +12478,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12463 "configure"
#line 12481 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -12951,6 +12969,511 @@ sim_link_links="${sim_link_links} targ-vals.def"
wire_endian=""
default_endian=""
# Check whether --enable-sim-endian was given.
if test "${enable_sim_endian+set}" = set; then :
enableval=$enable_sim_endian; case "${enableval}" in
b*|B*) sim_endian="-DWITH_TARGET_BYTE_ORDER=BIG_ENDIAN";;
l*|L*) sim_endian="-DWITH_TARGET_BYTE_ORDER=LITTLE_ENDIAN";;
yes) if test x"$wire_endian" != x; then
sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
else
if test x"$default_endian" != x; then
sim_endian="-DWITH_TARGET_BYTE_ORDER=${default_endian}"
else
echo "No hard-wired endian for target $target" 1>&6
sim_endian="-DWITH_TARGET_BYTE_ORDER=0"
fi
fi;;
no) if test x"$default_endian" != x; then
sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
else
if test x"$wire_endian" != x; then
sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${wire_endian}"
else
echo "No default endian for target $target" 1>&6
sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=0"
fi
fi;;
*) as_fn_error "\"Unknown value $enableval for --enable-sim-endian\"" "$LINENO" 5; sim_endian="";;
esac
if test x"$silent" != x"yes" && test x"$sim_endian" != x""; then
echo "Setting endian flags = $sim_endian" 6>&1
fi
else
if test x"$default_endian" != x; then
sim_endian="-DWITH_DEFAULT_TARGET_BYTE_ORDER=${default_endian}"
else
if test x"$wire_endian" != x; then
sim_endian="-DWITH_TARGET_BYTE_ORDER=${wire_endian}"
else
sim_endian=
fi
fi
fi
wire_alignment="STRICT_ALIGNMENT"
default_alignment="STRICT_ALIGNMENT"
# Check whether --enable-sim-alignment was given.
if test "${enable_sim_alignment+set}" = set; then :
enableval=$enable_sim_alignment; case "${enableval}" in
strict | STRICT) sim_alignment="-DWITH_ALIGNMENT=STRICT_ALIGNMENT";;
nonstrict | NONSTRICT) sim_alignment="-DWITH_ALIGNMENT=NONSTRICT_ALIGNMENT";;
forced | FORCED) sim_alignment="-DWITH_ALIGNMENT=FORCED_ALIGNMENT";;
yes) if test x"$wire_alignment" != x; then
sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
else
if test x"$default_alignment" != x; then
sim_alignment="-DWITH_ALIGNMENT=${default_alignment}"
else
echo "No hard-wired alignment for target $target" 1>&6
sim_alignment="-DWITH_ALIGNMENT=0"
fi
fi;;
no) if test x"$default_alignment" != x; then
sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
else
if test x"$wire_alignment" != x; then
sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${wire_alignment}"
else
echo "No default alignment for target $target" 1>&6
sim_alignment="-DWITH_DEFAULT_ALIGNMENT=0"
fi
fi;;
*) as_fn_error "\"Unknown value $enableval passed to --enable-sim-alignment\"" "$LINENO" 5; sim_alignment="";;
esac
if test x"$silent" != x"yes" && test x"$sim_alignment" != x""; then
echo "Setting alignment flags = $sim_alignment" 6>&1
fi
else
if test x"$default_alignment" != x; then
sim_alignment="-DWITH_DEFAULT_ALIGNMENT=${default_alignment}"
else
if test x"$wire_alignment" != x; then
sim_alignment="-DWITH_ALIGNMENT=${wire_alignment}"
else
sim_alignment=
fi
fi
fi
# Check whether --enable-sim-hostendian was given.
if test "${enable_sim_hostendian+set}" = set; then :
enableval=$enable_sim_hostendian; case "${enableval}" in
no) sim_hostendian="-DWITH_HOST_BYTE_ORDER=0";;
b*|B*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN";;
l*|L*) sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN";;
*) as_fn_error "\"Unknown value $enableval for --enable-sim-hostendian\"" "$LINENO" 5; sim_hostendian="";;
esac
if test x"$silent" != x"yes" && test x"$sim_hostendian" != x""; then
echo "Setting hostendian flags = $sim_hostendian" 6>&1
fi
else
if test "x$cross_compiling" = "xno"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
if test "${ac_cv_c_bigendian+set}" = set; then :
$as_echo_n "(cached) " >&6
else
ac_cv_c_bigendian=unknown
# See if we're dealing with a universal compiler.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __APPLE_CC__
not a universal capable compiler
#endif
typedef int dummy;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
# Check for potential -arch flags. It is not universal unless
# there are at least two -arch flags with different values.
ac_arch=
ac_prev=
for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
if test -n "$ac_prev"; then
case $ac_word in
i?86 | x86_64 | ppc | ppc64)
if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
ac_arch=$ac_word
else
ac_cv_c_bigendian=universal
break
fi
;;
esac
ac_prev=
elif test "x$ac_word" = "x-arch"; then
ac_prev=arch
fi
done
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_c_bigendian = unknown; then
# See if sys/param.h defines the BYTE_ORDER macro.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/param.h>
int
main ()
{
#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
&& defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
&& LITTLE_ENDIAN)
bogus endian macros
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
# It does; now see whether it defined to BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/param.h>
int
main ()
{
#if BYTE_ORDER != BIG_ENDIAN
not big endian
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_c_bigendian=yes
else
ac_cv_c_bigendian=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
int
main ()
{
#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
bogus endian macros
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
# It does; now see whether it defined to _BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
int
main ()
{
#ifndef _BIG_ENDIAN
not big endian
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_c_bigendian=yes
else
ac_cv_c_bigendian=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# Compile a test program.
if test "$cross_compiling" = yes; then :
# Try to guess by grepping values from an object file.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
short int ascii_mm[] =
{ 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
short int ascii_ii[] =
{ 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
int use_ascii (int i) {
return ascii_mm[i] + ascii_ii[i];
}
short int ebcdic_ii[] =
{ 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
short int ebcdic_mm[] =
{ 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
int use_ebcdic (int i) {
return ebcdic_mm[i] + ebcdic_ii[i];
}
extern int foo;
int
main ()
{
return use_ascii (foo) == use_ebcdic (foo);
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
ac_cv_c_bigendian=yes
fi
if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
if test "$ac_cv_c_bigendian" = unknown; then
ac_cv_c_bigendian=no
else
# finding both strings is unlikely to happen, but who knows?
ac_cv_c_bigendian=unknown
fi
fi
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
/* Are we little or big endian? From Harbison&Steele. */
union
{
long int l;
char c[sizeof (long int)];
} u;
u.l = 1;
return u.c[sizeof (long int) - 1] == 1;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
ac_cv_c_bigendian=no
else
ac_cv_c_bigendian=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
$as_echo "$ac_cv_c_bigendian" >&6; }
case $ac_cv_c_bigendian in #(
yes)
$as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
;; #(
no)
;; #(
universal)
$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
;; #(
*)
as_fn_error "unknown endianness
presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
esac
if test $ac_cv_c_bigendian = yes; then
sim_hostendian="-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN"
else
sim_hostendian="-DWITH_HOST_BYTE_ORDER=LITTLE_ENDIAN"
fi
else
sim_hostendian="-DWITH_HOST_BYTE_ORDER=0"
fi
fi
# Check whether --enable-sim-environment was given.
if test "${enable_sim_environment+set}" = set; then :
enableval=$enable_sim_environment; case "${enableval}" in
all | ALL) sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT";;
user | USER) sim_environment="-DWITH_ENVIRONMENT=USER_ENVIRONMENT";;
virtual | VIRTUAL) sim_environment="-DWITH_ENVIRONMENT=VIRTUAL_ENVIRONMENT";;
operating | OPERATING) sim_environment="-DWITH_ENVIRONMENT=OPERATING_ENVIRONMENT";;
*) as_fn_error "\"Unknown value $enableval passed to --enable-sim-environment\"" "$LINENO" 5;
sim_environment="";;
esac
if test x"$silent" != x"yes" && test x"$sim_environment" != x""; then
echo "Setting sim environment = $sim_environment" 6>&1
fi
else
sim_environment="-DWITH_ENVIRONMENT=ALL_ENVIRONMENT"
fi
default_sim_inline=""
# Check whether --enable-sim-inline was given.
if test "${enable_sim_inline+set}" = set; then :
enableval=$enable_sim_inline; sim_inline=""
case "$enableval" in
no) sim_inline="-DDEFAULT_INLINE=0";;
0) sim_inline="-DDEFAULT_INLINE=0";;
yes | 2) sim_inline="-DDEFAULT_INLINE=ALL_C_INLINE";;
1) sim_inline="-DDEFAULT_INLINE=INLINE_LOCALS";;
*) for x in `echo "$enableval" | sed -e "s/,/ /g"`; do
new_flag=""
case "$x" in
*_INLINE=*) new_flag="-D$x";;
*=*) new_flag=`echo "$x" | sed -e "s/=/_INLINE=/" -e "s/^/-D/"`;;
*_INLINE) new_flag="-D$x=ALL_C_INLINE";;
*) new_flag="-D$x""_INLINE=ALL_C_INLINE";;
esac
if test x"$sim_inline" = x""; then
sim_inline="$new_flag"
else
sim_inline="$sim_inline $new_flag"
fi
done;;
esac
if test x"$silent" != x"yes" && test x"$sim_inline" != x""; then
echo "Setting inline flags = $sim_inline" 6>&1
fi
else
if test "x$cross_compiling" = "xno"; then
if test x"$GCC" != "x" -a x"${default_sim_inline}" != "x" ; then
sim_inline="${default_sim_inline}"
if test x"$silent" != x"yes"; then
echo "Setting inline flags = $sim_inline" 6>&1
fi
else
sim_inline=""
fi
else
sim_inline="-DDEFAULT_INLINE=0"
fi
fi
# Check whether --enable-werror was given.
if test "${enable_werror+set}" = set; then :
enableval=$enable_werror; case "${enableval}" in
yes | y) ERROR_ON_WARNING="yes" ;;
no | n) ERROR_ON_WARNING="no" ;;
*) as_fn_error "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;;
esac
fi
# Enable -Werror by default when using gcc
if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
ERROR_ON_WARNING=yes
fi
WERROR_CFLAGS=""
if test "${ERROR_ON_WARNING}" = yes ; then
# NOTE: Disabled in the sim dir due to most sims generating warnings.
# WERROR_CFLAGS="-Werror"
true
fi
build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
-Wpointer-sign \
-Wno-unused -Wunused-value -Wunused-function \
-Wno-switch -Wno-char-subscripts -Wmissing-prototypes
-Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type \
-Wold-style-declaration -Wold-style-definition"
# Enable -Wno-format by default when using gcc on mingw since many
# GCC versions complain about %I64.
case "${host}" in
*-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
*) build_warnings="$build_warnings -Wformat-nonliteral" ;;
esac
# Check whether --enable-build-warnings was given.
if test "${enable_build_warnings+set}" = set; then :
enableval=$enable_build_warnings; case "${enableval}" in
yes) ;;
no) build_warnings="-w";;
,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${build_warnings} ${t}";;
*,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${t} ${build_warnings}";;
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
echo "Setting compiler warning flags = $build_warnings" 6>&1
fi
fi
# Check whether --enable-sim-build-warnings was given.
if test "${enable_sim_build_warnings+set}" = set; then :
enableval=$enable_sim_build_warnings; case "${enableval}" in
yes) ;;
no) build_warnings="-w";;
,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${build_warnings} ${t}";;
*,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${t} ${build_warnings}";;
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
fi
fi
WARN_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes
then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5
$as_echo_n "checking compiler warning flags... " >&6; }
# Separate out the -Werror flag as some files just cannot be
# compiled with it enabled.
for w in ${build_warnings}; do
case $w in
-Werr*) WERROR_CFLAGS=-Werror ;;
*) # Check that GCC accepts it
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $w"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
WARN_CFLAGS="${WARN_CFLAGS} $w"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$saved_CFLAGS"
esac
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5
$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
fi
ac_sources="$sim_link_files"
ac_dests="$sim_link_links"
while test -n "$ac_sources"; do
@ -13085,6 +13608,7 @@ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
ac_clean_files_save=$ac_clean_files

View File

@ -5,4 +5,11 @@ sinclude(../common/acinclude.m4)
SIM_AC_COMMON
SIM_AC_OPTION_ENDIAN
SIM_AC_OPTION_ALIGNMENT(STRICT_ALIGNMENT,STRICT_ALIGNMENT)
SIM_AC_OPTION_HOSTENDIAN
SIM_AC_OPTION_ENVIRONMENT
SIM_AC_OPTION_INLINE
SIM_AC_OPTION_WARNINGS
SIM_AC_OUTPUT