| dnl Process this file with autoconf to produce a configure script. |
| dnl |
| dnl And be careful when changing it! If you must add tests with square |
| dnl brackets, be sure changequote invocations surround it. |
| dnl |
| dnl Copyright (C) 2012-2016 Free Software Foundation, Inc. |
| dnl |
| dnl This file is free software; you can redistribute it and/or modify |
| dnl it under the terms of the GNU General Public License as published by |
| dnl the Free Software Foundation; either version 3 of the License, or |
| dnl (at your option) any later version. |
| dnl |
| dnl This program is distributed in the hope that it will be useful, |
| dnl but WITHOUT ANY WARRANTY; without even the implied warranty of |
| dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| dnl GNU General Public License for more details. |
| dnl |
| dnl You should have received a copy of the GNU General Public License |
| dnl along with this program; see the file COPYING3. If not see |
| dnl <http://www.gnu.org/licenses/>. |
| dnl |
| dnl v2.5 needed for --bindir et al |
| AC_PREREQ(2.59) |
| m4_include([../bfd/version.m4]) |
| AC_INIT([gas], BFD_VERSION) |
| AC_CONFIG_SRCDIR(as.h) |
| |
| dnl Autoconf 2.57 will find the aux dir without this. However, unless |
| dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in |
| dnl gas/ instead of gas/../. |
| AC_CONFIG_AUX_DIR(..) |
| AC_CANONICAL_TARGET |
| AC_ISC_POSIX |
| |
| AM_INIT_AUTOMAKE |
| |
| AC_PROG_CC |
| AC_GNU_SOURCE |
| AC_USE_SYSTEM_EXTENSIONS |
| |
| LT_INIT |
| ACX_LARGEFILE |
| |
| AC_ARG_ENABLE(targets, |
| [ --enable-targets alternative target configurations besides the primary], |
| [case "${enableval}" in |
| yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all') |
| ;; |
| no) enable_targets= ;; |
| *) enable_targets=$enableval ;; |
| esac])dnl |
| |
| ac_checking=yes |
| if grep '^RELEASE=y' ${srcdir}/../bfd/Makefile.am >/dev/null 2>/dev/null ; then |
| ac_checking= |
| fi |
| AC_ARG_ENABLE(checking, |
| [ --enable-checking enable run-time checks], |
| [case "${enableval}" in |
| no|none) ac_checking= ;; |
| *) ac_checking=yes ;; |
| esac])dnl |
| if test x$ac_checking != x ; then |
| AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) |
| fi |
| |
| # PR gas/19109 |
| # Decide the default method for compressing debug sections. |
| ac_default_compressed_debug_sections=unset |
| # Provide a configure time option to override our default. |
| AC_ARG_ENABLE(compressed_debug_sections, |
| AS_HELP_STRING([--enable-compressed-debug-sections={all,gas,none}], |
| [compress debug sections by default]), |
| [case ,"${enableval}", in |
| ,yes, | ,all, | *,gas,*) ac_default_compressed_debug_sections=yes ;; |
| ,no, | ,none,) ac_default_compressed_debug_sections=no ;; |
| *) ac_default_compressed_debug_sections=unset ;; |
| esac])dnl |
| |
| # PR gas/19520 |
| # Decide if x86 assembler should generate relax relocations. |
| ac_default_x86_relax_relocations=unset |
| # Provide a configure time option to override our default. |
| AC_ARG_ENABLE(x86_relax_relocations, |
| AS_HELP_STRING([--enable-x86-relax-relocations], |
| [generate x86 relax relocations by default]), |
| [case "${enableval}" in |
| no) ac_default_x86_relax_relocations=0 ;; |
| esac])dnl |
| |
| # Decide if ELF assembler should generate common symbols with the |
| # STT_COMMON type. |
| ac_default_elf_stt_common=unset |
| # Provide a configure time option to override our default. |
| AC_ARG_ENABLE(elf_stt_common, |
| AS_HELP_STRING([--enable-elf-stt-common], |
| [generate ELF common symbols with STT_COMMON type by default]), |
| [case "${enableval}" in |
| yes) ac_default_elf_stt_common=1 ;; |
| esac])dnl |
| |
| using_cgen=no |
| |
| AM_BINUTILS_WARNINGS |
| |
| # Generate a header file |
| AC_CONFIG_HEADERS(config.h:config.in) |
| |
| dnl Option --with-cpu=TYPE allows configure type control of the default |
| dnl cpu type within the assembler. Currently only the ARC target |
| dnl supports this feature, but others may be added in the future. |
| AC_ARG_WITH(cpu, |
| AS_HELP_STRING([--with-cpu=CPU], |
| [default cpu variant is CPU (currently only supported on ARC)]), |
| [AC_DEFINE_UNQUOTED(TARGET_WITH_CPU, |
| "${with_cpu}", |
| [Target specific CPU.])], |
| []) |
| |
| # PR 14072 |
| AH_VERBATIM([00_CONFIG_H_CHECK], |
| [/* Check that config.h is #included before system headers |
| (this works only for glibc, but that should be enough). */ |
| #if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__) |
| # error config.h must be #included before system headers |
| #endif |
| #define __CONFIG_H__ 1]) |
| |
| # If we are on a DOS filesystem, we must use gdb.ini rather than |
| # .gdbinit. |
| case "${host}" in |
| *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*) |
| GDBINIT="gdb.ini" |
| AC_CONFIG_FILES(gdb.ini:gdbinit.in) |
| ;; |
| *) |
| GDBINIT=".gdbinit" |
| AC_CONFIG_FILES(.gdbinit:gdbinit.in) |
| ;; |
| esac |
| AC_SUBST(GDBINIT) |
| |
| #We need this for the host. BOUT header is in host order. |
| AC_C_BIGENDIAN |
| |
| te_file=generic |
| |
| # Makefile target for installing gas in $(tooldir)/bin. |
| install_tooldir=install-exec-tooldir |
| |
| canon_targets="" |
| all_targets=no |
| if test -n "$enable_targets" ; then |
| for t in `echo $enable_targets | sed 's/,/ /g'`; do |
| if test $t = "all"; then |
| all_targets=yes |
| continue |
| fi |
| result=`$ac_config_sub $t 2>/dev/null` |
| if test -n "$result" ; then |
| canon_targets="$canon_targets $result" |
| # else |
| # # Permit "all", etc. We don't support it yet though. |
| # canon_targets="$canon_targets $t" |
| fi |
| done |
| GAS_UNIQ(canon_targets) |
| fi |
| |
| emulations="" |
| |
| for this_target in $target $canon_targets ; do |
| |
| targ=${this_target} |
| . ${srcdir}/configure.tgt |
| |
| case ${target_cpu} in |
| crisv32) |
| AC_DEFINE_UNQUOTED(DEFAULT_CRIS_ARCH, $arch, |
| [Default CRIS architecture.]) |
| ;; |
| esac |
| |
| if test ${this_target} = $target ; then |
| target_cpu_type=${cpu_type} |
| elif test ${target_cpu_type} != ${cpu_type} ; then |
| continue |
| fi |
| |
| generic_target=${cpu_type}-${target_vendor}-${target_os} |
| case ${generic_target} in |
| i386-*-sco3.2v5*) |
| if test ${this_target} = $target; then |
| AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.]) |
| fi |
| ;; |
| |
| i386-*-msdosdjgpp* \ |
| | i386-*-go32* \ |
| | i386-go32-rtems*) |
| AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?]) |
| ;; |
| |
| i386-*-solaris2 \ |
| | x86_64-*-solaris2 \ |
| | i386-*-solaris2.[[0-9]] \ |
| | i386-*-solaris2.1[[01]] \ |
| | x86_64-*-solaris2.1[[01]]) |
| if test ${this_target} = $target \ |
| && test ${ac_default_x86_relax_relocations} = unset; then |
| ac_default_x86_relax_relocations=0 |
| fi |
| ;; |
| |
| i860-*-*) |
| AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) |
| ;; |
| |
| microblaze*) |
| ;; |
| |
| changequote(,)dnl |
| ppc-*-aix[5-9].*) |
| changequote([,])dnl |
| AC_DEFINE(AIX_WEAK_SUPPORT, 1, |
| [Define if using AIX 5.2 value for C_WEAKEXT.]) |
| ;; |
| ppc-*-solaris*) |
| if test ${this_target} = $target; then |
| AC_DEFINE(TARGET_SOLARIS_COMMENT, 1, |
| [Define if default target is PowerPC Solaris.]) |
| fi |
| if test x${endian} = xbig; then |
| AC_MSG_ERROR(Solaris must be configured little endian) |
| fi |
| ;; |
| |
| sh*-*-symbianelf*) |
| AC_DEFINE(TARGET_SYMBIAN, 1, [Define if target is Symbian OS.]) |
| ;; |
| esac |
| |
| if test ${this_target} = $target ; then |
| endian_def= |
| if test x${endian} = xbig; then |
| endian_def=1 |
| elif test x${endian} = xlittle; then |
| endian_def=0 |
| fi |
| if test x${endian_def} != x; then |
| AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def, |
| [Define as 1 if big endian.]) |
| fi |
| fi |
| |
| # Other random stuff. |
| |
| case ${cpu_type} in |
| mips) |
| # Set mips_cpu to the name of the default CPU. |
| case ${target_cpu} in |
| mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el) |
| mips_cpu=from-abi |
| ;; |
| mipsisa32 | mipsisa32el) |
| mips_cpu=mips32 |
| ;; |
| mipsisa32r2 | mipsisa32r2el) |
| mips_cpu=mips32r2 |
| ;; |
| mipsisa32r3 | mipsisa32r3el) |
| mips_cpu=mips32r3 |
| ;; |
| mipsisa32r5 | mipsisa32r5el) |
| mips_cpu=mips32r5 |
| ;; |
| mipsisa32r6 | mipsisa32r6el) |
| mips_cpu=mips32r6 |
| ;; |
| mipsisa64 | mipsisa64el) |
| mips_cpu=mips64 |
| ;; |
| mipsisa64r2 | mipsisa64r2el) |
| mips_cpu=mips64r2 |
| ;; |
| mipsisa64r3 | mipsisa64r3el) |
| mips_cpu=mips64r3 |
| ;; |
| mipsisa64r5 | mipsisa64r5el) |
| mips_cpu=mips64r5 |
| ;; |
| mipsisa64r6 | mipsisa64r6el) |
| mips_cpu=mips64r6 |
| ;; |
| mipstx39 | mipstx39el) |
| mips_cpu=r3900 |
| ;; |
| mips64vr | mips64vrel) |
| mips_cpu=vr4100 |
| ;; |
| mipsisa32r2* | mipsisa64r2*) |
| changequote(,)dnl |
| mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'` |
| changequote([,])dnl |
| ;; |
| mipsisa32r6* | mipsisa64r6*) |
| changequote(,)dnl |
| mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r6//' -e 's/el$//'` |
| changequote([,])dnl |
| ;; |
| mips64* | mipsisa64* | mipsisa32*) |
| changequote(,)dnl |
| mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'` |
| changequote([,])dnl |
| ;; |
| mips*) |
| changequote(,)dnl |
| mips_cpu=`echo $target_cpu | sed -e 's/^mips//' -e 's/el$//'` |
| changequote([,])dnl |
| ;; |
| *) |
| AC_MSG_ERROR($target_cpu isn't a supported MIPS CPU name) |
| ;; |
| esac |
| # See whether it's appropriate to set E_MIPS_ABI_O32 for o32 |
| # binaries. It's a GNU extension that some OSes don't understand. |
| case ${target} in |
| *-*-irix*) |
| use_e_mips_abi_o32=0 |
| ;; |
| *) |
| use_e_mips_abi_o32=1 |
| ;; |
| esac |
| # Decide whether to generate 32-bit or 64-bit code by default. |
| # Used to resolve -march=from-abi when an embedded ABI is selected. |
| case ${target} in |
| mips64*-*-* | mipsisa64*-*-*) |
| mips_default_64bit=1 |
| ;; |
| *) |
| mips_default_64bit=0 |
| ;; |
| esac |
| # Decide which ABI to target by default. |
| case ${target} in |
| mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* | mips64*-kfreebsd*-gnu) |
| mips_default_abi=N32_ABI |
| ;; |
| mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu) |
| mips_default_abi=O32_ABI |
| ;; |
| mips64*-openbsd*) |
| mips_default_abi=N64_ABI |
| ;; |
| *) |
| mips_default_abi=NO_ABI |
| ;; |
| esac |
| AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu", |
| [Default CPU for MIPS targets. ]) |
| AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32, |
| [Allow use of E_MIPS_ABI_O32 on MIPS targets. ]) |
| AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit, |
| [Generate 64-bit code by default on MIPS targets. ]) |
| AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi, |
| [Choose a default ABI for MIPS targets. ]) |
| ;; |
| esac |
| |
| # Do we need the opcodes library? |
| case ${cpu_type} in |
| vax | tic30) |
| ;; |
| |
| *) |
| need_opcodes=yes |
| |
| case "${enable_shared}" in |
| yes) shared_opcodes=true ;; |
| *opcodes*) shared_opcodes=true ;; |
| *) shared_opcodes=false ;; |
| esac |
| ;; |
| esac |
| |
| # Any other special object files needed ? |
| case ${cpu_type} in |
| |
| bfin) |
| echo ${extra_objects} | grep -s "bfin-parse.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects bfin-parse.o" |
| fi |
| |
| echo ${extra_objects} | grep -s "bfin-lex-wrapper.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects bfin-lex-wrapper.o" |
| fi |
| ;; |
| |
| epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | or1k) |
| using_cgen=yes |
| ;; |
| |
| m32c) |
| using_cgen=yes |
| ;; |
| frv) |
| using_cgen=yes |
| ;; |
| m68k) |
| case ${extra_objects} in |
| *m68k-parse.o*) ;; |
| *) extra_objects="$extra_objects m68k-parse.o" ;; |
| esac |
| ;; |
| |
| mep) |
| using_cgen=yes |
| ;; |
| |
| mips) |
| echo ${extra_objects} | grep -s "itbl-parse.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects itbl-parse.o" |
| fi |
| |
| echo ${extra_objects} | grep -s "itbl-lex-wrapper.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects itbl-lex-wrapper.o" |
| fi |
| |
| echo ${extra_objects} | grep -s "itbl-ops.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects itbl-ops.o" |
| fi |
| ;; |
| |
| mt) |
| using_cgen=yes |
| ;; |
| |
| nds32) |
| # Decide BASELINE, REDUCED_REGS, FPU_DP_EXT, FPU_SP_EXT features |
| # based on arch_name. |
| AC_MSG_CHECKING(for default configuration of --with-arch) |
| if test "x${with_arch}" != x; then |
| case ${with_arch} in |
| v2j | v2s | v2f | v2 | v3m | v3j | v3s | v3f | v3 ) |
| AC_DEFINE_UNQUOTED(NDS32_DEFAULT_ARCH_NAME, "$with_arch", |
| [Define value for nds32_arch_name]) |
| ;; |
| *) |
| AC_MSG_ERROR(This kind of arch name does *NOT* exist!) |
| ;; |
| esac |
| fi |
| AC_MSG_RESULT($with_arch) |
| |
| # Decide features one by one. |
| AC_MSG_CHECKING(for default configuration of --enable-dx-regs) |
| if test "x${enable_dx_regs}" = xyes; then |
| AC_DEFINE(NDS32_DEFAULT_DX_REGS, 1, |
| [Define value for nds32_dx_regs]) |
| else |
| AC_DEFINE(NDS32_DEFAULT_DX_REGS, 0, |
| [Define default value for nds32_dx_regs]) |
| fi |
| AC_MSG_RESULT($enable_dx_regs) |
| |
| AC_MSG_CHECKING(for default configuration of --enable-perf-ext) |
| if test "x${enable_perf_ext}" = xno; then |
| AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 0, |
| [Define value for nds32_perf_ext]) |
| else |
| AC_DEFINE(NDS32_DEFAULT_PERF_EXT, 1, |
| [Define default value for nds32_perf_ext]) |
| fi |
| AC_MSG_RESULT($enable_perf_ext) |
| |
| AC_MSG_CHECKING(for default configuration of --enable-perf-ext2) |
| if test "x${enable_perf_ext2}" = xno; then |
| AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 0, |
| [Define value for nds32_perf_ext2]) |
| else |
| AC_DEFINE(NDS32_DEFAULT_PERF_EXT2, 1, |
| [Define default value for nds32_perf_ext2]) |
| fi |
| AC_MSG_RESULT($enable_perf_ext2) |
| |
| AC_MSG_CHECKING(for default configuration of --enable-string-ext) |
| if test "x${enable_string_ext}" = xno; then |
| AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 0, |
| [Define value for nds32_string_ext]) |
| else |
| AC_DEFINE(NDS32_DEFAULT_STRING_EXT, 1, |
| [Define default value for nds32_string_ext]) |
| fi |
| AC_MSG_RESULT($enable_string_ext) |
| |
| AC_MSG_CHECKING(for default configuration of --enable-audio-ext) |
| if test "x${enable_audio_ext}" = xno; then |
| AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 0, |
| [Define value for nds32_audio_ext]) |
| else |
| AC_DEFINE(NDS32_DEFAULT_AUDIO_EXT, 1, |
| [Define default value for nds32_audio_ext]) |
| fi |
| AC_MSG_RESULT($enable_audio_ext) |
| ;; |
| |
| i386 | s390 | sparc) |
| if test $this_target = $target ; then |
| AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.]) |
| fi |
| ;; |
| |
| rl78) |
| echo ${extra_objects} | grep -s "rl78-parse.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects rl78-parse.o" |
| fi |
| ;; |
| |
| rx) |
| echo ${extra_objects} | grep -s "rx-parse.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects rx-parse.o" |
| fi |
| ;; |
| |
| xstormy16) |
| using_cgen=yes |
| ;; |
| |
| xc16x) |
| using_cgen=yes |
| ;; |
| |
| xtensa) |
| echo ${extra_objects} | grep -s "xtensa-relax.o" |
| if test $? -ne 0 ; then |
| extra_objects="$extra_objects xtensa-relax.o" |
| fi |
| ;; |
| |
| *) |
| ;; |
| esac |
| |
| if test $using_cgen = yes ; then |
| case "x${extra_objects}" in |
| *cgen.o*) ;; |
| *) extra_objects="$extra_objects cgen.o" ;; |
| esac |
| fi |
| |
| # See if we really can support this configuration with the emulation code. |
| |
| if test $this_target = $target ; then |
| obj_format=$fmt |
| te_file=$em |
| fi |
| |
| case ${te_file} in |
| vms) extra_objects="$extra_objects te-vms.o" ;; |
| esac |
| |
| # From target name and format, produce a list of supported emulations. |
| |
| case ${generic_target}-${fmt} in |
| mips-*-*-*) case "$endian" in |
| big) emulation="mipsbelf mipslelf mipself" ;; |
| *) emulation="mipslelf mipsbelf mipself" ;; |
| esac ;; |
| # i386-pc-pe-coff != i386-pc-coff. |
| i386-*-pe-coff) ;; |
| # Uncommenting the next line will turn on support for i386 AOUT |
| # for the default linux configuration |
| # i386-*-linux*-elf) emulation="i386elf i386aout" ;; |
| # |
| i386-*-aout) emulation="i386aout" ;; |
| i386-*-coff) emulation="i386coff" ;; |
| i386-*-elf) emulation="i386elf" ;; |
| |
| # Always all formats. The first stated emulation becomes the default. |
| cris-*-*aout*) emulation="crisaout criself" ;; |
| cris-*-*) emulation="criself crisaout" ;; |
| esac |
| |
| emulations="$emulations $emulation" |
| |
| done |
| |
| if test ${ac_default_x86_relax_relocations} = unset; then |
| ac_default_x86_relax_relocations=1 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_X86_RELAX_RELOCATIONS, |
| $ac_default_x86_relax_relocations, |
| [Define to 1 if you want to generate x86 relax relocations by default.]) |
| |
| if test ${ac_default_elf_stt_common} = unset; then |
| ac_default_elf_stt_common=0 |
| fi |
| AC_DEFINE_UNQUOTED(DEFAULT_GENERATE_ELF_STT_COMMON, |
| $ac_default_elf_stt_common, |
| [Define to 1 if you want to generate ELF common symbols with the |
| STT_COMMON type by default.]) |
| |
| if test x$ac_default_compressed_debug_sections = xyes ; then |
| AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.]) |
| fi |
| |
| # Turn on all targets if possible |
| if test ${all_targets} = "yes"; then |
| case ${target_cpu_type} in |
| i386) |
| case ${obj_format} in |
| aout) |
| emulations="$emulations i386coff i386elf" |
| ;; |
| coff) |
| emulations="$emulations i386aout i386elf" |
| ;; |
| elf) |
| emulations="$emulations i386aout i386coff" |
| ;; |
| esac |
| ;; |
| x86_64) |
| case ${obj_format} in |
| aout) |
| emulations="$emulations i386coff i386elf" |
| ;; |
| coff) |
| emulations="$emulations i386aout i386elf" |
| ;; |
| elf) |
| emulations="$emulations i386aout i386coff" |
| ;; |
| esac |
| ;; |
| esac |
| fi |
| |
| # PE code has way too many macros tweaking behaviour |
| case ${te_file} in |
| pe*) emulations="" ;; |
| esac |
| |
| # Assign floating point type. Most processors with FP support |
| # IEEE FP. On those that don't support FP at all, usually IEEE |
| # is emulated. |
| case ${target_cpu} in |
| vax | pdp11 ) atof=vax ;; |
| *) atof=ieee ;; |
| esac |
| |
| case "${obj_format}" in |
| "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;; |
| esac |
| |
| # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU). |
| cgen_cpu_prefix="" |
| if test $using_cgen = yes ; then |
| case ${target_cpu} in |
| or1knd) |
| cgen_cpu_prefix=or1k ;; |
| *) cgen_cpu_prefix=${target_cpu} ;; |
| esac |
| AC_SUBST(cgen_cpu_prefix) |
| AC_DEFINE(USING_CGEN, 1, [Using cgen code?]) |
| fi |
| |
| dnl |
| dnl Make sure the desired support files exist. |
| dnl |
| |
| if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then |
| AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type}) |
| fi |
| |
| if test ! -r ${srcdir}/config/obj-${obj_format}.c; then |
| AC_MSG_ERROR(GAS does not have support for object file format ${obj_format}) |
| fi |
| |
| # Some COFF configurations want these random other flags set. |
| case ${obj_format} in |
| coff) |
| case ${target_cpu_type} in |
| i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;; |
| m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;; |
| m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;; |
| x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;; |
| esac |
| ;; |
| esac |
| |
| # Getting this done right is going to be a bitch. Each configuration specified |
| # with --enable-targets=... should be checked for environment, format, cpu |
| # setting. |
| # |
| # For each configuration, the necessary object file support code must be linked |
| # in. This might be only one, it might be up to four. The necessary emulation |
| # code needs to be provided, too. |
| # |
| # And then there's "--enable-targets=all".... |
| # |
| # For now, just always do it for MIPS ELF configurations. Sigh. |
| |
| formats="${obj_format}" |
| emfiles="" |
| EMULATIONS="" |
| GAS_UNIQ(emulations) |
| for em in . $emulations ; do |
| case $em in |
| .) continue ;; |
| mipsbelf | mipslelf | mipself) |
| fmt=elf file=mipself ;; |
| *coff) |
| fmt=coff file=$em ;; |
| *aout) |
| fmt=aout file=$em ;; |
| *elf) |
| fmt=elf file=$em ;; |
| esac |
| formats="$formats $fmt" |
| emfiles="$emfiles e-$file.o" |
| EMULATIONS="$EMULATIONS &$em," |
| done |
| GAS_UNIQ(formats) |
| GAS_UNIQ(emfiles) |
| if test `set . $formats ; shift ; echo $#` -gt 1 ; then |
| for fmt in $formats ; do |
| case $fmt in |
| aout) AC_DEFINE(OBJ_MAYBE_AOUT, 1, [a.out support?]) ;; |
| bout) AC_DEFINE(OBJ_MAYBE_BOUT, 1, [b.out support?]) ;; |
| coff) AC_DEFINE(OBJ_MAYBE_COFF, 1, [COFF support?]) ;; |
| ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF, 1, [ECOFF support?]) ;; |
| elf) AC_DEFINE(OBJ_MAYBE_ELF, 1, [ELF support?]) ;; |
| generic) AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;; |
| som) AC_DEFINE(OBJ_MAYBE_SOM, 1, [SOM support?]) ;; |
| esac |
| extra_objects="$extra_objects obj-$fmt.o" |
| done |
| obj_format=multi |
| fi |
| if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then |
| DEFAULT_EMULATION=`set . $emulations ; echo $2` |
| # e-mipself has more than one emulation per file, e-i386* has just one at the |
| # moment. If only one emulation is specified, then don't define |
| # USE_EMULATIONS or include any of the e-files as they will only be bloat. |
| case "${obj_format}${emfiles}" in |
| multi* | *mipself*) |
| extra_objects="$extra_objects $emfiles" |
| AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;; |
| esac |
| fi |
| AC_SUBST(extra_objects) |
| AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.]) |
| AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION", |
| [Default emulation.]) |
| |
| reject_dev_configs=yes |
| |
| case ${reject_dev_configs}-${dev} in |
| yes-yes) # Oops. |
| AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.) |
| ;; |
| esac |
| |
| AC_SUBST(target_cpu_type) |
| AC_SUBST(obj_format) |
| AC_SUBST(te_file) |
| AC_SUBST(install_tooldir) |
| AC_SUBST(atof) |
| dnl AC_SUBST(emulation) |
| |
| # do we need the opcodes library? |
| case "${need_opcodes}" in |
| yes) |
| OPCODES_LIB=../opcodes/libopcodes.la |
| ;; |
| esac |
| |
| AC_SUBST(OPCODES_LIB) |
| |
| AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}", [Target alias.]) |
| AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}", [Canonical target.]) |
| AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}", [Target CPU.]) |
| AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}", [Target vendor.]) |
| AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.]) |
| |
| AC_PROG_YACC |
| AM_PROG_LEX |
| |
| ALL_LINGUAS="fr tr es rw id ru fi ja zh_CN" |
| ZW_GNU_GETTEXT_SISTER_DIR |
| AM_PO_SUBDIRS |
| |
| AM_MAINTAINER_MODE |
| AM_CONDITIONAL(GENINSRC_NEVER, false) |
| AC_EXEEXT |
| |
| AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h errno.h sys/types.h limits.h locale.h time.h sys/stat.h) |
| ACX_HEADER_STRING |
| |
| # Put this here so that autoconf's "cross-compiling" message doesn't confuse |
| # people who are not cross-compiling but are compiling cross-assemblers. |
| AC_MSG_CHECKING(whether compiling a cross-assembler) |
| if test "${host}" = "${target}"; then |
| cross_gas=no |
| else |
| cross_gas=yes |
| AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?]) |
| fi |
| AC_MSG_RESULT($cross_gas) |
| |
| dnl ansidecl.h will deal with const |
| dnl AC_C_CONST |
| AC_FUNC_ALLOCA |
| AC_C_INLINE |
| |
| # VMS doesn't have unlink. |
| AC_CHECK_FUNCS(unlink remove, break) |
| AC_CHECK_FUNCS(sbrk setlocale) |
| |
| AM_LC_MESSAGES |
| |
| # do we need the math library? |
| case "${need_libm}" in |
| yes) |
| LT_LIB_M |
| AC_SUBST(LIBM) |
| ;; |
| esac |
| |
| # Some non-ANSI preprocessors botch requoting inside strings. That's bad |
| # enough, but on some of those systems, the assert macro relies on requoting |
| # working properly! |
| GAS_WORKING_ASSERT |
| |
| # On some systems, the system header files may not declare malloc, realloc, |
| # and free. There are places where gas needs these functions to have been |
| # declared -- such as when taking their addresses. |
| gas_test_headers=" |
| #ifdef HAVE_MEMORY_H |
| #include <memory.h> |
| #endif |
| #ifdef HAVE_STRING_H |
| #include <string.h> |
| #else |
| #ifdef HAVE_STRINGS_H |
| #include <strings.h> |
| #endif |
| #endif |
| #ifdef HAVE_STDLIB_H |
| #include <stdlib.h> |
| #endif |
| #ifdef HAVE_UNISTD_H |
| #include <unistd.h> |
| #endif |
| " |
| |
| # Does errno.h declare errno, or do we have to add a separate declaration |
| # for it? |
| GAS_CHECK_DECL_NEEDED(errno, f, int f, [ |
| #ifdef HAVE_ERRNO_H |
| #include <errno.h> |
| #endif |
| ]) |
| |
| AC_MSG_CHECKING(for a known getopt prototype in unistd.h) |
| AC_CACHE_VAL(gas_cv_decl_getopt_unistd_h, |
| [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])], |
| gas_cv_decl_getopt_unistd_h=yes, gas_cv_decl_getopt_unistd_h=no)]) |
| AC_MSG_RESULT($gas_cv_decl_getopt_unistd_h) |
| if test $gas_cv_decl_getopt_unistd_h = yes; then |
| AC_DEFINE([HAVE_DECL_GETOPT], 1, |
| [Is the prototype for getopt in <unistd.h> in the expected format?]) |
| fi |
| |
| GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers) |
| GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers) |
| GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers) |
| GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers) |
| GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers) |
| GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers) |
| |
| AC_CHECK_DECLS([free, getenv, malloc, mempcpy, realloc, stpcpy, strstr, vsnprintf, asprintf]) |
| |
| BFD_BINARY_FOPEN |
| |
| # Link in zlib if we can. This allows us to write compressed debug sections. |
| AM_ZLIB |
| |
| # Support for VMS timestamps via cross compile |
| |
| if test "$ac_cv_header_time_h" = yes; then |
| GAS_HAVE_TIME_TYPE_MEMBER(struct tm, tm_gmtoff) |
| fi |
| |
| if test "$ac_cv_header_sys_stat_h" = yes; then |
| GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_sec) |
| GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_nsec) |
| fi |
| |
| |
| dnl Required for html, pdf, install-pdf and install-html targets. |
| AC_SUBST(datarootdir) |
| AC_SUBST(docdir) |
| AC_SUBST(htmldir) |
| AC_SUBST(pdfdir) |
| |
| dnl This must come last. |
| |
| dnl We used to make symlinks to files in the source directory, but now |
| dnl we just use the right name for .c files, and create .h files in |
| dnl the build directory which include the right .h file. Make sure |
| dnl the old symlinks don't exist, so that a reconfigure in an existing |
| dnl directory behaves reasonably. |
| |
| AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in) |
| AC_CONFIG_COMMANDS([default], |
| [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h |
| echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h |
| echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h |
| echo '#include "te-'"${te_file}"'.h"' > targ-env.h |
| echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h |
| if test "x$cgen_cpu_prefix" != x ; then |
| echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h |
| fi], |
| [target_cpu_type=${target_cpu_type} |
| cgen_cpu_prefix=${cgen_cpu_prefix} |
| obj_format=${obj_format} |
| te_file=${te_file}]) |
| |
| AC_OUTPUT |