1 dnl Process this file with autoconf to produce a configure script. 2 dnl 3 dnl Copyright (C) 2012-2014 Free Software Foundation, Inc. 4 dnl 5 dnl This file is free software; you can redistribute it and/or modify 6 dnl it under the terms of the GNU General Public License as published by 7 dnl the Free Software Foundation; either version 3 of the License, or 8 dnl (at your option) any later version. 9 dnl 10 dnl This program is distributed in the hope that it will be useful, 11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of 12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 dnl GNU General Public License for more details. 14 dnl 15 dnl You should have received a copy of the GNU General Public License 16 dnl along with this program; see the file COPYING3. If not see 17 dnl <http://www.gnu.org/licenses/>. 18 dnl 19 20 AC_PREREQ(2.59) 21 m4_include([../bfd/version.m4]) 22 AC_INIT([binutils], BFD_VERSION) 23 AC_CONFIG_SRCDIR(ar.c) 24 25 AC_CANONICAL_TARGET 26 AC_ISC_POSIX 27 28 AM_INIT_AUTOMAKE 29 30 AC_PROG_CC 31 AC_GNU_SOURCE 32 AC_USE_SYSTEM_EXTENSIONS 33 34 LT_INIT 35 ACX_LARGEFILE 36 37 AC_ARG_ENABLE(targets, 38 [ --enable-targets alternative target configurations], 39 [case "${enableval}" in 40 yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all') 41 ;; 42 no) enable_targets= ;; 43 *) enable_targets=$enableval ;; 44 esac])dnl 45 46 AC_ARG_ENABLE(deterministic-archives, 47 [AS_HELP_STRING([--enable-deterministic-archives], 48 [ar and ranlib default to -D behavior])], [ 49 if test "${enableval}" = no; then 50 default_ar_deterministic=0 51 else 52 default_ar_deterministic=1 53 fi], [default_ar_deterministic=0]) 54 55 AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic, 56 [Should ar and ranlib use -D behavior by default?]) 57 58 AC_ARG_ENABLE(default-strings-all, 59 [AS_HELP_STRING([--disable-default-strings-all], 60 [strings defaults to --data behavior])], [ 61 if test "${enableval}" = no; then 62 default_strings_all=0 63 else 64 default_strings_all=1 65 fi], [default_strings_all=1]) 66 67 AC_DEFINE_UNQUOTED(DEFAULT_STRINGS_ALL, $default_strings_all, 68 [Should strings use -a behavior by default?]) 69 70 AM_BINUTILS_WARNINGS 71 72 AC_CONFIG_HEADERS(config.h:config.in) 73 74 AH_VERBATIM([00_CONFIG_H_CHECK], 75 [/* Check that config.h is #included before system headers 76 (this works only for glibc, but that should be enough). */ 77 #if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__) 78 # error config.h must be #included before system headers 79 #endif 80 #define __CONFIG_H__ 1]) 81 82 if test -z "$target" ; then 83 AC_MSG_ERROR(Unrecognized target system type; please check config.sub.) 84 fi 85 if test -z "$host" ; then 86 AC_MSG_ERROR(Unrecognized host system type; please check config.sub.) 87 fi 88 89 AC_PROG_YACC 90 AM_PROG_LEX 91 92 ALL_LINGUAS="bg da es fi fr id it ja ro ru rw sk sv tr uk vi zh_CN zh_TW hr" 93 ZW_GNU_GETTEXT_SISTER_DIR 94 AM_PO_SUBDIRS 95 96 AM_MAINTAINER_MODE 97 AM_CONDITIONAL(GENINSRC_NEVER, false) 98 AC_EXEEXT 99 if test -n "$EXEEXT"; then 100 AC_DEFINE(HAVE_EXECUTABLE_SUFFIX, 1, 101 [Does the platform use an executable suffix?]) 102 fi 103 AC_DEFINE_UNQUOTED(EXECUTABLE_SUFFIX, "${EXEEXT}", 104 [Suffix used for executables, if any.]) 105 106 # host-specific stuff: 107 108 HDEFINES= 109 110 . ${srcdir}/../bfd/configure.host 111 112 AC_SUBST(HDEFINES) 113 AR=${AR-ar} 114 AC_SUBST(AR) 115 AC_PROG_RANLIB 116 AC_PROG_INSTALL 117 118 BFD_CC_FOR_BUILD 119 120 DEMANGLER_NAME=c++filt 121 case "${host}" in 122 *-*-go32* | *-*-msdos*) 123 DEMANGLER_NAME=cxxfilt 124 esac 125 AC_SUBST(DEMANGLER_NAME) 126 127 AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h limits.h locale.h sys/param.h wchar.h) 128 AC_HEADER_SYS_WAIT 129 ACX_HEADER_STRING 130 AC_FUNC_ALLOCA 131 AC_CHECK_FUNCS(sbrk utimes setmode getc_unlocked strcoll setlocale) 132 AC_CHECK_FUNC([mkstemp], 133 AC_DEFINE([HAVE_MKSTEMP], 1, 134 [Define to 1 if you have the `mkstemp' function.])) 135 AC_CHECK_FUNC([mkdtemp], 136 AC_DEFINE([HAVE_MKDTEMP], 1, 137 [Define to 1 if you have the `mkdtemp' function.])) 138 AC_MSG_CHECKING([for mbstate_t]) 139 AC_TRY_COMPILE([#include <wchar.h>], 140 [mbstate_t teststate;], 141 have_mbstate_t=yes, have_mbstate_t=no) 142 AC_MSG_RESULT($have_mbstate_t) 143 if test x"$have_mbstate_t" = xyes; then 144 AC_DEFINE(HAVE_MBSTATE_T,1,[Define if mbstate_t exists in wchar.h.]) 145 fi 146 147 # Some systems have frexp only in -lm, not in -lc. 148 AC_SEARCH_LIBS(frexp, m) 149 150 AM_LC_MESSAGES 151 152 AC_MSG_CHECKING(for time_t in time.h) 153 AC_CACHE_VAL(bu_cv_decl_time_t_time_h, 154 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <time.h>], [time_t i;])], 155 bu_cv_decl_time_t_time_h=yes, bu_cv_decl_time_t_time_h=no)]) 156 AC_MSG_RESULT($bu_cv_decl_time_t_time_h) 157 if test $bu_cv_decl_time_t_time_h = yes; then 158 AC_DEFINE([HAVE_TIME_T_IN_TIME_H], 1, 159 [Is the type time_t defined in <time.h>?]) 160 fi 161 162 AC_MSG_CHECKING(for time_t in sys/types.h) 163 AC_CACHE_VAL(bu_cv_decl_time_t_types_h, 164 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>], [time_t i;])], 165 bu_cv_decl_time_t_types_h=yes, bu_cv_decl_time_t_types_h=no)]) 166 AC_MSG_RESULT($bu_cv_decl_time_t_types_h) 167 if test $bu_cv_decl_time_t_types_h = yes; then 168 AC_DEFINE([HAVE_TIME_T_IN_TYPES_H], 1, 169 [Is the type time_t defined in <sys/types.h>?]) 170 fi 171 172 AC_MSG_CHECKING(for a known getopt prototype in unistd.h) 173 AC_CACHE_VAL(bu_cv_decl_getopt_unistd_h, 174 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])], 175 bu_cv_decl_getopt_unistd_h=yes, bu_cv_decl_getopt_unistd_h=no)]) 176 AC_MSG_RESULT($bu_cv_decl_getopt_unistd_h) 177 if test $bu_cv_decl_getopt_unistd_h = yes; then 178 AC_DEFINE([HAVE_DECL_GETOPT], 1, 179 [Is the prototype for getopt in <unistd.h> in the expected format?]) 180 fi 181 182 # Under Next 3.2 <utime.h> apparently does not define struct utimbuf 183 # by default. 184 AC_MSG_CHECKING([for utime.h]) 185 AC_CACHE_VAL(bu_cv_header_utime_h, 186 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h> 187 #ifdef HAVE_TIME_H 188 #include <time.h> 189 #endif 190 #include <utime.h>], 191 [struct utimbuf s;])], 192 bu_cv_header_utime_h=yes, bu_cv_header_utime_h=no)]) 193 AC_MSG_RESULT($bu_cv_header_utime_h) 194 if test $bu_cv_header_utime_h = yes; then 195 AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does <utime.h> define struct utimbuf?]) 196 fi 197 198 AC_CHECK_DECLS([environ, fprintf, getc_unlocked, getenv, 199 sbrk, snprintf, stpcpy, strnlen, strstr, vsnprintf]) 200 201 # Link in zlib if we can. This allows us to read compressed debug 202 # sections. This is used only by readelf.c (objdump uses bfd for 203 # reading compressed sections). 204 AM_ZLIB 205 206 BFD_BINARY_FOPEN 207 208 # target-specific stuff: 209 210 # Canonicalize the secondary target names. 211 if test -n "$enable_targets"; then 212 for targ in `echo $enable_targets | sed 's/,/ /g'` 213 do 214 result=`$ac_config_sub $targ 2>/dev/null` 215 if test -n "$result"; then 216 canon_targets="$canon_targets $result" 217 else 218 # Allow targets that config.sub doesn't recognize, like "all". 219 canon_targets="$canon_targets $targ" 220 fi 221 done 222 fi 223 224 AC_CHECK_HEADER(iconv.h) 225 AM_ICONV 226 227 all_targets=false 228 BUILD_NLMCONV= 229 NLMCONV_DEFS= 230 BUILD_SRCONV= 231 BUILD_DLLTOOL= 232 DLLTOOL_DEFS= 233 DLLTOOL_DEFAULT= 234 BUILD_WINDRES= 235 BUILD_WINDMC= 236 BUILD_DLLWRAP= 237 BUILD_MISC= 238 BUILD_INSTALL_MISC= 239 OBJDUMP_DEFS= 240 OBJDUMP_PRIVATE_VECTORS= 241 OBJDUMP_PRIVATE_OFILES= 242 od_vectors= 243 244 for targ in $target $canon_targets 245 do 246 if test "x$targ" = "xall"; then 247 all_targets=true 248 BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)' 249 BUILD_SRCONV='$(SRCONV_PROG)' 250 NLMCONV_DEFS="-DNLMCONV_I386 -DNLMCONV_ALPHA -DNLMCONV_POWERPC -DNLMCONV_SPARC" 251 BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)' 252 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 253 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 254 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 255 if test -z "$DLLTOOL_DEFAULT"; then 256 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386" 257 fi 258 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" 259 BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)' 260 od_vectors="$od_vectors objdump_private_desc_xcoff" 261 else 262 case $targ in 263 changequote(,)dnl 264 i[3-7]86*-*-netware*) 265 changequote([,])dnl 266 BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)' 267 NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_I386" 268 ;; 269 alpha*-*-netware*) 270 BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)' 271 NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_ALPHA" 272 ;; 273 powerpc*-*-netware*) 274 BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)' 275 NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_POWERPC" 276 ;; 277 sparc*-*-netware*) 278 BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)' 279 NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC" 280 ;; 281 esac 282 283 case $targ in 284 *-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;; 285 esac 286 287 case $targ in 288 arm-epoc-pe*) 289 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 290 if test -z "$DLLTOOL_DEFAULT"; then 291 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_EPOC" 292 fi 293 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM" 294 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 295 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 296 ;; 297 arm-wince-pe* | arm-*-wince | arm*-*-cegcc* | arm*-*-mingw32ce*) 298 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 299 if test -z "$DLLTOOL_DEFAULT"; then 300 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_WINCE" 301 fi 302 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_WINCE -DDLLTOOL_ARM" 303 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 304 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 305 ;; 306 arm-*-pe*) 307 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 308 if test -z "$DLLTOOL_DEFAULT"; then 309 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM" 310 fi 311 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM" 312 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 313 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 314 ;; 315 x86_64-*-mingw* | x86_64-*-cygwin*) 316 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 317 if test -z "$DLLTOOL_DEFAULT"; then 318 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MX86_64" 319 fi 320 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MX86_64" 321 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 322 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 323 BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)' 324 ;; 325 changequote(,)dnl 326 i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*) 327 changequote([,])dnl 328 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 329 if test -z "$DLLTOOL_DEFAULT"; then 330 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386" 331 fi 332 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" 333 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 334 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 335 BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)' 336 ;; 337 changequote(,)dnl 338 i[3-7]86-*-interix) 339 changequote([,])dnl 340 BUILD_DLLTOOL='$(DLLTOOL_PROG)' 341 if test -z "$DLLTOOL_DEFAULT"; then 342 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386" 343 fi 344 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" 345 ;; 346 changequote(,)dnl 347 powerpc*-aix5.[01]) 348 changequote([,])dnl 349 ;; 350 changequote(,)dnl 351 powerpc*-aix[5-9].*) 352 changequote([,])dnl 353 OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT" 354 ;; 355 powerpc*-*-pe* | powerpc*-*-cygwin*) 356 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 357 if test -z "$DLLTOOL_DEFAULT"; then 358 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_PPC" 359 fi 360 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC" 361 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 362 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 363 ;; 364 powerpc*-*-linux* | powerpc*-*-elf* | powerpc*-*-eabi*) 365 case "$BUILD_INSTALL_MISC" in 366 *embedspu*) ;; 367 *) BUILD_INSTALL_MISC="${BUILD_INSTALL_MISC} embedspu" 368 esac 369 ;; 370 sh*-*-pe) 371 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 372 if test -z "$DLLTOOL_DEFAULT"; then 373 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_SH" 374 fi 375 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH" 376 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 377 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 378 ;; 379 spu-*-*) 380 BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)' 381 ;; 382 mips*-*-pe) 383 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 384 if test -z "$DLLTOOL_DEFAULT"; then 385 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MIPS" 386 fi 387 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS" 388 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 389 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 390 ;; 391 mcore-*-pe) 392 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 393 if test -z "$DLLTOOL_DEFAULT"; then 394 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE" 395 fi 396 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE" 397 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 398 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 399 ;; 400 mcore-*-elf) 401 BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' 402 if test -z "$DLLTOOL_DEFAULT"; then 403 DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE_ELF" 404 fi 405 DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF" 406 ;; 407 mep-*) 408 OBJDUMP_DEFS="-DSKIP_ZEROES=256 -DSKIP_ZEROES_AT_END=0" 409 ;; 410 esac 411 412 # Add objdump private vectors. 413 case $targ in 414 powerpc-*-aix*) 415 od_vectors="$od_vectors objdump_private_desc_xcoff" 416 ;; 417 *-*-darwin*) 418 od_vectors="$od_vectors objdump_private_desc_mach_o" 419 ;; 420 esac 421 fi 422 done 423 424 # Uniq objdump private vector, build objdump target ofiles. 425 od_files= 426 f="" 427 for i in $od_vectors ; do 428 case " $f " in 429 *" $i "*) ;; 430 *) 431 f="$f $i" 432 OBJDUMP_PRIVATE_VECTORS="$OBJDUMP_PRIVATE_VECTORS &$i," 433 case $i in 434 objdump_private_desc_xcoff) 435 od_files="$od_files od-xcoff" ;; 436 objdump_private_desc_mach_o) 437 od_files="$od_files od-macho" ;; 438 *) AC_MSG_ERROR(*** unknown private vector $i) ;; 439 esac 440 ;; 441 esac 442 done 443 444 # Uniq objdump target ofiles 445 f="" 446 for i in $od_files ; do 447 case " $f " in 448 *" $i "*) ;; 449 *) 450 f="$f $i" 451 OBJDUMP_PRIVATE_OFILES="$OBJDUMP_PRIVATE_OFILES $i.$objext" 452 ;; 453 esac 454 done 455 456 DLLTOOL_DEFS="$DLLTOOL_DEFS $DLLTOOL_DEFAULT" 457 458 if test "${with_windres+set}" = set; then 459 BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' 460 fi 461 462 if test "${with_windmc+set}" = set; then 463 BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)' 464 fi 465 466 OBJDUMP_DEFS="${OBJDUMP_DEFS} -DOBJDUMP_PRIVATE_VECTORS=\"${OBJDUMP_PRIVATE_VECTORS}\"" 467 468 AC_SUBST(NLMCONV_DEFS) 469 AC_SUBST(BUILD_NLMCONV) 470 AC_SUBST(BUILD_SRCONV) 471 AC_SUBST(BUILD_DLLTOOL) 472 AC_SUBST(DLLTOOL_DEFS) 473 AC_SUBST(BUILD_WINDRES) 474 AC_SUBST(BUILD_WINDMC) 475 AC_SUBST(BUILD_DLLWRAP) 476 AC_SUBST(BUILD_MISC) 477 AC_SUBST(BUILD_INSTALL_MISC) 478 AC_SUBST(OBJDUMP_DEFS) 479 AC_SUBST(OBJDUMP_PRIVATE_OFILES) 480 481 AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.]) 482 483 targ=$target 484 . $srcdir/../bfd/config.bfd 485 if test "x$targ_underscore" = "xyes"; then 486 UNDERSCORE=1 487 else 488 UNDERSCORE=0 489 fi 490 AC_DEFINE_UNQUOTED(TARGET_PREPENDS_UNDERSCORE, $UNDERSCORE, 491 [Define to 1 if user symbol names have a leading underscore, 0 if not.]) 492 493 # Emulation 494 targ=$target 495 . ${srcdir}/configure.tgt 496 EMULATION=$targ_emul 497 EMULATION_VECTOR=$targ_emul_vector 498 499 AC_SUBST(EMULATION) 500 AC_SUBST(EMULATION_VECTOR) 501 502 # Required for html and install-html 503 AC_SUBST(datarootdir) 504 AC_SUBST(docdir) 505 AC_SUBST(htmldir) 506 AC_SUBST(pdfdir) 507 508 AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in) 509 AC_OUTPUT 510