pal-0.3.0/000777 000161 000120 00000000000 12017006037 012344 5ustar00timjadmin000000 000000 pal-0.3.0/aclocal.m4000644 000161 000120 00001210014 12017005756 014206 0ustar00timjadmin000000 000000 # generated automatically by aclocal 1.9.6-starlink -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 47 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. AC_DEFUN([_LT_COMPILER_BOILERPLATE], [ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. AC_DEFUN([_LT_LINKER_BOILERPLATE], [ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_LINKER_BOILERPLATE # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_LINK_IFELSE(AC_LANG_PROGRAM,[ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for *BSD fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp $SED '/^$/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- #- set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided and an installed libltdl is not found, it is # assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_builddir and top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # --------------- AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # -------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # # Check for any special shared library compilation flags. # _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= if test "$GCC" = no; then case $host_os in sco3.2v5*) _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ;; esac fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no fi fi # # Check to make sure the static flag actually works. # AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. We must also pass each convience library through # to the system linker between allextract/defaultextract. # The C++ compiler will combine linker options so we # cannot just pass the convience library names through # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux*) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux*) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; sco3.2v5*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* ) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then # echo "G77=$G77,compiler=$compiler,tagname=$tagname" if test "$tagname" = "F77"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi output_verbose_link_cmd='echo' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; sco3.2v5*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine linker options so we # cannot just pass the convience library names through # without $wl, iff we do not link with $LD. # Luckily, gcc supports the same syntax we need for Sun Studio. # Supported since Solaris 2.6 (maybe 2.5.1?) case $wlarc in '') _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4.2uw2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv5*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_MSG_RESULT([$SED]) ]) # -*- mode: m4 -*- # Starlink M4 macros for autoconf # original starconf.m4, installed by starconf 1.3, rnum=1003000 # DO NOT EDIT: it may be overwritten when starconf is next run # Copyright: # Copyright (C) 2003-2005 Council for the Central Laboratory of the # Research Councils # # Licence: # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public Licence as # published by the Free Software Foundation; either version 2 of # the Licence, or (at your option) any later version. # # This program is distributed in the hope that it will be # useful,but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public Licence for more details. # # You should have received a copy of the GNU General Public Licence # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street,Fifth Floor, Boston, MA # 02110-1301, USA # STAR_DEFAULTS(options='') # ------------------------- # Defaults for Starlink configure.ac files. The optional OPTIONS # argument holds a space-separated list of option keywords, of which # the only ones at present are `per-package-dirs', which causes # applications and help to be installed in a package-specific # directory, and 'docs-only', which indicates that the component contains # only documentation. # # Certain features of this macro are documented in SSN/78, in particular # - Sets STARLINK # - Sets AM_FCFLAGS, AM_FFLAGS, AM_CFLAGS, AM_LDFLAGS to appropriate values # - Sets PACKAGE_VERSION_{MAJOR,MINOR,RELEASE,INTEGER} # The behaviour of these should not be changed without changing the # documentation, or without due consideration of the packages which use # the earlier behaviour. Everything else is, in principle, private # (not that that's going to stop folk). AC_DEFUN([STAR_DEFAULTS], [## m4_ifval([$1], [AC_FOREACH([Option], [$1], [m4_case(Option, [per-package-dirs], [_star_per_package_dirs=:], [docs-only], [m4_define([_poss_STAR_RESTFP_FIX], [])dnl _star_docs_only=:], [AC_FATAL([$0: unrecognised option $1])]) ])], []) m4_ifdef([_poss_STAR_RESTFP_FIX], [], [m4_define([_poss_STAR_RESTFP_FIX], [_STAR_RESTFP_FIX])]) m4_define([per_dir_PREFIX], [m4_ifdef([OVERRIDE_PREFIX], [OVERRIDE_PREFIX], [/star])]) m4_define([per_dir_STARLINK], [m4_ifdef([OVERRIDE_STARLINK], [OVERRIDE_STARLINK], [/star])]) test -n "$_star_per_package_dirs" || _star_per_package_dirs=false test -n "$_star_docs_only" || _star_docs_only=false # Ensure that STARLINK has a value, defaulting to # /star. Note that this directory may be # different from /star, and reflects the value of # STARCONF_DEFAULT_STARLINK that the `starconf' package was configured # with before its installation. # # We use $STARLINK as the location of any other Starlink tools we need # to use during the building of our packages, and for the location of # any manifests we need to check. It is permissable for it to be # different from $(prefix): this is partly because we have no way of # enforcing that the two be the same, since the user can set # prefix=xxx on the `make install' command line, and partly so that it # is possible to make a test version of a new package, using tools # from an old installation, but installing in a new place. # # However, we install software in /star by # default. This is so even if $STARLINK and STARCONF_DEFAULT_STARLINK # are different, because in this case we are planning to use a # previous installation in $STARLINK or $STARCONF_DEFAULT_STARLINK, # but install the newly built tool elsewhere. # # In most cases, including the most important case where we are # building the tree from scratch, in a checked out directory, # STARLINK, STARCONF_DEFAULT_STARLINK and STARCONF_DEFAULT_PREFIX will # all be the same. That's OK because a separate aspect of the build # process, respecting the various dependencies expresses in source # directories, ensures that we don't use (and install) any Starlink # tools in one component before that component has been build and # installed. AC_PREFIX_DEFAULT(per_dir_PREFIX)dnl test -n "$STARLINK" || STARLINK=per_dir_STARLINK # Handle the --with-starlink option. If --with-starlink is present # with no argument (the default), we do nothing as this simply # indicates that this is part of a Starlink tree. If it has an # argument, then this overrides the location of the Starlink tree. # Option --without-starlink or --with-starlink=no indicates that this # is being built _not_ as part of a Starlink build (that is, it's # being distributed as something other than a Starlink package). In # this case, the variable STARLINK is unset. AC_ARG_WITH(starlink, AS_HELP_STRING([--with-starlink], [Starlink tree to use (default ${STARLINK:=per_dir_STARLINK})]), [if test -z "$withval" -o "$withval" = yes; then : nothing needs to be done elif test "X$withval" = Xno; then unset STARLINK elif test -d "$withval"; then STARLINK="$withval" else AC_MSG_WARN([--with-starlink given nonexistent directory; ignored: using default $STARLINK instead]) fi]) if test -n "$STARLINK"; then AC_MSG_NOTICE([Starlink tree located at $STARLINK]) else AC_MSG_NOTICE([Not being built as part of the Starlink tree]) fi # Handle --without-stardocs. Don't build and install documentation. # Default is --with-stardocs. _star_build_docs=: AC_ARG_WITH(stardocs, AS_HELP_STRING([--without-stardocs], [Do not install built documentation (default --with)]), [if test -z "$withval"; then _star_build_docs=: # default elif test "X$withval" = Xno; then _star_build_docs=false elif test "X$withval" = Xyes; then _star_build_docs=: else AC_MSG_WARN([bad arg to --with-stardocs: using yes]) _star_build_docs=: fi]) if $_star_docs_only; then if $_star_build_docs; then : OK else AC_MSG_WARN([Building without documentation in a docs-only directory]) fi fi # Everything depends on where /star is. Declare STARLINK as a # `precious variable'. Amongst other things, this will make # ./configure squeal if the package is re-configured with an # inconsistent value of this variable. AC_ARG_VAR(STARLINK, [Location of a current Starlink tree (used if necessary)])dnl # AC_SUBST the STARLINK variable. Macro AC_ARG_VAR does this anyway, # but automake doesn't know that (in 1.6 at least): however any # variable that automake finds has been AC_SUBSTed, it includes in # Makefile.in, and we need that. AC_SUBST(STARLINK) # Use the above information: $STARLINK indicates a preexisting # Starlink tree. # # Avoid doing anything if $STARLINK was unset above. # # Add library search paths using STAR_LDFLAGS. Do it this way, rather than # by defining LIBS (which is also a non-user variable): (a) these are # really options to the linker, rather than adjustments to the set of # libraries, so this makes sense; also (b) adding them to LIBS is too # late, since that adds -L _after_ any -l options found in *_LDADD. if test -n "$STARLINK"; then STAR_CPPFLAGS="-I$STARLINK/include" STAR_FCFLAGS="-I$STARLINK/include" STAR_FFLAGS="-I$STARLINK/include" STAR_LDFLAGS="-L$STARLINK/lib" else STAR_CPPFLAGS= STAR_FCFLAGS= STAR_FFLAGS= STAR_LDFLAGS= fi AC_SUBST(STAR_CPPFLAGS) AC_SUBST(STAR_FCFLAGS) AC_SUBST(STAR_FFLAGS) AC_SUBST(STAR_LDFLAGS) _poss_STAR_RESTFP_FIX # Installation directory options (these are no longer handled # by _STAR_EXTRADIR_COMMON). There should be an entry here for each of # Starlink's special installation locations. AC_SUBST([stardocsdir], ['${prefix}/docs'])dnl documentation AC_SUBST([staretcdir], ['${prefix}/etc'])dnl AC_SUBST([starexamplesdir], ['${prefix}/examples'])dnl AC_SUBST([starfacsdir], ['${prefix}/help'])dnl facilities files AC_SUBST([starhelpdir], ['${prefix}/help'])dnl other help files AC_SUBST([starnewsdir], ['${prefix}/news'])dnl # Certain directories are affected by the $_star_per_package_dir variable; # if it's true, then add the $PACKAGE_NAME to the directory. # The directories currently adjusted by this are bin and help; # there are others: see PWD's message of 2004-02-16 # if $_star_per_package_dirs; then bindir="$bindir/$PACKAGE_NAME" starhelpdir="$starhelpdir/$PACKAGE_NAME" staretcdir="$staretcdir/$PACKAGE_NAME" AC_MSG_NOTICE([[STAR_DEFAULTS] has option per-package-dirs:]) AC_MSG_NOTICE([ bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir]) # Note that starfacsdir is unaffected by per-package-dirs -- facility # files must always be installed in .../help (this also facilitates # changing this installation location in future, to somewhere with a # more logical name than .../help). fi # Dependency declarations and checks. # Everything is dependent on starconf, so we don't have to declare that # for each package separately. # STAR_DEPENDENCIES_ATTRIBUTES is currently not used. STAR_DEPENDENCIES_ATTRIBUTES='' STAR_DEPENDENCIES_CHILDREN='' AC_SUBST(STAR_DEPENDENCIES_ATTRIBUTES) AC_SUBST(STAR_DEPENDENCIES_CHILDREN) # List of documentation. See [STAR_LATEX_DOCUMENTATION]. # STAR_DOCUMENTATION is a list of document codes, STAR_DOCUMENTATION= AC_SUBST([STAR_DOCUMENTATION]) # Create a PACKAGE_VERSION_INTEGER variable, which contains the # package's version number as an integer major*1e6+minor*1e3+release. eval [`echo $VERSION | sed -e 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/PACKAGE_VERSION_MAJOR=\1; PACKAGE_VERSION_MINOR=\2; PACKAGE_VERSION_RELEASE=\3;/'`] test -n "$PACKAGE_VERSION_MAJOR" || PACKAGE_VERSION_MAJOR=0 test -n "$PACKAGE_VERSION_MINOR" || PACKAGE_VERSION_MINOR=0 test -n "$PACKAGE_VERSION_RELEASE" || PACKAGE_VERSION_RELEASE=0 PACKAGE_VERSION_INTEGER=`expr $PACKAGE_VERSION_MAJOR \* 1000000 + $PACKAGE_VERSION_MINOR \* 1000 + $PACKAGE_VERSION_RELEASE` AC_SUBST(PACKAGE_VERSION_MAJOR) AC_SUBST(PACKAGE_VERSION_MINOR) AC_SUBST(PACKAGE_VERSION_RELEASE) AC_SUBST(PACKAGE_VERSION_INTEGER) dnl Don't put this into config.h -- subst a .h file if required. dnl May change this in future dnl AC_DEFINE_UNQUOTED([PACKAGE_VERSION_INTEGER], $PACKAGE_VERSION_INTEGER, dnl [Integer version number, in the form major*1e6+minor*1e3+release]) # When we do dependency checking, using the dependencies declared in # the package's configure.ac, we do so by looking at what tools have # already been installed in the Starlink tree. The tree in question # is to be found under $STARLINK (see above), so we check that a # package is installed by checking that its manifest can be found in # $STARLINK/manifests. We don't AC_SUBST this. current_MANIFESTS=$STARLINK/manifests # When we install manifests, however, they should go in the # installation directory. Allow this to be defaulted from the environment. # In particular, if it is set to null in the environment, this will # suppress the installation of manifests. : ${STAR_MANIFEST_DIR='$(prefix)/manifests'} AC_SUBST(STAR_MANIFEST_DIR) # Each package updates the "starlink.version" file installed into the # manifests directory. This tracks the last git sha1 checkin for # the current code state by running the git show on the HEAD. # Define GIT as the program to run, but allow it to be overridden # (most likely by ":" to avoid the overhead). # Also requires that STAR_SOURCE_ROOT_DIR is defined to locate the # head of the source tree. : ${GIT='git'} if test "${GIT}" = "git"; then AC_PATH_PROG(GIT, git) fi AC_SUBST(GIT) : ${STAR_SOURCE_ROOT_DIR=''} AC_SUBST(STAR_SOURCE_ROOT_DIR) # Although PACKAGE_VERSION is a default output variable, it isn't # added as a Makefile variable by default. We need it below, however, # so add it now. AC_SUBST(PACKAGE_VERSION) # Initialise state of predist/postdist flags (see STAR_PREDIST_SOURCES). # The value of _star_predist_status must be inherited by any # ./configure run in a subdirectory, so that we there avoid the predist # test of starconf.status: in a pre-distribution state, this file must # be present in the component directory (where we are running # ./configure), but must not be present in any subdirectory. _star_predist_status=unknown PREDIST='#' # safe default AC_SUBST(PREDIST) # pax and/or tar are used in some install targets. # Note: value-if-not-found should be blank, so this can be tested for. AC_PATH_PROG(PAX, pax) AC_PATH_PROGS(TAR, [gnutar tar]) ALL_TARGET=all-am-normal # Default $prefix. This is done by the standard autoconf configure, but at # a slightly later stage than this. Doing it here, as part of STAR_[]DEFAULTS # means that the defaulted value of $prefix can be used within the body of # the configure.ac, for example to pass it to a ./configure in a subdirectory. test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ])# STAR_DEFAULTS # STAR_MESSGEN([msgfile-list]) # ---------------------------- # # Handle generating message, error, and facility files. # # Declare that we will need to use the messgen utility. This macro # does not by itself cause the messgen rules to be included in the # makefile -- that is done by automake, when it sees a # 'include_MESSAGES' or 'noinst_MESSAGES' variable. # # The optional argument is a space-separated list of files, each of # which has a set of message declarations in it, in the format # prescribed by the messgen utility. If this is present, then the # named files are declared as pre-distribution files (the macro calls # STAR_PREDIST_SOURCES on them), and so the resulting configure script # should expect not to find them in an unpacked distribution. This is # useful as documentation or as a shortcut for calling the latter # macro, but recall that it is the presence of the automake # 'include_MESSAGES' variable which does the work. # # The macro may be called more than once if you have more than one # .msg file in the directory. # # The files listed in the '_MESSAGES' variable will often have to be # declared as `BUILT_SOURCES'. # # The macro also implicitly declares a `sourceset' dependency on the # messgen package. AC_DEFUN([STAR_MESSGEN], [# $_star_docs_only && AC_MSG_ERROR([STAR[]_MESSGEN in docs-only directory]) STAR_DECLARE_DEPENDENCIES([sourceset], [messgen]) m4_ifval([$1], [STAR_PREDIST_SOURCES($1)]) STAR_CHECK_PROGS(messgen) ])# STAR_MESSGEN # STAR_PREDIST_SOURCES(source-files) # ---------------------------------- # # Give a (space-separated) list of files which should exist only in # the pre-distribution (ie, repository checkout) state. If one of # these is found, then the substitution variable PREDIST is set to a # blank. We should find either all of the marker files or none of # them; if only some of the marker files are found, this is probably # an error of some type, so warn about it. This means, by the way, # that it is the presence or absence of the first marker file which # determines whether we are in the predist or postdist state, with the # rest providing consistency checks. # # The macro may be called more than once. Multiple calls are # equivalent to a single call with all the marker files in the list. # Automake checks that the files listed here are not in the list of # distributed files, and issues a warning if they are. AC_DEFUN([STAR_PREDIST_SOURCES], [m4_ifval([$1], [], [AC_FATAL([$0: called with no stamp file])])dnl _star_tmp='$1' for marker in $_star_tmp do if test -f $marker; then _star_predist_marker_present=: AC_MSG_NOTICE([found predist marker file $marker]) else _star_predist_marker_present=false fi case $_star_predist_status in unknown) if $_star_predist_marker_present; then # we do want to build sourceset files _star_predist_status=predist PREDIST= AC_MSG_NOTICE([in pre-distribution state]) else _star_predist_status=postdist PREDIST='#' AC_MSG_NOTICE([in post-distribution state]) fi ;; predist) if $_star_predist_marker_present; then : OK else AC_MSG_WARN([Building predist, but marker file $marker is not present]) fi ;; postdist) if $_star_predist_marker_present; then AC_MSG_WARN([In postdistribution state, but predist marker file $marker is present]) fi ;; *) AC_MSG_ERROR([impossible predist status $_star_predist_status]) ;; esac done ])# STAR_PREDIST_SOURCES # STAR_CNF_COMPATIBLE_SYMBOLS # --------------------------- # # Work out what is required to have the Fortran compiler produce # library symbols which are compatible with those expected by the CNF # package. If you are building a library in which C code refers to # Fortran libraries, then you should call this macro, which possibly # adjusts the AM_FCFLAGS variable. That is, if you include cnf.h, you # should have this macro in the configure.ac. # # This macro deals with the following issue. The cnf.h header # includes a macro F77_EXTERNAL_NAME which mangles a C name into the # corresponding name the Fortran compiler would generate; this # generally means no more than appending a single underscore. As the # autoconf documentation for AC_FC_WRAPPERS points out, this is less # general than it could be, as some Fortrans fold symbols to # uppercase, and some (in particular g77) add two underscores to # symbols which already contain one (thus mangling 'ab' to 'ab_', but # 'a_b' to 'a_b__'). This behaviour would break the F77_EXTERNAL_NAME # macro, which is used throughout the Starlink code in both cases, # unless we compiled all the Starlink Fortran libraries in a mode which # suppressed this second underscore. Working out how to do that -- # if it's necessary at all -- is what this macro does. # # The more restricted interface of F77_EXTERNAL_NAME is, by the way, # the reason why we cannot simply copy the FC_FUNC definition to the # cnf.h file as F77_EXTERNAL_NAME: the latter macro is used for # symbols both with and without an underscore. # # If we ever have to migrate the Starlink software to a Fortran which # does more complicated name mangling, we'll almost certainly have to # perform more serious surgery on cnf.h, using the results of # AC_FC_WRAPPERS, along with similar surgery on the code which invokes # it. # # This macro is designed to work with CNF, however it does _not_ # require the cnf.h headers to be installed, because it should remain # callable at configuration time before _anything_ has been installed. # In the test code below, we therefore emulate the definition of # F77_EXTERNAL_NAME in cnf.h, which appends a single underscore. # to the end of C symbols. # AC_DEFUN([STAR_CNF_COMPATIBLE_SYMBOLS], [$_star_docs_only && AC_MSG_ERROR([STAR[]_CNF_COMPATIBLE_SYMBOLS in docs-only dir]) AC_CACHE_CHECK([how to make Fortran and C play nicely], [star_cv_cnf_compatible_symbols], [AC_REQUIRE([AC_PROG_FC])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_LANG_PUSH([C]) AC_LANG_CONFTEST([AC_LANG_SOURCE([ void funcone_() { return; } void func_two_() { return; } ])]) if (eval $ac_compile) 2>&5 then mv conftest.$ac_objext c-conftest.$ac_objext else AC_MSG_ERROR([cannot compile a C program!]) fi AC_LANG_POP(C) AC_LANG_PUSH([Fortran]) AC_LANG_CONFTEST([AC_LANG_SOURCE([ PROGRAM conftest CALL funcone CALL func_two END ])]) star_cv_cnf_compatible_symbols=cantlink # The only Fortran we (need to) handle at present is # g77, which has a -fno-second-underscore option for # simplifying the mangling here. Other Fortrans we've # used do only the single-underscore mangling. for opt in "" "-fno-second-underscore" do if $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5 then star_cv_cnf_compatible_symbols=$opt break fi done AC_LANG_POP([Fortran]) rm -f conftest* c-conftest* ]) if test "$star_cv_cnf_compatible_symbols" = cantlink then AC_MSG_ERROR([cannot work out how]) else STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_cnf_compatible_symbols" STAR_FFLAGS="$STAR_FFLAGS $star_cv_cnf_compatible_symbols" fi ])# STAR_CNF_COMPATIBLE_SYMBOLS # STAR_CNF_F2C_COMPATIBLE # ----------------------- # # Work out if the compiler is using 'f2c' compatible calling conventions. # # The `f2c' calling conventions, used by GNU Fortran compilers, require # functions that return type REAL to actually return the C type 'double' # (there is also special handling of COMPLEX returns, but that's not supported # by CNF). When operating in 'non-f2c' mode such functions return the expected # C type 'float'. # # The effect of this macro is subsitute the variable REAL_FUNCTION_TYPE # to either float or double as required. # # This function is not infallable and will usually return float for GNU # compilers, as the calling convention seems to not matter on 32-bit platforms # for the test in use. A stronger test would be to attempt calling a intrinsic # function, which is supposed to fail. Non-GNU compilers should always # return float. However, this test is used as it is all that is required. # AC_DEFUN([STAR_CNF_F2C_COMPATIBLE], [$_star_docs_only && AC_MSG_ERROR([STAR[]_CNF_F2C_SYMBOLS in docs-only dir]) AC_CACHE_CHECK([if $FC is in strict f2c compatible mode], [star_cv_cnf_f2c_compatible], [AC_REQUIRE([AC_PROG_FC])dnl if test "$ac_cv_fc_compiler_gnu" = yes; then AC_REQUIRE([AC_PROG_CC])dnl AC_LANG_PUSH([C]) AC_LANG_CONFTEST([AC_LANG_SOURCE([ float fred_() { return 1.0f; } ])]) if (eval $ac_compile) 2>&5 then mv conftest.$ac_objext c-conftest.$ac_objext else AC_MSG_ERROR([cannot compile a C function!]) fi AC_LANG_POP(C) AC_LANG_PUSH([Fortran]) AC_LANG_CONFTEST([AC_LANG_SOURCE([ PROGRAM F2CTEST REAL FRED REAL R R = FRED() IF ( R .NE. 0.0 ) THEN WRITE(*,*) 'no' ELSE WRITE(*,*) 'yes' ENDIF END ])]) star_cv_cnf_f2c_compatible=yes $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5 if test -r conftest then star_cv_cnf_f2c_compatible=`eval conftest | sed 's/\ //g'` > /dev/null else AC_MSG_ERROR([failed to link program]) fi AC_LANG_POP([Fortran]) rm -f conftest* c-conftest* else # Not a GNU compiler. star_cv_cnf_f2c_compatible=no fi ]) if test "$star_cv_cnf_f2c_compatible" = "yes" then AC_SUBST(REAL_FUNCTION_TYPE, double) else AC_SUBST(REAL_FUNCTION_TYPE, float) fi ])# STAR_CNF_F2C_COMPATIBLE # STAR_CNF_BLANK_COMMON # --------------------- # Define the global symbol used to access the Fortran blank common block. # Usually under UNIX this is _BLNK__, but gfortran uses __BLNK__, so we # need to check for that. Gfortran is just detected by being a GNU compiler # and having "Fortran (GCC) 4.x[x].x[x]" as part of its --version output. # # The effect of this macro is to substitute BLANK_COMMON_SYMBOL with # the expected value. # AC_DEFUN([STAR_CNF_BLANK_COMMON], [AC_CACHE_CHECK([symbol used for blank common in Fortran], [star_cv_blank_common_symbol], [AC_REQUIRE([AC_PROG_FC]) star_cv_blank_common_symbol=_BLNK__ if test "$ac_cv_fc_compiler_gnu" = yes; then if "$FC" --version 2>&1 < /dev/null | grep 'GNU Fortran.*[[4-9]]\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*' > /dev/null; then star_cv_blank_common_symbol=__BLNK__ fi fi]) AC_SUBST([BLANK_COMMON_SYMBOL], $star_cv_blank_common_symbol ) ])# STAR_CNF_BLANK_COMMON # STAR_PRM_COMPATIBLE_SYMBOLS # --------------------------- # # See if any special flags are required to support PRM and the use of the # PRM_PAR constants. If a typeless BOZ descriptor is available (usually 'X) # then this macro will have no effect, however, if there's no typeless BOZ # support any special Fortran compiler flags that are required when using # PRM_PAR will be defined as part of the STAR_FCFLAGS and STAR_FFLAGS # variables. # # In fact this macro is only currently used for the gfortran and Solaris f95 # compilers. Gfortran has no typeless BOZ support, so requires that the # -fno-range-check flag is set so that assigments to integers can silently # overflow (BOZ constants are replaced with their plain integer and floating # point equivalents). The Solaris f95 compiler doesn't allow assignments to # LOGICAL parameters, so we need to use the -f77 flag. # # In general this macro should be used by all packages that include PRM_PAR, # all monoliths are assumed to use this by default. # AC_DEFUN([STAR_PRM_COMPATIBLE_SYMBOLS], [$_star_docs_only && AC_MSG_ERROR([STAR[]_PRM_COMPATIBLE_SYMBOLS in docs-only dir]) AC_CACHE_CHECK([how to make compiler accept PRM constants], [star_cv_prm_compatible_symbols], [star_cv_prm_compatible_symbols="nocheck" AC_MSG_NOTICE([ ]) AC_FC_HAVE_TYPELESS_BOZ 2>&5 if test $ac_cv_fc_have_typeless_boz = no; then AC_FC_HAVE_OLD_TYPELESS_BOZ 2>&5 if test $ac_cv_fc_have_old_typeless_boz = no; then # Test if -f77 works. Note need to clear the cached variables # for these tests. unset ac_cv_fc_have_typeless_boz unset ac_cv_fc_have_old_typeless_boz old_FCFLAGS="$FCFLAGS" FCFLAGS="-f77 $FCFLAGS" AC_FC_HAVE_TYPELESS_BOZ 2>&5 if test $ac_cv_fc_have_typeless_boz = no; then AC_FC_HAVE_OLD_TYPELESS_BOZ 2>&5 if test $ac_cv_fc_have_old_typeless_boz = no; then star_cv_prm_compatible_symbols="nocheck" else star_cv_prm_compatible_symbols="-f77" fi else star_cv_prm_compatible_symbols="-f77" fi FCFLAGS="$old_FCFLAGS" if test "$star_cv_prm_compatible_symbols" = "nocheck"; then # Test if "-fno-range-check" works. AC_REQUIRE([AC_PROG_FC])dnl AC_LANG_PUSH([Fortran]) AC_LANG_CONFTEST([AC_LANG_SOURCE([ PROGRAM conftest INTEGER*2 VAL__BADUW PARAMETER ( VAL__BADUW = 65535 ) BYTE VAL__BADUB PARAMETER ( VAL__BADUB = 255 ) END ])]) if $FC -c $FCFLAGS -fno-range-check -o conftest conftest.f 2>&5 then star_cv_prm_compatible_symbols="-fno-range-check" fi AC_LANG_POP([Fortran]) rm -f conftest.f fi else star_cv_prm_compatible_symbols="" fi else star_cv_prm_compatible_symbols="" fi]) if test "$star_cv_prm_compatible_symbols" = "nocheck"; then AC_MSG_ERROR([cannot work out how]) else STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_prm_compatible_symbols" STAR_FFLAGS="$STAR_FFLAGS $star_cv_prm_compatible_symbols" fi ])# STAR_PRM_COMPATIBLE_SYMBOLS # STAR_CNF_TRAIL_TYPE # ------------------- # # Work out what type to use for the trailing lengths of character strings # passed from Fortran to C. See the "TRAIL" descriptions in SUN/209. # # For most compilers the maximum length of a string is limited to a 32bit # unsigned int, but for others, this can be a 64bit unsigned long. Currently # the only compilers with 64bit strings are 64bit Intel fortran and # Solaris studio12 with -m64. # # The test is only performed for 64bit compilers, all others are assumed # to use 32bit lengths. Various attempts to trap this issue permanently # using a test program have failed (especially for the Intel compiler), so the # actual test is to check for a known 64 bit compiler first and then try a # program that has had some success. Note no GNU compilers seem to have this # problem so they are never tested. # # The side-effect of this macro is to substitute TRAIL_TYPE with # the derived value and define TRAIL_TYPE. See "f77.h" in CNF. # AC_DEFUN([STAR_CNF_TRAIL_TYPE], [AC_CHECK_SIZEOF(void*)dnl AC_FC_HAVE_PERCENTLOC dnl AC_CACHE_CHECK([type used for Fortran string lengths], [star_cv_cnf_trail_type], [if test "$ac_cv_sizeof_voidp" = 8 -a "$ac_cv_fc_compiler_gnu" = no; then if "$FC" -V 2>&1 < /dev/null | grep 'Intel.*64' > /dev/null; then star_cv_cnf_trail_type=long elif "$FC" -V 2>&1 < /dev/null | grep 'Sun.*Fortran' > /dev/null; then star_cv_cnf_trail_type=long else AC_REQUIRE([AC_PROG_FC])dnl AC_LANG_PUSH([Fortran]) if test "$ac_cv_fc_have_percentloc" = yes; then FORTRAN_GETLOC='%loc' else FORTRAN_GETLOC='loc' fi AC_LANG_CONFTEST([AC_LANG_SOURCE([ program conftest C checks passing 4 byte character string lengths on 64bit compiler. integer*8 ip1, ip2 integer*4 l1, l2 integer dummy1, dummy2 real dummy3, dummy4 double precision dummy5, dummy6 character str1*(1024) character str2*(2048) ip1 = $FORTRAN_GETLOC (str1) ip2 = $FORTRAN_GETLOC (str2) l1 = 1024 l2 = 2048 call report( dummy1, dummy2, %val(ip1), dummy3, dummy4, : %val(ip2), dummy5, dummy6, : %val(l1), %val(l2) ) end subroutine report( dummy1, dummy2, str1, dummy3, dummy4, : str2, dummy5, dummy6 ) integer dummy1, dummy2 real dummy3, dummy4 double precision dummy5, dummy6 character*(*) str1 character*(*) str2 if ( [len(str1)] .eq. 1024 .and. [len(str2)] .eq. 2048 ) then print *, 'int' else print *, 'long' endif end ])]) star_cv_cnf_trail_type=int $FC $FCFLAGS $opt -o conftest conftest.f 2>&5 if test -r conftest then star_cv_cnf_trail_type=`eval conftest | sed 's/\ //g'` > /dev/null else AC_MSG_ERROR([failed to link program]) fi rm -f conftest* AC_LANG_POP([Fortran]) fi else dnl sizeof(void *) != 8 or GNU so no problems. star_cv_cnf_trail_type=int fi ]) AC_SUBST([TRAIL_TYPE], $star_cv_cnf_trail_type ) AC_DEFINE_UNQUOTED([TRAIL_TYPE], $star_cv_cnf_trail_type, [Type of Fortran CNF TRAIL argument] ) ])# STAR_CNF_TRAIL_TYPE # STAR_PATH_TCLTK([minversion=0], [options='']) # --------------------------------------------- # # Finds a tclsh and wish, and the associated libraries. Sets output variable # TCL_CFLAGS to the C compiler flags necessary to compile with Tcl, TCL_LIBS # to the required library flags, and TCLSH to the full path of the tclsh # executable, TCL_PREFIX to the installation root and TCL_LD_SEARCH_FLAGS # to the default search path for loading the shareable library; if Tk is # requested, it similarly sets TK_CFLAGS, TK_LIBS and WISH. Define the # cpp variable TCL_MISSING to 1 if Tcl is not available. Similar to # macro AC_PATH_XTRA. # # If argument MINVERSION is present, it specifies the minimum Tcl/Tk # version number required. # # The macro searches first in the path, and # then in a selection of platform-specific standard locations. The # configure option --with-tcl allows you to provide a path to a tclsh # binary, which is put at the head of the list of locations to search. # Option --without-tcl suppresses the search, and results in no # variables being substituted. # # If the argument OPTIONS is present, it is a space-separated list of # the words 'tk' or 'itcl'. If one or both of these is present, then # the macro will find a Tcl location which also has Tk or itcl # installed (note that the itcl test doesn't do anything at present). AC_DEFUN([STAR_PATH_TCLTK], [_star_use_tcl=: AC_ARG_WITH([tcl], AS_HELP_STRING([--with-tcl], [give path to tclsh (dir which contains binary)]), [if test "X$withval" = Xno; then _star_use_tcl=false elif test "X$withval" = Xyes; then _star_use_tcl=: else _star_use_tcl=: _star_try_tcldir=$withval fi]) if $_star_use_tcl; then _star_searchfor=Tcl if expr "x m4_ifval([$2], [$2], []) " : 'x.* tk ' >/dev/null; then search_tk=: _star_searchfor="$_star_searchfor/Tk" else search_tk=false fi if expr "x m4_ifval([$2], [$2], []) " : 'x.* itcl ' >/dev/null; then search_itcl=: _star_searchfor="$_star_searchfor/itcl" echo "Searching for itcl does nothing so far!" else search_itcl=false fi AC_MSG_CHECKING([where to find $_star_searchfor m4_ifval([$1], [$1+], [(any version)])]) AC_CACHE_VAL([star_cv_settcldir], [star_cv_settcldir=unknown reqversint=`echo m4_ifval([$1], [$1], 0.0)-0-0 | [sed 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/10000 \1* 100 \2*+ \3+p/']|dc` tclsources=`echo $PATH | sed "s/$PATH_SEPARATOR/ /g"` stdsources=' dnl Search in /usr and /usr/local at least /usr/bin /usr/local/bin dnl /opt/local and /sw are the default installation locations for OpenDarwin dnl and Fink on OSX /opt/local/bin /sw/bin' for d in $_star_try_tcldir $STARCONF_DEFAULT_STARLINK/bin $tclsources $stdsources do locok=: if test -d $d; then tcldir=`cd $d/..; pwd` test -f $d/tclsh -a -f $tcldir/include/tcl.h || locok=false else locok=false fi if $locok && $search_tk; then test -f $d/wish -a -f $tcldir/include/tk.h || locok=false fi if $locok && $search_itcl; then test -f $tcldir/lib/libitcl.aXXX || locok=false fi if $locok; then if test ! -f $tcldir/lib/tclConfig.sh; then echo "$tcldir/lib/tclConfig.sh unexpectedly missing" break fi if $search_tk && test ! -f $tcldir/lib/tkConfig.sh; then echo "$tcldir/lib/tkConfig.sh unexpectedly missing" break fi rm -f conftest.results # Run in a subshell, to isolate settings in tclConfig.sh # Send output to conftest.results, and return # 0 if all is ok ( . $tcldir/lib/tclConfig.sh if $search_tk; then . $tcldir/lib/tkConfig.sh fi tclversint=`[echo $TCL_VERSION$TCL_PATCH_LEVEL-0-0 | sed 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/10000 \1* 100 \2*+ \3+p/'|dc]` if test $tclversint -gt $reqversint; then # New enough version. # Dereference the tclsh and wish links -- the "->" _is_ standard, # mandated by POSIX. lslink=`ls -l $tcldir/bin/tclsh` tclsh_loc=`expr "x$lslink" : "x.*-> *\(.*\)"` if test -n "$tclsh_loc" -a -x "$tclsh_loc"; then : OK elif test -x "$tcldir/bin/tclsh"; then # Odd: either .../bin/tclsh isn't a link, or it doesn't point to an # executable. But .../bin/tclsh is OK, so use that. tclsh_loc="$tcldir/bin/tclsh" else # This really shouldn't happen, since we checked above that # $d/tclsh was executable. Still, it clearly has happened, # so don't go mad. echo "Warning: found Tcl libraries, but not tclsh!" >&2 tclsh_loc= fi res="_star_tcldir=$tcldir;" # Make the TCL version number available. res="$res TCL_VERSION=\"$TCL_VERSION\";" # Export the TCL_PREFIX value. res="$res TCL_PREFIX=\"$TCL_PREFIX\";" # Export the TCL_LD_SEARCH_FLAGS value (need LIB_RUNTIME_DIR # which is part of the symbol). res="$res LIB_RUNTIME_DIR=\"$TCL_PREFIX/lib\";" res="$res TCL_LD_SEARCH_FLAGS=\"$TCL_LD_SEARCH_FLAGS\";" # These envs include $TCL_DBGX -- expand this out. eval "I=\"$TCL_INCLUDE_SPEC\"; L=\"$TCL_LIB_SPEC\"" res="$res TCL_CFLAGS=\"$I\"; TCL_LIBS=\"$L\"; TCLSH=\"$tclsh_loc\";" if $search_tk; then # Same for wish lslink=`ls -l $tcldir/bin/wish` wish_loc=`expr "x$lslink" : "x.*-> *\(.*\)"` if test -n "$wish_loc" -a -x "$wish_loc"; then : OK elif test -x "$tcldir/bin/wish"; then wish_loc="$tcldir/bin/wish" else echo "Warning: found Tk libraries, but not wish!" >&2 wish_loc= fi # These envs potentially include $TK_DBGX -- expand this out. eval "I=\"$TK_XINCLUDES\"; L=\"$TK_LIB_SPEC\"" res="$res TK_CFLAGS=\"$I\"; TK_LIBS=\"$L\"; WISH=\"$wish_loc\";" fi # similarly for $search_itcl echo $res >conftest.results status=0 else msg="$tcldir: found Tcl-$TCL_VERSION$TCL_PATCH_LEVEL" if $search_tk; then msg="$msg, Tk-$TK_VERSION$TK_PATCH_LEVEL" fi echo "$msg: older than required" >&2 status=1 fi exit $status ) teststat=$? if test $teststat = 0; then star_cv_settcldir=`cat conftest.results` fi if test "$star_cv_settcldir" != unknown; then break fi fi # $locok done]) if test "$star_cv_settcldir" = unknown; then AC_MSG_RESULT(unknown) else eval $star_cv_settcldir AC_MSG_RESULT($_star_tcldir) fi else # $_star_use_tcl AC_MSG_WARN(Compiling without Tcl/Tk) fi # $_star_use_tcl if $_star_use_tcl && test "$star_cv_settcldir" != unknown; then : else AC_DEFINE(TCL_MISSING, 1, [Define to 1 if no Tcl/Tk libraries can be found]) fi AC_SUBST(TCL_VERSION) AC_SUBST(TCL_PREFIX) AC_SUBST(TCL_LD_SEARCH_FLAGS) AC_SUBST(TCL_CFLAGS) AC_SUBST(TCL_LIBS) AC_SUBST(TCLSH) AC_SUBST(TK_CFLAGS) AC_SUBST(TK_LIBS) AC_SUBST(WISH) # add itcl variables here ])# STAR_PATH_TCLTK # STAR_LATEX_DOCUMENTATION(documentcode, [targets]) # ------------------------------------------------- # Generate the standard makefile targets to handle LaTeX documentation # source. The parameter documentcode should be something like # `sun123' -- it should not include any .tex extension. # # The second, optional, argument gives an explicit list of the targets # which are build. If this is _not_ specified, then a standard list # is used (.tex, .ps and .tar_htx) and corresponding rules added to # the generated makefile. If it is specified, it must be non-null, # and its value is a list of files which are to be added to the # distribution, and no extra Makefile rules are added. Thus if users need # anything complicated done, they should use this second argument and # provide rules for satisfying the given targets. # # In the latter case, the .tex -> htx_tar rule is still emitted, so # you can use it, but it requires the substitution variable # @STAR[]2HTML@, and so if you _do_ use it, you will have to make that # available, either through [STAR_CHECK_PROGS(star2html)] or otherwise. AC_DEFUN([STAR_LATEX_DOCUMENTATION], [m4_ifval([$1], [], [AC_FATAL([$0: called with no documentcode])])dnl m4_if(m4_bregexp([$1], [^ *\([a-z][a-z]*[0-9]*/? *\)*$]), [0], [], [AC_FATAL([$0: bad doccode in $1 -- must be eg sun123 or sun123/])]) STAR_DOCUMENTATION="$STAR_DOCUMENTATION m4_bpatsubst([$1],[/])" m4_ifval([$2], [dnl non-empty second argument -- just add to variable m4_if(m4_bregexp([$1], [/]), -1, [], [AC_FATAL([$0: do not mix non-null second argument and .../ syntax])]) if $_star_build_docs; then STAR@&t@_LATEX_DOCUMENTATION="$2" fi ], [dnl second arg empty -- use defaults if $_star_build_docs; then AC_FOREACH([DocCode], [$1], [m4_if(m4_bregexp(DocCode,[/]), -1, [STAR@&t@_LATEX_DOCUMENTATION="$STAR@&t@_LATEX_DOCUMENTATION DocCode.tex DocCode.ps DocCode.htx_tar" ], [m4_define([_T], m4_bpatsubst(DocCode,[/]))dnl STAR_LATEX_DOCUMENTATION_[]_STAR_UPCASE(_T)="_T.tex _T.ps _T.htx_tar" AC_SUBST(STAR_LATEX_DOCUMENTATION_[]_STAR_UPCASE(_T))])]) fi STAR_DECLARE_DEPENDENCIES([sourceset], [star2html]) STAR_CHECK_PROGS([star2html]) ]) if $_star_build_docs; then : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$[]1" && $$LATEX "\\batchmode\\input $$[]1"'} AC_SUBST(LATEX2DVI) else AC_MSG_WARN([not installing docs $1]) fi AC_SUBST([STAR@&t@_LATEX_DOCUMENTATION])dnl ])# STAR_LATEX_DOCUMENTATION # STAR_XML_DOCUMENTATION(documentcode, [targets]) # ----------------------------------------------- # Generate the standard makefile targets to handle XML documentation # source. The parameter documentcode should be something like # `sun123' -- it should not include any .xml extension. For each of the # documentcodes which does not end with a slash, append # .{texml_tar,htx_tar,ps} to STAR_XML_DOCUMENTATION; # for each which does end with a slash, define instead the # variable STAR_XML_DOCUMENTATION_. In either case, # append the documentcode to STAR_DOCUMENTATION # # The second, optional, argument gives an explicit list of the targets # which are build. If this is _not_ specified, then a standard list # is used (.texml_tar, .ps and .htx_tar) and corresponding rules added to # the generated makefile. If it is specified, it must be non-null, # and its value is a list of files which are to be added to the # distribution, and no extra Makefile rules are added. Thus if users need # anything complicated done, they should use this second argument and # provide rules for satisfying the given targets. # # In the latter case, the .tex -> htx_tar rule is still emitted, so # you can use it, but it requires the substitution variables JADE, SGMLNORM, # and SGMLKIT_HOME. This is rather inconvenient, and it is fortunate that # you almost certainly won't need to use this. AC_DEFUN([STAR_XML_DOCUMENTATION], [m4_ifval([$1], [], [AC_FATAL([$0: called with no documentcode])])dnl m4_if(m4_bregexp([$1], [^ *\([a-z][a-z]*[0-9]*/? *\)*$]), [0], [], [AC_FATAL([$0: bad doccode in $1 -- must be eg sun123 or sun123/])]) STAR_DOCUMENTATION="$STAR_DOCUMENTATION m4_bpatsubst([$1],[/])" m4_ifval([$2], [dnl non-empty second argument -- just add to variable m4_if(m4_bregexp([$1], [/]), -1, [], [AC_FATAL([$0: do not mix non-null second argument and .../ syntax])]) if $_star_build_docs; then STAR@&t@_XML_DOCUMENTATION="$2" fi ], [dnl second arg empty -- use defaults if $_star_build_docs; then do_the_build= # blank if we're to go ahead, string expl. otherwise AC_PATH_PROGS(JADE, [openjade jade], NOJADE) AC_PATH_PROGS(SGMLNORM, [osgmlnorm sgmlnorm], NOSGMLNORM) STAR_CHECK_PROGS([sgml2docs]) if test "$JADE" = NOJADE -o "$SGMLNORM" = NOSGMLNORM -o "$SGML2DOCS" = "sgml2docs"; then if $_star_docs_only; then # Building documentation is all we're supposed to do, # and we can't, so suppress further building. do_the_build=\ "This docs-only component requires Jade, sgmlnorm and sgml2docs. All I could find were: $JADE for Jade, $SGMLNORM for sgmlnorm and $SGML2DOCS for sgml2docs (requires full path). Your system may have a way to install Jade and sgmlnorm as a package, sgml2docs is part of the SGMLKIT package." else AC_MSG_WARN([can't find (open)jade + (o)sgmlnorm + sgml2docs -- skipping XML documentation $1]) fi else # Test Jade version AC_MSG_CHECKING([version of $JADE (need 1.3.2 or better)]) $JADE -v conftest.version 2>&1 JADEVERS=[`sed -n '/:I:.*[Jj]ade.*version/{ s/.*:I:// s/[^0-9][^0-9]*/ /gp }' conftest.version`] # The following converts space-separated integers to a single # one. It's perhaps a leeettle funkier than necessary... VERSINT=[`echo "[Ss[z0conftest-d1/d/f (cd conftest-d1/d; $LN_S f l; $LN_S x broken) if test ! -h conftest-d1/d/l; then # We don't have links! So plain cp -R will do star_cv_cp_r="$CP -R" else star_cv_cp_r= for try in "$CP -R --no-dereference -p -f" "$CP -R -P -p -f" "$CP -R -P -p" "$CP -R -p" "${PAX-false} -r -w -p p" do rm -Rf conftest-d2/* if (cd conftest-d1; $try . ../conftest-d2 2>/dev/null); then if test -h conftest-d2/d/l -a -h conftest-d2/d/broken; then star_cv_cp_r="$try" break fi fi done fi rm -Rf conftest*]) if test -z "$star_cv_cp_r"; then AC_MSG_ERROR([unable to find working cp or pax]) fi AC_SUBST(CP_RECURSIVE, $star_cv_cp_r)dnl ])# STAR_SPECIAL_INSTALL_COMMAND # STAR_MONOLITHS # -------------- # Declare that we will be creating monoliths. This does whatever # configuration is necessary to handle these. # # Note that the declarations done in the Makefile.am, declaring the # name of the monolith and the names and source files of the tasks, # are slightly redundant inasmuch as some of that information could be # implied. However, this is required to be explicit for clarity and # consistency, and so accomodate the (currently unexploited) # possibility that the tasks and .ifl files longer have the # one-task-per-file relationship they have now. AC_DEFUN([STAR_MONOLITHS], [$_star_docs_only && AC_MSG_ERROR([STAR[]_MONOLITHS in docs-only directory]) dnl Installation in monoliths.am uses $(LN_S) AC_REQUIRE([AC_PROG_LN_S])dnl # To build monoliths, we need both compifl to build the .ifc # files (in the parsecon component), and alink # to link the monoliths (in dtask). Both are now part of # the pcs component. STAR_DECLARE_DEPENDENCIES(build, [pcs]) # So try to find alink and compifl. STAR_CHECK_PROGS([compifl alink]) # When we're building monoliths, we will almost certainly be # using Fortran, and so we might as well include this, # partly in case the user forgets, but also because this is # reasonably part of the default setup required for monoliths. STAR_CNF_COMPATIBLE_SYMBOLS STAR_PRM_COMPATIBLE_SYMBOLS ])# STAR_MONOLITHS # STAR_HELP_FILES(helpfiles) # -------------------------- # Declare a list of files to be installed into the Starlink help # directory. This can be used both internally and in user # configure.ac files. AC_DEFUN([STAR_HELP_FILES], [_STAR_EXTRADIR_COMMON([help], [$1])]) # STAR_ETC_FILES(etcfiles) # ------------------------ # Declare a list of files to be installed into the Starlink etc # directory. This can be used both internally and in user # configure.ac files. AC_DEFUN([STAR_ETC_FILES], [_STAR_EXTRADIR_COMMON([etc], [$1])]) # STAR_DOCS_FILES(docfiles) # ------------------------- # Declare a list of files to be installed into the Starlink # documentation directory. This can be used both internally and in # user configure.ac files. AC_DEFUN([STAR_DOCS_FILES], [_STAR_EXTRADIR_COMMON([docs], [$1])]) # STAR_EXAMPLES_FILES(examplesfiles) # ---------------------------------- # Declare a list of files to be installed into the Starlink # examples directory. This can be used both internally and in # user configure.ac files. AC_DEFUN([STAR_EXAMPLES_FILES], [_STAR_EXTRADIR_COMMON([examples], [$1])]) # STAR_DECLARE_DEPENDENCIES(type, deplist, option='') # --------------------------------------------------- # # Declare dependencies of this component. The TYPE is one of # `sourceset', `build', `link', `use', `test' or `configure', and the # DEPLIST is a space separated list of component names, which this # component depends on in the given way. # # -- Sourceset dependencies are those components which must be # installed in order to build the complete set of sources, either for # building or for distribution. This includes documentation, so it # would include star2html as well as messgen. # # -- Build dependencies are those which are required in order to build # this component. This typically means include files, but if part of # the component is an executable file (such as compifl within the # parsecon component), then that's a build dependence also (but see # the discussion of `option', below). You may not have two components # which have a build dependency on each other, since that would mean # that each would have to be built before the other, which is # impossible. # # -- Link dependencies are those required to link against the # libraries in a component. That means all the libraries that this # component's libraries use. These are not necessarily build # dependencies, since if you are building a library, any called # libraries don't have to be present in order to build this library; # you can have two components which have mutual link dependencies. If # you are building an application, however, then all its link # dependencies will actually be build dependencies and should be # declared as such. In other words, the distinction between build and # link dependencies is important only for library components. # # -- Use dependencies are those which are required in order for the # component to be used by something else, after it has been built and # installed. For example a library which called another application # as part of its functionality would have only a use dependency on the # component which contained that application. If no use dependencies # are declared, we take the use dependencies to be the same as the # link dependencies. # # -- Test dependencies are those which are required in order to run # any regression tests which come with the component. It's generally # a good idea to avoid making this a larger set than the use # dependencies, but sometimes this is unavoidable. If no test # dependencies are declared, we take the test dependencies to be the # same as the use dependencies. # # -- Configure dependencies are those which must be satisfied before # this component can be successfully configured. In this case, we # also check that the corresponding manifest files have been installed # in current_MANIFESTS, and if not exit with a message, and the suggestion # that the user runs 'make configure-deps'. # # The point of this is that different dependencies are required at # different times. The set of dependencies in the master makefile is # composed of all the `sourceset' and `build' dependencies, but not # `link' or `use' dependencies, and since the core Starlink libraries # are closely interdependent, the set of `build' dependencies needs to # be kept as small as possible in order to avoid circularities (that # is, A depending on B, which depends, possibly indirectly, on A). # # All these relationships are transitive: if A has a build dependency # on B, and B has one on C, then A has a build dependency on C. You # can augment this by using the final `option' argument: if, in # component A's declaration element you say # STAR_DECLARE_DEPENDENCIES(build, B, link), then you declare that A # has a build-time dependency on B, but that (presumably because you # are building an application within a component which is mostly # libraries) you need to link against B, so component A has a # dependency on all of B's _link_ dependencies, not just its build # dependencies. This is (I believe) the only case where this `option' # attribute is useful, though it is legal for each of the dependency types. # # You need only declare direct dependencies. If package A depends on # package B, which depends in turn on package C, then package A need # not declare a dependency on C. # # The macro may be called more than once. The results of this macro # are expressed in the file component.xml in the component directory. AC_DEFUN([STAR_DECLARE_DEPENDENCIES], [m4_ifval([$1], [], [AC_FATAL([$0: no type given])])dnl m4_if(m4_bregexp([$1], [^\(sourceset\|build\|link\|use\|test\|configure\)$]), [0], [], [AC_FATAL([$0: unrecognised dependency type: $1])])dnl m4_ifval([$2], [], [AC_FATAL([$0: no deplist given])])dnl for _star_tmp in $2 do STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN<[$1]m4_ifval([$3], [ option='$3'], [])>$_star_tmp" done m4_if([$1], [configure], [# check that configure-deps ran... for _star_tmp in $2 do echo "$as_me:$LINENO: checking for configure-deps/$_star_tmp" >&5 echo $ECHO_N "checking for configure-deps/$_star_tmp... $ECHO_C" >&6 if test -f $current_MANIFESTS/$_star_tmp; then echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 else echo "$as_me:$LINENO: result: not found!" >&5 echo "${ECHO_T}not found" >&6 echo "*** This package has a configure dependency on $_star_tmp" >&6 echo " but that component doesn't appear to be installed." >&6 echo " (I can't find $current_MANIFESTS/$_star_tmp:" >&6 echo " have you forgotten to run 'make configure-deps'?)" >&6 echo " Giving up!" >&6 exit 1 fi done ])dnl ])# STAR_DECLARE_DEPENDENCIES # STAR_PLATFORM_SOURCES(target-file-list, platform-list) # ------------------------------------------------------ # # Generate the given target-file for each of the files in the list # TARGET-FILE-LIST, by selecting the appropriate element of the # PLATFORM-LIST based on the value of [AC_CANONICAL_BUILD]. Both # lists are space-separated lists. # # For each of the platforms,

, in platform-list, there should be a # file `

'. There should always be a file # `default', and if none of the platform-list strings # matches, this is the file which is used. If the `default' file is # listed in the `platform-list', then it is matched in the normal run # of things; if it is not listed, it still matches, but a warning is # issued. # # If you wish no match _not_ to be an error -- perhaps because there # is a platform-dependent file which is redundant on unlisted platforms # -- then end the platform-list with `NONE'. In this case, if no file # matches, then no link is made, with no error or warning. # # This macro uses the results of ./config.guess to determine the # current platform. That returns a triple consisting of # cpu-vendor-os, such as `i686-pc-linux-gnu' (OS=linux-gnu), # `sparc-sun-solaris2.9', or `alphaev6-dec-osf5.1' # # The extensions

in platform-list should all have the form # `cpu_vendor[_os]', where each of the components `cpu', `vendor' and # `os' may be blank. If not blank, they are matched as a prefix of # the corresponding part of the config.guess value. Thus # `_sun_solaris' would match `sparc-sun-solaris2.9' but not # `sparc-sun-sunos', and `_sun' would match both. For a # file foo.c, this would result in `ln -s foo.c_sun foo.c' # # Calls AC_LIBSOURCE for each of the implied platform-specific files. # AC_DEFUN([STAR_PLATFORM_SOURCES], [ $_star_docs_only && AC_MSG_ERROR([STAR_[]PLATFORM_SOURCES in docs-only dir]) AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_ifval([$1], [], [AC_FATAL([$0: no target-file-list given])])dnl m4_ifval([$2], [], [AC_FATAL([$0: no platform-list given])])dnl AC_FOREACH([TargetFile], [$1], [AC_FOREACH([Ext], [$2], [m4_if(Ext, [NONE], , [AC_LIBSOURCE(TargetFile[]Ext)])])])dnl AC_MSG_CHECKING([platform-specific source for file(s) $1]) _star_tmp= for platform in $2 do if test $platform = NONE; then # Special case -- no file required _star_tmp=NONE break; fi if test $platform = default; then _star_tmp=default break; fi if expr $build : `echo $platform | sed 's/_/.*-/g'` >/dev/null; then _star_tmp=$platform break; fi done if test -z "$_star_tmp"; then # Use default, but it wasn't listed in the platform-list # (though it should have been) AC_MSG_WARN([build platform $build does not match any of ($2): using `default']) _star_tmp=default fi if test $_star_tmp = NONE; then AC_MSG_RESULT([none required]) else AC_MSG_RESULT([using $_star_tmp]) for _t in $1 do if test -f $srcdir/$_t$_star_tmp; then (cd $srcdir; rm -f $_t; cp -p $_t$_star_tmp $_t) else AC_MSG_WARN([platform $_star_tmp matched, but no file $_t$_star_tmp found]) fi done fi ])# STAR_PLATFORM_SOURCES # STAR_INITIALISE_FORTRAN # ----------------------- # # Define a macro which can be used in a C main program to initialise the # Fortran RTL, including, for example, doing whatever work is required so that # the Fortran getarg() function works. This defines the macro # STAR_INITIALISE_FORTRAN(argc,argv). The implementation necessarily uses # functions which are specific to the Fortran implementation, and the body of # this macro is basically a switch to determine the compiler and thus the # appropriate compiler-specific magic. If no implementation is available, # then the macro should expand to nothing. # # Note that the Starlink functions wrapping getarg() are robust against # getarg() failing because this information is not available. This function # is nonetheless necessary because some platforms have link problems otherwise # (specifically OSX, on which the most readily available compiler is g77, # cannot link properly if the getarg() function is referenced by a library, # but there is a C main function, so that the Fortran main function's call of # f_setarg is omitted). Thus it is generally harmless to leave this function # unimplemented on those platforms which do not have these link problems, and # it is harmless that the test below is extremely compiler specific (though we # would probably have to add implementations for any other compilers used on # OSX). It's also generally harmless not to call the defined function, or # invoke this macro, if your application doesn't have the link problems which # makeit necessary, though of course calling it will make getarg() work where # it otherwise wouldn't, which may be an advantage. # # All was well until g95 and gfortran, these are "gnu" compilers, but use # different semantics. In the case of g95 the calling the startup code is not # optional (docs say that heap initialisation relies on the startup call). # # The test for g95 relies on the output from `g95 --version' containing the # string "G95". Gfortran requires "GNU Fortran (GCC) 4+.x[x].x[x]". Note that # this whole area probably needs rethinking as g95 also has a g95_runtime_stop() # function, that should be called. # # At gfortran 4.6 the call sequence stopped allowing a NULL argv, so a dummy # version had to be added. The argv[0] value is always de-referenced in an # an attempt to get the program name. # # Intel Fortran needs the for_rtl_init_ function, there is also a # for_rtl_finish_ to run during closedown. The intel compiler signature # is to have "IFORT" in the --version string. # # Under Solaris and the studio compilers the argc and argv values are no # longer automatically shared, so we test for "Sun Fortran" and have a # code section that copies the given argc and argv directly to the global # variable __xargc and __xargv, this may need fixing from time to time. # Doesn't seem to be a function for doing this job. # AC_DEFUN([STAR_INITIALISE_FORTRAN], [AC_CACHE_CHECK([how to initialise the Fortran RTL], [star_cv_initialise_fortran], [AC_REQUIRE([AC_PROG_FC]) if test "$ac_cv_fc_compiler_gnu" = yes; then if "$FC" --version 2>&1 < /dev/null | grep 'G95' > /dev/null; then star_cv_initialise_fortran=g95-start elif "$FC" --version 2>&1 < /dev/null | grep 'GNU Fortran.*[[4-9]]\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*' > /dev/null; then star_cv_initialise_fortran=gfortran-setarg else star_cv_initialise_fortran=g77-setarg fi else if "$FC" --version 2>&1 < /dev/null | grep 'IFORT' > /dev/null; then star_cv_initialise_fortran=ifort-setarg elif "$FC" -V 2>&1 < /dev/null | grep 'Sun Fortran' > /dev/null; then star_cv_initialise_fortran=sunstudio-setarg else star_cv_initialise_fortran= fi fi]) AH_TEMPLATE([STAR_INITIALISE@&t@_FORTRAN], [Define to a function call which will initialise the Fortran RTL]) case "$star_cv_initialise_fortran" in g77-setarg) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], [{extern void f_setarg(int,char**); f_setarg(argc, argv);}]) ;; g95-start) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], [{extern void g95_runtime_start(int,char**); g95_runtime_start(argc, argv);}]) ;; gfortran-setarg) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], [{extern void _gfortran_set_args(int,char**); if (argv == NULL) {static char *sc_dummy[[]]={NULL};_gfortran_set_args(0,sc_dummy);} else {_gfortran_set_args(argc,argv);}}]) ;; ifort-setarg) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], [{extern void for_rtl_init_(int*,char**); for_rtl_init_(&argc, argv);}]) ;; sunstudio-setarg) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], [{extern int __xargc; extern char **__xargv;__xargc = argc;__xargv = argv;}]) ;; *) AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],[]) ;; esac dnl AC_DEFINE_UNQUOTED([STAR_INITIALISE@&t@_FORTRAN(argc,argv)], dnl $star_cv_initialise_fortran) ])# STAR_INITIALISE_FORTRAN # STAR_SUPPRESS_BUILD_IF(test, message) # ------------------------------------- # Call once at the end of the configure script. # # If the given shell test evaluates to true, then suppress the build, # without having ./configure fail. The test is any command which # returns true if the build should be suppressed, and may be shell # commands `true' or `false', or might be a more complicated test, # such as `test -n "$SOMEENV"'. # # The macro communicates with the generated Makefile.in by creating a file # STAR_SUPPRESS_BUILD if the test evaluates to true. The file contains # the text of the explanation. AC_DEFUN([STAR_SUPPRESS_BUILD_IF], [m4_ifval([$1], [], [AC_FATAL([$0: needs two arguments])])dnl m4_ifval([$2], [], [AC_FATAL([$0: needs two arguments])])dnl rm -f STAR_SUPPRESS_BUILD if [$1]; then AC_MSG_WARN([Build inhibited: $2]) echo "$2" >STAR_SUPPRESS_BUILD ALL_TARGET=all-am-suppress else ALL_TARGET=all-am-normal fi AC_SUBST(ALL_TARGET) ])# STAR_SUPPRESS_BUILD_IF # starconf internal macros # _STAR_UPCASE(string) # -------------------- # Expands to STRING with all letters translated to uppercase. AC_DEFUN([_STAR_UPCASE], [m4_translit([$1], [a-z], [A-Z])]) # _STAR_EXTRADIR_COMMON(dir-type, file-list) # ------------------------------------------ # # Common handler for STAR_HELP_FILES, etc. DIR-TYPE is one of # # help, etc, docs, examples # # and `FILE-LIST' is a list of files to be installed in # the directory STAR_[DIR-TYPE]_DIR. This works by defining and # AC_SUBSTing the variables `starX_DATA for X=dir-type (eg, `stardocs_DATA'). # # This is now obsolete -- components should use star_DATA in # the Makefile.am file instead. Don't use AC_[]DIAGNOSE([obsolete],...), # since those warnings aren't turned on by default. AC_DEFUN([_STAR_EXTRADIR_COMMON], [AC_FATAL([Macro STAR_]_STAR_UPCASE($1)[_FILES($2) is obsolete -- use star$1_DATA in Makefile.am instead]) AC_FATAL([For STAR@&t@_LATEX_DOCUMENTATION, use stardocs_DATA=@STAR@&t@_LATEX_DOCUMENTATION@ instead])] )# _STAR_EXTRADIR_COMMON # _STAR_RESTFP_FIX # ---------------- # Determines if we need to make any library fixes to get things to link # properly. In fact, there's only a problem on OSX/Darwin, since the # GCC installation which provides g77 and the (system) GCC which provides # gcc can generate slightly incompatible object code. The following test # is therefore pretty specific to OSX/Darwin. # # If there are any libraries that need to be added to the path, this adds # them to variables _FCLINK_MAGIC. Compare AC_FC_LIBRARY_LDFLAGS. # # See the thread: http://lists.apple.com/mhonarc/fortran-dev/msg00768.html AC_DEFUN([_STAR_RESTFP_FIX], [AC_CACHE_CHECK([whether we need any library fixups], [star_cv_restfp_fixup], [AC_REQUIRE([AC_CANONICAL_BUILD]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_PROG_FC]) if expr $build_os : 'darwin7' >/dev/null; then dnl Only affects OSX/Darwin # Following uses undocumented (but probably fairly stable) # autoconf internal variable. if test "$ac_cv_fc_compiler_gnu" = yes; then dnl The problem only affects g77/gcc, so we know we're dealing with these below AC_LANG_PUSH(C) rm -f conftest* star_cv_restfp_fixup=unknown AC_LANG_CONFTEST(AC_LANG_PROGRAM([], restFP())) { AC_TRY_COMMAND($CC -o conftest.x -S conftest.c) test $ac_status = 0 } && sed 's/_restFP/restFP/g' conftest.x>conftest.s && { AC_TRY_COMMAND($CC -c -o conftest.$ac_objext conftest.s) test $ac_status = 0 } || star_cv_restfp_fixup=broken AC_LANG_POP(C) if test $star_cv_restfp_fixup = broken; then AC_MSG_WARN([unable to assemble restFP test]) else # Link this with the C compiler AC_TRY_COMMAND($CC -o conftest conftest.$ac_objext) _s_cstatus=$ac_status # Link this with the Fortran compiler AC_TRY_COMMAND($FC -o conftest conftest.$ac_objext) if test $_s_cstatus = 0 -a $ac_status = 0; then # both compilers can compile it star_cv_restfp_fixup=no elif test $_s_cstatus != 0 -a $ac_status != 0; then # neither compiler can compile it star_cv_restfp_fixup=no elif test $_s_cstatus = 0; then # The C compiler can, but the Fortran cannot star_cv_restfp_fixup=yes else # The C compiler can't compile, but the Fortran can. # Haven't heard of this case! Don't know what to do. star_cv_restfp_fixup=broken fi fi # Link with -lcc_dynamic. # See http://www.astro.gla.ac.uk/users/norman/note/2004/restFP/ if test $star_cv_restfp_fixup = yes; then AC_TRY_COMMAND($FC -o conftest conftest.$ac_objext -lcc_dynamic) if test $ac_status = 0; then star_cv_restfp_fixup=cc_dynamic fi fi if test $star_cv_restfp_fixup = yes; then # ooops AC_MSG_WARN([unable to solve restFP problem]) star_cv_restfp_fixup=broken fi rm -f conftest* elif test -z "$FC"; then # not g77, and indeed no Fortran at all star_cv_restfp_fixup=nofortran else # There is a Fortran, but it's not g77, so either there's no # problem, or it's a mixed-compiler problem that's harder # than we know how to deal with. But presumably the user # has worked this out. star_cv_restfp_fixup=no fi else # !Darwin star_cv_restfp_fixup=no fi ]) C_FC_FCLINK_MAGIC= C_FC_PPFC_FCLINK_MAGIC= case $star_cv_restfp_fixup in cc_dynamic) # Add the required libraries to C_FC_... variables, which are # generated in the required places by (our) automake. C_FC_FCLINK_MAGIC="-lcc_dynamic" C_FC_PPFC_FCLINK_MAGIC="-lcc_dynamic" ;; nofortran) AC_MSG_NOTICE([No Fortran in path, so presumably no g77/gcc library problems]) ;; *) ;; esac AC_SUBST(C_FC_FCLINK_MAGIC) AC_SUBST(C_FC_PPFC_FCLINK_MAGIC) ])# _STAR_RESTFP_FIX # STAR_LARGEFILE_SUPPORT # ---------------------- # # Set C macros for compiling C routines that want to make use of large file # support. This is a joining of AC_SYS_LARGEFILE and AC_FUNC_FSEEKO # so defines the macros _FILE_OFFSET_BITS, _LARGEFILE_SOURCE and _LARGE_FILES, # along with HAVE_FSEEKO. To use large file support you need to use fseeko and # ftello when HAVE_FSEEKO is defined (and use off_t for offsets) and compile # all C code with the other defines. # # This function also gathers the values of _FILE_OFFSET_BITS, _LARGEFILE_SOURCE # and _LARGE_FILES and sets the STAR_LARGEFILE_CFLAGS variable (this in useful # for passing to packages which are not directly part of the starconf system). # AC_DEFUN([STAR_LARGEFILE_SUPPORT], [dnl Enable autoconf largefile support. AC_SYS_LARGEFILE AC_FUNC_FSEEKO # Gather state into a single variable for passing to other packages. STAR_LARGEFILE_CFLAGS= if test "$ac_cv_sys_file_offset_bits" != "no"; then STAR_LARGEFILE_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" fi if test "$ac_cv_sys_large_files" != "no"; then STAR_LARGEFILE_CFLAGS="-D_LARGE_FILES_=$ac_cv_sys_large_files $STAR_LARGEFILE_CFLAGS" fi if test "$ac_cv_sys_largefile_source" != "no"; then STAR_LARGEFILE_CFLAGS="-D_LARGEFILE_SOURCE=$ac_cv_sys_largefile_source $STAR_LARGEFILE_CFLAGS" fi ])# STAR_LARGEFILE_SUPPORT # Obsolete macros # =============== # STAR_HAVE_FC_OPEN_READONLY # --------------------------- # # Tests if the Fortran compiler supports the READONLY option on the # OPEN command. If it does, it defines HAVE_FC_OPEN_READONLY to 1. AC_DEFUN([STAR_HAVE_FC_OPEN_READONLY], [AC_FATAL([Macro STAR_HAVE_FC_OPEN_READONLY is obsolete; use AC_FC_OPEN_SPECIFIERS(readonly) instead])]) # STAR_FC_LIBRARY_LDFLAGS # ----------------------- # # This was once a wrapper for AC_[]FC_LIBRARY_LDFLAGS which added # functionality. That functionality is now incorporated into STAR_[]DEFAULTS, # using the helper macro _STAR_[]RESTFP_FIXUP. Configure.ac files should use # use AC_[]FC_LIBRARY_LDFLAGS instead. AC_DEFUN([STAR_FC_LIBRARY_LDFLAGS], [AC_FATAL([Macro STAR_FC_LIBRARY_LDFLAGS is obsolete: if necessary, use standard AC_FC_LIBRARY_LDFLAGS instead])]) # end of starconf macros # Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.6-starlink])]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 7 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.58])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR pal-0.3.0/._compile000755 000161 000120 00000000560 12015333726 014142 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/compile000755 000161 000120 00000007173 12015333726 013734 0ustar00timjadmin000000 000000 #! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2005-05-14.22 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` # Create the lock directory. # Note: use `[/.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pal-0.3.0/component.xml.in000644 000161 000120 00000001604 12014745436 015504 0ustar00timjadmin000000 000000 @PACKAGE_VERSION@ libext/pal Position Astronomy Library

This library is a collection of code designed to aid in replacing the SLA library with code from NOVAS and SOFA. Where possible the API is similar to the C SLA API except for the use of a "pal" prefix.

@STAR_DEPENDENCIES_CHILDREN@ Tim Jenness t.jenness@jach.hawaii.edu @STAR_DOCUMENTATION@ @PACKAGE_BUGREPORT@ pal-0.3.0/._config.guess000755 000161 000120 00000000560 12014747051 015103 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/config.guess000755 000161 000120 00000126333 12014747051 014675 0ustar00timjadmin000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2005-05-15' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; i*:MINGW*:* | i*:windows32*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pal-0.3.0/config.h.in000644 000161 000012 00000003447 12017005772 014442 0ustar00timjowner000000 000000 /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the `copysign' function. */ #undef HAVE_COPYSIGN /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `isblank' function. */ #undef HAVE_ISBLANK /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STAR_UTIL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION pal-0.3.0/._config.sub000755 000161 000120 00000000560 12014747051 014546 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/config.sub000755 000161 000120 00000075500 12014747051 014337 0ustar00timjadmin000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2005-05-12' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -skyos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pal-0.3.0/configure000755 000161 000120 00002717704 12017005761 014274 0ustar00timjadmin000000 000000 #! /bin/sh # From configure.ac Revision: 27534 . # Guess values for system-dependent variables and create Makefiles. # Generated by Starlink Autoconf 2.59 for pal 0.3.0. # # Report bugs to . # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='pal' PACKAGE_TARNAME='pal' PACKAGE_VERSION='0.3.0' PACKAGE_STRING='pal 0.3.0' PACKAGE_BUGREPORT='starlink@jiscmail.ac.uk' ac_unique_file="pal.h" ac_default_prefix=/star # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar STARLINK STAR_CPPFLAGS STAR_FCFLAGS STAR_FFLAGS STAR_LDFLAGS build build_cpu build_vendor build_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE FC FCFLAGS ac_ct_FC C_FC_FCLINK_MAGIC C_FC_PPFC_FCLINK_MAGIC stardocsdir staretcdir starexamplesdir starfacsdir starhelpdir starnewsdir STAR_DEPENDENCIES_ATTRIBUTES STAR_DEPENDENCIES_CHILDREN STAR_DOCUMENTATION PACKAGE_VERSION_MAJOR PACKAGE_VERSION_MINOR PACKAGE_VERSION_RELEASE PACKAGE_VERSION_INTEGER STAR_MANIFEST_DIR GIT STAR_SOURCE_ROOT_DIR PREDIST PAX TAR host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL NOPIC_TRUE NOPIC_FALSE STARUTIL_LIBADD SOFA_LIBADD SOFA_LDFLAGS SOFA_CPPFLAGS STAR2HTML LATEX2DVI STAR_LATEX_DOCUMENTATION LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_STARLINK_set=${STARLINK+set} ac_env_STARLINK_value=$STARLINK ac_cv_env_STARLINK_set=${STARLINK+set} ac_cv_env_STARLINK_value=$STARLINK ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_FC_set=${FC+set} ac_env_FC_value=$FC ac_cv_env_FC_set=${FC+set} ac_cv_env_FC_value=$FC ac_env_FCFLAGS_set=${FCFLAGS+set} ac_env_FCFLAGS_value=$FCFLAGS ac_cv_env_FCFLAGS_set=${FCFLAGS+set} ac_cv_env_FCFLAGS_value=$FCFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS ac_env_STAR2HTML_set=${STAR2HTML+set} ac_env_STAR2HTML_value=$STAR2HTML ac_cv_env_STAR2HTML_set=${STAR2HTML+set} ac_cv_env_STAR2HTML_value=$STAR2HTML # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pal 0.3.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pal 0.3.0:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-starlink Starlink tree to use (default ${STARLINK:=/star}) --without-stardocs Do not install built documentation (default --with) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] Some influential environment variables: STARLINK Location of a current Starlink tree (used if necessary) CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory FC Fortran compiler command FCFLAGS Fortran compiler flags CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags STAR2HTML Location of the star2html application Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF pal configure 0.3.0 generated by Starlink Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pal $as_me 0.3.0, which was generated by Starlink Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='pal' VERSION='0.3.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=${FC_SRCEXT-f} ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_FC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then echo "$as_me:$LINENO: result: $FC" >&5 echo "${ECHO_T}$FC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_FC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 echo "${ECHO_T}$ac_ct_FC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_FC" && break done FC=$ac_ct_FC fi # Provide some information about the compiler. echo "$as_me:3207:" \ "checking for Fortran compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out ac_mod_ext= ac_fc_mod_uppercase=no cat > conftest.$ac_ext << \_ACEOF module conftest implicit none integer :: i end module conftest _ACEOF { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking for suffix of module files" >&5 echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6 for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none do if test -f $ac_mod_file; then break; fi done rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD # case $ac_mod_file in conftest.mod) ac_mod_ext=mod ;; conftest.MOD) ac_mod_ext=MOD ;; conftest.M) ac_mod_ext=M ;; CONFTEST.MOD) ac_mod_ext=MOD ac_fc_mod_uppercase=yes ;; none) { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5 echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;} ;; esac if test $ac_mod_file != none; then echo "$as_me:$LINENO: result: $ac_mod_ext" >&5 echo "${ECHO_T}$ac_mod_ext" >&6 fi if test $ac_fc_mod_uppercase = yes; then { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5 echo "$as_me: Fortran module filenames are uppercase." >&6;} fi # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6 if test "${ac_cv_fc_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_fc_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FCFLAGS+set} ac_save_FFLAGS=$FCFLAGS FCFLAGS= echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_fc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FCFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_fc_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_fc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_fc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 echo "${ECHO_T}$ac_cv_prog_fc_g" >&6 if test "$ac_test_FFLAGS" = set; then FCFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ## test -n "$_star_per_package_dirs" || _star_per_package_dirs=false test -n "$_star_docs_only" || _star_docs_only=false # Ensure that STARLINK has a value, defaulting to # /star. Note that this directory may be # different from /star, and reflects the value of # STARCONF_DEFAULT_STARLINK that the `starconf' package was configured # with before its installation. # # We use $STARLINK as the location of any other Starlink tools we need # to use during the building of our packages, and for the location of # any manifests we need to check. It is permissable for it to be # different from $(prefix): this is partly because we have no way of # enforcing that the two be the same, since the user can set # prefix=xxx on the `make install' command line, and partly so that it # is possible to make a test version of a new package, using tools # from an old installation, but installing in a new place. # # However, we install software in /star by # default. This is so even if $STARLINK and STARCONF_DEFAULT_STARLINK # are different, because in this case we are planning to use a # previous installation in $STARLINK or $STARCONF_DEFAULT_STARLINK, # but install the newly built tool elsewhere. # # In most cases, including the most important case where we are # building the tree from scratch, in a checked out directory, # STARLINK, STARCONF_DEFAULT_STARLINK and STARCONF_DEFAULT_PREFIX will # all be the same. That's OK because a separate aspect of the build # process, respecting the various dependencies expresses in source # directories, ensures that we don't use (and install) any Starlink # tools in one component before that component has been build and # installed. test -n "$STARLINK" || STARLINK=/star # Handle the --with-starlink option. If --with-starlink is present # with no argument (the default), we do nothing as this simply # indicates that this is part of a Starlink tree. If it has an # argument, then this overrides the location of the Starlink tree. # Option --without-starlink or --with-starlink=no indicates that this # is being built _not_ as part of a Starlink build (that is, it's # being distributed as something other than a Starlink package). In # this case, the variable STARLINK is unset. # Check whether --with-starlink or --without-starlink was given. if test "${with_starlink+set}" = set; then withval="$with_starlink" if test -z "$withval" -o "$withval" = yes; then : nothing needs to be done elif test "X$withval" = Xno; then unset STARLINK elif test -d "$withval"; then STARLINK="$withval" else { echo "$as_me:$LINENO: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&5 echo "$as_me: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&2;} fi fi; if test -n "$STARLINK"; then { echo "$as_me:$LINENO: Starlink tree located at $STARLINK" >&5 echo "$as_me: Starlink tree located at $STARLINK" >&6;} else { echo "$as_me:$LINENO: Not being built as part of the Starlink tree" >&5 echo "$as_me: Not being built as part of the Starlink tree" >&6;} fi # Handle --without-stardocs. Don't build and install documentation. # Default is --with-stardocs. _star_build_docs=: # Check whether --with-stardocs or --without-stardocs was given. if test "${with_stardocs+set}" = set; then withval="$with_stardocs" if test -z "$withval"; then _star_build_docs=: # default elif test "X$withval" = Xno; then _star_build_docs=false elif test "X$withval" = Xyes; then _star_build_docs=: else { echo "$as_me:$LINENO: WARNING: bad arg to --with-stardocs: using yes" >&5 echo "$as_me: WARNING: bad arg to --with-stardocs: using yes" >&2;} _star_build_docs=: fi fi; if $_star_docs_only; then if $_star_build_docs; then : OK else { echo "$as_me:$LINENO: WARNING: Building without documentation in a docs-only directory" >&5 echo "$as_me: WARNING: Building without documentation in a docs-only directory" >&2;} fi fi # Everything depends on where /star is. Declare STARLINK as a # `precious variable'. Amongst other things, this will make # ./configure squeal if the package is re-configured with an # inconsistent value of this variable. # AC_SUBST the STARLINK variable. Macro AC_ARG_VAR does this anyway, # but automake doesn't know that (in 1.6 at least): however any # variable that automake finds has been AC_SUBSTed, it includes in # Makefile.in, and we need that. # Use the above information: $STARLINK indicates a preexisting # Starlink tree. # # Avoid doing anything if $STARLINK was unset above. # # Add library search paths using STAR_LDFLAGS. Do it this way, rather than # by defining LIBS (which is also a non-user variable): (a) these are # really options to the linker, rather than adjustments to the set of # libraries, so this makes sense; also (b) adding them to LIBS is too # late, since that adds -L _after_ any -l options found in *_LDADD. if test -n "$STARLINK"; then STAR_CPPFLAGS="-I$STARLINK/include" STAR_FCFLAGS="-I$STARLINK/include" STAR_FFLAGS="-I$STARLINK/include" STAR_LDFLAGS="-L$STARLINK/lib" else STAR_CPPFLAGS= STAR_FCFLAGS= STAR_FFLAGS= STAR_LDFLAGS= fi echo "$as_me:$LINENO: checking whether we need any library fixups" >&5 echo $ECHO_N "checking whether we need any library fixups... $ECHO_C" >&6 if test "${star_cv_restfp_fixup+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if expr $build_os : 'darwin7' >/dev/null; then # Following uses undocumented (but probably fairly stable) # autoconf internal variable. if test "$ac_cv_fc_compiler_gnu" = yes; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu rm -f conftest* star_cv_restfp_fixup=unknown cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { restFP() ; return 0; } _ACEOF { { ac_try='$CC -o conftest.x -S conftest.c' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } test $ac_status = 0 } && sed 's/_restFP/restFP/g' conftest.x>conftest.s && { { ac_try='$CC -c -o conftest.$ac_objext conftest.s' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } test $ac_status = 0 } || star_cv_restfp_fixup=broken ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $star_cv_restfp_fixup = broken; then { echo "$as_me:$LINENO: WARNING: unable to assemble restFP test" >&5 echo "$as_me: WARNING: unable to assemble restFP test" >&2;} else # Link this with the C compiler { ac_try='$CC -o conftest conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } _s_cstatus=$ac_status # Link this with the Fortran compiler { ac_try='$FC -o conftest conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if test $_s_cstatus = 0 -a $ac_status = 0; then # both compilers can compile it star_cv_restfp_fixup=no elif test $_s_cstatus != 0 -a $ac_status != 0; then # neither compiler can compile it star_cv_restfp_fixup=no elif test $_s_cstatus = 0; then # The C compiler can, but the Fortran cannot star_cv_restfp_fixup=yes else # The C compiler can't compile, but the Fortran can. # Haven't heard of this case! Don't know what to do. star_cv_restfp_fixup=broken fi fi # Link with -lcc_dynamic. # See http://www.astro.gla.ac.uk/users/norman/note/2004/restFP/ if test $star_cv_restfp_fixup = yes; then { ac_try='$FC -o conftest conftest.$ac_objext -lcc_dynamic' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if test $ac_status = 0; then star_cv_restfp_fixup=cc_dynamic fi fi if test $star_cv_restfp_fixup = yes; then # ooops { echo "$as_me:$LINENO: WARNING: unable to solve restFP problem" >&5 echo "$as_me: WARNING: unable to solve restFP problem" >&2;} star_cv_restfp_fixup=broken fi rm -f conftest* elif test -z "$FC"; then # not g77, and indeed no Fortran at all star_cv_restfp_fixup=nofortran else # There is a Fortran, but it's not g77, so either there's no # problem, or it's a mixed-compiler problem that's harder # than we know how to deal with. But presumably the user # has worked this out. star_cv_restfp_fixup=no fi else # !Darwin star_cv_restfp_fixup=no fi fi echo "$as_me:$LINENO: result: $star_cv_restfp_fixup" >&5 echo "${ECHO_T}$star_cv_restfp_fixup" >&6 C_FC_FCLINK_MAGIC= C_FC_PPFC_FCLINK_MAGIC= case $star_cv_restfp_fixup in cc_dynamic) # Add the required libraries to C_FC_... variables, which are # generated in the required places by (our) automake. C_FC_FCLINK_MAGIC="-lcc_dynamic" C_FC_PPFC_FCLINK_MAGIC="-lcc_dynamic" ;; nofortran) { echo "$as_me:$LINENO: No Fortran in path, so presumably no g77/gcc library problems" >&5 echo "$as_me: No Fortran in path, so presumably no g77/gcc library problems" >&6;} ;; *) ;; esac # Installation directory options (these are no longer handled # by _STAR_EXTRADIR_COMMON). There should be an entry here for each of # Starlink's special installation locations. stardocsdir='${prefix}/docs' staretcdir='${prefix}/etc' starexamplesdir='${prefix}/examples' starfacsdir='${prefix}/help' starhelpdir='${prefix}/help' starnewsdir='${prefix}/news' # Certain directories are affected by the $_star_per_package_dir variable; # if it's true, then add the $PACKAGE_NAME to the directory. # The directories currently adjusted by this are bin and help; # there are others: see PWD's message of 2004-02-16 # if $_star_per_package_dirs; then bindir="$bindir/$PACKAGE_NAME" starhelpdir="$starhelpdir/$PACKAGE_NAME" staretcdir="$staretcdir/$PACKAGE_NAME" { echo "$as_me:$LINENO: STAR_DEFAULTS has option per-package-dirs:" >&5 echo "$as_me: STAR_DEFAULTS has option per-package-dirs:" >&6;} { echo "$as_me:$LINENO: bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&5 echo "$as_me: bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&6;} # Note that starfacsdir is unaffected by per-package-dirs -- facility # files must always be installed in .../help (this also facilitates # changing this installation location in future, to somewhere with a # more logical name than .../help). fi # Dependency declarations and checks. # Everything is dependent on starconf, so we don't have to declare that # for each package separately. # STAR_DEPENDENCIES_ATTRIBUTES is currently not used. STAR_DEPENDENCIES_ATTRIBUTES='' STAR_DEPENDENCIES_CHILDREN='' # List of documentation. See [STAR_LATEX_DOCUMENTATION]. # STAR_DOCUMENTATION is a list of document codes, STAR_DOCUMENTATION= # Create a PACKAGE_VERSION_INTEGER variable, which contains the # package's version number as an integer major*1e6+minor*1e3+release. eval `echo $VERSION | sed -e 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/PACKAGE_VERSION_MAJOR=\1; PACKAGE_VERSION_MINOR=\2; PACKAGE_VERSION_RELEASE=\3;/'` test -n "$PACKAGE_VERSION_MAJOR" || PACKAGE_VERSION_MAJOR=0 test -n "$PACKAGE_VERSION_MINOR" || PACKAGE_VERSION_MINOR=0 test -n "$PACKAGE_VERSION_RELEASE" || PACKAGE_VERSION_RELEASE=0 PACKAGE_VERSION_INTEGER=`expr $PACKAGE_VERSION_MAJOR \* 1000000 + $PACKAGE_VERSION_MINOR \* 1000 + $PACKAGE_VERSION_RELEASE` # When we do dependency checking, using the dependencies declared in # the package's configure.ac, we do so by looking at what tools have # already been installed in the Starlink tree. The tree in question # is to be found under $STARLINK (see above), so we check that a # package is installed by checking that its manifest can be found in # $STARLINK/manifests. We don't AC_SUBST this. current_MANIFESTS=$STARLINK/manifests # When we install manifests, however, they should go in the # installation directory. Allow this to be defaulted from the environment. # In particular, if it is set to null in the environment, this will # suppress the installation of manifests. : ${STAR_MANIFEST_DIR='$(prefix)/manifests'} # Each package updates the "starlink.version" file installed into the # manifests directory. This tracks the last git sha1 checkin for # the current code state by running the git show on the HEAD. # Define GIT as the program to run, but allow it to be overridden # (most likely by ":" to avoid the overhead). # Also requires that STAR_SOURCE_ROOT_DIR is defined to locate the # head of the source tree. : ${GIT='git'} if test "${GIT}" = "git"; then # Extract the first word of "git", so it can be a program name with args. set dummy git; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GIT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GIT in [\\/]* | ?:[\\/]*) ac_cv_path_GIT="$GIT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GIT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi GIT=$ac_cv_path_GIT if test -n "$GIT"; then echo "$as_me:$LINENO: result: $GIT" >&5 echo "${ECHO_T}$GIT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi : ${STAR_SOURCE_ROOT_DIR=''} # Although PACKAGE_VERSION is a default output variable, it isn't # added as a Makefile variable by default. We need it below, however, # so add it now. # Initialise state of predist/postdist flags (see STAR_PREDIST_SOURCES). # The value of _star_predist_status must be inherited by any # ./configure run in a subdirectory, so that we there avoid the predist # test of starconf.status: in a pre-distribution state, this file must # be present in the component directory (where we are running # ./configure), but must not be present in any subdirectory. _star_predist_status=unknown PREDIST='#' # safe default # pax and/or tar are used in some install targets. # Note: value-if-not-found should be blank, so this can be tested for. # Extract the first word of "pax", so it can be a program name with args. set dummy pax; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PAX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PAX in [\\/]* | ?:[\\/]*) ac_cv_path_PAX="$PAX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PAX="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi PAX=$ac_cv_path_PAX if test -n "$PAX"; then echo "$as_me:$LINENO: result: $PAX" >&5 echo "${ECHO_T}$PAX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi for ac_prog in gnutar tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_TAR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $TAR in [\\/]* | ?:[\\/]*) ac_cv_path_TAR="$TAR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi TAR=$ac_cv_path_TAR if test -n "$TAR"; then echo "$as_me:$LINENO: result: $TAR" >&5 echo "${ECHO_T}$TAR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$TAR" && break done ALL_TARGET=all-am-normal # Default $prefix. This is done by the standard autoconf configure, but at # a slightly later stage than this. Doing it here, as part of STAR_[]DEFAULTS # means that the defaulted value of $prefix can be used within the body of # the configure.ac, for example to pass it to a ./configure in a subdirectory. test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump'. lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | kfreebsd*-gnu | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 5345 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## -------------------------------------- ## ## Report this to starlink@jiscmail.ac.uk ## ## -------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:6924:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out ac_mod_ext= ac_fc_mod_uppercase=no cat > conftest.$ac_ext << \_ACEOF module conftest implicit none integer :: i end module conftest _ACEOF { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking for suffix of module files" >&5 echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6 for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none do if test -f $ac_mod_file; then break; fi done rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD # case $ac_mod_file in conftest.mod) ac_mod_ext=mod ;; conftest.MOD) ac_mod_ext=MOD ;; conftest.M) ac_mod_ext=M ;; CONFTEST.MOD) ac_mod_ext=MOD ac_fc_mod_uppercase=yes ;; none) { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5 echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;} ;; esac if test $ac_mod_file != none; then echo "$as_me:$LINENO: result: $ac_mod_ext" >&5 echo "${ECHO_T}$ac_mod_ext" >&6 fi if test $ac_fc_mod_uppercase = yes; then { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5 echo "$as_me: Fortran module filenames are uppercase." >&6;} fi # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for *BSD fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux*) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_static_works=yes fi else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8078: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8082: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-static' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8340: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8344: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8402: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8406: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp $SED '/^$/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* ) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then # echo "G77=$G77,compiler=$compiler,tagname=$tagname" if test "$tagname" = "F77"; then archive_cmds='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi output_verbose_link_cmd='echo' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine linker options so we # cannot just pass the convience library names through # without $wl, iff we do not link with $LD. # Luckily, gcc supports the same syntax we need for Sun Studio. # Supported since Solaris 2.6 (maybe 2.5.1?) case $wlarc in '') whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; *) whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes if test "$GXX" = yes ; then lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. We must also pass each convience library through # to the system linker between allextract/defaultextract. # The C++ compiler will combine linker options so we # cannot just pass the convience library names through # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-static' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC*) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12993: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:12997: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13055: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:13059: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp $SED '/^$/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-static' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15407: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:15411: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15469: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:15473: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp $SED '/^$/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_F77=no fi ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* ) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_F77=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then # echo "G77=$G77,compiler=$compiler,tagname=$tagname" if test "$tagname" = "F77"; then archive_cmds_F77='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi output_verbose_link_cmd='echo' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine linker options so we # cannot just pass the convience library names through # without $wl, iff we do not link with $LD. # Luckily, gcc supports the same syntax we need for Sun Studio. # Supported since Solaris 2.6 (maybe 2.5.1?) case $wlarc in '') whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; *) whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17596: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17600: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-static' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17858: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17862: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp $SED '/^$/d' conftest.err >conftest.er2 if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17920: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:17924: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp $SED '/^$/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_GCJ=no fi ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* ) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_GCJ=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then # echo "G77=$G77,compiler=$compiler,tagname=$tagname" if test "$tagname" = "F77"; then archive_cmds_GCJ='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi output_verbose_link_cmd='echo' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine linker options so we # cannot just pass the convience library names through # without $wl, iff we do not link with $LD. # Luckily, gcc supports the same syntax we need for Sun Studio. # Supported since Solaris 2.6 (maybe 2.5.1?) case $wlarc in '') whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; *) whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext printf "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # If --with-pic=no is set we should honour that. if test x$pic_mode = xno; then NOPIC_TRUE= NOPIC_FALSE='#' else NOPIC_TRUE='#' NOPIC_FALSE= fi for ac_func in copysign do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in isblank do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strlcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Need the math library echo "$as_me:$LINENO: checking for sin in -lm" >&5 echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6 if test "${ac_cv_lib_m_sin+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char sin (); int main () { sin (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_m_sin=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_m_sin=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5 echo "${ECHO_T}$ac_cv_lib_m_sin" >&6 if test $ac_cv_lib_m_sin = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi if test -n "$STARLINK" then STARUTIL_LIBADD="${libdir}/libstarutil.la" SOFA_LIBADD="${libdir}/libsofa_c.la" SOFA_LDFLAGS="" cat >>confdefs.h <<\_ACEOF #define HAVE_STAR_UTIL_H 1 _ACEOF else save_CPPFLAGS="$CPPFLAGS" eval CPPFLAGS=\"$CPPFLAGS -I${includdir}\" eval CPPFLAGS=\"$CPPFLAGS\" for ac_header in star/util.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## -------------------------------------- ## ## Report this to starlink@jiscmail.ac.uk ## ## -------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done CPPFLAGS="$save_CPPFLAGS" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"$LDFLAGS -L${libdir}\" eval LDFLAGS=\"$LDFLAGS\" echo "$as_me:$LINENO: checking for star_strlcpy in -lstarutil" >&5 echo $ECHO_N "checking for star_strlcpy in -lstarutil... $ECHO_C" >&6 if test "${ac_cv_lib_starutil_star_strlcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lstarutil $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char star_strlcpy (); int main () { star_strlcpy (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_starutil_star_strlcpy=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_starutil_star_strlcpy=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_starutil_star_strlcpy" >&5 echo "${ECHO_T}$ac_cv_lib_starutil_star_strlcpy" >&6 if test $ac_cv_lib_starutil_star_strlcpy = yes; then STARUTIL_LIBADD="-lstarutil" else STARUTIL_LIBADD="" fi echo "$as_me:$LINENO: checking for iauCal2jd in -lsofa_c" >&5 echo $ECHO_N "checking for iauCal2jd in -lsofa_c... $ECHO_C" >&6 if test "${ac_cv_lib_sofa_c_iauCal2jd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsofa_c $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char iauCal2jd (); int main () { iauCal2jd (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_sofa_c_iauCal2jd=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_sofa_c_iauCal2jd=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_sofa_c_iauCal2jd" >&5 echo "${ECHO_T}$ac_cv_lib_sofa_c_iauCal2jd" >&6 if test $ac_cv_lib_sofa_c_iauCal2jd = yes; then SOFA_LIBADD="-lsofa_c" else { { echo "$as_me:$LINENO: error: Missing SOFA library. Can not continue" >&5 echo "$as_me: error: Missing SOFA library. Can not continue" >&2;} { (exit 1); exit 1; }; } fi LDFLAGS="$save_LDFLAGS" SOFA_LDFLAGS="-L${libdir}" SOFA_CPPFLAGS="-I${includedir}" _star_build_docs=: fi for _star_tmp in sofa starutil do STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN$_star_tmp" done for _star_tmp in sofa starutil do STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN$_star_tmp" done STAR_DOCUMENTATION="$STAR_DOCUMENTATION sun267" if $_star_build_docs; then STAR_LATEX_DOCUMENTATION="$STAR_LATEX_DOCUMENTATION sun267.tex sun267.ps sun267.htx_tar" fi for _star_tmp in star2html do STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN$_star_tmp" done eval default_bindir=`echo $bindir | sed 's,\${exec_prefix},$ac_default_prefix,'` # Extract the first word of "star2html", so it can be a program name with args. set dummy star2html; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_STAR2HTML+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $STAR2HTML in [\\/]* | ?:[\\/]*) ac_cv_path_STAR2HTML="$STAR2HTML" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$STARLINK/Perl/bin:$STARLINK/starjava/bin:$STARLINK/bin:$default_bindir:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_STAR2HTML="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_STAR2HTML" && ac_cv_path_STAR2HTML="star2html" ;; esac fi STAR2HTML=$ac_cv_path_STAR2HTML if test -n "$STAR2HTML"; then echo "$as_me:$LINENO: result: $STAR2HTML" >&5 echo "${ECHO_T}$STAR2HTML" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if $_star_build_docs; then : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"'} else { echo "$as_me:$LINENO: WARNING: not installing docs sun267" >&5 echo "$as_me: WARNING: not installing docs sun267" >&2;} fi ac_config_files="$ac_config_files Makefile component.xml" ac_config_headers="$ac_config_headers config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${NOPIC_TRUE}" && test -z "${NOPIC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"NOPIC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"NOPIC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by pal $as_me 0.3.0, which was generated by Starlink Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ pal config.status 0.3.0 configured by $0, generated by Starlink Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "component.xml" ) CONFIG_FILES="$CONFIG_FILES component.xml" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@STARLINK@,$STARLINK,;t t s,@STAR_CPPFLAGS@,$STAR_CPPFLAGS,;t t s,@STAR_FCFLAGS@,$STAR_FCFLAGS,;t t s,@STAR_FFLAGS@,$STAR_FFLAGS,;t t s,@STAR_LDFLAGS@,$STAR_LDFLAGS,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@FC@,$FC,;t t s,@FCFLAGS@,$FCFLAGS,;t t s,@ac_ct_FC@,$ac_ct_FC,;t t s,@C_FC_FCLINK_MAGIC@,$C_FC_FCLINK_MAGIC,;t t s,@C_FC_PPFC_FCLINK_MAGIC@,$C_FC_PPFC_FCLINK_MAGIC,;t t s,@stardocsdir@,$stardocsdir,;t t s,@staretcdir@,$staretcdir,;t t s,@starexamplesdir@,$starexamplesdir,;t t s,@starfacsdir@,$starfacsdir,;t t s,@starhelpdir@,$starhelpdir,;t t s,@starnewsdir@,$starnewsdir,;t t s,@STAR_DEPENDENCIES_ATTRIBUTES@,$STAR_DEPENDENCIES_ATTRIBUTES,;t t s,@STAR_DEPENDENCIES_CHILDREN@,$STAR_DEPENDENCIES_CHILDREN,;t t s,@STAR_DOCUMENTATION@,$STAR_DOCUMENTATION,;t t s,@PACKAGE_VERSION_MAJOR@,$PACKAGE_VERSION_MAJOR,;t t s,@PACKAGE_VERSION_MINOR@,$PACKAGE_VERSION_MINOR,;t t s,@PACKAGE_VERSION_RELEASE@,$PACKAGE_VERSION_RELEASE,;t t s,@PACKAGE_VERSION_INTEGER@,$PACKAGE_VERSION_INTEGER,;t t s,@STAR_MANIFEST_DIR@,$STAR_MANIFEST_DIR,;t t s,@GIT@,$GIT,;t t s,@STAR_SOURCE_ROOT_DIR@,$STAR_SOURCE_ROOT_DIR,;t t s,@PREDIST@,$PREDIST,;t t s,@PAX@,$PAX,;t t s,@TAR@,$TAR,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@EGREP@,$EGREP,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@CPP@,$CPP,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@NOPIC_TRUE@,$NOPIC_TRUE,;t t s,@NOPIC_FALSE@,$NOPIC_FALSE,;t t s,@STARUTIL_LIBADD@,$STARUTIL_LIBADD,;t t s,@SOFA_LIBADD@,$SOFA_LIBADD,;t t s,@SOFA_LDFLAGS@,$SOFA_LDFLAGS,;t t s,@SOFA_CPPFLAGS@,$SOFA_CPPFLAGS,;t t s,@STAR2HTML@,$STAR2HTML,;t t s,@LATEX2DVI@,$LATEX2DVI,;t t s,@STAR_LATEX_DOCUMENTATION@,$STAR_LATEX_DOCUMENTATION,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi pal-0.3.0/configure.ac000644 000161 000120 00000006066 12017005561 014637 0ustar00timjadmin000000 000000 dnl Process this file with autoconf to produce a configure script AC_REVISION($Revision: 27534 $) dnl Initialisation: package name and version number AC_INIT(pal, 0.3.0, starlink@jiscmail.ac.uk) dnl Require autoconf-2.50 at least AC_PREREQ(2.50) dnl Require Starlink automake AM_INIT_AUTOMAKE(1.8.2-starlink) dnl Sanity-check: name a file in the source directory -- if this dnl isn't found then configure will complain AC_CONFIG_SRCDIR([pal.h]) dnl Include defaults for Starlink configurations STAR_DEFAULTS dnl Find required versions of the programs we need for configuration AC_PROG_CC AC_PROG_LIBTOOL # If --with-pic=no is set we should honour that. AM_CONDITIONAL(NOPIC, test x$pic_mode = xno) dnl copysign and isblank are a c99 feature AC_CHECK_FUNCS(copysign) AC_CHECK_FUNCS(isblank) dnl Use strlcpy if it is available AC_CHECK_FUNCS(strlcpy) # Need the math library AC_CHECK_LIB([m],[sin]) dnl We can not simply test for Starlink starutil because dnl when configure runs in a Starlink build starutil will not dnl have been built yet. If --without-starlink has been used dnl $STARLINK will be unset so we test that. dnl If we do not have Starlink we can do the test anyhow just in case if test -n "$STARLINK" then AC_SUBST( STARUTIL_LIBADD, "${libdir}/libstarutil.la" ) AC_SUBST( SOFA_LIBADD, "${libdir}/libsofa_c.la" ) AC_SUBST( SOFA_LDFLAGS, "" ) AC_DEFINE( [HAVE_STAR_UTIL_H], [1], [Define to 1 if you have the header file]) else dnl AC_CHECK_HEADERS does not search $includedir save_CPPFLAGS="$CPPFLAGS" eval CPPFLAGS=\"$CPPFLAGS -I${includdir}\" eval CPPFLAGS=\"$CPPFLAGS\" AC_CHECK_HEADERS( star/util.h ) CPPFLAGS="$save_CPPFLAGS" dnl for some reason AC_CHECK_LIB does not look in the --prefix hierarchy so dnl $libdir is not searched. dnl and we use eval twice to convert $libdir -> $exec_prefix/lib -> $prefix/lib save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"$LDFLAGS -L${libdir}\" eval LDFLAGS=\"$LDFLAGS\" AC_CHECK_LIB([starutil],[star_strlcpy], [AC_SUBST(STARUTIL_LIBADD, "-lstarutil")], [AC_SUBST(STARUTIL_LIBADD, "")]) AC_CHECK_LIB([sofa_c],[iauCal2jd], [AC_SUBST(SOFA_LIBADD, "-lsofa_c")], [AC_ERROR([Missing SOFA library. Can not continue])]) LDFLAGS="$save_LDFLAGS" dnl Ensure that we use the $prefix values AC_SUBST( SOFA_LDFLAGS, "-L${libdir}" ) AC_SUBST( SOFA_CPPFLAGS, "-I${includedir}" ) dnl Disable document building regardless of --without-stardocs _star_build_docs=: fi dnl Declare the build and use dependencies for this package STAR_DECLARE_DEPENDENCIES(build, [sofa starutil]) STAR_DECLARE_DEPENDENCIES(link, [sofa starutil]) dnl List the sun/ssn/... numbers which document this package and dnl which are present as .tex files in this directory. STAR_LATEX_DOCUMENTATION(sun267) dnl If you wish to configure extra files, you can add them to this dnl declaration. AC_CONFIG_FILES(Makefile component.xml) AC_CONFIG_HEADERS( config.h ) dnl This is the bit that does the actual work AC_OUTPUT pal-0.3.0/._depcomp000755 000161 000120 00000000560 12014747051 014140 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/depcomp000755 000161 000120 00000037100 12014747051 013723 0ustar00timjadmin000000 000000 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2005-07-09.11 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mecanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pal-0.3.0/._install-sh000755 000161 000120 00000000560 12014747065 014574 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/install-sh000755 000161 000120 00000022021 12014747065 014353 0ustar00timjadmin000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2005-05-14.22 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit $?;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit $?;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` shift IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit 0 } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pal-0.3.0/LICENCE000644 000161 000120 00000104513 12014745436 013343 0ustar00timjadmin000000 000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . pal-0.3.0/._ltmain.sh000644 000161 000120 00000000560 12013220255 014372 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/ltmain.sh000644 000161 000120 00000553065 12013220255 014172 0ustar00timjadmin000000 000000 # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.18 TIMESTAMP=" (1.1.1.4 2005/07/21 14:39:23)" # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" quote_scanset='[[~#^*{};<>?'"'"' ]' ##################################### # Shell function definitions: # This seems to be the best place for them # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 exit $EXIT_FAILURE fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xdir="$my_gentop/$my_xlib" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" status=$? if test "$status" -ne 0 && test ! -d "$my_xdir"; then exit $status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist ${rm}r unfat-$$ cd "$darwin_orig_dir" else cd "$darwin_orig_dir" func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches fi # $run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2005 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $? ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $? ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $? ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, and some SunOS ksh mistreat backslash-escaping # in scan sets (worked around with variable expansion), # and furthermore cannot handle '|' '&' '(' ')' in scan sets # at all, so we specify them separately. *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` case $qlibobj in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") qlibobj="$qlibobj" ;; esac if test "X$libobj" != "X$qlibobj"; then $echo "$modename: libobj name \`$libobj' may not contain shell special characters." exit $EXIT_FAILURE fi objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` case $qsrcfile in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") qsrcfile="\"$qsrcfile\"" ;; esac $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; darwin_framework) compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=darwin_framework compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit $EXIT_FAILURE fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. -model) compile_command="$compile_command $arg" compiler_flags="$compiler_flags $arg" finalize_command="$finalize_command $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -module) module=yes continue ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m* pass through architecture-specific compiler args for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$echo "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$output_la-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext k=`expr $k + 1` output=$output_objdir/$output_la-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadable object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ " case $host in *cygwin* | *mingw* ) $echo >> "$output_objdir/$dlsyms" "\ /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs */ struct { " ;; * ) $echo >> "$output_objdir/$dlsyms" "\ const struct { " ;; esac $echo >> "$output_objdir/$dlsyms" "\ const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${outputname}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "copying selected object files to avoid basename conflicts..." if test -z "$gentop"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi fi save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase counter=`expr $counter + 1` case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" $run ln "$obj" "$gentop/$newobj" || $run cp "$obj" "$gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" save_umask=`umask` umask 0077 if $mkdir "$tmpdir"; then umask $save_umask else umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: pal-0.3.0/Makefile.am000644 000161 000120 00000004451 12017003201 014366 0ustar00timjadmin000000 000000 ## Process this file with automake to produce Makefile.in lib_LTLIBRARIES = libpal.la # Include palOne2One.c separately since it is a combo file libpal_la_SOURCES = $(PUBLIC_C_FILES) palOne2One.c $(PRIVATE_C_FILES) # If we are using a non-standard location libpal_la_CPPFLAGS = $(SOFA_CPPFLAGS) libpal_la_LDFLAGS = $(SOFA_LDFLAGS) # Force a link against SOFA and, optionally, starutil libpal_la_LIBADD = $(SOFA_LIBADD) $(STARUTIL_LIBADD) # Misc files dist_starnews_DATA = pal.news dist_pkgdata_DATA = LICENCE README.md # Make all library code position independent. This is handy for creating # shareable libraries from the static ones (Java JNI libraries). if !NOPIC libpal_la_CFLAGS = $(AM_CFLAGS) -prefer-pic endif # install pal as "star/pal.h" cincludedir = $(includedir)/star cinclude_HEADERS = pal.h palmac.h noinst_HEADERS = $(PRIVATE_INCLUDES) PRIVATE_INCLUDES = pal1.h PUBLIC_C_FILES = \ palAddet.c \ palAirmas.c \ palAmp.c \ palAmpqk.c \ palAop.c \ palAoppa.c \ palAoppat.c \ palAopqk.c \ palCaldj.c \ palDafin.c \ palDe2h.c \ palDeuler.c \ palDfltin.c \ palDh2e.c \ palDjcal.c \ palDmat.c \ palDs2tp.c \ palDat.c \ palDmoon.c \ palDrange.c \ palDt.c \ palDtp2s.c \ palDtps2c.c \ palDtt.c \ palEcmat.c \ palEl2ue.c \ palEpco.c \ palEpv.c \ palEtrms.c \ palEqecl.c \ palEqgal.c \ palEvp.c \ palFk45z.c \ palFk524.c \ palFk54z.c \ palGaleq.c \ palGalsup.c \ palGe50.c \ palGeoc.c \ palIntin.c \ palMap.c \ palMappa.c \ palMapqk.c \ palMapqkz.c \ palNut.c \ palNutc.c \ palOap.c \ palOapqk.c \ palObs.c \ palPa.c \ palPertel.c \ palPertue.c \ palPlanel.c \ palPlanet.c \ palPlante.c \ palPlantu.c \ palPm.c \ palPrebn.c \ palPrec.c \ palPreces.c \ palPrenut.c \ palPv2el.c \ palPv2ue.c \ palPvobs.c \ palRdplan.c \ palRefco.c \ palRefro.c \ palRefz.c \ palRverot.c \ palRvgalc.c \ palRvlg.c \ palRvlsrd.c \ palRvlsrk.c \ palSubet.c \ palSupgal.c \ palUe2el.c \ palUe2pv.c PRIVATE_C_FILES = \ pal1Atms.c \ pal1Atmt.c stardocs_DATA = @STAR_LATEX_DOCUMENTATION@ TESTS = palTest check_PROGRAMS = palTest palTest_SOURCES = palTest.c palTest_LDADD = libpal.la # A target for making the SUN documentation. We do not do this automatically palsun.tex: $(PUBLIC_C_FILES) -rm -f palsun.tex all.c cat $(PUBLIC_C_FILES) > all.c ${STARLINK_DIR}/bin/sst/prolat in=all.c out=palsun.tex single=no page=no atask=no document=no -rm all.c pal-0.3.0/Makefile.in000644 000161 000120 00000361661 12017005761 014425 0ustar00timjadmin000000 000000 # Makefile.in generated by automake 1.9.6-starlink from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = palTest$(EXEEXT) DIST_COMMON = $(am__configure_deps) $(cinclude_HEADERS) \ $(dist_pkgdata_DATA) $(dist_starnews_DATA) $(noinst_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/component.xml.in $(srcdir)/config.h.in \ $(stardocs_DATA) $(top_srcdir)/configure compile config.guess \ config.sub depcomp install-sh ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = component.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" \ "$(DESTDIR)$(starnewsdir)" $(DESTDIR)$(stardocsdir) \ "$(DESTDIR)$(cincludedir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libpal_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am__objects_1 = libpal_la-palAddet.lo libpal_la-palAirmas.lo \ libpal_la-palAmp.lo libpal_la-palAmpqk.lo libpal_la-palAop.lo \ libpal_la-palAoppa.lo libpal_la-palAoppat.lo \ libpal_la-palAopqk.lo libpal_la-palCaldj.lo \ libpal_la-palDafin.lo libpal_la-palDe2h.lo \ libpal_la-palDeuler.lo libpal_la-palDfltin.lo \ libpal_la-palDh2e.lo libpal_la-palDjcal.lo \ libpal_la-palDmat.lo libpal_la-palDs2tp.lo libpal_la-palDat.lo \ libpal_la-palDmoon.lo libpal_la-palDrange.lo \ libpal_la-palDt.lo libpal_la-palDtp2s.lo \ libpal_la-palDtps2c.lo libpal_la-palDtt.lo \ libpal_la-palEcmat.lo libpal_la-palEl2ue.lo \ libpal_la-palEpco.lo libpal_la-palEpv.lo libpal_la-palEtrms.lo \ libpal_la-palEqecl.lo libpal_la-palEqgal.lo \ libpal_la-palEvp.lo libpal_la-palFk45z.lo \ libpal_la-palFk524.lo libpal_la-palFk54z.lo \ libpal_la-palGaleq.lo libpal_la-palGalsup.lo \ libpal_la-palGe50.lo libpal_la-palGeoc.lo \ libpal_la-palIntin.lo libpal_la-palMap.lo \ libpal_la-palMappa.lo libpal_la-palMapqk.lo \ libpal_la-palMapqkz.lo libpal_la-palNut.lo \ libpal_la-palNutc.lo libpal_la-palOap.lo libpal_la-palOapqk.lo \ libpal_la-palObs.lo libpal_la-palPa.lo libpal_la-palPertel.lo \ libpal_la-palPertue.lo libpal_la-palPlanel.lo \ libpal_la-palPlanet.lo libpal_la-palPlante.lo \ libpal_la-palPlantu.lo libpal_la-palPm.lo \ libpal_la-palPrebn.lo libpal_la-palPrec.lo \ libpal_la-palPreces.lo libpal_la-palPrenut.lo \ libpal_la-palPv2el.lo libpal_la-palPv2ue.lo \ libpal_la-palPvobs.lo libpal_la-palRdplan.lo \ libpal_la-palRefco.lo libpal_la-palRefro.lo \ libpal_la-palRefz.lo libpal_la-palRverot.lo \ libpal_la-palRvgalc.lo libpal_la-palRvlg.lo \ libpal_la-palRvlsrd.lo libpal_la-palRvlsrk.lo \ libpal_la-palSubet.lo libpal_la-palSupgal.lo \ libpal_la-palUe2el.lo libpal_la-palUe2pv.lo am__objects_2 = libpal_la-pal1Atms.lo libpal_la-pal1Atmt.lo am_libpal_la_OBJECTS = $(am__objects_1) libpal_la-palOne2One.lo \ $(am__objects_2) libpal_la_OBJECTS = $(am_libpal_la_OBJECTS) am_palTest_OBJECTS = palTest.$(OBJEXT) palTest_OBJECTS = $(am_palTest_OBJECTS) palTest_DEPENDENCIES = libpal.la DEFAULT_INCLUDES = -I. -I$(srcdir) -I. depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(STAR_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) \ $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libpal_la_SOURCES) $(palTest_SOURCES) DIST_SOURCES = $(libpal_la_SOURCES) $(palTest_SOURCES) dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) dist_starnewsDATA_INSTALL = $(INSTALL_DATA) stardocsDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_pkgdata_DATA) $(dist_starnews_DATA) $(stardocs_DATA) cincludeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(cinclude_HEADERS) $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print # Use AM_MAKEFLAGS to pass the value of the MANIFEST variable into # submakes (not all makes do this automatically). This can still be # overridden with a setting of this variable on the $(MAKE) command # line. I think we really shouldn't be setting this variable -- if # it causes a problem for anyone, we should edit a new variable in to # the .am templates. AM_MAKEFLAGS = MANIFEST=$(MANIFEST) REAL_INSTALL = install-am # Set to : to emit manifest lines, too # (don't actually do this here -- it's done within install-manifest below). MANIFEST = false ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ C_FC_FCLINK_MAGIC = @C_FC_FCLINK_MAGIC@ C_FC_PPFC_FCLINK_MAGIC = @C_FC_PPFC_FCLINK_MAGIC@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FC = @FC@ FCFLAGS = @FCFLAGS@ FFLAGS = @FFLAGS@ GIT = @GIT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LATEX2DVI = @LATEX2DVI@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ NOPIC_FALSE = @NOPIC_FALSE@ NOPIC_TRUE = @NOPIC_TRUE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PACKAGE_VERSION_INTEGER = @PACKAGE_VERSION_INTEGER@ PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ PATH_SEPARATOR = @PATH_SEPARATOR@ PAX = @PAX@ PREDIST = @PREDIST@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SOFA_CPPFLAGS = @SOFA_CPPFLAGS@ SOFA_LDFLAGS = @SOFA_LDFLAGS@ SOFA_LIBADD = @SOFA_LIBADD@ STAR2HTML = @STAR2HTML@ STARLINK = @STARLINK@ STARUTIL_LIBADD = @STARUTIL_LIBADD@ STAR_CPPFLAGS = @STAR_CPPFLAGS@ STAR_DEPENDENCIES_ATTRIBUTES = @STAR_DEPENDENCIES_ATTRIBUTES@ STAR_DEPENDENCIES_CHILDREN = @STAR_DEPENDENCIES_CHILDREN@ STAR_DOCUMENTATION = @STAR_DOCUMENTATION@ STAR_FCFLAGS = @STAR_FCFLAGS@ STAR_FFLAGS = @STAR_FFLAGS@ STAR_LATEX_DOCUMENTATION = @STAR_LATEX_DOCUMENTATION@ STAR_LDFLAGS = @STAR_LDFLAGS@ STAR_MANIFEST_DIR = @STAR_MANIFEST_DIR@ STAR_SOURCE_ROOT_DIR = @STAR_SOURCE_ROOT_DIR@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ stardocsdir = @stardocsdir@ staretcdir = @staretcdir@ starexamplesdir = @starexamplesdir@ starfacsdir = @starfacsdir@ starhelpdir = @starhelpdir@ starnewsdir = @starnewsdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ lib_LTLIBRARIES = libpal.la # Include palOne2One.c separately since it is a combo file libpal_la_SOURCES = $(PUBLIC_C_FILES) palOne2One.c $(PRIVATE_C_FILES) # If we are using a non-standard location libpal_la_CPPFLAGS = $(SOFA_CPPFLAGS) libpal_la_LDFLAGS = $(SOFA_LDFLAGS) # Force a link against SOFA and, optionally, starutil libpal_la_LIBADD = $(SOFA_LIBADD) $(STARUTIL_LIBADD) # Misc files dist_starnews_DATA = pal.news dist_pkgdata_DATA = LICENCE README.md # Make all library code position independent. This is handy for creating # shareable libraries from the static ones (Java JNI libraries). @NOPIC_FALSE@libpal_la_CFLAGS = $(AM_CFLAGS) -prefer-pic # install pal as "star/pal.h" cincludedir = $(includedir)/star cinclude_HEADERS = pal.h palmac.h noinst_HEADERS = $(PRIVATE_INCLUDES) PRIVATE_INCLUDES = pal1.h PUBLIC_C_FILES = \ palAddet.c \ palAirmas.c \ palAmp.c \ palAmpqk.c \ palAop.c \ palAoppa.c \ palAoppat.c \ palAopqk.c \ palCaldj.c \ palDafin.c \ palDe2h.c \ palDeuler.c \ palDfltin.c \ palDh2e.c \ palDjcal.c \ palDmat.c \ palDs2tp.c \ palDat.c \ palDmoon.c \ palDrange.c \ palDt.c \ palDtp2s.c \ palDtps2c.c \ palDtt.c \ palEcmat.c \ palEl2ue.c \ palEpco.c \ palEpv.c \ palEtrms.c \ palEqecl.c \ palEqgal.c \ palEvp.c \ palFk45z.c \ palFk524.c \ palFk54z.c \ palGaleq.c \ palGalsup.c \ palGe50.c \ palGeoc.c \ palIntin.c \ palMap.c \ palMappa.c \ palMapqk.c \ palMapqkz.c \ palNut.c \ palNutc.c \ palOap.c \ palOapqk.c \ palObs.c \ palPa.c \ palPertel.c \ palPertue.c \ palPlanel.c \ palPlanet.c \ palPlante.c \ palPlantu.c \ palPm.c \ palPrebn.c \ palPrec.c \ palPreces.c \ palPrenut.c \ palPv2el.c \ palPv2ue.c \ palPvobs.c \ palRdplan.c \ palRefco.c \ palRefro.c \ palRefz.c \ palRverot.c \ palRvgalc.c \ palRvlg.c \ palRvlsrd.c \ palRvlsrk.c \ palSubet.c \ palSupgal.c \ palUe2el.c \ palUe2pv.c PRIVATE_C_FILES = \ pal1Atms.c \ pal1Atmt.c stardocs_DATA = @STAR_LATEX_DOCUMENTATION@ TESTS = palTest palTest_SOURCES = palTest.c palTest_LDADD = libpal.la all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .dvi .htx_tar .lo .o .obj .pdf .ps .tex am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --startree '; \ cd $(srcdir) && $(AUTOMAKE) --startree \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --startree Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --startree Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 component.xml: $(top_builddir)/config.status $(srcdir)/component.xml.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ if $(MANIFEST); then \ echo "MANIFEST:$(DESTDIR)$(libdir)/$$f"; \ expr $$p : '.*\.la$$' >/dev/null || \ { echo "Installing non-la file $$p!"; exit 1; }; \ (. ./$$p; \ if test -n "$$library_names"; then \ for l in $$library_names; do \ echo "MANIFEST:$(DESTDIR)$$libdir/$$l"; \ done; \ fi; \ if test -n "$$old_library"; then \ echo "MANIFEST:$(DESTDIR)$$libdir/$$old_library"; \ else :; fi; \ ); \ else :; fi; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libpal.la: $(libpal_la_OBJECTS) $(libpal_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libpal_la_LDFLAGS) $(libpal_la_OBJECTS) $(libpal_la_LIBADD) $(LIBS) clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done palTest$(EXEEXT): $(palTest_OBJECTS) $(palTest_DEPENDENCIES) @rm -f palTest$(EXEEXT) $(LINK) $(palTest_LDFLAGS) $(palTest_OBJECTS) $(palTest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-pal1Atms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-pal1Atmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAddet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAirmas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAmpqk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAoppa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAoppat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palAopqk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palCaldj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDafin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDe2h.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDeuler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDfltin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDh2e.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDjcal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDmat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDmoon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDrange.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDs2tp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDtp2s.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDtps2c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palDtt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEcmat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEl2ue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEpco.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEpv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEqecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEqgal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEtrms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palEvp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palFk45z.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palFk524.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palFk54z.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palGaleq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palGalsup.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palGe50.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palGeoc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palIntin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palMap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palMappa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palMapqk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palMapqkz.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palNut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palNutc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palOap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palOapqk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palObs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palOne2One.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPertel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPertue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPlanel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPlanet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPlante.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPlantu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPrebn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPrec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPreces.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPrenut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPv2el.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPv2ue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palPvobs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRdplan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRefco.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRefro.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRefz.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRverot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRvgalc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRvlg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRvlsrd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palRvlsrk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palSubet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palSupgal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palUe2el.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpal_la-palUe2pv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palTest.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< libpal_la-palAddet.lo: palAddet.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAddet.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAddet.Tpo" -c -o libpal_la-palAddet.lo `test -f 'palAddet.c' || echo '$(srcdir)/'`palAddet.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAddet.Tpo" "$(DEPDIR)/libpal_la-palAddet.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAddet.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAddet.c' object='libpal_la-palAddet.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAddet.lo `test -f 'palAddet.c' || echo '$(srcdir)/'`palAddet.c libpal_la-palAirmas.lo: palAirmas.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAirmas.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAirmas.Tpo" -c -o libpal_la-palAirmas.lo `test -f 'palAirmas.c' || echo '$(srcdir)/'`palAirmas.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAirmas.Tpo" "$(DEPDIR)/libpal_la-palAirmas.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAirmas.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAirmas.c' object='libpal_la-palAirmas.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAirmas.lo `test -f 'palAirmas.c' || echo '$(srcdir)/'`palAirmas.c libpal_la-palAmp.lo: palAmp.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAmp.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAmp.Tpo" -c -o libpal_la-palAmp.lo `test -f 'palAmp.c' || echo '$(srcdir)/'`palAmp.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAmp.Tpo" "$(DEPDIR)/libpal_la-palAmp.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAmp.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAmp.c' object='libpal_la-palAmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAmp.lo `test -f 'palAmp.c' || echo '$(srcdir)/'`palAmp.c libpal_la-palAmpqk.lo: palAmpqk.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAmpqk.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAmpqk.Tpo" -c -o libpal_la-palAmpqk.lo `test -f 'palAmpqk.c' || echo '$(srcdir)/'`palAmpqk.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAmpqk.Tpo" "$(DEPDIR)/libpal_la-palAmpqk.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAmpqk.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAmpqk.c' object='libpal_la-palAmpqk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAmpqk.lo `test -f 'palAmpqk.c' || echo '$(srcdir)/'`palAmpqk.c libpal_la-palAop.lo: palAop.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAop.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAop.Tpo" -c -o libpal_la-palAop.lo `test -f 'palAop.c' || echo '$(srcdir)/'`palAop.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAop.Tpo" "$(DEPDIR)/libpal_la-palAop.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAop.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAop.c' object='libpal_la-palAop.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAop.lo `test -f 'palAop.c' || echo '$(srcdir)/'`palAop.c libpal_la-palAoppa.lo: palAoppa.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAoppa.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAoppa.Tpo" -c -o libpal_la-palAoppa.lo `test -f 'palAoppa.c' || echo '$(srcdir)/'`palAoppa.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAoppa.Tpo" "$(DEPDIR)/libpal_la-palAoppa.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAoppa.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAoppa.c' object='libpal_la-palAoppa.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAoppa.lo `test -f 'palAoppa.c' || echo '$(srcdir)/'`palAoppa.c libpal_la-palAoppat.lo: palAoppat.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAoppat.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAoppat.Tpo" -c -o libpal_la-palAoppat.lo `test -f 'palAoppat.c' || echo '$(srcdir)/'`palAoppat.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAoppat.Tpo" "$(DEPDIR)/libpal_la-palAoppat.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAoppat.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAoppat.c' object='libpal_la-palAoppat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAoppat.lo `test -f 'palAoppat.c' || echo '$(srcdir)/'`palAoppat.c libpal_la-palAopqk.lo: palAopqk.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palAopqk.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palAopqk.Tpo" -c -o libpal_la-palAopqk.lo `test -f 'palAopqk.c' || echo '$(srcdir)/'`palAopqk.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palAopqk.Tpo" "$(DEPDIR)/libpal_la-palAopqk.Plo"; else rm -f "$(DEPDIR)/libpal_la-palAopqk.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palAopqk.c' object='libpal_la-palAopqk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palAopqk.lo `test -f 'palAopqk.c' || echo '$(srcdir)/'`palAopqk.c libpal_la-palCaldj.lo: palCaldj.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palCaldj.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palCaldj.Tpo" -c -o libpal_la-palCaldj.lo `test -f 'palCaldj.c' || echo '$(srcdir)/'`palCaldj.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palCaldj.Tpo" "$(DEPDIR)/libpal_la-palCaldj.Plo"; else rm -f "$(DEPDIR)/libpal_la-palCaldj.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palCaldj.c' object='libpal_la-palCaldj.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palCaldj.lo `test -f 'palCaldj.c' || echo '$(srcdir)/'`palCaldj.c libpal_la-palDafin.lo: palDafin.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDafin.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDafin.Tpo" -c -o libpal_la-palDafin.lo `test -f 'palDafin.c' || echo '$(srcdir)/'`palDafin.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDafin.Tpo" "$(DEPDIR)/libpal_la-palDafin.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDafin.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDafin.c' object='libpal_la-palDafin.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDafin.lo `test -f 'palDafin.c' || echo '$(srcdir)/'`palDafin.c libpal_la-palDe2h.lo: palDe2h.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDe2h.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDe2h.Tpo" -c -o libpal_la-palDe2h.lo `test -f 'palDe2h.c' || echo '$(srcdir)/'`palDe2h.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDe2h.Tpo" "$(DEPDIR)/libpal_la-palDe2h.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDe2h.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDe2h.c' object='libpal_la-palDe2h.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDe2h.lo `test -f 'palDe2h.c' || echo '$(srcdir)/'`palDe2h.c libpal_la-palDeuler.lo: palDeuler.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDeuler.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDeuler.Tpo" -c -o libpal_la-palDeuler.lo `test -f 'palDeuler.c' || echo '$(srcdir)/'`palDeuler.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDeuler.Tpo" "$(DEPDIR)/libpal_la-palDeuler.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDeuler.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDeuler.c' object='libpal_la-palDeuler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDeuler.lo `test -f 'palDeuler.c' || echo '$(srcdir)/'`palDeuler.c libpal_la-palDfltin.lo: palDfltin.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDfltin.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDfltin.Tpo" -c -o libpal_la-palDfltin.lo `test -f 'palDfltin.c' || echo '$(srcdir)/'`palDfltin.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDfltin.Tpo" "$(DEPDIR)/libpal_la-palDfltin.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDfltin.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDfltin.c' object='libpal_la-palDfltin.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDfltin.lo `test -f 'palDfltin.c' || echo '$(srcdir)/'`palDfltin.c libpal_la-palDh2e.lo: palDh2e.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDh2e.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDh2e.Tpo" -c -o libpal_la-palDh2e.lo `test -f 'palDh2e.c' || echo '$(srcdir)/'`palDh2e.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDh2e.Tpo" "$(DEPDIR)/libpal_la-palDh2e.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDh2e.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDh2e.c' object='libpal_la-palDh2e.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDh2e.lo `test -f 'palDh2e.c' || echo '$(srcdir)/'`palDh2e.c libpal_la-palDjcal.lo: palDjcal.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDjcal.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDjcal.Tpo" -c -o libpal_la-palDjcal.lo `test -f 'palDjcal.c' || echo '$(srcdir)/'`palDjcal.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDjcal.Tpo" "$(DEPDIR)/libpal_la-palDjcal.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDjcal.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDjcal.c' object='libpal_la-palDjcal.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDjcal.lo `test -f 'palDjcal.c' || echo '$(srcdir)/'`palDjcal.c libpal_la-palDmat.lo: palDmat.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDmat.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDmat.Tpo" -c -o libpal_la-palDmat.lo `test -f 'palDmat.c' || echo '$(srcdir)/'`palDmat.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDmat.Tpo" "$(DEPDIR)/libpal_la-palDmat.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDmat.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDmat.c' object='libpal_la-palDmat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDmat.lo `test -f 'palDmat.c' || echo '$(srcdir)/'`palDmat.c libpal_la-palDs2tp.lo: palDs2tp.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDs2tp.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDs2tp.Tpo" -c -o libpal_la-palDs2tp.lo `test -f 'palDs2tp.c' || echo '$(srcdir)/'`palDs2tp.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDs2tp.Tpo" "$(DEPDIR)/libpal_la-palDs2tp.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDs2tp.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDs2tp.c' object='libpal_la-palDs2tp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDs2tp.lo `test -f 'palDs2tp.c' || echo '$(srcdir)/'`palDs2tp.c libpal_la-palDat.lo: palDat.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDat.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDat.Tpo" -c -o libpal_la-palDat.lo `test -f 'palDat.c' || echo '$(srcdir)/'`palDat.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDat.Tpo" "$(DEPDIR)/libpal_la-palDat.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDat.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDat.c' object='libpal_la-palDat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDat.lo `test -f 'palDat.c' || echo '$(srcdir)/'`palDat.c libpal_la-palDmoon.lo: palDmoon.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDmoon.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDmoon.Tpo" -c -o libpal_la-palDmoon.lo `test -f 'palDmoon.c' || echo '$(srcdir)/'`palDmoon.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDmoon.Tpo" "$(DEPDIR)/libpal_la-palDmoon.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDmoon.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDmoon.c' object='libpal_la-palDmoon.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDmoon.lo `test -f 'palDmoon.c' || echo '$(srcdir)/'`palDmoon.c libpal_la-palDrange.lo: palDrange.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDrange.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDrange.Tpo" -c -o libpal_la-palDrange.lo `test -f 'palDrange.c' || echo '$(srcdir)/'`palDrange.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDrange.Tpo" "$(DEPDIR)/libpal_la-palDrange.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDrange.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDrange.c' object='libpal_la-palDrange.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDrange.lo `test -f 'palDrange.c' || echo '$(srcdir)/'`palDrange.c libpal_la-palDt.lo: palDt.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDt.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDt.Tpo" -c -o libpal_la-palDt.lo `test -f 'palDt.c' || echo '$(srcdir)/'`palDt.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDt.Tpo" "$(DEPDIR)/libpal_la-palDt.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDt.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDt.c' object='libpal_la-palDt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDt.lo `test -f 'palDt.c' || echo '$(srcdir)/'`palDt.c libpal_la-palDtp2s.lo: palDtp2s.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDtp2s.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDtp2s.Tpo" -c -o libpal_la-palDtp2s.lo `test -f 'palDtp2s.c' || echo '$(srcdir)/'`palDtp2s.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDtp2s.Tpo" "$(DEPDIR)/libpal_la-palDtp2s.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDtp2s.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDtp2s.c' object='libpal_la-palDtp2s.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDtp2s.lo `test -f 'palDtp2s.c' || echo '$(srcdir)/'`palDtp2s.c libpal_la-palDtps2c.lo: palDtps2c.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDtps2c.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDtps2c.Tpo" -c -o libpal_la-palDtps2c.lo `test -f 'palDtps2c.c' || echo '$(srcdir)/'`palDtps2c.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDtps2c.Tpo" "$(DEPDIR)/libpal_la-palDtps2c.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDtps2c.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDtps2c.c' object='libpal_la-palDtps2c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDtps2c.lo `test -f 'palDtps2c.c' || echo '$(srcdir)/'`palDtps2c.c libpal_la-palDtt.lo: palDtt.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palDtt.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palDtt.Tpo" -c -o libpal_la-palDtt.lo `test -f 'palDtt.c' || echo '$(srcdir)/'`palDtt.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palDtt.Tpo" "$(DEPDIR)/libpal_la-palDtt.Plo"; else rm -f "$(DEPDIR)/libpal_la-palDtt.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palDtt.c' object='libpal_la-palDtt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palDtt.lo `test -f 'palDtt.c' || echo '$(srcdir)/'`palDtt.c libpal_la-palEcmat.lo: palEcmat.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEcmat.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEcmat.Tpo" -c -o libpal_la-palEcmat.lo `test -f 'palEcmat.c' || echo '$(srcdir)/'`palEcmat.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEcmat.Tpo" "$(DEPDIR)/libpal_la-palEcmat.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEcmat.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEcmat.c' object='libpal_la-palEcmat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEcmat.lo `test -f 'palEcmat.c' || echo '$(srcdir)/'`palEcmat.c libpal_la-palEl2ue.lo: palEl2ue.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEl2ue.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEl2ue.Tpo" -c -o libpal_la-palEl2ue.lo `test -f 'palEl2ue.c' || echo '$(srcdir)/'`palEl2ue.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEl2ue.Tpo" "$(DEPDIR)/libpal_la-palEl2ue.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEl2ue.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEl2ue.c' object='libpal_la-palEl2ue.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEl2ue.lo `test -f 'palEl2ue.c' || echo '$(srcdir)/'`palEl2ue.c libpal_la-palEpco.lo: palEpco.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEpco.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEpco.Tpo" -c -o libpal_la-palEpco.lo `test -f 'palEpco.c' || echo '$(srcdir)/'`palEpco.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEpco.Tpo" "$(DEPDIR)/libpal_la-palEpco.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEpco.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEpco.c' object='libpal_la-palEpco.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEpco.lo `test -f 'palEpco.c' || echo '$(srcdir)/'`palEpco.c libpal_la-palEpv.lo: palEpv.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEpv.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEpv.Tpo" -c -o libpal_la-palEpv.lo `test -f 'palEpv.c' || echo '$(srcdir)/'`palEpv.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEpv.Tpo" "$(DEPDIR)/libpal_la-palEpv.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEpv.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEpv.c' object='libpal_la-palEpv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEpv.lo `test -f 'palEpv.c' || echo '$(srcdir)/'`palEpv.c libpal_la-palEtrms.lo: palEtrms.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEtrms.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEtrms.Tpo" -c -o libpal_la-palEtrms.lo `test -f 'palEtrms.c' || echo '$(srcdir)/'`palEtrms.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEtrms.Tpo" "$(DEPDIR)/libpal_la-palEtrms.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEtrms.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEtrms.c' object='libpal_la-palEtrms.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEtrms.lo `test -f 'palEtrms.c' || echo '$(srcdir)/'`palEtrms.c libpal_la-palEqecl.lo: palEqecl.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEqecl.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEqecl.Tpo" -c -o libpal_la-palEqecl.lo `test -f 'palEqecl.c' || echo '$(srcdir)/'`palEqecl.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEqecl.Tpo" "$(DEPDIR)/libpal_la-palEqecl.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEqecl.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEqecl.c' object='libpal_la-palEqecl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEqecl.lo `test -f 'palEqecl.c' || echo '$(srcdir)/'`palEqecl.c libpal_la-palEqgal.lo: palEqgal.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEqgal.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEqgal.Tpo" -c -o libpal_la-palEqgal.lo `test -f 'palEqgal.c' || echo '$(srcdir)/'`palEqgal.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEqgal.Tpo" "$(DEPDIR)/libpal_la-palEqgal.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEqgal.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEqgal.c' object='libpal_la-palEqgal.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEqgal.lo `test -f 'palEqgal.c' || echo '$(srcdir)/'`palEqgal.c libpal_la-palEvp.lo: palEvp.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palEvp.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palEvp.Tpo" -c -o libpal_la-palEvp.lo `test -f 'palEvp.c' || echo '$(srcdir)/'`palEvp.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palEvp.Tpo" "$(DEPDIR)/libpal_la-palEvp.Plo"; else rm -f "$(DEPDIR)/libpal_la-palEvp.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palEvp.c' object='libpal_la-palEvp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palEvp.lo `test -f 'palEvp.c' || echo '$(srcdir)/'`palEvp.c libpal_la-palFk45z.lo: palFk45z.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palFk45z.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palFk45z.Tpo" -c -o libpal_la-palFk45z.lo `test -f 'palFk45z.c' || echo '$(srcdir)/'`palFk45z.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palFk45z.Tpo" "$(DEPDIR)/libpal_la-palFk45z.Plo"; else rm -f "$(DEPDIR)/libpal_la-palFk45z.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palFk45z.c' object='libpal_la-palFk45z.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palFk45z.lo `test -f 'palFk45z.c' || echo '$(srcdir)/'`palFk45z.c libpal_la-palFk524.lo: palFk524.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palFk524.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palFk524.Tpo" -c -o libpal_la-palFk524.lo `test -f 'palFk524.c' || echo '$(srcdir)/'`palFk524.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palFk524.Tpo" "$(DEPDIR)/libpal_la-palFk524.Plo"; else rm -f "$(DEPDIR)/libpal_la-palFk524.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palFk524.c' object='libpal_la-palFk524.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palFk524.lo `test -f 'palFk524.c' || echo '$(srcdir)/'`palFk524.c libpal_la-palFk54z.lo: palFk54z.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palFk54z.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palFk54z.Tpo" -c -o libpal_la-palFk54z.lo `test -f 'palFk54z.c' || echo '$(srcdir)/'`palFk54z.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palFk54z.Tpo" "$(DEPDIR)/libpal_la-palFk54z.Plo"; else rm -f "$(DEPDIR)/libpal_la-palFk54z.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palFk54z.c' object='libpal_la-palFk54z.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palFk54z.lo `test -f 'palFk54z.c' || echo '$(srcdir)/'`palFk54z.c libpal_la-palGaleq.lo: palGaleq.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palGaleq.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palGaleq.Tpo" -c -o libpal_la-palGaleq.lo `test -f 'palGaleq.c' || echo '$(srcdir)/'`palGaleq.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palGaleq.Tpo" "$(DEPDIR)/libpal_la-palGaleq.Plo"; else rm -f "$(DEPDIR)/libpal_la-palGaleq.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palGaleq.c' object='libpal_la-palGaleq.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palGaleq.lo `test -f 'palGaleq.c' || echo '$(srcdir)/'`palGaleq.c libpal_la-palGalsup.lo: palGalsup.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palGalsup.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palGalsup.Tpo" -c -o libpal_la-palGalsup.lo `test -f 'palGalsup.c' || echo '$(srcdir)/'`palGalsup.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palGalsup.Tpo" "$(DEPDIR)/libpal_la-palGalsup.Plo"; else rm -f "$(DEPDIR)/libpal_la-palGalsup.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palGalsup.c' object='libpal_la-palGalsup.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palGalsup.lo `test -f 'palGalsup.c' || echo '$(srcdir)/'`palGalsup.c libpal_la-palGe50.lo: palGe50.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palGe50.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palGe50.Tpo" -c -o libpal_la-palGe50.lo `test -f 'palGe50.c' || echo '$(srcdir)/'`palGe50.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palGe50.Tpo" "$(DEPDIR)/libpal_la-palGe50.Plo"; else rm -f "$(DEPDIR)/libpal_la-palGe50.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palGe50.c' object='libpal_la-palGe50.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palGe50.lo `test -f 'palGe50.c' || echo '$(srcdir)/'`palGe50.c libpal_la-palGeoc.lo: palGeoc.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palGeoc.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palGeoc.Tpo" -c -o libpal_la-palGeoc.lo `test -f 'palGeoc.c' || echo '$(srcdir)/'`palGeoc.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palGeoc.Tpo" "$(DEPDIR)/libpal_la-palGeoc.Plo"; else rm -f "$(DEPDIR)/libpal_la-palGeoc.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palGeoc.c' object='libpal_la-palGeoc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palGeoc.lo `test -f 'palGeoc.c' || echo '$(srcdir)/'`palGeoc.c libpal_la-palIntin.lo: palIntin.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palIntin.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palIntin.Tpo" -c -o libpal_la-palIntin.lo `test -f 'palIntin.c' || echo '$(srcdir)/'`palIntin.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palIntin.Tpo" "$(DEPDIR)/libpal_la-palIntin.Plo"; else rm -f "$(DEPDIR)/libpal_la-palIntin.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palIntin.c' object='libpal_la-palIntin.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palIntin.lo `test -f 'palIntin.c' || echo '$(srcdir)/'`palIntin.c libpal_la-palMap.lo: palMap.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palMap.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palMap.Tpo" -c -o libpal_la-palMap.lo `test -f 'palMap.c' || echo '$(srcdir)/'`palMap.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palMap.Tpo" "$(DEPDIR)/libpal_la-palMap.Plo"; else rm -f "$(DEPDIR)/libpal_la-palMap.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palMap.c' object='libpal_la-palMap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palMap.lo `test -f 'palMap.c' || echo '$(srcdir)/'`palMap.c libpal_la-palMappa.lo: palMappa.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palMappa.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palMappa.Tpo" -c -o libpal_la-palMappa.lo `test -f 'palMappa.c' || echo '$(srcdir)/'`palMappa.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palMappa.Tpo" "$(DEPDIR)/libpal_la-palMappa.Plo"; else rm -f "$(DEPDIR)/libpal_la-palMappa.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palMappa.c' object='libpal_la-palMappa.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palMappa.lo `test -f 'palMappa.c' || echo '$(srcdir)/'`palMappa.c libpal_la-palMapqk.lo: palMapqk.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palMapqk.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palMapqk.Tpo" -c -o libpal_la-palMapqk.lo `test -f 'palMapqk.c' || echo '$(srcdir)/'`palMapqk.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palMapqk.Tpo" "$(DEPDIR)/libpal_la-palMapqk.Plo"; else rm -f "$(DEPDIR)/libpal_la-palMapqk.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palMapqk.c' object='libpal_la-palMapqk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palMapqk.lo `test -f 'palMapqk.c' || echo '$(srcdir)/'`palMapqk.c libpal_la-palMapqkz.lo: palMapqkz.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palMapqkz.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palMapqkz.Tpo" -c -o libpal_la-palMapqkz.lo `test -f 'palMapqkz.c' || echo '$(srcdir)/'`palMapqkz.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palMapqkz.Tpo" "$(DEPDIR)/libpal_la-palMapqkz.Plo"; else rm -f "$(DEPDIR)/libpal_la-palMapqkz.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palMapqkz.c' object='libpal_la-palMapqkz.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palMapqkz.lo `test -f 'palMapqkz.c' || echo '$(srcdir)/'`palMapqkz.c libpal_la-palNut.lo: palNut.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palNut.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palNut.Tpo" -c -o libpal_la-palNut.lo `test -f 'palNut.c' || echo '$(srcdir)/'`palNut.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palNut.Tpo" "$(DEPDIR)/libpal_la-palNut.Plo"; else rm -f "$(DEPDIR)/libpal_la-palNut.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palNut.c' object='libpal_la-palNut.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palNut.lo `test -f 'palNut.c' || echo '$(srcdir)/'`palNut.c libpal_la-palNutc.lo: palNutc.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palNutc.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palNutc.Tpo" -c -o libpal_la-palNutc.lo `test -f 'palNutc.c' || echo '$(srcdir)/'`palNutc.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palNutc.Tpo" "$(DEPDIR)/libpal_la-palNutc.Plo"; else rm -f "$(DEPDIR)/libpal_la-palNutc.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palNutc.c' object='libpal_la-palNutc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palNutc.lo `test -f 'palNutc.c' || echo '$(srcdir)/'`palNutc.c libpal_la-palOap.lo: palOap.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palOap.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palOap.Tpo" -c -o libpal_la-palOap.lo `test -f 'palOap.c' || echo '$(srcdir)/'`palOap.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palOap.Tpo" "$(DEPDIR)/libpal_la-palOap.Plo"; else rm -f "$(DEPDIR)/libpal_la-palOap.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palOap.c' object='libpal_la-palOap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palOap.lo `test -f 'palOap.c' || echo '$(srcdir)/'`palOap.c libpal_la-palOapqk.lo: palOapqk.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palOapqk.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palOapqk.Tpo" -c -o libpal_la-palOapqk.lo `test -f 'palOapqk.c' || echo '$(srcdir)/'`palOapqk.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palOapqk.Tpo" "$(DEPDIR)/libpal_la-palOapqk.Plo"; else rm -f "$(DEPDIR)/libpal_la-palOapqk.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palOapqk.c' object='libpal_la-palOapqk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palOapqk.lo `test -f 'palOapqk.c' || echo '$(srcdir)/'`palOapqk.c libpal_la-palObs.lo: palObs.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palObs.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palObs.Tpo" -c -o libpal_la-palObs.lo `test -f 'palObs.c' || echo '$(srcdir)/'`palObs.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palObs.Tpo" "$(DEPDIR)/libpal_la-palObs.Plo"; else rm -f "$(DEPDIR)/libpal_la-palObs.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palObs.c' object='libpal_la-palObs.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palObs.lo `test -f 'palObs.c' || echo '$(srcdir)/'`palObs.c libpal_la-palPa.lo: palPa.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPa.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPa.Tpo" -c -o libpal_la-palPa.lo `test -f 'palPa.c' || echo '$(srcdir)/'`palPa.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPa.Tpo" "$(DEPDIR)/libpal_la-palPa.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPa.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPa.c' object='libpal_la-palPa.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPa.lo `test -f 'palPa.c' || echo '$(srcdir)/'`palPa.c libpal_la-palPertel.lo: palPertel.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPertel.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPertel.Tpo" -c -o libpal_la-palPertel.lo `test -f 'palPertel.c' || echo '$(srcdir)/'`palPertel.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPertel.Tpo" "$(DEPDIR)/libpal_la-palPertel.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPertel.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPertel.c' object='libpal_la-palPertel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPertel.lo `test -f 'palPertel.c' || echo '$(srcdir)/'`palPertel.c libpal_la-palPertue.lo: palPertue.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPertue.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPertue.Tpo" -c -o libpal_la-palPertue.lo `test -f 'palPertue.c' || echo '$(srcdir)/'`palPertue.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPertue.Tpo" "$(DEPDIR)/libpal_la-palPertue.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPertue.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPertue.c' object='libpal_la-palPertue.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPertue.lo `test -f 'palPertue.c' || echo '$(srcdir)/'`palPertue.c libpal_la-palPlanel.lo: palPlanel.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPlanel.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPlanel.Tpo" -c -o libpal_la-palPlanel.lo `test -f 'palPlanel.c' || echo '$(srcdir)/'`palPlanel.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPlanel.Tpo" "$(DEPDIR)/libpal_la-palPlanel.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPlanel.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPlanel.c' object='libpal_la-palPlanel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPlanel.lo `test -f 'palPlanel.c' || echo '$(srcdir)/'`palPlanel.c libpal_la-palPlanet.lo: palPlanet.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPlanet.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPlanet.Tpo" -c -o libpal_la-palPlanet.lo `test -f 'palPlanet.c' || echo '$(srcdir)/'`palPlanet.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPlanet.Tpo" "$(DEPDIR)/libpal_la-palPlanet.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPlanet.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPlanet.c' object='libpal_la-palPlanet.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPlanet.lo `test -f 'palPlanet.c' || echo '$(srcdir)/'`palPlanet.c libpal_la-palPlante.lo: palPlante.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPlante.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPlante.Tpo" -c -o libpal_la-palPlante.lo `test -f 'palPlante.c' || echo '$(srcdir)/'`palPlante.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPlante.Tpo" "$(DEPDIR)/libpal_la-palPlante.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPlante.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPlante.c' object='libpal_la-palPlante.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPlante.lo `test -f 'palPlante.c' || echo '$(srcdir)/'`palPlante.c libpal_la-palPlantu.lo: palPlantu.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPlantu.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPlantu.Tpo" -c -o libpal_la-palPlantu.lo `test -f 'palPlantu.c' || echo '$(srcdir)/'`palPlantu.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPlantu.Tpo" "$(DEPDIR)/libpal_la-palPlantu.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPlantu.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPlantu.c' object='libpal_la-palPlantu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPlantu.lo `test -f 'palPlantu.c' || echo '$(srcdir)/'`palPlantu.c libpal_la-palPm.lo: palPm.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPm.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPm.Tpo" -c -o libpal_la-palPm.lo `test -f 'palPm.c' || echo '$(srcdir)/'`palPm.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPm.Tpo" "$(DEPDIR)/libpal_la-palPm.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPm.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPm.c' object='libpal_la-palPm.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPm.lo `test -f 'palPm.c' || echo '$(srcdir)/'`palPm.c libpal_la-palPrebn.lo: palPrebn.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPrebn.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPrebn.Tpo" -c -o libpal_la-palPrebn.lo `test -f 'palPrebn.c' || echo '$(srcdir)/'`palPrebn.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPrebn.Tpo" "$(DEPDIR)/libpal_la-palPrebn.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPrebn.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPrebn.c' object='libpal_la-palPrebn.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPrebn.lo `test -f 'palPrebn.c' || echo '$(srcdir)/'`palPrebn.c libpal_la-palPrec.lo: palPrec.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPrec.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPrec.Tpo" -c -o libpal_la-palPrec.lo `test -f 'palPrec.c' || echo '$(srcdir)/'`palPrec.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPrec.Tpo" "$(DEPDIR)/libpal_la-palPrec.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPrec.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPrec.c' object='libpal_la-palPrec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPrec.lo `test -f 'palPrec.c' || echo '$(srcdir)/'`palPrec.c libpal_la-palPreces.lo: palPreces.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPreces.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPreces.Tpo" -c -o libpal_la-palPreces.lo `test -f 'palPreces.c' || echo '$(srcdir)/'`palPreces.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPreces.Tpo" "$(DEPDIR)/libpal_la-palPreces.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPreces.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPreces.c' object='libpal_la-palPreces.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPreces.lo `test -f 'palPreces.c' || echo '$(srcdir)/'`palPreces.c libpal_la-palPrenut.lo: palPrenut.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPrenut.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPrenut.Tpo" -c -o libpal_la-palPrenut.lo `test -f 'palPrenut.c' || echo '$(srcdir)/'`palPrenut.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPrenut.Tpo" "$(DEPDIR)/libpal_la-palPrenut.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPrenut.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPrenut.c' object='libpal_la-palPrenut.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPrenut.lo `test -f 'palPrenut.c' || echo '$(srcdir)/'`palPrenut.c libpal_la-palPv2el.lo: palPv2el.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPv2el.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPv2el.Tpo" -c -o libpal_la-palPv2el.lo `test -f 'palPv2el.c' || echo '$(srcdir)/'`palPv2el.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPv2el.Tpo" "$(DEPDIR)/libpal_la-palPv2el.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPv2el.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPv2el.c' object='libpal_la-palPv2el.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPv2el.lo `test -f 'palPv2el.c' || echo '$(srcdir)/'`palPv2el.c libpal_la-palPv2ue.lo: palPv2ue.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPv2ue.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPv2ue.Tpo" -c -o libpal_la-palPv2ue.lo `test -f 'palPv2ue.c' || echo '$(srcdir)/'`palPv2ue.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPv2ue.Tpo" "$(DEPDIR)/libpal_la-palPv2ue.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPv2ue.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPv2ue.c' object='libpal_la-palPv2ue.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPv2ue.lo `test -f 'palPv2ue.c' || echo '$(srcdir)/'`palPv2ue.c libpal_la-palPvobs.lo: palPvobs.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palPvobs.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palPvobs.Tpo" -c -o libpal_la-palPvobs.lo `test -f 'palPvobs.c' || echo '$(srcdir)/'`palPvobs.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palPvobs.Tpo" "$(DEPDIR)/libpal_la-palPvobs.Plo"; else rm -f "$(DEPDIR)/libpal_la-palPvobs.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palPvobs.c' object='libpal_la-palPvobs.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palPvobs.lo `test -f 'palPvobs.c' || echo '$(srcdir)/'`palPvobs.c libpal_la-palRdplan.lo: palRdplan.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRdplan.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRdplan.Tpo" -c -o libpal_la-palRdplan.lo `test -f 'palRdplan.c' || echo '$(srcdir)/'`palRdplan.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRdplan.Tpo" "$(DEPDIR)/libpal_la-palRdplan.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRdplan.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRdplan.c' object='libpal_la-palRdplan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRdplan.lo `test -f 'palRdplan.c' || echo '$(srcdir)/'`palRdplan.c libpal_la-palRefco.lo: palRefco.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRefco.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRefco.Tpo" -c -o libpal_la-palRefco.lo `test -f 'palRefco.c' || echo '$(srcdir)/'`palRefco.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRefco.Tpo" "$(DEPDIR)/libpal_la-palRefco.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRefco.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRefco.c' object='libpal_la-palRefco.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRefco.lo `test -f 'palRefco.c' || echo '$(srcdir)/'`palRefco.c libpal_la-palRefro.lo: palRefro.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRefro.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRefro.Tpo" -c -o libpal_la-palRefro.lo `test -f 'palRefro.c' || echo '$(srcdir)/'`palRefro.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRefro.Tpo" "$(DEPDIR)/libpal_la-palRefro.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRefro.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRefro.c' object='libpal_la-palRefro.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRefro.lo `test -f 'palRefro.c' || echo '$(srcdir)/'`palRefro.c libpal_la-palRefz.lo: palRefz.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRefz.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRefz.Tpo" -c -o libpal_la-palRefz.lo `test -f 'palRefz.c' || echo '$(srcdir)/'`palRefz.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRefz.Tpo" "$(DEPDIR)/libpal_la-palRefz.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRefz.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRefz.c' object='libpal_la-palRefz.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRefz.lo `test -f 'palRefz.c' || echo '$(srcdir)/'`palRefz.c libpal_la-palRverot.lo: palRverot.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRverot.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRverot.Tpo" -c -o libpal_la-palRverot.lo `test -f 'palRverot.c' || echo '$(srcdir)/'`palRverot.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRverot.Tpo" "$(DEPDIR)/libpal_la-palRverot.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRverot.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRverot.c' object='libpal_la-palRverot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRverot.lo `test -f 'palRverot.c' || echo '$(srcdir)/'`palRverot.c libpal_la-palRvgalc.lo: palRvgalc.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRvgalc.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRvgalc.Tpo" -c -o libpal_la-palRvgalc.lo `test -f 'palRvgalc.c' || echo '$(srcdir)/'`palRvgalc.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRvgalc.Tpo" "$(DEPDIR)/libpal_la-palRvgalc.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRvgalc.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRvgalc.c' object='libpal_la-palRvgalc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRvgalc.lo `test -f 'palRvgalc.c' || echo '$(srcdir)/'`palRvgalc.c libpal_la-palRvlg.lo: palRvlg.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRvlg.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRvlg.Tpo" -c -o libpal_la-palRvlg.lo `test -f 'palRvlg.c' || echo '$(srcdir)/'`palRvlg.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRvlg.Tpo" "$(DEPDIR)/libpal_la-palRvlg.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRvlg.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRvlg.c' object='libpal_la-palRvlg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRvlg.lo `test -f 'palRvlg.c' || echo '$(srcdir)/'`palRvlg.c libpal_la-palRvlsrd.lo: palRvlsrd.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRvlsrd.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRvlsrd.Tpo" -c -o libpal_la-palRvlsrd.lo `test -f 'palRvlsrd.c' || echo '$(srcdir)/'`palRvlsrd.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRvlsrd.Tpo" "$(DEPDIR)/libpal_la-palRvlsrd.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRvlsrd.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRvlsrd.c' object='libpal_la-palRvlsrd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRvlsrd.lo `test -f 'palRvlsrd.c' || echo '$(srcdir)/'`palRvlsrd.c libpal_la-palRvlsrk.lo: palRvlsrk.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palRvlsrk.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palRvlsrk.Tpo" -c -o libpal_la-palRvlsrk.lo `test -f 'palRvlsrk.c' || echo '$(srcdir)/'`palRvlsrk.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palRvlsrk.Tpo" "$(DEPDIR)/libpal_la-palRvlsrk.Plo"; else rm -f "$(DEPDIR)/libpal_la-palRvlsrk.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palRvlsrk.c' object='libpal_la-palRvlsrk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palRvlsrk.lo `test -f 'palRvlsrk.c' || echo '$(srcdir)/'`palRvlsrk.c libpal_la-palSubet.lo: palSubet.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palSubet.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palSubet.Tpo" -c -o libpal_la-palSubet.lo `test -f 'palSubet.c' || echo '$(srcdir)/'`palSubet.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palSubet.Tpo" "$(DEPDIR)/libpal_la-palSubet.Plo"; else rm -f "$(DEPDIR)/libpal_la-palSubet.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palSubet.c' object='libpal_la-palSubet.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palSubet.lo `test -f 'palSubet.c' || echo '$(srcdir)/'`palSubet.c libpal_la-palSupgal.lo: palSupgal.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palSupgal.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palSupgal.Tpo" -c -o libpal_la-palSupgal.lo `test -f 'palSupgal.c' || echo '$(srcdir)/'`palSupgal.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palSupgal.Tpo" "$(DEPDIR)/libpal_la-palSupgal.Plo"; else rm -f "$(DEPDIR)/libpal_la-palSupgal.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palSupgal.c' object='libpal_la-palSupgal.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palSupgal.lo `test -f 'palSupgal.c' || echo '$(srcdir)/'`palSupgal.c libpal_la-palUe2el.lo: palUe2el.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palUe2el.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palUe2el.Tpo" -c -o libpal_la-palUe2el.lo `test -f 'palUe2el.c' || echo '$(srcdir)/'`palUe2el.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palUe2el.Tpo" "$(DEPDIR)/libpal_la-palUe2el.Plo"; else rm -f "$(DEPDIR)/libpal_la-palUe2el.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palUe2el.c' object='libpal_la-palUe2el.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palUe2el.lo `test -f 'palUe2el.c' || echo '$(srcdir)/'`palUe2el.c libpal_la-palUe2pv.lo: palUe2pv.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palUe2pv.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palUe2pv.Tpo" -c -o libpal_la-palUe2pv.lo `test -f 'palUe2pv.c' || echo '$(srcdir)/'`palUe2pv.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palUe2pv.Tpo" "$(DEPDIR)/libpal_la-palUe2pv.Plo"; else rm -f "$(DEPDIR)/libpal_la-palUe2pv.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palUe2pv.c' object='libpal_la-palUe2pv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palUe2pv.lo `test -f 'palUe2pv.c' || echo '$(srcdir)/'`palUe2pv.c libpal_la-palOne2One.lo: palOne2One.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-palOne2One.lo -MD -MP -MF "$(DEPDIR)/libpal_la-palOne2One.Tpo" -c -o libpal_la-palOne2One.lo `test -f 'palOne2One.c' || echo '$(srcdir)/'`palOne2One.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-palOne2One.Tpo" "$(DEPDIR)/libpal_la-palOne2One.Plo"; else rm -f "$(DEPDIR)/libpal_la-palOne2One.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='palOne2One.c' object='libpal_la-palOne2One.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-palOne2One.lo `test -f 'palOne2One.c' || echo '$(srcdir)/'`palOne2One.c libpal_la-pal1Atms.lo: pal1Atms.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-pal1Atms.lo -MD -MP -MF "$(DEPDIR)/libpal_la-pal1Atms.Tpo" -c -o libpal_la-pal1Atms.lo `test -f 'pal1Atms.c' || echo '$(srcdir)/'`pal1Atms.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-pal1Atms.Tpo" "$(DEPDIR)/libpal_la-pal1Atms.Plo"; else rm -f "$(DEPDIR)/libpal_la-pal1Atms.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pal1Atms.c' object='libpal_la-pal1Atms.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-pal1Atms.lo `test -f 'pal1Atms.c' || echo '$(srcdir)/'`pal1Atms.c libpal_la-pal1Atmt.lo: pal1Atmt.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -MT libpal_la-pal1Atmt.lo -MD -MP -MF "$(DEPDIR)/libpal_la-pal1Atmt.Tpo" -c -o libpal_la-pal1Atmt.lo `test -f 'pal1Atmt.c' || echo '$(srcdir)/'`pal1Atmt.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpal_la-pal1Atmt.Tpo" "$(DEPDIR)/libpal_la-pal1Atmt.Plo"; else rm -f "$(DEPDIR)/libpal_la-pal1Atmt.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pal1Atmt.c' object='libpal_la-pal1Atmt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) $(libpal_la_CPPFLAGS) $(CPPFLAGS) $(libpal_la_CFLAGS) $(CFLAGS) -c -o libpal_la-pal1Atmt.lo `test -f 'pal1Atmt.c' || echo '$(srcdir)/'`pal1Atmt.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(pkgdatadir)/$$f" || :; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done install-dist_starnewsDATA: $(dist_starnews_DATA) @$(NORMAL_INSTALL) test -z "$(starnewsdir)" || $(mkdir_p) "$(DESTDIR)$(starnewsdir)" @list='$(dist_starnews_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_starnewsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(starnewsdir)/$$f'"; \ $(dist_starnewsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(starnewsdir)/$$f"; \ $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(starnewsdir)/$$f" || :; \ done uninstall-dist_starnewsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_starnews_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(starnewsdir)/$$f'"; \ rm -f "$(DESTDIR)$(starnewsdir)/$$f"; \ done install-stardocsDATA: $(stardocs_DATA) @$(NORMAL_INSTALL) $(mkdir_p) $(DESTDIR)$(stardocsdir) @list='$(stardocs_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ if expr "x$$p" : 'x.*\.htx_tar$$' >/dev/null; then \ if test -n "$(PAX)"; then \ if $(MANIFEST); then \ $(PAX) -f $$d$$p | \ sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \ fi; \ cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(PAX) -r); \ elif test -n "$(TAR)"; then \ if $(MANIFEST); then \ cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpvf -) | sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \ else \ cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpf -); \ fi; \ else \ echo "Neither tar nor pax!!!" >&2; \ exit 1; \ fi; \ else \ echo " $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f"; \ $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f; \ $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(stardocsdir)/$$f" || :; \ fi; \ done uninstall-stardocsDATA: @$(NORMAL_UNINSTALL) @list='$(stardocs_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f $(DESTDIR)$(stardocsdir)/$$f"; \ rm -f $(DESTDIR)$(stardocsdir)/$$f; \ done install-cincludeHEADERS: $(cinclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(cincludedir)" || $(mkdir_p) "$(DESTDIR)$(cincludedir)" @list='$(cinclude_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(cincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(cincludedir)/$$f'"; \ $(cincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(cincludedir)/$$f"; \ $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(cincludedir)/$$f" || :; \ done uninstall-cincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(cinclude_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(cincludedir)/$$f'"; \ rm -f "$(DESTDIR)$(cincludedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list='$(TESTS)'; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *" $$tst "*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *" $$tst "*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi # Don't express a dependency via the directory .htx, or else make # tries to delete it as an intermediate (we can't specify # .PRECIOUS targets within this file). # # Requires that the STAR2HTML substitution was made in # configure.ac, probably implicitly by the STAR_LATEX_DOCUMENTATION macro. # # We do not require that star2html be available on the build system, # and so we distribute built HTX documentation. Thus the following rules # should be invoked only in the predist state. However there isn't a # file we can use to test whether we're in that state, so write the # test so that it will fail if star2html isn't available. # # If file $(<:.tex=.htx_tar.extras) is present, then it contains a list # of files, each one of which should be added to the .htx directory before # it is rolled up into a tarball. # # Ignore the exit status of star2html, as it can sometimes fail harmlessly. .tex.dvi: LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \ latex2dvi ${<:.tex=} .dvi.ps: dvips -o $@ $< .tex.ps: LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \ latex2dvi ${<:.tex=} dvips -o $@ $(<:.tex=.dvi) .tex.pdf: LATEX=pdflatex; latex2dvi () { $(LATEX2DVI); }; \ latex2dvi ${<:.tex=} .tex.htx_tar: - @STAR2HTML@ $(STAR2HTML_FLAGS) $< test -d ${<:.tex=.htx} if test -f ${<:.tex=.htx_tar.extras}; then \ for f in `cat ${<:.tex=.htx_tar.extras}`; do \ test -f "$$f" && cp "$$f" ${<:.tex=.htx} || true; \ done; else :; fi tar cf $@ ${<:.tex=.htx} distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) $(mkdir_p) $(distdir)/. @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" $(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am # If STAR_MANIFEST_DIR is defined and the MANIFEST variable has the # (default) string value 'false', then invoke the install-manifest # target, otherwise, do the real install rule. This means that if # this is being invoked from within an install-manifest rule further # up the process tree, we don't create another manifest, which would # stomp on the original. # # Any Makefile which does special installations should check the # $(MANIFEST) variable, which will be ':' or 'false', and if it is # true, emit a line to stdout, consisting of the string 'MANIFEST:' # followed by the full path of the file being installed. install: all-am if test -n "$(STAR_MANIFEST_DIR)" -a $(MANIFEST) = false; then \ $(MAKE) $(AM_MAKEFLAGS) install-manifest; \ else \ $(MAKE) $(AM_MAKEFLAGS) $(REAL_INSTALL); \ fi install-manifest: $(mkdir_p) $(DESTDIR)$(STAR_MANIFEST_DIR) MFX=$${TMPDIR-/tmp}/manifest-$$$$-1; rm -f $$MFX; MF_INST_OK=:; \ { $(MAKE) MANIFEST=: $(REAL_INSTALL) \ || MF_INST_OK=false; } \ | tee $$MFX | grep -v '^MANIFEST:' || :; \ if $$MF_INST_OK; then \ MF=$${TMPDIR-/tmp}/manifest-$$$$-2; rm -f $$MF; \ ( echo ""; \ echo ""; \ echo ""; \ echo "$(PACKAGE_VERSION)"; \ echo ""; \ sed -n 's/^MANIFEST://p;' $$MFX; \ echo ""; \ echo ""; \ ) >$$MF; \ $(INSTALL_DATA) $$MF $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE); \ else \ echo "Installation of component $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE) failed" >&2; \ fi; \ rm -f $$MFX $$MF; \ $$MF_INST_OK install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f configure.log -rm -f make.log -rm -f starconf.status clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-cincludeHEADERS install-dist_pkgdataDATA \ install-dist_starnewsDATA install-stardocsDATA install-exec-am: install-libLTLIBRARIES install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-cincludeHEADERS uninstall-dist_pkgdataDATA \ uninstall-dist_starnewsDATA uninstall-info-am \ uninstall-libLTLIBRARIES uninstall-stardocsDATA .PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \ dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-cincludeHEADERS install-data \ install-data-am install-dist_pkgdataDATA \ install-dist_starnewsDATA install-exec install-exec-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-manifest install-stardocsDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-cincludeHEADERS uninstall-dist_pkgdataDATA \ uninstall-dist_starnewsDATA uninstall-info-am \ uninstall-libLTLIBRARIES uninstall-stardocsDATA # A target for making the SUN documentation. We do not do this automatically palsun.tex: $(PUBLIC_C_FILES) -rm -f palsun.tex all.c cat $(PUBLIC_C_FILES) > all.c ${STARLINK_DIR}/bin/sst/prolat in=all.c out=palsun.tex single=no page=no atask=no document=no -rm all.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pal-0.3.0/._missing000755 000161 000120 00000000560 12013220255 014151 0ustar00timjadmin000000 000000 Mac OS X  2 Rÿÿpal-0.3.0/missing000755 000161 000120 00000026714 12013220255 013745 0ustar00timjadmin000000 000000 #! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2005-06-08.21 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" # If MISSING_SUPPRESS_RUN is true, then ignore any --run option. # Allow MISSING_SUPPRESS_RUN to be defaulted in the environment, but default # it to false, giving original behaviour. if test -z "$MISSING_SUPPRESS_RUN"; then MISSING_SUPPRESS_RUN=false fi case "$1" in --run) if $MISSING_SUPPRESS_RUN; then # Merely shift the --run option off the list: do not run the command, # and do not set $run to be null. shift else # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user tries to use an ancient version of a tool on # a file that requires a minimum version. In this case # we should proceed as if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; true) # Very easy to emulate! We are almost certainly here because # (i) ./configure is testing us by running `.../missing --run true' # _and_ (ii) RUN_LOCAL_AUTOTOOLS is false, so that we didn't run # `true' at the top. exit 0 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pal-0.3.0/pal.h000644 000161 000120 00000043615 12017002036 013271 0ustar00timjadmin000000 000000 #ifndef PALHDEF #define PALHDEF /* *+ * Name: * pal.h * Purpose: * Function prototypes for PAL routines. * Language: * Starlink ANSI C * Type of Module: * Include file * Description: * Function prototypes for PAL routines. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * * History: * 2012-02-08 (TIMJ): * Initial version. Define all SLA prototypes in PAL form even * though none are implemented. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #ifdef __cplusplus extern "C" { #endif #include #include void palAddet ( double rm, double dm, double eq, double *rc, double *dc ); void palAfin ( const char *string, int *iptr, float *a, int *j ); double palAirmas ( double zd ); void palAltaz ( double ha, double dec, double phi, double *az, double *azd, double *azdd, double *el, double *eld, double *eldd, double *pa, double *pad, double *padd ); void palAmp ( double ra, double da, double date, double eq, double *rm, double *dm ); void palAmpqk ( double ra, double da, double amprms[21], double *rm, double *dm ); void palAop ( double rap, double dap, double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double *aob, double *zob, double *hob, double *dob, double *rob ); void palAoppa ( double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double aoprms[14] ); void palAoppat ( double date, double aoprms[14] ); void palAopqk ( double rap, double dap, const double aoprms[14], double *aob, double *zob, double *hob, double *dob, double *rob ); void palAtmdsp ( double tdk, double pmb, double rh, double wl1, double a1, double b1, double wl2, double *a2, double *b2 ); void palAv2m ( float axvec[3], float rmat[3][3] ); float palBear ( float a1, float b1, float a2, float b2 ); void palCaf2r ( int ideg, int iamin, float asec, float *rad, int *j ); void palCaldj ( int iy, int im, int id, double *djm, int *j ); void palCalyd ( int iy, int im, int id, int *ny, int *nd, int *j ); void palCc2s ( float v[3], float *a, float *b ); void palCc62s ( float v[6], float *a, float *b, float *r, float *ad, float *bd, float *rd ); void palCd2tf ( int ndp, float days, char *sign, int ihmsf[4] ); void palCldj ( int iy, int im, int id, double *djm, int *j ); void palClyd ( int iy, int im, int id, int *ny, int *nd, int *jstat ); void palCombn ( int nsel, int ncand, int list[], int *j ); void palCr2af ( int ndp, float angle, char *sign, int idmsf[4] ); void palCr2tf ( int ndp, float angle, char *sign, int ihmsf[4] ); void palCs2c ( float a, float b, float v[3] ); void palCs2c6 ( float a, float b, float r, float ad, float bd, float rd, float v[6] ); void palCtf2d ( int ihour, int imin, float sec, float *days, int *j ); void palCtf2r ( int ihour, int imin, float sec, float *rad, int *j ); void palDaf2r ( int ideg, int iamin, double asec, double *rad, int *j ); void palDafin ( const char *string, int *iptr, double *a, int *j ); double palDat ( double dju ); void palDav2m ( double axvec[3], double rmat[3][3] ); double palDbear ( double a1, double b1, double a2, double b2 ); void palDbjin ( const char *string, int *nstrt, double *dreslt, int *jf1, int *jf2 ); void palDc62s ( double v[6], double *a, double *b, double *r, double *ad, double *bd, double *rd ); void palDcc2s ( double v[3], double *a, double *b ); void palDcmpf ( double coeffs[6], double *xz, double *yz, double *xs, double *ys, double *perp, double *orient ); void palDcs2c ( double a, double b, double v[3] ); void palDd2tf ( int ndp, double days, char *sign, int ihmsf[4] ); void palDe2h ( double ha, double dec, double phi, double *az, double *el ); void palDeuler ( const char *order, double phi, double theta, double psi, double rmat[3][3] ); void palDfltin ( const char *string, int *nstrt, double *dreslt, int *jflag ); void palDh2e ( double az, double el, double phi, double *ha, double *dec); void palDimxv ( double dm[3][3], double va[3], double vb[3] ); void palDjcal ( int ndp, double djm, int iymdf[4], int *j ); void palDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j ); void palDm2av ( double rmat[3][3], double axvec[3] ); void palDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ); void palDmoon ( double date, double pv[6] ); void palDmxm ( double a[3][3], double b[3][3], double c[3][3] ); void palDmxv ( double dm[3][3], double va[3], double vb[3] ); double palDpav ( double v1[3], double v2[3] ); void palDr2af ( int ndp, double angle, char *sign, int idmsf[4] ); void palDr2tf ( int ndp, double angle, char *sign, int ihmsf[4] ); double palDrange ( double angle ); double palDranrm ( double angle ); void palDs2c6 ( double a, double b, double r, double ad, double bd, double rd, double v[6] ); void palDs2tp ( double ra, double dec, double raz, double decz, double *xi, double *eta, int *j ); double palDsep ( double a1, double b1, double a2, double b2 ); double palDsepv ( double v1[3], double v2[3] ); double palDt ( double epoch ); void palDtf2d ( int ihour, int imin, double sec, double *days, int *j ); void palDtf2r ( int ihour, int imin, double sec, double *rad, int *j ); void palDtp2s ( double xi, double eta, double raz, double decz, double *ra, double *dec ); void palDtp2v ( double xi, double eta, double v0[3], double v[3] ); void palDtps2c ( double xi, double eta, double ra, double dec, double *raz1, double *decz1, double *raz2, double *decz2, int *n ); void palDtpv2c ( double xi, double eta, double v[3], double v01[3], double v02[3], int *n ); double palDtt ( double dju ); void palDv2tp ( double v[3], double v0[3], double *xi, double *eta, int *j ); double palDvdv ( double va[3], double vb[3] ); void palDvn ( double v[3], double uv[3], double *vm ); void palDvxv ( double va[3], double vb[3], double vc[3] ); void palE2h ( float ha, float dec, float phi, float *az, float *el ); void palEarth ( int iy, int id, float fd, float posvel[6] ); void palEcleq ( double dl, double db, double date, double *dr, double *dd ); void palEcmat ( double date, double rmat[3][3] ); void palEcor ( float rm, float dm, int iy, int id, float fd, float *rv, float *tl ); void palEg50 ( double dr, double dd, double *dl, double *db ); void palEl2ue ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double u[13], int *jstat ); double palEpb ( double date ); double palEpb2d ( double epb ); double palEpco ( char k0, char k, double e ); double palEpj ( double date ); double palEpj2d ( double epj ); void palEpv( double date, double ph[3], double vh[3], double pb[3], double vb[3] ); void palEqecl ( double dr, double dd, double date, double *dl, double *db ); double palEqeqx ( double date ); void palEqgal ( double dr, double dd, double *dl, double *db ); void palEtrms ( double ep, double ev[3] ); void palEuler ( const char *order, float phi, float theta, float psi, float rmat[3][3] ); void palEvp ( double date, double deqx, double dvb[3], double dpb[3], double dvh[3], double dph[3] ); void palFitxy ( int itype, int np, double xye[][2], double xym[][2], double coeffs[6], int *j ); void palFk425 ( double r1950, double d1950, double dr1950, double dd1950, double p1950, double v1950, double *r2000, double *d2000, double *dr2000, double *dd2000, double *p2000, double *v2000 ); void palFk45z ( double r1950, double d1950, double bepoch, double *r2000, double *d2000 ); void palFk524 ( double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double *r1950, double *d1950, double *dr1950, double *dd1950, double *p1950, double *v1950 ); void palFk52h ( double r5, double d5, double dr5, double dd5, double *dr, double *dh, double *drh, double *ddh ); void palFk54z ( double r2000, double d2000, double bepoch, double *r1950, double *d1950, double *dr1950, double *dd1950 ); void palFk5hz ( double r5, double d5, double epoch, double *rh, double *dh ); void palFlotin ( const char *string, int *nstrt, float *reslt, int *jflag ); void palGaleq ( double dl, double db, double *dr, double *dd ); void palGalsup ( double dl, double db, double *dsl, double *dsb ); void palGe50 ( double dl, double db, double *dr, double *dd ); void palGeoc ( double p, double h, double *r, double *z ); double palGmst ( double ut1 ); double palGmsta ( double date, double ut1 ); void palH2e ( float az, float el, float phi, float *ha, float *dec ); void palH2fk5 ( double dr, double dh, double drh, double ddh, double *r5, double *d5, double *dr5, double *dd5 ); void palHfk5z ( double rh, double dh, double epoch, double *r5, double *d5, double *dr5, double *dd5 ); void palImxv ( float rm[3][3], float va[3], float vb[3] ); void palInt2in ( const char *string, int *nstrt, int *ireslt, int *jflag ); void palIntin ( const char *string, int *nstrt, long *ireslt, int *jflag ); void palInvf ( double fwds[6], double bkwds[6], int *j ); void palKbj ( int jb, double e, char *k, int *j ); void palM2av ( float rmat[3][3], float axvec[3] ); void palMap ( double rm, double dm, double pr, double pd, double px, double rv, double eq, double date, double *ra, double *da ); void palMappa ( double eq, double date, double amprms[21] ); void palMapqk ( double rm, double dm, double pr, double pd, double px, double rv, double amprms[21], double *ra, double *da ); void palMapqkz ( double rm, double dm, double amprms[21], double *ra, double *da ); void palMoon ( int iy, int id, float fd, float posvel[6] ); void palMxm ( float a[3][3], float b[3][3], float c[3][3] ); void palMxv ( float rm[3][3], float va[3], float vb[3] ); void palNut ( double date, double rmatn[3][3] ); void palNutc ( double date, double *dpsi, double *deps, double *eps0 ); void palNutc80 ( double date, double *dpsi, double *deps, double *eps0 ); void palOap ( const char *type, double ob1, double ob2, double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double *rap, double *dap ); void palOapqk ( const char *type, double ob1, double ob2, const double aoprms[14], double *rap, double *dap ); int palObs( size_t n, const char * c, char * ident, size_t identlen, char * name, size_t namelen, double * w, double * p, double * h ); double palPa ( double ha, double dec, double phi ); double palPav ( float v1[3], float v2[3] ); void palPcd ( double disco, double *x, double *y ); void palPda2h ( double p, double d, double a, double *h1, int *j1, double *h2, int *j2 ); void palPdq2h ( double p, double d, double q, double *h1, int *j1, double *h2, int *j2 ); void palPermut ( int n, int istate[], int iorder[], int *j ); void palPertel (int jform, double date0, double date1, double epoch0, double orbi0, double anode0, double perih0, double aorq0, double e0, double am0, double *epoch1, double *orbi1, double *anode1, double *perih1, double *aorq1, double *e1, double *am1, int *jstat ); void palPertue ( double date, double u[13], int *jstat ); void palPlanel ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double pv[6], int *jstat ); void palPlanet ( double date, int np, double pv[6], int *j ); void palPlante ( double date, double elong, double phi, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double *ra, double *dec, double *r, int *jstat ); void palPlantu ( double date, double elong, double phi, const double u[13], double *ra, double *dec, double *r, int *jstat ); void palPm ( double r0, double d0, double pr, double pd, double px, double rv, double ep0, double ep1, double *r1, double *d1 ); void palPolmo ( double elongm, double phim, double xp, double yp, double *elong, double *phi, double *daz ); void palPrebn ( double bep0, double bep1, double rmatp[3][3] ); void palPrec ( double ep0, double ep1, double rmatp[3][3] ); void palPrecl ( double ep0, double ep1, double rmatp[3][3] ); void palPreces ( const char sys[3], double ep0, double ep1, double *ra, double *dc ); void palPrenut ( double epoch, double date, double rmatpn[3][3] ); void palPv2el ( const double pv[6], double date, double pmass, int jformr, int *jform, double *epoch, double *orbinc, double *anode, double *perih, double *aorq, double *e, double *aorl, double *dm, int *jstat ); void palPv2ue ( const double pv[6], double date, double pmass, double u[13], int *jstat ); void palPvobs ( double p, double h, double stl, double pv[6] ); void palPxy ( int np, double xye[][2], double xym[][2], double coeffs[6], double xyp[][2], double *xrms, double *yrms, double *rrms ); float palRange ( float angle ); float palRanorm ( float angle ); double palRcc ( double tdb, double ut1, double wl, double u, double v ); void palRdplan ( double date, int np, double elong, double phi, double *ra, double *dec, double *diam ); void palRefco ( double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double *refa, double *refb ); void palRefcoq ( double tdk, double pmb, double rh, double wl, double *refa, double *refb ); void palRefro ( double zobs, double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double *ref ); void palRefv ( double vu[3], double refa, double refb, double vr[3] ); void palRefz ( double zu, double refa, double refb, double *zr ); double palRverot ( double phi, double ra, double da, double st ); double palRvgalc ( double r2000, double d2000 ); double palRvlg ( double r2000, double d2000 ); double palRvlsrd ( double r2000, double d2000 ); double palRvlsrk ( double r2000, double d2000 ); void palS2tp ( float ra, float dec, float raz, float decz, float *xi, float *eta, int *j ); float palSep ( float a1, float b1, float a2, float b2 ); float palSepv ( float v1[3], float v2[3] ); void palSmat ( int n, float *a, float *y, float *d, int *jf, int *iw ); void palSubet ( double rc, double dc, double eq, double *rm, double *dm ); void palSupgal ( double dsl, double dsb, double *dl, double *db ); void palSvd ( int m, int n, int mp, int np, double *a, double *w, double *v, double *work, int *jstat ); void palSvdcov ( int n, int np, int nc, double *w, double *v, double *work, double *cvm ); void palSvdsol ( int m, int n, int mp, int np, double *b, double *u, double *w, double *v, double *work, double *x ); void palTp2s ( float xi, float eta, float raz, float decz, float *ra, float *dec ); void palTp2v ( float xi, float eta, float v0[3], float v[3] ); void palTps2c ( float xi, float eta, float ra, float dec, float *raz1, float *decz1, float *raz2, float *decz2, int *n ); void palTpv2c ( float xi, float eta, float v[3], float v01[3], float v02[3], int *n ); void palUe2el ( const double u[13], int jformr, int *jform, double *epoch, double *orbinc, double *anode, double *perih, double *aorq, double *e, double *aorl, double *dm, int *jstat ); void palUe2pv ( double date, double u[13], double pv[], int *jstat ); void palUnpcd ( double disco, double *x, double *y ); void palV2tp ( float v[3], float v0[3], float *xi, float *eta, int *j ); float palVdv ( float va[3], float vb[3] ); void palVn ( float v[3], float uv[3], float *vm ); void palVxv ( float va[3], float vb[3], float vc[3] ); void palXy2xy ( double x1, double y1, double coeffs[6], double *x2, double *y2 ); double palZd ( double ha, double dec, double phi ); #ifdef __cplusplus } #endif #endif pal-0.3.0/pal.news000644 000161 000120 00000002402 12017005546 014014 0ustar00timjadmin000000 000000 PAL Library The Starlink Positional Astronomy Library (PAL) is a C implementation of the SLALIB API. It is distributed under the GPL and uses the SOFA library wherever possible. V0.3.0 Add refraction code and support palOap and palAop. For closer compatibility with SLA for testing purposes the refraction routines internally use clones of slaNutc, slaEqeqx, slaGmst and slaGeoc. Once the code has been verified further the PAL/SOFA routines will be used instead. Switching routines seems to change the results in palTest by about 0.05 arcsec. V0.2.0 Improve configure script when not in a Starlink build environment. Use ./configure --prefix=/path/to/install when Starlink is not available and add --without-starlink if Starlink is present but should not be used. V0.1.5 Explcitly look for libm rather than relying on SOFA to pull it in. V0.1.4 Check for isblank() function and fall back if it is missing. V0.1.3 Improve copysign() detection. V0.1.2 Check for copysign() c99 function and fall back if it is missing. V0.1.1 The palDrange function has been modified so that it now returns +PI if the supplied angle is +PI (previously, it returned -PI in these cases). V0.1.0 Initial release with sufficient SLALIB API for AST and the Astro::Coords perl module. pal-0.3.0/pal1.h000644 000161 000120 00000003420 12015745104 013350 0ustar00timjadmin000000 000000 /* *+ * Name: * pal1.h * Purpose: * Definitions of private PAL functions * Language: * Starlink ANSI C * Type of Module: * Include file * Invocation: * #include "pal1.h" * Description: * Function prototypes for private PAL functions. Will not be * installed. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-08-24 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #ifndef PAL1HDEF #define PAL1HDEF void pal1Atms ( double rt, double tt, double dnt, double gamal, double r, double * dn, double * rdndr ); void pal1Atmt ( double r0, double t0, double alpha, double gamm2, double delm2, double c1, double c2, double c3, double c4, double c5, double c6, double r, double *t, double *dn, double *rdndr ); #endif pal-0.3.0/pal1Atms.c000644 000161 000120 00000004603 12015746230 014175 0ustar00timjadmin000000 000000 /* *+ * Name: * pal1Atms * Purpose: * Calculate stratosphere parameters * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void pal1Atms ( double rt, double tt, double dnt, double gamal, * double r, double * dn, double * rdndr ); * Arguments: * rt = double (Given) * Height of the tropopause from centre of the Earth (metre) * tt = double (Given) * Temperature at the tropopause (K) * dnt = double (Given) * Refractive index at the tropopause * gamal = double (Given) * Constant of the atmospheric model = G*MD/R * r = double (Given) * Current distance from the centre of the Earth (metre) * dn = double * (Returned) * Refractive index at r * rdndr = double * (Returned) * r * rate the refractive index is changing at r * Description: * Refractive index and derivative with respect to height for the * stratosphere. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Internal routine used by palRefro. * History: * 2012-08-24 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal1.h" void pal1Atms ( double rt, double tt, double dnt, double gamal, double r, double * dn, double * rdndr ) { double b; double w; b = gamal / tt; w = (dnt - 1.0) * exp( -b * (r-rt) ); *dn = 1.0 + w; *rdndr = -r * b * w; } pal-0.3.0/pal1Atmt.c000644 000161 000120 00000006667 12016570103 014205 0ustar00timjadmin000000 000000 /* *+ * Name: * pal1Atmt * Purpose: * Calculate troposphere parameters * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void pal1Atmt ( double r0, double t0, double alpha, double gamm2, * double delm2, double c1, double c2, double c3, * double c4, double c5, double c6, double r, * double *t, double *dn, double *rdndr ); * Arguments: * r0 = double (Given) * Height of observer from centre of the Earth (metre) * t0 = double (Given) * Temperature of the observer (K) * alpha = double (Given) * Alpha (see HMNAO paper) * gamm2 = double (Given) * Gamma minus 2 (see HMNAO paper) * delm2 = double (Given) * Delta minus 2 (see HMNAO paper) * c1 = double (Given) * Useful term (see palRefro source) * c2 = double (Given) * Useful term (see palRefro source) * c3 = double (Given) * Useful term (see palRefro source) * c4 = double (Given) * Useful term (see palRefro source) * c5 = double (Given) * Useful term (see palRefro source) * c6 = double (Given) * Useful term (see palRefro source) * r = double (Given) * Current distance from the centre of the Earth (metre) * t = double * (Returned) * Temperature at r (K) * dn = double * (Returned) * Refractive index at r. * rdndr = double * (Returned) * r * rate the refractive index is changing at r. * Description: * Refractive index and derivative with respect to height for * the troposphere. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Internal routine used by palRefro * - Note that in the optical case c5 and c6 are zero. * History: * 2012-08-24 (TIMJ): * Initial version, copied from Fortran SLA source. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "palmac.h" #include "pal1.h" void pal1Atmt ( double r0, double t0, double alpha, double gamm2, double delm2, double c1, double c2, double c3, double c4, double c5, double c6, double r, double *t, double *dn, double *rdndr ) { double tt0; double tt0gm2; double tt0dm2; *t = DMAX( DMIN( t0 - alpha*(r-r0), 320.0), 100.0 ); tt0 = *t / t0; tt0gm2 = pow( tt0, gamm2 ); tt0dm2 = pow( tt0, delm2 ); *dn = 1.0 + ( c1 * tt0gm2 - ( c2 - c5 / *t ) * tt0dm2 ) * tt0; *rdndr = r * ( -c3 * tt0gm2 + ( c4 - c6 / tt0 ) * tt0dm2 ); } pal-0.3.0/palAddet.c000644 000161 000120 00000005643 12014745436 014244 0ustar00timjadmin000000 000000 /* *+ * Name: * palAddet * Purpose: * Add the E-terms to a pre IAU 1976 mean place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAddet ( double rm, double dm, double eq, * double *rc, double *dc ); * Arguments: * rm = double (Given) * RA without E-terms (radians) * dm = double (Given) * Dec without E-terms (radians) * eq = double (Given) * Besselian epoch of mean equator and equinox * rc = double * (Returned) * RA with E-terms included (radians) * dc = double * (Returned) * Dec with E-terms included (radians) * Description: * Add the E-terms (elliptic component of annual aberration) * to a pre IAU 1976 mean place to conform to the old * catalogue convention. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * Most star positions from pre-1984 optical catalogues (or * derived from astrometry using such stars) embody the * E-terms. If it is necessary to convert a formal mean * place (for example a pulsar timing position) to one * consistent with such a star catalogue, then the RA,Dec * should be adjusted using this routine. * See Also: * Explanatory Supplement to the Astronomical Ephemeris, * section 2D, page 48. * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palAddet ( double rm, double dm, double eq, double *rc, double *dc ) { double a[3]; /* The E-terms */ double v[3]; int i; /* Note the preference for IAU routines */ /* Retrieve the E-terms */ palEtrms( eq, a ); /* Spherical to Cartesian */ iauS2c( rm, dm, v ); /* Include the E-terms */ for (i=0; i<3; i++) { v[i] += a[i]; } /* Cartesian to spherical */ iauC2s( v, rc, dc ); /* Bring RA into conventional range */ *rc = iauAnp( *rc ); } pal-0.3.0/palAirmas.c000644 000161 000120 00000005642 12014745436 014436 0ustar00timjadmin000000 000000 /* *+ * Name: * palAirmas * Purpose: * Air mass at given zenith distance * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palAirmas( double zd ); * Arguments: * zd = double (Given) * Observed zenith distance (radians) * Description: * Calculates the airmass at the observed zenith distance. * Authors: * PTW: Patrick Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The "observed" zenith distance referred to above means "as * affected by refraction". * - Uses Hardie's (1962) polynomial fit to Bemporad's data for * the relative air mass, X, in units of thickness at the zenith * as tabulated by Schoenberg (1929). This is adequate for all * normal needs as it is accurate to better than 0.1% up to X = * 6.8 and better than 1% up to X = 10. Bemporad's tabulated * values are unlikely to be trustworthy to such accuracy * because of variations in density, pressure and other * conditions in the atmosphere from those assumed in his work. * - The sign of the ZD is ignored. * - At zenith distances greater than about ZD = 87 degrees the * air mass is held constant to avoid arithmetic overflows. * See Also: * - Hardie, R.H., 1962, in "Astronomical Techniques" * ed. W.A. Hiltner, University of Chicago Press, p180. * - Schoenberg, E., 1929, Hdb. d. Ap., * Berlin, Julius Springer, 2, 268. * History: * 2012-03-02 (TIMJ): * Initial version from the SLA/F version including documentation. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" double palAirmas ( double zd ) { double seczm1; double airmass; /* Have maximum zenith distance of 87 deg */ const double MAXZD = 87.0 * PAL__DD2R; zd = fabs(zd); zd = ( zd > MAXZD ? MAXZD : zd ); seczm1 = (1.0 / cos(zd)) - 1.0; airmass = 1.0 + seczm1*(0.9981833 - seczm1*(0.002875 + 0.0008083*seczm1)); return airmass; } pal-0.3.0/palAmp.c000644 000161 000120 00000004302 12014745436 013727 0ustar00timjadmin000000 000000 /* *+ * Name: * palAmp * Purpose: * Convert star RA,Dec from geocentric apparaent to mean place. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAmp ( double ra, double da, double date, double eq, * double *rm, double *dm ); * Arguments: * ra = double (Given) * Apparent RA (radians) * dec = double (Given) * Apparent Dec (radians) * date = double (Given) * TDB for apparent place (JD-2400000.5) * eq = double (Given) * Equinox: Julian epoch of mean place. * rm = double * (Returned) * Mean RA (radians) * dm = double * (Returned) * Mean Dec (radians) * Description: * Convert star RA,Dec from geocentric apparent to mean place. The * mean coordinate system is close to ICRS. See palAmpqk for details. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - See palMappa and palAmpqk for details. * History: * 2012-03-02 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palAmp ( double ra, double da, double date, double eq, double *rm, double *dm ) { double amprms[21]; palMappa( eq, date, amprms ); palAmpqk( ra, da, amprms, rm, dm ); } pal-0.3.0/palAmpqk.c000644 000161 000120 00000007071 12014745436 014271 0ustar00timjadmin000000 000000 /* *+ * Name: * palAmpqk * Purpose: * Convert star RA,Dec from geocentric apparent to mean place. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAmpqk ( double ra, double da, double amprms[21], * double *rm, double *dm ) * Arguments: * ra = double (Given) * Apparent RA (radians). * da = double (Given) * Apparent Dec (radians). * amprms = double[21] (Given) * Star-independent mean-to-apparent parameters (see palMappa): * (0) time interval for proper motion (Julian years) * (1-3) barycentric position of the Earth (AU) * (4-6) not used * (7) not used * (8-10) abv: barycentric Earth velocity in units of c * (11) sqrt(1-v*v) where v=modulus(abv) * (12-20) precession/nutation (3,3) matrix * rm = double (Returned) * Mean RA (radians). * dm = double (Returned) * Mean Dec (radians). * Description: * Convert star RA,Dec from geocentric apparent to mean place. The "mean" * coordinate system is in fact close to ICRS. Use of this function * is appropriate when efficiency is important and where many star * positions are all to be transformed for one epoch and equinox. The * star-independent parameters can be obtained by calling the palMappa * function. * Authors: * PTW: Pat Wallace (STFC) * {enter_new_authors_here} * History: * 2012-02-13 (PTW): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palAmpqk ( double ra, double da, double amprms[21], double *rm, double *dm ){ /* Local Variables: */ double ab1; /* sqrt(1-v*v) where v=modulus of Earth vel */ double abv[3]; /* Earth velocity wrt SSB (c, FK5) */ double p1[3], p2[3], p3[3]; /* work vectors */ double ab1p1, p1dv, p1dvp1, w; int i, j; /* Unpack some of the parameters */ ab1 = amprms[11]; for( i = 0; i < 3; i++ ) { abv[i] = amprms[i + 8]; } /* Apparent RA,Dec to Cartesian */ iauS2c( ra, da, p3 ); /* Precession and nutation */ iauTrxp( (double(*)[3]) &rms[12], p3, p2 ); /* Aberration */ ab1p1 = ab1 + 1.0; for( i = 0; i < 3; i++ ) { p1[i] = p2[i]; } for( j = 0; j < 2; j++ ) { p1dv = iauPdp( p1, abv ); p1dvp1 = 1.0 + p1dv; w = 1.0 + p1dv / ab1p1; for( i = 0; i < 3; i++ ) { p1[i] = ( p1dvp1 * p2[i] - w * abv[i] ) / ab1; } iauPn( p1, &w, p3 ); for( i = 0; i < 3; i++ ) { p1[i] = p3[i]; } } /* Mean RA,Dec */ iauC2s( p1, rm, dm ); *rm = iauAnp( *rm ); } pal-0.3.0/palAop.c000644 000161 000120 00000023611 12017004024 013715 0ustar00timjadmin000000 000000 /* *+ * Name: * palAop * Purpose: * Apparent to observed place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAop ( double rap, double dap, double date, double dut, * double elongm, double phim, double hm, double xp, * double yp, double tdk, double pmb, double rh, * double wl, double tlr, * double *aob, double *zob, double *hob, * double *dob, double *rob ); * Arguments: * rap = double (Given) * Geocentric apparent right ascension * dap = double (Given) * Geocentirc apparent declination * date = double (Given) * UTC date/time (Modified Julian Date, JD-2400000.5) * dut = double (Given) * delta UT: UT1-UTC (UTC seconds) * elongm = double (Given) * Mean longitude of the observer (radians, east +ve) * phim = double (Given) * Mean geodetic latitude of the observer (radians) * hm = double (Given) * Observer's height above sea level (metres) * xp = double (Given) * Polar motion x-coordinates (radians) * yp = double (Given) * Polar motion y-coordinates (radians) * tdk = double (Given) * Local ambient temperature (K; std=273.15) * pmb = double (Given) * Local atmospheric pressure (mb; std=1013.25) * rh = double (Given) * Local relative humidity (in the range 0.0-1.0) * wl = double (Given) * Effective wavelength (micron, e.g. 0.55) * tlr = double (Given) * Tropospheric laps rate (K/metre, e.g. 0.0065) * aob = double * (Returned) * Observed azimuth (radians: N=0; E=90) * zob = double * (Returned) * Observed zenith distance (radians) * hob = double * (Returned) * Observed Hour Angle (radians) * dob = double * (Returned) * Observed Declination (radians) * rob = double * (Returned) * Observed Right Ascension (radians) * Description: * Apparent to observed place for sources distant from the solar system. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - This routine returns zenith distance rather than elevation * in order to reflect the fact that no allowance is made for * depression of the horizon. * * - The accuracy of the result is limited by the corrections for * refraction. Providing the meteorological parameters are * known accurately and there are no gross local effects, the * predicted apparent RA,Dec should be within about 0.1 arcsec * for a zenith distance of less than 70 degrees. Even at a * topocentric zenith distance of 90 degrees, the accuracy in * elevation should be better than 1 arcmin; useful results * are available for a further 3 degrees, beyond which the * palRefro routine returns a fixed value of the refraction. * The complementary routines palAop (or palAopqk) and palOap * (or palOapqk) are self-consistent to better than 1 micro- * arcsecond all over the celestial sphere. * * - It is advisable to take great care with units, as even * unlikely values of the input parameters are accepted and * processed in accordance with the models used. * * - "Apparent" place means the geocentric apparent right ascension * and declination, which is obtained from a catalogue mean place * by allowing for space motion, parallax, precession, nutation, * annual aberration, and the Sun's gravitational lens effect. For * star positions in the FK5 system (i.e. J2000), these effects can * be applied by means of the palMap etc routines. Starting from * other mean place systems, additional transformations will be * needed; for example, FK4 (i.e. B1950) mean places would first * have to be converted to FK5, which can be done with the * palFk425 etc routines. * * - "Observed" Az,El means the position that would be seen by a * perfect theodolite located at the observer. This is obtained * from the geocentric apparent RA,Dec by allowing for Earth * orientation and diurnal aberration, rotating from equator * to horizon coordinates, and then adjusting for refraction. * The HA,Dec is obtained by rotating back into equatorial * coordinates, using the geodetic latitude corrected for polar * motion, and is the position that would be seen by a perfect * equatorial located at the observer and with its polar axis * aligned to the Earth's axis of rotation (n.b. not to the * refracted pole). Finally, the RA is obtained by subtracting * the HA from the local apparent ST. * * - To predict the required setting of a real telescope, the * observed place produced by this routine would have to be * adjusted for the tilt of the azimuth or polar axis of the * mounting (with appropriate corrections for mount flexures), * for non-perpendicularity between the mounting axes, for the * position of the rotator axis and the pointing axis relative * to it, for tube flexure, for gear and encoder errors, and * finally for encoder zero points. Some telescopes would, of * course, exhibit other properties which would need to be * accounted for at the appropriate point in the sequence. * * - This routine takes time to execute, due mainly to the * rigorous integration used to evaluate the refraction. * For processing multiple stars for one location and time, * call palAoppa once followed by one call per star to palAopqk. * Where a range of times within a limited period of a few hours * is involved, and the highest precision is not required, call * palAoppa once, followed by a call to palAoppat each time the * time changes, followed by one call per star to palAopqk. * * - The DATE argument is UTC expressed as an MJD. This is, * strictly speaking, wrong, because of leap seconds. However, * as long as the delta UT and the UTC are consistent there * are no difficulties, except during a leap second. In this * case, the start of the 61st second of the final minute should * begin a new MJD day and the old pre-leap delta UT should * continue to be used. As the 61st second completes, the MJD * should revert to the start of the day as, simultaneously, * the delta UTC changes by one second to its post-leap new value. * * - The delta UT (UT1-UTC) is tabulated in IERS circulars and * elsewhere. It increases by exactly one second at the end of * each UTC leap second, introduced in order to keep delta UT * within +/- 0.9 seconds. * * - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION. * The longitude required by the present routine is east-positive, * in accordance with geographical convention (and right-handed). * In particular, note that the longitudes returned by the * palObs routine are west-positive, following astronomical * usage, and must be reversed in sign before use in the present * routine. * * - The polar coordinates XP,YP can be obtained from IERS * circulars and equivalent publications. The maximum amplitude * is about 0.3 arcseconds. If XP,YP values are unavailable, * use XP=YP=0.0. See page B60 of the 1988 Astronomical Almanac * for a definition of the two angles. * * - The height above sea level of the observing station, HM, * can be obtained from the Astronomical Almanac (Section J * in the 1988 edition), or via the routine palObs. If P, * the pressure in millibars, is available, an adequate * estimate of HM can be obtained from the expression * * HM ~ -29.3*TSL*LOG(P/1013.25). * * where TSL is the approximate sea-level air temperature in K * (see Astrophysical Quantities, C.W.Allen, 3rd edition, * section 52). Similarly, if the pressure P is not known, * it can be estimated from the height of the observing * station, HM, as follows: * * P ~ 1013.25*EXP(-HM/(29.3*TSL)). * * Note, however, that the refraction is nearly proportional to the * pressure and that an accurate P value is important for precise * work. * * - The azimuths etc produced by the present routine are with * respect to the celestial pole. Corrections to the terrestrial * pole can be computed using palPolmo. * History: * 2012-08-25 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palAop ( double rap, double dap, double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double *aob, double *zob, double *hob, double *dob, double *rob ) { double aoprms[14]; palAoppa(date,dut,elongm,phim,hm,xp,yp,tdk,pmb,rh,wl,tlr, aoprms); palAopqk(rap,dap,aoprms,aob,zob,hob,dob,rob); } pal-0.3.0/palAoppa.c000644 000161 000120 00000255251 12017004011 014241 0ustar00timjadmin000000 000000 /* *+ * Name: * palAoppa * Purpose: * Precompute apparent to observed place parameters * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAoppa ( double date, double dut, double elongm, double phim, * double hm, double xp, double yp, double tdk, double pmb, * double rh, double wl, double tlr, double aoprms[14] ); * Arguments: * date = double (Given) * UTC date/time (modified Julian Date, JD-2400000.5) * dut = double (Given) * delta UT: UT1-UTC (UTC seconds) * elongm = double (Given) * mean longitude of the observer (radians, east +ve) * phim = double (Given) * mean geodetic latitude of the observer (radians) * hm = double (Given) * observer's height above sea level (metres) * xp = double (Given) * polar motion x-coordinate (radians) * yp = double (Given) * polar motion y-coordinate (radians) * tdk = double (Given) * local ambient temperature (K; std=273.15) * pmb = double (Given) * local atmospheric pressure (mb; std=1013.25) * rh = double (Given) * local relative humidity (in the range 0.0-1.0) * wl = double (Given) * effective wavelength (micron, e.g. 0.55) * tlr = double (Given) * tropospheric lapse rate (K/metre, e.g. 0.0065) * aoprms = double [14] (Returned) * Star-independent apparent-to-observed parameters * * (0) geodetic latitude (radians) * (1,2) sine and cosine of geodetic latitude * (3) magnitude of diurnal aberration vector * (4) height (hm) * (5) ambient temperature (tdk) * (6) pressure (pmb) * (7) relative humidity (rh) * (8) wavelength (wl) * (9) lapse rate (tlr) * (10,11) refraction constants A and B (radians) * (12) longitude + eqn of equinoxes + sidereal DUT (radians) * (13) local apparent sidereal time (radians) * Description: * Precompute apparent to observed place parameters required by palAopqk * and palOapqk. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - It is advisable to take great care with units, as even * unlikely values of the input parameters are accepted and * processed in accordance with the models used. * * - The DATE argument is UTC expressed as an MJD. This is, * strictly speaking, improper, because of leap seconds. However, * as long as the delta UT and the UTC are consistent there * are no difficulties, except during a leap second. In this * case, the start of the 61st second of the final minute should * begin a new MJD day and the old pre-leap delta UT should * continue to be used. As the 61st second completes, the MJD * should revert to the start of the day as, simultaneously, * the delta UTC changes by one second to its post-leap new value. * * - The delta UT (UT1-UTC) is tabulated in IERS circulars and * elsewhere. It increases by exactly one second at the end of * each UTC leap second, introduced in order to keep delta UT * within +/- 0.9 seconds. * * - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION. * The longitude required by the present routine is east-positive, * in accordance with geographical convention (and right-handed). * In particular, note that the longitudes returned by the * palObs routine are west-positive, following astronomical * usage, and must be reversed in sign before use in the present * routine. * * - The polar coordinates XP,YP can be obtained from IERS * circulars and equivalent publications. The maximum amplitude * is about 0.3 arcseconds. If XP,YP values are unavailable, * use XP=YP=0.0. See page B60 of the 1988 Astronomical Almanac * for a definition of the two angles. * * - The height above sea level of the observing station, HM, * can be obtained from the Astronomical Almanac (Section J * in the 1988 edition), or via the routine palObs. If P, * the pressure in millibars, is available, an adequate * estimate of HM can be obtained from the expression * * HM ~ -29.3*TSL*log(P/1013.25). * * where TSL is the approximate sea-level air temperature in K * (see Astrophysical Quantities, C.W.Allen, 3rd edition, * section 52). Similarly, if the pressure P is not known, * it can be estimated from the height of the observing * station, HM, as follows: * * P ~ 1013.25*exp(-HM/(29.3*TSL)). * * Note, however, that the refraction is nearly proportional to the * pressure and that an accurate P value is important for precise * work. * * - Repeated, computationally-expensive, calls to palAoppa for * times that are very close together can be avoided by calling * palAoppa just once and then using palAoppat for the subsequent * times. Fresh calls to palAoppa will be needed only when * changes in the precession have grown to unacceptable levels or * when anything affecting the refraction has changed. * History: * 2012-08-24 (TIMJ): * Initial version, ported directly from Fortran SLA. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "math.h" #include "pal.h" #include "palmac.h" /* These are local SLA implementations to aid in testing. Switch * to native PAL implementations when tests are complete. */ static void pal__Geoc( double p, double h, double *r, double * z ); static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 ); static double pal__Eqeqx( double date ); void palAoppa ( double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double aoprms[14] ) { /* Constants */ const double C = 173.14463331; /* Speed of light (AU per day) */ const double SOLSID = 1.0027379093; /* Ratio between solar and sidereal time */ /* Local variables */ double cphim,xt,yt,zt,xc,yc,zc,elong,phi,uau,vau; /* Observer's location corrected for polar motion */ cphim = cos(phim); xt = cos(elongm)*cphim; yt = sin(elongm)*cphim; zt = sin(phim); xc = xt-xp*zt; yc = yt+yp*zt; zc = xp*xt-yp*yt+zt; if (xc == 0.0 && yc == 0.0) { elong = 0.0; } else { elong = atan2(yc,xc); } phi = atan2(zc,sqrt(xc*xc+yc*yc)); aoprms[0] = phi; aoprms[1] = sin(phi); aoprms[2] = cos(phi); /* magnitude of the diurnal aberration vector */ pal__Geoc(phi,hm,&uau,&vau); aoprms[3] = PAL__D2PI*uau*SOLSID/C; /* copy the refraction parameters and compute the a & b constants */ aoprms[4] = hm; aoprms[5] = tdk; aoprms[6] = pmb; aoprms[7] = rh; aoprms[8] = wl; aoprms[9] = tlr; palRefco(hm,tdk,pmb,rh,wl,phi,tlr,1e-10, &aoprms[10],&aoprms[11]); /* longitude + equation of the equinoxes + sidereal equivalent of DUT * (ignoring change in equation of the equinoxes between UTC and TDB) */ aoprms[12] = elong+pal__Eqeqx(date)+dut*SOLSID*PAL__DS2R; /* sidereal time */ palAoppat(date,aoprms); } /* Private reimplementation of slaEqeqx for testing the algorithm */ #include static void pal__Geoc( double p, double h, double *r, double * z ) { /* earth equatorial radius (metres) */ const double A0=6378140.0; /* reference spheroid flattening factor and useful function */ const double f = 1.0/298.257; double b; /* astronomical unit in metres */ const double AU = 1.49597870e11; double sp,cp,c,s; b = pow( 1.0-f, 2.0 ); /* geodetic to geocentric conversion */ sp = sin(p); cp = cos(p); c = 1.0/sqrt(cp*cp+b*sp*sp); s = b*c; *r = (A0*c+h)*cp/AU; *z = (A0*s+h)*sp/AU; } static double pal__Eqeqx( double date ) { const double T2AS=1296000.0; double sla_eqeqx; double t, om, dpsi, deps, eps0; /* interval between basic epoch j2000.0 and current epoch (jc) */ t=(date-51544.5)/36525.0; /* longitude of the mean ascending node of the lunar orbit on the * ecliptic, measured from the mean equinox of date */ om=PAL__DAS2R*(450160.280+(-5.0*T2AS-482890.539 +(7.455+0.008*t)*t)*t); /* nutation */ pal__Nutc(date,&dpsi,&deps,&eps0); /* equation of the equinoxes */ sla_eqeqx=dpsi*cos(eps0)+PAL__DAS2R*(0.00264*sin(om)+ 0.000063*sin(om+om)); return sla_eqeqx; } #include "palmac.h" static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 ) { const double DJC = 36525.0; const double DJM0 = 51544.5; const double TURNAS = 1296000.0; #define NTERMS 194 int i, j; double t,el,elp,f,d,om,ve,ma,ju,sa,theta,c,s,dp,de; int na[ 194 ][9] = { { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 }, { 0 , 2 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , 0 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , -2 , -1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { -1 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , -2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { 1 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 3 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 }, { 1 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 }, { -1 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , -2 , 2 , -1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 }, { -1 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 1 , 2 , 0 , 0 , 0 , 0 }, { -1 , 1 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 }, { 0 , -2 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 4 , 0 , 2 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , -1 , -1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 }, { 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , -1 , 0 , 0 , 0 , 0 }, { 3 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 4 , -2 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , 3 , 0 , 0 , 0 , 0 }, { -2 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 }, { -1 , -1 , 0 , 2 , 1 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , -1 , 2 , 0 , 0 , 0 , 0 }, { 2 , 1 , 0 , -2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 }, { -1 , -1 , 0 , 2 , -1 , 0 , 0 , 0 , 0 }, { -1 , 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 1 , -1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , -2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 0 , -2 , 0 , 0 , 0 , 0 }, { 1 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 }, { -1 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 3 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , -2 , 0 , 0 , 0 , 0 , 0 }, { -1 , 0 , -2 , 4 , -1 , 0 , 0 , 0 , 0 }, { -1 , -1 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 0 , -1 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 2 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , -1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { -1 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , -2 , 0 , 0 , 0 , 0 , 0 }, { 0 , 3 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 2 , 0 , 0 , 0 , 0 , 0 }, { 2 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 1 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 1 , 1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , -2 , 2 , 0 , 0 , 0 , 0 , 0 }, { 0 , -1 , 0 , 2 , -1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 1 , 0 , 2 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , -2 , 2 , -2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 1 , -1 , 0 , 0 , 0 , 0 }, { 1 , -1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 }, { 1 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , 1 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 2 , -1 , 2 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 1 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , 4 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 , 0 }, { 1 , 1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 }, { 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 2 , -1 , 1 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 2 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 4 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 }, { 2 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 }, { 0 , 1 , 2 , 1 , 2 , 0 , 0 , 0 , 0 }, { 1 , 0 , 4 , -2 , 2 , 0 , 0 , 0 , 0 }, { 1 , 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 }, { -2 , 0 , 2 , 4 , 1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 }, { -1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 }, { 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 }, { 0 , 1 , 0 , 2 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 4 , 0 , 1 , 0 , 0 , 0 , 0 }, { -1 , 0 , 0 , 4 , 1 , 0 , 0 , 0 , 0 }, { 2 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 }, { 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 5 , -5 , 5 , -3 , 0 , 0 , 0 }, { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 }, { 0 , 0 , 1 , -1 , 1 , 0 , 0 , -1 , 0 }, { 0 , 0 , -1 , 1 , -1 , 1 , 0 , 0 , 0 }, { 0 , 0 , -1 , 1 , 0 , 0 , 2 , 0 , 0 }, { 0 , 0 , 3 , -3 , 3 , 0 , 0 , -1 , 0 }, { 0 , 0 , -8 , 8 , -7 , 5 , 0 , 0 , 0 }, { 0 , 0 , -1 , 1 , -1 , 0 , 2 , 0 , 0 }, { 0 , 0 , -2 , 2 , -2 , 2 , 0 , 0 , 0 }, { 0 , 0 , -6 , 6 , -6 , 4 , 0 , 0 , 0 }, { 0 , 0 , -2 , 2 , -2 , 0 , 8 , -3 , 0 }, { 0 , 0 , 6 , -6 , 6 , 0 , -8 , 3 , 0 }, { 0 , 0 , 4 , -4 , 4 , -2 , 0 , 0 , 0 }, { 0 , 0 , -3 , 3 , -3 , 2 , 0 , 0 , 0 }, { 0 , 0 , 4 , -4 , 3 , 0 , -8 , 3 , 0 }, { 0 , 0 , -4 , 4 , -5 , 0 , 8 , -3 , 0 }, { 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 }, { 0 , 0 , -4 , 4 , -4 , 3 , 0 , 0 , 0 }, { 0 , 1 , -1 , 1 , -1 , 0 , 0 , 1 , 0 }, { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, { 0 , 0 , 1 , -1 , 1 , 1 , 0 , 0 , 0 }, { 0 , 0 , 2 , -2 , 2 , 0 , -2 , 0 , 0 }, { 0 , -1 , -7 , 7 , -7 , 5 , 0 , 0 , 0 }, { -2 , 0 , 2 , 0 , 2 , 0 , 0 , -2 , 0 }, { -2 , 0 , 2 , 0 , 1 , 0 , 0 , -3 , 0 }, { 0 , 0 , 2 , -2 , 2 , 0 , 0 , -2 , 0 }, { 0 , 0 , 1 , -1 , 1 , 0 , 0 , 1 , 0 }, { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 }, { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }, { 2 , 0 , -2 , 0 , -2 , 0 , 0 , 3 , 0 }, { 0 , 0 , 1 , -1 , 1 , 0 , 0 , -2 , 0 }, { 0 , 0 , -7 , 7 , -7 , 5 , 0 , 0 , 0 } }; double psi[ 194 ][4] = { { 3341.5000000000000 , 17206241.800000001 , 3.1000000000000001 , 17409.500000000000 }, { -1716.8000000000000 , -1317185.3000000000 , 1.3999999999999999 , -156.80000000000001 }, { 285.69999999999999 , -227667.00000000000 , 0.29999999999999999 , -23.500000000000000 }, { -68.599999999999994 , -207448.00000000000 , 0.0000000000000000 , -21.399999999999999 }, { 950.29999999999995 , 147607.89999999999 , -2.2999999999999998 , -355.00000000000000 }, { -66.700000000000003 , -51689.099999999999 , 0.20000000000000001 , 122.59999999999999 }, { -108.59999999999999 , 71117.600000000006 , 0.0000000000000000 , 7.0000000000000000 }, { 35.600000000000001 , -38740.199999999997 , 0.10000000000000001 , -36.200000000000003 }, { 85.400000000000006 , -30127.599999999999 , 0.0000000000000000 , -3.1000000000000001 }, { 9.0000000000000000 , 21583.000000000000 , 0.10000000000000001 , -50.299999999999997 }, { 22.100000000000001 , 12822.799999999999 , 0.0000000000000000 , 13.300000000000001 }, { 3.3999999999999999 , 12350.799999999999 , 0.0000000000000000 , 1.3000000000000000 }, { -21.100000000000001 , 15699.400000000000 , 0.0000000000000000 , 1.6000000000000001 }, { 4.2000000000000002 , 6313.8000000000002 , 0.0000000000000000 , 6.2000000000000002 }, { -22.800000000000001 , 5796.8999999999996 , 0.0000000000000000 , 6.0999999999999996 }, { 15.699999999999999 , -5961.1000000000004 , 0.0000000000000000 , -0.59999999999999998 }, { 13.100000000000000 , -5159.1000000000004 , 0.0000000000000000 , -4.5999999999999996 }, { 1.8000000000000000 , 4592.6999999999998 , 0.0000000000000000 , 4.5000000000000000 }, { -17.500000000000000 , 6336.0000000000000 , 0.0000000000000000 , 0.69999999999999996 }, { 16.300000000000001 , -3851.0999999999999 , 0.0000000000000000 , -0.40000000000000002 }, { -2.7999999999999998 , 4771.6999999999998 , 0.0000000000000000 , 0.50000000000000000 }, { 13.800000000000001 , -3099.3000000000002 , 0.0000000000000000 , -0.29999999999999999 }, { 0.20000000000000001 , 2860.3000000000002 , 0.0000000000000000 , 0.29999999999999999 }, { 1.3999999999999999 , 2045.3000000000000 , 0.0000000000000000 , 2.0000000000000000 }, { -8.5999999999999996 , 2922.5999999999999 , 0.0000000000000000 , 0.29999999999999999 }, { -7.7000000000000002 , 2587.9000000000001 , 0.0000000000000000 , 0.20000000000000001 }, { 8.8000000000000007 , -1408.0999999999999 , 0.0000000000000000 , 3.7000000000000002 }, { 1.3999999999999999 , 1517.5000000000000 , 0.0000000000000000 , 1.5000000000000000 }, { -1.8999999999999999 , -1579.7000000000000 , 0.0000000000000000 , 7.7000000000000002 }, { 1.3000000000000000 , -2178.5999999999999 , 0.0000000000000000 , -0.20000000000000001 }, { -4.7999999999999998 , 1286.8000000000000 , 0.0000000000000000 , 1.3000000000000000 }, { 6.2999999999999998 , 1267.2000000000000 , 0.0000000000000000 , -4.0000000000000000 }, { -1.0000000000000000 , 1669.3000000000000 , 0.0000000000000000 , -8.3000000000000007 }, { 2.3999999999999999 , -1020.0000000000000 , 0.0000000000000000 , -0.90000000000000002 }, { 4.5000000000000000 , -766.89999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { -1.1000000000000001 , 756.50000000000000 , 0.0000000000000000 , -1.7000000000000000 }, { -1.3999999999999999 , -1097.3000000000000 , 0.0000000000000000 , -0.50000000000000000 }, { 2.6000000000000001 , -663.00000000000000 , 0.0000000000000000 , -0.59999999999999998 }, { 0.80000000000000004 , -714.10000000000002 , 0.0000000000000000 , 1.6000000000000001 }, { 0.40000000000000002 , -629.89999999999998 , 0.0000000000000000 , -0.59999999999999998 }, { 0.29999999999999999 , 580.39999999999998 , 0.0000000000000000 , 0.59999999999999998 }, { -1.6000000000000001 , 577.29999999999995 , 0.0000000000000000 , 0.50000000000000000 }, { -0.90000000000000002 , 644.39999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { 2.2000000000000002 , -534.00000000000000 , 0.0000000000000000 , -0.50000000000000000 }, { -2.5000000000000000 , 493.30000000000001 , 0.0000000000000000 , 0.50000000000000000 }, { -0.10000000000000001 , -477.30000000000001 , 0.0000000000000000 , -2.3999999999999999 }, { -0.90000000000000002 , 735.00000000000000 , 0.0000000000000000 , -1.7000000000000000 }, { 0.69999999999999996 , 406.19999999999999 , 0.0000000000000000 , 0.40000000000000002 }, { -2.7999999999999998 , 656.89999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { 0.59999999999999998 , 358.00000000000000 , 0.0000000000000000 , 2.0000000000000000 }, { -0.69999999999999996 , 472.50000000000000 , 0.0000000000000000 , -1.1000000000000001 }, { -0.10000000000000001 , -300.50000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -1.2000000000000000 , 435.10000000000002 , 0.0000000000000000 , -1.0000000000000000 }, { 1.8000000000000000 , -289.39999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { 0.59999999999999998 , -422.60000000000002 , 0.0000000000000000 , 0.0000000000000000 }, { 0.80000000000000004 , -287.60000000000002 , 0.0000000000000000 , 0.59999999999999998 }, { -38.600000000000001 , -392.30000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.69999999999999996 , -281.80000000000001 , 0.0000000000000000 , 0.59999999999999998 }, { 0.59999999999999998 , -405.69999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -1.2000000000000000 , 229.00000000000000 , 0.0000000000000000 , 0.20000000000000001 }, { 1.1000000000000001 , -264.30000000000001 , 0.0000000000000000 , 0.50000000000000000 }, { -0.69999999999999996 , 247.90000000000001 , 0.0000000000000000 , -0.50000000000000000 }, { -0.20000000000000001 , 218.00000000000000 , 0.0000000000000000 , 0.20000000000000001 }, { 0.59999999999999998 , -339.00000000000000 , 0.0000000000000000 , 0.80000000000000004 }, { -0.69999999999999996 , 198.69999999999999 , 0.0000000000000000 , 0.20000000000000001 }, { -1.5000000000000000 , 334.00000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , 334.00000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , -198.09999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -106.59999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.50000000000000000 , 165.80000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 134.80000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.90000000000000002 , -151.59999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -129.69999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.80000000000000004 , -132.80000000000001 , 0.0000000000000000 , -0.10000000000000001 }, { 0.50000000000000000 , -140.69999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 138.40000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 129.00000000000000 , 0.0000000000000000 , -0.29999999999999999 }, { 0.50000000000000000 , -121.20000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.29999999999999999 , 114.50000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 101.80000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -3.6000000000000001 , -101.90000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.80000000000000004 , -109.40000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.20000000000000001 , -97.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.69999999999999996 , 157.30000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.20000000000000001 , -83.299999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { -0.29999999999999999 , 93.299999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 92.099999999999994 , 0.0000000000000000 , 0.0000000000000000 }, { -0.50000000000000000 , 133.59999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 81.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 123.90000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.29999999999999999 , 128.09999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , 74.099999999999994 , 0.0000000000000000 , -0.29999999999999999 }, { -0.20000000000000001 , -70.299999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { -0.40000000000000002 , 66.599999999999994 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -66.700000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { -0.69999999999999996 , 69.299999999999997 , 0.0000000000000000 , -0.29999999999999999 }, { 0.0000000000000000 , -70.400000000000006 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 101.50000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.50000000000000000 , -69.099999999999994 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 58.500000000000000 , 0.0000000000000000 , 0.20000000000000001 }, { 0.10000000000000001 , -94.900000000000006 , 0.0000000000000000 , 0.20000000000000001 }, { 0.0000000000000000 , 52.899999999999999 , 0.0000000000000000 , -0.20000000000000001 }, { 0.10000000000000001 , 86.700000000000003 , 0.0000000000000000 , -0.20000000000000001 }, { -0.10000000000000001 , -59.200000000000003 , 0.0000000000000000 , 0.20000000000000001 }, { 0.29999999999999999 , -58.799999999999997 , 0.0000000000000000 , 0.10000000000000001 }, { -0.29999999999999999 , 49.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 56.899999999999999 , 0.0000000000000000 , -0.10000000000000001 }, { 0.29999999999999999 , -50.200000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 53.399999999999999 , 0.0000000000000000 , -0.10000000000000001 }, { 0.10000000000000001 , -76.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 45.299999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { 0.20000000000000001 , -44.600000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.20000000000000001 , -48.700000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -42.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 46.399999999999999 , 0.0000000000000000 , -0.10000000000000001 }, { 0.20000000000000001 , -67.299999999999997 , 0.0000000000000000 , 0.10000000000000001 }, { 0.0000000000000000 , -65.799999999999997 , 0.0000000000000000 , 0.20000000000000001 }, { -0.10000000000000001 , -43.899999999999999 , 0.0000000000000000 , 0.29999999999999999 }, { 0.0000000000000000 , -38.899999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.29999999999999999 , 63.899999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 41.200000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -36.100000000000001 , 0.0000000000000000 , 0.20000000000000001 }, { -0.29999999999999999 , 58.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 36.100000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -39.700000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -57.700000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 33.399999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 36.399999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 55.700000000000003 , 0.0000000000000000 , -0.10000000000000001 }, { 0.10000000000000001 , -35.399999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -31.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 30.100000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.29999999999999999 , 49.200000000000003 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 49.100000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 33.600000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -33.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -31.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 28.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -25.199999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -26.199999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 41.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 24.500000000000000 , 0.0000000000000000 , 0.10000000000000001 }, { -16.199999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -22.300000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 23.100000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 37.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.20000000000000001 , -25.699999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 25.199999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -24.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 24.300000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -20.699999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -20.800000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , 33.399999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 32.899999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -32.600000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 19.899999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.10000000000000001 , 19.600000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -18.699999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -19.000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.10000000000000001 , -28.600000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 4.0000000000000000 , 178.80000000000001 , -11.800000000000001 , 0.29999999999999999 }, { 39.799999999999997 , -107.30000000000000 , -5.5999999999999996 , -1.0000000000000000 }, { 9.9000000000000004 , 164.00000000000000 , -4.0999999999999996 , 0.10000000000000001 }, { -4.7999999999999998 , -135.30000000000001 , -3.3999999999999999 , -0.10000000000000001 }, { 50.500000000000000 , 75.000000000000000 , 1.3999999999999999 , -1.2000000000000000 }, { -1.1000000000000001 , -53.500000000000000 , 1.3000000000000000 , 0.0000000000000000 }, { -45.000000000000000 , -2.3999999999999999 , -0.40000000000000002 , 6.5999999999999996 }, { -11.500000000000000 , -61.000000000000000 , -0.90000000000000002 , 0.40000000000000002 }, { 4.4000000000000004 , -68.400000000000006 , -3.3999999999999999 , 0.0000000000000000 }, { 7.7000000000000002 , -47.100000000000001 , -4.7000000000000002 , -1.0000000000000000 }, { -42.899999999999999 , -12.600000000000000 , -1.2000000000000000 , 4.2000000000000002 }, { -42.799999999999997 , 12.699999999999999 , -1.2000000000000000 , -4.2000000000000002 }, { -7.5999999999999996 , -44.100000000000001 , 2.1000000000000001 , -0.50000000000000000 }, { -64.099999999999994 , 1.7000000000000000 , 0.20000000000000001 , 4.5000000000000000 }, { 36.399999999999999 , -10.400000000000000 , 1.0000000000000000 , 3.5000000000000000 }, { 35.600000000000001 , 10.199999999999999 , 1.0000000000000000 , -3.5000000000000000 }, { -1.7000000000000000 , 39.500000000000000 , 2.0000000000000000 , 0.0000000000000000 }, { 50.899999999999999 , -8.1999999999999993 , -0.80000000000000004 , -5.0000000000000000 }, { 0.0000000000000000 , 52.299999999999997 , 1.2000000000000000 , 0.0000000000000000 }, { -42.899999999999999 , -17.800000000000001 , 0.40000000000000002 , 0.0000000000000000 }, { 2.6000000000000001 , 34.299999999999997 , 0.80000000000000004 , 0.0000000000000000 }, { -0.80000000000000004 , -48.600000000000001 , 2.3999999999999999 , -0.10000000000000001 }, { -4.9000000000000004 , 30.500000000000000 , 3.7000000000000002 , 0.69999999999999996 }, { 0.0000000000000000 , -43.600000000000001 , 2.1000000000000001 , 0.0000000000000000 }, { 0.0000000000000000 , -25.399999999999999 , 1.2000000000000000 , 0.0000000000000000 }, { 2.0000000000000000 , 40.899999999999999 , -2.0000000000000000 , 0.0000000000000000 }, { -2.1000000000000001 , 26.100000000000001 , 0.59999999999999998 , 0.0000000000000000 }, { 22.600000000000001 , -3.2000000000000002 , -0.50000000000000000 , -0.50000000000000000 }, { -7.5999999999999996 , 24.899999999999999 , -0.40000000000000002 , -0.20000000000000001 }, { -6.2000000000000002 , 34.899999999999999 , 1.7000000000000000 , 0.29999999999999999 }, { 2.0000000000000000 , 17.399999999999999 , -0.40000000000000002 , 0.10000000000000001 }, { -3.8999999999999999 , 20.500000000000000 , 2.3999999999999999 , 0.59999999999999998 } }; double eps[ 194 ][4] = { { 9205365.8000000007 , -1506.2000000000000 , 885.70000000000005 , -0.20000000000000001 }, { 573095.90000000002 , -570.20000000000005 , -305.00000000000000 , -0.29999999999999999 }, { 97845.500000000000 , 147.80000000000001 , -48.799999999999997 , -0.20000000000000001 }, { -89753.600000000006 , 28.000000000000000 , 46.899999999999999 , 0.0000000000000000 }, { 7406.6999999999998 , -327.10000000000002 , -18.199999999999999 , 0.80000000000000004 }, { 22442.299999999999 , -22.300000000000001 , -67.599999999999994 , 0.0000000000000000 }, { -683.60000000000002 , 46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { 20070.700000000001 , 36.000000000000000 , 1.6000000000000001 , 0.0000000000000000 }, { 12893.799999999999 , 39.500000000000000 , -6.2000000000000002 , 0.0000000000000000 }, { -9593.2000000000007 , 14.400000000000000 , 30.199999999999999 , -0.10000000000000001 }, { -6899.5000000000000 , 4.7999999999999998 , -0.59999999999999998 , 0.0000000000000000 }, { -5332.5000000000000 , -0.10000000000000001 , 2.7000000000000002 , 0.0000000000000000 }, { -125.20000000000000 , 10.500000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -3323.4000000000001 , -0.90000000000000002 , -0.29999999999999999 , 0.0000000000000000 }, { 3142.3000000000002 , 8.9000000000000004 , 0.29999999999999999 , 0.0000000000000000 }, { 2552.5000000000000 , 7.2999999999999998 , -1.2000000000000000 , 0.0000000000000000 }, { 2634.4000000000001 , 8.8000000000000007 , 0.20000000000000001 , 0.0000000000000000 }, { -2424.4000000000001 , 1.6000000000000001 , -0.40000000000000002 , 0.0000000000000000 }, { -123.30000000000000 , 3.8999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 1642.4000000000001 , 7.2999999999999998 , -0.80000000000000004 , 0.0000000000000000 }, { 47.899999999999999 , 3.2000000000000002 , 0.0000000000000000 , 0.0000000000000000 }, { 1321.2000000000000 , 6.2000000000000002 , -0.59999999999999998 , 0.0000000000000000 }, { -1234.0999999999999 , -0.29999999999999999 , 0.59999999999999998 , 0.0000000000000000 }, { -1076.5000000000000 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -61.600000000000001 , 1.8000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -55.399999999999999 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 856.89999999999998 , -4.9000000000000004 , -2.1000000000000001 , 0.0000000000000000 }, { -800.70000000000005 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 685.10000000000002 , -0.59999999999999998 , -3.7999999999999998 , 0.0000000000000000 }, { -16.899999999999999 , -1.5000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 695.70000000000005 , 1.8000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 642.20000000000005 , -2.6000000000000001 , -1.6000000000000001 , 0.0000000000000000 }, { 13.300000000000001 , 1.1000000000000001 , -0.10000000000000001 , 0.0000000000000000 }, { 521.89999999999998 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 325.80000000000001 , 2.0000000000000000 , -0.10000000000000001 , 0.0000000000000000 }, { -325.10000000000002 , -0.50000000000000000 , 0.90000000000000002 , 0.0000000000000000 }, { 10.100000000000000 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 334.50000000000000 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 307.10000000000002 , 0.40000000000000002 , -0.90000000000000002 , 0.0000000000000000 }, { 327.19999999999999 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -304.60000000000002 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 304.00000000000000 , 0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { -276.80000000000001 , -0.50000000000000000 , 0.10000000000000001 , 0.0000000000000000 }, { 268.89999999999998 , 1.3000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 271.80000000000001 , 1.1000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 271.50000000000000 , -0.40000000000000002 , -0.80000000000000004 , 0.0000000000000000 }, { -5.2000000000000002 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -220.50000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -20.100000000000001 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -191.00000000000000 , 0.10000000000000001 , 0.50000000000000000 , 0.0000000000000000 }, { -4.0999999999999996 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 130.59999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 3.0000000000000000 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 122.90000000000001 , 0.80000000000000004 , 0.0000000000000000 , 0.0000000000000000 }, { 3.7000000000000002 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 123.09999999999999 , 0.40000000000000002 , -0.29999999999999999 , 0.0000000000000000 }, { -52.700000000000003 , 15.300000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 120.70000000000000 , 0.29999999999999999 , -0.29999999999999999 , 0.0000000000000000 }, { 4.0000000000000000 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 126.50000000000000 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 112.70000000000000 , 0.50000000000000000 , -0.29999999999999999 , 0.0000000000000000 }, { -106.09999999999999 , -0.29999999999999999 , 0.29999999999999999 , 0.0000000000000000 }, { -112.90000000000001 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 3.6000000000000001 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 107.40000000000001 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -10.900000000000000 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -0.90000000000000002 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 85.400000000000006 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -88.799999999999997 , 0.0000000000000000 , 0.0000000000000000 }, { -71.000000000000000 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -70.299999999999997 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 64.500000000000000 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 }, { 69.799999999999997 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 66.099999999999994 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 }, { -61.000000000000000 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -59.500000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -55.600000000000001 , 0.0000000000000000 , 0.20000000000000001 , 0.0000000000000000 }, { 51.700000000000003 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -49.000000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -52.700000000000003 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -49.600000000000001 , 1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 46.299999999999997 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 }, { 49.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -5.0999999999999996 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -44.000000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -39.899999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -39.500000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -3.8999999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -42.100000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -17.199999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -2.2999999999999998 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -39.200000000000003 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -38.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 36.799999999999997 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 34.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -32.700000000000003 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { 30.399999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.40000000000000002 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 29.300000000000001 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 31.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.80000000000000004 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -27.899999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 2.8999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -25.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 25.000000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 27.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -24.399999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 24.899999999999999 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -22.800000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.90000000000000002 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 24.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 23.899999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 22.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 20.800000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 20.100000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 21.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -20.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.20000000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 19.000000000000000 , 0.0000000000000000 , -0.10000000000000001 , 0.0000000000000000 }, { 20.500000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -2.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -17.600000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 19.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -2.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -18.399999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 17.100000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 18.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 17.399999999999999 , 0.0000000000000000 , 0.0000000000000000 }, { -0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -15.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -16.800000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 16.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -2.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -1.5000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -14.300000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 14.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -13.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -14.300000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -13.699999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 13.100000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -1.7000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -12.800000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , -14.400000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 12.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -12.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -0.80000000000000004 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 10.900000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -10.800000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 10.500000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -10.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -11.199999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 10.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { -1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.0000000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.69999999999999996 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -10.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -10.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 9.5999999999999996 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 9.4000000000000004 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 }, { 0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -87.700000000000003 , 4.4000000000000004 , -0.40000000000000002 , -6.2999999999999998 }, { 46.299999999999997 , 22.399999999999999 , 0.50000000000000000 , -2.3999999999999999 }, { 15.600000000000000 , -3.3999999999999999 , 0.10000000000000001 , 0.40000000000000002 }, { 5.2000000000000002 , 5.7999999999999998 , 0.20000000000000001 , -0.10000000000000001 }, { -30.100000000000001 , 26.899999999999999 , 0.69999999999999996 , 0.0000000000000000 }, { 23.199999999999999 , -0.50000000000000000 , 0.0000000000000000 , 0.59999999999999998 }, { 1.0000000000000000 , 23.199999999999999 , 3.3999999999999999 , 0.0000000000000000 }, { -12.199999999999999 , -4.2999999999999998 , 0.0000000000000000 , 0.0000000000000000 }, { -2.1000000000000001 , -3.7000000000000002 , -0.20000000000000001 , 0.10000000000000001 }, { -18.600000000000001 , -3.7999999999999998 , -0.40000000000000002 , 1.8000000000000000 }, { 5.5000000000000000 , -18.699999999999999 , -1.8000000000000000 , -0.50000000000000000 }, { -5.5000000000000000 , -18.699999999999999 , 1.8000000000000000 , -0.50000000000000000 }, { 18.399999999999999 , -3.6000000000000001 , 0.29999999999999999 , 0.90000000000000002 }, { -0.59999999999999998 , 1.3000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -5.5999999999999996 , -19.500000000000000 , 1.8999999999999999 , 0.0000000000000000 }, { 5.5000000000000000 , -19.100000000000001 , -1.8999999999999999 , 0.0000000000000000 }, { -17.300000000000001 , -0.80000000000000004 , 0.0000000000000000 , 0.90000000000000002 }, { -3.2000000000000002 , -8.3000000000000007 , -0.80000000000000004 , 0.29999999999999999 }, { -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -5.4000000000000004 , 7.7999999999999998 , -0.29999999999999999 , 0.0000000000000000 }, { -14.800000000000001 , 1.3999999999999999 , 0.0000000000000000 , 0.29999999999999999 }, { -3.7999999999999998 , 0.40000000000000002 , 0.0000000000000000 , -0.20000000000000001 }, { 12.600000000000000 , 3.2000000000000002 , 0.50000000000000000 , -1.5000000000000000 }, { 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -13.600000000000000 , 2.3999999999999999 , -0.10000000000000001 , 0.0000000000000000 }, { 0.90000000000000002 , 1.2000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { -11.900000000000000 , -0.50000000000000000 , 0.0000000000000000 , 0.29999999999999999 }, { 0.40000000000000002 , 12.000000000000000 , 0.29999999999999999 , -0.20000000000000001 }, { 8.3000000000000007 , 6.0999999999999996 , -0.10000000000000001 , 0.10000000000000001 }, { 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 }, { 0.40000000000000002 , -10.800000000000001 , 0.29999999999999999 , 0.0000000000000000 }, { 9.5999999999999996 , 2.2000000000000002 , 0.29999999999999999 , -1.2000000000000000 } }; /* interval between fundamental epoch j2000.0 and given epoch (jc). */ t = (date-DJM0)/DJC; /* mean anomaly of the moon. */ el = 134.96340251*PAL__DD2R+ fmod(t*(1717915923.2178+ t*( 31.8792+ t*( 0.051635+ t*( - 0.00024470)))),TURNAS)*PAL__DAS2R; /* mean anomaly of the sun. */ elp = 357.52910918*PAL__DD2R+ fmod(t*( 129596581.0481+ t*( - 0.5532+ t*( 0.000136+ t*( - 0.00001149)))),TURNAS)*PAL__DAS2R; /* mean argument of the latitude of the moon. */ f = 93.27209062*PAL__DD2R+ fmod(t*(1739527262.8478+ t*( - 12.7512+ t*( - 0.001037+ t*( 0.00000417)))),TURNAS)*PAL__DAS2R; /* mean elongation of the moon from the sun. */ d = 297.85019547*PAL__DD2R+ fmod(t*(1602961601.2090+ t*( - 6.3706+ t*( 0.006539+ t*( - 0.00003169)))),TURNAS)*PAL__DAS2R; /* mean longitude of the ascending node of the moon. */ om = 125.04455501*PAL__DD2R+ fmod(t*( - 6962890.5431+ t*( 7.4722+ t*( 0.007702+ t*( - 0.00005939)))),TURNAS)*PAL__DAS2R; /* mean longitude of venus. */ ve = 181.97980085*PAL__DD2R+fmod(210664136.433548*t,TURNAS)*PAL__DAS2R; /* mean longitude of mars.*/ ma = 355.43299958*PAL__DD2R+fmod( 68905077.493988*t,TURNAS)*PAL__DAS2R; /* mean longitude of jupiter. */ ju = 34.35151874*PAL__DD2R+fmod( 10925660.377991*t,TURNAS)*PAL__DAS2R; /* mean longitude of saturn. */ sa = 50.07744430*PAL__DD2R+fmod( 4399609.855732*t,TURNAS)*PAL__DAS2R; /* geodesic nutation (fukushima 1991) in microarcsec. */ dp = -153.1*sin(elp)-1.9*sin(2*elp); de = 0.0; /* shirai & fukushima (2001) nutation series. */ for (j=NTERMS-1; j >= 0; j--) { theta = ((double)na[j][0])*el+ ((double)na[j][1])*elp+ ((double)na[j][2])*f+ ((double)na[j][3])*d+ ((double)na[j][4])*om+ ((double)na[j][5])*ve+ ((double)na[j][6])*ma+ ((double)na[j][7])*ju+ ((double)na[j][8])*sa; c = cos(theta); s = sin(theta); dp += (psi[j][0] + psi[j][2]*t)*c + (psi[j][1] + psi[j][3]*t)*s; de += (eps[j][0] + eps[j][2]*t)*c + (eps[j][1] + eps[j][3]*t)*s; } /* change of units, and addition of the precession correction.*/ *dpsi = (dp*1e-6-0.042888-0.29856*t)*PAL__DAS2R; *deps = (de*1e-6-0.005171-0.02408*t)*PAL__DAS2R; /* mean obliquity of date (simon et al. 1994). */ *eps0 = (84381.412+ (-46.80927+ (-0.000152+ (0.0019989+ (-0.00000051+ (-0.000000025)*t)*t)*t)*t)*t)*PAL__DAS2R; } pal-0.3.0/palAoppat.c000644 000161 000120 00000005602 12017004053 014424 0ustar00timjadmin000000 000000 /* *+ * Name: * palAoppat * Purpose: * Recompute sidereal time to support apparent to observed place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAoppat( double date, double aoprms[14] ); * Arguments: * date = double (Given) * UTC date/time (modified Julian Date, JD-2400000.5) * (see palAoppa description for comments on leap seconds) * aoprms = double[14] (Given & Returned) * Star-independent apparent-to-observed parameters. Updated * by this routine. Requires element 12 to be the longitude + * eqn of equinoxes + sidereal DUT and fills in element 13 * with the local apparent sidereal time (in radians). * Description: * This routine recomputes the sidereal time in the apparent to * observed place star-independent parameter block. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - See palAoppa for more information. * - The star-independent parameters are not treated as an opaque * struct in order to retain compatibility with SLA. * History: * 2012-08-24 (TIMJ): * Initial version, ported from Fortran SLA source. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" static double pal__Gmst( double ut1 ); void palAoppat( double date, double aoprms[14] ) { aoprms[13] = pal__Gmst(date) + aoprms[12]; } /* Use a private implementation of palGmst for testing that matches the SLA rather than SOFA implementation. This is used for comparing SLA with PAL refraction code. */ #include "math.h" #include "palmac.h" static double pal__Gmst( double ut1 ) { double tu; double gmst; /* Julian centuries from fundamental epoch J2000 to this UT */ tu=(ut1-51544.5)/36525; /* GMST at this UT */ gmst=palDranrm(fmod(ut1,1.0)*PAL__D2PI+ (24110.54841+ (8640184.812866+ (0.093104-6.2e-6*tu)*tu)*tu)*PAL__DS2R); return gmst; } pal-0.3.0/palAopqk.c000644 000161 000120 00000023605 12017004070 014255 0ustar00timjadmin000000 000000 /* *+ * Name: * palAopqk * Purpose: * Quick apparent to observed place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palAopqk ( double rap, double dap, const double aoprms[14], * double *aob, double *zob, double *hob, * double *dob, double *rob ); * Arguments: * rap = double (Given) * Geocentric apparent right ascension * dap = double (Given) * Geocentric apparent declination * aoprms = const double [14] (Given) * Star-independent apparent-to-observed parameters. * * [0] geodetic latitude (radians) * [1,2] sine and cosine of geodetic latitude * [3] magnitude of diurnal aberration vector * [4] height (HM) * [5] ambient temperature (T) * [6] pressure (P) * [7] relative humidity (RH) * [8] wavelength (WL) * [9] lapse rate (TLR) * [10,11] refraction constants A and B (radians) * [12] longitude + eqn of equinoxes + sidereal DUT (radians) * [13] local apparent sidereal time (radians) * aob = double * (Returned) * Observed azimuth (radians: N=0,E=90) * zob = double * (Returned) * Observed zenith distance (radians) * hob = double * (Returned) * Observed Hour Angle (radians) * dob = double * (Returned) * Observed Declination (radians) * rob = double * (Returned) * Observed Right Ascension (radians) * Description: * Quick apparent to observed place. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - This routine returns zenith distance rather than elevation * in order to reflect the fact that no allowance is made for * depression of the horizon. * * - The accuracy of the result is limited by the corrections for * refraction. Providing the meteorological parameters are * known accurately and there are no gross local effects, the * observed RA,Dec predicted by this routine should be within * about 0.1 arcsec for a zenith distance of less than 70 degrees. * Even at a topocentric zenith distance of 90 degrees, the * accuracy in elevation should be better than 1 arcmin; useful * results are available for a further 3 degrees, beyond which * the palRefro routine returns a fixed value of the refraction. * The complementary routines palAop (or palAopqk) and palOap * (or palOapqk) are self-consistent to better than 1 micro- * arcsecond all over the celestial sphere. * * - It is advisable to take great care with units, as even * unlikely values of the input parameters are accepted and * processed in accordance with the models used. * * - "Apparent" place means the geocentric apparent right ascension * and declination, which is obtained from a catalogue mean place * by allowing for space motion, parallax, precession, nutation, * annual aberration, and the Sun's gravitational lens effect. For * star positions in the FK5 system (i.e. J2000), these effects can * be applied by means of the palMap etc routines. Starting from * other mean place systems, additional transformations will be * needed; for example, FK4 (i.e. B1950) mean places would first * have to be converted to FK5, which can be done with the * palFk425 etc routines. * * - "Observed" Az,El means the position that would be seen by a * perfect theodolite located at the observer. This is obtained * from the geocentric apparent RA,Dec by allowing for Earth * orientation and diurnal aberration, rotating from equator * to horizon coordinates, and then adjusting for refraction. * The HA,Dec is obtained by rotating back into equatorial * coordinates, using the geodetic latitude corrected for polar * motion, and is the position that would be seen by a perfect * equatorial located at the observer and with its polar axis * aligned to the Earth's axis of rotation (n.b. not to the * refracted pole). Finally, the RA is obtained by subtracting * the HA from the local apparent ST. * * - To predict the required setting of a real telescope, the * observed place produced by this routine would have to be * adjusted for the tilt of the azimuth or polar axis of the * mounting (with appropriate corrections for mount flexures), * for non-perpendicularity between the mounting axes, for the * position of the rotator axis and the pointing axis relative * to it, for tube flexure, for gear and encoder errors, and * finally for encoder zero points. Some telescopes would, of * course, exhibit other properties which would need to be * accounted for at the appropriate point in the sequence. * * - The star-independent apparent-to-observed-place parameters * in AOPRMS may be computed by means of the palAoppa routine. * If nothing has changed significantly except the time, the * palAoppat routine may be used to perform the requisite * partial recomputation of AOPRMS. * * - At zenith distances beyond about 76 degrees, the need for * special care with the corrections for refraction causes a * marked increase in execution time. Moreover, the effect * gets worse with increasing zenith distance. Adroit * programming in the calling application may allow the * problem to be reduced. Prepare an alternative AOPRMS array, * computed for zero air-pressure; this will disable the * refraction corrections and cause rapid execution. Using * this AOPRMS array, a preliminary call to the present routine * will, depending on the application, produce a rough position * which may be enough to establish whether the full, slow * calculation (using the real AOPRMS array) is worthwhile. * For example, there would be no need for the full calculation * if the preliminary call had already established that the * source was well below the elevation limits for a particular * telescope. * * - The azimuths etc produced by the present routine are with * respect to the celestial pole. Corrections to the terrestrial * pole can be computed using palPolmo. * History: * 2012-08-25 (TIMJ): * Initial version, copied from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" void palAopqk ( double rap, double dap, const double aoprms[14], double *aob, double *zob, double *hob, double *dob, double *rob ) { /* Breakpoint for fast/slow refraction algorithm: * ZD greater than arctan(4), (see palRefco routine) * or vector Z less than cosine(arctan(Z)) = 1/sqrt(17) */ const double zbreak = 0.242535625; int i; double sphi,cphi,st,v[3],xhd,yhd,zhd,diurab,f, xhdt,yhdt,zhdt,xaet,yaet,zaet,azobs, zdt,refa,refb,zdobs,dzd,dref,ce, xaeo,yaeo,zaeo,hmobs,dcobs,raobs; /* sin, cos of latitude */ sphi = aoprms[1]; cphi = aoprms[2]; /* local apparent sidereal time */ st = aoprms[13]; /* apparent ra,dec to cartesian -ha,dec */ palDcs2c( rap-st, dap, v ); xhd = v[0]; yhd = v[1]; zhd = v[2]; /* diurnal aberration */ diurab = aoprms[3]; f = (1.0-diurab*yhd); xhdt = f*xhd; yhdt = f*(yhd+diurab); zhdt = f*zhd; /* cartesian -ha,dec to cartesian az,el (s=0,e=90) */ xaet = sphi*xhdt-cphi*zhdt; yaet = yhdt; zaet = cphi*xhdt+sphi*zhdt; /* azimuth (n=0,e=90) */ if (xaet == 0.0 && yaet == 0.0) { azobs = 0.0; } else { azobs = atan2(yaet,-xaet); } /* topocentric zenith distance */ zdt = atan2(sqrt(xaet*xaet+yaet*yaet),zaet); /* * refraction * ---------- */ /* fast algorithm using two constant model */ refa = aoprms[10]; refb = aoprms[11]; palRefz(zdt,refa,refb,&zdobs); /* large zenith distance? */ if (cos(zdobs) < zbreak) { /* yes: use rigorous algorithm */ /* initialize loop (maximum of 10 iterations) */ i = 1; dzd = 1.0e1; while (abs(dzd) > 1e-10 && i <= 10) { /* compute refraction using current estimate of observed zd */ palRefro(zdobs,aoprms[4],aoprms[5],aoprms[6], aoprms[7],aoprms[8],aoprms[0], aoprms[9],1e-8,&dref); /* remaining discrepancy */ dzd = zdobs+dref-zdt; /* update the estimate */ zdobs = zdobs-dzd; /* increment the iteration counter */ i++; } } /* to cartesian az/zd */ ce = sin(zdobs); xaeo = -cos(azobs)*ce; yaeo = sin(azobs)*ce; zaeo = cos(zdobs); /* cartesian az/zd to cartesian -ha,dec */ v[0] = sphi*xaeo+cphi*zaeo; v[1] = yaeo; v[2] = -cphi*xaeo+sphi*zaeo; /* to spherical -ha,dec */ palDcc2s(v,&hmobs,&dcobs); /* right ascension */ raobs = palDranrm(st+hmobs); /* return the results */ *aob = azobs; *zob = zdobs; *hob = -hmobs; *dob = dcobs; *rob = raobs; } pal-0.3.0/palCaldj.c000644 000161 000120 00000005354 12014745436 014237 0ustar00timjadmin000000 000000 /* *+ * Name: * palCaldj * Purpose: * Gregorian Calendar to Modified Julian Date * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palCaldj ( int iy, int im, int id, double *djm, int *j ); * Arguments: * iy = int (Given) * Year in the Gregorian calendar * im = int (Given) * Month in the Gergorian calendar * id = int (Given) * Day in the Gregorian calendar * djm = double * (Returned) * Modified Julian Date (JD-2400000.5) for 0 hrs * j = status (Returned) * 0 = OK. See iauCal2jd for other values. * Description: * Modified Julian Date to Gregorian Calendar with special * behaviour for 2-digit years relating to 1950 to 2049. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-11 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Notes: * - Uses iauCal2jd * - Unlike iauCal2jd this routine treats the years 0-100 as * referring to the end of the 20th Century and beginning of * the 21st Century. If this behaviour is not acceptable * use the SOFA routine directly or palCldj. * Acceptable years are 00-49, interpreted as 2000-2049, * 50-99, " " 1950-1999, * all others, interpreted literally. * - Unlike SLA this routine will work with negative years. * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palCaldj ( int iy, int im, int id, double *djm, int *j ) { int adj = 0; /* Year adjustment */ double djm0; if (iy >= 0 && iy <= 49) { adj = 2000; } else if (iy >= 50 && iy <= 99) { adj = 1900; } iy += adj; *j = iauCal2jd( iy, im, id, &djm0, djm ); } pal-0.3.0/palDafin.c000644 000161 000120 00000014147 12014745436 014243 0ustar00timjadmin000000 000000 /* *+ * Name: * palDafin * Purpose: * Sexagesimal character string to angle * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palDafin ( const char *string, int *ipos, double *a, int *j ); * Arguments: * string = const char * (Given) * String containing deg, arcmin, arcsec fields * ipos = int * (Given & Returned) * Position to start decoding "string". First character * is position 1 for compatibility with SLA. After * calling this routine "iptr" will be positioned after * the sexagesimal string. * a = double * (Returned) * Angle in radians. * j = int * (Returned) * status: 0 = OK * +1 = default, A unchanged * -1 = bad degrees ) * -2 = bad arcminutes ) (note 3) * -3 = bad arcseconds ) * Description: * Extracts an angle from a sexagesimal string with degrees, arcmin, * arcsec fields using space or comma delimiters. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Example: * argument before after * * STRING '-57 17 44.806 12 34 56.7' unchanged * IPTR 1 16 (points to 12...) * A ? -1.00000D0 * J ? 0 * Notes: * - The first three "fields" in STRING are degrees, arcminutes, * arcseconds, separated by spaces or commas. The degrees field * may be signed, but not the others. The decoding is carried * out by the palDfltin routine and is free-format. * - Successive fields may be absent, defaulting to zero. For * zero status, the only combinations allowed are degrees alone, * degrees and arcminutes, and all three fields present. If all * three fields are omitted, a status of +1 is returned and A is * unchanged. In all other cases A is changed. * - Range checking: * * The degrees field is not range checked. However, it is * expected to be integral unless the other two fields are absent. * * The arcminutes field is expected to be 0-59, and integral if * the arcseconds field is present. If the arcseconds field * is absent, the arcminutes is expected to be 0-59.9999... * * The arcseconds field is expected to be 0-59.9999... * * - Decoding continues even when a check has failed. Under these * circumstances the field takes the supplied value, defaulting * to zero, and the result A is computed and returned. * - Further fields after the three expected ones are not treated * as an error. The pointer IPOS is left in the correct state * for further decoding with the present routine or with palDfltin * etc. See the example, above. * - If STRING contains hours, minutes, seconds instead of degrees * etc, or if the required units are turns (or days) instead of * radians, the result A should be multiplied as follows: * * for to obtain multiply * STRING A in A by * * d ' " radians 1 = 1.0 * d ' " turns 1/2pi = 0.1591549430918953358 * h m s radians 15 = 15.0 * h m s days 15/2pi = 2.3873241463784300365 * History: * 2012-03-08 (TIMJ): * Initial version from SLA/F using Fortran documentation * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofam.h" #include void palDafin ( const char *string, int *ipos, double *a, int *j ) { int jd = 0; /* Status for degree parsing */ int jm = 0; /* Status for arcmin parsing */ int js = 0; /* Status for arcsec parsing */ int jf = 0; /* Internal copy of status */ double deg = 0.0; double arcmin = 0.0; double arcsec = 0.0; /* Decode degrees, arcminutes, arcseconds */ palDfltin( string, ipos, °, &jd ); if (jd > 1) { jf = -1; } else { palDfltin( string, ipos, &arcmin, &jm ); if ( jm < 0 || jm > 1 ) { jf = -2; } else { palDfltin( string, ipos, &arcsec, &js ); if (js < 0 || js > 1) { jf = -3; } else if (jd > 0) { /* See if combination of fields is credible */ /* No degrees: arcmin, arcsec ought also to be absent */ if (jm == 0) { /* Suspect arcmin */ jf = -2; } else if (js == 0) { /* Suspect arcsec */ jf = -3; } else { /* All three fields absent */ jf = 1; } } else if (jm != 0 && js == 0) { /* Deg present: if arcsec present should have arcmin */ jf = -3; /* Tests for range and integrality */ } else if (jm == 0 && dint(deg) != deg) { /* Degrees */ jf = -1; } else if (js == 0 && dint(arcmin) != arcmin) { /* Arcmin */ jf = -2; } else if (arcsec >= 60.0) { /* Arcsec */ jf = -3; } } } /* Unless all three fields absent, compute angle value */ if (jf <= 0) { *a = PAL__DAS2R * ( 60.0 * ( 60.0 * fabs(deg) + arcmin) + arcsec ); if ( jd < 0 ) *a *= -1.; } *j = jf; } pal-0.3.0/palDat.c000644 000161 000120 00000004655 12014745436 013735 0ustar00timjadmin000000 000000 /* *+ * Name: * palDtt * Purpose: * Return offset between UTC and TT * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * dat = palDat( double utc ); * Arguments: * utc = double (Given) * UTC date as a modified JD (JD-2400000.5) * Returned Value: * dat = double * TAI-UTC in seconds * Description: * Increment to be applied to Coordinated Universal Time UTC to give * International Atomic Time (TAI). * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - This routine converts the MJD argument to calendar date before calling * the SOFA iauDat function. * - This routine matches the slaDat interface which differs from the iauDat * interface. Consider coding directly to the SOFA interface. * - See iauDat for a description of error conditions when calling this function * with a time outside of the UTC range. * - The status argument from iauDat is ignored. This is reasonable since the * error codes are mainly related to incorrect calendar dates when calculating * the JD internally. * History: * 2012-02-08 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" double palDat ( double dju ) { int iy; int im; int id; int status; double fd; double deltat; iauJd2cal( PAL__MJD0, dju, &iy, &im, &id, &fd ); status = iauDat( iy, im, id, fd, &deltat ); return deltat; } pal-0.3.0/palDe2h.c000644 000161 000120 00000007335 12014745436 014005 0ustar00timjadmin000000 000000 /* *+ * Name: * palDe2h * Purpose: * Equatorial to horizon coordinates: HA,Dec to Az,E * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDe2h( double ha, double dec, double phi, double * az, double * el ); * Arguments: * ha = double * (Given) * Hour angle (radians) * dec = double * (Given) * Declination (radians) * phi = double (Given) * Observatory latitude (radians) * az = double * (Returned) * Azimuth (radians) * el = double * (Returned) * Elevation (radians) * Description: * Convert equatorial to horizon coordinates. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - All the arguments are angles in radians. * - Azimuth is returned in the range 0-2pi; north is zero, * and east is +pi/2. Elevation is returned in the range * +/-pi/2. * - The latitude must be geodetic. In critical applications, * corrections for polar motion should be applied. * - In some applications it will be important to specify the * correct type of hour angle and declination in order to * produce the required type of azimuth and elevation. In * particular, it may be important to distinguish between * elevation as affected by refraction, which would * require the "observed" HA,Dec, and the elevation * in vacuo, which would require the "topocentric" HA,Dec. * If the effects of diurnal aberration can be neglected, the * "apparent" HA,Dec may be used instead of the topocentric * HA,Dec. * - No range checking of arguments is carried out. * - In applications which involve many such calculations, rather * than calling the present routine it will be more efficient to * use inline code, having previously computed fixed terms such * as sine and cosine of latitude, and (for tracking a star) * sine and cosine of declination. * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include void palDe2h ( double ha, double dec, double phi, double *az, double *el) { double sh; double ch; double sd; double cd; double sp; double cp; double a; double x; double y; double z; double r; /* Useful trig functions */ sh = sin(ha); ch = cos(ha); sd = sin(dec); cd = cos(dec); sp = sin(phi); cp = cos(phi); /* Az,El as x,y,z */ x = -ch * cd * sp + sd * cp; y = -sh * cd; z = ch * cd * cp + sd * sp; /* To spherical */ r = sqrt(x * x + y * y); if (r == 0.) { a = 0.; } else { a = atan2(y, x); } if (a < 0.) { a += PAL__D2PI; } *az = a; *el = atan2(z, r); return; } pal-0.3.0/palDeuler.c000644 000161 000120 00000007451 12014745436 014442 0ustar00timjadmin000000 000000 /* *+ * Name: * palDeuler * Purpose: * Form a rotation matrix from the Euler angles * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palDeuler ( const char *order, double phi, double theta, double psi, * double rmat[3][3] ); * Arguments: * order = const char[] (Given) * Specifies about which axes the rotation occurs * phi = double (Given) * 1st rotation (radians) * theta = double (Given) * 2nd rotation (radians) * psi = double (Given) * 3rd rotation (radians) * rmat = double[3][3] (Given & Returned) * Rotation matrix * Description: * A rotation is positive when the reference frame rotates * anticlockwise as seen looking towards the origin from the * positive region of the specified axis. * * The characters of ORDER define which axes the three successive * rotations are about. A typical value is 'ZXZ', indicating that * RMAT is to become the direction cosine matrix corresponding to * rotations of the reference frame through PHI radians about the * old Z-axis, followed by THETA radians about the resulting X-axis, * then PSI radians about the resulting Z-axis. * * The axis names can be any of the following, in any order or * combination: X, Y, Z, uppercase or lowercase, 1, 2, 3. Normal * axis labelling/numbering conventions apply; the xyz (=123) * triad is right-handed. Thus, the 'ZXZ' example given above * could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ'). ORDER * is terminated by length or by the first unrecognized character. * * Fewer than three rotations are acceptable, in which case the later * angle arguments are ignored. If all rotations are zero, the * identity matrix is produced. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palDeuler( const char *order, double phi, double theta, double psi, double rmat[3][3] ) { int i = 0; double rotations[3]; /* Initialise rmat */ iauIr( rmat ); /* copy the rotations into an array */ rotations[0] = phi; rotations[1] = theta; rotations[2] = psi; /* maximum three rotations */ while (i < 3 && order[i] != '\0') { switch (order[i]) { case 'X': case 'x': case '1': iauRx( rotations[i], rmat ); break; case 'Y': case 'y': case '2': iauRy( rotations[i], rmat ); break; case 'Z': case 'z': case '3': iauRz( rotations[i], rmat ); break; default: /* break out the loop if we do not recognize something */ i = 3; } /* Go to the next position */ i++; } return; } pal-0.3.0/palDfltin.c000644 000161 000120 00000016101 12015255440 014422 0ustar00timjadmin000000 000000 /* *+ * Name: * palDfltin * Purpose: * Convert free-format input into double precision floating point * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palDfltin( const char * string, int *nstrt, * double *dreslt, int *jflag ); * Arguments: * string = const char * (Given) * String containing number to be decoded. * nstrt = int * (Given and Returned) * Character number indicating where decoding should start. * On output its value is updated to be the location of the * possible next value. For compatibility with SLA the first * character is index 1. * dreslt = double * (Returned) * Result. Not updated when jflag=1. * jflag = int * (Returned) * status: -1 = -OK, 0 = +OK, 1 = null, 2 = error * Description: * Extracts a number from an input string starting at the specified * index. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Uses the strtod() system call to do the parsing. This may lead to * subtle differences when compared to the SLA/F parsing. * - All "D" characters are converted to "E" to handle fortran exponents. * - Commas are recognized as a special case and are skipped if one happens * to be the next character when updating nstrt. Additionally the output * nstrt position will skip past any trailing space. * - If no number can be found flag will be set to 1. * - If the number overflows or underflows jflag will be set to 2. For overflow * the returned result will have the value HUGE_VAL, for underflow it * will have the value 0.0. * - For compatiblity with SLA/F -0 will be returned as "0" with jflag == -1. * - Unlike slaDfltin a standalone "E" will return status 1 (could not find * a number) rather than 2 (bad number). * Implementation Status: * - The code is more robust if the C99 copysign() function is available. * This can recognize the -0.0 values returned by strtod. If copysign() is * missing we try to scan the string looking for minus signs. * History: * 2012-03-08 (TIMJ): * Initial version based on strtod * 2012-06-21 (TIMJ): * Provide a backup for missing copysign. * 2012-06-22 (TIMJ): * Check __STDC_VERSION__ * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ /* Use the config file if we have one, else look at compiler defines to see if we have C99 */ #if HAVE_CONFIG_H #include #else #ifdef __STDC_VERSION__ # if (__STDC_VERSION__ >= 199901L) # define HAVE_COPYSIGN 1 # endif #endif #endif /* isblank() is a C99 feature so we just reimplement it if it is missing */ #if HAVE_ISBLANK #define _POSIX_C_SOURCE 200112L #define _ISOC99_SOURCE #include # define ISBLANK isblank #else static int ISBLANK( int c ) { return ( c == ' ' || c == '\t' ); } #endif /* System include files */ #include #include #include #include #include "pal.h" #if HAVE_COPYSIGN # define SCAN_FOR_MINUS 0 #else # define SCAN_FOR_MINUS 1 #endif /* We prefer to use the starutil package */ #if HAVE_STAR_UTIL_H # include "star/util.h" #else #endif void palDfltin( const char * string, int *nstrt, double *dreslt, int *jflag ) { char * ctemp = NULL; /* Pointer into string */ char * endptr = NULL;/* Pointer to string after number */ double retval; /* Return value from strtod */ /* We have to copy the string in order to modify the exponents from Fortran style. Rather than using malloc we have a static buffer. Technically we only have to do the copy if we have a D or d in the string. */ char tempbuf[256]; #if SCAN_FOR_MINUS int dreslt_sign = 1; int ipos = *nstrt; const char * cctemp = NULL; /* Scan the string looking for a minus sign. Then update the start position for the subsequent copy iff we find a '-'. Note that commas are a special delimiter so we stop looking for a minus if we find one or if we find a digit. */ cctemp = &(string[ipos-1]); while (!isdigit(*cctemp) && (*cctemp != ',') && (*cctemp != '\0')) { if (*cctemp == '-') { *nstrt = ipos; dreslt_sign = -1; break; } ipos++; cctemp++; } #endif /* Correct for SLA use of fortran convention */ #if HAVE_STAR_UTIL_H star_strlcpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf) ); #else # if HAVE_STRLCPY strlcpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf) ); # else /* Use standard C interface */ strncpy( tempbuf, &(string[*nstrt-1]), sizeof(tempbuf)); tempbuf[sizeof(tempbuf)-1] = '\0'; # endif #endif /* Convert d or D to E */ ctemp = tempbuf; while (*ctemp != '\0') { if (*ctemp == 'd' || *ctemp == 'D') *ctemp = 'E'; ctemp++; } /* strtod man page indicates that we should reset errno before calling strtod */ errno = 0; /* We know we are starting at the beginning of the string now */ retval = strtod( tempbuf, &endptr ); if (retval == 0.0 && endptr == tempbuf) { /* conversion did not find anything */ *jflag = 1; /* but SLA compatibility requires that we step through to remove leading spaces. We also step through alphabetic characters since they can never be numbers standalone (no number starts with an 'E') */ while (ISBLANK(*endptr) || isalpha(*endptr) ) { endptr++; } } else if ( errno == ERANGE ) { *jflag = 2; } else { #if SCAN_FOR_MINUS *jflag = (dreslt_sign < 0 ? -1 : 0); #else if ( retval < 0.0 ) { *jflag = -1; } else if ( retval == 0.0 ) { /* Need to distinguish -0 from +0 */ double test = copysign( 1.0, retval ); if ( test < 0.0 ) { *jflag = -1; } else { *jflag = 0; } } else { *jflag = 0; } #endif } /* Sort out the position for the next index */ *nstrt += endptr - tempbuf; /* Skip a comma */ if (*endptr == ',') { (*nstrt)++; } else { /* jump past any leading spaces for the next part of the string */ ctemp = endptr; while ( ISBLANK(*ctemp) ) { (*nstrt)++; ctemp++; } } /* And the result unless we found nothing */ if (*jflag != 1) *dreslt = retval; } pal-0.3.0/palDh2e.c000644 000161 000120 00000007100 12014745436 013773 0ustar00timjadmin000000 000000 /* *+ * Name: * palDh2e * Purpose: * Horizon to equatorial coordinates: Az,El to HA,Dec * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDh2e( double az, double el, double phi, double * ha, double * dec ); * Arguments: * az = double (Given) * Azimuth (radians) * el = double (Given) * Elevation (radians) * phi = double (Given) * Observatory latitude (radians) * ha = double * (Returned) * Hour angle (radians) * dec = double * (Returned) * Declination (radians) * Description: * Convert horizon to equatorial coordinates. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - All the arguments are angles in radians. * - The sign convention for azimuth is north zero, east +pi/2. * - HA is returned in the range +/-pi. Declination is returned * in the range +/-pi/2. * - The latitude is (in principle) geodetic. In critical * applications, corrections for polar motion should be applied. * - In some applications it will be important to specify the * correct type of elevation in order to produce the required * type of HA,Dec. In particular, it may be important to * distinguish between the elevation as affected by refraction, * which will yield the "observed" HA,Dec, and the elevation * in vacuo, which will yield the "topocentric" HA,Dec. If the * effects of diurnal aberration can be neglected, the * topocentric HA,Dec may be used as an approximation to the * "apparent" HA,Dec. * - No range checking of arguments is done. * - In applications which involve many such calculations, rather * than calling the present routine it will be more efficient to * use inline code, having previously computed fixed terms such * as sine and cosine of latitude. * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include void palDh2e ( double az, double el, double phi, double *ha, double *dec) { double sa; double ca; double se; double ce; double sp; double cp; double x; double y; double z; double r; /* Useful trig functions */ sa = sin(az); ca = cos(az); se = sin(el); ce = cos(el); sp = sin(phi); cp = cos(phi); /* HA,Dec as x,y,z */ x = -ca * ce * sp + se * cp; y = -sa * ce; z = ca * ce * cp + se * sp; /* To HA,Dec */ r = sqrt(x * x + y * y); if (r == 0.) { *ha = 0.; } else { *ha = atan2(y, x); } *dec = atan2(z, r); return; } pal-0.3.0/palDjcal.c000644 000161 000120 00000004673 12014745436 014242 0ustar00timjadmin000000 000000 /* *+ * Name: * palDjcal * Purpose: * Modified Julian Date to Gregorian Calendar * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palDjcal ( int ndp, double djm, int iymdf[4], int *j ); * Arguments: * ndp = int (Given) * Number of decimal places of days in fraction. * djm = double (Given) * Modified Julian Date (JD-2400000.5) * iymdf[4] = int[] (Returned) * Year, month, day, fraction in Gregorian calendar. * j = status (Returned) * 0 = OK. See iauJd2cal for other values. * Description: * Modified Julian Date to Gregorian Calendar, expressed * in a form convenient for formatting messages (namely * rounded to a specified precision, and with the fields * stored in a single array) * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-10 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Notes: * - Uses iauJd2cal * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" #include "sofa.h" void palDjcal ( int ndp, double djm, int iymdf[4], int *j ) { double frac = 0.0; double nfd; *j = iauJd2cal( PAL__MJD0, djm, &(iymdf[0]), &(iymdf[1]), &(iymdf[2]), &frac); /* Convert ndp to a power of 10 */ nfd = pow( 10., (double)ndp ); /* Multiply the fraction */ frac *= nfd; /* and now we want to round to the nearest integer */ iymdf[3] = (int)DNINT(frac); } pal-0.3.0/palDmat.c000644 000161 000120 00000010153 12014745436 014100 0ustar00timjadmin000000 000000 /* *+ * Name: * palDmat * Purpose: * Matrix inversion & solution of simultaneous equations * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palDmat( int n, double *a, double *y, double *d, int *jf, * int *iw ); * Arguments: * n = int (Given) * Number of simultaneous equations and number of unknowns. * a = double[] (Given & Returned) * A non-singular NxN matrix (implemented as a contiguous block * of memory). After calling this routine "a" contains the * inverse of the matrix. * y = double[] (Given & Returned) * The vector of N unknowns. On exit this vector contains the * N solutions. * d = double * (Returned) * The determinant. * jf = int * (Returned) * The singularity flag. If the matrix is non-singular, jf=0 * is returned. If the matrix is singular, jf=-1 & d=0.0 are * returned. In the latter case, the contents of array "a" on * return are undefined. * Description: * Matrix inversion & solution of simultaneous equations * For the set of n simultaneous equations in n unknowns: * A.Y = X * this routine calculates the inverse of A, the determinant * of matrix A and the vector of N unknowns. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-11 (TIMJ): * Combination of a port of the Fortran and a comparison * with the obfuscated GPL C routine. * {enter_further_changes_here} * Notes: * - Implemented using Gaussian elimination with partial pivoting. * - Optimized for speed rather than accuracy with errors 1 to 4 * times those of routines optimized for accuracy. * Copyright: * Copyright (C) 2001 Rutherford Appleton Laboratory. * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ) { const double SFA = 1e-20; int k; double*aoff; *jf=0; *d=1.0; for(k=0,aoff=a; kamx){ amx=t; imx=i; aoff2=apos2; } } } if(amx0;){ int ki=iw[k]; if(k!=ki){ int i; double *apos = a; for(i=0;i=0; N--) { /* DO N=NL, 1, -1 */ COEFF=TL[N]; EMN=(double)(ITL[N][0]); EMPN=(double)(ITL[N][1]); DN=(double)(ITL[N][2]); FN=(double)(ITL[N][3]); I=ITL[N][4]; if (I == 0) { EN=1.; DEN=0.; } else if (I == 1) { EN=E; DEN=DE; } else { EN=ESQ; DEN=DESQ; } THETA=EMN*EM+EMPN*EMP+DN*D+FN*F; DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF; FTHETA=sin(THETA); V=V+COEFF*FTHETA*EN; DV=DV+COEFF*(cos(THETA)*DTHETA*EN+FTHETA*DEN); } EL=ELP+DD2R*V; DEL=(DELP+DD2R*DV)/CJ; /* Latitude */ V=0.; DV=0.; for (N=NB-1; N>=0; N--) { /* DO N=NB,1,-1 */ COEFF=TB[N]; EMN=(double)(ITB[N][0]); EMPN=(double)(ITB[N][1]); DN=(double)(ITB[N][2]); FN=(double)(ITB[N][3]); I=ITB[N][4]; if (I == 0 ) { EN=1.; DEN=0.; } else if (I == 1) { EN=E; DEN=DE; } else { EN=ESQ; DEN=DESQ; } THETA=EMN*EM+EMPN*EMP+DN*D+FN*F; DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF; FTHETA=sin(THETA); V=V+COEFF*FTHETA*EN; DV=DV+COEFF*(cos(THETA)*DTHETA*EN+FTHETA*DEN); } BF=1.-CW1*COSOM-CW2*COSWOM; DBF=CW1*DOM*SINOM+CW2*DWOM*SINWOM; B=DD2R*V*BF; DB=DD2R*(DV*BF+V*DBF)/CJ; /* Parallax */ V=0.; DV=0.; for (N=NP-1; N>=0; N--) { /* DO N=NP,1,-1 */ COEFF=TP[N]; EMN=(double)(ITP[N][0]); EMPN=(double)(ITP[N][1]); DN=(double)(ITP[N][2]); FN=(double)(ITP[N][3]); I=ITP[N][4]; if (I == 0) { EN=1.; DEN=0.; } else if (I == 1) { EN=E; DEN=DE; } else { EN=ESQ; DEN=DESQ; } THETA=EMN*EM+EMPN*EMP+DN*D+FN*F; DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF; FTHETA=cos(THETA); V=V+COEFF*FTHETA*EN; DV=DV+COEFF*(-sin(THETA)*DTHETA*EN+FTHETA*DEN); } P=DD2R*V; DP=DD2R*DV/CJ; /* * Transformation into final form */ /* Parallax to distance (AU, AU/sec) */ SP=sin(P); R=ERADAU/SP; DR=-R*DP*cos(P)/SP; /* Longitude, latitude to x,y,z (AU) */ SEL=sin(EL); CEL=cos(EL); SB=sin(B); CB=cos(B); RCB=R*CB; RBD=R*DB; W=RBD*SB-CB*DR; X=RCB*CEL; Y=RCB*SEL; Z=R*SB; XD=-Y*DEL-W*CEL; YD=X*DEL-W*SEL; ZD=RBD*CB+SB*DR; /* Julian centuries since J2000 */ T=(date-51544.5)/36525.; /* Fricke equinox correction */ EPJ=2000.+T*100.; EQCOR=DS2R*(0.035+0.00085*(EPJ-B1950)); /* Mean obliquity (IAU 1976) */ EPS=DAS2R*(84381.448+(-46.8150+(-0.00059+0.001813*T)*T)*T); /* To the equatorial system, mean of date, FK5 system */ SINEPS=sin(EPS); COSEPS=cos(EPS); ES=EQCOR*SINEPS; EC=EQCOR*COSEPS; pv[0]=X-EC*Y+ES*Z; pv[1]=EQCOR*X+Y*COSEPS-Z*SINEPS; pv[2]=Y*SINEPS+Z*COSEPS; pv[3]=XD-EC*YD+ES*ZD; pv[4]=EQCOR*XD+YD*COSEPS-ZD*SINEPS; pv[5]=YD*SINEPS+ZD*COSEPS; } pal-0.3.0/palDrange.c000644 000161 000120 00000003520 12014745436 014413 0ustar00timjadmin000000 000000 /* *+ * Name: * palDrange * Purpose: * Normalize angle into range +/- pi * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDrange( double angle ) * Arguments: * angle = double (Given) * The angle in radians. * Description: * The result is "angle" expressed in the range +/- pi. If the * supplied value for "angle" is equal to +/- pi, it is returned * unchanged. * Authors: * DSB: David S Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-05-09 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include double palDrange( double angle ){ double result = fmod( angle, PAL__D2PI ); if( result > PAL__DPI ) { result -= PAL__D2PI; } else if( result < -PAL__DPI ) { result += PAL__D2PI; } return result; } pal-0.3.0/palDs2tp.c000644 000161 000120 00000006467 12014745436 014224 0ustar00timjadmin000000 000000 /* *+ * Name: * palDs2tp * Purpose: * Spherical to tangent plane projection * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDs2tp( double ra, double dec, double raz, double decz, * double *xi, double *eta, int *j ); * Arguments: * ra = double (Given) * RA spherical coordinate of point to be projected (radians) * dec = double (Given) * Dec spherical coordinate of point to be projected (radians) * raz = double (Given) * RA spherical coordinate of tangent point (radians) * decz = double (Given) * Dec spherical coordinate of tangent point (radians) * xi = double * (Returned) * First rectangular coordinate on tangent plane (radians) * eta = double * (Returned) * Second rectangular coordinate on tangent plane (radians) * j = int * (Returned) * status: 0 = OK, star on tangent plane * 1 = error, star too far from axis * 2 = error, antistar on tangent plane * 3 = error, antistar too far from axis * Description: * Projection of spherical coordinates onto tangent plane: * "gnomonic" projection - "standard coordinates" * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include void palDs2tp ( double ra, double dec, double raz, double decz, double *xi, double *eta, int *j ) { const double TINY = 1.0e-6; double cdec; double sdec; double radif; double cdecz; double denom; double sdecz; double cradif; double sradif; /* Trig functions */ sdecz = sin(decz); sdec = sin(dec); cdecz = cos(decz); cdec = cos(dec); radif = ra - raz; sradif = sin(radif); cradif = cos(radif); /* Reciprocal of star vector length to tangent plane */ denom = sdec * sdecz + cdec * cdecz * cradif; /* Handle vectors too far from axis */ if (denom > TINY) { *j = 0; } else if (denom >= 0.) { *j = 1; denom = TINY; } else if (denom > -TINY) { *j = 2; denom = -TINY; } else { *j = 3; } /* Compute tangent plane coordinates (even in dubious cases) */ *xi = cdec * sradif / denom; *eta = (sdec * cdecz - cdec * sdecz * cradif) / denom; return; } pal-0.3.0/palDt.c000644 000161 000120 00000006627 12014745436 013575 0ustar00timjadmin000000 000000 /* *+ * Name: * palDt * Purpose: * Estimate the offset between dynamical time and UT * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palDt( double epoch ); * Arguments: * epoch = double (Given) * Julian epoch (e.g. 1850.0) * Returned Value: * palDt = double * Rough estimate of ET-UT (after 1984, TT-UT) at the * given epoch, in seconds. * Description: * Estimate the offset between dynamical time and Universal Time * for a given historical epoch. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Depending on the epoch, one of three parabolic approximations * is used: * * before 979 Stephenson & Morrison's 390 BC to AD 948 model * 979 to 1708 Stephenson & Morrison's 948 to 1600 model * after 1708 McCarthy & Babcock's post-1650 model * * The breakpoints are chosen to ensure continuity: they occur * at places where the adjacent models give the same answer as * each other. * - The accuracy is modest, with errors of up to 20 sec during * the interval since 1650, rising to perhaps 30 min by 1000 BC. * Comparatively accurate values from AD 1600 are tabulated in * the Astronomical Almanac (see section K8 of the 1995 AA). * - The use of double-precision for both argument and result is * purely for compatibility with other SLALIB time routines. * - The models used are based on a lunar tidal acceleration value * of -26.00 arcsec per century. * * See Also: * Explanatory Supplement to the Astronomical Almanac, * ed P.K.Seidelmann, University Science Books (1992), * section 2.553, p83. This contains references to * the Stephenson & Morrison and McCarthy & Babcock * papers. * History: * 2012-03-08 (TIMJ): * Initial version with documentation from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" double palDt ( double epoch ) { double t,w,s; /* Centuries since 1800 */ t = (epoch - 1800.0) / 100.0; /* Select model */ if ( epoch >= 1708.185161980887 ) { /* Post-1708: use McCarthy & Babcock */ w = t - 0.19; s = 5.156 + 13.3066 * w * w; } else if ( epoch >= 979.0258204760233 ) { /* 978-1708: use Stephenson & Morrison's 948-1600 model */ s = 25.5 * t * t; } else { /* Pre-979: use Stephenson & Morrison's 390 BC to AD 948 model */ s = 1360.0 + (320.0 + 44.3*t) * t; } return s; } pal-0.3.0/palDtp2s.c000644 000161 000120 00000004741 12014745436 014215 0ustar00timjadmin000000 000000 /* *+ * Name: * palDtp2s * Purpose: * Tangent plane to spherical coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDtp2s( double xi, double eta, double raz, double decz, * double *ra, double *dec); * Arguments: * xi = double (Given) * First rectangular coordinate on tangent plane (radians) * eta = double (Given) * Second rectangular coordinate on tangent plane (radians) * raz = double (Given) * RA spherical coordinate of tangent point (radians) * decz = double (Given) * Dec spherical coordinate of tangent point (radians) * ra = double * (Returned) * RA spherical coordinate of point to be projected (radians) * dec = double * (Returned) * Dec spherical coordinate of point to be projected (radians) * Description: * Transform tangent plane coordinates into spherical. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" #include void palDtp2s ( double xi, double eta, double raz, double decz, double *ra, double *dec ) { double cdecz; double denom; double sdecz; double d; sdecz = sin(decz); cdecz = cos(decz); denom = cdecz - eta * sdecz; d = atan2(xi, denom) + raz; *ra = iauAnp(d); *dec = atan2(sdecz + eta * cdecz, sqrt(xi * xi + denom * denom)); return; } pal-0.3.0/palDtps2c.c000644 000161 000120 00000011036 12014745436 014353 0ustar00timjadmin000000 000000 /* *+ * Name: * palDtps2c * Purpose: * Determine RA,Dec of tangent point from coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palDtps2c( double xi, double eta, double ra, double dec, * double * raz1, double decz1, * double * raz2, double decz2, int *n); * Arguments: * xi = double (Given) * First rectangular coordinate on tangent plane (radians) * eta = double (Given) * Second rectangular coordinate on tangent plane (radians) * ra = double (Given) * RA spherical coordinate of star (radians) * dec = double (Given) * Dec spherical coordinate of star (radians) * raz1 = double * (Returned) * RA spherical coordinate of tangent point, solution 1 (radians) * decz1 = double * (Returned) * Dec spherical coordinate of tangent point, solution 1 (radians) * raz2 = double * (Returned) * RA spherical coordinate of tangent point, solution 2 (radians) * decz2 = double * (Returned) * Dec spherical coordinate of tangent point, solution 2 (radians) * n = int * (Returned) * number of solutions: 0 = no solutions returned (note 2) * 1 = only the first solution is useful (note 3) * 2 = both solutions are useful (note 3) * Description: * From the tangent plane coordinates of a star of known RA,Dec, * determine the RA,Dec of the tangent point. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The RAZ1 and RAZ2 values are returned in the range 0-2pi. * - Cases where there is no solution can only arise near the poles. * For example, it is clearly impossible for a star at the pole * itself to have a non-zero XI value, and hence it is * meaningless to ask where the tangent point would have to be * to bring about this combination of XI and DEC. * - Also near the poles, cases can arise where there are two useful * solutions. The argument N indicates whether the second of the * two solutions returned is useful. N=1 indicates only one useful * solution, the usual case; under these circumstances, the second * solution corresponds to the "over-the-pole" case, and this is * reflected in the values of RAZ2 and DECZ2 which are returned. * - The DECZ1 and DECZ2 values are returned in the range +/-pi, but * in the usual, non-pole-crossing, case, the range is +/-pi/2. * - This routine is the spherical equivalent of the routine sla_DTPV2C. * History: * 2012-02-08 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" #include void palDtps2c( double xi, double eta, double ra, double dec, double * raz1, double * decz1, double * raz2, double * decz2, int *n) { double x2; double y2; double sd; double cd; double sdf; double r2; x2 = xi * xi; y2 = eta * eta; sd = sin(dec); cd = cos(dec); sdf = sd * sqrt(x2 + 1. + y2); r2 = cd * cd * (y2 + 1.) - sd * sd * x2; if (r2 >= 0.) { double r; double s; double c; r = sqrt(r2); s = sdf - eta * r; c = sdf * eta + r; if (xi == 0. && r == 0.) { r = 1.; } *raz1 = iauAnp(ra - atan2(xi, r)); *decz1 = atan2(s, c); r = -r; s = sdf - eta * r; c = sdf * eta + r; *raz2 = iauAnp(ra - atan2(xi, r)); *decz2 = atan2(s, c); if (fabs(sdf) < 1.) { *n = 1; } else { *n = 2; } } else { *n = 0; } return; } pal-0.3.0/palDtt.c000644 000161 000120 00000003733 12014745436 013754 0ustar00timjadmin000000 000000 /* *+ * Name: * palDtt * Purpose: * Return offset between UTC and TT * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * dtt = palDtt( double utc ); * Arguments: * utc = double (Given) * UTC date as a modified JD (JD-2400000.5) * Returned Value: * dtt = double * TT-UTC in seconds * Description: * Increment to be applied to Coordinated Universal Time UTC to give * Terrestrial Time TT (formerly Ephemeris Time ET) * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Consider a comprehensive upgrade to use the time transformations in SOFA's time * cookbook: http://www.iausofa.org/sofa_ts_c.pdf. * - See iauDat for a description of error conditions when calling this function * with a time outside of the UTC range. This behaviour differs from slaDtt. * History: * 2012-02-08 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" double palDtt( double utc ) { return 32.184 + palDat( utc ); } pal-0.3.0/palEcmat.c000644 000161 000120 00000004262 12014745436 014250 0ustar00timjadmin000000 000000 /* *+ * Name: * palEcmat * Purpose: * Form the equatorial to ecliptic rotation matrix - IAU 2006 * precession model. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palEcmat( double date, double rmat[3][3] ) * Arguments: * date = double (Given) * TT as Modified Julian Date (JD-2400000.5). The difference * between TT and TDB is of the order of a millisecond or two * (i.e. about 0.02 arc-seconds). * rmat = double[3][3] (Returned) * Rotation matrix * Description: * The equatorial to ecliptic rotation matrix is found and returned. * The matrix is in the sense V(ecl) = RMAT * V(equ); the * equator, equinox and ecliptic are mean of date. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-10 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palEcmat( double date, double rmat[3][3] ) { /* Mean obliquity (the angle between the ecliptic and mean equator of date). */ double eps0 = iauObl06( PAL__MJD0, date ); /* Matrix */ palDeuler( "X", eps0, 0.0, 0.0, rmat ); } pal-0.3.0/palEl2ue.c000644 000161 000120 00000025156 12014745436 014200 0ustar00timjadmin000000 000000 /* *+ * Name: * palEl2ue * Purpose: * Transform conventional elements into "universal" form * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEl2ue ( double date, int jform, double epoch, double orbinc, * double anode, double perih, double aorq, double e, * double aorl, double dm, double u[13], int *jstat ); * Arguments: * date = double (Given) * Epoch (TT MJD) of osculation (Note 3) * jform = int (Given) * Element set actually returned (1-3; Note 6) * epoch = double (Given) * Epoch of elements (TT MJD) * orbinc = double (Given) * inclination (radians) * anode = double (Given) * longitude of the ascending node (radians) * perih = double (Given) * longitude or argument of perihelion (radians) * aorq = double (Given) * mean distance or perihelion distance (AU) * e = double (Given) * eccentricity * aorl = double (Given) * mean anomaly or longitude (radians, JFORM=1,2 only) * dm = double (Given) * daily motion (radians, JFORM=1 only) * u = double [13] (Returned) * Universal orbital elements (Note 1) * - (0) combined mass (M+m) * - (1) total energy of the orbit (alpha) * - (2) reference (osculating) epoch (t0) * - (3-5) position at reference epoch (r0) * - (6-8) velocity at reference epoch (v0) * - (9) heliocentric distance at reference epoch * - (10) r0.v0 * - (11) date (t) * - (12) universal eccentric anomaly (psi) of date, approx * jstat = int * (Returned) * status: 0 = OK * - -1 = illegal JFORM * - -2 = illegal E * - -3 = illegal AORQ * - -4 = illegal DM * - -5 = numerical error * Description: * Transform conventional osculating elements into "universal" form. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - The companion routine is palUe2pv. This takes the set of numbers * that the present routine outputs and uses them to derive the * object's position and velocity. A single prediction requires one * call to the present routine followed by one call to palUe2pv; * for convenience, the two calls are packaged as the routine * palPlanel. Multiple predictions may be made by again calling the * present routine once, but then calling palUe2pv multiple times, * which is faster than multiple calls to palPlanel. * - DATE is the epoch of osculation. It is in the TT timescale * (formerly Ephemeris Time, ET) and is a Modified Julian Date * (JD-2400000.5). * - The supplied orbital elements are with respect to the J2000 * ecliptic and equinox. The position and velocity parameters * returned in the array U are with respect to the mean equator and * equinox of epoch J2000, and are for the perihelion prior to the * specified epoch. * - The universal elements returned in the array U are in canonical * units (solar masses, AU and canonical days). * - Three different element-format options are available: * * Option JFORM=1, suitable for the major planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = longitude of perihelion, curly pi (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean longitude L (radians) * DM = daily motion (radians) * * Option JFORM=2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean anomaly M (radians) * * Option JFORM=3, suitable for comets: * * EPOCH = epoch of perihelion (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e (range 0 to 10) * * - Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are * not accessed. * - The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996). The method is based * on Stumpff's Universal Variables. * * See Also: * Everhart & Pitkin, Am.J.Phys. 51, 712 (1983). * History: * 2012-03-12 (TIMJ): * Initial version taken directly from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palEl2ue ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double u[13], int *jstat ) { /* Sin and cos of J2000 mean obliquity (IAU 1976) */ const double SE=0.3977771559319137; const double CE=0.9174820620691818; int J; double PHT,ARGPH,Q,W,CM,ALPHA,PHS,SW,CW,SI,CI,SO,CO, X,Y,Z,PX,PY,PZ,VX,VY,VZ,DT,FC,FP,PSI, UL[13],PV[6]; /* Validate arguments. */ if (jform < 1 || jform > 3) { *jstat = -1; return; } if (e < 0.0 || e > 10.0 || (e >= 1.0 && jform != 3)) { *jstat = -2; return; } if (aorq <= 0.0) { *jstat = -3; return; } if (jform == 1 && dm <= 0.0) { *jstat = -4; return; } /* * Transform elements into standard form: * * PHT = epoch of perihelion passage * ARGPH = argument of perihelion (little omega) * Q = perihelion distance (q) * CM = combined mass, M+m (mu) */ if (jform == 1) { /* Major planet. */ PHT = epoch-(aorl-perih)/dm; ARGPH = perih-anode; Q = aorq*(1.0-e); W = dm/PAL__GCON; CM = W*W*aorq*aorq*aorq; } else if (jform == 2) { /* Minor planet. */ PHT = epoch-aorl*sqrt(aorq*aorq*aorq)/PAL__GCON; ARGPH = perih; Q = aorq*(1.0-e); CM = 1.0; } else { /* Comet. */ PHT = epoch; ARGPH = perih; Q = aorq; CM = 1.0; } /* The universal variable alpha. This is proportional to the total * energy of the orbit: -ve for an ellipse, zero for a parabola, * +ve for a hyperbola. */ ALPHA = CM*(e-1.0)/Q; /* Speed at perihelion. */ PHS = sqrt(ALPHA+2.0*CM/Q); /* In a Cartesian coordinate system which has the x-axis pointing * to perihelion and the z-axis normal to the orbit (such that the * object orbits counter-clockwise as seen from +ve z), the * perihelion position and velocity vectors are: * * position [Q,0,0] * velocity [0,PHS,0] * * To express the results in J2000 equatorial coordinates we make a * series of four rotations of the Cartesian axes: * * axis Euler angle * * 1 z argument of perihelion (little omega) * 2 x inclination (i) * 3 z longitude of the ascending node (big omega) * 4 x J2000 obliquity (epsilon) * * In each case the rotation is clockwise as seen from the +ve end of * the axis concerned. */ /* Functions of the Euler angles. */ SW = sin(ARGPH); CW = cos(ARGPH); SI = sin(orbinc); CI = cos(orbinc); SO = sin(anode); CO = cos(anode); /* Position at perihelion (AU). */ X = Q*CW; Y = Q*SW; Z = Y*SI; Y = Y*CI; PX = X*CO-Y*SO; Y = X*SO+Y*CO; PY = Y*CE-Z*SE; PZ = Y*SE+Z*CE; /* Velocity at perihelion (AU per canonical day). */ X = -PHS*SW; Y = PHS*CW; Z = Y*SI; Y = Y*CI; VX = X*CO-Y*SO; Y = X*SO+Y*CO; VY = Y*CE-Z*SE; VZ = Y*SE+Z*CE; /* Time from perihelion to date (in Canonical Days: a canonical day * is 58.1324409... days, defined as 1/PAL__GCON). */ DT = (date-PHT)*PAL__GCON; /* First approximation to the Universal Eccentric Anomaly, PSI, * based on the circle (FC) and parabola (FP) values. */ FC = DT/Q; W = pow(3.0*DT+sqrt(9.0*DT*DT+8.0*Q*Q*Q), 1.0/3.0); FP = W-2.0*Q/W; PSI = (1.0-e)*FC+e*FP; /* Assemble local copy of element set. */ UL[0] = CM; UL[1] = ALPHA; UL[2] = PHT; UL[3] = PX; UL[4] = PY; UL[5] = PZ; UL[6] = VX; UL[7] = VY; UL[8] = VZ; UL[9] = Q; UL[10] = 0.0; UL[11] = date; UL[12] = PSI; /* Predict position+velocity at epoch of osculation. */ palUe2pv( date, UL, PV, &J ); if (J != 0) { *jstat = -5; return; } /* Convert back to universal elements. */ palPv2ue( PV, date, CM-1.0, u, &J ); if (J != 0) { *jstat = -5; return; } /* OK exit. */ *jstat = 0; } pal-0.3.0/palEpco.c000644 000161 000120 00000005176 12014745436 014112 0ustar00timjadmin000000 000000 /* *+ * Name: * palEpco * Purpose: * Convert an epoch into the appropriate form - 'B' or 'J' * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palEpco( char k0, char k, double e ); * Arguments: * k0 = char (Given) * Form of result: 'B'=Besselian, 'J'=Julian * k = char (Given) * Form of given epoch: 'B' or 'J'. * Description: * Converts a Besselian or Julian epoch to a Julian or Besselian * epoch. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The result is always either equal to or very close to * the given epoch E. The routine is required only in * applications where punctilious treatment of heterogeneous * mixtures of star positions is necessary. * - k and k0 are case insensitive. This differes slightly from the * Fortran SLA implementation. * - k and k0 are not validated. They are interpreted as follows: * o If k0 and k are the same the result is e * o If k0 is 'b' or 'B' and k isn't the conversion is J to B. * o In all other cases, the conversion is B to J. * History: * 2012-03-01 (TIMJ): * Initial version. Documentation from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" #include double palEpco( char k0, char k, double e ) { double new_epoch = 0.0; double djm; double djm0; /* Use upper case */ k0 = toupper( k0 ); k = toupper( k ); if (k == k0) { new_epoch = e; } else if (k0 == 'B') { iauEpj2jd( e, &djm0, &djm ); new_epoch = iauEpb( djm0, djm ); } else { iauEpb2jd( e, &djm0, &djm ); new_epoch = iauEpj( djm0, djm ); } return new_epoch; } pal-0.3.0/palEpv.c000644 000161 000120 00000004655 12014745436 013757 0ustar00timjadmin000000 000000 /* *+ * Name: * palEpv * Purpose: * Earth position and velocity with respect to the BCRS * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEpv( double date, double ph[3], double vh[3], * double pb[3], double vb[3] ); * Arguments: * date = double (Given) * Date, TDB Modified Julian Date (JD-2400000.5) * ph = double [3] (Returned) * Heliocentric Earth position (AU) * vh = double [3] (Returned) * Heliocentric Earth velocity (AU/day) * pb = double [3] (Returned) * Barycentric Earth position (AU) * vb = double [3] (Returned) * Barycentric Earth velocity (AU/day) * Description: * Earth position and velocity, heliocentric and barycentric, with * respect to the Barycentric Celestial Reference System. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - See iauEpv00 for details on accuracy * - Note that the status argument from iauEpv00 is ignored * History: * 2012-03-12 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "palmac.h" #include "pal.h" #include "sofa.h" void palEpv( double date, double ph[3], double vh[3], double pb[3], double vb[3] ) { int i; double pvh[2][3]; double pvb[2][3]; iauEpv00( PAL__MJD0, date, pvh, pvb ); /* Copy into output arrays */ for (i=0; i<3; i++) { ph[i] = pvh[0][i]; vh[i] = pvh[1][i]; pb[i] = pvb[0][i]; vb[i] = pvb[1][i]; } } pal-0.3.0/palEqecl.c000644 000161 000120 00000004715 12014745436 014253 0ustar00timjadmin000000 000000 /* *+ * Name: * palEqecl * Purpose: * Transform from J2000.0 equatorial coordinates to ecliptic coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEqecl( double dr, double dd, double date, * double *dl, double *db); * Arguments: * dr = double (Given) * J2000.0 mean RA (radians) * dd = double (Given) * J2000.0 mean Dec (Radians) * date = double (Given) * TT as Modified Julian Date (JD-2400000.5). The difference * between TT and TDB is of the order of a millisecond or two * (i.e. about 0.02 arc-seconds). * dl = double * (Returned) * Ecliptic longitude (mean of date, IAU 1980 theory, radians) * db = double * (Returned) * Ecliptic latitude (mean of date, IAU 1980 theory, radians) * Description: * Transform from J2000.0 equatorial coordinates to ecliptic coordinates. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-03-02 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palEqecl ( double dr, double dd, double date, double *dl, double *db ) { double v1[3], v2[3]; double rmat[3][3]; /* Spherical to Cartesian */ iauS2c( dr, dd, v1 ); /* Mean J2000 to mean of date */ palPrec( 2000.0, palEpj(date), rmat ); iauRxp( rmat, v1, v2 ); /* Equatorial to ecliptic */ palEcmat( date, rmat ); iauRxp( rmat, v2, v1 ); /* Cartesian to spherical */ iauC2s( v1, dl, db ); } pal-0.3.0/palEqgal.c000644 000161 000120 00000006034 12014745436 014247 0ustar00timjadmin000000 000000 /* *+ * Name: * palEqgal * Purpose: * Convert from J2000.0 equatorial coordinates to Galactic * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEqgal ( double dr, double dd, double *dl, double *db ); * Arguments: * dr = double (Given) * J2000.0 RA (radians) * dd = double (Given) * J2000.0 Dec (radians * dl = double * (Returned) * Galactic longitude (radians). * db = double * (Returned) * Galactic latitude (radians). * Description: * Transformation from J2000.0 equatorial coordinates * to IAU 1958 galactic coordinates. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * The equatorial coordinates are J2000.0. Use the routine * palGe50 if conversion to B1950.0 'FK4' coordinates is * required. * See Also: * Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palEqgal ( double dr, double dd, double *dl, double *db ) { double v1[3]; double v2[3]; /* * L2,B2 system of galactic coordinates * * P = 192.25 RA of galactic north pole (mean B1950.0) * Q = 62.6 inclination of galactic to mean B1950.0 equator * R = 33 longitude of ascending node * * P,Q,R are degrees * * Equatorial to galactic rotation matrix (J2000.0), obtained by * applying the standard FK4 to FK5 transformation, for zero proper * motion in FK5, to the columns of the B1950 equatorial to * galactic rotation matrix: */ double rmat[3][3] = { { -0.054875539726,-0.873437108010,-0.483834985808 }, { +0.494109453312,-0.444829589425,+0.746982251810 }, { -0.867666135858,-0.198076386122,+0.455983795705 } }; /* Spherical to Cartesian */ iauS2c( dr, dd, v1 ); /* Equatorial to Galactic */ iauRxp( rmat, v1, v2 ); /* Cartesian to spherical */ iauC2s( v2, dl, db ); /* Express in conventional ranges */ *dl = iauAnp( *dl ); *db = iauAnpm( *db ); } pal-0.3.0/palEtrms.c000644 000161 000120 00000005322 12014745436 014307 0ustar00timjadmin000000 000000 /* *+ * Name: * palEtrms * Purpose: * Compute the E-terms vector * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEtrms ( double ep, double ev[3] ); * Arguments: * ep = double (Given) * Besselian epoch * ev = double [3] (Returned) * E-terms as (dx,dy,dz) * Description: * Computes the E-terms (elliptic component of annual aberration) * vector. * * Note the use of the J2000 aberration constant (20.49552 arcsec). * This is a reflection of the fact that the E-terms embodied in * existing star catalogues were computed from a variety of * aberration constants. Rather than adopting one of the old * constants the latest value is used here. * * See also: * - Smith, C.A. et al., 1989. Astr.J. 97, 265. * - Yallop, B.D. et al., 1989. Astr.J. 97, 274. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-12 (TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" void palEtrms ( double ep, double ev[3] ) { /* Use the J2000 aberration constant */ const double ABCONST = 20.49552; double t, e, e0, p, ek, cp; /* Julian centuries since B1950 */ t = (ep - 1950.) * .0100002135903; /* Eccentricity */ e = .01673011 - (t * 1.26e-7 + 4.193e-5) * t; /* Mean obliquity */ e0 = (84404.836 - ((t * .00181 + .00319) * t + 46.8495) * t) * PAL__DAS2R; /* Mean longitude of perihelion */ p = (((t * .012 + 1.65) * t + 6190.67) * t + 1015489.951) * PAL__DAS2R; /* E-terms */ ek = e * ABCONST * PAL__DAS2R; cp = cos(p); ev[0] = ek * sin(p); ev[1] = -ek * cp * cos(e0); ev[2] = -ek * cp * sin(e0); } pal-0.3.0/palEvp.c000644 000161 000120 00000006065 12014745436 013754 0ustar00timjadmin000000 000000 /* *+ * Name: * palEvp * Purpose: * Returns the barycentric and heliocentric velocity and position of the * Earth. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palEvp( double date, double deqx, double dvb[3], double dpb[3], * double dvh[3], double dph[3] ) * Arguments: * date = double (Given) * TDB (loosely ET) as a Modified Julian Date (JD-2400000.5) * deqx = double (Given) * Julian epoch (e.g. 2000.0) of mean equator and equinox of the * vectors returned. If deqx <= 0.0, all vectors are referred to the * mean equator and equinox (FK5) of epoch date. * dvb = double[3] (Returned) * Barycentric velocity (AU/s, AU) * dpb = double[3] (Returned) * Barycentric position (AU/s, AU) * dvh = double[3] (Returned) * heliocentric velocity (AU/s, AU) * dph = double[3] (Returned) * Heliocentric position (AU/s, AU) * Description: * Returns the barycentric and heliocentric velocity and position of the * Earth at a given epoch, given with respect to a specified equinox. * For information about accuracy, see the function iauEpv00. * Authors: * PTW: Pat Wallace (STFC) * {enter_new_authors_here} * History: * 2012-02-13 (PTW): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palEvp( double date, double deqx, double dvb[3], double dpb[3], double dvh[3], double dph[3] ){ /* Local Variables; */ int i; double pvh[2][3], pvb[2][3], d1, d2, r[3][3]; /* BCRS PV-vectors. */ iauEpv00 ( 2400000.5, date, pvh, pvb ); /* Was precession to another equinox requested? */ if ( deqx > 0.0 ) { /* Yes: compute precession matrix from J2000.0 to deqx. */ iauEpj2jd ( deqx, &d1, &d2 ); iauPmat06 ( d1, d2, r ); /* Rotate the PV-vectors. */ iauRxpv ( r, pvh, pvh ); iauRxpv ( r, pvb, pvb ); } /* Return the required vectors. */ for ( i = 0; i < 3; i++ ) { dvh[i] = pvh[1][i] / PAL__SPD; dvb[i] = pvb[1][i] / PAL__SPD; dph[i] = pvh[0][i]; dpb[i] = pvb[0][i]; } } pal-0.3.0/palFk45z.c000644 000161 000120 00000014241 12014745436 014120 0ustar00timjadmin000000 000000 /* *+ * Name: * palFk45z * Purpose: * Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero * proper motion in the FK5 frame * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palFk45z( double r1950, double d1950, double bepoch, double *r2000, * double *d2000 ) * Arguments: * r1950 = double (Given) * B1950.0 FK4 RA at epoch (radians). * d1950 = double (Given) * B1950.0 FK4 Dec at epoch (radians). * bepoch = double (Given) * Besselian epoch (e.g. 1979.3) * r2000 = double (Returned) * J2000.0 FK5 RA (Radians). * d2000 = double (Returned) * J2000.0 FK5 Dec(Radians). * Description: * Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero * proper motion in the FK5 frame (double precision) * * This function converts stars from the Bessel-Newcomb, FK4 * system to the IAU 1976, FK5, Fricke system, in such a * way that the FK5 proper motion is zero. Because such a star * has, in general, a non-zero proper motion in the FK4 system, * the routine requires the epoch at which the position in the * FK4 system was determined. * * The method is from Appendix 2 of Ref 1, but using the constants * of Ref 4. * Notes: * - The epoch BEPOCH is strictly speaking Besselian, but if a * Julian epoch is supplied the result will be affected only to * a negligible extent. * * - Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0 * only is provided for. Conversions involving other epochs will * require use of the appropriate precession, proper motion, and * E-terms routines before and/or after palFk45z is called. * * - In the FK4 catalogue the proper motions of stars within 10 * degrees of the poles do not embody the differential E-term effect * and should, strictly speaking, be handled in a different manner * from stars outside these regions. However, given the general lack * of homogeneity of the star data available for routine astrometry, * the difficulties of handling positions that may have been * determined from astrometric fields spanning the polar and non-polar * regions, the likelihood that the differential E-terms effect was not * taken into account when allowing for proper motion in past * astrometry, and the undesirability of a discontinuity in the * algorithm, the decision has been made in this routine to include the * effect of differential E-terms on the proper motions for all stars, * whether polar or not. At epoch 2000, and measuring on the sky rather * than in terms of dRA, the errors resulting from this simplification * are less than 1 milliarcsecond in position and 1 milliarcsecond per * century in proper motion. * * References: * - Aoki,S., et al, 1983. Astron.Astrophys., 128, 263. * - Smith, C.A. et al, 1989. "The transformation of astrometric * catalog systems to the equinox J2000.0". Astron.J. 97, 265. * - Yallop, B.D. et al, 1989. "Transformation of mean star places * from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". * Astron.J. 97, 274. * - Seidelmann, P.K. (ed), 1992. "Explanatory Supplement to * the Astronomical Almanac", ISBN 0-935702-68-7. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-10 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palFk45z( double r1950, double d1950, double bepoch, double *r2000, double *d2000 ){ /* Local Variables: */ double w; int i; int j; double r0[3], a1[3], v1[3], v2[6]; /* Position and position+velocity vectors */ /* CANONICAL CONSTANTS (see references) */ /* Vector A. */ double a[3] = { -1.62557E-6, -0.31919E-6, -0.13843E-6 }; /* Vectors Adot. */ double ad[3] = { 1.245E-3, -1.580E-3, -0.659E-3 }; /* Matrix M (only half of which is needed here). */ double em[6][3] = { {0.9999256782, -0.0111820611, -0.0048579477}, {0.0111820610, 0.9999374784, -0.0000271765}, {0.0048579479, -0.0000271474, 0.9999881997}, {-0.000551, -0.238565, 0.435739}, {0.238514, -0.002667, -0.008541}, {-0.435623, 0.012254, 0.002117} }; /* Spherical to Cartesian. */ iauS2c( r1950, d1950, r0 ); /* Adjust vector A to give zero proper motion in FK5. */ w = ( bepoch - 1950.0 )/PAL__PMF; for( i = 0; i < 3; i++ ) { a1[ i ] = a[ i ] + w*ad[ i ]; } /* Remove e-terms. */ w = r0[ 0 ]*a1[ 0 ] + r0[ 1 ]*a1[ 1 ] + r0[ 2 ]*a1[ 2 ]; for( i = 0; i < 3; i++ ) { v1[ i ] = r0[ i ] - a1[ i ] + w*r0[ i ]; } /* Convert position vector to Fricke system. */ for( i = 0; i < 6; i++ ) { w = 0.0; for( j = 0; j < 3; j++ ) { w += em[ i ][ j ]*v1[ j ]; } v2[ i ] = w; } /* Allow for fictitious proper motion in FK4. */ w = ( palEpj( palEpb2d( bepoch ) ) - 2000.0 )/PAL__PMF; for( i = 0; i < 3; i++ ) { v2[ i ] += w*v2[ i + 3 ]; } /* Revert to spherical coordinates. */ iauC2s( v2, &w, d2000 ); *r2000 = iauAnp( w ); } pal-0.3.0/palFk524.c000644 000161 000120 00000020703 12014745436 014010 0ustar00timjadmin000000 000000 /* *+ * Name: * palFk524 * Purpose: * Convert J2000.0 FK5 star data to B1950.0 FK4. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palFk524( double r2000, double d2000, double dr2000, double dd2000, * double p2000, double v2000, double *r1950, double *d1950, * double *dr1950, double *dd1950, double *p1950, double *v1950 ) * Arguments: * r2000 = double (Given) * J2000.0 FK5 RA (radians). * d2000 = double (Given) * J2000.0 FK5 Dec (radians). * dr2000 = double (Given) * J2000.0 FK5 RA proper motion (rad/Jul.yr) * dd2000 = double (Given) * J2000.0 FK5 Dec proper motion (rad/Jul.yr) * p2000 = double (Given) * J2000.0 FK5 parallax (arcsec) * v2000 = double (Given) * J2000.0 FK5 radial velocity (km/s, +ve = moving away) * r1950 = double * (Returned) * B1950.0 FK4 RA (radians). * d1950 = double * (Returned) * B1950.0 FK4 Dec (radians). * dr1950 = double * (Returned) * B1950.0 FK4 RA proper motion (rad/Jul.yr) * dd1950 = double * (Returned) * B1950.0 FK4 Dec proper motion (rad/Jul.yr) * p1950 = double * (Returned) * B1950.0 FK4 parallax (arcsec) * v1950 = double * (Returned) * B1950.0 FK4 radial velocity (km/s, +ve = moving away) * Description: * This function converts stars from the IAU 1976, FK5, Fricke * system, to the Bessel-Newcomb, FK4 system. The precepts * of Smith et al (Ref 1) are followed, using the implementation * by Yallop et al (Ref 2) of a matrix method due to Standish. * Kinoshita's development of Andoyer's post-Newcomb precession is * used. The numerical constants from Seidelmann et al (Ref 3) are * used canonically. * Notes: * - The proper motions in RA are dRA/dt rather than * cos(Dec)*dRA/dt, and are per year rather than per century. * - Note that conversion from Julian epoch 2000.0 to Besselian * epoch 1950.0 only is provided for. Conversions involving * other epochs will require use of the appropriate precession, * proper motion, and E-terms routines before and/or after * FK524 is called. * - In the FK4 catalogue the proper motions of stars within * 10 degrees of the poles do not embody the differential * E-term effect and should, strictly speaking, be handled * in a different manner from stars outside these regions. * However, given the general lack of homogeneity of the star * data available for routine astrometry, the difficulties of * handling positions that may have been determined from * astrometric fields spanning the polar and non-polar regions, * the likelihood that the differential E-terms effect was not * taken into account when allowing for proper motion in past * astrometry, and the undesirability of a discontinuity in * the algorithm, the decision has been made in this routine to * include the effect of differential E-terms on the proper * motions for all stars, whether polar or not. At epoch 2000, * and measuring on the sky rather than in terms of dRA, the * errors resulting from this simplification are less than * 1 milliarcsecond in position and 1 milliarcsecond per * century in proper motion. * * References: * - Smith, C.A. et al, 1989. "The transformation of astrometric * catalog systems to the equinox J2000.0". Astron.J. 97, 265. * - Yallop, B.D. et al, 1989. "Transformation of mean star places * from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". * Astron.J. 97, 274. * - Seidelmann, P.K. (ed), 1992. "Explanatory Supplement to * the Astronomical Almanac", ISBN 0-935702-68-7. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-13 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "math.h" void palFk524( double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double *r1950, double *d1950, double *dr1950, double *dd1950, double *p1950, double *v1950 ){ /* Local Variables; */ double r, d, ur, ud, px, rv; double sr, cr, sd, cd, x, y, z, w; double v1[ 6 ], v2[ 6 ]; double xd, yd, zd; double rxyz, wd, rxysq, rxy; int i, j; /* Small number to avoid arithmetic problems. */ static const double tiny = 1.0-30; /* Canonical constants (see references). Constant vector and matrix. */ double a[ 6 ] = { -1.62557E-6, -0.31919E-6, -0.13843E-6, +1.245E-3, -1.580E-3, -0.659E-3 }; double emi[ 6 ][ 6 ] = { { 0.9999256795, 0.0111814828, 0.0048590039, -0.00000242389840, -0.00000002710544, -0.00000001177742}, {-0.0111814828, 0.9999374849, -0.0000271771, 0.00000002710544, -0.00000242392702, 0.00000000006585 }, {-0.0048590040, -0.0000271557, 0.9999881946, 0.00000001177742, 0.00000000006585, -0.00000242404995 }, {-0.000551, 0.238509, -0.435614, 0.99990432, 0.01118145, 0.00485852 }, {-0.238560, -0.002667, 0.012254, -0.01118145, 0.99991613, -0.00002717}, { 0.435730, -0.008541, 0.002117, -0.00485852, -0.00002716, 0.99996684 } }; /* Pick up J2000 data (units radians and arcsec/JC). */ r = r2000; d = d2000; ur = dr2000*PAL__PMF; ud = dd2000*PAL__PMF; px = p2000; rv = v2000; /* Spherical to Cartesian. */ sr = sin( r ); cr = cos( r ); sd = sin( d ); cd = cos( d ); x = cr*cd; y = sr*cd; z = sd; w = PAL__VF*rv*px; v1[ 0 ] = x; v1[ 1 ] = y; v1[ 2 ] = z; v1[ 3 ] = -ur*y - cr*sd*ud + w*x; v1[ 4 ] = ur*x - sr*sd*ud + w*y; v1[ 5 ] = cd*ud + w*z; /* Convert position+velocity vector to BN system. */ for( i = 0; i < 6; i++ ) { w = 0.0; for( j = 0; j < 6; j++ ) { w += emi[ i ][ j ]*v1[ j ]; } v2[ i ] = w; } /* Position vector components and magnitude. */ x = v2[ 0 ]; y = v2[ 1 ]; z = v2[ 2 ]; rxyz = sqrt( x*x + y*y + z*z ); /* Apply E-terms to position. */ w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ]; x += a[ 0 ]*rxyz - w*x; y += a[ 1 ]*rxyz - w*y; z += a[ 2 ]*rxyz - w*z; /* Recompute magnitude. */ rxyz = sqrt( x*x + y*y + z*z ); /* Apply E-terms to both position and velocity. */ x = v2[ 0 ]; y = v2[ 1 ]; z = v2[ 2 ]; w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ]; wd = x*a[ 3 ] + y*a[ 4 ] + z*a[ 5 ]; x += a[ 0 ]*rxyz - w*x; y += a[ 1 ]*rxyz - w*y; z += a[ 2 ]*rxyz - w*z; xd = v2[ 3 ] + a[ 3 ]*rxyz - wd*x; yd = v2[ 4 ] + a[ 4 ]*rxyz - wd*y; zd = v2[ 5 ] + a[ 5 ]*rxyz - wd*z; /* Convert to spherical. */ rxysq = x*x + y*y; rxy = sqrt( rxysq ); if( x == 0.0 && y == 0.0 ) { r = 0.0; } else { r = atan2( y, x ); if( r < 0.0 ) r += PAL__D2PI; } d = atan2( z, rxy ); if( rxy > tiny ) { ur = ( x*yd - y*xd )/rxysq; ud = ( zd*rxysq - z*( x*xd + y*yd ) )/( ( rxysq + z*z )*rxy ); } /* Radial velocity and parallax. */ if( px > tiny ) { rv = ( x*xd + y*yd + z*zd )/( px*PAL__VF*rxyz ); px /= rxyz; } /* Return results. */ *r1950 = r; *d1950 = d; *dr1950 = ur/PAL__PMF; *dd1950 = ud/PAL__PMF; *p1950 = px; *v1950 = rv; } pal-0.3.0/palFk54z.c000644 000161 000120 00000007162 12014745436 014124 0ustar00timjadmin000000 000000 /* *+ * Name: * palFk54z * Purpose: * Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming * zero proper motion and parallax. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palFk54z( double r2000, double d2000, double bepoch, double *r1950, * double *d1950, double *dr1950, double *dd1950 ) * Arguments: * r2000 = double (Given) * J2000.0 FK5 RA (radians). * d2000 = double (Given) * J2000.0 FK5 Dec (radians). * bepoch = double (Given) * Besselian epoch (e.g. 1950.0). * r1950 = double * (Returned) * B1950 FK4 RA (radians) at epoch "bepoch". * d1950 = double * (Returned) * B1950 FK4 Dec (radians) at epoch "bepoch". * dr1950 = double * (Returned) * B1950 FK4 proper motion (RA) (radians/trop.yr)). * dr1950 = double * (Returned) * B1950 FK4 proper motion (Dec) (radians/trop.yr)). * Description: * This function converts star positions from the IAU 1976, * FK5, Fricke system to the Bessel-Newcomb, FK4 system. * Notes: * - The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. * - Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 * only is provided for. Conversions involving other epochs will * require use of the appropriate precession functions before and * after this function is called. * - The FK5 proper motions, the parallax and the radial velocity * are presumed zero. * - It is the intention that FK5 should be a close approximation * to an inertial frame, so that distant objects have zero proper * motion; such objects have (in general) non-zero proper motion * in FK4, and this function returns those fictitious proper * motions. * - The position returned by this function is in the B1950 * reference frame but at Besselian epoch BEPOCH. For comparison * with catalogues the "bepoch" argument will frequently be 1950.0. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-13 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palFk54z( double r2000, double d2000, double bepoch, double *r1950, double *d1950, double *dr1950, double *dd1950 ){ /* Local Variables: */ double r, d, px, rv, y; /* FK5 equinox J2000 (any epoch) to FK4 equinox B1950 epoch B1950. */ palFk524( r2000, d2000, 0.0, 0.0, 0.0, 0.0, &r, &d, dr1950, dd1950, &px, &rv ); /* Fictitious proper motion to epoch "bepoch". */ y = bepoch - 1950.0; *r1950 = r + *dr1950*y; *d1950 = d + *dd1950*y; } pal-0.3.0/palGaleq.c000644 000161 000120 00000006036 12014745436 014251 0ustar00timjadmin000000 000000 /* *+ * Name: * palGaleq * Purpose: * Convert from galactic to J2000.0 equatorial coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palGaleq ( double dl, double db, double *dr, double *dd ); * Arguments: * dl = double (Given) * Galactic longitude (radians). * db = double (Given) * Galactic latitude (radians). * dr = double * (Returned) * J2000.0 RA (radians) * dd = double * (Returned) * J2000.0 Dec (radians) * Description: * Transformation from IAU 1958 galactic coordinates to * J2000.0 equatorial coordinates. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * The equatorial coordinates are J2000.0. Use the routine * palGe50 if conversion to B1950.0 'FK4' coordinates is * required. * See Also: * Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palGaleq ( double dl, double db, double *dr, double *dd ) { double v1[3]; double v2[3]; /* * L2,B2 system of galactic coordinates * * P = 192.25 RA of galactic north pole (mean B1950.0) * Q = 62.6 inclination of galactic to mean B1950.0 equator * R = 33 longitude of ascending node * * P,Q,R are degrees * * Equatorial to galactic rotation matrix (J2000.0), obtained by * applying the standard FK4 to FK5 transformation, for zero proper * motion in FK5, to the columns of the B1950 equatorial to * galactic rotation matrix: */ double rmat[3][3] = { { -0.054875539726,-0.873437108010,-0.483834985808 }, { +0.494109453312,-0.444829589425,+0.746982251810 }, { -0.867666135858,-0.198076386122,+0.455983795705 } }; /* Spherical to Cartesian */ iauS2c( dl, db, v1 ); /* Galactic to equatorial */ iauTrxp( rmat, v1, v2 ); /* Cartesian to spherical */ iauC2s( v2, dr, dd ); /* Express in conventional ranges */ *dr = iauAnp( *dr ); *dd = iauAnpm( *dd ); } pal-0.3.0/palGalsup.c000644 000161 000120 00000006007 12014745436 014451 0ustar00timjadmin000000 000000 /* *+ * Name: * palGalsup * Purpose: * Convert from galactic to supergalactic coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palGalsup ( double dl, double db, double *dsl, double *dsb ); * Arguments: * dl = double (Given) * Galactic longitude. * db = double (Given) * Galactic latitude. * dsl = double * (Returned) * Supergalactic longitude. * dsb = double * (Returned) * Supergalactic latitude. * Description: * Transformation from IAU 1958 galactic coordinates to * de Vaucouleurs supergalactic coordinates. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * See Also: * - de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference * Catalogue of Bright Galaxies, U. Texas, page 8. * - Systems & Applied Sciences Corp., Documentation for the * machine-readable version of the above catalogue, * Contract NAS 5-26490. * * (These two references give different values for the galactic * longitude of the supergalactic origin. Both are wrong; the * correct value is L2=137.37.) * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palGalsup ( double dl, double db, double *dsl, double *dsb ) { double v1[3]; double v2[3]; /* * System of supergalactic coordinates: * * SGL SGB L2 B2 (deg) * - +90 47.37 +6.32 * 0 0 - 0 * * Galactic to supergalactic rotation matrix: */ double rmat[3][3] = { { -0.735742574804,+0.677261296414,+0.000000000000 }, { -0.074553778365,-0.080991471307,+0.993922590400 }, { +0.673145302109,+0.731271165817,+0.110081262225 } }; /* Spherical to Cartesian */ iauS2c( dl, db, v1 ); /* Galactic to Supergalactic */ iauRxp( rmat, v1, v2 ); /* Cartesian to spherical */ iauC2s( v2, dsl, dsb ); /* Express in conventional ranges */ *dsl = iauAnp( *dsl ); *dsb = iauAnpm( *dsb ); } pal-0.3.0/palGe50.c000644 000161 000120 00000006144 12014745436 013720 0ustar00timjadmin000000 000000 /* *+ * Name: * palGe50 * Purpose: * Transform Galactic Coordinate to B1950 FK4 * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palGe50( double dl, double db, double *dr, double *dd ); * Arguments: * dl = double (Given) * Galactic longitude (radians) * db = double (Given) * Galactic latitude (radians) * dr = double * (Returned) * B9150.0 FK4 RA. * dd = double * (Returned) * B1950.0 FK4 Dec. * Description: * Transformation from IAU 1958 galactic coordinates to * B1950.0 'FK4' equatorial coordinates. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The equatorial coordinates are B1950.0 'FK4'. Use the routine * palGaleq if conversion to J2000.0 coordinates is required. * See Also: * - Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) * History: * 2012-03-23 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palGe50 ( double dl, double db, double * dr, double * dd ) { /* * L2,B2 system of galactic coordinates * * P = 192.25 RA of galactic north pole (mean B1950.0) * Q = 62.6 inclination of galactic to mean B1950.0 equator * R = 33 longitude of ascending node * * P,Q,R are degrees * * * Equatorial to galactic rotation matrix * * The Euler angles are P, Q, 90-R, about the z then y then * z axes. * * +CP.CQ.SR-SP.CR +SP.CQ.SR+CP.CR -SQ.SR * * -CP.CQ.CR-SP.SR -SP.CQ.CR+CP.SR +SQ.CR * * +CP.SQ +SP.SQ +CQ * */ double rmat[3][3] = { { -0.066988739415,-0.872755765852,-0.483538914632 }, { +0.492728466075,-0.450346958020,+0.744584633283 }, { -0.867600811151,-0.188374601723,+0.460199784784 } }; double v1[3], v2[3], r, d, re, de; /* Spherical to cartesian */ iauS2c( dl, db, v1 ); /* Rotate to mean B1950.0 */ iauTrxp( rmat, v1, v2 ); /* Cartesian to spherical */ iauC2s( v2, &r, &d ); /* Introduce E-terms */ palAddet( r, d, 1950.0, &re, &de ); /* Express in conventional ranges */ *dr = iauAnp( re ); *dd = iauAnpm( de ); } pal-0.3.0/palGeoc.c000644 000161 000120 00000004236 12016764101 014065 0ustar00timjadmin000000 000000 /* *+ * Name: * palGeoc * Purpose: * Convert geodetic position to geocentric * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palGeoc( double p, double h, double * r, double *z ); * Arguments: * p = double (Given) * latitude (radians) * h = double (Given) * height above reference spheroid (geodetic, metres) * r = double * (Returned) * distance from Earth axis (AU) * z = double * (Returned) * distance from plane of Earth equator (AU) * Description: * Convert geodetic position to geocentric. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Geocentric latitude can be obtained by evaluating atan2(z,r) * - Uses WGS84 reference ellipsoid and calls iauGd2gc * History: * 2012-03-01 (TIMJ): * Initial version moved from palOne2One * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palGeoc ( double p, double h, double *r, double *z ) { double xyz[3]; const double elong = 0.0; /* Use zero longitude */ const double AU = 1.49597870E11; /* WGS84 looks to be the closest match */ iauGd2gc( 1, elong, p, h, xyz ); *r = xyz[0] / (AU * cos(elong) ); *z = xyz[2] / AU; } pal-0.3.0/palIntin.c000644 000161 000120 00000011441 12014745436 014275 0ustar00timjadmin000000 000000 /* *+ * Name: * palIntin * Purpose: * Convert free-format input into an integer * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palIntin( const char * string, int *nstrt, * long *ireslt, int *jflag ); * Arguments: * string = const char * (Given) * String containing number to be decoded. * nstrt = int * (Given and Returned) * Character number indicating where decoding should start. * On output its value is updated to be the location of the * possible next value. For compatibility with SLA the first * character is index 1. * ireslt = long * (Returned) * Result. Not updated when jflag=1. * jflag = int * (Returned) * status: -1 = -OK, 0 = +OK, 1 = null, 2 = error * Description: * Extracts a number from an input string starting at the specified * index. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Uses the strtol() system call to do the parsing. This may lead to * subtle differences when compared to the SLA/F parsing. * - Commas are recognized as a special case and are skipped if one happens * to be the next character when updating nstrt. Additionally the output * nstrt position will skip past any trailing space. * - If no number can be found flag will be set to 1. * - If the number overflows or underflows jflag will be set to 2. For overflow * the returned result will have the value LONG_MAX, for underflow it * will have the value LONG_MIN. * History: * 2012-03-15 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ /* Shenanigans for isblank() which is C99 only */ #define _POSIX_C_SOURCE 200112L #define _ISOC99_SOURCE #include #include #include #include "pal.h" void palIntin( const char * string, int *nstrt, long *ireslt, int *jflag ) { const char *strstart = NULL; /* Pointer to start of search */ const char * ctemp = NULL; /* Pointer into string */ char * endptr = NULL;/* Pointer to string after number */ int retval; /* Return value from strtol */ int hasminus; /* is this a -0 */ /* strtol man page indicates that we should reset errno before calling strtod */ errno = 0; /* Locate the start postion */ strstart = &(string[*nstrt-1]); /* We have to be able to deal with -0 so we have to search the string first and look for the negative */ hasminus = 0; ctemp = strstart; while ( ctemp != '\0' ) { if (isdigit(*ctemp)) break; /* Reset so that - 12345 is not a negative number */ hasminus = 0; /* Flag that we have found a minus */ if (*ctemp == '-') hasminus = 1; ctemp++; } /* Look for the number using the system call, offsetting using 1-based counter. */ retval = strtol( strstart, &endptr, 10 ); if (retval == 0.0 && endptr == strstart) { /* conversion did not find anything */ *jflag = 1; /* but SLA compatibility requires that we step through to remove leading spaces. We also step through alphabetic characters since they can never be numbers. Skip past a "+" since it doesn't gain us anything and matches slalib. */ while (isblank(*endptr) || isalpha(*endptr) || *endptr == '+' ) { endptr++; } } else if ( errno == ERANGE ) { *jflag = 2; } else { if ( retval < 0 || hasminus ) { *jflag = -1; } else { *jflag = 0; } } /* Sort out the position for the next index */ *nstrt = endptr - string + 1; /* Skip a comma */ if (*endptr == ',') { (*nstrt)++; } else { /* jump past any leading spaces for the next part of the string */ ctemp = endptr; while ( isblank(*ctemp) ) { (*nstrt)++; ctemp++; } } /* And the result unless we found nothing */ if (*jflag != 1) *ireslt = retval; } pal-0.3.0/palmac.h000644 000161 000120 00000007445 12016056245 013765 0ustar00timjadmin000000 000000 #ifndef PALMACDEF #define PALMACDEF /* *+ * Name: * palmac.h * Purpose: * Macros used by the PAL library * Language: * Starlink ANSI C * Type of Module: * Include file * Description: * A collection of useful macros provided and used by the PAL library * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * Notes: * * History: * 2012-02-08 (TIMJ): * Initial version. * 2012-04-13 (DSB): * Added PAL__DR2H and PAL__DR2S * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ /* Pi */ static const double PAL__DPI = 3.1415926535897932384626433832795028841971693993751; /* 2Pi */ static const double PAL__D2PI = 6.2831853071795864769252867665590057683943387987502; /* pi/180: degrees to radians */ static const double PAL__DD2R = 0.017453292519943295769236907684886127134428718885417; /* Radians to arcseconds */ static const double PAL__DR2AS = 2.0626480624709635515647335733077861319665970087963e5; /* Arcseconds to radians */ static const double PAL__DAS2R = 4.8481368110953599358991410235794797595635330237270e-6; /* Radians to degrees */ static const double PAL__DR2D = 57.295779513082320876798154814105170332405472466564; /* Radians to hours */ static const double PAL__DR2H = 3.8197186342054880584532103209403446888270314977709; /* Radians to seconds of time */ static const double PAL__DR2S = 1.3750987083139757010431557155385240879777313391975e4; /* Seconds of time to radians */ static const double PAL__DS2R = 7.272205216643039903848712e-5; /* Start of SLA modified Julian date epoch */ static const double PAL__MJD0 = 2400000.5; /* Light time for 1 AU (sec) */ static const double PAL__CR = 499.004782; /* Seconds per day */ static const double PAL__SPD = 86400.0; /* Km per sec to AU per tropical century = 86400 * 36524.2198782 / 149597870 */ static const double PAL__VF = 21.095; /* Radians per year to arcsec per century. This needs to be a macro since it is an expression including other constants. */ #define PAL__PMF (100.0*60.0*60.0*360.0/PAL__D2PI); /* Mean sidereal rate - the rotational angular velocity of Earth in radians/sec from IERS Conventions (2003). */ static const double PAL__SR = 7.2921150e-5; /* Gaussian gravitational constant (exact) */ static const double PAL__GCON = 0.01720209895; /* DNINT(A) - round to nearest whole number (double) */ #define DNINT(A) ((A)<0.0?ceil((A)-0.5):floor((A)+0.5)) /* DMAX(A,B) - return maximum value - evaluates arguments multiple times */ #define DMAX(A,B) ((A) > (B) ? (A) : (B) ) /* DMIN(A,B) - return minimum value - evaluates arguments multiple times */ #define DMIN(A,B) ((A) < (B) ? (A) : (B) ) /* We actually prefer to use C99 copysign() but we define this here as a backup but it will not detect -0.0 so is not useful for palDfltin. */ /* DSIGN(A,B) - magnitude of A with sign of B (double) */ #define DSIGN(A,B) ((B)<0.0?-fabs(A):fabs(A)) #endif pal-0.3.0/palMap.c000644 000161 000120 00000005240 12014745436 013731 0ustar00timjadmin000000 000000 /* *+ * Name: * palMap * Purpose: * Convert star RA,Dec from mean place to geocentric apparent * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palMap( double rm, double dm, double pr, double pd, * double px, double rv, double eq, double date, * double *ra, double *da ); * Arguments: * rm = double (Given) * Mean RA (radians) * dm = double (Given) * Mean declination (radians) * pr = double (Given) * RA proper motion, changes per Julian year (radians) * pd = double (Given) * Dec proper motion, changes per Julian year (radians) * px = double (Given) * Parallax (arcsec) * rv = double (Given) * Radial velocity (km/s, +ve if receding) * eq = double (Given) * Epoch and equinox of star data (Julian) * date = double (Given) * TDB for apparent place (JD-2400000.5) * ra = double * (Returned) * Apparent RA (radians) * dec = double * (Returned) * Apparent dec (radians) * Description: * Convert star RA,Dec from mean place to geocentric apparent. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Calls palMappa and palMapqk * - The reference systems and timescales used are IAU 2006. * History: * 2012-03-01 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palMap( double rm, double dm, double pr, double pd, double px, double rv, double eq, double date, double *ra, double *da ) { double amprms[21]; /* Star independent parameters */ palMappa( eq, date, amprms ); /* Mean to apparent */ palMapqk( rm, dm, pr, pd, px, rv, amprms, ra, da ); } pal-0.3.0/palMappa.c000644 000161 000120 00000007460 12014745436 014260 0ustar00timjadmin000000 000000 /* *+ * Name: * palMappa * Purpose: * Compute parameters needed by palAmpqk and palMapqk. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palMappa( double eq, double date, double amprms[21] ) * Arguments: * eq = double (Given) * epoch of mean equinox to be used (Julian) * date = double (Given) * TDB (JD-2400000.5) * amprms = double[21] (Returned) * star-independent mean-to-apparent parameters: * - (0) time interval for proper motion (Julian years) * - (1-3) barycentric position of the Earth (AU) * - (4-6) heliocentric direction of the Earth (unit vector) * - (7) (grav rad Sun)*2/(Sun-Earth distance) * - (8-10) abv: barycentric Earth velocity in units of c * - (11) sqrt(1-v**2) where v=modulus(abv) * - (12-20) precession/nutation (3,3) matrix * Description: * Compute star-independent parameters in preparation for * transformations between mean place and geocentric apparent place. * * The parameters produced by this function are required in the * parallax, aberration, and nutation/bias/precession parts of the * mean/apparent transformations. * * The reference systems and timescales used are IAU 2006. * Notes: * - For date, the distinction between the required TDB and TT * is always negligible. Moreover, for all but the most * critical applications UTC is adequate. * - The vector amprms(1-3) is referred to the mean equinox and * equator of epoch eq. * - The parameters amprms produced by this function are used by * palAmpqk, palMapqk and palMapqkz. * Authors: * PTW: Pat Wallace (STFC) * {enter_new_authors_here} * History: * 2012-02-13 (PTW): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" #include void palMappa( double eq, double date, double amprms[21] ){ /* Local constants */ /* Gravitational radius of the Sun x 2 (2*mu/c**2, AU) */ const double GR2 = 2.0 * 9.87063e-9; /* Local Variables; */ int i; double ebd[ 3 ], ehd[ 3 ], eh[ 3 ], e, vn[ 3 ], vm; /* Initialise so that unsused values are returned holding zero */ memset( amprms, 0, 21*sizeof( *amprms ) ); /* Time interval for proper motion correction. */ amprms[ 0 ] = iauEpj( PAL__MJD0, date ) - eq; /* Get Earth barycentric and heliocentric position and velocity. */ palEvp( date, eq, ebd, &rms[ 1 ], ehd, eh ); /* Heliocentric direction of Earth (normalized) and modulus. */ iauPn( eh, &e, &rms[ 4 ] ); /* Light deflection parameter */ amprms[7] = GR2 / e; /* Aberration parameters. */ for( i = 0; i < 3; i++ ) { amprms[ i + 8 ] = ebd[ i ]*PAL__CR; } iauPn( &rms[8], &vm, vn ); amprms[ 11 ] = sqrt( 1.0 - vm*vm ); /* NPB matrix. */ palPrenut( eq, date, (double(*)[ 3 ]) &rms[ 12 ] ); } pal-0.3.0/palMapqk.c000644 000161 000120 00000010715 12014745436 014270 0ustar00timjadmin000000 000000 /* *+ * Name: * palMapqk * Purpose: * Quick mean to apparent place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palMapqk ( double rm, double dm, double pr, double pd, * double px, double rv, double amprms[21], * double *ra, double *da ); * Arguments: * rm = double (Given) * Mean RA (radians) * dm = double (Given) * Mean declination (radians) * pr = double (Given) * RA proper motion, changes per Julian year (radians) * pd = double (Given) * Dec proper motion, changes per Julian year (radians) * px = double (Given) * Parallax (arcsec) * rv = double (Given) * Radial velocity (km/s, +ve if receding) * amprms = double [21] (Given) * Star-independent mean-to-apparent parameters (see palMappa). * ra = double * (Returned) * Apparent RA (radians) * dec = double * (Returned) * Apparent dec (radians) * Description: * Quick mean to apparent place: transform a star RA,Dec from * mean place to geocentric apparent place, given the * star-independent parameters. * * Use of this routine is appropriate when efficiency is important * and where many star positions, all referred to the same equator * and equinox, are to be transformed for one epoch. The * star-independent parameters can be obtained by calling the * palMappa routine. * * If the parallax and proper motions are zero the palMapqkz * routine can be used instead. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The reference frames and timescales used are post IAU 2006. * History: * 2012-03-01 (TIMJ): * Initial version with documentation from SLA/F * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palMapqk ( double rm, double dm, double pr, double pd, double px, double rv, double amprms[21], double *ra, double *da ) { /* local constants */ const double VF = 0.21094502; /* Km/s to AU/year */ /* Local Variables: */ int i; double ab1, abv[3], p[3], w, p1dv, p2[3], p3[3]; double pmt, gr2e, eb[3], q[3], pxr, em[3]; double pde, pdep1, p1[3], ehn[3], pn[3]; /* Unpack scalar and vector parameters. */ pmt = amprms[0]; gr2e = amprms[7]; ab1 = amprms[11]; for( i = 0; i < 3; i++ ) { eb[i] = amprms[i+1]; ehn[i] = amprms[i+4]; abv[i] = amprms[i+8]; } /* Spherical to x,y,z. */ iauS2c( rm, dm, q); /* Space motion (radians per year) */ pxr = px * PAL__DAS2R; w = VF * rv * pxr; em[0] = -pr * q[1] - pd * cos(rm) * sin(dm) + w * q[0]; em[1] = pr * q[0] - pd * sin(rm) * sin(dm) + w * q[1]; em[2] = pd * cos(dm) + w * q[2]; /* Geocentric direction of star (normalised) */ for( i = 0; i < 3; i++ ) { p[i] = q[i] + pmt * em[i] - pxr * eb[i]; } iauPn( p, &w, pn ); /* Light deflection (restrained within the Sun's disc) */ pde = iauPdp( pn, ehn ); pdep1 = pde + 1.0; w = gr2e / ( pdep1 > 1.0e-5 ? pdep1 : 1.0e-5 ); for( i = 0; i < 3; i++) { p1[i] = pn[i] + w * ( ehn[i] - pde * pn[i] ); } /* Aberration (normalisation omitted). */ p1dv = iauPdp( p, abv ); w = 1.0 + p1dv / ( ab1 + 1.0 ); for( i = 0; i < 3; i++ ) { p2[i] = ( ab1 * p1[i] ) + ( w * abv[i] ); } /* Precession and nutation. */ iauRxp( (double(*)[3]) &rms[12], p2, p3 ); /* Geocentric apparent RA,dec. */ iauC2s( p3, ra, da ); *ra = iauAnp( *ra ); } pal-0.3.0/palMapqkz.c000644 000161 000120 00000007115 12014745436 014462 0ustar00timjadmin000000 000000 /* *+ * Name: * palMapqkz * Purpose: * Quick mean to apparent place. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palMapqkz( double rm, double dm, double amprms[21], * double *ra, double *da ) * Arguments: * rm = double (Given) * Mean RA (radians). * dm = double (Given) * Mean Dec (radians). * amprms = double[21] (Given) * Star-independent mean-to-apparent parameters (see palMappa): * (0-3) not used * (4-6) not used * (7) not used * (8-10) abv: barycentric Earth velocity in units of c * (11) sqrt(1-v**2) where v=modulus(abv) * (12-20) precession/nutation (3,3) matrix * ra = double * (Returned) * Apparent RA (radians). * da = double * (Returned) * Apparent Dec (radians). * Description: * Quick mean to apparent place: transform a star RA,dec from * mean place to geocentric apparent place, given the * star-independent parameters, and assuming zero parallax * and proper motion. * * Use of this function is appropriate when efficiency is important * and where many star positions, all with parallax and proper * motion either zero or already allowed for, and all referred to * the same equator and equinox, are to be transformed for one * epoch. The star-independent parameters can be obtained by * calling the palMappa function. * * The corresponding function for the case of non-zero parallax * and proper motion is palMapqk. * * The reference systems and timescales used are IAU 2006. * * Strictly speaking, the function is not valid for solar-system * sources, though the error will usually be extremely small. * Authors: * PTW: Pat Wallace (STFC) * {enter_new_authors_here} * History: * 2012-02-13 (PTW): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palMapqkz ( double rm, double dm, double amprms[21], double *ra, double *da ){ /* Local Variables: */ int i; double ab1, abv[3], p[3], w, p1dv, p1dvp1, p2[3], p3[3]; /* Unpack scalar and vector parameters. */ ab1 = amprms[11]; for( i = 0; i < 3; i++ ) { abv[i] = amprms[i+8]; } /* Spherical to x,y,z. */ iauS2c( rm, dm, p ); /* Aberration. */ p1dv = iauPdp( p, abv ); p1dvp1 = p1dv + 1.0; w = 1.0 + p1dv / ( ab1 + 1.0 ); for( i = 0; i < 3; i++ ) { p2[i] = ( ( ab1 * p[i] ) + ( w * abv[i] ) ) / p1dvp1; } /* Precession and nutation. */ iauRxp( (double(*)[3]) &rms[12], p2, p3 ); /* Geocentric apparent RA,dec. */ iauC2s( p3, ra, da ); *ra = iauAnp( *ra ); } pal-0.3.0/palNut.c000644 000161 000120 00000004345 12014745436 013767 0ustar00timjadmin000000 000000 /* *+ * Name: * palNut * Purpose: * Form the matrix of nutation * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palNut( double date, double rmatn[3][3] ); * Arguments: * date = double (Given) * TT as modified Julian date (JD-2400000.5) * rmatn = double [3][3] (Returned) * Nutation matrix in the sense v(true)=rmatn * v(mean) * where v(true) is the star vector relative to the * true equator and equinox of date and v(mean) is the * star vector relative to the mean equator and equinox * of date. * Description: * Form the matrix of nutation for a given date using * the IAU 2006 nutation model and palDeuler. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Uses iauNut06a via palNutc * - The distinction between TDB and TT is negligible. For all but * the most critical applications UTC is adequate. * History: * 2012-03-07 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include void palNut( double date, double rmatn[3][3]) { double dpsi, deps, eps0; /* Nutation component and mean obliquity */ palNutc( date, &dpsi, &deps, &eps0 ); /* Rotation matrix */ palDeuler( "XZX", eps0, -dpsi, -(eps0+deps), rmatn ); } pal-0.3.0/palNutc.c000644 000161 000120 00000004220 12014745436 014122 0ustar00timjadmin000000 000000 /* *+ * Name: * palNutc * Purpose: * Calculate nutation longitude & obliquoty components * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palNutc( double date, double * dpsi, double *deps, double *eps0 ); * Arguments: * date = double (Given) * TT as modified Julian date (JD-2400000.5) * dpsi = double * (Returned) * Nutation in longitude * deps = double * (Returned) * Nutation in obliquity * eps0 = double * (Returned) * Mean obliquity. * Description: * Calculates the longitude * obliquity components and mean obliquity * using the SOFA library. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Calls iauObl06 and iauNut06a and therefore uses the IAU 206 * precession/nutation model. * - Note the change from SLA/F regarding the date. TT is used * rather than TDB. * History: * 2012-03-05 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palNutc( double date, double * dpsi, double *deps, double *eps0 ) { iauNut06a( PAL__MJD0, date, dpsi, deps ); *eps0 = iauObl06( PAL__MJD0, date ); } pal-0.3.0/palOap.c000644 000161 000120 00000023247 12017003161 013723 0ustar00timjadmin000000 000000 /* *+ * Name: * palOap * Purpose: * Observed to apparent place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palOap ( const char *type, double ob1, double ob2, double date, * double dut, double elongm, double phim, double hm, * double xp, double yp, double tdk, double pmb, * double rh, double wl, double tlr, * double *rap, double *dap ); * Arguments: * type = const char * (Given) * Type of coordinates - 'R', 'H' or 'A' (see below) * ob1 = double (Given) * Observed Az, HA or RA (radians; Az is N=0;E=90) * ob2 = double (Given) * Observed ZD or Dec (radians) * date = double (Given) * UTC date/time (Modified Julian Date, JD-2400000.5) * dut = double (Given) * delta UT: UT1-UTC (UTC seconds) * elongm = double (Given) * Mean longitude of the observer (radians, east +ve) * phim = double (Given) * Mean geodetic latitude of the observer (radians) * hm = double (Given) * Observer's height above sea level (metres) * xp = double (Given) * Polar motion x-coordinates (radians) * yp = double (Given) * Polar motion y-coordinates (radians) * tdk = double (Given) * Local ambient temperature (K; std=273.15) * pmb = double (Given) * Local atmospheric pressure (mb; std=1013.25) * rh = double (Given) * Local relative humidity (in the range 0.0-1.0) * wl = double (Given) * Effective wavelength (micron, e.g. 0.55) * tlr = double (Given) * Tropospheric laps rate (K/metre, e.g. 0.0065) * rap = double * (Given) * Geocentric apparent right ascension * dap = double * (Given) * Geocentric apparent declination * Description: * Observed to apparent place. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Only the first character of the TYPE argument is significant. * 'R' or 'r' indicates that OBS1 and OBS2 are the observed right * ascension and declination; 'H' or 'h' indicates that they are * hour angle (west +ve) and declination; anything else ('A' or * 'a' is recommended) indicates that OBS1 and OBS2 are azimuth * (north zero, east 90 deg) and zenith distance. (Zenith * distance is used rather than elevation in order to reflect the * fact that no allowance is made for depression of the horizon.) * * - The accuracy of the result is limited by the corrections for * refraction. Providing the meteorological parameters are * known accurately and there are no gross local effects, the * predicted apparent RA,Dec should be within about 0.1 arcsec * for a zenith distance of less than 70 degrees. Even at a * topocentric zenith distance of 90 degrees, the accuracy in * elevation should be better than 1 arcmin; useful results * are available for a further 3 degrees, beyond which the * palRefro routine returns a fixed value of the refraction. * The complementary routines palAop (or palAopqk) and palOap * (or palOapqk) are self-consistent to better than 1 micro- * arcsecond all over the celestial sphere. * * - It is advisable to take great care with units, as even * unlikely values of the input parameters are accepted and * processed in accordance with the models used. * * - "Observed" Az,El means the position that would be seen by a * perfect theodolite located at the observer. This is * related to the observed HA,Dec via the standard rotation, using * the geodetic latitude (corrected for polar motion), while the * observed HA and RA are related simply through the local * apparent ST. "Observed" RA,Dec or HA,Dec thus means the * position that would be seen by a perfect equatorial located * at the observer and with its polar axis aligned to the * Earth's axis of rotation (n.b. not to the refracted pole). * By removing from the observed place the effects of * atmospheric refraction and diurnal aberration, the * geocentric apparent RA,Dec is obtained. * * - Frequently, mean rather than apparent RA,Dec will be required, * in which case further transformations will be necessary. The * palAmp etc routines will convert the apparent RA,Dec produced * by the present routine into an "FK5" (J2000) mean place, by * allowing for the Sun's gravitational lens effect, annual * aberration, nutation and precession. Should "FK4" (1950) * coordinates be needed, the routines palFk524 etc will also * need to be applied. * * - To convert to apparent RA,Dec the coordinates read from a * real telescope, corrections would have to be applied for * encoder zero points, gear and encoder errors, tube flexure, * the position of the rotator axis and the pointing axis * relative to it, non-perpendicularity between the mounting * axes, and finally for the tilt of the azimuth or polar axis * of the mounting (with appropriate corrections for mount * flexures). Some telescopes would, of course, exhibit other * properties which would need to be accounted for at the * appropriate point in the sequence. * * - This routine takes time to execute, due mainly to the rigorous * integration used to evaluate the refraction. For processing * multiple stars for one location and time, call palAoppa once * followed by one call per star to palOapqk. Where a range of * times within a limited period of a few hours is involved, and the * highest precision is not required, call palAoppa once, followed * by a call to palAoppat each time the time changes, followed by * one call per star to palOapqk. * * - The DATE argument is UTC expressed as an MJD. This is, strictly * speaking, wrong, because of leap seconds. However, as long as * the delta UT and the UTC are consistent there are no * difficulties, except during a leap second. In this case, the * start of the 61st second of the final minute should begin a new * MJD day and the old pre-leap delta UT should continue to be used. * As the 61st second completes, the MJD should revert to the start * of the day as, simultaneously, the delta UTC changes by one * second to its post-leap new value. * * - The delta UT (UT1-UTC) is tabulated in IERS circulars and * elsewhere. It increases by exactly one second at the end of * each UTC leap second, introduced in order to keep delta UT * within +/- 0.9 seconds. * * - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION. * The longitude required by the present routine is east-positive, * in accordance with geographical convention (and right-handed). * In particular, note that the longitudes returned by the * palOBS routine are west-positive, following astronomical * usage, and must be reversed in sign before use in the present * routine. * * - The polar coordinates XP,YP can be obtained from IERS * circulars and equivalent publications. The maximum amplitude * is about 0.3 arcseconds. If XP,YP values are unavailable, * use XP=YP=0D0. See page B60 of the 1988 Astronomical Almanac * for a definition of the two angles. * * - The height above sea level of the observing station, HM, * can be obtained from the Astronomical Almanac (Section J * in the 1988 edition), or via the routine palOBS. If P, * the pressure in millibars, is available, an adequate * estimate of HM can be obtained from the expression * * HM ~ -29.3*TSL*LOG(P/1013.25). * * where TSL is the approximate sea-level air temperature in K * (see Astrophysical Quantities, C.W.Allen, 3rd edition, * section 52). Similarly, if the pressure P is not known, * it can be estimated from the height of the observing * station, HM, as follows: * * P ~ 1013.25*EXP(-HM/(29.3*TSL)). * * Note, however, that the refraction is nearly proportional to the * pressure and that an accurate P value is important for precise * work. * * - The azimuths etc. used by the present routine are with respect * to the celestial pole. Corrections from the terrestrial pole * can be computed using palPolmo. * History: * 2012-08-27 (TIMJ): * Initial version, copied from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palOap ( const char *type, double ob1, double ob2, double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double *rap, double *dap ) { double aoprms[14]; palAoppa(date,dut,elongm,phim,hm,xp,yp,tdk,pmb,rh,wl,tlr, aoprms); palOapqk(type,ob1,ob2,aoprms,rap,dap); } pal-0.3.0/palOapqk.c000644 000161 000120 00000020351 12017002525 014253 0ustar00timjadmin000000 000000 /* *+ * Name: * palOapqk * Purpose: * Quick observed to apparent place * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palOapqk ( const char *type, double ob1, double ob2, * const double aoprms[14], double *rap, double *dap ); * Arguments: * Quick observed to apparent place. * Description: * type = const char * (Given) * Type of coordinates - 'R', 'H' or 'A' (see below) * ob1 = double (Given) * Observed Az, HA or RA (radians; Az is N=0;E=90) * ob2 = double (Given) * Observed ZD or Dec (radians) * aoprms = const double [14] (Given) * Star-independent apparent-to-observed parameters. * See palAopqk for details. * rap = double * (Given) * Geocentric apparent right ascension * dap = double * (Given) * Geocentric apparent declination * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Only the first character of the TYPE argument is significant. * 'R' or 'r' indicates that OBS1 and OBS2 are the observed right * ascension and declination; 'H' or 'h' indicates that they are * hour angle (west +ve) and declination; anything else ('A' or * 'a' is recommended) indicates that OBS1 and OBS2 are azimuth * (north zero, east 90 deg) and zenith distance. (Zenith distance * is used rather than elevation in order to reflect the fact that * no allowance is made for depression of the horizon.) * * - The accuracy of the result is limited by the corrections for * refraction. Providing the meteorological parameters are * known accurately and there are no gross local effects, the * predicted apparent RA,Dec should be within about 0.1 arcsec * for a zenith distance of less than 70 degrees. Even at a * topocentric zenith distance of 90 degrees, the accuracy in * elevation should be better than 1 arcmin; useful results * are available for a further 3 degrees, beyond which the * palREFRO routine returns a fixed value of the refraction. * The complementary routines palAop (or palAopqk) and palOap * (or palOapqk) are self-consistent to better than 1 micro- * arcsecond all over the celestial sphere. * * - It is advisable to take great care with units, as even * unlikely values of the input parameters are accepted and * processed in accordance with the models used. * * - "Observed" Az,El means the position that would be seen by a * perfect theodolite located at the observer. This is * related to the observed HA,Dec via the standard rotation, using * the geodetic latitude (corrected for polar motion), while the * observed HA and RA are related simply through the local * apparent ST. "Observed" RA,Dec or HA,Dec thus means the * position that would be seen by a perfect equatorial located * at the observer and with its polar axis aligned to the * Earth's axis of rotation (n.b. not to the refracted pole). * By removing from the observed place the effects of * atmospheric refraction and diurnal aberration, the * geocentric apparent RA,Dec is obtained. * * - Frequently, mean rather than apparent RA,Dec will be required, * in which case further transformations will be necessary. The * palAmp etc routines will convert the apparent RA,Dec produced * by the present routine into an "FK5" (J2000) mean place, by * allowing for the Sun's gravitational lens effect, annual * aberration, nutation and precession. Should "FK4" (1950) * coordinates be needed, the routines palFk524 etc will also * need to be applied. * * - To convert to apparent RA,Dec the coordinates read from a * real telescope, corrections would have to be applied for * encoder zero points, gear and encoder errors, tube flexure, * the position of the rotator axis and the pointing axis * relative to it, non-perpendicularity between the mounting * axes, and finally for the tilt of the azimuth or polar axis * of the mounting (with appropriate corrections for mount * flexures). Some telescopes would, of course, exhibit other * properties which would need to be accounted for at the * appropriate point in the sequence. * * - The star-independent apparent-to-observed-place parameters * in AOPRMS may be computed by means of the palAoppa routine. * If nothing has changed significantly except the time, the * palAoppat routine may be used to perform the requisite * partial recomputation of AOPRMS. * * - The azimuths etc used by the present routine are with respect * to the celestial pole. Corrections from the terrestrial pole * can be computed using palPolmo. * History: * 2012-08-27 (TIMJ): * Initial version, direct copy of Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palOapqk ( const char *type, double ob1, double ob2, const double aoprms[14], double *rap, double *dap ) { /* breakpoint for fast/slow refraction algorithm: * zd greater than arctan(4), (see sla_refco routine) * or vector z less than cosine(arctan(z)) = 1/sqrt(17) */ const double zbreak = 0.242535625; char c; double c1,c2,sphi,cphi,st,ce,xaeo,yaeo,zaeo,v[3], xmhdo,ymhdo,zmhdo,az,sz,zdo,tz,dref,zdt, xaet,yaet,zaet,xmhda,ymhda,zmhda,diurab,f,hma; /* coordinate type */ c = type[0]; /* coordinates */ c1 = ob1; c2 = ob2; /* sin, cos of latitude */ sphi = aoprms[1]; cphi = aoprms[2]; /* local apparent sidereal time */ st = aoprms[13]; /* standardise coordinate type */ if (c == 'r' || c == 'R') { c = 'r'; } else if (c == 'h' || c == 'H') { c = 'h'; } else { c = 'a'; } /* if az,zd convert to cartesian (s=0,e=90) */ if (c == 'a') { ce = sin(c2); xaeo = -cos(c1)*ce; yaeo = sin(c1)*ce; zaeo = cos(c2); } else { /* if ra,dec convert to ha,dec */ if (c == 'r') { c1 = st-c1; } /* to cartesian -ha,dec */ palDcs2c( -c1, c2, v ); xmhdo = v[0]; ymhdo = v[1]; zmhdo = v[2]; /* to cartesian az,el (s=0,e=90) */ xaeo = sphi*xmhdo-cphi*zmhdo; yaeo = ymhdo; zaeo = cphi*xmhdo+sphi*zmhdo; } /* azimuth (s=0,e=90) */ if (xaeo != 0.0 || yaeo != 0.0) { az = atan2(yaeo,xaeo); } else { az = 0.0; } /* sine of observed zd, and observed zd */ sz = sqrt(xaeo*xaeo+yaeo*yaeo); zdo = atan2(sz,zaeo); /* * refraction * ---------- */ /* large zenith distance? */ if (zaeo >= zbreak) { /* fast algorithm using two constant model */ tz = sz/zaeo; dref = (aoprms[10]+aoprms[11]*tz*tz)*tz; } else { /* rigorous algorithm for large zd */ palRefro(zdo,aoprms[4],aoprms[5],aoprms[6],aoprms[7], aoprms[8],aoprms[0],aoprms[9],1e-8,&dref); } zdt = zdo+dref; /* to cartesian az,zd */ ce = sin(zdt); xaet = cos(az)*ce; yaet = sin(az)*ce; zaet = cos(zdt); /* cartesian az,zd to cartesian -ha,dec */ xmhda = sphi*xaet+cphi*zaet; ymhda = yaet; zmhda = -cphi*xaet+sphi*zaet; /* diurnal aberration */ diurab = -aoprms[3]; f = (1.0-diurab*ymhda); v[0] = f*xmhda; v[1] = f*(ymhda+diurab); v[2] = f*zmhda; /* to spherical -ha,dec */ palDcc2s(v,&hma,dap); /* Right Ascension */ *rap = palDranrm(st+hma); } pal-0.3.0/palObs.c000644 000161 000120 00000060310 12015255425 013731 0ustar00timjadmin000000 000000 /* *+ * Name: * palObs * Purpose: * Parameters of selected ground-based observing stations * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * int palObs( size_t n, const char * c, * char * ident, size_t identlen, * char * name, size_t namelen, * double * w, double * p, double * h ); * Arguments: * n = size_t (Given) * Number specifying the observing station. If 0 * the identifier in "c" is used to determine the * observing station to use. * c = const char * (Given) * Identifier specifying the observing station for * which the parameters should be returned. Only used * if n is 0. Can be NULL for n>0. Case insensitive. * ident = char * (Returned) * Identifier of the observing station selected. Will be * identical to "c" if n==0. Unchanged if "n" or "c" * do not match an observing station. Should be at least * 11 characters (including the trailing nul). * identlen = size_t (Given) * Size of the buffer "ident" including trailing nul. * name = char * (Returned) * Full name of the specified observing station. Contains "?" * if "n" or "c" did not correspond to a valid station. Should * be at least 41 characters (including the trailing nul). * w = double * (Returned) * Longitude (radians, West +ve). Unchanged if observing * station could not be identified. * p = double * (Returned) * Geodetic latitude (radians, North +ve). Unchanged if observing * station could not be identified. * h = double * (Returned) * Height above sea level (metres). Unchanged if observing * station could not be identified. * Returned Value: * palObs = int * 0 if an observing station was returned. -1 if no match was * found. * Description: * Station numbers, identifiers, names and other details are * subject to change and should not be hardwired into * application programs. * * All characters in "c" up to the first space are * checked; thus an abbreviated ID will return the parameters * for the first station in the list which matches the * abbreviation supplied, and no station in the list will ever * contain embedded spaces. "c" must not have leading spaces. * * IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION. The * longitude returned by sla_OBS is west-positive in accordance * with astronomical usage. However, this sign convention is * left-handed and is the opposite of the one used by geographers; * elsewhere in PAL the preferable east-positive convention is * used. In particular, note that for use in palAop, palAoppa * and palOap the sign of the longitude must be reversed. * * Users are urged to inform the author of any improvements * they would like to see made. For example: * * typographical corrections * more accurate parameters * better station identifiers or names * additional stations * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Differs from the SLA interface in that the output short name * is not the same variable as the input short name. This simplifies * consting. Additionally the size of the output buffers are now * specified in the API and a status integer is returned. * History: * 2012-03-06 (TIMJ): * Initial version containing entries from SLA/F as of 15 March 2002 * with a 2008 tweak to the JCMT GPS position. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #if HAVE_CONFIG_H # include #endif #include /* We prefer to use the starutil package. */ #if HAVE_STAR_UTIL_H #include "star/util.h" #else /* This version is just a straight copy without putting ellipsis on the end. */ static void star__strellcpy( char * dest, const char * src, size_t size ) { # if HAVE_STRLCPY strlcpy( dest, src, size ); # else strncpy( dest, src, size ); dest[size-1] = '\0'; # endif } #define star_strellcpy(dest, src, size) star__strellcpy(dest, src, size) #endif #include "pal.h" #include "palmac.h" /* Helper macros to convert degrees to radians in longitude and latitude */ #define WEST(ID,IAM,AS) PAL__DAS2R*((60.0*(60.0*(double)ID+(double)IAM))+(double)AS) #define NORTH(ID,IAM,AS) WEST(ID,IAM,AS) #define EAST(ID,IAM,AS) -1.0*WEST(ID,IAM,AS) #define SOUTH(ID,IAM,AS) -1.0*WEST(ID,IAM,AS) struct telData { double w; double p; double h; char shortname[11]; char longname[41]; }; int palObs( size_t n, const char * c, char * ident, size_t identlen, char * name, size_t namelen, double * w, double * p, double * h ) { const struct telData telData[] = { /* AAT (Observer's Guide) AAT */ { EAST(149,3,57.91), SOUTH(31,16,37.34), 1164E0, "AAT", "Anglo-Australian 3.9m Telescope" }, /* WHT (Gemini, April 1987) LPO4.2 */ { WEST(17,52,53.9), NORTH(28,45,38.1), 2332E0, "LPO4.2", "William Herschel 4.2m Telescope" }, /* INT (Gemini, April 1987) LPO2.5 */ { WEST(17,52,39.5), NORTH(28,45,43.2), 2336E0, "LPO2.5", "Isaac Newton 2.5m Telescope" }, /* JKT (Gemini, April 1987) LPO1 */ { WEST(17,52,41.2), NORTH(28,45,39.9), 2364E0, "LPO1", "Jacobus Kapteyn 1m Telescope" }, /* Lick 120" (S.L.Allen, private communication, 2002) LICK120 */ { WEST(121,38,13.689), NORTH(37,20,34.931), 1286E0, "LICK120", "Lick 120 inch" }, /* MMT 6.5m conversion (MMT Observatory website) MMT */ { WEST(110,53,4.4), NORTH(31,41,19.6), 2608E0, "MMT", "MMT 6.5m, Mt Hopkins" }, /* Victoria B.C. 1.85m (1984 Almanac) DAO72 */ { WEST(123,25,1.18), NORTH(48,31,11.9), 238E0, "DAO72", "DAO Victoria BC 1.85 metre" }, /* Las Campanas (1983 Almanac) DUPONT */ { WEST(70,42,9.), SOUTH(29,0,11.), 2280E0, "DUPONT", "Du Pont 2.5m Telescope, Las Campanas" }, /* Mt Hopkins 1.5m (1983 Almanac) MTHOP1.5 */ { WEST(110,52,39.00), NORTH(31,40,51.4), 2344E0, "MTHOP1.5", "Mt Hopkins 1.5 metre" }, /* Mt Stromlo 74" (1983 Almanac) STROMLO74 */ { EAST(149,0,27.59), SOUTH(35,19,14.3), 767E0, "STROMLO74", "Mount Stromlo 74 inch" }, /* ANU 2.3m, SSO (Gary Hovey) ANU2.3 */ { EAST(149,3,40.3), SOUTH(31,16,24.1), 1149E0, "ANU2.3", "Siding Spring 2.3 metre" }, /* Greenbank 140' (1983 Almanac) GBVA140 */ { WEST(79,50,9.61), NORTH(38,26,15.4), 881E0, "GBVA140", "Greenbank 140 foot" }, /* Cerro Tololo 4m (1982 Almanac) TOLOLO4M */ { WEST(70,48,53.6), SOUTH(30,9,57.8), 2235E0, "TOLOLO4M", "Cerro Tololo 4 metre" }, /* Cerro Tololo 1.5m (1982 Almanac) TOLOLO1.5M */ { WEST(70,48,54.5), SOUTH(30,9,56.3), 2225E0, "TOLOLO1.5M", "Cerro Tololo 1.5 metre" }, /* Tidbinbilla 64m (1982 Almanac) TIDBINBLA */ { EAST(148,58,48.20), SOUTH(35,24,14.3), 670E0, "TIDBINBLA", "Tidbinbilla 64 metre" }, /* Bloemfontein 1.52m (1981 Almanac) BLOEMF */ { EAST(26,24,18.), SOUTH(29,2,18.), 1387E0, "BLOEMF", "Bloemfontein 1.52 metre" }, /* Bosque Alegre 1.54m (1981 Almanac) BOSQALEGRE */ { WEST(64,32,48.0), SOUTH(31,35,53.), 1250E0, "BOSQALEGRE", "Bosque Alegre 1.54 metre" }, /* USNO 61" astrographic reflector, Flagstaff (1981 Almanac) FLAGSTF61 */ { WEST(111,44,23.6), NORTH(35,11,2.5), 2316E0, "FLAGSTF61", "USNO 61 inch astrograph, Flagstaff" }, /* Lowell 72" (1981 Almanac) LOWELL72 */ { WEST(111,32,9.3), NORTH(35,5,48.6), 2198E0, "LOWELL72", "Perkins 72 inch, Lowell" }, /* Harvard 1.55m (1981 Almanac) HARVARD */ { WEST(71,33,29.32), NORTH(42,30,19.0), 185E0, "HARVARD", "Harvard College Observatory 1.55m" }, /* Okayama 1.88m (1981 Almanac) OKAYAMA */ { EAST(133,35,47.29), NORTH(34,34,26.1), 372E0, "OKAYAMA", "Okayama 1.88 metre" }, /* Kitt Peak Mayall 4m (1981 Almanac) KPNO158 */ { WEST(111,35,57.61), NORTH(31,57,50.3), 2120E0, "KPNO158", "Kitt Peak 158 inch" }, /* Kitt Peak 90 inch (1981 Almanac) KPNO90 */ { WEST(111,35,58.24), NORTH(31,57,46.9), 2071E0, "KPNO90", "Kitt Peak 90 inch" }, /* Kitt Peak 84 inch (1981 Almanac) KPNO84 */ { WEST(111,35,51.56), NORTH(31,57,29.2), 2096E0, "KPNO84", "Kitt Peak 84 inch" }, /* Kitt Peak 36 foot (1981 Almanac) KPNO36FT */ { WEST(111,36,51.12), NORTH(31,57,12.1), 1939E0, "KPNO36FT", "Kitt Peak 36 foot" }, /* Kottamia 74" (1981 Almanac) KOTTAMIA */ { EAST(31,49,30.), NORTH(29,55,54.), 476E0, "KOTTAMIA", "Kottamia 74 inch" }, /* La Silla 3.6m (1981 Almanac) ESO3.6 */ { WEST(70,43,36.), SOUTH(29,15,36.), 2428E0, "ESO3.6", "ESO 3.6 metre" }, /* Mauna Kea 88 inch MAUNAK88 */ /* (IfA website, Richard Wainscoat) */ { WEST(155,28,9.96), NORTH(19,49,22.77), 4213.6E0, "MAUNAK88", "Mauna Kea 88 inch" }, /* UKIRT (IfA website, Richard Wainscoat) UKIRT */ { WEST(155,28,13.18), NORTH(19,49,20.75), 4198.5E0, "UKIRT", "UK Infra Red Telescope" }, /* Quebec 1.6m (1981 Almanac) QUEBEC1.6 */ { WEST(71,9,9.7), NORTH(45,27,20.6), 1114E0, "QUEBEC1.6", "Quebec 1.6 metre" }, /* Mt Ekar 1.82m (1981 Almanac) MTEKAR */ { EAST(11,34,15.), NORTH(45,50,48.), 1365E0, "MTEKAR", "Mt Ekar 1.82 metre" }, /* Mt Lemmon 60" (1981 Almanac) MTLEMMON60 */ { WEST(110,42,16.9), NORTH(32,26,33.9), 2790E0, "MTLEMMON60", "Mt Lemmon 60 inch" }, /* Mt Locke 2.7m (1981 Almanac) MCDONLD2.7 */ { WEST(104,1,17.60), NORTH(30,40,17.7), 2075E0, "MCDONLD2.7", "McDonald 2.7 metre" }, /* Mt Locke 2.1m (1981 Almanac) MCDONLD2.1 */ { WEST(104,1,20.10), NORTH(30,40,17.7), 2075E0, "MCDONLD2.1", "McDonald 2.1 metre" }, /* Palomar 200" (1981 Almanac) PALOMAR200 */ { WEST(116,51,50.), NORTH(33,21,22.), 1706E0, "PALOMAR200", "Palomar 200 inch" }, /* Palomar 60" (1981 Almanac) PALOMAR60 */ { WEST(116,51,31.), NORTH(33,20,56.), 1706E0, "PALOMAR60", "Palomar 60 inch" }, /* David Dunlap 74" (1981 Almanac) DUNLAP74 */ { WEST(79,25,20.), NORTH(43,51,46.), 244E0, "DUNLAP74", "David Dunlap 74 inch" }, /* Haute Provence 1.93m (1981 Almanac) HPROV1.93 */ { EAST(5,42,46.75), NORTH(43,55,53.3), 665E0, "HPROV1.93", "Haute Provence 1.93 metre" }, /* Haute Provence 1.52m (1981 Almanac) HPROV1.52 */ { EAST(5,42,43.82), NORTH(43,56,0.2), 667E0, "HPROV1.52", "Haute Provence 1.52 metre" }, /* San Pedro Martir 83" (1981 Almanac) SANPM83 */ { WEST(115,27,47.), NORTH(31,2,38.), 2830E0, "SANPM83", "San Pedro Martir 83 inch" }, /* Sutherland 74" (1981 Almanac) SAAO74 */ { EAST(20,48,44.3), SOUTH(32,22,43.4), 1771E0, "SAAO74", "Sutherland 74 inch" }, /* Tautenburg 2m (1981 Almanac) TAUTNBG */ { EAST(11,42,45.), NORTH(50,58,51.), 331E0, "TAUTNBG", "Tautenburg 2 metre" }, /* Catalina 61" (1981 Almanac) CATALINA61 */ { WEST(110,43,55.1), NORTH(32,25,0.7), 2510E0, "CATALINA61", "Catalina 61 inch" }, /* Steward 90" (1981 Almanac) STEWARD90 */ { WEST(111,35,58.24), NORTH(31,57,46.9), 2071E0, "STEWARD90", "Steward 90 inch" }, /* Russian 6m (1981 Almanac) USSR6 */ { EAST(41,26,30.0), NORTH(43,39,12.), 2100E0, "USSR6", "USSR 6 metre" }, /* Arecibo 1000' (1981 Almanac) ARECIBO */ { WEST(66,45,11.1), NORTH(18,20,36.6), 496E0, "ARECIBO", "Arecibo 1000 foot" }, /* Cambridge 5km (1981 Almanac) CAMB5KM */ { EAST(0,2,37.23), NORTH(52,10,12.2), 17E0, "CAMB5KM", "Cambridge 5km" }, /* Cambridge 1 mile (1981 Almanac) CAMB1MILE */ { EAST(0,2,21.64), NORTH(52,9,47.3), 17E0, "CAMB1MILE", "Cambridge 1 mile" }, /* Bonn 100m (1981 Almanac) EFFELSBERG */ { EAST(6,53,1.5), NORTH(50,31,28.6), 366E0, "EFFELSBERG", "Effelsberg 100 metre" }, /* Greenbank 300' (1981 Almanac) GBVA300 (R.I.P.) */ { WEST(79,50,56.36), NORTH(38,25,46.3), 894E0, "(R.I.P.)", "Greenbank 300 foot" }, /* Jodrell Bank Mk 1 (1981 Almanac) JODRELL1 */ { WEST(2,18,25.), NORTH(53,14,10.5), 78E0, "JODRELL1", "Jodrell Bank 250 foot" }, /* Australia Telescope Parkes Observatory PARKES */ /* (Peter te Lintel Hekkert) */ { EAST(148,15,44.3591), SOUTH(32,59,59.8657), 391.79E0, "PARKES", "Parkes 64 metre" }, /* VLA (1981 Almanac) VLA */ { WEST(107,37,3.82), NORTH(34,4,43.5), 2124E0, "VLA", "Very Large Array" }, /* Sugar Grove 150' (1981 Almanac) SUGARGROVE */ { WEST(79,16,23.), NORTH(38,31,14.), 705E0, "SUGARGROVE", "Sugar Grove 150 foot" }, /* Russian 600' (1981 Almanac) USSR600 */ { EAST(41,35,25.5), NORTH(43,49,32.), 973E0, "USSR600", "USSR 600 foot" }, /* Nobeyama 45 metre mm dish (based on 1981 Almanac entry) NOBEYAMA */ { EAST(138,29,12.), NORTH(35,56,19.), 1350E0, "NOBEYAMA", "Nobeyama 45 metre" }, /* James Clerk Maxwell 15 metre mm telescope, Mauna Kea JCMT */ /* From GPS measurements on 11Apr2007 for eSMA setup (R. Tilanus) */ { WEST(155,28,37.30), NORTH(19,49,22.22), 4124.75E0, "JCMT", "JCMT 15 metre" }, /* ESO 3.5 metre NTT, La Silla (K.Wirenstrand) ESONTT */ { WEST(70,43,7.), SOUTH(29,15,30.), 2377E0, "ESONTT", "ESO 3.5 metre NTT" }, /* St Andrews University Observatory (1982 Almanac) ST.ANDREWS */ { WEST(2,48,52.5), NORTH(56,20,12.), 30E0, "ST.ANDREWS", "St Andrews" }, /* Apache Point 3.5 metre (R.Owen) APO3.5 */ { WEST(105,49,11.56), NORTH(32,46,48.96), 2809E0, "APO3.5", "Apache Point 3.5m" }, /* W.M.Keck Observatory, Telescope 1 KECK1 */ /* (William Lupton) */ { WEST(155,28,28.99), NORTH(19,49,33.41), 4160E0, "KECK1", "Keck 10m Telescope #1" }, /* Tautenberg Schmidt (1983 Almanac) TAUTSCHM */ { EAST(11,42,45.0), NORTH(50,58,51.0), 331E0, "TAUTSCHM", "Tautenberg 1.34 metre Schmidt" }, /* Palomar Schmidt (1981 Almanac) PALOMAR48 */ { WEST(116,51,32.0), NORTH(33,21,26.0), 1706E0, "PALOMAR48", "Palomar 48-inch Schmidt" }, /* UK Schmidt, Siding Spring (1983 Almanac) UKST */ { EAST(149,4,12.8), SOUTH(31,16,27.8), 1145E0, "UKST", "UK 1.2 metre Schmidt, Siding Spring" }, /* Kiso Schmidt, Japan (1981 Almanac) KISO */ { EAST(137,37,42.2), NORTH(35,47,38.7), 1130E0, "KISO", "Kiso 1.05 metre Schmidt, Japan" }, /* ESO Schmidt, La Silla (1981 Almanac) ESOSCHM */ { WEST(70,43,46.5), SOUTH(29,15,25.8), 2347E0, "ESOSCHM", "ESO 1 metre Schmidt, La Silla" }, /* Australia Telescope Compact Array ATCA */ /* (WGS84 coordinates of Station 35, Mark Calabretta) */ { EAST(149,33,0.500), SOUTH(30,18,46.385), 236.9E0, "ATCA", "Australia Telescope Compact Array" }, /* Australia Telescope Mopra Observatory MOPRA */ /* (Peter te Lintel Hekkert) */ { EAST(149,5,58.732), SOUTH(31,16,4.451), 850E0, "MOPRA", "ATNF Mopra Observatory" }, /* Subaru telescope, Mauna Kea SUBARU */ /* (IfA website, Richard Wainscoat) */ { WEST(155,28,33.67), NORTH(19,49,31.81), 4163E0, "SUBARU", "Subaru 8m telescope" }, /* Canada-France-Hawaii Telescope, Mauna Kea CFHT */ /* (IfA website, Richard Wainscoat) */ { WEST(155,28,7.95), NORTH(19,49,30.91), 4204.1E0, "CFHT", "Canada-France-Hawaii 3.6m Telescope" }, /* W.M.Keck Observatory, Telescope 2 KECK2 */ /* (William Lupton) */ { WEST(155,28,27.24), NORTH(19,49,35.62), 4159.6E0, "KECK2", "Keck 10m Telescope #2" }, /* Gemini North, Mauna Kea GEMININ */ /* (IfA website, Richard Wainscoat) */ { WEST(155,28,8.57), NORTH(19,49,25.69), 4213.4E0, "GEMININ", "Gemini North 8-m telescope" }, /* Five College Radio Astronomy Observatory FCRAO */ /* (Tim Jenness) */ { WEST(72,20,42.0), NORTH(42,23,30.0), 314E0, "FCRAO", "Five College Radio Astronomy Obs" }, /* NASA Infra Red Telescope Facility IRTF */ /* (IfA website, Richard Wainscoat) */ { WEST(155,28,19.20), NORTH(19,49,34.39), 4168.1E0, "IRTF", "NASA IR Telescope Facility, Mauna Kea" }, /* Caltech Submillimeter Observatory CSO */ /* (IfA website, Richard Wainscoat; height estimated) */ { WEST(155,28,31.79), NORTH(19,49,20.78), 4080E0, "CSO", "Caltech Sub-mm Observatory, Mauna Kea" }, /* ESO VLT, UT1 VLT1 */ /* (ESO website, VLT Whitebook Chapter 2) */ { WEST(70,24,11.642), SOUTH(24,37,33.117), 2635.43, "VLT1", "ESO VLT, Paranal, Chile: UT1" }, /* ESO VLT, UT2 VLT2 */ /* (ESO website, VLT Whitebook Chapter 2) */ { WEST(70,24,10.855), SOUTH(24,37,31.465), 2635.43, "VLT2", "ESO VLT, Paranal, Chile: UT2" }, /* ESO VLT, UT3 VLT3 */ /* (ESO website, VLT Whitebook Chapter 2) */ { WEST(70,24,9.896), SOUTH(24,37,30.300), 2635.43, "VLT3", "ESO VLT, Paranal, Chile: UT3" }, /* ESO VLT, UT4 VLT4 */ /* (ESO website, VLT Whitebook Chapter 2) */ { WEST(70,24,8.000), SOUTH(24,37,31.000), 2635.43, "VLT4", "ESO VLT, Paranal, Chile: UT4" }, /* Gemini South, Cerro Pachon GEMINIS */ /* (GPS readings by Patrick Wallace) */ { WEST(70,44,11.5), SOUTH(30,14,26.7), 2738E0, "GEMINIS", "Gemini South 8-m telescope" }, /* Cologne Observatory for Submillimeter Astronomy (KOSMA) KOSMA3M */ /* (Holger Jakob) */ { EAST(7,47,3.48), NORTH(45,58,59.772), 3141E0, "KOSMA3M", "KOSMA 3m telescope, Gornergrat" }, /* Magellan 1, 6.5m telescope at Las Campanas, Chile MAGELLAN1 */ /* (Skip Schaller) */ { WEST(70,41,31.9), SOUTH(29,0,51.7), 2408E0, "MAGELLAN1", "Magellan 1, 6.5m, Las Campanas" }, /* Magellan 2, 6.5m telescope at Las Campanas, Chile MAGELLAN2 */ /* (Skip Schaller) */ { WEST(70,41,33.5), SOUTH(29,0,50.3), 2408E0, "MAGELLAN2", "Magellan 2, 6.5m, Las Campanas" } }; int retval = -1; /* Return status. 0 if found. -1 if no match */ /* Work out the number of telescopes */ const size_t NTEL = sizeof(telData) / sizeof(struct telData); /* Prefill the return buffer in a pessimistic manner */ star_strellcpy( name, "?", namelen ); if (n > 0) { if (n <= NTEL) { /* Index into telData with correction for zero-based indexing */ struct telData thistel; thistel = telData[n-1]; *w = thistel.w; *p = thistel.p; *h = thistel.h; star_strellcpy( ident, thistel.shortname, identlen ); star_strellcpy( name, thistel.longname, namelen ); retval = 0; } } else { /* Searching */ int i; for (i=0; i double palPa( double ha, double dec, double phi ) { double cp, sqsz, cqsz; cp = cos(phi); sqsz = cp * sin(ha); cqsz = sin(phi) * cos(dec) - cp * sin(dec) * cos(ha); if (sqsz == 0.0 && cqsz == 0.0) cqsz = 1.0; return atan2( sqsz, cqsz ); } pal-0.3.0/palPertel.c000644 000161 000120 00000016701 12014745436 014453 0ustar00timjadmin000000 000000 /* *+ * Name: * palPertel * Purpose: * Update elements by applying planetary perturbations * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPertel (int jform, double date0, double date1, * double epoch0, double orbi0, double anode0, * double perih0, double aorq0, double e0, double am0, * double *epoch1, double *orbi1, double *anode1, * double *perih1, double *aorq1, double *e1, double *am1, * int *jstat ); * Arguments: * jform = int (Given) * Element set actually returned (1-3; Note 6) * date0 = double (Given) * Date of osculation (TT MJD) for the given elements. * date1 = double (Given) * Date of osculation (TT MJD) for the updated elements. * epoch0 = double (Given) * Epoch of elements (TT MJD) * orbi0 = double (Given) * inclination (radians) * anode0 = double (Given) * longitude of the ascending node (radians) * perih0 = double (Given) * longitude or argument of perihelion (radians) * aorq0 = double (Given) * mean distance or perihelion distance (AU) * e0 = double (Given) * eccentricity * am0 = double (Given) * mean anomaly (radians, JFORM=2 only) * epoch1 = double * (Returned) * Epoch of elements (TT MJD) * orbi1 = double * (Returned) * inclination (radians) * anode1 = double * (Returned) * longitude of the ascending node (radians) * perih1 = double * (Returned) * longitude or argument of perihelion (radians) * aorq1 = double * (Returned) * mean distance or perihelion distance (AU) * e1 = double * (Returned) * eccentricity * am1 = double * (Returned) * mean anomaly (radians, JFORM=2 only) * jstat = int * (Returned) * status: * - +102 = warning, distant epoch * - +101 = warning, large timespan ( > 100 years) * - +1 to +10 = coincident with planet (Note 6) * - 0 = OK * - -1 = illegal JFORM * - -2 = illegal E0 * - -3 = illegal AORQ0 * - -4 = internal error * - -5 = numerical error * Description: * Update the osculating orbital elements of an asteroid or comet by * applying planetary perturbations. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Two different element-format options are available: * * Option JFORM=2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBI = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e * AM = mean anomaly M (radians) * * Option JFORM=3, suitable for comets: * * EPOCH = epoch of perihelion (TT MJD) * ORBI = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e * * - DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in * the TT timescale (formerly Ephemeris Time, ET), expressed * as Modified Julian Dates (JD-2400000.5). * * DATE0 is the instant at which the given (i.e. unperturbed) * osculating elements are correct. * * DATE1 is the specified instant at which the updated osculating * elements are correct. * * EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1 * (respectively) for the JFORM=2 case, normally used for minor * planets. For the JFORM=3 case, the two epochs will refer to * perihelion passage and so will not, in general, be the same as * DATE0 and/or DATE1 though they may be similar to one another. * - The elements are with respect to the J2000 ecliptic and equinox. * - Unused elements (AM0 and AM1 for JFORM=3) are not accessed. * - See the palPertue routine for details of the algorithm used. * - This routine is not intended to be used for major planets, which * is why JFORM=1 is not available and why there is no opportunity * to specify either the longitude of perihelion or the daily * motion. However, if JFORM=2 elements are somehow obtained for a * major planet and supplied to the routine, sensible results will, * in fact, be produced. This happens because the sla_PERTUE routine * that is called to perform the calculations checks the separation * between the body and each of the planets and interprets a * suspiciously small value (0.001 AU) as an attempt to apply it to * the planet concerned. If this condition is detected, the * contribution from that planet is ignored, and the status is set to * the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, * Saturn, Uranus, Neptune, Earth, Moon) as a warning. * * See Also: * - Sterne, Theodore E., "An Introduction to Celestial Mechanics", * Interscience Publishers Inc., 1960. Section 6.7, p199. * History: * 2012-03-12 (TIMJ): * Initial version direct conversion of SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palPertel (int jform, double date0, double date1, double epoch0, double orbi0, double anode0, double perih0, double aorq0, double e0, double am0, double *epoch1, double *orbi1, double *anode1, double *perih1, double *aorq1, double *e1, double *am1, int *jstat ) { double u[13], dm; int j, jf; /* Check that the elements are either minor-planet or comet format. */ if (jform < 2 || jform > 3) { *jstat = -1; return; } else { /* Provisionally set the status to OK. */ *jstat = 0; } /* Transform the elements from conventional to universal form. */ palEl2ue(date0,jform,epoch0,orbi0,anode0,perih0, aorq0,e0,am0,0.0,u,&j); if (j != 0) { *jstat = j; return; } /* Update the universal elements. */ palPertue(date1,u,&j); if (j > 0) { *jstat = j; } else if (j < 0) { *jstat = -5; return; } /* Transform from universal to conventional elements. */ palUe2el(u, jform, &jf, epoch1, orbi1, anode1, perih1, aorq1, e1, am1, &dm, &j); if (jf != jform || j != 0) *jstat = -5; } pal-0.3.0/palPertue.c000644 000161 000120 00000047507 12015743371 014471 0ustar00timjadmin000000 000000 /* *+ * Name: * palPertue * Purpose: * Update the universal elements by applying planetary perturbations * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPertue( double date, double u[13], int *jstat ); * Arguments: * date = double (Given) * Final epoch (TT MJD) for the update elements. * u = const double [13] (Given & Returned) * Universal orbital elements (Note 1) * (0) combined mass (M+m) * (1) total energy of the orbit (alpha) * (2) reference (osculating) epoch (t0) * (3-5) position at reference epoch (r0) * (6-8) velocity at reference epoch (v0) * (9) heliocentric distance at reference epoch * (10) r0.v0 * (11) date (t) * (12) universal eccentric anomaly (psi) of date, approx * jstat = int * (Returned) * status: * +102 = warning, distant epoch * +101 = warning, large timespan ( > 100 years) * +1 to +10 = coincident with major planet (Note 5) * 0 = OK * -1 = numerical error * Description: * Update the universal elements of an asteroid or comet by applying * planetary perturbations. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference 2). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - The universal elements are with respect to the J2000 equator and * equinox. * - The epochs DATE, U(3) and U(12) are all Modified Julian Dates * (JD-2400000.5). * - The algorithm is a simplified form of Encke's method. It takes as * a basis the unperturbed motion of the body, and numerically * integrates the perturbing accelerations from the major planets. * The expression used is essentially Sterne's 6.7-2 (reference 1). * Everhart and Pitkin (reference 2) suggest rectifying the orbit at * each integration step by propagating the new perturbed position * and velocity as the new universal variables. In the present * routine the orbit is rectified less frequently than this, in order * to gain a slight speed advantage. However, the rectification is * done directly in terms of position and velocity, as suggested by * Everhart and Pitkin, bypassing the use of conventional orbital * elements. * * The f(q) part of the full Encke method is not used. The purpose * of this part is to avoid subtracting two nearly equal quantities * when calculating the "indirect member", which takes account of the * small change in the Sun's attraction due to the slightly displaced * position of the perturbed body. A simpler, direct calculation in * double precision proves to be faster and not significantly less * accurate. * * Apart from employing a variable timestep, and occasionally * "rectifying the orbit" to keep the indirect member small, the * integration is done in a fairly straightforward way. The * acceleration estimated for the middle of the timestep is assumed * to apply throughout that timestep; it is also used in the * extrapolation of the perturbations to the middle of the next * timestep, to predict the new disturbed position. There is no * iteration within a timestep. * * Measures are taken to reach a compromise between execution time * and accuracy. The starting-point is the goal of achieving * arcsecond accuracy for ordinary minor planets over a ten-year * timespan. This goal dictates how large the timesteps can be, * which in turn dictates how frequently the unperturbed motion has * to be recalculated from the osculating elements. * * Within predetermined limits, the timestep for the numerical * integration is varied in length in inverse proportion to the * magnitude of the net acceleration on the body from the major * planets. * * The numerical integration requires estimates of the major-planet * motions. Approximate positions for the major planets (Pluto * alone is omitted) are obtained from the routine palPlanet. Two * levels of interpolation are used, to enhance speed without * significantly degrading accuracy. At a low frequency, the routine * palPlanet is called to generate updated position+velocity "state * vectors". The only task remaining to be carried out at the full * frequency (i.e. at each integration step) is to use the state * vectors to extrapolate the planetary positions. In place of a * strictly linear extrapolation, some allowance is made for the * curvature of the orbit by scaling back the radius vector as the * linear extrapolation goes off at a tangent. * * Various other approximations are made. For example, perturbations * by Pluto and the minor planets are neglected and relativistic * effects are not taken into account. * * In the interests of simplicity, the background calculations for * the major planets are carried out en masse. The mean elements and * state vectors for all the planets are refreshed at the same time, * without regard for orbit curvature, mass or proximity. * * The Earth-Moon system is treated as a single body when the body is * distant but as separate bodies when closer to the EMB than the * parameter RNE, which incurs a time penalty but improves accuracy * for near-Earth objects. * * - This routine is not intended to be used for major planets. * However, if major-planet elements are supplied, sensible results * will, in fact, be produced. This happens because the routine * checks the separation between the body and each of the planets and * interprets a suspiciously small value (0.001 AU) as an attempt to * apply the routine to the planet concerned. If this condition is * detected, the contribution from that planet is ignored, and the * status is set to the planet number (1-10 = Mercury, Venus, EMB, * Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning. * See Also: * - Sterne, Theodore E., "An Introduction to Celestial Mechanics", * Interscience Publishers Inc., 1960. Section 6.7, p199. * - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-12 (TIMJ): * Initial version direct conversion of SLA/F. * 2012-06-21 (TIMJ): * Support a lack of copysign() function. * 2012-06-22 (TIMJ): * Check __STDC_VERSION__ * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ /* Use the config file if we have one, else look at compiler defines to see if we have C99 */ #if HAVE_CONFIG_H #include #else #ifdef __STDC_VERSION__ # if (__STDC_VERSION__ >= 199901L) # define HAVE_COPYSIGN 1 # endif #endif #endif #include #include "pal.h" #include "palmac.h" #include "sofa.h" /* copysign is C99 */ #if HAVE_COPYSIGN # define COPYSIGN copysign #else # define COPYSIGN(a,b) DSIGN(a,b) #endif void palPertue( double date, double u[13], int *jstat ) { /* Distance from EMB at which Earth and Moon are treated separately */ const double RNE=1.0; /* Coincidence with major planet distance */ const double COINC=0.0001; /* Coefficient relating timestep to perturbing force */ const double TSC=1e-4; /* Minimum and maximum timestep (days) */ const double TSMIN = 0.01; const double TSMAX = 10.0; /* Age limit for major-planet state vector (days) */ const double AGEPMO=5.0; /* Age limit for major-planet mean elements (days) */ const double AGEPEL=50.0; /* Margin for error when deciding whether to renew the planetary data */ const double TINY=1e-6; /* Age limit for the body's osculating elements (before rectification) */ const double AGEBEL=100.0; /* Gaussian gravitational constant squared */ const double GCON2 = PAL__GCON * PAL__GCON; /* The final epoch */ double TFINAL; /* The body's current universal elements */ double UL[13]; /* Current reference epoch */ double T0; /* Timespan from latest orbit rectification to final epoch (days) */ double TSPAN; /* Time left to go before integration is complete */ double TLEFT; /* Time direction flag: +1=forwards, -1=backwards */ double FB; /* First-time flag */ int FIRST = 0; /* * The current perturbations */ /* Epoch (days relative to current reference epoch) */ double RTN; /* Position (AU) */ double PERP[3]; /* Velocity (AU/d) */ double PERV[3]; /* Acceleration (AU/d/d) */ double PERA[3]; /* Length of current timestep (days), and half that */ double TS,HTS; /* Epoch of middle of timestep */ double T; /* Epoch of planetary mean elements */ double TPEL = 0.0; /* Planet number (1=Mercury, 2=Venus, 3=EMB...8=Neptune) */ int NP; /* Planetary universal orbital elements */ double UP[8][13]; /* Epoch of planetary state vectors */ double TPMO = 0.0; /* State vectors for the major planets (AU,AU/s) */ double PVIN[8][6]; /* Earth velocity and position vectors (AU,AU/s) */ double VB[3],PB[3],VH[3],PE[3]; /* Moon geocentric state vector (AU,AU/s) and position part */ double PVM[6],PM[3]; /* Date to J2000 de-precession matrix */ double PMAT[3][3]; /* * Correction terms for extrapolated major planet vectors */ /* Sun-to-planet distances squared multiplied by 3 */ double R2X3[8]; /* Sunward acceleration terms, G/2R^3 */ double GC[8]; /* Tangential-to-circular correction factor */ double FC; /* Radial correction factor due to Sunwards acceleration */ double FG; /* The body's unperturbed and perturbed state vectors (AU,AU/s) */ double PV0[6],PV[6]; /* The body's perturbed and unperturbed heliocentric distances (AU) cubed */ double R03,R3; /* The perturbating accelerations, indirect and direct */ double FI[3],FD[3]; /* Sun-to-planet vector, and distance cubed */ double RHO[3],RHO3; /* Body-to-planet vector, and distance cubed */ double DELTA[3],DELTA3; /* Miscellaneous */ int I,J; double R2,W,DT,DT2,R,FT; int NE; /* Planetary inverse masses, Mercury through Neptune then Earth and Moon */ const double AMAS[10] = { 6023600., 408523.5, 328900.5, 3098710., 1047.355, 3498.5, 22869., 19314., 332946.038, 27068709. }; /* Preset the status to OK. */ *jstat = 0; /* Copy the final epoch. */ TFINAL = date; /* Copy the elements (which will be periodically updated). */ for (I=0; I<13; I++) { UL[I] = u[I]; } /* Initialize the working reference epoch. */ T0=UL[2]; /* Total timespan (days) and hence time left. */ TSPAN = TFINAL-T0; TLEFT = TSPAN; /* Warn if excessive. */ if (fabs(TSPAN) > 36525.0) *jstat=101; /* Time direction: +1 for forwards, -1 for backwards. */ FB = COPYSIGN(1.0,TSPAN); /* Initialize relative epoch for start of current timestep. */ RTN = 0.0; /* Reset the perturbations (position, velocity, acceleration). */ for (I=0; I<3; I++) { PERP[I] = 0.0; PERV[I] = 0.0; PERA[I] = 0.0; } /* Set "first iteration" flag. */ FIRST = 1; /* Step through the time left. */ while (FB*TLEFT > 0.0) { /* Magnitude of current acceleration due to planetary attractions. */ if (FIRST) { TS = TSMIN; } else { R2 = 0.0; for (I=0; I<3; I++) { W = FD[I]; R2 = R2+W*W; } W = sqrt(R2); /* Use the acceleration to decide how big a timestep can be tolerated. */ if (W != 0.0) { TS = DMIN(TSMAX,DMAX(TSMIN,TSC/W)); } else { TS = TSMAX; } } TS = TS*FB; /* Override if final epoch is imminent. */ TLEFT = TSPAN-RTN; if (fabs(TS) > fabs(TLEFT)) TS=TLEFT; /* Epoch of middle of timestep. */ HTS = TS/2.0; T = T0+RTN+HTS; /* Is it time to recompute the major-planet elements? */ if (FIRST || fabs(T-TPEL)-AGEPEL >= TINY) { /* Yes: go forward in time by just under the maximum allowed. */ TPEL = T+FB*AGEPEL; /* Compute the state vector for the new epoch. */ for (NP=1; NP<=8; NP++) { palPlanet(TPEL,NP,PV,&J); /* Warning if remote epoch, abort if error. */ if (J == 1) { *jstat = 102; } else if (J != 0) { goto ABORT; } /* Transform the vector into universal elements. */ palPv2ue(PV,TPEL,0.0,&(UP[NP-1][0]),&J); if (J != 0) goto ABORT; } } /* Is it time to recompute the major-planet motions? */ if (FIRST || fabs(T-TPMO)-AGEPMO >= TINY) { /* Yes: look ahead. */ TPMO = T+FB*AGEPMO; /* Compute the motions of each planet (AU,AU/d). */ for (NP=1; NP<=8; NP++) { /* The planet's position and velocity (AU,AU/s). */ palUe2pv(TPMO,&(UP[NP-1][0]),&(PVIN[NP-1][0]),&J); if (J != 0) goto ABORT; /* Scale velocity to AU/d. */ for (J=3; J<6; J++) { PVIN[NP-1][J] = PVIN[NP-1][J]*PAL__SPD; } /* Precompute also the extrapolation correction terms. */ R2 = 0.0; for (I=0; I<3; I++) { W = PVIN[NP-1][I]; R2 = R2+W*W; } R2X3[NP-1] = R2*3.0; GC[NP-1] = GCON2/(2.0*R2*sqrt(R2)); } } /* Reset the first-time flag. */ FIRST = 0; /* Unperturbed motion of the body at middle of timestep (AU,AU/s). */ palUe2pv(T,UL,PV0,&J); if (J != 0) goto ABORT; /* Perturbed position of the body (AU) and heliocentric distance cubed. */ R2 = 0.0; for (I=0; I<3; I++) { W = PV0[I]+PERP[I]+(PERV[I]+PERA[I]*HTS/2.0)*HTS; PV[I] = W; R2 = R2+W*W; } R3 = R2*sqrt(R2); /* The body's unperturbed heliocentric distance cubed. */ R2 = 0.0; for (I=0; I<3; I++) { W = PV0[I]; R2 = R2+W*W; } R03 = R2*sqrt(R2); /* Compute indirect and initialize direct parts of the perturbation. */ for (I=0; I<3; I++) { FI[I] = PV0[I]/R03-PV[I]/R3; FD[I] = 0.0; } /* Ready to compute the direct planetary effects. */ /* Reset the "near-Earth" flag. */ NE = 0; /* Interval from state-vector epoch to middle of current timestep. */ DT = T-TPMO; DT2 = DT*DT; /* Planet by planet, including separate Earth and Moon. */ for (NP=1; NP<10; NP++) { /* Which perturbing body? */ if (NP <= 8) { /* Planet: compute the extrapolation in longitude (squared). */ R2 = 0.0; for (J=3; J<6; J++) { W = PVIN[NP-1][J]*DT; R2 = R2+W*W; } /* Hence the tangential-to-circular correction factor. */ FC = 1.0+R2/R2X3[NP-1]; /* The radial correction factor due to the inwards acceleration. */ FG = 1.0-GC[NP-1]*DT2; /* Planet's position. */ for (I=0; I<3; I++) { RHO[I] = FG*(PVIN[NP-1][I]+FC*PVIN[NP-1][I+3]*DT); } } else if (NE) { /* Near-Earth and either Earth or Moon. */ if (NP == 9) { /* Earth: position. */ palEpv(T,PE,VH,PB,VB); for (I=0; I<3; I++) { RHO[I] = PE[I]; } } else { /* Moon: position. */ palPrec(palEpj(T),2000.0,PMAT); palDmoon(T,PVM); iauRxp(PMAT,PVM,PM); for (I=0; I<3; I++) { RHO[I] = PM[I]+PE[I]; } } } /* Proceed unless Earth or Moon and not the near-Earth case. */ if (NP <= 8 || NE) { /* Heliocentric distance cubed. */ R2 = 0.0; for (I=0; I<3; I++) { W = RHO[I]; R2 = R2+W*W; } R = sqrt(R2); RHO3 = R2*R; /* Body-to-planet vector, and distance. */ R2 = 0.0; for (I=0; I<3; I++) { W = RHO[I]-PV[I]; DELTA[I] = W; R2 = R2+W*W; } R = sqrt(R2); /* If this is the EMB, set the near-Earth flag appropriately. */ if (NP == 3 && R < RNE) NE = 1; /* Proceed unless EMB and this is the near-Earth case. */ if ( ! (NE && NP == 3) ) { /* If too close, ignore this planet and set a warning. */ if (R < COINC) { *jstat = NP; } else { /* Accumulate "direct" part of perturbation acceleration. */ DELTA3 = R2*R; W = AMAS[NP-1]; for (I=0; I<3; I++) { FD[I] = FD[I]+(DELTA[I]/DELTA3-RHO[I]/RHO3)/W; } } } } } /* Update the perturbations to the end of the timestep. */ RTN += TS; for (I=0; I<3; I++) { W = (FI[I]+FD[I])*GCON2; FT = W*TS; PERP[I] = PERP[I]+(PERV[I]+FT/2.0)*TS; PERV[I] = PERV[I]+FT; PERA[I] = W; } /* Time still to go. */ TLEFT = TSPAN-RTN; /* Is it either time to rectify the orbit or the last time through? */ if (fabs(RTN) >= AGEBEL || FB*TLEFT <= 0.0) { /* Yes: update to the end of the current timestep. */ T0 += RTN; RTN = 0.0; /* The body's unperturbed motion (AU,AU/s). */ palUe2pv(T0,UL,PV0,&J); if (J != 0) goto ABORT; /* Add and re-initialize the perturbations. */ for (I=0; I<3; I++) { J = I+3; PV[I] = PV0[I]+PERP[I]; PV[J] = PV0[J]+PERV[I]/PAL__SPD; PERP[I] = 0.0; PERV[I] = 0.0; PERA[I] = FD[I]*GCON2; } /* Use the position and velocity to set up new universal elements. */ palPv2ue(PV,T0,0.0,UL,&J); if (J != 0) goto ABORT; /* Adjust the timespan and time left. */ TSPAN = TFINAL-T0; TLEFT = TSPAN; } /* Next timestep. */ } /* Return the updated universal-element set. */ for (I=0; I<13; I++) { u[I] = UL[I]; } /* Finished. */ return; /* Miscellaneous numerical error. */ ABORT: *jstat = -1; return; } pal-0.3.0/palPlanel.c000644 000161 000120 00000020014 12014745436 014423 0ustar00timjadmin000000 000000 /* *+ * Name: * palPlanel * Purpose: * Transform conventional elements into position and velocity * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPlanel ( double date, int jform, double epoch, double orbinc, * double anode, double perih, double aorq, double e, * double aorl, double dm, double pv[6], int *jstat ); * Arguments: * date = double (Given) * Epoch (TT MJD) of osculation (Note 1) * jform = int (Given) * Element set actually returned (1-3; Note 3) * epoch = double (Given) * Epoch of elements (TT MJD) (Note 4) * orbinc = double (Given) * inclination (radians) * anode = double (Given) * longitude of the ascending node (radians) * perih = double (Given) * longitude or argument of perihelion (radians) * aorq = double (Given) * mean distance or perihelion distance (AU) * e = double (Given) * eccentricity * aorl = double (Given) * mean anomaly or longitude (radians, JFORM=1,2 only) * dm = double (Given) * daily motion (radians, JFORM=1 only) * u = double [13] (Returned) * Universal orbital elements (Note 1) * (0) combined mass (M+m) * (1) total energy of the orbit (alpha) * (2) reference (osculating) epoch (t0) * (3-5) position at reference epoch (r0) * (6-8) velocity at reference epoch (v0) * (9) heliocentric distance at reference epoch * (10) r0.v0 * (11) date (t) * (12) universal eccentric anomaly (psi) of date, approx * jstat = int * (Returned) * status: 0 = OK * - -1 = illegal JFORM * - -2 = illegal E * - -3 = illegal AORQ * - -4 = illegal DM * - -5 = numerical error * Description: * Heliocentric position and velocity of a planet, asteroid or comet, * starting from orbital elements. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - DATE is the instant for which the prediction is required. It is * in the TT timescale (formerly Ephemeris Time, ET) and is a * Modified Julian Date (JD-2400000.5). * - The elements are with respect to the J2000 ecliptic and equinox. * - A choice of three different element-set options is available: * * Option JFORM = 1, suitable for the major planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = longitude of perihelion, curly pi (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean longitude L (radians) * DM = daily motion (radians) * * Option JFORM = 2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean anomaly M (radians) * * Option JFORM = 3, suitable for comets: * * EPOCH = epoch of elements and perihelion (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e (range 0 to 10) * * Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not * accessed. * - Each of the three element sets defines an unperturbed heliocentric * orbit. For a given epoch of observation, the position of the body * in its orbit can be predicted from these elements, which are * called "osculating elements", using standard two-body analytical * solutions. However, due to planetary perturbations, a given set * of osculating elements remains usable for only as long as the * unperturbed orbit that it describes is an adequate approximation * to reality. Attached to such a set of elements is a date called * the "osculating epoch", at which the elements are, momentarily, * a perfect representation of the instantaneous position and * velocity of the body. * * Therefore, for any given problem there are up to three different * epochs in play, and it is vital to distinguish clearly between * them: * * . The epoch of observation: the moment in time for which the * position of the body is to be predicted. * * . The epoch defining the position of the body: the moment in time * at which, in the absence of purturbations, the specified * position (mean longitude, mean anomaly, or perihelion) is * reached. * * . The osculating epoch: the moment in time at which the given * elements are correct. * * For the major-planet and minor-planet cases it is usual to make * the epoch that defines the position of the body the same as the * epoch of osculation. Thus, only two different epochs are * involved: the epoch of the elements and the epoch of observation. * * For comets, the epoch of perihelion fixes the position in the * orbit and in general a different epoch of osculation will be * chosen. Thus, all three types of epoch are involved. * * For the present routine: * * . The epoch of observation is the argument DATE. * * . The epoch defining the position of the body is the argument * EPOCH. * * . The osculating epoch is not used and is assumed to be close * enough to the epoch of observation to deliver adequate accuracy. * If not, a preliminary call to sla_PERTEL may be used to update * the element-set (and its associated osculating epoch) by * applying planetary perturbations. * - The reference frame for the result is with respect to the mean * equator and equinox of epoch J2000. * - The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996). The method is based * on Stumpff's Universal Variables. * See Also: * Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-12 (TIMJ): * Initial version taken directly from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palPlanel ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double pv[6], int *jstat ) { int j; double u[13]; /* Validate elements and convert to "universal variables" parameters. */ palEl2ue( date, jform, epoch, orbinc, anode, perih, aorq, e, aorl, dm, u, &j ); /* Determine the position and velocity */ if (j == 0) { palUe2pv( date, u, pv, &j); if (j != 0) j = -5; } /* Wrap up */ *jstat = j; } pal-0.3.0/palPlanet.c000644 000161 000120 00000005335 12014745436 014444 0ustar00timjadmin000000 000000 /* *+ * Name: * palPlanet * Purpose: * Approximate heliocentric position and velocity of major planet * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPlanet ( double date, int np, double pv[6], int *j ); * Arguments: * date = double (Given) * TDB Modified Julian Date (JD-2400000.5). * np = int (Given) * planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, * 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) * pv = double [6] (Returned) * heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad * in units AU and AU/s. * j = int * (Returned) * - -2 = solution didn't converge. * - -1 = illegal np (1-8) * - 0 = OK * - +1 = warning: year outside 1000-3000 * Description: * Calculates the approximate heliocentric position and velocity of * the specified major planet. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - See SOFA iauPlan94 for details * - Note that Pluto is supported in SLA/F but not in this routine * - Status -2 is equivalent to iauPlan94 status +2. * - Note that velocity units here match the SLA/F documentation. * History: * 2012-03-07 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palPlanet ( double date, int np, double pv[6], int *j ) { double iaupv[2][3]; *j = iauPlan94( PAL__MJD0, date, np, iaupv ); /* Convert the outputs to the correct form and also correct AU/d to AU/s */ pv[0] = iaupv[0][0]; pv[1] = iaupv[0][1]; pv[2] = iaupv[0][2]; pv[3] = iaupv[1][0] / PAL__SPD; pv[4] = iaupv[1][1] / PAL__SPD; pv[5] = iaupv[1][2] / PAL__SPD; /* SLA compatibility for status */ if (*j == 2) *j = -2; } pal-0.3.0/palPlante.c000644 000161 000120 00000023446 12014745436 014447 0ustar00timjadmin000000 000000 /* *+ * Name: * palPlante * Purpose: * Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPlante ( double date, double elong, double phi, int jform, * double epoch, double orbinc, double anode, double perih, * double aorq, double e, double aorl, double dm, * double *ra, double *dec, double *r, int *jstat ); * Description: * Topocentric apparent RA,Dec of a Solar-System object whose * heliocentric orbital elements are known. * Arguments: * date = double (Given) * TT MJD of observation (JD-2400000.5) * elong = double (Given) * Observer's east longitude (radians) * phi = double (Given) * Observer's geodetic latitude (radians) * jform = int (Given) * Element set actually returned (1-3; Note 6) * epoch = double (Given) * Epoch of elements (TT MJD) * orbinc = double (Given) * inclination (radians) * anode = double (Given) * longitude of the ascending node (radians) * perih = double (Given) * longitude or argument of perihelion (radians) * aorq = double (Given) * mean distance or perihelion distance (AU) * e = double (Given) * eccentricity * aorl = double (Given) * mean anomaly or longitude (radians, JFORM=1,2 only) * dm = double (Given) * daily motion (radians, JFORM=1 only) * ra = double * (Returned) * Topocentric apparent RA (radians) * dec = double * (Returned) * Topocentric apparent Dec (radians) * r = double * (Returned) * Distance from observer (AU) * jstat = int * (Returned) * status: 0 = OK * - -1 = illegal jform * - -2 = illegal e * - -3 = illegal aorq * - -4 = illegal dm * - -5 = numerical error * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - DATE is the instant for which the prediction is required. It is * in the TT timescale (formerly Ephemeris Time, ET) and is a * Modified Julian Date (JD-2400000.5). * - The longitude and latitude allow correction for geocentric * parallax. This is usually a small effect, but can become * important for near-Earth asteroids. Geocentric positions can be * generated by appropriate use of routines palEpv (or palEvp) and * palUe2pv. * - The elements are with respect to the J2000 ecliptic and equinox. * - A choice of three different element-set options is available: * * Option JFORM = 1, suitable for the major planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = longitude of perihelion, curly pi (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean longitude L (radians) * DM = daily motion (radians) * * Option JFORM = 2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e (range 0 to <1) * AORL = mean anomaly M (radians) * * Option JFORM = 3, suitable for comets: * * EPOCH = epoch of elements and perihelion (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e (range 0 to 10) * * Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not * accessed. * - Each of the three element sets defines an unperturbed heliocentric * orbit. For a given epoch of observation, the position of the body * in its orbit can be predicted from these elements, which are * called "osculating elements", using standard two-body analytical * solutions. However, due to planetary perturbations, a given set * of osculating elements remains usable for only as long as the * unperturbed orbit that it describes is an adequate approximation * to reality. Attached to such a set of elements is a date called * the "osculating epoch", at which the elements are, momentarily, * a perfect representation of the instantaneous position and * velocity of the body. * * Therefore, for any given problem there are up to three different * epochs in play, and it is vital to distinguish clearly between * them: * * . The epoch of observation: the moment in time for which the * position of the body is to be predicted. * * . The epoch defining the position of the body: the moment in time * at which, in the absence of purturbations, the specified * position (mean longitude, mean anomaly, or perihelion) is * reached. * * . The osculating epoch: the moment in time at which the given * elements are correct. * * For the major-planet and minor-planet cases it is usual to make * the epoch that defines the position of the body the same as the * epoch of osculation. Thus, only two different epochs are * involved: the epoch of the elements and the epoch of observation. * * For comets, the epoch of perihelion fixes the position in the * orbit and in general a different epoch of osculation will be * chosen. Thus, all three types of epoch are involved. * * For the present routine: * * . The epoch of observation is the argument DATE. * * . The epoch defining the position of the body is the argument * EPOCH. * * . The osculating epoch is not used and is assumed to be close * enough to the epoch of observation to deliver adequate accuracy. * If not, a preliminary call to sla_PERTEL may be used to update * the element-set (and its associated osculating epoch) by * applying planetary perturbations. * - Two important sources for orbital elements are Horizons, operated * by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet * Center, operated by the Center for Astrophysics, Harvard. * * The JPL Horizons elements (heliocentric, J2000 ecliptic and * equinox) correspond to SLALIB arguments as follows. * * Major planets: * * JFORM = 1 * EPOCH = JDCT-2400000.5 * ORBINC = IN (in radians) * ANODE = OM (in radians) * PERIH = OM+W (in radians) * AORQ = A * E = EC * AORL = MA+OM+W (in radians) * DM = N (in radians) * * Epoch of osculation = JDCT-2400000.5 * * Minor planets: * * JFORM = 2 * EPOCH = JDCT-2400000.5 * ORBINC = IN (in radians) * ANODE = OM (in radians) * PERIH = W (in radians) * AORQ = A * E = EC * AORL = MA (in radians) * * Epoch of osculation = JDCT-2400000.5 * * Comets: * * JFORM = 3 * EPOCH = Tp-2400000.5 * ORBINC = IN (in radians) * ANODE = OM (in radians) * PERIH = W (in radians) * AORQ = QR * E = EC * * Epoch of osculation = JDCT-2400000.5 * * The MPC elements correspond to SLALIB arguments as follows. * * Minor planets: * * JFORM = 2 * EPOCH = Epoch-2400000.5 * ORBINC = Incl. (in radians) * ANODE = Node (in radians) * PERIH = Perih. (in radians) * AORQ = a * E = e * AORL = M (in radians) * * Epoch of osculation = Epoch-2400000.5 * * Comets: * * JFORM = 3 * EPOCH = T-2400000.5 * ORBINC = Incl. (in radians) * ANODE = Node. (in radians) * PERIH = Perih. (in radians) * AORQ = q * E = e * * Epoch of osculation = Epoch-2400000.5 * History: * 2012-03-12 (TIMJ): * Initial version direct conversion of SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" void palPlante ( double date, double elong, double phi, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double *ra, double *dec, double *r, int *jstat ) { double u[13]; /* Transform conventional elements to universal elements */ palEl2ue( date, jform, epoch, orbinc, anode, perih, aorq, e, aorl, dm, u, jstat ); /* If succcessful, make the prediction */ if (*jstat == 0) palPlantu( date, elong, phi, u, ra, dec, r, jstat ); } pal-0.3.0/palPlantu.c000644 000161 000120 00000013603 12014745436 014461 0ustar00timjadmin000000 000000 /* *+ * Name: * palPlantu * Purpose: * Topocentric RA,Dec of a Solar-System object from universal elements * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPlantu ( double date, double elong, double phi, const double u[13], * double *ra, double *dec, double *r, int *jstat ) { * Description: * Topocentric apparent RA,Dec of a Solar-System object whose * heliocentric universal elements are known. * Arguments: * date = double (Given) * TT MJD of observation (JD-2400000.5) * elong = double (Given) * Observer's east longitude (radians) * phi = double (Given) * Observer's geodetic latitude (radians) * u = const double [13] (Given) * Universal orbital elements * - (0) combined mass (M+m) * - (1) total energy of the orbit (alpha) * - (2) reference (osculating) epoch (t0) * - (3-5) position at reference epoch (r0) * - (6-8) velocity at reference epoch (v0) * - (9) heliocentric distance at reference epoch * - (10) r0.v0 * - (11) date (t) * - (12) universal eccentric anomaly (psi) of date, approx * ra = double * (Returned) * Topocentric apparent RA (radians) * dec = double * (Returned) * Topocentric apparent Dec (radians) * r = double * (Returned) * Distance from observer (AU) * jstat = int * (Returned) * status: 0 = OK * - -1 = radius vector zero * - -2 = failed to converge * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - DATE is the instant for which the prediction is required. It is * in the TT timescale (formerly Ephemeris Time, ET) and is a * Modified Julian Date (JD-2400000.5). * - The longitude and latitude allow correction for geocentric * parallax. This is usually a small effect, but can become * important for near-Earth asteroids. Geocentric positions can be * generated by appropriate use of routines palEpv (or palEvp) and * palUe2pv. * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference 2). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - The universal elements are with respect to the J2000 equator and * equinox. * See Also: * - Sterne, Theodore E., "An Introduction to Celestial Mechanics", * Interscience Publishers Inc., 1960. Section 6.7, p199. * - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-12 (TIMJ): * Initial version direct conversion of SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" #include "sofa.h" void palPlantu ( double date, double elong, double phi, const double u[13], double *ra, double *dec, double *r, int *jstat ) { int i; double dvb[3], dpb[3], vsg[6], vsp[6], v[6], rmat[3][3], vgp[6], stl, vgo[6], dx, dy, dz, d, tl; double ucp[13]; /* To retain the stated const API and conform to the documentation we must copy the contents of the u array as palUe2pv updates the final two elements */ for (i=0;i<13;i++) { ucp[i] = u[i]; } /* Sun to geocentre (J2000, velocity in AU/s) */ palEpv( date, vsg, &(vsg[3]), dpb, dvb ); for (i=3; i < 6; i++) { vsg[i] /= PAL__SPD; } /* Sun to planet (J2000) */ palUe2pv( date, ucp, vsp, jstat ); /* Geocentre to planet (J2000) */ for (i=0; i<6; i++) { v[i] = vsp[i] - vsg[i]; } /* Precession and nutation to date */ palPrenut( 2000.0, date, rmat ); iauRxp(rmat, v, vgp); iauRxp( rmat, &(v[3]), &(vgp[3]) ); /* Geocentre to observer (date) */ stl = palGmst( date - palDt( palEpj(date) ) / PAL__SPD ) + elong; palPvobs( phi, 0.0, stl, vgo ); /* Observer to planet (date) */ for (i=0; i<6; i++) { v[i] = vgp[i] - vgo[i]; } /* Geometric distance (AU) */ dx = v[0]; dy = v[1]; dz = v[2]; d = sqrt( dx*dx + dy*dy + dz*dz ); /* Light time (sec) */ tl = PAL__CR * d; /* Correct position for planetary aberration */ for (i=0; i<3; i++) { v[i] -= tl * v[i+3]; } /* To RA,Dec */ iauC2s( v, ra, dec ); *ra = iauAnp( *ra ); *r = d; } pal-0.3.0/palPm.c000644 000161 000120 00000006157 12014745436 013600 0ustar00timjadmin000000 000000 /* *+ * Name: * palPm * Purpose: * Apply corrections for proper motion a star RA,Dec * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPm ( double r0, double d0, double pr, double pd, * double px, double rv, double ep0, double ep1, * double *r1, double *d1 ); * Arguments: * r0 = double (Given) * RA at epoch ep0 (radians) * d0 = double (Given) * Dec at epoch ep0 (radians) * pr = double (Given) * RA proper motion in radians per year. * pd = double (Given) * Dec proper motion in radians per year. * px = double (Given) * Parallax (arcsec) * rv = double (Given) * Radial velocity (km/sec +ve if receding) * ep0 = double (Given) * Start epoch in years, assumed to be Julian. * ep1 = double (Given) * End epoch in years, assumed to be Julian. * r1 = double * (Returned) * RA at epoch ep1 (radians) * d1 = double * (Returned) * Dec at epoch ep1 (radians) * Description: * Apply corrections for proper motion to a star RA,Dec using the * SOFA routine iauStarpm. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Uses iauStarpm but ignores the status returns from that routine. * In particular note that parallax should not be zero when the * proper motions are non-zero. SLA/F allows parallax to be zero. * - Assumes all epochs are Julian epochs. * History: * 2012-03-02 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palPm ( double r0, double d0, double pr, double pd, double px, double rv, double ep0, double ep1, double *r1, double *d1 ) { int status; double ep1a, ep1b, ep2a, ep2b; double pmr2, pmd2, px2, rv2; /* SOFA requires the epochs in TDB MJD so we have to assume that the supplied epochs are Julian years */ iauEpj2jd( ep0, &ep1a, &ep1b ); iauEpj2jd( ep1, &ep2a, &ep2b ); status = iauStarpm( r0, d0, pr, pd, px, rv, ep1a, ep1b, ep2a, ep2b, r1, d1, &pmr2, &pmd2, &px2, &rv2 ); } pal-0.3.0/palPrebn.c000644 000161 000120 00000005424 12014745436 014266 0ustar00timjadmin000000 000000 /* *+ * Name: * palPrebn * Purpose: * Generate the matrix of precession between two objects (old) * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPrebn ( double bep0, double bep1, double rmatp[3][3] ); * Arguments: * bep0 = double (Given) * Beginning Besselian epoch. * bep1 = double (Given) * Ending Besselian epoch * rmatp = double[3][3] (Returned) * precession matrix in the sense V(BEP1) = RMATP * V(BEP0) * Description: * Generate the matrix of precession between two epochs, * using the old, pre-IAU1976, Bessel-Newcomb model, using * Kinoshita's formulation * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * See Also: * Kinoshita, H. (1975) 'Formulas for precession', SAO Special * Report No. 364, Smithsonian Institution Astrophysical * Observatory, Cambridge, Massachusetts. * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" void palPrebn ( double bep0, double bep1, double rmatp[3][3] ) { double t,bigt, zeta, theta, z, tas2r, w; /* Interval between basic epoch B1850.0 and beginning epoch in TC */ bigt = (bep0-1850)/100.; /* Interval over which precession required, in tropical centuries */ t = (bep1-bep0)/100.; /* Euler angles */ tas2r = t * PAL__DAS2R; w = 2303.5548 + ( 1.39720 + 0.000059 * bigt) * bigt; zeta = ( w + ( 0.30242 - 0.000269 * bigt + 0.017996 * t ) * t ) * tas2r; z = ( w + ( 1.09478 + 0.000387 * bigt + 0.018324 * t ) * t ) * tas2r; theta = ( 2005.1125 + ( -0.85294 - 0.000365 * bigt ) * bigt + (-0.42647 - 0.000365 * bigt - 0.041802 * t ) * t ) * tas2r; /* Rotation matrix */ palDeuler("ZYZ", -zeta, theta, -z, rmatp); } pal-0.3.0/palPrec.c000644 000161 000120 00000005721 12014745436 014111 0ustar00timjadmin000000 000000 /* *+ * Name: * palPrec * Purpose: * Form the matrix of precession between two epochs (IAU 2006) * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palPrec( double ep0, double ep1, double rmatp[3][3] ) * Arguments: * ep0 = double (Given) * Beginning epoch * ep1 = double (Given) * Ending epoch * rmatp = double[3][3] (Returned) * Precession matrix * Description: * The IAU 2006 precession matrix from ep0 to ep1 is found and * returned. The matrix is in the sense V(EP1) = RMATP * V(EP0). * The epochs are TDB (loosely TT) Julian epochs. * * Though the matrix method itself is rigorous, the precession * angles are expressed through canonical polynomials which are * valid only for a limited time span of a few hundred years around * the current epoch. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-10 (DSB): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" #include "sofam.h" void palPrec( double ep0, double ep1, double rmatp[3][3] ){ /* Local Variables: */ double rmatq[3][3]; double ep0_days; double ep1_days; /* Convert supplied dates to days since J2000 */ ep0_days = ( ep0 - 2000.0 )*DJY; ep1_days = ( ep1 - 2000.0 )*DJY; /* If beginning epoch is J2000, just return the rotation matrix from J2000 to EP1. */ if( ep0 == 2000.0 ) { iauPmat06( DJ00, ep1_days, rmatp ); /* If end epoch is J2000, get the rotation matrix from J2000 to EP0 and then transpose it to get the rotation matrix from EP0 to J2000. */ } else if( ep1 == 2000.0 ) { iauPmat06( DJ00, ep0_days, rmatp ); iauTr( rmatp, rmatp ); /* Otherwise. get the two matrices used above and multiply them together. */ } else { iauPmat06( DJ00, ep0_days, rmatp ); iauTr( rmatp, rmatp ); iauPmat06( DJ00, ep1_days, rmatq ); iauRxr( rmatp, rmatq, rmatp ); } } pal-0.3.0/palPreces.c000644 000161 000120 00000006405 12014745436 014441 0ustar00timjadmin000000 000000 /* *+ * Name: * palPreces * Purpose: * Precession - either FK4 or FK5 as required. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPreces ( const char sys[3], double ep0, double ep1, * double *ra, double *dc ); * Arguments: * sys = const char [3] (Given) * Precession to be applied: FK4 or FK5. Case insensitive. * ep0 = double (Given) * Starting epoch. * ep1 = double (Given) * Ending epoch * ra = double * (Given & Returned) * On input the RA mean equator & equinox at epoch ep0. On exit * the RA mean equator & equinox of epoch ep1. * dec = double * (Given & Returned) * On input the dec mean equator & equinox at epoch ep0. On exit * the dec mean equator & equinox of epoch ep1. * Description: * Precess coordinates using the appropriate system and epochs. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Uses palPrec for FK5 data and palPrebn for FK4 data. * - The epochs are Besselian if SYSTEM='FK4' and Julian if 'FK5'. * For example, to precess coordinates in the old system from * equinox 1900.0 to 1950.0 the call would be: * palPreces( "FK4", 1900.0, 1950.0, &ra, &dc ); * - This routine will NOT correctly convert between the old and * the new systems - for example conversion from B1950 to J2000. * For these purposes see palFk425, palFk524, palFk45z and * palFk54z. * - If an invalid SYSTEM is supplied, values of -99D0,-99D0 will * be returned for both RA and DC. * History: * 2012-03-02 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" #include void palPreces ( const char sys[3], double ep0, double ep1, double *ra, double *dc ) { double pm[3][3]; double v1[3]; double v2[3]; /* Generate appropriate precession matrix */ if ( strncasecmp( "FK4", sys, 3 ) == 0 ) { palPrebn( ep0, ep1, pm ); } else if (strncasecmp( "FK5", sys, 3 ) == 0 ) { palPrec( ep0, ep1, pm ); } else { *ra = -99.0; *dc = -99.0; return; } /* Convert RA,Dec to x,y,z */ iauS2c( *ra, *dc, v1 ); /* Precess */ iauRxp( pm, v1, v2 ); /* Back to RA,Dec */ iauC2s( v2, ra, dc ); *ra = iauAnp( *ra ); } pal-0.3.0/palPrenut.c000644 000161 000120 00000005417 12014745436 014477 0ustar00timjadmin000000 000000 /* *+ * Name: * palPrenut * Purpose: * Form the matrix of bias-precession-nutation (IAU 2006/2000A) * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPrenut( double epoch, double date, double rmatpn[3][3] ) * Arguments: * epoch = double (Returned) * Julian epoch for mean coordinates. * date = double (Returned) * Modified Julian Date (JD-2400000.5) for true coordinates. * rmatpn = double[3][3] (Returned) * combined NPB matrix * Description: * Form the matrix of bias-precession-nutation (IAU 2006/2000A). * The epoch and date are TT (but TDB is usually close enough). * The matrix is in the sense v(true) = rmatpn * v(mean). * Authors: * PTW: Pat Wallace (STFC) * {enter_new_authors_here} * History: * 2012-02-10 (PTW): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "sofa.h" void palPrenut ( double epoch, double date, double rmatpn[3][3] ){ /* Local Variables: */ double bpa; double bpia; double bqa; double chia; double d1; double d2; double eps0; double epsa; double gam; double oma; double pa; double phi; double pia; double psi; double psia; double r1[3][3]; double r2[3][3]; double thetaa; double za; double zetaa; /* Specified Julian epoch as a 2-part JD. */ iauEpj2jd( epoch, &d1, &d2 ); /* P matrix, from specified epoch to J2000.0. */ iauP06e( d1, d2, &eps0, &psia, &oma, &bpa, &bqa, &pia, &bpia, &epsa, &chia, &za, &zetaa, &thetaa, &pa, &gam, &phi, &psi ); iauIr( r1 ); iauRz( -chia, r1 ); iauRx( oma, r1 ); iauRz( psia, r1 ); iauRx( -eps0, r1 ); /* NPB matrix, from J2000.0 to date. */ iauPnm06a( PAL__MJD0, date, r2 ); /* NPB matrix, from specified epoch to date. */ iauRxr( r2, r1, rmatpn ); } pal-0.3.0/palPv2el.c000644 000161 000120 00000027242 12014745436 014212 0ustar00timjadmin000000 000000 /* *+ * Name: * palPv2el * Purpose: * Position velocity to heliocentirc osculating elements * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPv2el ( const double pv[6], double date, double pmass, int jformr, * int *jform, double *epoch, double *orbinc, * double *anode, double *perih, double *aorq, double *e, * double *aorl, double *dm, int *jstat ); * Arguments: * pv = const double [6] (Given) * Heliocentric x,y,z,xdot,ydot,zdot of date, * J2000 equatorial triad (AU,AU/s; Note 1) * date = double (Given) * Date (TT Modified Julian Date = JD-2400000.5) * pmass = double (Given) * Mass of the planet (Sun=1; Note 2) * jformr = int (Given) * Requested element set (1-3; Note 3) * jform = int * (Returned) * Element set actually returned (1-3; Note 4) * epoch = double * (Returned) * Epoch of elements (TT MJD) * orbinc = double * (Returned) * inclination (radians) * anode = double * (Returned) * longitude of the ascending node (radians) * perih = double * (Returned) * longitude or argument of perihelion (radians) * aorq = double * (Returned) * mean distance or perihelion distance (AU) * e = double * (Returned) * eccentricity * aorl = double * (Returned) * mean anomaly or longitude (radians, JFORM=1,2 only) * dm = double * (Returned) * daily motion (radians, JFORM=1 only) * jstat = int * (Returned) * status: 0 = OK * - -1 = illegal PMASS * - -2 = illegal JFORMR * - -3 = position/velocity out of range * Description: * Heliocentric osculating elements obtained from instantaneous position * and velocity. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The PV 6-vector is with respect to the mean equator and equinox of * epoch J2000. The orbital elements produced are with respect to * the J2000 ecliptic and mean equinox. * - The mass, PMASS, is important only for the larger planets. For * most purposes (e.g. asteroids) use 0D0. Values less than zero * are illegal. * - Three different element-format options are supported: * * Option JFORM=1, suitable for the major planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = longitude of perihelion, curly pi (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e * AORL = mean longitude L (radians) * DM = daily motion (radians) * * Option JFORM=2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e * AORL = mean anomaly M (radians) * * Option JFORM=3, suitable for comets: * * EPOCH = epoch of perihelion (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e * * - It may not be possible to generate elements in the form * requested through JFORMR. The caller is notified of the form * of elements actually returned by means of the JFORM argument: * JFORMR JFORM meaning * * 1 1 OK - elements are in the requested format * 1 2 never happens * 1 3 orbit not elliptical * * 2 1 never happens * 2 2 OK - elements are in the requested format * 2 3 orbit not elliptical * * 3 1 never happens * 3 2 never happens * 3 3 OK - elements are in the requested format * * - The arguments returned for each value of JFORM (cf Note 5: JFORM * may not be the same as JFORMR) are as follows: * * JFORM 1 2 3 * EPOCH t0 t0 T * ORBINC i i i * ANODE Omega Omega Omega * PERIH curly pi omega omega * AORQ a a q * E e e e * AORL L M - * DM n - - * * where: * * t0 is the epoch of the elements (MJD, TT) * T " epoch of perihelion (MJD, TT) * i " inclination (radians) * Omega " longitude of the ascending node (radians) * curly pi " longitude of perihelion (radians) * omega " argument of perihelion (radians) * a " mean distance (AU) * q " perihelion distance (AU) * e " eccentricity * L " longitude (radians, 0-2pi) * M " mean anomaly (radians, 0-2pi) * n " daily motion (radians) * - means no value is set * * - At very small inclinations, the longitude of the ascending node * ANODE becomes indeterminate and under some circumstances may be * set arbitrarily to zero. Similarly, if the orbit is close to * circular, the true anomaly becomes indeterminate and under some * circumstances may be set arbitrarily to zero. In such cases, * the other elements are automatically adjusted to compensate, * and so the elements remain a valid description of the orbit. * - The osculating epoch for the returned elements is the argument * DATE. * * - Reference: Sterne, Theodore E., "An Introduction to Celestial * Mechanics", Interscience Publishers, 1960 * History: * 2012-03-09 (TIMJ): * Initial version converted from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "sofa.h" #include "pal.h" #include "palmac.h" void palPv2el ( const double pv[6], double date, double pmass, int jformr, int *jform, double *epoch, double *orbinc, double *anode, double *perih, double *aorq, double *e, double *aorl, double *dm, int *jstat ) { /* Sin and cos of J2000 mean obliquity (IAU 1976) */ const double SE = 0.3977771559319137; const double CE = 0.9174820620691818; /* Minimum allowed distance (AU) and speed (AU/day) */ const double RMIN = 1e-3; const double VMIN = 1e-8; /* How close to unity the eccentricity has to be to call it a parabola */ const double PARAB = 1.0e-8; double X,Y,Z,XD,YD,ZD,R,V2,V,RDV,GMU,HX,HY,HZ, HX2PY2,H2,H,OI,BIGOM,AR,ECC,S,C,AT,U,OM, GAR3,EM1,EP1,HAT,SHAT,CHAT,AE,AM,DN,PL, EL,Q,TP,THAT,THHF,F; int JF; /* Validate arguments PMASS and JFORMR.*/ if (pmass < 0.0) { *jstat = -1; return; } if (jformr < 1 || jformr > 3) { *jstat = -2; return; } /* Provisionally assume the elements will be in the chosen form. */ JF = jformr; /* Rotate the position from equatorial to ecliptic coordinates. */ X = pv[0]; Y = pv[1]*CE+pv[2]*SE; Z = -pv[1]*SE+pv[2]*CE; /* Rotate the velocity similarly, scaling to AU/day. */ XD = PAL__SPD*pv[3]; YD = PAL__SPD*(pv[4]*CE+pv[5]*SE); ZD = PAL__SPD*(-pv[4]*SE+pv[5]*CE); /* Distance and speed. */ R = sqrt(X*X+Y*Y+Z*Z); V2 = XD*XD+YD*YD+ZD*ZD; V = sqrt(V2); /* Reject unreasonably small values. */ if (R < RMIN || V < VMIN) { *jstat = -3; return; } /* R dot V. */ RDV = X*XD+Y*YD+Z*ZD; /* Mu. */ GMU = (1.0+pmass)*PAL__GCON*PAL__GCON; /* Vector angular momentum per unit reduced mass. */ HX = Y*ZD-Z*YD; HY = Z*XD-X*ZD; HZ = X*YD-Y*XD; /* Areal constant. */ HX2PY2 = HX*HX+HY*HY; H2 = HX2PY2+HZ*HZ; H = sqrt(H2); /* Inclination. */ OI = atan2(sqrt(HX2PY2),HZ); /* Longitude of ascending node. */ if (HX != 0.0 || HY != 0.0) { BIGOM = atan2(HX,-HY); } else { BIGOM=0.0; } /* Reciprocal of mean distance etc. */ AR = 2.0/R-V2/GMU; /* Eccentricity. */ ECC = sqrt(DMAX(1.0-AR*H2/GMU,0.0)); /* True anomaly. */ S = H*RDV; C = H2-R*GMU; if (S != 0.0 || C != 0.0) { AT = atan2(S,C); } else { AT = 0.0; } /* Argument of the latitude. */ S = sin(BIGOM); C = cos(BIGOM); U = atan2((-X*S+Y*C)*cos(OI)+Z*sin(OI),X*C+Y*S); /* Argument of perihelion. */ OM = U-AT; /* Capture near-parabolic cases. */ if (fabs(ECC-1.0) < PARAB) ECC=1.0; /* Comply with JFORMR = 1 or 2 only if orbit is elliptical. */ if (ECC > 1.0) JF=3; /* Functions. */ GAR3 = GMU*AR*AR*AR; EM1 = ECC-1.0; EP1 = ECC+1.0; HAT = AT/2.0; SHAT = sin(HAT); CHAT = cos(HAT); /* Variable initializations to avoid compiler warnings. */ AM = 0.0; DN = 0.0; PL = 0.0; EL = 0.0; Q = 0.0; TP = 0.0; /* Ellipse? */ if (ECC < 1.0 ) { /* Eccentric anomaly. */ AE = 2.0*atan2(sqrt(-EM1)*SHAT,sqrt(EP1)*CHAT); /* Mean anomaly. */ AM = AE-ECC*sin(AE); /* Daily motion. */ DN = sqrt(GAR3); } /* "Major planet" element set? */ if (JF == 1) { /* Longitude of perihelion. */ PL = BIGOM+OM; /* Longitude at epoch. */ EL = PL+AM; } /* "Comet" element set? */ if (JF == 3) { /* Perihelion distance. */ Q = H2/(GMU*EP1); /* Ellipse, parabola, hyperbola? */ if (ECC < 1.0) { /* Ellipse: epoch of perihelion. */ TP = date-AM/DN; } else { /* Parabola or hyperbola: evaluate tan ( ( true anomaly ) / 2 ) */ THAT = SHAT/CHAT; if (ECC == 1.0) { /* Parabola: epoch of perihelion. */ TP = date-THAT*(1.0+THAT*THAT/3.0)*H*H2/(2.0*GMU*GMU); } else { /* Hyperbola: epoch of perihelion. */ THHF = sqrt(EM1/EP1)*THAT; F = log(1.0+THHF)-log(1.0-THHF); TP = date-(ECC*sinh(F)-F)/sqrt(-GAR3); } } } /* Return the appropriate set of elements. */ *jform = JF; *orbinc = OI; *anode = iauAnp(BIGOM); *e = ECC; if (JF == 1) { *perih = iauAnp(PL); *aorl = iauAnp(EL); *dm = DN; } else { *perih = iauAnp(OM); if (JF == 2) *aorl = iauAnp(AM); } if (JF != 3) { *epoch = date; *aorq = 1.0/AR; } else { *epoch = TP; *aorq = Q; } *jstat = 0; } pal-0.3.0/palPv2ue.c000644 000161 000120 00000012336 12014745436 014221 0ustar00timjadmin000000 000000 /* *+ * Name: * palPv2ue * Purpose: * Universal elements to position and velocity. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palPv2ue( const double pv[6], double date, double pmass, * double u[13], int * jstat ); * Arguments: * pv = double [6] (Given) * Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1) * date = double (Given) * Date (TT modified Julian Date = JD-2400000.5) * pmass = double (Given) * Mass of the planet (Sun=1; note 2) * u = double [13] (Returned) * Universal orbital elements (Note 3) * * - (0) combined mass (M+m) * - (1) total energy of the orbit (alpha) * - (2) reference (osculating) epoch (t0) * - (3-5) position at reference epoch (r0) * - (6-8) velocity at reference epoch (v0) * - (9) heliocentric distance at reference epoch * - (10) r0.v0 * - (11) date (t) * - (12) universal eccentric anomaly (psi) of date, approx * jstat = int * (Returned) * status: 0 = OK * - -1 = illegal PMASS * - -2 = too close to Sun * - -3 = too slow * Description: * Construct a universal element set based on an instantaneous position * and velocity. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The PV 6-vector can be with respect to any chosen inertial frame, * and the resulting universal-element set will be with respect to * the same frame. A common choice will be mean equator and ecliptic * of epoch J2000. * - The mass, PMASS, is important only for the larger planets. For * most purposes (e.g. asteroids) use 0D0. Values less than zero * are illegal. * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - Reference: Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-09 (TIMJ): * Initial version from the SLA/F implementation. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palPv2ue( const double pv[6], double date, double pmass, double u[13], int * jstat ) { /* Canonical days to seconds */ const double CD2S = PAL__GCON / PAL__SPD; /* Minimum allowed distance (AU) and speed (AU per canonical day) */ const double RMIN = 1e-3; const double VMIN = 1e-3; double T0,CM,X,Y,Z,XD,YD,ZD,R,V2,V,ALPHA,RDV; /* Reference epoch. */ T0 = date; /* Combined mass (mu=M+m). */ if (pmass < 0.0 ) { /* Negative planet mass */ *jstat = -1; return; } CM = 1.0+pmass; /* Unpack the state vector, expressing velocity in AU per canonical day. */ X = pv[0]; Y = pv[1]; Z = pv[2]; XD = pv[3]/CD2S; YD = pv[4]/CD2S; ZD = pv[5]/CD2S; /* Heliocentric distance, and speed. */ R = sqrt(X*X+Y*Y+Z*Z); V2 = XD*XD+YD*YD+ZD*ZD; V = sqrt(V2); /* Reject unreasonably small values. */ if (R < RMIN) { /* Too close */ *jstat = -2; return; } if (V < VMIN) { /* Too slow */ *jstat = -3; return; } /* Total energy of the orbit. */ ALPHA = V2-2.0*CM/R; /* Outward component of velocity. */ RDV = X*XD+Y*YD+Z*ZD; /* Construct the universal-element set. */ u[0] = CM; u[1] = ALPHA; u[2] = T0; u[3] = X; u[4] = Y; u[5] = Z; u[6] = XD; u[7] = YD; u[8] = ZD; u[9] = R; u[10] = RDV; u[11] = T0; u[12] = 0.0; *jstat = 0; return; } pal-0.3.0/palPvobs.c000644 000161 000120 00000004744 12014745436 014315 0ustar00timjadmin000000 000000 /* *+ * Name: * palPvobs * Purpose: * Position and velocity of an observing station. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * palPvobs( double p, double h, double stl, double pv[6] ) * Arguments: * p = double (Given) * Latitude (geodetic, radians). * h = double (Given) * Height above reference spheroid (geodetic, metres). * stl = double (Given) * Local apparent sidereal time (radians). * pv = double[ 6 ] (Returned) * position/velocity 6-vector (AU, AU/s, true equator * and equinox of date). * Description: * Returns the position and velocity of an observing station. * Notes: * - The WGS84 reference ellipsoid is used. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-16 (DSB): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" #include "palmac.h" #include "sofam.h" void palPvobs( double p, double h, double stl, double pv[6] ){ /* Local Variables: */ double xyz[3], z, r, s, c, v; /* Geodetic to geocentric conversion (WGS84 reference ellipsoid). */ iauGd2gc( 1, 0.0, p, h, xyz ); /* Convert from metres to AU */ r = xyz[ 0 ]/DAU; z = xyz[ 2 ]/DAU; /* Functions of ST. */ s = sin( stl ); c = cos( stl ); /* Speed. */ v = PAL__SR*r; /* Position. */ pv[ 0 ] = r*c; pv[ 1 ] = r*s; pv[ 2 ] = z; /* Velocity. */ pv[ 3 ] = -v*s; pv[ 4 ] = v*c; pv[ 5 ] = 0.0; } pal-0.3.0/palRdplan.c000644 000161 000120 00000012477 12014745436 014446 0ustar00timjadmin000000 000000 /* *+ * Name: * palRdplan * Purpose: * Approximate topocentric apparent RA,Dec of a planet * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palRdplan( double date, int np, double elong, double phi, * double * ra, double * dec, double * diam ); * Arguments: * date = double (Given) * MJD of observation (JD-2400000.5) in TDB. For all practical * purposes TT can be used instead of TDB, and for many applications * UT will do (except for the Moon). * np = int (Given) * Planet: 1 = Mercury * 2 = Venus * 3 = Moon * 4 = Mars * 5 = Jupiter * 6 = Saturn * 7 = Uranus * 8 = Neptune * else = Sun * elong = double (Given) * Observer's east longitude (radians) * phi = double (Given) * Observer's geodetic latitude (radians) * ra = double * (Returned) * RA (topocentric apparent, radians) * dec = double * (Returned) * Dec (topocentric apparent, radians) * diam = double * (Returned) * Angular diameter (equatorial, radians) * Description: * Approximate topocentric apparent RA,Dec of a planet, and its * angular diameter. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Unlike with slaRdplan, Pluto is not supported. * - The longitude and latitude allow correction for geocentric * parallax. This is a major effect for the Moon, but in the * context of the limited accuracy of the present routine its * effect on planetary positions is small (negligible for the * outer planets). Geocentric positions can be generated by * appropriate use of the routines palDmoon and iauPlan94. * History: * 2012-03-07 (TIMJ): * Initial version, with some documentation from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" #include "sofa.h" void palRdplan( double date, int np, double elong, double phi, double * ra, double * dec, double * diam ) { /* AU in km */ const double AUKM = 1.49597870e8; /* Equatorial radii (km) */ const double EQRAU[] = { 696000.0, /* Sun */ 2439.7, 6051.9, 1738, 3397, 71492, 60268, 25559, 24764 }; /* Local variables */ int i, j; double stl; double vgm[6]; double v[6]; double rmat[3][3]; double vse[6]; double vsg[6]; double vsp[6]; double vgo[6]; double dx,dy,dz,r,tl; /* Classify np */ if (np < 0 || np > 8 ) np=0; /* Sun */ /* Approximate local sidereal time */ stl = palGmst( date - palDt( palEpj(date)) / 86400.0) + elong; /* Geocentre to Moon (mean of date) */ palDmoon( date, v ); /* Nutation to true of date */ palNut( date, rmat ); iauRxp( rmat, v, vgm ); iauRxp( rmat, &(v[3]), &(vgm[3]) ); /* Moon? */ if (np == 3) { /* geocentre to Moon (true of date) */ for (i=0; i<6; i++) { v[i] = vgm[i]; } } else { /* Not moon: precession/nutation matrix J2000 to date */ palPrenut( 2000.0, date, rmat ); /* Sun to Earth-Moon Barycentre (J2000) */ palPlanet( date, 3, v, &j ); /* Precession and nutation to date */ iauRxp( rmat, v, vse ); iauRxp( rmat, &(v[3]), &(vse[3]) ); /* Sun to geocentre (true of date) */ for (i=0; i<6; i++) { vsg[i] = vse[i] - 0.012150581 * vgm[i]; } /* Sun ? */ if (np == 0) { /* Geocentre to Sun */ for (i=0; i<6; i++) { v[i] = -vsg[i]; } } else { /* Sun to Planet (J2000) */ palPlanet( date, np, v, &j ); /* Precession and nutation to date */ iauRxp( rmat, v, vsp ); iauRxp( rmat, &(v[3]), &(vsp[3]) ); /* Geocentre to planet */ for (i=0; i<6; i++) { v[i] = vsp[i] - vsg[i]; } } } /* Refer to origina at the observer */ palPvobs( phi, 0.0, stl, vgo ); for (i=0; i<6; i++) { v[i] -= vgo[i]; } /* Geometric distance (AU) */ dx = v[0]; dy = v[1]; dz = v[2]; r = sqrt( dx*dx + dy*dy + dz*dz ); /* Light time */ tl = PAL__CR * r; /* Correct position for planetary aberration */ for (i=0; i<3; i++) { v[i] -= tl * v[i+3]; } /* To RA,Dec */ iauC2s( v, ra, dec ); *ra = iauAnp( *ra ); /* Angular diameter (radians) */ *diam = 2.0 * asin( EQRAU[np] / (r * AUKM ) ); } pal-0.3.0/palRefco.c000644 000161 000120 00000007347 12017004102 014241 0ustar00timjadmin000000 000000 /* *+ * Name: * palRefco * Purpose: * Determine constants in atmospheric refraction model * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palRefco ( double hm, double tdk, double pmb, double rh, * double wl, double phi, double tlr, double eps, * double *refa, double *refb ); * Arguments: * hm = double (Given) * Height of the observer above sea level (metre) * tdk = double (Given) * Ambient temperature at the observer (K) * pmb = double (Given) * Pressure at the observer (millibar) * rh = double (Given) * Relative humidity at the observer (range 0-1) * wl = double (Given) * Effective wavelength of the source (micrometre) * phi = double (Given) * Latitude of the observer (radian, astronomical) * tlr = double (Given) * Temperature lapse rate in the troposphere (K/metre) * eps = double (Given) * Precision required to terminate iteration (radian) * refa = double * (Returned) * tan Z coefficient (radian) * refb = double * (Returned) * tan**3 Z coefficient (radian) * Description: * Determine the constants A and B in the atmospheric refraction * model dZ = A tan Z + B tan**3 Z. * * Z is the "observed" zenith distance (i.e. affected by refraction) * and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo) * zenith distance. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - Typical values for the TLR and EPS arguments might be 0.0065D0 and * 1D-10 respectively. * * - The radio refraction is chosen by specifying WL > 100 micrometres. * * - The routine is a slower but more accurate alternative to the * palRefcoq routine. The constants it produces give perfect * agreement with palRefro at zenith distances arctan(1) (45 deg) * and arctan(4) (about 76 deg). It achieves 0.5 arcsec accuracy * for ZD < 80 deg, 0.01 arcsec accuracy for ZD < 60 deg, and * 0.001 arcsec accuracy for ZD < 45 deg. * History: * 2012-08-24 (TIMJ): * Initial version. A direct copy of the Fortran SLA implementation. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ void palRefco ( double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double *refa, double *refb ) { double r1, r2; /* Sample zenith distances: arctan(1) and arctan(4) */ const double ATN1 = 0.7853981633974483; const double ATN4 = 1.325817663668033; /* Determine refraction for the two sample zenith distances */ palRefro(ATN1,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r1); palRefro(ATN4,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r2); /* Solve for refraction constants */ *refa = (64.0*r1-r2)/60.0; *refb = (r2-4.0*r1)/60.0; } pal-0.3.0/palRefro.c000644 000161 000120 00000033455 12017004112 014260 0ustar00timjadmin000000 000000 /* *+ * Name: * palRefro * Purpose: * Atmospheric refraction for radio and optical/IR wavelengths * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palRefro( double zobs, double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double * ref ) { * Arguments: * zobs = double (Given) * Observed zenith distance of the source (radian) * hm = double (Given) * Height of the observer above sea level (metre) * tdk = double (Given) * Ambient temperature at the observer (K) * pmb = double (Given) * Pressure at the observer (millibar) * rh = double (Given) * Relative humidity at the observer (range 0-1) * wl = double (Given) * Effective wavelength of the source (micrometre) * phi = double (Given) * Latitude of the observer (radian, astronomical) * tlr = double (Given) * Temperature lapse rate in the troposphere (K/metre) * eps = double (Given) * Precision required to terminate iteration (radian) * ref = double * (Returned) * Refraction: in vacuao ZD minus observed ZD (radian) * Description: * Calculates the atmospheric refraction for radio and optical/IR * wavelengths. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - A suggested value for the TLR argument is 0.0065. The * refraction is significantly affected by TLR, and if studies * of the local atmosphere have been carried out a better TLR * value may be available. The sign of the supplied TLR value * is ignored. * * - A suggested value for the EPS argument is 1E-8. The result is * usually at least two orders of magnitude more computationally * precise than the supplied EPS value. * * - The routine computes the refraction for zenith distances up * to and a little beyond 90 deg using the method of Hohenkerk * and Sinclair (NAO Technical Notes 59 and 63, subsequently adopted * in the Explanatory Supplement, 1992 edition - see section 3.281). * * - The code is a development of the optical/IR refraction subroutine * AREF of C.Hohenkerk (HMNAO, September 1984), with extensions to * support the radio case. Apart from merely cosmetic changes, the * following modifications to the original HMNAO optical/IR refraction * code have been made: * * . The angle arguments have been changed to radians. * * . Any value of ZOBS is allowed (see note 6, below). * * . Other argument values have been limited to safe values. * * . Murray's values for the gas constants have been used * (Vectorial Astrometry, Adam Hilger, 1983). * * . The numerical integration phase has been rearranged for * extra clarity. * * . A better model for Ps(T) has been adopted (taken from * Gill, Atmosphere-Ocean Dynamics, Academic Press, 1982). * * . More accurate expressions for Pwo have been adopted * (again from Gill 1982). * * . The formula for the water vapour pressure, given the * saturation pressure and the relative humidity, is from * Crane (1976), expression 2.5.5. * . Provision for radio wavelengths has been added using * expressions devised by A.T.Sinclair, RGO (private * communication 1989). The refractivity model currently * used is from J.M.Rueger, "Refractive Index Formulae for * Electronic Distance Measurement with Radio and Millimetre * Waves", in Unisurv Report S-68 (2002), School of Surveying * and Spatial Information Systems, University of New South * Wales, Sydney, Australia. * * . The optical refractivity for dry air is from Resolution 3 of * the International Association of Geodesy adopted at the XXIIth * General Assembly in Birmingham, UK, 1999. * * . Various small changes have been made to gain speed. * * - The radio refraction is chosen by specifying WL > 100 micrometres. * Because the algorithm takes no account of the ionosphere, the * accuracy deteriorates at low frequencies, below about 30 MHz. * * - Before use, the value of ZOBS is expressed in the range +/- pi. * If this ranged ZOBS is -ve, the result REF is computed from its * absolute value before being made -ve to match. In addition, if * it has an absolute value greater than 93 deg, a fixed REF value * equal to the result for ZOBS = 93 deg is returned, appropriately * signed. * * - As in the original Hohenkerk and Sinclair algorithm, fixed values * of the water vapour polytrope exponent, the height of the * tropopause, and the height at which refraction is negligible are * used. * * - The radio refraction has been tested against work done by * Iain Coulson, JACH, (private communication 1995) for the * James Clerk Maxwell Telescope, Mauna Kea. For typical conditions, * agreement at the 0.1 arcsec level is achieved for moderate ZD, * worsening to perhaps 0.5-1.0 arcsec at ZD 80 deg. At hot and * humid sea-level sites the accuracy will not be as good. * * - It should be noted that the relative humidity RH is formally * defined in terms of "mixing ratio" rather than pressures or * densities as is often stated. It is the mass of water per unit * mass of dry air divided by that for saturated air at the same * temperature and pressure (see Gill 1982). * - The algorithm is designed for observers in the troposphere. The * supplied temperature, pressure and lapse rate are assumed to be * for a point in the troposphere and are used to define a model * atmosphere with the tropopause at 11km altitude and a constant * temperature above that. However, in practice, the refraction * values returned for stratospheric observers, at altitudes up to * 25km, are quite usable. * History: * 2012-08-24 (TIMJ): * Initial version, direct port of SLA Fortran source. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palRefro( double zobs, double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double * ref ) { /* * Fixed parameters */ /* 93 degrees in radians */ const double D93 = 1.623156204; /* Universal gas constant */ const double GCR = 8314.32; /* Molecular weight of dry air */ const double DMD = 28.9644; /* Molecular weight of water vapour */ const double DMW = 18.0152; /* Mean Earth radius (metre) */ const double S = 6378120.; /* Exponent of temperature dependence of water vapour pressure */ const double DELTA = 18.36; /* Height of tropopause (metre) */ const double HT = 11000.; /* Upper limit for refractive effects (metre) */ const double HS = 80000.; /* Numerical integration: maximum number of strips. */ const int ISMAX=16384l; /* Local variables */ int is, k, n, i, j; int optic, loop; /* booleans */ double zobs1,zobs2,hmok,tdkok,pmbok,rhok,wlok,alpha, tol,wlsq,gb,a,gamal,gamma,gamm2,delm2, tdc,psat,pwo,w, c1,c2,c3,c4,c5,c6,r0,tempo,dn0,rdndr0,sk0,f0, rt,tt,dnt,rdndrt,sine,zt,ft,dnts,rdndrp,zts,fts, rs,dns,rdndrs,zs,fs,refold,z0,zrange,fb,ff,fo,fe, h,r,sz,rg,dr,tg,dn,rdndr,t,f,refp,reft; /* The refraction integrand */ #define refi(DN,RDNDR) RDNDR/(DN+RDNDR) /* Transform ZOBS into the normal range. */ zobs1 = palDrange(zobs); zobs2 = DMIN(fabs(zobs1),D93); /* keep other arguments within safe bounds. */ hmok = DMIN(DMAX(hm,-1e3),HS); tdkok = DMIN(DMAX(tdk,100.0),500.0); pmbok = DMIN(DMAX(pmb,0.0),10000.0); rhok = DMIN(DMAX(rh,0.0),1.0); wlok = DMAX(wl,0.1); alpha = DMIN(DMAX(fabs(tlr),0.001),0.01); /* tolerance for iteration. */ tol = DMIN(DMAX(fabs(eps),1e-12),0.1)/2.0; /* decide whether optical/ir or radio case - switch at 100 microns. */ optic = wlok < 100.0; /* set up model atmosphere parameters defined at the observer. */ wlsq = wlok*wlok; gb = 9.784*(1.0-0.0026*cos(phi+phi)-0.00000028*hmok); if (optic) { a = (287.6155+(1.62887+0.01360/wlsq)/wlsq) * 273.15e-6/1013.25; } else { a = 77.6890e-6; } gamal = (gb*DMD)/GCR; gamma = gamal/alpha; gamm2 = gamma-2.0; delm2 = DELTA-2.0; tdc = tdkok-273.15; psat = pow(10.0,(0.7859+0.03477*tdc)/(1.0+0.00412*tdc)) * (1.0+pmbok*(4.5e-6+6.0e-10*tdc*tdc)); if (pmbok > 0.0) { pwo = rhok*psat/(1.0-(1.0-rhok)*psat/pmbok); } else { pwo = 0.0; } w = pwo*(1.0-DMW/DMD)*gamma/(DELTA-gamma); c1 = a*(pmbok+w)/tdkok; if (optic) { c2 = (a*w+11.2684e-6*pwo)/tdkok; } else { c2 = (a*w+6.3938e-6*pwo)/tdkok; } c3 = (gamma-1.0)*alpha*c1/tdkok; c4 = (DELTA-1.0)*alpha*c2/tdkok; if (optic) { c5 = 0.0; c6 = 0.0; } else { c5 = 375463e-6*pwo/tdkok; c6 = c5*delm2*alpha/(tdkok*tdkok); } /* conditions at the observer. */ r0 = S+hmok; pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6, r0,&tempo,&dn0,&rdndr0); sk0 = dn0*r0*sin(zobs2); f0 = refi(dn0,rdndr0); /* conditions in the troposphere at the tropopause. */ rt = S+DMAX(HT,hmok); pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6, rt,&tt,&dnt,&rdndrt); sine = sk0/(rt*dnt); zt = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0))); ft = refi(dnt,rdndrt); /* conditions in the stratosphere at the tropopause. */ pal1Atms(rt,tt,dnt,gamal,rt,&dnts,&rdndrp); sine = sk0/(rt*dnts); zts = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0))); fts = refi(dnts,rdndrp); /* conditions at the stratosphere limit. */ rs = S+HS; pal1Atms(rt,tt,dnt,gamal,rs,&dns,&rdndrs); sine = sk0/(rs*dns); zs = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0))); fs = refi(dns,rdndrs); /* variable initialization to avoid compiler warning. */ reft = 0.0; /* integrate the refraction integral in two parts; first in the * troposphere (k=1), then in the stratosphere (k=2). */ for (k=1; k<=2; k++) { /* initialize previous refraction to ensure at least two iterations. */ refold = 1.0; /* start off with 8 strips. */ is = 8; /* start z, z range, and start and end values. */ if (k==1) { z0 = zobs2; zrange = zt-z0; fb = f0; ff = ft; } else { z0 = zts; zrange = zs-z0; fb = fts; ff = fs; } /* sums of odd and even values. */ fo = 0.0; fe = 0.0; /* first time through the loop we have to do every point. */ n = 1; /* start of iteration loop (terminates at specified precision). */ loop = 1; while (loop) { /* strip width. */ h = zrange/((double)is); /* initialize distance from earth centre for quadrature pass. */ if (k == 1) { r = r0; } else { r = rt; } /* one pass (no need to compute evens after first time). */ for (i=1; i 1e-20) { w = sk0/sz; rg = r; dr = 1.0e6; j = 0; while ( fabs(dr) > 1.0 && j < 4 ) { j++; if (k==1) { pal1Atmt(r0,tdkok,alpha,gamm2,delm2, c1,c2,c3,c4,c5,c6,rg,&tg,&dn,&rdndr); } else { pal1Atms(rt,tt,dnt,gamal,rg,&dn,&rdndr); } dr = (rg*dn-w)/(dn+rdndr); rg = rg-dr; } r = rg; } /* find the refractive index and integrand at r. */ if (k==1) { pal1Atmt(r0,tdkok,alpha,gamm2,delm2, c1,c2,c3,c4,c5,c6,r,&t,&dn,&rdndr); } else { pal1Atms(rt,tt,dnt,gamal,r,&dn,&rdndr); } f = refi(dn,rdndr); /* accumulate odd and (first time only) even values. */ if (n==1 && i%2 == 0) { fe += f; } else { fo += f; } } /* evaluate the integrand using simpson's rule. */ refp = h*(fb+4.0*fo+2.0*fe+ff)/3.0; /* has the required precision been achieved (or can't be)? */ if (fabs(refp-refold) > tol && is < ISMAX) { /* no: prepare for next iteration.*/ /* save current value for convergence test. */ refold = refp; /* double the number of strips. */ is += is; /* sum of all current values = sum of next pass's even values. */ fe += fo; /* prepare for new odd values. */ fo = 0.0; /* skip even values next time. */ n = 2; } else { /* yes: save troposphere component and terminate the loop. */ if (k==1) reft = refp; loop = 0; } } } /* result. */ *ref = reft+refp; if (zobs1 < 0.0) *ref = -(*ref); } pal-0.3.0/palRefz.c000644 000161 000120 00000013545 12017004122 014110 0ustar00timjadmin000000 000000 /* *+ * Name: * palRefz * Purpose: * Adjust unrefracted zenith distance * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palRefz ( double zu, double refa, double refb, double *zr ); * Arguments: * zu = double (Given) * Unrefracted zenith distance of the source (radians) * refa = double (Given) * tan Z coefficient (radians) * refb = double (Given) * tan**3 Z coefficient (radian) * zr = double * (Returned) * Refracted zenith distance (radians) * Description: * Adjust an unrefracted zenith distance to include the effect of * atmospheric refraction, using the simple A tan Z + B tan**3 Z * model (plus special handling for large ZDs). * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - This routine applies the adjustment for refraction in the * opposite sense to the usual one - it takes an unrefracted * (in vacuo) position and produces an observed (refracted) * position, whereas the A tan Z + B tan**3 Z model strictly * applies to the case where an observed position is to have the * refraction removed. The unrefracted to refracted case is * harder, and requires an inverted form of the text-book * refraction models; the formula used here is based on the * Newton-Raphson method. For the utmost numerical consistency * with the refracted to unrefracted model, two iterations are * carried out, achieving agreement at the 1D-11 arcseconds level * for a ZD of 80 degrees. The inherent accuracy of the model * is, of course, far worse than this - see the documentation for * palRefco for more information. * * - At ZD 83 degrees, the rapidly-worsening A tan Z + B tan^3 Z * model is abandoned and an empirical formula takes over. For * optical/IR wavelengths, over a wide range of observer heights and * corresponding temperatures and pressures, the following levels of * accuracy (arcsec, worst case) are achieved, relative to numerical * integration through a model atmosphere: * * ZR error * * 80 0.7 * 81 1.3 * 82 2.4 * 83 4.7 * 84 6.2 * 85 6.4 * 86 8 * 87 10 * 88 15 * 89 30 * 90 60 * 91 150 } relevant only to * 92 400 } high-elevation sites * * For radio wavelengths the errors are typically 50% larger than * the optical figures and by ZD 85 deg are twice as bad, worsening * rapidly below that. To maintain 1 arcsec accuracy down to ZD=85 * at the Green Bank site, Condon (2004) has suggested amplifying * the amount of refraction predicted by palRefz below 10.8 deg * elevation by the factor (1+0.00195*(10.8-E_t)), where E_t is the * unrefracted elevation in degrees. * * The high-ZD model is scaled to match the normal model at the * transition point; there is no glitch. * * - Beyond 93 deg zenith distance, the refraction is held at its * 93 deg value. * * - See also the routine palRefv, which performs the adjustment in * Cartesian Az/El coordinates, and with the emphasis on speed * rather than numerical accuracy. * References: * Condon,J.J., Refraction Corrections for the GBT, PTCS/PN/35.2, * NRAO Green Bank, 2004. * History: * 2012-08-24 (TIMJ): * Initial version, ported directly from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palRefz ( double zu, double refa, double refb, double *zr ) { /* Constants */ /* Largest usable ZD (deg) */ const double D93 = 93.0; /* ZD at which one model hands over to the other (radians) */ const double Z83 = 83.0 * PAL__DD2R; /* coefficients for high ZD model (used beyond ZD 83 deg) */ const double C1 = +0.55445; const double C2 = -0.01133; const double C3 = +0.00202; const double C4 = +0.28385; const double C5 = +0.02390; /* High-ZD-model prefiction (deg) for that point */ const double REF83 = (C1+C2*7.0+C3*49.0)/(1.0+C4*7.0+C5*49.0); double zu1,zl,s,c,t,tsq,tcu,ref,e,e2; /* perform calculations for zu or 83 deg, whichever is smaller */ zu1 = DMIN(zu,Z83); /* functions of ZD */ zl = zu1; s = sin(zl); c = cos(zl); t = s/c; tsq = t*t; tcu = t*tsq; /* refracted zd (mathematically to better than 1 mas at 70 deg) */ zl = zl-(refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c)); /* further iteration */ s = sin(zl); c = cos(zl); t = s/c; tsq = t*t; tcu = t*tsq; ref = zu1-zl+ (zl-zu1+refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c)); /* special handling for large zu */ if (zu > zu1) { e = 90.0-DMIN(D93,zu*PAL__DR2D); e2 = e*e; ref = (ref/REF83)*(C1+C2*e+C3*e2)/(1.0+C4*e+C5*e2); } /* return refracted zd */ *zr = zu-ref; } pal-0.3.0/palRverot.c000644 000161 000120 00000004767 12014745436 014512 0ustar00timjadmin000000 000000 /* *+ * Name: * palRverot * Purpose: * Velocity component in a given direction due to Earth rotation * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palRverot ( double phi, double ra, double da, double st ); * Arguments: * phi = double (Given) * latitude of observing station (geodetic) (radians) * ra = double (Given) * apparent RA (radians) * da = double (Given) * apparent Dec (radians) * st = double (Given) 8 Local apparent sidereal time. * Returned Value: * palRverot = double * Component of Earth rotation in direction RA,DA (km/s). * The result is +ve when the observatory is receding from the * given point on the sky. * Description: * Calculate the velocity component in a given direction due to Earth * rotation. * * The simple algorithm used assumes a spherical Earth, of * a radius chosen to give results accurate to about 0.0005 km/s * for observing stations at typical latitudes and heights. For * applications requiring greater precision, use the routine * palPvobs. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-03-02 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include double palRverot ( double phi, double ra, double da, double st ) { /* Nominal mean sidereal speed of Earth equator in km/s (the actual * value is about 0.4651) */ const double espeed = 0.4655; return espeed * cos(phi) * sin(st-ra) * cos(da); } pal-0.3.0/palRvgalc.c000644 000161 000120 00000005701 12014745436 014434 0ustar00timjadmin000000 000000 /* *+ * Name: * palRvgalc * Purpose: * Velocity component in a given direction due to the rotation * of the Galaxy. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palRvgalc( double r2000, double d2000 ) * Arguments: * r2000 = double (Given) * J2000.0 mean RA (radians) * d2000 = double (Given) * J2000.0 mean Dec (radians) * Returned Value: * Component of dynamical LSR motion in direction R2000,D2000 (km/s). * Description: * This function returns the Component of dynamical LSR motion in * the direction of R2000,D2000. The result is +ve when the dynamical * LSR is receding from the given point on the sky. * * Notes: * - The Local Standard of Rest used here is a point in the * vicinity of the Sun which is in a circular orbit around * the Galactic centre. Sometimes called the "dynamical" LSR, * it is not to be confused with a "kinematical" LSR, which * is the mean standard of rest of star catalogues or stellar * populations. * * Reference: * - The orbital speed of 220 km/s used here comes from Kerr & * Lynden-Bell (1986), MNRAS, 221, p1023. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-16 (DSB): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" double palRvgalc( double r2000, double d2000 ){ /* Local Variables: */ double vb[ 3 ]; /* * LSR velocity due to Galactic rotation * * Speed = 220 km/s * Apex = L2,B2 90deg, 0deg * = RA,Dec 21 12 01.1 +48 19 47 J2000.0 * * This is expressed in the form of a J2000.0 x,y,z vector: * * VA(1) = X = -SPEED*COS(RA)*COS(DEC) * VA(2) = Y = -SPEED*SIN(RA)*COS(DEC) * VA(3) = Z = -SPEED*SIN(DEC) */ double va[ 3 ] = { -108.70408, +97.86251, -164.33610 }; /* Convert given J2000 RA,Dec to x,y,z. */ iauS2c( r2000, d2000, vb ); /* Compute dot product with LSR motion vector. */ return iauPdp( va, vb ); } pal-0.3.0/palRvlg.c000644 000161 000120 00000005240 12014745436 014126 0ustar00timjadmin000000 000000 /* *+ * Name: * palRvlg * Purpose: * Velocity component in a given direction due to Galactic rotation * and motion of the local group. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palRvlg( double r2000, double d2000 ) * Arguments: * r2000 = double (Given) * J2000.0 mean RA (radians) * d2000 = double (Given) * J2000.0 mean Dec (radians) * Returned Value: * Component of SOLAR motion in direction R2000,D2000 (km/s). * Description: * This function returns the velocity component in a given * direction due to the combination of the rotation of the * Galaxy and the motion of the Galaxy relative to the mean * motion of the local group. The result is +ve when the Sun * is receding from the given point on the sky. * * Reference: * - IAU Trans 1976, 168, p201. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-16 (DSB): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" double palRvlg( double r2000, double d2000 ){ /* Local Variables: */ double vb[ 3 ]; /* * * Solar velocity due to Galactic rotation and translation * * Speed = 300 km/s * * Apex = L2,B2 90deg, 0deg * = RA,Dec 21 12 01.1 +48 19 47 J2000.0 * * This is expressed in the form of a J2000.0 x,y,z vector: * * VA(1) = X = -SPEED*COS(RA)*COS(DEC) * VA(2) = Y = -SPEED*SIN(RA)*COS(DEC) * VA(3) = Z = -SPEED*SIN(DEC) */ double va[ 3 ] = { -148.23284, +133.44888, -224.09467 }; /* Convert given J2000 RA,Dec to x,y,z. */ iauS2c( r2000, d2000, vb ); /* Compute dot product with Solar motion vector. */ return iauPdp( va, vb ); } pal-0.3.0/palRvlsrd.c000644 000161 000120 00000007005 12014745436 014471 0ustar00timjadmin000000 000000 /* *+ * Name: * palRvlsrd * Purpose: * Velocity component in a given direction due to the Sun's motion * with respect to the dynamical Local Standard of Rest. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palRvlsrd( double r2000, double d2000 ) * Arguments: * r2000 = double (Given) * J2000.0 mean RA (radians) * d2000 = double (Given) * J2000.0 mean Dec (radians) * Returned Value: * Component of "peculiar" solar motion in direction R2000,D2000 (km/s). * Description: * This function returns the velocity component in a given direction * due to the Sun's motion with respect to the dynamical Local Standard * of Rest. The result is +ve when the Sun is receding from the given * point on the sky. * Notes: * - The Local Standard of Rest used here is the "dynamical" LSR, * a point in the vicinity of the Sun which is in a circular orbit * around the Galactic centre. The Sun's motion with respect to the * dynamical LSR is called the "peculiar" solar motion. * - There is another type of LSR, called a "kinematical" LSR. A * kinematical LSR is the mean standard of rest of specified star * catalogues or stellar populations, and several slightly different * kinematical LSRs are in use. The Sun's motion with respect to an * agreed kinematical LSR is known as the "standard" solar motion. * To obtain a radial velocity correction with respect to an adopted * kinematical LSR use the routine sla_RVLSRK. * Reference: * - Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-16 (DSB): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" double palRvlsrd( double r2000, double d2000 ){ /* Local Variables: */ double vb[ 3 ]; /* * Peculiar solar motion from Delhaye 1965: in Galactic Cartesian * coordinates (+9,+12,+7) km/s. This corresponds to about 16.6 km/s * towards Galactic coordinates L2 = 53 deg, B2 = +25 deg, or RA,Dec * 17 49 58.7 +28 07 04 J2000. * * The solar motion is expressed here in the form of a J2000.0 * equatorial Cartesian vector: * * VA(1) = X = -SPEED*COS(RA)*COS(DEC) * VA(2) = Y = -SPEED*SIN(RA)*COS(DEC) * VA(3) = Z = -SPEED*SIN(DEC) */ double va[ 3 ] = { +0.63823, +14.58542, -7.80116 }; /* Convert given J2000 RA,Dec to x,y,z. */ iauS2c( r2000, d2000, vb ); /* Compute dot product with Solar motion vector. */ return iauPdp( va, vb ); } pal-0.3.0/palRvlsrk.c000644 000161 000120 00000006630 12014745436 014503 0ustar00timjadmin000000 000000 /* *+ * Name: * palRvlsrk * Purpose: * Velocity component in a given direction due to the Sun's motion * with respect to an adopted kinematic Local Standard of Rest. * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * double palRvlsrk( double r2000, double d2000 ) * Arguments: * r2000 = double (Given) * J2000.0 mean RA (radians) * d2000 = double (Given) * J2000.0 mean Dec (radians) * Returned Value: * Component of "standard" solar motion in direction R2000,D2000 (km/s). * Description: * This function returns the velocity component in a given direction * due to the Sun's motion with respect to an adopted kinematic * Local Standard of Rest. The result is +ve when the Sun is receding * from the given point on the sky. * Notes: * - The Local Standard of Rest used here is one of several * "kinematical" LSRs in common use. A kinematical LSR is the mean * standard of rest of specified star catalogues or stellar * populations. The Sun's motion with respect to a kinematical LSR * is known as the "standard" solar motion. * - There is another sort of LSR, the "dynamical" LSR, which is a * point in the vicinity of the Sun which is in a circular orbit * around the Galactic centre. The Sun's motion with respect to * the dynamical LSR is called the "peculiar" solar motion. To * obtain a radial velocity correction with respect to the * dynamical LSR use the routine sla_RVLSRD. * Reference: * - Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73. * Authors: * PTW: Pat Wallace (STFC) * DSB: David Berry (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-16 (DSB): * Initial version. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" double palRvlsrk( double r2000, double d2000 ){ /* Local Variables: */ double vb[ 3 ]; /* * Standard solar motion (from Methods of Experimental Physics, ed Meeks, * vol 12, part C, sec 6.1.5.2, p281): * * 20 km/s towards RA 18h Dec +30d (1900). * * The solar motion is expressed here in the form of a J2000.0 * equatorial Cartesian vector: * * VA(1) = X = -SPEED*COS(RA)*COS(DEC) * VA(2) = Y = -SPEED*SIN(RA)*COS(DEC) * VA(3) = Z = -SPEED*SIN(DEC) */ double va[ 3 ] = { -0.29000, +17.31726, -10.00141 }; /* Convert given J2000 RA,Dec to x,y,z. */ iauS2c( r2000, d2000, vb ); /* Compute dot product with Solar motion vector. */ return iauPdp( va, vb ); } pal-0.3.0/palSubet.c000644 000161 000120 00000005611 12014745436 014300 0ustar00timjadmin000000 000000 /* *+ * Name: * palSubet * Purpose: * Remove the E-terms from a pre IAU 1976 catalogue RA,Dec * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palSubet ( double rc, double dc, double eq, * double *rm, double *dm ); * Arguments: * rc = double (Given) * RA with E-terms included (radians) * dc = double (Given) * Dec with E-terms included (radians) * eq = double (Given) * Besselian epoch of mean equator and equinox * rm = double * (Returned) * RA without E-terms (radians) * dm = double * (Returned) * Dec without E-terms (radians) * Description: * Remove the E-terms (elliptic component of annual aberration) * from a pre IAU 1976 catalogue RA,Dec to give a mean place. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * Most star positions from pre-1984 optical catalogues (or * derived from astrometry using such stars) embody the * E-terms. This routine converts such a position to a * formal mean place (allowing, for example, comparison with a * pulsar timing position). * See Also: * Explanatory Supplement to the Astronomical Ephemeris, * section 2D, page 48. * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palSubet ( double rc, double dc, double eq, double *rm, double *dm ) { double a[3]; /* The E-terms */ double v[3]; double f; int i; /* Note the preference for IAU routines */ /* Retrieve the E-terms */ palEtrms( eq, a ); /* Spherical to Cartesian */ iauS2c( rc, dc, v ); /* Include the E-terms */ f = 1.0 + iauPdp( v, a ); for (i=0; i<3; i++) { v[i] = f*v[i] - a[i]; } /* Cartesian to spherical */ iauC2s( v, rm, dm ); /* Bring RA into conventional range */ *rm = iauAnp( *rm ); } pal-0.3.0/palSupgal.c000644 000161 000120 00000006003 12014745436 014445 0ustar00timjadmin000000 000000 /* *+ * Name: * palSupgal * Purpose: * Convert from supergalactic to galactic coordinates * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palSupgal ( double dsl, double dsb, double *dl, double *db ); * Arguments: * dsl = double (Given) * Supergalactic longitude. * dsb = double (Given) * Supergalactic latitude. * dl = double * (Returned) * Galactic longitude. * db = double * (Returned) * Galactic latitude. * Description: * Transformation from de Vaucouleurs supergalactic coordinates * to IAU 1958 galactic coordinates * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * See Also: * - de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference * Catalogue of Bright Galaxies, U. Texas, page 8. * - Systems & Applied Sciences Corp., Documentation for the * machine-readable version of the above catalogue, * Contract NAS 5-26490. * * (These two references give different values for the galactic * longitude of the supergalactic origin. Both are wrong; the * correct value is L2=137.37.) * History: * 2012-02-12(TIMJ): * Initial version with documentation taken from Fortran SLA * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "sofa.h" void palSupgal ( double dsl, double dsb, double *dl, double *db ) { double v1[3]; double v2[3]; /* * System of supergalactic coordinates: * * SGL SGB L2 B2 (deg) * - +90 47.37 +6.32 * 0 0 - 0 * * Galactic to supergalactic rotation matrix: */ double rmat[3][3] = { { -0.735742574804,+0.677261296414,+0.000000000000 }, { -0.074553778365,-0.080991471307,+0.993922590400 }, { +0.673145302109,+0.731271165817,+0.110081262225 } }; /* Spherical to Cartesian */ iauS2c( dsl, dsb, v1 ); /* Supergalactic to galactic */ iauTrxp( rmat, v1, v2 ); /* Cartesian to spherical */ iauC2s( v2, dl, db ); /* Express in conventional ranges */ *dl = iauAnp( *dl ); *db = iauAnpm( *db ); } pal-0.3.0/palTest.c000644 000161 000120 00000151407 12017003602 014123 0ustar00timjadmin000000 000000 /* *+ * Name: * palTest * Purpose: * Test the PAL library * Language: * Starlink ANSI C * Type of Module: * Application * Description: * Test the PAL library is functioning correctly. Uses some of the SLA test code. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * History: * 2012-02-08 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA. * Bugs: * {note_any_bugs_here} *- */ #include #include #include #include "pal.h" #include "palmac.h" static int verbose = 1; /* Support functions to allow to test results. viv and vvd match the SOFA implementations */ static void viv(int ival, int ivalok, const char *func, const char *test, int *status) /* ** - - - - ** v i v ** - - - - ** ** Validate an integer result. ** ** Internal function used by t_sofa_c program. ** ** Given: ** ival int value computed by function under test ** ivalok int correct value ** func char[] name of function under test ** test char[] name of individual test ** ** Given and returned: ** status int set to FALSE if test fails ** ** This revision: 2009 November 4 */ { if (ival != ivalok) { *status = 1; printf("%s failed: %s want %d got %d\n", func, test, ivalok, ival); } else if (verbose) { printf("%s passed: %s want %d got %d\n", func, test, ivalok, ival); } return; } static void vvd(double val, double valok, double dval, const char *func, const char *test, int *status) /* ** - - - - ** v v d ** - - - - ** ** Validate a double result. ** ** Internal function used by t_sofa_c program. ** ** Given: ** val double value computed by function under test ** valok double expected value ** dval double maximum allowable error ** func char[] name of function under test ** test char[] name of individual test ** ** Given and returned: ** status int set to FALSE if test fails ** ** This revision: 2008 June 8 */ { double a, f; /* absolute and fractional error */ a = val - valok; if (fabs(a) > dval) { f = fabs(valok / a); *status = 1; printf("%s failed: %s want %.20g got %.20g (1/%.3g)\n", func, test, valok, val, f); } else if (verbose) { printf("%s passed: %s want %.20g got %.20g\n", func, test, valok, val); } return; } /* Verify a string */ static void vcs( const char * val, const char * valok, const char * func, const char * test, int *status ) { if (strcmp(val, valok) != 0) { *status = 1; printf("%s failed: %s want %s got %s\n", func, test, valok, val ); } else if (verbose) { printf("%s passed: %s want %s got %s\n", func, test, valok, val ); } return; } /* Verify the 3x3 rmat matrix */ static void vrmat( double rmat[3][3], double expected[3][3], const char * func, double dval, int * status ) { int i; char buf[10]; for( i = 0; i < 3; i++ ) { int j; for( j = 0; j < 3; j++ ) { sprintf( buf, "%d,%d", i, j ); vvd( rmat[i][j], expected[i][j], dval, func, buf, status ); } } } /* Verify a vector */ static void vvec( int len, double *vec, double *expected, const char *func, int *status ) { int i; char buf[10]; for( i = 0; i < len; i++ ) { sprintf( buf, "%d", i ); vvd( vec[i], expected[i], 1e-12, func, buf, status ); } } /******************************************************************/ /* TEST FUNCTIONS */ /* Adding E-terms */ static void t_addet( int *status ) { double r1,d1,r2,d2; double rm = 2.; double dm = -1.; double eq = 1975.; palAddet ( rm, dm, eq, &r1, &d1 ); vvd ( r1 - rm, 2.983864874295250e-6, 1e-12, "palAddet", "R", status ); vvd ( d1 - dm, 2.379650804185118e-7, 1e-12, "palAddet", "D", status ); palSubet ( r1, d1, eq, &r2, &d2 ); vvd ( r2 - rm, 0, 1e-12, "palSubet", "R", status ); vvd ( d2 - dm, 0, 1e-12, "palSubet", "D", status ); } static void t_afin( int * status ) { int j; int i = 1; double d = 0.0; const char * s = "12 34 56.7 |"; const char * s2 = "45 00 00.000 "; palDafin (s, &i, &d, &j); viv ( i, 12, "palDafin", "I", status ); vvd ( d, 0.2196045986911432, 1e-12, "palDafin", "A", status ); viv ( j, 0, "palDafin", "J", status ); i = 1; palDafin (s2, &i, &d, &j); viv ( i, 14, "palDafin", "I", status ); vvd ( d, PAL__DPI/4.0, 1e-12, "palDafin", "A", status ); viv ( j, 0, "palDafin", "J", status ); } /* Airmass */ static void t_airmas( int *status ) { vvd ( palAirmas ( 1.2354 ), 3.015698990074724, 1e-12, "palAirmas", " ", status ); } /* Apparent to mean place */ static void t_amp ( int *status ) { double rm, dm; /* Original SLA test is not accurate since palMapqk differs from slaMapqk */ palAmp ( 2.345, -1.234, 50100, 1990, &rm, &dm ); vvd ( rm, 2.344472180027961, 1e-6, "palAmp", "R", status ); vvd ( dm, -1.233573099847705, 1e-7, "palAmp", "D", status ); /* This is the palMapqk test */ palAmp( 1.234, -0.567, 55927.0, 2010.0, &rm, &dm ); vvd( rm, 1.2335120411026936349, 1.0E-12, "palAmp", "rm", status ); vvd( dm, -0.56702908706930343907, 1.0E-12, "palAmp", "dm", status ); } /* Apparent to Observed place */ static void t_aop ( int *status ) { int i; double rap, dap, date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, aob, zob, hob, dob, rob, aoprms[14]; dap = -0.1234; date = 51000.1; dut = 25.0; elongm = 2.1; phim = 0.5; hm = 3000.0; xp = -0.5e-6; yp = 1.0e-6; tdk = 280.0; pmb = 550.0; rh = 0.6; tlr = 0.006; for (i=1; i<=3; i++) { if ( i == 1 ) { rap = 2.7; wl = 0.45; } else if ( i == 2 ) { rap = 2.345; } else { wl = 1.0e6; } palAop ( rap, dap, date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, &aob, &zob, &hob, &dob, &rob ); if ( i == 1 ) { vvd( aob, 1.812817787123283034, 1e-10, "palAop", "lo aob", status ); vvd( zob, 1.393860816635714034, 1e-8, "palAop", "lo zob", status ); vvd( hob, -1.297808009092456683, 1e-8, "palAop", "lo hob", status ); vvd( dob, -0.122967060534561, 1e-8, "palAop", "lo dob", status ); vvd( rob, 2.699270287872084, 1e-8, "palAop", "lo rob", status ); } else if ( i == 2 ) { vvd( aob, 2.019928026670621442, 1e-10, "palAop", "aob/o", status ); vvd( zob, 1.101316172427482466, 1e-10, "palAop", "zob/o", status ); vvd( hob, -0.9432923558497740862, 1e-10, "palAop", "hob/o", status ); vvd( dob, -0.1232144708194224, 1e-10, "palAop", "dob/o", status ); vvd( rob, 2.344754634629428, 1e-10, "palAop", "rob/o", status ); } else { vvd( aob, 2.019928026670621442, 1e-10, "palAop", "aob/r", status ); vvd( zob, 1.101267532198003760, 1e-10, "palAop", "zob/r", status ); vvd( hob, -0.9432533138143315937, 1e-10, "palAop", "hob/r", status ); vvd( dob, -0.1231850665614878, 1e-10, "palAop", "dob/r", status ); vvd( rob, 2.344715592593984, 1e-10, "palAop", "rob/r", status ); } } date = 48000.3; wl = 0.45; palAoppa ( date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, aoprms ); vvd( aoprms[0], 0.4999993892136306, 1e-13, "palAoppa", "0", status ); vvd( aoprms[1], 0.4794250025886467, 1e-13, "palAoppa", "1", status ); vvd( aoprms[2], 0.8775828547167932, 1e-13, "palAoppa", "2", status ); vvd( aoprms[3], 1.363180872136126e-6, 1e-13, "palAoppa", "3", status ); vvd( aoprms[4], 3000.0, 1e-10, "palAoppa", "4", status ); vvd( aoprms[5], 280.0, 1e-11, "palAoppa", "5", status ); vvd( aoprms[6], 550.0, 1e-11, "palAoppa", "6", status ); vvd( aoprms[7], 0.6, 1e-13, "palAoppa", "7", status ); vvd( aoprms[8], 0.45, 1e-13, "palAoppa", "8", status ); vvd( aoprms[9], 0.006, 1e-15, "palAoppa", "9", status ); vvd( aoprms[10], 0.0001562803328459898, 1e-13, "palAoppa", "10", status ); vvd( aoprms[11], -1.792293660141e-7, 1e-13, "palAoppa", "11", status ); vvd( aoprms[12], 2.101874231495843, 1e-13, "palAoppa", "12", status ); vvd( aoprms[13], 7.601916802079765, 1e-8, "palAoppa", "13", status ); palOap ( "r", 1.6, -1.01, date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap ); vvd( rap, 1.601197569844787, 1e-10, "palOap", "rr", status ); vvd( dap, -1.012528566544262, 1e-10, "palOap", "rd", status ); palOap ( "h", -1.234, 2.34, date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap ); vvd( rap, 5.693087688154886463, 1e-10, "palOap", "hr", status ); vvd( dap, 0.8010281167405444, 1e-10, "palOap", "hd", status ); palOap ( "a", 6.1, 1.1, date, dut, elongm, phim, hm, xp, yp, tdk, pmb, rh, wl, tlr, &rap, &dap ); vvd( rap, 5.894305175192448940, 1e-10, "palOap", "ar", status ); vvd( dap, 1.406150707974922, 1e-10, "palOap", "ad", status ); palOapqk ( "r", 2.1, -0.345, aoprms, &rap, &dap ); vvd( rap, 2.10023962776202, 1e-10, "palOapqk", "rr", status ); vvd( dap, -0.3452428692888919, 1e-10, "palOapqk", "rd", status ); palOapqk ( "h", -0.01, 1.03, aoprms, &rap, &dap ); vvd( rap, 1.328731933634564995, 1e-10, "palOapqk", "hr", status ); vvd( dap, 1.030091538647746, 1e-10, "palOapqk", "hd", status ); palOapqk ( "a", 4.321, 0.987, aoprms, &rap, &dap ); vvd( rap, 0.4375507112075065923, 1e-10, "palOapqk", "ar", status ); vvd( dap, -0.01520898480744436, 1e-10, "palOapqk", "ad", status ); palAoppat ( date + PAL__DS2R, aoprms ); vvd( aoprms[13], 7.602374979243502, 1e-8, "palAoppat", " ", status ); } /* Bearings */ static void t_bear( int *status ) { double a1 = 1.234; double b1 = -0.123; double a2 = 2.345; double b2 = 0.789; double d1[3]; double d2[3]; vvd ( palDbear ( a1, b1, a2, b2 ), 0.7045970341781791, 1e-12, "palDbear", " ", status ); palDcs2c ( a1, b1, d1 ); palDcs2c ( a2, b2, d2 ); vvd ( palDpav ( d1, d2 ), 0.7045970341781791, 1e-12, "palDpav", " ", status ); } /* Calendar to MJD */ static void t_caldj( int *status ) { int j; double djm; palCaldj ( 1999, 12, 31, &djm, &j ); vvd ( djm, 51543, 0, "palCaldj", " ", status ); viv ( j, 0, "palCaldj", "J", status ); } /* palDaf2r */ static void t_caf2r( int * status ) { int j; double dr; palDaf2r ( 76, 54, 32.1, &dr, &j ); vvd ( dr, 1.342313819975276, 1e-12, "palDaf2r", "r", status ); viv ( j, 0, "palDaf2r", "j", status ); } /* Test palDcc2s routines */ static void t_cc2s( int * status ) { double dv[3] = { 100., -50., 25. }; double da, db; palDcc2s ( dv, &da, &db ); vvd ( da, -0.4636476090008061, 1e-12, "palDcc2s", "A", status ); vvd ( db, 0.2199879773954594, 1e-12, "palDcc2s", "B", status ); } /* palDd2tf */ static void t_cd2tf( int *status ) { int ihmsf[4]; char s; palDd2tf ( 4, -0.987654321, &s, ihmsf ); viv ( s, '-', "palDd2tf", "S", status ); viv ( ihmsf[0], 23, "palDd2tf", "(1)", status ); viv ( ihmsf[1], 42, "palDd2tf", "(2)", status ); viv ( ihmsf[2], 13, "palDd2tf", "(3)", status ); viv ( ihmsf[3], 3333, "palDd2tf", "(4)", status ); } /* Calendar to MJD */ static void t_cldj( int *status ) { double d; int j; palCldj ( 1899, 12, 31, &d, &j ); vvd ( d, 15019, 0, "palCldj", "D", status ); viv ( j, 0, "palCldj", "J", status ); } /* palDr2af */ static void t_cr2af( int *status ) { char s; int idmsf[4]; palDr2af ( 4, 2.345, &s, idmsf ); viv ( s, '+', "palDr2af", "S", status ); viv ( idmsf[0], 134, "palDr2af", "(1)", status ); viv ( idmsf[1], 21, "palDr2af", "(2)", status ); viv ( idmsf[2], 30, "palDr2af", "(3)", status ); viv ( idmsf[3], 9706, "palDr2af", "(4)", status ); } /* palDr2tf */ static void t_cr2tf( int *status ) { char s; int ihmsf[4]; palDr2tf ( 4, -3.01234, &s, ihmsf ); viv ( s, '-', "palDr2tf", "S", status ); viv ( ihmsf[0], 11, "palDr2tf", "(1)", status ); viv ( ihmsf[1], 30, "palDr2tf", "(2)", status ); viv ( ihmsf[2], 22, "palDr2tf", "(3)", status ); viv ( ihmsf[3], 6484, "palDr2tf", "(4)", status ); } /* palDtf2d */ static void t_ctf2d( int *status ) { double dd; int j; palDtf2d (23, 56, 59.1, &dd, &j); vvd ( dd, 0.99790625, 1e-12, "palDtf2d", "D", status ); viv ( j, 0, "palDtf2d", "J", status ); } /* palDtf2r */ static void t_ctf2r( int *status ) { double dr; int j; palDtf2r (23, 56, 59.1, &dr, &j); vvd ( dr, 6.270029887942679, 1e-12, "palDtf2r", "R", status ); viv ( j, 0, "palDtf2r", "J", status ); } static void t_dat ( int *status ) { vvd ( palDat ( 43900 ), 18, 0, "palDat", " ", status ); vvd ( palDtt ( 40404 ), 39.709746, 1e-12, "palDtt", " ", status ); vvd ( palDt ( 500 ), 4686.7, 1e-10, "palDt", "500", status ); vvd ( palDt ( 1400 ), 408, 1e-11, "palDt", "1400", status ); vvd ( palDt ( 1950 ), 27.99145626, 1e-12, "palDt", "1950", status ); } /* Dates */ static void t_djcal( int *status ) { const double djm = 50123.9999; int iy, im, id; int iydmf[4]; int j; double f; palDjcal ( 4, djm, iydmf, &j ); viv ( iydmf[0], 1996, "palDjcal", "Y", status ); viv ( iydmf[1], 2, "palDjcal", "M", status ); viv ( iydmf[2], 10, "palDjcal", "D", status ); viv ( iydmf[3], 9999, "palDjcal", "F", status ); viv ( j, 0, "palDjcal", "J", status ); palDjcl ( djm, &iy, &im, &id, &f, &j ); viv ( iy, 1996, "palDjcl", "Y", status ); viv ( im, 2, "palDjcl", "M", status ); viv ( id, 10, "palDjcl", "D", status ); vvd ( f, 0.9999, 1e-7, "palDjcl", "F", status ); viv ( j, 0, "palDjcl", "J", status ); } /* Matrix inversion */ static void t_dmat( int *status ) { int j; int iw[3]; double dd; double da[9] = { 2.22, 1.6578, 1.380522, 1.6578, 1.380522, 1.22548578, 1.380522, 1.22548578, 1.1356276122 }; double dv[3] = { 2.28625, 1.7128825, 1.429432225 }; palDmat( 3, da, dv, &dd, &j, iw ); vvd ( da[0], 18.02550629769198, 1e-10, "palDmat", "a[0]", status ); vvd ( da[1], -52.16386644917280607, 1e-10, "palDmat", "a[1]", status ); vvd ( da[2], 34.37875949717850495, 1e-10, "palDmat", "a[2]", status ); vvd ( da[3], -52.16386644917280607, 1e-10, "palDmat", "a[3]", status ); vvd ( da[4], 168.1778099099805627, 1e-10, "palDmat", "a[4]", status ); vvd ( da[5], -118.0722869694232670, 1e-10, "palDmat", "a[5]", status ); vvd ( da[6], 34.37875949717850495, 1e-10, "palDmat", "a[6]", status ); vvd ( da[7], -118.0722869694232670, 1e-10, "palDmat", "a[7]", status ); vvd ( da[8], 86.50307003740151262, 1e-10, "palDmat", "a[8]", status ); vvd ( dv[0], 1.002346480763383, 1e-12, "palDmat", "v[0]", status ); vvd ( dv[1], 0.03285594016974583489, 1e-12, "palDmat", "v[1]", status ); vvd ( dv[2], 0.004760688414885247309, 1e-12, "palDmat", "v[2]", status ); vvd ( dd, 0.003658344147359863, 1e-12, "palDmat", "D", status ); viv ( j, 0, "palDmat", "J", status ); } /* Test palDe2h and palDh2e routines */ static void t_e2h( int *status ) { double dh, dd, dp, da, de; dh = -0.3; dd = -1.1; dp = -0.7; palDe2h( dh, dd, dp, &da, &de ); vvd( da, 2.820087515852369, 1e-12, "palDe2h", "AZ", status); vvd( de, 1.132711866443304, 1e-12, "palDe2h", "EL", status ); palDh2e( da, de, dp, &dh, &dd ); vvd( dh, -0.3, 1e-12, "palDh2e", "HA", status); vvd( dd, -1.1, 1e-12, "palDh2e", "DEC", status ); } /* Epochs */ static void t_epb( int *status ) { vvd ( palEpb( 45123 ), 1982.419793168669, 1e-8, "palEpb", " ", status ); } static void t_epb2d( int *status ) { vvd ( palEpb2d( 1975.5 ), 42595.5995279655, 1e-7, "palEpb2d", " ", status ); } static void t_epco( int *status ) { vvd ( palEpco ( 'B', 'J', 2000 ), 2000.001277513665, 1e-7, "palEpco", "BJ", status ); vvd ( palEpco ( 'J', 'B', 1950 ), 1949.999790442300, 1e-7, "palEpco", "JB", status ); vvd ( palEpco ( 'J', 'j', 2000 ), 2000, 1e-7, "palEpco", "JJ", status ); } static void t_epj( int *status ) { vvd ( palEpj( 42999 ), 1976.603696098563, 1e-7, "palEpj", " ", status ); } static void t_epj2d( int *status ) { vvd ( palEpj2d( 2010.077 ), 55225.124250, 1e-6, "palEpj2d", " ", status ); } /* Equation of the equinoxes */ /* Use SOFA test because of change in precession model */ static void t_eqeqx (int *status ) { vvd ( palEqeqx( 53736. ), -0.8834195072043790156e-5, 1e-15, "palEqeqx", " ", status ); } /* E-terms */ static void t_etrms( int * status ) { double ev[3]; palEtrms ( 1976.9, ev ); vvd ( ev[0], -1.621617102537041e-6, 1e-18, "palEtrms", "X", status ); vvd ( ev[1], -3.310070088507914e-7, 1e-18, "palEtrms", "Y", status ); vvd ( ev[2], -1.435296627515719e-7, 1e-18, "palEtrms", "Z", status ); } /* J2000 to Galactic */ static void t_eqgal( int *status ) { double dl, db; palEqgal ( 5.67, -1.23, &dl, &db ); vvd ( dl, 5.612270780904526, 1e-12, "palEqgal", "DL", status ); vvd ( db, -0.6800521449061520, 1e-12, "palEqgal", "DB", status ); } /* Galactic to J2000 equatorial */ static void t_galeq( int *status ) { double dr, dd; palGaleq ( 5.67, -1.23, &dr, &dd ); vvd ( dr, 0.04729270418071426, 1e-12, "palGaleq", "DR", status ); vvd ( dd, -0.7834003666745548, 1e-12, "palGaleq", "DD", status ); } /* Galactic to supergalactic */ static void t_galsup(int *status ) { double dsl, dsb; palGalsup ( 6.1, -1.4, &dsl, &dsb ); vvd ( dsl, 4.567933268859171, 1e-12, "palGalsup", "DSL", status ); vvd ( dsb, -0.01862369899731829, 1e-12, "palGalsup", "DSB", status ); } /* Geocentric coordinates */ /* This is not from sla_test.f */ static void t_geoc( int *status ) { double r; double z; /* JCMT */ const double lat = 19.822838905884 * PAL__DD2R; const double alt = 4120.0; palGeoc( lat, alt, &r, &z ); /* Note the lower tolerance than normal since the models in SLA differ from the more up to date model in SOFA */ vvd( r, 4.01502667039618e-05, 1e-10, "palGeoc", "R", status ); vvd( z, 1.43762411970295e-05, 1e-10, "palGeoc", "Z", status ); } /* Galactic to Fk4 */ static void t_ge50 ( int *status ) { double dr, dd; palGe50( 6.1, -1.55, &dr, &dd ); vvd ( dr, 0.1966825219934508, 1e-12, "palGe50", "DR", status ); vvd ( dd, -0.4924752701678960, 1e-12, "palGe50", "DD", status ); } /* GMST */ /* We use the SOFA test values rather than the values from SLA because the precession models have changed */ static void t_gmst( int *status ) { vvd ( palGmst( 53736. ), 1.754174971870091203, 1e-12, "palGmst", " ", status ); vvd ( palGmsta( 53736., 0.0 ), 1.754174971870091203, 1e-12, "palGmsta", " ", status ); } /* FK5 */ static void t_fk52h ( int *status ) { double r5, d5, dr5, dd5, rh, dh; palFk5hz ( 1.234, -0.987, 1980, &rh, &dh ); vvd ( rh, 1.234000136713611301, 1e-13, "palFk5hz", "R", status ); vvd ( dh, -0.9869999702020807601, 1e-13, "palFk5hz", "D", status ); palHfk5z ( rh, dh, 1980, &r5, &d5, &dr5, &dd5 ); vvd ( r5, 1.234, 1e-13, "palHfk5z", "R", status ); vvd ( d5, -0.987, 1e-13, "palHfk5z", "D", status ); vvd ( dr5, 0.000000006822074, 1e-13, "palHfk5z", "DR", status ); vvd ( dd5, -0.000000002334012, 1e-13, "palHfk5z", "DD", status ); } static void t_intin( int *status ) { const char s[] = " -12345, , -0 2000 + "; /* 1234567890123456789012345678 */ int i = 1; long n = 0; int j; palIntin ( s, &i, &n, &j ); viv ( i, 10, "palIntin", "I1", status ); viv ( n, -12345, "palIntin", "V1", status ); viv ( j, -1, "palIntin", "J1", status ); palIntin ( s, &i, &n, &j ); viv ( i, 12, "palIntin", "I2", status ); viv ( n, -12345, "palIntin", "V2", status ); viv ( j, 1, "palIntin", "J2", status ); palIntin ( s, &i, &n, &j ); viv ( i, 17, "palIntin", "I3", status ); viv ( n, 0, "palIntin", "V3", status ); viv ( j, -1, "palIntin", "J3", status ); palIntin ( s, &i, &n, &j ); viv ( i, 23, "palIntin", "I4", status ); viv ( n, 2000, "palIntin", "V4", status ); viv ( j, 0, "palIntin", "J4", status ); palIntin ( s, &i, &n, &j ); viv ( i, 29, "palIntin", "I5", status ); viv ( n, 2000, "palIntin", "V5", status ); viv ( j, 1, "palIntin", "J5", status ); /* Note that strtol does not care about a + */ } /* Moon */ static void t_moon ( int *status ) { double pv[6]; double expected1[] = { 0.00229161514616454, 0.000973912029208393, 0.000669931538978146, -3.44709700068209e-09, 5.44477533462392e-09, 2.11785724844417e-09 }; /* SLA test only include slaMoon so we use the example from SUN/67 */ palDmoon( 48634.4687174074, pv ); vvec( 6, pv, expected1, "palDmoon", status ); } /* Nutation */ static void t_nut( int *status ) { double dpsi, deps, eps0; double expected[3][3] = { { 9.999999969492166e-1, 7.166577986249302e-5, 3.107382973077677e-5 }, { -7.166503970900504e-5, 9.999999971483732e-1, -2.381965032461830e-5 }, { -3.107553669598237e-5, 2.381742334472628e-5, 9.999999992335206818e-1 } }; double rmatn[3][3]; /* SLA tests with low precision */ palNut( 46012.32, rmatn ); vrmat( rmatn, expected, "palNut", 1.0e-3, status ); /* Use the SOFA tests */ palNutc( 54388.0, &dpsi, &deps, &eps0 ); vvd( eps0, 0.4090749229387258204, 1e-14, "palNutc", "eps0", status); palNutc( 53736.0, &dpsi, &deps, &eps0 ); vvd(dpsi, -0.9630912025820308797e-5, 1e-13, "palNutc", "dpsi", status); vvd(deps, 0.4063238496887249798e-4, 1e-13, "palNutc", "deps", status); } /* palPrebn */ static void t_prebn( int *status ) { double rmatp[3][3]; double prebn_expected[3][3] = { { 9.999257613786738e-1, -1.117444640880939e-2, -4.858341150654265e-3 }, { 1.117444639746558e-2, 9.999375635561940e-1, -2.714797892626396e-5 }, { 4.858341176745641e-3, -2.714330927085065e-5, 9.999881978224798e-1 }, }; palPrebn ( 1925., 1975., rmatp ); vrmat( rmatp, prebn_expected, "palPrebn", 1.0e-12, status ); } /* Range */ static void t_range( int *status ) { vvd ( palDrange ( -4 ), 2.283185307179586, 1e-12, "palDrange", " ", status ); } static void t_ranorm( int *status ) { vvd ( palDranrm ( -0.1 ), 6.183185307179587, 1e-12, "palDranrm", "2", status ); } /* Separation routines */ static void t_sep( int *status ) { double d1[3] = { 1.0, 0.1, 0.2 }; double d2[3] = { -3.0, 1e-3, 0.2 }; double ad1, bd1, ad2, bd2; palDcc2s( d1, &ad1, &bd1 ); palDcc2s( d2, &ad2, &bd2 ); vvd ( palDsep ( ad1, bd1, ad2, bd2 ), 2.8603919190246608, 1e-7, "palDsep", " ", status ); vvd ( palDsepv ( d1, d2 ), 2.8603919190246608, 1e-7, "palDsepv", " ", status ); } /* Supergalactic */ static void t_supgal( int *status ) { double dl, db; palSupgal ( 6.1, -1.4, &dl, &db ); vvd ( dl, 3.798775860769474, 1e-12, "palSupgal", "DL", status ); vvd ( db, -0.1397070490669407, 1e-12, "palSupgal", "DB", status ); } /* Test spherical tangent-plane-projection routines */ static void t_tp( int *status ) { int j; double dr0, dd0, dr1, dd1, dx, dy, dr2, dd2, dr01, dd01, dr02, dd02; dr0 = 3.1; dd0 = -0.9; dr1 = dr0 + 0.2; dd1 = dd0 - 0.1; palDs2tp( dr1, dd1, dr0, dd0, &dx, &dy, &j ); vvd( dx, 0.1086112301590404, 1e-12, "palDs2tp", "x", status ); vvd( dy, -0.1095506200711452, 1e-12, "palDs2tp", "y", status ); viv( j, 0, "palDs2tp", "j", status ); palDtp2s( dx, dy, dr0, dd0, &dr2, &dd2 ); vvd( dr2 - dr1, 0., 1e-12, "palDtp2s", "r", status ); vvd( dd2 - dd1, 0., 1e-12, "palDtp2s", "d", status ); palDtps2c( dx, dy, dr2, dd2, &dr01, &dd01, &dr02, &dd02, &j ); vvd( dr01, 3.1, 1e-12, "palDtps2c", "r1", status); vvd( dd01, -0.9, 1e-12, "palDtps2c", "d1", status); vvd( dr02, 0.3584073464102072, 1e-12, "palDtps2c", "r2", status); vvd( dd02, -2.023361658234722, 1e-12, "palDtps2c", "d2", status ); viv( j, 1, "palDtps2c", "n", status ); } /* Test all the 3-vector and 3x3 matrix routines. */ static void t_vecmat( int * status ) { int i; /* palDav2m */ double drm1[3][3]; double dav[3] = { -0.123, 0.0987, 0.0654 }; double dav2m_expected[3][3] = { { 0.9930075842721269, 0.05902743090199868, -0.1022335560329612 }, { -0.07113807138648245, 0.9903204657727545, -0.1191836812279541 }, { 0.09420887631983825, 0.1256229973879967, 0.9875948309655174 }, }; /* palDeuler */ double drm2[3][3]; double deuler_expected[3][3] = { { -0.1681574770810878, 0.1981362273264315, 0.9656423242187410 }, { -0.2285369373983370, 0.9450659587140423, -0.2337117924378156 }, { -0.9589024617479674, -0.2599853247796050, -0.1136384607117296 } }; /* palDmxm */ double drm[3][3]; double dmxm_expected[3][3] = { { -0.09010460088585805, 0.3075993402463796, 0.9472400998581048 }, { -0.3161868071070688, 0.8930686362478707, -0.3200848543149236 }, { -0.9444083141897035, -0.3283459407855694, 0.01678926022795169 }, }; /* palDcs2c et al */ double dv1[3]; double dv2[3]; double dv3[3]; double dv4[3]; double dv5[3]; double dv6[3]; double dv7[3]; double dvm; /* palDav2m */ palDav2m( dav, drm1 ); vrmat( drm1, dav2m_expected, "palDav2m", 1.0e-12, status ); /* Test palDeuler */ palDeuler( "YZY", 2.345, -0.333, 2.222, drm2 ); vrmat( drm2, deuler_expected, "palDeuler", 1.0e-12, status ); /* palDmxm */ palDmxm( drm2, drm1, drm ); vrmat( drm, dmxm_expected, "palDmxm", 1.0e-12, status ); /* palDcs2c */ palDcs2c( 3.0123, -0.999, dv1 ); vvd ( dv1[0], -0.5366267667260525, 1e-12, "palDcs2c", "x", status ); vvd ( dv1[1], 0.06977111097651444, 1e-12, "palDcs2c", "y", status ); vvd ( dv1[2], -0.8409302618566215, 1e-12, "palDcs2c", "z", status ); /* palDmxv */ palDmxv( drm1, dv1, dv2 ); palDmxv( drm2, dv2, dv3 ); vvd ( dv3[0], -0.7267487768696160, 1e-12, "palDmxv", "x", status ); vvd ( dv3[1], 0.5011537352639822, 1e-12, "palDmxv", "y", status ); vvd ( dv3[2], 0.4697671220397141, 1e-12, "palDmxv", "z", status ); /* palDimxv */ palDimxv( drm, dv3, dv4 ); vvd ( dv4[0], -0.5366267667260526, 1e-12, "palDimxv", "X", status ); vvd ( dv4[1], 0.06977111097651445, 1e-12, "palDimxv", "Y", status ); vvd ( dv4[2], -0.8409302618566215, 1e-12, "palDimxv", "Z", status ); /* palDm2av */ palDm2av( drm, dv5 ); vvd ( dv5[0], 0.006889040510209034, 1e-12, "palDm2av", "X", status ); vvd ( dv5[1], -1.577473205461961, 1e-12, "palDm2av", "Y", status ); vvd ( dv5[2], 0.5201843672856759, 1e-12, "palDm2av", "Z", status ); for (i=0; i<3; i++) { dv5[i] *= 1000.0; } /* palDvn */ palDvn( dv5, dv6, &dvm ); vvd ( dv6[0], 0.004147420704640065, 1e-12, "palDvn", "X", status ); vvd ( dv6[1], -0.9496888606842218, 1e-12, "palDvn", "Y", status ); vvd ( dv6[2], 0.3131674740355448, 1e-12, "palDvn", "Z", status ); vvd ( dvm, 1661.042127339937, 1e-9, "palDvn", "M", status ); vvd ( palDvdv ( dv6, dv1 ), -0.3318384698006295, 1e-12, "palDvn", " ", status ); /* palDvxv */ palDvxv( dv6, dv1, dv7 ); vvd ( dv7[0], 0.7767720597123304, 1e-12, "palDvxv", "X", status ); vvd ( dv7[1], -0.1645663574562769, 1e-12, "palDvxv", "Y", status ); vvd ( dv7[2], -0.5093390925544726, 1e-12, "palDvxv", "Z", status ); } static void t_ecmat( int *status ) { double rmat[3][3]; double expected[3][3] = { { 1.0, 0.0, 0.0 }, { 0.0, 0.91749307789883549624, 0.3977517467060596168 }, { 0.0, -0.3977517467060596168, 0.91749307789883549624 } }; palEcmat( 55966.46, rmat ); vrmat( rmat, expected, "palEcmat", 1.0e-12, status ); } static void t_eqecl ( int *status ) { double dl, db; palEqecl ( 0.789, -0.123, 46555, &dl, &db ); /* Slight changes from SLA for 2006 precession/nutation */ vvd ( dl, 0.7036566430349022, 1e-6, "palEqecl", "L", status ); vvd ( db, -0.4036047164116848, 1e-6, "palEqecl", "B", status ); } static void t_prec( int *status ) { double rmat[3][3]; double expected[3][3] = { { 0.9999856154510, -0.0049192906204, -0.0021376320580 }, { 0.0049192906805, 0.9999879002027, -5.2297405698747e-06 }, { 0.0021376319197, -5.2859681191735e-06, 0.9999977152483 } }; palPrec( 1990.0, 2012.0, rmat ); vrmat( rmat, expected, "palPrec", 1.0e-12, status ); } static void t_preces( int *status ) { double ra; double dc; ra = 6.28; dc = -1.123; palPreces ( "FK4", 1925, 1950, &ra, &dc ); vvd ( ra, 0.002403604864728447, 1e-12, "palPreces", "R", status ); vvd ( dc, -1.120570643322045, 1e-12, "palPreces", "D", status ); /* This is the SLA test but PAL now uses the IAU 2006 precession model so we need to loosen the comparison */ ra = 0.0123; dc = 1.0987; palPreces ( "FK5", 2050, 1990, &ra, &dc ); vvd ( ra, 6.282003602708382, 1e-6, "palPreces", "R", status ); vvd ( dc, 1.092870326188383, 1e-6, "palPreces", "D", status ); } static void t_evp( int *status ) { double dvb[3],dpb[3],dvh[3],dph[3]; double vbex[3] = { 1.6957348127008098514e-07, -9.1093446116039685966e-08, -3.9528532243991863036e-08 }; double pbex[3] = {-0.49771075259730546136, -0.80273812396332311359, -0.34851593942866060383 }; double vhex[3] = { 1.6964379181455713805e-07, -9.1147224045727438391e-08, -3.9553158272334222497e-08 }; double phex[3] = { -0.50169124421419830639, -0.80650980174901798492, -0.34997162028527262212 }; double vbex2[3] = { -0.0109187426811683, -0.0124652546173285, -0.0054047731809662 }; double pbex2[3] = { -0.7714104440491060, +0.5598412061824225, +0.2425996277722475 }; double vhex2[3] = { -0.0109189182414732, -0.0124718726844084, -0.0054075694180650 }; double phex2[3] = { -0.7757238809297653, +0.5598052241363390, +0.2426998466481708 }; palEvp( 2010.0, 2012.0, dvb, dpb, dvh, dph ); vvec( 3, dvb, vbex, "palEvp", status ); vvec( 3, dpb, pbex, "palEvp", status ); vvec( 3, dvh, vhex, "palEvp", status ); vvec( 3, dph, phex, "palEvp", status ); palEpv ( 53411.52501161, dph, dvh, dpb, dvb ); vvec( 3, dvb, vbex2, "palEpv", status ); vvec( 3, dpb, pbex2, "palEpv", status ); vvec( 3, dvh, vhex2, "palEpv", status ); vvec( 3, dph, phex2, "palEpv", status ); } static void t_map( int *status ) { double ra, da; palMap ( 6.123, -0.999, 1.23e-5, -0.987e-5, 0.123, 32.1, 1999, 43210.9, &ra, &da ); /* These are the SLA tests but and they agree to 0.1 arcsec with PAL/SOFA. We expect a slight difference from the change to nutation models. */ vvd ( ra, 6.117130429775647, 1e-6, "palMap", "RA", status ); vvd ( da, -1.000880769038632, 1e-8, "palMap", "DA", status ); } static void t_mappa( int *status ) { double amprms[21]; double expected[21] = {1.9986310746064646082, -0.1728200754134739392, 0.88745394651412767839, 0.38472374350184274094, -0.17245634725219796679, 0.90374808622520386159, 0.3917884696321610738, 2.0075929387510784968e-08, -9.9464149073251757597e-05, -1.6125306981057062306e-05, -6.9897255793245634435e-06, 0.99999999489900059935, 0.99999983777998024959, -0.00052248206600935195865, -0.00022683144398381763045, 0.00052248547063364874764, 0.99999986339269864022, 1.4950491424992534218e-05, 0.00022682360163333854623, -1.5069005133483779417e-05, 0.99999997416198904698}; palMappa( 2010.0, 55927.0, amprms ); vvec( 21, amprms, expected, "palMappa", status ); } static void t_mapqkz( int *status ) { double amprms[21], ra, da; palMappa( 2010.0, 55927.0, amprms ); palMapqkz( 1.234, -0.567, amprms, &ra, &da ); vvd( ra, 1.2344879748414849807, 1.0E-12, "palMapqkz", "ra", status ); vvd( da, -0.56697099554368701746, 1.0E-12, "palMapqkz", "da", status ); /* Try the same with palMapqk and zero parallax and proper motion */ palMapqk( 1.234, -0.567, 0., 0., 0., 0., amprms, &ra, &da ); vvd( ra, 1.2344879748414849807, 1.0E-7, "palMapqkz", "ra", status ); vvd( da, -0.56697099554368701746, 1.0E-7, "palMapqkz", "da", status ); } static void t_ampqk( int *status ) { double amprms[21], rm, dm; palMappa( 2010.0, 55927.0, amprms ); palAmpqk( 1.234, -0.567, amprms, &rm, &dm ); vvd( rm, 1.2335120411026936349, 1.0E-12, "palAmpqk", "rm", status ); vvd( dm, -0.56702908706930343907, 1.0E-12, "palAmpqk", "dm", status ); } static void t_fk45z( int *status ) { double r2000, d2000; palFk45z( 1.2, -0.3, 1960.0, &r2000, &d2000 ); vvd( r2000, 1.2097812228966762227, 1.0E-12, "palFk45z", "r2000", status ); vvd( d2000, -0.29826111711331398935, 1.0E-12, "palFk45z", "d2000", status ); } static void t_fk54z( int *status ) { double r1950, d1950, dr1950, dd1950; palFk54z( 1.2, -0.3, 1960.0, &r1950, &d1950, &dr1950, &dd1950 ); vvd( r1950, 1.1902221805755279771, 1.0E-12, "palFk54z", "r1950", status ); vvd( d1950, -0.30178317645793828472, 1.0E-12, "palFk54z", "d1950", status ); vvd( dr1950, -1.7830874775952945507e-08, 1.0E-12, "palFk54z", "dr1950", status ); vvd( dd1950, 7.196059425334821089e-09, 1.0E-12, "palFk54z", "dd1950", status ); } static void t_flotin( int * status ) { int j; const char * s = " 12.345, , -0 1E3-4 2000 E "; /* 123456789012345678901234567890123 */ int i = 1; double dv = 0.0; palDfltin ( s, &i, &dv, &j ); viv ( i, 10, "palDfltin", "I1", status ); vvd ( dv, 12.345, 1e-12, "palDfltin", "V1", status ); viv ( j, 0, "palDfltin", "J1", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 12, "palDfltin", "I2", status ); vvd ( dv, 12.345, 1e-12, "palDfltin", "V2", status ); viv ( j, 1, "palDfltin", "J2", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 16, "palDfltin", "I3", status ); vvd ( dv, 0, 0, "palDfltin", "V3", status ); viv ( j, -1, "palDfltin", "J3", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 19, "palDfltin", "I4", status ); vvd ( dv, 1000, 0, "palDfltin", "V4", status ); viv ( j, 0, "palDfltin", "J4", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 22, "palDfltin", "I5", status ); vvd ( dv, -4, 0, "palDfltin", "V5", status ); viv ( j, -1, "palDfltin", "J5", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 28, "palDfltin", "I6", status ); vvd ( dv, 2000, 0, "palDfltin", "V6", status ); viv ( j, 0, "palDfltin", "J6", status ); palDfltin ( s, &i, &dv, &j ); viv ( i, 34, "palDfltin", "I7", status ); vvd ( dv, 2000, 0, "palDfltin", "V7", status ); viv ( j, 1, "palDfltin", "J7", status ); /* differs from slaDfltin */ /* Now test overflow and underflow */ i = 1; palDfltin( " 1D600 ", &i, &dv, &j ); viv ( i, 8, "palDfltin", "I8", status ); vvd ( dv, HUGE_VAL, 0, "palDfltin", "V8", status ); viv ( j, 2, "palDfltin", "J8", status ); } static void t_obs( int * status ) { char shortname[11]; char longname[41]; double w, p, h; int lstat; lstat = palObs( 0, "MMT", shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( shortname, "MMT", "palObs", "1/C", status ); vcs ( longname, "MMT 6.5m, Mt Hopkins", "palObs", "1/NAME", status ); vvd ( w, 1.935300584055477, 1e-8, "palObs", "1/W", status ); vvd ( p, 0.5530735081550342238, 1e-10, "palObs", "1/P", status ); vvd ( h, 2608, 1e-10, "palObs", "1/H", status ); viv( lstat, 0, "palObs", "retval", status ); lstat = palObs ( 61, NULL, shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( shortname, "KECK1", "palObs", "2/C", status ); vcs ( longname, "Keck 10m Telescope #1", "palObs", "2/NAME", status ); vvd ( w, 2.713545757918895, 1e-8, "palObs", "2/W", status ); vvd ( p, 0.3460280563536619, 1e-8, "palObs", "2/P", status ); vvd ( h, 4160, 1e-10, "palObs", "2/H", status ); viv( lstat, 0, "palObs", "retval", status ); lstat = palObs ( 83, NULL, shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( shortname, "MAGELLAN2", "palObs", "3/C", status ); vcs ( longname, "Magellan 2, 6.5m, Las Campanas", "palObs", "3/NAME", status ); vvd ( w, 1.233819305534497, 1e-8, "palObs", "3/W", status ); vvd ( p, -0.506389344359954, 1e-8, "palObs", "3/P", status ); vvd ( h, 2408, 1e-10, "palObs", "3/H", status ); viv( lstat, 0, "palObs", "retval", status ); lstat = palObs ( 84, NULL, shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( longname, "?", "palObs", "4/NAME", status ); viv( lstat, -1, "palObs", "retval", status ); lstat = palObs ( 0, "MISSING", shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( longname, "?", "palObs", "5/NAME", status ); viv( lstat, -1, "palObs", "retval", status ); lstat = palObs( 0, "mmt", shortname, sizeof(shortname), longname, sizeof(longname), &w, &p, &h ); vcs ( shortname, "MMT", "palObs", "6/C", status ); vcs ( longname, "MMT 6.5m, Mt Hopkins", "palObs", "6/NAME", status ); vvd ( w, 1.935300584055477, 1e-8, "palObs", "6/W", status ); vvd ( p, 0.5530735081550342238, 1e-10, "palObs", "6/P", status ); vvd ( h, 2608, 1e-10, "palObs", "6/H", status ); viv( lstat, 0, "palObs", "retval", status ); } static void t_pa( int *status ) { vvd ( palPa ( -1.567, 1.5123, 0.987 ), -1.486288540423851, 1e-12, "palPa", " ", status ); vvd ( palPa ( 0, 0.789, 0.789 ), 0, 0, "palPa", "zenith", status ); } static void t_planet( int * status ) { int j; double pv[6]; double u[13]; double expected1[6] = { 0., 0., 0., 0., 0., 0. }; double expectedue1[13] = { 1.000878908362435284, -0.3336263027874777288, 50000., 2.840425801310305210, 0.1264380368035014224, -0.2287711835229143197, -0.01301062595106185195, 0.5657102158104651697, 0.2189745287281794885, 2.852427310959998500, -0.01552349065435120900, 50000., 0.0 }; double expectedue2[13] = { 1.00006, -4.856142884511782, 50000., 0.3, -0.2, 0.1, -0.4520378601821727, 0.4018114312730424, -.3515850023639121, 0.3741657386773941, -0.2511321445456515, 50000., 0. }; double expectedue3[13] = { 1.000000000000000, -0.3329769417028020949, 50100., 2.638884303608524597, 1.070994304747824305, 0.1544112080167568589, -0.2188240619161439344, 0.5207557453451906385, 0.2217782439275216936, 2.852118859689216658, 0.01452010174371893229, 50100. }; double expectedpv[6] = { 0.07944764084631667011, -0.04118141077419014775, 0.002915180702063625400, -0.6890132370721108608e-6, 0.4326690733487621457e-6, -0.1763249096254134306e-6, }; double expectedpv2[6] = { 1.947628959288897677, -1.013736058752235271, -0.3536409947732733647, 2.742247411571786194e-8, 1.170467244079075911e-7, 3.709878268217564005e-8 }; double ra,dec,diam, r; int jform; double epoch, orbinc, anode, perih, aorq, e, aorl, dm; /* palEl2ue */ palEl2ue ( 50000, 1, 49000, 0.1, 2, 0.2, 3, 0.05, 3, 0.003312, u, &j ); vvec( 13, u, expectedue1, "palEl2ue", status ); viv ( j, 0, "palEl2ue", "J", status ); /* palPertel */ palPertel ( 2, 43000., 43200., 43000., 0.2, 3, 4, 5, 0.02, 6, &epoch, &orbinc, &anode, &perih, &aorq, &e, &aorl, &j ); vvd ( epoch, 43200., 1e-10, "palPertel", "EPOCH", status ); vvd ( orbinc, 0.1995661466545422381, 1e-7, "palPertel", "ORBINC", status ); vvd ( anode, 2.998052737821591215, 1e-7, "palPertel", "ANODE", status ); vvd ( perih, 4.009516448441143636, 1e-6, "palPertel", "PERIH", status ); vvd ( aorq, 5.014216294790922323, 1e-7, "palPertel", "AORQ", status ); vvd ( e, 0.02281386258309823607, 1e-7, "palPertel", "E", status ); vvd ( aorl, 0.01735248648779583748, 1e-6, "palPertel", "AORL", status ); viv ( j, 0, "palPertel", "J", status ); /* palPertue */ palPertue ( 50100, u, &j ); vvec( 13, u, expectedue3, "palPertue", status ); viv ( j, 0, "palPertue", "J", status ); /* palPlanel */ palPlanel ( 50600, 2, 50500, 0.1, 3, 5, 2, 0.3, 4, 0, pv, &j ); vvec( 6, pv, expectedpv2, "palPlanel", status ); viv ( j, 0, "palPlanel", "J", status ); /* palPlanet */ palPlanet( 1e6, 0, pv, &j ); vvec( 6, pv, expected1, "palPlanet 1", status ); viv ( j, -1, "palPlanet", "J 1", status ); palPlanet( 1e6, 9, pv, &j); viv ( j, -1, "palPlanet", "J 2", status ); palPlanet ( -320000, 3, pv, &j ); vvd ( pv[0], 0.9308038666827242603, 1e-11, "palPlanet", "pv[0] 3", status ); vvd ( pv[1], 0.3258319040252137618, 1e-11, "palPlanet", "pv[1] 3", status ); vvd ( pv[2], 0.1422794544477122021, 1e-11, "palPlanet", "pv[2] 3", status ); vvd ( pv[3], -7.441503423889371696e-8, 1e-17, "palPlanet", "pv[3] 3", status ); vvd ( pv[4], 1.699734557528650689e-7, 1e-17, "palPlanet", "pv[4] 3", status ); vvd ( pv[5], 7.415505123001430864e-8, 1e-17, "palPlanet", "pv[5] 3", status ); viv ( j, 1, "palPlanet", "J 3", status ); palPlanet ( 43999.9, 1, pv, &j ); vvd ( pv[0], 0.2945293959257422246, 1e-11, "palPlanet", "pv[0] 4", status ); vvd ( pv[1], -0.2452204176601052181, 1e-11, "palPlanet", "pv[1] 4", status ); vvd ( pv[2], -0.1615427700571978643, 1e-11, "palPlanet", "pv[2] 4", status ); vvd ( pv[3], 1.636421147459047057e-7, 1e-18, "palPlanet", "pv[3] 4", status ); vvd ( pv[4], 2.252949422574889753e-7, 1e-18, "palPlanet", "pv[4] 4", status ); vvd ( pv[5], 1.033542799062371839e-7, 1e-18, "palPlanet", "pv[5] 4", status ); viv ( j, 0, "palPlanet", "J 4", status ); /* palPlante test would go here */ palPlante ( 50600., -1.23, 0.456, 2, 50500., 0.1, 3., 5., 2., 0.3, 4., 0., &ra, &dec, &r, &j ); vvd ( ra, 6.222958101333794007, 1e-6, "palPlante", "RA", status ); vvd ( dec, 0.01142220305739771601, 1e-6, "palPlante", "DEC", status ); vvd ( r, 2.288902494080167624, 1e-8, "palPlante", "R", status ); viv ( j, 0, "palPlante", "J", status ); u[0] = 1.0005; u[1] = -0.3; u[2] = 55000.; u[3] = 2.8; u[4] = 0.1; u[5] = -0.2; u[6] = -0.01; u[7] = 0.5; u[8] = 0.22; u[9] = 2.8; u[10] = -0.015; u[11] = 55001.; u[12] = 0; /* palPlantu */ palPlantu ( 55001., -1.23, 0.456, u, &ra, &dec, &r, &j ); vvd ( ra, 0.3531814831241686647, 1e-6, "palPlantu", "RA", status ); vvd ( dec, 0.06940344580567131328, 1e-6, "palPlantu", "DEC", status ); vvd ( r, 3.031687170873274464, 1e-8, "palPlantu", "R", status ); viv ( j, 0, "palPlantu", "J", status ); /* palPv2el */ pv[0] = 0.3; pv[1] = -0.2; pv[2] = 0.1; pv[3] = -0.9e-7; pv[4] = 0.8e-7; pv[5] = -0.7e-7; palPv2el ( pv, 50000, 0.00006, 1, &jform, &epoch, &orbinc, &anode, &perih, &aorq, &e, &aorl, &dm, &j ); viv ( jform, 1, "palPv2el", "JFORM", status ); vvd ( epoch, 50000, 1e-10, "palPv2el", "EPOCH", status ); vvd ( orbinc, 1.52099895268912, 1e-12, "palPv2el", "ORBINC", status ); vvd ( anode, 2.720503180538650, 1e-12, "palPv2el", "ANODE", status ); vvd ( perih, 2.194081512031836, 1e-12, "palPv2el", "PERIH", status ); vvd ( aorq, 0.2059371035373771, 1e-12, "palPv2el", "AORQ", status ); vvd ( e, 0.9866822985810528, 1e-12, "palPv2el", "E", status ); vvd ( aorl, 0.2012758344836794, 1e-12, "palPv2el", "AORL", status ); vvd ( dm, 0.1840740507951820, 1e-12, "palPv2el", "DM", status ); viv ( j, 0, "palPv2el", "J", status ); /* palPv2ue */ palPv2ue ( pv, 50000., 0.00006, u, &j ); vvec( 13, u, expectedue2, "palPv2ue", status ); viv ( j, 0, "palPv2ue", "J", status ); /* Planets */ palRdplan ( 40999.9, 0, 0.1, -0.9, &ra, &dec, &diam ); vvd ( ra, 5.772270359389275837, 1e-6, "palRdplan", "ra 0", status ); vvd ( dec, -0.2089207338795416192, 1e-7, "palRdplan", "dec 0", status ); vvd ( diam, 9.415338935229717875e-3, 1e-10, "palRdplan", "diam 0", status ); palRdplan ( 41999.9, 1, 1.1, -0.9, &ra, &dec, &diam ); vvd ( ra, 3.866363420052936653, 1e-6, "palRdplan", "ra 1", status ); vvd ( dec, -0.2594430577550113130, 1e-7, "palRdplan", "dec 1", status ); vvd ( diam, 4.638468996795023071e-5, 1e-14, "palRdplan", "diam 1", status ); palRdplan ( 42999.9, 2, 2.1, 0.9, &ra, &dec, &diam ); vvd ( ra, 2.695383203184077378, 1e-6, "palRdplan", "ra 2", status ); vvd ( dec, 0.2124044506294805126, 1e-7, "palRdplan", "dec 2", status ); vvd ( diam, 4.892222838681000389e-5, 1e-14, "palRdplan", "diam 2", status ); palRdplan ( 43999.9, 3, 3.1, 0.9, &ra, &dec, &diam ); vvd ( ra, 2.908326678461540165, 1e-7, "palRdplan", "ra 3", status ); vvd ( dec, 0.08729783126905579385, 1e-7, "palRdplan", "dec 3", status ); vvd ( diam, 8.581305866034962476e-3, 1e-7, "palRdplan", "diam 3", status ); palRdplan ( 44999.9, 4, -0.1, 1.1, &ra, &dec, &diam ); vvd ( ra, 3.429840787472851721, 1e-6, "palRdplan", "ra 4", status ); vvd ( dec, -0.06979851055261161013, 1e-7, "palRdplan", "dec 4", status ); vvd ( diam, 4.540536678439300199e-5, 1e-14, "palRdplan", "diam 4", status ); palRdplan ( 45999.9, 5, -1.1, 0.1, &ra, &dec, &diam ); vvd ( ra, 4.864669466449422548, 1e-6, "palRdplan", "ra 5", status ); vvd ( dec, -0.4077714497908953354, 1e-7, "palRdplan", "dec 5", status ); vvd ( diam, 1.727945579027815576e-4, 1e-14, "palRdplan", "diam 5", status ); palRdplan ( 46999.9, 6, -2.1, -0.1, &ra, &dec, &diam ); vvd ( ra, 4.432929829176388766, 1e-6, "palRdplan", "ra 6", status ); vvd ( dec, -0.3682820877854730530, 1e-7, "palRdplan", "dec 6", status ); vvd ( diam, 8.670829016099083311e-5, 1e-14, "palRdplan", "diam 6", status ); palRdplan ( 47999.9, 7, -3.1, -1.1, &ra, &dec, &diam ); vvd ( ra, 4.894972492286818487, 1e-6, "palRdplan", "ra 7", status ); vvd ( dec, -0.4084068901053653125, 1e-7, "palRdplan", "dec 7", status ); vvd ( diam, 1.793916783975974163e-5, 1e-14, "palRdplan", "diam 7", status ); palRdplan ( 48999.9, 8, 0, 0, &ra, &dec, &diam ); vvd ( ra, 5.066050284760144000, 1e-6, "palRdplan", "ra 8", status ); vvd ( dec, -0.3744690779683850609, 1e-7, "palRdplan", "dec 8", status ); vvd ( diam, 1.062210086082700563e-5, 1e-14, "palRdplan", "diam 8", status ); /* palUe2el */ palUe2el ( u, 1, &jform, &epoch, &orbinc, &anode, &perih, &aorq, &e, &aorl, &dm, &j ); viv ( jform, 1, "palUe2el", "JFORM", status ); vvd ( epoch, 50000.00000000000, 1e-10, "palUe2el", "EPOCH", status ); vvd ( orbinc, 1.520998952689120, 1e-12, "palUe2el", "ORBINC", status ); vvd ( anode, 2.720503180538650, 1e-12, "palUe2el", "ANODE", status ); vvd ( perih, 2.194081512031836, 1e-12, "palUe2el", "PERIH", status ); vvd ( aorq, 0.2059371035373771, 1e-12, "palUe2el", "AORQ", status ); vvd ( e, 0.9866822985810528, 1e-12, "palUe2el", "E", status ); vvd ( aorl, 0.2012758344836794, 1e-12, "palUe2el", "AORL", status ); viv ( j, 0, "palUe2el", "J", status ); /* palUe2pv */ palUe2pv( 50010., u, pv, &j ); /* Update the final two elements of the expecte UE array */ expectedue2[11] = 50010.; expectedue2[12] = 0.7194308220038886856; vvec( 13, u, expectedue2, "palUe2pv", status ); vvec( 6, pv, expectedpv, "palUe2pv", status ); viv ( j, 0, "palUe2pv", "J", status ); } static void t_pm( int * status ) { double ra2, dec2; double ra1, dec1, pmr1, pmd1, px1, rv1; ra1 = 5.43; dec1 = -0.87; pmr1 = -0.33e-5; pmd1 = 0.77e-5; px1 = 0.7; rv1 = 50.3*365.2422/365.25; palPm ( ra1, dec1, pmr1, pmd1, px1, rv1, 1899, 1943, &ra2, &dec2 ); vvd ( ra2, 5.429855087793875, 1e-10, "palPm", "R", status ); vvd ( dec2, -0.8696617307805072, 1e-10, "palPm", "D", status ); /* SOFA test */ ra1 = 0.01686756; dec1 = -1.093989828; pmr1 = -1.78323516e-5; pmd1 = 2.336024047e-6; px1 = 0.74723; rv1 = -21.6; palPm(ra1, dec1, pmr1, pmd1, px1, rv1, palEpj(50083.0), palEpj(53736.0), &ra2, &dec2); vvd(ra2, 0.01668919069414242368, 1e-13, "palPm", "ra", status); vvd(dec2, -1.093966454217127879, 1e-13, "palPm", "dec", status); } static void t_pvobs( int *status ) { double pv[6]; double expected[6] = { -4.7683600138836167813e-06, 1.0419056712717953176e-05, 4.099831053320363277e-05, -7.5976959740661272483e-10, -3.4771429582640930371e-10, 0.0}; palPvobs( 1.3, 10000.0, 2.0, pv ); vvec( 6, pv, expected, "palPvobs", status ); } static void t_rv( int *status ) { vvd ( palRverot ( -0.777, 5.67, -0.3, 3.19 ), -0.1948098355075913, 1e-6, "palRverot", " ", status ); vvd ( palRvgalc ( 1.11E0, -0.99E0 ), 158.9630759840254, 1e-3, "palRvgalc", " ", status ); vvd ( palRvlg ( 3.97E0, 1.09E0 ), -197.818762175363, 1e-3, "palRvlg", " ", status ); vvd ( palRvlsrd ( 6.01E0, 0.1E0 ), -4.082811335150567, 1e-4, "palRvlsrd", " ", status ); vvd ( palRvlsrk ( 6.01E0, 0.1E0 ), -5.925180579830265, 1e-4, "palRvlsrk", " ", status ); } static void t_rvgalc( int *status ) { double rv; rv = palRvgalc( 2.7, -1.0 ); vvd( rv, 213.98084425751144977, 1.0E-12, "palRvgalc", "rv", status ); } static void t_rvlg( int *status ) { double rv; rv = palRvlg( 2.7, -1.0 ); vvd( rv, 291.79205281252404802, 1.0E-12, "palRvlg", "rv", status ); } static void t_rvlsrd( int *status ) { double rv; rv = palRvlsrd( 2.7, -1.0 ); vvd( rv, 9.620674692097630043, 1.0E-12, "palRvlsrd", "rv", status ); } static void t_rvlsrk( int *status ) { double rv; rv = palRvlsrk( 2.7, -1.0 ); vvd( rv, 12.556356851411955233, 1.0E-12, "palRvlsrk", "rv", status ); } /**********************************************************************/ int main (void) { /* Use the SLA and SOFA conventions */ int status = 0; /* Unix and SAE convention */ t_addet(&status); t_afin(&status); t_ampqk(&status); t_aop(&status); t_airmas(&status); t_amp(&status); t_bear(&status); t_caf2r(&status); t_caldj(&status); t_cc2s(&status); t_cd2tf(&status); t_cldj(&status); t_cr2af(&status); t_cr2tf(&status); t_ctf2d(&status); t_ctf2r(&status); t_dat(&status); t_djcal(&status); t_dmat(&status); t_epb(&status); t_epb2d(&status); t_epco(&status); t_epj(&status); t_epj2d(&status); t_eqecl(&status); t_eqeqx(&status); t_etrms(&status); t_eqgal(&status); t_evp(&status); t_fk45z(&status); t_fk54z(&status); t_flotin(&status); t_galeq(&status); t_galsup(&status); t_ge50(&status); t_geoc(&status); t_gmst(&status); t_fk52h(&status); t_intin(&status); t_prec(&status); t_preces(&status); t_ecmat(&status); t_e2h(&status); t_map(&status); t_mappa(&status); t_mapqkz(&status); t_moon(&status); t_nut(&status); t_obs(&status); t_pa(&status); t_planet(&status); t_pm(&status); t_prebn(&status); t_pvobs(&status); t_range(&status); t_ranorm(&status); t_rv(&status); t_rvgalc(&status); t_rvlg(&status); t_rvlsrd(&status); t_rvlsrk(&status); t_sep(&status); t_supgal(&status); t_tp(&status); t_vecmat(&status); return status; } pal-0.3.0/palUe2el.c000644 000161 000120 00000021544 12014745436 014175 0ustar00timjadmin000000 000000 /* *+ * Name: * palUe2el * Purpose: * Universal elements to heliocentric osculating elements * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palUe2el ( const double u[13], int jformr, * int *jform, double *epoch, double *orbinc, * double *anode, double *perih, double *aorq, double *e, * double *aorl, double *dm, int *jstat ); * Arguments: * u = const double [13] (Given) * Universal orbital elements (Note 1) * (0) combined mass (M+m) * (1) total energy of the orbit (alpha) * (2) reference (osculating) epoch (t0) * (3-5) position at reference epoch (r0) * (6-8) velocity at reference epoch (v0) * (9) heliocentric distance at reference epoch * (10) r0.v0 * (11) date (t) * (12) universal eccentric anomaly (psi) of date, approx * jformr = int (Given) * Requested element set (1-3; Note 3) * jform = int * (Returned) * Element set actually returned (1-3; Note 4) * epoch = double * (Returned) * Epoch of elements (TT MJD) * orbinc = double * (Returned) * inclination (radians) * anode = double * (Returned) * longitude of the ascending node (radians) * perih = double * (Returned) * longitude or argument of perihelion (radians) * aorq = double * (Returned) * mean distance or perihelion distance (AU) * e = double * (Returned) * eccentricity * aorl = double * (Returned) * mean anomaly or longitude (radians, JFORM=1,2 only) * dm = double * (Returned) * daily motion (radians, JFORM=1 only) * jstat = int * (Returned) * status: 0 = OK * -1 = illegal combined mass * -2 = illegal JFORMR * -3 = position/velocity out of range * Description: * Transform universal elements into conventional heliocentric * osculating elements. * Authors: * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference 2). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - The universal elements are with respect to the mean equator and * equinox of epoch J2000. The orbital elements produced are with * respect to the J2000 ecliptic and mean equinox. * - Three different element-format options are supported: * * Option JFORM=1, suitable for the major planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = longitude of perihelion, curly pi (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e * AORL = mean longitude L (radians) * DM = daily motion (radians) * * Option JFORM=2, suitable for minor planets: * * EPOCH = epoch of elements (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = mean distance, a (AU) * E = eccentricity, e * AORL = mean anomaly M (radians) * * Option JFORM=3, suitable for comets: * * EPOCH = epoch of perihelion (TT MJD) * ORBINC = inclination i (radians) * ANODE = longitude of the ascending node, big omega (radians) * PERIH = argument of perihelion, little omega (radians) * AORQ = perihelion distance, q (AU) * E = eccentricity, e * * - It may not be possible to generate elements in the form * requested through JFORMR. The caller is notified of the form * of elements actually returned by means of the JFORM argument: * * JFORMR JFORM meaning * * 1 1 OK - elements are in the requested format * 1 2 never happens * 1 3 orbit not elliptical * * 2 1 never happens * 2 2 OK - elements are in the requested format * 2 3 orbit not elliptical * * 3 1 never happens * 3 2 never happens * 3 3 OK - elements are in the requested format * * - The arguments returned for each value of JFORM (cf Note 6: JFORM * may not be the same as JFORMR) are as follows: * * JFORM 1 2 3 * EPOCH t0 t0 T * ORBINC i i i * ANODE Omega Omega Omega * PERIH curly pi omega omega * AORQ a a q * E e e e * AORL L M - * DM n - - * * where: * * t0 is the epoch of the elements (MJD, TT) * T " epoch of perihelion (MJD, TT) * i " inclination (radians) * Omega " longitude of the ascending node (radians) * curly pi " longitude of perihelion (radians) * omega " argument of perihelion (radians) * a " mean distance (AU) * q " perihelion distance (AU) * e " eccentricity * L " longitude (radians, 0-2pi) * M " mean anomaly (radians, 0-2pi) * n " daily motion (radians) * - means no value is set * * - At very small inclinations, the longitude of the ascending node * ANODE becomes indeterminate and under some circumstances may be * set arbitrarily to zero. Similarly, if the orbit is close to * circular, the true anomaly becomes indeterminate and under some * circumstances may be set arbitrarily to zero. In such cases, * the other elements are automatically adjusted to compensate, * and so the elements remain a valid description of the orbit. * See Also: * - Sterne, Theodore E., "An Introduction to Celestial Mechanics", * Interscience Publishers Inc., 1960. Section 6.7, p199. * - Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-09 (TIMJ): * Initial version * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include "pal.h" #include "palmac.h" void palUe2el ( const double u[], int jformr, int *jform, double *epoch, double *orbinc, double *anode, double *perih, double *aorq, double *e, double *aorl, double *dm, int *jstat ) { /* Canonical days to seconds */ const double CD2S = PAL__GCON / PAL__SPD; int i; double pmass, date, pv[6]; /* Unpack the universal elements */ pmass = u[0] - 1.0; date = u[2]; for (i=0; i<3; i++) { pv[i] = u[i+3]; pv[i+3] = u[i+6] * CD2S; } /* Convert the position and velocity etc into conventional elements */ palPv2el( pv, date, pmass, jformr, jform, epoch, orbinc, anode, perih, aorq, e, aorl, dm, jstat ); } pal-0.3.0/palUe2pv.c000644 000161 000120 00000020250 12014745436 014213 0ustar00timjadmin000000 000000 /* *+ * Name: * palUe2pv * Purpose: * Heliocentric position and velocity of a planet, asteroid or comet, from universal elements * Language: * Starlink ANSI C * Type of Module: * Library routine * Invocation: * void palUe2pv( double date, double u[13], double pv[6], int *jstat ); * Arguments: * date = double (Given) * TT Modified Julian date (JD-2400000.5). * u = double [13] (Given & Returned) * Universal orbital elements (updated, see note 1) * given (0) combined mass (M+m) * " (1) total energy of the orbit (alpha) * " (2) reference (osculating) epoch (t0) * " (3-5) position at reference epoch (r0) * " (6-8) velocity at reference epoch (v0) * " (9) heliocentric distance at reference epoch * " (10) r0.v0 * returned (11) date (t) * " (12) universal eccentric anomaly (psi) of date * jstat = int * (Returned) * status: 0 = OK * -1 = radius vector zero * -2 = failed to converge * Description: * Heliocentric position and velocity of a planet, asteroid or comet, * starting from orbital elements in the "universal variables" form. * Authors: * PTW: Pat Wallace (STFC) * TIMJ: Tim Jenness (JAC, Hawaii) * {enter_new_authors_here} * Notes: * - The "universal" elements are those which define the orbit for the * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch, * and the position and velocity vectors (arbitrary reference frame) * at that epoch. The parameter set used here includes also various * quantities that can, in fact, be derived from the other * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy. The supplementary quantities * are (i) alpha, which is proportional to the total energy of the * orbit, (ii) the heliocentric distance at epoch, (iii) the * outwards component of the velocity at the given epoch, (iv) an * estimate of psi, the "universal eccentric anomaly" at a given * date and (v) that date. * - The companion routine is palEl2ue. This takes the conventional * orbital elements and transforms them into the set of numbers * needed by the present routine. A single prediction requires one * one call to palEl2ue followed by one call to the present routine; * for convenience, the two calls are packaged as the routine * sla_PLANEL. Multiple predictions may be made by again * calling palEl2ue once, but then calling the present routine * multiple times, which is faster than multiple calls to palPlanel. * - It is not obligatory to use palEl2ue to obtain the parameters. * However, it should be noted that because palEl2ue performs its * own validation, no checks on the contents of the array U are made * by the present routine. - DATE is the instant for which the prediction is required. It is * in the TT timescale (formerly Ephemeris Time, ET) and is a * Modified Julian Date (JD-2400000.5). - The universal elements supplied in the array U are in canonical * units (solar masses, AU and canonical days). The position and * velocity are not sensitive to the choice of reference frame. The * palEl2ue routine in fact produces coordinates with respect to the * J2000 equator and equinox. * - The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996). The method is based * on Stumpff's Universal Variables. * - Reference: Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983. * History: * 2012-03-09 (TIMJ): * Initial version cloned from SLA/F. * {enter_further_changes_here} * Copyright: * Copyright (C) 2012 Science and Technology Facilities Council. * All Rights Reserved. * Licence: * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * Bugs: * {note_any_bugs_here} *- */ #include #include "pal.h" #include "palmac.h" void palUe2pv( double date, double u[13], double pv[6], int *jstat ) { /* Canonical days to seconds */ const double CD2S = PAL__GCON / PAL__SPD; /* Test value for solution and maximum number of iterations */ const double TEST = 1e-13; const int NITMAX = 25; int I, NIT, N; double CM,ALPHA,T0,P0[3],V0[3],R0,SIGMA0,T,PSI,DT,W, TOL,PSJ,PSJ2,BETA,S0,S1,S2,S3, FF,R,F,G,FD,GD; double PLAST = 0.0; double FLAST = 0.0; /* Unpack the parameters. */ CM = u[0]; ALPHA = u[1]; T0 = u[2]; for (I=0; I<3; I++) { P0[I] = u[I+3]; V0[I] = u[I+6]; } R0 = u[9]; SIGMA0 = u[10]; T = u[11]; PSI = u[12]; /* Approximately update the universal eccentric anomaly. */ PSI = PSI+(date-T)*PAL__GCON/R0; /* Time from reference epoch to date (in Canonical Days: a canonical * day is 58.1324409... days, defined as 1/PAL__GCON). */ DT = (date-T0)*PAL__GCON; /* Refine the universal eccentric anomaly, psi. */ NIT = 1; W = 1.0; TOL = 0.0; while (fabs(W) >= TOL) { /* Form half angles until BETA small enough. */ N = 0; PSJ = PSI; PSJ2 = PSJ*PSJ; BETA = ALPHA*PSJ2; while (fabs(BETA) > 0.7) { N = N+1; BETA = BETA/4.0; PSJ = PSJ/2.0; PSJ2 = PSJ2/4.0; } /* Calculate Universal Variables S0,S1,S2,S3 by nested series. */ S3 = PSJ*PSJ2*((((((BETA/210.0+1.0) *BETA/156.0+1.0) *BETA/110.0+1.0) *BETA/72.0+1.0) *BETA/42.0+1.0) *BETA/20.0+1.0)/6.0; S2 = PSJ2*((((((BETA/182.0+1.0) *BETA/132.0+1.0) *BETA/90.0+1.0) *BETA/56.0+1.0) *BETA/30.0+1.0) *BETA/12.0+1.0)/2.0; S1 = PSJ+ALPHA*S3; S0 = 1.0+ALPHA*S2; /* Undo the angle-halving. */ TOL = TEST; while (N > 0) { S3 = 2.0*(S0*S3+PSJ*S2); S2 = 2.0*S1*S1; S1 = 2.0*S0*S1; S0 = 2.0*S0*S0-1.0; PSJ = PSJ+PSJ; TOL += TOL; N--; } /* Values of F and F' corresponding to the current value of psi. */ FF = R0*S1+SIGMA0*S2+CM*S3-DT; R = R0*S0+SIGMA0*S1+CM*S2; /* If first iteration, create dummy "last F". */ if ( NIT == 1) FLAST = FF; /* Check for sign change. */ if ( FF*FLAST < 0.0 ) { /* Sign change: get psi adjustment using secant method. */ W = FF*(PLAST-PSI)/(FLAST-FF); } else { /* No sign change: use Newton-Raphson method instead. */ if (R == 0.0) { /* Null radius vector */ *jstat = -1; return; } W = FF/R; } /* Save the last psi and F values. */ PLAST = PSI; FLAST = FF; /* Apply the Newton-Raphson or secant adjustment to psi. */ PSI = PSI-W; /* Next iteration, unless too many already. */ if (NIT > NITMAX) { *jstat = -2; /* Failed to converge */ return; } NIT++; } /* Project the position and velocity vectors (scaling velocity to AU/s). */ W = CM*S2; F = 1.0-W/R0; G = DT-CM*S3; FD = -CM*S1/(R0*R); GD = 1.0-W/R; for (I=0; I<3; I++) { pv[I] = P0[I]*F+V0[I]*G; pv[I+3] = CD2S*(P0[I]*FD+V0[I]*GD); } /* Update the parameters to allow speedy prediction of PSI next time. */ u[11] = date; u[12] = PSI; /* OK exit. */ *jstat = 0; return; } pal-0.3.0/._README.md000644 000161 000120 00000000252 12015504412 014031 0ustar00timjadmin000000 000000 Mac OS X  2xªTEXTR*chATTRªœœcom.apple.TextEncodingISO-8859-1;513pal-0.3.0/README.md000644 000161 000120 00000004007 12015504412 013616 0ustar00timjadmin000000 000000 PAL - Positional Astronomy Library ================================== The PAL library is a partial re-implementation of Pat Wallace's popular SLALIB library written in C using a Gnu GPL license and layered on top of the IAU's SOFA library where appropriate. PAL attempts to stick to the SLA C API where possible although `palObs()` has a more C-like API than the equivalent `slaObs()` function. In most cases it is enough to simply change the function prefix of a routine in order to link against PAL rather than SLALIB. Routines calling SOFA use modern nutation and precession models so will return slightly different answers than native SLALIB. PAL functions not available in SOFA were ported from the Fortran version of SLALIB that ships as part of the Starlink software and uses a GPL licence. See `pal.news` for release notes. Building -------- A simple `configure` script is provided: ./configure --prefix=/usr/local make make install The tests can be run using `make check`. Use `--prefix` to specify an install location. Given the history of the source code as a Starlink libary the default will be `/star`. Requirements ------------ Requires that the SOFA C library is installed. The `configure` script will abort if SOFA can not be found. SOFA can be obtained either from or from an unofficial github repository (with a configure script) at . Missing Functions ----------------- Not all SLALIB functions have been added. New routines are added to PAL as demand arises. Language Bindings ----------------- A Perl binding of PAL is available () named `Astro::PAL` and is available from CPAN at . This is a standalone distribution that comes with its own copies of PAL and SOFA and so can be installed directly from the `cpan` shell. The Starlink AST () library now uses PAL and can be built either with a private PAL or with an external PAL.pal-0.3.0/sun267.htx_tar000644 000161 000120 00003133000 12015001752 014774 0ustar00timjadmin000000 000000 sun267.htx/000755 000161 000120 00000000000 12015001752 012773 5ustar00timjadmin000000 000000 sun267.htx/.star2html-init000644 000161 000120 00000004446 12015001741 015663 0ustar00timjadmin000000 000000 # Star2html latex2html defaults file. $ADDRESS = 'PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
'; $TITLE = 'PAL --- Positional Astronomy Library'; $NO_NAVIGATION = 0; $TOP_NAVIGATION = 1; $BOTTOM_NAVIGATION = 1; $AUTO_NAVIGATION = 0; $INDEX_IN_NAVIGATION = 1; $CONTENTS_IN_NAVIGATION = 1; $NEXT_PAGE_IN_NAVIGATION = 1; $PREVIOUS_PAGE_IN_NAVIGATION = 1; $INFO = 1; $SHOW_SECTION_NUMBERS = 0; $LINE_WIDTH = 500; $WORDS_IN_PAGE = 200; $default_language = english; $WORDS_IN_NAVIGATION_PANEL_TITLES = 4; $MATH_SCALE_FACTOR = 1.5; $FIGURE_SCALE_FACTOR = 1; $TRANSPARENT_FIGURES = 1; $PAPERSIZE = a3; $ICONSERVER = '.'; $WHITE_BACKGROUND = 1; $LATEX_COLOR = '\pagecolor{white}'; sub top_navigation_panel { # Start with a horizontal rule (3-d dividing line) "

". # Now add a few buttons with a space between them "$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS" . "
\n" . # Line break # If ``next'' section exists, add its title to the navigation panel ($NEXT_TITLE ? " Next: $NEXT_TITLE
\n" : undef) . # Similarly with the ``up'' title ... ($UP_TITLE ? "Up: $UP_TITLE
\n" : undef) . # ... and the ``previous'' title ($PREVIOUS_TITLE ? " Previous: $PREVIOUS_TITLE\n" : undef) . # Line Break, horizontal rule (3-d dividing line) and new paragraph "

\n" } sub bot_navigation_panel { # Start with a horizontal rule (3-d dividing line) "


". # Now add a few buttons with a space between them "$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS" . "
\n" . # Line break # If ``next'' section exists, add its title to the navigation panel ($NEXT_TITLE ? " Next: $NEXT_TITLE
\n" : undef) . # Similarly with the ``up'' title ... ($UP_TITLE ? "Up: $UP_TITLE
\n" : undef) . # ... and the ``previous'' title ($PREVIOUS_TITLE ? " Previous: $PREVIOUS_TITLE\n" : undef) . # Line Break, horizontal rule (3-d dividing line) and new paragraph "

\n" } $WORDS_IN_NAVIGATION_PANEL_TITLES=20; 1; 1; sun267.htx/contents_motif.gif000644 000161 000120 00000000341 12015001752 016513 0ustar00timjadmin000000 000000 GIF89aAñ¿¿¿çççooo[!ù,A²Œ©Ëí£œM€³Þ¼ûr‚„扆㕶®¹–ïLgñ6äCÍw–Îv/¢¤1b”(fS…\‚tÆnÄfÖì•ûÅü¸S)VH6›·ÄvÒMw”ntõ-O×Eq'zWEµ§§ÅÇ’‡¸¨†˜´5–HH©æG×ø'ÉÆ˜Wùøˆ)§ÅDõ§GÇi× Ù +[»Ak›‹›[»Ë3" Babel and hyphenation patterns for english, dumylang, nohyphenation, ge rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji, lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded . (/usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls Document Class: article 2007/10/19 v1.4h Standard LaTeX document class (/usr/local/texlive/2011/texmf-dist/tex/latex/base/size11.clo File: size11.clo 2007/10/19 v1.4h Standard LaTeX file (size option) ) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (/usr/local/texlive/2011/texmf-dist/tex/latex/base/ifthen.sty Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) ) (/Users/timj/work/pal/sun267_htx/html.sty) (/Users/timj/work/pal/sun267_htx/s tar2html.sty) \sstbannerlength=\skip43 \sstcaptionlength=\skip44 \sstexampleslength=\skip45 \sstexampleswidth=\skip46 (/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/color.sty Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC) (/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/color.cfg File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive ) Package color Info: Driver file: dvips.def on input line 130. (/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/dvips.def File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) ) (/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/dvipsnam.def File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) )) (/usr/local/texlive/2011/texmf-dist/tex/latex/base/inputenc.sty Package: inputenc 2008/03/30 v1.1d Input encoding file \inpenc@prehook=\toks14 \inpenc@posthook=\toks15 ) \sizebox=\box26 \lthtmlwrite=\write3 No file images.aux. \openout1 = `images.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 441. LaTeX Font Info: ... okay on input line 441. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 441. LaTeX Font Info: ... okay on input line 441. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 441. LaTeX Font Info: ... okay on input line 441. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 441. LaTeX Font Info: ... okay on input line 441. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 441. LaTeX Font Info: ... okay on input line 441. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 441. LaTeX Font Info: ... okay on input line 441. latex2htmlLength hsize=698.0pt latex2htmlLength vsize=902.0pt latex2htmlLength hoffset=0.0pt latex2htmlLength voffset=0.0pt latex2htmlLength topmargin=0.0pt latex2htmlLength topskip=0.00003pt latex2htmlLength headheight=0.0pt latex2htmlLength headsep=0.0pt latex2htmlLength parskip=6.0pt plus 2.0pt minus 2.0pt latex2htmlLength oddsidemargin=0.0pt latex2htmlLength evensidemargin=0.0pt LaTeX Font Info: External font `cmex10' loaded for size (Font) <10.95> on input line 474. LaTeX Font Info: External font `cmex10' loaded for size (Font) <8> on input line 474. LaTeX Font Info: External font `cmex10' loaded for size (Font) <6> on input line 474. l2hSize :tex2html_wrap_inline701:7.07185pt::0.0pt::6.02254pt. [1 ] l2hSize :tex2html_wrap_inline1194:7.57185pt::7.57185pt::9.06422pt. [2 ] l2hSize :tex2html_wrap_inline2779:7.57185pt::7.57185pt::9.06422pt. [3 ] l2hSize :tex2html_wrap_inline4885:7.57185pt::7.57185pt::9.06422pt. [4 ] (./images.aux) ) Here is how much of TeX's memory you used: 666 strings out of 493634 8929 string characters out of 3143401 52986 words of memory out of 3000000 4023 multiletter control sequences out of 15000+200000 6379 words of font info for 23 fonts, out of 3000000 for 9000 831 hyphenation exceptions out of 8191 21i,5n,19p,162b,151s stack positions out of 5000i,500n,10000p,200000b,50000s Output written on images.dvi (4 pages, 996 bytes). sun267.htx/images.pl000644 000161 000120 00000001315 12015001752 014575 0ustar00timjadmin000000 000000 # LaTeX2HTML 2009-1 (1.71) # Associate images original text with physical files. $key = q/*;MSF=1.5;LFS=11;AAT/; $cached_env_img{$key} = q|$*$|; $key = q/<;MSF=1.5;LFS=11;AAT/; $cached_env_img{$key} = q|$<$|; $key = q/+;MSF=1.5;LFS=11;AAT/; $cached_env_img{$key} = q|$+$|; $key = q/>;MSF=1.5;LFS=11;AAT/; $cached_env_img{$key} = q|$>$|; 1; sun267.htx/images.tex000644 000161 000120 00000036024 12015001746 014772 0ustar00timjadmin000000 000000 \batchmode \documentclass[twoside,11pt]{article} \RequirePackage{ifthen} \input{/Users/timj/work/pal/sun267_htx/html.sty} \input{/Users/timj/work/pal/sun267_htx/star2html.sty} \pagestyle{myheadings} % \providecommand{\stardoccategory}{Starlink User Note}% \providecommand{\stardocinitials}{SUN}% \providecommand{\stardocsource}{sun267.1}% \providecommand{\stardoccopyright}{Copyright \copyright\ 2012 Science and Technology Facilities Council} % \providecommand{\stardocnumber}{267.1}% \providecommand{\stardocauthors}{Tim Jenness}% \providecommand{\stardocdate}{2012 March 23}% \providecommand{\stardoctitle}{PAL --- Positional Astronomy Library}% \providecommand{\stardocversion}{0.1.0}% \providecommand{\stardocmanual}{Programmer's Manual}% \providecommand{\stardocabstract}{ PAL provides a subset of the Fortran SLALIB library but written in C using the SLALIB C API. Where possible the PAL routines are implemented using the C SOFA library. It is provided with a GPL license. } % \providecommand{\stardocname}{SUN/267.1} \markboth{SUN/267.1}{SUN/267.1} \setlength{\textwidth}{160mm} \setlength{\textheight}{230mm} \setlength{\topmargin}{-2mm} \setlength{\oddsidemargin}{0mm} \setlength{\evensidemargin}{0mm} \setlength{\parindent}{0mm} \setlength{\parskip}{\medskipamount} \setlength{\unitlength}{1mm} \newlength{\sstbannerlength} \newlength{\sstcaptionlength} \newlength{\sstexampleslength} \newlength{\sstexampleswidth} % \providecommand{\ssttt}{\tt} % \providecommand{\sstroutine}[3]{ \goodbreak \markboth{{SUN/267.1}~ --- #1}{{SUN/267.1}~ --- #1} \rule{\textwidth}{0.5mm} \vspace{-7ex} \newline \settowidth{\sstbannerlength}{{\Large {\bf #1}}} \setlength{\sstcaptionlength}{\textwidth} \setlength{\sstexampleslength}{\textwidth} \addtolength{\sstbannerlength}{0.5em} \addtolength{\sstcaptionlength}{-2.0\sstbannerlength} \addtolength{\sstcaptionlength}{-5.0pt} \settowidth{\sstexampleswidth}{{\bf Examples:}} \addtolength{\sstexampleslength}{-\sstexampleswidth} \parbox[t]{\sstbannerlength}{\flushleft{\Large {\bf #1}}} \parbox[t]{\sstcaptionlength}{\center{\Large #2}} \parbox[t]{\sstbannerlength}{\flushright{\Large {\bf #1}}} \begin{description} #3 \end{description} } % \providecommand{\sstatt}[1]{\sf #1}% \providecommand{\sstatt}[1]{\large{\tt #1}}% \providecommand{\sstattribute}[3]{ \goodbreak \markboth{{SUN/267.1}~ --- #1}{{SUN/267.1}~ --- #1} \rule{\textwidth}{0.5mm} \vspace{-7ex} \newline \settowidth{\sstbannerlength}{{\Large {1}}} \setlength{\sstcaptionlength}{\textwidth} \setlength{\sstexampleslength}{\textwidth} \addtolength{\sstbannerlength}{0.5em} \addtolength{\sstcaptionlength}{-2.0\sstbannerlength} \addtolength{\sstcaptionlength}{-4.9pt} \settowidth{\sstexampleswidth}{{\bf Examples:}} \addtolength{\sstexampleslength}{-\sstexampleswidth} \parbox[t]{\sstbannerlength}{\flushleft{\Large {1}}} \parbox[t]{\sstcaptionlength}{\center{\Large #2}} \parbox[t]{\sstbannerlength}{\flushright{\Large {1}}} \begin{description} #3 \end{description} } % \providecommand{\sstdescription}[1]{\item[Description:] #1} % \providecommand{\sstusage}[1]{\goodbreak \item[Usage:] \mbox{} \\[1.3ex]{\raggedright \tt #1}} % \providecommand{\sstinvocation}[1]{\item[Invocation:]\hspace{0.4em}{\tt #1}} % \providecommand{\sstattributetype}[1]{ \item[Type:] \mbox{} \\ #1 } % \providecommand{\sstarguments}[1]{ \item[Arguments:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % \providecommand{\sstreturnedvalue}[1]{ \item[Returned Value:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % \providecommand{\sstparameters}[1]{ \goodbreak \item[Parameters:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % \providecommand{\sstapplicability}[1]{ \item[Class Applicability:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % \providecommand{\sstexamples}[1]{ \goodbreak \item[Examples:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % \providecommand{\sstsubsection}[1]{ \item[{#1}] \mbox{} \\} % \providecommand{\sstexamplesubsection}[2]{\sloppy \item[\parbox{\sstexampleslength}{\tt #1}] \mbox{} \vspace{1.0ex} \\#2 } % \providecommand{\sstnotes}[1]{\goodbreak \item[Notes:] \mbox{} \\[1.3ex] #1} % \providecommand{\sstdiytopic}[2]{\item[{\hspace{-0.35em}#1\hspace{-0.35em}:}] \mbox{} \\[1.3ex] #2} % \providecommand{\sstdiylist}[2]{ \item[#1:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #2 \end{description} } % \providecommand{\sstimplementationstatus}[1]{ \item[{Implementation Status:}] \mbox{} \\[1.3ex] #1} % \providecommand{\sstbugs}[1]{\item[Bugs:] #1} % \providecommand{\sstitemlist}[1]{ \mbox{} \\ \vspace{-3.5ex} \begin{itemize} #1 \end{itemize} } % \providecommand{\sstitem}{\item} % \providecommand{\sstroutine}[3]{ \subsection{#1\xlabel{#1}-\label{#1}#2} \begin{description} #3 \end{description} } % \providecommand{\sstattribute}[3]{ \subsubsection{#1\xlabel{#1}-\label{#1}#2} \begin{description} #3 \end{description} \\ } % \providecommand{\sstdescription}[1]{\item[Description:] \begin{description} #1 \end{description} \\ } % \providecommand{\sstusage}[1]{\item[Usage:] \begin{description} {\tt #1} \end{description} \\ } % \providecommand{\sstinvocation}[1]{\item[Invocation:] \begin{description} {\tt #1} \end{description} \\ } % \providecommand{\sstarguments}[1]{ \item[Arguments:] \\ \begin{description} #1 \end{description} \\ } % \providecommand{\sstreturnedvalue}[1]{ \item[Returned Value:] \\ \begin{description} #1 \end{description} \\ } % \providecommand{\sstparameters}[1]{ \item[Parameters:] \\ \begin{description} #1 \end{description} \\ } % \providecommand{\sstapplicability}[1]{% \item[Class Applicability:] \begin{description} #1 \end{description} \\ } % \providecommand{\sstexamples}[1]{ \item[Examples:] \\ \begin{description} #1 \end{description} \\ } % \providecommand{\sstsubsection}[1]{\item[{#1}]} % \providecommand{\sstexamplesubsection}[2]{\item[{\tt #1}] #2\\} % \providecommand{\sstnotes}[1]{\item[Notes:] #1 } % \providecommand{\sstdiytopic}[2]{\item[{#1}] #2 } % \providecommand{\sstimplementationstatus}[1]{ \item[Implementation Status:] #1 } % \providecommand{\sstitemlist}[1]{ \begin{itemize} #1 \end{itemize} \\ }% \providecommand{\sstitem}{\item} % \renewcommand{\thepage}{\roman{page}} \usepackage[dvips]{color} \pagecolor{white} \usepackage[]{inputenc} \makeatletter \makeatletter \count@=\the\catcode`\_ \catcode`\_=8 \newenvironment{tex2html_wrap}{}{}% \catcode`\<=12\catcode`\_=\count@ \newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}% \newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}% \expandafter\renewcommand\csname #1\endcsname}% \newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}% \let\newedcommand\renewedcommand \let\renewedenvironment\newedenvironment \makeatother \let\mathon=$ \let\mathoff=$ \ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi \newbox\sizebox \setlength{\hoffset}{0pt}\setlength{\voffset}{0pt} \addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt} \addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt} \addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt} \addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt} \setlength{\textwidth}{698pt} \setlength{\textheight}{902pt} \newwrite\lthtmlwrite \makeatletter \let\realnormalsize=\normalsize \global\topskip=2sp \def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float \def\@float{\let\@savefreelist\@freelist\real@float} \def\liih@math{\ifmmode$\else\bad@math\fi} \def\end@float{\realend@float\global\let\@freelist\@savefreelist} \let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float \let\@largefloatcheck=\relax \let\if@boxedmulticols=\iftrue \def\@dbflt{\let\@savefreelist\@freelist\real@dbflt} \def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}% \def\phantompar{\csname par\endcsname}\normalsize}% \def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}% \newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }% \newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }% \newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup % \let\ifinner=\iffalse \let\)\liih@math }% \newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}% \expandafter\box\next\egroup}% \newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}% \newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox \ifdim\dimen0>.95\vsize \lthtmltypeout{% *** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}% \ht\sizebox.95\vsize \dp\sizebox\z@ \fi \lthtmltypeout{l2hSize % :\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}% \newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist \lthtmlmathtype{#1}\lthtmlvboxmathA}% \newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}% \newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup \let\@savefreelist\@freelist \lthtmlhboxmathB}% \newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}% \newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox \global\let\@freelist\@savefreelist}% \newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}% \newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}% \newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}% \lthtmldisplayA{#1}\let\@eqnnum\relax}% \newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}% \newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB} \newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA \vrule height1.5ex width0pt }% \newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}% \newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}% \newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt % \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline} \newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt % \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath} \newcommand\lthtmlindisplaymathZ{\egroup % \centerinlinemath\lthtmllogmath\lthtmlsetmath} \def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{% \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}} \def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{% \kern.1em\kern0.75 pt\hbox{\hglue.17em\copy\sizebox\hglue0.75 pt}}\kern.3pt% \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.75 pt% \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}} \def\centerinlinemath{% \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1 \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax} \def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill \else\expandafter\vss\fi}% \providecommand{\selectlanguage}[1]{}% \makeatletter \tracingstats = 1 \begin{document} \pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}% \lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}% \makeatletter \if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}% \else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi% \lthtmltypeout{}% \makeatother \setcounter{page}{1} \onecolumn % !!! IMAGES START HERE !!! \stepcounter{section} \renewcommand{\thepage}{\arabic{page}} \stepcounter{section} \appendix \stepcounter{section} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} {\newpage\clearpage \lthtmlinlinemathA{tex2html_wrap_inline701}% $*$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} {\newpage\clearpage \lthtmlinlinemathA{tex2html_wrap_inline1194}% $+$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} {\newpage\clearpage \lthtmlinlinemathA{tex2html_wrap_inline2779}% $<$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} {\newpage\clearpage \lthtmlinlinemathA{tex2html_wrap_inline4885}% $>$% \lthtmlinlinemathZ \lthtmlcheckvsize\clearpage} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \stepcounter{subsection} \end{document} sun267.htx/img1.png000644 000161 000120 00000000247 12015001747 014345 0ustar00timjadmin000000 000000 ‰PNG  IHDR o’q*PLTEÓÓÓmjk¶µµ^[\ÿÿÿ§¦¦OLMñññ™——A=>ââ⊈‰ÅÄÄ{yzLùßtRNS@æØf+IDAT™cpÔuLYÒQ®²! ªZzˆÊ9ƤÄe‹ /¸w„1âIEND®B`‚sun267.htx/img2.png000644 000161 000120 00000000231 12015001750 014331 0ustar00timjadmin000000 000000 ‰PNG  IHDR¾š²PLTEÓÓÓ¶µµ^[\ÿÿÿOLM™——A=>Šˆ‰ÅÄă±ÁStRNS@æØf,IDAT•c0†Â,C8ˈ(VxyYy¹0ˆÕÑÑÒÑÁLŠ^ I¤«h̾6$¬*RŽIEND®B`‚sun267.htx/img3.png000644 000161 000120 00000000255 12015001751 014341 0ustar00timjadmin000000 000000 ‰PNG  IHDR¾š²!PLTEÓÓÓmjk¶µµ^[\ÿÿÿ§¦¦ñññââ⊈‰ÅÄÄ{yz? þtRNS@æØf:IDAT•cpÒXU%PVÕr¨ØÄ6¨,ˆf)‡Átp,‡ë­Z7¥¢n^†$ÜäŒRÝBSƶHuÎZ1QIEND®B`‚sun267.htx/img4.png000644 000161 000120 00000000251 12015001752 014337 0ustar00timjadmin000000 000000 ‰PNG  IHDR¾š²PLTEâââmjk^[\ÿÿÿ§¦¦ñññÅÄÄŠˆ‰{yz4C(tRNS@æØfŠÁk >B‡ú>†¬…NÙ3û¯=Œ¡k¡•äШ¾Ÿ?²d”Œ M53–—³³ˆkARMê9®êNÈlúà :CÕü5¥t•·¥læ¸]o¦÷ÁDª­×/ûÜ¡_ç\lŽEÄ6¶ãtÄUˆê›é¬è{Ccs=Ëßû@ªuwÿû¡®·ˆz Abstract


next up previous 250
Next: Introduction
Up: PAL Positional Astronomy Library
Previous: PAL Positional Astronomy Library


Abstract

PAL provides a subset of the Fortran SLALIB library but written in C using the SLALIB C API. Where possible the PAL routines are implemented using the C SOFA library. It is provided with a GPL license.



next up previous 250
Next: Introduction
Up: PAL Positional Astronomy Library
Previous: PAL Positional Astronomy Library

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node10.html000644 000161 000120 00000012146 12015001752 014753 0ustar00timjadmin000000 000000 palCaldj - Gregorian Calendar to Modified Julian Date

next up previous 250
Next: palDafin - Sexagesimal character string to angle
Up: Function Descriptions
Previous: palAmpqk - Convert star RA,Dec from geocentric apparent to mean place


palCaldj - Gregorian Calendar to Modified Julian Date

Description:
Modified Julian Date to Gregorian Calendar with special behaviour for 2-digit years relating to 1950 to 2049.

Invocation:
void palCaldj ( int iy, int im, int id, double $*$djm, int $*$j );

Arguments:

iy = int (Given)
Year in the Gregorian calendar
im = int (Given)
Month in the Gergorian calendar
id = int (Given)
Day in the Gregorian calendar
djm = double $*$ (Returned)
Modified Julian Date (JD-2400000.5) for 0 hrs
j = status (Returned)
0 = OK. See iauCal2jd for other values.

Notes:
  • Uses iauCal2jd

  • Unlike iauCal2jd this routine treats the years 0-100 as referring to the end of the 20th Century and beginning of the 21st Century. If this behaviour is not acceptable use the SOFA routine directly or palCldj. Acceptable years are 00-49, interpreted as 2000-2049, 50-99, " " 1950-1999, all others, interpreted literally.

  • Unlike SLA this routine will work with negative years.



next up previous 250
Next: palDafin - Sexagesimal character string to angle
Up: Function Descriptions
Previous: palAmpqk - Convert star RA,Dec from geocentric apparent to mean place

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node11.html000644 000161 000120 00000017452 12015001752 014761 0ustar00timjadmin000000 000000 palDafin - Sexagesimal character string to angle

next up previous 250
Next: palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E
Up: Function Descriptions
Previous: palCaldj - Gregorian Calendar to Modified Julian Date


palDafin - Sexagesimal character string to angle

Description:
Extracts an angle from a sexagesimal string with degrees, arcmin, arcsec fields using space or comma delimiters.

Invocation:
void palDafin ( const char $*$string, int $*$ipos, double $*$a, int $*$j );

Arguments:

string = const char $*$ (Given)
String containing deg, arcmin, arcsec fields
ipos = int $*$ (Given & Returned)
Position to start decoding "string". First character is position 1 for compatibility with SLA. After calling this routine "iptr" will be positioned after the sexagesimal string.
a = double $*$ (Returned)
Angle in radians.
j = int $*$ (Returned)
status: 0 = OK $+$1 = default, A unchanged
  • 1 = bad degrees )

  • 2 = bad arcminutes ) (note 3)

  • 3 = bad arcseconds )


Notes:
  • The first three "fields" in STRING are degrees, arcminutes, arcseconds, separated by spaces or commas. The degrees field may be signed, but not the others. The decoding is carried out by the palDfltin routine and is free-format.

  • Successive fields may be absent, defaulting to zero. For zero status, the only combinations allowed are degrees alone, degrees and arcminutes, and all three fields present. If all three fields are omitted, a status of $+$1 is returned and A is unchanged. In all other cases A is changed.

  • Range checking:


The degrees field is not range checked. However, it is expected to be integral unless the other two fields are absent.

The arcminutes field is expected to be 0-59, and integral if the arcseconds field is present. If the arcseconds field is absent, the arcminutes is expected to be 0-59.9999...

The arcseconds field is expected to be 0-59.9999...

  • Decoding continues even when a check has failed. Under these circumstances the field takes the supplied value, defaulting to zero, and the result A is computed and returned.

  • Further fields after the three expected ones are not treated as an error. The pointer IPOS is left in the correct state for further decoding with the present routine or with palDfltin etc. See the example, above.

  • If STRING contains hours, minutes, seconds instead of degrees etc, or if the required units are turns (or days) instead of radians, the result A should be multiplied as follows:


for to obtain multiply STRING A in A by

d ' " radians 1 = 1.0 d ' " turns 1/2pi = 0.1591549430918953358 h m s radians 15 = 15.0 h m s days 15/2pi = 2.3873241463784300365

Example
argument before after

STRING '-57 17 44.806 12 34 56.7' unchanged IPTR 1 16 (points to 12...) A ? -1.00000D0 J ? 0



next up previous 250
Next: palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E
Up: Function Descriptions
Previous: palCaldj - Gregorian Calendar to Modified Julian Date

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node12.html000644 000161 000120 00000014310 12015001752 014750 0ustar00timjadmin000000 000000 palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E

next up previous 250
Next: palDeuler - Form a rotation matrix from the Euler angles
Up: Function Descriptions
Previous: palDafin - Sexagesimal character string to angle


palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E

Description:
Convert equatorial to horizon coordinates.

Invocation:
palDe2h( double ha, double dec, double phi, double $*$ az, double $*$ el );

Arguments:

ha = double $*$ (Given)
Hour angle (radians)
dec = double $*$ (Given)
Declination (radians)
phi = double (Given)
Observatory latitude (radians)
az = double $*$ (Returned)
Azimuth (radians)
el = double $*$ (Returned)
Elevation (radians)

Notes:
  • All the arguments are angles in radians.

  • Azimuth is returned in the range 0-2pi; north is zero, and east is $+$pi/2. Elevation is returned in the range $+$/-pi/2.

  • The latitude must be geodetic. In critical applications, corrections for polar motion should be applied.

  • In some applications it will be important to specify the correct type of hour angle and declination in order to produce the required type of azimuth and elevation. In particular, it may be important to distinguish between elevation as affected by refraction, which would require the "observed" HA,Dec, and the elevation in vacuo, which would require the "topocentric" HA,Dec. If the effects of diurnal aberration can be neglected, the "apparent" HA,Dec may be used instead of the topocentric HA,Dec.

  • No range checking of arguments is carried out.

  • In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude, and (for tracking a star) sine and cosine of declination.



next up previous 250
Next: palDeuler - Form a rotation matrix from the Euler angles
Up: Function Descriptions
Previous: palDafin - Sexagesimal character string to angle

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node13.html000644 000161 000120 00000013023 12015001752 014751 0ustar00timjadmin000000 000000 palDeuler - Form a rotation matrix from the Euler angles

next up previous 250
Next: palDfltin - Convert free-format input into double precision floating point
Up: Function Descriptions
Previous: palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E


palDeuler - Form a rotation matrix from the Euler angles

Description:
A rotation is positive when the reference frame rotates anticlockwise as seen looking towards the origin from the positive region of the specified axis.

The characters of ORDER define which axes the three successive rotations are about. A typical value is 'ZXZ', indicating that RMAT is to become the direction cosine matrix corresponding to rotations of the reference frame through PHI radians about the old Z-axis, followed by THETA radians about the resulting X-axis, then PSI radians about the resulting Z-axis.

The axis names can be any of the following, in any order or combination: X, Y, Z, uppercase or lowercase, 1, 2, 3. Normal axis labelling/numbering conventions apply; the xyz (=123) triad is right-handed. Thus, the 'ZXZ' example given above could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ'). ORDER is terminated by length or by the first unrecognized character.

Fewer than three rotations are acceptable, in which case the later angle arguments are ignored. If all rotations are zero, the identity matrix is produced.


Invocation:
void palDeuler ( const char $*$order, double phi, double theta, double psi, double rmat[3][3] );

Arguments:

order = const char[] (Given)
Specifies about which axes the rotation occurs
phi = double (Given)
1st rotation (radians)
theta = double (Given)
2nd rotation (radians)
psi = double (Given)
3rd rotation (radians)
rmat = double[3][3] (Given & Returned)
Rotation matrix



next up previous 250
Next: palDfltin - Convert free-format input into double precision floating point
Up: Function Descriptions
Previous: palDe2h - Equatorial to horizon coordinates: HA,Dec to Az,E

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node14.html000644 000161 000120 00000014274 12015001752 014763 0ustar00timjadmin000000 000000 palDfltin - Convert free-format input into double precision floating point

next up previous 250
Next: palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec
Up: Function Descriptions
Previous: palDeuler - Form a rotation matrix from the Euler angles


palDfltin - Convert free-format input into double precision floating point

Description:
Extracts a number from an input string starting at the specified index.

Invocation:
void palDfltin( const char $*$ string, int $*$nstrt, double $*$dreslt, int $*$jflag );

Arguments:

string = const char $*$ (Given)
String containing number to be decoded.
nstrt = int $*$ (Given and Returned)
Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1.
dreslt = double $*$ (Returned)
Result. Not updated when jflag=1.
jflag = int $*$ (Returned)
status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error

Notes:
  • Uses the strtod() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing.

  • All "D" characters are converted to "E" to handle fortran exponents.

  • Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space.

  • If no number can be found flag will be set to 1.

  • If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value HUGE_VAL, for underflow it will have the value 0.0.

  • For compatiblity with SLA/F -0 will be returned as "0" with jflag == -1.

  • Unlike slaDfltin a standalone "E" will return status 1 (could not find a number) rather than 2 (bad number).



next up previous 250
Next: palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec
Up: Function Descriptions
Previous: palDeuler - Form a rotation matrix from the Euler angles

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node15.html000644 000161 000120 00000014134 12015001752 014757 0ustar00timjadmin000000 000000 palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec

next up previous 250
Next: palDjcal - Modified Julian Date to Gregorian Calendar
Up: Function Descriptions
Previous: palDfltin - Convert free-format input into double precision floating point


palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec

Description:
Convert horizon to equatorial coordinates.

Invocation:
palDh2e( double az, double el, double phi, double $*$ ha, double $*$ dec );

Arguments:

az = double (Given)
Azimuth (radians)
el = double (Given)
Elevation (radians)
phi = double (Given)
Observatory latitude (radians)
ha = double $*$ (Returned)
Hour angle (radians)
dec = double $*$ (Returned)
Declination (radians)

Notes:
  • All the arguments are angles in radians.

  • The sign convention for azimuth is north zero, east $+$pi/2.

  • HA is returned in the range $+$/-pi. Declination is returned in the range $+$/-pi/2.

  • The latitude is (in principle) geodetic. In critical applications, corrections for polar motion should be applied.

  • In some applications it will be important to specify the correct type of elevation in order to produce the required type of HA,Dec. In particular, it may be important to distinguish between the elevation as affected by refraction, which will yield the "observed" HA,Dec, and the elevation in vacuo, which will yield the "topocentric" HA,Dec. If the effects of diurnal aberration can be neglected, the topocentric HA,Dec may be used as an approximation to the "apparent" HA,Dec.

  • No range checking of arguments is done.

  • In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude.



next up previous 250
Next: palDjcal - Modified Julian Date to Gregorian Calendar
Up: Function Descriptions
Previous: palDfltin - Convert free-format input into double precision floating point

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node16.html000644 000161 000120 00000010670 12015001752 014761 0ustar00timjadmin000000 000000 palDjcal - Modified Julian Date to Gregorian Calendar

next up previous 250
Next: palDmat - Matrix inversion & solution of simultaneous equations
Up: Function Descriptions
Previous: palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec


palDjcal - Modified Julian Date to Gregorian Calendar

Description:
Modified Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages (namely rounded to a specified precision, and with the fields stored in a single array)

Invocation:
void palDjcal ( int ndp, double djm, int iymdf[4], int $*$j );

Arguments:

ndp = int (Given)
Number of decimal places of days in fraction.
djm = double (Given)
Modified Julian Date (JD-2400000.5)
iymdf[4] = int[] (Returned)
Year, month, day, fraction in Gregorian calendar.
j = status (Returned)
0 = OK. See iauJd2cal for other values.

Notes:
  • Uses iauJd2cal



next up previous 250
Next: palDmat - Matrix inversion & solution of simultaneous equations
Up: Function Descriptions
Previous: palDh2e - Horizon to equatorial coordinates: Az,El to HA,Dec

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node17.html000644 000161 000120 00000013250 12015001752 014757 0ustar00timjadmin000000 000000 palDmat - Matrix inversion & solution of simultaneous equations

next up previous 250
Next: palDs2tp - Spherical to tangent plane projection
Up: Function Descriptions
Previous: palDjcal - Modified Julian Date to Gregorian Calendar


palDmat - Matrix inversion & solution of simultaneous equations

Description:
Matrix inversion & solution of simultaneous equations For the set of n simultaneous equations in n unknowns: A.Y = X this routine calculates the inverse of A, the determinant of matrix A and the vector of N unknowns.

Invocation:
void palDmat( int n, double $*$a, double $*$y, double $*$d, int $*$jf, int $*$iw );

Arguments:

n = int (Given)
Number of simultaneous equations and number of unknowns.
a = double[] (Given & Returned)
A non-singular NxN matrix (implemented as a contiguous block of memory). After calling this routine "a" contains the inverse of the matrix.
y = double[] (Given & Returned)
The vector of N unknowns. On exit this vector contains the N solutions.
d = double $*$ (Returned)
The determinant.
jf = int $*$ (Returned)
The singularity flag. If the matrix is non-singular, jf=0 is returned. If the matrix is singular, jf=-1 & d=0.0 are returned. In the latter case, the contents of array "a" on return are undefined.

Notes:
  • Implemented using Gaussian elimination with partial pivoting.

  • Optimized for speed rather than accuracy with errors 1 to 4 times those of routines optimized for accuracy.



next up previous 250
Next: palDs2tp - Spherical to tangent plane projection
Up: Function Descriptions
Previous: palDjcal - Modified Julian Date to Gregorian Calendar

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node18.html000644 000161 000120 00000012474 12015001752 014767 0ustar00timjadmin000000 000000 palDs2tp - Spherical to tangent plane projection

next up previous 250
Next: palDtt - Return offset between UTC and TT
Up: Function Descriptions
Previous: palDmat - Matrix inversion & solution of simultaneous equations


palDs2tp - Spherical to tangent plane projection

Description:
Projection of spherical coordinates onto tangent plane: "gnomonic" projection - "standard coordinates"

Invocation:
palDs2tp( double ra, double dec, double raz, double decz, double $*$xi, double $*$eta, int $*$j );

Arguments:

ra = double (Given)
RA spherical coordinate of point to be projected (radians)
dec = double (Given)
Dec spherical coordinate of point to be projected (radians)
raz = double (Given)
RA spherical coordinate of tangent point (radians)
decz = double (Given)
Dec spherical coordinate of tangent point (radians)
xi = double $*$ (Returned)
First rectangular coordinate on tangent plane (radians)
eta = double $*$ (Returned)
Second rectangular coordinate on tangent plane (radians)
j = int $*$ (Returned)
status: 0 = OK, star on tangent plane 1 = error, star too far from axis 2 = error, antistar on tangent plane 3 = error, antistar too far from axis



next up previous 250
Next: palDtt - Return offset between UTC and TT
Up: Function Descriptions
Previous: palDmat - Matrix inversion & solution of simultaneous equations

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node19.html000644 000161 000120 00000011005 12015001752 014755 0ustar00timjadmin000000 000000 palDtt - Return offset between UTC and TT

next up previous 250
Next: palDmoon - Approximate geocentric position and velocity of the Moon
Up: Function Descriptions
Previous: palDs2tp - Spherical to tangent plane projection


palDtt - Return offset between UTC and TT

Description:
Increment to be applied to Coordinated Universal Time UTC to give International Atomic Time (TAI).

Invocation:
dat = palDat( double utc );

Arguments:

utc = double (Given)
UTC date as a modified JD (JD-2400000.5)

Returned Value:

dat = double
TAI-UTC in seconds

Notes:
  • This routine converts the MJD argument to calendar date before calling the SOFA iauDat function.

  • This routine matches the slaDat interface which differs from the iauDat interface. Consider coding directly to the SOFA interface.

  • See iauDat for a description of error conditions when calling this function with a time outside of the UTC range.

  • The status argument from iauDat is ignored. This is reasonable since the error codes are mainly related to incorrect calendar dates when calculating the JD internally.



next up previous 250
Next: palDmoon - Approximate geocentric position and velocity of the Moon
Up: Function Descriptions
Previous: palDs2tp - Spherical to tangent plane projection

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node2.html000644 000161 000120 00000006245 12015001752 014677 0ustar00timjadmin000000 000000 Introduction

next up previous 250
Next: Function Descriptions
Up: PAL Positional Astronomy Library
Previous: Abstract

Introduction

This library provides a C library designed as a API-compatible replacement for the C SLALIB library () and uses a GPL licence so is freely redistributable. Where possible the functions call equivalent SOFA routines and use current IAU 2006 standards. This means that any functions that rely on nutation or precession will return slightly different answers to the SLA functions.



next up previous 250
Next: Function Descriptions
Up: PAL Positional Astronomy Library
Previous: Abstract

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node20.html000644 000161 000120 00000012346 12015001752 014756 0ustar00timjadmin000000 000000 palDmoon - Approximate geocentric position and velocity of the Moon

next up previous 250
Next: palDrange - Normalize angle into range /- pi
Up: Function Descriptions
Previous: palDtt - Return offset between UTC and TT


palDmoon - Approximate geocentric position and velocity of the Moon

Description:
Calculate the approximate geocentric position of the Moon using a full implementation of the algorithm published by Meeus (l'Astronomie, June 1984, p348).

Invocation:
void palDmoon( double date, double pv[6] );

Arguments:

date = double (Given)
TDB as a Modified Julian Date (JD-2400000.5)
pv = double [6] (Returned)
Moon x,y,z,xdot,ydot,zdot, mean equator and equinox of date (AU, AU/s)

Notes:
  • Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in latitude and 0.2 arcsec in HP (equivalent to about 20 km in distance). Comparison with JPL DE200 over the interval 1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km and 81 mm/s in distance. The maximum errors over the same interval are 18 arcsec and 0.50 arcsec/hour in longitude, 11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s in distance.

  • The original algorithm is expressed in terms of the obsolete timescale Ephemeris Time. Either TDB or TT can be used, but not UT without incurring significant errors (30 arcsec at the present time) due to the Moon's 0.5 arcsec/sec movement.

  • The algorithm is based on pre IAU 1976 standards. However, the result has been moved onto the new (FK5) equinox, an adjustment which is in any case much smaller than the intrinsic accuracy of the procedure.

  • Velocity is obtained by a complete analytical differentiation of the Meeus model.



next up previous 250
Next: palDrange - Normalize angle into range /- pi
Up: Function Descriptions
Previous: palDtt - Return offset between UTC and TT

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node21.html000644 000161 000120 00000007737 12015001752 014767 0ustar00timjadmin000000 000000 palDrange - Normalize angle into range /- pi

next up previous 250
Next: palDt - Estimate the offset between dynamical time and UT
Up: Function Descriptions
Previous: palDmoon - Approximate geocentric position and velocity of the Moon


palDrange - Normalize angle into range $+$/- pi

Description:
The result is "angle" expressed in the range $+$/- pi. If the supplied value for "angle" is equal to $+$/- pi, it is returned unchanged.

Invocation:
palDrange( double angle )

Arguments:

angle = double (Given)
The angle in radians.



next up previous 250
Next: palDt - Estimate the offset between dynamical time and UT
Up: Function Descriptions
Previous: palDmoon - Approximate geocentric position and velocity of the Moon

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node22.html000644 000161 000120 00000012417 12015001752 014757 0ustar00timjadmin000000 000000 palDt - Estimate the offset between dynamical time and UT

next up previous 250
Next: palDtp2s - Tangent plane to spherical coordinates
Up: Function Descriptions
Previous: palDrange - Normalize angle into range /- pi


palDt - Estimate the offset between dynamical time and UT

Description:
Estimate the offset between dynamical time and Universal Time for a given historical epoch.

Invocation:
double palDt( double epoch );

Arguments:

epoch = double (Given)
Julian epoch (e.g. 1850.0)

Returned Value:

palDt = double
Rough estimate of ET-UT (after 1984, TT-UT) at the given epoch, in seconds.

Notes:
  • Depending on the epoch, one of three parabolic approximations is used:


before 979 Stephenson & Morrison's 390 BC to AD 948 model 979 to 1708 Stephenson & Morrison's 948 to 1600 model after 1708 McCarthy & Babcock's post-1650 model

The breakpoints are chosen to ensure continuity: they occur at places where the adjacent models give the same answer as each other.

  • The accuracy is modest, with errors of up to 20 sec during the interval since 1650, rising to perhaps 30 min by 1000 BC. Comparatively accurate values from AD 1600 are tabulated in the Astronomical Almanac (see section K8 of the 1995 AA).

  • The use of double-precision for both argument and result is purely for compatibility with other SLALIB time routines.

  • The models used are based on a lunar tidal acceleration value of -26.00 arcsec per century.

See Also
Explanatory Supplement to the Astronomical Almanac, ed P.K.Seidelmann, University Science Books (1992), section 2.553, p83. This contains references to the Stephenson & Morrison and McCarthy & Babcock papers.


next up previous 250
Next: palDtp2s - Tangent plane to spherical coordinates
Up: Function Descriptions
Previous: palDrange - Normalize angle into range /- pi

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node23.html000644 000161 000120 00000011445 12015001752 014760 0ustar00timjadmin000000 000000 palDtp2s - Tangent plane to spherical coordinates

next up previous 250
Next: palDtps2c - Determine RA,Dec of tangent point from coordinates
Up: Function Descriptions
Previous: palDt - Estimate the offset between dynamical time and UT


palDtp2s - Tangent plane to spherical coordinates

Description:
Transform tangent plane coordinates into spherical.

Invocation:
palDtp2s( double xi, double eta, double raz, double decz, double $*$ra, double $*$dec);

Arguments:

xi = double (Given)
First rectangular coordinate on tangent plane (radians)
eta = double (Given)
Second rectangular coordinate on tangent plane (radians)
raz = double (Given)
RA spherical coordinate of tangent point (radians)
decz = double (Given)
Dec spherical coordinate of tangent point (radians)
ra = double $*$ (Returned)
RA spherical coordinate of point to be projected (radians)
dec = double $*$ (Returned)
Dec spherical coordinate of point to be projected (radians)



next up previous 250
Next: palDtps2c - Determine RA,Dec of tangent point from coordinates
Up: Function Descriptions
Previous: palDt - Estimate the offset between dynamical time and UT

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node24.html000644 000161 000120 00000016207 12015001752 014762 0ustar00timjadmin000000 000000 palDtps2c - Determine RA,Dec of tangent point from coordinates

next up previous 250
Next: palDtt - Return offset between UTC and TT
Up: Function Descriptions
Previous: palDtp2s - Tangent plane to spherical coordinates


palDtps2c - Determine RA,Dec of tangent point from coordinates

Description:
From the tangent plane coordinates of a star of known RA,Dec, determine the RA,Dec of the tangent point.

Invocation:
palDtps2c( double xi, double eta, double ra, double dec, double $*$ raz1, double decz1, double $*$ raz2, double decz2, int $*$n);

Arguments:

xi = double (Given)
First rectangular coordinate on tangent plane (radians)
eta = double (Given)
Second rectangular coordinate on tangent plane (radians)
ra = double (Given)
RA spherical coordinate of star (radians)
dec = double (Given)
Dec spherical coordinate of star (radians)
raz1 = double $*$ (Returned)
RA spherical coordinate of tangent point, solution 1 (radians)
decz1 = double $*$ (Returned)
Dec spherical coordinate of tangent point, solution 1 (radians)
raz2 = double $*$ (Returned)
RA spherical coordinate of tangent point, solution 2 (radians)
decz2 = double $*$ (Returned)
Dec spherical coordinate of tangent point, solution 2 (radians)
n = int $*$ (Returned)
number of solutions: 0 = no solutions returned (note 2) 1 = only the first solution is useful (note 3) 2 = both solutions are useful (note 3)

Notes:
  • The RAZ1 and RAZ2 values are returned in the range 0-2pi.

  • Cases where there is no solution can only arise near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero XI value, and hence it is meaningless to ask where the tangent point would have to be to bring about this combination of XI and DEC.

  • Also near the poles, cases can arise where there are two useful solutions. The argument N indicates whether the second of the two solutions returned is useful. N=1 indicates only one useful solution, the usual case; under these circumstances, the second solution corresponds to the "over-the-pole" case, and this is reflected in the values of RAZ2 and DECZ2 which are returned.

  • The DECZ1 and DECZ2 values are returned in the range $+$/-pi, but in the usual, non-pole-crossing, case, the range is $+$/-pi/2.

  • This routine is the spherical equivalent of the routine sla_DTPV2C.



next up previous 250
Next: palDtt - Return offset between UTC and TT
Up: Function Descriptions
Previous: palDtp2s - Tangent plane to spherical coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node25.html000644 000161 000120 00000010471 12015001752 014760 0ustar00timjadmin000000 000000 palDtt - Return offset between UTC and TT

next up previous 250
Next: palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model
Up: Function Descriptions
Previous: palDtps2c - Determine RA,Dec of tangent point from coordinates


palDtt - Return offset between UTC and TT

Description:
Increment to be applied to Coordinated Universal Time UTC to give Terrestrial Time TT (formerly Ephemeris Time ET)

Invocation:
dtt = palDtt( double utc );

Arguments:

utc = double (Given)
UTC date as a modified JD (JD-2400000.5)

Returned Value:

dtt = double
TT-UTC in seconds

Notes:
  • Consider a comprehensive upgrade to use the time transformations in SOFA's time cookbook: http://www.iausofa.org/sofa_ts_c.pdf.

  • See iauDat for a description of error conditions when calling this function with a time outside of the UTC range. This behaviour differs from slaDtt.



next up previous 250
Next: palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model
Up: Function Descriptions
Previous: palDtps2c - Determine RA,Dec of tangent point from coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node26.html000644 000161 000120 00000010266 12015001752 014763 0ustar00timjadmin000000 000000 palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model

next up previous 250
Next: palEl2ue - Transform conventional elements into "universal" form
Up: Function Descriptions
Previous: palDtt - Return offset between UTC and TT


palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model

Description:
The equatorial to ecliptic rotation matrix is found and returned. The matrix is in the sense V(ecl) = RMAT $*$ V(equ); the equator, equinox and ecliptic are mean of date.

Invocation:
palEcmat( double date, double rmat[3][3] )

Arguments:

date = double (Given)
TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds).
rmat = double[3][3] (Returned)
Rotation matrix



next up previous 250
Next: palEl2ue - Transform conventional elements into "universal" form
Up: Function Descriptions
Previous: palDtt - Return offset between UTC and TT

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node27.html000644 000161 000120 00000024401 12015001752 014760 0ustar00timjadmin000000 000000 palEl2ue - Transform conventional elements into "universal" form

next up previous 250
Next: palEpco - Convert an epoch into the appropriate form - 'B' or 'J'
Up: Function Descriptions
Previous: palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model


palEl2ue - Transform conventional elements into "universal" form

Description:
Transform conventional osculating elements into "universal" form.

Invocation:
void palEl2ue ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double u[13], int $*$jstat );

Arguments:

date = double (Given)
Epoch (TT MJD) of osculation (Note 3)
jform = int (Given)
Element set actually returned (1-3; Note 6)
epoch = double (Given)
Epoch of elements (TT MJD)
orbinc = double (Given)
inclination (radians)
anode = double (Given)
longitude of the ascending node (radians)
perih = double (Given)
longitude or argument of perihelion (radians)
aorq = double (Given)
mean distance or perihelion distance (AU)
e = double (Given)
eccentricity
aorl = double (Given)
mean anomaly or longitude (radians, JFORM=1,2 only)
dm = double (Given)
daily motion (radians, JFORM=1 only)
u = double [13] (Returned)
Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx
jstat = int $*$ (Returned)
status: 0 = OK
  • 1 = illegal JFORM

  • 2 = illegal E

  • 3 = illegal AORQ

  • 4 = illegal DM

  • 5 = numerical error


Notes:
  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • The companion routine is palUe2pv. This takes the set of numbers that the present routine outputs and uses them to derive the object's position and velocity. A single prediction requires one call to the present routine followed by one call to palUe2pv; for convenience, the two calls are packaged as the routine palPlanel. Multiple predictions may be made by again calling the present routine once, but then calling palUe2pv multiple times, which is faster than multiple calls to palPlanel.

  • DATE is the epoch of osculation. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5).

  • The supplied orbital elements are with respect to the J2000 ecliptic and equinox. The position and velocity parameters returned in the array U are with respect to the mean equator and equinox of epoch J2000, and are for the perihelion prior to the specified epoch.

  • The universal elements returned in the array U are in canonical units (solar masses, AU and canonical days).

  • Three different element-format options are available:


Option JFORM=1, suitable for the major planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians)

Option JFORM=2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians)

Option JFORM=3, suitable for comets:

EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10)

  • Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed.

  • The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff's Universal Variables.

See Also
Everhart & Pitkin, Am.J.Phys. 51, 712 (1983).


next up previous 250
Next: palEpco - Convert an epoch into the appropriate form - 'B' or 'J'
Up: Function Descriptions
Previous: palEcmat - Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node28.html000644 000161 000120 00000011263 12015001752 014763 0ustar00timjadmin000000 000000 palEpco - Convert an epoch into the appropriate form - 'B' or 'J'

next up previous 250
Next: palEpv - Earth position and velocity with respect to the BCRS
Up: Function Descriptions
Previous: palEl2ue - Transform conventional elements into "universal" form


palEpco - Convert an epoch into the appropriate form - 'B' or 'J'

Description:
Converts a Besselian or Julian epoch to a Julian or Besselian epoch.

Invocation:
double palEpco( char k0, char k, double e );

Arguments:

k0 = char (Given)
Form of result: 'B'=Besselian, 'J'=Julian
k = char (Given)
Form of given epoch: 'B' or 'J'.

Notes:
  • The result is always either equal to or very close to the given epoch E. The routine is required only in applications where punctilious treatment of heterogeneous mixtures of star positions is necessary.

  • k and k0 are case insensitive. This differes slightly from the Fortran SLA implementation.

  • k and k0 are not validated. They are interpreted as follows: o If k0 and k are the same the result is e o If k0 is 'b' or 'B' and k isn't the conversion is J to B. o In all other cases, the conversion is B to J.



next up previous 250
Next: palEpv - Earth position and velocity with respect to the BCRS
Up: Function Descriptions
Previous: palEl2ue - Transform conventional elements into "universal" form

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node29.html000644 000161 000120 00000011001 12015001752 014752 0ustar00timjadmin000000 000000 palEpv - Earth position and velocity with respect to the BCRS

next up previous 250
Next: palEtrms - Compute the E-terms vector
Up: Function Descriptions
Previous: palEpco - Convert an epoch into the appropriate form - 'B' or 'J'


palEpv - Earth position and velocity with respect to the BCRS

Description:
Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System.

Invocation:
void palEpv( double date, double ph[3], double vh[3], double pb[3], double vb[3] );

Arguments:

date = double (Given)
Date, TDB Modified Julian Date (JD-2400000.5)
ph = double [3] (Returned)
Heliocentric Earth position (AU)
vh = double [3] (Returned)
Heliocentric Earth velocity (AU/day)
pb = double [3] (Returned)
Barycentric Earth position (AU)
vb = double [3] (Returned)
Barycentric Earth velocity (AU/day)

Notes:
  • See iauEpv00 for details on accuracy

  • Note that the status argument from iauEpv00 is ignored



next up previous 250
Next: palEtrms - Compute the E-terms vector
Up: Function Descriptions
Previous: palEpco - Convert an epoch into the appropriate form - 'B' or 'J'

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node3.html000644 000161 000120 00000026413 12015001752 014677 0ustar00timjadmin000000 000000 Function Descriptions

next up previous 250
Next: SOFA Mappings
Up: PAL Positional Astronomy Library
Previous: Introduction


Function Descriptions



Subsections

next up previous 250
Next: SOFA Mappings
Up: PAL Positional Astronomy Library
Previous: Introduction

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node30.html000644 000161 000120 00000010426 12015001752 014754 0ustar00timjadmin000000 000000 palEtrms - Compute the E-terms vector

next up previous 250
Next: palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates
Up: Function Descriptions
Previous: palEpv - Earth position and velocity with respect to the BCRS


palEtrms - Compute the E-terms vector

Description:
Computes the E-terms (elliptic component of annual aberration) vector.

Note the use of the J2000 aberration constant (20.49552 arcsec). This is a reflection of the fact that the E-terms embodied in existing star catalogues were computed from a variety of aberration constants. Rather than adopting one of the old constants the latest value is used here.


Invocation:
void palEtrms ( double ep, double ev[3] );

Arguments:

ep = double (Given)
Besselian epoch
ev = double [3] (Returned)
E-terms as (dx,dy,dz)

See also
  • Smith, C.A. et al., 1989. Astr.J. 97, 265.

  • Yallop, B.D. et al., 1989. Astr.J. 97, 274.



next up previous 250
Next: palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates
Up: Function Descriptions
Previous: palEpv - Earth position and velocity with respect to the BCRS

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node31.html000644 000161 000120 00000011420 12015001752 014750 0ustar00timjadmin000000 000000 palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates

next up previous 250
Next: palEqgal - Convert from J2000.0 equatorial coordinates to Galactic
Up: Function Descriptions
Previous: palEtrms - Compute the E-terms vector


palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates

Description:
Transform from J2000.0 equatorial coordinates to ecliptic coordinates.

Invocation:
void palEqecl( double dr, double dd, double date, double $*$dl, double $*$db);

Arguments:

dr = double (Given)
J2000.0 mean RA (radians)
dd = double (Given)
J2000.0 mean Dec (Radians)
date = double (Given)
TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds).
dl = double $*$ (Returned)
Ecliptic longitude (mean of date, IAU 1980 theory, radians)
db = double $*$ (Returned)
Ecliptic latitude (mean of date, IAU 1980 theory, radians)



next up previous 250
Next: palEqgal - Convert from J2000.0 equatorial coordinates to Galactic
Up: Function Descriptions
Previous: palEtrms - Compute the E-terms vector

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node32.html000644 000161 000120 00000011471 12015001752 014757 0ustar00timjadmin000000 000000 palEqgal - Convert from J2000.0 equatorial coordinates to Galactic

next up previous 250
Next: palEvp - Returns the barycentric and heliocentric velocity and position of the Earth
Up: Function Descriptions
Previous: palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates


palEqgal - Convert from J2000.0 equatorial coordinates to Galactic

Description:
Transformation from J2000.0 equatorial coordinates to IAU 1958 galactic coordinates.

Invocation:
void palEqgal ( double dr, double dd, double $*$dl, double $*$db );

Arguments:

dr = double (Given)
J2000.0 RA (radians)
dd = double (Given)
J2000.0 Dec (radians
dl = double $*$ (Returned)
Galactic longitude (radians).
db = double $*$ (Returned)
Galactic latitude (radians).

Notes:
The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 'FK4' coordinates is required.
See Also
Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)


next up previous 250
Next: palEvp - Returns the barycentric and heliocentric velocity and position of the Earth
Up: Function Descriptions
Previous: palEqecl - Transform from J2000.0 equatorial coordinates to ecliptic coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node33.html000644 000161 000120 00000011751 12015001752 014761 0ustar00timjadmin000000 000000 palEvp - Returns the barycentric and heliocentric velocity and position of the Earth

next up previous 250
Next: palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame
Up: Function Descriptions
Previous: palEqgal - Convert from J2000.0 equatorial coordinates to Galactic


palEvp - Returns the barycentric and heliocentric velocity and position of the Earth

Description:
Returns the barycentric and heliocentric velocity and position of the Earth at a given epoch, given with respect to a specified equinox. For information about accuracy, see the function iauEpv00.

Invocation:
void palEvp( double date, double deqx, double dvb[3], double dpb[3], double dvh[3], double dph[3] )

Arguments:

date = double (Given)
TDB (loosely ET) as a Modified Julian Date (JD-2400000.5)
deqx = double (Given)
Julian epoch (e.g. 2000.0) of mean equator and equinox of the vectors returned. If deqx $<$= 0.0, all vectors are referred to the mean equator and equinox (FK5) of epoch date.
dvb = double[3] (Returned)
Barycentric velocity (AU/s, AU)
dpb = double[3] (Returned)
Barycentric position (AU/s, AU)
dvh = double[3] (Returned)
heliocentric velocity (AU/s, AU)
dph = double[3] (Returned)
Heliocentric position (AU/s, AU)



next up previous 250
Next: palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame
Up: Function Descriptions
Previous: palEqgal - Convert from J2000.0 equatorial coordinates to Galactic

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node34.html000644 000161 000120 00000016522 12015001752 014763 0ustar00timjadmin000000 000000 palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame

next up previous 250
Next: palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4
Up: Function Descriptions
Previous: palEvp - Returns the barycentric and heliocentric velocity and position of the Earth


palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame

Description:
Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame (double precision)

This function converts stars from the Bessel-Newcomb, FK4 system to the IAU 1976, FK5, Fricke system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined.

The method is from Appendix 2 of Ref 1, but using the constants of Ref 4.


Invocation:
palFk45z( double r1950, double d1950, double bepoch, double $*$r2000, double $*$d2000 )

Arguments:

r1950 = double (Given)
B1950.0 FK4 RA at epoch (radians).
d1950 = double (Given)
B1950.0 FK4 Dec at epoch (radians).
bepoch = double (Given)
Besselian epoch (e.g. 1979.3)
r2000 = double (Returned)
J2000.0 FK5 RA (Radians).
d2000 = double (Returned)
J2000.0 FK5 Dec(Radians).

Notes:
  • The epoch BEPOCH is strictly speaking Besselian, but if a Julian epoch is supplied the result will be affected only to a negligible extent.

  • Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after palFk45z is called.

  • In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

References
  • Aoki,S., et al, 1983. Astron.Astrophys., 128, 263.

  • Smith, C.A. et al, 1989. "The transformation of astrometric catalog systems to the equinox J2000.0". Astron.J. 97, 265.

  • Yallop, B.D. et al, 1989. "Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". Astron.J. 97, 274.

  • Seidelmann, P.K. (ed), 1992. "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.



next up previous 250
Next: palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4
Up: Function Descriptions
Previous: palEvp - Returns the barycentric and heliocentric velocity and position of the Earth

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node35.html000644 000161 000120 00000022427 12015001752 014765 0ustar00timjadmin000000 000000 palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4

next up previous 250
Next: palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax
Up: Function Descriptions
Previous: palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame


palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4

Description:
This function converts stars from the IAU 1976, FK5, Fricke system, to the Bessel-Newcomb, FK4 system. The precepts of Smith et al (Ref 1) are followed, using the implementation by Yallop et al (Ref 2) of a matrix method due to Standish. Kinoshita's development of Andoyer's post-Newcomb precession is used. The numerical constants from Seidelmann et al (Ref 3) are used canonically.

Invocation:
palFk524( double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950, double $*$p1950, double $*$v1950 )

Arguments:

r2000 = double (Given)
J2000.0 FK5 RA (radians).
d2000 = double (Given)
J2000.0 FK5 Dec (radians).
dr2000 = double (Given)
J2000.0 FK5 RA proper motion (rad/Jul.yr)
dd2000 = double (Given)
J2000.0 FK5 Dec proper motion (rad/Jul.yr)
p2000 = double (Given)
J2000.0 FK5 parallax (arcsec)
v2000 = double (Given)
J2000.0 FK5 radial velocity (km/s, $+$ve = moving away)
r1950 = double $*$ (Returned)
B1950.0 FK4 RA (radians).
d1950 = double $*$ (Returned)
B1950.0 FK4 Dec (radians).
dr1950 = double $*$ (Returned)
B1950.0 FK4 RA proper motion (rad/Jul.yr)
dd1950 = double $*$ (Returned)
B1950.0 FK4 Dec proper motion (rad/Jul.yr)
p1950 = double $*$ (Returned)
B1950.0 FK4 parallax (arcsec)
v1950 = double $*$ (Returned)
B1950.0 FK4 radial velocity (km/s, $+$ve = moving away)

Notes:
  • The proper motions in RA are dRA/dt rather than cos(Dec)$*$dRA/dt, and are per year rather than per century.

  • Note that conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after FK524 is called.

  • In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

References
  • Smith, C.A. et al, 1989. "The transformation of astrometric catalog systems to the equinox J2000.0". Astron.J. 97, 265.

  • Yallop, B.D. et al, 1989. "Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". Astron.J. 97, 274.

  • Seidelmann, P.K. (ed), 1992. "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.



next up previous 250
Next: palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax
Up: Function Descriptions
Previous: palFk45z - Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node36.html000644 000161 000120 00000015074 12015001752 014766 0ustar00timjadmin000000 000000 palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax

next up previous 250
Next: palGaleq - Convert from galactic to J2000.0 equatorial coordinates
Up: Function Descriptions
Previous: palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4


palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax

Description:
This function converts star positions from the IAU 1976, FK5, Fricke system to the Bessel-Newcomb, FK4 system.

Invocation:
palFk54z( double r2000, double d2000, double bepoch, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950 )

Arguments:

r2000 = double (Given)
J2000.0 FK5 RA (radians).
d2000 = double (Given)
J2000.0 FK5 Dec (radians).
bepoch = double (Given)
Besselian epoch (e.g. 1950.0).
r1950 = double $*$ (Returned)
B1950 FK4 RA (radians) at epoch "bepoch".
d1950 = double $*$ (Returned)
B1950 FK4 Dec (radians) at epoch "bepoch".
dr1950 = double $*$ (Returned)
B1950 FK4 proper motion (RA) (radians/trop.yr)).
dr1950 = double $*$ (Returned)
B1950 FK4 proper motion (Dec) (radians/trop.yr)).

Notes:
  • The proper motion in RA is dRA/dt rather than cos(Dec)$*$dRA/dt.

  • Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession functions before and after this function is called.

  • The FK5 proper motions, the parallax and the radial velocity are presumed zero.

  • It is the intention that FK5 should be a close approximation to an inertial frame, so that distant objects have zero proper motion; such objects have (in general) non-zero proper motion in FK4, and this function returns those fictitious proper motions.

  • The position returned by this function is in the B1950 reference frame but at Besselian epoch BEPOCH. For comparison with catalogues the "bepoch" argument will frequently be 1950.0.



next up previous 250
Next: palGaleq - Convert from galactic to J2000.0 equatorial coordinates
Up: Function Descriptions
Previous: palFk524 - Convert J2000.0 FK5 star data to B1950.0 FK4

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node37.html000644 000161 000120 00000011472 12015001752 014765 0ustar00timjadmin000000 000000 palGaleq - Convert from galactic to J2000.0 equatorial coordinates

next up previous 250
Next: palGalsup - Convert from galactic to supergalactic coordinates
Up: Function Descriptions
Previous: palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax


palGaleq - Convert from galactic to J2000.0 equatorial coordinates

Description:
Transformation from IAU 1958 galactic coordinates to J2000.0 equatorial coordinates.

Invocation:
void palGaleq ( double dl, double db, double $*$dr, double $*$dd );

Arguments:

dl = double (Given)
Galactic longitude (radians).
db = double (Given)
Galactic latitude (radians).
dr = double $*$ (Returned)
J2000.0 RA (radians)
dd = double $*$ (Returned)
J2000.0 Dec (radians)

Notes:
The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 'FK4' coordinates is required.
See Also
Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)


next up previous 250
Next: palGalsup - Convert from galactic to supergalactic coordinates
Up: Function Descriptions
Previous: palFk54z - Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node38.html000644 000161 000120 00000011730 12015001752 014763 0ustar00timjadmin000000 000000 palGalsup - Convert from galactic to supergalactic coordinates

next up previous 250
Next: palGe50 - Transform Galactic Coordinate to B1950 FK4
Up: Function Descriptions
Previous: palGaleq - Convert from galactic to J2000.0 equatorial coordinates


palGalsup - Convert from galactic to supergalactic coordinates

Description:
Transformation from IAU 1958 galactic coordinates to de Vaucouleurs supergalactic coordinates.

Invocation:
void palGalsup ( double dl, double db, double $*$dsl, double $*$dsb );

Arguments:

dl = double (Given)
Galactic longitude.
db = double (Given)
Galactic latitude.
dsl = double $*$ (Returned)
Supergalactic longitude.
dsb = double $*$ (Returned)
Supergalactic latitude.

See Also
  • de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8.

  • Systems & Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490.


(These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.)


next up previous 250
Next: palGe50 - Transform Galactic Coordinate to B1950 FK4
Up: Function Descriptions
Previous: palGaleq - Convert from galactic to J2000.0 equatorial coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node39.html000644 000161 000120 00000011352 12015001752 014764 0ustar00timjadmin000000 000000 palGe50 - Transform Galactic Coordinate to B1950 FK4

next up previous 250
Next: palGeoc - Convert geodetic position to geocentric
Up: Function Descriptions
Previous: palGalsup - Convert from galactic to supergalactic coordinates


palGe50 - Transform Galactic Coordinate to B1950 FK4

Description:
Transformation from IAU 1958 galactic coordinates to B1950.0 'FK4' equatorial coordinates.

Invocation:
palGe50( double dl, double db, double $*$dr, double $*$dd );

Arguments:

dl = double (Given)
Galactic longitude (radians)
db = double (Given)
Galactic latitude (radians)
dr = double $*$ (Returned)
B9150.0 FK4 RA.
dd = double $*$ (Returned)
B1950.0 FK4 Dec.

Notes:
  • The equatorial coordinates are B1950.0 'FK4'. Use the routine palGaleq if conversion to J2000.0 coordinates is required.

See Also
  • Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)



next up previous 250
Next: palGeoc - Convert geodetic position to geocentric
Up: Function Descriptions
Previous: palGalsup - Convert from galactic to supergalactic coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node4.html000644 000161 000120 00000013645 12015001752 014703 0ustar00timjadmin000000 000000 SOFA Mappings

next up previous 250
Next: More complex functions
Up: Function Descriptions
Previous: Function Descriptions

SOFA Mappings

The following table lists PAL/SLA functions that have direct replacements in SOFA. Whilst these routines are implemented in the PAL library using SOFA new code should probably call SOFA directly.

SLA/PAL SOFA
palCldj iauCal2jd
palDbear iauPas
palDaf2r iauAf2a
palDav2m iauRv2m
palDcc2s iauC2s
palDcs2c iauS2c
palDd2tf iauD2tf
palDimxv iauTrxp
palDm2av iauRm2v
palDjcl iauJd2cal
palDmxm iauRxr
palDmxv iauRxp
palDpav iauPap
palDr2af iauA2af
palDr2tf iauA2tf
palDranrm iauAnp
palDsep iauSeps
palDsepv iauSepp
palDtf2d iauTf2d
palDtf2r iauTf2a
palDvdv iauPdp
palDvn iauPn
palDvxv iauPxp
palEpb iauEpb
palEpb2d iauEpb2d
palEpj iauEpj
palEpj2d iauEpj2jd
palEqeqx iauEe06a
palFk5hz iauFk5hz also calls iauEpj2jd
palGmst iauGmst06
palGmsta iauGmst06
palHfk5z iauHfk5z also calls iauEpj2jd


next up previous 250
Next: More complex functions
Up: Function Descriptions
Previous: Function Descriptions

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node40.html000644 000161 000120 00000011027 12015001752 014753 0ustar00timjadmin000000 000000 palGeoc - Convert geodetic position to geocentric

next up previous 250
Next: palIntin - Convert free-format input into an integer
Up: Function Descriptions
Previous: palGe50 - Transform Galactic Coordinate to B1950 FK4


palGeoc - Convert geodetic position to geocentric

Description:
Convert geodetic position to geocentric.

Invocation:
void palGeoc( double p, double h, double $*$ r, double $*$z );

Arguments:

p = double (Given)
latitude (radians)
h = double (Given)
height above reference spheroid (geodetic, metres)
r = double $*$ (Returned)
distance from Earth axis (AU)
z = double $*$ (Returned)
distance from plane of Earth equator (AU)

Notes:
  • Geocentric latitude can be obtained by evaluating atan2(z,r)

  • Uses WGS84 reference ellipsoid and calls iauGd2gc



next up previous 250
Next: palIntin - Convert free-format input into an integer
Up: Function Descriptions
Previous: palGe50 - Transform Galactic Coordinate to B1950 FK4

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node41.html000644 000161 000120 00000013375 12015001752 014764 0ustar00timjadmin000000 000000 palIntin - Convert free-format input into an integer

next up previous 250
Next: palMap - Convert star RA,Dec from mean place to geocentric apparent
Up: Function Descriptions
Previous: palGeoc - Convert geodetic position to geocentric


palIntin - Convert free-format input into an integer

Description:
Extracts a number from an input string starting at the specified index.

Invocation:
void palIntin( const char $*$ string, int $*$nstrt, long $*$ireslt, int $*$jflag );

Arguments:

string = const char $*$ (Given)
String containing number to be decoded.
nstrt = int $*$ (Given and Returned)
Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1.
ireslt = long $*$ (Returned)
Result. Not updated when jflag=1.
jflag = int $*$ (Returned)
status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error

Notes:
  • Uses the strtol() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing.

  • Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space.

  • If no number can be found flag will be set to 1.

  • If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value LONG_MAX, for underflow it will have the value LONG_MIN.



next up previous 250
Next: palMap - Convert star RA,Dec from mean place to geocentric apparent
Up: Function Descriptions
Previous: palGeoc - Convert geodetic position to geocentric

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node42.html000644 000161 000120 00000013034 12015001752 014755 0ustar00timjadmin000000 000000 palMap - Convert star RA,Dec from mean place to geocentric apparent

next up previous 250
Next: palMappa - Compute parameters needed by palAmpqk and palMapqk
Up: Function Descriptions
Previous: palIntin - Convert free-format input into an integer


palMap - Convert star RA,Dec from mean place to geocentric apparent

Description:
Convert star RA,Dec from mean place to geocentric apparent.

Invocation:
void palMap( double rm, double dm, double pr, double pd, double px, double rv, double eq, double date, double $*$ra, double $*$da );

Arguments:

rm = double (Given)
Mean RA (radians)
dm = double (Given)
Mean declination (radians)
pr = double (Given)
RA proper motion, changes per Julian year (radians)
pd = double (Given)
Dec proper motion, changes per Julian year (radians)
px = double (Given)
Parallax (arcsec)
rv = double (Given)
Radial velocity (km/s, $+$ve if receding)
eq = double (Given)
Epoch and equinox of star data (Julian)
date = double (Given)
TDB for apparent place (JD-2400000.5)
ra = double $*$ (Returned)
Apparent RA (radians)
dec = double $*$ (Returned)
Apparent dec (radians)

Notes:
  • Calls palMappa and palMapqk

  • The reference systems and timescales used are IAU 2006.



next up previous 250
Next: palMappa - Compute parameters needed by palAmpqk and palMapqk
Up: Function Descriptions
Previous: palIntin - Convert free-format input into an integer

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node43.html000644 000161 000120 00000012635 12015001752 014764 0ustar00timjadmin000000 000000 palMappa - Compute parameters needed by palAmpqk and palMapqk

next up previous 250
Next: palMapqk - Quick mean to apparent place
Up: Function Descriptions
Previous: palMap - Convert star RA,Dec from mean place to geocentric apparent


palMappa - Compute parameters needed by palAmpqk and palMapqk

Description:
Compute star-independent parameters in preparation for transformations between mean place and geocentric apparent place.

The parameters produced by this function are required in the parallax, aberration, and nutation/bias/precession parts of the mean/apparent transformations.

The reference systems and timescales used are IAU 2006.


Invocation:
void palMappa( double eq, double date, double amprms[21] )

Arguments:

eq = double (Given)
epoch of mean equinox to be used (Julian)
date = double (Given)
TDB (JD-2400000.5)
amprms = double[21] (Returned)
star-independent mean-to-apparent parameters:
  • (0) time interval for proper motion (Julian years)

  • (1-3) barycentric position of the Earth (AU)

  • (4-6) heliocentric direction of the Earth (unit vector)

  • (7) (grav rad Sun)$*$2/(Sun-Earth distance)

  • (8-10) abv: barycentric Earth velocity in units of c

  • (11) sqrt(1-v$*$$*$2) where v=modulus(abv)

  • (12-20) precession/nutation (3,3) matrix


Notes:
  • For date, the distinction between the required TDB and TT is always negligible. Moreover, for all but the most critical applications UTC is adequate.

  • The vector amprms(1-3) is referred to the mean equinox and equator of epoch eq.

  • The parameters amprms produced by this function are used by palAmpqk, palMapqk and palMapqkz.



next up previous 250
Next: palMapqk - Quick mean to apparent place
Up: Function Descriptions
Previous: palMap - Convert star RA,Dec from mean place to geocentric apparent

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node44.html000644 000161 000120 00000013405 12015001752 014761 0ustar00timjadmin000000 000000 palMapqk - Quick mean to apparent place

next up previous 250
Next: palMapqkz - Quick mean to apparent place
Up: Function Descriptions
Previous: palMappa - Compute parameters needed by palAmpqk and palMapqk


palMapqk - Quick mean to apparent place

Description:
Quick mean to apparent place: transform a star RA,Dec from mean place to geocentric apparent place, given the star-independent parameters.

Use of this routine is appropriate when efficiency is important and where many star positions, all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa routine.

If the parallax and proper motions are zero the palMapqkz routine can be used instead.


Invocation:
void palMapqk ( double rm, double dm, double pr, double pd, double px, double rv, double amprms[21], double $*$ra, double $*$da );

Arguments:

rm = double (Given)
Mean RA (radians)
dm = double (Given)
Mean declination (radians)
pr = double (Given)
RA proper motion, changes per Julian year (radians)
pd = double (Given)
Dec proper motion, changes per Julian year (radians)
px = double (Given)
Parallax (arcsec)
rv = double (Given)
Radial velocity (km/s, $+$ve if receding)
amprms = double [21] (Given)
Star-independent mean-to-apparent parameters (see palMappa).
ra = double $*$ (Returned)
Apparent RA (radians)
dec = double $*$ (Returned)
Apparent dec (radians)

Notes:
  • The reference frames and timescales used are post IAU 2006.



next up previous 250
Next: palMapqkz - Quick mean to apparent place
Up: Function Descriptions
Previous: palMappa - Compute parameters needed by palAmpqk and palMapqk

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node45.html000644 000161 000120 00000013155 12015001752 014764 0ustar00timjadmin000000 000000 palMapqkz - Quick mean to apparent place

next up previous 250
Next: palNut - Form the matrix of nutation
Up: Function Descriptions
Previous: palMapqk - Quick mean to apparent place


palMapqkz - Quick mean to apparent place

Description:
Quick mean to apparent place: transform a star RA,dec from mean place to geocentric apparent place, given the star-independent parameters, and assuming zero parallax and proper motion.

Use of this function is appropriate when efficiency is important and where many star positions, all with parallax and proper motion either zero or already allowed for, and all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa function.

The corresponding function for the case of non-zero parallax and proper motion is palMapqk.

The reference systems and timescales used are IAU 2006.

Strictly speaking, the function is not valid for solar-system sources, though the error will usually be extremely small.


Invocation:
void palMapqkz( double rm, double dm, double amprms[21], double $*$ra, double $*$da )

Arguments:

rm = double (Given)
Mean RA (radians).
dm = double (Given)
Mean Dec (radians).
amprms = double[21] (Given)
Star-independent mean-to-apparent parameters (see palMappa): (0-3) not used (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$$*$2) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix
ra = double $*$ (Returned)
Apparent RA (radians).
da = double $*$ (Returned)
Apparent Dec (radians).



next up previous 250
Next: palNut - Form the matrix of nutation
Up: Function Descriptions
Previous: palMapqk - Quick mean to apparent place

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node46.html000644 000161 000120 00000010461 12015001752 014762 0ustar00timjadmin000000 000000 palNut - Form the matrix of nutation

next up previous 250
Next: palNutc - Calculate nutation longitude & obliquoty components
Up: Function Descriptions
Previous: palMapqkz - Quick mean to apparent place


palNut - Form the matrix of nutation

Description:
Form the matrix of nutation for a given date using the IAU 2006 nutation model and palDeuler.

Invocation:
void palNut( double date, double rmatn[3][3] );

Arguments:

date = double (Given)
TT as modified Julian date (JD-2400000.5)
rmatn = double [3][3] (Returned)
Nutation matrix in the sense v(true)=rmatn $*$ v(mean) where v(true) is the star vector relative to the true equator and equinox of date and v(mean) is the star vector relative to the mean equator and equinox of date.

Notes:
  • Uses iauNut06a via palNutc

  • The distinction between TDB and TT is negligible. For all but the most critical applications UTC is adequate.



next up previous 250
Next: palNutc - Calculate nutation longitude & obliquoty components
Up: Function Descriptions
Previous: palMapqkz - Quick mean to apparent place

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node47.html000644 000161 000120 00000011647 12015001752 014772 0ustar00timjadmin000000 000000 palNutc - Calculate nutation longitude & obliquoty components

next up previous 250
Next: palObs - Parameters of selected ground-based observing stations
Up: Function Descriptions
Previous: palNut - Form the matrix of nutation


palNutc - Calculate nutation longitude & obliquoty components

Description:
Calculates the longitude $*$ obliquity components and mean obliquity using the SOFA library.

Invocation:
void palNutc( double date, double $*$ dpsi, double $*$deps, double $*$eps0 );

Arguments:

date = double (Given)
TT as modified Julian date (JD-2400000.5)
dpsi = double $*$ (Returned)
Nutation in longitude
deps = double $*$ (Returned)
Nutation in obliquity
eps0 = double $*$ (Returned)
Mean obliquity.

Notes:
  • Calls iauObl06 and iauNut06a and therefore uses the IAU 206 precession/nutation model.

  • Note the change from SLA/F regarding the date. TT is used rather than TDB.



next up previous 250
Next: palObs - Parameters of selected ground-based observing stations
Up: Function Descriptions
Previous: palNut - Form the matrix of nutation

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node48.html000644 000161 000120 00000021041 12015001752 014760 0ustar00timjadmin000000 000000 palObs - Parameters of selected ground-based observing stations

next up previous 250
Next: palPa - HA, Dec to Parallactic Angle
Up: Function Descriptions
Previous: palNutc - Calculate nutation longitude & obliquoty components


palObs - Parameters of selected ground-based observing stations

Description:
Station numbers, identifiers, names and other details are subject to change and should not be hardwired into application programs.

All characters in "c" up to the first space are checked; thus an abbreviated ID will return the parameters for the first station in the list which matches the abbreviation supplied, and no station in the list will ever contain embedded spaces. "c" must not have leading spaces.

IMPORTANT - BEWARE OF THE LONGITUDE SIGN CONVENTION. The longitude returned by sla_OBS is west-positive in accordance with astronomical usage. However, this sign convention is left-handed and is the opposite of the one used by geographers; elsewhere in PAL the preferable east-positive convention is used. In particular, note that for use in palAop, palAoppa and palOap the sign of the longitude must be reversed.

Users are urged to inform the author of any improvements they would like to see made. For example:

typographical corrections more accurate parameters better station identifiers or names additional stations


Invocation:
int palObs( size_t n, const char $*$ c, char $*$ ident, size_t identlen, char $*$ name, size_t namelen, double $*$ w, double $*$ p, double $*$ h );

Arguments:

n = size_t (Given)
Number specifying the observing station. If 0 the identifier in "c" is used to determine the observing station to use.
c = const char $*$ (Given)
Identifier specifying the observing station for which the parameters should be returned. Only used if n is 0. Can be NULL for n$>$0. Case insensitive.
ident = char $*$ (Returned)
Identifier of the observing station selected. Will be identical to "c" if n==0. Unchanged if "n" or "c" do not match an observing station. Should be at least 11 characters (including the trailing nul).
identlen = size_t (Given)
Size of the buffer "ident" including trailing nul.
name = char $*$ (Returned)
Full name of the specified observing station. Contains "?" if "n" or "c" did not correspond to a valid station. Should be at least 41 characters (including the trailing nul).
w = double $*$ (Returned)
Longitude (radians, West $+$ve). Unchanged if observing station could not be identified.
p = double $*$ (Returned)
Geodetic latitude (radians, North $+$ve). Unchanged if observing station could not be identified.
h = double $*$ (Returned)
Height above sea level (metres). Unchanged if observing station could not be identified.

Returned Value:

palObs = int
0 if an observing station was returned. -1 if no match was found.

Notes:
  • Differs from the SLA interface in that the output short name is not the same variable as the input short name. This simplifies consting. Additionally the size of the output buffers are now specified in the API and a status integer is returned.



next up previous 250
Next: palPa - HA, Dec to Parallactic Angle
Up: Function Descriptions
Previous: palNutc - Calculate nutation longitude & obliquoty components

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node49.html000644 000161 000120 00000011272 12015001752 014766 0ustar00timjadmin000000 000000 palPa - HA, Dec to Parallactic Angle

next up previous 250
Next: palPertel - Update elements by applying planetary perturbations
Up: Function Descriptions
Previous: palObs - Parameters of selected ground-based observing stations


palPa - HA, Dec to Parallactic Angle

Description:
Converts HA, Dec to Parallactic Angle.

Invocation:
double palPa( double ha, double dec, double phi );

Arguments:

ha = double (Given)
Hour angle in radians (Geocentric apparent)
dec = double (Given)
Declination in radians (Geocentric apparent)
phi = double (Given)
Observatory latitude in radians (geodetic)

Returned Value:

palPa = double
Parallactic angle in the range -pi to $+$pi.

Notes:
  • The parallactic angle at a point in the sky is the position angle of the vertical, i.e. the angle between the direction to the pole and to the zenith. In precise applications care must be taken only to use geocentric apparent HA,Dec and to consider separately the effects of atmospheric refraction and telescope mount errors.

  • At the pole a zero result is returned.



next up previous 250
Next: palPertel - Update elements by applying planetary perturbations
Up: Function Descriptions
Previous: palObs - Parameters of selected ground-based observing stations

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node5.html000644 000161 000120 00000006024 12015001752 014675 0ustar00timjadmin000000 000000 More complex functions

next up previous 250
Next: palAddet - Add the E-terms to a pre IAU 1976 mean place
Up: Function Descriptions
Previous: SOFA Mappings

More complex functions

These functions do not have a simple equivalent in SOFA so are reimplemented either completely standalone or using multiple SOFA functions.



next up previous 250
Next: palAddet - Add the E-terms to a pre IAU 1976 mean place
Up: Function Descriptions
Previous: SOFA Mappings

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node50.html000644 000161 000120 00000026536 12015001752 014767 0ustar00timjadmin000000 000000 palPertel - Update elements by applying planetary perturbations

next up previous 250
Next: palPertue - Update the universal elements by applying planetary perturbations
Up: Function Descriptions
Previous: palPa - HA, Dec to Parallactic Angle


palPertel - Update elements by applying planetary perturbations

Description:
Update the osculating orbital elements of an asteroid or comet by applying planetary perturbations.

Invocation:
void palPertel (int jform, double date0, double date1, double epoch0, double orbi0, double anode0, double perih0, double aorq0, double e0, double am0, double $*$epoch1, double $*$orbi1, double $*$anode1, double $*$perih1, double $*$aorq1, double $*$e1, double $*$am1, int $*$jstat );

Arguments:

jform = int (Given)
Element set actually returned (1-3; Note 6)
date0 = double (Given)
Date of osculation (TT MJD) for the given elements.
date1 = double (Given)
Date of osculation (TT MJD) for the updated elements.
epoch0 = double (Given)
Epoch of elements (TT MJD)
orbi0 = double (Given)
inclination (radians)
anode0 = double (Given)
longitude of the ascending node (radians)
perih0 = double (Given)
longitude or argument of perihelion (radians)
aorq0 = double (Given)
mean distance or perihelion distance (AU)
e0 = double (Given)
eccentricity
am0 = double (Given)
mean anomaly (radians, JFORM=2 only)
epoch1 = double $*$ (Returned)
Epoch of elements (TT MJD)
orbi1 = double $*$ (Returned)
inclination (radians)
anode1 = double $*$ (Returned)
longitude of the ascending node (radians)
perih1 = double $*$ (Returned)
longitude or argument of perihelion (radians)
aorq1 = double $*$ (Returned)
mean distance or perihelion distance (AU)
e1 = double $*$ (Returned)
eccentricity
am1 = double $*$ (Returned)
mean anomaly (radians, JFORM=2 only)
jstat = int $*$ (Returned)
status:
  • $+$102 = warning, distant epoch

  • $+$101 = warning, large timespan ( $>$ 100 years)

  • $+$1 to $+$10 = coincident with planet (Note 6)

  • 0 = OK

  • -1 = illegal JFORM

  • -2 = illegal E0

  • -3 = illegal AORQ0

  • -4 = internal error

  • -5 = numerical error


Notes:
  • Two different element-format options are available:


Option JFORM=2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AM = mean anomaly M (radians)

Option JFORM=3, suitable for comets:

EPOCH = epoch of perihelion (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e

  • DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in the TT timescale (formerly Ephemeris Time, ET), expressed as Modified Julian Dates (JD-2400000.5).


DATE0 is the instant at which the given (i.e. unperturbed) osculating elements are correct.

DATE1 is the specified instant at which the updated osculating elements are correct.

EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1 (respectively) for the JFORM=2 case, normally used for minor planets. For the JFORM=3 case, the two epochs will refer to perihelion passage and so will not, in general, be the same as DATE0 and/or DATE1 though they may be similar to one another.

  • The elements are with respect to the J2000 ecliptic and equinox.

  • Unused elements (AM0 and AM1 for JFORM=3) are not accessed.

  • See the palPertue routine for details of the algorithm used.

  • This routine is not intended to be used for major planets, which is why JFORM=1 is not available and why there is no opportunity to specify either the longitude of perihelion or the daily motion. However, if JFORM=2 elements are somehow obtained for a major planet and supplied to the routine, sensible results will, in fact, be produced. This happens because the sla_PERTUE routine that is called to perform the calculations checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply it to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.

See Also
  • Sterne, Theodore E., "An Introduction to Celestial Mechanics", Interscience Publishers Inc., 1960. Section 6.7, p199.



next up previous 250
Next: palPertue - Update the universal elements by applying planetary perturbations
Up: Function Descriptions
Previous: palPa - HA, Dec to Parallactic Angle

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node51.html000644 000161 000120 00000027234 12015001752 014764 0ustar00timjadmin000000 000000 palPertue - Update the universal elements by applying planetary perturbations

next up previous 250
Next: palPlanel - Transform conventional elements into position and velocity
Up: Function Descriptions
Previous: palPertel - Update elements by applying planetary perturbations


palPertue - Update the universal elements by applying planetary perturbations

Description:
Update the universal elements of an asteroid or comet by applying planetary perturbations.

Invocation:
void palPertue( double date, double u[13], int $*$jstat );

Arguments:

date = double (Given)
Final epoch (TT MJD) for the update elements.
u = const double [13] (Given & Returned)
Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx
jstat = int $*$ (Returned)
status: $+$102 = warning, distant epoch $+$101 = warning, large timespan ( $>$ 100 years) $+$1 to $+$10 = coincident with major planet (Note 5) 0 = OK
  • 1 = numerical error


Notes:
  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • The universal elements are with respect to the J2000 equator and equinox.

  • The epochs DATE, U(3) and U(12) are all Modified Julian Dates (JD-2400000.5).

  • The algorithm is a simplified form of Encke's method. It takes as a basis the unperturbed motion of the body, and numerically integrates the perturbing accelerations from the major planets. The expression used is essentially Sterne's 6.7-2 (reference 1). Everhart and Pitkin (reference 2) suggest rectifying the orbit at each integration step by propagating the new perturbed position and velocity as the new universal variables. In the present routine the orbit is rectified less frequently than this, in order to gain a slight speed advantage. However, the rectification is done directly in terms of position and velocity, as suggested by Everhart and Pitkin, bypassing the use of conventional orbital elements.


The f(q) part of the full Encke method is not used. The purpose of this part is to avoid subtracting two nearly equal quantities when calculating the "indirect member", which takes account of the small change in the Sun's attraction due to the slightly displaced position of the perturbed body. A simpler, direct calculation in double precision proves to be faster and not significantly less accurate.

Apart from employing a variable timestep, and occasionally "rectifying the orbit" to keep the indirect member small, the integration is done in a fairly straightforward way. The acceleration estimated for the middle of the timestep is assumed to apply throughout that timestep; it is also used in the extrapolation of the perturbations to the middle of the next timestep, to predict the new disturbed position. There is no iteration within a timestep.

Measures are taken to reach a compromise between execution time and accuracy. The starting-point is the goal of achieving arcsecond accuracy for ordinary minor planets over a ten-year timespan. This goal dictates how large the timesteps can be, which in turn dictates how frequently the unperturbed motion has to be recalculated from the osculating elements.

Within predetermined limits, the timestep for the numerical integration is varied in length in inverse proportion to the magnitude of the net acceleration on the body from the major planets.

The numerical integration requires estimates of the major-planet motions. Approximate positions for the major planets (Pluto alone is omitted) are obtained from the routine palPlanet. Two levels of interpolation are used, to enhance speed without significantly degrading accuracy. At a low frequency, the routine palPlanet is called to generate updated position$+$velocity "state vectors". The only task remaining to be carried out at the full frequency (i.e. at each integration step) is to use the state vectors to extrapolate the planetary positions. In place of a strictly linear extrapolation, some allowance is made for the curvature of the orbit by scaling back the radius vector as the linear extrapolation goes off at a tangent.

Various other approximations are made. For example, perturbations by Pluto and the minor planets are neglected and relativistic effects are not taken into account.

In the interests of simplicity, the background calculations for the major planets are carried out en masse. The mean elements and state vectors for all the planets are refreshed at the same time, without regard for orbit curvature, mass or proximity.

The Earth-Moon system is treated as a single body when the body is distant but as separate bodies when closer to the EMB than the parameter RNE, which incurs a time penalty but improves accuracy for near-Earth objects.

  • This routine is not intended to be used for major planets. However, if major-planet elements are supplied, sensible results will, in fact, be produced. This happens because the routine checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply the routine to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.

See Also
  • Sterne, Theodore E., "An Introduction to Celestial Mechanics", Interscience Publishers Inc., 1960. Section 6.7, p199.

  • Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.



next up previous 250
Next: palPlanel - Transform conventional elements into position and velocity
Up: Function Descriptions
Previous: palPertel - Update elements by applying planetary perturbations

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node52.html000644 000161 000120 00000025727 12015001752 014772 0ustar00timjadmin000000 000000 palPlanel - Transform conventional elements into position and velocity

next up previous 250
Next: palPlanet - Approximate heliocentric position and velocity of major planet
Up: Function Descriptions
Previous: palPertue - Update the universal elements by applying planetary perturbations


palPlanel - Transform conventional elements into position and velocity

Description:
Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements.

Invocation:
void palPlanel ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double pv[6], int $*$jstat );

Arguments:

date = double (Given)
Epoch (TT MJD) of osculation (Note 1)
jform = int (Given)
Element set actually returned (1-3; Note 3)
epoch = double (Given)
Epoch of elements (TT MJD) (Note 4)
orbinc = double (Given)
inclination (radians)
anode = double (Given)
longitude of the ascending node (radians)
perih = double (Given)
longitude or argument of perihelion (radians)
aorq = double (Given)
mean distance or perihelion distance (AU)
e = double (Given)
eccentricity
aorl = double (Given)
mean anomaly or longitude (radians, JFORM=1,2 only)
dm = double (Given)
daily motion (radians, JFORM=1 only)
u = double [13] (Returned)
Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx
jstat = int $*$ (Returned)
status: 0 = OK
  • -1 = illegal JFORM

  • -2 = illegal E

  • -3 = illegal AORQ

  • -4 = illegal DM

  • -5 = numerical error


Notes:
  • DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5).

  • The elements are with respect to the J2000 ecliptic and equinox.

  • A choice of three different element-set options is available:


Option JFORM = 1, suitable for the major planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians)

Option JFORM = 2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians)

Option JFORM = 3, suitable for comets:

EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10)

Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed.

  • Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called "osculating elements", using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the "osculating epoch", at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body.


Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them:

. The epoch of observation: the moment in time for which the position of the body is to be predicted.

. The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached.

. The osculating epoch: the moment in time at which the given elements are correct.

For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation.

For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved.

For the present routine:

. The epoch of observation is the argument DATE.

. The epoch defining the position of the body is the argument EPOCH.

. The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations.

  • The reference frame for the result is with respect to the mean equator and equinox of epoch J2000.

  • The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff's Universal Variables.

See Also
Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.


next up previous 250
Next: palPlanet - Approximate heliocentric position and velocity of major planet
Up: Function Descriptions
Previous: palPertue - Update the universal elements by applying planetary perturbations

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node53.html000644 000161 000120 00000012234 12015001752 014760 0ustar00timjadmin000000 000000 palPlanet - Approximate heliocentric position and velocity of major planet

next up previous 250
Next: palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements
Up: Function Descriptions
Previous: palPlanel - Transform conventional elements into position and velocity


palPlanet - Approximate heliocentric position and velocity of major planet

Description:
Calculates the approximate heliocentric position and velocity of the specified major planet.

Invocation:
void palPlanet ( double date, int np, double pv[6], int $*$j );

Arguments:

date = double (Given)
TDB Modified Julian Date (JD-2400000.5).
np = int (Given)
planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
pv = double [6] (Returned)
heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad in units AU and AU/s.
j = int $*$ (Returned)
  • -2 = solution didn't converge.

  • -1 = illegal np (1-8)

  • 0 = OK

  • $+$1 = warning: year outside 1000-3000


Notes:
  • See SOFA iauPlan94 for details

  • Note that Pluto is supported in SLA/F but not in this routine

  • Status -2 is equivalent to iauPlan94 status $+$2.

  • Note that velocity units here match the SLA/F documentation.



next up previous 250
Next: palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements
Up: Function Descriptions
Previous: palPlanel - Transform conventional elements into position and velocity

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node54.html000644 000161 000120 00000033036 12015001752 014764 0ustar00timjadmin000000 000000 palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements

next up previous 250
Next: palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements
Up: Function Descriptions
Previous: palPlanet - Approximate heliocentric position and velocity of major planet


palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements

Description:
Topocentric apparent RA,Dec of a Solar-System object whose heliocentric orbital elements are known.

Invocation:
void palPlante ( double date, double elong, double phi, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double $*$ra, double $*$dec, double $*$r, int $*$jstat );

Arguments:

date = double (Given)
TT MJD of observation (JD-2400000.5)
elong = double (Given)
Observer's east longitude (radians)
phi = double (Given)
Observer's geodetic latitude (radians)
jform = int (Given)
Element set actually returned (1-3; Note 6)
epoch = double (Given)
Epoch of elements (TT MJD)
orbinc = double (Given)
inclination (radians)
anode = double (Given)
longitude of the ascending node (radians)
perih = double (Given)
longitude or argument of perihelion (radians)
aorq = double (Given)
mean distance or perihelion distance (AU)
e = double (Given)
eccentricity
aorl = double (Given)
mean anomaly or longitude (radians, JFORM=1,2 only)
dm = double (Given)
daily motion (radians, JFORM=1 only)
ra = double $*$ (Returned)
Topocentric apparent RA (radians)
dec = double $*$ (Returned)
Topocentric apparent Dec (radians)
r = double $*$ (Returned)
Distance from observer (AU)
jstat = int $*$ (Returned)
status: 0 = OK
  • -1 = illegal jform

  • -2 = illegal e

  • -3 = illegal aorq

  • -4 = illegal dm

  • -5 = numerical error


Notes:
  • DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5).

  • The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv.

  • The elements are with respect to the J2000 ecliptic and equinox.

  • A choice of three different element-set options is available:


Option JFORM = 1, suitable for the major planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians)

Option JFORM = 2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians)

Option JFORM = 3, suitable for comets:

EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10)

Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed.

  • Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called "osculating elements", using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the "osculating epoch", at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body.


Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them:

. The epoch of observation: the moment in time for which the position of the body is to be predicted.

. The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached.

. The osculating epoch: the moment in time at which the given elements are correct.

For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation.

For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved.

For the present routine:

. The epoch of observation is the argument DATE.

. The epoch defining the position of the body is the argument EPOCH.

. The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations.

  • Two important sources for orbital elements are Horizons, operated by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet Center, operated by the Center for Astrophysics, Harvard.


The JPL Horizons elements (heliocentric, J2000 ecliptic and equinox) correspond to SLALIB arguments as follows.

Major planets:

JFORM = 1 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = OM$+$W (in radians) AORQ = A E = EC AORL = MA$+$OM$+$W (in radians) DM = N (in radians)

Epoch of osculation = JDCT-2400000.5

Minor planets:

JFORM = 2 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = A E = EC AORL = MA (in radians)

Epoch of osculation = JDCT-2400000.5

Comets:

JFORM = 3 EPOCH = Tp-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = QR E = EC

Epoch of osculation = JDCT-2400000.5

The MPC elements correspond to SLALIB arguments as follows.

Minor planets:

JFORM = 2 EPOCH = Epoch-2400000.5 ORBINC = Incl. (in radians) ANODE = Node (in radians) PERIH = Perih. (in radians) AORQ = a E = e AORL = M (in radians)

Epoch of osculation = Epoch-2400000.5

Comets:

JFORM = 3 EPOCH = T-2400000.5 ORBINC = Incl. (in radians) ANODE = Node. (in radians) PERIH = Perih. (in radians) AORQ = q E = e

Epoch of osculation = Epoch-2400000.5



next up previous 250
Next: palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements
Up: Function Descriptions
Previous: palPlanet - Approximate heliocentric position and velocity of major planet

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node55.html000644 000161 000120 00000020054 12015001752 014761 0ustar00timjadmin000000 000000 palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements

next up previous 250
Next: palPm - Apply corrections for proper motion a star RA,Dec
Up: Function Descriptions
Previous: palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements


palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements

Description:
Topocentric apparent RA,Dec of a Solar-System object whose heliocentric universal elements are known.

Invocation:
void palPlantu ( double date, double elong, double phi, const double u[13], double $*$ra, double $*$dec, double $*$r, int $*$jstat ) {

Arguments:

date = double (Given)
TT MJD of observation (JD-2400000.5)
elong = double (Given)
Observer's east longitude (radians)
phi = double (Given)
Observer's geodetic latitude (radians)
u = const double [13] (Given)
Universal orbital elements
  • (0) combined mass (M$+$m)

  • (1) total energy of the orbit (alpha)

  • (2) reference (osculating) epoch (t0)

  • (3-5) position at reference epoch (r0)

  • (6-8) velocity at reference epoch (v0)

  • (9) heliocentric distance at reference epoch

  • (10) r0.v0

  • (11) date (t)

  • (12) universal eccentric anomaly (psi) of date, approx

ra = double $*$ (Returned)
Topocentric apparent RA (radians)
dec = double $*$ (Returned)
Topocentric apparent Dec (radians)
r = double $*$ (Returned)
Distance from observer (AU)
jstat = int $*$ (Returned)
status: 0 = OK
  • -1 = radius vector zero

  • -2 = failed to converge


Notes:
  • DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5).

  • The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv.

  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • The universal elements are with respect to the J2000 equator and equinox.

See Also
  • Sterne, Theodore E., "An Introduction to Celestial Mechanics", Interscience Publishers Inc., 1960. Section 6.7, p199.

  • Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.



next up previous 250
Next: palPm - Apply corrections for proper motion a star RA,Dec
Up: Function Descriptions
Previous: palPlante - Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node56.html000644 000161 000120 00000013406 12015001752 014765 0ustar00timjadmin000000 000000 palPm - Apply corrections for proper motion a star RA,Dec

next up previous 250
Next: palPrebn - Generate the matrix of precession between two objects (old)
Up: Function Descriptions
Previous: palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements


palPm - Apply corrections for proper motion a star RA,Dec

Description:
Apply corrections for proper motion to a star RA,Dec using the SOFA routine iauStarpm.

Invocation:
void palPm ( double r0, double d0, double pr, double pd, double px, double rv, double ep0, double ep1, double $*$r1, double $*$d1 );

Arguments:

r0 = double (Given)
RA at epoch ep0 (radians)
d0 = double (Given)
Dec at epoch ep0 (radians)
pr = double (Given)
RA proper motion in radians per year.
pd = double (Given)
Dec proper motion in radians per year.
px = double (Given)
Parallax (arcsec)
rv = double (Given)
Radial velocity (km/sec $+$ve if receding)
ep0 = double (Given)
Start epoch in years, assumed to be Julian.
ep1 = double (Given)
End epoch in years, assumed to be Julian.
r1 = double $*$ (Returned)
RA at epoch ep1 (radians)
d1 = double $*$ (Returned)
Dec at epoch ep1 (radians)

Notes:
  • Uses iauStarpm but ignores the status returns from that routine. In particular note that parallax should not be zero when the proper motions are non-zero. SLA/F allows parallax to be zero.

  • Assumes all epochs are Julian epochs.



next up previous 250
Next: palPrebn - Generate the matrix of precession between two objects (old)
Up: Function Descriptions
Previous: palPlantu - Topocentric RA,Dec of a Solar-System object from universal elements

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node57.html000644 000161 000120 00000010662 12015001752 014767 0ustar00timjadmin000000 000000 palPrebn - Generate the matrix of precession between two objects (old)

next up previous 250
Next: palPrec - Form the matrix of precession between two epochs (IAU 2006)
Up: Function Descriptions
Previous: palPm - Apply corrections for proper motion a star RA,Dec


palPrebn - Generate the matrix of precession between two objects (old)

Description:
Generate the matrix of precession between two epochs, using the old, pre-IAU1976, Bessel-Newcomb model, using Kinoshita's formulation

Invocation:
void palPrebn ( double bep0, double bep1, double rmatp[3][3] );

Arguments:

bep0 = double (Given)
Beginning Besselian epoch.
bep1 = double (Given)
Ending Besselian epoch
rmatp = double[3][3] (Returned)
precession matrix in the sense V(BEP1) = RMATP $*$ V(BEP0)

See Also
Kinoshita, H. (1975) 'Formulas for precession', SAO Special Report No. 364, Smithsonian Institution Astrophysical Observatory, Cambridge, Massachusetts.


next up previous 250
Next: palPrec - Form the matrix of precession between two epochs (IAU 2006)
Up: Function Descriptions
Previous: palPm - Apply corrections for proper motion a star RA,Dec

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node58.html000644 000161 000120 00000010554 12015001752 014770 0ustar00timjadmin000000 000000 palPrec - Form the matrix of precession between two epochs (IAU 2006)

next up previous 250
Next: palPreces - Precession - either FK4 or FK5 as required
Up: Function Descriptions
Previous: palPrebn - Generate the matrix of precession between two objects (old)


palPrec - Form the matrix of precession between two epochs (IAU 2006)

Description:
The IAU 2006 precession matrix from ep0 to ep1 is found and returned. The matrix is in the sense V(EP1) = RMATP $*$ V(EP0). The epochs are TDB (loosely TT) Julian epochs.

Though the matrix method itself is rigorous, the precession angles are expressed through canonical polynomials which are valid only for a limited time span of a few hundred years around the current epoch.


Invocation:
palPrec( double ep0, double ep1, double rmatp[3][3] )

Arguments:

ep0 = double (Given)
Beginning epoch
ep1 = double (Given)
Ending epoch
rmatp = double[3][3] (Returned)
Precession matrix



next up previous 250
Next: palPreces - Precession - either FK4 or FK5 as required
Up: Function Descriptions
Previous: palPrebn - Generate the matrix of precession between two objects (old)

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node59.html000644 000161 000120 00000013143 12015001752 014766 0ustar00timjadmin000000 000000 palPreces - Precession - either FK4 or FK5 as required

next up previous 250
Next: palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)
Up: Function Descriptions
Previous: palPrec - Form the matrix of precession between two epochs (IAU 2006)


palPreces - Precession - either FK4 or FK5 as required

Description:
Precess coordinates using the appropriate system and epochs.

Invocation:
void palPreces ( const char sys[3], double ep0, double ep1, double $*$ra, double $*$dc );

Arguments:

sys = const char [3] (Given)
Precession to be applied: FK4 or FK5. Case insensitive.
ep0 = double (Given)
Starting epoch.
ep1 = double (Given)
Ending epoch
ra = double $*$ (Given & Returned)
On input the RA mean equator & equinox at epoch ep0. On exit the RA mean equator & equinox of epoch ep1.
dec = double $*$ (Given & Returned)
On input the dec mean equator & equinox at epoch ep0. On exit the dec mean equator & equinox of epoch ep1.

Notes:
  • Uses palPrec for FK5 data and palPrebn for FK4 data.

  • The epochs are Besselian if SYSTEM='FK4' and Julian if 'FK5'. For example, to precess coordinates in the old system from equinox 1900.0 to 1950.0 the call would be: palPreces( "FK4", 1900.0, 1950.0, &ra, &dc );

  • This routine will NOT correctly convert between the old and the new systems - for example conversion from B1950 to J2000. For these purposes see palFk425, palFk524, palFk45z and palFk54z.

  • If an invalid SYSTEM is supplied, values of -99D0,-99D0 will be returned for both RA and DC.



next up previous 250
Next: palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)
Up: Function Descriptions
Previous: palPrec - Form the matrix of precession between two epochs (IAU 2006)

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node6.html000644 000161 000120 00000012044 12015001752 014675 0ustar00timjadmin000000 000000 palAddet - Add the E-terms to a pre IAU 1976 mean place

next up previous 250
Next: palAirmas - Air mass at given zenith distance
Up: Function Descriptions
Previous: More complex functions


palAddet - Add the E-terms to a pre IAU 1976 mean place

Description:
Add the E-terms (elliptic component of annual aberration) to a pre IAU 1976 mean place to conform to the old catalogue convention.

Invocation:
void palAddet ( double rm, double dm, double eq, double $*$rc, double $*$dc );

Arguments:

rm = double (Given)
RA without E-terms (radians)
dm = double (Given)
Dec without E-terms (radians)
eq = double (Given)
Besselian epoch of mean equator and equinox
rc = double $*$ (Returned)
RA with E-terms included (radians)
dc = double $*$ (Returned)
Dec with E-terms included (radians)

Notes:
Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. If it is necessary to convert a formal mean place (for example a pulsar timing position) to one consistent with such a star catalogue, then the RA,Dec should be adjusted using this routine.
See Also
Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48.


next up previous 250
Next: palAirmas - Air mass at given zenith distance
Up: Function Descriptions
Previous: More complex functions

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node60.html000644 000161 000120 00000010352 12015001752 014755 0ustar00timjadmin000000 000000 palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)

next up previous 250
Next: palPv2el - Position velocity to heliocentirc osculating elements
Up: Function Descriptions
Previous: palPreces - Precession - either FK4 or FK5 as required


palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)

Description:
Form the matrix of bias-precession-nutation (IAU 2006/2000A). The epoch and date are TT (but TDB is usually close enough). The matrix is in the sense v(true) = rmatpn $*$ v(mean).

Invocation:
void palPrenut( double epoch, double date, double rmatpn[3][3] )

Arguments:

epoch = double (Returned)
Julian epoch for mean coordinates.
date = double (Returned)
Modified Julian Date (JD-2400000.5) for true coordinates.
rmatpn = double[3][3] (Returned)
combined NPB matrix



next up previous 250
Next: palPv2el - Position velocity to heliocentirc osculating elements
Up: Function Descriptions
Previous: palPreces - Precession - either FK4 or FK5 as required

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node61.html000644 000161 000120 00000030111 12015001752 014751 0ustar00timjadmin000000 000000 palPv2el - Position velocity to heliocentirc osculating elements

next up previous 250
Next: palPv2ue - Universal elements to position and velocity
Up: Function Descriptions
Previous: palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)


palPv2el - Position velocity to heliocentirc osculating elements

Description:
Heliocentric osculating elements obtained from instantaneous position and velocity.

Invocation:
void palPv2el ( const double pv[6], double date, double pmass, int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat );

Arguments:

pv = const double [6] (Given)
Heliocentric x,y,z,xdot,ydot,zdot of date, J2000 equatorial triad (AU,AU/s; Note 1)
date = double (Given)
Date (TT Modified Julian Date = JD-2400000.5)
pmass = double (Given)
Mass of the planet (Sun=1; Note 2)
jformr = int (Given)
Requested element set (1-3; Note 3)
jform = int $*$ (Returned)
Element set actually returned (1-3; Note 4)
epoch = double $*$ (Returned)
Epoch of elements (TT MJD)
orbinc = double $*$ (Returned)
inclination (radians)
anode = double $*$ (Returned)
longitude of the ascending node (radians)
perih = double $*$ (Returned)
longitude or argument of perihelion (radians)
aorq = double $*$ (Returned)
mean distance or perihelion distance (AU)
e = double $*$ (Returned)
eccentricity
aorl = double $*$ (Returned)
mean anomaly or longitude (radians, JFORM=1,2 only)
dm = double $*$ (Returned)
daily motion (radians, JFORM=1 only)
jstat = int $*$ (Returned)
status: 0 = OK
  • -1 = illegal PMASS

  • -2 = illegal JFORMR

  • -3 = position/velocity out of range


Notes:
  • The PV 6-vector is with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox.

  • The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal.

  • Three different element-format options are supported:


Option JFORM=1, suitable for the major planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians)

Option JFORM=2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians)

Option JFORM=3, suitable for comets:

EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e

  • It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument:


JFORMR JFORM meaning

1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical

2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical

3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format

  • The arguments returned for each value of JFORM (cf Note 5: JFORM may not be the same as JFORMR) are as follows:


JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - -

where:

t0 is the epoch of the elements (MJD, TT) T " epoch of perihelion (MJD, TT) i " inclination (radians) Omega " longitude of the ascending node (radians) curly pi " longitude of perihelion (radians) omega " argument of perihelion (radians) a " mean distance (AU) q " perihelion distance (AU) e " eccentricity L " longitude (radians, 0-2pi) M " mean anomaly (radians, 0-2pi) n " daily motion (radians)

  • means no value is set

  • At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit.

  • The osculating epoch for the returned elements is the argument DATE.

  • Reference: Sterne, Theodore E., "An Introduction to Celestial Mechanics", Interscience Publishers, 1960



next up previous 250
Next: palPv2ue - Universal elements to position and velocity
Up: Function Descriptions
Previous: palPrenut - Form the matrix of bias-precession-nutation (IAU 2006/2000A)

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node62.html000644 000161 000120 00000015223 12015001752 014761 0ustar00timjadmin000000 000000 palPv2ue - Universal elements to position and velocity

next up previous 250
Next: palPvobs - Position and velocity of an observing station
Up: Function Descriptions
Previous: palPv2el - Position velocity to heliocentirc osculating elements


palPv2ue - Universal elements to position and velocity

Description:
Construct a universal element set based on an instantaneous position and velocity.

Invocation:
void palPv2ue( const double pv[6], double date, double pmass, double u[13], int $*$ jstat );

Arguments:

pv = double [6] (Given)
Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1)
date = double (Given)
Date (TT modified Julian Date = JD-2400000.5)
pmass = double (Given)
Mass of the planet (Sun=1; note 2)
u = double [13] (Returned)
Universal orbital elements (Note 3)

  • (0) combined mass (M$+$m)

  • (1) total energy of the orbit (alpha)

  • (2) reference (osculating) epoch (t0)

  • (3-5) position at reference epoch (r0)

  • (6-8) velocity at reference epoch (v0)

  • (9) heliocentric distance at reference epoch

  • (10) r0.v0

  • (11) date (t)

  • (12) universal eccentric anomaly (psi) of date, approx

jstat = int $*$ (Returned)
status: 0 = OK
  • -1 = illegal PMASS

  • -2 = too close to Sun

  • -3 = too slow


Notes:
  • The PV 6-vector can be with respect to any chosen inertial frame, and the resulting universal-element set will be with respect to the same frame. A common choice will be mean equator and ecliptic of epoch J2000.

  • The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal.

  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • Reference: Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.



next up previous 250
Next: palPvobs - Position and velocity of an observing station
Up: Function Descriptions
Previous: palPv2el - Position velocity to heliocentirc osculating elements

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node63.html000644 000161 000120 00000010430 12015001752 014755 0ustar00timjadmin000000 000000 palPvobs - Position and velocity of an observing station

next up previous 250
Next: palRdplan - Approximate topocentric apparent RA,Dec of a planet
Up: Function Descriptions
Previous: palPv2ue - Universal elements to position and velocity


palPvobs - Position and velocity of an observing station

Description:
Returns the position and velocity of an observing station.

Invocation:
palPvobs( double p, double h, double stl, double pv[6] )

Arguments:

p = double (Given)
Latitude (geodetic, radians).
h = double (Given)
Height above reference spheroid (geodetic, metres).
stl = double (Given)
Local apparent sidereal time (radians).
pv = double[ 6 ] (Returned)
position/velocity 6-vector (AU, AU/s, true equator and equinox of date).

Notes:
  • The WGS84 reference ellipsoid is used.



next up previous 250
Next: palRdplan - Approximate topocentric apparent RA,Dec of a planet
Up: Function Descriptions
Previous: palPv2ue - Universal elements to position and velocity

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node64.html000644 000161 000120 00000013757 12015001752 014775 0ustar00timjadmin000000 000000 palRdplan - Approximate topocentric apparent RA,Dec of a planet

next up previous 250
Next: palRverot - Velocity component in a given direction due to Earth rotation
Up: Function Descriptions
Previous: palPvobs - Position and velocity of an observing station


palRdplan - Approximate topocentric apparent RA,Dec of a planet

Description:
Approximate topocentric apparent RA,Dec of a planet, and its angular diameter.

Invocation:
void palRdplan( double date, int np, double elong, double phi, double $*$ ra, double $*$ dec, double $*$ diam );

Arguments:

date = double (Given)
MJD of observation (JD-2400000.5) in TDB. For all practical purposes TT can be used instead of TDB, and for many applications UT will do (except for the Moon).
np = int (Given)
Planet: 1 = Mercury 2 = Venus 3 = Moon 4 = Mars 5 = Jupiter 6 = Saturn 7 = Uranus 8 = Neptune else = Sun
elong = double (Given)
Observer's east longitude (radians)
phi = double (Given)
Observer's geodetic latitude (radians)
ra = double $*$ (Returned)
RA (topocentric apparent, radians)
dec = double $*$ (Returned)
Dec (topocentric apparent, radians)
diam = double $*$ (Returned)
Angular diameter (equatorial, radians)

Notes:
  • Unlike with slaRdplan, Pluto is not supported.

  • The longitude and latitude allow correction for geocentric parallax. This is a major effect for the Moon, but in the context of the limited accuracy of the present routine its effect on planetary positions is small (negligible for the outer planets). Geocentric positions can be generated by appropriate use of the routines palDmoon and iauPlan94.



next up previous 250
Next: palRverot - Velocity component in a given direction due to Earth rotation
Up: Function Descriptions
Previous: palPvobs - Position and velocity of an observing station

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node65.html000644 000161 000120 00000011516 12015001752 014765 0ustar00timjadmin000000 000000 palRverot - Velocity component in a given direction due to Earth rotation

next up previous 250
Next: palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy
Up: Function Descriptions
Previous: palRdplan - Approximate topocentric apparent RA,Dec of a planet


palRverot - Velocity component in a given direction due to Earth rotation

Description:
Calculate the velocity component in a given direction due to Earth rotation.

The simple algorithm used assumes a spherical Earth, of a radius chosen to give results accurate to about 0.0005 km/s for observing stations at typical latitudes and heights. For applications requiring greater precision, use the routine palPvobs.


Invocation:
double palRverot ( double phi, double ra, double da, double st );

Arguments:

phi = double (Given)
latitude of observing station (geodetic) (radians)
ra = double (Given)
apparent RA (radians)
da = double (Given)
apparent Dec (radians)
st = double (Given)

Returned Value:

palRverot = double
Component of Earth rotation in direction RA,DA (km/s). The result is $+$ve when the observatory is receding from the given point on the sky.



next up previous 250
Next: palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy
Up: Function Descriptions
Previous: palRdplan - Approximate topocentric apparent RA,Dec of a planet

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node66.html000644 000161 000120 00000012071 12015001752 014763 0ustar00timjadmin000000 000000 palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy

next up previous 250
Next: palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group
Up: Function Descriptions
Previous: palRverot - Velocity component in a given direction due to Earth rotation


palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy

Description:
This function returns the Component of dynamical LSR motion in the direction of R2000,D2000. The result is $+$ve when the dynamical LSR is receding from the given point on the sky.

Invocation:
double palRvgalc( double r2000, double d2000 )

Arguments:

r2000 = double (Given)
J2000.0 mean RA (radians)
d2000 = double (Given)
J2000.0 mean Dec (radians)

Returned Value:

Component of dynamical LSR motion in direction R2000,D2000 (km/s).

Notes:
  • The Local Standard of Rest used here is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. Sometimes called the "dynamical" LSR, it is not to be confused with a "kinematical" LSR, which is the mean standard of rest of star catalogues or stellar populations.

Reference
  • The orbital speed of 220 km/s used here comes from Kerr & Lynden-Bell (1986), MNRAS, 221, p1023.



next up previous 250
Next: palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group
Up: Function Descriptions
Previous: palRverot - Velocity component in a given direction due to Earth rotation

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node67.html000644 000161 000120 00000011347 12015001752 014771 0ustar00timjadmin000000 000000 palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group

next up previous 250
Next: palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard
Up: Function Descriptions
Previous: palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy


palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group

Description:
This function returns the velocity component in a given direction due to the combination of the rotation of the Galaxy and the motion of the Galaxy relative to the mean motion of the local group. The result is $+$ve when the Sun is receding from the given point on the sky.

Invocation:
double palRvlg( double r2000, double d2000 )

Arguments:

r2000 = double (Given)
J2000.0 mean RA (radians)
d2000 = double (Given)
J2000.0 mean Dec (radians)

Returned Value:

Component of SOLAR motion in direction R2000,D2000 (km/s).

Reference
  • IAU Trans 1976, 168, p201.



next up previous 250
Next: palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard
Up: Function Descriptions
Previous: palRvgalc - Velocity component in a given direction due to the rotation of the Galaxy

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node68.html000644 000161 000120 00000013451 12015001752 014770 0ustar00timjadmin000000 000000 palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard of Rest

next up previous 250
Next: palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local
Up: Function Descriptions
Previous: palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group


palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard of Rest

Description:
This function returns the velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky.

Invocation:
double palRvlsrd( double r2000, double d2000 )

Arguments:

r2000 = double (Given)
J2000.0 mean RA (radians)
d2000 = double (Given)
J2000.0 mean Dec (radians)

Returned Value:

Component of "peculiar" solar motion in direction R2000,D2000 (km/s).

Notes:
  • The Local Standard of Rest used here is the "dynamical" LSR, a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun's motion with respect to the dynamical LSR is called the "peculiar" solar motion.

  • There is another type of LSR, called a "kinematical" LSR. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations, and several slightly different kinematical LSRs are in use. The Sun's motion with respect to an agreed kinematical LSR is known as the "standard" solar motion. To obtain a radial velocity correction with respect to an adopted kinematical LSR use the routine sla_RVLSRK.

Reference
  • Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73.



next up previous 250
Next: palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local
Up: Function Descriptions
Previous: palRvlg - Velocity component in a given direction due to Galactic rotation and motion of the local group

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node69.html000644 000161 000120 00000013317 12015001752 014772 0ustar00timjadmin000000 000000 palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local Standard of Rest

next up previous 250
Next: palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec
Up: Function Descriptions
Previous: palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard


palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local Standard of Rest

Description:
This function returns the velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky.

Invocation:
double palRvlsrk( double r2000, double d2000 )

Arguments:

r2000 = double (Given)
J2000.0 mean RA (radians)
d2000 = double (Given)
J2000.0 mean Dec (radians)

Returned Value:

Component of "standard" solar motion in direction R2000,D2000 (km/s).

Notes:
  • The Local Standard of Rest used here is one of several "kinematical" LSRs in common use. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations. The Sun's motion with respect to a kinematical LSR is known as the "standard" solar motion.

  • There is another sort of LSR, the "dynamical" LSR, which is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun's motion with respect to the dynamical LSR is called the "peculiar" solar motion. To obtain a radial velocity correction with respect to the dynamical LSR use the routine sla_RVLSRD.

Reference
  • Delhaye (1965), in "Stars and Stellar Systems", vol 5, p73.



next up previous 250
Next: palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec
Up: Function Descriptions
Previous: palRvlsrd - Velocity component in a given direction due to the Sun's motion with respect to the dynamical Local Standard

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node7.html000644 000161 000120 00000011621 12015001752 014676 0ustar00timjadmin000000 000000 palAirmas - Air mass at given zenith distance

next up previous 250
Next: palAmp - Convert star RA,Dec from geocentric apparaent to mean place
Up: Function Descriptions
Previous: palAddet - Add the E-terms to a pre IAU 1976 mean place


palAirmas - Air mass at given zenith distance

Description:
Calculates the airmass at the observed zenith distance.

Invocation:
double palAirmas( double zd );

Arguments:

zd = double (Given)
Observed zenith distance (radians)

Notes:
  • The "observed" zenith distance referred to above means "as affected by refraction".

  • Uses Hardie's (1962) polynomial fit to Bemporad's data for the relative air mass, X, in units of thickness at the zenith as tabulated by Schoenberg (1929). This is adequate for all normal needs as it is accurate to better than 0.1% up to X = 6.8 and better than 1% up to X = 10. Bemporad's tabulated values are unlikely to be trustworthy to such accuracy because of variations in density, pressure and other conditions in the atmosphere from those assumed in his work.

  • The sign of the ZD is ignored.

  • At zenith distances greater than about ZD = 87 degrees the air mass is held constant to avoid arithmetic overflows.

See Also
  • Hardie, R.H., 1962, in "Astronomical Techniques" ed. W.A. Hiltner, University of Chicago Press, p180.

  • Schoenberg, E., 1929, Hdb. d. Ap., Berlin, Julius Springer, 2, 268.



next up previous 250
Next: palAmp - Convert star RA,Dec from geocentric apparaent to mean place
Up: Function Descriptions
Previous: palAddet - Add the E-terms to a pre IAU 1976 mean place

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node70.html000644 000161 000120 00000012336 12015001752 014762 0ustar00timjadmin000000 000000 palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec

next up previous 250
Next: palSupgal - Convert from supergalactic to galactic coordinates
Up: Function Descriptions
Previous: palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local


palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec

Description:
Remove the E-terms (elliptic component of annual aberration) from a pre IAU 1976 catalogue RA,Dec to give a mean place.

Invocation:
void palSubet ( double rc, double dc, double eq, double $*$rm, double $*$dm );

Arguments:

rc = double (Given)
RA with E-terms included (radians)
dc = double (Given)
Dec with E-terms included (radians)
eq = double (Given)
Besselian epoch of mean equator and equinox
rm = double $*$ (Returned)
RA without E-terms (radians)
dm = double $*$ (Returned)
Dec without E-terms (radians)

Notes:
Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. This routine converts such a position to a formal mean place (allowing, for example, comparison with a pulsar timing position).
See Also
Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48.


next up previous 250
Next: palSupgal - Convert from supergalactic to galactic coordinates
Up: Function Descriptions
Previous: palRvlsrk - Velocity component in a given direction due to the Sun's motion with respect to an adopted kinematic Local

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node71.html000644 000161 000120 00000011761 12015001752 014764 0ustar00timjadmin000000 000000 palSupgal - Convert from supergalactic to galactic coordinates

next up previous 250
Next: palUe2el - Universal elements to heliocentric osculating elements
Up: Function Descriptions
Previous: palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec


palSupgal - Convert from supergalactic to galactic coordinates

Description:
Transformation from de Vaucouleurs supergalactic coordinates to IAU 1958 galactic coordinates

Invocation:
void palSupgal ( double dsl, double dsb, double $*$dl, double $*$db );

Arguments:

dsl = double (Given)
Supergalactic longitude.
dsb = double (Given)
Supergalactic latitude.
dl = double $*$ (Returned)
Galactic longitude.
db = double $*$ (Returned)
Galactic latitude.

See Also
  • de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8.

  • Systems & Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490.


(These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.)


next up previous 250
Next: palUe2el - Universal elements to heliocentric osculating elements
Up: Function Descriptions
Previous: palSubet - Remove the E-terms from a pre IAU 1976 catalogue RA,Dec

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node72.html000644 000161 000120 00000032342 12015001752 014763 0ustar00timjadmin000000 000000 palUe2el - Universal elements to heliocentric osculating elements

next up previous 250
Next: palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements
Up: Function Descriptions
Previous: palSupgal - Convert from supergalactic to galactic coordinates


palUe2el - Universal elements to heliocentric osculating elements

Description:
Transform universal elements into conventional heliocentric osculating elements.

Invocation:
void palUe2el ( const double u[13], int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat );

Arguments:

u = const double [13] (Given)
Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx
jformr = int (Given)
Requested element set (1-3; Note 3)
jform = int $*$ (Returned)
Element set actually returned (1-3; Note 4)
epoch = double $*$ (Returned)
Epoch of elements (TT MJD)
orbinc = double $*$ (Returned)
inclination (radians)
anode = double $*$ (Returned)
longitude of the ascending node (radians)
perih = double $*$ (Returned)
longitude or argument of perihelion (radians)
aorq = double $*$ (Returned)
mean distance or perihelion distance (AU)
e = double $*$ (Returned)
eccentricity
aorl = double $*$ (Returned)
mean anomaly or longitude (radians, JFORM=1,2 only)
dm = double $*$ (Returned)
daily motion (radians, JFORM=1 only)
jstat = int $*$ (Returned)
status: 0 = OK
  • 1 = illegal combined mass

  • 2 = illegal JFORMR

  • 3 = position/velocity out of range


Notes:
  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • The universal elements are with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox.

  • Three different element-format options are supported:


Option JFORM=1, suitable for the major planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians)

Option JFORM=2, suitable for minor planets:

EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians)

Option JFORM=3, suitable for comets:

EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e

  • It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument:


JFORMR JFORM meaning

1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical

2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical

3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format

  • The arguments returned for each value of JFORM (cf Note 6: JFORM may not be the same as JFORMR) are as follows:


JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - -

where:

t0 is the epoch of the elements (MJD, TT) T " epoch of perihelion (MJD, TT) i " inclination (radians) Omega " longitude of the ascending node (radians) curly pi " longitude of perihelion (radians) omega " argument of perihelion (radians) a " mean distance (AU) q " perihelion distance (AU) e " eccentricity L " longitude (radians, 0-2pi) M " mean anomaly (radians, 0-2pi) n " daily motion (radians)

  • means no value is set

  • At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit.


See Also:
  • Sterne, Theodore E., "An Introduction to Celestial Mechanics", Interscience Publishers Inc., 1960. Section 6.7, p199.

  • Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.



next up previous 250
Next: palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements
Up: Function Descriptions
Previous: palSupgal - Convert from supergalactic to galactic coordinates

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node73.html000644 000161 000120 00000016722 12015001752 014770 0ustar00timjadmin000000 000000 palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements

next up previous 250
Next: About this document ...
Up: Function Descriptions
Previous: palUe2el - Universal elements to heliocentric osculating elements


palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements

Description:
Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements in the "universal variables" form.

Invocation:
void palUe2pv( double date, double u[13], double pv[6], int $*$jstat );

Arguments:

date = double (Given)
TT Modified Julian date (JD-2400000.5).
u = double [13] (Given & Returned)
Universal orbital elements (updated, see note 1) given (0) combined mass (M$+$m) " (1) total energy of the orbit (alpha) " (2) reference (osculating) epoch (t0) " (3-5) position at reference epoch (r0) " (6-8) velocity at reference epoch (v0) " (9) heliocentric distance at reference epoch " (10) r0.v0 returned (11) date (t) " (12) universal eccentric anomaly (psi) of date
jstat = int $*$ (Returned)
status: 0 = OK
  • 1 = radius vector zero

  • 2 = failed to converge


Notes:
  • The "universal" elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the "universal eccentric anomaly" at a given date and (v) that date.

  • The companion routine is palEl2ue. This takes the conventional orbital elements and transforms them into the set of numbers needed by the present routine. A single prediction requires one one call to palEl2ue followed by one call to the present routine; for convenience, the two calls are packaged as the routine sla_PLANEL. Multiple predictions may be made by again calling palEl2ue once, but then calling the present routine multiple times, which is faster than multiple calls to palPlanel.

  • It is not obligatory to use palEl2ue to obtain the parameters. However, it should be noted that because palEl2ue performs its own validation, no checks on the contents of the array U are made by the present routine. in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). units (solar masses, AU and canonical days). The position and velocity are not sensitive to the choice of reference frame. The palEl2ue routine in fact produces coordinates with respect to the J2000 equator and equinox.

  • The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff's Universal Variables.

  • Reference: Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.



next up previous 250
Next: About this document ...
Up: Function Descriptions
Previous: palUe2el - Universal elements to heliocentric osculating elements

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node74.html000644 000161 000120 00000006666 12015001752 014777 0ustar00timjadmin000000 000000 About this document ...

next up previous 250
Up: PAL Positional Astronomy Library
Previous: palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements

About this document ...

This document was generated using the LaTeX2HTML translator Version 2009-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -init_file .star2html-init -no_subdir -tmp /Users/timj/work/pal/sun267_htx -no_auto_link -local_icons /Users/timj/work/pal/sun267_htx/sun267.tex

The translation was initiated by Tim Jenness on 2012-08-21


next up previous 250
Up: PAL Positional Astronomy Library
Previous: palUe2pv - Heliocentric position and velocity of a planet, asteroid or comet, from universal elements

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node8.html000644 000161 000120 00000011546 12015001752 014705 0ustar00timjadmin000000 000000 palAmp - Convert star RA,Dec from geocentric apparaent to mean place

next up previous 250
Next: palAmpqk - Convert star RA,Dec from geocentric apparent to mean place
Up: Function Descriptions
Previous: palAirmas - Air mass at given zenith distance


palAmp - Convert star RA,Dec from geocentric apparaent to mean place

Description:
Convert star RA,Dec from geocentric apparent to mean place. The mean coordinate system is close to ICRS. See palAmpqk for details.

Invocation:
void palAmp ( double ra, double da, double date, double eq, double $*$rm, double $*$dm );

Arguments:

ra = double (Given)
Apparent RA (radians)
dec = double (Given)
Apparent Dec (radians)
date = double (Given)
TDB for apparent place (JD-2400000.5)
eq = double (Given)
Equinox: Julian epoch of mean place.
rm = double $*$ (Returned)
Mean RA (radians)
dm = double $*$ (Returned)
Mean Dec (radians)

Notes:
  • See palMappa and palAmpqk for details.



next up previous 250
Next: palAmpqk - Convert star RA,Dec from geocentric apparent to mean place
Up: Function Descriptions
Previous: palAirmas - Air mass at given zenith distance

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/node9.html000644 000161 000120 00000012240 12015001752 014676 0ustar00timjadmin000000 000000 palAmpqk - Convert star RA,Dec from geocentric apparent to mean place

next up previous 250
Next: palCaldj - Gregorian Calendar to Modified Julian Date
Up: Function Descriptions
Previous: palAmp - Convert star RA,Dec from geocentric apparaent to mean place


palAmpqk - Convert star RA,Dec from geocentric apparent to mean place

Description:
Convert star RA,Dec from geocentric apparent to mean place. The "mean" coordinate system is in fact close to ICRS. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one epoch and equinox. The star-independent parameters can be obtained by calling the palMappa function.

Invocation:
void palAmpqk ( double ra, double da, double amprms[21], double $*$rm, double $*$dm )

Arguments:

ra = double (Given)
Apparent RA (radians).
da = double (Given)
Apparent Dec (radians).
amprms = double[21] (Given)
Star-independent mean-to-apparent parameters (see palMappa): (0) time interval for proper motion (Julian years) (1-3) barycentric position of the Earth (AU) (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$v) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix
rm = double (Returned)
Mean RA (radians).
dm = double (Returned)
Mean Dec (radians).



next up previous 250
Next: palCaldj - Gregorian Calendar to Modified Julian Date
Up: Function Descriptions
Previous: palAmp - Convert star RA,Dec from geocentric apparaent to mean place

PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/prev.png000644 000161 000120 00000000427 12015001752 014460 0ustar00timjadmin000000 000000 ‰PNG  IHDR?GŸýT PLTE¿¿¿oooççç[Íã¹tRNS@æØf¹IDATxœ…= Ã0 …_pF—Dà5àK¤÷ t têÞ¡Cñ)éèät-´ªÓ}ñüYÒ#% À¡Æ4”ÒÍ¥d/Çùªåvµë`3 v3tâE$ Sãà™ù£ç°5•ªs}jßf/‹¹šÀŒˆˆ”hQ!žÜäÛ•=KV_³ªN8âK›Àþ8’!û™)Š‚x'‡Éë‘ÒȸÙD˜ˆ¹^Kù ê-êŸþsNH¼!%³IEND®B`‚sun267.htx/prev_g.png000644 000161 000120 00000000507 12015001752 014765 0ustar00timjadmin000000 000000 ‰PNG  IHDR?šJtRNS¿-Mc%IDATxœÍ”ÁuÄ D?~´5ým9î`ÓD:p9€cÇäm.™ÂBBb$9d¾b`Hí¨ž°UI:Bu:±éΓE»-'ƒ}› Øã²ØC|,¤÷tÇ%ì„}yF²sP©ª=šT¯’„¨Â.¢+—9döGƒ+WZ­~paòâÛnP8ðã9ÔâÔ5îil u9ä'»öͩβ ý²‘ÁÖ’á_¼ÿ¹+þxež ôŒUþ+Ôi„Îÿþ@i’ZfG-Κ6)nsU~!ÃL,À’cšˆÔwámP,ßv®zSßñ§Hµ¹Ë=hy™êW:þCý>Gæõ'ÿoå²i=Q)ÂIEND®B`‚sun267.htx/section0.tex000644 000161 000120 00000000650 12015001741 015240 0ustar00timjadmin000000 000000 \section{Introduction} This library provides a C library designed as a API-compatible replacement for the C SLALIB library () and uses a GPL licence so is freely redistributable. Where possible the functions call equivalent SOFA routines and use current IAU 2006 standards. This means that any functions that rely on nutation or precession will return slightly different answers to the SLA functions. \clearpage \appendix sun267.htx/section1.tex000644 000161 000120 00000000061 12015001741 015235 0ustar00timjadmin000000 000000 \section{\label{APP:SPEC}Function Descriptions} sun267.htx/section10.tex000644 000161 000120 00000004431 12015001741 015322 0ustar00timjadmin000000 000000 \sstroutine{ palDe2h }{ Equatorial to horizon coordinates: HA,Dec to Az,E }{ \sstdescription{ Convert equatorial to horizon coordinates. } \sstinvocation{ palDe2h( double ha, double dec, double phi, double $*$ az, double $*$ el ); } \sstarguments{ \sstsubsection{ ha = double $*$ (Given) }{ Hour angle (radians) } \sstsubsection{ dec = double $*$ (Given) }{ Declination (radians) } \sstsubsection{ phi = double (Given) }{ Observatory latitude (radians) } \sstsubsection{ az = double $*$ (Returned) }{ Azimuth (radians) } \sstsubsection{ el = double $*$ (Returned) }{ Elevation (radians) } } \sstnotes{ \sstitemlist{ \sstitem All the arguments are angles in radians. \sstitem Azimuth is returned in the range 0-2pi; north is zero, and east is $+$pi/2. Elevation is returned in the range $+$/-pi/2. \sstitem The latitude must be geodetic. In critical applications, corrections for polar motion should be applied. \sstitem In some applications it will be important to specify the correct type of hour angle and declination in order to produce the required type of azimuth and elevation. In particular, it may be important to distinguish between elevation as affected by refraction, which would require the {\tt "}observed{\tt "} HA,Dec, and the elevation in vacuo, which would require the {\tt "}topocentric{\tt "} HA,Dec. If the effects of diurnal aberration can be neglected, the {\tt "}apparent{\tt "} HA,Dec may be used instead of the topocentric HA,Dec. \sstitem No range checking of arguments is carried out. \sstitem In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude, and (for tracking a star) sine and cosine of declination. } } } sun267.htx/section11.tex000644 000161 000120 00000004015 12015001741 015321 0ustar00timjadmin000000 000000 \sstroutine{ palDeuler }{ Form a rotation matrix from the Euler angles }{ \sstdescription{ A rotation is positive when the reference frame rotates anticlockwise as seen looking towards the origin from the positive region of the specified axis. The characters of ORDER define which axes the three successive rotations are about. A typical value is {\tt '}ZXZ{\tt '}, indicating that RMAT is to become the direction cosine matrix corresponding to rotations of the reference frame through PHI radians about the old Z-axis, followed by THETA radians about the resulting X-axis, then PSI radians about the resulting Z-axis. The axis names can be any of the following, in any order or combination: X, Y, Z, uppercase or lowercase, 1, 2, 3. Normal axis labelling/numbering conventions apply; the xyz (=123) triad is right-handed. Thus, the {\tt '}ZXZ{\tt '} example given above could be written {\tt '}zxz{\tt '} or {\tt '}313{\tt '} (or even {\tt '}ZxZ{\tt '} or {\tt '}3xZ{\tt '}). ORDER is terminated by length or by the first unrecognized character. Fewer than three rotations are acceptable, in which case the later angle arguments are ignored. If all rotations are zero, the identity matrix is produced. } \sstinvocation{ void palDeuler ( const char $*$order, double phi, double theta, double psi, double rmat[3][3] ); } \sstarguments{ \sstsubsection{ order = const char[] (Given) }{ Specifies about which axes the rotation occurs } \sstsubsection{ phi = double (Given) }{ 1st rotation (radians) } \sstsubsection{ theta = double (Given) }{ 2nd rotation (radians) } \sstsubsection{ psi = double (Given) }{ 3rd rotation (radians) } \sstsubsection{ rmat = double[3][3] (Given \& Returned) }{ Rotation matrix } } } sun267.htx/section12.tex000644 000161 000120 00000004237 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palDfltin }{ Convert free-format input into double precision floating point }{ \sstdescription{ Extracts a number from an input string starting at the specified index. } \sstinvocation{ void palDfltin( const char $*$ string, int $*$nstrt, double $*$dreslt, int $*$jflag ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing number to be decoded. } \sstsubsection{ nstrt = int $*$ (Given and Returned) }{ Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1. } \sstsubsection{ dreslt = double $*$ (Returned) }{ Result. Not updated when jflag=1. } \sstsubsection{ jflag = int $*$ (Returned) }{ status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error } } \sstnotes{ \sstitemlist{ \sstitem Uses the strtod() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing. \sstitem All {\tt "}D{\tt "} characters are converted to {\tt "}E{\tt "} to handle fortran exponents. \sstitem Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space. \sstitem If no number can be found flag will be set to 1. \sstitem If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value HUGE\_VAL, for underflow it will have the value 0.0. \sstitem For compatiblity with SLA/F -0 will be returned as {\tt "}0{\tt "} with jflag == -1. \sstitem Unlike slaDfltin a standalone {\tt "}E{\tt "} will return status 1 (could not find a number) rather than 2 (bad number). } } } sun267.htx/section13.tex000644 000161 000120 00000004330 12015001741 015323 0ustar00timjadmin000000 000000 \sstroutine{ palDh2e }{ Horizon to equatorial coordinates: Az,El to HA,Dec }{ \sstdescription{ Convert horizon to equatorial coordinates. } \sstinvocation{ palDh2e( double az, double el, double phi, double $*$ ha, double $*$ dec ); } \sstarguments{ \sstsubsection{ az = double (Given) }{ Azimuth (radians) } \sstsubsection{ el = double (Given) }{ Elevation (radians) } \sstsubsection{ phi = double (Given) }{ Observatory latitude (radians) } \sstsubsection{ ha = double $*$ (Returned) }{ Hour angle (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Declination (radians) } } \sstnotes{ \sstitemlist{ \sstitem All the arguments are angles in radians. \sstitem The sign convention for azimuth is north zero, east $+$pi/2. \sstitem HA is returned in the range $+$/-pi. Declination is returned in the range $+$/-pi/2. \sstitem The latitude is (in principle) geodetic. In critical applications, corrections for polar motion should be applied. \sstitem In some applications it will be important to specify the correct type of elevation in order to produce the required type of HA,Dec. In particular, it may be important to distinguish between the elevation as affected by refraction, which will yield the {\tt "}observed{\tt "} HA,Dec, and the elevation in vacuo, which will yield the {\tt "}topocentric{\tt "} HA,Dec. If the effects of diurnal aberration can be neglected, the topocentric HA,Dec may be used as an approximation to the {\tt "}apparent{\tt "} HA,Dec. \sstitem No range checking of arguments is done. \sstitem In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude. } } } sun267.htx/section14.tex000644 000161 000120 00000001762 12015001741 015332 0ustar00timjadmin000000 000000 \sstroutine{ palDjcal }{ Modified Julian Date to Gregorian Calendar }{ \sstdescription{ Modified Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages (namely rounded to a specified precision, and with the fields stored in a single array) } \sstinvocation{ void palDjcal ( int ndp, double djm, int iymdf[4], int $*$j ); } \sstarguments{ \sstsubsection{ ndp = int (Given) }{ Number of decimal places of days in fraction. } \sstsubsection{ djm = double (Given) }{ Modified Julian Date (JD-2400000.5) } \sstsubsection{ iymdf[4] = int[] (Returned) }{ Year, month, day, fraction in Gregorian calendar. } \sstsubsection{ j = status (Returned) }{ 0 = OK. See iauJd2cal for other values. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauJd2cal } } } sun267.htx/section15.tex000644 000161 000120 00000003400 12015001741 015322 0ustar00timjadmin000000 000000 \sstroutine{ palDmat }{ Matrix inversion \& solution of simultaneous equations }{ \sstdescription{ Matrix inversion \& solution of simultaneous equations For the set of n simultaneous equations in n unknowns: A.Y = X this routine calculates the inverse of A, the determinant of matrix A and the vector of N unknowns. } \sstinvocation{ void palDmat( int n, double $*$a, double $*$y, double $*$d, int $*$jf, int $*$iw ); } \sstarguments{ \sstsubsection{ n = int (Given) }{ Number of simultaneous equations and number of unknowns. } \sstsubsection{ a = double[] (Given \& Returned) }{ A non-singular NxN matrix (implemented as a contiguous block of memory). After calling this routine {\tt "}a{\tt "} contains the inverse of the matrix. } \sstsubsection{ y = double[] (Given \& Returned) }{ The vector of N unknowns. On exit this vector contains the N solutions. } \sstsubsection{ d = double $*$ (Returned) }{ The determinant. } \sstsubsection{ jf = int $*$ (Returned) }{ The singularity flag. If the matrix is non-singular, jf=0 is returned. If the matrix is singular, jf=-1 \& d=0.0 are returned. In the latter case, the contents of array {\tt "}a{\tt "} on return are undefined. } } \sstnotes{ \sstitemlist{ \sstitem Implemented using Gaussian elimination with partial pivoting. \sstitem Optimized for speed rather than accuracy with errors 1 to 4 times those of routines optimized for accuracy. } } } sun267.htx/section16.tex000644 000161 000120 00000002734 12015001741 015334 0ustar00timjadmin000000 000000 \sstroutine{ palDs2tp }{ Spherical to tangent plane projection }{ \sstdescription{ Projection of spherical coordinates onto tangent plane: {\tt "}gnomonic{\tt "} projection - {\tt "}standard coordinates{\tt "} } \sstinvocation{ palDs2tp( double ra, double dec, double raz, double decz, double $*$xi, double $*$eta, int $*$j ); } \sstarguments{ \sstsubsection{ ra = double (Given) }{ RA spherical coordinate of point to be projected (radians) } \sstsubsection{ dec = double (Given) }{ Dec spherical coordinate of point to be projected (radians) } \sstsubsection{ raz = double (Given) }{ RA spherical coordinate of tangent point (radians) } \sstsubsection{ decz = double (Given) }{ Dec spherical coordinate of tangent point (radians) } \sstsubsection{ xi = double $*$ (Returned) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double $*$ (Returned) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ j = int $*$ (Returned) }{ status: 0 = OK, star on tangent plane 1 = error, star too far from axis 2 = error, antistar on tangent plane 3 = error, antistar too far from axis } } } sun267.htx/section17.tex000644 000161 000120 00000002333 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palDtt }{ Return offset between UTC and TT }{ \sstdescription{ Increment to be applied to Coordinated Universal Time UTC to give International Atomic Time (TAI). } \sstinvocation{ dat = palDat( double utc ); } \sstarguments{ \sstsubsection{ utc = double (Given) }{ UTC date as a modified JD (JD-2400000.5) } } \sstreturnedvalue{ \sstsubsection{ dat = double }{ TAI-UTC in seconds } } \sstnotes{ \sstitemlist{ \sstitem This routine converts the MJD argument to calendar date before calling the SOFA iauDat function. \sstitem This routine matches the slaDat interface which differs from the iauDat interface. Consider coding directly to the SOFA interface. \sstitem See iauDat for a description of error conditions when calling this function with a time outside of the UTC range. \sstitem The status argument from iauDat is ignored. This is reasonable since the error codes are mainly related to incorrect calendar dates when calculating the JD internally. } } } sun267.htx/section18.tex000644 000161 000120 00000003760 12015001741 015336 0ustar00timjadmin000000 000000 \sstroutine{ palDmoon }{ Approximate geocentric position and velocity of the Moon }{ \sstdescription{ Calculate the approximate geocentric position of the Moon using a full implementation of the algorithm published by Meeus (l{\tt '}Astronomie, June 1984, p348). } \sstinvocation{ void palDmoon( double date, double pv[6] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB as a Modified Julian Date (JD-2400000.5) } \sstsubsection{ pv = double [6] (Returned) }{ Moon x,y,z,xdot,ydot,zdot, mean equator and equinox of date (AU, AU/s) } } \sstnotes{ \sstitemlist{ \sstitem Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in latitude and 0.2 arcsec in HP (equivalent to about 20 km in distance). Comparison with JPL DE200 over the interval 1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km and 81 mm/s in distance. The maximum errors over the same interval are 18 arcsec and 0.50 arcsec/hour in longitude, 11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s in distance. \sstitem The original algorithm is expressed in terms of the obsolete timescale Ephemeris Time. Either TDB or TT can be used, but not UT without incurring significant errors (30 arcsec at the present time) due to the Moon{\tt '}s 0.5 arcsec/sec movement. \sstitem The algorithm is based on pre IAU 1976 standards. However, the result has been moved onto the new (FK5) equinox, an adjustment which is in any case much smaller than the intrinsic accuracy of the procedure. \sstitem Velocity is obtained by a complete analytical differentiation of the Meeus model. } } } sun267.htx/section19.tex000644 000161 000120 00000000712 12015001741 015331 0ustar00timjadmin000000 000000 \sstroutine{ palDrange }{ Normalize angle into range $+$/- pi }{ \sstdescription{ The result is {\tt "}angle{\tt "} expressed in the range $+$/- pi. If the supplied value for {\tt "}angle{\tt "} is equal to $+$/- pi, it is returned unchanged. } \sstinvocation{ palDrange( double angle ) } \sstarguments{ \sstsubsection{ angle = double (Given) }{ The angle in radians. } } } sun267.htx/section2.tex000644 000161 000120 00000003056 12015001741 015245 0ustar00timjadmin000000 000000 \subsection{SOFA Mappings} The following table lists PAL/SLA functions that have direct replacements in SOFA. Whilst these routines are implemented in the PAL library using SOFA new code should probably call SOFA directly. \begin{tabular}{ll} SLA/PAL & SOFA \\ \texttt{palCldj} & \texttt{iauCal2jd} \\ \texttt{palDbear} & \texttt{iauPas} \\ \texttt{palDaf2r} & \texttt{iauAf2a} \\ \texttt{palDav2m} & \texttt{iauRv2m} \\ \texttt{palDcc2s} & \texttt{iauC2s} \\ \texttt{palDcs2c} & \texttt{iauS2c} \\ \texttt{palDd2tf} & \texttt{iauD2tf}\\ \texttt{palDimxv} & \texttt{iauTrxp}\\ \texttt{palDm2av} & \texttt{iauRm2v}\\ \texttt{palDjcl} & \texttt{iauJd2cal}\\ \texttt{palDmxm} & \texttt{iauRxr}\\ \texttt{palDmxv} & \texttt{iauRxp}\\ \texttt{palDpav} & \texttt{iauPap}\\ \texttt{palDr2af} & \texttt{iauA2af}\\ \texttt{palDr2tf} & \texttt{iauA2tf}\\ \texttt{palDranrm} & \texttt{iauAnp}\\ \texttt{palDsep} & \texttt{iauSeps}\\ \texttt{palDsepv} & \texttt{iauSepp}\\ \texttt{palDtf2d} & \texttt{iauTf2d}\\ \texttt{palDtf2r} & \texttt{iauTf2a}\\ \texttt{palDvdv} & \texttt{iauPdp}\\ \texttt{palDvn} & \texttt{iauPn}\\ \texttt{palDvxv} & \texttt{iauPxp}\\ \texttt{palEpb} & \texttt{iauEpb}\\ \texttt{palEpb2d} & \texttt{iauEpb2d}\\ \texttt{palEpj} & \texttt{iauEpj}\\ \texttt{palEpj2d} & \texttt{iauEpj2jd}\\ \texttt{palEqeqx} & \texttt{iauEe06a}\\ \texttt{palFk5hz} & \texttt{iauFk5hz} \textit{also calls iauEpj2jd}\\ \texttt{palGmst} & \texttt{iauGmst06}\\ \texttt{palGmsta} & \texttt{iauGmst06}\\ \texttt{palHfk5z} & \texttt{iauHfk5z} \textit{also calls iauEpj2jd}\\ \end{tabular} sun267.htx/section20.tex000644 000161 000120 00000003746 12015001741 015333 0ustar00timjadmin000000 000000 \sstroutine{ palDt }{ Estimate the offset between dynamical time and UT }{ \sstdescription{ Estimate the offset between dynamical time and Universal Time for a given historical epoch. } \sstinvocation{ double palDt( double epoch ); } \sstarguments{ \sstsubsection{ epoch = double (Given) }{ Julian epoch (e.g. 1850.0) } } \sstreturnedvalue{ \sstsubsection{ palDt = double }{ Rough estimate of ET-UT (after 1984, TT-UT) at the given epoch, in seconds. } } \sstnotes{ \sstitemlist{ \sstitem Depending on the epoch, one of three parabolic approximations is used: } before 979 Stephenson \& Morrison{\tt '}s 390 BC to AD 948 model 979 to 1708 Stephenson \& Morrison{\tt '}s 948 to 1600 model after 1708 McCarthy \& Babcock{\tt '}s post-1650 model The breakpoints are chosen to ensure continuity: they occur at places where the adjacent models give the same answer as each other. \sstitemlist{ \sstitem The accuracy is modest, with errors of up to 20 sec during the interval since 1650, rising to perhaps 30 min by 1000 BC. Comparatively accurate values from AD 1600 are tabulated in the Astronomical Almanac (see section K8 of the 1995 AA). \sstitem The use of double-precision for both argument and result is purely for compatibility with other SLALIB time routines. \sstitem The models used are based on a lunar tidal acceleration value of -26.00 arcsec per century. } } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Almanac, ed P.K.Seidelmann, University Science Books (1992), section 2.553, p83. This contains references to the Stephenson \& Morrison and McCarthy \& Babcock papers. } } sun267.htx/section21.tex000644 000161 000120 00000002153 12015001741 015323 0ustar00timjadmin000000 000000 \sstroutine{ palDtp2s }{ Tangent plane to spherical coordinates }{ \sstdescription{ Transform tangent plane coordinates into spherical. } \sstinvocation{ palDtp2s( double xi, double eta, double raz, double decz, double $*$ra, double $*$dec); } \sstarguments{ \sstsubsection{ xi = double (Given) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double (Given) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ raz = double (Given) }{ RA spherical coordinate of tangent point (radians) } \sstsubsection{ decz = double (Given) }{ Dec spherical coordinate of tangent point (radians) } \sstsubsection{ ra = double $*$ (Returned) }{ RA spherical coordinate of point to be projected (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Dec spherical coordinate of point to be projected (radians) } } } sun267.htx/section22.tex000644 000161 000120 00000005773 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palDtps2c }{ Determine RA,Dec of tangent point from coordinates }{ \sstdescription{ From the tangent plane coordinates of a star of known RA,Dec, determine the RA,Dec of the tangent point. } \sstinvocation{ palDtps2c( double xi, double eta, double ra, double dec, double $*$ raz1, double decz1, double $*$ raz2, double decz2, int $*$n); } \sstarguments{ \sstsubsection{ xi = double (Given) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double (Given) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ ra = double (Given) }{ RA spherical coordinate of star (radians) } \sstsubsection{ dec = double (Given) }{ Dec spherical coordinate of star (radians) } \sstsubsection{ raz1 = double $*$ (Returned) }{ RA spherical coordinate of tangent point, solution 1 (radians) } \sstsubsection{ decz1 = double $*$ (Returned) }{ Dec spherical coordinate of tangent point, solution 1 (radians) } \sstsubsection{ raz2 = double $*$ (Returned) }{ RA spherical coordinate of tangent point, solution 2 (radians) } \sstsubsection{ decz2 = double $*$ (Returned) }{ Dec spherical coordinate of tangent point, solution 2 (radians) } \sstsubsection{ n = int $*$ (Returned) }{ number of solutions: 0 = no solutions returned (note 2) 1 = only the first solution is useful (note 3) 2 = both solutions are useful (note 3) } } \sstnotes{ \sstitemlist{ \sstitem The RAZ1 and RAZ2 values are returned in the range 0-2pi. \sstitem Cases where there is no solution can only arise near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero XI value, and hence it is meaningless to ask where the tangent point would have to be to bring about this combination of XI and DEC. \sstitem Also near the poles, cases can arise where there are two useful solutions. The argument N indicates whether the second of the two solutions returned is useful. N=1 indicates only one useful solution, the usual case; under these circumstances, the second solution corresponds to the {\tt "}over-the-pole{\tt "} case, and this is reflected in the values of RAZ2 and DECZ2 which are returned. \sstitem The DECZ1 and DECZ2 values are returned in the range $+$/-pi, but in the usual, non-pole-crossing, case, the range is $+$/-pi/2. \sstitem This routine is the spherical equivalent of the routine sla\_DTPV2C. } } } sun267.htx/section23.tex000644 000161 000120 00000001662 12015001741 015331 0ustar00timjadmin000000 000000 \sstroutine{ palDtt }{ Return offset between UTC and TT }{ \sstdescription{ Increment to be applied to Coordinated Universal Time UTC to give Terrestrial Time TT (formerly Ephemeris Time ET) } \sstinvocation{ dtt = palDtt( double utc ); } \sstarguments{ \sstsubsection{ utc = double (Given) }{ UTC date as a modified JD (JD-2400000.5) } } \sstreturnedvalue{ \sstsubsection{ dtt = double }{ TT-UTC in seconds } } \sstnotes{ \sstitemlist{ \sstitem Consider a comprehensive upgrade to use the time transformations in SOFA{\tt '}s time cookbook: http://www.iausofa.org/sofa\_ts\_c.pdf. \sstitem See iauDat for a description of error conditions when calling this function with a time outside of the UTC range. This behaviour differs from slaDtt. } } } sun267.htx/section24.tex000644 000161 000120 00000001413 12015001741 015324 0ustar00timjadmin000000 000000 \sstroutine{ palEcmat }{ Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model }{ \sstdescription{ The equatorial to ecliptic rotation matrix is found and returned. The matrix is in the sense V(ecl) = RMAT $*$ V(equ); the equator, equinox and ecliptic are mean of date. } \sstinvocation{ palEcmat( double date, double rmat[3][3] ) } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds). } \sstsubsection{ rmat = double[3][3] (Returned) }{ Rotation matrix } } } sun267.htx/section25.tex000644 000161 000120 00000014764 12015001741 015342 0ustar00timjadmin000000 000000 \sstroutine{ palEl2ue }{ Transform conventional elements into {\tt "}universal{\tt "} form }{ \sstdescription{ Transform conventional osculating elements into {\tt "}universal{\tt "} form. } \sstinvocation{ void palEl2ue ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double u[13], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Epoch (TT MJD) of osculation (Note 3) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = illegal JFORM \sstitem 2 = illegal E \sstitem 3 = illegal AORQ \sstitem 4 = illegal DM \sstitem 5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The companion routine is palUe2pv. This takes the set of numbers that the present routine outputs and uses them to derive the object{\tt '}s position and velocity. A single prediction requires one call to the present routine followed by one call to palUe2pv; for convenience, the two calls are packaged as the routine palPlanel. Multiple predictions may be made by again calling the present routine once, but then calling palUe2pv multiple times, which is faster than multiple calls to palPlanel. \sstitem DATE is the epoch of osculation. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The supplied orbital elements are with respect to the J2000 ecliptic and equinox. The position and velocity parameters returned in the array U are with respect to the mean equator and equinox of epoch J2000, and are for the perihelion prior to the specified epoch. \sstitem The universal elements returned in the array U are in canonical units (solar masses, AU and canonical days). \sstitem Three different element-format options are available: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) \sstitemlist{ \sstitem Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. } } \sstdiytopic{ See Also }{ Everhart \& Pitkin, Am.J.Phys. 51, 712 (1983). } } sun267.htx/section26.tex000644 000161 000120 00000002471 12015001741 015333 0ustar00timjadmin000000 000000 \sstroutine{ palEpco }{ Convert an epoch into the appropriate form - {\tt '}B{\tt '} or {\tt '}J{\tt '} }{ \sstdescription{ Converts a Besselian or Julian epoch to a Julian or Besselian epoch. } \sstinvocation{ double palEpco( char k0, char k, double e ); } \sstarguments{ \sstsubsection{ k0 = char (Given) }{ Form of result: {\tt '}B{\tt '}=Besselian, {\tt '}J{\tt '}=Julian } \sstsubsection{ k = char (Given) }{ Form of given epoch: {\tt '}B{\tt '} or {\tt '}J{\tt '}. } } \sstnotes{ \sstitemlist{ \sstitem The result is always either equal to or very close to the given epoch E. The routine is required only in applications where punctilious treatment of heterogeneous mixtures of star positions is necessary. \sstitem k and k0 are case insensitive. This differes slightly from the Fortran SLA implementation. \sstitem k and k0 are not validated. They are interpreted as follows: o If k0 and k are the same the result is e o If k0 is {\tt '}b{\tt '} or {\tt '}B{\tt '} and k isn{\tt '}t the conversion is J to B. o In all other cases, the conversion is B to J. } } } sun267.htx/section27.tex000644 000161 000120 00000002251 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palEpv }{ Earth position and velocity with respect to the BCRS }{ \sstdescription{ Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System. } \sstinvocation{ void palEpv( double date, double ph[3], double vh[3], double pb[3], double vb[3] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Date, TDB Modified Julian Date (JD-2400000.5) } \sstsubsection{ ph = double [3] (Returned) }{ Heliocentric Earth position (AU) } \sstsubsection{ vh = double [3] (Returned) }{ Heliocentric Earth velocity (AU/day) } \sstsubsection{ pb = double [3] (Returned) }{ Barycentric Earth position (AU) } \sstsubsection{ vb = double [3] (Returned) }{ Barycentric Earth velocity (AU/day) } } \sstnotes{ \sstitemlist{ \sstitem See iauEpv00 for details on accuracy \sstitem Note that the status argument from iauEpv00 is ignored } } } sun267.htx/section28.tex000644 000161 000120 00000001745 12015001741 015340 0ustar00timjadmin000000 000000 \sstroutine{ palEtrms }{ Compute the E-terms vector }{ \sstdescription{ Computes the E-terms (elliptic component of annual aberration) vector. Note the use of the J2000 aberration constant (20.49552 arcsec). This is a reflection of the fact that the E-terms embodied in existing star catalogues were computed from a variety of aberration constants. Rather than adopting one of the old constants the latest value is used here. } \sstinvocation{ void palEtrms ( double ep, double ev[3] ); } \sstarguments{ \sstsubsection{ ep = double (Given) }{ Besselian epoch } \sstsubsection{ ev = double [3] (Returned) }{ E-terms as (dx,dy,dz) } } \sstdiytopic{ See also }{ \sstitemlist{ \sstitem Smith, C.A. et al., 1989. Astr.J. 97, 265. \sstitem Yallop, B.D. et al., 1989. Astr.J. 97, 274. } } } sun267.htx/section29.tex000644 000161 000120 00000002114 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palEqecl }{ Transform from J2000.0 equatorial coordinates to ecliptic coordinates }{ \sstdescription{ Transform from J2000.0 equatorial coordinates to ecliptic coordinates. } \sstinvocation{ void palEqecl( double dr, double dd, double date, double $*$dl, double $*$db); } \sstarguments{ \sstsubsection{ dr = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ dd = double (Given) }{ J2000.0 mean Dec (Radians) } \sstsubsection{ date = double (Given) }{ TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds). } \sstsubsection{ dl = double $*$ (Returned) }{ Ecliptic longitude (mean of date, IAU 1980 theory, radians) } \sstsubsection{ db = double $*$ (Returned) }{ Ecliptic latitude (mean of date, IAU 1980 theory, radians) } } } sun267.htx/section3.tex000644 000161 000120 00000000662 12015001741 015246 0ustar00timjadmin000000 000000 \subsection{More complex functions} These functions do not have a simple equivalent in SOFA so are reimplemented either completely standalone or using multiple SOFA functions. %% Regenerate everything after this from the prologues using SST by %% running "make palsun.tex". We do not build this automatically as %% there is no particular need for an SST dependency. %% Some manual tweaking is required after creating the SST tex. sun267.htx/section30.tex000644 000161 000120 00000002004 12015001741 015316 0ustar00timjadmin000000 000000 \sstroutine{ palEqgal }{ Convert from J2000.0 equatorial coordinates to Galactic }{ \sstdescription{ Transformation from J2000.0 equatorial coordinates to IAU 1958 galactic coordinates. } \sstinvocation{ void palEqgal ( double dr, double dd, double $*$dl, double $*$db ); } \sstarguments{ \sstsubsection{ dr = double (Given) }{ J2000.0 RA (radians) } \sstsubsection{ dd = double (Given) }{ J2000.0 Dec (radians } \sstsubsection{ dl = double $*$ (Returned) }{ Galactic longitude (radians). } \sstsubsection{ db = double $*$ (Returned) }{ Galactic latitude (radians). } } \sstnotes{ The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is required. } \sstdiytopic{ See Also }{ Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } sun267.htx/section31.tex000644 000161 000120 00000002571 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palEvp }{ Returns the barycentric and heliocentric velocity and position of the Earth }{ \sstdescription{ Returns the barycentric and heliocentric velocity and position of the Earth at a given epoch, given with respect to a specified equinox. For information about accuracy, see the function iauEpv00. } \sstinvocation{ void palEvp( double date, double deqx, double dvb[3], double dpb[3], double dvh[3], double dph[3] ) } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB (loosely ET) as a Modified Julian Date (JD-2400000.5) } \sstsubsection{ deqx = double (Given) }{ Julian epoch (e.g. 2000.0) of mean equator and equinox of the vectors returned. If deqx $<$= 0.0, all vectors are referred to the mean equator and equinox (FK5) of epoch date. } \sstsubsection{ dvb = double[3] (Returned) }{ Barycentric velocity (AU/s, AU) } \sstsubsection{ dpb = double[3] (Returned) }{ Barycentric position (AU/s, AU) } \sstsubsection{ dvh = double[3] (Returned) }{ heliocentric velocity (AU/s, AU) } \sstsubsection{ dph = double[3] (Returned) }{ Heliocentric position (AU/s, AU) } } } sun267.htx/section32.tex000644 000161 000120 00000007356 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palFk45z }{ Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame }{ \sstdescription{ Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame (double precision) This function converts stars from the Bessel-Newcomb, FK4 system to the IAU 1976, FK5, Fricke system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined. The method is from Appendix 2 of Ref 1, but using the constants of Ref 4. } \sstinvocation{ palFk45z( double r1950, double d1950, double bepoch, double $*$r2000, double $*$d2000 ) } \sstarguments{ \sstsubsection{ r1950 = double (Given) }{ B1950.0 FK4 RA at epoch (radians). } \sstsubsection{ d1950 = double (Given) }{ B1950.0 FK4 Dec at epoch (radians). } \sstsubsection{ bepoch = double (Given) }{ Besselian epoch (e.g. 1979.3) } \sstsubsection{ r2000 = double (Returned) }{ J2000.0 FK5 RA (Radians). } \sstsubsection{ d2000 = double (Returned) }{ J2000.0 FK5 Dec(Radians). } } \sstnotes{ \sstitemlist{ \sstitem The epoch BEPOCH is strictly speaking Besselian, but if a Julian epoch is supplied the result will be affected only to a negligible extent. \sstitem Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after palFk45z is called. \sstitem In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion. } } \sstdiytopic{ References }{ \sstitemlist{ \sstitem Aoki,S., et al, 1983. Astron.Astrophys., 128, 263. \sstitem Smith, C.A. et al, 1989. {\tt "}The transformation of astrometric catalog systems to the equinox J2000.0{\tt "}. Astron.J. 97, 265. \sstitem Yallop, B.D. et al, 1989. {\tt "}Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}. Astron.J. 97, 274. \sstitem Seidelmann, P.K. (ed), 1992. {\tt "}Explanatory Supplement to the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7. } } } sun267.htx/section33.tex000644 000161 000120 00000010751 12015001741 015331 0ustar00timjadmin000000 000000 \sstroutine{ palFk524 }{ Convert J2000.0 FK5 star data to B1950.0 FK4 }{ \sstdescription{ This function converts stars from the IAU 1976, FK5, Fricke system, to the Bessel-Newcomb, FK4 system. The precepts of Smith et al (Ref 1) are followed, using the implementation by Yallop et al (Ref 2) of a matrix method due to Standish. Kinoshita{\tt '}s development of Andoyer{\tt '}s post-Newcomb precession is used. The numerical constants from Seidelmann et al (Ref 3) are used canonically. } \sstinvocation{ palFk524( double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950, double $*$p1950, double $*$v1950 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 FK5 RA (radians). } \sstsubsection{ d2000 = double (Given) }{ J2000.0 FK5 Dec (radians). } \sstsubsection{ dr2000 = double (Given) }{ J2000.0 FK5 RA proper motion (rad/Jul.yr) } \sstsubsection{ dd2000 = double (Given) }{ J2000.0 FK5 Dec proper motion (rad/Jul.yr) } \sstsubsection{ p2000 = double (Given) }{ J2000.0 FK5 parallax (arcsec) } \sstsubsection{ v2000 = double (Given) }{ J2000.0 FK5 radial velocity (km/s, $+$ve = moving away) } \sstsubsection{ r1950 = double $*$ (Returned) }{ B1950.0 FK4 RA (radians). } \sstsubsection{ d1950 = double $*$ (Returned) }{ B1950.0 FK4 Dec (radians). } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950.0 FK4 RA proper motion (rad/Jul.yr) } \sstsubsection{ dd1950 = double $*$ (Returned) }{ B1950.0 FK4 Dec proper motion (rad/Jul.yr) } \sstsubsection{ p1950 = double $*$ (Returned) }{ B1950.0 FK4 parallax (arcsec) } \sstsubsection{ v1950 = double $*$ (Returned) }{ B1950.0 FK4 radial velocity (km/s, $+$ve = moving away) } } \sstnotes{ \sstitemlist{ \sstitem The proper motions in RA are dRA/dt rather than cos(Dec)$*$dRA/dt, and are per year rather than per century. \sstitem Note that conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after FK524 is called. \sstitem In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion. } } \sstdiytopic{ References }{ \sstitemlist{ \sstitem Smith, C.A. et al, 1989. {\tt "}The transformation of astrometric catalog systems to the equinox J2000.0{\tt "}. Astron.J. 97, 265. \sstitem Yallop, B.D. et al, 1989. {\tt "}Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}. Astron.J. 97, 274. \sstitem Seidelmann, P.K. (ed), 1992. {\tt "}Explanatory Supplement to the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7. } } } sun267.htx/section34.tex000644 000161 000120 00000004616 12015001741 015335 0ustar00timjadmin000000 000000 \sstroutine{ palFk54z }{ Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax }{ \sstdescription{ This function converts star positions from the IAU 1976, FK5, Fricke system to the Bessel-Newcomb, FK4 system. } \sstinvocation{ palFk54z( double r2000, double d2000, double bepoch, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 FK5 RA (radians). } \sstsubsection{ d2000 = double (Given) }{ J2000.0 FK5 Dec (radians). } \sstsubsection{ bepoch = double (Given) }{ Besselian epoch (e.g. 1950.0). } \sstsubsection{ r1950 = double $*$ (Returned) }{ B1950 FK4 RA (radians) at epoch {\tt "}bepoch{\tt "}. } \sstsubsection{ d1950 = double $*$ (Returned) }{ B1950 FK4 Dec (radians) at epoch {\tt "}bepoch{\tt "}. } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950 FK4 proper motion (RA) (radians/trop.yr)). } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950 FK4 proper motion (Dec) (radians/trop.yr)). } } \sstnotes{ \sstitemlist{ \sstitem The proper motion in RA is dRA/dt rather than cos(Dec)$*$dRA/dt. \sstitem Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession functions before and after this function is called. \sstitem The FK5 proper motions, the parallax and the radial velocity are presumed zero. \sstitem It is the intention that FK5 should be a close approximation to an inertial frame, so that distant objects have zero proper motion; such objects have (in general) non-zero proper motion in FK4, and this function returns those fictitious proper motions. \sstitem The position returned by this function is in the B1950 reference frame but at Besselian epoch BEPOCH. For comparison with catalogues the {\tt "}bepoch{\tt "} argument will frequently be 1950.0. } } } sun267.htx/section35.tex000644 000161 000120 00000002005 12015001741 015324 0ustar00timjadmin000000 000000 \sstroutine{ palGaleq }{ Convert from galactic to J2000.0 equatorial coordinates }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to J2000.0 equatorial coordinates. } \sstinvocation{ void palGaleq ( double dl, double db, double $*$dr, double $*$dd ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude (radians). } \sstsubsection{ db = double (Given) }{ Galactic latitude (radians). } \sstsubsection{ dr = double $*$ (Returned) }{ J2000.0 RA (radians) } \sstsubsection{ dd = double $*$ (Returned) }{ J2000.0 Dec (radians) } } \sstnotes{ The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is required. } \sstdiytopic{ See Also }{ Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } sun267.htx/section36.tex000644 000161 000120 00000002461 12015001741 015333 0ustar00timjadmin000000 000000 \sstroutine{ palGalsup }{ Convert from galactic to supergalactic coordinates }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to de Vaucouleurs supergalactic coordinates. } \sstinvocation{ void palGalsup ( double dl, double db, double $*$dsl, double $*$dsb ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude. } \sstsubsection{ db = double (Given) }{ Galactic latitude. } \sstsubsection{ dsl = double $*$ (Returned) }{ Supergalactic longitude. } \sstsubsection{ dsb = double $*$ (Returned) }{ Supergalactic latitude. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8. \sstitem Systems \& Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490. } (These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.) } } sun267.htx/section37.tex000644 000161 000120 00000002127 12015001741 015333 0ustar00timjadmin000000 000000 \sstroutine{ palGe50 }{ Transform Galactic Coordinate to B1950 FK4 }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to B1950.0 {\tt '}FK4{\tt '} equatorial coordinates. } \sstinvocation{ palGe50( double dl, double db, double $*$dr, double $*$dd ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude (radians) } \sstsubsection{ db = double (Given) }{ Galactic latitude (radians) } \sstsubsection{ dr = double $*$ (Returned) }{ B9150.0 FK4 RA. } \sstsubsection{ dd = double $*$ (Returned) }{ B1950.0 FK4 Dec. } } \sstnotes{ \sstitemlist{ \sstitem The equatorial coordinates are B1950.0 {\tt '}FK4{\tt '}. Use the routine palGaleq if conversion to J2000.0 coordinates is required. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } } sun267.htx/section38.tex000644 000161 000120 00000001651 12015001741 015335 0ustar00timjadmin000000 000000 \sstroutine{ palGeoc }{ Convert geodetic position to geocentric }{ \sstdescription{ Convert geodetic position to geocentric. } \sstinvocation{ void palGeoc( double p, double h, double $*$ r, double $*$z ); } \sstarguments{ \sstsubsection{ p = double (Given) }{ latitude (radians) } \sstsubsection{ h = double (Given) }{ height above reference spheroid (geodetic, metres) } \sstsubsection{ r = double $*$ (Returned) }{ distance from Earth axis (AU) } \sstsubsection{ z = double $*$ (Returned) }{ distance from plane of Earth equator (AU) } } \sstnotes{ \sstitemlist{ \sstitem Geocentric latitude can be obtained by evaluating atan2(z,r) \sstitem Uses WGS84 reference ellipsoid and calls iauGd2gc } } } sun267.htx/section39.tex000644 000161 000120 00000003400 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palIntin }{ Convert free-format input into an integer }{ \sstdescription{ Extracts a number from an input string starting at the specified index. } \sstinvocation{ void palIntin( const char $*$ string, int $*$nstrt, long $*$ireslt, int $*$jflag ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing number to be decoded. } \sstsubsection{ nstrt = int $*$ (Given and Returned) }{ Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1. } \sstsubsection{ ireslt = long $*$ (Returned) }{ Result. Not updated when jflag=1. } \sstsubsection{ jflag = int $*$ (Returned) }{ status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error } } \sstnotes{ \sstitemlist{ \sstitem Uses the strtol() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing. \sstitem Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space. \sstitem If no number can be found flag will be set to 1. \sstitem If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value LONG\_MAX, for underflow it will have the value LONG\_MIN. } } } sun267.htx/section4.tex000644 000161 000120 00000002705 12015001741 015247 0ustar00timjadmin000000 000000 \sstroutine{ palAddet }{ Add the E-terms to a pre IAU 1976 mean place }{ \sstdescription{ Add the E-terms (elliptic component of annual aberration) to a pre IAU 1976 mean place to conform to the old catalogue convention. } \sstinvocation{ void palAddet ( double rm, double dm, double eq, double $*$rc, double $*$dc ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ RA without E-terms (radians) } \sstsubsection{ dm = double (Given) }{ Dec without E-terms (radians) } \sstsubsection{ eq = double (Given) }{ Besselian epoch of mean equator and equinox } \sstsubsection{ rc = double $*$ (Returned) }{ RA with E-terms included (radians) } \sstsubsection{ dc = double $*$ (Returned) }{ Dec with E-terms included (radians) } } \sstnotes{ Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. If it is necessary to convert a formal mean place (for example a pulsar timing position) to one consistent with such a star catalogue, then the RA,Dec should be adjusted using this routine. } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48. } } sun267.htx/section40.tex000644 000161 000120 00000003263 12015001741 015327 0ustar00timjadmin000000 000000 \sstroutine{ palMap }{ Convert star RA,Dec from mean place to geocentric apparent }{ \sstdescription{ Convert star RA,Dec from mean place to geocentric apparent. } \sstinvocation{ void palMap( double rm, double dm, double pr, double pd, double px, double rv, double eq, double date, double $*$ra, double $*$da ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians) } \sstsubsection{ dm = double (Given) }{ Mean declination (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion, changes per Julian year (radians) } \sstsubsection{ pd = double (Given) }{ Dec proper motion, changes per Julian year (radians) } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/s, $+$ve if receding) } \sstsubsection{ eq = double (Given) }{ Epoch and equinox of star data (Julian) } \sstsubsection{ date = double (Given) }{ TDB for apparent place (JD-2400000.5) } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Apparent dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem Calls palMappa and palMapqk \sstitem The reference systems and timescales used are IAU 2006. } } } sun267.htx/section41.tex000644 000161 000120 00000004025 12015001741 015325 0ustar00timjadmin000000 000000 \sstroutine{ palMappa }{ Compute parameters needed by palAmpqk and palMapqk }{ \sstdescription{ Compute star-independent parameters in preparation for transformations between mean place and geocentric apparent place. The parameters produced by this function are required in the parallax, aberration, and nutation/bias/precession parts of the mean/apparent transformations. The reference systems and timescales used are IAU 2006. } \sstinvocation{ void palMappa( double eq, double date, double amprms[21] ) } \sstarguments{ \sstsubsection{ eq = double (Given) }{ epoch of mean equinox to be used (Julian) } \sstsubsection{ date = double (Given) }{ TDB (JD-2400000.5) } \sstsubsection{ amprms = double[21] (Returned) }{ star-independent mean-to-apparent parameters: \sstitemlist{ \sstitem (0) time interval for proper motion (Julian years) \sstitem (1-3) barycentric position of the Earth (AU) \sstitem (4-6) heliocentric direction of the Earth (unit vector) \sstitem (7) (grav rad Sun)$*$2/(Sun-Earth distance) \sstitem (8-10) abv: barycentric Earth velocity in units of c \sstitem (11) sqrt(1-v$*$$*$2) where v=modulus(abv) \sstitem (12-20) precession/nutation (3,3) matrix } } } \sstnotes{ \sstitemlist{ \sstitem For date, the distinction between the required TDB and TT is always negligible. Moreover, for all but the most critical applications UTC is adequate. \sstitem The vector amprms(1-3) is referred to the mean equinox and equator of epoch eq. \sstitem The parameters amprms produced by this function are used by palAmpqk, palMapqk and palMapqkz. } } } sun267.htx/section42.tex000644 000161 000120 00000003763 12015001741 015336 0ustar00timjadmin000000 000000 \sstroutine{ palMapqk }{ Quick mean to apparent place }{ \sstdescription{ Quick mean to apparent place: transform a star RA,Dec from mean place to geocentric apparent place, given the star-independent parameters. Use of this routine is appropriate when efficiency is important and where many star positions, all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa routine. If the parallax and proper motions are zero the palMapqkz routine can be used instead. } \sstinvocation{ void palMapqk ( double rm, double dm, double pr, double pd, double px, double rv, double amprms[21], double $*$ra, double $*$da ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians) } \sstsubsection{ dm = double (Given) }{ Mean declination (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion, changes per Julian year (radians) } \sstsubsection{ pd = double (Given) }{ Dec proper motion, changes per Julian year (radians) } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/s, $+$ve if receding) } \sstsubsection{ amprms = double [21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa). } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Apparent dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem The reference frames and timescales used are post IAU 2006. } } } sun267.htx/section43.tex000644 000161 000120 00000003631 12015001741 015331 0ustar00timjadmin000000 000000 \sstroutine{ palMapqkz }{ Quick mean to apparent place }{ \sstdescription{ Quick mean to apparent place: transform a star RA,dec from mean place to geocentric apparent place, given the star-independent parameters, and assuming zero parallax and proper motion. Use of this function is appropriate when efficiency is important and where many star positions, all with parallax and proper motion either zero or already allowed for, and all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa function. The corresponding function for the case of non-zero parallax and proper motion is palMapqk. The reference systems and timescales used are IAU 2006. Strictly speaking, the function is not valid for solar-system sources, though the error will usually be extremely small. } \sstinvocation{ void palMapqkz( double rm, double dm, double amprms[21], double $*$ra, double $*$da ) } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians). } \sstsubsection{ dm = double (Given) }{ Mean Dec (radians). } \sstsubsection{ amprms = double[21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa): (0-3) not used (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$$*$2) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians). } \sstsubsection{ da = double $*$ (Returned) }{ Apparent Dec (radians). } } } sun267.htx/section44.tex000644 000161 000120 00000001762 12015001741 015335 0ustar00timjadmin000000 000000 \sstroutine{ palNut }{ Form the matrix of nutation }{ \sstdescription{ Form the matrix of nutation for a given date using the IAU 2006 nutation model and palDeuler. } \sstinvocation{ void palNut( double date, double rmatn[3][3] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as modified Julian date (JD-2400000.5) } \sstsubsection{ rmatn = double [3][3] (Returned) }{ Nutation matrix in the sense v(true)=rmatn $*$ v(mean) where v(true) is the star vector relative to the true equator and equinox of date and v(mean) is the star vector relative to the mean equator and equinox of date. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauNut06a via palNutc \sstitem The distinction between TDB and TT is negligible. For all but the most critical applications UTC is adequate. } } } sun267.htx/section45.tex000644 000161 000120 00000002063 12015001741 015331 0ustar00timjadmin000000 000000 \sstroutine{ palNutc }{ Calculate nutation longitude \& obliquoty components }{ \sstdescription{ Calculates the longitude $*$ obliquity components and mean obliquity using the SOFA library. } \sstinvocation{ void palNutc( double date, double $*$ dpsi, double $*$deps, double $*$eps0 ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as modified Julian date (JD-2400000.5) } \sstsubsection{ dpsi = double $*$ (Returned) }{ Nutation in longitude } \sstsubsection{ deps = double $*$ (Returned) }{ Nutation in obliquity } \sstsubsection{ eps0 = double $*$ (Returned) }{ Mean obliquity. } } \sstnotes{ \sstitemlist{ \sstitem Calls iauObl06 and iauNut06a and therefore uses the IAU 206 precession/nutation model. \sstitem Note the change from SLA/F regarding the date. TT is used rather than TDB. } } } sun267.htx/section46.tex000644 000161 000120 00000007547 12015001741 015346 0ustar00timjadmin000000 000000 \sstroutine{ palObs }{ Parameters of selected ground-based observing stations }{ \sstdescription{ Station numbers, identifiers, names and other details are subject to change and should not be hardwired into application programs. All characters in {\tt "}c{\tt "} up to the first space are checked; thus an abbreviated ID will return the parameters for the first station in the list which matches the abbreviation supplied, and no station in the list will ever contain embedded spaces. {\tt "}c{\tt "} must not have leading spaces. IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION. The longitude returned by sla\_OBS is west-positive in accordance with astronomical usage. However, this sign convention is left-handed and is the opposite of the one used by geographers; elsewhere in PAL the preferable east-positive convention is used. In particular, note that for use in palAop, palAoppa and palOap the sign of the longitude must be reversed. Users are urged to inform the author of any improvements they would like to see made. For example: typographical corrections more accurate parameters better station identifiers or names additional stations } \sstinvocation{ int palObs( size\_t n, const char $*$ c, char $*$ ident, size\_t identlen, char $*$ name, size\_t namelen, double $*$ w, double $*$ p, double $*$ h ); } \sstarguments{ \sstsubsection{ n = size\_t (Given) }{ Number specifying the observing station. If 0 the identifier in {\tt "}c{\tt "} is used to determine the observing station to use. } \sstsubsection{ c = const char $*$ (Given) }{ Identifier specifying the observing station for which the parameters should be returned. Only used if n is 0. Can be NULL for n$>$0. Case insensitive. } \sstsubsection{ ident = char $*$ (Returned) }{ Identifier of the observing station selected. Will be identical to {\tt "}c{\tt "} if n==0. Unchanged if {\tt "}n{\tt "} or {\tt "}c{\tt "} do not match an observing station. Should be at least 11 characters (including the trailing nul). } \sstsubsection{ identlen = size\_t (Given) }{ Size of the buffer {\tt "}ident{\tt "} including trailing nul. } \sstsubsection{ name = char $*$ (Returned) }{ Full name of the specified observing station. Contains {\tt "}?{\tt "} if {\tt "}n{\tt "} or {\tt "}c{\tt "} did not correspond to a valid station. Should be at least 41 characters (including the trailing nul). } \sstsubsection{ w = double $*$ (Returned) }{ Longitude (radians, West $+$ve). Unchanged if observing station could not be identified. } \sstsubsection{ p = double $*$ (Returned) }{ Geodetic latitude (radians, North $+$ve). Unchanged if observing station could not be identified. } \sstsubsection{ h = double $*$ (Returned) }{ Height above sea level (metres). Unchanged if observing station could not be identified. } } \sstreturnedvalue{ \sstsubsection{ palObs = int }{ 0 if an observing station was returned. -1 if no match was found. } } \sstnotes{ \sstitemlist{ \sstitem Differs from the SLA interface in that the output short name is not the same variable as the input short name. This simplifies consting. Additionally the size of the output buffers are now specified in the API and a status integer is returned. } } } sun267.htx/section47.tex000644 000161 000120 00000002365 12015001741 015340 0ustar00timjadmin000000 000000 \sstroutine{ palPa }{ HA, Dec to Parallactic Angle }{ \sstdescription{ Converts HA, Dec to Parallactic Angle. } \sstinvocation{ double palPa( double ha, double dec, double phi ); } \sstarguments{ \sstsubsection{ ha = double (Given) }{ Hour angle in radians (Geocentric apparent) } \sstsubsection{ dec = double (Given) }{ Declination in radians (Geocentric apparent) } \sstsubsection{ phi = double (Given) }{ Observatory latitude in radians (geodetic) } } \sstreturnedvalue{ \sstsubsection{ palPa = double }{ Parallactic angle in the range -pi to $+$pi. } } \sstnotes{ \sstitemlist{ \sstitem The parallactic angle at a point in the sky is the position angle of the vertical, i.e. the angle between the direction to the pole and to the zenith. In precise applications care must be taken only to use geocentric apparent HA,Dec and to consider separately the effects of atmospheric refraction and telescope mount errors. \sstitem At the pole a zero result is returned. } } } sun267.htx/section48.tex000644 000161 000120 00000014615 12015001741 015342 0ustar00timjadmin000000 000000 \sstroutine{ palPertel }{ Update elements by applying planetary perturbations }{ \sstdescription{ Update the osculating orbital elements of an asteroid or comet by applying planetary perturbations. } \sstinvocation{ void palPertel (int jform, double date0, double date1, double epoch0, double orbi0, double anode0, double perih0, double aorq0, double e0, double am0, double $*$epoch1, double $*$orbi1, double $*$anode1, double $*$perih1, double $*$aorq1, double $*$e1, double $*$am1, int $*$jstat ); } \sstarguments{ \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ date0 = double (Given) }{ Date of osculation (TT MJD) for the given elements. } \sstsubsection{ date1 = double (Given) }{ Date of osculation (TT MJD) for the updated elements. } \sstsubsection{ epoch0 = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbi0 = double (Given) }{ inclination (radians) } \sstsubsection{ anode0 = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih0 = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq0 = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e0 = double (Given) }{ eccentricity } \sstsubsection{ am0 = double (Given) }{ mean anomaly (radians, JFORM=2 only) } \sstsubsection{ epoch1 = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbi1 = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode1 = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih1 = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq1 = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e1 = double $*$ (Returned) }{ eccentricity } \sstsubsection{ am1 = double $*$ (Returned) }{ mean anomaly (radians, JFORM=2 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: \sstitemlist{ \sstitem $+$102 = warning, distant epoch \sstitem $+$101 = warning, large timespan ( $>$ 100 years) \sstitem $+$1 to $+$10 = coincident with planet (Note 6) \sstitem 0 = OK \sstitem -1 = illegal JFORM \sstitem -2 = illegal E0 \sstitem -3 = illegal AORQ0 \sstitem -4 = internal error \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem Two different element-format options are available: } Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AM = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in the TT timescale (formerly Ephemeris Time, ET), expressed as Modified Julian Dates (JD-2400000.5). } DATE0 is the instant at which the given (i.e. unperturbed) osculating elements are correct. DATE1 is the specified instant at which the updated osculating elements are correct. EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1 (respectively) for the JFORM=2 case, normally used for minor planets. For the JFORM=3 case, the two epochs will refer to perihelion passage and so will not, in general, be the same as DATE0 and/or DATE1 though they may be similar to one another. \sstitemlist{ \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem Unused elements (AM0 and AM1 for JFORM=3) are not accessed. \sstitem See the palPertue routine for details of the algorithm used. \sstitem This routine is not intended to be used for major planets, which is why JFORM=1 is not available and why there is no opportunity to specify either the longitude of perihelion or the daily motion. However, if JFORM=2 elements are somehow obtained for a major planet and supplied to the routine, sensible results will, in fact, be produced. This happens because the sla\_PERTUE routine that is called to perform the calculations checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply it to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. } } } sun267.htx/section49.tex000644 000161 000120 00000017227 12015001741 015345 0ustar00timjadmin000000 000000 \sstroutine{ palPertue }{ Update the universal elements by applying planetary perturbations }{ \sstdescription{ Update the universal elements of an asteroid or comet by applying planetary perturbations. } \sstinvocation{ void palPertue( double date, double u[13], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Final epoch (TT MJD) for the update elements. } \sstsubsection{ u = const double [13] (Given \& Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: $+$102 = warning, distant epoch $+$101 = warning, large timespan ( $>$ 100 years) $+$1 to $+$10 = coincident with major planet (Note 5) 0 = OK \sstitemlist{ \sstitem 1 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the J2000 equator and equinox. \sstitem The epochs DATE, U(3) and U(12) are all Modified Julian Dates (JD-2400000.5). \sstitem The algorithm is a simplified form of Encke{\tt '}s method. It takes as a basis the unperturbed motion of the body, and numerically integrates the perturbing accelerations from the major planets. The expression used is essentially Sterne{\tt '}s 6.7-2 (reference 1). Everhart and Pitkin (reference 2) suggest rectifying the orbit at each integration step by propagating the new perturbed position and velocity as the new universal variables. In the present routine the orbit is rectified less frequently than this, in order to gain a slight speed advantage. However, the rectification is done directly in terms of position and velocity, as suggested by Everhart and Pitkin, bypassing the use of conventional orbital elements. } The f(q) part of the full Encke method is not used. The purpose of this part is to avoid subtracting two nearly equal quantities when calculating the {\tt "}indirect member{\tt "}, which takes account of the small change in the Sun{\tt '}s attraction due to the slightly displaced position of the perturbed body. A simpler, direct calculation in double precision proves to be faster and not significantly less accurate. Apart from employing a variable timestep, and occasionally {\tt "}rectifying the orbit{\tt "} to keep the indirect member small, the integration is done in a fairly straightforward way. The acceleration estimated for the middle of the timestep is assumed to apply throughout that timestep; it is also used in the extrapolation of the perturbations to the middle of the next timestep, to predict the new disturbed position. There is no iteration within a timestep. Measures are taken to reach a compromise between execution time and accuracy. The starting-point is the goal of achieving arcsecond accuracy for ordinary minor planets over a ten-year timespan. This goal dictates how large the timesteps can be, which in turn dictates how frequently the unperturbed motion has to be recalculated from the osculating elements. Within predetermined limits, the timestep for the numerical integration is varied in length in inverse proportion to the magnitude of the net acceleration on the body from the major planets. The numerical integration requires estimates of the major-planet motions. Approximate positions for the major planets (Pluto alone is omitted) are obtained from the routine palPlanet. Two levels of interpolation are used, to enhance speed without significantly degrading accuracy. At a low frequency, the routine palPlanet is called to generate updated position$+$velocity {\tt "}state vectors{\tt "}. The only task remaining to be carried out at the full frequency (i.e. at each integration step) is to use the state vectors to extrapolate the planetary positions. In place of a strictly linear extrapolation, some allowance is made for the curvature of the orbit by scaling back the radius vector as the linear extrapolation goes off at a tangent. Various other approximations are made. For example, perturbations by Pluto and the minor planets are neglected and relativistic effects are not taken into account. In the interests of simplicity, the background calculations for the major planets are carried out en masse. The mean elements and state vectors for all the planets are refreshed at the same time, without regard for orbit curvature, mass or proximity. The Earth-Moon system is treated as a single body when the body is distant but as separate bodies when closer to the EMB than the parameter RNE, which incurs a time penalty but improves accuracy for near-Earth objects. \sstitemlist{ \sstitem This routine is not intended to be used for major planets. However, if major-planet elements are supplied, sensible results will, in fact, be produced. This happens because the routine checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply the routine to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } sun267.htx/section5.tex000644 000161 000120 00000003233 12015001741 015245 0ustar00timjadmin000000 000000 \sstroutine{ palAirmas }{ Air mass at given zenith distance }{ \sstdescription{ Calculates the airmass at the observed zenith distance. } \sstinvocation{ double palAirmas( double zd ); } \sstarguments{ \sstsubsection{ zd = double (Given) }{ Observed zenith distance (radians) } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}observed{\tt "} zenith distance referred to above means {\tt "}as affected by refraction{\tt "}. \sstitem Uses Hardie{\tt '}s (1962) polynomial fit to Bemporad{\tt '}s data for the relative air mass, X, in units of thickness at the zenith as tabulated by Schoenberg (1929). This is adequate for all normal needs as it is accurate to better than 0.1\% up to X = 6.8 and better than 1\% up to X = 10. Bemporad{\tt '}s tabulated values are unlikely to be trustworthy to such accuracy because of variations in density, pressure and other conditions in the atmosphere from those assumed in his work. \sstitem The sign of the ZD is ignored. \sstitem At zenith distances greater than about ZD = 87 degrees the air mass is held constant to avoid arithmetic overflows. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Hardie, R.H., 1962, in {\tt "}Astronomical Techniques{\tt "} ed. W.A. Hiltner, University of Chicago Press, p180. \sstitem Schoenberg, E., 1929, Hdb. d. Ap., Berlin, Julius Springer, 2, 268. } } } sun267.htx/section50.tex000644 000161 000120 00000016347 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palPlanel }{ Transform conventional elements into position and velocity }{ \sstdescription{ Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements. } \sstinvocation{ void palPlanel ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double pv[6], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Epoch (TT MJD) of osculation (Note 1) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 3) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) (Note 4) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal JFORM \sstitem -2 = illegal E \sstitem -3 = illegal AORQ \sstitem -4 = illegal DM \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem A choice of three different element-set options is available: } Option JFORM = 1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM = 2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM = 3, suitable for comets: EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitemlist{ \sstitem Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called {\tt "}osculating elements{\tt "}, using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body. } Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them: . The epoch of observation: the moment in time for which the position of the body is to be predicted. . The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached. . The osculating epoch: the moment in time at which the given elements are correct. For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation. For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved. For the present routine: . The epoch of observation is the argument DATE. . The epoch defining the position of the body is the argument EPOCH. . The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla\_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations. \sstitemlist{ \sstitem The reference frame for the result is with respect to the mean equator and equinox of epoch J2000. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. } } \sstdiytopic{ See Also }{ Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } sun267.htx/section51.tex000644 000161 000120 00000002766 12015001741 015340 0ustar00timjadmin000000 000000 \sstroutine{ palPlanet }{ Approximate heliocentric position and velocity of major planet }{ \sstdescription{ Calculates the approximate heliocentric position and velocity of the specified major planet. } \sstinvocation{ void palPlanet ( double date, int np, double pv[6], int $*$j ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB Modified Julian Date (JD-2400000.5). } \sstsubsection{ np = int (Given) }{ planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) } \sstsubsection{ pv = double [6] (Returned) }{ heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad in units AU and AU/s. } \sstsubsection{ j = int $*$ (Returned) }{ \sstitemlist{ \sstitem -2 = solution didn{\tt '}t converge. \sstitem -1 = illegal np (1-8) \sstitem 0 = OK \sstitem $+$1 = warning: year outside 1000-3000 } } } \sstnotes{ \sstitemlist{ \sstitem See SOFA iauPlan94 for details \sstitem Note that Pluto is supported in SLA/F but not in this routine \sstitem Status -2 is equivalent to iauPlan94 status $+$2. \sstitem Note that velocity units here match the SLA/F documentation. } } } sun267.htx/section52.tex000644 000161 000120 00000022231 12015001741 015326 0ustar00timjadmin000000 000000 \sstroutine{ palPlante }{ Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements }{ \sstdescription{ Topocentric apparent RA,Dec of a Solar-System object whose heliocentric orbital elements are known. } \sstinvocation{ void palPlante ( double date, double elong, double phi, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double $*$ra, double $*$dec, double $*$r, int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT MJD of observation (JD-2400000.5) } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ ra = double $*$ (Returned) }{ Topocentric apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Topocentric apparent Dec (radians) } \sstsubsection{ r = double $*$ (Returned) }{ Distance from observer (AU) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal jform \sstitem -2 = illegal e \sstitem -3 = illegal aorq \sstitem -4 = illegal dm \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv. \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem A choice of three different element-set options is available: } Option JFORM = 1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM = 2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM = 3, suitable for comets: EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitemlist{ \sstitem Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called {\tt "}osculating elements{\tt "}, using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body. } Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them: . The epoch of observation: the moment in time for which the position of the body is to be predicted. . The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached. . The osculating epoch: the moment in time at which the given elements are correct. For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation. For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved. For the present routine: . The epoch of observation is the argument DATE. . The epoch defining the position of the body is the argument EPOCH. . The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla\_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations. \sstitemlist{ \sstitem Two important sources for orbital elements are Horizons, operated by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet Center, operated by the Center for Astrophysics, Harvard. } The JPL Horizons elements (heliocentric, J2000 ecliptic and equinox) correspond to SLALIB arguments as follows. Major planets: JFORM = 1 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = OM$+$W (in radians) AORQ = A E = EC AORL = MA$+$OM$+$W (in radians) DM = N (in radians) Epoch of osculation = JDCT-2400000.5 Minor planets: JFORM = 2 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = A E = EC AORL = MA (in radians) Epoch of osculation = JDCT-2400000.5 Comets: JFORM = 3 EPOCH = Tp-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = QR E = EC Epoch of osculation = JDCT-2400000.5 The MPC elements correspond to SLALIB arguments as follows. Minor planets: JFORM = 2 EPOCH = Epoch-2400000.5 ORBINC = Incl. (in radians) ANODE = Node (in radians) PERIH = Perih. (in radians) AORQ = a E = e AORL = M (in radians) Epoch of osculation = Epoch-2400000.5 Comets: JFORM = 3 EPOCH = T-2400000.5 ORBINC = Incl. (in radians) ANODE = Node. (in radians) PERIH = Perih. (in radians) AORQ = q E = e Epoch of osculation = Epoch-2400000.5 } } sun267.htx/section53.tex000644 000161 000120 00000010145 12015001741 015330 0ustar00timjadmin000000 000000 \sstroutine{ palPlantu }{ Topocentric RA,Dec of a Solar-System object from universal elements }{ \sstdescription{ Topocentric apparent RA,Dec of a Solar-System object whose heliocentric universal elements are known. } \sstinvocation{ void palPlantu ( double date, double elong, double phi, const double u[13], double $*$ra, double $*$dec, double $*$r, int $*$jstat ) \{ } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT MJD of observation (JD-2400000.5) } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ u = const double [13] (Given) }{ Universal orbital elements \sstitemlist{ \sstitem (0) combined mass (M$+$m) \sstitem (1) total energy of the orbit (alpha) \sstitem (2) reference (osculating) epoch (t0) \sstitem (3-5) position at reference epoch (r0) \sstitem (6-8) velocity at reference epoch (v0) \sstitem (9) heliocentric distance at reference epoch \sstitem (10) r0.v0 \sstitem (11) date (t) \sstitem (12) universal eccentric anomaly (psi) of date, approx } } \sstsubsection{ ra = double $*$ (Returned) }{ Topocentric apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Topocentric apparent Dec (radians) } \sstsubsection{ r = double $*$ (Returned) }{ Distance from observer (AU) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = radius vector zero \sstitem -2 = failed to converge } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv. \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the J2000 equator and equinox. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } sun267.htx/section54.tex000644 000161 000120 00000003553 12015001741 015336 0ustar00timjadmin000000 000000 \sstroutine{ palPm }{ Apply corrections for proper motion a star RA,Dec }{ \sstdescription{ Apply corrections for proper motion to a star RA,Dec using the SOFA routine iauStarpm. } \sstinvocation{ void palPm ( double r0, double d0, double pr, double pd, double px, double rv, double ep0, double ep1, double $*$r1, double $*$d1 ); } \sstarguments{ \sstsubsection{ r0 = double (Given) }{ RA at epoch ep0 (radians) } \sstsubsection{ d0 = double (Given) }{ Dec at epoch ep0 (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion in radians per year. } \sstsubsection{ pd = double (Given) }{ Dec proper motion in radians per year. } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/sec $+$ve if receding) } \sstsubsection{ ep0 = double (Given) }{ Start epoch in years, assumed to be Julian. } \sstsubsection{ ep1 = double (Given) }{ End epoch in years, assumed to be Julian. } \sstsubsection{ r1 = double $*$ (Returned) }{ RA at epoch ep1 (radians) } \sstsubsection{ d1 = double $*$ (Returned) }{ Dec at epoch ep1 (radians) } } \sstnotes{ \sstitemlist{ \sstitem Uses iauStarpm but ignores the status returns from that routine. In particular note that parallax should not be zero when the proper motions are non-zero. SLA/F allows parallax to be zero. \sstitem Assumes all epochs are Julian epochs. } } } sun267.htx/section55.tex000644 000161 000120 00000001722 12015001741 015333 0ustar00timjadmin000000 000000 \sstroutine{ palPrebn }{ Generate the matrix of precession between two objects (old) }{ \sstdescription{ Generate the matrix of precession between two epochs, using the old, pre-IAU1976, Bessel-Newcomb model, using Kinoshita{\tt '}s formulation } \sstinvocation{ void palPrebn ( double bep0, double bep1, double rmatp[3][3] ); } \sstarguments{ \sstsubsection{ bep0 = double (Given) }{ Beginning Besselian epoch. } \sstsubsection{ bep1 = double (Given) }{ Ending Besselian epoch } \sstsubsection{ rmatp = double[3][3] (Returned) }{ precession matrix in the sense V(BEP1) = RMATP $*$ V(BEP0) } } \sstdiytopic{ See Also }{ Kinoshita, H. (1975) {\tt '}Formulas for precession{\tt '}, SAO Special Report No. 364, Smithsonian Institution Astrophysical Observatory, Cambridge, Massachusetts. } } sun267.htx/section56.tex000644 000161 000120 00000001655 12015001741 015341 0ustar00timjadmin000000 000000 \sstroutine{ palPrec }{ Form the matrix of precession between two epochs (IAU 2006) }{ \sstdescription{ The IAU 2006 precession matrix from ep0 to ep1 is found and returned. The matrix is in the sense V(EP1) = RMATP $*$ V(EP0). The epochs are TDB (loosely TT) Julian epochs. Though the matrix method itself is rigorous, the precession angles are expressed through canonical polynomials which are valid only for a limited time span of a few hundred years around the current epoch. } \sstinvocation{ palPrec( double ep0, double ep1, double rmatp[3][3] ) } \sstarguments{ \sstsubsection{ ep0 = double (Given) }{ Beginning epoch } \sstsubsection{ ep1 = double (Given) }{ Ending epoch } \sstsubsection{ rmatp = double[3][3] (Returned) }{ Precession matrix } } } sun267.htx/section57.tex000644 000161 000120 00000003571 12015001741 015341 0ustar00timjadmin000000 000000 \sstroutine{ palPreces }{ Precession - either FK4 or FK5 as required }{ \sstdescription{ Precess coordinates using the appropriate system and epochs. } \sstinvocation{ void palPreces ( const char sys[3], double ep0, double ep1, double $*$ra, double $*$dc ); } \sstarguments{ \sstsubsection{ sys = const char [3] (Given) }{ Precession to be applied: FK4 or FK5. Case insensitive. } \sstsubsection{ ep0 = double (Given) }{ Starting epoch. } \sstsubsection{ ep1 = double (Given) }{ Ending epoch } \sstsubsection{ ra = double $*$ (Given \& Returned) }{ On input the RA mean equator \& equinox at epoch ep0. On exit the RA mean equator \& equinox of epoch ep1. } \sstsubsection{ dec = double $*$ (Given \& Returned) }{ On input the dec mean equator \& equinox at epoch ep0. On exit the dec mean equator \& equinox of epoch ep1. } } \sstnotes{ \sstitemlist{ \sstitem Uses palPrec for FK5 data and palPrebn for FK4 data. \sstitem The epochs are Besselian if SYSTEM={\tt '}FK4{\tt '} and Julian if {\tt '}FK5{\tt '}. For example, to precess coordinates in the old system from equinox 1900.0 to 1950.0 the call would be: palPreces( {\tt "}FK4{\tt "}, 1900.0, 1950.0, \&ra, \&dc ); \sstitem This routine will NOT correctly convert between the old and the new systems - for example conversion from B1950 to J2000. For these purposes see palFk425, palFk524, palFk45z and palFk54z. \sstitem If an invalid SYSTEM is supplied, values of -99D0,-99D0 will be returned for both RA and DC. } } } sun267.htx/section58.tex000644 000161 000120 00000001453 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palPrenut }{ Form the matrix of bias-precession-nutation (IAU 2006/2000A) }{ \sstdescription{ Form the matrix of bias-precession-nutation (IAU 2006/2000A). The epoch and date are TT (but TDB is usually close enough). The matrix is in the sense v(true) = rmatpn $*$ v(mean). } \sstinvocation{ void palPrenut( double epoch, double date, double rmatpn[3][3] ) } \sstarguments{ \sstsubsection{ epoch = double (Returned) }{ Julian epoch for mean coordinates. } \sstsubsection{ date = double (Returned) }{ Modified Julian Date (JD-2400000.5) for true coordinates. } \sstsubsection{ rmatpn = double[3][3] (Returned) }{ combined NPB matrix } } } sun267.htx/section59.tex000644 000161 000120 00000016275 12015001741 015350 0ustar00timjadmin000000 000000 \sstroutine{ palPv2el }{ Position velocity to heliocentirc osculating elements }{ \sstdescription{ Heliocentric osculating elements obtained from instantaneous position and velocity. } \sstinvocation{ void palPv2el ( const double pv[6], double date, double pmass, int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat ); } \sstarguments{ \sstsubsection{ pv = const double [6] (Given) }{ Heliocentric x,y,z,xdot,ydot,zdot of date, J2000 equatorial triad (AU,AU/s; Note 1) } \sstsubsection{ date = double (Given) }{ Date (TT Modified Julian Date = JD-2400000.5) } \sstsubsection{ pmass = double (Given) }{ Mass of the planet (Sun=1; Note 2) } \sstsubsection{ jformr = int (Given) }{ Requested element set (1-3; Note 3) } \sstsubsection{ jform = int $*$ (Returned) }{ Element set actually returned (1-3; Note 4) } \sstsubsection{ epoch = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double $*$ (Returned) }{ eccentricity } \sstsubsection{ aorl = double $*$ (Returned) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double $*$ (Returned) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal PMASS \sstitem -2 = illegal JFORMR \sstitem -3 = position/velocity out of range } } } \sstnotes{ \sstitemlist{ \sstitem The PV 6-vector is with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox. \sstitem The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal. \sstitem Three different element-format options are supported: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument: } JFORMR JFORM meaning 1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical 2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical 3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format \sstitemlist{ \sstitem The arguments returned for each value of JFORM (cf Note 5: JFORM may not be the same as JFORMR) are as follows: } JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - - where: t0 is the epoch of the elements (MJD, TT) T {\tt "} epoch of perihelion (MJD, TT) i {\tt "} inclination (radians) Omega {\tt "} longitude of the ascending node (radians) curly pi {\tt "} longitude of perihelion (radians) omega {\tt "} argument of perihelion (radians) a {\tt "} mean distance (AU) q {\tt "} perihelion distance (AU) e {\tt "} eccentricity L {\tt "} longitude (radians, 0-2pi) M {\tt "} mean anomaly (radians, 0-2pi) n {\tt "} daily motion (radians) \sstitemlist{ \sstitem means no value is set \sstitem At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit. \sstitem The osculating epoch for the returned elements is the argument DATE. \sstitem Reference: Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers, 1960 } } } sun267.htx/section6.tex000644 000161 000120 00000002227 12015001741 015250 0ustar00timjadmin000000 000000 \sstroutine{ palAmp }{ Convert star RA,Dec from geocentric apparaent to mean place }{ \sstdescription{ Convert star RA,Dec from geocentric apparent to mean place. The mean coordinate system is close to ICRS. See palAmpqk for details. } \sstinvocation{ void palAmp ( double ra, double da, double date, double eq, double $*$rm, double $*$dm ); } \sstarguments{ \sstsubsection{ ra = double (Given) }{ Apparent RA (radians) } \sstsubsection{ dec = double (Given) }{ Apparent Dec (radians) } \sstsubsection{ date = double (Given) }{ TDB for apparent place (JD-2400000.5) } \sstsubsection{ eq = double (Given) }{ Equinox: Julian epoch of mean place. } \sstsubsection{ rm = double $*$ (Returned) }{ Mean RA (radians) } \sstsubsection{ dm = double $*$ (Returned) }{ Mean Dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem See palMappa and palAmpqk for details. } } } sun267.htx/section60.tex000644 000161 000120 00000006534 12015001741 015335 0ustar00timjadmin000000 000000 \sstroutine{ palPv2ue }{ Universal elements to position and velocity }{ \sstdescription{ Construct a universal element set based on an instantaneous position and velocity. } \sstinvocation{ void palPv2ue( const double pv[6], double date, double pmass, double u[13], int $*$ jstat ); } \sstarguments{ \sstsubsection{ pv = double [6] (Given) }{ Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1) } \sstsubsection{ date = double (Given) }{ Date (TT modified Julian Date = JD-2400000.5) } \sstsubsection{ pmass = double (Given) }{ Mass of the planet (Sun=1; note 2) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 3) \sstitemlist{ \sstitem (0) combined mass (M$+$m) \sstitem (1) total energy of the orbit (alpha) \sstitem (2) reference (osculating) epoch (t0) \sstitem (3-5) position at reference epoch (r0) \sstitem (6-8) velocity at reference epoch (v0) \sstitem (9) heliocentric distance at reference epoch \sstitem (10) r0.v0 \sstitem (11) date (t) \sstitem (12) universal eccentric anomaly (psi) of date, approx } } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal PMASS \sstitem -2 = too close to Sun \sstitem -3 = too slow } } } \sstnotes{ \sstitemlist{ \sstitem The PV 6-vector can be with respect to any chosen inertial frame, and the resulting universal-element set will be with respect to the same frame. A common choice will be mean equator and ecliptic of epoch J2000. \sstitem The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal. \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem Reference: Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } sun267.htx/section61.tex000644 000161 000120 00000001657 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palPvobs }{ Position and velocity of an observing station }{ \sstdescription{ Returns the position and velocity of an observing station. } \sstinvocation{ palPvobs( double p, double h, double stl, double pv[6] ) } \sstarguments{ \sstsubsection{ p = double (Given) }{ Latitude (geodetic, radians). } \sstsubsection{ h = double (Given) }{ Height above reference spheroid (geodetic, metres). } \sstsubsection{ stl = double (Given) }{ Local apparent sidereal time (radians). } \sstsubsection{ pv = double[ 6 ] (Returned) }{ position/velocity 6-vector (AU, AU/s, true equator and equinox of date). } } \sstnotes{ \sstitemlist{ \sstitem The WGS84 reference ellipsoid is used. } } } sun267.htx/section62.tex000644 000161 000120 00000004117 12015001741 015332 0ustar00timjadmin000000 000000 \sstroutine{ palRdplan }{ Approximate topocentric apparent RA,Dec of a planet }{ \sstdescription{ Approximate topocentric apparent RA,Dec of a planet, and its angular diameter. } \sstinvocation{ void palRdplan( double date, int np, double elong, double phi, double $*$ ra, double $*$ dec, double $*$ diam ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ MJD of observation (JD-2400000.5) in TDB. For all practical purposes TT can be used instead of TDB, and for many applications UT will do (except for the Moon). } \sstsubsection{ np = int (Given) }{ Planet: 1 = Mercury 2 = Venus 3 = Moon 4 = Mars 5 = Jupiter 6 = Saturn 7 = Uranus 8 = Neptune else = Sun } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ ra = double $*$ (Returned) }{ RA (topocentric apparent, radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Dec (topocentric apparent, radians) } \sstsubsection{ diam = double $*$ (Returned) }{ Angular diameter (equatorial, radians) } } \sstnotes{ \sstitemlist{ \sstitem Unlike with slaRdplan, Pluto is not supported. \sstitem The longitude and latitude allow correction for geocentric parallax. This is a major effect for the Moon, but in the context of the limited accuracy of the present routine its effect on planetary positions is small (negligible for the outer planets). Geocentric positions can be generated by appropriate use of the routines palDmoon and iauPlan94. } } } sun267.htx/section63.tex000644 000161 000120 00000002365 12015001741 015336 0ustar00timjadmin000000 000000 \sstroutine{ palRverot }{ Velocity component in a given direction due to Earth rotation }{ \sstdescription{ Calculate the velocity component in a given direction due to Earth rotation. The simple algorithm used assumes a spherical Earth, of a radius chosen to give results accurate to about 0.0005 km/s for observing stations at typical latitudes and heights. For applications requiring greater precision, use the routine palPvobs. } \sstinvocation{ double palRverot ( double phi, double ra, double da, double st ); } \sstarguments{ \sstsubsection{ phi = double (Given) }{ latitude of observing station (geodetic) (radians) } \sstsubsection{ ra = double (Given) }{ apparent RA (radians) } \sstsubsection{ da = double (Given) }{ apparent Dec (radians) } \sstsubsection{ st = double (Given) }{ } } \sstreturnedvalue{ \sstsubsection{ palRverot = double }{ Component of Earth rotation in direction RA,DA (km/s). The result is $+$ve when the observatory is receding from the given point on the sky. } } } sun267.htx/section64.tex000644 000161 000120 00000002644 12015001741 015337 0ustar00timjadmin000000 000000 \sstroutine{ palRvgalc }{ Velocity component in a given direction due to the rotation of the Galaxy }{ \sstdescription{ This function returns the Component of dynamical LSR motion in the direction of R2000,D2000. The result is $+$ve when the dynamical LSR is receding from the given point on the sky. } \sstinvocation{ double palRvgalc( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of dynamical LSR motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. Sometimes called the {\tt "}dynamical{\tt "} LSR, it is not to be confused with a {\tt "}kinematical{\tt "} LSR, which is the mean standard of rest of star catalogues or stellar populations. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem The orbital speed of 220 km/s used here comes from Kerr \& Lynden-Bell (1986), MNRAS, 221, p1023. } } } sun267.htx/section65.tex000644 000161 000120 00000002012 12015001741 015325 0ustar00timjadmin000000 000000 \sstroutine{ palRvlg }{ Velocity component in a given direction due to Galactic rotation and motion of the local group }{ \sstdescription{ This function returns the velocity component in a given direction due to the combination of the rotation of the Galaxy and the motion of the Galaxy relative to the mean motion of the local group. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlg( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of SOLAR motion in direction R2000,D2000 (km/s). }{ } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem IAU Trans 1976, 168, p201. } } } sun267.htx/section66.tex000644 000161 000120 00000003721 12015001741 015336 0ustar00timjadmin000000 000000 \sstroutine{ palRvlsrd }{ Velocity component in a given direction due to the Sun{\tt '}s motion with respect to the dynamical Local Standard of Rest }{ \sstdescription{ This function returns the velocity component in a given direction due to the Sun{\tt '}s motion with respect to the dynamical Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlsrd( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of {\tt "}peculiar{\tt "} solar motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is the {\tt "}dynamical{\tt "} LSR, a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun{\tt '}s motion with respect to the dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion. \sstitem There is another type of LSR, called a {\tt "}kinematical{\tt "} LSR. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations, and several slightly different kinematical LSRs are in use. The Sun{\tt '}s motion with respect to an agreed kinematical LSR is known as the {\tt "}standard{\tt "} solar motion. To obtain a radial velocity correction with respect to an adopted kinematical LSR use the routine sla\_RVLSRK. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73. } } } sun267.htx/section67.tex000644 000161 000120 00000003661 12015001741 015342 0ustar00timjadmin000000 000000 \sstroutine{ palRvlsrk }{ Velocity component in a given direction due to the Sun{\tt '}s motion with respect to an adopted kinematic Local Standard of Rest }{ \sstdescription{ This function returns the velocity component in a given direction due to the Sun{\tt '}s motion with respect to an adopted kinematic Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlsrk( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of {\tt "}standard{\tt "} solar motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is one of several {\tt "}kinematical{\tt "} LSRs in common use. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations. The Sun{\tt '}s motion with respect to a kinematical LSR is known as the {\tt "}standard{\tt "} solar motion. \sstitem There is another sort of LSR, the {\tt "}dynamical{\tt "} LSR, which is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun{\tt '}s motion with respect to the dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion. To obtain a radial velocity correction with respect to the dynamical LSR use the routine sla\_RVLSRD. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73. } } } sun267.htx/section68.tex000644 000161 000120 00000002573 12015001741 015344 0ustar00timjadmin000000 000000 \sstroutine{ palSubet }{ Remove the E-terms from a pre IAU 1976 catalogue RA,Dec }{ \sstdescription{ Remove the E-terms (elliptic component of annual aberration) from a pre IAU 1976 catalogue RA,Dec to give a mean place. } \sstinvocation{ void palSubet ( double rc, double dc, double eq, double $*$rm, double $*$dm ); } \sstarguments{ \sstsubsection{ rc = double (Given) }{ RA with E-terms included (radians) } \sstsubsection{ dc = double (Given) }{ Dec with E-terms included (radians) } \sstsubsection{ eq = double (Given) }{ Besselian epoch of mean equator and equinox } \sstsubsection{ rm = double $*$ (Returned) }{ RA without E-terms (radians) } \sstsubsection{ dm = double $*$ (Returned) }{ Dec without E-terms (radians) } } \sstnotes{ Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. This routine converts such a position to a formal mean place (allowing, for example, comparison with a pulsar timing position). } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48. } } sun267.htx/section69.tex000644 000161 000120 00000002460 12015001741 015340 0ustar00timjadmin000000 000000 \sstroutine{ palSupgal }{ Convert from supergalactic to galactic coordinates }{ \sstdescription{ Transformation from de Vaucouleurs supergalactic coordinates to IAU 1958 galactic coordinates } \sstinvocation{ void palSupgal ( double dsl, double dsb, double $*$dl, double $*$db ); } \sstarguments{ \sstsubsection{ dsl = double (Given) }{ Supergalactic longitude. } \sstsubsection{ dsb = double (Given) }{ Supergalactic latitude. } \sstsubsection{ dl = double $*$ (Returned) }{ Galactic longitude. } \sstsubsection{ db = double $*$ (Returned) }{ Galactic latitude. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8. \sstitem Systems \& Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490. } (These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.) } } sun267.htx/section7.tex000644 000161 000120 00000003035 12015001741 015247 0ustar00timjadmin000000 000000 \sstroutine{ palAmpqk }{ Convert star RA,Dec from geocentric apparent to mean place }{ \sstdescription{ Convert star RA,Dec from geocentric apparent to mean place. The {\tt "}mean{\tt "} coordinate system is in fact close to ICRS. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one epoch and equinox. The star-independent parameters can be obtained by calling the palMappa function. } \sstinvocation{ void palAmpqk ( double ra, double da, double amprms[21], double $*$rm, double $*$dm ) } \sstarguments{ \sstsubsection{ ra = double (Given) }{ Apparent RA (radians). } \sstsubsection{ da = double (Given) }{ Apparent Dec (radians). } \sstsubsection{ amprms = double[21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa): (0) time interval for proper motion (Julian years) (1-3) barycentric position of the Earth (AU) (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$v) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix } \sstsubsection{ rm = double (Returned) }{ Mean RA (radians). } \sstsubsection{ dm = double (Returned) }{ Mean Dec (radians). } } } sun267.htx/section70.tex000644 000161 000120 00000020422 12015001741 015326 0ustar00timjadmin000000 000000 \sstroutine{ palUe2el }{ Universal elements to heliocentric osculating elements }{ \sstdescription{ Transform universal elements into conventional heliocentric osculating elements. } \sstinvocation{ void palUe2el ( const double u[13], int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat ); } \sstarguments{ \sstsubsection{ u = const double [13] (Given) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jformr = int (Given) }{ Requested element set (1-3; Note 3) } \sstsubsection{ jform = int $*$ (Returned) }{ Element set actually returned (1-3; Note 4) } \sstsubsection{ epoch = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double $*$ (Returned) }{ eccentricity } \sstsubsection{ aorl = double $*$ (Returned) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double $*$ (Returned) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = illegal combined mass \sstitem 2 = illegal JFORMR \sstitem 3 = position/velocity out of range } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox. \sstitem Three different element-format options are supported: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument: } JFORMR JFORM meaning 1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical 2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical 3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format \sstitemlist{ \sstitem The arguments returned for each value of JFORM (cf Note 6: JFORM may not be the same as JFORMR) are as follows: } JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - - where: t0 is the epoch of the elements (MJD, TT) T {\tt "} epoch of perihelion (MJD, TT) i {\tt "} inclination (radians) Omega {\tt "} longitude of the ascending node (radians) curly pi {\tt "} longitude of perihelion (radians) omega {\tt "} argument of perihelion (radians) a {\tt "} mean distance (AU) q {\tt "} perihelion distance (AU) e {\tt "} eccentricity L {\tt "} longitude (radians, 0-2pi) M {\tt "} mean anomaly (radians, 0-2pi) n {\tt "} daily motion (radians) \sstitemlist{ \sstitem means no value is set \sstitem At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit. } See Also: \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } sun267.htx/section71.tex000644 000161 000120 00000010007 12015001741 015325 0ustar00timjadmin000000 000000 \sstroutine{ palUe2pv }{ Heliocentric position and velocity of a planet, asteroid or comet, from universal elements }{ \sstdescription{ Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements in the {\tt "}universal variables{\tt "} form. } \sstinvocation{ void palUe2pv( double date, double u[13], double pv[6], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT Modified Julian date (JD-2400000.5). } \sstsubsection{ u = double [13] (Given \& Returned) }{ Universal orbital elements (updated, see note 1) given (0) combined mass (M$+$m) {\tt "} (1) total energy of the orbit (alpha) {\tt "} (2) reference (osculating) epoch (t0) {\tt "} (3-5) position at reference epoch (r0) {\tt "} (6-8) velocity at reference epoch (v0) {\tt "} (9) heliocentric distance at reference epoch {\tt "} (10) r0.v0 returned (11) date (t) {\tt "} (12) universal eccentric anomaly (psi) of date } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = radius vector zero \sstitem 2 = failed to converge } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The companion routine is palEl2ue. This takes the conventional orbital elements and transforms them into the set of numbers needed by the present routine. A single prediction requires one one call to palEl2ue followed by one call to the present routine; for convenience, the two calls are packaged as the routine sla\_PLANEL. Multiple predictions may be made by again calling palEl2ue once, but then calling the present routine multiple times, which is faster than multiple calls to palPlanel. \sstitem It is not obligatory to use palEl2ue to obtain the parameters. However, it should be noted that because palEl2ue performs its own validation, no checks on the contents of the array U are made by the present routine. in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). units (solar masses, AU and canonical days). The position and velocity are not sensitive to the choice of reference frame. The palEl2ue routine in fact produces coordinates with respect to the J2000 equator and equinox. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. \sstitem Reference: Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } % ? End of main text \end{document} sun267.htx/section8.tex000644 000161 000120 00000003034 12015001741 015247 0ustar00timjadmin000000 000000 \sstroutine{ palCaldj }{ Gregorian Calendar to Modified Julian Date }{ \sstdescription{ Modified Julian Date to Gregorian Calendar with special behaviour for 2-digit years relating to 1950 to 2049. } \sstinvocation{ void palCaldj ( int iy, int im, int id, double $*$djm, int $*$j ); } \sstarguments{ \sstsubsection{ iy = int (Given) }{ Year in the Gregorian calendar } \sstsubsection{ im = int (Given) }{ Month in the Gergorian calendar } \sstsubsection{ id = int (Given) }{ Day in the Gregorian calendar } \sstsubsection{ djm = double $*$ (Returned) }{ Modified Julian Date (JD-2400000.5) for 0 hrs } \sstsubsection{ j = status (Returned) }{ 0 = OK. See iauCal2jd for other values. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauCal2jd \sstitem Unlike iauCal2jd this routine treats the years 0-100 as referring to the end of the 20th Century and beginning of the 21st Century. If this behaviour is not acceptable use the SOFA routine directly or palCldj. Acceptable years are 00-49, interpreted as 2000-2049, 50-99, {\tt "} {\tt "} 1950-1999, all others, interpreted literally. \sstitem Unlike SLA this routine will work with negative years. } } } sun267.htx/section9.tex000644 000161 000120 00000007544 12015001741 015262 0ustar00timjadmin000000 000000 \sstroutine{ palDafin }{ Sexagesimal character string to angle }{ \sstdescription{ Extracts an angle from a sexagesimal string with degrees, arcmin, arcsec fields using space or comma delimiters. } \sstinvocation{ void palDafin ( const char $*$string, int $*$ipos, double $*$a, int $*$j ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing deg, arcmin, arcsec fields } \sstsubsection{ ipos = int $*$ (Given \& Returned) }{ Position to start decoding {\tt "}string{\tt "}. First character is position 1 for compatibility with SLA. After calling this routine {\tt "}iptr{\tt "} will be positioned after the sexagesimal string. } \sstsubsection{ a = double $*$ (Returned) }{ Angle in radians. } \sstsubsection{ j = int $*$ (Returned) }{ status: 0 = OK $+$1 = default, A unchanged \sstitemlist{ \sstitem 1 = bad degrees ) \sstitem 2 = bad arcminutes ) (note 3) \sstitem 3 = bad arcseconds ) } } } \sstnotes{ \sstitemlist{ \sstitem The first three {\tt "}fields{\tt "} in STRING are degrees, arcminutes, arcseconds, separated by spaces or commas. The degrees field may be signed, but not the others. The decoding is carried out by the palDfltin routine and is free-format. \sstitem Successive fields may be absent, defaulting to zero. For zero status, the only combinations allowed are degrees alone, degrees and arcminutes, and all three fields present. If all three fields are omitted, a status of $+$1 is returned and A is unchanged. In all other cases A is changed. \sstitem Range checking: } The degrees field is not range checked. However, it is expected to be integral unless the other two fields are absent. The arcminutes field is expected to be 0-59, and integral if the arcseconds field is present. If the arcseconds field is absent, the arcminutes is expected to be 0-59.9999... The arcseconds field is expected to be 0-59.9999... \sstitemlist{ \sstitem Decoding continues even when a check has failed. Under these circumstances the field takes the supplied value, defaulting to zero, and the result A is computed and returned. \sstitem Further fields after the three expected ones are not treated as an error. The pointer IPOS is left in the correct state for further decoding with the present routine or with palDfltin etc. See the example, above. \sstitem If STRING contains hours, minutes, seconds instead of degrees etc, or if the required units are turns (or days) instead of radians, the result A should be multiplied as follows: } for to obtain multiply STRING A in A by d {\tt '} {\tt "} radians 1 = 1.0 d {\tt '} {\tt "} turns 1/2pi = 0.1591549430918953358 h m s radians 15 = 15.0 h m s days 15/2pi = 2.3873241463784300365 } \sstdiytopic{ Example }{ argument before after STRING {\tt '}-57 17 44.806 12 34 56.7{\tt '} unchanged IPTR 1 16 (points to 12...) A ? -1.00000D0 J ? 0 } } sun267.htx/source.gif000644 000161 000120 00000000301 12015001752 014754 0ustar00timjadmin000000 000000 GIF89a €½½½¿¿¿ÀÀÀÁÁÁÂÂÂøüøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,vÉI«½8çÀ»ÿ`0‰š&bQ€jëªÂ)¥+ŽoŒ"*9#\K÷ëE¡œ È«ÙlÁá’†ô<£"Óx­Þ²Ó¦—s‰j©•1îÊì°öÆ‹BŸí¾Í‡Ìms‚`rƒsg1Š‹ŒSŽŽ>”u%—˜™;sun267.htx/star2html.perl000644 000161 000120 00000002323 12015001741 015575 0ustar00timjadmin000000 000000 package main; # The base name for all document cross reference roots. # For local documents this would be: # $DOCBASE = '/star/docs/'; # And for remote documents at RAL: $DOCBASE = 'http://www.starlink.ac.uk/cgi-bin/htxserver/'; sub do_cmd_xref{ my $arg = shift; my ($text, $docname, $label); $arg =~ s/$next_pair_pr_rx/$text = $2; ''/eo; $arg =~ s/$next_pair_pr_rx/$docname = $2; ''/eo; $arg =~ s/$next_pair_pr_rx/$label = $2; ''/eo; # Default for local documents would be: #join('','',$text,'',$arg); # And for remote ones (notice?). join('','',$text,'',$arg); } sub do_cmd_xlabel{ local($_) = @_; my $label; s/$next_pair_pr_rx/$label = $2; ''/eo; $label =~ s/\n//g; $label =~ s/ //g; $label =~ s/\t//g; $label = 'xref_' . $label; &anchor_label( $label, $CURRENT_FILE, $_); } sub do_env_quote { join('',"
","@_","
"); } sub do_env_quotation { join('',"
","@_","
"); } sub do_env_verse { join('',"
","@_","
"); } 1;# This must be the last line sun267.htx/star2html.sty000644 000161 000120 00000000000 12015001741 015440 0ustar00timjadmin000000 000000 sun267.htx/sun267.css000644 000161 000120 00000001573 12015001752 014557 0ustar00timjadmin000000 000000 /* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ sun267.htx/sun267.html000644 000161 000120 00000026725 12015001752 014741 0ustar00timjadmin000000 000000 PAL -- Positional Astronomy Library

next up previous 250
Next: Abstract


PAL -- Positional Astronomy Library
0.1.0
Programmer's Manual


Starlink User Note 267.1
Tim Jenness
2012 March 23

Joint Astronomy Centre
Science & Technology Facilities Council

Starlink Project

247 Retrieve hardcopy


Contents





next up previous 250
Next: Abstract


PAL --- Positional Astronomy Library
Starlink User Note 267
Tim Jenness
2012 March 23
E-mail:ussc@star.rl.ac.uk

Copyright © 2012 Science and Technology Facilities Council
sun267.htx/up.png000644 000161 000120 00000000323 12015001752 014123 0ustar00timjadmin000000 000000 ‰PNG  IHDRîë5À PLTE¿¿¿oooççç[Íã¹tRNS@æØfuIDATxœ]1ƒ0 EŸdÆ&Cwr„,Ü'köŽ•7n)âIT xO²¾m”'<æ‡Qßüâ²1A ¹ÙàB›­ÓPÕÔ+†× ñ:æ²×ŠpÛ­Yh/ãiOî.c7ùÏN¤´¾põ±_×Ä/11Ab$·}IEND®B`‚sun267.htx/up_g.png000644 000161 000120 00000000347 12015001752 014437 0ustar00timjadmin000000 000000 ‰PNG  IHDR¶î‚tRNS¿-Mc% IDATxœ}‘Á Å C(ke¿ŽÃÿà%Ø€5þhCKk‰ ;±Dj€Q)Aj`UžqR«%BdÀqRÀ*™["ý愎2$Z ƒŸÌÑɼ£\Sæöc³%2žLhyóÒ%@lhzÉÁõ3â0bê€rÛ½‰,b[ž.i(ì1ÇAKú×].bMSü›³ø>ÆGB¿®Æñæú„À-¢RIEND®B`‚sun267.htx/WARNINGS000644 000161 000120 00000000271 12015001745 014150 0ustar00timjadmin000000 000000 redefining command \thepage Substitution of arg to sstatt delayed. The sun267.aux file was not found, so sections will not be numbered and cross-references will be shown as icons. pal-0.3.0/sun267.ps000644 000161 000120 00002011775 12015001740 013757 0ustar00timjadmin000000 000000 %!PS-Adobe-2.0 %%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software %%Title: sun267.dvi %%CreationDate: Tue Aug 21 14:55:44 2012 %%Pages: 65 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMCSC10 CMBX10 CMR12 CMR10 CMBX12 CMSL10 CMSY10 CMTT10 %%+ CMTI10 CMTT12 CMMI10 %%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o sun267.ps sun267.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2012.08.21:1455 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat {BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B /M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ 0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /UniqueID 5087385 def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 60 /less put dup 62 /greater put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D 2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D9173633D9B50449E0 F9026E7A4CC1A3694D6C030E5AE53C0DAAF90B0046E22E14FF2787AC8194C42A 4B8846856AFE4CA20940A4E53896A851344E2E5538B9550721332077A972C793 89CE532A20FA4A52F80B5D7EE0FF0915523A98E98B71B8ABB4D7F35DA6C05364 A8B3D5DA9B1716C5C4D4402847C5A9BDA2F668709D51041BD566B7E1E675DCEC 1AF4BD172F05A73329FBB30BC7D1D7EC85FEAF5CF1ED6BE70F7526E115381BF2 47D955C5032404DA2FD82824C73F530E15E157EF023A2D9B50F4516A611B3F99 3803C6EFE49E08AE983B4D15CE6699B5111C0A45913DE61EAC437709143AF4ED 0D5136428AEEEF3776F9BA48212963150132D63DB4098AC124EE86C3AC7138AF B90A504A1E15524BA2662D7E0FFD6377FF7CAA3B6113DAB8AF64837C4A99D99E A499EC597828133A4C6421E0707E7E978C9B2A459620D0CB189775816D1421C1 87110675A765C25DC2FB607ECCD8C53F705B406932F41A9DFE08 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.0: CMTT12 003.002 %%Title: CMTT12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup /UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT12 def /FontBBox {-1 -234 524 695 }readonly def /UniqueID 5000833 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 34 /quotedbl put dup 39 /quoteright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B 5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D 4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FE62 C7DBA30E569DD3565AC9C80B112E221E3878624A015F6224597D02C9A07B368C F9FDC817988D12CB00ABFAB288C20A59AE40E7A75C235938C47F77261BED14BB 6574F633BC4DE9E8AEABC46E0965AD69748C315B6DB5F264D5E7635BE37E23FB 873E2488086BA27275142C774A4A241F92E8ACFF0F25E81E2565642D88F77DE7 03BB3DE1B495B245E870949972E5FA8CACB8DFDD97CDE3C198BA8C2A694EC48C B03CF1EA4F7560BF458A3782829B1B560EA15F87D37260D6D2816C1ED130F192 EBD58506EAF95CC7A34B79172C4327DBA4CB2B3602E0812AA852540CC2F37ECE 35A5E8B7CAECDC2E09A5BAC0D7893C3C47138E266CA7757E77FF79E0C1C81F00 E971095C0AACF26A599CFF82522271F6AC6C93113BC156568BF4E9B01B53C368 B7388C8E084B679845E3AD697CF4C675C8858BA04397F167AA3BF32BB212323E 861EA52EC0C2C44716DBE18CD451166CBD1497100ECD1344975D0A8865820583 528DD20566E13C15079E0868688B0216C4A2C0377D029ED66C985DDBDA108009 F32A81509479EFCCCEEA59762A9B17B5F467ADAF91ABD1580D497B3EE48A18CA D074512116CB6344433535DEC11AAAF1CA34CB4317F532DC41B0A3D7BE1C367B DFAF35B1C4F60CCAB61F7B4144BE9F63F17B9AFD69FBED547025021CCA383E67 9486EDDF00AC8A5852C85A89387D4CB9BD3B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.0: CMR12 003.002 %%Title: CMR12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup /UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR12 def /FontBBox {-34 -251 988 750 }readonly def /UniqueID 5000794 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR12.) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 38 /ampersand put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B 8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A 966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E 56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F 847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E 3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F 59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A 323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB 5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D 775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E 37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F 89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C 5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B 8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B 08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC 3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E 748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA 1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D 6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D 903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B 6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E 51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E 512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A 2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A 3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A 845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D 6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F 95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F 53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A BAD2E141C0A7B647030FFD1FEAB8CE703C40802E0D32EF0DF87BBD5131CD110D BF5A11D66FC2087779FCA72E245C6BFA23F60759FECFDF932C3026D4CC21D843 9789FD52FD7A85BEDF58DAB6334F4880C2C99F49C0F64025C76E0550BC4B8AC8 5C7E817DBABA0E78F36954E9922286067E92E69D23E9FD278CD5F26788A7E5D8 476DE8E21397716DBA03B23D85CC8B701EAA654C5EE74F40D6C3AA3F46E30A2E E663C2CC64E2DA3631AB809AE1B70CCD429EF7488E7E5C782C8311B03F19DC37 7EF382AEBDC3130A05259B885E07B50701A7A98C5B2D07896534AD7BCA233A7D 21FDCC48F92986F516F8F0DEBC65DBA894F62D4F97B71DB5E7997AA01BEB3633 8CB0ECF40BA2317EEF6E9C1990A0DB13C2E333EF5AB555D96857625F94704D50 B2458C230E667A48227B1E23C26B4279C37E2773FC98BE95AF020AAE36B57C52 44013011F77097628EF0DC35BBAF357A32CDCE079C1047F1E55E05DFE17806BB D95A9F649546B511EB8A3C450D5149FBC48A0AA070B81D15F77A50455E7796E5 7440FAD312549981BFD94544F044C5370A36F1702139E5257A306B7DF3DC0756 C05A9C44F0118552EB37A3DF9666816581DD5AC29B1EA2681BE0218448DF6D53 A92C720291737186834D6CF70ACC39C6913536094753049BFE78A1F95ABC98CF 87BF78D147CD970394FB4D5348CA84654467C9EA87EB1ADFE576E944DC56F740 91C0E544EAA2B0A9E4A6058A9099647EE2DA8E21398843669D45298EBDEEA1CC 6AF5184A0134FB591B4C481B91C912DF0D372B12F588B48C2581830C236E3D66 F542948126019591B87C345D2D900E6ADB1F5EB1078E5E6039CF73607F9E150F D505A8CFBBF3FEC88E9CB36EAAD4A1A209303F848871EFAC33E2F0582057B37D E92CE5E64578F9F5036C91358B40B3A7D1EE86C3488479052E61E7A3D62E8007 7555002CB0501B4F8983A93F06F5DA1A464839BC987DD0F1ECC9E9AB8C8BAE0B C910E601498A33BE15FB5AB66EA1BF847BAEFB3C7CC34DDE8A894C3EB2F233F5 9ADE640872F9114A1C66160A0D3E3A477962EF457733C7E09433AAABB6C688F7 147D12FACFC2939D825323F0A8F90E5D8663F286EEA11A9AEC42BFD8E735F594 CF9F9573E4AA4A26D8E68396A19098950F71594610433E65E41B0559EA31F9B5 E9A4D2F9C145E46C68E48A0BBAAA32577CAC9402EE60145DA73D7A6F99981EDE 8545E5411C23E4FEBFC838E5C6D7D43E3CD9D7D8EAA85C499E34E19E40CB1FE6 3261AFA245F3FC2190DACA17194A8B4C4CE2F2D53F232872E5C8455E1BF640F5 B9AFCB089F18A659158BCC1EDFC9965782251D775ABC4EDA593889A7B80608CC CB2945EDC0EA032B38B7C0B373217DEEC6F45F176C509B8047DDF452D9B46652 DDC35910FAF800A503FDE5FFF4F9E229FF0853423D6D15B90C42D174AE261DBE 803B2D0F4388627D96F8256B136905A8B061ED9E2997DA4C877BDA5C5358E2E7 A702E03D7D5908670000E5823EC77F203D3A54ACC07A9B45AA88EF14D0E6C62B F67CC055FD9B55C8DCFA0E2E17B04D3D72F4CCC8F429EC71E66F04A973A5B956 24DD1B1AFF643BAE7EF541CCE89FB652ED531DDBCF5756836262BF7BA5C06B4B BEFF6F14A9B265FBD777745ECD77688FEFA3FC2FA4A9A48934F8015FFC6B72E0 009B949F0D06DE79CB40B3184E16F1D4F591B78C3848436FD74FE659B3033220 AC72CC5D3FC61467D5B25A53412C182E4E0CFA2A4D67A76FE94AB0A7FFEEFA53 CEB9BEB1D453A0C9268ECF8EB3D803BF67CD29686AA5C6376080A3D70044122F 36623543764688C390E3EF16E513F11E33F31E777D210F29C4338239A13F9F23 CF01FA50FF7DF4976226A8F4719A9E8AA30DFA67C311C27BDA18EEA56D315716 6605B15676E6111C1340D51BC6468DB78E1111DB0E62738411C675FE60719ABA 81414999FF67449010C1B56AFC61F4108E9C6AC29F501601DF4CADE485206A25 73A9DAFA17935E5C9D9259D2F37B7C344020DF2D8DC3E5B2AE848D9EB4CBD3B2 AC86B02B721D01244DA03D025E42101AD2B470188AC5F5EF46B81BEED21F997D D3C89735EC325680E231A7460574C52C775D0511DA9EDA8F4726771EC4644907 8A4054926C65A98942AAD6E9587C9A0802A449D7B95C921FACCCF861469C185B 7D8EB80E25D4784DB22A2059329231ACA261AD8953F800089F64D30B18D068F5 DBBF08E30E11CBCC5A4EC83EF3B6D1DDCE23C93152FD4CB9D0E370FC131EF550 7949779A9FD538D2EA49B79CE68E9636101AFA8F4CA68B2720E4857C94F978F8 0C7FD7D15CA26FA94BD4830AEDA819F2B3620726991E980B942CB511646E1F3D 8E7F7567012D3362506C0D35D71E7B2E2FC71225731C96F66B2FF18BF20EEB9F AE018C522A348FE9A9479822A5BB77881B3D43118ED30D3D90C932BA44D959AF BB70F943A08172F1561F744507E0D1EBA3E404439C90D0257BF8CDC5964E4010 C367F640E7BD95784D2D96A1164FE9884E1B89FBF25D864C0A16D2C793DA477A DF0BAB9F25D2BA9DD635EE06600E0E6E92101C5D734BD9789ADEBAA668781960 6FA1DD8B4355986653A217BD7A0F49DBCAEFBAB70E35FBDAD261593BFFB2C4B0 5F5FD9C9C1B24E6AD8BBB6FEB021FCEE9A9D30675E794D932CC75F4F0FB2A36D 8BD8FFFFA6B6F91194EAB25C932BF0209CD6E3C337E55CD4551DA299FC4F06E4 B6F6DD4A75FE9D5E0C728B92AF3773204118EC858CFCA83A445FA080B3FFC34B 7A82E12DA4D31501470CFADB67975C9E5ADB1FB2E88F5C4FC5A88F9B757150DF 31A123D497C32624B9ADA9B21F876B40E0B72E905A42F83388A0223284971547 1378974DB167EBB5F17C2E0316BC414112F87C2737B7F07822C9CD10E8EDA5C4 6AD0111271B3E1A4B16FD9CEFC3E658C40CF6F0A8A2BC7858A09F97CA2BB14EF 95ECFACD111CA5FCCCDC96F779EF6706069D6FBD63E003619A55C2C0A61C540E CC39492FF78EECD7B1F245E01C1F3662A4E58F9129DD78775DA38285C3D25D08 99138724FE55752C27A6C69A7127F39462684C173F8C7CB4E40269F75ECAB80E 73E5A8A0F594221BF9E91259E1F63FDFFE55EF344916B342BFA556259534391A 1D113CB87969B0889659E29DA280AE080717DDE8F7BC999CEECA46A920CE77EB 81205CB573691D7B9A2075F769AD7A6B62285C1B77EEB626AFBF786E92808A50 A6144BC03D47BEB4136E5D8877C9A43B6D7E280A42C13DDAECDF737CB7D3997F 31EBC0752E3BBE7A055C7504FA2355C636085A07BCB47C66EE2A4255E8171A3F E78A44E2867EF200B23DEC9EDFC44D71AC71AE454CAD6F52BA78D98D59940133 2766EDD409476E52D38BF9BA9A95441C9FB307E508FAAA362A6E3E7E2BE6E02F 06C6F592E71064A75CE008C77A5C0FE507F5ECC41769D1F6DDAFEEC61F4F2CC4 7C603B15597C0EA8861A1CB4B2344F8FB2D0DB84851D78899CE485A8C287C1B2 BA5193C0989606B397C6B6C072EDC2B2BC5EB9970A882E7F6419EB375A778754 F2411233E7DF7A53BDFFE585B2474643F53BB65BF9B87501328C74B1DCD12A6B 6EE124A18C9A9247C92835532297E31F228349F617544017DB5B3FFF79810AD4 024FF88ED928E7576E87D8782B77FC03228B60E40E248620B42FF117226F4940 B87E25D57E5B56C471199F39DCDF0041EC4E475A8126EEF2F6B5B467E17CE5D9 265913D37F80CEFE351D6F77CF4C3E29767DBBB34701DB8CAB01C04E1D9BFAC4 2105EBEAAF263A916394249E9CB920BA728FE46F32E4CDC066619194A75851C1 6991887FADC6ACA7DA8125D747B3254020A7B0C50ED7B75462BF2F52AABC271A 10BF8C6DBFE4CC1EF27569A20F6C2397393044D2207A2545A4DA0701455D481F ADE8B5AD9456708815AD69373123F0286A513356B2F7454A52A10538EB89C164 C9748CA351B0BEB96870F9E8D6576F560999D85A9E7CCD38003882A66A4C4FCD ED6A56B1EAB8E3BAA524057AE6F13CD783B1134BBB6A1F9F27CCA10C71DF902A A22CB5EC5AB319D320AA3EB1EA21D653241AE641D9F8DD9DB2770B6A4EF997AA D769B1503099C75ED55CF51DCC179671F88EFFDFDA67D230316ECDDC2CD05C93 8FB07F1A78CD763495685C282613590A947DC03039FEDB2932A8E8716D68FF84 2D53213BEDB692107915D81A57EDA150EDFDE93474AF2B95A27204AF655ACA68 6CC7349573252DDF794EF1B9A96711194C31A0A77DA8B1BB72292DD7E470D5C0 A4FB1BD96C1A387BA880EC8A205638E2727DBBDB422185175BAEC6331F152279 091E32F6275BCD69A62A859C100F7820B47AF0A3706042B82BFE5E65C7A4EC1B 61B00ABD5C74BDCF738D9F524A3901B35B32E447EFC478492D2FF149B76E7702 285EC9B77DA917CB97093C18B485E2EEE57AE00C45A12AD4A8B2F75652849644 F9FFF2DF61DAF44FF53BA8DF1A8BA3483BD336B2B6B345C40FF16672FDCE1707 479DC2C239F62F3891D114FECEC3C2CDB760403DB08EB16560DF0427796B3BCA 0FFA58DC2EADC51B665C16669471B4035A212C22A6122200C95DF145F2E8D2D9 A9DC1ACB7C5C0AFD9C432E5F4B6AF9DF28AA35193B8910A0E90EDFDB5C40B71F C24444E63581F6454D3B2ECF8E6ADB93B5758F17669B141275C23B0B67D0EC56 E353E59F63A58D99E6570AFCAB35EE0E85772EC66D4BB0A88B52E46E37563E4C B969CEC00F45AF07D8BB4DC76883511A1A940DEB2EA37F80E58D7B2D6929AD19 E619CF4C4E16DFF2AACC6DDF5C5439D3800E61AE81F4CA268F26242673DE79BC DC86226C70D846E5766CC8F54B59E42378D4C8D0DE6ED42AB087C2764A9F231A 2DB9BC05DD7F9612D3F243931565E8D7B3FF2320CFD341579CD6AB34677F4C63 5227E8304098CAC809D4CC38DC01229066F9EF0B6455A61D28B541EF5D006CB9 1FE92E16C35538CE86CD9BB2DBF0A32E97AD97D49D9A245E9A5AEDAE124655AF 624F1139115D63BB78A3F59EB8304251FA2C8C10F6B6CF8028152E0C69423349 25D43624524F977141FACD9BD10296AE1DAB1E27FA14C5A7D2D9D2B0ABA02910 E215BAFEE1232C15A73ED006C20E7EBD3DE7638E1D635838E6640B34699C9EF6 05B5316CA9A04B82098C3D2D34DC317A64DE468F801A55779BE8DC07611BE24E 43AFDF8B217952B9B02509890AD94984454C9E936D9AD07C4842C448427499B3 6FAA3DE5EA8984E353F0DDE6C42F5E6A096309A16842F7BF3CEBFA2E4E892911 39EFA859BCAB510B7D8BAE3396F865796C869F6BC5DF1E4046F2BBFD45B16761 16C3F12B8F18E440803F484CD2FAD54DB2F0EEB5DDE8F49E77B28EEFCD3D9EDB 40D70C80D37E74BC90EA64488736B8934176BC163187461F90350DE3426B96FC BC3087622B122843DE29BA07C77C023351A8CF66957284DDF80D7C7751F85689 F4F85ACA16F6A066C9046543125F68D3ECD7DD3DD4960202F29BCBF8E788CA36 15D6AE19AE29F49BB8E60FFC50EB463B97DB2D429D3FF592C19B1ED667C5BCCD 1ABACD7A3D7D91ECD8EB7228D14648497821033A6BD9E94A9DE77B4C0CDE3027 ECF25136CF2BE0CA24E4B6CC1120F49CFBFFC2FA3F55C041DCAAB53FF31E4B4F 1A1B9E9CC4815AB0F53AAB08BFAFFDB2167881E77F14961A0FAA602E7237CF41 731BD2ABC7338B9D3473A93C2D84879D46D801CCE2C6F44F9CFF72870AF72804 F538FA9772E3886635E70AF1AFA3D7FE9B5DA246D11B291C3F24A9CE8883AEB1 6291B246BC8CBB3A7FE58FD14E8FA5B5688AF4DBE36AC458FFAFF99C5134FC01 C188F2D2E6653D5D46E0302B22DE461CADAA9532461936AC8B75554BD02A76B7 87ACD324144697FCE14699B6DEFF8F225D424742E5D2D422593193E18DB5DE76 EDEF644CBA6E3B9CA93C8C4DB8C51F8CC4A1A2360A225ACDC6D829F0021D0E0B 4DFDFC17521724A794D7D9AC7465062060D192A7008A92E5B789B5B2019D2FB7 B18774EDCE45BE97842960FF5323896E19D3BA19478C37891DB74C8E23393366 BB318CB3B715DA6A99CEAFC218F1CBAC054B091D828856DA2F140920C92C0E4C 23AC8DAE7CF92D79E317A76BBFB45262023EA105402681DEE2CA39208A5E22B0 CB1154A01208B5CDE5E910DEC29F9B1DEA2551A59D5D3074BFC33E4F3DD6E60E EE0F1BE933593C3A118E490F4C72562DE0CB48F4AA2594D834A6509BDFC65506 01B92AB91A7EC1388E0FA2FCB427C2B1997D6F2630161B97E1FE7B40C3AA57A1 2D8C558271EF126D9AB128120C533575697923E8E60482C163F516252C5BD5E5 7FDE6894EC49512FE2A53D6F82F836883730E6244D068275505CEB34F4DAB791 93848207F2C2D5D305C94E4F94760DF2A7157FAA847DA528540E714A986E4239 30BCDC656A2217DF294CE8F2679EF827D14C475C010D8C64AC48D6889D0321DB 4CAB00613824D769A4F08770202706CA1C031BE49569AE1AB836869BAE6DF6B1 45863B8CE3616BE3EE80276AE9C0F8D8AAD4C1142B2C3A51EE0E5F2C1264DFAF 52283E92AF7874E351E24F0BDCB65BC68C225559D1EEB360513F868C8448BC97 F2F7E13AD07B351FE0C10C079F7ED5640BE94B0D1A9AF0964D9A3D493852A542 7BBCE56E340B2737E02736B2C4126D4BCACBD78F0673736330BB237C1042E798 D94056FE41D36A56770F7E772EBD7AD6FB8EB101D263E35D8274CF4385342B2E AF28E2134DE1E398F1ACB6C0DA5E5B769F12544BBEE2127C657FDAB74D3EA91A F184B63218440A723A83DEACF5986F11FF154F7CF87AA84257A19E7778B341EF D118487D7F5B91C17F1713E6F16AC1661E43091B32CC636C51CA7E9317A96D23 738FFC4514D1FA62582A78050132B78A236901DAD8538F8DE6085F6033F237DA BA316E189385C5A1B8EC187897E0390A7EC99CF8CBAB68631FDD07F5F4FB4268 FA17226A963E84DD9BA4559F8487B928F64BF76291BF9DB26CDF2260BBD8A2E4 B0875F87F9DE39B74E025CCE16CC53E413718F7FC0AC8F30CBFFC120DCBF0DC6 B620C3662160ADC4937D88FB17090582AC1EF2DBB1B2813A8C2695673F206D9B 72F65016E9CEFAB63E82A560E2B1DD4065D2FCA6213C448D7F22CCD55A2038C0 C973A9503EDEE821F9721366705BD5C6C19F487E9DF5EEBF9A25AF7B89640BC5 6BB3FC8B486109DE58D11D3D63419B2BCBD3C968534118854F55007D08E7FA0B 085F9772928B2B8197EC91CF4CB6A534E1EE0DF974EF048A45169A47595EF5B9 A1F14C9995590CB789613D6B43EC6A4A053B403157465740B2A159A4E09B89EB 4952C829ABE9623E37B1992E193A1D716B52AB7C595D70D3AB9F4E1B3176F49F B8C09DC4A0D8A796AEC6DEAA9B7B713930C957C6324946F740C68BCC5C8ECDD7 7D590B23816647374963F1A58BB032AD0F16AC6B60FC2AD26112B0B757D5097F 08368D116CCAC6EAB418D4D96393A49F3BD7C7E70EAA387E652F66347AB1D827 7F2B91A659DE67ED9AAD031390E178FA661198E8E90A3CCEC6418718378AEC87 680546548BA15CA8B271FFC847B1E82DF0C759B4214913D814C966B4CB3F46C1 FBE3377B143C3488E373FF543D395EC948A02397350ABC4C7075BF7B7336114D B5E7EF4E3716A5D48E1A134DA534C77CC9B7C676E98FDEBE0BC7914FDE5F9C48 E6ED6B7ED6A9177BFEADB3D88621A11BF159D087F8159A965EBB8EBE7B8B82EA 03C64D69DF96842483F301DD173D87120B00DF776D275A1F8D134041739E9420 1069070AAB9C0F3C78D67918C05A7C8752EF8CE6E1DB3C950D1ACF608FDADB1D CBDC0C62295F946C24F91E34BDC059DF4F777558EC97732384B564224D00CAF7 BBEFA7C7CAD5EDBDEFF987D14B796FDD970A5DA6C6E335F7221AE7579E6DC530 0EC84C9F339F74698904E9EA2CA9F5E6EE081E213D96E57B796EF0C717F37066 62930EDCC12BF30241D801F5FDBA91B30F722382E57002888063156A864B8EDF 7054A5C7978BA3C90AD2F28F39D17F268F5E2316D6CCA9B9958F39D99E7CA9E6 C9AA93BF13B78067B71E2B37F5813AC01AA4157F7CC1119166D7CB2BE39572F9 CEA02058E4BEBD6C147BB6575F45BCB40AF028217589DC0B63F40857AFCC8601 D9BC307E70E2CA4702365E49A48404475E7D40DFF0A0FF158AFC4D6DCCF9C0E6 70AC60C583F7BDC44FDFD63FDDF45F4D88D73A845B7A3F5CA0B6331C71F84058 077368F63F3C00B4638525C9C974BBAF69F300D48A460A6C5B52E76CC07CCB3A 4A7028548465B204BE3E9A1469E98397B603B4B5DB60676468B3830A2D782A5F CAC38B931BBCA914F966AE2895CC85802DA34EE8EBEE69DC9F048929D056A45D AB377EE1BE271EC00B77859808706D3D5C988AFA2BECF6D1D266B407A54DCDDE EFAA28E3B7F0E4E2307593B3681135911E0C041AFF1D728E40B727CE3690428D 5EFB1D8D9CF0F54B994E84471B1B428D3B419D12DDE2D49EF0A7F1F4F788F1BF B3D954438056BFAFD0F4F6E41B0FE5C003AEE65E56C65B20444691D3A288F2EA 3F3B2BEB0018457B5DC53A1C3350A3468E08085B29373CB6715ED48CE6C8FCB8 8754D850A0C36E2402977C91B55373E8D7C9B0A6F6C02640F7065E4037AE3D58 7EC1BB8162BEB5242277514812CC346D58C6F7DF1A90F2935FEF80B24A991673 9BABAD83EE681D3A89339C00B137421F0E00536777E3D9070B34365181168297 134D9C85E93FFDA8C6F55B45602E50A88745131D309A38DA2AF5F84C777725B2 640C1573ED9A931429D0CC532BB29ED6930224F576FACD9259A5CB3F82A861E5 F2A9CB21628969162919738BEB74F0C5D33E61EB5591350657769FA72D72FF18 66A63D17035C6FF5B2CB5E01870728D807F718A98D431B129978E93999D418AC 568AB6BB61D3B3253C4D08382BD6D9E70DB76740BE7F2F62B08F2A9EABB33C6C 17C29C8526839D0B3C2CF13111B0AFECC7C354FCF89CC5CCE3198961F20E9370 52F75ADD74AD18B5FED9C75D983B6708DF325FB829AF9B776E7E14E3AD45D257 CE7130F44ADD7FA5E77A60FA07598B5D2D5B351379D760B1C81B574BB642B199 DB4C13B70185D60903375DB6729BD5C6009C7F743D7E92DA2D7FD134664B65A2 A58FC13584F90885B8059656BB341B860105B28113B5B51ECCB522037662F82E CEA22C2DCD35E6F4F083F865114825E95294FBF6388B3D862E7119D85A9ACEE1 45D961531FEB64073794D14F3E86DC1D8FB5CFDEB5BB98C2A0705B0EE398EA75 EB12D8E8762273FB12308E61E8C5A1CA178540F8BD60824BE608EC24E926E001 2FBE42B779EC6E9BD4E0208EFFED25C89F49440329F5C924760B26C4AA81E3D6 FD39569CD64360A74727E1208961E36A5935F33FA070E8ECC08E8AA63A4A5082 F26AAC4E825C372B21F885847E08B74D158064706B98DB8825F017D33EE56245 62C90AF85B83DB615E7C9D111306FB82B973E48468836B9FA25AAD9045457018 109E050F39516A4E53B70B61EF028B3F5FC7CF6D14D79B1C135B79FD260A5CE2 3D3DD81CFC2438A09B1DB7559BF7B08F9CF6B038881FBDAE927B452AC30C199C 1974432BB3A3706C142A91A4D2D12BA2411A1BD169B83E44DEF3420FF54F9769 F9151AB6B7C0F576478DB45899F0F6550D94984BFE2C08CFBC902A7DF2FA1A5B 7131E9636BF740544AB80DD7E39C28DFEF0EBD369C7CC1DA0C990D792348E05E CAACCE4966F2B46837D7CB3ABC493656F20097E2B03A35FD7CC72EFD36100D3D EEEAFCA5A9BD3DE919B35FFFCF204C5D04873D6221A197125BE1291CCE904FA6 891EFC1F583A2F7F8CCDFAFC14DC22FA9D5B850E7D6184520610B3C75F93CD8D 9565FA2646E427B2A704B410F01B9DA08161BB8FAF9962AF86F48768184CD822 DF6A04BF3F3A33231CB76CD095EF0528BB27A72E0393F751FA3016CF71367E3E B1485BE9C502A7D18EC0FFA9311CD97A8A191347FE7F559D2C4FE260ADC06090 C6AB9AA8E4E0F89C15E66AB73CBB8EC589D01ED3394E982B02EF51510E42C653 141F5C4E48E4C3A4EC2628F30A6EA4D860DFA89FA83A8485780AED6844A378E5 835F1A307D14707200C6A7BBF52039CF67F2B4EAB7F6A24DD9C4C42EFA82441E B1207829F41ECE75636D7EF3C3ACB58638E7C6B2F44FF3690699B2F81167771B 7BE210A00E97208A6D1AA45DDF47119F097512FC052B714A89020177C25F9311 8E5D06BC41C5C256795B901FC6A61694B4C9861EA551AF6C1C527F00B145F858 CB4B4A1EF219EB384A3A213F061D427172C1B4890447CF0B16AA589B58F94D41 FA029A3ADB53EDB82C93C7A84AB6ED27BA017B60A832860FD767E28FE951C1D4 C7936066C622795562B30170EAFE501BA661DAF51F675EB36490CB6A70FFB947 CC9EC47551959247BF4091225E0D3E84DC950E07E73EC95A9612833662F6490D 630D232CBA8B2690D838537BE90B4C895B67D40028808910152422964797E44A 1075860AE7A8BD44B9B9FB51BBC0296E472DB68CBEE4ED4300A4DFD7F34DEDF7 32FE0A42E2503635A942DE8652B9C4148B25E42C7ED6C6510FDC5661DCAB75CD F4B5B976B6B7E93D1E008ABDE3CBFBC15904C72DEEC41460E9C4116D03AE75FA 4404F02A8899D12D66A40DF95BA0716D76E8C00D07A223830AA37E89387E6752 696DA61B84D00CBC9F388AE60F1AFE3CF4BD5EE7FF8A79A80F60C0292B8A3D83 4A06C22FCB0EDA28785906636071BF676C008C59188E38614602397A6E2097FC 6E92133D577C9EA96295AAB24F77E66D36FC1451B4526D6A82905CE0EAD8C862 614C07A3822504DF0B005C6C821DD42B0E012C973F70808BB08F33BE00C021FF D5F0302B4704908E41B2342C7C58015D252E9B9F2485F0C97010E45B06AD459A 5FFA4C906790D0D70BAFDFA516B2E0CEDE445F462CEEFDA0D02E36F6DDCEAD5E 71C38627200147757A444C3A89C78D676727C1AEB519622A99B4616BA275300A C6D6022810B1BCF4637B75DC2C87090A5A0AF6A0213D41E5790EF3FA91AEBBB4 9A093CE6CF4A609F3E969F73BDA640B3B634DDB3D81B9C4EA0AB982E8C34DA20 40CCA78803815C0CD6FDB02BD13174AF9FFDB37EFFFC530F408B7967069A572C C32F8C716F069D09E59D8DEFACFE0C320AB94D892BC3587F37177832F99B8C99 52B69B1B3C04312AB21EFF9A1212C5FE8D686CF6D5437DFE516D8484761AC21F 5ED179AC2F614682A08389898DE5A50636399BF3E3524CB48EE89875607187C1 088AE3367D0E9D44D87B7DB20FF4E9D25E1FC0A0D4F4741C2916A25168D847EC 49BBC753A30FA21E4B6984BF6FCE34517CC59ADCB2D8722352398A77A5D0BDBD 0A53964F04CEABC92DCA49A360598A9EA78664C0B52CF785EE3EB16C8A8178CA FD15DEDE74400B5CE88EA5178BCEFAA6B03048C9FB4580135B61C115912CB0CC 3A268553509007A86DD0A0C10229593598C2D7C7C62E61EB6A89FFFF84D16CCB CC8169ECE21DFB84474C974F8D5016B0B3176A2472573901EC668788ABA86185 2AD2A614593A178E81FC6BB3EED2B2C8995F2A921E1F583237E908A4A8A108B5 F4EB96D7927F9EB92026609B4B0C6FC956F58B5B0B4F975E20CE5EC41B75605B 86CEEF56E2FA1FBF0FBA4454AA1F391E25B3B7E6F1099698D3D92F85A65EB9FB 8E500E2036993E49A21DD1BFE96F8E8DA0A8CF16BA653F86DD839C3A8181A087 5566208B0FE6D78845CC5A6A547156DF75EC19259531DFCEAC37AE7C2B924DFE 5289AE5EF2462EEABC8498E86CA643F779FD9B45FE0CB9A394C8B094BDC16C8B 50DDFA3BC2950F059A1B91C1F9E3792DEFC7E45F45AA4005BC65E28555CF4ED1 E3D6DFB2B20509CC597E535A1D0846A3E397336AD2606B1EF1583C4C410A6A92 3AAE4FABFF70DCFFE977FD8CBDD03063E6B13FCBED45461CBAA86C72B09C9829 B0AA5434EC57493FD274DE4B5D7E5DCC117139A076FB8849624CA75039EF9E88 AA40528D0ADC94E66A826EC2C21F16F907B946B085B6AEC07E27EADF072975DA CB3E512EC9D188E4EB883DE9CBC832327994F19AA925FDA2676A0937CB96EC82 C46A2530BB4E02BA2F46F2B5D2E3B9045748BC25FD4E2E35D3B8F32FF90C31CC 0631956ED7B73ED960D62D6F8C84218A113B145C9CFA067619141971FA0B7F92 3BC13C6C9199EA34C28DDA5248C2C8B8474BF90A3A42ECE9CE28D582B85DAB63 54A596A5DC62D31E8EA8BA47F45FD78DEE9C42B4D0A858F8A3B7CE3CCAD00A10 7FACC4A16B00E55805378E7765BB77A0D9AB76E1F59B65578D0409981FB7B03A D7A2CE0118132E9FA09C0C3014F0030A202E220582D07E7DDD259C36EE2A2845 DE1032B0821A70AF37BC3F489640F4A2BDF6838DB744FA9D4B93B4118360D0DD CC874D40648A0F55388438A2E66C4EEBD6D49095BC26EE51D8291035EE3A1B1E 520EB6ACACA7DB85EC749DB0F4E911EADB20B017E0E5C35CDC85D5343826B50C 1E9698A126AF358DA625F8A2E34A45B2CC8F34F79D2454B95BA930C3C09B5DE4 5667F7EE3EA03F2D201B8C438F03806F486BA04ED52C8D7F8F8159EB4513EAF8 9B224D31136718A84E8D3906FC4D7D55CC7342E294AB627FDF999E03A51C2320 74374672AEC66BB20AA325992C686832DA19A0C4BC7FE0CD9B7A033E04618F6D F4C62EA2D02D5135F477E2D1C21949C40C4D025321FB1C9EB8A70B94B64F049A 8D934A2CED59B8114381ECFF4311143C4C204C6A4F7A7C5125AF0166438D7703 F9E57CF94EA61ED3893E6CF0B65EB709E17C3DF457D50265961915C282C65417 484B02AC5CD31737F489D54F0BA446BAD8DB24D731947DD3EB7813E50003E2DF D8FFB1D892709388B6DE3B6523ECAD78D95E29E10F4F767B0D653890D44F23BC 3C76E42C0FED434388830AA7446756182987BE88C223C75983C4AABD0413EDF9 84EF32BFB6913072010FFE6F743B1487EBD9103A0A6B63E95891DB14CEF1B52A ECDC695B4B6293BB06506D4E7707DAAD120C409B69C17B5DFC889B82FB16A33A CC9C00EB6FB4D39DDFAA90FDAC979F84FAE2DAE42377BE31B7F6106B8D1E688D 1A328FBE7FAF095E87A0ED43826E56FBCC4E5CEC1C3506FF51B78BF4FCF47594 938127A9EB5457A05905770B001B2471AE7C61DA6E683693247C31A70E675FED 14A567B538C4682C189D88B030BFDDD264922ED513D006E33EE243DD5C06DBB6 8527FAC4888F4E41B33900FF1A42561B42001AE7D3C608B0B67323B464E3C061 29382866CC952F927C77C28A18531CD29AA83FD4CEF8B629C599ED3D40DBBFD1 2D5B14BC98B19001DF5685969AA6842A711B4B49B2596E27A88091A4A2303519 72910CC554CFA4887875A007BB24E96B332C1E9CAB94A1B99CE4D197690A6331 846D466E130D40C3E9F53398F2B1E908AC32ACCEAF2216BF348BCAE5E4AEB4F0 81076CF183DF2209F7247C50B19B9D6DB81C97299EA639A0229C6FD0ED944CD9 8DCDD5190708AEDF7AD24A1B93E0A71C30564D4F21653DC75409CBAFFEDEB12A E7B35CE4689271BD31A7F7D05313C9C39C5C3DCD550205F12313FF777DBE471C A8CD9B284BD7C3F8B939BAE1E5D53BE8FD0A4620EA68817FB61997B62CC26D76 06FE4DB8166DFFD210C99A6BFAE685B8BB2B03DB9970ED20737CFCE7893D0847 BDFB18E6273FE03743C2514436AECC6D833B27AAAC04F2704D9367231BBCE295 9232AA9E17D9EF6378E4CF89B3DCC39ED96470E5F9D569FE52893318802797F5 5DA90F0F1F867F013CA764A3B59E51DA3DA95A8DCBF85F4A181D2603DC07BF1C 4D6800D14EC88CD3757E7D7E9D86268D06254316337372314CF123C0645E1523 BF56127327DD8305DE03447F0CB9D2993CD47989EE62B5F264F6DA2C1B090AEE C24F823458F7C07AE4C0CF6D565DEF286623AC78A491D5CA05D5963CF1CAC838 5721F444BF6220019C85F25E8E67F245A183A9618250EE5C16B7C9C7FC874C5F 202D41ED1882DC3E266B9C95B26D3F572C90AF5FE21D9BF8D3D9DACFF53FE628 9852BB17644FF1320E65FC98BA8F967EEA4A4F9070949529FCCA3F9D140F8C57 6F3E0AE2492D766B0D2CDC08B5CCB5AEDEF9996135E405DF69F8168C1DE44E1B 0BA40991A434321993E3801BDBDE5185002D322A3891BC3598345749480467C6 DEA8B175927241F8A7452A6346AE7C3BD89D51E715CC466A7FD9B049B5CEBDB5 7B5425F96CC6B1C784FEDF39015C241A1B1A08BB2DF298C38C65BBE2CF1A1411 2462363D3E82D2E065EE39B90ACE5D297F854FDF910E4BAB7F914BD396A6F342 51639D032AD1E521351D7C8EF8B401BBA4D3E864FE28412C9147DF8E13B8CF28 007F8C2A343ACD0EF87ACF95FBDBA799CAD7E8CE78C413424878FA66BB7BB2DD 1BF953E8B78250C7CF92EB8790F9E15B2CB7E0A410988E563983FC204DDBB479 3FBB6AB852770CDA2C383AB75D09FA1719D137FB6DCD7AA7AD407B1587326486 6F214B718CE0F406DF36AC3E1D62B7883B587FE3454CBEFB8EC274F78C124750 A270B4C1FFFD57768285C3B25FECE4310728487E5298BC3BC56CDB81D2826522 23C240C1E3C09408127B48C4D5FECEFC13E42F1CA276ED4CBDA48BEC6FD5C97A 31CEFB04C7C5417333B409E7BB3429741E2544A2A89856405B2A6D4E89508C57 EA4BC743CD53FFC66CCBD6FE724BB568DC1281B98BDFEC720C000BF8224FF20A A025B1028A665435F1FB6C33C5F6B4203849FB44ACD3759A19A4564A556F1077 B5C46BC3D544A0BAFE8B7FB8240176B77A7A15E79C08908A0030F9E647665BF8 AFC082579E99F36D00656DFB6C6C51EFCD49902F12319B224EB1A29C8E23018F E8480068F06E1F8923F6877D286A966779524B739677492D66E8078A5FA465A7 9F7ADDEAF4D4DE483A4C1332C101D8C45AC0157B3CCD6D15FDF9BB26F50C3F79 C0862C614E2972C5702FE580B9799D55C21B2DEE8EFA37E38E8116B7504E17A4 211DF022B739BFC4E990422DE2FA6A0BAC344C866AF651E182CECE1CACFC44A4 7D4D0D66F24AA0BCB2515321E1EF6E1C149DEF448E42D4BE130095D4761953D6 4ABE1B1ABD5221015E1D683A7B9B9C8BE0292E6D45CB4B7A36BF9C35B5D339B8 20C36FE3950E58748250633976F13C6E1BA40308BB30C24109B4A5A94993AC44 0BB1E8475288140FAD27F15DBD3A7D4F1B5C0D68B7BDE4A9E8CFDAE44AAB8806 A9E21AF60BBB33E2BC60329A8C309B0EB3AE9E17D7A6274ECD69EB56855B6215 7EF76B63747AFBEDDF09FB6F55B96C58ECAE04A8DA0BE1D9B3D88300BE9366D9 CD6474DD5D327685354E6966BB1DB680E64A94D36A3DF8A37E41D86FD0BFC414 C10CC910DC8259664C3AF039AA721137014853A379FEC772CE7A739CF1C857DA 47E9340CF9FC862C84E61CA5EA1F78B32E8B4E32D3E6F5569D39E75C84575E7B 9A8B4C862B2DEBAEDE2C1448AC4205016D9C3311B7B9D182482C46CB6EF10001 A1E2C82A4E188271ADB3CA079BE5569AEF171B4F95F8AF560A403230C741693E ECDBB3E410793168E96804731E984FF2CFD2CC7B03FE96734DC9655D6C841C24 EAFB368196CA35DA8B57A83B3364048EE3410C26EFAF31DECFA202277222660F 3F962CA529B29E3A264DD2599340E8D4322ED7493C028C2039AF958628BF0C05 FB18C8B705A7F03AA9F195C9C001D805AF87F9D7B17223E2AC6DB1153B788DD2 940189561B064BC70FC732D88736CF6938AFDC880BEC524D1DA7151DF62FCFC9 EE28071CFDD7A624FA915CC85168D21DB094D4CE03A35EFA4ECF3C06B720C352 7EBBC8A6A83A25C116D6D916DD57F29478D07292B1DA13C7081D3770BC1D57AB 4D4A10292A014D54A523E942A219593FA14142061ACD6B4E0DD310D724A6ECCC E611B5376138BDAF3C02F1294605D182991D4CAA08D6BC8FCCE656C678F0B09E 6BDFBB1652BFA8201DDB7AF90AF25C1676525C66A98DBE1E49627EB0DD2E4529 9D659144AFEF2C9491F942290CB33BD1B48D1B3026FC75107B5FE102FFEAAD55 7AA2F968D846A9D088AE559CB788635A8D136026DD076B8B56E01D23D4C11474 76BE98D9F6A7BFC8B6FF09922E107C4991F0DD7C0C61E23D7E49713014E76976 4155F4B4466E59D2EDD8A76820AE55432352B199518B1E6C055993D4BBE40DF2 F03232DEF91DD3BC354E2807551784FFC63746F3EA07084D71F0854827AE227E 329118D3506D1C06B403AF80AEB670339371A7A7E369CB0B00AF30DDFACA5574 6D4ABFAF270EB1DF23693C59AEC4565E5B9874176B322FB5996AE577D8C8D5C6 D884842F85BC8F2A40F29FF7B2774622FD0D70FE739C4C3F461C0868DF1AFAC2 53E125CAB9722E864355ACDBB785F652AC3E1221CC0C92B4B874411445CE00CA E73BE92B22B99DB4B2021172E6F6323A3B8238B523A8029CDA6BF9664AD32D09 15EFEF47A8A76FB5E7EE151EE99AF7A3CCFB5654CB3F37E95863F6AEC0F90253 664617DBEBE574D04BF7AC5F111D820D5F273CD56CF82ADE46B0BB0DE1F32660 64795F43AEF62AFC254EC9F0CF57EAD797E9526C0A6771A147FA53BE96A5F6D2 6FFE8119370C8213159E4C37649C7E7E88124C49D2080D75911F166E205F28F4 49348E203F4E6E618A99CD215AF35ED2079A65D709734F2E08C05AEFC8656434 48D04925F594D940F72091673DCDD289B27501FE6C9A9F964BBD16B39AE7661E CC28F7F737749348C8724C21771714D4A1FEDC22529AA66CDD4FDA311C15B861 A823AE2D53168348BBA6F3625843883A43E6E883328F9BD2BB580E2CFCF42847 4992A3479BDA672131FEAE1286E22A134F4508578491B7C8731D6B07919D6ED5 99EAA5E0963636C05B3CF3F6802457A5E669D71627D94CB61F528999160D492D 7021DC810587EA021D8C82A4DB57F3F54421F771570597A62460FE15E455CE49 CD5B74D89EEF1F69DFB8013985E5129376F6D749E423AE973C94DE832C657573 C571EFD8B0C20BD06192284835641FCD416257ABB40D2AFE6B69B0CC6557521E EC1729B570CCA4F942188AE1FC17BA3568E29282F9A552FDCE1EBC9225ADF541 518EC5CC14FBD975A5F7444E58B54B83F76CF065FC418C8B889CC23D768FA8F8 14F7D56B11930C190AAE63E3A7CB9223C2893590F5CF8642C0AF043386D006AB 88E9E54E1D12E700090B546167E935E08FE9FBED7C91003A70093103095A6386 E87DBD88A02E021C53E1E1CB5424C54E9F7735869E9A7656AC85102F051458DA 2BF54E3CA628A1D27F05B03FD803D009F26B49F7A977BB01458FF7CD2EC9664E DD7A7218CA8D65D242201D0B0ABB605A8DE49D5776CD0B2046635A6448C0E403 AB7A06DCBEF9BED7E09A5968505314B21C32DB5262C43CCD5FDE0C922AEF593F 0912262B61464E791967C895CBFF0D4152E44AE00393561010468901871A8C96 8D24AD5F6FC03E55D88EA2519C9E5EF0114D2B2497C8E08FE994AECEACB7E0BB 861C83620A205967EB006EE1584AB995095A7BCF0C730C2A3FA84485BC010436 9205CB6E1DB6640F936AF5FCE4165E043405CB0D3E6D7DFF268BDFE2E8D340D3 8F9E82A8301F0DF8B62E4C57D46560467861E868A001A5646363FA150120D0F6 8D0FFBE1DA2AD59FC6461763BD98C31FD4035A0BF1BFC5A4692D2E600AFF2670 DE818E50D19DE9542BA2CE26D8EBB54F828487ABB92D935E1ED13D5F4A61508B 704A72CFC8150BA27DD5B7758A43F98F4D695BAC2C7EFB7D8E223F98B90098D5 C4B53C00D294A05F6FEECC8358B4FEC5AE632C72DBE501C854B49DA903D79F29 C5074957C88E8B9213F6EABE0CF8B671D0F1A2D4FD3053C27A1D487FFC62FF97 3C9B671C994C8B0F2C7F8D7AB1295AD7E57EF4970B9CE6DA5ADA3B250EF84EC2 AD977C9728494FBAB2BD7B32A4C950CAD890189FB28301F89E45EC88E8CEFA50 541ABD74BD029AC0B9A8A78A42902ACC5A4AEFC5D440B6895D69DFA57208B6D1 FDB290 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.0: CMTI10 003.002 %%Title: CMTI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup /UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTI10 def /FontBBox {-35 -250 1124 750 }readonly def /UniqueID 5000828 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 50 /two put dup 69 /E put dup 97 /a put dup 99 /c put dup 100 /d put dup 105 /i put dup 106 /j put dup 108 /l put dup 111 /o put dup 112 /p put dup 115 /s put dup 117 /u put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E 2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD 8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC 32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF 118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA 8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A 30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF 0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D 9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC 8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F 42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F 7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C 0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB 8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A 21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA 206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B 55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E 9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F 220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D 981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F 337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B 1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC 100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A 1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB 72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D 310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB 865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B 301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E 2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A 44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F 03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD 9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F 821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B 9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E 81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C 6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C 392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F 464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA 147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB 61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C 2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C 7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C 9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D 8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B 02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF 9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD 751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A 40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A 0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E 8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D 098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B 41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA 2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238 2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252 31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B 58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24 2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C 87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4 55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151 557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8 2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5 8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92 833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6 4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19 EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AC39 2046EAAAE81E155E2002BAE8B740656A057DD11336046B5DD23AF13B20408F7D E2E0C6BB799011E93569E7C2418EEB63B7E31828EAE6F93759A0D52404FE48F7 237A7A7E0EA8F3E1BF0B7E35DEF6AC14BD4DDED6E8EC6A58365DF11DA9E010CE A73494139796391265BB745BA1696ADBCFD64B54D4B3AB65D56A05FE6A2706D5 6B1AD85CA782F1BBCD5EC6D5A4D2CE9B33ECFF53728D6AC0C6C0F0BBC5F9CBAC 8EFF5BB3FD81E9DE850E1F7E07E220F31F924EC7580F8EC444E07CFD1CC4E4FD 118C9C455107A2D2C94234A0C9683C557F2EF9182692AEDD76C2DD5D9D8E4F35 90DB88D0418DF8ED45A923A694E78BB970C36787CD25D2B2F32732CE58012FD2 9F69AE77635F1448118C4C8625E39CB230253E05B58A3E5ABFE41D990013ACC7 2A4891BC527B886842418EA1872BC169F92A89067D7B40B950CA43B39FCFCE30 85E4EBBE1887EE01FB70D6D948E55FE0FC7F464A0B2D3EF7B704F7641BC26129 83DD48A1D2586F3D71442DBEAED333EDCCB630B0AFFBCF408C83D721D60A608A 9A59AD10A9FC4613270B2BDCC2065F1AE0816AC4ABCFF359ED1CDBBC35FA359E 0634E9E5710E6D19E78FFCF8FA6147040D170FD9A21621CF375620A1D28FB04A 0141582525885507234A4560214CCE14E9EF12AB9BDD9A952325AAB2F5D7BF82 0716D1B70F8A5E4BDCCAF87401373886FF9BFE508C3A751057316CFB6E07E069 320688672BCCCD7EA068860F1C5275ECDB4461FDB2572E1DD4EE78D24DACF418 B6AC1E4520E43A617FA7942D47411ADA0246E296E2D20F02C44D688BA8CA7C00 98265EDD8DCFAA7F25EC0DDF6B8AF6C65682DF5CBD3F1D0E9D0D05DF4C44D23C 067C14FA4BF67C733167B2CB7DA20C340ABA91FF0B3C92679836ABA7EE2B8F4C D9081D31AA562816526B6D785782D32A82856B0D35552F4A519ADFFDF85956B2 0EC8073047AF2DB05191A59CAD17DC470225C3732D00E8E9E9B4BEDDF73A56BA 2CA1CCD3AB2F2EC0596B191D72C894EE8B8D094824909A685396CE54035DA7CC B0C73C9121293ED24C863090901C46A99AE1DBB00D7356FA9750E05A567D45B1 2A197304C1C857F70CBAA86B2ADFE7375B61F6201FB6B8CF1536EF5E88FB455D 189F9D523D4031B9B5533E7C0D707F308D8DB13E731F9B2171B4AA40F688103B 979BF0B52D4F41A2A7DD3608E40B97919C265747F936468562C14F9EAA36304C 3ED27B148420D80B3E618B76C0F77E9DE6A8D653AA6FBB2450D6610B74654CBE 206F6013180F6C7F491BEB2AC7920E81C2887357E93067873CE32FBF3F38EE80 728BBE199D5CBEAF1CFD3CF3AD5C49D95340AA3A21669D18ECD5EF1824965092 266E06DF2C2C1B2E1689AF3FFCB093071FBDDBC1A9D80BC4D244C22197705969 C6DE1C5E1FEA9486994E43B46A79324A6CC7F17F7FFA5A8F46C8AABF5A037944 08BE0127168F47DC0FDE5DCEA9B2ABBBAF21CC55A1A21272645215DAC5F9B446 534AA46206E9CD5086D0DA862CA585C217B3052DA6BA7AACA2324209E421269F BA0703DBE2221C1DACBB84D9BC5C5AB53DC80FF7D214FA14621014AF55AF0561 7009B7FF3ACFB88120D040E1F0D464812C4046FFE7F0C28AD40A0F52DA688EC2 9A43291CF69DFB2F3AC82F34E9AA28B919E8421BD48654AF48D97775716841FD 1A421AEB6867C8063847DC13606AE44C7386BF5CCC22FAB20F511414103A3E0B EA17B6F3791B3CAA82E17E7EB1A97B8B289DED36ACBAC14672929FB851BA8334 651D8A4F1AF6CDD730144252641169C15AD441E5C40F8DBB16D588D606F4EC6B 9EB24E15EDEF0543857B65649F842B4AF3E038847D447C740585A610C8F44ECA 4260EC23E28871A12B1141C0EA27351F6059EE69F036FA8131C209CABF853FEC BE05FFE9A868933E3EA3F84E42CCD269AF496D7FEAC7102817E98218D168824A 828D6ED6DFE45B551A8EA33FB389B622F275349C235E0BED0FA616A0235E90C1 DDF690FA8EA3A0659699FA62E439E4670A1187544F8641CFC5F1E2972A60B2B6 7176EA5BA31A5F0C9D889A56BE9B9E351F08C7598F3DC36CBE52EE0802E3DAA4 49CB6A615C5D91AC7F8E69FF197AC53F5C11CBE8AC0CD1C5D08DB6F1CE6FD530 70A806F77970A25F4BDFF1901A7615B7DFCD58A9B7E9A84B817D448BD3ABE11B 7C8BDD5536FC79815D65BC396CC29CE21CBB11A8DB34C93673F1246B519CD40C 6BB532D4667F7180C5AC6AC5A1990C25517FE166EBD4FA860066FFF56B67AB81 2B14D8BD2A1C5AA1446AC59E6FE3FB13AB6FB90A5813EB8E3CB234662123FDFE 37B27945C84CC55DF0F7061BE7236126B9243B303E849E4DD656F74C8AAFB6C7 F38E1112B991DBAD103AD8449C1909B32DC3BB81470BBA3273555948B384E2AA E861D80A04909CC53932D39441B14EC927B7086F5FE4168B5D671BCAD0A0F9AA BB6BC105F883A36EC0E7710003A4271447A4795FC3DE280F206A5A9C731FFB54 DBBBF438248EF9B0B7418BB4D6EB9FA933A2E29795A8B74BBD6ED1A527CA02FD 1E595958F6B8E22D8004086D666F46A604373A4B4DD6A43C72C3658FDB23D846 4127CD3E408997A1DB5045E207B76971FC93A1B62E4569EA6E7AE8A3D902BDF2 1BFFB63A8B9F22421A0F51EDF5D13F9F919819F29BAFAEE9D037E0B15BAA839F E038B4807ABC568CE3C07F6EA94C647FB7D6E79353BC0AE889CE09DA552A5E2C 4BB44D41419CB79ED283B072B7625A309BC6C27791E635B0A31B63A6E618034A D3FB590A3E5FBB6B41F70A36C43F26CE6860A6306B095C3499CA3A769A98749C 5974FBB6273AE480925C5DCE09C082AD5ACFF42D029D2AD8B5522C175BF705D4 F7089BCC95B44120881524B343466B1D60269630526404BBD43A06B4A789C26B 2BE786123054ABE51A53FF7FD04C02C485C9D0130FF7AA4D2460A0F86DFA53BC BC765CDECCCD709D1F1E25310F5C96C65135295F6DA91A95DD7E94A4B3ED4083 003202BE0E0DDB933BED2143A9400602B8B2E2961FBA961F02E59CA54D8AD364 9100F03F0AA3DBC037C2948DE75135807FCD3A02BE03C555B07CD60EE806282B 667FE425A9E47E4EE78F8E51F79EBE7BE2D0A2DABB9554D8F3C82F26486450D6 4DDF44803E6F3191DA4703B05E3706D62069F93F89C58DFFC59BAA959170D699 3C0E4258FA0CE1BCE45355D3A5484439DC177389F1566CFDEDBC0BC55892A529 6CB69685715C613961F9E542A99E8C6FEADC3E6874613B1EF549691EB3301CD6 BC70182EEFFDF7AC9F875C2EDC1B1A351BFB3F9FC10B1AADFE967E8AF16A992B 5589F433904DA796529289ABE26F102AE3941A9DDB68441F717F0522EEF7201F CBC729B850B3D3ED0519B0A3DB7CE330B682A29B40FC0F4AB3E8F7BE1054A9D6 7C48FD14DCC3C6D854F1B17A5906B36173AA2578EDCDC25832BF2C3C4F3126FF 9FAF9078C71D38F83EAA2C616B39B48A55444CE8B00C00BA9BD827E701BDE280 E7A36A629F5B9BDB762E4DB3DA7119F6C989049B05ABD147D5F5CCBBB0ABA615 9C4C639349B44E2A281E2C24312F1DB64E0CA446BFB3ABB13897DE7ACBF61A4D A0F222662FF0B6783E357B2E7C23219BE2CE83592167B794483E3E8CB92920F7 AFBDA44A8AF67AF8DA309ACB8CEA3CC800FE9E0FB275DFF78E87AACDDE1E6E56 875408F8C458AFB97E98CF7A5F94D618CEDFFC10570786761E86828EA7AF4188 974EA333BD9E5F8E96637613938DDE1DD4B23BD943C639B4012B8016DD2F827E A1E4FCD7F8F4361B3F371D6DB6258D355958DA8513E5261F0CAF9CA00E0AD71B 6D5106B684B8C1029B9A3C0FA15285D34D9032768C2B2B95064DB246F33C2574 91C758E890A27C64C2321DA98D2815CF94E759031B1B9F09E667B1397B10B75B EF2F153F6152D452DE51C33331DD805E2430B0E28B4301D5DF00A69FFB4E7803 517662BC0E886F5E3E19F0489DF9D5B38C1AB997ABB189343F24C4D2E3806178 6A7D7EDFA6E76237707E9BEC11F8AC3BE9D148CEFAF04D2F8519B6F668B7F5F5 599DD239EBE4ADE28B3425D07C521E38D758078900CEAB6513BB3FA3EB7EA657 C68236FC60A22027E25532F0A6B3E6739A5172BA754AB829A89130E732222FCC F1C6E2ED54D9DCECAC68805DCC87B01554970818B374D568AAF8C41149B64CD2 3BD0882565E54BA32B5D937D7A920630946C8DF3ED583707E724ABB4D1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /UniqueID 5000832 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 34 /quotedbl put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 57 /nine put dup 59 /semicolon put dup 61 /equal put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 91 /bracketleft put dup 93 /bracketright put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC7448C1719C88FE99BCB73F7DEA427FBFCDF4F 00EE079B0C712F7D2C8DF98D4830A9D8C8B70A8C5D54BC1DF433517EE593A104 F3E083BFE49E9CFC4269A86B58AAAC141930A2B4193F74FACC1EFAFD38D3EDD8 A667280B865E25B0FA38A6356EC5262F82A105754006EED77905F74F4C14DB90 985DB906D06C61AA723C8A341D0A0985708D3F2F6F1289308A60706034F58E67 1291C7BEA795B127964733B0F46290014E4AB8C2EFC45C14CD8F85B8322DAD12 26FE504620FDEC177FF154462F21E9A2F3C197EFA55B7787E19755D48645C853 2F04036A092F72DD544A3412418269BD7D1D47B1B478FE28C2CF12E26666E3B8 A99DD9B91EAAA1D69047CE602F03E074FB314CFB957757B3A040B5D3E4129B8F C87B571B2FF745B8CB245347F082881B38DAA2806CD117CAF7BA55100132819E B6177E688F411655C48FD5DB2CB06725990316D55AB744B3033459B45728ABD5 6A234E70F3A203377F7D1E885CCEB80F10307CC13A1050AF50290B68124A7CE8 93095F766E2E7937D120939C123E631837410E4D41AD2F24D7331FB56520C154 03904AD426E8849C398F44F3BCE71C6E4D3DE65D88CA60D30F9BEAB0C83FB24B F06EBA33610DA9AFCC96301F43C3D14A8D7608EBD30E2EB399A9D9B5FBCD803B 4C9ED2CA50CAA498EBEEA0BB368DBD6E533D9EAB8E7B83C1C14937BFE9AB4DCA 72170465F024597766D01BD59A8DFF2E5A4FCA8822D946104758224181E418E0 E9B01A98440EBD87A5E6FF6BC3EA86261A7E9E44B47890AE50A6E6A2F6F710C7 75674A7E5514664A9DF5FB2EC66E2913264BC07CCF01EF9FF989C9158DA111A1 4094FF9A979F99AE37EF099A4DAB23C8546D652AD737D670C54B521EED1D0682 8DCE13D4FDD07BD7C98F0548193391BEAA9B5D9564B980FA031A34B2F157E170 E61E6B7F4B710CF03E37DD2CF0B50DBAAAE3646664A2DCDF4356EC3F2444D646 B0771F4D9EA262BB9558D8CBAF06D7B237B572544CD891E6D1911EC52EFD0DE8 A7B6C80DFEDBA2202355DA51DD5D50C185CD3E21D4F043081ACC100344723E84 64296E8C6A4537D7D91B5BF46A636EEEE6A62BEE91ADAEEB7F3C763D520665EB F687EAC6E54B8EDBAA560F72C1F50D22B1CA77DFA83C7E7C4C9C8FA62A078FC4 CDDE130A3720E211D58BF45E593C01340897BF1CA8F220B217060FF2853B284C 479B2FA756E7A67C5DA7C0152456542360661AB3288E1B8779CFE49345B30179 5BDB291E7A1CE64DECE4EA88FDA367813F0B8C9D971A7FA393D88E8E512CDF94 3BFAFAC56DCBE61C789C1C478C407682B48DBE953B8C0761D113BDC9CD883E30 1AF27A3C413336CAED2E815F0B5D7C5C893B74BC3FE33FAB6457F5D917AD0A37 654375321273163A9D2C4B706A00CC6F4EA266D810887AB66E67B9CF4D7E60CB FAEB2AE092ABAAA607148A575AD8D5C9C2D8E9B7C6A23C5E3478717664A84A9A 8E24191EC6EB7040D85CD4D1413F647D905576F13E19D4789B37D21481BB42DF 11CF6EA64A1CD6F8637CBDB25DC244205FEC8878B7DF20965C58338040EC5E29 572AE49002D43E0B7CCF55AB80D9615CDC299525A9D3B225000248398EA6C9D8 2EC5A289B11A1A43DDEC6576D746C1AE4B511067A131AA01FFA03FE00EF6B461 7F679797DFF779F22BBC904706EC9D364FF5656D24E0DA263EA156A0664DEEFA 6A4F2D4630E5DAF34FD75B830F55B57E7814790302010956C520A7F73844BCF0 56C8F786AC97514E3C325D141C1CD54E5EAA8FCAAF6B5E10B785FC40B87F36FB F09DD4C22293A666201A11EBE978002BD1417AB863C2615FADC466132443CA2B 57817C8811ACD7752F51339FAD5776CBFCA88BBEA00A66A7F0E606D1EDF57513 BD20CC04C260270CB30A07027C79D2A3656F0F847653961F37E3B9EF955D402C FD58E761CA575682C7F640CFD62AB057F8713C39C3685232B759A4516C6C2968 CB726ACEB21A1007D6F060FE55B3401D6CCE000FB52937E344AF49A755E40001 A7DF2E63C1F3F0C2A79F68895770EC42B4E93E5005518822171C293EFF3DEE52 D318344DAE1C20EC756F18E1EE94E83D0B25C5CE55AB4DF80DEE911D722B6384 E21B4791C5BE24E011A345E1F60443A5976A1131B4C90CADAE07838F53B0B746 D55FEDA1CCFE64BC46162CFE2EAC863DD328D3DD0C225AEEDA0CA977FDD4A0C3 CB5562C5E7CA68F32CA6F6291538E5D7E88E6C6190971AFDB87667027B94A23C 454B12960451CE1B620D57E093BDA57840ED8F76BF702099CB0B8F814913C32C 56CEE4BFD8AFD7CEE1E967D5A7DA4B1063246AC983609D5C1DCB874312CBE81F E61103AD1DFDDFB75E15EBB93645C65791FE45F069B794EB4D24BCA52B81E2A4 2BE2826A639C328F91583D3768019396B5F311BD1B1367939AF0BFF6EFB40EE0 407E31114733C788AFDE3ABDFE0E0B595F2DFCE912CF308373771483C26BB2F7 62A9B2DB1BFC35DA83448DA708654D11E5F98AFEBC1391A91B17F8EA663646BE 383B662A11E488B67A788044C4B846066B47BE2C9309F8C9962D02AC797FC38A E6D0BCCA6315D5D70A40DBD4325AB165F5F66FFB039806F365C599A9AF76FE1B 769CA0EB525C4452AF3E1AB293B2E4605F1B26E3BFA443C74E2BDA2C9575674B 2A47C068A4A266618447DC37FE94DD3D888010E3C3805C0E407B01D5B4FE4357 4FB0FCA1D20214F51B46A07B5B5E4F3652A33755E533A756E5AEDCA0C2E9E6DD 162A754295A998A77FFC56DFEB43F0EBD081FAC3EBBCD2DC47090BF198041964 B873B77A2C31D9820391671467269A981F51AC4E66A3F824B6F28E8656BAEEFC 0E0DB0CC1B46B0ED3D1601982325CA8FCD011C7B0EC0EEE216AD2555A8CE3A48 84624BC8C92B05260AA514CB3C0C05BFC949D6A8C4D04B1D4F944C3F2AD371F1 0BA0FFD8CE5BF5CC2A5FDBD21277625D0BD34E4D823CEAE88D841922BC282744 DAE6308DFFDF39F1F1C693AD7CEEA324E46AC9BDB552385F7B2563A8AC6FBD22 031DF3E961CCDBB1F50FB3AB79FCACC90A32CD5159FC40A800D75300D6CFD67F 9DA4FF17EBDB6594DEC48FF875F36FF8C065F460C6B614AFBBD52A65F90CCD15 15CFEE5CD453C124412BDDA1A5EAF14CA5C58E385FC97544F888E8001E12CFD6 6ACBE5096E4F2456B353E9C581539DB419F43CD4314E107C465F312DC2ED7E8E EE9FCA1B8B7B45FBB0BDF927EE4E790A79D8AD6723F10FA1FDD335C1F48B4829 382A513564548A743A9D659B9B8752C1591FFD150200A29DB2C61A3E1AF818E2 CAEDD6513920D69C55278AFD1DE0BE4D3FE51239A40BE8A62F8317B8C0F34A32 8C56C4655B4BF53F63A48CFF6DE088D9FCF9742412077AE6C9B751A9C12FFAB8 C80138263B8E0DA1083E01A37B935A9F09949C0383CCB218B2BDBA46046F2243 0DC9A884962A9F237D0322E0395C668634666E0F51A493574984EDA7891D8893 D77C1147968C8B13E52C9309AAFAAA5DEC0D0053C535E7F3D3D9A333F4DC5C9E 715B7B8CB513DAE3FD481538A2D91C2770E5C1C5C14D61042B27EDD198B67A49 DD19454E198796DF3977E8EC81F1F53331A7FC4C23138ABA12CDBC8900F98C90 EC4DED6A68052CCC84518C63DC697BD0B38E141C70AF6ECA1B6807007A6AE848 5F65C9950189A14B83113CCBEE6EDB90FEE9D5A15784CADB532861E2A1C7E38D 31406CD034FF2BA6084F6AB148051A1987E78105A62A475FBB7D58F9F79BEF5C 8466752F6CF7075DCFF793B570B916CF4390DF3192711F973F0DE983135FC5CE AC2116057E06AC653114D9B18772492EDE9E79DDC5FB751B06717064778A4779 E1FC48FA0E9933B9072A378F988AC9C1A1E32306ECBD12AC42BED71E8F9FDDEC A1FA7D183EC93326C91002078694606AB1273F2DAD06753F8C4586E157F41DC4 862ABBC9851911350CB3D1755BA8F2A21930547D6117386D46C90FAE45CC15FD C626F1C5C6D74B4EE322DCE6783E12920DD0B22CD1F28D975CA8A4CD0536F947 E62597CEB29A1C0FB15616944F90007B9846911C6779A481F39EBE602CF40D59 C9933495CB46C9147FF6EB28485129D99B610A05F7C2335E0C848586BC30ADED 9DC7601516DBD3BA1216EF5BA9E0C1049A2553A27ADCE69A3A0AD7EF3B20C06C 176E999F098916E87FE6B7B2DDD9F130640FDD94F50CF6D6BF90E97A8F803BA0 6826F2D7B39BED9D8DBA2EE790749F9C06A14D34056F5F15D2B6A44A191EE8D1 0A30523FB60F36A15280D6712081452B94027C8BD7317BF8BA9FE8ABD6C32F8A F149276603742220977C9303A6301E78C06DA652891EA8883A72D8A3D258EA0C A1BBB649FC412ECA10D3C18510587591419E8DD0EDE52886C85D5E4E95809079 728B7091AD3224275CE9A54B05306F57E46AD405CF285ED4D5D04B6A3783BA4F C30DE6E4C5E7A9214D8DF6F436B2821E17564D757622CF5C587A3C186C99E361 A05A67BA63B5B8F5BAF646ED9775E3C0A3C66AA27F9E5CCA67E20CDACA3EE8FE ED612947EA7091685A7B942B9B6642B682EE29AB1226D93F102ADAA7BD740FC4 EBA1C8499D8D703D769CAA7884C93DDEDE574F26AC7A252CC51961C6C4B80827 850E6FE834AC550582E4F060C09DA2A05933DF5752AC6892A7DC1E81E0549170 8AC5443054C17C2D7424FD275FC336002732A2E8347B1C31B0C9C25DEFA3236B F6E26C5A81CA8EB28058F008DB029B681A9CF9732D7F6D45CF53FF8D6B5D55D6 9010752E6C0D99CF0CFF6DBADB583742DBAC3987AEFB1781879BBB372EB2EE5A 0598169DC397A7529ECEB3758E9DFDF0CCA92F0BE127501A7F301D72945F7782 39E4D4FCC730ABCB7F2A780257C25473852A4E9290FE82454E20D9910182B990 F2A5DB57E2D2A4C0AB2D43D23C2FC58F5C7558B40D20C2CA9B96720227525729 002850D1FEF00430B2C04F70C17EFA08230E43E1980FD7C7B790E25B0214EF0B 00CE4941D3C6A9575CBED3DEF2DB72C03F01A5AA0ABC634995A712AB2EA52891 C7B0CD42B126A013946192E55EE7B5FD1306E0B7A65028410430603E71EE30FF BCDA0E322F4B932ADDDFA51F86FECC3B7797B08D1E3B37E9022556C784D8A91C AAEB452466C998867860F3352B29157C7354C40B4E59C862C635939F8A40B502 B9EAADB8FAA3E238D429B9AFF970099015E60441632CC20875C00F4842C68266 5F9853A12D9BA77B497CE7CA888BA8BA3D317C574DDF4B3B2CA3C1B7E7759E2B E93BBD0D386354E9A92D00FDDFA41E0238A5D6850915720D38EE38352B9EFA2C 5DAD5565867BFD62DFAC4EBA94E222B890943ED5C32903D5BCA861AB16A8D2E6 0B33136D9A283F7CA1C87ABDD04CA1921DC5079244B6ABF9FDD0EEB64B5890BF FF1D1B482DACC49EFF09B04C016C39DB7810D4AFB6978CB705A8D9C16FA24FA2 ED5E273B7A2B66F87E09D9238D564C134E20F60441D935C359FE2752F34C3EFA 52F2453ABC5A9C42C27718E8512F0908B8D586177DB01460FBEFA7650E0E3CBC B713A0F9197F7647E64A84E95D4837AFA7E3CC4B14E9B6A711DADA76FD19E31B 7C76975EDD85F3C2EA3D5F7103C122F5972A3DC8AD74B1D3D40FE5B11FBF3D8B DB0EA01F7CFD772EA95B1C7AE090BBE9E08AFD2C2501FB9EF8A89FE685B0D04C E13ABD96D57764253C84DBDC0BEF9877CE83E1E453DCA25C771A4A47D3A9FC69 56B497C9F83560F5DDB4A3A4C7669368363B2F1F6BF37E2C0F5C811531DC9D46 FB97E73A3AB2855331BFB508FBD3D34A58E3084133435BB2099F1C11A6F4E791 3844A7A0D2757879595B0A5DF94AE5CB08BE92315940C0D703E44059F1C37CAE 02298E458A70F6BF4F17817FA0EB1FBE7B70C8CEB0C24DABE6EAEBE19EDD6ED8 7D219ABE83AAF9C207F5DEB04458F2722465D65B75E7242AEEDFB3F35E4AECA5 40C437618F9BFB937EA67AB859731F3367A8F92A70A63B23151C577D5EB81C85 77D565C6B7FB281BBD49DEB714141A10B49E14F1CC8B65DD00E840880BEF7F9B 32410FC3599C2255DC5F882C1EB30B4F574D09681898C423AB2307DE32252DDE 321C46F93D66D29E6CCA424730AB8A1FAD242DFEDA0FD2A5E7E90D8B88B673F9 1BEDE08F0BEE46766E9B89B19630862E408ABF5AF7E3F281744E8379E5E8B41F E7436EDB8610CD79581003DD9E58F289907E3ED8FA8F131731E7083960B9AEB0 7D0372ADB5199B1032A30CF256F0E36F6C198D424BE72A982B3D18E8141559E0 DF2531299CF2C59FE0A40C95C896B360B06AD0F05231BB6A43D0C550A4E22985 1132750C49FBC1B1171F0DE4EB42482E8AEA4A471655F716D637ED901E64464D BF17F47C94748DC8646C8C8D3965CFAFC6C243EF073A46ACDD8B283B19984F3B B73B1BC67BF07609CF03EAF602F211147BA146D78CF7F7DB16D6BC161558137F 24F79BF84344C00A24A8C6A7902C9D83655221DCAEF2AB62F9937BB762FE6195 481E2E05832F6691AC2FF1DD597E68D28BD1D40C3614ACB72A9E8C4D7DAEB576 B3B5712B0AB612458C1459C3CE77D86FE7E836D491B5C10D84F12346D82BABA6 8CA9E1CB491AD747F96DAB1FAAA9C938E9A9A3F83DE248BA707002F21EEBEC96 85B1980E290122A6F690909B43F2473F9520ED00A407590AC07B9D995B24467E BCDCDCBCE11E4A2E9DE822D904359CD6F491A9E62E1266610703D8B671434BF4 A354EE1B3621B4C7BFDDACE21352A55BB869C34A67059A71BF48FADA5C0CE696 439628CA42EC01AA6F8C1B91A72EF9FE7CF81EE3DAE4C453F90BB398060D4892 3F161C4A996A8EF5FC937A54D915577965EA3838A9FABC49379E100FC9F708CB 520D8AD94516B313BB6A8EE88FBE7189E187C59AA0C43C5FAC13D2E5CB273C36 600E3407779551515581F8BBAB7FBAAE10D08864BE2CC39F046D75ABC41DCB1C D1B15DB49982D454D1F8344C64431448DFE96996BAAD45F37DEF1A0109A979D7 A4FBA9F331A24401AD99E3472A5DE66633843035D8C0A0A0EAAB9FD523EC1320 215402659BA0E9C2D2629885068E1DD59C731A0B6D0C0425C42E4C4452A8ABEE BE6058B75C103274F0987453580C333490999D95C844508C1C48F27A3185D06F E48FA77F829A91342CD8ACBA94110D3CAC1C6BDD7769DE0D093CC3F7F853FB74 FEC3072789920A07E441EEC51425F38E5C4B26245C6C09D14695224071353661 4BECA18AB402BA009F545847359558542A382B19F041D24D08885E1794C3E425 55762B8AE6EAB20766B0A7241EB4174D0B4A1FD3D842C905397219512C43B580 698AE11A4E25DE45F073A7DE01DFC85EC26C1DF771DCAB7D6B68387E516132C4 43F6424AED11D66150562874FB533D9FA5262D8836E0A0EEBDA725927A1489A9 91F63C822A149784B273862A57797AE717994AE777E53565B1FA3631CB0A552A EAC095446EE21EC3047B17AF3F88D797C8A671CBC4522431B99DE6891224A561 9A90E5C6A638046699927E182F08334714DA7E6C016A4642FCBB16FAB8F97C51 09893529839054F34620403B31B60FCB1F5AECF883630199A8F909DE071B4C1A D744A7441534EAA6BE7C7CC62250EC387D0C4FBB15CEC2498E62C1C39413D853 847B32CDA47B0836B5E3093880478C47751ECEDE33AB2164996A825EA88E91A2 F1269D4C3BADF2B8AC368CB3D5AE3842E8533403BADD294864B40F33343F553B CF5AF4B477D408AC0243FB7897504111CB99EAE0AB4CD3BDE085C1F1DD8F6462 C678D2531B0DB8559A0B1829683207E4F685D08448784FA565E555EE829A2BD2 09858B2836CBB78134B038A2D7FB6BE1726516710C6FD75E883E4010EC6E96B4 2092684344B438F72B45E5900F5156663B64126DF21EB4F62F9BCB77E42EB778 38B8BF79058B054625C50C856121A5E8C15FCAF43294D955B32ADCADFC163D3E 49B3DB47ED9961B6076EDD0B502EBA85CE896C6460FD848E9A77BCFF818C6A14 0922C329007431A30EB0AFCC73430EF84A1021B26816D026CB5F4150B420C14F 1C419F85347EA3DBBFFD65EFBAB4A41A7B618F397A677D32DEED9BE450C0304C 27C99E3550FCA29241F32961A206F49D0517BE75466DA5AF126005007595E8B0 61B88E81D054CF28ADE251BD8388898D1AB3D049D64B49F4C345925395B579D5 6DFFB835855D95561B27D609860704014D4ECA924BD09EBF4D6F43F9FFB090B6 A4E95345DED400C78F291868A545CE9F5D8259EADB8B9484D9179FA22A2CFD9C 62CC41EC8B0128BA16A354D87393CE4C9BC85327D44D9F1322379310D4E23657 75397F20527A36C0314373A4B16DDC362F7A47DCCBC342E0B099C291776B4E3D F5D1AC2F3953C9E4D349915811D37EA4A48A8EA334E4E62887DD80F1C77E14A7 2CAFB743B8C0F2A92447323D821DD0C368724A35D2B660BABC94D42DE42D273E F2A8B5F8CBD7C66B0D1B9B0CF90C60711E5C28AE1596E1824F1392AAD2B1E642 57782EC9CD05BE5A65A3618F638DE281AC66B862E894E52243CE851EEA1F34AD 85D1F641E46AE6C339900BF3D1E3D6FCF1478BDC5A30E13C6AC1A285645806F6 A72E42175724EDEC0CC3B44CE82DDC8E75DD413871CA016884BAB5B2123BAFD9 64F43106B15E7866AA88716B2B9B490E5E98E005E59670030E3D82FE5091D7D3 A6B32F66E01ADC8543BC60DA734A4D9958E1C3D6DD232E5896E34663A706E5A2 D35FEA0CBE353A460B8880119F8B16840996A8E473D7B2D31AAFFE34EA2A25EC 804D57458AEA600D0B192A5B43666F2B2F6DDD4EB5031468BA67AEB6566466C2 A335403EB8F5638962DD1EC5C8818C56AB1E687F9756BD85C28F136841CC14DE 23A4F58F6A49B440DFA7F5C260FC9C15828351CF86C57574F16D079CF5E9E503 AC02DD90D748EB24D3213F09A650655F6DB69B7D191A727E8487AF986BA58DCC 3E9CFB83EBE398460F82C8FAFB84F6325EB13D246B62B51AFFFA9F3287C03C7F 5691AD3CDD11925D69DA1EB7D17BEE8768CEBAD112BFB51A522CACAFCDD1081C 5639410DECECE0E34ED196F3CFD5AD7D9956881283BCEF7789C16B24E0B5003B D3AD684B3980E7AF816D95A44A34C654417F669861B8283152E88A16581A9345 59647D6DF61D5FF787C886C0BBD182EC25281F1BE1646D10D25ED5A1239839D1 56F28276DA1A97ED0C08FCE3045EF00C43ACC98B3238E82B750ED0B5F37EF922 158BBF1EC707C1A026FB639EFD288ADE4E0B74B2F1BFA05A2B16E6418ED418B9 14EF760119F8977C191F4C120DCC85E8C6DA22926D07C66F736F6F6AD23E77BE F18695C88619C6045977231D86C83ABA3982D576423B66F2BE44BCC5BF60E623 618DFEA61FADDEB96A7D624A34408927D069CF04D96296F436C43B652EB518FB 0123B4CA6BED5EFB8F7A60B7F5D805BACC62EFF0E0039F471FA9788E9D067B65 2D05807508C8342DB3396DF60CC8CA655E31A175AB5319D286353A12A172134D 242D58016BC4B4A7CB010346181ABFF23B1FF76EBD2DBAC5EF7B72EDD4CE40AC 16F9338A164208B58D01DED10F9D0D42EFD230FE09E5F28C6F2648E89788CD4E A76CF4DABDE5A169D13F7BD659B7EB1382EA9C857791DCAD86BA074773D7497E 9F216A13F0509EEC3A55FA2DA5C22FB8CD0F00B147E8A0687CBA7A06CE80E616 C0A314871BD77B7DDE02DF2DCF800A2D465EF6FDBB3309E42AEBF671DDD238D7 58D13114EBA73DB25C5CBA161D8D7764F324440468E4903B3667C4E8710C7AAD 5469442869DF915E2BA469B6A63CBA788D18B05FFC9D6FA0E69017221161F90B 4E9E7F8DBE4A0F0D0A31C1950607915525DE50E5915586B2F64B515688E5698F CA191608B2018524A1A12A0D5EA11461EBC2D0DFB8013504D53FC426DA56A7DF 46779EF531B92003BC8D402790E2E90BF104C08F0BA73F01BA0CAC3A5A1AE607 5E45B2B9963B68268CA1D31AEEE8B98E5CE55C4697FAD87DAF7BB289C40BE368 FBFAC74F6A0CA86E3AF1FE72E755C055916D220D69D6CEF10DF1F4CF3881B3F8 D092B7C40AE668C8270C044755AF6BA1F07C4B1B09F3761E269A29CE3DB04DAE 60008CF85B17CF8FEFE1C0C1A9A4809B6EA9CD0251B403058AA0D1B21C1962AD 0CEFCB2F65A58D4A2C28D0E9FD4CE3E466C54DB07F81F46D71F520FE03C9F0A6 E655E03C84E69D9318A66B932EF600EA582325FD395B9AE0736E7A8162EE60C2 89D04C0D6088E59E346474B9A01F2BBED304B28C825F64D8ECCE3E5EDD7109E1 DC5416632C86734D5F7AABB850EEE695E5F39A82158707E8C7437B14DB7F9D6D F4302381E69CAA539B2137FB82B7DA94F7108AC87AAC648504B9EBB3BC15AFC5 A731F2362306CD8251E18C166A0AEF1B58BF5977AF901C04F74C8485F5B3F07A 3349E06A8B8F462974205BE2225D9AC4F412B362C8AE8D89172DCCAB19CB9367 DA7021B87B4F422B82FB22581FC4472BC09D0D964D1F810C04A3302A7BD856C7 372F69B2BE1B63CA373D9337CA7099E7A121B7293158A4211C77A4B439E43B46 84A767F8B073A4CA883965518EF3AA051A9F8D702E8FB7BADE3137F81C1384BC BC21F1658F56E224E33707E068070B1F320009C064DEE68D37B153A5DD300877 1716C828F37A21A41142136BFBAF408E632AAF8F4A05215A7708BFF7FEF433AB 00CF7908A0D310E0D6E8AB4FABF6460EE437792EBE657952858A6F0A3F7DD5D8 75056F1023C3D98062642724A180AFB99EBE75F9E9FC9637548FB6AE65836296 42D48861B06606BC5EB528AD36C4813588353B22933CEAAF6A644BAC2E3503BE 07CD6847020D2ABA8CDAE8E0BCBF9786218D5422E854988F2D4356F09829051E 5F2E2964FC1752B45DBE783053331FB7427E764C3E4FC6FA36DDC6A3E07CA9CC 6AD36CBE7479549B72D517B77DA5C9E512AA4B0DE29CD5D7C621ACE80F4D1C42 5EAF35E6A63AE3A4A4AC7915866EC07D54C89A80F0BDD4918E7276929ADEEE94 9B35D06B652FEDA860EE177245B49283DD439001AAA4A8250DD2EC6E4F0E4488 0AA28C122E55E878F717C748B09810CDE1C4444C4560739CFDE15B8D53DD74E3 EE9E3159E38E480270929137ACAB0D9EAE250855E911400D4CC8E31987F4CD81 26B99F523B8719A55825C69A1BEBF6EC73E3C6F141E076FB3C656DF4158D35C0 D0C3C8CD1F49B4F5585CB1ECAA11ABD079AC93F89216FEF8D8F043167070D434 1EB6C5DD7A628DAA07AD3AC8A219BEE9D077A0D1437C9B3E72DB145B019953C3 9D672458D27813AFADBD846007A0AB1AD4EBE5E96D4BD79AC62E548B38938276 4DC241811BA5BFBD8EB1EEC111036B4FCFAB401D4B5F8C6D2BCFB4365C06BA91 B54F94A467F264C9C9AC5C7D32858ECAEE2AF2CE134E2B8EECCC4E30DC722899 A96272DA266C15F271640C484A675CA5388381E03C638C43CA8D588F3BA00175 E8898C916362DD231D55E7B34412300A4E161D030BE6CFB4ADEEB28F3384DD35 036FC252B592123AD2DDE2F980B292455A63C1F879989162975370A4EEF685BF 6B20A709A76301987799D32F0291AC72E5CFC62F3DEF235F78AAD89D81E0F5AC 5136C9454177B6A9BE7BE18D71AA44504A7B168AA56A2848B226A90A339EADFA 5709FF957BC31E508F87F1E216EC8815D27F782AB8EF986438CBD57A873ACE73 B589E76797D7F0CF02B274B8A05324B130B2FD18C6588C809E7420FE7138B51E 9E527BFE5ED8A9C99C61EE036C5B7D5A84E6FF39BEE2E7E7C34DC3997FEB600F F7CAAE349CF5F22E33A179BD191674557CD66683A12FE52A1CF60F75A3F564B7 DA1061810CD4D00C91F59B474B5E8D2ABB2774CD0DD0BA741DB567BB77B41112 44CB5ECB8460EB9FFAAD2A0926410DCD7B27AB232A7308B930610B10AA367368 D01981649F9B582D02C3FE0E7D36C1A503D571EA1F19DD89FB4A5B009B30ED80 7CF2A25633829DFF04E8F604EE728DD51D60327579962C0057D74523AF6EE2AF FE2ECFD9FF0F8C1855E11929F21078AB150334251E7F7068BF7054DC6C642EE4 820C31174F81630520509871211311A4E55B4BD817C90D033DA45F206789F34B 747505A5133D965782D2FEAFB072834355DF5FA419CBCC023E5702B97C967D60 FC0AB14CAF61E782A336A550B517FA279EB7E4BB0F8E057F5C35047E4C2B9EBF 76BCB3C6EBF99E02F7C52DA77ED531EEB422AF66CACA951051CEEE3DF426BD26 E67ECB342D10EE9673FD6BFAD7B09DFD99E6F3B0253633A8DFA2F2A675932F7A DF68A03DF479A64E39E02C98CF22D95BEF1E9A72EF3045A693C62B1182E8892D F5E98621087FFC30F79269DEBD4C53E29B768636A5A7395AD8139DF878D1EA32 30F2B8843EC575FBDDE1A1473777BF2DE7A174865208D6A42E56182E8F5234DA 59F0EFA5AB9D287B88BC9B5A5D2B2DACE0FD76E8BCD8C9AFFD87EAE2318C57DE 7338C5D85493AC164245DF88983C304C8736C933C67CF4E8A2006B7CF3BC79A6 44DDD19A90CCB176AB711675F33AE4F1C177BD0612C329044C71B7D52D46A8FB 7C80105D24ADFB2AF183535E84BAFCFE4562D19C3534395FDBD47696B909EFB5 F66DD1D931BEDDF16E7D32738CC5DEC2EEE7C3B4BA41A2F385A84BB64B2746D7 CA9B58F27F13ED275A4FE86E833FCDBD2A7DD50F67051CFD9B018B57CEC00089 AB0B10A6F304C60249FDEFD589A1E8993D3644972D1298A40EBAE25BD54DD75B F1217D3C29C6608A686F49AC821945AA64658CB127D2E4BABAC5C0C7E8AC486B F9B189C564160472102A584C24F30350C7EB9A8AEC894DAAE8AF620CA931FB2A 32A4C0367F84F9CF2121CA9F6050E1EB5002D33248363E72309153462689396F CCEAA1C9FEEE4433E0A92487A65E3CE9BDEEC26DF742103A54F197AF20413D69 8A7CF29F04F7EB896279EC66D4410D4CB6B291B56EB72896E235EAE7B5D32C17 82C805C51585AA151E3BC3025DFE8F0C52AB4D0EA51DCC0FC8806B365206EF22 FA39492E622109344444FE9022F4CE705E05EA56DC6E693DD246B55C97CC8BD8 B34B9331B53921CACA645938017D730930D48F6DAB9D36F61952101F86646BDB 7C9C2A876BAC18B4FB039E2168345F7BCF3EAB6CF372CDE3110FC462CC475ED5 E22F63D9B2BCB82F485C051A0D60886790B4DAF38853B63F9669C9A004D8B985 6FDB43B251014409CFE2277BFC03C350FB1F27183E09B71648697C25B8BA04B9 3426B674CFB5B790CE18B97C720C25010B50768C7A798D5126B0B9C8C2EA2D8F 7D57A5CAB2A06B8C04CB16E5C5AE3F5DC78BD84C398CB684A60C2D05D77B2EC2 2E01EF83A96F16442673A00E3D2B2E8BAB94C020AEA33BF50B8D3079DFCB9894 8F45DB8ECD5ABE799FCF304B49FEB9BC697CCC00DDF9A22CEA177618C8610B46 D7B153B66DA59405BCFC0373DAC9CBD229749F777687ED21CCB10882E2B0C732 2311AC6B5ADFD183C6D082FBD0138B6887B0A8A49D2094544E2EBAE612768B89 F7DFAF7E7D53BCC13F51A2B91D62137EE380A437624813EC8E1693EB04580944 80BA3E392757A5094042DB27FAFA0C8097EF7A0E4D29F2C97C93207F754C0E7F 06C5FF629DDF12A9600C79EC3B8BDA67A92B90A9B4E827F48880ABB7D92D1638 0C0A551742B46CE1C9FD2B8D1A05EBF4B4F12E1F27AF91BD450D034BEF05E101 C47283F7972E8A46FC195C015CA56CD56C4C3B85A5E39BBEAAE5AC4715942886 8718A471D56F8FE093F4AF265BA4167BEFF1DE3BD877C91525A026F9C2F8F7F3 6A6F5342D3B02EB41D8C72612FAF0B8D77478BDBBBDC518BFBA6A544C9C6BC7B 475C222E902D458A3781477D00E3A66AC035E04BDCBFBEFC809E40103920321C E5D7C86F4E0CA5C267C7C761C96671F56F5E7590FD87ACD93DB1524CA94D7455 C961B5772383B2C5470F593DD015D223657214C31B3388BC42EC3429DCF18774 324642954C3636876D4067E0D1D8FE56392710A1D6C445179EBEF11660ECD976 09ADC507ECFCD6928AE91DDAAA4E5C8357A9D6AE4A61FC4352A57634B8EA6E95 217291ECBA4EA3D13C083F36AAF8F68855BE84503F4AA81596C6BBD915346C2E 1ABEB5936A7C0DD7F63D52CA33E314E238FDA83EEE6FAEA59AB62305963C008E 1B0EF80304F5124572AB98117C2AF9F6EE2DF9553CB661570111189D13E967C8 5428F97DDC4FAE00D3CF7F3326AF6A02B1131931ABF48676333808E8552EB158 4FEA8E3B0CE768240F0E8C4471C44190315F9C455CA068202F20BF5089F5A0DA A82F0F8498C297DBB6EC67F19543C12929D6EFFD280A8B3D83E71592F97C2ECA C78A1D4548BE4943E05A942079DBDB9ACEE40A3C078ED19D6AF7BAB2BC817012 99BE352A4AED6EE359A6E8CB03CEADF230DA88146186AA51F240910297DD2C50 B867E792C83F657516AF0E3A7A12EC235804F4746C3737DC66C3FD6BD7F27C5A 8412E6105CABB9026B437D7886BC31AAD89CC7F0231889CC303C85B9AC792F32 1D750108FA63C886DAAB368CAC59748C658D2D12D5BDA1B87867693BBDF7776B B163D828C7011FD7D6F0F6E24830FEAFBCE9C0CD5502BBC7415561A840A44408 6FE8F2C155E5DC814714B847AA61E301FAA0ADE429F176101555727FB873FA22 65F73E3F72A1316E51DDE3CCBDA99946568D14BB905661991776DCBC87CA4769 01DDF02FC20040632C21AAF06A6384C405D5F163CB49EAFA1EA379B6ADDBA24E 6516289D077695630ECADF654E3321DE512994859B4BE86A451C9DB75B297255 4D0DBB6BDE21A2042361F4EB752D77767ACBBB05C716284BB311D1F617602079 E2FC739F8A1CD5C2188D22A03C80680BF94DAFD9E31E286C4D0DC9BF9C3C3AFA 635F623322AF1353E8B0C0EEDEA21D2080F77CFE47472FF6956A7EC8B067F153 4E4F8FE715A82E1A687ED7D9AB7DF663BDCC92926648FCF73C7F69ED89105384 78BA0BF2089BE78BE8C74ED30E989BE56591EC27D93AB8E09554A5710EA1C462 E1B4CF4695936EBA9A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /UniqueID 5000769 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 39 /quoteright put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 52 /four put dup 53 /five put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 120 /x put dup 121 /y put dup 122 /z put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3 C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055 531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13BA 6CBB27085F3E9FAA6F6AB25CD0F9B879FC87D5F6BC8BC00A44123626DC9CB159 90C6D14B7BCBA095CC2BD04A7126DDD4AC823F4AC3E225DFDD7CA9031023CBEE 603CD1DC2AB701F16FFAC44FAD5A50EC402F70F4C2B4037721724A6E83151BBF 93BDCC6AA2205EFF87FE0EC05F943FFF9A23B8BB4A46413DD03B8DA4197815D3 D30446660DE7130B77CE34EA327F003CC222EB18E4AF189285CF4D221C621EF5 4830956FD9234904D9445FD2AAF059D7237A20FEB0FDF275B2B366DB28F73DED 62927F30878DF7A1CB7B7BDAC1892088C9CB6A185DA9A951B8A621FE44F09B8D 68433757F1C90616090D076D69E5745510F2F0BDC756771B8DEEED6646C99D6A 174F70D02EF369DE914B42A45B8A9183ED735B498E98B3FD79975D503E33E3E1 C8C831B4ACE602D5B2C9B08786A8681E103C7E0800E3260C0A5D91A2ECDEBAC2 C057BD1276CBB6D5AE2C118094B30508A0BD63C60A878FB0857F7127B5D6F680 2D72D36FD6932F43E5F53F4364CE4A0C3B4291AF4692D350CB5EE12C38BF774A 6F8BEA355486A06AE87DE9227AA9A2BF1C30EAAC0191882726C9A7513072D5D3 07DC74D0D78111C9BD262B6876EA93E8A1FA87D55CEBE0A8C1C7E0E82156DDF9 507DEAB1A3E6D1A0D7A833D6412301A9881B7B07CCD7E4241B7B0537122051D1 E59F1AD8015CAFE44296206B89661AF1C3B04C08A357F7269F504D2B55A9D96E 9E514E85E6F4BA093E894F9A290D71B61471AAD0949ADD4EBC9A45C497153987 18071FA5C9CBC0A0DFB94F1FEE7B3A62A8BDCDB431CDA5BCA236F48D4471844D 5DED0F546B5BEF1AC041118B0903C180DDF89478AC5FA8DA36893FEAA93ED3D3 8030273729B21CBAF9B449E2141C9F4FE0BDDB56F9DE78EC9855A6A755C285E9 6976E6BE8D716D69B1D9A896241C8448780DB11566EEED30A50800994DCD7EE2 58E7CE30EE72DFB4A549F253AC7F3F724E97BCDE736FC70FB7AFBA797196FF2D 7AFD95BD2E50FEF3F5C5614042913516E12893D3127E1045DE2C1387A84057D7 9CF505823C72082FCEF595DA90156D8D1212ABD20A7DBEA685E124D45DF68178 2F9FE8CA3D3D502B338A9D6BA32FCAFC6D2971B8BDA5E71280C8354BB921CAC1 B40E526EE2E23D9DDE36287801CA77D898BC1425A08D5A45124B562E168A9A3B 34017FB3CD277FE951645073BD0C9F6411097D189CA6333E878824CB7F7081AC 8C2E3796AA412C11465FC926FB192E43E0687EB89A6CD8803612118375199F95 E45ED04A8EED6AACCA4BCB4CF72668DCF37C656D5111CDDFCC1B3D47CF17CFBC 510C639185832C8EC9EDCF022E14F005113285D10F04464A0225E22BA320348F 015B3CDBC04CB5CDE9BC67EEBE5671D28CEABB2051E35754843AE5A3F956E20D 6A11AAD5A5A96DCC9C99A733B82F90A45E4AC0CA25E6A5F83166F6180D8421DF 6C527788DA074C4C9EEE5BC30FE1979F3D15E52ACFCA992A7EE4BDDB3752778B A5E9D0AECDC0A0C39D1990A0DB13C2E3338ADAA14F45BB0865BBB1D6B0AEB777 6B315CB28EF3885A7A022DCF7FDAABCEC6289BCEA587F04B319A8124F8C2DA27 F7064A3350ED06303427525A07C28D43D679956E292AC4ADE7126980FF11D04F 467A935FB53E395ED684D835BEFD0674ABA652C2C13FFB137CE82B3A887EBA69 4957C219CB4EDE336D55B20EC65C1E5850202A3D21654F36E4BADF9276604E15 0B7933331DB4068BE99D30EEB46E318A813A80C0C9ED8E4FA6D9627301F70271 8A8D9E65DFB48CE80DCB61C0426BF94B2077C32025CA2E80B7655FDDD12D76A9 63ABD70B8ABCC4F6C79339AC06856ACB4D5E8DC188D30958DBDFDB9B55AC6FFC DD24A6A01C07329B68FB5C9AC26ED8C4F73D52B56BCE38BD38666C1DF41445CC ACC7C9B48EBD5DC3D9B454EA4E5B0695C0559AA827676622EFAB437A48B1D77A 444A27C40A4B043F812F72A120FE2A14E37D5B5C4815F5C06270C070C1B96861 E62E300A20BA83BD11E721EABF90FD34DDA2FADBD7B2F2DCCB487B265C1B5533 5DE7779B0B4BE2ECEC71440569CD5CCFA40F2A7EEEECA06654A0924E6B804EFC 6910E4939F0E479120B8BEFC6A6A8D64B98767EB09C0C18F03FBA0759547AD9E 9A32A1FB82216DA0617278805508AD4E95C1F5251B19863BEA7187FB72D36EEC 9AD72A61E84122A80A0E0F1CFE2942AF84E06089F82D63C765EE316D19F959EE 20C356B2EE3AE1535952A4731857CB11EFF6AF51333C3C465973B1AD892CCD79 4681A70EF9AFA164EBC801FE1BB68FE3D386BBF1DC2A86BA0D2A18760BBAF6D2 99E8358BF25FE812157897ADC7E6C2F9B0FBBA999E5ECE904BB255796944E774 12442303E58F3ACE9998816610E647FD1BF1B19A212AC4E1FDEB9723C8AFA736 BE305E50F36D5397B5FF84A3340D6D1FCE61153610DD809D1465E474DA8749A9 550147C6258150F902D4CB0A8281028852B8DE10E2B0FB78A0240B8E8014B6B2 609B6FB0C40DD4150F80C579A291BF29958759A950A72D479C48D6BAA5B11C5F FFA62FA783B2DA6157103870D5835C06A2ABFAC04E55B4D12A3F3104FF389AA5 3CEBE0E04650CEC1D05AA64CD8DBFFFF769C66175C6129065B5AB6A31E15CF63 C27653C36E1AB3CBD950B2D64FD47C264F19975881C091F0D657E39F684FC9BC B257EFD3BD6429CF0A21C18C35ED976EA3599CC3C79D9335B461AFAB2053B4D6 4BDD9BA7411D2B43CE65B1BF4FADCC080F3E77CEEA7093B5A47D574A3D68FE38 A2DAC5705E16486449336F791F09B0EF715A04AFA86CEF898C25E5869765BE82 21EE3B92268C22165DB47FD5DD527044BC1AE8673DEDBB2B220747E477E7979F A92419997FDA073E9861B72C0CA0A5A04CE0E644390360352616C4A7FE66AE0A BB042FEEF9970FE8A25C0EDCE7EA0A91866201E087280B6F34D92E5B7E5269EE 4B45D9A508E4BB49C8B4E219DAD3CCB02A413C3D609D964D968B06DDBEDF294E 96C4092D6C4906EBD45827EC1269A973FD23428AD2BA2AF9DB05318E8E7C6EFF 180C7ED0C98BC2CF84B13C1AEA57D3313BDDB8FD443D6D10164EC3D3CA37F873 E6D9A7972079E0E3BAF0D3BDE9B4FB0A54BCAE89CA8C37B7F38154C5CC98A8D1 96DCF4D854919AA9EADB4B7B38DEAE3881BB5D8F15719B42A48A987209E26999 05478D58D012B2A33936705F814B6FEB6850D46647BCD6D21B46A1511DF3AE23 F5F8B18005AA77C4CF5573E727D6B54340EAD01F2622CEF32CCC7910AD4F0485 0CB6F2672ECCA0B12F9F5237F044A0F53DAD1D61167F8E9DD124F39E1AA22EE3 4F6D53F16B0103D116CFBD93129FD8653C0ACCFEE6564EECC6410D9390416719 4A6D1D401FC8A2D7DA6A2B61EFA1BAE04200E4A35B4993539329E2FF6EDD4C48 5BA60337EC18C2DA44528957EFCDFC258DFAED015BBBDF397143E4C2D346822A 802423BA1DF873E69F35EF50635DF003EA3BA53ADE97E16383748B6BE6D85711 F897E1647F591599BEFFA3703A6DCC0946FB90401589A28982E61675C3C9033E 89FAE207182D9725020C7538A09B8711F80A5798C4755F9584F53297BEEC9535 D05BA748576F0364D37E4909FBA995790D419BE1621398726FBFEB7663440E2D 7887148E9D34331BFA9C9A081C3ABC547E27DFE4A0521A46A68996590CE98AFD 89B1663CE1D8064A91ABBE1FFC7E820261D2980B11D46EC9C2762DBEDEE783DE FE6C8B4F3BA476404038EB715BA630F0377E10653B3B21B66680822C3F2D23F3 791CCF8BC23627DF78E4FCE16345F32181B9BAE40E9AEBF32158755C6450231E 951595C2B4632703E2FEBB210075013E261B4CE992AB889DB982B28569845F82 67C8F1756E5F3E2A7D0F1B2F0259AF2C82F6DBF37F673E68E9BF5C1251A58AA2 4FC0FFB9E05E1723ED5EEFC1B465C257F5CE8388A3F18C1829ECED48FF7A6D8C 30499AB35DC95674DA1612F1456EF835A8CFABDB8CBE227A91F3C8BA41C2F000 9632887A0E97A6B1B9B626A078C67ADDE394D35D73CB3AB1552C248BEC00A1E1 C89E0C1A1736E9B074ABE8799514EC43D9117E99247C900E5651B442A306F631 69E6BC202A6716DE74E42DD60FAE6D519FD6E0DFDF0F34E71792E6190A8666F5 BC836C9616DCEB3078754A51A048B9ADC261E05050E3FE112ADE2097F343F752 9619BF763D7512A6C4839114BAEE4678CF5B4220C90D59D4A4451CA62D5C5A30 512FAD8ED562CBEDCB12EFB08713F474B5F2613D0C49CC1C3C57B3BDAA588202 3F1E5B5B45BF6553376283FDF30FEE37908533915ABF0BA6BF8197C88D122BEE ABDA9C2F2ED90B50A31256105452D6CEB69BD012F2E07AF84AD2A898D7CB1492 76DB13EDFF532E6E9CE7C96C1BEE0E4DB5F2E95B8DF74008A11722FC6DD99F0B AF2369D812881BC3B34E03E521EF5FDADE2D4C194DA728F8B2B9B1AB7CF5E07C CD21C0207388B04375B1DFBC26E3D87FA5A45476BD1EBBE25E451697F17D0FBB EB0D26F8B4ED614A0FC689DB6DCC348617975B24B97BBD11DF667914CA9F5D9D 373A5B849B9DD46A5E6DD864B8FD45FCEA5B4F2D97A39124B408650EBE96786C 8AFB5E012B58B607D4744629FD3D63109F5BD3D814B8F1B027295B4C772BAFE2 25DCF114C0860FF130AEC5CE3261D43D7C0DC974EAFCA34E7EB7C914A9FEE2F5 627506E7510E28F8BEB0006474A75388C49D79DE616E69449E2F80591B5A6727 F27F9F5934477569B443C53CACE95353C1E79F0354D3201C1158D8422AA24D9C 5F64107E619E628B6395AFBC598EA6F99DA641385B59463104DE93947ED2BD4A E6BC44A0F4E82BC2A4DE732209543B2098CC258AF824561898F3CE0DAE9A83E9 DC990A4D720A924CDB570E979C8B028080DB3A2226D6BBB20DE9A543C6E676FC 6DFFA5268A0BD9039A2DFCD27D7A88ECFA2307A999747C8E3AC8167A29AFB3C9 CCCCB0B593BA1CE2338180F9494DF3542703BF1A7A6A6AF3A701163E2D37B9A0 9AE4A54B9A37590F2FAEC69B7A95F2DF2E39FCED7635C43990F542C992084517 130ED6EBAF6CB31B18EA10E9C8FA296A32C1D9EC0955109A55810837866B9650 F20B5F6CA5F17D5DB5BC29CEC59EC6B0E070B22A3F4B1801466312B38EC640F7 1EFEAB2EB6ABDD07D9ED5DD07F979026C39853101B94614E5B4CE51FF19B2A27 A019E0E75DBD2C9E1550A308F26AE26924215D977C636F1B9BA2E89BE69C1ABB FEFAB3CC1FA7D8AD2B43E4866AE117DCE4E8E26D7D71833C142A0EA09FC8281C FED7D387239D80833DC50AB0F604D2E38F3E79063E691597F841E1DEE72B450A A2C0C1E07B5D94312AAF0CF631516B4FE781EA1BEA578A1FEB627861BF18AD71 7FE91B8D5900BF508825C0124C927FE743F397F5E6CBC2AD6C684851DB42CF87 51561377A98C96865459ACA7104FA61DF1EDB19D7A1EDCCDDBDE95FB7A7F2B94 0D225BEC51E555333728E462401B1057AFEC25525710AF755B4C18C35C9979E5 1E4EE7D7CEC24E5E927192DFA69E5C549CCAC23D12DE01A17502A7805DC22B9B 841DA43FB9FF5F31FCA9A5439D4CB24803B197F7BA7285ECA8AA806BF89169FB 3B334D2D4AF88E9879DC62DD0C16EED4BDE112475E86F2BD007A716F96BC6A44 D31D99C6DF77C51E8D19F4507CAD44D3FB499312BFF45625596E1FF0F95B56A5 FC8349208B101A9212006745C901F0480C18B2AF32FB2D884575BE091B39D072 9D1234289CE44B4E8CB5167DF418AE128D92674855FA15F3DF49A302DDF7B1D1 F96E2C136E65F904920849E080E893D7EDA5D0E6487F1187D31127539F109971 D46E893FEDEB4E40E7AEF0A56154FD5B4865639D440901EC5293ABAE9C67DBEF 08A996F15B00E18B7B40DCA54B112BEDFBC1D605E87A9389EEFF922C5D5F2993 AC48151CAE984E87FA8B1793DB25818A4906FF794D5CA18F0C69CC0C6C5A342B 4D85CD1F8D079B1E0CB970CDA062EF57354C42FB2669D9A08705403AC41A71BD 75E309737F42117005B9FAEF8CAE6841798FE3EB4FAD7CF8E79B5F7A752355E5 130A73F49E59903D923033C0E0ADCBD3D1F3B6CF40E16E8D66E7A2F29241FAF4 0BADEAEB55E76E1752CDDED69935198292E589B5CEF2BEDB50AE2982BE44019F 05BD2D80836DD92023D8ECC567315B2B9D1296C4D1DAC8C5275EC699C809F8F1 7323FCCDE20FCF5508546054A7104962A4464CEE84B1AE4EFF80BF852CB1558E 11D37F1970E0BD3FF8E5C4E03DEF683FAD8C65F825246895040B9DD8FA743631 AAF4C2690C312C47A63778E085F5FD245FEBFE79D03DC290DD874611191ED503 F38549C57B36F36EB2C31AE1FB13C1E939D37514BCE1BC75BFACCE0A756B00A2 A677C698181AE66F04BA129EF02CA28F281266145ABBE368D24A8D1735F0D26A 3D09CE9E2A0DB4ADD7DA70A64A285E96E2EE8B121152E71420EF3AE1D496B692 F4E66795B8EB95439223876B58623A19005F38A66E01C282FEB8B53E29C8D0EE CAD667302388FCFF8C485CA8FD43E6A230C679559E32C6CAA5AB191790A4073B 0BAC7CCAB2D87FAF0CB6CA7361DEBB32B7380EF1B2BC2F98704927B54500844D 8EE966C77A18FF69AFF18D8555D46A678FA3934CA1B9E76BFBC876F0EAAC4316 EAAA5402F5D77772F0033D711A82AA238D312959925C97C781BBED0669837572 7743A69952021DAA4BEF81D5CFDC4314FD9078DF4E6EBA86F373F1C27535E1E3 0553A4AE42975219962D63D7D78A24437101AEA9445BF5E75FA1C7439E54037C B3934EEF2AD1EBE5F44E267E993368B9A2E527A387E7DF1B200B7530089DA522 C922D57D95F83EA88DB9F71ACD468BCF37A519E0789EAA7322B60FF2EF8E41FB 66BFC302A0C58095B771279E9B84DC8945749689D51327E96B313E4E05619754 DDB70691832BE4A437B32546106B882F2E2F2890CC6B199DB2015F94F6295A1F DBBDE2EA2F0286D839C61276DFEF954673EA64393C3C4EFCA657F2A3F2D09E74 1EF85E996DCBC17BE17585FE0F53F9E156FF5078C86E29DE8452D64DEFEEB4E0 77D9272BB58011367C1B0F1AD085784D2C6D2FC2DFA8E22A42E1C757C98A305A CFFEA498E650E237EF6FBEBAB23E9997339363D9BE4BF0EE2B6B9292B6034D80 A364D5C5C6C02D326646A25944A7E684E65665AFC07FBA9F73666C5D36DDF941 E72B1821B7142A806A775309C307560BBDC06C40D3F2BEABEB8B9CE2EA7EC11D F3ED09DF521BC0F88EF74447C83DC1557A7B89153D7036FBD4B87D47C050947E C9ACE713E640EB3ED19D07EE241C88D0FC71AE38AA8CDCAF4899921DCF8300B8 B9871659434ED479ADDDC3FB004F820FB0053323A515437617F8504089AFCCE5 FD70CE7BC59B08249F88B8011B6D16C393D31387266038670A86D772E104E008 632578FCBC57F846E91AB58951D4F50C9D8CAD39C4F34BCE84082D7353E8216B BCFE8D0807A63E3319260BC1BF1EFA6FFB8DC847F1107BF8F44F586676F190EC E6A95780E1B74820A422B033C1B6C3655F0E9FD86F0B84B235DCBDBB0F4D77EF 6E0ECB44AE8E6ACD58CCCB78572EC29AE3005710939DF6DACEB170F37A75814D 8FDD7A6CF70575634FFEACCE01B8B1617E41902655F43E815ABF5E74043106D3 E1C9639045027B53B8BFFC4A78DD0CE04FA58FAB1C999BD8C3914A9D4F486CA7 2CF5EA0CC203271701D38FEE33E731086337234062029EDB173498F1C9FDACC2 3ACE629B39008B6B3B6DA0CF01ABF97B2A7B05A29037E0CF83F0BE2B46D111E9 F577FD950D16247C9D28A35DFCC70FB7DAB443803FDE12B0B7F1C1A6ACDA1F77 FCCB2CA19F9F00A76D6B62F6D367E6A01C2E0F17F6D968CCFA607285AC49BDBE 65A7B5B2CBF7FAD388FEBFC7CFF5CD51CBF74981F297DDDFCC2C8DF8312ABE40 5E837CFEB7D42880E486342022D7694227BFC9EDE76E632B05763813BD16A11D FD7D48F4420C2664783348CD1E0560A7CC58D4F7ADB4EFFDBB901195A10BB383 68AB378FC0A2CE96D189F690BB22456127F9EAA61EDE08F43CD66DC19B77781C 061571100B613EA7FC57596AD2C54FC1140FCFC567EA18B493CB8BAE270CC0B3 BA34529CE84DFD4CB1ABE48825A47D1D4FFE68F3AE94E901807E3F5A26C9A858 E44F3FFF97794144F0346EF7D9A3744F23E6DA94DF73ACD466A6C8BDAA270856 1CC70EAD5C39D0FA3DD10D6DFF76508FED5EE6C91D5DD77B5C90BDFB2E3EFC4B C51F799CC7CFDE2964392A1EC7F6C7C553E52E8C15E6CEF5F34A214981B71787 FD7ABF020B25D7FBA2AB8528A4133CCFFE7AEF3BF802CEFDB1D8655E56897E41 98049A694B4F93073C67D786914146C613E41B4B2F64F91B25DE7E82F79615B1 D6E71E5371DB8E262C9BB9E7FAC408689C61E1C45055F2D323DF8D5647035026 F18ED10AF08697E3B35F502E89DACF6B9888BB7151F4BB66D3257B0CF7B26F50 3B8012291AC0339EC3723732CD57767B7D63205A4CBA7AB371E06B2226DC476C DEF1907EBA8DE2C8A069E6689EA0DE4B16B4311398B854307466564C9CCF4D85 3EAA0517CFE13C4ABEFBBA584F119DFFFBFD501DB9648FEC4F55DF59C519780B 6A873E358021F3893D70075488A6E15E8CC12079C24C6494C458E669EA4685B3 66202DC18ED800FAF65EEFAADF9C6BAB65141227A4A297E25E41062334EDDF92 03DFA7DC142DBF6AC3E2A26305B35D12EF49BDDCC401DE57FC342BF0AB915D41 8B566BD0CDE5BBEC253A6D3A376E054C7A2BB969A9714CF58F46A864D8C10A03 8954D4B6C5219BAAF979EF26E63D98BDB66537A0A3CB07E1711F6DF54078319B FA4AC919B597598F4CF582EAEDC5179F4AE5CDFD4C7E03B12122DC1551034C91 24EA67AF108CD4E6C696261F625188B7DCE9B4942A2C5A65BCFA2DA0D59651AE F7EC88B18D61E049651B29E6905C8152F9E563C6EE4AE376DADB7592A1E0E43B BC11C9697723C00A98CD425FF55ED1F259E6D6DB2360D6F7C89EF5326D9324AB CF5731CEDBD508CB6FDFC029FB6D756A638B84D0B6FF9A669AD9EC51D439C23F 7444B6E6AC84B06B38E3F3E9A50ABCAE6F1B180A665158744E042CAA6BB87046 2D1B3032054A91EBBC4C41076A89612527A57877749BA11BB6132E3B3A8AD17E CE356A7AF82B608FA4DD8CF8E13A5A216C1A56B2BCB828EFDA00F21BDC87638B 2208BD4AA23FEA652947278B413ADDFA50D6B747F71DD952EE085A4DB7C34A31 FB17DE9161A06FB33A11035BD492C09E62E944A278C3698FA8F6495F09AF8A0D C660C60EB500BFB2ADAF7E4F5DD2FF058F621353B360EA69B520CB913451C52D 358662B968E77F7ACB0D84CBCB8BCDB4BB12A024C2FC0B0FE62028C970A61E53 4B0CFC1D8D10CC271C579FEDD68E1E39A89C92183DD03D3414C1BF7673A62167 24FD0057A2D807D685920475D8A6FCC672244C38B5F9A38AEBE1E5BA26D732F6 0C735933B42AE388AE0940C442D47312AF05D5409E468AF33FBD2C17DCFE1889 E5E52EB048A265660207A9429ADA131ED93A858EC47101117219A36FBF293E51 E94BD632657E2286B04CAABE5EFACFF47FB001095B5CD0C38EF3BEA0F971FFEB D256BA01B4FAF8F2F4B1D71285ECE7AA5438BFF19B282357F5CFD4CEE01E249B 1DD873F360457AD62E666636C11699650737C05430488DB358C95EF067A8162F DED409DF83981006BCEC6D1DDFA3B7DA1DC1BACA27D3D1B20FECAB12116708B0 734DBE2F1EB795DD4F8026E1CA39FE3BC6E7C8AA916638FEECAD6179C98144BB 85A943AE89CC08A23B190D461512B9BD27C25BCCC08511E60A33EFAEFE299E89 E6954F6AAAB712A56AB81FE93B66607279C92E1E7C85EDADDCB608504D1CBC6C 7E3D33FB036B7B3E67E54011D9DCF87D238F3DDD6105A68100E94DC4D6416EEF FBF62E34ED9798BE40A59346D0B604E1874441CC5C3CEA726150198C709155BB 50125BC8FE8702F382582F3F852A4D6B122F2D74723BF562DC32E8ED016D7048 06709C481E21A4B5D827C240CC67F088BFD00D35A4B89AFF4244BB9823CBF012 9796D6CB9026C8CDBFC869E4A46788B318CB5E3EFA15DA2F89EC3D95AFCE8E0B 75D082BF6F14E0F95AE43302D9EE7952C3AECD739C9CE7BC5709C8E6B254B31A 6BA4D9E8C6BA2049E87DEB9A7298689D663ECDC7AE6A7F42BE4477CB7AD5EDB0 420D75BFE3C6CD546F8893E5095ADCEA88D37FF46E1503410AC95F84E6A5E3E1 32CE9CAE1C16BDF12297B73A815EEEFBF053671B0CD2742E23B265E063986256 1011F422CF7A960D8EF86DC592A4477D350ED74B1AE79B4B3F2DE759C8631D56 E0743CD60B44CF77E73B7B02A4BBF8FA1518E93725329AB9D1D167A40134EFD5 09685D7B3C052A8EDA9694CD5CAEDB597A59D62E2E5236A1BE4F2AFF45EC2BA7 D4DFB8C9590C068294A78FB233D2597DFE14BD74BF13F55DE3939EA9D8361A13 E73D82FB18ADB475F0FB714157F8698D0A5CFD022EB7D61B41F31113DA4D2627 5CE724DE134217F81A5A79C672B6BCE23974511B0982AFAE5F67F5C1C8AC2047 7AA43A5B1B92BD007448676E8D50923E21AC9F131530CEC183CDD2D2FBFC5A64 5006287D834C3A511629FCB598809B5F2254D826D42845585C7E00A8F7846270 CE843DB12083E8E4BC9260DD67DF2859D86D780FF36488153E1A793B3902BA43 0EE0251EAFDB236A76FE638BB1397D2E8501ABD10649947569E6A74813DE6877 9968E00F7712997AE0D5E08DD58C9D8A015B182F1811D0009C8CA22BB1A7A9C8 700C06143AD1BFEB4471FA3896B4FB22383E5705146B0083296019552800A253 550434555E8983534A12C99BC20D9D5E7B5C43BA7B165A637D6DDAB1BBB5C8A5 3839A06B744F0707E4DEEA6A66E03BD9B7125B5C8F580545727E41AB8BC6B1F3 3C7588955BF73F381EDAFABD1DE0A7DDCF48F41B26AA499B11EB7BC313693994 205590EE0D0BE1BD1B9D553B6EAEB478E535C1CA9B1EFDE167BF10E5BB507E47 162E8ED45318F654754C70927D7D5B01011BDC2E267DCF193EB6DCA480CF3EA3 F140058267635F3948BFA952E6745436BC0455B043DB1E952E7747E29F8C9FD6 B41DFD18A4C713E8A36065ABA254E9953990AF580E387B031AC4F701F6119A24 AB9E5C2FE10F9B433BE4672A6741B9ACEF4375A72115651B08C23145D56FDDA9 DB149FA92C6C4400AC5E7E6A85FD56C58FFEDE15F7F0D3CE1B7FEDBA7FFC935C CE1C3D913859E0BE488AA49543F8B7CDACCEE9E0F5F22448719951C870E30CFE EA7728178FE098BF276DF33D65CC83057D3849C41C7E1ECB8E79DD8A394DCD38 FBD5620F8CF94E506CE2AF9C2F5C2EF5FA135C5FB08F3C7240F0D984D83EDF01 9980576B402F3277BEF9C25E698EBAA6E064C1CAC9409777F23BFFBBD1B5B120 2DFA848680E6E6856652E53D602717B649CF05060706C8633902841E5258D82F 052A152ECB47E8FD0FECE46D1BB3313EF391A0D17D599D6CA8F1E60C86CC27A6 DAB9CF96B5E0519869F59B0E3DEF3A7FA30F9BF54784BE565E8F444A40477D68 6F0D893E729DBA1CA041D4DB6671BEBA444CF069B68F0E550EDF1E6E20A1FF72 3F5E68AB2E2B67335218CE4D579A2D412F7BE3D119C4AB474A7DD683240CAA4D 29266AF88158149E904A78BD2D06EAFB30B8525C6719A4B4EB3C0F9F8196EF73 D97190A96A16611091768E9324B10B72A20A30661B894466451B5D9F0D9D888B 0DEBAFF88A5B6EFAA7CFD3FC38DAD2C4FF612405EDFB53ED1EC1B5623E21ACF0 8E13CBF69990A8DF94818A951DB6C3910BC631A971650A8DEA719A30B3AC44BA 2E3B9EC646418152B27FBA422E385D0CE534FADD10611A42B28605CCA7903F0C 62EA74CF69F25CDA1F4EF543120563AF681C5018F4052E20FD78047BBDC39305 5A8783FE632EB891296235DB29CF0AF689AF472D9A0555E1EC686FA301AAA768 FCE9C0114154D33A27DDBE03BC3B5F403B573B0A1B74F40457188FECCF9563AF DD80E7D8103440E0992167357A6B6A9F6D8B6EC1356A9310C38491766DDE601B A5F6A52C8E022A75593FADD84598138A3849783C31A2DB14047075A8E61E67AA B19E06E8AC28196CEE61D3A108E43F23D4408B58F90E2DC2DF528AF703FCE970 75670F8A024802FA272180F2F51F8D5E7FA3BA31CAD8B44F8F9C23A78392B571 701F1592E6EDC56DAD468BC02EA374C6A3F9F2B582ACA5621D9954CF32917C89 1E551BD6E92F0A1A5E0742E2CBCF69E6F387E0B8EA5C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /UniqueID 5096651 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put dup 13 /circlecopyrt put dup 15 /bullet put dup 102 /braceleft put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E 7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D 9E592159338E1293F449380E13C21AE42E6E371B75D78AA87381B96012E722B1 3E1628DC89D9009FB38D9984AECC3367A8436F03DD58F85DD4971868D79492CD 02BA2B7F3150880664D5745EE14B37B48C6DAFB92FC135B67EFB4C989415C8F8 5760941F5ED296C06F4EF54E8A52E11B5B9CD72CF923F393EB0F85A23EF65960 C3B1EB9EC5E45D70A88BBA28EFE12853A2F613E5DFB785B22D0EC1D80B6CC45C 0B798F4D2191D312E88CD461DE1C87F694886AC90FB917F31C0209E91B7A3247 3642D9292239C4F3EB65CADBDA3DC778C07A918D142D87BECF5E5CCAC45625D7 476DEE660DCC03709EDA00A9417B5AADFE26F4FEA84A591E7701707F8ABAFC59 5CFD9FB2C162F243AE3C5B22CB423C769E0D73DB1CFE9CF89CA0FD60C2A95285 41708CDA2ED9B4370A33CF0EFEBAF14528189AFD09FA3B6C97EE3660C8211565 127EF3454F4D0B1203BD402748E684AAC28AFC7F32987EB0E8F8CFC68AFBF68B F5D51C5834C5351D144FC5B2181B071146F27D49FADCCE5F588B48D482462C85 FD0998ABEA36EF5B5EB49D4F012F31F5219C1F5BF2E6B90131359A39A7659AC9 0DF76B211E1F324A4057588AAA332EC077AC92C899719C656546CF154170E069 956C9AECD9E91B5AE82CBF821DD404B15838C31536A25563072E830A97FEB51E 2C1DC2148DFD0AE760B4016406FD54C644111DB40D1A61FF295D29813F9C0CC9 3DA41E0249A8560351AB64870C9E6BA976D7E7749D512E2F41C89C75947A68F5 E7D0673D19B3B6D937D5050B224477571CD04BD334C6F84061169523ADD2D644 AF6870E6153C61C100EFDA957907714D47168C580CDC5E77A1B88991A30B445D DB99C45615FCC1690C97936B21711B027F1B78B66869ED73A514847E351A17F1 B9D3D973BC0D39C01FFBEAFFF4454C60F97818BCB529F8A0910CCFCAA829AF4B C5F10A0D9945C5C13A302681B44115B85C48944B7FEA4FDF7F006C0E0306D34F 9F330FE864277FF4709B82D4808353B1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /UniqueID 5000798 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 65 /A put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 77 /M put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 122 /z put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B1422DEB13896DD78CB7B7F400EA5A6CD639D9CC828F 52311A11F2A84E566DE98826F1E28D55FB08ED70950205DE52C207CF14238446 084FB4DCE04C781858BB4E0744C023EB0B563769751AF1D807EED20E4AFFDC46 3C1510C782FD92902761F7557FEF701AA67B20A9B019C760B2BBA8A048BA3681 35DB440925CABA05B8A13B2D30D14FA875D3E200A018C78BE2E930457BC33AD2 FE3610314A268E9A30EB41F7C771758410E7D1179567B22CFF76517901CB7805 FA27AE1A2E9ACFC032BA907F1B99F3DE86B975605D28FD7459DB83C8EC381617 441BE95D470868FB7A81DE241EC72384E10F995262F6C66416290A1AB82116D9 99DBF4CA8002828A0B8F207A9F33AD1BCC21592261A181AC864D9DE7F43FF609 93FF317E2A0B71D337DE2F7E9C5CE6F85C655457DBD51637C51A5FF27FC1322B EF3797CB6CFE89601B616B41EB7272665D7F17B86B4C6E8D7CAB7F8E37A821C2 8E4BCB2084A52C525BD0FA72E79BBA9B3AF52D1104050D24B3BF95349E116019 F2BD4B99D3237B534A8D088C7936E43CA3FC05DE75048B40DE1E73441C8E7971 2A0D08FAE5C89A211CF98B83EFF5D3FA7D8FD6D32710364631685921378F2E9A C671EEA823FBED7382284D6A75198D3709776F31B2A568C91A2F805BDF82314B 8A963301640B4B46F5BE1FD351614C39C5D37BB795A3D64C98E7BEB4CD3E8389 126A9A96ADAFE582757434E5B6B385AB35DC29DB596D675A7FCAFC54614D56C2 84136BDDA923E2172DD6887D068E61D1F16B6E58CFF7E9FBCFCDDE6CE108A848 DE5B632F03FC7E52560BEB7D6BABE74FCA354346442248CEB238ECB9D44BB3F0 A6F961EBDCD3CA048B822BF3C9BA068431AA81C01EADB694077302A81AABF653 737690CA581F1E3BE04D2601B8466E86EED697DDE265715E32AAD7CD41AD44A4 A5D4E4F0C84B8E446A1A5FF2412B58D4C4F3E7AAF8AE16B955D3F6BC2E213D33 C897AF064D4CFE90999B40746B10A3C24B51116D25956A54F9339ACB3DD6D55D 4E0F99295DAF7FBE6D22A984475125BD18288691283CBEE053515E87D6682B7F 3CC67A396589E1528FB78037C35C8939E150ED8A3BCD0ED6C4F0F35F8F77D7B9 71CDF04CAE19A93F5E787F383ED8F3EA49D9A02DE2AF2F993751FC38CEEDF9A7 B7FBA407FA81E3594E84B3CA29FDB52BDC5F38713875097C7785D970C2F99805 B421385DFFFC3330733E32EDCFCAFE805D4F0A324794E94FCB10CC524282320B A322D7074DD6AB4B15CC92753CD0A00488C9B83913FAEE9B5880D80E603C2728 1D97283980BF6DEAA199BD76E8387B284FF8124E39321DDB3010F87431DFF0E3 8B871ABBA780452296216CD765DE6DEE2FD107F678A0F6FCE41236CBFB286D55 BA3B91554A06C00B27BCDA1B639E8C52DE63A06B1B76FDD934F157DC53D9BF20 B9893E9647D30EED4974C9FB97DB98F97F11C923E1FD81849C040CE89822DB8B 4A1E485513971CC7FF8343693BC5E603F6812033D47A7B0E14EAFB920C169309 01C5C4AB87B81D5D31F5FFF1086228D3E0532333A0576DD5893445A8B8BBE244 0945782B29598EF80120835CF0A83D7BC9FB63676A24F31C4ED179FCFFEE4E91 9A8D7AF0ED78170FD6A8502BAEB3EA85FD5AEF0F3ED03734487CA6F5484CFE4E 420BA6F137E37E09EF6F1606773C9061B6D420274C95F87253F49B0F1CBF0EA1 4419D2C6543653F20C68950CF4C154DB140549CCC4D4D58350CA73BAA08D3B51 022609BA0E845D9479D2C070D8A766B7FA75C418A8D83E2A76A59202AF5D27E3 AE5D031F54AC9AF3E95818B8A9D20D1F534CE08DF1DCAAEC5EF3295004BF4DB6 02AEF061F978D582D1225DD1D7C687D742B54BDCD123A899137808F555324D38 82A7235E9D2F0B1AA4EE655A52F5709F5C5A5D759DCB83ACBCD8D8F2BF78675D 68A950ED862A019F126D18EBC123B8F123A9739E806A3168A5D311445B942643 1200D057DE89A47C9F9B106570122F8D02DE52B3C31129B08D2833FAC66B1803 179E149B9B71D63AAC30CA5407F33283C9C740EF3F7D38DA27D194F31120FF79 9543F27BB3431B55A7961DF32A4CBCA458E9BB063BF48F0D99E7E3F7321140B0 572D50750F6F649719941584F8F883E401AE9B4200045C66FB28539B06D0DE6D 63C38F60046474A51EE9C64212FE001FFDD65E9034D7660522022C4AA6F003DB 5105851D1E40880ECC8239B9B697EBB1938E2D7C9D380C5FB2C25EC039FAA31F BBFA71CB5EA0BC9CA81AFA57CE3D9D908D9B676CEDD9A8CE0EED4974C9EEE974 5B1FD6DDE7F4E753A713F088599565C1F2EAFAFCD8CC6EF838BEA01359F4C6CE 60AA41E4FCCFB0DE189A7BD7A7A1B621FA855EED4E69AE72BC281B04A6538685 634FEBD12327577C26CDBAF8640CE6F66C4BF03BAE0863CAFEA82A1428FBD44C 87872B249D644A98DE287347AC93DBE4FCB40C8A415C0F774E10E85AADEBC269 446101F0EF1DC6E98C0B034AAB36AF726AEC415966FECB3162392ADF9D5379C9 7D33FC663F45092BAC34910228D375E06F636FD624A47CD1A7B76B889E4C47D0 F840125D90030B7D2AE4E2BC625B7A0F229CC80F82C0CFE1CD038FF8717F43E4 672572B97B4A75976F8DC9B533E565EB643E8ECBC2CEE28814D13D8708C65E53 909CFB04997037B694DBF284E355630C3F9591FAB92731204D766381284D5BE0 EA4EAC454249C0F6E59C63417CA868B4330A7D7DDBD3CE368A3F108468C93C4B 405AA940F558BCC0842E175093603896D77AB99BDBAE566CC4F02DDA67FD796B 88B7CA1F4CB55CFA539E196C7FC0E91FEE1FDC2B15A705F266FD5E09061891FA 0CC6CF7363B96E4BD720658D09BE2D27BC44633033A72E6783EB5DD9ECC1EB5E A6EE4DDED279066F2B8C9B61D7247AAB7A70040E6C3F335BD7EA60D428C8FEF9 C94BBE2A53BF3F61D2ECC0D36CEC0BCE2DF50968FB8F7011CE6E8ECBC9F9BB1B D021DA9915EE77D01CC933DAD9F5A8AD91F7FF3AC8B35BA34C5C706C05B01C39 F34D33A2DDB674A2DA64B46B15456786DE3DA94BC1F87C1BE7827932B3FD0F12 E87C5D7D4A36964B32AF40749766A361DDA447BFC9285CE8E509F51FFAC3B666 6EA5D92C1C4A6B3DE3CB5D391167BA7F379BB553CD39371B90C2F5848A20A96C E1094D2739CB5714625DD1331CB9DA75F25558B6DC5ED703234DC106F6D16C04 9B483FC40A70BF10710976079A359C15FD55B40DDF7EE1270A55B682E6629F89 F0C5663BF5B65EE5F5930B3E7D8E6C28E483A2541F67EC473249F0F778D22728 0087CB9E713FD3AD08BFA5A1E9C1AD9F53CBDB43E5E4CD35540B7FD6A7ECAA71 14CD0884B4385D5150E0457A72F830D71322099C3316F504AFF976E5D1389713 653CB3C9947D9FF6FCA90D66A5B90CAF2EAC4B4E60FE908DD8460066CBC45418 F5234C194B6DD46E95CF3D469133DF404342411C19770A941E655B9737DC31A4 2B1EE82B33049411AD7CBCEC332A4EDF3043E0509E16F351AF6F0DB182C41A6A 627D6E06C20280761504BDA45D8BBB39577711A550FFEB878C21122AEF5456E4 28FBE30D40D0BA777B1934E192D077C2E878DDE8912226489AC28F9A557865E4 BC7ECD026AB8025660CA3EAADBDD6F4F9A87F4FCB538A26347A5DE272D3BEA87 0B00110F8E5B0D0E6B8EAD32A649252D1E0F6A6A2AB82F6ABB06EE4FF50384C8 31971C7632CCDEA81F6D752CAC5FE9D021D806DFDF5F258888362785B69E8C38 A2719CB323593E5213BFDA94051723FD0BFBD6C6BC8001E2CFDF66454D6C0E80 601265F7B52CB070BC20F554AB60957984E7E1D8D505A09421DBF7B71CED2079 994EF78AF23927226AFAB5E91FCF560B9CA9872299D43539C1B9254FC47E726F FAAE8B36D4DB7D4B9BB43A39F5218DC2D32D3FDE708505760AADE84843CF88A6 65048FAF699335D56F1D548871EA361B55AF426753D64C393A14B38C9C03C502 E709D3CC2C1556692C1BEFDD753CB4C78B3E89B4FA0ECF4F6BA0376165D47125 F626B5BA587DB57C249324EC5C5D46948110665DBBF2B5A72C2E313DBA3B393C 5C444F9B4E5B7AC137794A886D1F4BFB2CBB844135DB42DC76D760D12DD336FF 1B4D8EE7210DA41D3AD08C40D30ACE133ACB5FC286D2515F1B0580F75CE7349B 0854EC5410CD35FAA7CFA315D2A1B0FAADC1F434C259975BA8BC377D5D589ADC 9784009B97A601D19EE298E6130DCFC9A198BEFC2BF44C673D1D219AC1A4CE5C C90B1224869DFF67838EC7130156427D85BEEB3D7930E93B9869188F51E10D3E 9CD95D8DD064E5331E62FF1B60608EC04009C770969BE32AD72136890B1825C7 3276166AAA529B8CF553F2D209A4E457E6541DAD489476C44B450DB74DD8B9FD 840DC1EF04D371000C43D36C3E5434165A4648638F14AF5AF075183923E9997A 4BD41EA38AB306E1D04DB8A9922182E9CC5348634B7CE93EC7056173ADEF4211 B5003755D40587C3FF1A6C11289EE87EF21E0F5A4C05D71947579D9280D9DDD7 5F520CFC4E35633C51A835D1E1B95D63713E4E3A266C8EDE2366F677FB96FC76 390B27AB484BDD664350EA984EE2D65AD19AA4A979D9E8305BAEFBBEEAA0479E 080BEF0D11B1ACE15DE07A1C9D08A7BCA2204EE87C91EA7A131550B5F5982853 40BFDDD00DFA74CFE6D10E6A2850F56F5C1B7A90B265E266D4F3BD6C8ED2D80B CD2A1A789E2D39F4555C9FC6414B795B9C78107CF839BA8AE764902C6F460ECB 5DAEA9A388BF57F1FD590EF54FB2A760D3604F156ACDBBC536F4FF7EA7BDB399 695C0CE21A1AFCA6EE274891FAB07F77395C3CE058B6A069AC91E8B25C512D1F 0D75414AAC21B9B956851D94C48E1C6B46686BA3EDD505856FE0F0ECD64C5B52 E47E772AF800BAB4485F72AC45863FDBE95236A10A25B24374F3F09784A825D8 8F0B8B3D5BC061FD02D0847941F0C4ED54A86D93228FF13B5472B95EE7EE02C3 C4B027754EFF03EAFD875CF80AC777A25D5F5885EDCB372CBAD499CABD698595 D8EAE241A192E2BBFED1A7878F71DCF9079564C4753EC70DA3D3C65E4754EB6C E43401830C9E953701E1A866C83C0D7763223F48439B92C49145795C2A923671 501F7F2E59D6398BEAD21486D023C3F672A3FD23AE522A05F7961DD5B294A5C3 12EEACAB71C374B07B55EF993DDE06655D6D97B16AF9E044066353C1F6B066BB D3D5C4F1E5A1AFD7CBBA6C0D4735D45B4A9270B9980196310A1EFDF41F5D725A 58A31E71CFB790FAC7913A6510B8E2E374A060B9B1A1D66686D540C8B54335A8 78C96359013D31C82D1FF2DF0774B95AED280BA675EB18A614840F43FB5558CB 6E15706F4B339C4FB463D570D5465E16B91CD028CDDB5E4E03B4E0160409FAC8 2495BD5BA256D9B6855958BC44724E1F3877D2D276063CCAC599882FDCCFB429 1990E9C069B9756344068A45ED03223163F170EF4DDC5B516EF78928251342B9 D3ABA90CDF309F5469EBA411C806A625E63FE372DEA278C0304969899D1A43BB 7E2683CE14350ED32BED2423F5E566EEB4D3F920E55FABD328031565081D1C1A FE841C4270E44533D5E13ADC16B65472E69D3F5BE451C64A7EA5451ED4FB9C2C E0C9B7C5092F6A53ACAF234BE76EB9B8D597C472F60F410576ECFFC087AA389A F18780001D90848CC35C334A8278A0E50579C0BD2D588B530D6D9CA472C8A367 873994DCA2F61848C444684C3E0BF3D76DCF4676601422F81CDFD369C850CC25 B56AE11CEADAFA985BDDDDDE7A8D1988ECA7C664185764BA2392B97AD74E233E CCFEF851B9F1A1CBE6E8C875B8110C4904F8F48183703F6D72E5AF2F8A4F9307 5F901403248E8EAC38C26C6D5D972C1278DCE9A5D0B01FB41507218E29817EE5 0BC9868E32607E69E0DA9234B1528516C1CCFBD358C118DB6FFA4E99CED9CCB0 753979A1DD9D405008567D4EC98B7C5E346269E922B79C855D539AD81672E41F 68B9DB25C68E11FC6FB0765A8EB2EA4F1E89072C548B9C23506570267611645D DFF9B35C3B4E50B45BD0A0E759ADB7A27F03E45BBC6CAB59498FAFD2CA44C91D 5649F99823250DF205FD470E6CFACABE594B68DC92FCA1CB398593997926F2F2 275EA915EA7C2433F87BF5D0AA4D5AD960C6D8B06CEED08C0F65693AB8498136 B955E861AF5DCDE996F3011766A4523937C443329570281B6686E6F5405A1B2F AE21F27C8DE0CC67786DD12580F0BCA07679F3C3C4563F802F8C217D3C8DAC41 A2C9BA4F3DA95C1A0EE3BF401C3C3E2260366D14B0EB6A267FFFE76D04118277 50DF598650DEE4ADC31FFF8E0D48FC10A2AD2384F57DCCDEDA0164F6A27AE170 7B0C627654D1031D300B2A8922C18070848DCDE3FE1CDAF53819C7FB09B5BEDE 41A6AB7BFE9831F149785AB862AD3AACCCC9BACFE7A7378FCC4FF4989895987D FB3F4192A392800211FDBD11CC8A6A05F23C1FE91E968C7F726E51AE87196E1B A5C19E2E542306F4126E59D37583367DD2300856E2FEB58E60AC5959EE02EDBD ACCC1F7556EC7ECC15FC681B8B437762EF324CBB6D7D17ADF045E0AF3C46E2F6 3527CAE38A8E5D6785A1788B8FC00D9351483D81A67FFE6A3336EC27219F21B3 E1B37A2353CA814C590456EB376190F2859574BCB592212B046CD45DD591F01D 95DCD2235E633AD0D05E9BAA989A0071B64A197E28D394D8021E36D4BDA26230 DBCED63C6B2DC8A59FFAFC66E8ACE4596FBF224233E0DE71A06769AFE2C1CAC0 FDF1E7DCCC49C8FBEB8FFCB92CE5E3BA338CBE1C9F4BC6EDB59D1A46B656150F 25DDAEF1F2040DEFD7C82B17ACDCABB81E5024644FC09DF030246996533D279D C8A68EC812107B9377EC04F81192A34197DFC140D01345E1DE7334836E9D36C1 5AA190F2813C5B76DD0BD52F4C33E98237CA9D177321F939FA15CA15974FE6C0 5403F232638CD65B67AA163C19221AD4A5FAE5F33BAF9BCB06E509B5927C02C1 DC3288C6C8056B7EC2474A843A1CDC5A922635E11D445D7125D5CF93F153719A B89FEE00A80C669BE6184E1DE8F03EE2C53728A847F825F7C33792BA53FC4B18 7E7BBB2423BD77AFDE13E9779C1C6554EF3CA710B2F41CD7555240528BC3F970 87ABDC6C3183846A4A14936998F65ADB171EF70D88DED4F6CCAF90652C07613E 58836617F46F3DDD424D7F6660D640E1185D73E9137CF78275FBEC101D1605C0 313797A2C620E87D2C4D7D086B9098E24DC4F3ABBEAEAC26C7EA30E453E79133 E17BD46B1BEBA92D5B7A7E0BFA393B52DA6B9C96F31429154D76DE9EB8755435 F2AB9AF05B925E21EBB77D4E4FDE4AE4971D56C5BB7852CE4FB5E426505B636D 77846BF4ACFCA946D7841CDB93B100A4A155887167443770CFA311CCE219C0D0 F3AC455DADDA20B1E5311366474CA6A5A21A2AD4BD059B1BC941A01CD2914513 50786735E2394ED6B9383AB43335986219AD1196DA791F097EE06F33BDAD9B39 799D59B4A3E62AC6166534A9141A430C832509A05712B3AD8162D4ACE240AEEA F4F20D8AB69502EFB2B405D8B57075452D512F7DCB611E148CBF90E36B67E377 2048BBD1529082FD774DA459F83462228AE780388978DF6248A1F2FA742EBFE8 F56DFFAEEC1896AE72566CD485A15DCFA286A81786E4AB076DB34574C0C22149 E74F0F8A9E81AD2B79DEFA78B312523C3274365FC7D079D64D7B35170F9AEC6B 1F5ABF7455D07C0B108972280809986C1E8B7B91BA2D94C633621EA43DA4BE48 F408ADD65EB4E3F293352F4AB2E2F99A14689224BDBCAA84301B700DB9E645A3 98C7F4D36910AAD8A25540CD95CD4FEDC5B88457D8046C1A6A3CB7AE5D742F9D 8140FCDAE672308E68F38D31D9EB0370C7F5B1035AFE9957950E06810754A11E 9C06C3374AD9CDAC085F829B9F9E0B4EF5BF7675E9A11615DCFC2ACC3DB93998 851F87D8F1F9E6E25FBDB0641E9655B2B27A8FCE9F5A073FA5943424625DEA2B 05B839E96CBBD88FC5E20E070BC036B0A25C5F31CA530A66838FBAF698170AD3 22D6732C02758398CAB7B8EDB3C870AC398C53CABDD2ABA5F70C243895A4B1EB A761E0E71907DA368B8F72F29F9CB36F25EA4378044ECC9079F1B1FBA0F5D7D4 B3CF454255FC387D3C12507CC71D1092953A1B5D3682A2069A3B63D36541A781 2A0D2BF26E2E0E2F1B0C2242F491862140CFBD5DDACC4F2D83B06259B5874559 39FF55C3F3755251AA30C4B2C630015CA8DC8BA7CF97A14353FE0BA2922FC9CB 05541261356CC9C23769152FED4618086E7FF2380C71616E52EEE370383CB17C 32A7FB49901F0DF9E7189EB3C31EBC0E1DDC9092BE42F3A05712D9585F676A70 9D68018CEBFA7781060F1A0949FF37EE8362A517E6C3A80F09769A99FE5C2E99 B915B048929A187F4C6A0F49193B7ABBB58D9DB9F7523B7C21BBECC28CEB2D80 689758EC85919BF917A7F03E0853092F3DAFFFAA0186D12DEA369501734C17DF 8C9F979E2A1A2AD0610467E0E010F9CF96539A988BAEEB955668012BCEBC9A2C F0932CF9851AA10782F573908076925460206672A942BD4E9D76CCA9505041EB F75CCC9F00DEDBD1124CC52D4405CD0DD86C05A494BB877B1E006F82A7B41E7A 334778C84B607DE87610E95FA6FA4A32242620A6FEF04EFD024233D9B2F61084 449EBC844ABCFF2456CAFE447EBE40EB3A4C9ABE0FDFD6FCDA87CE37598BF534 B521C5D0B70C2C4019590833C224658386AB478E7A25B200A9DED2141623EBA8 0A7830D5FF59A834B9D96EE4E7D2CACF2690E2E730B8ED12FDB919C1F447672C C15188109D1412D7724F3B23B5EBEF4FA7BE526D777652E2584DE397D30AD791 1CB5F86F43E6360C813240074072941A41A69768AF057936A3963F0635C32E9D 95AA2B96376A9C47828DB85E8698B108CBBD0CA63747B7436CA470E265568A5E C038D7F1DB91B3DC7C7F8DA97AD1597EB4D7414FFB94D97EF1C87C48706E17C3 F5E2FB121C6DA509819BC876550BE91656EE9C260A40BB97C157D9200B9DEB1A 996508C803C73CAE0ABEAB4F4838A3C248CD28B27DA298C616F462D519E893C4 7E18F845CAD3A55FBA4BC45002694654D247B649D7FE94DAA2AB5915A0E40C7C 19444BC556151E59A186F4BB9D48743EC18678FA410B827B55D1DF3540F4864D 201B9AB1701EB73D0101C64BC473CA92CCE9EAB39B442DA4A54A27F1CFC5DB81 7CF1B014120C257E85AB2B3B2AC0C6C4B596520259B8579E6FB552BA9F89D4BA E2331008405BB53FB8EB83C58E93BEAAEA00EB898A72F0060A0768DE4E7FE951 7933D03E1B68075DA412D9B5EB49E6B61D41A252E3199DCED05BAA66880B72E5 F4DE95CD37431DFDAF370FBCAF355140D19D1A7F6684FF77B8F969B15E6739FD 13392AB3B8ED2D8A1D1B10E4CA57D61ED69EE11AC8498D104C582DFE59C24E7B A8CC165148F22292DCEE3141D153021DD4CEC060D2E47DAA8593CD9A6210D74D 7B2652D9FFA311E353AC406F31B83BEEB2686315C80FF4FD467D7E72CA7775E3 92F404F8B166CC5A743F80BCEE186DD11322357ABB3CE451CEDF4F173E975431 3219E5C31EDF435508A68462A46DB02D76C1C5D111ED8FB77FAE60659F38AED4 CA3619DF2049C0279130F1F7060AA3EE0B4C1670A4074028FCD45F3D6593CB2E 98484EA8D1EB19C48ECD757164305F2348B24A88EB3C92D75A28AA6561D45FCC 5DD765A5BD8851F8413C48B76310C3604AAF75C672BAEB7E59A4EBA612EC689A 2EEDAA3CEE2B50366D565E6C58E3C112DDB9E365EC95BC063541BED4E64EDD29 BDD4202E8650BF0FE0D0292756C67AF6589C2908220EA01BCCC9D57455BAC085 463D9F8A3B272AE2AC683636C536C8803CA76DFD84387A38FEB4254A0778D071 2FE4FFCDF695DD239E20837F940C3CF5C34954692AA28347E92B530E46C2FDAE 07F1062B60FA834FAF3C979F6D774FFC34F236F1E261F2CBE354C9858A5C2EA3 DF08B3666BF6872838F53BDCED43873B292B615684ED8CBB888F0C200073A158 BD7E680EF26839F169C2AD5D2DE5ACB1128D76F0649E517D9027C78BDB254368 40E80FCEC6524D379CB33AA06998EAD62950F0F41255E442626F8A2A11C4C989 36B200A817FA1851EB0D33B2FFD355EB9619377D0EEFA3A167F5AD272ABB89D4 F5A3BCFA476DE96C93FFB4CD412F4BA1EC77F0BF110C171AEADD00ED91609A44 E7ACBFC8C6ED8203A1E92498BD38A04667E68C11082503FEFA1C8FC6AE089DBC 6B7DDEBEAEFB4C34B396FAEA55E8380FC828538A41E478AEAA84C6AF56B3E8AD 93FA74AA399950A15D1290780B043C6A93552FCC3377E1D79A78C79F5378F38B 677C27C29F7E343AB9CC645C28F58E40D15A72D103C1AF71E779C761E7EB0EAB 3CB2FDE69F4AAE1448B03DB9F0CCE203A978A51C0C27DF671E792E4D36F9DF63 6BBC7894B79D2B978B89E3F8C8EC25A53380DE09E6C5D9247845E331C81E907C 60A4BE2FAF1818B22F6F4C7C8C0668A64F40571ED483EA94ACFDC830105F5C65 90165362C8CC0C645C14277C0E37613576462769CC0F3F0C41C6F3FD7F42EF51 7DE952C99CE8E8FAF564CCA8FF2E764B56F78761B84A5E489972A57C89D29B0B 7CEE847FED7688E493EB74367EF4823DBFACC2AD2C7A0F0F72731C75416FB36A 1F08676B1F883B314739AFAFD0A3D58B07FD05786445A5C6B41E3EF8CE46F31C D3E97ECAA3BC1BC37F79098988C2E738F9B347963F2FBF01FC475AB251EA37BE 506DE445C3D367B062DB2639DFA70E34CD40878FB5E01AF14B1A8A0A5D9D78E6 8855F16AC6618239D060ADA69E697E969126CE925FABCEF75473EDD33BB56DE6 13B47C31E605FCFC07BE074B3349C79F04A9B9ECDACABF1F75ED73D021CC617C 82661CF5D5CB7F007C9E59ADA5C36F993537790DDD1327AB6115C6458425D22B 845630A919245C87802FC3000FCBA83D617553D5C57CB1BEEE4D7F61DEC576CB E2629B1FB4FA4B57BDE2205817FFF7125A3A932BF08408A40A71B4F55B989E05 5808901A5A31624AD562C70CD5960F8282CF5A89D005B16109E712AF50E3E8A7 0BC0B2EC8A7B828C73BF801D93EF13844D5790E354F6D41BA47902E3AD3B9457 C2FFCB2E9B38E1A7935A1CE2ED8AC7DF3EF9BCE1D0E10CFDA867F88D8DDA8235 46DF76832C3E74BB9687B20B34E368C27C7BEF6B486DA4AFEC09220C3E26B85A DD20367B66E0348A3261A304814C65819C635B40938FE71A4586321300704F5D C1AABDF57DD6A9BC13F206031892D7E7C956BF440FBA7C5B1E53A8B898C70B09 D7EB2682B5A208A9C9EA70B35FF8D6F6B694527090A652C71C44024DA872647F 3E2A2DBF28C879503DD2B43C0060E5E60E339236517FFDF6CD07924DBCC6F361 AD10701B369DDF12A960083F9D588C807B2461AB528877B8D0A462BB4741284F B2502C1EFF3617D635D6EF68A82DF343A6AD0E58048A4EB675299AD790BAD275 8548CE1C7D29AFED3A1168AEE36D0A207431C5632D51CEEF435634C0B29FCFCC 91D287B71756AE7A7E89A22F6DCA02E6E1238C62BB9078A9A81771A6CA9D52B4 F617C3C6F39FE01BF827BEB1A843EBC84A37FD7ABB93D3066BEA6A5B52B31909 5D39F0C18A6D54E687267A8B9B3600E4BBDD89FE8F0168BE481BA4AFF823A330 6F585A77834DD34499B1C0A642AFF736D760E9BB5822D8509EDB9BE8E9725842 2ECDF5132226E96B6F0556D4998FDD60CA6776807F1D65DF992B485B1C8265AF 0FEAC4E24D52A7E1BD49C21FF015F9EC1EDE9A086FA3A284084247C2B19D51C3 263E5E4A8FC2363439CB0E5A58D7150DA4B340AA9C20FCD91BA3DC105FF864F6 07BB2EC78C1CAC003BCE81FBFDCFC00E16B290B26936D7E961CEC331010B08B5 E3E63808FFEFAC93BA7FD1773410B3536CA3B76EEB0DF08BB96A612185DD6495 85C30957B6C04B878ABDD08129C7FDE4FC13203B2C66DD9382EC108ACA6F3E38 D7D8E765DA98C7C9DD280AE72E338CCC966BA8BF0B9BB35F796D4CA6CFFA50FE 436B5FB77CFC31173183BED1BE2C4D61480DED329939ECE07A95A75A548D9155 7BB1B86114B2FB79C84FA00EAE73B103DCD1C8A1E021F221D5130106EB7F9F51 5A73A67D37CCFA3A29D2DD5ED34D87A95C6249388627DB99CF5448DAD580F39A 8CEE33E0EFF33C4FDAB9D90EFC3D6EC1D11614EF332AD6BEAAF7F5D52171A710 4B48072EBD99E0ACC53482C9C9165C9F8D37024D5C00B126D7D72908D2AB5148 4EC0319BAFDFDB3F3C364BDA027F263F9C15FE967201193EEFA0371632817E39 88BAE73A0385A7DD5419F12E32DE6C46C8061EF398F4064ED0502B5F43B5ACBF 90AF05501BCE9321F8435D1CFCB1ECBD9CD21CD96C6DEAA702533ADC92E3995B 6AC16BBB570C66F051458DC91D0C7E74D0B0C1D57BCA30B1A1479103416643B3 29E5C1D126E047D36C0E86DF19BFE0F1F0E84BF21A9D09362C5A7111F98C1FC6 4A1582DB60FE4CEC217847CA1EA003CAAC242B2D63DD9E5C30D58C779C595813 CA44D67B11377A86E2EE31660D987337E4E1FF198E4FDDD4C7997BC7E93A06F4 A73E408A5931FEF42950141D2F39509E3385C490E76A86B283FD08F8A4812CCC 1AA25694D35DFEC6316AFC0F843890A4BF825A093927E3E70B8461DE70CAD359 C06421BDF37D6B8FDCDB765CD05540E9EE73E4DB9EBA6AD0D1843EF2098A8E66 5C55D566D48FFE6E6D582C4B3F82A949283924B3A96D224CCB78C4112F2721CB 8FC23FABE122750631B0E76083832EE2EE95F264954E0DB7F7057CA962B0F5E3 1089B8FD3ED0D278B661D754AF9A9010A37DA33EE684DCE2A5332AC9CF23BCB0 13465902AF34F0D4FECC752E476694799F27915614B1CA896550C7A88D2E6B7A 0D208ECD77F64863D3A84910B8703E583876F62C37B2F3EB5FBFE918EA672DA9 C7A1F06911B5507A1399F2163685535A4A61CF40AFD130854B1F11D9226A940D F71F33DAA9B325A0BB893378062EA045686C815C13BCC7F444C11F3EB2BD835C D8E6EB8F82EB29B8A91C4F628A2AA12A4B4355589E9BE3FEE585C05751381046 B6C66C1A42CFF5A78375194C2EBBD0967B3CA314470353C415154594CF7A9D74 787D4D0C09227E26A62AB35900122E41CE70089D680F60CB5A321D4BCE7810A7 46547C85E6F85FE5240FCFE9D25467E4A8A3913F80E07AF7C72EE8D59D0E96C7 EE0B331946118728868E66FDE710A442C86FDF80E0829BEC878B884B8C72A69C 37DB92FAF53A27BD9B7EFFE920BBAF3E72C881B9EEA6717DC5CF77411E0A8F80 4FA38FB955C67448EAEBBE311634B37727E77B5AF5C18EBF0C50F8BF1E116996 11987EF2D4B3197C69DA62D0EEDD80C421D24B2D77BA5D2C19DDDE528124ACAA EEB072745C5CF107F2F4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /UniqueID 5000793 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 37 /percent put dup 38 /ampersand put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA 07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84 246AB18279A2B24E5B50A2FF6337B7B10568EB0BD821F8B99500A30D1F959A11 7F176FD5B8CA4A70F9961A02B350A76F697E285BFA294491AC22E3BC4257933F 986FA58C106E98B256E2293298D5B7A1FADD93BD3CC207D8623EB59F6B3FDF30 24051AFCC00619CA95CD8F97EA85176570BCB441E9B74F7C1D6915938B3324E6 7788D11F468E8ADE12971FD6A5438D8DEDA14983FD315A540DA3F064922470D6 3F7871BC2B5CAB0B6342F1B42302947A3B490FFDD8EEE55FD2D57E52F756384A 83E2267C6484A6D4220E4B8D430846E137E6CA0BD4A5949A5DB38EEE74CF531A 5242EFB376496DB8E8EC7CEA9151BB3FF9C0746080099E8276173D4446330D2B 139A67B17DACEAC7A3B26336A1F5759B14E840F0C5FE027316068F4BB7DA76A9 736E80A8818F63AD429AF6971AB89FA8835379ACF115CFA8FEC7A20B5DB51023 3DE403D68D225B5BA91C814B18ABD2C55BD811374D644413C2ED9D08485A47C5 3DA6EAA09263D5C10D68DE10BC7BA019A289E5C89C844204CC485B2C6536D900 CFCA512B82877CB013B1DEE2C5F0DAED4EFED406CAE046B0CB12940B236F3005 1E4CC1851E91B9C529904A9DB743CC272FA607C489D11986C59CB2825B29987E 6A949AE9CF907C581C0C88BD0AA7DD92F2646BF7F7595D00F8C59ADCDFB637B2 AEE9F9C42EF91CAB11B40B9744C5EF9A3D34A0A6856DDC4AECC90571044E7021 EED1F21E695A6555C04D0A8661E161FDC13D8B1526DBF5231F0C207253215241 DD3B13C37D2D5497769682949F85F482C9C7F3EAAB1627776A48AEF176307B75 21DACFB413F0191A39BDDF761709A6B62E2127153DE1860D5F11A241C4F6AC52 861F772E2B2ED5213F99252C2523A8BCF7B42212E31BF529DF94657D2BD734A8 C9211DDFFC557CFDBE1516B9D433BD173FB7FD9383DF41C0B8158B758CC10561 0C1E45380725211777BC42A785E273ED52156CF73EE2043813BCD15DD13408B2 C282546490E7BF7E63432C3C0977B0D2FD349984937572ED791936C75129AFAD BE713924485F4DE6F4237FC68CAB8CE2C49ED769B15E302C8A688BB87A80645F 2AA8E8E7D3FBF4E7FCB6EEDDDBD1A72B2B888F7E9C40B98C3336DCE1486937FE 85441BC8E861EB348CDF8229A2ACD1A13107EC5214CF8D728E34B28E4F89EC22 749D77F2A00B69522DA0DFBAA6B5AF8B81B5F68CFD93581479A70FAA733853F9 53231F818BFDFC8AF8091CA30BA821B912B800D7BF3EA7043FFB544EF6A82F67 76C37A4C06592A32E90CF70EF4A7E4EF0182B6388A842F52A16CB53A9D49B875 F5EE04264822780A9DDBE241495366945769918BA189BC46D905F86658192FA1 98340AD887C9D5C0FB7458D1A41337BFC059E181F3FCC11141B290CA0CFA0E6A AC79173C5D37047E511DB7CC9FD707A4D80D82170DF6A6A118AC68D1DEE2E4EE FF54B7288A7C57DE0BC5B2799B4A153A4A7C5F034AAD2BCFA0F8626D840C88C5 871E9038CC6420C2BD8562C949A4A723CB17643F586BA17FD42694176CC01837 86B661363C2EB97C873969EFA049FEA88A04B576992ED4814502157828F3CAAA D5D38B14855918B51B79AE127642A5C77201D4CD35282AEBED9772B67F797F9E B5B4E3DCE4BFBEFE7EF343A234D7351D3593EE1A9722C8CB6C4F419947C3955A 7D7C0A9CD1BD0F94149D3B4264C8E7389AB33B0A9680A4A510F3FE2F009674D7 0D125A9BDF81E322DB5EF17AA2A04CC6BEAA46BBF15510015611FCEA56003BB9 FC94AB16CFFA3F66FAFBAEF3656EA968A85A7B4CE86C0B2BDD79DA4674AF3E45 BF9AE69C1496A8BEA1B3F925B87433F828DE8110D577620B76A0CA926B056D9A 3C183A17E2830C012DFB57C759B8F6CC642C07F59C7299AF2EB4331882F53B1D 72088642CD857FBC2FEBCFD9340C9AB3BC312BCE80022A2D851A47A2D77B30F6 B62B5CAB0B6342F1B4DD35BD69BEE19E3B57D115B3C49168BF20057979A98A4A 10BEF4C59111DFEA8B5DC7B742EB20E7EAA201549DB0D1FF1E4AD161C1C1E17A F3203EF8D033328E19749E4C12960147C069957DE29DD11B8BC1CE107F92AF3E 5946D175977B5E64DBB2FE618037FE2EF6E60928C8B79C3A3C57BECF45CECA28 DB743BC92B2EC3FDD887976AAD9732B2630A0C00C016F2297FD701F613B3076C 04E7F9B08F3950A7B84F0FC57321A1484F17687D2F390039AC1DDE43DECA5E2E 8C882C9FB59B6F04DA3EA033FB29E70F1D17F951DE4F29F26906D52456D8D4BA 863713831E0DC16B4CE6D136643D45419A4E9414261E4D0239A8195D27D89AF2 3D26B47B9CB5B4EF5E84AE7C782382CCC556A075A5587703EF3289F41DEA9301 45DA986B9E2324E7211327F13F8133263C04FA81D7F7D35D0BCBBB84C39F24E7 4697CA9DBCE4B52975AE8E5818D834AEE5BDF71E90DA345E4DD45E42A1E8CEAF 19E73B2C156117040C7A940EA937596710EBCD55B973CEB37D2B233E6CE5815B 7026E290A0C33CFB346A577AF589FEB6610278FCA613979E564E74809EE16C1F CEF61CD2A5097C44745C8583B37BEB734D654E52A1EA8500611F074FF629E2D2 4F4B9CDA3DC8E69FF45F2D070A7FF5B2E4CB57FC8D6F2E2D7A2D4016B2621CCC 2859002702DCDB725BDE8808344E92552B4F2B9552C806DF5C109AE877B96493 12A0550BC96BEC7E516048E2101FFC4E2074027F26BABF3AE38AF5E2B17B4D8E 24ABDC6DF356C12D3BFB31C2A44C33039516F47BED6DC8A916D20A71F8BCF11C BBA6D747BFCF40B8E302EDF52347C6E3CF2FBD264BEF62B25266C5EB31C8FF81 AB3032AC86909FFDD31DB5D639BB33A454AB5D18C53458D41D2E55F27C7471C8 9F470FA6521D5044625266E58B9BAA131457B7987D661DB928E6486744E993EC 05BF01C4165DB55A465C07665926A92FF91412BA158724AC4352EBBBEFBD1AEB 0B4B6D62DAFF949FA74D8F650A00E99F65E50610DF22392A5ECA556B139CAE44 964C974F08DEDD7FA9774AD90BC5FF3CB9D3446F76A8C5CA84327B96FFF15E65 0593A52F4547F56244DC6838078CD92EAC0D63050DAFEF2B2B176DDD949D2FEB BD85A2F8A47BA07E52F36CC853E357D674717EBE73F7456AD9AF69A47DF33A78 1F3ACFC4FBECF29357716684AF24905192B6A29EBC2AAB1DB1288E386A8C02EB 51E90837EF0B71E7BDA176B6D1891540FEF6C7BD7E679F03A8E2E4CB5CF8743B D45F473311F039C6D12C68CA2E2C64C1FCB46E57640FE398CFD0F970BA2D5AEE 9FFAE5518BA3E720BC9E7E152BDA1C4D030F433E8D91A52994838A3BF777A1EE 29699D2008074D6FBCC56FA57AD1173063D33205454A1A4BDD2A68CBAFD53F51 FD3B4886BA1F19C87613D92E5FDDF6355DBCCFFECD15F827C2C0139D85FA6FFD 9D457CC7B37481E8563104FEB5987F82E177D1B201D3B14BF477572609843C3A 6A8F2005ECCE7B2E59761DFEBFAA5FCA846D5D0BD204AE7E2D2A25DBBC9A1CF6 93AC3E0808DEC3E57CF0E7EE3030995162F7864748290B8D6F3AECE27F55A17C 4D92B2871ADC0677C9F910524EEE46F1C44F478A5A8D8CAF47ABCFA021E63D90 263A01AE737ACE21B91D4610968B32BBC2E17B754170CAB4E7B39E9A0A459266 E29A7252087181251AD87A3292B35C868EC00C8BD6EB20ABED4925646650BA7E 2EB9FFD92E3653E6B0D64D790962336518A3C4D3B4A363C64AADBB2C27AEE485 FD0D47305615F27B8444AF730A4F8DDEAE3628993DA182E84F87163A97D16C6D E238383AC59698E08ED302B7F51D647E2546E5E870DBEACBAD3A579275E4DECE 8E84F483737A39B31792ED91B6D3E8A4CEFB96291CEFB462A6F68B9943E2ECB4 304977D5DFE97543CD29C5CBE2BBD39C759D6823D4FC10DA07A32116EDDDD9F5 6BA416277E5C973095F94880C58B911E587554E2CB731A579D72C56D50B25762 61D204B3F0A74082AB0D580A36558530ACF039640C99AB5879B6FA812B864F98 4197AAD9C8497035A9077CF8F904B4ED88B35EF6F5821818DC057760FB6B11A8 86166F1DE261A7FCBEBB5C25F6B69B9EF8B6A46D666F09C8F8322AF6C297B348 9FBF70088277819D5A657B538DC3E5557782D2D72A98AB81FE916C4F820F77B6 18C013A49246986CFB6B6CB26797330470A47F2318894D5465EE36144D565164 E2568377D3CB1267C48C39B007A51A697A4D8A360D401719C5FDDC843CFC4C96 F2237620EFA9C48F6DB01B327B291BEB98AB29DD6FE0B38773FBE76A2518487B 10878E9D800212E7FA939688C11F16242C23E01471E9983CB925E1A08BE944F4 C18CA819FD2173BAB27B08CE30F95483930BFDF8FF585FB4D1A53259FC851E23 5C19DACFC81E5E9F50C94A4970578942C22678997232ECE7374414356AC84B2E 20DAD9A162A81B01661AF17841FDBD5D61718DE52EB4F11723D1D6426337EA5B FB8695CC7E4D624573598D760F99D337EBD6B0D63A1641954E2E961580D57CF9 979805BA46BEDE153B72555C97121CECDC14DC7AE0EC40672801F73615460E39 75FBBE275F95682157B2A72D599A27C0EED6D92B8E752E326F68167CDC49136A 37476F8C06F00A26631DD27836712FAB037BFD00CA2FC4453F4A011AF66EF541 4DBFAE7880F291CABE2C975570B6C7EB362AA08A2162D50E433881A22067F298 01B2842A56EC5A1C75BCABF736932F3B0A81DCFABE323F40A0C43C3533A7A57D 42BE8C818767BB74A52BF386EC17C3AFBC950338F3FC66C9889ACC7686BB512A C054D98815402BE8D5544D1862838D4F9842A22308414060894D4E61E4FBC653 122B2B032F25A8EF58621A49EBDADF8CF041ABA0A97C5979C072F654395116D6 AE849ADDFE0B53DE27F9A4E5193036FDC4BD3B7DD2A7D4E5081B1BB9F9B887AA 84F283B65E26BBBE744387A26BFEC4E5AAD541A9D11E8EC0FB8B94A5A6813653 AD1D4C4983161E8324370FA7382FB4DBBABFC160C2ECA3D8341CA806D12C011A 7F36564A649C9703CE2F88824F2B9E6AD32FB401F3A783BF474BB8278EC48112 46A6682507DF2F59F67D16C5F290B8EC4422825A5148A8A7B3F29128C27727DC 2BBA490A86DC77B126AA99259B215CD1E93911C711E4598F66A953196C01E65C 5A9335E9A419C3F2C5B5560B8A10752493367101B44226D321DDA2BE191D98E4 3BF6AD330A07BA3F5BB5271F9146D050F9A9C53CE623C4ADC5DE5EEFC65608FE BBC4E35F965220C96355FBE533EA5A56EBB4A0565875444DC9740CBDB6076C70 2538D2B138B59C818D85C0882F4AECCC95AED6C7F088F8A230ECDB0D77B6E2AD 8F0871AE6EB2414882BA29090387BA8A5A6D0C3818B201B34DEB3835D4B4035A 5577DD59B8F671B02C86C84084FC95D54F002963E9D5931D3C212DF8CB07DC0A F2AA342554E26C47E5C8DBF74E07AC4C5BABA0F0B9CC8CBA4F4A0B596BB65821 66CEA967D4D11016D4D90761024EE293480CEEDCBA3246B997E5B72ECA4A9928 F90F011500A5A07B9236C6594F64784DBF2C580B7EDC4E65CBC0F53D9333C10C CCBF125A4826C4B275E9A9B9486F96147682BCA31C7796EFCA21804E29EA88BA 4CA21537FB04433FC987F81F3C5E910252802AC043D5224BDF07912133960649 B7242A9A3077E9DA047155EEDDF4D2D79BC62743F758B67BB69B521D9E57C4A8 9AC0EF04D612FC5D5B36676F5600938774FAE04E10468B8D7A04A2134A7A9ACC 55F708D22C556F03C69D2BF5E93DC9247FFF607986BA9F581743256BD055987F 6EA560A5B756BBA5E992C324E9A777BD9081240052BEFFB0D6F4935392E65D78 391371CC31938B72E0D15AAFA03549650F76299FC58F0B92BA09E29D54A6F9B9 7DACD7B693979DEE1FA67D658103858EC1108F1C3908A95842D8152C7A7660CF 9220768FB5342D323ED36C481BA616BDCA03A46F21191F8069DF81335723FDAE 1270DFF7C00F7AFAE2BA06A8BCA777E2CFAA7D58C11C2524A6490BBD9A40E689 9D5EC69AE03AB6A3EAEF1F5109F93BD44C4871C6DDA97C23F6D60AC5E86E20FE 7363F7AF9451DC6EEBAB1496C951FE42FE58FD87D27B43ED44B64D61696F1D2E 50C8ED9849FC3AB4C1E1E6788E90821C49159701179F4E47D6D2C57D23276569 8B71AF6650A22086A571330E34BE3DB233F75096D6D82238AD8694554EF88671 6F29998124AEA08553315AA5674AB4013271934B0F23CD718F0C90DECE09A5CE 78B253A6DB4A429A1B3AA7370E2F24F3619A0EE429CCD0D4761569A1914A4E41 0790743FF5AED7676AFA80856C7AD44C0B8A6CA037F26B23BFA6FD48FA923351 EAD871EA9BD7882F6E07792A0692BFEE51A04002A1B3642C57037A46D3B175F7 493C8D166840BD53E8A62345EB47311111B0EC5B3100520E1F6EC77E269F5BAA D62BEEBC16AF04EE9DFE8B85BE9E41B23168D2E6D9A9A030F39D613931FCAABC C268FCB3697DD2983DBB8746070F50455457DA15967381C0F9B64B028722F227 7B1088867CD7A841D19C943003CAFAE73A9A0916D7B6E7A50A9C561F7D9FE27B 3A08C0A13A2CFDEB38454E5461DF4C20FA705EE1A13F5B806C98C7B6749B1FD6 66CF1CBF5AC85DC0B5D0A92B588BE6E3A10097C94308E27300015465914E1112 1B4783CB784D63D31A398BC506E8BBB74347590498A282CD546CA64416B67E8B CB86CFE01A5A91A6454BDFFF9EC7E806121230F86DBA84681E5492CAAC704705 A44B26B7451D6823A5100A544CA10378198E24C17CBD7B0798AA67B7623C2A87 3B0C0D60968A5E50016EDA490905965A2020E2816D1D1915AF1B8EB698A82B7B 81933E6AC7E2C0A522F82DDE7B36DFD1D2557AA2CE35AE6BA57390D0EA1ED97A 658A3EA092966841AB23B793C19BBC46A9F8162C46AF84132D8817D022C2AD91 2C213D0F3801121B58D54587E3306A6EF63F0829A121F49BD10722230D3FE3E7 EC4A05E21CC8026071D98129A67FC99767A3BB16FF561F5F257981C1AE11F837 00E37CAE0DAB782C53512A3605301BE1C313C1B1D71D455128F59B45BBEBDA54 E303EB8D5BF34B4E8B7636B0E4C8EBE52148C1108FBD8C38BC91B6DF92C4CD98 30B8CDC1E183BBCF741D13E7F6BFB06CD07BEDD1BD45FE8E0370BF6244ED16F6 C2FE01C1746639E64598E53363E811BF0D6C0CE6DA4DFE3A2BC6D70C4F3B2A4B 592E295A6EDA93E754C81088CB2A56A6969E0EEFD035AAB018A7A6CE7D47A1C9 E15D56DF58D86FFF5C7510F83413035139DB1226596986E218DC69E178C52B5F B4A26319F97634745FF8918D8645C0AEDA04884665CB7730E93A5CC9D44F43E1 847F9DA8C0AA32C48CCA64B9E6999405ABD9B0009C18B55FF71FB5C5405864B3 69514618FD566E94294CFDB6EC41C8DC150ECC1DA4417997F95E27866042F021 147D58A547F5535D6AF761F4370AC398ECFC3240F0D24572C459524DD5E4FC09 73E5CFA19277CB6462A0A07BFD591066C4152AFE14D28154C7BAB41E167AB012 EF054A365AE6C02FC4E72A42F7A453D97D379F46E76868415C10BBE5E55B4A5C 705375EF9C8762E796575563E1D9291C7DB42ED19917C33D06B6763EC0D53932 403A1217C0A1DBCC18437BE1DDDCE4B5F359062B5C658E56D3EEB0609496AAA9 39E16F21A113A1F38F0E3DD7F3049DB32D4D817D360A0CB35C9A5BEDCE7C41C5 3256379806DBD86E5753A4B0DE655684A1097F726A82DE83EC863AAE3D23B88B AA5BE19D134D5C9B48CADEB73EA7AA0067A230C7D1FB26B75477C46ECA78F25C 59DFB4BAB45AC6B30A15DD6412FA7EFB367470159F3AB72A001F8A38452F5DD5 922CF6AE978E83B3CBD999CA057376B936A39C9B60EF517EAD4B94A0C431AD79 E37566554801470FED95A79EA3EA7511E73A89F911748A29C21F8276E8893259 A4AE7B6C3D9FD1E044B756C67A72D02AB5B805BAEE1504B8C25B4E18E35B3D3D 2698CF42F01FD1F4CE11693FC38A89F76BC8A11476789F37518A894E37B1505B C5436A394EB8288C134D7AAC6AC5870D0F3417BA649784B6CC076ACC225B9744 DD91578447520C017B805185A368B39B84D52DC40653B3E20FCBC26C077AE3A6 FDB9E31B2622BA6930C55F4396628BBC874EFDF7CFB7A7B2AAB09A6FBCE344C4 48066FC4516DC1C4E704ED887D290D028BA07B30B6D50D6B6C2C96ACE6AEFB79 4277C69A9461C70E06412C36D360130948DC928138581220D072C9655D74AFA7 1C448C0666F3C7E883311FE0340B9518F0CA3073BE3F4E6D307BCF26F2661486 501ACC3C39675CBD3982DD8707292845E05EF518A26467F80DD00CE2E3103ED2 83134CDFF5D551BBD180FE5F90648CB9E398D68E7B5F161F3D4AA9E1D885A4BF 0546FC459B4689E609690E22C95AB8F45455D1B6278D794312F40E1BC647FC0A 768D28CE85D6BB76FBD25AB01583176D3468FC5CBFD8DCCD326B9773CAA18F39 C04729DB35F86C387A52043C823A90EADDB54EFE1013B898E67914391256B386 0A9B03F0D17D13297F0C70AF5BDE17ACD657EB420416968289C0D45C0EFF34B3 FD8DB255EEEA68C3373C64D41D0250942CAA004E0D27D4D1BEDF2E8FB2ED2223 837431D8E76F2E6842CA15A3608A1ED411CE0A087A695B350A54FCEB8AE3BE3D 404F747892494CD2FAD54DB2F0EEA473EC1C45C933AEBB425F493F6FD42B9088 38FB36DE74BEFE82067A98A7BF29ED2DABBD891E656040F0F374E18A0C84F5C4 101342D65935B1FE1AF48774CAC771DAD4CFDFF333959525DB3669977328A210 936CE509188992D781383EBCC66DA17EFD11C05060F3073D9DE5C04CBB2A33CE 9D14506EED589AFA01AC7A7FBDCE73618101CE85EFAA4BAEC72E52A5C0A4C13A 0B79A7504BBF5BA67337979E10EE41B012E86CD661149A603CC18C93A93766D0 B5210513F67A549EBD22BBF751C28FBAB001DA1AAEF8A70A4EF48C376157372C 1C7E2A9B3A5373D586A5FCFE2AC748A20B6C771D32A1277F68B8AA2961FE5D3B D7B6389C3F3BC576A59DD5268F038DA76B3650CF66BD6C74C7BFCF61CDE61C7D 78C07724379DDE2C9F11991E2FC6922CB2ACBAF0F2BFBF93F71274B2463436CF 57C1314BB7ABF55C5547069CBC4FB60788B5DE590D35EA5CADFE9DFF82B6C8BD 29216849C8BA4C5AEA8E2A01FC1F3227EE7C65C0EE25D5C5BCF9F4E3B687553E 6BC43F4121B4FAEF827B060E97018A344DE91E5815593491F50D1AC7C4EA8375 F9E9C4CAE3F6E1FBCCF198AAFE8F668837D05E2EA5D87808CD9D202E7D579751 C1C2F33F6C2C66CFAE1B1032895BB1B962DAC6BA3878C994862633B1CC8F3FA4 AF2EA9CBE8B95BF8525B84262D6076E35D12216B0D5668541FD536C84B7ECB6C B05F7012201B1A847D2526FCCD69B52368C1E7E18A49F184A4EC97FE3BCB5BB6 48CE6265A1609F4FB62E8406EDE15BE741EBA7D0515958DBED195C26E4B77E52 9F25EF91EFB8D3D1AB1CE87AC3431D43966723B2E9311936C38959A02A242110 0F8FEE4BE0304B5147DA8651455310D77D3E35DF68EC37D5F1595EFF6432060B EA715BADA51121A969266DC287D013C23B5099CBB0DC109B02A8062617F543DF 19A09274B4730DDC80E6C7DDD9CCB6844A014182496C27F00E4C1D8D482E6BCC 68E173182FDA891E9EA642DABA71B2256C7DD2BF1BEFA8CFAA742B0B1AB14404 05B8289AFC00166851B58CDC98945FD1B36ACF8FEC3DC8D09F1337A7C7CED9E1 B3FC96FBCC5FD2B3FBD86E64DC2FD4F9BE6A71C686713ED0BD007264722C3FC2 C307F5893E387A17CDB0AE61C0E2DDCE04CEBE057C077ECD6D1576A4D28B6E2D CC77B5D6B6534A1349A5EA3E61534FA4B18EC71E957108BD9ECE24ED1B00FB4B 7D19D563FCC479AB148878BB06A991D3964482A459B86C7A84C860612A7CC79B 04DD7CCBDC66058481F4F86E9DA08A4DD3950BB4BD6F89E0454482AC6D06EDDF 81EEB1AD4E14CDB049866AF8F99F11669CFBC545CA38F812A128D961A35D5ABB 418B85B28CEE521BC7308C165B0C73C43B83D203C8B2B46A8703EF19DFDF9BB7 7252E461D1634D57CED323855088CCB0F16C10CE819D1BAC0BE2B1F970171754 F2270345F6A2D97FA5039114EB2A2481D0C46A19641D45DA8F0F3F69B1BF522B 54E2435CA79CD30C882FE4D4E0F6AA9AEF7A892CA544EBB63C4CE63F58E050FF D7BEA589695888CB8AB6DAC7778E240609B50ABB7FB7C0493470BA099EE552F2 DABD81E6AABA7BB1B1BB41C4662273C4DCE42CFF5732E6F3D5BEEB8A2DB32507 B95CA993CE2EEE444D457C582F4768AB0B50B3DAB1177AFCE2B76506D47D97AC EEDF1E61A567E8546A2888C7D057A6622519A2A0E363BD9629549D5B90C208BA D5CF38D588AC2CB86B85F41D2F9255ED03F04859CCA4D936AA20100CC4C8079B AD35120E528E5F73C9221586B5EDE4EE9869404CE43279F904C4CAA9244672F7 BD1AA13B4D1EE70F71CB8D5B10F559DC1B8686A6989CA63E991C5446C4B3BF5D 0DEE95944116265DD813048B3A2C9ECED710C3961E462FA147C8C953E1E2BBA5 DDBE2A16DF5A028887F956B06BEE87D86F47518269750120302A3787176437AB 6B5AA333EEF32D04B791AED6316630F62835F19A54301705C0AB29C57464B241 9B1968357040D30246E5B848650C496D3DBB728CA4452B04D4566EF78BC66BBC 419FC3434A8189F8EBDD36CA45A5432460F33EF480E60556396A1A99E32CB80A CE64D711CAC8FB9708B7FA1B5EF47383C6080E211A98F67E3C352A1E3BCED22C 20034A532CB6506B5C29E46D5F2B1CADCFF4533A8346E9C06DEAA521FD231E39 0F7F0D2669DBB032B2CCD203B26CDD08C8107143091430498FDE35A5E5CC4030 C56D7444EFF73044BE2A90568D2013EAB27A7F23258B4A00740F4779B2AC6369 C69776689080CDFA294B02FFCA0F3FFA67893C2CBAD480DF46FE1FB53DC7AC62 79690BFC2EF700E3AF3A8359B192E76D8DAC6A5B43465D5BC7B7A93F375628D4 A6277F2A66D9DB6DF9719CF9EC2BBEBA569F0DD997F27F1CABA6A0085AF05D02 E724C9F27BEAF652B2B67D787F7D4D692613F843E5BD6F4D6B131E54752F4259 960174130F39EEB088CDBB43A9A988EA426BA51A7FAE58B2A880FA93B10AFE6D 373127C75BFDADCD7E9AD0EC710A1B9B4F9E1CA7A2B1FE85483F6DE1D04757C9 0D102B4743C9C54376563C553627C1D0D495C3A95758409670552ABBCDDF56FE 11E4113E5A96F24CD3E7CB48A922C1F4BE29F47DCB1048EEF47B7887A3F4B00E AB78146C33014479A28410201A719A714DA531F9FDD3391E0E23F65B1EB8BCCD B8C905292429855EEADE3B103FE64AD35BDADA1C532BAC1EA01856674B1D2B7B 0DC9316530FC17EA2DEF733E1418FA00AF7B3DAFC21BEBBEFFAF477D3C7BB1AF 95B0FFEC630135AB42952ACB2E1FAE399BC6EBBE138ECF176C668B36B3058986 34DEEFC302D325B21537092BE87E49E8AFAC488C4031ED5B2ADA989BD741699D 6597A7E1B0D9C4AE448A342549D9A36CB71AAC9B0EF75D8C47838C8AC7153909 2EE27971A1D3A9FA3A5CC4E62F9FC5C68AEA5290A23A063AD78D71591869A718 ACB7754924E6A1A5F77C831A6F72F2997D2B863CA47140169E1168C394914A01 2AD5CE3E6CE021145D4C80ED3A28D9AAAD90D2B154701C0E48AC2206346E6F0C 4A313ADEEE0C0280BBE11BCC8844944553A339A4F577415CDE1873FAF5EFF785 DB3E93F8304A442EFB39A6144936DD35FAF4490C945263ECFF1BC9E5B357F5F1 CF7289F427FB2A61CB160A42FEBAA581C6C79803621D5D9B991128C4A681F598 271779429B1C4B726BF8F153D8DF164DD518394EB2B721961155BFB029B4909A A3913DF4CF3B0108E10E16112C78DA3D0ED6F81C070781CAEF2C0FE126747298 0DC23B3A0425D6C34C1E37D2EF9900645148EAF8FFDCA16D2AE3FEA6D3241D90 E8850AB5DC74970AEE0BEBB34B7723ED38CE3CAB033B235F2391F5D05DD226AB 3C88D1F04B515FAB404B122085A23B7D5D945436E03CE49FBE49DE91FE835A60 0C5233AF462084378328A1E24C96EEE41221E52E74F6C73708CEBF121D7E3766 AB0804EF31E0DD61AC68334EFCF1BD467F6AB85E9204EBBF2E4D63E24490E506 2816352138E18659B64511400B515E5C4444DE20F05B07DCA33788A860D7014C 022C90C600399F3A6D5931F54EC268B5C19075B27436698F3CE924B584D1DE97 8C90E597E88198DEDCF49CA8A0282200D23F17FF3550FCECDBB84A11E63A0807 5EB673BC333E373CA9678CB7442CAA730F61505F7F1F968EFE4E6DE2F3B7E553 6D10AB9DE4EFD81B43DA89628992C46E3C3F1328E6144915C64FE0097A5A2DA3 7900EF1896CB522F56B0118FC5208EEA37F69F82C893F09BECBED26DD5812C47 CEA2298678E842962E2B75466D518D36161079F2DC133636AD4AC96FD35E6BA5 2F2FBE7878C7782490EF9923DBB36307B69D931494AA303470E21E8CBB79E6E6 F9EC6FFB37671CDA67DDA922B78D4D6CFB6CF0E78FE79C5041E7133E3558F92C CCE0D0FDFD6666805EC32C8D6ABC44580266A19E2ECAC76905310EF6F0B61282 7143D4339547656BF0D3BC78BC602AFAD027F5CFDE82B0979037DA45AF93FEE3 8E8645A047B7E80D6882439F6E54175A779FF7737A056A405368874144C7C7D0 010964EC1A5296203AC40889B11F218E4AA3709150D38283BBC6E23E5BA73E80 29BD57B1DA623BC7B711DECAF26E07B102F427EF6B1E72BEA32013222081D258 038413E30542D4FC1A060B19CB0D26AEDD57F26F832B27921F8DFF2625C8DEA8 1F8A9447CBB79B0DACA6BBF157A65D02442F88D08CE7696AF74B89A1E16382F9 0E0A344F1F4CC3AFAA6D799A572F1A87EDC4A26D8AED5E1A8C6BD4FF1934F32E D266E6070476E4569EDBCD3F16F8BC8F9E011659046D568991AFC0C3680197DE DF47BA894B155EF524AD283878DEB608F0FEEBA4ED7ADF12FDC486EE4F7A674B 5550D815A0D3DBEE90A924571F5E0BBAA0C033970AABADC1147C4CB105EC98F3 C42693FF31F67BABDEDE8E11DE6765676599C0299FB242F1B407D469BE2742DF F550E058BC46488E791E60517C0575E0C75FAD715D3E412E0D218E968255F49E 835479DB8953C1DB3E50E78497E4A9598E4746B602E7940BADE07F7E6F09A2D1 2DC2D5519F6FA99D8C8B7AABC1A70BBA76E90B47E22217EE5BE1C3DE1E37FB87 4CF6D69AB44F176B07EC5612A88C0E4F52753B47862C90267DF8CED67ED3E61A B568BAFEF8D233810C2F6C8B1CE307C28438B625E0EEE88F5B88510EF0DF7DB8 EB5F84C3656627B8E6E6409D21F90976A9CD717B0A2D8F0993C23FB9FFCCF709 512BEC1072DFE27F3797A407E60F81056C7E05A45474BBDBC1CB896135D738A1 2A28B0B02F2A8199843CC67F37D487A3763AC7A4D58F12227086AFA490FA1EFF 59061698F665D675052F184CAED8BF1B5CD5418843F8D09A30401F3348D090F9 C0C751CE041ADF3C1869D543C635C04B59446FB3DABBC20AA0EA0C3AB9B14599 D2F674EA798B1A608CFD2DE919FC7F77CC9E372D69D3DACC399AE25533DBA944 1B1DE267DA5019C768823794BB0F252220A4B18D393D875BB4FD7E54F7199A19 2B5B00DAB750B6557FA37344632B0596B7490559C6689D18BB2948A462B9D0B9 1D22ED22CC36B1AED3111C8AFEAF97B34CDFFED3AC3DAA6CA8B690B8CEB0C4F9 37AA8F173559ACF33870079F8018C7BE3DAEB04C7C3F95F3D36064B93BDA657F 3E706EDE15CF7BABC988ACC551FCB51E48487E3DDC21E52972CF97E8C392BF21 69628CD41698F61AC6EF5B2CCCB089802A47C2278F2BD5B6253911147905EF24 DA4A50B3A52584FAAD492D3B165D530D55EE02B81BE29086D7F6144A589555FC DED5AD5345E3E736B16856DDB14733829D3003087198AAB602F5F69514F743A0 56B3A69CCB0351D9C72D8276DDDAE89AE7B002457A2D33F437CDFEA104C15FFC CCE94E78B14F11EC9B01CBBDDF1DE1CF46EE0CB3E715C5171436C5261EFFBA02 29496D926528878C58D515677E4A2C746CE5B9F8E57522B6FEA282A4646B71AE DA93626F98764DDDD8EEA9232E50CFA25EA1070E15416FA8E9168C9A6F2BBEA2 048C2AA262A898DF559102F9C4284EEC36E6CA7BC52C0FD22EB5AB3095A63551 F372D9EC0D8610650D180C99DA11E00C69664921D9DF2C1AC9EBBC84143E6DF5 E3DB08DEF0E11DB586BFA07C73454B9D9F2720223375C126BB910B3C620762A5 669F50A1304CA77BFEE04707C532B9BE0A1936178D61E17A30495DB0A853D8ED 43C1924F1EDF69839C9002E6F10B24FE30BC7A59A95C10C9A2CD323B5911DDCD 46E03622804B8DEBE7B73BD7B71C7F08B553AED20EF575C3040C5942BB02F01B 65440E55110EBC4234C4658F512E39ED3073A1A63833214AA44B9FA6632D59EC 1298A7370235C1E04547F7EE094ABD71EAD6CA568197556A27AE47B7E7666DF5 3BD41F9D8BBA2F807284B877147AB66EF39DF43AFB7DF552F6F3294E077874F7 1B603424B4785F5716131916829C0CB88DA8D420BA096E3C617A60843EF42A19 EBAF260C03686DDAFBF0E240A3F9DA1B5EC7389985CB4F5A3203BFD29D29C33A 0B02FE88CDB2DED6C60661614F61D0C36457E03A9106DF32E300825A0823F737 ED198C9DBCE19DEEC26CDA2F5F76C4478B762984DC0481C466F8598D9E6AB7D8 AA20417EDCBACEEB0AA50F1B1D56D42C3249E6F0B264E6B77547CBB623160994 5288999E28C3E80A9B96AE2F48AF22289892CB81E49F2E47D5CC1C4633EAF30D 3E01C6A736ADF0009E328F8C6970ECBD4C1D7A19868F61F351FFAF24FE20349D ADA8B520813D2DD2B127E7366F73C487C9DFB6EC977CF9D89562CD19BBA848F6 86CF73BD599E03ACAD45C018CF2046448E0AE2F6C167027751D38FF3CE8F9F49 BC5D3E7D2AD2A9639FED10D2E346A333365C5E7DB6F4DB5D7B963407FDB807CF 0884EAB7C523D9AD8FAD4721FA729135776B1A32E73EC7DA9995675062D56CDF AAD752259200B1D93D3835020BD8E288C32AC010656006AD0AC0BBE11DCC6C91 B3705C9922F495DA6E3E71F25E49007DDD9ACE79954EFE2039C1105B36A86A31 B93F542C46091584E9CF77FC083460FD4EED8D08AAC846212C35F84065A27746 41EFE4EAB515FF0BD3B5C849EFA0BF755303183D9743CBD6B1BEAE9558CCBBD7 85E752D54D170171064571C59DE447888A6A23C2A63FCFE6875C5E5D2C4D50BB 96BAA8961B7F6EC792FF4451DC41F824CA2A0E9458A84975A6242C57938990C2 EC2D24088632551D3C2EFFD4DC77109F8C83C9100C8B382D37B91B7C3F46730D 8B333931A0DC508075713262A12B383A6CB8815696E52CA2F647E7549123F7C3 E120926F44221140506A1732C9EFE1A4E6B61FC6A44CD6401BD9CB3F36375BF8 D7A2D1D6CBC606DE54A3E7905B37BEEA13E17409EBE66A9E5E581A78432AE1DE B97CFE7D6B443CA9497E453AE46C084F5EA037A3A8C0F8266AB651BF93B8A30E 1AEA80AB0AAB7778C39D8DAB177AA3B94CB17D06F287BF8EB86C9C73408B6F05 D2DEA53F660ECE2A96ACDF2F6365CFF8FB567B512EA6D8977C6F1875B19C4996 B91DB9BA72CCAF297A78E5F93182F6D2813ADB9FB34DE564D31E30037718F251 F777615F253A9CBA21ADF0FEF4240790E62E89F1A59B13625761263B0156B6F8 7330390FC038929A3CDD07869F160FB47C51BFD206E3A5FDA791FFE9EA354D34 C1C67C390186CED5C302E0FD112C1841AC771C5C394A9D99A5712DB037E59447 E880B70C87C8B012BDC05FEA0F540B9F4007DD658E425BA21D6FB964F0380E51 73BB57212FF053392CB67DBDB712C7F15D27BD7D5B7AD1E5BA2597B35DA6E7F8 E262FC9EFD0AC8A48F6410337F3A3E95D3D9D36E8A8625F552223A509B40635F 6DB82C581727E024D4E685B9A0D617E6F6B56A106637A6EED80EB58069700D30 4D4D82BE1F5D23FB0C7E30026AD0964884979D611382D9CC6B9437AF4057B222 394F2BE7181C435297BC384E0AE83CF493D74BEA289BB9C689B9A35458ECD23A 41EE01E63E43D6E32E940E899AFEC7A83DECF3D7E0339830343678B5F9F66C2A 9F472CDC9647EC99B3E12946D7ED2631E2BE1A2333BBC388F47FF9FD6EFD7B2B 08CF8469AE2CB2DCB231F1EF3420AF05A8A95F72E9D0FED2FDC1EE6CA5233AFA DAE7276A70B51AC59435EF1BB04E60CD9790D7B876E2F01B48C35738035B370B 30307F78F764635BD6AD6B788A24F8CB14F8FC30CCFFE8785F8B549B93E89D13 B526D50B9AF08E23DA4E744A84B7B315B518F58A72BD0EC351863A0846FA040B 09872C13934334BFDE256B30205255BC12696A0C648F5D753E266969EEF42D4E 97593DA2925EEF4B66A4097BAC5CEA506EA241A77A6683B1F73375E32CCF93CB E7EA688A54F3FCF7322ECF91A18B44A95BE6779913CE27734B840A453102D637 A15319D90B21E5C6B3011F7584F97384E67CDC54FDF42354728DB993216378E1 91CDFDFFE0C73C75F2E54FB4DA0084062F6F71C0ABA6CD872FF66CFD1C400AB0 94909FA96D253BC1EBC11DAD47E0B8D36A8573ED0BBCF6416B14EB60B82BC370 364815ACAD9CEA6FB3A0F1245256628329BC03E7E3BE07CEA1A0C8DFB25660DC 6900C7E0BEA0441066EB2726C2BE521D8384AC6DC36F83CDA0EF486D142D9B01 8682F5CDDCE9C7A8E50981DF68A35BC9C759D5D3DB41992AB125B69B93B9BFE0 B51FB6CA84122EC2A895E4F769FCF89E3105D22471D89499778811D4626890B5 3ED70C765B58DF5FE2770E692FFE9ED7E2BE4C2998807125D67C3F2E7EBEFBDA 09159BC56356E0FBD63A5E944D42B6ABB618E48FB51B490E949F3239495E9C64 9CC4C7F2540BCD8B6F47D632426CF3EA349B3BDBE4705B54C64859E54984F7C3 931D5309916ABC7CC7BF10CF376067EA588613D38C9B5750DB25964AB362E768 BA56E94E2111CD91FBFB1CB00D86A01FD62BC4382ABD2E9D46C9BEBB17F17135 6A24A969DF9A809F42A650A19886BD66BBCB943D552F9E7E2DA5654F8B0B79E2 2A8FA549C9C4E840A4753BC1BAADA5B305773576CA8ECF8569602062497580ED EA271964CC9F8C39F0E27356F14669888FF04E9AFBECE700A30B3CD9E0672A53 B9781632A9FE252043E727755F9786A4E2062177FFCF050EF8B03A3D5115B4AB 739ADE250B5F693F0D6E134F9A0FB7EFB3D0BB00F30227B7763BA3FD41ACD627 3E9A7F0467BA84EA7EBB82E63BFCDF9BA0EC7DAC45ED43EEC2C9426B34F5CB33 65A8C89ABA2772A00EDEA439460CBAC9F92CDC232563966F4CCA81204D455EA2 9A6131C896E91B96409CA4A7E800FC1DD3CC9BC1570C7654E4029C399E007E16 A33737E1E1922740B5C4978C2FDFB1A563F5CA558B1A068AD5AADCF995DC3323 A43BF1FA431E58B27955FBAFA8A6C9EBEE120EDBC58968EBDA895142FB9FC3CC 77E93E23DD4E8A30F7B98837D89A932A1E96785508312C1A877C9F3BCAC31176 809181C1C134DEAF36C48C9725279536814044F433964819ED144B10BD2328F1 5B52DB8E7258BB95AF047EC314050177E0083DA12177454FD43144AFB501AE80 FA4AEAF475C35121A80A5EF415B93A2AA24FCB66E737BFFC0F135B47D4CBF61A 30C8DFB331A1765E52752FB25E40166650AE7BE9D35C69A6EFD3AF2B87634C45 DFC4A55A756D6BAB342F03D3F1AD9544CD70DDE3244BA43958F9BAD75E57487E 5FCE4DD3381D9ECE665C0D3C05ACB3B785BA5673478418684B6A6F535840AFCB 2490319D5C47058120C07782D40F3D7433D4F6BC29A1C72D50CCFC39ABCAF66D 3B5C2E574178B9C172F2E162E77F207D4BD02ABC75CED77FACFBE77F8E6519A7 9771263B65D4B6975CEFA212FA9023376E710DC4EA851DE9994DFC37DEDF639A 6D2146A995C5C304E151D2B8CFF1D81DD1FB16B76A7B2B1002431D4AF525090A 2816A0297B24C5A2E9342FDF1FC27150F63DE722D0ABA2FDFEC98D71B3199A69 7B37253C36EB5EE4334C1225EF0AF1B743A8D96C0E37790D4C0D0A29DDCE576B 39331EEFA7E4AA3A5336AD6DF5253B433EBB3BD663A8F4A0DEBF708567C700ED 44CBEA5BEE729E75229EDDB987BCB42161257DBB4E3B5390C3BAB1DA42F5F094 9A638C58609FFD8A4CE0F21361389E01E07E92F976369D1DA9D218C0E4B8F5D7 EC66541097D8655A39C9881E43C1A8C9C202F5FF93813FD4B9676D9353A9ACAE 1CF7758F8C51E80240905EA4CF4B6D40B52C0F8CACACD9E6AF02CC9829FB8F9F 622D0D0DCFD1424D7615D87B1B84840DF6B5FB6DF0692D3D40F7CC3A68174680 81CA22DF4E0B4EA78B1895D99AA23EF74E0DB33432697FC8283D78D493E1D51D 8D8D6B3AFA9B264E0DE38D936938E1FEBE1804AA529548DC430263604B4FD385 8D4982DB1885DAE1B8364BDB52EE1B6B2FF958B5A761E0A600FAD0B4CF51AD4D F61074E61AA3FD900BCB7CD8071473F21CEF607CA5CDCF3206927BFCD3567BC2 46DB2442150310CED66665A3E4D438F81B236DF776842F6E1BDBB69AC04F2517 3F2DF80DD6D43E3717A24CFEEF1DBDA8876ED460ADAFB5B352E054F0BA9565B5 4DBDE56A5DA0562E9C93B2ECA952B72CD848A97CE7C4A00F66D4039E63C89A53 FF99279828D50E6090B30E3342192E287A45AA423DDB9E9BC72EF1E52420978D 22738F37BF6D9CAB85C59B0A9A35DE334A819E8A07152FDD48F9A7BCF58DE6C1 BE2B3ECE72E6C6352CFB196DF9D0A482FC42F12D61A5C570FF05895886A4A400 803EE95A87F1A3E61F7EB2FC76587CB0F1BA3FC6EB5533FD697AA8D9E6C90B87 04632D6829ABFC92E9B1329C744D49D8839279D0E98F34A41A2D18ABA8C2383D 20ADF875C5CABC8DC807E0B5219C5505E95C8CF9047E57A888A2F8A0AE5664BC B5A71663B81C3C1D545AE2E10C7422E6E2AB836A902947B1D69A583007E8AC72 BA1E99B35E2D5D6122C96747D0DBA340169D787C3D8B0A2CA25544EAB4FC9A4B 9415822E3222FA134C669D32C6F68245F60CFE8B44E3040A680D046E4BA375EF 17939CBD824FD5EAC4268BB3FFDB41A137F27061FB823450F2830A3A049B7845 F59123E90B12A6C14ED58A4D1CC7F615204512F8BA4CAA6D5359E93674334A79 571D9B853B81550441ABC386BF3BFE12797493B3BA367912B4BF33B99739C4E8 397B334A47778A2756B8F790BA9E416979EEEEEB61E2002F0C2CC2B98097D7CE 4DE96C80576AC137323DBA3096FD1EE21A7AE134B6F3DD3ABAE55D06888382CB E2379858BF51BCDFFEC49B87F756AC09222FDCB9A5BCE0CD1E9A1234F99B5FB3 ADF67639FC42EE3624CA97F8F373269EE4279C69E8607D3FF7E632E23D81EB8B 1B29EEA3579204520889068D8DC19CAD1376D361A56F321A1744CE548FC64523 35F92EFD7BEE5C9DEC66EDF1B15823657F513FAA84830DE382B5B48BA7138DA3 DAB319190C82EE9FC50440AFBDBC4911ACA2927C53071BC6D39CA9EFF0B1138F 3B1F168B6B8ED9924BB4BFA79F9D6BABC0C96E4403CF40DEFF3435254DFD6D5D 43070453B768FE7B45DC799C5E300BC2FA9315F57CDD726926D11D2C04BED536 B1653DF3C1261C234102A234BFF96ECFD9CC9F651F5DCFDD14012E3D800AA397 8E9BE998748398C7C8531C3D07724E1E13BB36F6C13818A0DEA956800F4D1F58 210EBA9CB1080172FB96FBB203500BD3A26CB88AE4511AD5B97564B085E83457 338CFAC3161EF11DC8AFB2A41CD06B96BEE832178D62E93C1261A147A3AA187A E491A1299BA84A4035F61A4E01A621F0E57678EB6E7E8133070BBF9FB7031B4F 4E955AD5D59D66E2DC86C21EB6AD823F2ED0B231F2D8489F0FF3AD13B1B10353 35FD8A17D21D55B43D2F8800510C9A16F2894B709E3B1A14A5A10ABD8F3B832C 73275771AC0DF82DEC453B249C074230B4D625FCB477B1C3B6B9B1CCA3713D41 20AE266C776729D176EA5E6EE8F6274C6470701DC1DD43E9DAA26EED9C8ED5BA FCF31C1137D0138B74B010316D2AC1CE1FAA64C98D8814EAD39E3C41EB921A88 C61EAE077D078C6C6C0A9C361EF052C097BF2B9F09F925F9E60AF2A7BEE252F7 2C5590064406CADBBB0429482C8E9A6D78B58716D8FF785BFFDCA86B3CDF32FD 010778F4B87B292CF2887F8DFBF826324EE8AB905FE5A38D059C621C3C846B40 EEDCBDD30DBA87DCE0169900AB100BDC6AFE3973EC54EDA0581663A53BF1F585 E89FD92B8FF5E3746DA41FC9ED0A9D1676574FFD1B4A32E4E2F726C9AF200942 9B86384446F437B955799F5CC5CAFFAEC6594D34B439E6F9C603B2B438B76C14 14406155E344242E3A3C6A36A8D8154AEA976077885472CA7A9585A09D1821C8 F6DDBBDC9269A2F54540CCA4FFCC25EF5012897E1ABBF84010E252F5348BDDA8 5519ECABE7440EB2EDF76727DC6B102A67B5D3C73F280A065AB3B64A106EFD6D 906026B59AC8C36F65EB3EF0D4F6F785547F71486E0B65BF251AD213AD181196 FB4CF558097D751A9528C5F094BC506C3B9FAE0BD8035FC641D6051E47EBE7B5 A2D924624F9650C623A503FFEF3D418E88DC260A34B31A56DD4ADDB4EE8020CC 3ADE17502E32DC161569F57186EF461F23387F4AE36C39C357094C1F99274059 8A7C69A376FBBDA3673D3C37B434F8168C288776BDF97C3FB01D3A37DA8EB506 DBDDCE97A3197E6D94CC34A4E8E36907560ECDD42A851E8BBA5020C450F40256 00CAE722C9CC77E453DD75FCF5B3BE7E3045E9860EF7EE1F12F81C16C19E629E E196D31786E76781EE36869F27BEE1734E814098C1F112C2117F7D83F92D7514 1EAF25C99BD2B5E2799330E7299EF1D350B22B639A2431604F8EC9F8BF401740 C28DCCCE67EC5523A710300716D51853D98C1C37F4B6E824AE56B5EEB2E9691A 88BD11DDC4D422838CB0AE3DD5AE2A4BE76A0E445F0AAB9660079D64882E2A5F 4D01D29D1ED51F2B0DFE2EF863BB455BB7CD129A22B00EB8D2E9F6D244DE41C5 F2BB5E687E181C9E987DCB9E7CC4BDA5136F6126A8BB4D14E4534ADBF7D54295 1BB9870B5AD714ACCD4BF79B6EF4699A64C004C60367ADB6FAE863DA793C4988 016244640FF077ACBD323379E37697B2D94D3E564A8055CD597AD128E2169ACA BB86234BA0791184355E1CB5A801BF9B5051719154A10440A14DB620FDC242D2 5CD754DD0C0A21B194C97AF2CF10CCA30A850F522C0060034984E06E1D235C8B 75CA21666B5BDFFC101EC7E910AA0C216738F5EEE94700F58F1C459D203D1B09 CFA4BE0899CB08768B57DAC13DB1B1CE4360BC40D1A89B1848F4BF18A56C6CDA 02E6EE86425F7F4FD56A196507716783C8F4293F2DD3ED6D3C116986E29445D1 D6D7C84B9B6FD3E3D58FAC7E254DAC3C56B34888438C0FBD626AE3FEB4F127D0 38B0672307ECCB6880522DC8F185310448BEB6A5680262848A48B8B540E2C680 568DA899E3960E61B7C6F7954E704D01FFD033A37A20A481B72D0EB41949CBA9 CAE3FAF0D41A5292EE7B1C66654590313BEA544ED1ED45591AFC1B115350B7B5 22309CDFF0C5A7AB3452137940328EF0FAC9886CDB64DDE6A1A88706256C3F06 2542EEFDCC0E4BA2420AECE990F7428E84B372F773DDEEFEE2E54E371899FFED 110F4DBF08A039D5843DD8A4536B2579A0C7BA8FDC25FC4345C4513A89BC38C7 AB3638184DE71D814B51D59E38E011CB0EA56C6AA84C044F1B14AF42BAE4F795 442EF01992D37B978E1B754268884F1DC43C2A1411E1A9E315B9D6DCD76423A6 0B46326625197A9433EF73763514DE45313A97EBE4060CA1037C0169357F0943 F0C85FF40DB2A740A9FA86319B295C013D23967F41DBE0EA34EBCA14F43D6F39 DF44E7881BC2D05F8A178EE2EDF4E0C6E380F8379CC8344744E6D2ABE06AA4A2 4E7E5965995A5712D46FAB4F863E83C7CC6FC3891AA8D35CA8EC10D9A6AFE4F3 BBDAE606BD193B49A834ADA939F23C9FF2D38933D73421F565060EFE479ECD83 BF7F9AFF99085EBAA61C8B6FD3EDF962483C045DC45DC9F38FE0CF74ACC4DBE6 810C252C3596E4279AAFFF1BA8416DA80F38ECCC9ADD5DB050D2051E2BC312F8 BE08053729BB1D259FE3EA7584E76D065C39E80E358203AC5D1EB5FDB6B13D06 F6844FD781375F2551BF80B8DA2BEE0ECF1A1890F447B194E95BE00059EC29C9 DD2A68D4494283594311972A5AAA8E1A289DC031CF2C29C44A12774205F22647 010A358EE8564A445C15C8EE8DE09513F70A4E77900EAF01015A10B5EF176973 B9D2657505FA0DE1CA89259DA1840F621A2816A2A2D922BC2A12C65074F61097 9578BE8AFD8AD0320518BA8860A2297DB3DCBA88EAC03500C891D84A376B27F0 EC1F3456655461D4F85CDB82DF258F81EEF6F83DA4E6C7C33CFF048110200312 AFE14114B14EC90D11936E14766BA9BCF3C119F79D21F0144123B287151DE6C2 B60B27218387840E62EDC5E88409BB58DB278712C807D424298389FA7405125A B206E4A5CF3968B17D2DAB6AEE890436D4F9795B1D6350BA27D5206E1600F288 5590B4B882D5EA64EBA10EFBE50C454C9FAE412D11E87F700CC247B671DEFE3C D280B8D4E28A1E132C6724132066549F95CBE29792DC4CD40F075FE4BB8A90F5 FD877F6E673BB23BCC7CB05317C7909A42E11E285DB595BB1AF21004E466766F D87075EBAFBEA99161715691EA848B5841D4095E5FB97069C3833F770A038222 69F4B68E2C35F883B9E7A6476A2EBC29ACB0BE9D16367A5FAB1DB46CECE97F61 0C45C71D93543684C72C8C3BB250A4836160484084DA50D8B2FA6C67FD5801CC 0578DDC1E40487AF8C44818E08F6970BD8C9063667BDF52F31F50D6A2C05D39D EBCD4CA0652EED95E63BAAEB8703DDDBFD306FBFAE18A1F3AD0DAE868D5E335A 3E0F3980CEB54D835AD2E026068C3B276AF9B7DF812EFBABF1084996FEEF6257 43CEA079D327CB9E41B07C2C4A3ABF2CB1921A166F7230597EF9D17DEAA72F6B 8CE1EBFA3AACF2B5344F4EFD839E1EAB2BC1A9F220E5148F37F891E666C225F2 14F691118E75E5358FED75907AD8749120F9F6D4D23966E3B8A012E99C3BC2C0 1F424AAC918DDBC6F59BC69F1EABBF0DAFA50EC91FBFAC4808DBAB627B072E79 C0B71FF77609FF02D8125A8D0BB66399DAA523AA29E650AE8B7E94DBD1522AF1 5ABA553A77601DB76EAB891AA0006AFDE4CE215A269E8B380AABDB0F4785FA6B EE0ABA8FD2FF9F311176651823F4779B3F4D4EE4A98D41717991A20E256835FB 4526CE110CE2B7DE6D783100FD46B46CC68FAA27D2C8D6DA78C771E627C3A567 4369D652374816C05C7BCAF37A1793D1A2DB215424AE36A6CF0BE8EE155122C4 31E6D390FA62C9BA1F770441F3F417443BE5A33211B4DB3BF5E68692442A5E03 E4FE2470A4290303AB7693CA31F3EE3E749F88201C6E91D1EA2092A26A7B3FD0 060BCAA987D6F505DFA9A2C768E8F35B2B838881E06631A274CDF25F73B531F9 5F51713A332915D187080E54601203F0B7D50383C7E660D5E9492BA16E76F4A4 C218A51D1C1A023C25CFE987EB0FB9A5BAD3F87587F2736838F7B66E4A465DF0 2D8729AC93DCB3334D760CA229A37EE7FC97BA3E35623E1D43D6820716A4E585 578EC5D5EAB47C6265E439C71D96BE53514188353DB0E194BAF5BBDAF7EFC7E8 3AEDD0B022F871DAB9D549160E9C5DBB6546479FE2EC40EAC43B1B49839D540B CF1EECE4F6EE6C5931E354863064789BA54994E1003FF438779F69E91F19706E 6A57024D4E1249395FCC0D25313FACCA3DD4AD39EB842CD40D63A7101FB2FAB0 CEC5DCBA1F8E295E13367B721DA150BF5294F512496CFDED96A7A4945D5D2BE7 1D88BA83CFFE04B157CC2790B1AE55EA8D223ADF8353CD1D811672AB244E0AA6 F745F8FF16CB589D6178D21284082E7491DCC80497187CB70EB0CC92B68197DF 316BD6AC8FBF94F9A459D330A14CDC5740F5B6259C06E33F84E5F9097FC35979 BB171899CC4FF2157DD96D50E6EB8415F669FF8E3AD2C4DEDFFF1FFED6A7DEF8 4FBD9832A653DA0EF52D1D0F062797E5C50C0D234CF46DF54F06C1C8C06B5AB8 2461D4B584BEEC66B3EDC3F3D779DFF614AAEE0D8590A3374DBBBA816AB55C34 0503D26B7F817CF82A562EBF3DF34F3BA88F1E662F0289771D83F0E00C121639 DD54B0861FB0D1DB36094C6EA2A48D1B409E6FE073F27365014B1080367B94B0 34E0FC7BADD237E2E8DF5F1ECC49FD5674192B6C8C4E1AC69805201A70589937 BD8A4D8CE0DFA06BC5A5F118B8953723909F26990B4F7190A9834D44B03BEAA2 5B19DB0F119F830552D60A7AE50BF500FD570DB898B3EEAD50A938F71F99A766 E7372AF81C57E0208943902E3BCCD2928F83B2D25CF1C72C8C7A789E794BADF5 35AA0A251E74E07B332E68BF4A844AEF9B5B649EC9FDB68D4B65BC9061B77F7A 4496C837B3386ABF1048D2B769ABED8F61C83CAC1E8B8498155481E41CFFA505 BAD039F97F3AE6C1148C58263494E1833DE5A71185915AF41AF6CB1ECC06F36A B28E191317DB660066D020AE14BD8AB73DFE780F984546A5B721DE2694A82CAB AADFEDA550808A6E55FBA586000BA147BD22728D91A4B1F086E1A60D9FC3B696 1CCB0476ED60A654E1D98C8B1DEBEF5B9D99066E553F76BAE56B33DA6D66E8A3 3B6C0F8E7894447EDDCD446967F937500475537574773EE1769A573754A8AA72 7A7B81D3FFB37B4FB1B8DA43CAABCC03733F95D5091344700B9B3348C1C2DB14 FA3956841CA5E5EFBEF65F05FA9C8B1F33BF289C0AF0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX10 %!PS-AdobeFont-1.0: CMBX10 003.002 %%Title: CMBX10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup /UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX10 def /FontBBox {-56 -250 1164 750 }readonly def /UniqueID 5000768 def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX10.) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /fl put dup 38 /ampersand put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 57 /nine put dup 58 /colon put dup 61 /equal put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 71 /G put dup 73 /I put dup 76 /L put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 85 /U put dup 86 /V put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43B233BABF23DF8DB B6C2BD2F04672F9A3B7FE430263E962F16A948319C51B8ADE6E8A80D3D88023A 6DEA4D271676C2C8615C4A0EA7DC8F6601610F398673A4D4B905F49EA868FEF6 39BE073001A36DEA6C08ED51452F062B971740019692E221F4455EDE46AF24B8 407A98B791F6AD525C72C09776247E194043281D04FE1CD1D8AD8DCEEC3045B4 F95B3B41CD3300768D8A049815348BD7AC1004F5500817E3A267D694AE108BAF 285B288FC5F28A03E9D34FE5D9B2F9A9BB26ADE66B1CF8EB5BE606E83D213C33 DE083C20D636EF780E761944FCE3B8A950B1E6E7568F33B557C6D59E0CEAF185 53E609A4F58AC4D5269116F958C4D115C44B5A6DABAB79D3BB6E60BDFCECE108 74CFBE258779F32C80CD7D9A7CEBA50A0966BD9961F71560119668C4A0C30A5D ED91ACB30940502B24F33906D6E0F16F81DA87EB6D7FC8B7853BE388C40D75C2 2CA8F94713AAA1561F5321CE97997CB4AF0E37F44E25B0F73CF4986422B1CD89 8F861CA623004ADB1C28268D7F8C484AA10C9519B6AEADC95AFAA3304D60E85D 718B2F67D2B734095E5A92C90785252C98067DC05137BE735220BBCB7C341D61 C4B98BFB1EAF883D38D7A93195A059EF82B42027F23B6CD633231D704B891A9B 03D11A646F13898F20321D7BC150C63FD6DC6BF9CAFD8DA759E95384B729A0B2 767B9F3E55C682F7A248BC1184F7D294CFFAE0B246DFCC8F215625DDD4F49F09 FA8D41CBF4A06152FEB152C61539ADF7E70A4D23AF8267D25CE3B12D39D62377 547E2528D18DC4134FA3BE0437EE0B3509223D71F06D44C6227D62BD01AC0A2A 3EDA975E894371C07CA1027B102549A7D552FFD25ED2DCC68E29E71BBAB43C62 57B0BFC6A953ABC2EF703F35D112F6B5460018CDCEAD17F149DBE5B52C2B9E10 9818EA6D97C8AC884F6841C9B600A7D868F59C1D80E98DE0741D06D69858EC84 1B33C6C9938B7E8A6FF6C12AD456EECBD3EBAF0D7331536B9F6422019FAFFFA4 822E79D6D89D6366DA636CB708894FEF904F366E295F1CB808E78E883913C4FB 1631248ED6A7CF1095C0C61C4F05E4B9DFC47533A5FD24540AD71A0E2907B98B 28085EB88ABFC3478C9644594C7DC4244ED5A7C1CA8D960B65497D56D174645A B88F12C2CF0A807DA314017984CF3C4FB7F47392A651EB9CFA961B28E2989893 9FC4D97171BD5338673F5D1CE2C3C08D48A1B77769F01D5058236C655FFD864B 80E28F900191D4EB349AA5E400A7B0A0FCA0F3E79D7A7C69775BF754329397B7 D18B20B2683CBC4A19729BA878B3C17EBA0A7E9EE297A5B67E915CAD92C8F356 582B8299DE6A58E73408F525F7EA895C48A8F0D626A06A96A50348DFBE479D89 4272576FBB0CD332193D28A8F11503BAE98F8E1D73CF5BCADF23DCD4E6586ABB 323568F5A34E359661074D50CD8D9DF27191FCE24F10225A5D721EFDE2547E1D CA998077D2340B1A4ADFFF570AA677CDF3305D5E3A394BB1626EB35074D4EEAC 2F037CA2EA389F7683FD17A8E07C12B4CB3BA8C249C9B12D297C618009F76717 0EBF5F2DD39A6BDA10A2E5A811D4E190660F5FDDBA29201B6F8042620397AB2C E59267A7247B0463891831A6F40582BC3F614E5167B646A8F53D8A31717DD9A1 9034034E705BA7884F0E0738307AF69D3517147C282747F2788462FDC4336A4F 9CD222908401A25F0A1F7B13B8DAE622DC965AD0BE62497420B70C04AF432237 E0FDD043456187658ED93B0F9822A3998511DF05E59CC85B7B9992CA0CE3B814 9723BAE70D2631F32B4BF93511F67179FFAD2075E1591CA5907A4C67701B56CF A5E5B02EB4A842BA1F18D6864E5677359C2FB4AF5BCBABAFB053F230CC129B45 8D15413F736EB07C571521C7DE2A13F2AC1C133D491B0A607197BE9AA1231D96 BED7968788246B2E4D2BD330F802810F5BDA3760FEA5210CFC6F54748FB1D921 5CC3624BBA5B8962AA7D94159651589540B17CF7A785F297264F9C1006D36928 6E2756D3B623A6087E4B106FBA76255903C624C07E18A1AF4E185A533C640711 86BB477A906ADD36EB6C8F4A12BC2F01B2B98412E4E105977640930CD998D990 0254A1E5E9843B7A8ADE0AF6D5871E6D3D666465AE69813A2E26333213FF6713 6F08D55A90C079A56E1B9AC655F720FC22B5AD8550FFF26DA7B0C5A0B60DDB05 64E8FAF684F3A455BA9BC9278043D79537D201D520E38750335A4C8FEA887377 879331B68DAD6B253F4FF9981D0F9B9550ED5179B15EEEB00E560A3DB6E5973B 63403E4E2F40A3D0B937246E9652000B917B1369741E0F913C14C2D2D6D1FCBE 2CEC4422177C58523715BD070002EC2E13D383A1DC8C84228862B6C5D3B65667 9FA97E175239BB7FE7E37E14B96DD7960A8AD49DF428CFC13B5D3CC22E245317 47B5244DA97F1DF954CED2D552477237CB23D037C0DE728E26C82738954EEA1F F34FE497DA005AF03746DD2ACF77F6E6F2C224862A1D18AF6F7A5DAF34564387 9E01DBFF49F8621C058C04C2B3F4F3033FF3E8A977B2CD6B2A3CA4A6C569B19F C5AC457AE9AF334DA66A730960C7565E93A2D373C0E3DE14646FFDA05DF4C6EB 6D4CA8ACCA3C3115764F77B842581760BFB9E5C0EBE55308B0577A8F4D968CE2 BA3361D79378D451DD150C34D7E901397AC63B33BD7DB13C50D678F5DE999238 4B4EA15BD449C46F262D931478F5685CDEEC4C4201FC3EFA607AFB8F27AF6751 125DE42D2FE2D31DE769B7E7FD8CC8C5D91343B537139A822A5BC4160BB5314E 37501F65B4FC35475FE9E03E34CBF6795AE86CE409500BD0799DE39FA69978B6 EC74D2197C03632D3F59B85F404DB31240968FA75059B2581B101E028CDECC2E 7E5E25DFA106E9B8ADB81E82BE9ED3BAA9D03EEB22B7B67AB1262DF6AF5F5EFD A5627EFEB84F3A5F92EF2557EDA2843D7D18C592635623CEAB14CC3620F33986 410D6DBAEF9F86E4E6682054540E2B01D8FF2161F10E66851A188BC15BD6666E 8D3F21709F196A31EE676D28A2D12639CC2E7020A52910F052E61A0710DF09B0 064171D05611451BD24FAD64716F141E1C41D3218A8115A3D73CA041D02B46D9 28C3D07DF0FB668E8E91409C8D0A26A65CD737C075E026AC0A974C9BE658199B 3B9D82ED95E4646977D8F60717DA4C68767DBD7E8320D5AA1D5DEB2E6B009759 8282F27D64F1F904830AAB501CDA4D9233FC2F12F77F0FBCC46E6B729C71F6D5 E6F3EA02EC35D1048394F4EF2177FC5EB726DE5EF2DE7997166B8BE5B5105D08 EAAC3481FC612665CA112D3F889A0E5B7843EFFCEFACA24A01B6AC2B7DDE02F4 A9295AA2409A3756BAAB44608DACBB56840060037869455BEBA46F10AFC68DD0 0563843DF111C6D34911CF13AA6023E5E899060B5EC60D0F78FDEF3E981151A9 24903EB13ED1A67EA1977449716D1A5A7EDE1A2E9465C9C2B20A58AF02D9F373 73E627CBF296B3A6A4670C39F3B5EA30D76F0362C81020A1777F0ADDBC6B52F7 213FEE1718214087837049CF2AF00407639657428B9E8B532F68B631611A3501 3D9DCA38090E227BD0D6D0FB4130EE866DB6B195C873AFD18DDB3B1E40F740C6 B3B375ADCBBF628A07A5FACED539FEDA3379D3B60216C2EA6629BE2F65199D82 FE3AE627D7C67270F3497AE75F7A9514968B5950E2D63C38DA240AF4E6CAE88E E25167D179108679876E7C80C85FE1D2BCC2EC9B88BE76A8F5736E8E6B3A9CF9 42E58A4ECB7914865E67C1468CF66D658206830B9380FE346DC2DC4BB56A92CE 4B5E4EA9036C177869315A2D9E6CFE97E3BFD7CBE0747D40CE5E8A3A0988576B 8AD2B1E4314C0D8A0CBCA08844A49F7E054D31BA7543730C0A7390BC4A288D10 CE29E389A4791305D3AC1BB6F77C805F1032787306F78FF76A20A9E629899F6D 13356768D33D7B9E294E8CD50CBFB9CA02A193922BD9B4372C912D1689B6644D 52CAA30F7421E8114D077288119AD9514EF21E5B9989CCE2ABA0C12549FDF493 FFB39736AC9EB72DAF45E4EA6057527FA9F5AA0A1A3F03C12F7482E465C766D3 760DA7714D56C91BDAED507A5572BEB51A895F8DD3BD5AAB042650154FC7E4E5 5EEA6194DF73AC5EE2CBD4EE26E29B1D2D0C458B4850BFE842DDF2EBB4E2A25D C6A11CA2D8F346E2B736DF88A3D57BC0380B52396A6C039212699F5D3342EB58 0C3DD5D01D5078479BD9FD10C07925556C0AB0F03606F33796BA72074549EDA6 E33644F62CA35207D7421D2727AD8419AD1772789D33405FCDDC9286BC34C974 A52297F5BBD2E541E8BB473F733AE5097BBC9D5FACF18DE4173B4711E28B23ED 16E0A6746A60F6FF903026A3900169EDA87D98396E762C2EC963D89197B8CD0C 25244806BE7CBF46BE60A8F9171731EADFC969C28679B025371E5572E52A0EF8 B3FD9B4638D03E20BFDEC9345E70B8166D38846DCA68E0D0B4B53629C7E7620B 45E0A610BCD07FEF8814CF915CFB11119F42407D1C6DC1E6353451D40A382C2E C74DF2A4889ED5A3495C3E973565F7178CA190D22C9693C10EB12C1E7A8679CE 4AFECFC964CC98111BA4ED2BA9B10292A71D5B11870EB08EB483922CE8628A06 05E7CF6DF93E112B60EF888AA8DB52994EC33DC7277D7B7A4F913AD30257261A D6EE80476A9A8D316D190BE6CE0046CBBCED365AB305495284FA921BE0638E00 63DB2AA4C5F163340BCCD1061B469504DEE350B82FBE1689C1B65D095405614B 35997D6F0DACA7190D64ABA351705B17B23FE2EE5996FCD607F49F54392463EC DD5B944A4B82FA2BE3E75E2946D483060DF99277340B0AB65A2042AD088E2B75 BBDAB869D1940F64B50D25078519D18748AD64AC5615EFAAF4F3105B0111AD40 70EE173ABE6A4ACE486B4E5999158A4377FDA6922FAA6E9305F48570D14BC81F BFF4C663E1EA9D1E050534F9315A663C4C5DA52CB02EA6408AA473C32CB0CD71 169BB43C0508A842F400240F0063243B4C459A1FCB3312C41C32ED0EE87F591A BCB6D5D3830AE4645CB4D40336DB4AB6540B52E70E1EA415CC6D886827EBC5B3 EC35CC5C136243B0C20B3C603B648B132B99D05F9B48263ACFA59A856BE74441 FECF5C6D1FE9D1F4F9942F460961901E16017144C37E83C6822177B2A6C47ECC 6C47A1104460665E5BCFCF08874008302750EB991CD98D0D8D22B921F90B99B9 05EE7C39F2BC2A7798157503743C9F2F267BDBE2E8A4CDA7317F81DBF8962E1C EC02822CC7F770FD4D08D335904375BF0C6DAA0510771627ECB9EE69C0F47D30 69A87052989DF80D9F4F19F75B070C3689AB3BE0966453F9D56CED6C1745B50D 813AE6D7E44B73423AB3778ABE4CD2C4DF40E14C5A426043F7057E2DFA2DAA70 EA6723F1C7967FECB1E7C1C0CA283334163FBE31C32254490170C3513580A552 19A5DD75E6C4ADCB12D33517A03318A6BBC7E4214266E125140D8C40F78A0340 1F95D9FBEC4DCC55B71E89375AA94B0D55646F6C069561480407D0A3AC127024 D7D1E9ED6B599A2A8766B8792F46D35508B66F302D289405B101A3C6BADA680D 8C56E2A00B766A4CB155446F862FCF17537A2BE85418E20CD77C4F1F69F70BC6 17BB5DA8FAA876D0E8BABE273A19C04A8697B3E3CF4725E2C77C8761A9243F24 96F8AE96399996001A57FD75106745AB4646FB9C6421F1D4EBF3BE533BD11AE8 14BFBD6D308376B26E08E4ADA490DDCCA94BE8240403D5EB0FE3549061DFB668 4105B4FE77189546619B6BCF3F9723E278E98D50A17DB8A4C46744FA21760635 5B332689316BD17C966D466AE737FE3ED7ABC443ADD88D4823A10BC9747ABDEE 027515AC353A420523F85298029475D8BFD83A2CD00C02CA07974BAA581D2215 A850E6E4C0A5E17E0EDF91C63FAC18C70093F40FEEAF0350B403E2806F4EAE96 BF616A805616EE55C4657418C26CAF54187A6684821B86A76F15088AC4D5B551 66C3CA8DC61E9810858D1204F899C7E3A1754F483134609F6EEE6364B1CC04FD 92C86EF194FA3249601AD722D75D1D395CD15A93C768EC60A486AE885683364F 93DA00A865C1035F913FDA69E7D9A0422880FB81EC23C00427F07A5EA3CCB613 83C859958AC53FAEA26A6BB39ABA068863CCE3D447720BC31A5136E08EE58963 093AF587A72112D55853A1048A2B1695DB2D7F13CC924F2F0902071260C33ED6 30893A04577C0ACF0681C0FEC23E5404F844A83BB5A2F8DE1F0792196139993C 1152094BC36A6AE5BAB4B8281E506F485F0BAEEBBE71E174B7CED1E52A8242F9 DBDF3E0FBA296538D964EB5B7A4E23B1BB0F59872C9D4FE8498203E3AC08B71E D2B965AA6CD5D20DA6C83FDC86F4A5D68A58A72C5BB9BFE9BC755C56B24025CE 6F24443D3CF32CD711D3D94C7C1DC275DDAE3341D840090F97CB6CAEF274C94F 9F3BD3AAB3F98BA8A7B5CE5E48D1462DAAB37BEB1C10B410E8D33FA42D898183 BD4F807112D78AA94509E33C179BF7C9E82E55AA7D09E128A0DA06A330CF4AF8 5DC861498CE029CE8C1BD15C923A708F2E7AF98E4F7B34212A0CB417553C86EB 6DD46B0466F1A21D29FC5111226794ECFCA5DD4240C0B8D106CCD7EA6F03E133 BB7733F055D6FFA04EF5C6F872B4FDA3E42F0F036C4825543D75682ACF71B548 DED160ACD05625274799D0AE201305DA526E01A3D2A719B1B15C05CC09467F3A 5627860C0F36C503EE392E1786620F3F2287AFE56634E03566B9B1F537FD92A2 913166228791871A8F8CBA1A1DA634E8224058052A10FE1E67CBD3FD21A6C07E 243CBF58BDC78577847664EEA5225EB8D6679AB17C563848A9D4D58995EA3609 51C1443B752A070D9872FE1643F0677019235AC25DC2B29169D38308F2170A1A A0FDCC59E6602197D2815B914041FFC7106DAAAF30CD97400C6D0826A40385A4 C8520119A065CF32CF2FC5FBD8DFD29222528A7F96FDA533145846B3428F8239 E50277C366418D713F84B12A5FD4F904DC13DB1844A391FDAEB97643A6FD2945 942FD4FC5A4A35E184F23304B8B4D93D0C37EFCC4E106D4FCD0DA3E5D2117589 3FFC2BD1D121026562C55C455C3585050B9460891B006F62D9D9B66695C3D348 A467C14C0256FA9621CB056E7CD389505194FF463BCC4010897F9A690EA87D9D BB3ED4C174FBADB8A4744C6E4A44D773967FD703EC37672F9993DC48BCC8A060 6CEFE8E6B8F10886E15BA0466AF410B90DF0020FAB88BE493606B6A734EA85BB 926950EB10D2F2CFDBD182B0F133809612CCF6ACCAD049C8005A42FAF78368B9 E7684F98DE421BE0A3BC0FAEE024A7BE67E15C8394F17FE84DFD8156C2A3E94D 08259E15CC657E8CE3088395BF6B5F825764E141AE15EBD186DC049261623D26 8636705E06C6E4A1F8ACAEA59F91B042DF5DB9C2AB986A784384706A43E5F18E 42C29CC1CA86D4F247B3BBBC89F3633EE074DCA4AC15B1E33EE4822812A62E88 C32B0AA57249980EE17AFC1346074800FA529445D18649A0475246A25CF325A0 BDA06AAF392FD455218B13D9ED577D51A9500B9FB7860716A8E2FB3A8C4BE3B3 6656C6A5653AEF00184020ACA0BCCBF48BE3BF91E11C8658686C89848E714E6D DC158DCD1C1BC03B83FF94C60B1DC71CE8A86B46DBE661C9F8F4677F8A2C7CF1 E41A91EBDA2304735147BE66CDFF2673F09D408297302124C127F0B35690CAE9 CE1679120CC4D582FB69550AD34A047DDFCD9D411724554CCED753DB52D6AA7B 22B0C55EB698ADDBB0F8ED15C971AEF113C74B9E25DA29199237B98DA4023665 C2A63A837E4CAB38F8DF37DBAB5DC80C0C3FA72C8A70DC76B5B36B2EEADDCE74 23CF794B66E4DD3B35BF99893789063BF7B01D5F186B2FDE518B2CF2EDE51F81 38244BC64548AC3433A80B86D6A0CA26D77F403C06D65B7394BF1FC7D06D37A5 E70ACD844E3367DE4DB71312CBB85ADD21D5A1F99BB8427F252D90ABB66D7154 EA5AF4A165DF6415A0880AE784071E6B3E2101F0B663DE14DB1ABF8B7CE0E6D9 D24F9CDD9F80028D37C9CB4067A28D41E879AEFECDA71F649EB3C250BFF809D8 1E427E3BF24E85C75F080D93E0314883988B3A4A2B72A1B4A3D2189AB6ECFFBB C58151AF05AE335200711ED945E18B4BBCE24A8A162BD9BB26137253BA8B5819 41E759A7CA7CBA129BAAD438E87189F2F6AE7C86F4EA099DEB23705A500332A7 4F141D8778EAF3910486B2EA25AAD16B60DD872A7C0D6FC28B5434D674140E52 2B729FCD41B8A156D80B9167EF167CFA968781B6F10CAC841F7506A5C24D001E 493ECA040F54A876DDBF0166BA41A33750735BACDAA0FF0715265EE6316AB7D7 DBDE943C067A52E1E24AB7E0A09CC858785F2D7FA0BAB86CB37A5DAC995C0C87 ECEF9D4D51001EF6E00C9CBA158724AC4352EBBE752C6FB45EF620469675DDAD 79D988D8D7085DE0B210BA4C2A828EAB906316375790129466841B773E241057 E4D103CF83789A96FFE096E689D819693608EE7CC7A0AA3513A95A00106CA68C C5924EF342CBB35BF8DA6C87DC26306137E0B4AA0EF5C38EE0EF4E5A89A30BAD 180B31952AB2EBEBA37B60FB659324C7742954160F0D4E7348CDFF61CDD8AB05 CEAD3157ED6F62A45B58BA201F11BE07518B134A9D5D5D85B0A508F7C10C49A9 C98056D989C36E4BDC5EA8BC4D582059B0C3C0384954D21BC5FB8F14A51CA46C 88EADBEA3D0ADB348ED8F5B4B7276D90E77A168FB14A82D0304326F7002E8316 097F837DBE982F75ACF33109F825DF07496602A2EC452BA81AD9ED57BE4AAD60 15E0CD594EECDD868789380DC127C1A6C2E5D42CD43472147FD04D8B10947F3C 952EC533CE4BC0EABF78CF1369D8889A529E4CCE16C6D5B400D9440DB8DC2B9E 1BC36F047FF6BCA7D2B30B63683747CFEDDFEB231728AB74393AB3183B6CFFE1 D0E2948B24D2A7E6AE8AAF3805D913F35AB9B9F693900DDA0741FB47AF220F17 5E07275C2E0F653BFBB21AD1B02B4BAF3910FA14A5545EC160E10E8CD5BB6517 1F3AF19A071E4434DD53A07D2E1BCBA1A35CE8F94B576BB7B64FBAEC0453206F C27D3F8F0357D8087857E9E1724F3FF689C0CEAFE3E98D5590DB31CFB392DD37 7563ADEE563B6D5E8E7BC1E2A438F5173FD948C3B94CB7CD358CABBC7761458D 882F528F80C8552BAE2FD82785988D02E3FFC53FBD9B984B078CFAA7A0837A0D D1EAD10B0A7A3F70DB740709CF320E9F23C5B62994AF67FFB97417CB8AEE8E3C 008C710C7B9356C1E1ED8B2C0334BE3D572A1C405E1F866761EC3D38876DF77E 5FA9993A300C39813F788E1737708FE7ADDEE2A72866497FBBF49B8FDA5FF595 6B745B881B62CF1989F1179C80ED02692125BF4F1A74D3BA6B79CC5CDFDE7526 1515D0F10930ADD30B073629DD4EE1A347E3CAF4FD1B7A9DC763885B18B2406F 9F8C25D6AF1E2EF9FB01891BCF54AB05DE16630664E2C30C1154D461B2681AAC 16E9DF59001A7A3707BC351FC668EE0528A0246700DE65C12BF15D44CFA24606 15EB10B266C4B593D02DA951336995D255F7DCEB2A4ED77B91B013136D016481 485FFC313F43B7A0F3AC625491A42A8BF5D93938148C15E16FE252C76C214763 1B6FFDFBFA6D0C9744A634F20A3DDA0AFAF633DD7BC5B12363E778546E37FD69 981864F6B54B8C54E64777BE65C2F13EE59D092A1D17169AE6FABA3A5027F496 C600CC5B6E47207438CBB389612CFB0C6725698F88ED447A4930E6CD9EB2DECA E11F3A66BCAEC4AE16A8997BBAB9B6A1A413ECB8EC4BB8291418ABDDDA604133 216848FDF267E6CD4180AE95381C75E98F86D5FAF5B4BBEC5416509CA17EFD3B 2A7BDD048398D355548F67894AE9CC6C63F1C2350D6479115B5999D777BC8C1D EDC1B91AE502083AF0F85DF4016417B74DAEA4DEF9ADB07DEC290B8D39695D09 6825DBD10C0288D410AEA9CAC3C1C4EFC5C839679F73CEB1705EBA38C490E575 9958A41E804F829C4DE8EEAB7345BE44547B5920A5861DBBAE10D05E5A80FBC4 3BA2FB7D7A656839B4B01B8884EC71B82AA52B6C090D4BBB7F1A162D9718D28B F9E906579901217895FDC0657CF12697374FE1B3D77BD5214C9D94ECB95428EA 04B2222F2A11440F024431328D663B83973A54C6CBC6B24813EABB8B66F9223B 921713186B375A717B17340DD31B820E7D29CB8E703706FFC130DB27879AF2E9 541266DCA9ECB26A1058DE5FD1404AF1B64B4CD7C7F04988547E3A45A4DA0AB7 984FCF4C0B890E4E8A7796D3925EE56BFE1E11A3204B48251665E558DDA45FF8 4DB78BEB1151F983DEF89910094CBED95E9EEB327B02F9ADEA1A1498875E75BC 254ECE1D5C657039EC1F6EC271EF4DC07F7FE1882981EB4D83455098AEEBB071 4C97BA8084DD7B6873AA8B0247EC990B09C6A749C3666F8FDC8883BE62E6ECDE 3EE48712B70097F0EE3B536EB77482E50BB68BC4606D7D1B861CF372B735FF5B 0F689F85A66612CF61FBCC254A24A2087C2F715CB5FE56C6FF1087FF5C109CFD 55EE925B6BC8A982503069F29FE4561AC4F28A2C7B6D4BE8A29FA720B5F81793 5A5163342A784510379768D3E38954279E5FBB6B9A9124402FF8E0B391AF82FD 4BA32E99A9759F42F0A0F34ECBC468E0A9BEA45AD2998C69243201E22A94AA7E 699152CA8A170DE434DFA8AD8A4F70957B65E188D02F96A107DAD0FB7702DF3F 9BC9FB63ED1CDB2147BF60EE9A4D3CC9486716A838C567A674119EE34666370E 63C8365E8B0C46E6F634DA79A0612FF316DB418557C31B1AAC5C74AB2475F725 C0FF28DC9AB96F3165A4A46DF7ADB6657DCEFCDC8556C4920CC2B761F947272F CB540F3FEDEA0DDC3C634E5260DA9D3809C2669280CBA72B340615323089FDD0 29ACD941918B6554DF00CBEC6AACFC59FF8DEB2F7AAE1AB06980A7826B11384E B259A7B19DC09E6E592A3856E69CFFC1DF788E8A3F0CBB9E7870BC645BCB6E73 247746D12551E6F6D1CB6E43FD1DE620C13A53C7D8E3C246E61825B853C4866F 0AA2750F58E227D0846830A8EA33617F1E8ACCB15728689366FE8B0BADA48B50 6AC3121C1DC184055D9A81BEBF4B38EAE00D0061D269A3CE49B4159EC297BE6F 1740C1AAF72F7E9D375054518AF6C7273434A09F99828AE51D66557486E5FF13 C0EA512125DC02C115CB30F43DFBFC5F72B35EE578C2BFAA3230B52309834F26 6D747911E5A91BBEED508E7E03D49541997980CD199C34FFA1E55F3F2A8F9D98 9453BA3A994ADDC9599D6474F0070FE57D16CD12153DE8F3770281250B183A56 E9E6F286D27D731EE3EBF2B154197EA368E19263123D3086DCE7CDF9A00526E9 BC514384619F10922EFBA43546B7D1A0079EAAD94D672D73C22382AECACB21BE 3698AC5C83038807C1CF6836276501E77F88AF18B68EC8D321F15F9236FA6EF8 4CA3468F2BB1D0D3147F5BD0942AC7C2DF328FE4CDF97CBC5CD96A4CA3B8A234 CBEE5EF9DC500C734F5CD93716A4289BF1E02E07486E9F23877F3C87C9686694 30A2DE1D0343456A1FFF213B2F4C0A599612032F7AB2EB7D8EA5A9EBF4A6CBD7 81DD0E65B0B32B6B49F6F90337B0D983194143DF18FDA9824AB4DB9F5BBF48F5 09F245D6581689406DE2C43E8FF6CA1079FC8DCC158108BE01B14747369E0372 3444EFE2129AF438705D08BCB931B93FE65547EABD76349ABF0B22542F4B5F42 3CF260DA0AA5FD94C653A34A9CD426AF9CD9C35372E0A6B90A6A848CEE1E283D DAE973FED07CB86786A6D5E41428143181B7E1827450D351DFCA7FAFF1EA78D0 D6FD12743F6BC2976294931DB569BB21CC18F997D4A44DA8C2AE04EB142AE65C 1DF200F2A7157FAA847DA51EA479CB0E7310BE19D38FF2AA8B036F82B4906273 529A9AD9506258D6CFE8326AFD416B52ED24BC40CC38E29F5857E124AA70DD90 CC900944B882029B0C85EB1539D83B848E819175C469478CFE1AAA6057601778 F399C24DB529297E4E8AEB9E34376578768171AFB331CAA711289B76EEF8347E 8117CABA63BE101E671ABA4FD230B8A775D8FC3BADBD2FB3597C1B754B714B5A 60A42596927FE9A3ED92A0D52CE7E1A48B9E0F23E9B9731BF477872A7CFE51CD E4CF8A1C3D8BFF355204E9335A701A23CD1B4A476F5CE448A4FB17A168DE5636 0891E2C051323C1692D755779A6823CDA3A8D1B49A86F6A2C8F9A9F5436AE3F7 B70F68B8C0E72B0E2BF6C7192872900567423BFA9B424FC7D1BDEC48405E7C1A 8218F5FC33450C7E4EE6C84469D1F4097B1F1A6BCC464F66C8DEB269D3DDFF29 6038CBA5719CA72779FB829C149AF6181B1FC56F2C415A012413801250DEA4D1 F7E7D4DCAFFB9D82B0C32909C9B68810858E5BA65782F90DFD535496A070C0B7 0E95F01015252D1A36BD11A6011CB493E76E5D6A44BCD271F8ED5C20E51C01FD C6BEA04F7C65AE3F02DD03708A22A4D519094103D1946CCC46B986CFB50D6465 C26F35BB5853B2842D77B59C6DB32BD761335E8BCA0B8C87E50C29F3333FB0A1 C66D3275FFCC8F3AF0F2A94DF709560F5F07BD8832E705512366ECA05E955DA0 6E14753AABC0C806525FE20F558FB67226A56F17FB258398DD50D17DF2CBC3D6 53EBF8D12522096F4BCA8BE5263DEB77B5D1D97C31C2E0B5CAE59BBE786C0A67 D4C9FE1662CC92540E34A3B54E73E1A12D6297F81164C62FB5722C120367FF6E 0D78BFA54C60686561B2431C739E913CF2DC618ABE107AA3BA5EC97CA79BC48C A30CB0B05EFBC5A928A52EC30B8AB4EBE61D1A1705324055E7B146794BD230B7 44FEB828BBCC73457BF0368FF06AD22E622CDFA377525B29C1280D4454B06982 741271066685A3BDE007A1B7B6EC127E0BC3DABD25934479FBE7AFE371CDE8F9 B85C14FF18E106CA32C0EE6C6593298ADD69A155FCE707775179F2F39E7BE388 7639A492780A7CCA1E02C9DE6CEA20F0510D6CD24208ADB73951E1372D916088 CC1326A09FD335823AFDA78D26D87BBC04F54808A9AB8A005FF595C2AAE0F2DE AA177F5A57E6196B87CA64720BFDF520754B9975C6267DBE70992D6A588F3463 B35CAC6E1305506CF4D141372654C767AF860AD1F3148AF5148EE130F117B194 D99BE8C96B2318F5EE9432D94F3FF7710A491D85583AA59811651BB41841EF1E AA705C5067ED40A2210297970EA98EFC31A040416FE72B92B4E59EEE1AA52068 FFE034277FE1032553285D2B969D760ED06BE83E8982C1D8E1F97E47476D7F2C 88E215CCB63A68D13309FC0229B3B1C3B318D60A2EE604CDB0EBC7AA69126B63 F582F2B262C60C97529B5B22CA86591C92787E2C034851964D1B0F8B75667C36 D003CDBC78A6E4DDF4CC2BB54DF5652EDF278B0E2472E67A535A8C80EB20A23F 2D5A68BEA82382B9C83485BB3DDFCFC0DD282D353ADDCD2773E74B285993BCDD 9C1DF9D700F659CEF43A31006AE8E2A1A100872DC3445FB26122B6DD15137454 DEE83BD3451B0C85C1458C1D15BE4E50734199AC8795873CE35D50359D561FBA EB052BDED21E204C520FED89AC38EB38803774581904A00E780E2B0E168164CC CA65EB7C25F522E84F90C328BDB6AC51F604503C8408948F0895CA788B230993 A797E456E1EE72601F4ADC9E0DFC8592B33D923AF174A4318174B51D56415FE3 3CEA959B45669E2E01C8243B1E2642FC51C42A2052A1EB36534871B953B536DC 02FA6683AE7095C3ED4889E09C3DF12A60DFF480B7233CFDCD37AB1EDEB8FCA4 872915C725F121BAD4F975530D79835D984D8911EFEA282CCB3E949D74F9EEF4 BDC4034609F412EEEC5F1F90663CB71CB1DC60CCD7BAA531133494A03C8C5020 35415089997FB68D76A9208F0B0B6AEB60105CA6BEB13B05FCB22963B303120A 71ECCD8560836DA65FF8965B89C2DA2B180B6D09036B6367B4B0383221D63AE2 A71432FFC4E55124024817CE322C3A362C5DBC14BBE4CB91213A1665DE12954F F334E77A3B777A0EA51A8EDCC9FA9A3E3936BC7D1DF60A22D21F4AB7491CB26B 5C1480641FDFA05A42AC3DED0A84A0EE1FAA23124F54004844470D8343CC0C83 DC2DE645412D9D6E025A072015665D787EB6626C23110822817994CE9D2D740B B454273DEDF1C42A576B842C853A8A00A7E035FF2CCF921905D86F3AF0771374 44606A60F406DF3972A831F82BC7EAF806503BECB24EEE9D3DCFCE27E0BDD963 A11A7011F3E7FD4AD8D5F07BD99BDAB3D00D7482361574E40834F78633FD9D21 4851111F71AC901ED16FF99B5FAACE0ADD73CBAC379B6F83905A5D7DE7DD1ABC C8845E0749551E4578E9D70811306FFEC88ED1DCC2706284AEB57176C44ED40B 7B19C61F2E437BB9AC802B4269CE07815BC9DA1DECEC051935E21C1DC9BE5E48 6535FB849DE2A38B522EB314E35130AA662E7D8E1230A442DEF5BA0B06CE3AF4 C560DF867A4DBCBB9F7429C8065F540718FF6AD5A0BA741E339AFB51C2A7B097 7EE68C9E77D094FCBC3721643D143AF0EEA91FB6D8437B53469F48D4E28D81D4 A23078400BF0D861E9BE9198507307B6ECA8125165FAFEBF8365D8B20B851034 6641C93574A5864C7319B8974C4F2C0EE2631CE0C6D2F00E3B8EFBFBEA84F68C 75D8BE4C645C141E7697435593BE3E8351C0201588E6AB63E4841D582E9F8CFC 926206020B73480879CF4145EE14D82FDA474FB08C08D64FE7646B6444FBA29B 2CE507184903C8026654E084578BC2734FD8522E9D5CEB67075F05889197D0A9 C5713C04314CC7B622B6AEBDC62CE3A1CD7A74B58D5D2077922D013B2A973BDC 499C9A488967547D1DE6A63A290B96CFF2FEBF8D485A19307D8165C219CF345F 224A0EDE36C0D0F87AD8D089D90512C7EC394E4658884941864794B72906C8EC 323F8C9FB27191C5D3BE637AD9E5A2C4B68DB3E47CA208450468258042360F6E EB079AA6044EBE7E0EE8477EBF67993570D3F1B8B9C3C3A330C780EB3208FF4E 17BF3BA82987A4D7F796D0033E585A25794CCAADF6635E65F2A23A5542BB4584 5D485EBBB8395831F8265F17A4C0C3B58F54CD68980956088B1058F3963A1996 57B0B4423204612614BCC8E0F58B6D87D099A754890AC14C1495E9C1740633ED 19D2A307F6688693CB2B24CDD6D52AECCA8FD4593CEA161B0C04A498FD7E3E86 BAF31A02E2F452F186E3370217600F587F7A4CEA647D22C52A0B0BDE9610DE3F CD5A76D629B421A62132CD8E3A3E4F5F20209904FD582BA88A6757BEF81B52C1 6BAB1AD7DD9587B0D35DBD33D104848D482DEF3E32947986E5E2A2BBC1D3C8F3 C011738D0AA0EFA32AE6A03ACE1CB62AD1470BE592F7BD856B6EB6A7D01150E5 B38FE30DE4494AB7CC03F1A259D4DBC084CF3E0DFEDB5A42C60F72D47F9E413B 2B20606532FADD819B44C1B548E62C2B391F092EC6D8FEE0D6A9362FA541B11B E8B90A93703F88F062489F077CBA536A942338CECCB21F7331B3D398D8AA6BE8 186BBDFEA5CFD13290DA951AD10025E574DE8623EF950DE7E6EE309E1AEFA219 1968FFA87D5132A1B8F17129E5E93EDC061D8B3F3621D42CAEABF87BF72A5D59 029CE484830DB98CEB557FF6CBBEE02E3D66946CFC4B9C3F76347B49CA6FB9F1 F87CB2D0A5258D20E50F1D830AFA196F4618A1C6ACE605EC2DA4DD6BD3589F86 C9EC8E98C2E53A0261582DF026C05C520E4F0C4E4309AB8E1E83A39B73B1B1C0 5EDDE624FA28C5746C9391BDBFBBAB0F40E9E0C5161BA5EC117C051EF8429948 202EF625C833575963707CAA8401EEEE34303F9BF3CA2A4F0F7F99BCFE7A11FD ECE9B3DA6098D88C1DD2A51F6BB058BEFC63B5690D4C6A3BB20C8AE66F01DF05 AB584287C30B7C87B36F9DA0D560035757B71C6D47BB764093B06441A5C6C9FC 0B83EEF17971A353B0D8AF6F675F6A3CE314F008189549652521F089EDBBDC46 BE1304A4374C609C8F4833C392C239A474153ABCE6F0DDFBBB5A6DCA5988CB93 9E9798B680D01CCEA8D79316005314856AA07AE625C7146ABF0DA9C71C00B55E 89D29569C07E7EE9DA9C0DDDC7D085A68EFA24B39DFCC73A951D99AF009D03AE 7265E93F600D76FEE6B25A5A2542F7D591D6D26A0565CD5F76AF01EF475ECEAD 06EE6ED0EB912D42C00FF6A3336AF8216B4A8E4EBDAC1C5435D4A8ABFF5A7AC3 E55F890151D040CB6D04935F6E49A5A0A44D9D0C49A45C256201F601E609F019 182384E1EABF6ABAB319B89EE888BF563E4F547828416A928CB16E3C947A0112 212C5CB40E1C191112AD1A6A78470E2A4DBA221B758C33B2104C9E8D6D2B1D85 6872E8A9971B9E1A0F6F129F13D7883DC63B1B8A4422447971438C969CA05736 A62F02A5A0BF048AD3B86A66946B1AABC23162D420BD1298F3002B6D6DE76251 C7D17C432540F675A540C7E4111AE8BCE846D676A37D1457F39CBC57D2683163 3C12B31586D3590144ABA60432B46597655F7AAA487A7385F10380A8F5DAA6E3 BBBC8387D7FBA953AF761BA7A3671122FACB3D7B1E34BE0FEC75577287AB9A88 C2CD90F46E9C78DBA86138C502D3E82ED2BFD872C62A0F41B2BA0D31E1A23360 DFE53EB2AFCA120238ABD6551BC58A31D3AFD157321C8A6CCE224AA5CA266FE2 0FD6BCF2AC03638B4F21F7A1FD82A91C323CE2756DE754CDF010DAAFEB39004D 2F7BEDED3304E950A89B2BF74FF16D553EA3D6AACF9D96E75AD0DCFD5FFD3E93 294F2CCD8D85ACE468657FCA032509A11C8A8C3A1873EB10C38C8C46EA1303BD D16E3D3D0BE8471EB577CD9B23DD5B24A2E24D91DBAF0C49B5002CD06A3E4CB5 CD0228DBFDAFAFEC92CAE12E49D6E318864C10A826F8FD4A66C97A74D210449D 42206012B7FB2512FD9AD61924EFDCCD62BF04877E2161C4A1C31D1DCEEAF154 5757543A96BA32567B8F632CCCA4D07737153632355C9285A64B78837732CA53 393ECACC67EBFC0077F56BDD6080644C830DD778D8ACE45A92EE19309ADFD95A 22E47D87ECFCF24A6AF4B66614B904245377D5D64EA0E7AC95FD94C737A9C762 6BFBEF509EA21A85C726694683B077E1CD054D86FEE887E22E0B00BA06CA4948 0C2D796D2382D65561E9270A6A35B03498165E6C40A074BD4C7CF317DCCB6512 6728D4CDFF24DF9778A9BB35990DE957133549E2FE0D5F0C0508C8A922EBC0FE BB92BA591416CB80CD766673B7D6495D74034A274AD4EBB4D960EA381532F732 E0C0D4D05B3CE1579B178276A6575FD1CFAB77886CDCD3BAD9D3D3CA7E01B222 A6D69771B3FC4B38BF32A9E2C18E2EBC0A21587617E655C95E5EFE3D8BF51D8F C33AC848094144281B52BCF51C27B778808FC9CB3B2DC38186804BC78539FF5A 4281444C04FF60B8F8E5E206687AA94977DF07118963E89678F84DC58BCE2330 F89C4990841CB66B79D6C0EDF82EDD3F82612BD619AC64BB42E9C0F607427088 EB94851DC5ECED966A461BB6A839B0B777B23D6EC452CDDC163F4FDAEC2C5E21 B75D96F8F71197A87DD5B7758A43F98F4D04E4CB1F33EB80BBD0541EE74984C7 4D51F91A2FE6D5D9AEDA8E2F756EFF5E6DC1FC46217F82A92383A5DE914DA915 1FAD9603D6B3EBC56D680B40174767DF59D62E2B54A91DE25E628321AF832C35 FFE613191D6F5A8B09BFF06423A32186579CDF11F78D5000EC430C2CC82A768B 6B25509D1B0F52EF02F715D3277CF67C041B54B25CA165F57E9C396B60AC5143 2AA00A4D022485CCD0CD8F1F34D6E61BCBC3E93B504086F185F36CD72CF7CDD6 A5F68B54E97B3FA9F10EA344854B03B4D33C7CF4AE910ED87002AD06905D6082 631C0BA57A35963B6B93290995DFF432760EB8207A89E21A2BD950ADCED553DA 9CD71DE4BC85BAF5E1BC1FDBC762C1EDFA866EAA973365F5900CDCE233096991 07CA0F14B14E5E125FE0479A671DDFF88BE59F19D0DBA19DC8D15D146B1F7946 8DAAF13CBB77BCD1180C0BEF30A023A4D97DEAE1F0D6C5F2FB3C619BBFC3AB32 60A58244826CFC144D14746C920FEECE1A9A0ABCDC77D28CA7FC8A0F5DFFCE6B 8EDF8CDA3D13E3CB39F209C915C670E69FADA146950B16F86A65C003D3F67039 C88C6CEB1E82EA7BF78B4ABE3B34F67A0F8952A22AA88CB7C805449B7235FC9D E6241AB68515CB4EC6A4941C5B1FC723ADA726B0AF2A8E8BAA5785303CA5ABCC A2292CE89E8135AAD584B3C5209FD694F9041C5BA36DD2194841AD19941F8A31 2EF0D17AD7DE296C93031CF6291D23FC514C4986FC797DCC1F99EED074B3589D F20AA3F14DC0B59CF9ADE6C2B22118EBA7998E21E6DE56FD6B1C9304C0F935F5 B123CED51139E843A4EB2A265D9F9AE9FAC7BC11E155482F0265E2995E93B873 FA4BF04E8A6E29FB5FBF0F0AF12DAAB2E240E9A44F1CBE942A030A3226AE42FE 5E30480D6E857F6352E78FDD4B74D37BD66215FED30868805A9EFB9C116FCE1F 9A83A69DA11A89FB63F73294A0CB481125082239C70D5E78FDBF3DBE3AFE53EA 1EAC5110D92AA1597FD4CC37335BDAE1D17B9E475D1B9F2393018F0F22180DD6 9364245D52CE572A416191CD31F6C8AAD61EAE4418BD3A1AFEF0D5E70F1EC976 4C00BDFAEA84DE43642D94051C3C54D80C0F90CB1E41C162E64213BCDDBBAED5 AF41C8D231387464998AC7DD25B1C317782AA9DC840377500D9337B24E052CFE 413D7F963FC84860C1671C95601001ECA8FB4CB915D540BDD7A49E87D7D2D6DA BDED2EA9B1CCAEA2C37B1D1325E4CEF4F0E0002C59379F8D289E2C184C3E18C3 87B727E20921044839625767D823A88A792D5B37D102EE3247CDF149D51323D2 F5080CD527A13A308EDA1035DEE27E69448A3E00D7776248198137CBF8B8E42F 05395654EF3EB8ADC26A0581AE25BCF21FFD53456056A074EACE5061D8AB0C7A 1E02AE9A3C4F5AC6EDCF44E998C8814BFF7AEA251660AD33487CC4D35B521C97 C97A233254448C9A8F15FB263A4CBF889145BFDD55EBE02F7C7B041D880D8DD0 98EB8DF6F9694594797260ADB42D9B432364D9D7204E2E983C5351B49637C474 CC451520DB036C5574C6F580B4CE505C5FC2358ED494C695D7121EFAAEAA6864 CB48E313C1D89B4F1B7291309C0FBC2DCF3812826FF004DBB8C4D60F00AEE6D3 F0FF1BFDCEAD62BC0C4D60CD16CBC6FE524614F5BB75C16FC3748FE4AD820E33 04095710303015AC508B5E7A8DBC616300BE4B613C002482DDF7B68117DA633F 74595D44708A4734F7B7C2DEF62687153DCD898E96F4658CEC1CBF0A38DD2F73 8AAB12ABDC908B93C31ABD91885AF78738BA7BE04AA1D010C35BD482CEA98D0F 72473F24F37CDECEFBED95BCBA6F061C0F91F28E585CAB9FDABF2D5D620E8ACA 636893094614C255F16F46875C8512AF0F11010635D651BE1B4BE6282859AF67 443E0B74848B72045EEA96027ADF651D8DD3D4909A422CA16F22EAB9B8CD28E1 83AED8E2930A099295754361BD3381AD59E44441F64F125860722FFB302BBF3D 76892B8F6626A96A495D03B99037F2BFA842C1BEDD8DD434628EDD8A31A0090A 7C0F6D53ED9CC47CEB2DC282622AAA26569A9740CE3E2EEA9FA76156C83B442B 1CB507A79895E02BC4194C52985E31487A3482104B988D74CE6FB1E5F353255B 822DA012B4CB93AC20F012A368EE8C7DE55DE1B79BE57A0C60597BD170849424 AD7B9940CC70F6134888D8797658D11D28E144F52CCE7C511E9E272EEFC84746 7858898AD592E1A43FD9CAC5284330979BADC9C830883B984967F168BF3DBFC4 662C6435C37158E97C695E1E8D126AA6192E4682AAEEA20A17A5E2EF2E34509B 0B6EC2E8A96E26248BB190998A068D9B7314B77D4E615C92B57B8AB0FD62A98F 266ABCC5EBF403523B0ED870A83F48F69753E6E9DB399BB864B2194DAC952B17 58D1786AD39AE1DB2DBABC981445AE2B0773962F2FA8CD0AD7D3B45ED4800859 9ED1653979A7D9FF864DC4FF2D414C6CC4826499007DFA2A6C9F886F6D194B6B E4A8065512D3C1D67DF3F3BAEAFCD296AE88C91B487F0856B21B1C6EEB0DFFBC EAF80AACE09FDD0661721FFDADD07B68A33D536D2BA04383178109C2981E3406 BE2CC33C093D3F0AC79E414BFC06055EA67B4D7069E317197D1DF162D30F95D0 BA489FD14274B9872B9C2B0FDF03A68951181C9334E1C20940C11AFCEA64E83B 8D437581625DD0C63235125F8E738C6BD79FDCD4F28EB8080503A4BE08A6D851 46D98B5D05E57DD4B5C0F7FA02329A498EEF2818E7D6E2F2F70949D98FFD8497 7AEA8249846FE49D848CF20D2387C6B02C4B024B1F2C00C537A79F42888D488D 30D587D224C84894C360C7CBE9FC329E6165524092AB8A380331842767263D2F 43B8E1B8A0A9441F800D1301805D0D301A4D9DF1B80D4165D4DB1EDC8F55F4F0 0DAAA918860882FA4E900CD2686861AF7FEF7542C588A4F669583E3794F2C290 5C460E05E6CCA86B2E254D78F1B1B4F7F447F43B4106DDF1045DA085F12E4E26 9589906339D9D830F1A54ED0EDAD648D8CF4CE4458B9FE10C69AD5034FC985C1 01AF9B0BA4D63C4D8E46D5F1A0A3B1FF7F44AF4818733E6A9AD7A6DEEED955E8 6A5BC771483BC97F3485977DAD8DAF0D7D048280520D98D64BCB120ABFCD7090 93215AA84932DC1C140EC1D4F28910083C87430B50F21831161E6AAFDC636BAB 7F44917C3EDAAB47C02D8C80A7C159A66C4BB1CD5106B5B4A96AB0937EC03B95 06E6D02914146A068C862FC3C463F754D2B98E14123D99983FFA31862B17C6FE 08E391D4BDC0C4B4B911157CA4712A61FFE126561A2AA9343543DBEAF69395FB 094AD679650DA431195F2178949B340F72734D39483566924035EE56C6F58DF0 43254506BEF227378919A010225CBEB3F134D851E44DAC9D2D3FA66F6A5D71F8 B3441154EBFD720B3ABD7D1545A6F0234792FF715CAA9DFC73D1699EF5C59F42 2A64CFC240CA259F18DE66523BD0CAA670C22FA945E7EF5BF5572715F2D34BC2 912D154CF5B3047735305544F7ADD23787BB04EE6E62C5D6639B7EB55AF805C4 A1174A659B6C8E68F77D4B12440FC31F3B60AA3541DBD682BB1F624DD1ECB5D7 DC1C1E7E0644943B8C024B1441B2A283DD2A8D0F998090A0210E608E82BBC1CC 581C274ADED961A325BE0A37CEE67DD3ABA93C7B83A737A85FB08939DAAC2290 B22AAD101F3642D4281B133425485B0CE56E562B8B5B49DCEB29246E2E2FE792 0FD6E9C9A6A5AE154E1FBF6A9B495F9AD75850983F7B0F5FE1FD82BB3267E4B5 E3759BFC313DBAEA9BDC422D89735D609CB0F67B3CB9EBE7262197143FF36741 956ADBB69345DC9C68F18BFB6132C7EB7D23C485DAAFC45D05CC74B7D54E3206 E5EAE59E854CCB70C1C0B1DA1922D1CF60E38798A6318F0606C760C3C305F269 43165ED6A1531C8D6CF38354C3177C504E5E4E42544C2FEEE199039AA70E0A16 E41E813FF71BD1E1F03CDC744C918B1DEB78D0B7A9195271B5684F2C547D7146 5BBC58B353BBDA3B6F4E7B3EB347AD53DD03227AFD0831FCFD991F312E3A1453 84633701D036F53D30DC9871AA0682F09D2D237C4B8AAB5D97FEFB0D31317AC0 8349FD9953ABC2D3CB0F627451751DEC0C70A0387AB7DBF10C895A69D72F7127 A8F3D11880694DF62D7A879B2078A8E430AF56A194201FDE2D2E1EA7342FCBC4 403E8627873DB3B09D41FEA5AD1E039EF2CA5BBD6C9EC4DDC79E1BCCE4F2AE82 D05B9B53076ED42A8D5E9380D80AE5352B1CF305E9A06AEB1AA8B70EC7612D9C 312E427CBB4DDFCB3424ACB0F54D8AB96774B6C59BC8E252B42E57A3CE8440DF A6D249F9A5AC9102013D9A2623E28DFB23C375B48B9D04BE0E5B4BCAC33B78C3 0F251B7C19BAE31E95F39003E36AFFF5956FD4AF2A35878B4D8865F58E3B92ED E44E04BD32EBF20ABBD7C1D932AE60AD254F40BF7C945196217DAB4B966C3BD7 9DA94133C868309E5D4F7C1DE0E3A42D8E96C786E3B9D0EF59398987232E8CA8 0ED6441829AF9CB33F893F6340A90AB847CD2D09AB4BCBA08F15D3336614630F D45B07FDDBC70B25E8416223163FF219AB52F24A6F611DB8C9F2942797D52323 7CFF2524EAC2534B0BA860C8498C133AF8E6F96DCA4A707576A167146D0297A3 0ADE9B606A05BE4FF32E6B69F17E217ED48FC6DB3AE0E491011661D8C5931935 7956F607C13C2DB2643C5AD462F825F1D303A249CCD92B0D62B486B1A35A509C 08AC7D6E39F4DC5393CDFBE6125D704687502B4F38A220635EC269B778783076 807C9C18D59EF5102F841982C2AEE5C02F1FC86F47D39EF94E69F6E74175B019 33B0B58BC662422FDE1028BC992019D64AB75CD0198CD951C20CEF36F073711B A839C007AD2AC48C3EBD601C8379425A23033C478ADE35068F028894AE6F8BE6 C1464AB32B97F620C4C75B86018538D82DF16F9B3D586CB7A002F4A00CE8DED8 50EB448DF2CABA8C8323AC9812D6C6C3EF74A10B4FA5897F5E0B766D7CB279C7 4E5E5AB9AD1EE3248DF9C52EA99E092C1F3FB2BA013C8AF1668852B3EA492086 77302834D2D691F873B8C70AA267CC44F536100F9A339BFD04D8DA9596D19B71 84729EF56966F2050BC99A8EE142D7BA8D7137D576F50502DDDA1534C9032DEE 70CF76705BEAA6830AB95AED27313D975F331EDD331779CF8DE6B67D09838490 63C964BE4E6F3BC76C079822B6903F7457A3D6F5634EC10DF8B45B39FC0D5CDB F2CCE4C80132906539E67E20975B1B9F2CD3DFD15826F192FE4F4FA1547D13E4 78CC70F2A9F2ABF993932A3AD9E6224BAFD420248910D878BE8215830E81CDCD 80DD7AA9E6A75D6E718F3569006103B7A5B868E26E61C07B7BE04B7D3B598786 F82C1F00D1BA11388227EB31144E2AC70F16EA28DCA8C5003E1B6209F0E2116B 755766F3B2BC1922C5A166E39C5F318FA842A82C3FAD6D23D85D56DEADBA0871 A28445419AB784E1E211A651E33DA0F72FFBF6DBD7E98BD911681277052AE2B7 CAAC2E182573B0903EF7F1F7540813B875AC696E4F51E3B0B8CE5B34BC58CD22 B8AFFFC26C5C7C257AFD7E7367C6844693CC64C7F0D58A29EE3EE67298DF9DB2 C360AF0E88F244E99C0F28418B2C29AA911F9A152199F60BD722B70366D761E2 387782E87B256BB399A46C3D0A05E1B703CF5A70795B9C97BE25B2DD2A0AD59E 855B8C2888BB5437966FF633626B0FA79DF07AB42847314DA71F2976A0A99706 5C21BF68164C0E44DCB119C15335B1BCB1A9B384200DB828DBBA962B3279D264 55F6450380DF933761366CBA6394245410F8BD35002EB2907561B43F3859F382 A86A70EBD1874CC90652B9CDC3BD62BBA64A2B0C32E9F0AD92370C33E2384BD1 8552EB0444C62BEAC54B3DF1B248F92BF163ADF17141285B731741022F9004A7 4220B33810D6F540E396EA5AD17DB08FC93EA75668E540948F12063DC842C21C CC0350552E24B7EDFCC33DAF98CA7CAFDBA389705AE70F7ACC921B2B9713638F 769AFCFFFBF259341F6F9E8DEF211764F33257ACD3C2018379910A6386CC861C 75C2FF979D2E1BAEDB7E4F9E75A84882DCBA6C898222D7B5FCA6FF6D2B9DDE5A 863CF1D35D0D6CB5089EF792811706FB10C6BBF842AB0A52C25A2F6179CDEF23 E91569A84ED779A9B2D26FBEEE4A67444C5CAB063444A1CEDE5D0DBBEF27F3F0 67D8B4D9253FD32AAD5EB3C2E9D4CF81EE0A6E82D48F1557A3CDA0B6E6052427 27E8CCF29122058EB7B348EFE215CBBBAA22F59B2D35825826DE2C800D30218E 359CD3A0409818287D2CF8C29EC5ED6B60C3E2F6EBCDB66A5A2FE52EA92ABC1D AA439E5C73980CF1E039E67A8AD6514DB0DEB058AF430B15306DB28D2596D9D8 CDD192C709581AAAA0549481BC21B784FB874BF7B0043E1501EA3B7C4B8462A6 1AB3DC474685D7EDD7ED6FE1ECDF0F7BE1886FB73F37741955620E1293CAE260 C9266EDC053C5842EA764745A7C89FCEB03DF24B483901205ABBC0C495A483CA 16FA209291C7C9729432784AE802DBD24400CED635DF693615A256E22BCACEAC BEE68F244CB6916F68FBA6439792B1B7E2B88A7BD67C17443910101BC090EAC0 618C08A950C2AB80656DC347A6547D7F3BD83D6906E1185CBA9B3EA6A24CC418 2F8F4CD9081D31AA560F9017E52DC57F2B9602D9325256F6D311ACBD7E5B50DB 4A778F9810F23E46286D79DC1E8AFB059D22D0ACF3F046BA278B099B07CBBA0F 2E9B6EB012D8EC6BCE07FC7FBB7D78BE24EB593C23D25842833E1176CC2B6621 399370E868AC3E1200546BEBA53563E8CA406A85C6E16E76549692EA6F924023 88E5C392F2E3B138C7C8A263D554CCF2396E3560B9B36EC5D2D798086E5D4694 77847FFD9CBEAC8C8B6292CF6262A28DEC58D1DF382C029D2456FBD64C82EFBB 1FDB8D6A98333C70AC3B7E8007FCA9187C5032277B5F3F859231AC4F112B12B3 1A8E4DC004D7206C5A220439FA8563B72339300F535851DDE93964CD0058A416 6F91868C5C11C5917EB755EDDDEAE14510872532BE3FE592E0AED9A36E47A4F6 907CFACB81DDE7A32887C7B65D5E300D15C4F3730F75BF98EB5D2DF13D75CC24 154B7A0F1993235E1D996589E85B5CAE85619092AC38B52339E410C590A0C423 B32642908A8BE1A45972D0201F092997E520054EB8435A230535E010002DF2A1 695C4D883B734BAB322C4B02E44A0F21147712556FE0F688F6CD807081EAC5A9 9A57C7C1AC64C4D9607970AEF2BA1910EC7C0B4ADFC89CE25D4F75104FEB0EA9 9A5EF7CB10DC09BF2DA5B2968C84110EED73C06F0FD535C1AD1A4FD94C38FA73 B8E275CAFC0241FC3DF264910BEBFFAA1D7D3AA80B906B46426A7FF9FC018A19 94DC5BCA844C615FE71CFE73C662B87FF2A4EB0E7F17C41AEA0B296E8F401AAF 3F9EFF4D844D0B67A5DD9C77A1A69134ECF6FD08428F6B974E2F7876462D8D0F DD2BA70568083C9E018AEA5CB14F584989D6F76331E837562DDFD213D3574848 49A245AC29D724DE6E689C64FFFD417BC5BD1A3EDA2F8772F4991ACEE465EC24 22114452610E20BF71873776F4F938975E7625A66CDBAB8F60B97942A0CCBE47 0102A3CC93FF2D81F97F19603D282FD40FD4339D0C94E01882C1FE6CBCE65559 90A561EC5780A086C26F0FA856FA7CEE759927681FB01A4F4532B623B8518197 668E969D2F6C824BC69096B8715910CCDAD9B0C61C32193FB892DE13ABB790F3 A8D9C9ACDEF7CA96B11DE26CEABCB9D7FCDC904219F598916BAB4D8195ECC61C 535C4C8A8A7282B29139A770961B79D9CF20980B148F60A0735F16FD5782E87F E4F79F9EA5016B565859B575F87429D073F75360B801A53FC5DF860024A5A6D5 F0811F4B713EDBFD468E6B0EE65C9C6B116358F76DD8B4DAB91A225EA68DCB31 20DE050CC63327A21CC52FD7829C53D3AB7CB3A9BFD3C08D5EE6B6F74F4DD256 21B0D6D30C1D6D455DE8E8C61FCEE7C849EC193CE895731C5C15F7913E046D7C D6ECE32804AAE5DA4666E600BBA4A7C901FFE688633DCFA6006B77FD925F993A 30E90603BF8B9600FF104A4C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMCSC10 %!PS-AdobeFont-1.0: CMCSC10 003.002 %%Title: CMCSC10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMCSC10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup /UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMCSC10 def /FontBBox {14 -250 1077 750 }readonly def /UniqueID 5087402 def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def /FullName (CMCSC10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put dup 67 /C put dup 74 /J put dup 101 /e put dup 105 /i put dup 109 /m put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D 567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF 435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E 2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C 9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E 1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA 90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E 3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB 3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E 1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD 8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C 64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B 5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F 9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E 36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA 88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF 53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A 94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC 4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F 8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE 07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE 8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A 0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F 7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A 962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC 3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF 72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A 22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B 7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B 57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F 54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC 5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A 94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E 74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A 1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A 7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3 154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD 9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092 40B97ECF9E6EC8F51ACB40869E5A6E08A0BAB6B7892A232A3A1E688B81077DDB 844137AB35E862CECB9761D4FD3514C707D6C00DF5F2109C43785B93336E939E B40A8E211CA36120572EEE2EA522F9BB1A60FCCF768D4D6E62F4F6521A7490A0 7CE1F14CD451B5A1D6149A6AE7D0F27B7E0E31F556E2E06F41340ADE94AF27C9 C8C0CEB284B103EF6D31C8DB0FE731362CB594A3D6D3F6FB52DA232DCFB65F66 B2FF61B4380D93ACBB9EEFD298C052BFC0B40FBFCA767F3B1EEA76B1520772E1 6C7915DBF8C3C012829FA69B8F3A265EFB97D093DDA4FA5244191C7F7EFADB33 2D0EA8344CF7B8F03811562696AD81F736B1C3AA2C6CBCB5811316E0C1D139D1 E6407C61D8DD5ADE2F04C13004D5F31EE929B8D5462DBC4AA6D48704A316A0C2 E22A8D139D91985FEF3BE7B937A3BE91BCC9AC2F4359FF77A2EC81D686435C3C 184241368906A4C566E76C74B5C24D453534A7FECC771106BCEDED5735E4E116 AA0593AFFB47F3F3BB30602EBDBB815DB9059A761FB609C52B6D7DB9A0A6310C 1B1C876006A573F53F12FACE12B3E27B2AA92920ACD28917B5F494B16034D58A 4B1D27519970B25A67FA52EF9026B77569820BBE1DE8724D5B11F1E5C7DEF2AF CB7FA37CC69354C383D0DEA937B0A1EC4C27E4254CC7260D2683CAA547789EC8 C09D8A3BB0E5D27B2657DB2AA0A2B17AFA5DB8FCB819073EDE520F94A9FD8CBE 3EA35355AC509C4889EC55CF0E1C1C31D46880EF539AA5C0E56BD734D4C29D8B E90CC28C35FE29CB1A9D15FD8A224248F586DEE4286C5E66D870B033ADB5F05F 27003BBC45BDA4C772E8D91210A526F35D1ED895384A541334EB288B4CC50778 EDDB5E0A210CEBCB11E1BCDBAC1D918890448DFB749E97308D8A3073AAAF6A45 7E0B9EC47C265704E98095EF849ECC5CDB0C288052B50A098BDCC66D16D12DA1 0774CB9FF2675BD1BE3F52C93743F21A39DD0EB19FD6E9FCA6A5FC4B39825AC4 56C4288976AB839F3AF3F5E7559D63A01B05A75687100E2209BBE0B82CCDD7BE AA9B4504AEB70FC1D81C0BF7228998430C0DE844C8A40A3BB1E221968F8240E3 E4026891E39904BAA366115929BB188E8817D28A223E15AC9DF8D6E20DEC7C1F 74E5821A5C026AFE013883B12D87058BC6CB15B036B91A6230F461227FDA6C3F ADC2ABEE41A20E2D15B004BFB4BEEECF6FB6E8C823E3FF07B8CD35DFBB343E75 3EDA045D4DF37BEFF235BAF6BAA895360D146B801FC52EF68B0F34556090EE10 394CDA64DF742180F610CD0246218F61BA0F1140E8753E9EB98D14808E133728 D6FBFF63F8CF68F23E8F244F14548F45BF1CE842DCFAD882F0B7FCB7DCCCD37A 2070C5AD92A7E1AE096F223C603D0CED929FDDE3502D5CA9668629A7765CE523 BF2654A51C75F879F004AF81C8F35685E0C2A9D0A52239BDD671E0D00B8A0EDD 373A775F3F62E7DC197B4494B2BF4587B9EADB7D1466BFB09CA55923FD17EBEE 1A894CB3A0ADCF6A4A95EE3CA497ECA1C8D74F09CB5FE79A502FDAAA874A8702 ED722057920CC46F3356D7A287828658567E7387372D6CD6F1C5D963CFA8800D EA71BA12827E46A0BC1DBE1FDAE263834F60E5B026403EBD63282F20F480B723 2D5282D80529E12CD2E9B0ACF31675C6B3E6FC9A82E30BD83B83526E3320E891 F2C418B8F1672E1C00832A9E3C2D9311DBF8753F9C5B8499A160604A32E4EE4C 02E6F32031386DBF7BE8B0F1BEA458D4E069152441127016576712D02FD81EC7 8520B48156E281C148323D994B8994516C55B13CEBD229E6F01AB5C932007F9C 97D327DCC2E98C6F089FF33DD208C90226FD7DCC22678C2C65B834922B75B1E9 B66E8BCCB2681A7F1A1DE28C2A32526A755864CB9610DA542E1CB8C3EE85D876 A8657333ADE60E6A435EAEE4ACE3BEFA2AF99ADBB39E31CBEFE8A0136FAA3258 7A0E895F33256F6E89E38EA9FEED59975C4F9946A0F087BEF348105ED0ACCA52 1391DC72C88F898795B276AA1DD03269320FF92D82DD2A41FD670A31175B4AC6 2DC66DBA179492F60508C076D08601D703C3E7FBEA825CC72BBC215C9F251745 204FAEBDE01F1656449AD0622918ED76751D6836DEE9A8CBB1334A1CB0BC6C81 09D8A5B45FE0D7BEF2CFC7C5B797184216BDC404B79ED57D18F4BF5D3849A57A C9F65CF637C55EAC5CB44577B68E4CD6C7E2C6FBA2DFD42BB8F9BFCFEB64FC7E 15E925C6EFBA5BE1F043F38CA3D2EB46EF13BD724C73B3943A5E2F40A340C55F 542EF7DEBFC05445829990F3B5E539826346430683D12946DAFA4178D66732EB F371247036E10F2FE83217159396C6695313FBA07CEF69A1BC9CED5E21E521E4 4D0640879F1256AA3098CBF20A7262E90D7880DFA56B95E056EFD8C7AAB73320 52211EBB36D54AB92A43843C6B240D268EE370D7C3CCB6545F863590A9A82B9D ACBF0DAC6E31D5D5546DCC16E7953AA0A173134C641C1842F5F0F31B5A8CC7AB 7F36DEE0ECB018E837B125A92D9FB21115FBC82E4EB47AA5F392BA9246527983 3CCFAEAEBA8684DD9F00368EB3B441802DF0A8EBF18429483C282D130CE15A2F 9EBE80430F7F19C08E9C704876A17AC132DFB51B15DD3A252C23707CCAF0590B 39FD394CFADF940D9427D3EDF72CE331EFF1706BA1BB628DDFAEEEBF276F84A2 367881248902835E748597CD52470EED63A4A090419956D004699B272585EA86 81C1B54520E40C7CF6040ACB79D312FC7A1FFBE255294B6CB71FA7A9DF201C2F 9B24EAFC2665EEACD152BB7D65D3BC29269C708FD2C7A2F2E432002206EA4AE2 2A8F8C4949914006F1A83B89F46D6153640A6B6265FB62D600DF4ED4B0C0EA8E 863FB4E4749F643AD3A5CA8A1E32E75830CEC857B32E25423E008092FB62811F 47FACFB9440B21585FD7959EC8C72161500FD65FE1C671C73E3DC7A777275284 9899083160F46BCE79933A77D0EFC71D8C04150504C9838F1BC1DECA383D8EE3 6F49D04A9D03B895687A3F0DEA8BCAF6D47CB673E6DB38ACC0CB4BD24BE2D97A 41C12D1A01C2F428BC07D864567C4D103662F18D7164BC597A2871790052D9FC 028657B569F972B82B0554193AA3620DD026E60E3ADA5C7D75CEE2524465749A 47D843724E7A421D6AFE74567CF32DC2BFD22A66E930E5401048062B939385C4 01FC9D9C9A0E3D69661E0E498BAE9D392D5661BAAD7024BE4E4BF80D8CD2A242 E0503D755259A3D29567B8A6F46C780ECF516829E0DB4357F4F850526F0B1CED 54F75917769E04FD5DEA0FB07B5F76B95B8FEFDBB79634391E643739F8698A3E 04A36B653144EDD3F739911F15A7490A1FD94DE02E2D80F5DEA2425CF49BC05C 7B2C3DD374A517C7E750C1EC724DF1D3DBD47BA64CE51227DABB0131123BD60A 6189FA48F4217F05176939985AA3917DEB05357A0932D5E68AFE3A9596C81A46 E3331E394A987A3657EE2E21B3D3D1BCD926F611A9B03681D62908022FA9C935 142D1D0528CBAE1847FCDD111E9C1F7D5DA9FBAEC198436BDF34605C039FF666 1ECCEDBD398BF8084346828DA01E284993636D2C63ACF29DB61FF6909308BE8E A171C171ED694F06138E25DF14963BA6B2E9266875FABF0672F1EF1474345CF9 21D9F6FDDD86011DFF39AFF73211A96B8B7929D9276EE18D076F848AE500D7E1 847DE156921906A15FFB18EE929A414CEE8CEA164B0CD62D50510501E972DF98 81C03D3E71DACF176884C15682A7248B0F8664DFADD0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (sun267.dvi) @start /Fa 193[71 1[71 60[{}2 90.9091 /CMMI10 rf /Fb 216[62 4[62 34[{}2 119.552 /CMTT12 rf /Fc 133[52 62 62 85 62 65 46 46 46 62 65 59 65 98 33 62 36 33 65 59 36 52 65 52 65 59 10[88 88 85 65 86 91 80 1[88 107 73 91 60 42 88 92 76 80 89 85 83 88 6[33 59 1[59 59 59 59 1[59 59 59 59 33 39 33 91 1[46 46 1[91 24[65 65 68 11[{}67 119.552 /CMR12 rf /Fd 138[49 1[37 2[46 46 2[23 1[28 28 4[46 42 1[46 27[62 18[46 50[{}12 90.9091 /CMTI10 rf /Fe 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 5[48 48 48 48 1[48 48 48 48 2[48 48 48 48 48 48 48 48 1[48 3[48 1[48 1[48 2[48 48 48 48 48 48 48 3[48 2[48 48 48 4[48 34[{}61 90.9091 /CMTT10 rf /Ff 135[59 2[62 44 44 46 1[62 56 62 93 31 2[31 1[56 34 51 1[50 1[54 13[62 3[84 1[106 6[70 4[85 14[56 56 2[31 46[{}24 99.6264 /CMBX12 rf /Fg 153[45 86[45 1[91 9[45 3[{}4 90.9091 /CMSY10 rf /Fh 131[91 1[40 3[48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 1[40 51 40 51 45 11[68 1[51 67 1[62 1[68 83 3[33 1[71 59 62 69 2[68 9[45 45 45 45 1[45 45 1[45 25 32[51 51 12[{}45 90.9091 /CMSL10 rf /Fi 133[60 3[71 75 52 53 55 71 75 67 75 112 37 71 41 37 75 67 1[61 75 60 75 65 11[103 1[75 100 1[92 101 105 128 3[50 1[106 85 88 103 97 1[102 11[67 67 1[67 67 67 34[75 75 12[{}43 119.552 /CMBX12 rf /Fj 206[81 81 1[45 46[{}3 143.462 /CMBX12 rf /Fk 131[232 2[123 3[129 90 92 95 2[116 129 194 65 2[65 1[116 1[106 2[129 113 16[159 2[220 140 10[175 25[65 39[{}20 206.559 /CMBX12 rf /Fl 132[45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 6[56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 71 1[35 35 1[71 76 22[76 51 51 53 11[{}80 90.9091 /CMR10 rf /Fm 134[51 3[54 38 38 38 2[49 54 1[27 51 30 27 54 49 1[43 1[43 1[49 11[73 70 54 2[66 1[73 7[64 2[70 11[49 49 3[49 49 2[27 7[76 38[{}29 99.6264 /CMR12 rf /Fn 133[46 55 55 76 55 58 41 41 43 55 58 52 58 87 29 55 32 29 58 52 32 48 58 46 58 51 3[29 1[29 4[79 80 1[58 78 1[71 79 82 1[63 2[40 1[82 1[69 80 76 1[79 3[81 2[29 52 1[52 52 52 52 52 52 52 52 52 29 1[29 2[41 41 1[81 24[58 13[{}60 90.9091 /CMBX10 rf /Fo 134[56 4[54 42 55 2[58 56 68 3[27 3[51 26[52 6[71 1[74 65[{}12 90.9091 /CMCSC10 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter /setpagedevice where { pop << /PageSize [612 792] >> setpagedevice } { /letter where { pop letter } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 0 351 a Fo(Joint)34 b(Astr)n(onomy)e(Centre)2099 b Fn(SUN/267.1)0 464 y Fm(Science)34 b(&)f(T)-8 b(ec)m(hnology)34 b(F)-8 b(acilities)33 b(Council)0 577 y(Starlink)g(Pro)5 b(ject)0 690 y(Starlink)33 b(User)h(Note)e(267.1)3282 927 y Fl(Tim)e(Jenness)3193 1040 y(2012)j(Marc)m(h)e(23)p 0 1183 3780 12 v 367 1788 a Fk(P)-19 b(AL)77 b(|)h(P)-6 b(ositional)76 b(Astronom)-6 b(y)1510 2037 y(Library)1724 2449 y Fj(0.1.0)751 2856 y Fk(Programmer's)75 b(Man)-6 b(ual)1633 3566 y Fi(Abstract)0 3828 y Fl(P)e(AL)37 b(pro)m(vides)g(a)g (subset)f(of)h(the)g(F)-8 b(ortran)38 b(SLALIB)e(library)g(but)g (written)h(in)g(C)f(using)h(the)g(SLALIB)f(C)0 3941 y(API.)24 b(Where)g(p)s(ossible)g(the)g(P)-8 b(AL)24 b(routines)f(are)i(implemen) m(ted)f(using)f(the)h(C)g(SOF)-10 b(A)23 b(library)-8 b(.)39 b(It)24 b(is)g(pro)m(vided)0 4054 y(with)30 b(a)h(GPL)f (license.)p eop end %%Page: 2 2 TeXDict begin 2 1 bop 0 52 a Fl(ii)3290 b Fh(SUN/267.1)0 5675 y Fl(Cop)m(yrigh)m(t)452 5672 y(c)427 5675 y Fg(\015)30 b Fl(2012)i(Science)g(and)d(T)-8 b(ec)m(hnology)33 b(F)-8 b(acilities)33 b(Council)p eop end %%Page: 1 3 TeXDict begin 1 2 bop 0 52 a Fh(SUN/267.1)3297 b Fl(1)0 351 y Fi(1)135 b(In)l(tro)t(duction)0 604 y Fl(This)30 b(library)g(pro)m(vides)h(a)g(C)g(library)f(designed)h(as)g(a)g (API-compatible)h(replacemen)m(t)g(for)f(the)g(C)f(SLALIB)0 717 y(library)g(\(\))i(and)e(uses)h(a)g(GPL)g(licence)h(so)f(is)g (freely)g(redistributable.)42 b(Where)31 b(p)s(ossible)g(the)g (functions)f(call)0 830 y(equiv)-5 b(alen)m(t)32 b(SOF)-10 b(A)30 b(routines)h(and)f(use)g(curren)m(t)g(IA)m(U)i(2006)g (standards.)40 b(This)30 b(means)h(that)g(an)m(y)g(functions)0 943 y(that)g(rely)g(on)f(n)m(utation)h(or)f(precession)h(will)g(return) e(sligh)m(tly)j(di\013eren)m(t)e(answ)m(ers)h(to)g(the)f(SLA)g (functions.)p eop end %%Page: 2 4 TeXDict begin 2 3 bop 0 52 a Fl(2)3295 b Fh(SUN/267.1)0 351 y Fi(A)134 b(F)-11 b(unction)44 b(Descriptions)0 649 y Ff(A.1)112 b(SOF)-12 b(A)37 b(Mappings)0 912 y Fl(The)h(follo)m(wing)i(table)f(lists)g(P)-8 b(AL/SLA)39 b(functions)f(that)h(ha)m(v)m(e)h(direct)f(replacemen)m(ts)g(in)g(SOF) -10 b(A.)38 b(Whilst)0 1025 y(these)33 b(routines)f(are)h(implemen)m (ted)g(in)g(the)f(P)-8 b(AL)33 b(library)f(using)g(SOF)-10 b(A)32 b(new)g(co)s(de)h(should)e(probably)h(call)0 1138 y(SOF)-10 b(A)30 b(directly)-8 b(.)50 1321 y(SLA/P)g(AL)129 b(SOF)-10 b(A)50 1434 y Fe(palCldj)193 b(iauCal2jd)50 1547 y(palDbear)145 b(iauPas)50 1660 y(palDaf2r)g(iauAf2a)50 1772 y(palDav2m)g(iauRv2m)50 1885 y(palDcc2s)g(iauC2s)50 1998 y(palDcs2c)g(iauS2c)50 2111 y(palDd2tf)g(iauD2tf)50 2224 y(palDimxv)g(iauTrxp)50 2337 y(palDm2av)g(iauRm2v)50 2450 y(palDjcl)193 b(iauJd2cal)50 2563 y(palDmxm)g(iauRxr)50 2676 y(palDmxv)g(iauRxp)50 2789 y(palDpav)g(iauPap)50 2902 y(palDr2af)145 b(iauA2af)50 3014 y(palDr2tf)g(iauA2tf)50 3127 y(palDranrm)97 b(iauAnp)50 3240 y(palDsep)193 b(iauSeps)50 3353 y(palDsepv)145 b(iauSepp)50 3466 y(palDtf2d)g(iauTf2d)50 3579 y(palDtf2r)g(iauTf2a)50 3692 y(palDvdv)193 b(iauPdp)50 3805 y(palDvn)241 b(iauPn)50 3918 y(palDvxv)193 b(iauPxp)50 4031 y(palEpb)241 b(iauEpb)50 4144 y(palEpb2d)145 b(iauEpb2d)50 4256 y(palEpj)241 b(iauEpj)50 4369 y(palEpj2d)145 b(iauEpj2jd)50 4482 y(palEqeqx)g(iauEe06a)50 4595 y(palFk5hz)g(iauFk5hz)28 b Fd(also)34 b(c)-5 b(al)5 b(ls)33 b(iauEpj2jd)50 4708 y Fe(palGmst)193 b(iauGmst06)50 4821 y(palGmsta)145 b(iauGmst06)50 4934 y(palHfk5z)g(iauHfk5z)28 b Fd(also)34 b(c)-5 b(al)5 b(ls)33 b(iauEpj2jd)0 5317 y Ff(A.2)112 b(More)38 b(complex)g (functions)0 5580 y Fl(These)23 b(functions)g(do)g(not)g(ha)m(v)m(e)i (a)e(simple)g(equiv)-5 b(alen)m(t)25 b(in)e(SOF)-10 b(A)22 b(so)i(are)f(reimplemen)m(ted)h(either)g(completely)0 5693 y(standalone)31 b(or)f(using)g(m)m(ultiple)h(SOF)-10 b(A)30 b(functions.)p eop end %%Page: 3 5 TeXDict begin 3 4 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palAddet)2716 b Fl(3)p 0 351 3780 12 v 0 486 a Fi(palAddet)275 b Fc(Add)39 b(the)g(E-terms)e(to)h(a)h(pre)f(IA)m(U)h(1976)e(mean)1760 599 y(place)3237 486 y Fi(palAddet)0 872 y Fn(Description:)47 b Fl(Add)36 b(the)h(E-terms)g(\(elliptic)i(comp)s(onen)m(t)e(of)h(ann)m (ual)f(ab)s(erration\))g(to)h(a)g(pre)e(IA)m(U)i(1976)227 985 y(mean)31 b(place)g(to)g(conform)f(to)i(the)e(old)h(catalogue)i (con)m(v)m(en)m(tion.)0 1211 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palAddet)e(\()j(double)e(rm,)h(double)f(dm,)h(double)f (eq,)h(double)f Fg(\003)p Fe(rc,)h(double)227 1324 y Fg(\003)p Fe(dc)h(\);)0 1551 y Fn(Argumen)m(ts:)262 1753 y(rm)35 b(=)g(double)h(\(Giv)m(en\))427 1866 y Fl(RA)31 b(without)f(E-terms)h(\(radians\))262 2032 y Fn(dm)k(=)g(double)h (\(Giv)m(en\))427 2145 y Fl(Dec)c(without)e(E-terms)h(\(radians\))262 2310 y Fn(eq)k(=)g(double)h(\(Giv)m(en\))427 2423 y Fl(Besselian)c(ep)s (o)s(c)m(h)e(of)h(mean)f(equator)h(and)f(equino)m(x)262 2589 y Fn(rc)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 2702 y Fl(RA)c(with)f(E-terms)g(included)g(\(radians\))262 2867 y Fn(dc)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 2980 y Fl(Dec)d(with)e(E-terms)g(included)g(\(radians\))0 3263 y Fn(Notes:)227 3427 y Fl(Most)39 b(star)g(p)s(ositions)f(from)f (pre-1984)j(optical)f(catalogues)i(\(or)d(deriv)m(ed)h(from)e (astrometry)i(using)227 3540 y(suc)m(h)f(stars\))g(em)m(b)s(o)s(dy)e (the)i(E-terms.)63 b(If)37 b(it)i(is)e(necessary)h(to)h(con)m(v)m(ert)g (a)f(formal)g(mean)g(place)g(\(for)227 3653 y(example)c(a)g(pulsar)f (timing)h(p)s(osition\))g(to)g(one)g(consisten)m(t)g(with)f(suc)m(h)h (a)f(star)h(catalogue,)j(then)c(the)227 3766 y(RA,Dec)f(should)e(b)s(e) f(adjusted)h(using)g(this)g(routine.)-2 3993 y Fn(See)35 b(Also)n(:)227 4156 y Fl(Explanatory)c(Supplemen)m(t)e(to)j(the)e (Astronomical)i(Ephemeris,)e(section)h(2D,)h(page)f(48.)p 0 4442 V 0 4577 a Fi(palAirmas)434 b Fc(Air)38 b(mass)h(at)f(giv)m(en)f (zenith)h(distance)433 b Fi(palAirmas)0 4845 y Fn(Description:)47 b Fl(Calculates)31 b(the)g(airmass)g(at)g(the)f(observ)m(ed)h(zenith)f (distance.)0 5071 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palAirmas\()f(double)h(zd)i(\);)0 5298 y Fn(Argumen)m(ts:)262 5501 y(zd)36 b(=)f(double)g(\(Giv)m(en\))427 5613 y Fl(Observ)m(ed)30 b(zenith)h(distance)g(\(radians\))p eop end %%Page: 4 6 TeXDict begin 4 5 bop 0 52 a Fl(4)2737 b Fh(SUN/267.1)63 b(|)e(palAmp)0 351 y Fn(Notes:)336 693 y Fg(\017)46 b Fl(The)30 b Fe(")p Fl(observ)m(ed)p Fe(")g Fl(zenith)h(distance)g (referred)e(to)j(ab)s(o)m(v)m(e)f(means)f Fe(")p Fl(as)h(a\013ected)h (b)m(y)e(refraction)p Fe(")p Fl(.)336 846 y Fg(\017)46 b Fl(Uses)37 b(Hardie)p Fe(')p Fl(s)g(\(1962\))i(p)s(olynomial)e(\014t) g(to)g(Bemp)s(orad)p Fe(')p Fl(s)f(data)i(for)e(the)h(relativ)m(e)i (air)e(mass,)427 958 y(X,)j(in)f(units)g(of)h(thic)m(kness)g(at)h(the)e (zenith)h(as)g(tabulated)g(b)m(y)g(Sc)m(ho)s(en)m(b)s(erg)f(\(1929\).) 71 b(This)38 b(is)427 1071 y(adequate)g(for)f(all)h(normal)f(needs)f (as)i(it)f(is)g(accurate)i(to)e(b)s(etter)g(than)g(0.1\045)h(up)e(to)i (X)f(=)f(6.8)427 1184 y(and)k(b)s(etter)h(than)g(1\045)f(up)g(to)h(X)g (=)g(10.)72 b(Bemp)s(orad)p Fe(')p Fl(s)40 b(tabulated)h(v)-5 b(alues)41 b(are)g(unlik)m(ely)h(to)427 1297 y(b)s(e)31 b(trust)m(w)m(orth)m(y)g(to)h(suc)m(h)e(accuracy)i(b)s(ecause)f(of)g(v) -5 b(ariations)32 b(in)e(densit)m(y)-8 b(,)32 b(pressure)e(and)g(other) 427 1410 y(conditions)h(in)f(the)h(atmosphere)f(from)g(those)h(assumed) f(in)g(his)g(w)m(ork.)336 1563 y Fg(\017)46 b Fl(The)30 b(sign)h(of)f(the)h(ZD)f(is)g(ignored.)336 1716 y Fg(\017)46 b Fl(A)m(t)28 b(zenith)e(distances)h(greater)h(than)e(ab)s(out)g(ZD)g (=)g(87)h(degrees)g(the)g(air)g(mass)f(is)g(held)g(constan)m(t)427 1829 y(to)31 b(a)m(v)m(oid)h(arithmetic)g(o)m(v)m(er\015o)m(ws.)-2 2031 y Fn(See)j(Also)n(:)336 2372 y Fg(\017)46 b Fl(Hardie,)39 b(R.H.,)g(1962,)g(in)e Fe(")p Fl(Astronomical)g(T)-8 b(ec)m(hniques)p Fe(")37 b Fl(ed.)58 b(W.A.)38 b(Hiltner,)h(Univ)m (ersit)m(y)e(of)427 2485 y(Chicago)32 b(Press,)e(p180.)336 2638 y Fg(\017)46 b Fl(Sc)m(ho)s(en)m(b)s(erg,)31 b(E.,)f(1929,)j(Hdb.) 39 b(d.)i(Ap.,)30 b(Berlin,)h(Julius)e(Springer,)h(2,)h(268.)p 0 2893 3780 12 v 0 3027 a Fi(palAmp)194 b Fc(Con)m(v)m(ert)37 b(star)h(RA,Dec)g(from)g(geo)s(cen)m(tric)f(apparaen)m(t)1532 3140 y(to)h(mean)g(place)3314 3027 y Fi(palAmp)0 3377 y Fn(Description:)47 b Fl(Con)m(v)m(ert)33 b(star)g(RA,Dec)i(from)d (geo)s(cen)m(tric)j(apparen)m(t)e(to)h(mean)f(place.)49 b(The)33 b(mean)g(co)s(or-)227 3490 y(dinate)e(system)g(is)f(close)i (to)f(ICRS.)e(See)i(palAmp)s(qk)e(for)h(details.)0 3691 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palAmp)f(\()h(double)f (ra,)h(double)f(da,)h(double)f(date,)h(double)f(eq,)h(double)227 3804 y Fg(\003)p Fe(rm,)h(double)e Fg(\003)p Fe(dm)h(\);)0 4006 y Fn(Argumen)m(ts:)262 4183 y(ra)35 b(=)g(double)g(\(Giv)m(en\)) 427 4296 y Fl(Apparen)m(t)c(RA)f(\(radians\))262 4449 y Fn(dec)35 b(=)h(double)f(\(Giv)m(en\))427 4562 y Fl(Apparen)m(t)c (Dec)g(\(radians\))262 4715 y Fn(date)j(=)i(double)f(\(Giv)m(en\))427 4828 y Fl(TDB)c(for)f(apparen)m(t)h(place)g(\(JD-2400000.5\))262 4981 y Fn(eq)k(=)g(double)h(\(Giv)m(en\))427 5094 y Fl(Equino)m(x:)41 b(Julian)30 b(ep)s(o)s(c)m(h)g(of)h(mean)f(place.)262 5247 y Fn(rm)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5360 y Fl(Mean)c(RA)g(\(radians\))262 5513 y Fn(dm)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5626 y Fl(Mean)c(Dec)h(\(radians\))p eop end %%Page: 5 7 TeXDict begin 5 6 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palAmp)s(qk)2667 b Fl(5)0 351 y Fn(Notes:)336 686 y Fg(\017)46 b Fl(See)31 b(palMappa)g(and)e(palAmp)s(qk)h(for)g(details.)p 0 932 3780 12 v 0 1067 a Fi(palAmp)t(qk)323 b Fc(Con)m(v)m(ert)37 b(star)g(RA,Dec)i(from)f(geo)s(cen)m(tric)1287 1180 y(apparen)m(t)f(to) h(mean)g(place)3168 1067 y Fi(palAmp)t(qk)0 1408 y Fn(Description:)47 b Fl(Con)m(v)m(ert)e(star)f(RA,Dec)i(from)e(geo)s(cen)m(tric)j(apparen) m(t)d(to)h(mean)g(place.)83 b(The)44 b Fe(")p Fl(mean)p Fe(")227 1521 y Fl(co)s(ordinate)35 b(system)f(is)f(in)h(fact)g(close)h (to)g(ICRS.)d(Use)i(of)g(this)g(function)f(is)h(appropriate)f(when)g (e\016-)227 1634 y(ciency)28 b(is)f(imp)s(ortan)m(t)g(and)f(where)g (man)m(y)h(star)g(p)s(ositions)g(are)g(all)h(to)g(b)s(e)e(transformed)g (for)h(one)g(ep)s(o)s(c)m(h)227 1747 y(and)k(equino)m(x.)46 b(The)31 b(star-indep)s(enden)m(t)g(parameters)h(can)g(b)s(e)f (obtained)h(b)m(y)g(calling)h(the)f(palMappa)227 1860 y(function.)0 2054 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palAmpqk)e(\()j(double)e(ra,)h(double)f(da,)h(double)f(amprms[21],)f (double)h Fg(\003)p Fe(rm,)227 2167 y(double)g Fg(\003)p Fe(dm)i(\))0 2362 y Fn(Argumen)m(ts:)262 2533 y(ra)35 b(=)g(double)g(\(Giv)m(en\))427 2646 y Fl(Apparen)m(t)c(RA)f (\(radians\).)262 2795 y Fn(da)35 b(=)g(double)g(\(Giv)m(en\))427 2908 y Fl(Apparen)m(t)c(Dec)g(\(radians\).)262 3058 y Fn(amprms)k(=)h(double[21])g(\(Giv)m(en\))427 3171 y Fl(Star-indep)s(enden)m(t)25 b(mean-to-apparen)m(t)i(parameters)f (\(see)g(palMappa\):)39 b(\(0\))27 b(time)f(in)m(terv)-5 b(al)27 b(for)427 3284 y(prop)s(er)k(motion)i(\(Julian)g(y)m(ears\))g (\(1-3\))h(barycen)m(tric)g(p)s(osition)e(of)g(the)h(Earth)f(\(A)m(U\)) i(\(4-6\))g(not)427 3397 y(used)26 b(\(7\))h(not)f(used)f(\(8-10\))j (ab)m(v:)39 b(barycen)m(tric)27 b(Earth)f(v)m(elo)s(cit)m(y)j(in)c (units)h(of)g(c)g(\(11\))i(sqrt\(1-v)p Fg(\003)p Fl(v\))427 3510 y(where)i(v=mo)s(dulus\(ab)m(v\))g(\(12-20\))j(precession/n)m (utation)f(\(3,3\))g(matrix)262 3659 y Fn(rm)j(=)g(double)h (\(Returned\))427 3772 y Fl(Mean)31 b(RA)g(\(radians\).)262 3922 y Fn(dm)k(=)g(double)h(\(Returned\))427 4035 y Fl(Mean)31 b(Dec)h(\(radians\).)p 0 4281 V 0 4416 a Fi(palCaldj)259 b Fc(Gregorian)36 b(Calendar)h(to)h(Mo)s(di\014ed)h(Julian)f(Date)257 b Fi(palCaldj)0 4644 y Fn(Description:)47 b Fl(Mo)s(di\014ed)35 b(Julian)h(Date)i(to)f(Gregorian)g(Calendar)f(with)g(sp)s(ecial)g(b)s (eha)m(viour)g(for)g(2-digit)227 4757 y(y)m(ears)31 b(relating)h(to)f (1950)h(to)f(2049.)0 4952 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palCaldj)e(\()j(int)f(iy,)g(int)g(im,)f(int)h(id,)g (double)f Fg(\003)p Fe(djm,)h(int)g Fg(\003)p Fe(j)h(\);)0 5147 y Fn(Argumen)m(ts:)262 5317 y(iy)35 b(=)g(in)m(t)g(\(Giv)m(en\)) 427 5430 y Fl(Y)-8 b(ear)32 b(in)e(the)g(Gregorian)i(calendar)262 5580 y Fn(im)j(=)g(in)m(t)g(\(Giv)m(en\))427 5693 y Fl(Mon)m(th)c(in)f (the)h(Gergorian)g(calendar)p eop end %%Page: 6 8 TeXDict begin 6 7 bop 0 52 a Fl(6)2716 b Fh(SUN/267.1)63 b(|)d(palDa\014n)262 351 y Fn(id)35 b(=)g(in)m(t)g(\(Giv)m(en\))427 464 y Fl(Da)m(y)d(in)e(the)h(Gregorian)g(calendar)262 611 y Fn(djm)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 724 y Fl(Mo)s(di\014ed)30 b(Julian)g(Date)i(\(JD-2400000.5\))j(for)c(0) f(hrs)262 870 y Fn(j)35 b(=)g(status)g(\(Returned\))427 983 y Fl(0)c(=)f(OK.)g(See)h(iauCal2jd)f(for)g(other)h(v)-5 b(alues.)0 1209 y Fn(Notes:)336 1537 y Fg(\017)46 b Fl(Uses)31 b(iauCal2jd)336 1683 y Fg(\017)46 b Fl(Unlik)m(e)41 b(iauCal2jd)e(this) h(routine)f(treats)h(the)g(y)m(ears)g(0-100)i(as)d(referring)g(to)h (the)g(end)f(of)g(the)427 1796 y(20th)32 b(Cen)m(tury)e(and)g(b)s (eginning)g(of)h(the)g(21st)h(Cen)m(tury)-8 b(.)42 b(If)30 b(this)h(b)s(eha)m(viour)f(is)h(not)g(acceptable)427 1909 y(use)e(the)h(SOF)-10 b(A)29 b(routine)g(directly)h(or)g(palCldj.) 40 b(Acceptable)31 b(y)m(ears)f(are)g(00-49,)i(in)m(terpreted)d(as)427 2022 y(2000-2049,)35 b(50-99,)d Fe(")e(")h Fl(1950-1999,)j(all)d (others,)g(in)m(terpreted)g(literally)-8 b(.)336 2168 y Fg(\017)46 b Fl(Unlik)m(e)32 b(SLA)d(this)i(routine)f(will)h(w)m(ork) f(with)g(negativ)m(e)j(y)m(ears.)p 0 2407 3780 12 v 0 2541 a Fi(palDa\014n)441 b Fc(Sexagesimal)37 b(c)m(haracter)f(string)h (to)i(angle)439 b Fi(palDa\014n)0 2761 y Fn(Description:)47 b Fl(Extracts)35 b(an)g(angle)h(from)f(a)g(sexagesimal)j(string)d(with) f(degrees,)j(arcmin,)g(arcsec)f(\014elds)227 2874 y(using)30 b(space)h(or)f(comma)i(delimiters.)0 3062 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palDafin)e(\()j(const)e(char)h Fg(\003)p Fe(string,)f(int)h Fg(\003)p Fe(ipos,)g(double)f Fg(\003)p Fe(a,)i(int)e Fg(\003)p Fe(j)i(\);)0 3251 y Fn(Argumen)m(ts:)262 3415 y(string)35 b(=)g(const)h(c)m(har)f Fg(\003)h Fn(\(Giv)m(en\))427 3528 y Fl(String)30 b(con)m(taining)i(deg,)f(arcmin,)g(arcsec)g (\014elds)262 3674 y Fn(ip)s(os)36 b(=)f(in)m(t)f Fg(\003)i Fn(\(Giv)m(en)f(&)g(Returned\))427 3787 y Fl(P)m(osition)40 b(to)f(start)g(deco)s(ding)f Fe(")p Fl(string)p Fe(")p Fl(.)64 b(First)39 b(c)m(haracter)h(is)e(p)s(osition)g(1)h(for)f (compatibilit)m(y)427 3900 y(with)d(SLA.)g(After)h(calling)g(this)f (routine)h Fe(")p Fl(iptr)p Fe(")e Fl(will)h(b)s(e)g(p)s(ositioned)g (after)h(the)f(sexagesimal)427 4013 y(string.)262 4159 y Fn(a)g(=)g(double)g Fg(\003)h Fn(\(Returned\))427 4272 y Fl(Angle)31 b(in)f(radians.)262 4419 y Fn(j)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 4532 y Fl(status:)41 b(0)31 b(=)f(OK)g(+1)g(=)g(default,)h(A)g(unc)m(hanged)506 4653 y Fg(\017)46 b Fl(1)31 b(=)f(bad)g(degrees)h(\))506 4784 y Fg(\017)46 b Fl(2)31 b(=)f(bad)g(arcmin)m(utes)h(\))f(\(note)i(3\)) 506 4913 y Fg(\017)46 b Fl(3)31 b(=)f(bad)g(arcseconds)h(\))0 5139 y Fn(Notes:)336 5467 y Fg(\017)46 b Fl(The)26 b(\014rst)g(three)h Fe(")p Fl(\014elds)p Fe(")e Fl(in)h(STRING)g(are)h(degrees,)h(arcmin)m (utes,)g(arcseconds,)g(separated)f(b)m(y)427 5580 y(spaces)e(or)e (commas.)40 b(The)23 b(degrees)h(\014eld)g(ma)m(y)g(b)s(e)g(signed,)h (but)e(not)h(the)g(others.)39 b(The)24 b(deco)s(ding)427 5693 y(is)31 b(carried)f(out)h(b)m(y)f(the)h(palD\015tin)f(routine)h (and)e(is)i(free-format.)p eop end %%Page: 7 9 TeXDict begin 7 8 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palDe2h)2756 b Fl(7)336 351 y Fg(\017)46 b Fl(Successiv)m(e)25 b(\014elds)e(ma)m(y)h (b)s(e)f(absen)m(t,)j(defaulting)e(to)h(zero.)39 b(F)-8 b(or)25 b(zero)f(status,)i(the)e(only)f(com)m(bina-)427 464 y(tions)32 b(allo)m(w)m(ed)h(are)e(degrees)h(alone,)g(degrees)g (and)f(arcmin)m(utes,)h(and)e(all)i(three)g(\014elds)e(presen)m(t.)427 577 y(If)i(all)h(three)g(\014elds)e(are)i(omitted,)h(a)e(status)h(of)f (+1)h(is)f(returned)f(and)h(A)g(is)g(unc)m(hanged.)46 b(In)32 b(all)427 690 y(other)f(cases)g(A)g(is)f(c)m(hanged.)336 838 y Fg(\017)46 b Fl(Range)31 b(c)m(hec)m(king:)227 1031 y(The)j(degrees)h(\014eld)f(is)g(not)g(range)h(c)m(hec)m(k)m(ed.) 54 b(Ho)m(w)m(ev)m(er,)38 b(it)c(is)h(exp)s(ected)f(to)h(b)s(e)f(in)m (tegral)i(unless)d(the)227 1144 y(other)e(t)m(w)m(o)h(\014elds)d(are)i (absen)m(t.)227 1296 y(The)e(arcmin)m(utes)g(\014eld)g(is)g(exp)s (ected)g(to)h(b)s(e)f(0-59,)i(and)d(in)m(tegral)j(if)e(the)g (arcseconds)g(\014eld)g(is)g(presen)m(t.)227 1409 y(If)h(the)h (arcseconds)g(\014eld)e(is)i(absen)m(t,)g(the)g(arcmin)m(utes)f(is)h (exp)s(ected)g(to)g(b)s(e)e(0-59.9999...)227 1562 y(The)h(arcseconds)h (\014eld)f(is)g(exp)s(ected)h(to)g(b)s(e)f(0-59.9999...)336 1883 y Fg(\017)46 b Fl(Deco)s(ding)41 b(con)m(tin)m(ues)h(ev)m(en)f (when)e(a)i(c)m(hec)m(k)g(has)f(failed.)71 b(Under)40 b(these)g(circumstances)h(the)427 1996 y(\014eld)34 b(tak)m(es)h(the)f (supplied)e(v)-5 b(alue,)36 b(defaulting)e(to)g(zero,)i(and)d(the)h (result)g(A)g(is)f(computed)h(and)427 2109 y(returned.)336 2257 y Fg(\017)46 b Fl(F)-8 b(urther)31 b(\014elds)g(after)g(the)g (three)h(exp)s(ected)f(ones)g(are)h(not)f(treated)h(as)g(an)e(error.)43 b(The)30 b(p)s(oin)m(ter)427 2370 y(IPOS)d(is)g(left)i(in)e(the)h (correct)h(state)g(for)e(further)f(deco)s(ding)i(with)f(the)h(presen)m (t)g(routine)f(or)h(with)427 2483 y(palD\015tin)j(etc.)42 b(See)30 b(the)h(example,)g(ab)s(o)m(v)m(e.)336 2631 y Fg(\017)46 b Fl(If)27 b(STRING)g(con)m(tains)i(hours,)e(min)m(utes,)h (seconds)g(instead)g(of)f(degrees)h(etc,)i(or)d(if)h(the)f(required)427 2744 y(units)41 b(are)g(turns)f(\(or)h(da)m(ys\))g(instead)g(of)g (radians,)j(the)d(result)g(A)g(should)f(b)s(e)g(m)m(ultiplied)h(as)427 2857 y(follo)m(ws:)227 3050 y(for)30 b(to)i(obtain)e(m)m(ultiply)h (STRING)f(A)g(in)g(A)h(b)m(y)227 3202 y(d)c Fe(')g(")f Fl(radians)h(1)g(=)g(1.0)h(d)f Fe(')g(")f Fl(turns)g(1/2pi)i(=)f (0.1591549430918)q(95)q(335)q(8)33 b(h)27 b(m)g(s)g(radians)f(15)i(=)f (15.0)227 3315 y(h)j(m)g(s)g(da)m(ys)h(15/2pi)h(=)e(2.38732414637843)q (00)q(36)q(5)-2 3508 y Fn(Example)n(:)227 3671 y Fl(argumen)m(t)h(b)s (efore)f(after)227 3824 y(STRING)23 b Fe(')p Fl(-57)i(17)f(44.806)j(12) d(34)h(56.7)p Fe(')g Fl(unc)m(hanged)e(IPTR)g(1)h(16)g(\(p)s(oin)m(ts)g (to)h(12...\))40 b(A)24 b(?)f(-1.00000D0)227 3937 y(J)30 b(?)h(0)p 0 4180 3780 12 v 0 4315 a Fi(palDe2h)233 b Fc(Equatorial)35 b(to)j(horizon)f(co)s(ordinates:)49 b(HA,Dec)39 b(to)1764 4428 y(Az,E)3296 4315 y Fi(palDe2h)0 4653 y Fn(Description:)47 b Fl(Con)m(v)m(ert)31 b(equatorial)h(to)f (horizon)f(co)s(ordinates.)0 4845 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDe2h\()46 b(double)g(ha,)h(double)f(dec,)g(double)h(phi,)f (double)g Fg(\003)i Fe(az,)f(double)f Fg(\003)j Fe(el)227 4958 y(\);)0 5150 y Fn(Argumen)m(ts:)262 5319 y(ha)35 b(=)g(double)g Fg(\003)h Fn(\(Giv)m(en\))427 5432 y Fl(Hour)30 b(angle)i(\(radians\))262 5580 y Fn(dec)j(=)h(double)f Fg(\003)g Fn(\(Giv)m(en\))427 5693 y Fl(Declination)e(\(radians\))p eop end %%Page: 8 10 TeXDict begin 8 9 bop 0 52 a Fl(8)2670 b Fh(SUN/267.1)63 b(|)d(palDeuler)262 351 y Fn(phi)35 b(=)g(double)h(\(Giv)m(en\))427 464 y Fl(Observ)-5 b(atory)30 b(latitude)i(\(radians\))262 617 y Fn(az)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 730 y Fl(Azim)m(uth)c(\(radians\))262 882 y Fn(el)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 995 y Fl(Elev)-5 b(ation)32 b(\(radians\))0 1239 y Fn(Notes:)336 1579 y Fg(\017)46 b Fl(All)31 b(the)g(argumen)m(ts)g(are)f(angles)i(in)e(radians.)336 1732 y Fg(\017)46 b Fl(Azim)m(uth)29 b(is)g(returned)e(in)i(the)g (range)g(0-2pi;)h(north)e(is)h(zero,)h(and)e(east)h(is)g(+pi/2.)40 b(Elev)-5 b(ation)30 b(is)427 1845 y(returned)f(in)i(the)f(range)h (+/-pi/2.)336 1997 y Fg(\017)46 b Fl(The)32 b(latitude)h(m)m(ust)g(b)s (e)e(geo)s(detic.)49 b(In)31 b(critical)k(applications,)f(corrections)g (for)e(p)s(olar)g(motion)427 2110 y(should)e(b)s(e)f(applied.)336 2263 y Fg(\017)46 b Fl(In)36 b(some)h(applications)h(it)g(will)f(b)s(e) f(imp)s(ortan)m(t)h(to)g(sp)s(ecify)g(the)g(correct)h(t)m(yp)s(e)f(of)g (hour)e(angle)427 2376 y(and)f(declination)i(in)e(order)g(to)h(pro)s (duce)e(the)i(required)e(t)m(yp)s(e)i(of)g(azim)m(uth)g(and)e(elev)-5 b(ation.)55 b(In)427 2488 y(particular,)27 b(it)e(ma)m(y)g(b)s(e)f(imp) s(ortan)m(t)h(to)g(distinguish)f(b)s(et)m(w)m(een)i(elev)-5 b(ation)26 b(as)f(a\013ected)h(b)m(y)f(refrac-)427 2601 y(tion,)30 b(whic)m(h)f(w)m(ould)g(require)f(the)i Fe(")p Fl(observ)m(ed)p Fe(")e Fl(HA,Dec,)j(and)e(the)g(elev)-5 b(ation)31 b(in)e(v)-5 b(acuo,)30 b(whic)m(h)427 2714 y(w)m(ould)j(require)f(the)h Fe(")p Fl(top)s(o)s(cen)m(tric)p Fe(")g Fl(HA,Dec.)49 b(If)32 b(the)h(e\013ects)h(of)f(diurnal)f(ab)s (erration)g(can)h(b)s(e)427 2827 y(neglected,)g(the)d Fe(")p Fl(apparen)m(t)p Fe(")g Fl(HA,Dec)i(ma)m(y)f(b)s(e)f(used)g (instead)g(of)h(the)f(top)s(o)s(cen)m(tric)i(HA,Dec.)336 2980 y Fg(\017)46 b Fl(No)31 b(range)g(c)m(hec)m(king)h(of)f(argumen)m (ts)f(is)h(carried)f(out.)336 3132 y Fg(\017)46 b Fl(In)28 b(applications)h(whic)m(h)g(in)m(v)m(olv)m(e)h(man)m(y)f(suc)m(h)f (calculations,)j(rather)d(than)g(calling)i(the)e(presen)m(t)427 3245 y(routine)j(it)g(will)g(b)s(e)f(more)g(e\016cien)m(t)i(to)g(use)e (inline)g(co)s(de,)h(ha)m(ving)h(previously)e(computed)g(\014xed)427 3358 y(terms)g(suc)m(h)f(as)h(sine)g(and)f(cosine)h(of)g(latitude,)h (and)e(\(for)h(trac)m(king)h(a)f(star\))g(sine)g(and)f(cosine)h(of)427 3471 y(declination.)p 0 3724 3780 12 v 0 3859 a Fi(palDeuler)157 b Fc(F)-10 b(orm)37 b(a)g(rotation)d(matrix)h(from)g(the)i(Euler)g (angles)154 b Fi(palDeuler)0 4094 y Fn(Description:)47 b Fl(A)c(rotation)h(is)f(p)s(ositiv)m(e)h(when)e(the)h(reference)h (frame)f(rotates)h(an)m(ticlo)s(c)m(kwise)i(as)d(seen)227 4207 y(lo)s(oking)31 b(to)m(w)m(ards)h(the)e(origin)h(from)f(the)g(p)s (ositiv)m(e)i(region)f(of)f(the)h(sp)s(eci\014ed)f(axis.)227 4364 y(The)i(c)m(haracters)i(of)f(ORDER)f(de\014ne)f(whic)m(h)i(axes)g (the)f(three)h(successiv)m(e)g(rotations)h(are)f(ab)s(out.)46 b(A)227 4476 y(t)m(ypical)38 b(v)-5 b(alue)36 b(is)g Fe(')p Fl(ZXZ)p Fe(')p Fl(,)f(indicating)i(that)f(RMA)-8 b(T)37 b(is)f(to)g(b)s(ecome)h(the)f(direction)g(cosine)h(matrix)227 4589 y(corresp)s(onding)e(to)h(rotations)g(of)g(the)f(reference)h (frame)g(through)e(PHI)i(radians)e(ab)s(out)i(the)f(old)h(Z-)227 4702 y(axis,)c(follo)m(w)m(ed)g(b)m(y)f(THET)-8 b(A)31 b(radians)f(ab)s(out)h(the)g(resulting)g(X-axis,)h(then)e(PSI)g (radians)h(ab)s(out)f(the)227 4815 y(resulting)h(Z-axis.)227 4972 y(The)20 b(axis)h(names)g(can)g(b)s(e)f(an)m(y)h(of)f(the)h(follo) m(wing,)j(in)d(an)m(y)f(order)h(or)f(com)m(bination:)37 b(X,)21 b(Y,)g(Z,)f(upp)s(ercase)227 5085 y(or)30 b(lo)m(w)m(ercase,)i (1,)f(2,)f(3.)41 b(Normal)30 b(axis)g(lab)s(elling/n)m(um)m(b)s(ering)g (con)m(v)m(en)m(tions)h(apply;)f(the)g(xyz)g(\(=123\))227 5198 y(triad)44 b(is)g(righ)m(t-handed.)80 b(Th)m(us,)46 b(the)d Fe(')p Fl(ZXZ)p Fe(')g Fl(example)h(giv)m(en)g(ab)s(o)m(v)m(e)h (could)f(b)s(e)f(written)g Fe(')p Fl(zxz)p Fe(')227 5311 y Fl(or)i Fe(')p Fl(313)p Fe(')g Fl(\(or)h(ev)m(en)f Fe(')p Fl(ZxZ)p Fe(')e Fl(or)i Fe(')p Fl(3xZ)p Fe(')p Fl(\).)g(ORDER)f(is)h(terminated)g(b)m(y)g(length)g(or)g(b)m(y)f(the)h (\014rst)227 5423 y(unrecognized)31 b(c)m(haracter.)227 5580 y(F)-8 b(ew)m(er)40 b(than)f(three)g(rotations)h(are)f (acceptable,)k(in)38 b(whic)m(h)h(case)h(the)f(later)g(angle)h(argumen) m(ts)f(are)227 5693 y(ignored.)i(If)30 b(all)h(rotations)h(are)f(zero,) g(the)g(iden)m(tit)m(y)g(matrix)g(is)g(pro)s(duced.)p eop end %%Page: 9 11 TeXDict begin 9 10 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palD\015tin)2730 b Fl(9)0 351 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palDeuler)e(\()j(const)e(char)h Fg(\003)p Fe(order,)f(double)g(phi,)h (double)f(theta,)g(double)227 464 y(psi,)h(double)f(rmat[3][3])f(\);)0 657 y Fn(Argumen)m(ts:)262 826 y(order)35 b(=)h(const)f(c)m(har[])h (\(Giv)m(en\))427 938 y Fl(Sp)s(eci\014es)30 b(ab)s(out)g(whic)m(h)g (axes)h(the)g(rotation)g(o)s(ccurs)262 1087 y Fn(phi)k(=)g(double)h (\(Giv)m(en\))427 1200 y Fl(1st)31 b(rotation)h(\(radians\))262 1349 y Fn(theta)i(=)h(double)h(\(Giv)m(en\))427 1462 y Fl(2nd)30 b(rotation)i(\(radians\))262 1610 y Fn(psi)j(=)g(double)h (\(Giv)m(en\))427 1723 y Fl(3rd)30 b(rotation)i(\(radians\))262 1872 y Fn(rmat)j(=)g(double[3][3])h(\(Giv)m(en)f(&)g(Returned\))427 1985 y Fl(Rotation)d(matrix)p 0 2229 3780 12 v 0 2363 a Fi(palD\015tin)158 b Fc(Con)m(v)m(ert)36 b(free-format)g(input)i(in)m (to)f(double)i(precision)1545 2476 y(\015oating)e(p)s(oin)m(t)3260 2363 y Fi(palD\015tin)0 2701 y Fn(Description:)47 b Fl(Extracts)31 b(a)f(n)m(um)m(b)s(er)g(from)f(an)i(input)e(string)h(starting)i(at)f (the)f(sp)s(eci\014ed)g(index.)0 2894 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palDfltin\()e(const)h(char)h Fg(\003)h Fe(string,)e(int)h Fg(\003)p Fe(nstrt,)f(double)g Fg(\003)p Fe(dreslt,)h(int)227 3007 y Fg(\003)p Fe(jflag)g(\);)0 3200 y Fn(Argumen)m(ts:)262 3368 y(string)35 b(=)g(const)h(c)m(har)f Fg(\003)h Fn(\(Giv)m(en\))427 3481 y Fl(String)30 b(con)m(taining)i(n)m (um)m(b)s(er)d(to)i(b)s(e)f(deco)s(ded.)262 3630 y Fn(nstrt)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Giv)m(en)g(and)g(Returned\))427 3743 y Fl(Character)40 b(n)m(um)m(b)s(er)e(indicating)i(where)e(deco)s (ding)h(should)g(start.)67 b(On)38 b(output)h(its)h(v)-5 b(alue)39 b(is)427 3856 y(up)s(dated)c(to)h(b)s(e)f(the)h(lo)s(cation)i (of)e(the)g(p)s(ossible)f(next)h(v)-5 b(alue.)57 b(F)-8 b(or)37 b(compatibilit)m(y)h(with)d(SLA)427 3969 y(the)c(\014rst)e(c)m (haracter)j(is)f(index)f(1.)262 4117 y Fn(dreslt)35 b(=)g(double)g Fg(\003)h Fn(\(Returned\))427 4230 y Fl(Result.)41 b(Not)32 b(up)s(dated)d(when)g(j\015ag=1.)262 4379 y Fn(j\015ag)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 4492 y Fl(status:)41 b(-1)31 b(=)f(-OK,)h(0)f(=)g(+OK,)g(1)h(=)f(n)m(ull,)g(2)h(=)f(error)0 4725 y Fn(Notes:)336 5057 y Fg(\017)46 b Fl(Uses)33 b(the)g(strto)s (d\(\))g(system)g(call)h(to)g(do)f(the)g(parsing.)47 b(This)32 b(ma)m(y)i(lead)f(to)h(subtle)e(di\013erences)427 5170 y(when)e(compared)g(to)h(the)g(SLA/F)f(parsing.)336 5319 y Fg(\017)46 b Fl(All)31 b Fe(")p Fl(D)p Fe(")f Fl(c)m(haracters)i(are)f(con)m(v)m(erted)h(to)f Fe(")p Fl(E)p Fe(")f Fl(to)h(handle)f(fortran)g(exp)s(onen)m(ts.)336 5467 y Fg(\017)46 b Fl(Commas)36 b(are)f(recognized)i(as)f(a)g(sp)s (ecial)g(case)g(and)f(are)h(skipp)s(ed)e(if)h(one)h(happ)s(ens)d(to)j (b)s(e)f(the)427 5580 y(next)30 b(c)m(haracter)g(when)f(up)s(dating)f (nstrt.)40 b(Additionally)30 b(the)f(output)g(nstrt)g(p)s(osition)g (will)h(skip)427 5693 y(past)h(an)m(y)f(trailing)i(space.)p eop end %%Page: 10 12 TeXDict begin 10 11 bop 0 52 a Fl(10)2681 b Fh(SUN/267.1)63 b(|)d(palDh2e)336 351 y Fg(\017)46 b Fl(If)30 b(no)g(n)m(um)m(b)s(er)g (can)g(b)s(e)g(found)f(\015ag)i(will)f(b)s(e)g(set)h(to)g(1.)336 489 y Fg(\017)46 b Fl(If)27 b(the)g(n)m(um)m(b)s(er)e(o)m(v)m(er\015o)m (ws)j(or)f(under\015o)m(ws)e(j\015ag)i(will)g(b)s(e)f(set)i(to)f(2.)40 b(F)-8 b(or)27 b(o)m(v)m(er\015o)m(w)i(the)e(returned)427 602 y(result)k(will)f(ha)m(v)m(e)i(the)e(v)-5 b(alue)31 b(HUGE)p Fe(_)p Fl(V)-10 b(AL,)31 b(for)f(under\015o)m(w)f(it)i(will)g (ha)m(v)m(e)h(the)e(v)-5 b(alue)31 b(0.0.)336 740 y Fg(\017)46 b Fl(F)-8 b(or)31 b(compatiblit)m(y)i(with)d(SLA/F)g(-0)h(will)g(b)s(e) f(returned)f(as)i Fe(")p Fl(0)p Fe(")f Fl(with)g(j\015ag)g(==)g(-1.)336 877 y Fg(\017)46 b Fl(Unlik)m(e)d(slaD\015tin)g(a)g(standalone)f Fe(")p Fl(E)p Fe(")g Fl(will)g(return)f(status)i(1)f(\(could)h(not)f (\014nd)f(a)h(n)m(um)m(b)s(er\))427 990 y(rather)31 b(than)f(2)g(\(bad) h(n)m(um)m(b)s(er\).)p 0 1199 3780 12 v 0 1333 a Fi(palDh2e)294 b Fc(Horizon)37 b(to)h(equatorial)d(co)s(ordinates:)49 b(Az,El)38 b(to)1689 1446 y(HA,Dec)3296 1333 y Fi(palDh2e)0 1636 y Fn(Description:)47 b Fl(Con)m(v)m(ert)31 b(horizon)f(to)h (equatorial)h(co)s(ordinates.)0 1815 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDh2e\()46 b(double)g(az,)h(double)f(el,)h(double)f(phi,)g (double)h Fg(\003)h Fe(ha,)f(double)f Fg(\003)i Fe(dec)227 1928 y(\);)0 2107 y Fn(Argumen)m(ts:)262 2262 y(az)35 b(=)g(double)h(\(Giv)m(en\))427 2375 y Fl(Azim)m(uth)31 b(\(radians\))262 2513 y Fn(el)k(=)g(double)g(\(Giv)m(en\))427 2626 y Fl(Elev)-5 b(ation)32 b(\(radians\))262 2764 y Fn(phi)j(=)g(double)h(\(Giv)m(en\))427 2877 y Fl(Observ)-5 b(atory)30 b(latitude)i(\(radians\))262 3014 y Fn(ha)j(=)g(double)g Fg(\003)h Fn(\(Returned\))427 3127 y Fl(Hour)30 b(angle)i(\(radians\)) 262 3265 y Fn(dec)j(=)h(double)f Fg(\003)g Fn(\(Returned\))427 3378 y Fl(Declination)e(\(radians\))0 3590 y Fn(Notes:)336 3909 y Fg(\017)46 b Fl(All)31 b(the)g(argumen)m(ts)g(are)f(angles)i(in) e(radians.)336 4047 y Fg(\017)46 b Fl(The)30 b(sign)h(con)m(v)m(en)m (tion)h(for)e(azim)m(uth)h(is)g(north)e(zero,)j(east)f(+pi/2.)336 4185 y Fg(\017)46 b Fl(HA)31 b(is)f(returned)g(in)g(the)g(range)h (+/-pi.)41 b(Declination)32 b(is)f(returned)e(in)h(the)h(range)f (+/-pi/2.)336 4323 y Fg(\017)46 b Fl(The)33 b(latitude)i(is)e(\(in)h (principle\))f(geo)s(detic.)52 b(In)33 b(critical)i(applications,)h (corrections)e(for)g(p)s(olar)427 4436 y(motion)d(should)f(b)s(e)f (applied.)336 4573 y Fg(\017)46 b Fl(In)34 b(some)g(applications)h(it)g (will)f(b)s(e)g(imp)s(ortan)m(t)g(to)h(sp)s(ecify)f(the)g(correct)h(t)m (yp)s(e)f(of)h(elev)-5 b(ation)36 b(in)427 4686 y(order)g(to)h(pro)s (duce)e(the)h(required)g(t)m(yp)s(e)g(of)g(HA,Dec.)60 b(In)36 b(particular,)i(it)f(ma)m(y)g(b)s(e)e(imp)s(ortan)m(t)427 4799 y(to)40 b(distinguish)e(b)s(et)m(w)m(een)h(the)g(elev)-5 b(ation)41 b(as)e(a\013ected)h(b)m(y)f(refraction,)j(whic)m(h)c(will)h (yield)g(the)427 4912 y Fe(")p Fl(observ)m(ed)p Fe(")d Fl(HA,Dec,)j(and)c(the)h(elev)-5 b(ation)38 b(in)e(v)-5 b(acuo,)38 b(whic)m(h)d(will)i(yield)f(the)g Fe(")p Fl(top)s(o)s(cen)m (tric)p Fe(")427 5025 y Fl(HA,Dec.)41 b(If)24 b(the)g(e\013ects)i(of)e (diurnal)f(ab)s(erration)h(can)h(b)s(e)f(neglected,)j(the)d(top)s(o)s (cen)m(tric)i(HA,Dec)427 5138 y(ma)m(y)31 b(b)s(e)f(used)g(as)g(an)g (appro)m(ximation)i(to)f(the)f Fe(")p Fl(apparen)m(t)p Fe(")g Fl(HA,Dec.)336 5276 y Fg(\017)46 b Fl(No)31 b(range)g(c)m(hec)m (king)h(of)f(argumen)m(ts)f(is)h(done.)336 5413 y Fg(\017)46 b Fl(In)28 b(applications)h(whic)m(h)g(in)m(v)m(olv)m(e)h(man)m(y)f (suc)m(h)f(calculations,)j(rather)d(than)g(calling)i(the)e(presen)m(t) 427 5526 y(routine)j(it)g(will)g(b)s(e)f(more)g(e\016cien)m(t)i(to)g (use)e(inline)g(co)s(de,)h(ha)m(ving)h(previously)e(computed)g(\014xed) 427 5639 y(terms)h(suc)m(h)f(as)g(sine)h(and)e(cosine)i(of)g(latitude.) p eop end %%Page: 11 13 TeXDict begin 11 12 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palDjcal)2709 b Fl(11)p 0 351 3780 12 v 0 486 a Fi(palDjcal)268 b Fc(Mo)s(di\014ed)39 b(Julian)f(Date)g(to)g(Gregorian)e(Calendar)265 b Fi(palDjcal)0 662 y Fn(Description:)47 b Fl(Mo)s(di\014ed)29 b(Julian)g(Date)i(to)f (Gregorian)h(Calendar,)f(expressed)f(in)g(a)h(form)f(con)m(v)m(enien)m (t)j(for)227 775 y(formatting)i(messages)h(\(namely)f(rounded)d(to)j(a) g(sp)s(eci\014ed)e(precision,)j(and)d(with)h(the)h(\014elds)e(stored) 227 888 y(in)e(a)h(single)g(arra)m(y\))0 1063 y Fn(In)m(v)m(o)s (cation:)130 b Fe(void)47 b(palDjcal)e(\()j(int)f(ndp,)f(double)g(djm,) h(int)g(iymdf[4],)e(int)i Fg(\003)p Fe(j)h(\);)0 1238 y Fn(Argumen)m(ts:)262 1390 y(ndp)35 b(=)g(in)m(t)g(\(Giv)m(en\))427 1503 y Fl(Num)m(b)s(er)30 b(of)g(decimal)h(places)h(of)e(da)m(ys)h(in)f (fraction.)262 1636 y Fn(djm)35 b(=)g(double)h(\(Giv)m(en\))427 1749 y Fl(Mo)s(di\014ed)30 b(Julian)g(Date)i(\(JD-2400000.5\))262 1883 y Fn(iymdf[4])k(=)f(in)m(t[])g(\(Returned\))427 1996 y Fl(Y)-8 b(ear,)32 b(mon)m(th,)f(da)m(y)-8 b(,)31 b(fraction)g(in)f(Gregorian)h(calendar.)262 2130 y Fn(j)k(=)g(status)g (\(Returned\))427 2243 y Fl(0)c(=)f(OK.)g(See)h(iauJd2cal)g(for)f (other)h(v)-5 b(alues.)0 2449 y Fn(Notes:)336 2764 y Fg(\017)46 b Fl(Uses)31 b(iauJd2cal)p 0 2959 V 0 3093 a Fi(palDmat)256 b Fc(Matrix)37 b(in)m(v)m(ersion)g(&)i(solution)e(of)h (sim)m(ultaneous)1647 3206 y(equations)3269 3093 y Fi(palDmat)0 3383 y Fn(Description:)47 b Fl(Matrix)33 b(in)m(v)m(ersion)g(&)g (solution)g(of)g(sim)m(ultaneous)g(equations)g(F)-8 b(or)33 b(the)g(set)g(of)g(n)f(sim)m(ulta-)227 3495 y(neous)39 b(equations)h(in)e(n)h(unkno)m(wns:)56 b(A.Y)39 b(=)g(X)g(this)g (routine)g(calculates)i(the)e(in)m(v)m(erse)h(of)f(A,)g(the)227 3608 y(determinan)m(t)31 b(of)g(matrix)f(A)h(and)f(the)g(v)m(ector)i (of)f(N)f(unkno)m(wns.)0 3784 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palDmat\()e(int)i(n,)g(double)g Fg(\003)p Fe(a,)g(double)f Fg(\003)p Fe(y,)i(double)e Fg(\003)p Fe(d,)i(int)f Fg(\003)p Fe(jf,)g(int)g Fg(\003)p Fe(iw)227 3897 y(\);)0 4072 y Fn(Argumen)m(ts:)262 4223 y(n)35 b(=)g(in)m(t)g(\(Giv)m(en\))427 4336 y Fl(Num)m(b)s(er)30 b(of)g(sim)m(ultaneous)h(equations)g(and)f(n)m(um)m(b)s(er)f(of)h (unkno)m(wns.)262 4470 y Fn(a)35 b(=)g(double[])g(\(Giv)m(en)g(&)h (Returned\))427 4583 y Fl(A)e(non-singular)e(NxN)i(matrix)f(\(implemen) m(ted)h(as)g(a)f(con)m(tiguous)i(blo)s(c)m(k)e(of)h(memory\).)49 b(After)427 4696 y(calling)32 b(this)e(routine)h Fe(")p Fl(a)p Fe(")f Fl(con)m(tains)i(the)e(in)m(v)m(erse)h(of)g(the)g (matrix.)262 4830 y Fn(y)k(=)g(double[])h(\(Giv)m(en)f(&)g(Returned\)) 427 4942 y Fl(The)30 b(v)m(ector)i(of)f(N)f(unkno)m(wns.)39 b(On)30 b(exit)h(this)f(v)m(ector)i(con)m(tains)g(the)e(N)h(solutions.) 262 5076 y Fn(d)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5189 y Fl(The)30 b(determinan)m(t.)262 5323 y Fn(jf)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 5436 y Fl(The)d (singularit)m(y)g(\015ag.)45 b(If)32 b(the)g(matrix)g(is)f (non-singular,)h(jf=0)g(is)f(returned.)44 b(If)31 b(the)h(matrix)g(is) 427 5549 y(singular,)d(jf=-1)f(&)f(d=0.0)h(are)h(returned.)38 b(In)28 b(the)g(latter)h(case,)h(the)e(con)m(ten)m(ts)h(of)f(arra)m(y)h Fe(")p Fl(a)p Fe(")f Fl(on)427 5662 y(return)i(are)g(unde\014ned.)p eop end %%Page: 12 14 TeXDict begin 12 13 bop 0 52 a Fl(12)2746 b Fh(SUN/267.1)63 b(|)e(palDtt)0 351 y Fn(Notes:)336 671 y Fg(\017)46 b Fl(Implemen)m(ted)31 b(using)f(Gaussian)g(elimination)i(with)e(partial) h(piv)m(oting.)336 809 y Fg(\017)46 b Fl(Optimized)32 b(for)g(sp)s(eed)g(rather)g(than)f(accuracy)j(with)e(errors)f(1)i(to)f (4)h(times)g(those)f(of)h(routines)427 922 y(optimized)e(for)g (accuracy)-8 b(.)p 0 1132 3780 12 v 0 1267 a Fi(palDs2tp)410 b Fc(Spherical)37 b(to)h(tangen)m(t)f(plane)h(pro)7 b(jection)407 b Fi(palDs2tp)0 1459 y Fn(Description:)47 b Fl(Pro)5 b(jection)30 b(of)f(spherical)g(co)s(ordinates)h(on)m(to)g(tangen)m(t)h (plane:)40 b Fe(")p Fl(gnomonic)p Fe(")29 b Fl(pro)5 b(jection)30 b(-)227 1572 y Fe(")p Fl(standard)g(co)s(ordinates)p Fe(")0 1751 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDs2tp\()45 b(double)i(ra,)f(double)h(dec,)f(double)g(raz,)h(double)f(decz,)g (double)g Fg(\003)p Fe(xi,)227 1864 y(double)g Fg(\003)p Fe(eta,)h(int)g Fg(\003)p Fe(j)h(\);)0 2044 y Fn(Argumen)m(ts:)262 2200 y(ra)35 b(=)g(double)g(\(Giv)m(en\))427 2313 y Fl(RA)c(spherical)f (co)s(ordinate)h(of)g(p)s(oin)m(t)f(to)h(b)s(e)f(pro)5 b(jected)31 b(\(radians\))262 2451 y Fn(dec)k(=)h(double)f(\(Giv)m (en\))427 2564 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(p)s(oin)m(t) h(to)g(b)s(e)e(pro)5 b(jected)31 b(\(radians\))262 2702 y Fn(raz)k(=)g(double)h(\(Giv)m(en\))427 2815 y Fl(RA)31 b(spherical)f(co)s(ordinate)h(of)g(tangen)m(t)h(p)s(oin)m(t)e (\(radians\))262 2954 y Fn(decz)36 b(=)f(double)g(\(Giv)m(en\))427 3067 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(tangen)m(t)i(p)s(oin)m (t)e(\(radians\))262 3205 y Fn(xi)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3318 y Fl(First)c(rectangular)g(co)s(ordinate)h(on) e(tangen)m(t)i(plane)e(\(radians\))262 3456 y Fn(eta)k(=)i(double)f Fg(\003)g Fn(\(Returned\))427 3569 y Fl(Second)30 b(rectangular)i(co)s (ordinate)f(on)f(tangen)m(t)i(plane)e(\(radians\))262 3707 y Fn(j)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 3820 y Fl(status:)51 b(0)35 b(=)g(OK,)g(star)g(on)g(tangen)m(t)i(plane) e(1)h(=)f(error,)h(star)f(to)s(o)h(far)f(from)g(axis)g(2)h(=)f(error,) 427 3933 y(an)m(tistar)d(on)e(tangen)m(t)i(plane)e(3)h(=)f(error,)g(an) m(tistar)i(to)s(o)f(far)f(from)g(axis)p 0 4143 V 0 4278 a Fi(palDtt)580 b Fc(Return)38 b(o\013set)g(b)s(et)m(w)m(een)g(UTC)g (and)h(TT)577 b Fi(palDtt)0 4470 y Fn(Description:)47 b Fl(Incremen)m(t)37 b(to)h(b)s(e)f(applied)g(to)h(Co)s(ordinated)f (Univ)m(ersal)h(Time)f(UTC)g(to)h(giv)m(e)h(In)m(terna-)227 4583 y(tional)32 b(A)m(tomic)g(Time)e(\(T)-8 b(AI\).)0 4763 y Fn(In)m(v)m(o)s(cation:)130 b Fe(dat)47 b(=)h(palDat\()d(double) h(utc)h(\);)0 4942 y Fn(Argumen)m(ts:)262 5098 y(utc)35 b(=)g(double)h(\(Giv)m(en\))427 5211 y Fl(UTC)30 b(date)h(as)g(a)f(mo)s (di\014ed)g(JD)g(\(JD-2400000.5\))0 5391 y Fn(Returned)35 b(V)-9 b(alue:)262 5547 y(dat)35 b(=)g(double)427 5660 y Fl(T)-8 b(AI-UTC)30 b(in)h(seconds)p eop end %%Page: 13 15 TeXDict begin 13 14 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palDmo)s(on)2627 b Fl(13)0 351 y Fn(Notes:)336 701 y Fg(\017)46 b Fl(This)34 b(routine)g(con)m(v)m(erts)i(the)f(MJD)g(argumen)m(t)f(to)h(calendar)g (date)g(b)s(efore)f(calling)i(the)f(SOF)-10 b(A)427 814 y(iauDat)32 b(function.)336 971 y Fg(\017)46 b Fl(This)39 b(routine)g(matc)m(hes)i(the)e(slaDat)i(in)m(terface)g(whic)m(h)e (di\013ers)g(from)g(the)h(iauDat)h(in)m(terface.)427 1084 y(Consider)30 b(co)s(ding)g(directly)h(to)g(the)g(SOF)-10 b(A)30 b(in)m(terface.)336 1242 y Fg(\017)46 b Fl(See)26 b(iauDat)h(for)e(a)g(description)h(of)f(error)g(conditions)h(when)e (calling)j(this)e(function)g(with)g(a)h(time)427 1354 y(outside)31 b(of)f(the)h(UTC)f(range.)336 1512 y Fg(\017)46 b Fl(The)27 b(status)h(argumen)m(t)f(from)g(iauDat)i(is)e(ignored.)40 b(This)26 b(is)h(reasonable)i(since)e(the)h(error)e(co)s(des)427 1625 y(are)31 b(mainly)g(related)g(to)g(incorrect)g(calendar)g(dates)g (when)e(calculating)k(the)e(JD)f(in)m(ternally)-8 b(.)p 0 1890 3780 12 v 0 2025 a Fi(palDmo)t(on)338 b Fc(Appro)m(ximate)36 b(geo)s(cen)m(tric)h(p)s(osition)g(and)1360 2138 y(v)m(elo)s(cit)m(y)f (of)j(the)f(Mo)s(on)3174 2025 y Fi(palDmo)t(on)0 2385 y Fn(Description:)47 b Fl(Calculate)39 b(the)e(appro)m(ximate)i(geo)s (cen)m(tric)h(p)s(osition)e(of)f(the)h(Mo)s(on)g(using)f(a)h(full)f (imple-)227 2498 y(men)m(tation)32 b(of)f(the)f(algorithm)i(published)c (b)m(y)i(Meeus)h(\(l)p Fe(')p Fl(Astronomie,)h(June)d(1984,)k(p348\).)0 2708 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palDmoon\()e(double)h (date,)h(double)f(pv[6])g(\);)0 2918 y Fn(Argumen)m(ts:)262 3104 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 3217 y Fl(TDB)c(as)g(a)f(Mo)s(di\014ed)g(Julian)g(Date)i(\(JD-2400000.5\))262 3374 y Fn(p)m(v)j(=)g(double)h([6])f(\(Returned\))427 3487 y Fl(Mo)s(on)c(x,y)-8 b(,z,xdot,ydot,zdot,)34 b(mean)c(equator)h (and)f(equino)m(x)h(of)f(date)h(\(A)m(U,)h(A)m(U/s\))0 3746 y Fn(Notes:)336 4096 y Fg(\017)46 b Fl(Meeus)30 b(quotes)f(accuracies)i(of)e(10)h(arcsec)g(in)f(longitude,)h(3)g (arcsec)g(in)f(latitude)h(and)e(0.2)i(arcsec)427 4208 y(in)24 b(HP)g(\(equiv)-5 b(alen)m(t)25 b(to)g(ab)s(out)f(20)h(km)e(in) h(distance\).)39 b(Comparison)24 b(with)f(JPL)h(DE200)h(o)m(v)m(er)g (the)427 4321 y(in)m(terv)-5 b(al)32 b(1960-2025)j(giv)m(es)e(RMS)e (errors)f(of)h(3.7)h(arcsec)h(and)d(83)i(mas/hour)f(in)f(longitude,)i (2.3)427 4434 y(arcsec)f(and)e(48)h(mas/hour)f(in)g(latitude,)i(11)g (km)e(and)g(81)h(mm/s)f(in)g(distance.)42 b(The)29 b(maxim)m(um)427 4547 y(errors)22 b(o)m(v)m(er)i(the)e(same)h(in)m(terv)-5 b(al)24 b(are)f(18)g(arcsec)g(and)f(0.50)i(arcsec/hour)f(in)f (longitude,)j(11)e(arcsec)427 4660 y(and)30 b(0.24)i(arcsec/hour)f(in)f (latitude,)i(40)f(km)f(and)g(0.29)i(m/s)e(in)g(distance.)336 4817 y Fg(\017)46 b Fl(The)d(original)i(algorithm)f(is)g(expressed)f (in)g(terms)g(of)h(the)g(obsolete)h(timescale)g(Ephemeris)427 4930 y(Time.)71 b(Either)40 b(TDB)h(or)f(TT)g(can)g(b)s(e)g(used,)i (but)e(not)h(UT)f(without)g(incurring)g(signi\014can)m(t)427 5043 y(errors)30 b(\(30)i(arcsec)f(at)g(the)g(presen)m(t)f(time\))i (due)d(to)i(the)g(Mo)s(on)p Fe(')p Fl(s)f(0.5)i(arcsec/sec)g(mo)m(v)m (emen)m(t.)336 5201 y Fg(\017)46 b Fl(The)38 b(algorithm)h(is)f(based)f (on)h(pre)g(IA)m(U)g(1976)i(standards.)62 b(Ho)m(w)m(ev)m(er,)42 b(the)d(result)e(has)h(b)s(een)427 5314 y(mo)m(v)m(ed)27 b(on)m(to)f(the)g(new)f(\(FK5\))i(equino)m(x,)g(an)e(adjustmen)m(t)g (whic)m(h)h(is)f(in)g(an)m(y)h(case)g(m)m(uc)m(h)g(smaller)427 5426 y(than)k(the)h(in)m(trinsic)g(accuracy)g(of)g(the)f(pro)s(cedure.) 336 5584 y Fg(\017)46 b Fl(V)-8 b(elo)s(cit)m(y)33 b(is)e(obtained)f(b) m(y)h(a)f(complete)i(analytical)h(di\013eren)m(tiation)f(of)f(the)f (Meeus)h(mo)s(del.)p eop end %%Page: 14 16 TeXDict begin 14 15 bop 0 52 a Fl(14)2782 b Fh(SUN/267.1)63 b(|)d(palDt)p 0 351 3780 12 v 0 486 a Fi(palDrange)1018 492 y Fc(Normalize)36 b(angle)i(in)m(to)f(range)h(+/-)h(pi)3175 486 y Fi(palDrange)0 686 y Fn(Description:)47 b Fl(The)37 b(result)i(is)f Fe(")p Fl(angle)p Fe(")h Fl(expressed)f(in)g(the)g (range)h(+/-)g(pi.)64 b(If)38 b(the)h(supplied)e(v)-5 b(alue)39 b(for)227 799 y Fe(")p Fl(angle)p Fe(")31 b Fl(is)g(equal)f(to)i(+/-)e(pi,)h(it)g(is)f(returned)f(unc)m(hanged.)0 976 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDrange\()45 b(double)h(angle)h(\))0 1153 y Fn(Argumen)m(ts:)262 1306 y(angle)35 b(=)g(double)h(\(Giv)m(en\))427 1419 y Fl(The)30 b(angle)i(in)e(radians.)p 0 1619 V 0 1754 a Fi(palDt)213 b Fc(Estimate)37 b(the)i(o\013set)f(b)s(et)m(w)m(een)g(dynamical)f (time)g(and)i(UT)212 b Fi(palDt)0 1936 y Fn(Description:)47 b Fl(Estimate)f(the)f(o\013set)i(b)s(et)m(w)m(een)e(dynamical)h(time)g (and)f(Univ)m(ersal)h(Time)f(for)g(a)g(giv)m(en)227 2049 y(historical)32 b(ep)s(o)s(c)m(h.)0 2226 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palDt\()g(double)g(epoch)h(\);)0 2403 y Fn(Argumen)m(ts:)262 2556 y(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv)m (en\))427 2669 y Fl(Julian)30 b(ep)s(o)s(c)m(h)g(\(e.g.)42 b(1850.0\))0 2846 y Fn(Returned)35 b(V)-9 b(alue:)262 2998 y(palDt)35 b(=)g(double)427 3111 y Fl(Rough)30 b(estimate)j(of)d (ET-UT)g(\(after)h(1984,)i(TT-UT\))d(at)h(the)f(giv)m(en)i(ep)s(o)s(c)m (h,)e(in)g(seconds.)0 3320 y Fn(Notes:)336 3637 y Fg(\017)46 b Fl(Dep)s(ending)30 b(on)g(the)h(ep)s(o)s(c)m(h,)f(one)h(of)f(three)h (parab)s(olic)g(appro)m(ximations)g(is)f(used:)227 3814 y(b)s(efore)f(979)h(Stephenson)e(&)g(Morrison)p Fe(')p Fl(s)g(390)i(BC)f(to)h(AD)f(948)h(mo)s(del)f(979)h(to)g(1708)g (Stephenson)e(&)227 3927 y(Morrison)p Fe(')p Fl(s)i(948)i(to)f(1600)h (mo)s(del)e(after)h(1708)h(McCarth)m(y)f(&)f(Bab)s(co)s(c)m(k)p Fe(')p Fl(s)h(p)s(ost-1650)i(mo)s(del)227 4072 y(The)c(breakp)s(oin)m (ts)g(are)h(c)m(hosen)g(to)g(ensure)f(con)m(tin)m(uit)m(y:)42 b(they)30 b(o)s(ccur)f(at)h(places)h(where)e(the)g(adjacen)m(t)227 4185 y(mo)s(dels)h(giv)m(e)i(the)f(same)g(answ)m(er)f(as)g(eac)m(h)i (other.)336 4338 y Fg(\017)46 b Fl(The)35 b(accuracy)h(is)f(mo)s(dest,) i(with)e(errors)f(of)i(up)e(to)i(20)g(sec)f(during)f(the)i(in)m(terv)-5 b(al)36 b(since)f(1650,)427 4451 y(rising)c(to)h(p)s(erhaps)e(30)i(min) f(b)m(y)g(1000)i(BC.)e(Comparativ)m(ely)i(accurate)g(v)-5 b(alues)31 b(from)g(AD)h(1600)427 4564 y(are)f(tabulated)g(in)f(the)h (Astronomical)h(Almanac)f(\(see)g(section)h(K8)e(of)h(the)f(1995)i (AA\).)336 4699 y Fg(\017)46 b Fl(The)31 b(use)f(of)h(double-precision) g(for)g(b)s(oth)f(argumen)m(t)h(and)f(result)h(is)g(purely)f(for)g (compatibilit)m(y)427 4812 y(with)g(other)h(SLALIB)f(time)h(routines.) 336 4948 y Fg(\017)46 b Fl(The)37 b(mo)s(dels)f(used)g(are)i(based)e (on)h(a)g(lunar)f(tidal)i(acceleration)i(v)-5 b(alue)37 b(of)g(-26.00)j(arcsec)d(p)s(er)427 5061 y(cen)m(tury)-8 b(.)-2 5238 y Fn(See)35 b(Also)n(:)227 5401 y Fl(Explanatory)41 b(Supplemen)m(t)f(to)h(the)g(Astronomical)g(Almanac,)k(ed)40 b(P)-8 b(.K.Seidelmann,)43 b(Univ)m(ersit)m(y)227 5514 y(Science)37 b(Bo)s(oks)f(\(1992\),)41 b(section)c(2.553,)i(p83.)58 b(This)35 b(con)m(tains)i(references)f(to)h(the)f(Stephenson)f(&)227 5627 y(Morrison)c(and)e(McCarth)m(y)i(&)f(Bab)s(co)s(c)m(k)i(pap)s (ers.)p eop end %%Page: 15 17 TeXDict begin 15 16 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palDtp2s)2680 b Fl(15)p 0 351 3780 12 v 0 486 a Fi(palDtp2s)372 b Fc(T)-10 b(angen)m(t)37 b(plane)h(to)g(spherical)g(co)s(ordinates)369 b Fi(palDtp2s)0 711 y Fn(Description:)47 b Fl(T)-8 b(ransform)29 b(tangen)m(t)j(plane)e(co)s(ordinates)h(in)m(to)h(spherical.)0 904 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDtp2s\()45 b(double)i(xi,)f(double)h(eta,)f(double)g(raz,)h(double)f(decz,)g (double)g Fg(\003)p Fe(ra,)227 1017 y(double)g Fg(\003)p Fe(dec\);)0 1210 y Fn(Argumen)m(ts:)262 1378 y(xi)35 b(=)g(double)h(\(Giv)m(en\))427 1491 y Fl(First)31 b(rectangular)g(co)s (ordinate)h(on)e(tangen)m(t)i(plane)e(\(radians\))262 1640 y Fn(eta)k(=)i(double)f(\(Giv)m(en\))427 1753 y Fl(Second)30 b(rectangular)i(co)s(ordinate)f(on)f(tangen)m(t)i(plane)e (\(radians\))262 1901 y Fn(raz)35 b(=)g(double)h(\(Giv)m(en\))427 2014 y Fl(RA)31 b(spherical)f(co)s(ordinate)h(of)g(tangen)m(t)h(p)s (oin)m(t)e(\(radians\))262 2163 y Fn(decz)36 b(=)f(double)g(\(Giv)m (en\))427 2276 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(tangen)m(t)i (p)s(oin)m(t)e(\(radians\))262 2424 y Fn(ra)35 b(=)g(double)g Fg(\003)h Fn(\(Returned\))427 2537 y Fl(RA)31 b(spherical)f(co)s (ordinate)h(of)g(p)s(oin)m(t)f(to)h(b)s(e)f(pro)5 b(jected)31 b(\(radians\))262 2686 y Fn(dec)k(=)h(double)f Fg(\003)g Fn(\(Returned\))427 2799 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(p) s(oin)m(t)h(to)g(b)s(e)e(pro)5 b(jected)31 b(\(radians\))p 0 3043 V 0 3177 a Fi(palDtps2c)247 b Fc(Determine)37 b(RA,Dec)i(of)g(tangen)m(t)e(p)s(oin)m(t)g(from)1598 3290 y(co)s(ordinates)3192 3177 y Fi(palDtps2c)0 3492 y Fn(Description:)47 b Fl(F)-8 b(rom)35 b(the)g(tangen)m(t)i(plane)e (co)s(ordinates)h(of)f(a)g(star)g(of)h(kno)m(wn)e(RA,Dec,)k(determine)d (the)227 3605 y(RA,Dec)d(of)f(the)f(tangen)m(t)i(p)s(oin)m(t.)0 3798 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palDtps2c\()45 b(double)h(xi,)h(double)f(eta,)h(double)f(ra,)h(double)f(dec,)h(double) f Fg(\003)i Fe(raz1,)227 3911 y(double)e(decz1,)g(double)h Fg(\003)h Fe(raz2,)e(double)g(decz2,)g(int)h Fg(\003)p Fe(n\);)0 4104 y Fn(Argumen)m(ts:)262 4272 y(xi)35 b(=)g(double)h (\(Giv)m(en\))427 4385 y Fl(First)31 b(rectangular)g(co)s(ordinate)h (on)e(tangen)m(t)i(plane)e(\(radians\))262 4534 y Fn(eta)k(=)i(double)f (\(Giv)m(en\))427 4647 y Fl(Second)30 b(rectangular)i(co)s(ordinate)f (on)f(tangen)m(t)i(plane)e(\(radians\))262 4795 y Fn(ra)35 b(=)g(double)g(\(Giv)m(en\))427 4908 y Fl(RA)c(spherical)f(co)s (ordinate)h(of)g(star)g(\(radians\))262 5057 y Fn(dec)k(=)h(double)f (\(Giv)m(en\))427 5170 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e (star)h(\(radians\))262 5319 y Fn(raz1)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 5431 y Fl(RA)c(spherical)f(co)s(ordinate) h(of)g(tangen)m(t)h(p)s(oin)m(t,)e(solution)h(1)g(\(radians\))262 5580 y Fn(decz1)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 5693 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(tangen)m(t)i(p)s(oin)m (t,)f(solution)g(1)f(\(radians\))p eop end %%Page: 16 18 TeXDict begin 16 17 bop 0 52 a Fl(16)2746 b Fh(SUN/267.1)63 b(|)e(palDtt)262 351 y Fn(raz2)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 464 y Fl(RA)c(spherical)f(co)s(ordinate)h(of)g (tangen)m(t)h(p)s(oin)m(t,)e(solution)h(2)g(\(radians\))262 600 y Fn(decz2)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 713 y Fl(Dec)d(spherical)e(co)s(ordinate)i(of)e(tangen)m(t)i(p)s(oin)m (t,)f(solution)g(2)f(\(radians\))262 848 y Fn(n)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 961 y Fl(n)m(um)m(b)s(er)28 b(of)h(solutions:)40 b(0)29 b(=)g(no)g(solutions)g(returned)f(\(note)i (2\))f(1)g(=)g(only)g(the)g(\014rst)f(solution)h(is)427 1074 y(useful)h(\(note)h(3\))g(2)g(=)f(b)s(oth)g(solutions)h(are)f (useful)g(\(note)h(3\))0 1283 y Fn(Notes:)336 1600 y Fg(\017)46 b Fl(The)30 b(RAZ1)h(and)e(RAZ2)i(v)-5 b(alues)30 b(are)h(returned)e(in)h(the)h(range)g(0-2pi.)336 1736 y Fg(\017)46 b Fl(Cases)39 b(where)f(there)h(is)g(no)f(solution)h(can)g (only)g(arise)g(near)f(the)h(p)s(oles.)65 b(F)-8 b(or)40 b(example,)h(it)e(is)427 1849 y(clearly)31 b(imp)s(ossible)e(for)g(a)g (star)h(at)g(the)g(p)s(ole)f(itself)h(to)g(ha)m(v)m(e)h(a)e(non-zero)h (XI)f(v)-5 b(alue,)31 b(and)d(hence)427 1962 y(it)g(is)f(meaningless)g (to)h(ask)f(where)g(the)g(tangen)m(t)h(p)s(oin)m(t)f(w)m(ould)g(ha)m(v) m(e)h(to)g(b)s(e)e(to)i(bring)e(ab)s(out)h(this)427 2074 y(com)m(bination)32 b(of)e(XI)h(and)f(DEC.)336 2210 y Fg(\017)46 b Fl(Also)34 b(near)e(the)h(p)s(oles,)g(cases)h(can)f(arise) g(where)f(there)h(are)g(t)m(w)m(o)g(useful)f(solutions.)48 b(The)32 b(argu-)427 2323 y(men)m(t)37 b(N)g(indicates)h(whether)d(the) i(second)g(of)g(the)g(t)m(w)m(o)g(solutions)g(returned)f(is)h(useful.) 58 b(N=1)427 2436 y(indicates)43 b(only)g(one)f(useful)f(solution,)46 b(the)c(usual)g(case;)49 b(under)41 b(these)h(circumstances,)k(the)427 2549 y(second)35 b(solution)f(corresp)s(onds)f(to)i(the)g Fe(")p Fl(o)m(v)m(er-the-p)s(ole)p Fe(")h Fl(case,)g(and)e(this)g(is)h (re\015ected)f(in)g(the)427 2662 y(v)-5 b(alues)31 b(of)g(RAZ2)f(and)g (DECZ2)g(whic)m(h)g(are)h(returned.)336 2797 y Fg(\017)46 b Fl(The)36 b(DECZ1)h(and)f(DECZ2)h(v)-5 b(alues)37 b(are)g(returned)e (in)i(the)g(range)g(+/-pi,)h(but)e(in)h(the)g(usual,)427 2910 y(non-p)s(ole-crossing,)31 b(case,)h(the)f(range)f(is)h(+/-pi/2.) 336 3046 y Fg(\017)46 b Fl(This)30 b(routine)g(is)h(the)f(spherical)h (equiv)-5 b(alen)m(t)32 b(of)e(the)h(routine)f(sla)p Fe(_)p Fl(DTPV2C.)p 0 3246 3780 12 v 0 3381 a Fi(palDtt)580 b Fc(Return)38 b(o\013set)g(b)s(et)m(w)m(een)g(UTC)g(and)h(TT)577 b Fi(palDtt)0 3563 y Fn(Description:)47 b Fl(Incremen)m(t)28 b(to)i(b)s(e)e(applied)h(to)g(Co)s(ordinated)f(Univ)m(ersal)i(Time)f (UTC)f(to)h(giv)m(e)i(T)-8 b(errestrial)227 3676 y(Time)31 b(TT)e(\(formerly)i(Ephemeris)e(Time)i(ET\))0 3853 y Fn(In)m(v)m(o)s(cation:)130 b Fe(dtt)47 b(=)h(palDtt\()d(double)h(utc)h (\);)0 4030 y Fn(Argumen)m(ts:)262 4183 y(utc)35 b(=)g(double)h(\(Giv)m (en\))427 4296 y Fl(UTC)30 b(date)h(as)g(a)f(mo)s(di\014ed)g(JD)g (\(JD-2400000.5\))0 4474 y Fn(Returned)35 b(V)-9 b(alue:)262 4627 y(dtt)34 b(=)i(double)427 4739 y Fl(TT-UTC)30 b(in)g(seconds)0 4949 y Fn(Notes:)336 5265 y Fg(\017)46 b Fl(Consider)32 b(a)g(comprehensiv)m(e)g(upgrade)g(to)h(use)e(the)i(time)g (transformations)f(in)g(SOF)-10 b(A)p Fe(')p Fl(s)31 b(time)427 5378 y(co)s(okb)s(o)s(ok:)41 b(h)m (ttp://www.iausofa.org/sofa)p Fe(_)p Fl(ts)p Fe(_)p Fl(c.p)s(df.)336 5514 y Fg(\017)46 b Fl(See)26 b(iauDat)h(for)e(a)g(description)h(of)f (error)g(conditions)h(when)e(calling)j(this)e(function)g(with)g(a)h (time)427 5627 y(outside)31 b(of)f(the)h(UTC)f(range.)41 b(This)29 b(b)s(eha)m(viour)h(di\013ers)g(from)g(slaDtt.)p eop end %%Page: 17 19 TeXDict begin 17 18 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palEcmat)2658 b Fl(17)p 0 351 3780 12 v 0 486 a Fi(palEcmat)329 b Fc(F)-10 b(orm)38 b(the)g(equatorial)e(to)i(ecliptic)f(rotation)966 599 y(matrix)f(-)j(IA)m(U)g(2006)e(precession)h(mo)s(del)3224 486 y Fi(palEcmat)0 827 y Fn(Description:)47 b Fl(The)31 b(equatorial)j(to)f(ecliptic)h(rotation)f(matrix)g(is)f(found)f(and)g (returned.)45 b(The)32 b(matrix)g(is)227 940 y(in)26 b(the)g(sense)g(V\(ecl\))i(=)d(RMA)-8 b(T)26 b Fg(\003)h Fl(V\(equ\);)h(the)e(equator,)i(equino)m(x)e(and)g(ecliptic)h(are)g (mean)e(of)i(date.)0 1135 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palEcmat\()45 b(double)i(date,)f(double)g(rmat[3][3])f(\))0 1331 y Fn(Argumen)m(ts:)262 1502 y(date)34 b(=)i(double)f(\(Giv)m(en\)) 427 1615 y Fl(TT)f(as)g(Mo)s(di\014ed)g(Julian)g(Date)i (\(JD-2400000.5\).)57 b(The)34 b(di\013erence)h(b)s(et)m(w)m(een)g(TT)e (and)h(TDB)427 1728 y(is)d(of)f(the)h(order)f(of)g(a)h(millisecond)g (or)g(t)m(w)m(o)g(\(i.e.)42 b(ab)s(out)30 b(0.02)i(arc-seconds\).)262 1878 y Fn(rmat)j(=)g(double[3][3])h(\(Returned\))427 1990 y Fl(Rotation)c(matrix)p 0 2237 V 0 2372 a Fi(palEl2ue)425 b Fc(T)-10 b(ransform)36 b(con)m(v)m(en)m(tional)g(elemen)m(ts)h(in)m (to)1462 2485 y Fb(")p Fc(univ)m(ersal)p Fb(")f Fc(form)3273 2372 y Fi(palEl2ue)0 2690 y Fn(Description:)47 b Fl(T)-8 b(ransform)29 b(con)m(v)m(en)m(tional)k(osculating)f(elemen)m(ts)g(in)m (to)f Fe(")p Fl(univ)m(ersal)p Fe(")f Fl(form.)0 2885 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palEl2ue)e(\()j(double)e (date,)g(int)h(jform,)f(double)g(epoch,)g(double)h(orbinc,)227 2998 y(double)f(anode,)g(double)h(perih,)f(double)g(aorq,)g(double)g (e,)h(double)f(aorl,)h(double)f(dm,)h(double)227 3111 y(u[13],)f(int)h Fg(\003)p Fe(jstat)g(\);)0 3306 y Fn(Argumen)m(ts:)262 3478 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 3590 y Fl(Ep)s(o)s(c)m(h)30 b(\(TT)g(MJD\))h(of)f(osculation)i(\(Note)g(3\)) 262 3740 y Fn(jform)j(=)g(in)m(t)g(\(Giv)m(en\))427 3853 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i(Note)f(6\))262 4003 y Fn(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv)m(en\))427 4116 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i(\(TT)e(MJD\))262 4266 y Fn(orbinc)36 b(=)f(double)g(\(Giv)m(en\))427 4379 y Fl(inclination)d(\(radians\))262 4529 y Fn(ano)s(de)j(=)g(double)h (\(Giv)m(en\))427 4642 y Fl(longitude)31 b(of)g(the)f(ascending)h(no)s (de)f(\(radians\))262 4792 y Fn(p)s(erih)35 b(=)g(double)h(\(Giv)m (en\))427 4905 y Fl(longitude)31 b(or)g(argumen)m(t)f(of)h(p)s (erihelion)f(\(radians\))262 5054 y Fn(aorq)35 b(=)g(double)h(\(Giv)m (en\))427 5167 y Fl(mean)31 b(distance)g(or)f(p)s(erihelion)g(distance) h(\(A)m(U\))262 5317 y Fn(e)k(=)g(double)g(\(Giv)m(en\))427 5430 y Fl(eccen)m(tricit)m(y)262 5580 y Fn(aorl)g(=)g(double)h(\(Giv)m (en\))427 5693 y Fl(mean)31 b(anomaly)g(or)f(longitude)h(\(radians,)g (JF)m(ORM=1,2)g(only\))p eop end %%Page: 18 20 TeXDict begin 18 19 bop 0 52 a Fl(18)2663 b Fh(SUN/267.1)63 b(|)e(palEl2ue)262 351 y Fn(dm)35 b(=)g(double)h(\(Giv)m(en\))427 464 y Fl(daily)31 b(motion)g(\(radians,)g(JF)m(ORM=1)g(only\))262 617 y Fn(u)k(=)g(double)h([13])f(\(Returned\))427 730 y Fl(Univ)m(ersal)26 b(orbital)g(elemen)m(ts)g(\(Note)g(1\))g(\(0\))g (com)m(bined)f(mass)f(\(M+m\))i(\(1\))g(total)g(energy)f(of)g(the)427 843 y(orbit)35 b(\(alpha\))h(\(2\))g(reference)f(\(osculating\))i(ep)s (o)s(c)m(h)e(\(t0\))h(\(3-5\))h(p)s(osition)e(at)g(reference)h(ep)s(o)s (c)m(h)427 956 y(\(r0\))28 b(\(6-8\))g(v)m(elo)s(cit)m(y)h(at)f (reference)f(ep)s(o)s(c)m(h)g(\(v0\))g(\(9\))h(helio)s(cen)m(tric)h (distance)e(at)h(reference)f(ep)s(o)s(c)m(h)427 1069 y(\(10\))32 b(r0.v0)f(\(11\))h(date)f(\(t\))h(\(12\))f(univ)m(ersal)g (eccen)m(tric)i(anomaly)e(\(psi\))f(of)h(date,)g(appro)m(x)262 1222 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 1335 y Fl(status:)41 b(0)31 b(=)f(OK)506 1463 y Fg(\017)46 b Fl(1)31 b(=)f(illegal)j(JF)m(ORM)506 1596 y Fg(\017)46 b Fl(2)31 b(=)f(illegal)j(E)506 1729 y Fg(\017)46 b Fl(3)31 b(=)f(illegal)j(A)m(OR)m(Q)506 1862 y Fg(\017)46 b Fl(4)31 b(=)f(illegal)j(DM)506 1995 y Fg(\017)46 b Fl(5)31 b(=)f(n)m(umerical)h (error)0 2241 y Fn(Notes:)336 2582 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m (h)g(de\014ne)e(the)i(orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 2695 y(metho)s(d)32 b(of)g(univ)m(ersal)g(v)-5 b(ariables)33 b(\(see)g(reference\).)47 b(They)32 b(consist)g(of)h(the)f(com)m(bined) g(mass)g(of)427 2808 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f(ep)s(o)s (c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j(v)m (ectors)f(\(arbitrary)f(reference)427 2920 y(frame\))i(at)g(that)g(ep)s (o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)g (also)i(v)-5 b(arious)34 b(quan)m(tities)427 3033 y(that)h(can,)g(in)e (fact,)j(b)s(e)d(deriv)m(ed)g(from)h(the)f(other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to)427 3146 y(a)m(v)m(oiding)k(unnecessary)e(computation)h(and)f(loss)h(of)f (accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 3259 y(tities)k(are)f(\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional) g(to)h(the)g(total)h(energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 3372 y(helio)s(cen)m(tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g (the)e(out)m(w)m(ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y) h(at)f(the)427 3485 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g (estimate)h(of)e(psi,)j(the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j (anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 3598 y(date)31 b(and)f(\(v\))h(that)g(date.)336 3751 y Fg(\017)46 b Fl(The)31 b(companion)h(routine)f(is)h(palUe2p)m(v.)44 b(This)31 b(tak)m(es)i(the)e(set)h(of)g(n)m(um)m(b)s(ers)e(that)i(the)f (presen)m(t)427 3864 y(routine)g(outputs)f(and)f(uses)h(them)h(to)g (deriv)m(e)g(the)f(ob)5 b(ject)p Fe(')p Fl(s)31 b(p)s(osition)g(and)f (v)m(elo)s(cit)m(y)-8 b(.)43 b(A)31 b(single)427 3977 y(prediction)23 b(requires)f(one)h(call)h(to)f(the)g(presen)m(t)f (routine)h(follo)m(w)m(ed)h(b)m(y)e(one)h(call)h(to)f(palUe2p)m(v;)k (for)427 4090 y(con)m(v)m(enience,)h(the)d(t)m(w)m(o)h(calls)f(are)g (pac)m(k)-5 b(aged)26 b(as)f(the)f(routine)h(palPlanel.)39 b(Multiple)25 b(predictions)427 4202 y(ma)m(y)37 b(b)s(e)f(made)h(b)m (y)f(again)i(calling)g(the)e(presen)m(t)h(routine)f(once,)j(but)d(then) g(calling)i(palUe2p)m(v)427 4315 y(m)m(ultiple)31 b(times,)h(whic)m(h)e (is)g(faster)h(than)f(m)m(ultiple)h(calls)g(to)h(palPlanel.)336 4468 y Fg(\017)46 b Fl(D)m(A)-8 b(TE)24 b(is)g(the)f(ep)s(o)s(c)m(h)g (of)g(osculation.)40 b(It)23 b(is)g(in)g(the)g(TT)g(timescale)i (\(formerly)e(Ephemeris)f(Time,)427 4581 y(ET\))30 b(and)g(is)h(a)f(Mo) s(di\014ed)g(Julian)g(Date)i(\(JD-2400000.5\).)336 4734 y Fg(\017)46 b Fl(The)40 b(supplied)g(orbital)h(elemen)m(ts)h(are)g (with)e(resp)s(ect)h(to)g(the)g(J2000)h(ecliptic)h(and)d(equino)m(x.) 427 4847 y(The)27 b(p)s(osition)h(and)f(v)m(elo)s(cit)m(y)j(parameters) e(returned)e(in)h(the)h(arra)m(y)g(U)f(are)h(with)g(resp)s(ect)f(to)h (the)427 4960 y(mean)39 b(equator)f(and)g(equino)m(x)h(of)f(ep)s(o)s(c) m(h)g(J2000,)k(and)c(are)g(for)g(the)h(p)s(erihelion)f(prior)f(to)i (the)427 5073 y(sp)s(eci\014ed)30 b(ep)s(o)s(c)m(h.)336 5226 y Fg(\017)46 b Fl(The)31 b(univ)m(ersal)g(elemen)m(ts)h(returned)e (in)h(the)g(arra)m(y)h(U)f(are)g(in)g(canonical)i(units)d(\(solar)i (masses,)427 5339 y(A)m(U)f(and)f(canonical)i(da)m(ys\).)336 5492 y Fg(\017)46 b Fl(Three)30 b(di\013eren)m(t)h(elemen)m(t-format)i (options)d(are)h(a)m(v)-5 b(ailable:)227 5693 y(Option)30 b(JF)m(ORM=1,)i(suitable)e(for)h(the)f(ma)5 b(jor)31 b(planets:)p eop end %%Page: 19 21 TeXDict begin 19 20 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palEp)s(co)2715 b Fl(19)227 351 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i (\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f(\(radians\))g(ANODE)h(=) 227 464 y(longitude)h(of)f(the)g(ascending)g(no)s(de,)h(big)f(omega)h (\(radians\))f(PERIH)g(=)f(longitude)i(of)f(p)s(erihelion,)227 577 y(curly)h(pi)f(\(radians\))h(A)m(OR)m(Q)g(=)g(mean)g(distance,)i(a) e(\(A)m(U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)43 b(e)37 b(\(range)g(0)g(to)h Fa(<)p Fl(1\))227 690 y(A)m(ORL)31 b(=)f(mean)g(longitude)h(L)f(\(radians\))h(DM)g(=)f(daily)h(motion)g (\(radians\))227 839 y(Option)f(JF)m(ORM=2,)i(suitable)e(for)h(minor)e (planets:)227 988 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i (\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f(\(radians\))g(ANODE)h(=) 227 1101 y(longitude)g(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 1214 y(little)29 b(omega)f(\(radians\))f(A)m(OR)m(Q)g(=)f(mean)h (distance,)h(a)f(\(A)m(U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)31 b(e)c(\(range)h(0)f(to)g Fa(<)p Fl(1\))227 1327 y(A)m(ORL)k(=)f(mean)g(anomaly)h(M)g(\(radians\))227 1475 y(Option)f(JF)m(ORM=3,)i(suitable)e(for)h(comets:)227 1624 y(EPOCH)g(=)g(ep)s(o)s(c)m(h)f(of)i(p)s(erihelion)f(\(TT)f(MJD\))i (ORBINC)f(=)g(inclination)h(i)g(\(radians\))f(ANODE)h(=)227 1737 y(longitude)k(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 1850 y(little)g(omega)g(\(radians\))e(A)m(OR)m(Q)g(=)g(p)s(erihelion)g (distance,)h(q)f(\(A)m(U\))i(E)e(=)f(eccen)m(tricit)m(y)-8 b(,)39 b(e)34 b(\(range)h(0)227 1963 y(to)c(10\))336 2273 y Fg(\017)46 b Fl(Un)m(used)36 b(elemen)m(ts)i(\(DM)g(for)f(JF)m (ORM=2,)i(A)m(ORL)e(and)f(DM)h(for)g(JF)m(ORM=3\))g(are)g(not)g(ac-)427 2386 y(cessed.)336 2529 y Fg(\017)46 b Fl(The)40 b(algorithm)i(w)m(as)f (originally)h(adapted)f(from)f(the)h(EPHSLA)f(program)g(of)h(D.H.P)-8 b(.Jones)427 2642 y(\(priv)j(ate)36 b(comm)m(unication,)h(1996\).)56 b(The)34 b(metho)s(d)g(is)g(based)h(on)f(Stump\013)p Fe(')p Fl(s)f(Univ)m(ersal)i(V)-8 b(ari-)427 2755 y(ables.)-2 2940 y Fn(See)35 b(Also)n(:)227 3104 y Fl(Ev)m(erhart)c(&)f(Pitkin,)h (Am.J.Ph)m(ys.)40 b(51,)32 b(712)f(\(1983\).)p 0 3332 3780 12 v 0 3466 a Fi(palEp)t(co)255 b Fc(Con)m(v)m(ert)36 b(an)j(ep)s(o)s(c)m(h)g(in)m(to)e(the)i(appropriate)c(form)j(-)1604 3579 y Fb(')p Fc(B)p Fb(')g Fc(or)g Fb(')p Fc(J)p Fb(')3308 3466 y Fi(palEp)t(co)0 3765 y Fn(Description:)47 b Fl(Con)m(v)m(erts)31 b(a)f(Besselian)i(or)e(Julian)g(ep)s(o)s(c)m(h)g(to)i(a)e(Julian)g(or)h (Besselian)g(ep)s(o)s(c)m(h.)0 3950 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palEpco\()g(char)g(k0,)h(char)g(k,)g(double)f(e)i(\);) 0 4135 y Fn(Argumen)m(ts:)262 4296 y(k0)35 b(=)h(c)m(har)f(\(Giv)m (en\))427 4409 y Fl(F)-8 b(orm)31 b(of)g(result:)40 b Fe(')p Fl(B)p Fe(')p Fl(=Besselian,)32 b Fe(')p Fl(J)p Fe(')p Fl(=Julian)262 4552 y Fn(k)j(=)g(c)m(har)h(\(Giv)m(en\))427 4665 y Fl(F)-8 b(orm)31 b(of)g(giv)m(en)g(ep)s(o)s(c)m(h:)41 b Fe(')p Fl(B)p Fe(')30 b Fl(or)g Fe(')p Fl(J)p Fe(')p Fl(.)0 4886 y Fn(Notes:)336 5211 y Fg(\017)46 b Fl(The)27 b(result)g(is)h(alw)m(a)m(ys)h(either)e(equal)h(to)g(or)g(v)m(ery)f (close)i(to)f(the)f(giv)m(en)i(ep)s(o)s(c)m(h)e(E.)g(The)g(routine)g (is)427 5324 y(required)j(only)g(in)g(applications)h(where)f (punctilious)f(treatmen)m(t)j(of)e(heterogeneous)i(mixtures)427 5437 y(of)f(star)f(p)s(ositions)h(is)f(necessary)-8 b(.)336 5580 y Fg(\017)46 b Fl(k)30 b(and)f(k0)i(are)f(case)h(insensitiv)m(e.) 42 b(This)29 b(di\013eres)h(sligh)m(tly)h(from)e(the)h(F)-8 b(ortran)31 b(SLA)e(implemen-)427 5693 y(tation.)p eop end %%Page: 20 22 TeXDict begin 20 21 bop 0 52 a Fl(20)2642 b Fh(SUN/267.1)63 b(|)e(palEtrms)336 351 y Fg(\017)46 b Fl(k)36 b(and)f(k0)i(are)f(not)g (v)-5 b(alidated.)58 b(They)36 b(are)g(in)m(terpreted)g(as)g(follo)m (ws:)53 b(o)36 b(If)g(k0)g(and)f(k)h(are)g(the)427 464 y(same)e(the)f(result)f(is)h(e)h(o)f(If)f(k0)h(is)g Fe(')p Fl(b)p Fe(')f Fl(or)h Fe(')p Fl(B)p Fe(')g Fl(and)f(k)h(isn)p Fe(')p Fl(t)f(the)h(con)m(v)m(ersion)h(is)f(J)g(to)g(B.)h(o)f(In)427 577 y(all)f(other)e(cases,)i(the)e(con)m(v)m(ersion)i(is)e(B)h(to)g(J.) p 0 821 3780 12 v 0 956 a Fi(palEp)l(v)277 b Fc(Earth)37 b(p)s(osition)g(and)i(v)m(elo)s(cit)m(y)d(with)i(resp)s(ect)g(to)g(the) 1730 1068 y(BCRS)3372 956 y Fi(palEp)l(v)0 1271 y Fn(Description:)47 b Fl(Earth)42 b(p)s(osition)g(and)g(v)m(elo)s(cit)m(y)-8 b(,)48 b(helio)s(cen)m(tric)c(and)e(barycen)m(tric,)k(with)c(resp)s (ect)g(to)h(the)227 1384 y(Barycen)m(tric)32 b(Celestial)h(Reference)e (System.)0 1577 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palEpv\()f(double)g(date,)g(double)g(ph[3],)g(double)g(vh[3],)g (double)h(pb[3],)227 1690 y(double)f(vb[3])h(\);)0 1882 y Fn(Argumen)m(ts:)262 2051 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 2164 y Fl(Date,)d(TDB)f(Mo)s(di\014ed)f(Julian)g(Date)i (\(JD-2400000.5\))262 2313 y Fn(ph)j(=)g(double)h([3])f(\(Returned\)) 427 2426 y Fl(Helio)s(cen)m(tric)e(Earth)d(p)s(osition)h(\(A)m(U\))262 2574 y Fn(vh)k(=)g(double)h([3])f(\(Returned\))427 2687 y Fl(Helio)s(cen)m(tric)e(Earth)d(v)m(elo)s(cit)m(y)j(\(A)m(U/da)m(y\)) 262 2836 y Fn(pb)i(=)g(double)h([3])f(\(Returned\))427 2949 y Fl(Barycen)m(tric)d(Earth)f(p)s(osition)f(\(A)m(U\))262 3098 y Fn(vb)35 b(=)g(double)h([3])f(\(Returned\))427 3211 y Fl(Barycen)m(tric)d(Earth)f(v)m(elo)s(cit)m(y)h(\(A)m(U/da)m (y\))0 3444 y Fn(Notes:)336 3776 y Fg(\017)46 b Fl(See)31 b(iauEp)m(v00)g(for)f(details)i(on)e(accuracy)336 3925 y Fg(\017)46 b Fl(Note)32 b(that)f(the)g(status)f(argumen)m(t)h(from)f (iauEp)m(v00)h(is)g(ignored)p 0 4169 V 0 4303 a Fi(palEtrms)620 b Fc(Compute)37 b(the)i(E-terms)e(v)m(ector)617 b Fi(palEtrms)0 4534 y Fn(Description:)47 b Fl(Computes)29 b(the)i(E-terms)f (\(elliptic)j(comp)s(onen)m(t)d(of)h(ann)m(ual)f(ab)s(erration\))h(v)m (ector.)227 4687 y(Note)d(the)f(use)f(of)g(the)h(J2000)h(ab)s(erration) f(constan)m(t)g(\(20.49552)k(arcsec\).)40 b(This)26 b(is)h(a)f (re\015ection)i(of)e(the)227 4800 y(fact)32 b(that)g(the)f(E-terms)g (em)m(b)s(o)s(died)f(in)h(existing)h(star)f(catalogues)i(w)m(ere)f (computed)e(from)h(a)g(v)-5 b(ariet)m(y)227 4913 y(of)30 b(ab)s(erration)g(constan)m(ts.)42 b(Rather)30 b(than)f(adopting)h(one) g(of)g(the)g(old)g(constan)m(ts)h(the)f(latest)h(v)-5 b(alue)30 b(is)227 5026 y(used)g(here.)0 5218 y Fn(In)m(v)m(o)s (cation:)130 b Fe(void)47 b(palEtrms)e(\()j(double)e(ep,)h(double)f (ev[3])g(\);)0 5411 y Fn(Argumen)m(ts:)262 5580 y(ep)35 b(=)g(double)g(\(Giv)m(en\))427 5693 y Fl(Besselian)d(ep)s(o)s(c)m(h)p eop end %%Page: 21 23 TeXDict begin 21 22 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palEqecl)2701 b Fl(21)262 351 y Fn(ev)35 b(=)g(double)h([3])f(\(Returned\))427 464 y Fl(E-terms)c(as)f(\(dx,dy)-8 b(,dz\))-2 641 y Fn(See)35 b(also)n(:)336 957 y Fg(\017)46 b Fl(Smith,)30 b(C.A.)h(et)g(al.,)g (1989.)43 b(Astr.J.)30 b(97,)i(265.)336 1093 y Fg(\017)46 b Fl(Y)-8 b(allop,)32 b(B.D.)g(et)f(al.,)h(1989.)42 b(Astr.J.)31 b(97,)g(274.)p 0 1292 3780 12 v 0 1426 a Fi(palEqecl)196 b Fc(T)-10 b(ransform)37 b(from)g(J2000.0)f(equatorial)g(co)s (ordinates)1325 1539 y(to)i(ecliptic)g(co)s(ordinates)3284 1426 y Fi(palEqecl)0 1720 y Fn(Description:)47 b Fl(T)-8 b(ransform)29 b(from)h(J2000.0)i(equatorial)g(co)s(ordinates)f(to)h (ecliptic)g(co)s(ordinates.)0 1897 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palEqecl\()e(double)h(dr,)h(double)f(dd,)h(double)f (date,)h(double)f Fg(\003)p Fe(dl,)h(double)227 2010 y Fg(\003)p Fe(db\);)0 2187 y Fn(Argumen)m(ts:)262 2339 y(dr)35 b(=)g(double)h(\(Giv)m(en\))427 2452 y Fl(J2000.0)d(mean)d(RA)h (\(radians\))262 2587 y Fn(dd)k(=)g(double)h(\(Giv)m(en\))427 2700 y Fl(J2000.0)d(mean)d(Dec)i(\(Radians\))262 2836 y Fn(date)i(=)i(double)f(\(Giv)m(en\))427 2948 y Fl(TT)f(as)g(Mo)s (di\014ed)g(Julian)g(Date)i(\(JD-2400000.5\).)57 b(The)34 b(di\013erence)h(b)s(et)m(w)m(een)g(TT)e(and)h(TDB)427 3061 y(is)d(of)f(the)h(order)f(of)g(a)h(millisecond)g(or)g(t)m(w)m(o)g (\(i.e.)42 b(ab)s(out)30 b(0.02)i(arc-seconds\).)262 3197 y Fn(dl)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3309 y Fl(Ecliptic)d(longitude)f(\(mean)g(of)f(date,)h(IA)m(U)g(1980)i (theory)-8 b(,)31 b(radians\))262 3445 y Fn(db)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3558 y Fl(Ecliptic)d(latitude)f(\(mean)g (of)g(date,)g(IA)m(U)g(1980)h(theory)-8 b(,)31 b(radians\))p 0 3757 V 0 3891 a Fi(palEqgal)174 b Fc(Con)m(v)m(ert)36 b(from)i(J2000.0)e(equatorial)g(co)s(ordinates)g(to)1678 4004 y(Galactic)3273 3891 y Fi(palEqgal)0 4162 y Fn(Description:)47 b Fl(T)-8 b(ransformation)33 b(from)g(J2000.0)j(equatorial)f(co)s (ordinates)f(to)h(IA)m(U)f(1958)h(galactic)i(co)s(or-)227 4275 y(dinates.)0 4452 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palEqgal)e(\()j(double)e(dr,)h(double)f(dd,)h(double)f Fg(\003)p Fe(dl,)h(double)f Fg(\003)p Fe(db)i(\);)0 4628 y Fn(Argumen)m(ts:)262 4781 y(dr)35 b(=)g(double)h(\(Giv)m(en\))427 4894 y Fl(J2000.0)d(RA)d(\(radians\))262 5029 y Fn(dd)35 b(=)g(double)h(\(Giv)m(en\))427 5142 y Fl(J2000.0)d(Dec)e(\(radians)262 5277 y Fn(dl)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5390 y Fl(Galactic)e(longitude)e(\(radians\).)262 5525 y Fn(db)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5638 y Fl(Galactic)e(latitude)f(\(radians\).)p eop end %%Page: 22 24 TeXDict begin 22 23 bop 0 52 a Fl(22)2648 b Fh(SUN/267.1)63 b(|)d(palFk45z)0 351 y Fn(Notes:)227 515 y Fl(The)29 b(equatorial)i(co)s(ordinates)e(are)h(J2000.0.)42 b(Use)30 b(the)f(routine)g(palGe50)i(if)e(con)m(v)m(ersion)i(to)f(B1950.0)227 628 y Fe(')p Fl(FK4)p Fe(')h Fl(co)s(ordinates)g(is)f(required.)-2 814 y Fn(See)35 b(Also)n(:)227 977 y Fl(Blaau)m(w)d(et)f(al,)g (Mon.Not.R.Astron.So)s(c.,121,123)36 b(\(1960\))p 0 1208 3780 12 v 0 1342 a Fi(palEvp)227 b Fc(Returns)39 b(the)f(barycen)m (tric)f(and)h(helio)s(cen)m(tric)f(v)m(elo)s(cit)m(y)1238 1455 y(and)i(p)s(osition)e(of)h(the)h(Earth)3368 1342 y Fi(palEvp)0 1668 y Fn(Description:)47 b Fl(Returns)29 b(the)i(barycen)m(tric)h(and)e(helio)s(cen)m(tric)j(v)m(elo)s(cit)m(y)g (and)d(p)s(osition)h(of)g(the)g(Earth)g(at)g(a)227 1780 y(giv)m(en)37 b(ep)s(o)s(c)m(h,)f(giv)m(en)g(with)f(resp)s(ect)g(to)h (a)g(sp)s(eci\014ed)e(equino)m(x.)56 b(F)-8 b(or)36 b(information)g(ab) s(out)f(accuracy)-8 b(,)227 1893 y(see)31 b(the)g(function)f(iauEp)m (v00.)0 2079 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palEvp\()f(double)g(date,)g(double)g(deqx,)h(double)f(dvb[3],)f (double)i(dpb[3],)227 2192 y(double)f(dvh[3],)g(double)g(dph[3])g(\))0 2378 y Fn(Argumen)m(ts:)262 2539 y(date)34 b(=)i(double)f(\(Giv)m(en\)) 427 2652 y Fl(TDB)c(\(lo)s(osely)h(ET\))e(as)h(a)f(Mo)s(di\014ed)g (Julian)g(Date)i(\(JD-2400000.5\))262 2796 y Fn(deqx)j(=)g(double)h (\(Giv)m(en\))427 2909 y Fl(Julian)e(ep)s(o)s(c)m(h)g(\(e.g.)53 b(2000.0\))37 b(of)e(mean)f(equator)h(and)e(equino)m(x)i(of)f(the)g(v)m (ectors)i(returned.)51 b(If)427 3022 y(deqx)24 b Fa(<)p Fl(=)f(0.0,)k(all)e(v)m(ectors)g(are)f(referred)f(to)i(the)f(mean)g (equator)h(and)e(equino)m(x)i(\(FK5\))g(of)f(ep)s(o)s(c)m(h)427 3135 y(date.)262 3279 y Fn(dvb)35 b(=)g(double[3])h(\(Returned\))427 3392 y Fl(Barycen)m(tric)c(v)m(elo)s(cit)m(y)h(\(A)m(U/s,)f(A)m(U\))262 3536 y Fn(dpb)j(=)g(double[3])h(\(Returned\))427 3649 y Fl(Barycen)m(tric)c(p)s(osition)f(\(A)m(U/s,)h(A)m(U\))262 3793 y Fn(dvh)j(=)g(double[3])h(\(Returned\))427 3906 y Fl(helio)s(cen)m(tric)c(v)m(elo)s(cit)m(y)h(\(A)m(U/s,)f(A)m(U\))262 4050 y Fn(dph)j(=)g(double[3])h(\(Returned\))427 4163 y Fl(Helio)s(cen)m(tric)d(p)s(osition)e(\(A)m(U/s,)h(A)m(U\))p 0 4394 V 0 4528 a Fi(palFk45z)269 b Fc(Con)m(v)m(ert)37 b(B1950.0)f(FK4)j(star)e(data)h(to)g(J2000.0)712 4641 y(FK5)h(assuming)f(zero)g(prop)s(er)g(motion)e(in)j(the)g(FK5)1745 4754 y(frame)3252 4528 y Fi(palFk45z)0 4943 y Fn(Description:)47 b Fl(Con)m(v)m(ert)29 b(B1950.0)j(FK4)d(star)g(data)h(to)f(J2000.0)i (FK5)f(assuming)e(zero)i(prop)s(er)d(motion)j(in)227 5056 y(the)h(FK5)g(frame)f(\(double)g(precision\))227 5205 y(This)24 b(function)g(con)m(v)m(erts)h(stars)g(from)e(the)i (Bessel-New)m(com)m(b,)j(FK4)d(system)f(to)h(the)g(IA)m(U)f(1976,)k (FK5,)227 5318 y(F)-8 b(ric)m(k)m(e)29 b(system,)f(in)f(suc)m(h)f(a)h (w)m(a)m(y)h(that)g(the)e(FK5)i(prop)s(er)d(motion)j(is)e(zero.)41 b(Because)28 b(suc)m(h)e(a)h(star)g(has,)227 5431 y(in)h(general,)h(a)f (non-zero)g(prop)s(er)e(motion)i(in)g(the)g(FK4)g(system,)g(the)g (routine)f(requires)h(the)f(ep)s(o)s(c)m(h)h(at)227 5544 y(whic)m(h)i(the)h(p)s(osition)f(in)g(the)h(FK4)g(system)f(w)m(as)h (determined.)227 5693 y(The)f(metho)s(d)g(is)g(from)g(App)s(endix)f(2)i (of)f(Ref)h(1,)g(but)e(using)h(the)h(constan)m(ts)g(of)g(Ref)f(4.)p eop end %%Page: 23 25 TeXDict begin 23 24 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palFk45z)2679 b Fl(23)0 351 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palFk45z\()45 b(double)i(r1950,)f(double)g(d1950,)g(double)g(bepoch,)g(double)g Fg(\003)p Fe(r2000,)227 464 y(double)g Fg(\003)p Fe(d2000)h(\))0 647 y Fn(Argumen)m(ts:)262 806 y(r1950)36 b(=)f(double)h(\(Giv)m(en\)) 427 919 y Fl(B1950.0)d(FK4)e(RA)g(at)g(ep)s(o)s(c)m(h)f(\(radians\).) 262 1061 y Fn(d1950)36 b(=)f(double)h(\(Giv)m(en\))427 1174 y Fl(B1950.0)d(FK4)e(Dec)h(at)f(ep)s(o)s(c)m(h)f(\(radians\).)262 1315 y Fn(b)s(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv)m(en\))427 1428 y Fl(Besselian)d(ep)s(o)s(c)m(h)e(\(e.g.)42 b(1979.3\))262 1570 y Fn(r2000)36 b(=)f(double)h(\(Returned\))427 1683 y Fl(J2000.0)d(FK5)e(RA)f(\(Radians\).)262 1824 y Fn(d2000)36 b(=)f(double)h(\(Returned\))427 1937 y Fl(J2000.0)d(FK5)e (Dec\(Radians\).)0 2156 y Fn(Notes:)336 2478 y Fg(\017)46 b Fl(The)31 b(ep)s(o)s(c)m(h)f(BEPOCH)h(is)g(strictly)g(sp)s(eaking)g (Besselian,)i(but)d(if)h(a)g(Julian)f(ep)s(o)s(c)m(h)h(is)g(supplied) 427 2591 y(the)g(result)f(will)h(b)s(e)f(a\013ected)h(only)g(to)g(a)g (negligible)h(exten)m(t.)336 2733 y Fg(\017)46 b Fl(Con)m(v)m(ersion)32 b(from)e(Besselian)i(ep)s(o)s(c)m(h)f(1950.0)i(to)f(Julian)e(ep)s(o)s (c)m(h)h(2000.0)i(only)e(is)g(pro)m(vided)f(for.)427 2846 y(Con)m(v)m(ersions)43 b(in)m(v)m(olving)g(other)f(ep)s(o)s(c)m (hs)g(will)g(require)f(use)h(of)g(the)g(appropriate)g(precession,)427 2959 y(prop)s(er)29 b(motion,)j(and)d(E-terms)i(routines)f(b)s(efore)g (and/or)g(after)h(palFk45z)h(is)f(called.)336 3100 y Fg(\017)46 b Fl(In)33 b(the)h(FK4)g(catalogue)j(the)c(prop)s(er)g (motions)h(of)g(stars)f(within)h(10)g(degrees)g(of)g(the)g(p)s(oles)g (do)427 3213 y(not)26 b(em)m(b)s(o)s(dy)e(the)i(di\013eren)m(tial)h (E-term)e(e\013ect)i(and)e(should,)h(strictly)g(sp)s(eaking,)h(b)s(e)d (handled)h(in)427 3326 y(a)32 b(di\013eren)m(t)f(manner)f(from)h(stars) g(outside)g(these)h(regions.)43 b(Ho)m(w)m(ev)m(er,)34 b(giv)m(en)e(the)f(general)h(lac)m(k)427 3439 y(of)39 b(homogeneit)m(y)h(of)e(the)h(star)f(data)h(a)m(v)-5 b(ailable)41 b(for)d(routine)g(astrometry)-8 b(,)42 b(the)d (di\016culties)f(of)427 3552 y(handling)32 b(p)s(ositions)g(that)h(ma)m (y)g(ha)m(v)m(e)h(b)s(een)e(determined)g(from)g(astrometric)i(\014elds) d(spanning)427 3665 y(the)25 b(p)s(olar)f(and)g(non-p)s(olar)g (regions,)i(the)e(lik)m(eliho)s(o)s(d)h(that)g(the)g(di\013eren)m(tial) h(E-terms)e(e\013ect)i(w)m(as)427 3778 y(not)31 b(tak)m(en)h(in)m(to)g (accoun)m(t)g(when)d(allo)m(wing)k(for)d(prop)s(er)f(motion)j(in)e (past)h(astrometry)-8 b(,)32 b(and)e(the)427 3891 y(undesirabilit)m(y)g (of)f(a)h(discon)m(tin)m(uit)m(y)g(in)f(the)h(algorithm,)h(the)e (decision)h(has)f(b)s(een)f(made)i(in)f(this)427 4004 y(routine)c(to)g(include)f(the)h(e\013ect)h(of)f(di\013eren)m(tial)h (E-terms)e(on)h(the)f(prop)s(er)f(motions)i(for)g(all)g(stars,)427 4117 y(whether)i(p)s(olar)g(or)h(not.)40 b(A)m(t)29 b(ep)s(o)s(c)m(h)e (2000,)j(and)d(measuring)g(on)h(the)f(sky)h(rather)f(than)g(in)h(terms) 427 4229 y(of)i(dRA,)f(the)h(errors)f(resulting)h(from)f(this)g (simpli\014cation)i(are)f(less)g(than)f(1)h(milliarcsecond)h(in)427 4342 y(p)s(osition)g(and)f(1)g(milliarcsecond)i(p)s(er)d(cen)m(tury)i (in)f(prop)s(er)f(motion.)-2 4525 y Fn(References)n(:)336 4848 y Fg(\017)46 b Fl(Aoki,S.,)32 b(et)f(al,)g(1983.)43 b(Astron.Astroph)m(ys.,)30 b(128,)i(263.)336 4990 y Fg(\017)46 b Fl(Smith,)34 b(C.A.)f(et)h(al,)g(1989.)50 b Fe(")p Fl(The)33 b(transformation)g(of)g(astrometric)i(catalog)g(systems)f(to) f(the)427 5103 y(equino)m(x)e(J2000.0)p Fe(")p Fl(.)43 b(Astron.J.)30 b(97,)i(265.)336 5244 y Fg(\017)46 b Fl(Y)-8 b(allop,)33 b(B.D.)g(et)f(al,)g(1989.)46 b Fe(")p Fl(T)-8 b(ransformation)31 b(of)g(mean)g(star)h(places)g(from)f(FK4)h(B1950.0)i (to)427 5357 y(FK5)d(J2000.0)i(using)d(matrices)h(in)f(6-space)p Fe(")p Fl(.)42 b(Astron.J.)30 b(97,)i(274.)336 5499 y Fg(\017)46 b Fl(Seidelmann,)h(P)-8 b(.K.)44 b(\(ed\),)k(1992.)83 b Fe(")p Fl(Explanatory)44 b(Supplemen)m(t)f(to)i(the)f(Astronomical)h (Al-)427 5612 y(manac)p Fe(")p Fl(,)31 b(ISBN)f(0-935702-68-7.)p eop end %%Page: 24 26 TeXDict begin 24 25 bop 0 52 a Fl(24)2643 b Fh(SUN/267.1)63 b(|)d(palFk524)p 0 351 3780 12 v 0 486 a Fi(palFk524)262 b Fc(Con)m(v)m(ert)37 b(J2000.0)f(FK5)j(star)f(data)f(to)h(B1950.0)1777 599 y(FK4)3245 486 y Fi(palFk524)0 800 y Fn(Description:)47 b Fl(This)c(function)g(con)m(v)m(erts)j(stars)e(from)f(the)h(IA)m(U)h (1976,)k(FK5,)f(F)-8 b(ric)m(k)m(e)46 b(system,)i(to)c(the)227 913 y(Bessel-New)m(com)m(b,)32 b(FK4)c(system.)41 b(The)27 b(precepts)h(of)h(Smith)e(et)i(al)g(\(Ref)g(1\))f(are)h(follo)m(w)m (ed,)i(using)c(the)227 1026 y(implemen)m(tation)33 b(b)m(y)e(Y)-8 b(allop)32 b(et)g(al)f(\(Ref)h(2\))f(of)g(a)h(matrix)f(metho)s(d)f(due) h(to)g(Standish.)42 b(Kinoshita)p Fe(')p Fl(s)227 1139 y(dev)m(elopmen)m(t)h(of)f(Ando)m(y)m(er)p Fe(')p Fl(s)f(p)s(ost-New)m (com)m(b)i(precession)e(is)h(used.)73 b(The)40 b(n)m(umerical)i (constan)m(ts)227 1252 y(from)30 b(Seidelmann)g(et)h(al)g(\(Ref)g(3\))g (are)g(used)e(canonically)-8 b(.)0 1444 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palFk524\()45 b(double)i(r2000,)f(double)g(d2000,)g(double)g (dr2000,)g(double)g(dd2000,)227 1557 y(double)g(p2000,)g(double)h (v2000,)f(double)g Fg(\003)p Fe(r1950,)g(double)g Fg(\003)p Fe(d1950,)h(double)f Fg(\003)p Fe(dr1950,)g(double)227 1670 y Fg(\003)p Fe(dd1950,)h(double)f Fg(\003)p Fe(p1950,)g(double)g Fg(\003)p Fe(v1950)h(\))0 1862 y Fn(Argumen)m(ts:)262 2030 y(r2000)36 b(=)f(double)h(\(Giv)m(en\))427 2143 y Fl(J2000.0)d(FK5)e(RA)f(\(radians\).)262 2291 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 2404 y Fl(J2000.0)d(FK5)e(Dec)g (\(radians\).)262 2552 y Fn(dr2000)36 b(=)f(double)h(\(Giv)m(en\))427 2665 y Fl(J2000.0)d(FK5)e(RA)f(prop)s(er)f(motion)i(\(rad/Jul.yr\))262 2814 y Fn(dd2000)36 b(=)f(double)h(\(Giv)m(en\))427 2927 y Fl(J2000.0)d(FK5)e(Dec)g(prop)s(er)e(motion)i(\(rad/Jul.yr\))262 3075 y Fn(p2000)36 b(=)f(double)h(\(Giv)m(en\))427 3188 y Fl(J2000.0)d(FK5)e(parallax)g(\(arcsec\))262 3336 y Fn(v2000)36 b(=)f(double)h(\(Giv)m(en\))427 3449 y Fl(J2000.0)d(FK5)e (radial)f(v)m(elo)s(cit)m(y)j(\(km/s,)e(+v)m(e)g(=)f(mo)m(ving)h(a)m(w) m(a)m(y\))262 3597 y Fn(r1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 3710 y Fl(B1950.0)e(FK4)e(RA)g(\(radians\).)262 3859 y Fn(d1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 3972 y Fl(B1950.0)e(FK4)e(Dec)h(\(radians\).)262 4120 y Fn(dr1950)k(=)f(double)h Fg(\003)f Fn(\(Returned\))427 4233 y Fl(B1950.0)e(FK4)e(RA)g(prop)s(er)e(motion)i(\(rad/Jul.yr\))262 4381 y Fn(dd1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 4494 y Fl(B1950.0)e(FK4)e(Dec)h(prop)s(er)d(motion)i(\(rad/Jul.yr\))262 4642 y Fn(p1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 4755 y Fl(B1950.0)e(FK4)e(parallax)h(\(arcsec\))262 4904 y Fn(v1950)k(=)f(double)h Fg(\003)f Fn(\(Returned\))427 5017 y Fl(B1950.0)e(FK4)e(radial)g(v)m(elo)s(cit)m(y)i(\(km/s,)e(+v)m (e)g(=)f(mo)m(ving)h(a)m(w)m(a)m(y\))0 5248 y Fn(Notes:)336 5580 y Fg(\017)46 b Fl(The)35 b(prop)s(er)e(motions)j(in)f(RA)g(are)g (dRA/dt)g(rather)g(than)f(cos\(Dec\))p Fg(\003)p Fl(dRA/dt,)40 b(and)34 b(are)h(p)s(er)427 5693 y(y)m(ear)c(rather)g(than)f(p)s(er)f (cen)m(tury)-8 b(.)p eop end %%Page: 25 27 TeXDict begin 25 26 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palFk54z)2679 b Fl(25)336 351 y Fg(\017)46 b Fl(Note)f(that)e(con)m(v)m(ersion)i (from)d(Julian)h(ep)s(o)s(c)m(h)g(2000.0)j(to)d(Besselian)i(ep)s(o)s(c) m(h)e(1950.0)i(only)e(is)427 464 y(pro)m(vided)32 b(for.)46 b(Con)m(v)m(ersions)32 b(in)m(v)m(olving)i(other)e(ep)s(o)s(c)m(hs)g (will)g(require)g(use)g(of)g(the)g(appropriate)427 577 y(precession,)d(prop)s(er)d(motion,)j(and)e(E-terms)g(routines)g(b)s (efore)g(and/or)h(after)g(FK524)h(is)e(called.)336 729 y Fg(\017)46 b Fl(In)33 b(the)h(FK4)g(catalogue)j(the)c(prop)s(er)g (motions)h(of)g(stars)f(within)h(10)g(degrees)g(of)g(the)g(p)s(oles)g (do)427 841 y(not)26 b(em)m(b)s(o)s(dy)e(the)i(di\013eren)m(tial)h (E-term)e(e\013ect)i(and)e(should,)h(strictly)g(sp)s(eaking,)h(b)s(e)d (handled)h(in)427 954 y(a)32 b(di\013eren)m(t)f(manner)f(from)h(stars)g (outside)g(these)h(regions.)43 b(Ho)m(w)m(ev)m(er,)34 b(giv)m(en)e(the)f(general)h(lac)m(k)427 1067 y(of)39 b(homogeneit)m(y)h(of)e(the)h(star)f(data)h(a)m(v)-5 b(ailable)41 b(for)d(routine)g(astrometry)-8 b(,)42 b(the)d (di\016culties)f(of)427 1180 y(handling)32 b(p)s(ositions)g(that)h(ma)m (y)g(ha)m(v)m(e)h(b)s(een)e(determined)g(from)g(astrometric)i(\014elds) d(spanning)427 1293 y(the)25 b(p)s(olar)f(and)g(non-p)s(olar)g (regions,)i(the)e(lik)m(eliho)s(o)s(d)h(that)g(the)g(di\013eren)m(tial) h(E-terms)e(e\013ect)i(w)m(as)427 1406 y(not)31 b(tak)m(en)h(in)m(to)g (accoun)m(t)g(when)d(allo)m(wing)k(for)d(prop)s(er)f(motion)j(in)e (past)h(astrometry)-8 b(,)32 b(and)e(the)427 1519 y(undesirabilit)m(y)g (of)f(a)h(discon)m(tin)m(uit)m(y)g(in)f(the)h(algorithm,)h(the)e (decision)h(has)f(b)s(een)f(made)i(in)f(this)427 1632 y(routine)c(to)g(include)f(the)h(e\013ect)h(of)f(di\013eren)m(tial)h (E-terms)e(on)h(the)f(prop)s(er)f(motions)i(for)g(all)g(stars,)427 1745 y(whether)i(p)s(olar)g(or)h(not.)40 b(A)m(t)29 b(ep)s(o)s(c)m(h)e (2000,)j(and)d(measuring)g(on)h(the)f(sky)h(rather)f(than)g(in)h(terms) 427 1858 y(of)i(dRA,)f(the)h(errors)f(resulting)h(from)f(this)g (simpli\014cation)i(are)f(less)g(than)f(1)h(milliarcsecond)h(in)427 1971 y(p)s(osition)g(and)f(1)g(milliarcsecond)i(p)s(er)d(cen)m(tury)i (in)f(prop)s(er)f(motion.)-2 2169 y Fn(References)n(:)336 2507 y Fg(\017)46 b Fl(Smith,)34 b(C.A.)f(et)h(al,)g(1989.)50 b Fe(")p Fl(The)33 b(transformation)g(of)g(astrometric)i(catalog)g (systems)f(to)f(the)427 2620 y(equino)m(x)e(J2000.0)p Fe(")p Fl(.)43 b(Astron.J.)30 b(97,)i(265.)336 2771 y Fg(\017)46 b Fl(Y)-8 b(allop,)33 b(B.D.)g(et)f(al,)g(1989.)46 b Fe(")p Fl(T)-8 b(ransformation)31 b(of)g(mean)g(star)h(places)g(from) f(FK4)h(B1950.0)i(to)427 2884 y(FK5)d(J2000.0)i(using)d(matrices)h(in)f (6-space)p Fe(")p Fl(.)42 b(Astron.J.)30 b(97,)i(274.)336 3035 y Fg(\017)46 b Fl(Seidelmann,)h(P)-8 b(.K.)44 b(\(ed\),)k(1992.)83 b Fe(")p Fl(Explanatory)44 b(Supplemen)m(t)f(to)i(the)f(Astronomical)h (Al-)427 3148 y(manac)p Fe(")p Fl(,)31 b(ISBN)f(0-935702-68-7.)p 0 3399 3780 12 v 0 3534 a Fi(palFk54z)881 3532 y Fc(Con)m(v)m(ert)37 b(a)h(J2000.0)e(FK5)j(star)f(p)s(osition)f(to)790 3645 y(B1950.0)f(FK4)j(assuming)f(zero)g(prop)s(er)g(motion)1569 3758 y(and)h(parallax)3252 3534 y Fi(palFk54z)0 3991 y Fn(Description:)47 b Fl(This)30 b(function)g(con)m(v)m(erts)j(star)e (p)s(ositions)g(from)g(the)g(IA)m(U)g(1976,)i(FK5,)f(F)-8 b(ric)m(k)m(e)34 b(system)d(to)227 4103 y(the)g(Bessel-New)m(com)m(b,)i (FK4)e(system.)0 4302 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palFk54z\()45 b(double)i(r2000,)f(double)g(d2000,)g(double)g (bepoch,)g(double)g Fg(\003)p Fe(r1950,)227 4415 y(double)g Fg(\003)p Fe(d1950,)h(double)f Fg(\003)p Fe(dr1950,)g(double)g Fg(\003)p Fe(dd1950)h(\))0 4613 y Fn(Argumen)m(ts:)262 4787 y(r2000)36 b(=)f(double)h(\(Giv)m(en\))427 4900 y Fl(J2000.0)d(FK5)e(RA)f(\(radians\).)262 5051 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 5164 y Fl(J2000.0)d(FK5)e(Dec)g (\(radians\).)262 5316 y Fn(b)s(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv) m(en\))427 5429 y Fl(Besselian)d(ep)s(o)s(c)m(h)e(\(e.g.)42 b(1950.0\).)262 5580 y Fn(r1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 5693 y Fl(B1950)e(FK4)e(RA)f(\(radians\))h(at)g(ep) s(o)s(c)m(h)f Fe(")p Fl(b)s(ep)s(o)s(c)m(h)p Fe(")p Fl(.)p eop end %%Page: 26 28 TeXDict begin 26 27 bop 0 52 a Fl(26)2656 b Fh(SUN/267.1)63 b(|)e(palGaleq)262 351 y Fn(d1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 464 y Fl(B1950)e(FK4)e(Dec)g(\(radians\))g(at)g(ep) s(o)s(c)m(h)f Fe(")p Fl(b)s(ep)s(o)s(c)m(h)p Fe(")p Fl(.)262 600 y Fn(dr1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 713 y Fl(B1950)e(FK4)e(prop)s(er)e(motion)i(\(RA\))g (\(radians/trop.yr\)\).)262 848 y Fn(dr1950)36 b(=)f(double)h Fg(\003)f Fn(\(Returned\))427 961 y Fl(B1950)e(FK4)e(prop)s(er)e (motion)i(\(Dec\))h(\(radians/trop.yr\)\).)0 1171 y Fn(Notes:)336 1488 y Fg(\017)46 b Fl(The)30 b(prop)s(er)f(motion)i(in)f(RA)h(is)f (dRA/dt)g(rather)g(than)h(cos\(Dec\))p Fg(\003)p Fl(dRA/dt.)336 1623 y Fg(\017)46 b Fl(Con)m(v)m(ersion)32 b(from)e(Julian)h(ep)s(o)s (c)m(h)f(2000.0)j(to)f(Besselian)g(ep)s(o)s(c)m(h)f(1950.0)i(only)e(is) g(pro)m(vided)f(for.)427 1736 y(Con)m(v)m(ersions)45 b(in)m(v)m(olving)h(other)f(ep)s(o)s(c)m(hs)f(will)g(require)h(use)f (of)g(the)h(appropriate)f(precession)427 1849 y(functions)30 b(b)s(efore)g(and)g(after)h(this)f(function)g(is)h(called.)336 1985 y Fg(\017)46 b Fl(The)30 b(FK5)h(prop)s(er)e(motions,)i(the)g (parallax)g(and)f(the)g(radial)h(v)m(elo)s(cit)m(y)i(are)e(presumed)e (zero.)336 2120 y Fg(\017)46 b Fl(It)30 b(is)g(the)h(in)m(ten)m(tion)g (that)g(FK5)f(should)f(b)s(e)h(a)g(close)h(appro)m(ximation)g(to)g(an)f (inertial)h(frame,)f(so)427 2233 y(that)e(distan)m(t)f(ob)5 b(jects)28 b(ha)m(v)m(e)f(zero)h(prop)s(er)d(motion;)k(suc)m(h)e(ob)5 b(jects)27 b(ha)m(v)m(e)h(\(in)f(general\))h(non-zero)427 2346 y(prop)s(er)h(motion)i(in)f(FK4,)h(and)f(this)g(function)g (returns)g(those)h(\014ctitious)g(prop)s(er)e(motions.)336 2482 y Fg(\017)46 b Fl(The)22 b(p)s(osition)g(returned)e(b)m(y)i(this)g (function)g(is)f(in)h(the)g(B1950)i(reference)e(frame)g(but)g(at)g (Besselian)427 2595 y(ep)s(o)s(c)m(h)38 b(BEPOCH.)g(F)-8 b(or)38 b(comparison)g(with)g(catalogues)j(the)d Fe(")p Fl(b)s(ep)s(o)s(c)m(h)p Fe(")e Fl(argumen)m(t)i(will)g(fre-)427 2708 y(quen)m(tly)31 b(b)s(e)f(1950.0.)p 0 2909 3780 12 v 0 3043 a Fi(palGaleq)258 b Fc(Con)m(v)m(ert)37 b(from)g(galactic)f (to)i(J2000.0)f(equatorial)1598 3156 y(co)s(ordinates)3261 3043 y Fi(palGaleq)0 3316 y Fn(Description:)47 b Fl(T)-8 b(ransformation)33 b(from)g(IA)m(U)h(1958)i(galactic)g(co)s(ordinates)f (to)f(J2000.0)i(equatorial)f(co)s(or-)227 3428 y(dinates.)0 3606 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palGaleq)e(\()j (double)e(dl,)h(double)f(db,)h(double)f Fg(\003)p Fe(dr,)h(double)f Fg(\003)p Fe(dd)i(\);)0 3783 y Fn(Argumen)m(ts:)262 3936 y(dl)35 b(=)g(double)h(\(Giv)m(en\))427 4049 y Fl(Galactic)d(longitude) e(\(radians\).)262 4185 y Fn(db)k(=)g(double)h(\(Giv)m(en\))427 4297 y Fl(Galactic)d(latitude)f(\(radians\).)262 4433 y Fn(dr)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4546 y Fl(J2000.0)e(RA)d(\(radians\))262 4682 y Fn(dd)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4795 y Fl(J2000.0)e(Dec)e (\(radians\))0 5004 y Fn(Notes:)227 5168 y Fl(The)e(equatorial)i(co)s (ordinates)e(are)h(J2000.0.)42 b(Use)30 b(the)f(routine)g(palGe50)i(if) e(con)m(v)m(ersion)i(to)f(B1950.0)227 5281 y Fe(')p Fl(FK4)p Fe(')h Fl(co)s(ordinates)g(is)f(required.)-2 5458 y Fn(See)35 b(Also)n(:)227 5622 y Fl(Blaau)m(w)d(et)f(al,)g(Mon.Not.R.Astron.So)s (c.,121,123)36 b(\(1960\))p eop end %%Page: 27 29 TeXDict begin 27 28 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palGalsup)2637 b Fl(27)p 0 351 3780 12 v 0 486 a Fi(palGalsup)321 b Fc(Con)m(v)m(ert)37 b(from)g(galactic)f(to)i(sup)s(ergalactic)1598 599 y(co)s(ordinates)3191 486 y Fi(palGalsup)0 794 y Fn(Description:)47 b Fl(T)-8 b(ransformation)42 b(from)g(IA)m(U)h(1958) h(galactic)h(co)s(ordinates)e(to)g(de)f(V)-8 b(aucouleurs)43 b(sup)s(er-)227 907 y(galactic)34 b(co)s(ordinates.)0 1095 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palGalsup)e(\()j (double)e(dl,)h(double)f(db,)h(double)f Fg(\003)p Fe(dsl,)h(double)f Fg(\003)p Fe(dsb)h(\);)0 1283 y Fn(Argumen)m(ts:)262 1446 y(dl)35 b(=)g(double)h(\(Giv)m(en\))427 1559 y Fl(Galactic)d (longitude.)262 1705 y Fn(db)i(=)g(double)h(\(Giv)m(en\))427 1818 y Fl(Galactic)d(latitude.)262 1964 y Fn(dsl)i(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2077 y Fl(Sup)s(ergalactic)d(longitude.) 262 2223 y Fn(dsb)j(=)h(double)f Fg(\003)g Fn(\(Returned\))427 2336 y Fl(Sup)s(ergalactic)d(latitude.)-2 2524 y Fn(See)j(Also)n(:)336 2851 y Fg(\017)46 b Fl(de)38 b(V)-8 b(aucouleurs,)41 b(de)d(V)-8 b(aucouleurs,)41 b(&)d(Corwin,)i(Second)e(Reference)h (Catalogue)h(of)e(Brigh)m(t)427 2964 y(Galaxies,)33 b(U.)e(T)-8 b(exas,)31 b(page)g(8.)336 3110 y Fg(\017)46 b Fl(Systems)29 b(&)g(Applied)g(Sciences)i(Corp.,)e(Do)s(cumen)m(tation)i(for)e(the)h (mac)m(hine-readable)h(v)m(ersion)427 3223 y(of)g(the)f(ab)s(o)m(v)m(e) i(catalogue,)h(Con)m(tract)f(NAS)e(5-26490.)227 3410 y(\(These)k(t)m(w)m(o)h(references)g(giv)m(e)g(di\013eren)m(t)f(v)-5 b(alues)34 b(for)g(the)g(galactic)j(longitude)d(of)g(the)g(sup)s (ergalactic)227 3523 y(origin.)41 b(Both)31 b(are)g(wrong;)f(the)h (correct)h(v)-5 b(alue)30 b(is)h(L2=137.37.\))p 0 3761 V 0 3895 a Fi(palGe50)231 b Fc(T)-10 b(ransform)36 b(Galactic)h(Co)s (ordinate)f(to)i(B1950)f(FK4)229 b Fi(palGe50)0 4114 y Fn(Description:)47 b Fl(T)-8 b(ransformation)23 b(from)g(IA)m(U)i (1958)g(galactic)i(co)s(ordinates)d(to)h(B1950.0)h Fe(')p Fl(FK4)p Fe(')e Fl(equatorial)227 4227 y(co)s(ordinates.)0 4415 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palGe50\()46 b(double)g(dl,)h(double)f(db,)h(double)f Fg(\003)p Fe(dr,)h(double)f Fg(\003)p Fe(dd)i(\);)0 4602 y Fn(Argumen)m(ts:)262 4766 y(dl)35 b(=)g(double)h(\(Giv)m(en\))427 4879 y Fl(Galactic)d(longitude) e(\(radians\))262 5025 y Fn(db)k(=)g(double)h(\(Giv)m(en\))427 5138 y Fl(Galactic)d(latitude)f(\(radians\))262 5284 y Fn(dr)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5397 y Fl(B9150.0)e(FK4)e(RA.)262 5543 y Fn(dd)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5656 y Fl(B1950.0)e(FK4)e(Dec.)p eop end %%Page: 28 30 TeXDict begin 28 29 bop 0 52 a Fl(28)2695 b Fh(SUN/267.1)63 b(|)d(palIn)m(tin)0 351 y Fn(Notes:)336 673 y Fg(\017)46 b Fl(The)20 b(equatorial)i(co)s(ordinates)f(are)g(B1950.0)j Fe(')p Fl(FK4)p Fe(')p Fl(.)37 b(Use)21 b(the)f(routine)h(palGaleq)h (if)e(con)m(v)m(ersion)427 786 y(to)31 b(J2000.0)i(co)s(ordinates)e(is) f(required.)-2 968 y Fn(See)35 b(Also)n(:)336 1290 y Fg(\017)46 b Fl(Blaau)m(w)32 b(et)f(al,)g(Mon.Not.R.Astron.So)s (c.,121,123)36 b(\(1960\))p 0 1507 3780 12 v 0 1642 a Fi(palGeo)t(c)411 b Fc(Con)m(v)m(ert)37 b(geo)s(detic)g(p)s(osition)g (to)h(geo)s(cen)m(tric)409 b Fi(palGeo)t(c)0 1841 y Fn(Description:)47 b Fl(Con)m(v)m(ert)31 b(geo)s(detic)h(p)s(osition)e(to)h(geo)s(cen)m (tric.)0 2023 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palGeoc\()e(double)h(p,)i(double)e(h,)h(double)f Fg(\003)i Fe(r,)f(double)f Fg(\003)p Fe(z)i(\);)0 2205 y Fn(Argumen)m(ts:)262 2363 y(p)35 b(=)g(double)h(\(Giv)m(en\))427 2476 y Fl(latitude)c (\(radians\))262 2616 y Fn(h)j(=)g(double)h(\(Giv)m(en\))427 2729 y Fl(heigh)m(t)c(ab)s(o)m(v)m(e)f(reference)g(spheroid)e(\(geo)s (detic,)k(metres\))262 2870 y Fn(r)i(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2983 y Fl(distance)c(from)f(Earth)g(axis)h(\(A)m (U\))262 3123 y Fn(z)k(=)h(double)f Fg(\003)g Fn(\(Returned\))427 3236 y Fl(distance)c(from)f(plane)h(of)f(Earth)g(equator)h(\(A)m(U\))0 3452 y Fn(Notes:)336 3774 y Fg(\017)46 b Fl(Geo)s(cen)m(tric)33 b(latitude)e(can)g(b)s(e)e(obtained)i(b)m(y)f(ev)-5 b(aluating)32 b(atan2\(z,r\))336 3915 y Fg(\017)46 b Fl(Uses)31 b(W)m(GS84)h (reference)f(ellipsoid)g(and)e(calls)j(iauGd2gc)p 0 4132 V 0 4267 a Fi(palIn)l(tin)373 b Fc(Con)m(v)m(ert)36 b(free-format)g (input)i(in)m(to)f(an)i(in)m(teger)370 b Fi(palIn)l(tin)0 4466 y Fn(Description:)47 b Fl(Extracts)31 b(a)f(n)m(um)m(b)s(er)g (from)f(an)i(input)e(string)h(starting)i(at)f(the)f(sp)s(eci\014ed)g (index.)0 4648 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palIntin\()e(const)h(char)h Fg(\003)h Fe(string,)e(int)h Fg(\003)p Fe(nstrt,)g(long)f Fg(\003)p Fe(ireslt,)g(int)h Fg(\003)p Fe(jflag)227 4761 y(\);)0 4943 y Fn(Argumen)m(ts:)262 5101 y(string)35 b(=)g(const)h(c)m(har)f Fg(\003)h Fn(\(Giv)m(en\))427 5214 y Fl(String)30 b(con)m(taining)i(n)m(um)m(b)s(er)d(to)i(b)s(e)f (deco)s(ded.)262 5354 y Fn(nstrt)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Giv)m(en)g(and)g(Returned\))427 5467 y Fl(Character)40 b(n)m(um)m(b)s(er)e(indicating)i(where)e(deco)s(ding)h(should)g(start.) 67 b(On)38 b(output)h(its)h(v)-5 b(alue)39 b(is)427 5580 y(up)s(dated)c(to)h(b)s(e)f(the)h(lo)s(cation)i(of)e(the)g(p)s(ossible) f(next)h(v)-5 b(alue.)57 b(F)-8 b(or)37 b(compatibilit)m(y)h(with)d (SLA)427 5693 y(the)c(\014rst)e(c)m(haracter)j(is)f(index)f(1.)p eop end %%Page: 29 31 TeXDict begin 29 30 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palMap)2737 b Fl(29)262 351 y Fn(ireslt)35 b(=)g(long)h Fg(\003)f Fn(\(Returned\))427 464 y Fl(Result.)41 b(Not)32 b(up)s(dated)d(when)g (j\015ag=1.)262 605 y Fn(j\015ag)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 718 y Fl(status:)41 b(-1)31 b(=)f(-OK,)h(0)f(=)g (+OK,)g(1)h(=)f(n)m(ull,)g(2)h(=)f(error)0 935 y Fn(Notes:)336 1257 y Fg(\017)46 b Fl(Uses)35 b(the)g(strtol\(\))h(system)f(call)g(to) h(do)e(the)h(parsing.)53 b(This)33 b(ma)m(y)i(lead)h(to)f(subtle)f (di\013erences)427 1370 y(when)c(compared)g(to)h(the)g(SLA/F)f (parsing.)336 1511 y Fg(\017)46 b Fl(Commas)36 b(are)f(recognized)i(as) f(a)g(sp)s(ecial)g(case)g(and)f(are)h(skipp)s(ed)e(if)h(one)h(happ)s (ens)d(to)j(b)s(e)f(the)427 1624 y(next)30 b(c)m(haracter)g(when)f(up)s (dating)f(nstrt.)40 b(Additionally)30 b(the)f(output)g(nstrt)g(p)s (osition)g(will)h(skip)427 1737 y(past)h(an)m(y)f(trailing)i(space.)336 1878 y Fg(\017)46 b Fl(If)30 b(no)g(n)m(um)m(b)s(er)g(can)g(b)s(e)g (found)f(\015ag)i(will)f(b)s(e)g(set)h(to)g(1.)336 2019 y Fg(\017)46 b Fl(If)41 b(the)g(n)m(um)m(b)s(er)f(o)m(v)m(er\015o)m(ws) i(or)f(under\015o)m(ws)e(j\015ag)j(will)f(b)s(e)f(set)i(to)g(2.)73 b(F)-8 b(or)42 b(o)m(v)m(er\015o)m(w)g(the)f(re-)427 2132 y(turned)34 b(result)g(will)h(ha)m(v)m(e)h(the)e(v)-5 b(alue)35 b(LONG)p Fe(_)p Fl(MAX,)g(for)g(under\015o)m(w)e(it)i(will)g (ha)m(v)m(e)g(the)g(v)-5 b(alue)427 2245 y(LONG)p Fe(_)p Fl(MIN.)p 0 2464 3780 12 v 0 2599 a Fi(palMap)389 b Fc(Con)m(v)m(ert)37 b(star)h(RA,Dec)g(from)g(mean)g(place)g(to)1387 2712 y(geo)s(cen)m(tric)f(apparen)m(t)3334 2599 y Fi(palMap)0 2913 y Fn(Description:)47 b Fl(Con)m(v)m(ert)31 b(star)f(RA,Dec)i(from) e(mean)h(place)g(to)g(geo)s(cen)m(tric)i(apparen)m(t.)0 3095 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palMap\()f(double)g (rm,)h(double)f(dm,)h(double)f(pr,)h(double)f(pd,)h(double)f(px,)227 3208 y(double)g(rv,)h(double)f(eq,)h(double)f(date,)h(double)f Fg(\003)p Fe(ra,)h(double)f Fg(\003)p Fe(da)i(\);)0 3391 y Fn(Argumen)m(ts:)262 3549 y(rm)35 b(=)g(double)h(\(Giv)m(en\))427 3662 y Fl(Mean)31 b(RA)g(\(radians\))262 3803 y Fn(dm)k(=)g(double)h (\(Giv)m(en\))427 3916 y Fl(Mean)31 b(declination)h(\(radians\))262 4057 y Fn(pr)j(=)g(double)h(\(Giv)m(en\))427 4170 y Fl(RA)31 b(prop)s(er)e(motion,)i(c)m(hanges)g(p)s(er)f(Julian)g(y)m(ear)h (\(radians\))262 4311 y Fn(p)s(d)k(=)g(double)h(\(Giv)m(en\))427 4424 y Fl(Dec)c(prop)s(er)d(motion,)i(c)m(hanges)g(p)s(er)f(Julian)g(y) m(ear)h(\(radians\))262 4565 y Fn(p)m(x)k(=)g(double)h(\(Giv)m(en\))427 4678 y Fl(P)m(arallax)c(\(arcsec\))262 4818 y Fn(rv)j(=)g(double)h (\(Giv)m(en\))427 4931 y Fl(Radial)31 b(v)m(elo)s(cit)m(y)i(\(km/s,)e (+v)m(e)g(if)f(receding\))262 5072 y Fn(eq)35 b(=)g(double)h(\(Giv)m (en\))427 5185 y Fl(Ep)s(o)s(c)m(h)30 b(and)g(equino)m(x)g(of)h(star)g (data)g(\(Julian\))262 5326 y Fn(date)j(=)i(double)f(\(Giv)m(en\))427 5439 y Fl(TDB)c(for)f(apparen)m(t)h(place)g(\(JD-2400000.5\))262 5580 y Fn(ra)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 5693 y Fl(Apparen)m(t)31 b(RA)f(\(radians\))p eop end %%Page: 30 32 TeXDict begin 30 31 bop 0 52 a Fl(30)2611 b Fh(SUN/267.1)63 b(|)e(palMappa)262 351 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 464 y Fl(Apparen)m(t)c(dec)f(\(radians\))0 695 y Fn(Notes:)336 1027 y Fg(\017)46 b Fl(Calls)31 b(palMappa)g(and)f (palMap)s(qk)336 1175 y Fg(\017)46 b Fl(The)30 b(reference)h(systems)f (and)g(timescales)i(used)e(are)h(IA)m(U)g(2006.)p 0 1417 3780 12 v 0 1552 a Fi(palMappa)205 b Fc(Compute)38 b(parameters)e (needed)j(b)m(y)g(palAmp)s(qk)1519 1665 y(and)g(palMap)s(qk)3194 1552 y Fi(palMappa)0 1889 y Fn(Description:)47 b Fl(Compute)d (star-indep)s(enden)m(t)g(parameters)h(in)g(preparation)g(for)g (transformations)g(b)s(e-)227 2002 y(t)m(w)m(een)32 b(mean)e(place)i (and)d(geo)s(cen)m(tric)k(apparen)m(t)d(place.)227 2154 y(The)36 b(parameters)h(pro)s(duced)e(b)m(y)h(this)h(function)f(are)h (required)f(in)g(the)h(parallax,)i(ab)s(erration,)f(and)227 2267 y(n)m(utation/bias/precession)33 b(parts)d(of)g(the)h (mean/apparen)m(t)g(transformations.)227 2420 y(The)f(reference)h (systems)f(and)g(timescales)i(used)e(are)h(IA)m(U)g(2006.)0 2611 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palMappa\()e(double)h (eq,)h(double)f(date,)h(double)f(amprms[21])f(\))0 2803 y Fn(Argumen)m(ts:)262 2971 y(eq)35 b(=)g(double)h(\(Giv)m(en\))427 3083 y Fl(ep)s(o)s(c)m(h)30 b(of)h(mean)f(equino)m(x)h(to)g(b)s(e)f (used)g(\(Julian\))262 3232 y Fn(date)k(=)i(double)f(\(Giv)m(en\))427 3345 y Fl(TDB)c(\(JD-2400000.5\))262 3493 y Fn(amprms)k(=)h(double[21]) g(\(Returned\))427 3606 y Fl(star-indep)s(enden)m(t)30 b(mean-to-apparen)m(t)i(parameters:)506 3730 y Fg(\017)46 b Fl(\(0\))32 b(time)f(in)m(terv)-5 b(al)31 b(for)f(prop)s(er)f(motion) i(\(Julian)g(y)m(ears\))506 3860 y Fg(\017)46 b Fl(\(1-3\))32 b(barycen)m(tric)g(p)s(osition)e(of)h(the)f(Earth)g(\(A)m(U\))506 3991 y Fg(\017)46 b Fl(\(4-6\))32 b(helio)s(cen)m(tric)h(direction)e (of)f(the)h(Earth)f(\(unit)g(v)m(ector\))506 4121 y Fg(\017)46 b Fl(\(7\))32 b(\(gra)m(v)f(rad)f(Sun\))p Fg(\003)p Fl(2/\(Sun-Earth)g (distance\))506 4252 y Fg(\017)46 b Fl(\(8-10\))33 b(ab)m(v:)41 b(barycen)m(tric)31 b(Earth)f(v)m(elo)s(cit)m(y)j(in)d(units)g(of)h(c) 506 4382 y Fg(\017)46 b Fl(\(11\))32 b(sqrt\(1-v)p Fg(\003\003)p Fl(2\))h(where)d(v=mo)s(dulus\(ab)m(v\))506 4513 y Fg(\017)46 b Fl(\(12-20\))33 b(precession/n)m(utation)f(\(3,3\))g(matrix)0 4744 y Fn(Notes:)336 5075 y Fg(\017)46 b Fl(F)-8 b(or)43 b(date,)j(the)c(distinction)g(b)s(et)m(w)m(een)h(the)f(required)f(TDB)i (and)e(TT)g(is)h(alw)m(a)m(ys)i(negligible.)427 5188 y(Moreo)m(v)m(er,)33 b(for)d(all)h(but)f(the)h(most)f(critical)j (applications)e(UTC)f(is)g(adequate.)336 5336 y Fg(\017)46 b Fl(The)30 b(v)m(ector)i(amprms\(1-3\))f(is)g(referred)e(to)i(the)g (mean)f(equino)m(x)h(and)f(equator)h(of)g(ep)s(o)s(c)m(h)f(eq.)336 5485 y Fg(\017)46 b Fl(The)24 b(parameters)h(amprms)e(pro)s(duced)g(b)m (y)h(this)g(function)g(are)h(used)e(b)m(y)i(palAmp)s(qk,)g(palMap)s(qk) 427 5598 y(and)30 b(palMap)s(qkz.)p eop end %%Page: 31 33 TeXDict begin 31 32 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palMap)s(qk)2638 b Fl(31)p 0 351 3780 12 v 0 486 a Fi(palMap)t(qk)526 b Fc(Quic)m(k)39 b(mean)f(to)g(apparen)m(t)f(place)526 b Fi(palMap)t(qk)0 688 y Fn(Description:)47 b Fl(Quic)m(k)40 b(mean)g(to)h(apparen)m(t)f(place:)61 b(transform)40 b(a)g(star)g(RA,Dec)i(from)e(mean)g(place)h(to)227 801 y(geo)s(cen)m(tric)33 b(apparen)m(t)d(place,)i(giv)m(en)f(the)g (star-indep)s(enden)m(t)f(parameters.)227 949 y(Use)g(of)g(this)g (routine)g(is)g(appropriate)g(when)e(e\016ciency)j(is)f(imp)s(ortan)m (t)g(and)f(where)h(man)m(y)g(star)g(p)s(osi-)227 1062 y(tions,)j(all)g(referred)e(to)h(the)g(same)g(equator)g(and)g(equino)m (x,)g(are)g(to)h(b)s(e)e(transformed)g(for)g(one)h(ep)s(o)s(c)m(h.)227 1175 y(The)e(star-indep)s(enden)m(t)g(parameters)h(can)f(b)s(e)g (obtained)h(b)m(y)f(calling)i(the)e(palMappa)h(routine.)227 1323 y(If)f(the)h(parallax)g(and)f(prop)s(er)f(motions)i(are)f(zero)i (the)e(palMap)s(qkz)h(routine)f(can)h(b)s(e)f(used)f(instead.)0 1506 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palMapqk)e(\()j (double)e(rm,)h(double)f(dm,)h(double)f(pr,)h(double)f(pd,)h(double)227 1619 y(px,)g(double)f(rv,)h(double)f(amprms[21],)f(double)h Fg(\003)p Fe(ra,)h(double)g Fg(\003)p Fe(da)g(\);)0 1802 y Fn(Argumen)m(ts:)262 1960 y(rm)35 b(=)g(double)h(\(Giv)m(en\))427 2073 y Fl(Mean)31 b(RA)g(\(radians\))262 2215 y Fn(dm)k(=)g(double)h (\(Giv)m(en\))427 2328 y Fl(Mean)31 b(declination)h(\(radians\))262 2469 y Fn(pr)j(=)g(double)h(\(Giv)m(en\))427 2582 y Fl(RA)31 b(prop)s(er)e(motion,)i(c)m(hanges)g(p)s(er)f(Julian)g(y)m(ear)h (\(radians\))262 2723 y Fn(p)s(d)k(=)g(double)h(\(Giv)m(en\))427 2836 y Fl(Dec)c(prop)s(er)d(motion,)i(c)m(hanges)g(p)s(er)f(Julian)g(y) m(ear)h(\(radians\))262 2978 y Fn(p)m(x)k(=)g(double)h(\(Giv)m(en\))427 3091 y Fl(P)m(arallax)c(\(arcsec\))262 3232 y Fn(rv)j(=)g(double)h (\(Giv)m(en\))427 3345 y Fl(Radial)31 b(v)m(elo)s(cit)m(y)i(\(km/s,)e (+v)m(e)g(if)f(receding\))262 3486 y Fn(amprms)35 b(=)h(double)f([21])g (\(Giv)m(en\))427 3599 y Fl(Star-indep)s(enden)m(t)30 b(mean-to-apparen)m(t)i(parameters)e(\(see)i(palMappa\).)262 3741 y Fn(ra)j(=)g(double)g Fg(\003)h Fn(\(Returned\))427 3854 y Fl(Apparen)m(t)31 b(RA)f(\(radians\))262 3995 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 4108 y Fl(Apparen)m(t)c(dec)f(\(radians\))0 4326 y Fn(Notes:)336 4648 y Fg(\017)46 b Fl(The)30 b(reference)h(frames)f(and)g(timescales)i (used)e(are)h(p)s(ost)f(IA)m(U)h(2006.)p 0 4869 V 0 5004 a Fi(palMap)t(qkz)466 b Fc(Quic)m(k)39 b(mean)f(to)g(apparen)m(t)f (place)466 b Fi(palMap)t(qkz)0 5206 y Fn(Description:)47 b Fl(Quic)m(k)26 b(mean)h(to)g(apparen)m(t)g(place:)40 b(transform)26 b(a)h(star)g(RA,dec)g(from)f(mean)h(place)h(to)f(geo-) 227 5319 y(cen)m(tric)f(apparen)m(t)f(place,)i(giv)m(en)f(the)f (star-indep)s(enden)m(t)f(parameters,)i(and)e(assuming)g(zero)i (parallax)227 5432 y(and)k(prop)s(er)f(motion.)227 5580 y(Use)44 b(of)g(this)f(function)g(is)h(appropriate)f(when)f (e\016ciency)j(is)e(imp)s(ortan)m(t)h(and)f(where)g(man)m(y)g(star)227 5693 y(p)s(ositions,)34 b(all)h(with)e(parallax)h(and)e(prop)s(er)g (motion)i(either)g(zero)g(or)f(already)h(allo)m(w)m(ed)h(for,)f(and)f (all)p eop end %%Page: 32 34 TeXDict begin 32 33 bop 0 52 a Fl(32)2732 b Fh(SUN/267.1)63 b(|)e(palNut)227 351 y Fl(referred)42 b(to)h(the)g(same)g(equator)g (and)f(equino)m(x,)47 b(are)c(to)g(b)s(e)f(transformed)g(for)g(one)h (ep)s(o)s(c)m(h.)77 b(The)227 464 y(star-indep)s(enden)m(t)30 b(parameters)h(can)f(b)s(e)g(obtained)h(b)m(y)f(calling)i(the)f (palMappa)f(function.)227 612 y(The)20 b(corresp)s(onding)f(function)h (for)g(the)h(case)g(of)g(non-zero)f(parallax)i(and)d(prop)s(er)g (motion)i(is)f(palMap)s(qk.)227 761 y(The)30 b(reference)h(systems)f (and)g(timescales)i(used)e(are)h(IA)m(U)g(2006.)227 909 y(Strictly)h(sp)s(eaking,)g(the)g(function)f(is)g(not)h(v)-5 b(alid)32 b(for)f(solar-system)h(sources,)g(though)f(the)h(error)f (will)227 1022 y(usually)f(b)s(e)g(extremely)i(small.)0 1205 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palMapqkz\()e(double) h(rm,)h(double)f(dm,)h(double)f(amprms[21],)f(double)h Fg(\003)p Fe(ra,)227 1318 y(double)g Fg(\003)p Fe(da)i(\))0 1502 y Fn(Argumen)m(ts:)262 1661 y(rm)35 b(=)g(double)h(\(Giv)m(en\)) 427 1774 y Fl(Mean)31 b(RA)g(\(radians\).)262 1916 y Fn(dm)k(=)g(double)h(\(Giv)m(en\))427 2029 y Fl(Mean)31 b(Dec)h(\(radians\).)262 2171 y Fn(amprms)j(=)h(double[21])g(\(Giv)m (en\))427 2284 y Fl(Star-indep)s(enden)m(t)f(mean-to-apparen)m(t)j (parameters)f(\(see)g(palMappa\):)53 b(\(0-3\))38 b(not)e(used)f(\(4-) 427 2397 y(6\))40 b(not)g(used)e(\(7\))i(not)g(used)e(\(8-10\))k(ab)m (v:)59 b(barycen)m(tric)40 b(Earth)f(v)m(elo)s(cit)m(y)i(in)e(units)g (of)g(c)h(\(11\))427 2509 y(sqrt\(1-v)p Fg(\003\003)p Fl(2\))33 b(where)d(v=mo)s(dulus\(ab)m(v\))g(\(12-20\))j(precession/n)m (utation)f(\(3,3\))g(matrix)262 2651 y Fn(ra)j(=)g(double)g Fg(\003)h Fn(\(Returned\))427 2764 y Fl(Apparen)m(t)31 b(RA)f(\(radians\).)262 2906 y Fn(da)35 b(=)g(double)g Fg(\003)h Fn(\(Returned\))427 3019 y Fl(Apparen)m(t)31 b(Dec)g(\(radians\).)p 0 3242 3780 12 v 0 3377 a Fi(palNut)753 b Fc(F)-10 b(orm)38 b(the)h(matrix)e(of)h(n)m(utation)750 b Fi(palNut)0 3581 y Fn(Description:)47 b Fl(F)-8 b(orm)27 b(the)g(matrix)h(of)f(n)m(utation)h(for)f(a)g(giv)m(en)i(date)e(using)g (the)g(IA)m(U)h(2006)h(n)m(utation)f(mo)s(del)227 3694 y(and)i(palDeuler.)0 3878 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palNut\()f(double)g(date,)g(double)g(rmatn[3][3])f(\);)0 4061 y Fn(Argumen)m(ts:)262 4221 y(date)34 b(=)i(double)f(\(Giv)m(en\)) 427 4333 y Fl(TT)30 b(as)h(mo)s(di\014ed)e(Julian)h(date)h (\(JD-2400000.5\))262 4475 y Fn(rmatn)k(=)g(double)g([3][3])h (\(Returned\))427 4588 y Fl(Nutation)43 b(matrix)g(in)e(the)h(sense)g (v\(true\)=rmatn)g Fg(\003)g Fl(v\(mean\))h(where)f(v\(true\))g(is)g (the)g(star)427 4701 y(v)m(ector)28 b(relativ)m(e)g(to)f(the)f(true)g (equator)h(and)e(equino)m(x)i(of)f(date)h(and)e(v\(mean\))i(is)f(the)h (star)f(v)m(ector)427 4814 y(relativ)m(e)33 b(to)e(the)f(mean)h (equator)g(and)f(equino)m(x)h(of)f(date.)0 5033 y Fn(Notes:)336 5356 y Fg(\017)46 b Fl(Uses)31 b(iauNut06a)h(via)f(palNutc)336 5498 y Fg(\017)46 b Fl(The)41 b(distinction)g(b)s(et)m(w)m(een)h(TDB)f (and)f(TT)g(is)h(negligible.)74 b(F)-8 b(or)41 b(all)h(but)e(the)h (most)h(critical)427 5611 y(applications)32 b(UTC)e(is)g(adequate.)p eop end %%Page: 33 35 TeXDict begin 33 34 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palNutc)2722 b Fl(33)p 0 351 3780 12 v 0 486 a Fi(palNutc)364 b Fc(Calculate)36 b(n)m(utation)h(longitude)f(&)k(obliquot)m(y)1587 599 y(comp)s(onen)m(ts)3310 486 y Fi(palNutc)0 818 y Fn(Description:)47 b Fl(Calculates)38 b(the)e(longitude)h Fg(\003)g Fl(obliquit)m(y)h (comp)s(onen)m(ts)e(and)g(mean)h(obliquit)m(y)g(using)f(the)227 930 y(SOF)-10 b(A)30 b(library)-8 b(.)0 1118 y Fn(In)m(v)m(o)s(cation:) 130 b Fe(void)47 b(palNutc\()e(double)h(date,)h(double)f Fg(\003)i Fe(dpsi,)e(double)h Fg(\003)p Fe(deps,)f(double)g Fg(\003)p Fe(eps0)227 1231 y(\);)0 1418 y Fn(Argumen)m(ts:)262 1582 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 1695 y Fl(TT)30 b(as)h(mo)s(di\014ed)e(Julian)h(date)h(\(JD-2400000.5\))262 1841 y Fn(dpsi)k(=)h(double)f Fg(\003)g Fn(\(Returned\))427 1954 y Fl(Nutation)d(in)e(longitude)262 2100 y Fn(deps)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2213 y Fl(Nutation)d(in)e (obliquit)m(y)262 2359 y Fn(eps0)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 2472 y Fl(Mean)c(obliquit)m(y)-8 b(.)0 2697 y Fn(Notes:)336 3024 y Fg(\017)46 b Fl(Calls)37 b(iauObl06)h(and)e(iauNut06a)i(and)e(therefore)h(uses)g(the)g(IA)m(U)g (206)h(precession/n)m(utation)427 3137 y(mo)s(del.)336 3283 y Fg(\017)46 b Fl(Note)32 b(the)f(c)m(hange)g(from)f(SLA/F)h (regarding)f(the)h(date.)41 b(TT)30 b(is)g(used)g(rather)g(than)g(TDB.) p 0 3520 V 0 3654 a Fi(palObs)287 b Fc(P)m(arameters)35 b(of)k(selected)f(ground-based)g(observing)1691 3767 y(stations)3373 3654 y Fi(palObs)0 3963 y Fn(Description:)47 b Fl(Station)32 b(n)m(um)m(b)s(ers,)g(iden)m(ti\014ers,)g(names)g(and)g (other)g(details)h(are)f(sub)5 b(ject)32 b(to)h(c)m(hange)g(and)227 4076 y(should)d(not)g(b)s(e)g(hardwired)f(in)m(to)i(application)h (programs.)227 4226 y(All)e(c)m(haracters)h(in)e Fe(")p Fl(c)p Fe(")g Fl(up)f(to)i(the)f(\014rst)g(space)h(are)f(c)m(hec)m(k)m (ed;)j(th)m(us)d(an)g(abbreviated)h(ID)f(will)h(return)227 4339 y(the)36 b(parameters)h(for)f(the)g(\014rst)f(station)i(in)f(the)g (list)h(whic)m(h)e(matc)m(hes)j(the)e(abbreviation)g(supplied,)227 4452 y(and)d(no)h(station)h(in)e(the)h(list)h(will)f(ev)m(er)g(con)m (tain)i(em)m(b)s(edded)c(spaces.)52 b Fe(")p Fl(c)p Fe(")33 b Fl(m)m(ust)h(not)g(ha)m(v)m(e)h(leading)227 4565 y(spaces.)227 4715 y(IMPOR)-8 b(T)g(ANT)26 b({)g(BEW)-10 b(ARE)25 b(OF)h(THE)f (LONGITUDE)g(SIGN)g(CONVENTION.)g(The)g(longitude)227 4828 y(returned)37 b(b)m(y)i(sla)p Fe(_)p Fl(OBS)f(is)g(w)m(est-p)s (ositiv)m(e)i(in)e(accordance)i(with)e(astronomical)i(usage.)65 b(Ho)m(w)m(ev)m(er,)227 4941 y(this)39 b(sign)g(con)m(v)m(en)m(tion)i (is)f(left-handed)f(and)f(is)h(the)g(opp)s(osite)h(of)f(the)g(one)g (used)g(b)m(y)g(geographers;)227 5054 y(elsewhere)32 b(in)f(P)-8 b(AL)31 b(the)h(preferable)f(east-p)s(ositiv)m(e)j(con)m(v) m(en)m(tion)f(is)f(used.)42 b(In)31 b(particular,)h(note)g(that)227 5167 y(for)e(use)g(in)h(palAop,)f(palAoppa)h(and)f(palOap)g(the)h(sign) f(of)g(the)h(longitude)g(m)m(ust)f(b)s(e)g(rev)m(ersed.)227 5317 y(Users)35 b(are)f(urged)g(to)i(inform)d(the)i(author)f(of)h(an)m (y)g(impro)m(v)m(emen)m(ts)g(they)g(w)m(ould)f(lik)m(e)i(to)f(see)g (made.)227 5430 y(F)-8 b(or)31 b(example:)227 5580 y(t)m(yp)s (ographical)43 b(corrections)h(more)e(accurate)i(parameters)e(b)s (etter)g(station)h(iden)m(ti\014ers)f(or)h(names)227 5693 y(additional)32 b(stations)p eop end %%Page: 34 36 TeXDict begin 34 35 bop 0 52 a Fl(34)2782 b Fh(SUN/267.1)63 b(|)d(palP)m(a)0 351 y Fn(In)m(v)m(o)s(cation:)130 b Fe(int)47 b(palObs\()f(size_t)g(n,)h(const)g(char)f Fg(\003)i Fe(c,)g(char)e Fg(\003)i Fe(ident,)e(size_t)h(identlen,)227 464 y(char)g Fg(\003)h Fe(name,)e(size_t)h(namelen,)e(double)h Fg(\003)i Fe(w,)g(double)e Fg(\003)i Fe(p,)f(double)f Fg(\003)i Fe(h)g(\);)0 648 y Fn(Argumen)m(ts:)262 807 y(n)35 b(=)g(size)p Fe(_)p Fn(t)g(\(Giv)m(en\))427 920 y Fl(Num)m(b)s(er)22 b(sp)s(ecifying)g(the)h(observing)f(station.)39 b(If)22 b(0)h(the)g(iden)m(ti\014er)g(in)f Fe(")p Fl(c)p Fe(")g Fl(is)g(used)g(to)h(determine)427 1033 y(the)31 b(observing)f(station)i(to)f(use.)262 1175 y Fn(c)k(=)h(const)f(c)m (har)h Fg(\003)f Fn(\(Giv)m(en\))427 1288 y Fl(Iden)m(ti\014er)42 b(sp)s(ecifying)g(the)g(observing)g(station)h(for)f(whic)m(h)g(the)g (parameters)h(should)e(b)s(e)g(re-)427 1401 y(turned.)f(Only)30 b(used)f(if)h(n)g(is)h(0.)41 b(Can)30 b(b)s(e)f(NULL)i(for)f(n)p Fa(>)p Fl(0.)40 b(Case)31 b(insensitiv)m(e.)262 1543 y Fn(iden)m(t)k(=)g(c)m(har)g Fg(\003)h Fn(\(Returned\))427 1656 y Fl(Iden)m(ti\014er)h(of)h(the)f(observing)g(station)h(selected.) 63 b(Will)38 b(b)s(e)f(iden)m(tical)i(to)f Fe(")p Fl(c)p Fe(")f Fl(if)g(n==0.)61 b(Un-)427 1769 y(c)m(hanged)42 b(if)g Fe(")p Fl(n)p Fe(")e Fl(or)h Fe(")p Fl(c)p Fe(")g Fl(do)h(not)f(matc)m(h)i(an)e(observing)g(station.)75 b(Should)40 b(b)s(e)h(at)h(least)h(11)427 1882 y(c)m(haracters)32 b(\(including)e(the)h(trailing)g(n)m(ul\).)262 2024 y Fn(iden)m(tlen)k(=)g(size)p Fe(_)p Fn(t)g(\(Giv)m(en\))427 2137 y Fl(Size)c(of)g(the)f(bu\013er)g Fe(")p Fl(iden)m(t)p Fe(")g Fl(including)g(trailing)h(n)m(ul.)262 2279 y Fn(name)k(=)g(c)m (har)g Fg(\003)h Fn(\(Returned\))427 2392 y Fl(F)-8 b(ull)42 b(name)g(of)g(the)f(sp)s(eci\014ed)g(observing)h(station.)75 b(Con)m(tains)42 b Fe(")p Fl(?)p Fe(")f Fl(if)g Fe(")p Fl(n)p Fe(")g Fl(or)g Fe(")p Fl(c)p Fe(")h Fl(did)e(not)427 2505 y(corresp)s(ond)27 b(to)h(a)g(v)-5 b(alid)28 b(station.)41 b(Should)26 b(b)s(e)h(at)h(least)h(41)f(c)m(haracters)h(\(including)f (the)f(trailing)427 2618 y(n)m(ul\).)262 2760 y Fn(w)34 b(=)i(double)f Fg(\003)g Fn(\(Returned\))427 2873 y Fl(Longitude)d (\(radians,)f(W)-8 b(est)33 b(+v)m(e\).)43 b(Unc)m(hanged)32 b(if)f(observing)g(station)h(could)g(not)f(b)s(e)f(iden)m(ti-)427 2986 y(\014ed.)262 3128 y Fn(p)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3241 y Fl(Geo)s(detic)29 b(latitude)f(\(radians,)g (North)g(+v)m(e\).)40 b(Unc)m(hanged)28 b(if)f(observing)g(station)h (could)g(not)f(b)s(e)427 3354 y(iden)m(ti\014ed.)262 3496 y Fn(h)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3609 y Fl(Heigh)m(t)d(ab)s(o)m(v)m(e)f(sea)g(lev)m(el)h(\(metres\).)41 b(Unc)m(hanged)31 b(if)f(observing)g(station)h(could)f(not)g(b)s(e)f (iden)m(ti-)427 3722 y(\014ed.)0 3905 y Fn(Returned)35 b(V)-9 b(alue:)262 4065 y(palObs)35 b(=)g(in)m(t)427 4178 y Fl(0)c(if)f(an)h(observing)f(station)h(w)m(as)g(returned.)40 b(-1)31 b(if)f(no)g(matc)m(h)i(w)m(as)e(found.)0 4397 y Fn(Notes:)336 4720 y Fg(\017)46 b Fl(Di\013ers)27 b(from)e(the)i(SLA) e(in)m(terface)j(in)d(that)i(the)f(output)g(short)g(name)g(is)g(not)g (the)g(same)h(v)-5 b(ariable)427 4833 y(as)27 b(the)f(input)g(short)g (name.)39 b(This)25 b(simpli\014es)h(consting.)40 b(Additionally)27 b(the)g(size)g(of)f(the)h(output)427 4946 y(bu\013ers)i(are)i(no)m(w)g (sp)s(eci\014ed)e(in)h(the)h(API)f(and)g(a)h(status)f(in)m(teger)i(is)f (returned.)p 0 5170 3780 12 v 0 5304 a Fi(palP)l(a)809 b Fc(HA,)38 b(Dec)h(to)f(P)m(arallactic)d(Angle)807 b Fi(palP)l(a)0 5509 y Fn(Description:)47 b Fl(Con)m(v)m(erts)31 b(HA,)g(Dec)g(to)g(P)m(arallactic)j(Angle.)0 5693 y Fn(In)m(v)m(o)s (cation:)130 b Fe(double)46 b(palPa\()g(double)g(ha,)h(double)f(dec,)h (double)f(phi)h(\);)p eop end %%Page: 35 37 TeXDict begin 35 36 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palP)m(ertel)2681 b Fl(35)0 351 y Fn(Argumen)m(ts:)262 512 y(ha)35 b(=)g(double)g(\(Giv)m (en\))427 625 y Fl(Hour)30 b(angle)i(in)e(radians)g(\(Geo)s(cen)m(tric) i(apparen)m(t\))262 769 y Fn(dec)j(=)h(double)f(\(Giv)m(en\))427 882 y Fl(Declination)e(in)d(radians)g(\(Geo)s(cen)m(tric)j(apparen)m (t\))262 1026 y Fn(phi)i(=)g(double)h(\(Giv)m(en\))427 1139 y Fl(Observ)-5 b(atory)30 b(latitude)i(in)e(radians)g(\(geo)s (detic\))0 1324 y Fn(Returned)35 b(V)-9 b(alue:)262 1485 y(palP)m(a)35 b(=)g(double)427 1598 y Fl(P)m(arallactic)f(angle)d(in)f (the)h(range)g(-pi)f(to)h(+pi.)0 1819 y Fn(Notes:)336 2144 y Fg(\017)46 b Fl(The)25 b(parallactic)i(angle)f(at)f(a)g(p)s(oin) m(t)g(in)g(the)g(sky)f(is)h(the)g(p)s(osition)g(angle)h(of)f(the)g(v)m (ertical,)k(i.e.)39 b(the)427 2257 y(angle)27 b(b)s(et)m(w)m(een)f(the) f(direction)h(to)h(the)e(p)s(ole)h(and)e(to)j(the)e(zenith.)40 b(In)24 b(precise)i(applications)h(care)427 2370 y(m)m(ust)38 b(b)s(e)f(tak)m(en)i(only)f(to)h(use)f(geo)s(cen)m(tric)i(apparen)m(t)e (HA,Dec)h(and)f(to)g(consider)g(separately)427 2483 y(the)31 b(e\013ects)h(of)e(atmospheric)h(refraction)g(and)f(telescop)s(e)i (moun)m(t)e(errors.)336 2627 y Fg(\017)46 b Fl(A)m(t)32 b(the)e(p)s(ole)h(a)f(zero)i(result)e(is)g(returned.)p 0 2856 3780 12 v 0 2990 a Fi(palP)l(ertel)349 b Fc(Up)s(date)38 b(elemen)m(ts)g(b)m(y)g(applying)f(planetary)1543 3103 y(p)s(erturbations)3247 2990 y Fi(palP)l(ertel)0 3314 y Fn(Description:)47 b Fl(Up)s(date)26 b(the)g(osculating)i(orbital)f (elemen)m(ts)h(of)f(an)f(asteroid)h(or)f(comet)i(b)m(y)e(applying)h (plan-)227 3427 y(etary)k(p)s(erturbations.)0 3612 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPertel)e(\(int)i(jform,)f (double)g(date0,)g(double)g(date1,)g(double)g(epoch0,)227 3725 y(double)g(orbi0,)g(double)h(anode0,)e(double)h(perih0,)g(double)g (aorq0,)g(double)h(e0,)f(double)227 3838 y(am0,)h(double)f Fg(\003)p Fe(epoch1,)g(double)g Fg(\003)p Fe(orbi1,)h(double)f Fg(\003)p Fe(anode1,)g(double)g Fg(\003)p Fe(perih1,)h(double)f Fg(\003)p Fe(aorq1,)227 3951 y(double)g Fg(\003)p Fe(e1,)i(double)e Fg(\003)p Fe(am1,)h(int)g Fg(\003)p Fe(jstat)g(\);)0 4136 y Fn(Argumen)m(ts:)262 4297 y(jform)35 b(=)g(in)m(t)g(\(Giv)m (en\))427 4410 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i (Note)f(6\))262 4554 y Fn(date0)k(=)g(double)g(\(Giv)m(en\))427 4667 y Fl(Date)d(of)f(osculation)h(\(TT)e(MJD\))h(for)f(the)g(giv)m(en) i(elemen)m(ts.)262 4810 y Fn(date1)j(=)g(double)g(\(Giv)m(en\))427 4923 y Fl(Date)d(of)f(osculation)h(\(TT)e(MJD\))h(for)f(the)g(up)s (dated)f(elemen)m(ts.)262 5067 y Fn(ep)s(o)s(c)m(h0)36 b(=)f(double)g(\(Giv)m(en\))427 5180 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i(\(TT)e(MJD\))262 5323 y Fn(orbi0)36 b(=)f(double)g(\(Giv)m(en\))427 5436 y Fl(inclination)d(\(radians\))262 5580 y Fn(ano)s(de0)j(=)g(double)h(\(Giv)m(en\))427 5693 y Fl(longitude)31 b(of)g(the)f(ascending)h(no)s(de)f(\(radians\))p eop end %%Page: 36 38 TeXDict begin 36 37 bop 0 52 a Fl(36)2650 b Fh(SUN/267.1)63 b(|)e(palP)m(ertel)262 351 y Fn(p)s(erih0)35 b(=)g(double)h(\(Giv)m (en\))427 464 y Fl(longitude)31 b(or)g(argumen)m(t)f(of)h(p)s (erihelion)f(\(radians\))262 610 y Fn(aorq0)36 b(=)f(double)g(\(Giv)m (en\))427 723 y Fl(mean)c(distance)g(or)f(p)s(erihelion)g(distance)h (\(A)m(U\))262 869 y Fn(e0)k(=)g(double)h(\(Giv)m(en\))427 981 y Fl(eccen)m(tricit)m(y)262 1127 y Fn(am0)f(=)g(double)h(\(Giv)m (en\))427 1240 y Fl(mean)31 b(anomaly)g(\(radians,)f(JF)m(ORM=2)h (only\))262 1386 y Fn(ep)s(o)s(c)m(h1)36 b(=)f(double)g Fg(\003)h Fn(\(Returned\))427 1499 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i(\(TT)e(MJD\))262 1645 y Fn(orbi1)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 1757 y Fl(inclination)d (\(radians\))262 1903 y Fn(ano)s(de1)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2016 y Fl(longitude)c(of)g(the)f(ascending)h(no)s (de)f(\(radians\))262 2162 y Fn(p)s(erih1)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2275 y Fl(longitude)c(or)g(argumen)m(t)f (of)h(p)s(erihelion)f(\(radians\))262 2420 y Fn(aorq1)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 2533 y Fl(mean)c(distance) g(or)f(p)s(erihelion)g(distance)h(\(A)m(U\))262 2679 y Fn(e1)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2792 y Fl(eccen)m(tricit)m(y)262 2938 y Fn(am1)g(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3051 y Fl(mean)c(anomaly)g(\(radians,)f (JF)m(ORM=2)h(only\))262 3196 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 3309 y Fl(status:)506 3431 y Fg(\017)46 b Fl(+102)32 b(=)e(w)m(arning,)g(distan)m(t)h(ep)s(o)s(c)m (h)506 3560 y Fg(\017)46 b Fl(+101)32 b(=)e(w)m(arning,)g(large)i (timespan)e(\()h Fa(>)f Fl(100)h(y)m(ears\))506 3690 y Fg(\017)46 b Fl(+1)31 b(to)g(+10)g(=)f(coinciden)m(t)i(with)e(planet) g(\(Note)i(6\))506 3819 y Fg(\017)46 b Fl(0)31 b(=)f(OK)506 3948 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j(JF)m(ORM)506 4078 y Fg(\017)46 b Fl(-2)31 b(=)f(illegal)j(E0)506 4207 y Fg(\017)46 b Fl(-3)31 b(=)f(illegal)j(A)m(OR)m(Q0)506 4336 y Fg(\017)46 b Fl(-4)31 b(=)f(in)m(ternal)h(error)506 4466 y Fg(\017)46 b Fl(-5)31 b(=)f(n)m(umerical)h(error)0 4690 y Fn(Notes:)336 5017 y Fg(\017)46 b Fl(Tw)m(o)31 b(di\013eren)m(t)g(elemen)m(t-format)h(options)f(are)g(a)m(v)-5 b(ailable:)227 5204 y(Option)30 b(JF)m(ORM=2,)i(suitable)e(for)h(minor) e(planets:)227 5354 y(EPOCH)45 b(=)g(ep)s(o)s(c)m(h)g(of)g(elemen)m(ts) i(\(TT)e(MJD\))h(ORBI)f(=)g(inclination)i(i)f(\(radians\))f(ANODE)h(=) 227 5467 y(longitude)36 b(of)f(the)h(ascending)f(no)s(de,)h(big)g (omega)g(\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,) 227 5580 y(little)h(omega)f(\(radians\))f(A)m(OR)m(Q)g(=)g(mean)g (distance,)h(a)g(\(A)m(U\))g(E)e(=)h(eccen)m(tricit)m(y)-8 b(,)40 b(e)35 b(AM)g(=)f(mean)227 5693 y(anomaly)d(M)g(\(radians\))p eop end %%Page: 37 39 TeXDict begin 37 38 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palP)m(ertue)2655 b Fl(37)227 351 y(Option)30 b(JF)m(ORM=3,)i(suitable)e(for)h(comets:) 227 501 y(EPOCH)41 b(=)g(ep)s(o)s(c)m(h)g(of)h(p)s(erihelion)f(\(TT)g (MJD\))h(ORBI)g(=)f(inclination)i(i)e(\(radians\))h(ANODE)g(=)227 614 y(longitude)36 b(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 727 y(little)c(omega)g(\(radians\))f(A)m(OR)m(Q)g(=)f(p)s(erihelion)g (distance,)h(q)f(\(A)m(U\))i(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)35 b(e)336 1041 y Fg(\017)46 b Fl(D)m(A)-8 b(TE0,)28 b(D)m(A)-8 b(TE1,)28 b(EPOCH0)d(and)g(EPOCH1)g(are)h(all)g(instan)m(ts) g(of)f(time)h(in)f(the)h(TT)e(timescale)427 1154 y(\(formerly)j (Ephemeris)e(Time,)j(ET\),)e(expressed)g(as)h(Mo)s(di\014ed)e(Julian)h (Dates)i(\(JD-2400000.5\).)227 1341 y(D)m(A)-8 b(TE0)24 b(is)e(the)g(instan)m(t)h(at)g(whic)m(h)e(the)i(giv)m(en)g(\(i.e.)39 b(unp)s(erturb)s(ed\))19 b(osculating)k(elemen)m(ts)h(are)e(correct.) 227 1492 y(D)m(A)-8 b(TE1)32 b(is)e(the)h(sp)s(eci\014ed)f(instan)m(t)h (at)g(whic)m(h)f(the)h(up)s(dated)e(osculating)i(elemen)m(ts)h(are)f (correct.)227 1642 y(EPOCH0)38 b(and)g(EPOCH1)h(will)f(b)s(e)g(the)h (same)g(as)g(D)m(A)-8 b(TE0)40 b(and)d(D)m(A)-8 b(TE1)40 b(\(resp)s(ectiv)m(ely\))h(for)d(the)227 1755 y(JF)m(ORM=2)46 b(case,)51 b(normally)45 b(used)g(for)g(minor)g(planets.)86 b(F)-8 b(or)46 b(the)f(JF)m(ORM=3)h(case,)51 b(the)45 b(t)m(w)m(o)227 1868 y(ep)s(o)s(c)m(hs)30 b(will)h(refer)f(to)h(p)s (erihelion)f(passage)i(and)d(so)i(will)g(not,)g(in)f(general,)h(b)s(e)f (the)h(same)f(as)h(D)m(A)-8 b(TE0)227 1980 y(and/or)31 b(D)m(A)-8 b(TE1)31 b(though)f(they)h(ma)m(y)g(b)s(e)f(similar)g(to)i (one)e(another.)336 2144 y Fg(\017)46 b Fl(The)30 b(elemen)m(ts)i(are)f (with)f(resp)s(ect)g(to)h(the)g(J2000)h(ecliptic)g(and)d(equino)m(x.) 336 2290 y Fg(\017)46 b Fl(Un)m(used)30 b(elemen)m(ts)i(\(AM0)f(and)f (AM1)h(for)g(JF)m(ORM=3\))g(are)g(not)f(accessed.)336 2436 y Fg(\017)46 b Fl(See)31 b(the)f(palP)m(ertue)i(routine)e(for)g (details)h(of)g(the)g(algorithm)g(used.)336 2582 y Fg(\017)46 b Fl(This)32 b(routine)h(is)g(not)h(in)m(tended)e(to)i(b)s(e)f(used)f (for)g(ma)5 b(jor)33 b(planets,)i(whic)m(h)d(is)h(wh)m(y)g(JF)m(ORM=1) 427 2695 y(is)38 b(not)g(a)m(v)-5 b(ailable)41 b(and)c(wh)m(y)g(there)h (is)g(no)g(opp)s(ortunit)m(y)f(to)i(sp)s(ecify)e(either)i(the)f (longitude)g(of)427 2808 y(p)s(erihelion)h(or)f(the)h(daily)h(motion.) 66 b(Ho)m(w)m(ev)m(er,)44 b(if)38 b(JF)m(ORM=2)i(elemen)m(ts)g(are)f (someho)m(w)g(ob-)427 2921 y(tained)28 b(for)e(a)h(ma)5 b(jor)27 b(planet)h(and)e(supplied)g(to)h(the)g(routine,)h(sensible)f (results)g(will,)h(in)e(fact,)j(b)s(e)427 3033 y(pro)s(duced.)43 b(This)31 b(happ)s(ens)f(b)s(ecause)h(the)h(sla)p Fe(_)p Fl(PER)-8 b(TUE)31 b(routine)h(that)g(is)g(called)h(to)f(p)s(erform)427 3146 y(the)e(calculations)h(c)m(hec)m(ks)f(the)g(separation)g(b)s(et)m (w)m(een)f(the)h(b)s(o)s(dy)d(and)i(eac)m(h)h(of)f(the)h(planets)f(and) 427 3259 y(in)m(terprets)41 b(a)g(suspiciously)g(small)g(v)-5 b(alue)41 b(\(0.001)i(A)m(U\))f(as)f(an)f(attempt)i(to)f(apply)g(it)g (to)g(the)427 3372 y(planet)34 b(concerned.)50 b(If)33 b(this)g(condition)h(is)f(detected,)j(the)d(con)m(tribution)h(from)f (that)h(planet)f(is)427 3485 y(ignored,)i(and)f(the)g(status)g(is)g (set)g(to)g(the)g(planet)h(n)m(um)m(b)s(er)d(\(1-10)k(=)d(Mercury)-8 b(,)35 b(V)-8 b(en)m(us,)36 b(EMB,)427 3598 y(Mars,)31 b(Jupiter,)f(Saturn,)f(Uran)m(us,)i(Neptune,)f(Earth,)g(Mo)s(on\))h(as) g(a)g(w)m(arning.)-2 3786 y Fn(See)k(Also)n(:)336 4113 y Fg(\017)46 b Fl(Sterne,)26 b(Theo)s(dore)e(E.,)i Fe(")p Fl(An)e(In)m(tro)s(duction)g(to)h(Celestial)h(Mec)m(hanics)p Fe(")p Fl(,)i(In)m(terscience)d(Publish-)427 4226 y(ers)30 b(Inc.,)h(1960.)42 b(Section)32 b(6.7,)f(p199.)p 0 4463 3780 12 v 0 4597 a Fi(palP)l(ertue)224 b Fc(Up)s(date)38 b(the)h(univ)m(ersal)e(elemen)m(ts)h(b)m(y)g(applying)1281 4710 y(planetary)f(p)s(erturbations)3209 4597 y Fi(palP)l(ertue)0 4929 y Fn(Description:)47 b Fl(Up)s(date)40 b(the)h(univ)m(ersal)h (elemen)m(ts)g(of)f(an)g(asteroid)g(or)g(comet)h(b)m(y)f(applying)g (planetary)227 5042 y(p)s(erturbations.)0 5229 y Fn(In)m(v)m(o)s (cation:)130 b Fe(void)47 b(palPertue\()e(double)h(date,)g(double)g (u[13],)g(int)h Fg(\003)p Fe(jstat)g(\);)0 5417 y Fn(Argumen)m(ts:)262 5580 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 5693 y Fl(Final)c(ep)s(o)s(c)m(h)f(\(TT)g(MJD\))i(for)e(the)g(up)s(date)g (elemen)m(ts.)p eop end %%Page: 38 40 TeXDict begin 38 39 bop 0 52 a Fl(38)2625 b Fh(SUN/267.1)63 b(|)d(palP)m(ertue)262 351 y Fn(u)35 b(=)g(const)h(double)f([13])h (\(Giv)m(en)f(&)g(Returned\))427 464 y Fl(Univ)m(ersal)26 b(orbital)g(elemen)m(ts)g(\(Note)g(1\))g(\(0\))g(com)m(bined)f(mass)f (\(M+m\))i(\(1\))g(total)g(energy)f(of)g(the)427 577 y(orbit)35 b(\(alpha\))h(\(2\))g(reference)f(\(osculating\))i(ep)s(o)s (c)m(h)e(\(t0\))h(\(3-5\))h(p)s(osition)e(at)g(reference)h(ep)s(o)s(c)m (h)427 690 y(\(r0\))28 b(\(6-8\))g(v)m(elo)s(cit)m(y)h(at)f(reference)f (ep)s(o)s(c)m(h)g(\(v0\))g(\(9\))h(helio)s(cen)m(tric)h(distance)e(at)h (reference)f(ep)s(o)s(c)m(h)427 803 y(\(10\))32 b(r0.v0)f(\(11\))h (date)f(\(t\))h(\(12\))f(univ)m(ersal)g(eccen)m(tric)i(anomaly)e (\(psi\))f(of)h(date,)g(appro)m(x)262 947 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 1060 y Fl(status:)62 b(+102)41 b(=)f(w)m(arning,)k(distan)m(t)d(ep)s(o)s(c)m(h)f(+101)i(=)e(w)m (arning,)j(large)f(timespan)e(\()h Fa(>)f Fl(100)427 1173 y(y)m(ears\))32 b(+1)e(to)h(+10)g(=)f(coinciden)m(t)i(with)e(ma)5 b(jor)31 b(planet)f(\(Note)i(5\))f(0)g(=)f(OK)506 1293 y Fg(\017)46 b Fl(1)31 b(=)f(n)m(umerical)h(error)0 1515 y Fn(Notes:)336 1840 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m(h)g (de\014ne)e(the)i(orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 1953 y(metho)s(d)26 b(of)g(univ)m(ersal)h(v)-5 b(ariables)27 b(\(see)g(reference)f(2\).)41 b(They)25 b(consist)i(of)f(the)h(com)m (bined)f(mass)g(of)427 2066 y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f (ep)s(o)s(c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j (v)m(ectors)f(\(arbitrary)f(reference)427 2179 y(frame\))i(at)g(that)g (ep)s(o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g (includes)g(also)i(v)-5 b(arious)34 b(quan)m(tities)427 2292 y(that)h(can,)g(in)e(fact,)j(b)s(e)d(deriv)m(ed)g(from)h(the)f (other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to) 427 2405 y(a)m(v)m(oiding)k(unnecessary)e(computation)h(and)f(loss)h (of)f(accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 2518 y(tities)k(are)f(\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional) g(to)h(the)g(total)h(energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 2631 y(helio)s(cen)m(tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g (the)e(out)m(w)m(ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y) h(at)f(the)427 2744 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g (estimate)h(of)e(psi,)j(the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j (anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 2857 y(date)31 b(and)f(\(v\))h(that)g(date.)336 3001 y Fg(\017)46 b Fl(The)30 b(univ)m(ersal)h(elemen)m(ts)g(are)g(with)f(resp)s(ect)h(to)g (the)f(J2000)i(equator)f(and)f(equino)m(x.)336 3145 y Fg(\017)46 b Fl(The)30 b(ep)s(o)s(c)m(hs)g(D)m(A)-8 b(TE,)32 b(U\(3\))f(and)f(U\(12\))i(are)f(all)g(Mo)s(di\014ed)f(Julian)g(Dates)i (\(JD-2400000.5\).)336 3289 y Fg(\017)46 b Fl(The)29 b(algorithm)h(is)f(a)g(simpli\014ed)g(form)f(of)h(Enc)m(k)m(e)p Fe(')p Fl(s)h(metho)s(d.)40 b(It)29 b(tak)m(es)h(as)g(a)f(basis)g(the)g (unp)s(er-)427 3402 y(turb)s(ed)k(motion)i(of)g(the)f(b)s(o)s(dy)-8 b(,)35 b(and)f(n)m(umerically)h(in)m(tegrates)i(the)d(p)s(erturbing)f (accelerations)427 3515 y(from)g(the)g(ma)5 b(jor)32 b(planets.)49 b(The)32 b(expression)g(used)g(is)h(essen)m(tially)i (Sterne)p Fe(')p Fl(s)d(6.7-2)j(\(reference)427 3628 y(1\).)42 b(Ev)m(erhart)30 b(and)f(Pitkin)h(\(reference)g(2\))h (suggest)f(rectifying)h(the)f(orbit)g(at)g(eac)m(h)h(in)m(tegration)427 3741 y(step)38 b(b)m(y)g(propagating)h(the)f(new)g(p)s(erturb)s(ed)d(p) s(osition)j(and)g(v)m(elo)s(cit)m(y)i(as)f(the)f(new)f(univ)m(ersal)427 3854 y(v)-5 b(ariables.)68 b(In)38 b(the)h(presen)m(t)h(routine)f(the)g (orbit)g(is)g(recti\014ed)h(less)f(frequen)m(tly)g(than)g(this,)j(in) 427 3967 y(order)31 b(to)g(gain)g(a)h(sligh)m(t)f(sp)s(eed)f(adv)-5 b(an)m(tage.)44 b(Ho)m(w)m(ev)m(er,)33 b(the)e(recti\014cation)i(is)e (done)f(directly)i(in)427 4080 y(terms)k(of)g(p)s(osition)g(and)g(v)m (elo)s(cit)m(y)-8 b(,)40 b(as)d(suggested)f(b)m(y)g(Ev)m(erhart)g(and)g (Pitkin,)h(b)m(ypassing)f(the)427 4193 y(use)30 b(of)h(con)m(v)m(en)m (tional)i(orbital)e(elemen)m(ts.)227 4378 y(The)i(f\(q\))h(part)f(of)h (the)f(full)g(Enc)m(k)m(e)i(metho)s(d)e(is)g(not)h(used.)49 b(The)33 b(purp)s(ose)e(of)j(this)f(part)g(is)h(to)g(a)m(v)m(oid)227 4491 y(subtracting)k(t)m(w)m(o)i(nearly)e(equal)h(quan)m(tities)g(when) e(calculating)j(the)e Fe(")p Fl(indirect)g(mem)m(b)s(er)p Fe(")p Fl(,)i(whic)m(h)227 4604 y(tak)m(es)g(accoun)m(t)g(of)e(the)h (small)f(c)m(hange)i(in)e(the)g(Sun)p Fe(')p Fl(s)e(attraction)41 b(due)c(to)i(the)g(sligh)m(tly)g(displaced)227 4717 y(p)s(osition)28 b(of)f(the)h(p)s(erturb)s(ed)c(b)s(o)s(dy)-8 b(.)39 b(A)27 b(simpler,)h(direct)g(calculation)h(in)e(double)g(precision)h(pro)m(v)m (es)g(to)227 4830 y(b)s(e)i(faster)h(and)f(not)g(signi\014can)m(tly)i (less)e(accurate.)227 4979 y(Apart)f(from)f(emplo)m(ying)h(a)g(v)-5 b(ariable)29 b(timestep,)h(and)e(o)s(ccasionally)j Fe(")p Fl(rectifying)e(the)f(orbit)p Fe(")h Fl(to)g(k)m(eep)227 5092 y(the)37 b(indirect)g(mem)m(b)s(er)f(small,)j(the)d(in)m (tegration)j(is)e(done)f(in)g(a)h(fairly)g(straigh)m(tforw)m(ard)g(w)m (a)m(y)-8 b(.)61 b(The)227 5205 y(acceleration)30 b(estimated)e(for)f (the)g(middle)g(of)g(the)g(timestep)h(is)f(assumed)f(to)i(apply)e (throughout)h(that)227 5318 y(timestep;)i(it)d(is)h(also)g(used)e(in)h (the)g(extrap)s(olation)i(of)e(the)g(p)s(erturbations)f(to)i(the)f (middle)g(of)g(the)g(next)227 5431 y(timestep,)32 b(to)f(predict)f(the) h(new)f(disturb)s(ed)e(p)s(osition.)41 b(There)30 b(is)g(no)g (iteration)i(within)e(a)h(timestep.)227 5580 y(Measures)40 b(are)g(tak)m(en)g(to)g(reac)m(h)g(a)g(compromise)g(b)s(et)m(w)m(een)g (execution)g(time)g(and)f(accuracy)-8 b(.)69 b(The)227 5693 y(starting-p)s(oin)m(t)31 b(is)f(the)h(goal)g(of)f(ac)m(hieving)i (arcsecond)e(accuracy)h(for)f(ordinary)f(minor)h(planets)g(o)m(v)m(er)p eop end %%Page: 39 41 TeXDict begin 39 40 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPlanel)2668 b Fl(39)227 351 y(a)39 b(ten-y)m(ear)h(timespan.)65 b(This)38 b(goal)i(dictates)g(ho)m(w)f(large)g(the)g(timesteps)g(can)g(b)s(e,)h (whic)m(h)e(in)h(turn)227 464 y(dictates)26 b(ho)m(w)f(frequen)m(tly)g (the)g(unp)s(erturb)s(ed)c(motion)k(has)f(to)i(b)s(e)e(recalculated)i (from)e(the)h(osculating)227 577 y(elemen)m(ts.)227 732 y(Within)h(predetermined)f(limits,)j(the)e(timestep)g(for)g(the)g(n)m (umerical)g(in)m(tegration)i(is)e(v)-5 b(aried)26 b(in)f(length)227 845 y(in)h(in)m(v)m(erse)h(prop)s(ortion)f(to)h(the)g(magnitude)f(of)g (the)h(net)f(acceleration)k(on)c(the)g(b)s(o)s(dy)f(from)h(the)g(ma)5 b(jor)227 958 y(planets.)227 1113 y(The)34 b(n)m(umerical)h(in)m (tegration)h(requires)e(estimates)i(of)f(the)f(ma)5 b(jor-planet)35 b(motions.)54 b(Appro)m(ximate)227 1226 y(p)s(ositions)40 b(for)h(the)f(ma)5 b(jor)40 b(planets)h(\(Pluto)g(alone)g(is)f (omitted\))i(are)f(obtained)f(from)g(the)g(routine)227 1339 y(palPlanet.)66 b(Tw)m(o)39 b(lev)m(els)h(of)e(in)m(terp)s (olation)i(are)f(used,)h(to)f(enhance)f(sp)s(eed)g(without)g (signi\014can)m(tly)227 1452 y(degrading)22 b(accuracy)-8 b(.)40 b(A)m(t)23 b(a)f(lo)m(w)h(frequency)-8 b(,)23 b(the)g(routine)f(palPlanet)h(is)e(called)j(to)e(generate)i(up)s(dated) 227 1565 y(p)s(osition+v)m(elo)s(cit)m(y)37 b Fe(")p Fl(state)f(v)m(ectors)p Fe(")p Fl(.)55 b(The)34 b(only)h(task)g (remaining)g(to)h(b)s(e)e(carried)g(out)h(at)h(the)f(full)227 1678 y(frequency)41 b(\(i.e.)75 b(at)43 b(eac)m(h)f(in)m(tegration)i (step\))e(is)f(to)h(use)g(the)f(state)i(v)m(ectors)g(to)f(extrap)s (olate)h(the)227 1791 y(planetary)c(p)s(ositions.)64 b(In)38 b(place)h(of)f(a)h(strictly)g(linear)g(extrap)s(olation,)j (some)c(allo)m(w)m(ance)j(is)d(made)227 1904 y(for)29 b(the)g(curv)-5 b(ature)28 b(of)h(the)g(orbit)g(b)m(y)f(scaling)i(bac)m (k)g(the)f(radius)f(v)m(ector)i(as)f(the)g(linear)g(extrap)s(olation) 227 2017 y(go)s(es)i(o\013)g(at)g(a)g(tangen)m(t.)227 2172 y(V)-8 b(arious)41 b(other)e(appro)m(ximations)i(are)f(made.)68 b(F)-8 b(or)41 b(example,)h(p)s(erturbations)d(b)m(y)g(Pluto)h(and)f (the)227 2285 y(minor)30 b(planets)h(are)g(neglected)h(and)d (relativistic)k(e\013ects)f(are)f(not)f(tak)m(en)i(in)m(to)f(accoun)m (t.)227 2440 y(In)25 b(the)h(in)m(terests)h(of)f(simplicit)m(y)-8 b(,)29 b(the)d(bac)m(kground)g(calculations)h(for)f(the)g(ma)5 b(jor)26 b(planets)g(are)g(carried)227 2553 y(out)i(en)e(masse.)40 b(The)27 b(mean)g(elemen)m(ts)h(and)f(state)h(v)m(ectors)h(for)e(all)g (the)h(planets)f(are)g(refreshed)f(at)i(the)227 2666 y(same)j(time,)g(without)g(regard)f(for)g(orbit)h(curv)-5 b(ature,)30 b(mass)g(or)h(pro)m(ximit)m(y)-8 b(.)227 2821 y(The)44 b(Earth-Mo)s(on)g(system)g(is)g(treated)h(as)f(a)g (single)h(b)s(o)s(dy)d(when)h(the)h(b)s(o)s(dy)e(is)i(distan)m(t)h(but) e(as)227 2934 y(separate)37 b(b)s(o)s(dies)e(when)f(closer)j(to)f(the)g (EMB)g(than)g(the)g(parameter)g(RNE,)g(whic)m(h)f(incurs)g(a)h(time)227 3047 y(p)s(enalt)m(y)31 b(but)f(impro)m(v)m(es)h(accuracy)g(for)f (near-Earth)h(ob)5 b(jects.)336 3375 y Fg(\017)46 b Fl(This)31 b(routine)h(is)g(not)g(in)m(tended)g(to)h(b)s(e)e(used)g(for)h(ma)5 b(jor)32 b(planets.)45 b(Ho)m(w)m(ev)m(er,)35 b(if)d(ma)5 b(jor-planet)427 3488 y(elemen)m(ts)37 b(are)e(supplied,)g(sensible)h (results)e(will,)j(in)e(fact,)i(b)s(e)e(pro)s(duced.)53 b(This)35 b(happ)s(ens)e(b)s(e-)427 3601 y(cause)26 b(the)f(routine)g (c)m(hec)m(ks)h(the)f(separation)h(b)s(et)m(w)m(een)f(the)g(b)s(o)s(dy) f(and)g(eac)m(h)i(of)f(the)g(planets)g(and)427 3714 y(in)m(terprets)g (a)g(suspiciously)g(small)g(v)-5 b(alue)25 b(\(0.001)j(A)m(U\))d(as)g (an)g(attempt)h(to)g(apply)e(the)h(routine)g(to)427 3827 y(the)k(planet)f(concerned.)41 b(If)27 b(this)i(condition)f(is)h (detected,)h(the)f(con)m(tribution)f(from)g(that)h(planet)427 3940 y(is)f(ignored,)g(and)f(the)h(status)g(is)f(set)i(to)f(the)g (planet)g(n)m(um)m(b)s(er)e(\(1-10)j(=)e(Mercury)-8 b(,)29 b(V)-8 b(en)m(us,)29 b(EMB,)427 4053 y(Mars,)i(Jupiter,)f(Saturn,)f (Uran)m(us,)i(Neptune,)f(Earth,)g(Mo)s(on\))h(as)g(a)g(w)m(arning.)-2 4250 y Fn(See)k(Also)n(:)336 4587 y Fg(\017)46 b Fl(Sterne,)26 b(Theo)s(dore)e(E.,)i Fe(")p Fl(An)e(In)m(tro)s(duction)g(to)h (Celestial)h(Mec)m(hanics)p Fe(")p Fl(,)i(In)m(terscience)d(Publish-) 427 4700 y(ers)30 b(Inc.,)h(1960.)42 b(Section)32 b(6.7,)f(p199.)336 4851 y Fg(\017)46 b Fl(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)g(E.T.,)h (Am.J.Ph)m(ys.)40 b(51,)32 b(712,)g(1983.)p 0 5101 3780 12 v 0 5236 a Fi(palPlanel)163 b Fc(T)-10 b(ransform)36 b(con)m(v)m(en)m(tional)g(elemen)m(ts)h(in)m(to)h(p)s(osition)1579 5349 y(and)h(v)m(elo)s(cit)m(y)3234 5236 y Fi(palPlanel)0 5580 y Fn(Description:)47 b Fl(Helio)s(cen)m(tric)38 b(p)s(osition)e(and)f(v)m(elo)s(cit)m(y)j(of)e(a)g(planet,)i(asteroid)f (or)f(comet,)i(starting)f(from)227 5693 y(orbital)31 b(elemen)m(ts.)p eop end %%Page: 40 42 TeXDict begin 40 41 bop 0 52 a Fl(40)2638 b Fh(SUN/267.1)63 b(|)d(palPlanel)0 351 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPlanel)e(\()j(double)e(date,)g(int)h(jform,)f(double)g (epoch,)g(double)g(orbinc,)227 464 y(double)g(anode,)g(double)h(perih,) f(double)g(aorq,)g(double)g(e,)h(double)f(aorl,)h(double)f(dm,)h (double)227 577 y(pv[6],)f(int)h Fg(\003)p Fe(jstat)g(\);)0 766 y Fn(Argumen)m(ts:)262 930 y(date)34 b(=)i(double)f(\(Giv)m(en\)) 427 1043 y Fl(Ep)s(o)s(c)m(h)30 b(\(TT)g(MJD\))h(of)f(osculation)i (\(Note)g(1\))262 1190 y Fn(jform)j(=)g(in)m(t)g(\(Giv)m(en\))427 1303 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i(Note)f(3\)) 262 1449 y Fn(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv)m(en\))427 1562 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i(\(TT)e(MJD\))h(\(Note) h(4\))262 1709 y Fn(orbinc)k(=)f(double)g(\(Giv)m(en\))427 1822 y Fl(inclination)d(\(radians\))262 1968 y Fn(ano)s(de)j(=)g (double)h(\(Giv)m(en\))427 2081 y Fl(longitude)31 b(of)g(the)f (ascending)h(no)s(de)f(\(radians\))262 2228 y Fn(p)s(erih)35 b(=)g(double)h(\(Giv)m(en\))427 2341 y Fl(longitude)31 b(or)g(argumen)m(t)f(of)h(p)s(erihelion)f(\(radians\))262 2488 y Fn(aorq)35 b(=)g(double)h(\(Giv)m(en\))427 2600 y Fl(mean)31 b(distance)g(or)f(p)s(erihelion)g(distance)h(\(A)m(U\))262 2747 y Fn(e)k(=)g(double)g(\(Giv)m(en\))427 2860 y Fl(eccen)m(tricit)m (y)262 3007 y Fn(aorl)g(=)g(double)h(\(Giv)m(en\))427 3120 y Fl(mean)31 b(anomaly)g(or)f(longitude)h(\(radians,)g(JF)m (ORM=1,2)g(only\))262 3266 y Fn(dm)k(=)g(double)h(\(Giv)m(en\))427 3379 y Fl(daily)31 b(motion)g(\(radians,)g(JF)m(ORM=1)g(only\))262 3526 y Fn(u)k(=)g(double)h([13])f(\(Returned\))427 3639 y Fl(Univ)m(ersal)26 b(orbital)g(elemen)m(ts)g(\(Note)g(1\))g(\(0\))g (com)m(bined)f(mass)f(\(M+m\))i(\(1\))g(total)g(energy)f(of)g(the)427 3752 y(orbit)35 b(\(alpha\))h(\(2\))g(reference)f(\(osculating\))i(ep)s (o)s(c)m(h)e(\(t0\))h(\(3-5\))h(p)s(osition)e(at)g(reference)h(ep)s(o)s (c)m(h)427 3864 y(\(r0\))28 b(\(6-8\))g(v)m(elo)s(cit)m(y)h(at)f (reference)f(ep)s(o)s(c)m(h)g(\(v0\))g(\(9\))h(helio)s(cen)m(tric)h (distance)e(at)h(reference)f(ep)s(o)s(c)m(h)427 3977 y(\(10\))32 b(r0.v0)f(\(11\))h(date)f(\(t\))h(\(12\))f(univ)m(ersal)g (eccen)m(tric)i(anomaly)e(\(psi\))f(of)h(date,)g(appro)m(x)262 4124 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 4237 y Fl(status:)41 b(0)31 b(=)f(OK)506 4360 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j(JF)m(ORM)506 4489 y Fg(\017)46 b Fl(-2)31 b(=)f(illegal)j(E)506 4619 y Fg(\017)46 b Fl(-3)31 b(=)f(illegal)j(A)m(OR)m(Q)506 4749 y Fg(\017)46 b Fl(-4)31 b(=)f(illegal)j(DM)506 4879 y Fg(\017)46 b Fl(-5)31 b(=)f(n)m(umerical)h(error)0 5105 y Fn(Notes:)336 5433 y Fg(\017)46 b Fl(D)m(A)-8 b(TE)35 b(is)g(the)f(instan)m(t)h(for)f (whic)m(h)g(the)h(prediction)f(is)g(required.)52 b(It)34 b(is)h(in)e(the)i(TT)e(timescale)427 5546 y(\(formerly)e(Ephemeris)e (Time,)i(ET\))f(and)g(is)g(a)h(Mo)s(di\014ed)f(Julian)g(Date)i (\(JD-2400000.5\).)336 5693 y Fg(\017)46 b Fl(The)30 b(elemen)m(ts)i(are)f(with)f(resp)s(ect)g(to)h(the)g(J2000)h(ecliptic)g (and)d(equino)m(x.)p eop end %%Page: 41 43 TeXDict begin 41 42 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPlanel)2668 b Fl(41)336 351 y Fg(\017)46 b Fl(A)31 b(c)m(hoice)h(of)e(three)h (di\013eren)m(t)g(elemen)m(t-set)i(options)d(is)h(a)m(v)-5 b(ailable:)227 538 y(Option)30 b(JF)m(ORM)h(=)f(1,)h(suitable)g(for)f (the)h(ma)5 b(jor)30 b(planets:)227 688 y(EPOCH)35 b(=)f(ep)s(o)s(c)m (h)h(of)g(elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f (\(radians\))g(ANODE)h(=)227 800 y(longitude)h(of)f(the)g(ascending)g (no)s(de,)h(big)f(omega)h(\(radians\))f(PERIH)g(=)f(longitude)i(of)f(p) s(erihelion,)227 913 y(curly)h(pi)f(\(radians\))h(A)m(OR)m(Q)g(=)g (mean)g(distance,)i(a)e(\(A)m(U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)43 b(e)37 b(\(range)g(0)g(to)h Fa(<)p Fl(1\))227 1026 y(A)m(ORL)31 b(=)f(mean)g(longitude)h(L)f(\(radians\))h(DM)g(=)f (daily)h(motion)g(\(radians\))227 1176 y(Option)f(JF)m(ORM)h(=)f(2,)h (suitable)g(for)f(minor)g(planets:)227 1326 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g (inclination)h(i)f(\(radians\))g(ANODE)h(=)227 1439 y(longitude)g(of)f (the)h(ascending)f(no)s(de,)h(big)g(omega)g(\(radians\))g(PERIH)f(=)g (argumen)m(t)g(of)h(p)s(erihelion,)227 1552 y(little)29 b(omega)f(\(radians\))f(A)m(OR)m(Q)g(=)f(mean)h(distance,)h(a)f(\(A)m (U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)31 b(e)c(\(range)h(0)f(to)g Fa(<)p Fl(1\))227 1664 y(A)m(ORL)k(=)f(mean)g(anomaly)h(M)g (\(radians\))227 1814 y(Option)f(JF)m(ORM)h(=)f(3,)h(suitable)g(for)f (comets:)227 1964 y(EPOCH)25 b(=)f(ep)s(o)s(c)m(h)h(of)h(elemen)m(ts)g (and)f(p)s(erihelion)f(\(TT)h(MJD\))h(ORBINC)f(=)g(inclination)h(i)f (\(radians\))227 2077 y(ANODE)34 b(=)f(longitude)g(of)h(the)f (ascending)g(no)s(de,)h(big)f(omega)i(\(radians\))e(PERIH)g(=)g (argumen)m(t)g(of)227 2190 y(p)s(erihelion,)h(little)h(omega)g (\(radians\))e(A)m(OR)m(Q)h(=)e(p)s(erihelion)h(distance,)i(q)e(\(A)m (U\))i(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)227 2303 y(e)31 b(\(range)g(0)g(to)g(10\))227 2452 y(Un)m(used)c(argumen)m(ts)h(\(DM)h (for)f(JF)m(ORM=2,)h(A)m(ORL)e(and)g(DM)i(for)e(JF)m(ORM=3\))i(are)f (not)g(accessed.)336 2728 y Fg(\017)46 b Fl(Eac)m(h)30 b(of)f(the)g(three)g(elemen)m(t)h(sets)f(de\014nes)f(an)h(unp)s(erturb) s(ed)c(helio)s(cen)m(tric)30 b(orbit.)41 b(F)-8 b(or)29 b(a)g(giv)m(en)427 2841 y(ep)s(o)s(c)m(h)c(of)h(observ)-5 b(ation,)27 b(the)f(p)s(osition)f(of)g(the)h(b)s(o)s(dy)e(in)h(its)g (orbit)h(can)f(b)s(e)g(predicted)g(from)g(these)427 2954 y(elemen)m(ts,)j(whic)m(h)e(are)g(called)g Fe(")p Fl(osculating)h (elemen)m(ts)p Fe(")p Fl(,)h(using)d(standard)f(t)m(w)m(o-b)s(o)s(dy)i (analytical)427 3067 y(solutions.)39 b(Ho)m(w)m(ev)m(er,)27 b(due)c(to)h(planetary)g(p)s(erturbations,)g(a)g(giv)m(en)h(set)f(of)f (osculating)i(elemen)m(ts)427 3179 y(remains)45 b(usable)g(for)g(only)h (as)f(long)h(as)g(the)f(unp)s(erturb)s(ed)d(orbit)j(that)h(it)g (describ)s(es)e(is)i(an)427 3292 y(adequate)f(appro)m(ximation)f(to)h (realit)m(y)-8 b(.)82 b(A)m(ttac)m(hed)46 b(to)e(suc)m(h)f(a)h(set)h (of)e(elemen)m(ts)i(is)f(a)g(date)427 3405 y(called)h(the)f Fe(")p Fl(osculating)g(ep)s(o)s(c)m(h)p Fe(")p Fl(,)j(at)d(whic)m(h)f (the)h(elemen)m(ts)h(are,)i(momen)m(tarily)-8 b(,)49 b(a)44 b(p)s(erfect)427 3518 y(represen)m(tation)32 b(of)e(the)h (instan)m(taneous)g(p)s(osition)g(and)e(v)m(elo)s(cit)m(y)k(of)e(the)f (b)s(o)s(dy)-8 b(.)227 3705 y(Therefore,)34 b(for)g(an)m(y)f(giv)m(en)i (problem)d(there)i(are)g(up)e(to)i(three)g(di\013eren)m(t)f(ep)s(o)s(c) m(hs)g(in)g(pla)m(y)-8 b(,)36 b(and)d(it)g(is)227 3818 y(vital)f(to)f(distinguish)f(clearly)h(b)s(et)m(w)m(een)g(them:)227 3967 y(.)46 b(The)31 b(ep)s(o)s(c)m(h)h(of)g(observ)-5 b(ation:)45 b(the)32 b(momen)m(t)h(in)e(time)i(for)f(whic)m(h)g(the)g (p)s(osition)g(of)g(the)g(b)s(o)s(dy)f(is)h(to)227 4080 y(b)s(e)e(predicted.)227 4230 y(.)38 b(The)23 b(ep)s(o)s(c)m(h)g (de\014ning)f(the)h(p)s(osition)g(of)g(the)g(b)s(o)s(dy:)36 b(the)23 b(momen)m(t)h(in)e(time)i(at)g(whic)m(h,)g(in)f(the)g(absence) 227 4343 y(of)32 b(purturbations,)f(the)i(sp)s(eci\014ed)e(p)s(osition) h(\(mean)g(longitude,)i(mean)e(anomaly)-8 b(,)34 b(or)d(p)s (erihelion\))h(is)227 4456 y(reac)m(hed.)227 4606 y(.)41 b(The)30 b(osculating)i(ep)s(o)s(c)m(h:)40 b(the)31 b(momen)m(t)g(in)f (time)h(at)g(whic)m(h)f(the)h(giv)m(en)g(elemen)m(ts)h(are)e(correct.) 227 4755 y(F)-8 b(or)27 b(the)g(ma)5 b(jor-planet)26 b(and)g(minor-planet)g(cases)h(it)g(is)f(usual)g(to)h(mak)m(e)g(the)f (ep)s(o)s(c)m(h)g(that)h(de\014nes)e(the)227 4868 y(p)s(osition)30 b(of)f(the)g(b)s(o)s(dy)f(the)h(same)h(as)f(the)h(ep)s(o)s(c)m(h)f(of)g (osculation.)42 b(Th)m(us,)28 b(only)i(t)m(w)m(o)g(di\013eren)m(t)g(ep) s(o)s(c)m(hs)227 4981 y(are)h(in)m(v)m(olv)m(ed:)42 b(the)31 b(ep)s(o)s(c)m(h)f(of)h(the)f(elemen)m(ts)i(and)e(the)g(ep)s(o)s(c)m(h) g(of)h(observ)-5 b(ation.)227 5131 y(F)d(or)27 b(comets,)h(the)d(ep)s (o)s(c)m(h)h(of)f(p)s(erihelion)h(\014xes)f(the)h(p)s(osition)f(in)h (the)f(orbit)h(and)f(in)g(general)i(a)f(di\013eren)m(t)227 5244 y(ep)s(o)s(c)m(h)k(of)h(osculation)h(will)e(b)s(e)g(c)m(hosen.)41 b(Th)m(us,)30 b(all)h(three)g(t)m(yp)s(es)f(of)h(ep)s(o)s(c)m(h)f(are)h (in)m(v)m(olv)m(ed.)227 5394 y(F)-8 b(or)31 b(the)g(presen)m(t)f (routine:)227 5543 y(.)41 b(The)30 b(ep)s(o)s(c)m(h)g(of)g(observ)-5 b(ation)32 b(is)e(the)g(argumen)m(t)h(D)m(A)-8 b(TE.)227 5693 y(.)41 b(The)30 b(ep)s(o)s(c)m(h)g(de\014ning)f(the)i(p)s(osition) f(of)h(the)f(b)s(o)s(dy)f(is)i(the)f(argumen)m(t)h(EPOCH.)p eop end %%Page: 42 44 TeXDict begin 42 43 bop 0 52 a Fl(42)2628 b Fh(SUN/267.1)63 b(|)d(palPlanet)227 351 y Fl(.)83 b(The)44 b(osculating)i(ep)s(o)s(c)m (h)e(is)h(not)f(used)g(and)g(is)g(assumed)g(to)h(b)s(e)f(close)i (enough)e(to)h(the)g(ep)s(o)s(c)m(h)227 464 y(of)40 b(observ)-5 b(ation)40 b(to)g(deliv)m(er)h(adequate)f(accuracy)-8 b(.)70 b(If)39 b(not,)j(a)e(preliminary)f(call)i(to)f(sla)p Fe(_)p Fl(PER)-8 b(TEL)227 577 y(ma)m(y)32 b(b)s(e)e(used)h(to)g(up)s (date)g(the)g(elemen)m(t-set)i(\(and)e(its)h(asso)s(ciated)g (osculating)h(ep)s(o)s(c)m(h\))e(b)m(y)g(applying)227 690 y(planetary)g(p)s(erturbations.)336 856 y Fg(\017)46 b Fl(The)33 b(reference)i(frame)e(for)h(the)f(result)h(is)g(with)f (resp)s(ect)h(to)g(the)g(mean)g(equator)g(and)f(equino)m(x)427 969 y(of)e(ep)s(o)s(c)m(h)f(J2000.)336 1117 y Fg(\017)46 b Fl(The)40 b(algorithm)i(w)m(as)f(originally)h(adapted)f(from)f(the)h (EPHSLA)f(program)g(of)h(D.H.P)-8 b(.Jones)427 1230 y(\(priv)j(ate)36 b(comm)m(unication,)h(1996\).)56 b(The)34 b(metho)s(d)g(is)g(based)h (on)f(Stump\013)p Fe(')p Fl(s)f(Univ)m(ersal)i(V)-8 b(ari-)427 1343 y(ables.)-2 1533 y Fn(See)35 b(Also)n(:)227 1697 y Fl(Ev)m(erhart,)c(E.)g(&)f(Pitkin,)g(E.T.,)h(Am.J.Ph)m(ys.)40 b(51,)32 b(712,)g(1983.)p 0 1938 3780 12 v 0 2073 a Fi(palPlanet)348 b Fc(Appro)m(ximate)36 b(helio)s(cen)m(tric)g(p)s(osition)h(and)1277 2186 y(v)m(elo)s(cit)m(y)f(of)j(ma)7 b(jor)36 b(planet)3219 2073 y Fi(palPlanet)0 2409 y Fn(Description:)47 b Fl(Calculates)d(the)g (appro)m(ximate)g(helio)s(cen)m(tric)h(p)s(osition)f(and)e(v)m(elo)s (cit)m(y)k(of)e(the)f(sp)s(eci\014ed)227 2522 y(ma)5 b(jor)31 b(planet.)0 2712 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPlanet)e(\()j(double)e(date,)g(int)h(np,)g(double)f (pv[6],)g(int)h Fg(\003)p Fe(j)h(\);)0 2903 y Fn(Argumen)m(ts:)262 3069 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 3182 y Fl(TDB)c(Mo)s(di\014ed)f(Julian)g(Date)i(\(JD-2400000.5\).)262 3330 y Fn(np)j(=)g(in)m(t)g(\(Giv)m(en\))427 3443 y Fl(planet)j (\(1=Mercury)-8 b(,)41 b(2=V)-8 b(en)m(us,)40 b(3=EMB,)f(4=Mars,)h (5=Jupiter,)f(6=Saturn,)g(7=Uran)m(us,)427 3556 y(8=Neptune\))262 3703 y Fn(p)m(v)c(=)g(double)h([6])f(\(Returned\))427 3816 y Fl(helio)s(cen)m(tric)d(x,y)-8 b(,z,xdot,ydot,zdot,)34 b(J2000,)e(equatorial)g(triad)f(in)f(units)g(A)m(U)h(and)f(A)m(U/s.)262 3964 y Fn(j)35 b(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))506 4200 y Fg(\017)46 b Fl(-2)31 b(=)f(solution)h(didn)p Fe(')p Fl(t)e(con)m(v)m(erge.)506 4330 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j(np)c(\(1-8\))506 4461 y Fg(\017)46 b Fl(0)31 b(=)f(OK)506 4591 y Fg(\017)46 b Fl(+1)31 b(=)f(w)m(arning:) 40 b(y)m(ear)32 b(outside)e(1000-3000)0 4820 y Fn(Notes:)336 5151 y Fg(\017)46 b Fl(See)31 b(SOF)-10 b(A)30 b(iauPlan94)h(for)f (details)336 5298 y Fg(\017)46 b Fl(Note)32 b(that)f(Pluto)g(is)f(supp) s(orted)f(in)h(SLA/F)g(but)g(not)h(in)f(this)g(routine)336 5446 y Fg(\017)46 b Fl(Status)31 b(-2)g(is)f(equiv)-5 b(alen)m(t)32 b(to)f(iauPlan94)h(status)e(+2.)336 5593 y Fg(\017)46 b Fl(Note)32 b(that)f(v)m(elo)s(cit)m(y)i(units)d(here)g (matc)m(h)h(the)g(SLA/F)f(do)s(cumen)m(tation.)p eop end %%Page: 43 45 TeXDict begin 43 44 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPlan)m(te)2661 b Fl(43)p 0 351 3780 12 v 0 486 a Fi(palPlan)l(te)167 b Fc(T)-10 b(op)s(o)s(cen)m(tric)37 b(RA,Dec)i(of)f(a)h(Solar-System)d (ob)7 b(ject)1031 599 y(from)37 b(helio)s(cen)m(tric)g(orbital)f (elemen)m(ts)3223 486 y Fi(palPlan)l(te)0 800 y Fn(Description:)47 b Fl(T)-8 b(op)s(o)s(cen)m(tric)24 b(apparen)m(t)f(RA,Dec)i(of)f(a)f (Solar-System)h(ob)5 b(ject)24 b(whose)g(helio)s(cen)m(tric)h(orbital) 227 912 y(elemen)m(ts)32 b(are)f(kno)m(wn.)0 1104 y Fn(In)m(v)m(o)s (cation:)130 b Fe(void)47 b(palPlante)e(\()j(double)e(date,)g(double)g (elong,)g(double)g(phi,)h(int)g(jform,)227 1217 y(double)f(epoch,)g (double)h(orbinc,)e(double)h(anode,)h(double)f(perih,)g(double)g(aorq,) g(double)227 1330 y(e,)h(double)g(aorl,)f(double)g(dm,)h(double)f Fg(\003)p Fe(ra,)h(double)f Fg(\003)p Fe(dec,)i(double)e Fg(\003)p Fe(r,)h(int)g Fg(\003)p Fe(jstat)g(\);)0 1521 y Fn(Argumen)m(ts:)262 1689 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 1802 y Fl(TT)30 b(MJD)h(of)f(observ)-5 b(ation)31 b(\(JD-2400000.5\)) 262 1950 y Fn(elong)36 b(=)f(double)g(\(Giv)m(en\))427 2063 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(east)h(longitude)g (\(radians\))262 2211 y Fn(phi)k(=)g(double)h(\(Giv)m(en\))427 2324 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(geo)s(detic)i(latitude)f (\(radians\))262 2472 y Fn(jform)k(=)g(in)m(t)g(\(Giv)m(en\))427 2585 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i(Note)f(6\)) 262 2733 y Fn(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Giv)m(en\))427 2846 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i(\(TT)e(MJD\))262 2994 y Fn(orbinc)36 b(=)f(double)g(\(Giv)m(en\))427 3107 y Fl(inclination)d(\(radians\))262 3255 y Fn(ano)s(de)j(=)g(double)h (\(Giv)m(en\))427 3368 y Fl(longitude)31 b(of)g(the)f(ascending)h(no)s (de)f(\(radians\))262 3516 y Fn(p)s(erih)35 b(=)g(double)h(\(Giv)m (en\))427 3629 y Fl(longitude)31 b(or)g(argumen)m(t)f(of)h(p)s (erihelion)f(\(radians\))262 3777 y Fn(aorq)35 b(=)g(double)h(\(Giv)m (en\))427 3890 y Fl(mean)31 b(distance)g(or)f(p)s(erihelion)g(distance) h(\(A)m(U\))262 4038 y Fn(e)k(=)g(double)g(\(Giv)m(en\))427 4151 y Fl(eccen)m(tricit)m(y)262 4299 y Fn(aorl)g(=)g(double)h(\(Giv)m (en\))427 4412 y Fl(mean)31 b(anomaly)g(or)f(longitude)h(\(radians,)g (JF)m(ORM=1,2)g(only\))262 4560 y Fn(dm)k(=)g(double)h(\(Giv)m(en\))427 4673 y Fl(daily)31 b(motion)g(\(radians,)g(JF)m(ORM=1)g(only\))262 4821 y Fn(ra)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 4934 y Fl(T)-8 b(op)s(o)s(cen)m(tric)32 b(apparen)m(t)e(RA)g (\(radians\))262 5082 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 5195 y Fl(T)-8 b(op)s(o)s(cen)m(tric)32 b(apparen)m(t)e(Dec)i(\(radians\))262 5343 y Fn(r)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5456 y Fl(Distance)d(from)e(observ)m(er)h (\(A)m(U\))262 5604 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 5717 y Fl(status:)41 b(0)31 b(=)f(OK)p eop end %%Page: 44 46 TeXDict begin 44 45 bop 0 52 a Fl(44)2630 b Fh(SUN/267.1)63 b(|)e(palPlan)m(te)506 351 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j (jform)506 481 y Fg(\017)46 b Fl(-2)31 b(=)f(illegal)j(e)506 611 y Fg(\017)46 b Fl(-3)31 b(=)f(illegal)j(aorq)506 741 y Fg(\017)46 b Fl(-4)31 b(=)f(illegal)j(dm)506 871 y Fg(\017)46 b Fl(-5)31 b(=)f(n)m(umerical)h(error)0 1099 y Fn(Notes:)336 1428 y Fg(\017)46 b Fl(D)m(A)-8 b(TE)35 b(is)g(the)f(instan)m(t)h(for)f(whic)m(h)g(the)h(prediction)f (is)g(required.)52 b(It)34 b(is)h(in)e(the)i(TT)e(timescale)427 1541 y(\(formerly)e(Ephemeris)e(Time,)i(ET\))f(and)g(is)g(a)h(Mo)s (di\014ed)f(Julian)g(Date)i(\(JD-2400000.5\).)336 1688 y Fg(\017)46 b Fl(The)28 b(longitude)i(and)e(latitude)i(allo)m(w)g (correction)g(for)e(geo)s(cen)m(tric)j(parallax.)41 b(This)28 b(is)h(usually)f(a)427 1801 y(small)c(e\013ect,)j(but)c(can)h(b)s (ecome)f(imp)s(ortan)m(t)h(for)f(near-Earth)h(asteroids.)39 b(Geo)s(cen)m(tric)26 b(p)s(ositions)427 1914 y(can)31 b(b)s(e)f(generated)h(b)m(y)f(appropriate)h(use)f(of)g(routines)h (palEp)m(v)f(\(or)h(palEvp\))f(and)g(palUe2p)m(v.)336 2061 y Fg(\017)46 b Fl(The)30 b(elemen)m(ts)i(are)f(with)f(resp)s(ect)g (to)h(the)g(J2000)h(ecliptic)g(and)d(equino)m(x.)336 2208 y Fg(\017)46 b Fl(A)31 b(c)m(hoice)h(of)e(three)h(di\013eren)m(t)g (elemen)m(t-set)i(options)d(is)h(a)m(v)-5 b(ailable:)227 2398 y(Option)30 b(JF)m(ORM)h(=)f(1,)h(suitable)g(for)f(the)h(ma)5 b(jor)30 b(planets:)227 2549 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g (elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f (\(radians\))g(ANODE)h(=)227 2662 y(longitude)h(of)f(the)g(ascending)g (no)s(de,)h(big)f(omega)h(\(radians\))f(PERIH)g(=)f(longitude)i(of)f(p) s(erihelion,)227 2775 y(curly)h(pi)f(\(radians\))h(A)m(OR)m(Q)g(=)g (mean)g(distance,)i(a)e(\(A)m(U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)43 b(e)37 b(\(range)g(0)g(to)h Fa(<)p Fl(1\))227 2888 y(A)m(ORL)31 b(=)f(mean)g(longitude)h(L)f(\(radians\))h(DM)g(=)f (daily)h(motion)g(\(radians\))227 3039 y(Option)f(JF)m(ORM)h(=)f(2,)h (suitable)g(for)f(minor)g(planets:)227 3191 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g (inclination)h(i)f(\(radians\))g(ANODE)h(=)227 3303 y(longitude)g(of)f (the)h(ascending)f(no)s(de,)h(big)g(omega)g(\(radians\))g(PERIH)f(=)g (argumen)m(t)g(of)h(p)s(erihelion,)227 3416 y(little)29 b(omega)f(\(radians\))f(A)m(OR)m(Q)g(=)f(mean)h(distance,)h(a)f(\(A)m (U\))h(E)f(=)f(eccen)m(tricit)m(y)-8 b(,)31 b(e)c(\(range)h(0)f(to)g Fa(<)p Fl(1\))227 3529 y(A)m(ORL)k(=)f(mean)g(anomaly)h(M)g (\(radians\))227 3681 y(Option)f(JF)m(ORM)h(=)f(3,)h(suitable)g(for)f (comets:)227 3832 y(EPOCH)25 b(=)f(ep)s(o)s(c)m(h)h(of)h(elemen)m(ts)g (and)f(p)s(erihelion)f(\(TT)h(MJD\))h(ORBINC)f(=)g(inclination)h(i)f (\(radians\))227 3945 y(ANODE)34 b(=)f(longitude)g(of)h(the)f (ascending)g(no)s(de,)h(big)f(omega)i(\(radians\))e(PERIH)g(=)g (argumen)m(t)g(of)227 4058 y(p)s(erihelion,)h(little)h(omega)g (\(radians\))e(A)m(OR)m(Q)h(=)e(p)s(erihelion)h(distance,)i(q)e(\(A)m (U\))i(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)227 4170 y(e)31 b(\(range)g(0)g(to)g(10\))227 4322 y(Un)m(used)c(argumen)m(ts)h(\(DM)h (for)f(JF)m(ORM=2,)h(A)m(ORL)e(and)g(DM)i(for)e(JF)m(ORM=3\))i(are)f (not)g(accessed.)336 4600 y Fg(\017)46 b Fl(Eac)m(h)30 b(of)f(the)g(three)g(elemen)m(t)h(sets)f(de\014nes)f(an)h(unp)s(erturb) s(ed)c(helio)s(cen)m(tric)30 b(orbit.)41 b(F)-8 b(or)29 b(a)g(giv)m(en)427 4713 y(ep)s(o)s(c)m(h)c(of)h(observ)-5 b(ation,)27 b(the)f(p)s(osition)f(of)g(the)h(b)s(o)s(dy)e(in)h(its)g (orbit)h(can)f(b)s(e)g(predicted)g(from)g(these)427 4826 y(elemen)m(ts,)j(whic)m(h)e(are)g(called)g Fe(")p Fl(osculating)h (elemen)m(ts)p Fe(")p Fl(,)h(using)d(standard)f(t)m(w)m(o-b)s(o)s(dy)i (analytical)427 4939 y(solutions.)39 b(Ho)m(w)m(ev)m(er,)27 b(due)c(to)h(planetary)g(p)s(erturbations,)g(a)g(giv)m(en)h(set)f(of)f (osculating)i(elemen)m(ts)427 5052 y(remains)45 b(usable)g(for)g(only)h (as)f(long)h(as)g(the)f(unp)s(erturb)s(ed)d(orbit)j(that)h(it)g (describ)s(es)e(is)i(an)427 5165 y(adequate)f(appro)m(ximation)f(to)h (realit)m(y)-8 b(.)82 b(A)m(ttac)m(hed)46 b(to)e(suc)m(h)f(a)h(set)h (of)e(elemen)m(ts)i(is)f(a)g(date)427 5278 y(called)h(the)f Fe(")p Fl(osculating)g(ep)s(o)s(c)m(h)p Fe(")p Fl(,)j(at)d(whic)m(h)f (the)h(elemen)m(ts)h(are,)i(momen)m(tarily)-8 b(,)49 b(a)44 b(p)s(erfect)427 5391 y(represen)m(tation)32 b(of)e(the)h (instan)m(taneous)g(p)s(osition)g(and)e(v)m(elo)s(cit)m(y)k(of)e(the)f (b)s(o)s(dy)-8 b(.)227 5580 y(Therefore,)34 b(for)g(an)m(y)f(giv)m(en)i (problem)d(there)i(are)g(up)e(to)i(three)g(di\013eren)m(t)f(ep)s(o)s(c) m(hs)g(in)g(pla)m(y)-8 b(,)36 b(and)d(it)g(is)227 5693 y(vital)f(to)f(distinguish)f(clearly)h(b)s(et)m(w)m(een)g(them:)p eop end %%Page: 45 47 TeXDict begin 45 46 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPlan)m(te)2661 b Fl(45)227 351 y(.)46 b(The)31 b(ep)s(o)s(c)m(h)h(of)g(observ)-5 b(ation:)45 b(the)32 b(momen)m(t)h(in)e(time)i(for)f(whic)m(h)g(the)g (p)s(osition)g(of)g(the)g(b)s(o)s(dy)f(is)h(to)227 464 y(b)s(e)e(predicted.)227 617 y(.)38 b(The)23 b(ep)s(o)s(c)m(h)g (de\014ning)f(the)h(p)s(osition)g(of)g(the)g(b)s(o)s(dy:)36 b(the)23 b(momen)m(t)h(in)e(time)i(at)g(whic)m(h,)g(in)f(the)g(absence) 227 730 y(of)32 b(purturbations,)f(the)i(sp)s(eci\014ed)e(p)s(osition)h (\(mean)g(longitude,)i(mean)e(anomaly)-8 b(,)34 b(or)d(p)s(erihelion\)) h(is)227 843 y(reac)m(hed.)227 996 y(.)41 b(The)30 b(osculating)i(ep)s (o)s(c)m(h:)40 b(the)31 b(momen)m(t)g(in)f(time)h(at)g(whic)m(h)f(the)h (giv)m(en)g(elemen)m(ts)h(are)e(correct.)227 1149 y(F)-8 b(or)27 b(the)g(ma)5 b(jor-planet)26 b(and)g(minor-planet)g(cases)h(it) g(is)f(usual)g(to)h(mak)m(e)g(the)f(ep)s(o)s(c)m(h)g(that)h(de\014nes)e (the)227 1262 y(p)s(osition)30 b(of)f(the)g(b)s(o)s(dy)f(the)h(same)h (as)f(the)h(ep)s(o)s(c)m(h)f(of)g(osculation.)42 b(Th)m(us,)28 b(only)i(t)m(w)m(o)g(di\013eren)m(t)g(ep)s(o)s(c)m(hs)227 1375 y(are)h(in)m(v)m(olv)m(ed:)42 b(the)31 b(ep)s(o)s(c)m(h)f(of)h (the)f(elemen)m(ts)i(and)e(the)g(ep)s(o)s(c)m(h)g(of)h(observ)-5 b(ation.)227 1528 y(F)d(or)27 b(comets,)h(the)d(ep)s(o)s(c)m(h)h(of)f (p)s(erihelion)h(\014xes)f(the)h(p)s(osition)f(in)h(the)f(orbit)h(and)f (in)g(general)i(a)f(di\013eren)m(t)227 1641 y(ep)s(o)s(c)m(h)k(of)h (osculation)h(will)e(b)s(e)g(c)m(hosen.)41 b(Th)m(us,)30 b(all)h(three)g(t)m(yp)s(es)f(of)h(ep)s(o)s(c)m(h)f(are)h(in)m(v)m(olv) m(ed.)227 1794 y(F)-8 b(or)31 b(the)g(presen)m(t)f(routine:)227 1947 y(.)41 b(The)30 b(ep)s(o)s(c)m(h)g(of)g(observ)-5 b(ation)32 b(is)e(the)g(argumen)m(t)h(D)m(A)-8 b(TE.)227 2100 y(.)41 b(The)30 b(ep)s(o)s(c)m(h)g(de\014ning)f(the)i(p)s(osition) f(of)h(the)f(b)s(o)s(dy)f(is)i(the)f(argumen)m(t)h(EPOCH.)227 2253 y(.)83 b(The)44 b(osculating)i(ep)s(o)s(c)m(h)e(is)h(not)f(used)g (and)g(is)g(assumed)g(to)h(b)s(e)f(close)i(enough)e(to)h(the)g(ep)s(o)s (c)m(h)227 2366 y(of)40 b(observ)-5 b(ation)40 b(to)g(deliv)m(er)h (adequate)f(accuracy)-8 b(.)70 b(If)39 b(not,)j(a)e(preliminary)f(call) i(to)f(sla)p Fe(_)p Fl(PER)-8 b(TEL)227 2479 y(ma)m(y)32 b(b)s(e)e(used)h(to)g(up)s(date)g(the)g(elemen)m(t-set)i(\(and)e(its)h (asso)s(ciated)g(osculating)h(ep)s(o)s(c)m(h\))e(b)m(y)g(applying)227 2592 y(planetary)g(p)s(erturbations.)336 2761 y Fg(\017)46 b Fl(Tw)m(o)25 b(imp)s(ortan)m(t)g(sources)g(for)g(orbital)g(elemen)m (ts)h(are)f(Horizons,)i(op)s(erated)e(b)m(y)g(the)g(Jet)g(Propul-)427 2873 y(sion)j(Lab)s(oratory)-8 b(,)28 b(P)m(asadena,)h(and)e(the)g (Minor)h(Planet)g(Cen)m(ter,)g(op)s(erated)g(b)m(y)f(the)g(Cen)m(ter)h (for)427 2986 y(Astroph)m(ysics,)j(Harv)-5 b(ard.)227 3179 y(The)20 b(JPL)g(Horizons)h(elemen)m(ts)g(\(helio)s(cen)m(tric,)k (J2000)d(ecliptic)g(and)d(equino)m(x\))i(corresp)s(ond)e(to)i(SLALIB) 227 3292 y(argumen)m(ts)31 b(as)g(follo)m(ws.)227 3445 y(Ma)5 b(jor)31 b(planets:)227 3598 y(JF)m(ORM)e(=)f(1)h(EPOCH)e(=)h (JDCT-2400000.5)k(ORBINC)c(=)g(IN)h(\(in)f(radians\))g(ANODE)h(=)f(OM)g (\(in)227 3711 y(radians\))j(PERIH)f(=)h(OM+W)f(\(in)h(radians\))g(A)m (OR)m(Q)g(=)f(A)h(E)g(=)f(EC)g(A)m(ORL)h(=)f(MA+OM+W)h(\(in)227 3824 y(radians\))g(DM)g(=)f(N)g(\(in)h(radians\))227 3977 y(Ep)s(o)s(c)m(h)f(of)g(osculation)i(=)e(JDCT-2400000.5)227 4130 y(Minor)h(planets:)227 4283 y(JF)m(ORM)e(=)f(2)h(EPOCH)e(=)h (JDCT-2400000.5)k(ORBINC)c(=)g(IN)h(\(in)f(radians\))g(ANODE)h(=)f(OM)g (\(in)227 4396 y(radians\))j(PERIH)f(=)g(W)g(\(in)h(radians\))f(A)m(OR) m(Q)h(=)f(A)g(E)g(=)g(EC)g(A)m(ORL)h(=)f(MA)g(\(in)h(radians\))227 4549 y(Ep)s(o)s(c)m(h)f(of)g(osculation)i(=)e(JDCT-2400000.5)227 4702 y(Comets:)227 4855 y(JF)m(ORM)38 b(=)g(3)g(EPOCH)f(=)g (Tp-2400000.5)k(ORBINC)d(=)f(IN)h(\(in)g(radians\))f(ANODE)h(=)g(OM)f (\(in)227 4968 y(radians\))31 b(PERIH)f(=)g(W)g(\(in)h(radians\))f(A)m (OR)m(Q)h(=)f(QR)g(E)g(=)g(EC)227 5121 y(Ep)s(o)s(c)m(h)g(of)g (osculation)i(=)e(JDCT-2400000.5)227 5274 y(The)g(MPC)g(elemen)m(ts)i (corresp)s(ond)d(to)i(SLALIB)f(argumen)m(ts)h(as)f(follo)m(ws.)227 5427 y(Minor)h(planets:)227 5580 y(JF)m(ORM)e(=)f(2)g(EPOCH)g(=)g(Ep)s (o)s(c)m(h-2400000.5)j(ORBINC)d(=)g(Incl.)40 b(\(in)28 b(radians\))g(ANODE)h(=)e(No)s(de)227 5693 y(\(in)k(radians\))f(PERIH)g (=)g(P)m(erih.)41 b(\(in)30 b(radians\))g(A)m(OR)m(Q)h(=)f(a)h(E)f(=)g (e)h(A)m(ORL)f(=)g(M)h(\(in)f(radians\))p eop end %%Page: 46 48 TeXDict begin 46 47 bop 0 52 a Fl(46)2620 b Fh(SUN/267.1)63 b(|)e(palPlan)m(tu)227 351 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(osculation)i (=)e(Ep)s(o)s(c)m(h-2400000.5)227 500 y(Comets:)227 650 y(JF)m(ORM)g(=)e(3)i(EPOCH)e(=)g(T-2400000.5)33 b(ORBINC)c(=)f(Incl.)40 b(\(in)29 b(radians\))g(ANODE)h(=)e(No)s(de.)40 b(\(in)227 762 y(radians\))31 b(PERIH)f(=)g(P)m(erih.)40 b(\(in)31 b(radians\))f(A)m(OR)m(Q)h(=)f(q)g(E)g(=)g(e)227 912 y(Ep)s(o)s(c)m(h)g(of)g(osculation)i(=)e(Ep)s(o)s(c)m(h-2400000.5)p 0 1141 3780 12 v 0 1275 a Fi(palPlan)l(tu)157 b Fc(T)-10 b(op)s(o)s(cen)m(tric)35 b(RA,Dec)j(of)e(a)h(Solar-System)e(ob)7 b(ject)1284 1388 y(from)38 b(univ)m(ersal)f(elemen)m(ts)3209 1275 y Fi(palPlan)l(tu)0 1576 y Fn(Description:)47 b Fl(T)-8 b(op)s(o)s(cen)m(tric)36 b(apparen)m(t)f(RA,Dec)i(of)e(a)h (Solar-System)f(ob)5 b(ject)36 b(whose)f(helio)s(cen)m(tric)i(uni-)227 1689 y(v)m(ersal)32 b(elemen)m(ts)f(are)g(kno)m(wn.)0 1875 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPlantu)e(\()j (double)e(date,)g(double)g(elong,)g(double)g(phi,)h(const)f(double)227 1988 y(u[13],)g(double)g Fg(\003)p Fe(ra,)i(double)e Fg(\003)p Fe(dec,)h(double)f Fg(\003)p Fe(r,)i(int)f Fg(\003)p Fe(jstat)f(\))i Fg(f)0 2173 y Fn(Argumen)m(ts:)262 2334 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 2447 y Fl(TT)30 b(MJD)h(of)f(observ)-5 b(ation)31 b(\(JD-2400000.5\))262 2591 y Fn(elong)36 b(=)f(double)g(\(Giv)m(en\))427 2704 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(east)h(longitude)g(\(radians\))262 2848 y Fn(phi)k(=)g(double)h(\(Giv)m(en\))427 2961 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(geo)s(detic)i(latitude)f(\(radians\)) 262 3104 y Fn(u)k(=)g(const)h(double)f([13])h(\(Giv)m(en\))427 3217 y Fl(Univ)m(ersal)c(orbital)f(elemen)m(ts)506 3337 y Fg(\017)46 b Fl(\(0\))32 b(com)m(bined)e(mass)h(\(M+m\))506 3465 y Fg(\017)46 b Fl(\(1\))32 b(total)g(energy)f(of)f(the)h(orbit)f (\(alpha\))506 3594 y Fg(\017)46 b Fl(\(2\))32 b(reference)f (\(osculating\))h(ep)s(o)s(c)m(h)e(\(t0\))506 3722 y Fg(\017)46 b Fl(\(3-5\))32 b(p)s(osition)f(at)g(reference)g(ep)s(o)s(c) m(h)f(\(r0\))506 3851 y Fg(\017)46 b Fl(\(6-8\))32 b(v)m(elo)s(cit)m(y) h(at)e(reference)g(ep)s(o)s(c)m(h)f(\(v0\))506 3979 y Fg(\017)46 b Fl(\(9\))32 b(helio)s(cen)m(tric)g(distance)f(at)g (reference)g(ep)s(o)s(c)m(h)506 4107 y Fg(\017)46 b Fl(\(10\))32 b(r0.v0)506 4236 y Fg(\017)46 b Fl(\(11\))32 b(date)f(\(t\))506 4364 y Fg(\017)46 b Fl(\(12\))32 b(univ)m(ersal)f(eccen)m(tric)h (anomaly)f(\(psi\))g(of)g(date,)g(appro)m(x)262 4508 y Fn(ra)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 4621 y Fl(T)-8 b(op)s(o)s(cen)m(tric)32 b(apparen)m(t)e(RA)g (\(radians\))262 4765 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 4878 y Fl(T)-8 b(op)s(o)s(cen)m(tric)32 b(apparen)m(t)e(Dec)i(\(radians\))262 5021 y Fn(r)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 5134 y Fl(Distance)d(from)e(observ)m(er)h (\(A)m(U\))262 5278 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 5391 y Fl(status:)41 b(0)31 b(=)f(OK)506 5511 y Fg(\017)46 b Fl(-1)31 b(=)f(radius)g(v)m(ector)i(zero)506 5639 y Fg(\017)46 b Fl(-2)31 b(=)f(failed)h(to)g(con)m(v)m(erge)p eop end %%Page: 47 49 TeXDict begin 47 48 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPm)2778 b Fl(47)0 351 y Fn(Notes:)336 676 y Fg(\017)46 b Fl(D)m(A)-8 b(TE)35 b(is)g(the)f(instan)m(t)h(for)f(whic)m(h)g(the)h(prediction)f (is)g(required.)52 b(It)34 b(is)h(in)e(the)i(TT)e(timescale)427 789 y(\(formerly)e(Ephemeris)e(Time,)i(ET\))f(and)g(is)g(a)h(Mo)s (di\014ed)f(Julian)g(Date)i(\(JD-2400000.5\).)336 932 y Fg(\017)46 b Fl(The)28 b(longitude)i(and)e(latitude)i(allo)m(w)g (correction)g(for)e(geo)s(cen)m(tric)j(parallax.)41 b(This)28 b(is)h(usually)f(a)427 1045 y(small)c(e\013ect,)j(but)c(can)h(b)s (ecome)f(imp)s(ortan)m(t)h(for)f(near-Earth)h(asteroids.)39 b(Geo)s(cen)m(tric)26 b(p)s(ositions)427 1158 y(can)31 b(b)s(e)f(generated)h(b)m(y)f(appropriate)h(use)f(of)g(routines)h (palEp)m(v)f(\(or)h(palEvp\))f(and)g(palUe2p)m(v.)336 1301 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m(h)g(de\014ne)e(the)i (orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 1414 y(metho)s(d)26 b(of)g(univ)m(ersal)h(v)-5 b(ariables)27 b(\(see)g(reference)f(2\).)41 b(They)25 b(consist)i(of)f(the)h(com)m (bined)f(mass)g(of)427 1527 y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f (ep)s(o)s(c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j (v)m(ectors)f(\(arbitrary)f(reference)427 1640 y(frame\))i(at)g(that)g (ep)s(o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g (includes)g(also)i(v)-5 b(arious)34 b(quan)m(tities)427 1753 y(that)h(can,)g(in)e(fact,)j(b)s(e)d(deriv)m(ed)g(from)h(the)f (other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to) 427 1866 y(a)m(v)m(oiding)k(unnecessary)e(computation)h(and)f(loss)h (of)f(accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 1979 y(tities)k(are)f(\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional) g(to)h(the)g(total)h(energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 2092 y(helio)s(cen)m(tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g (the)e(out)m(w)m(ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y) h(at)f(the)427 2205 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g (estimate)h(of)e(psi,)j(the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j (anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 2318 y(date)31 b(and)f(\(v\))h(that)g(date.)336 2461 y Fg(\017)46 b Fl(The)30 b(univ)m(ersal)h(elemen)m(ts)g(are)g(with)f(resp)s(ect)h(to)g (the)f(J2000)i(equator)f(and)f(equino)m(x.)-2 2646 y Fn(See)35 b(Also)n(:)336 2970 y Fg(\017)46 b Fl(Sterne,)26 b(Theo)s(dore)e(E.,)i Fe(")p Fl(An)e(In)m(tro)s(duction)g(to)h (Celestial)h(Mec)m(hanics)p Fe(")p Fl(,)i(In)m(terscience)d(Publish-) 427 3083 y(ers)30 b(Inc.,)h(1960.)42 b(Section)32 b(6.7,)f(p199.)336 3227 y Fg(\017)46 b Fl(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)g(E.T.,)h (Am.J.Ph)m(ys.)40 b(51,)32 b(712,)g(1983.)p 0 3454 3780 12 v 0 3589 a Fi(palPm)196 b Fc(Apply)38 b(corrections)f(for)h(prop)s (er)g(motion)e(a)j(star)f(RA,Dec)195 b Fi(palPm)0 3799 y Fn(Description:)47 b Fl(Apply)33 b(corrections)j(for)f(prop)s(er)e (motion)i(to)g(a)g(star)g(RA,Dec)h(using)e(the)h(SOF)-10 b(A)34 b(routine)227 3911 y(iauStarpm.)0 4096 y Fn(In)m(v)m(o)s (cation:)130 b Fe(void)47 b(palPm)f(\()i(double)e(r0,)h(double)f(d0,)h (double)f(pr,)h(double)f(pd,)h(double)f(px,)227 4209 y(double)g(rv,)h(double)f(ep0,)h(double)f(ep1,)h(double)f Fg(\003)p Fe(r1,)h(double)f Fg(\003)p Fe(d1)i(\);)0 4394 y Fn(Argumen)m(ts:)262 4555 y(r0)35 b(=)g(double)h(\(Giv)m(en\))427 4668 y Fl(RA)31 b(at)g(ep)s(o)s(c)m(h)f(ep0)h(\(radians\))262 4811 y Fn(d0)k(=)g(double)h(\(Giv)m(en\))427 4924 y Fl(Dec)c(at)f(ep)s (o)s(c)m(h)f(ep0)h(\(radians\))262 5068 y Fn(pr)k(=)g(double)h(\(Giv)m (en\))427 5180 y Fl(RA)31 b(prop)s(er)e(motion)i(in)f(radians)g(p)s(er) f(y)m(ear.)262 5324 y Fn(p)s(d)35 b(=)g(double)h(\(Giv)m(en\))427 5437 y Fl(Dec)c(prop)s(er)d(motion)i(in)f(radians)g(p)s(er)f(y)m(ear.) 262 5580 y Fn(p)m(x)35 b(=)g(double)h(\(Giv)m(en\))427 5693 y Fl(P)m(arallax)c(\(arcsec\))p eop end %%Page: 48 50 TeXDict begin 48 49 bop 0 52 a Fl(48)2648 b Fh(SUN/267.1)63 b(|)d(palPrebn)262 351 y Fn(rv)35 b(=)g(double)h(\(Giv)m(en\))427 464 y Fl(Radial)31 b(v)m(elo)s(cit)m(y)i(\(km/sec)f(+v)m(e)f(if)f (receding\))262 637 y Fn(ep0)35 b(=)g(double)h(\(Giv)m(en\))427 750 y Fl(Start)31 b(ep)s(o)s(c)m(h)f(in)g(y)m(ears,)h(assumed)f(to)h(b) s(e)f(Julian.)262 924 y Fn(ep1)35 b(=)g(double)h(\(Giv)m(en\))427 1036 y Fl(End)29 b(ep)s(o)s(c)m(h)i(in)f(y)m(ears,)h(assumed)f(to)h(b)s (e)e(Julian.)262 1210 y Fn(r1)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1323 y Fl(RA)c(at)g(ep)s(o)s(c)m(h)f(ep1)h (\(radians\))262 1496 y Fn(d1)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1609 y Fl(Dec)d(at)f(ep)s(o)s(c)m(h)f(ep1)h (\(radians\))0 1915 y Fn(Notes:)336 2297 y Fg(\017)46 b Fl(Uses)32 b(iauStarpm)f(but)g(ignores)h(the)g(status)f(returns)g (from)g(that)h(routine.)44 b(In)31 b(particular)h(note)427 2409 y(that)23 b(parallax)h(should)d(not)i(b)s(e)f(zero)h(when)e(the)i (prop)s(er)e(motions)i(are)g(non-zero.)38 b(SLA/F)23 b(allo)m(ws)427 2522 y(parallax)32 b(to)f(b)s(e)e(zero.)336 2696 y Fg(\017)46 b Fl(Assumes)30 b(all)h(ep)s(o)s(c)m(hs)f(are)h (Julian)f(ep)s(o)s(c)m(hs.)p 0 3001 3780 12 v 0 3135 a Fi(palPrebn)156 b Fc(Generate)36 b(the)i(matrix)d(of)i(precession)g (b)s(et)m(w)m(een)f(t)m(w)m(o)1566 3248 y(ob)7 b(jects)38 b(\(old\))3244 3135 y Fi(palPrebn)0 3542 y Fn(Description:)47 b Fl(Generate)21 b(the)g(matrix)f(of)h(precession)f(b)s(et)m(w)m(een)h (t)m(w)m(o)h(ep)s(o)s(c)m(hs,)g(using)e(the)g(old,)j(pre-IA)m(U1976,) 227 3655 y(Bessel-New)m(com)m(b)33 b(mo)s(del,)e(using)f(Kinoshita)p Fe(')p Fl(s)g(form)m(ulation)0 3897 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPrebn)e(\()j(double)e(bep0,)g(double)g(bep1,)h (double)f(rmatp[3][3])f(\);)0 4138 y Fn(Argumen)m(ts:)262 4356 y(b)s(ep0)35 b(=)g(double)h(\(Giv)m(en\))427 4469 y Fl(Beginning)31 b(Besselian)h(ep)s(o)s(c)m(h.)262 4642 y Fn(b)s(ep1)j(=)g(double)h(\(Giv)m(en\))427 4755 y Fl(Ending)30 b(Besselian)h(ep)s(o)s(c)m(h)262 4928 y Fn(rmatp)k(=)g(double[3][3])h (\(Returned\))427 5041 y Fl(precession)31 b(matrix)g(in)f(the)g(sense)g (V\(BEP1\))i(=)e(RMA)-8 b(TP)31 b Fg(\003)g Fl(V\(BEP0\))-2 5283 y Fn(See)k(Also)n(:)227 5447 y Fl(Kinoshita,)25 b(H.)e(\(1975\))i Fe(')p Fl(F)-8 b(orm)m(ulas)24 b(for)e(precession)p Fe(')p Fl(,)j(SA)m(O)d(Sp)s(ecial)h(Rep)s(ort)g(No.)38 b(364,)26 b(Smithsonian)227 5560 y(Institution)31 b(Astroph)m(ysical)g (Observ)-5 b(atory)d(,)31 b(Cam)m(bridge,)g(Massac)m(h)m(usetts.)p eop end %%Page: 49 51 TeXDict begin 49 50 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPrec)2738 b Fl(49)p 0 351 3780 12 v 0 486 a Fi(palPrec)156 b Fc(F)-10 b(orm)36 b(the)h(matrix)d(of)i(precession)g(b)s(et)m(w)m(een)g(t)m(w)m (o)f(ep)s(o)s(c)m(hs)1600 599 y(\(IA)m(U)j(2006\))3334 486 y Fi(palPrec)0 863 y Fn(Description:)47 b Fl(The)37 b(IA)m(U)h(2006)i(precession)e(matrix)g(from)g(ep0)g(to)h(ep1)f(is)g (found)e(and)i(returned.)62 b(The)227 976 y(matrix)34 b(is)f(in)g(the)g(sense)g(V\(EP1\))h(=)f(RMA)-8 b(TP)33 b Fg(\003)h Fl(V\(EP0\).)50 b(The)33 b(ep)s(o)s(c)m(hs)f(are)i(TDB)f (\(lo)s(osely)i(TT\))227 1089 y(Julian)30 b(ep)s(o)s(c)m(hs.)227 1255 y(Though)h(the)g(matrix)h(metho)s(d)e(itself)i(is)g(rigorous,)g (the)f(precession)h(angles)g(are)f(expressed)g(through)227 1367 y(canonical)f(p)s(olynomials)f(whic)m(h)f(are)h(v)-5 b(alid)29 b(only)f(for)h(a)g(limited)g(time)g(span)f(of)g(a)h(few)f(h)m (undred)f(y)m(ears)227 1480 y(around)j(the)g(curren)m(t)g(ep)s(o)s(c)m (h.)0 1699 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palPrec\()46 b(double)g(ep0,)g(double)h(ep1,)f(double)g(rmatp[3][3])f(\))0 1917 y Fn(Argumen)m(ts:)262 2112 y(ep0)35 b(=)g(double)h(\(Giv)m(en\)) 427 2225 y Fl(Beginning)31 b(ep)s(o)s(c)m(h)262 2386 y Fn(ep1)k(=)g(double)h(\(Giv)m(en\))427 2499 y Fl(Ending)30 b(ep)s(o)s(c)m(h)262 2661 y Fn(rmatp)35 b(=)g(double[3][3])h (\(Returned\))427 2774 y Fl(Precession)31 b(matrix)p 0 3050 V 0 3184 a Fi(palPreces)223 b Fc(Precession)38 b(-)h(either)f(FK4)h(or)f(FK5)h(as)g(required)221 b Fi(palPreces)0 3442 y Fn(Description:)47 b Fl(Precess)30 b(co)s(ordinates)h(using)f (the)h(appropriate)f(system)h(and)e(ep)s(o)s(c)m(hs.)0 3660 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPreces)e(\()j (const)e(char)h(sys[3],)e(double)h(ep0,)h(double)f(ep1,)h(double)227 3773 y Fg(\003)p Fe(ra,)h(double)e Fg(\003)p Fe(dc)h(\);)0 3992 y Fn(Argumen)m(ts:)262 4186 y(sys)36 b(=)f(const)g(c)m(har)h([3])f (\(Giv)m(en\))427 4299 y Fl(Precession)c(to)g(b)s(e)f(applied:)41 b(FK4)30 b(or)h(FK5.)41 b(Case)31 b(insensitiv)m(e.)262 4460 y Fn(ep0)k(=)g(double)h(\(Giv)m(en\))427 4573 y Fl(Starting)31 b(ep)s(o)s(c)m(h.)262 4735 y Fn(ep1)k(=)g(double)h (\(Giv)m(en\))427 4848 y Fl(Ending)30 b(ep)s(o)s(c)m(h)262 5009 y Fn(ra)35 b(=)g(double)g Fg(\003)h Fn(\(Giv)m(en)f(&)g (Returned\))427 5122 y Fl(On)41 b(input)f(the)i(RA)f(mean)h(equator)g (&)f(equino)m(x)h(at)g(ep)s(o)s(c)m(h)f(ep0.)74 b(On)41 b(exit)h(the)g(RA)f(mean)427 5235 y(equator)31 b(&)f(equino)m(x)h(of)g (ep)s(o)s(c)m(h)f(ep1.)262 5397 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Giv)m(en)g(&)g(Returned\))427 5510 y Fl(On)41 b(input)g(the)h(dec)g(mean)g(equator)h(&)e(equino)m(x)i(at)f(ep)s(o)s (c)m(h)g(ep0.)75 b(On)41 b(exit)i(the)f(dec)g(mean)427 5623 y(equator)31 b(&)f(equino)m(x)h(of)g(ep)s(o)s(c)m(h)f(ep1.)p eop end %%Page: 50 52 TeXDict begin 50 51 bop 0 52 a Fl(50)2666 b Fh(SUN/267.1)63 b(|)d(palPv2el)0 351 y Fn(Notes:)336 677 y Fg(\017)46 b Fl(Uses)31 b(palPrec)g(for)f(FK5)h(data)g(and)e(palPrebn)h(for)g(FK4) h(data.)336 822 y Fg(\017)46 b Fl(The)29 b(ep)s(o)s(c)m(hs)h(are)g (Besselian)h(if)f(SYSTEM=)p Fe(')p Fl(FK4)p Fe(')e Fl(and)h(Julian)g (if)h Fe(')p Fl(FK5)p Fe(')p Fl(.)40 b(F)-8 b(or)31 b(example,)g(to)427 935 y(precess)k(co)s(ordinates)h(in)e(the)h(old)g(system)g(from)g (equino)m(x)g(1900.0)i(to)f(1950.0)h(the)f(call)g(w)m(ould)427 1048 y(b)s(e:)k(palPreces\()32 b Fe(")p Fl(FK4)p Fe(")p Fl(,)e(1900.0,)j(1950.0,)g(&ra,)e(&dc)f(\);)336 1193 y Fg(\017)46 b Fl(This)33 b(routine)g(will)h(NOT)e(correctly)j(con)m(v) m(ert)g(b)s(et)m(w)m(een)f(the)f(old)h(and)f(the)g(new)g(systems)g(-)h (for)427 1306 y(example)24 b(con)m(v)m(ersion)g(from)f(B1950)i(to)f (J2000.)40 b(F)-8 b(or)23 b(these)h(purp)s(oses)d(see)j(palFk425,)i (palFk524,)427 1419 y(palFk45z)32 b(and)e(palFk54z.)336 1564 y Fg(\017)46 b Fl(If)35 b(an)g(in)m(v)-5 b(alid)36 b(SYSTEM)f(is)g(supplied,)h(v)-5 b(alues)35 b(of)h(-99D0,-99D0)k(will) 35 b(b)s(e)g(returned)f(for)h(b)s(oth)427 1677 y(RA)c(and)e(DC.)p 0 1911 3780 12 v 0 2045 a Fi(palPren)l(ut)182 b Fc(F)-10 b(orm)38 b(the)g(matrix)f(of)h(bias-precession-n)m(utation)1410 2158 y(\(IA)m(U)g(2006/2000A\))3196 2045 y Fi(palPren)l(ut)0 2385 y Fn(Description:)47 b Fl(F)-8 b(orm)31 b(the)g(matrix)h(of)f (bias-precession-n)m(utation)i(\(IA)m(U)f(2006/2000A\).)k(The)30 b(ep)s(o)s(c)m(h)h(and)227 2498 y(date)40 b(are)f(TT)f(\(but)g(TDB)h (is)g(usually)f(close)i(enough\).)66 b(The)38 b(matrix)h(is)g(in)f(the) h(sense)g(v\(true\))g(=)227 2611 y(rmatpn)30 b Fg(\003)h Fl(v\(mean\).)0 2797 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPrenut\()e(double)h(epoch,)g(double)g(date,)g(double)h (rmatpn[3][3])d(\))0 2984 y Fn(Argumen)m(ts:)262 3146 y(ep)s(o)s(c)m(h)36 b(=)f(double)g(\(Returned\))427 3259 y Fl(Julian)30 b(ep)s(o)s(c)m(h)g(for)h(mean)f(co)s(ordinates.)262 3404 y Fn(date)k(=)i(double)f(\(Returned\))427 3517 y Fl(Mo)s(di\014ed)30 b(Julian)g(Date)i(\(JD-2400000.5\))j(for)c(true)f (co)s(ordinates.)262 3662 y Fn(rmatpn)35 b(=)g(double[3][3])h (\(Returned\))427 3775 y Fl(com)m(bined)31 b(NPB)g(matrix)p 0 4009 V 0 4143 a Fi(palPv2el)301 b Fc(P)m(osition)36 b(v)m(elo)s(cit)m(y)g(to)i(helio)s(cen)m(tirc)f(osculating)1670 4256 y(elemen)m(ts)3273 4143 y Fi(palPv2el)0 4448 y Fn(Description:)47 b Fl(Helio)s(cen)m(tric)27 b(osculating)g(elemen)m(ts)f(obtained)g (from)f(instan)m(taneous)h(p)s(osition)f(and)g(v)m(elo)s(c-)227 4561 y(it)m(y)-8 b(.)0 4747 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPv2el)e(\()j(const)e(double)g(pv[6],)g(double)g (date,)h(double)f(pmass,)g(int)227 4860 y(jformr,)g(int)h Fg(\003)p Fe(jform,)g(double)f Fg(\003)p Fe(epoch,)g(double)g Fg(\003)p Fe(orbinc,)h(double)f Fg(\003)p Fe(anode,)g(double)g Fg(\003)p Fe(perih,)227 4973 y(double)g Fg(\003)p Fe(aorq,)h(double)f Fg(\003)p Fe(e,)i(double)e Fg(\003)p Fe(aorl,)h(double)f Fg(\003)p Fe(dm,)h(int)g Fg(\003)p Fe(jstat)g(\);)0 5160 y Fn(Argumen)m(ts:)262 5322 y(p)m(v)35 b(=)g(const)h(double)f([6])h (\(Giv)m(en\))427 5435 y Fl(Helio)s(cen)m(tric)d(x,y)-8 b(,z,xdot,ydot,zdot)34 b(of)c(date,)i(J2000)f(equatorial)h(triad)f(\(A) m(U,A)m(U/s;)i(Note)f(1\))262 5580 y Fn(date)i(=)i(double)f(\(Giv)m (en\))427 5693 y Fl(Date)d(\(TT)e(Mo)s(di\014ed)g(Julian)g(Date)i(=)e (JD-2400000.5\))p eop end %%Page: 51 53 TeXDict begin 51 52 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPv2el)2696 b Fl(51)262 351 y Fn(pmass)35 b(=)h(double)f(\(Giv)m(en\))427 464 y Fl(Mass)c(of)g(the)f(planet)h(\(Sun=1;)f(Note)h(2\))262 615 y Fn(jformr)k(=)h(in)m(t)e(\(Giv)m(en\))427 727 y Fl(Requested)d(elemen)m(t)h(set)f(\(1-3;)h(Note)g(3\))262 878 y Fn(jform)j(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 991 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i(Note)f(4\)) 262 1141 y Fn(ep)s(o)s(c)m(h)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 1254 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i (\(TT)e(MJD\))262 1404 y Fn(orbinc)36 b(=)f(double)g Fg(\003)h Fn(\(Returned\))427 1517 y Fl(inclination)c(\(radians\))262 1667 y Fn(ano)s(de)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1780 y Fl(longitude)c(of)g(the)f(ascending)h(no)s(de)f(\(radians\))262 1931 y Fn(p)s(erih)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2044 y Fl(longitude)c(or)g(argumen)m(t)f(of)h(p)s(erihelion)f (\(radians\))262 2194 y Fn(aorq)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2307 y Fl(mean)c(distance)g(or)f(p)s(erihelion)g (distance)h(\(A)m(U\))262 2457 y Fn(e)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 2570 y Fl(eccen)m(tricit)m(y)262 2720 y Fn(aorl)f(=)g(double)h Fg(\003)f Fn(\(Returned\))427 2833 y Fl(mean)c(anomaly)g(or)f(longitude)h(\(radians,)g(JF)m(ORM=1,2)g (only\))262 2984 y Fn(dm)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3097 y Fl(daily)c(motion)g(\(radians,)g(JF)m(ORM=1)g(only\))262 3247 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 3360 y Fl(status:)41 b(0)31 b(=)f(OK)506 3486 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j(PMASS)506 3618 y Fg(\017)46 b Fl(-2)31 b(=)f(illegal)j(JF)m(ORMR)506 3749 y Fg(\017)46 b Fl(-3)31 b(=)f(p)s(osition/v)m(elo)s(cit)m(y)k(out)c(of)h(range)0 3987 y Fn(Notes:)336 4323 y Fg(\017)46 b Fl(The)22 b(PV)g(6-v)m(ector)i (is)e(with)f(resp)s(ect)h(to)h(the)f(mean)g(equator)g(and)g(equino)m(x) g(of)g(ep)s(o)s(c)m(h)g(J2000.)39 b(The)427 4436 y(orbital)31 b(elemen)m(ts)h(pro)s(duced)d(are)i(with)f(resp)s(ect)g(to)h(the)g (J2000)h(ecliptic)g(and)e(mean)g(equino)m(x.)336 4586 y Fg(\017)46 b Fl(The)29 b(mass,)h(PMASS,)f(is)g(imp)s(ortan)m(t)h (only)g(for)f(the)g(larger)i(planets.)40 b(F)-8 b(or)30 b(most)g(purp)s(oses)e(\(e.g.)427 4699 y(asteroids\))k(use)e(0D0.)42 b(V)-8 b(alues)31 b(less)g(than)f(zero)h(are)g(illegal.)336 4849 y Fg(\017)46 b Fl(Three)30 b(di\013eren)m(t)h(elemen)m(t-format)i (options)d(are)h(supp)s(orted:)227 5045 y(Option)f(JF)m(ORM=1,)i (suitable)e(for)h(the)f(ma)5 b(jor)31 b(planets:)227 5200 y(EPOCH)k(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i(\(TT)d(MJD\))i (ORBINC)f(=)g(inclination)h(i)f(\(radians\))g(ANODE)h(=)227 5313 y(longitude)h(of)f(the)g(ascending)g(no)s(de,)h(big)f(omega)h (\(radians\))f(PERIH)g(=)f(longitude)i(of)f(p)s(erihelion,)227 5426 y(curly)i(pi)g(\(radians\))h(A)m(OR)m(Q)g(=)f(mean)g(distance,)j (a)e(\(A)m(U\))h(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)44 b(e)39 b(A)m(ORL)f(=)g(mean)227 5539 y(longitude)31 b(L)f(\(radians\))h (DM)g(=)f(daily)h(motion)g(\(radians\))227 5693 y(Option)f(JF)m(ORM=2,) i(suitable)e(for)h(minor)e(planets:)p eop end %%Page: 52 54 TeXDict begin 52 53 bop 0 52 a Fl(52)2666 b Fh(SUN/267.1)63 b(|)d(palPv2el)227 351 y Fl(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g (elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f (\(radians\))g(ANODE)h(=)227 464 y(longitude)g(of)f(the)h(ascending)f (no)s(de,)h(big)g(omega)g(\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h (p)s(erihelion,)227 577 y(little)30 b(omega)f(\(radians\))f(A)m(OR)m(Q) g(=)f(mean)h(distance,)h(a)f(\(A)m(U\))h(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)33 b(e)27 b(A)m(ORL)h(=)f(mean)227 690 y(anomaly)k(M)g(\(radians\)) 227 859 y(Option)f(JF)m(ORM=3,)i(suitable)e(for)h(comets:)227 1029 y(EPOCH)g(=)g(ep)s(o)s(c)m(h)f(of)i(p)s(erihelion)f(\(TT)f(MJD\))i (ORBINC)f(=)g(inclination)h(i)g(\(radians\))f(ANODE)h(=)227 1142 y(longitude)k(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 1254 y(little)c(omega)g(\(radians\))f(A)m(OR)m(Q)g(=)f(p)s(erihelion)g (distance,)h(q)f(\(A)m(U\))i(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)35 b(e)336 1625 y Fg(\017)46 b Fl(It)26 b(ma)m(y)g(not)g(b)s(e)f(p) s(ossible)g(to)h(generate)h(elemen)m(ts)g(in)f(the)f(form)g(requested)h (through)f(JF)m(ORMR.)427 1738 y(The)45 b(caller)h(is)f(noti\014ed)g (of)g(the)g(form)f(of)h(elemen)m(ts)h(actually)h(returned)d(b)m(y)g (means)h(of)g(the)427 1851 y(JF)m(ORM)31 b(argumen)m(t:)227 2077 y(JF)m(ORMR)g(JF)m(ORM)g(meaning)227 2246 y(1)g(1)g(OK)f(-)g (elemen)m(ts)i(are)f(in)f(the)g(requested)h(format)f(1)h(2)g(nev)m(er)f (happ)s(ens)f(1)i(3)g(orbit)f(not)h(elliptical)227 2415 y(2)g(1)g(nev)m(er)f(happ)s(ens)f(2)i(2)g(OK)e(-)i(elemen)m(ts)h(are)e (in)g(the)h(requested)f(format)h(2)g(3)g(orbit)f(not)h(elliptical)227 2585 y(3)g(1)g(nev)m(er)f(happ)s(ens)f(3)i(2)g(nev)m(er)f(happ)s(ens)f (3)i(3)f(OK)g(-)h(elemen)m(ts)g(are)g(in)f(the)h(requested)f(format)336 2956 y Fg(\017)46 b Fl(The)33 b(argumen)m(ts)h(returned)e(for)h(eac)m (h)i(v)-5 b(alue)34 b(of)f(JF)m(ORM)h(\(cf)g(Note)h(5:)47 b(JF)m(ORM)33 b(ma)m(y)h(not)g(b)s(e)427 3069 y(the)d(same)g(as)f(JF)m (ORMR\))h(are)g(as)g(follo)m(ws:)227 3294 y(JF)m(ORM)26 b(1)g(2)f(3)h(EPOCH)e(t0)i(t0)g(T)f(ORBINC)g(i)h(i)f(i)g(ANODE)h(Omega) g(Omega)g(Omega)g(PERIH)f(curly)227 3407 y(pi)30 b(omega)i(omega)g(A)m (OR)m(Q)f(a)g(a)f(q)h(E)f(e)g(e)h(e)g(A)m(ORL)f(L)g(M)h(-)g(DM)g(n)f(-) g(-)227 3577 y(where:)227 3746 y(t0)e(is)f(the)g(ep)s(o)s(c)m(h)g(of)g (the)h(elemen)m(ts)g(\(MJD,)g(TT\))f(T)f Fe(")h Fl(ep)s(o)s(c)m(h)g(of) g(p)s(erihelion)g(\(MJD,)h(TT\))f(i)g Fe(")g Fl(inclina-)227 3859 y(tion)33 b(\(radians\))f(Omega)g Fe(")g Fl(longitude)g(of)g(the)g (ascending)g(no)s(de)f(\(radians\))h(curly)g(pi)f Fe(")h Fl(longitude)g(of)227 3972 y(p)s(erihelion)26 b(\(radians\))h(omega)h Fe(")f Fl(argumen)m(t)g(of)f(p)s(erihelion)g(\(radians\))h(a)g Fe(")f Fl(mean)h(distance)g(\(A)m(U\))h(q)f Fe(")227 4085 y Fl(p)s(erihelion)e(distance)i(\(A)m(U\))g(e)f Fe(")f Fl(eccen)m(tricit)m(y)k(L)c Fe(")g Fl(longitude)h(\(radians,)h (0-2pi\))g(M)f Fe(")f Fl(mean)h(anomaly)227 4198 y(\(radians,)31 b(0-2pi\))g(n)f Fe(")g Fl(daily)h(motion)g(\(radians\))336 4399 y Fg(\017)46 b Fl(means)31 b(no)f(v)-5 b(alue)31 b(is)f(set)336 4564 y Fg(\017)46 b Fl(A)m(t)c(v)m(ery)g(small)g (inclinations,)j(the)d(longitude)g(of)f(the)g(ascending)h(no)s(de)f (ANODE)g(b)s(ecomes)427 4677 y(indeterminate)d(and)e(under)f(some)i (circumstances)g(ma)m(y)g(b)s(e)f(set)h(arbitrarily)g(to)g(zero.)60 b(Simi-)427 4790 y(larly)-8 b(,)40 b(if)c(the)h(orbit)g(is)f(close)i (to)g(circular,)g(the)f(true)g(anomaly)g(b)s(ecomes)g(indeterminate)g (and)427 4903 y(under)f(some)i(circumstances)h(ma)m(y)f(b)s(e)f(set)h (arbitrarily)g(to)g(zero.)63 b(In)37 b(suc)m(h)g(cases,)j(the)e(other) 427 5016 y(elemen)m(ts)i(are)f(automatically)j(adjusted)c(to)i(comp)s (ensate,)h(and)d(so)h(the)g(elemen)m(ts)h(remain)f(a)427 5129 y(v)-5 b(alid)31 b(description)f(of)h(the)f(orbit.)336 5294 y Fg(\017)46 b Fl(The)30 b(osculating)i(ep)s(o)s(c)m(h)e(for)g (the)h(returned)e(elemen)m(ts)j(is)e(the)h(argumen)m(t)f(D)m(A)-8 b(TE.)336 5459 y Fg(\017)46 b Fl(Reference:)61 b(Sterne,)43 b(Theo)s(dore)d(E.,)j Fe(")p Fl(An)c(In)m(tro)s(duction)h(to)h (Celestial)h(Mec)m(hanics)p Fe(")p Fl(,)i(In)m(ter-)427 5572 y(science)32 b(Publishers,)d(1960)p eop end %%Page: 53 55 TeXDict begin 53 54 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palPv2ue)2670 b Fl(53)p 0 351 3780 12 v 0 486 a Fi(palPv2ue)243 b Fc(Univ)m(ersal)37 b(elemen)m(ts)h(to)g(p)s(osition)f(and)i(v)m(elo)s(cit)m(y)240 b Fi(palPv2ue)0 704 y Fn(Description:)47 b Fl(Construct)19 b(a)i(univ)m(ersal)g(elemen)m(t)h(set)e(based)g(on)h(an)f(instan)m (taneous)h(p)s(osition)g(and)e(v)m(elo)s(cit)m(y)-8 b(.)0 892 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palPv2ue\()e(const)h (double)h(pv[6],)f(double)g(date,)g(double)g(pmass,)g(double)227 1005 y(u[13],)g(int)h Fg(\003)h Fe(jstat)f(\);)0 1192 y Fn(Argumen)m(ts:)262 1356 y(p)m(v)35 b(=)g(double)h([6])f(\(Giv)m (en\))427 1469 y Fl(Helio)s(cen)m(tric)e(x,y)-8 b(,z,xdot,ydot,zdot)34 b(of)c(date,)i(\(A)m(U,A)m(U/s;)h(Note)e(1\))262 1615 y Fn(date)j(=)i(double)f(\(Giv)m(en\))427 1727 y Fl(Date)d(\(TT)e(mo)s (di\014ed)f(Julian)h(Date)i(=)e(JD-2400000.5\))262 1873 y Fn(pmass)35 b(=)h(double)f(\(Giv)m(en\))427 1986 y Fl(Mass)c(of)g(the)f(planet)h(\(Sun=1;)f(note)h(2\))262 2132 y Fn(u)k(=)g(double)h([13])f(\(Returned\))427 2245 y Fl(Univ)m(ersal)d(orbital)f(elemen)m(ts)g(\(Note)h(3\))506 2497 y Fg(\017)46 b Fl(\(0\))32 b(com)m(bined)e(mass)h(\(M+m\))506 2626 y Fg(\017)46 b Fl(\(1\))32 b(total)g(energy)f(of)f(the)h(orbit)f (\(alpha\))506 2755 y Fg(\017)46 b Fl(\(2\))32 b(reference)f (\(osculating\))h(ep)s(o)s(c)m(h)e(\(t0\))506 2885 y Fg(\017)46 b Fl(\(3-5\))32 b(p)s(osition)f(at)g(reference)g(ep)s(o)s(c) m(h)f(\(r0\))506 3014 y Fg(\017)46 b Fl(\(6-8\))32 b(v)m(elo)s(cit)m(y) h(at)e(reference)g(ep)s(o)s(c)m(h)f(\(v0\))506 3144 y Fg(\017)46 b Fl(\(9\))32 b(helio)s(cen)m(tric)g(distance)f(at)g (reference)g(ep)s(o)s(c)m(h)506 3273 y Fg(\017)46 b Fl(\(10\))32 b(r0.v0)506 3403 y Fg(\017)46 b Fl(\(11\))32 b(date)f(\(t\))506 3532 y Fg(\017)46 b Fl(\(12\))32 b(univ)m(ersal)f(eccen)m(tric)h (anomaly)f(\(psi\))g(of)g(date,)g(appro)m(x)262 3678 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 3791 y Fl(status:)41 b(0)31 b(=)f(OK)506 3913 y Fg(\017)46 b Fl(-1)31 b(=)f(illegal)j(PMASS)506 4042 y Fg(\017)46 b Fl(-2)31 b(=)f(to)s(o)h(close)h(to)f(Sun)506 4172 y Fg(\017)46 b Fl(-3)31 b(=)f(to)s(o)h(slo)m(w)0 4396 y Fn(Notes:)336 4724 y Fg(\017)46 b Fl(The)30 b(PV)h(6-v)m(ector)i(can)e (b)s(e)e(with)i(resp)s(ect)f(to)h(an)m(y)g(c)m(hosen)g(inertial)h (frame,)f(and)f(the)g(resulting)427 4837 y(univ)m(ersal-elemen)m(t)k (set)e(will)g(b)s(e)e(with)i(resp)s(ect)f(to)h(the)g(same)g(frame.)44 b(A)31 b(common)h(c)m(hoice)h(will)427 4949 y(b)s(e)d(mean)g(equator)h (and)f(ecliptic)i(of)f(ep)s(o)s(c)m(h)f(J2000.)336 5095 y Fg(\017)46 b Fl(The)29 b(mass,)h(PMASS,)f(is)g(imp)s(ortan)m(t)h (only)g(for)f(the)g(larger)i(planets.)40 b(F)-8 b(or)30 b(most)g(purp)s(oses)e(\(e.g.)427 5208 y(asteroids\))k(use)e(0D0.)42 b(V)-8 b(alues)31 b(less)g(than)f(zero)h(are)g(illegal.)336 5354 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m(h)g(de\014ne)e(the)i (orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 5467 y(metho)s(d)32 b(of)g(univ)m(ersal)g(v)-5 b(ariables)33 b(\(see)g(reference\).)47 b(They)32 b(consist)g(of)h(the)f(com)m(bined) g(mass)g(of)427 5580 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f(ep)s(o)s (c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j(v)m (ectors)f(\(arbitrary)f(reference)427 5693 y(frame\))i(at)g(that)g(ep)s (o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)g (also)i(v)-5 b(arious)34 b(quan)m(tities)p eop end %%Page: 54 56 TeXDict begin 54 55 bop 0 52 a Fl(54)2597 b Fh(SUN/267.1)63 b(|)e(palRdplan)427 351 y Fl(that)35 b(can,)g(in)e(fact,)j(b)s(e)d (deriv)m(ed)g(from)h(the)f(other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to)427 464 y(a)m(v)m(oiding)k (unnecessary)e(computation)h(and)f(loss)h(of)f(accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 577 y(tities)k(are)f (\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional)g(to)h(the)g(total)h (energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 690 y(helio)s(cen)m (tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g(the)e(out)m(w)m (ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y)h(at)f(the)427 803 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g(estimate)h(of)e(psi,)j (the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j(anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 916 y(date)31 b(and)f(\(v\))h(that)g (date.)336 1065 y Fg(\017)46 b Fl(Reference:)c(Ev)m(erhart,)31 b(E.)f(&)g(Pitkin,)h(E.T.,)f(Am.J.Ph)m(ys.)41 b(51,)31 b(712,)h(1983.)p 0 1311 3780 12 v 0 1446 a Fi(palPv)l(obs)216 b Fc(P)m(osition)36 b(and)j(v)m(elo)s(cit)m(y)d(of)i(an)h(observing)e (station)213 b Fi(palPv)l(obs)0 1673 y Fn(Description:)47 b Fl(Returns)29 b(the)i(p)s(osition)f(and)g(v)m(elo)s(cit)m(y)j(of)d (an)g(observing)h(station.)0 1867 y Fn(In)m(v)m(o)s(cation:)130 b Fe(palPvobs\()45 b(double)i(p,)g(double)f(h,)h(double)f(stl,)h (double)f(pv[6])g(\))0 2062 y Fn(Argumen)m(ts:)262 2232 y(p)35 b(=)g(double)h(\(Giv)m(en\))427 2345 y Fl(Latitude)31 b(\(geo)s(detic,)i(radians\).)262 2494 y Fn(h)i(=)g(double)h(\(Giv)m (en\))427 2607 y Fl(Heigh)m(t)c(ab)s(o)m(v)m(e)g(reference)f(spheroid)e (\(geo)s(detic,)k(metres\).)262 2757 y Fn(stl)i(=)g(double)g(\(Giv)m (en\))427 2869 y Fl(Lo)s(cal)c(apparen)m(t)g(sidereal)g(time)g (\(radians\).)262 3019 y Fn(p)m(v)k(=)g(double[)h(6)f(])g(\(Returned\)) 427 3132 y Fl(p)s(osition/v)m(elo)s(cit)m(y)f(6-v)m(ector)e(\(A)m(U,)g (A)m(U/s,)g(true)e(equator)h(and)f(equino)m(x)h(of)f(date\).)0 3367 y Fn(Notes:)336 3701 y Fg(\017)46 b Fl(The)30 b(W)m(GS84)i (reference)f(ellipsoid)g(is)f(used.)p 0 3947 V 0 4081 a Fi(palRdplan)784 4080 y Fc(Appro)m(ximate)36 b(top)s(o)s(cen)m(tric)g (apparen)m(t)h(RA,Dec)1615 4193 y(of)h(a)h(planet)3175 4081 y Fi(palRdplan)0 4420 y Fn(Description:)47 b Fl(Appro)m(ximate)25 b(top)s(o)s(cen)m(tric)h(apparen)m(t)e(RA,Dec)i(of)f(a)g(planet,)h(and) e(its)h(angular)g(diameter.)0 4615 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palRdplan\()e(double)h(date,)g(int)h(np,)g(double)f (elong,)g(double)g(phi,)h(double)227 4727 y Fg(\003)h Fe(ra,)f(double)f Fg(\003)j Fe(dec,)d(double)g Fg(\003)j Fe(diam)d(\);)0 4922 y Fn(Argumen)m(ts:)262 5092 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 5205 y Fl(MJD)i(of)g(observ)-5 b(ation)38 b(\(JD-2400000.5\))j(in)c(TDB.)g(F)-8 b(or)37 b(all)h(practical)g(purp)s(oses)d(TT)h(can)h(b)s(e)427 5318 y(used)30 b(instead)g(of)h(TDB,)g(and)f(for)g(man)m(y)g (applications)i(UT)e(will)h(do)f(\(except)i(for)e(the)h(Mo)s(on\).)262 5467 y Fn(np)k(=)g(in)m(t)g(\(Giv)m(en\))427 5580 y Fl(Planet:)50 b(1)35 b(=)g(Mercury)f(2)h(=)f(V)-8 b(en)m(us)35 b(3)g(=)g(Mo)s(on)g(4) g(=)f(Mars)h(5)g(=)f(Jupiter)g(6)h(=)f(Saturn)g(7)h(=)427 5693 y(Uran)m(us)30 b(8)h(=)f(Neptune)g(else)h(=)f(Sun)p eop end %%Page: 55 57 TeXDict begin 55 56 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palRv)m(erot)2648 b Fl(55)262 351 y Fn(elong)36 b(=)f(double)g(\(Giv)m(en\))427 464 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(east)h(longitude)g(\(radians\)) 262 606 y Fn(phi)k(=)g(double)h(\(Giv)m(en\))427 719 y Fl(Observ)m(er)p Fe(')p Fl(s)30 b(geo)s(detic)i(latitude)f (\(radians\))262 860 y Fn(ra)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 973 y Fl(RA)31 b(\(top)s(o)s(cen)m(tric)h(apparen)m (t,)e(radians\))262 1115 y Fn(dec)35 b(=)h(double)f Fg(\003)g Fn(\(Returned\))427 1228 y Fl(Dec)d(\(top)s(o)s(cen)m(tric)g(apparen)m (t,)f(radians\))262 1370 y Fn(diam)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1483 y Fl(Angular)c(diameter)g(\(equatorial,)h (radians\))0 1701 y Fn(Notes:)336 2024 y Fg(\017)46 b Fl(Unlik)m(e)32 b(with)e(slaRdplan,)g(Pluto)h(is)f(not)h(supp)s(orted.) 336 2166 y Fg(\017)46 b Fl(The)32 b(longitude)h(and)f(latitude)h(allo)m (w)h(correction)f(for)f(geo)s(cen)m(tric)j(parallax.)47 b(This)31 b(is)i(a)f(ma)5 b(jor)427 2279 y(e\013ect)31 b(for)d(the)h(Mo)s(on,)h(but)e(in)g(the)h(con)m(text)i(of)e(the)g (limited)h(accuracy)g(of)f(the)g(presen)m(t)f(routine)427 2391 y(its)36 b(e\013ect)g(on)f(planetary)g(p)s(ositions)g(is)g(small)g (\(negligible)i(for)d(the)h(outer)g(planets\).)55 b(Geo)s(cen-)427 2504 y(tric)42 b(p)s(ositions)f(can)g(b)s(e)g(generated)h(b)m(y)f (appropriate)g(use)f(of)i(the)f(routines)g(palDmo)s(on)g(and)427 2617 y(iauPlan94.)p 0 2839 3780 12 v 0 2974 a Fi(palRv)l(erot)181 b Fc(V)-10 b(elo)s(cit)m(y)37 b(comp)s(onen)m(t)g(in)i(a)f(giv)m(en)g (direction)f(due)1447 3087 y(to)h(Earth)f(rotation)3199 2974 y Fi(palRv)l(erot)0 3267 y Fn(Description:)47 b Fl(Calculate)32 b(the)e(v)m(elo)s(cit)m(y)j(comp)s(onen)m(t)e(in)f(a)g (giv)m(en)i(direction)f(due)f(to)h(Earth)f(rotation.)227 3415 y(The)35 b(simple)g(algorithm)i(used)d(assumes)h(a)h(spherical)f (Earth,)i(of)e(a)h(radius)e(c)m(hosen)i(to)g(giv)m(e)h(results)227 3528 y(accurate)30 b(to)f(ab)s(out)f(0.0005)j(km/s)d(for)g(observing)g (stations)h(at)g(t)m(ypical)h(latitudes)f(and)f(heigh)m(ts.)41 b(F)-8 b(or)227 3641 y(applications)32 b(requiring)e(greater)h (precision,)g(use)f(the)h(routine)f(palPv)m(obs.)0 3824 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palRverot)g(\()h(double) f(phi,)h(double)f(ra,)h(double)f(da,)h(double)f(st)h(\);)0 4008 y Fn(Argumen)m(ts:)262 4167 y(phi)35 b(=)g(double)h(\(Giv)m(en\)) 427 4280 y Fl(latitude)c(of)e(observing)h(station)g(\(geo)s(detic\))i (\(radians\))262 4421 y Fn(ra)i(=)g(double)g(\(Giv)m(en\))427 4534 y Fl(apparen)m(t)c(RA)f(\(radians\))262 4676 y Fn(da)35 b(=)g(double)g(\(Giv)m(en\))427 4789 y Fl(apparen)m(t)c(Dec)g (\(radians\))262 4931 y Fn(st)k(=)g(double)g(\(Giv)m(en\))0 5227 y(Returned)g(V)-9 b(alue:)262 5386 y(palRv)m(erot)35 b(=)h(double)427 5499 y Fl(Comp)s(onen)m(t)f(of)h(Earth)f(rotation)i (in)f(direction)g(RA,D)m(A)h(\(km/s\).)57 b(The)35 b(result)h(is)f(+v)m (e)h(when)427 5612 y(the)31 b(observ)-5 b(atory)31 b(is)f(receding)h (from)f(the)g(giv)m(en)i(p)s(oin)m(t)e(on)g(the)h(sky)-8 b(.)p eop end %%Page: 56 58 TeXDict begin 56 57 bop 0 52 a Fl(56)2701 b Fh(SUN/267.1)63 b(|)d(palRvlg)p 0 351 3780 12 v 0 486 a Fi(palRvgalc)183 b Fc(V)-10 b(elo)s(cit)m(y)37 b(comp)s(onen)m(t)g(in)i(a)f(giv)m(en)g (direction)f(due)1143 599 y(to)h(the)h(rotation)d(of)i(the)g(Galaxy) 3201 486 y Fi(palRvgalc)0 822 y Fn(Description:)47 b Fl(This)28 b(function)h(returns)g(the)g(Comp)s(onen)m(t)g(of)h (dynamical)g(LSR)f(motion)h(in)f(the)h(direction)227 935 y(of)36 b(R2000,D2000.)59 b(The)34 b(result)h(is)g(+v)m(e)h(when)e (the)h(dynamical)h(LSR)e(is)h(receding)h(from)e(the)h(giv)m(en)227 1048 y(p)s(oin)m(t)c(on)f(the)g(sky)-8 b(.)0 1240 y Fn(In)m(v)m(o)s (cation:)130 b Fe(double)46 b(palRvgalc\()f(double)h(r2000,)g(double)h (d2000)f(\))0 1431 y Fn(Argumen)m(ts:)262 1598 y(r2000)36 b(=)f(double)h(\(Giv)m(en\))427 1711 y Fl(J2000.0)d(mean)d(RA)h (\(radians\))262 1859 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 1972 y Fl(J2000.0)d(mean)d(Dec)i(\(radians\))0 2163 y Fn(Returned)j(V)-9 b(alue:)262 2330 y(Comp)s(onen)m(t)35 b(of)g(dynamical)h(LSR)f(motion)g(in)g(direction)g(R2000,D2000)j (\(km/s\).)0 2674 y(Notes:)336 3005 y Fg(\017)46 b Fl(The)27 b(Lo)s(cal)h(Standard)e(of)i(Rest)g(used)e(here)i(is)f(a)h(p)s(oin)m(t) f(in)g(the)h(vicinit)m(y)g(of)g(the)f(Sun)f(whic)m(h)h(is)h(in)427 3117 y(a)i(circular)h(orbit)f(around)e(the)i(Galactic)j(cen)m(tre.)42 b(Sometimes)30 b(called)h(the)f Fe(")p Fl(dynamical)p Fe(")g Fl(LSR,)427 3230 y(it)38 b(is)f(not)h(to)g(b)s(e)e(confused)h (with)g(a)h Fe(")p Fl(kinematical)p Fe(")g Fl(LSR,)f(whic)m(h)g(is)g (the)h(mean)f(standard)f(of)427 3343 y(rest)31 b(of)f(star)h (catalogues)i(or)d(stellar)i(p)s(opulations.)-2 3535 y Fn(Reference)n(:)336 3866 y Fg(\017)46 b Fl(The)40 b(orbital)g(sp)s(eed)f(of)i(220)g(km/s)f(used)f(here)h(comes)g(from)g (Kerr)f(&)h(Lynden-Bell)g(\(1986\),)427 3978 y(MNRAS,)31 b(221,)h(p1023.)p 0 4220 V 0 4355 a Fi(palRvlg)236 b Fc(V)-10 b(elo)s(cit)m(y)37 b(comp)s(onen)m(t)h(in)g(a)h(giv)m(en)e (direction)g(due)i(to)670 4468 y(Galactic)e(rotation)e(and)k(motion)e (of)h(the)g(lo)s(cal)g(group)3326 4355 y Fi(palRvlg)0 4692 y Fn(Description:)47 b Fl(This)40 b(function)i(returns)f(the)g(v)m (elo)s(cit)m(y)k(comp)s(onen)m(t)d(in)f(a)h(giv)m(en)h(direction)g(due) e(to)h(the)227 4805 y(com)m(bination)37 b(of)f(the)f(rotation)i(of)f (the)f(Galaxy)i(and)e(the)g(motion)i(of)e(the)h(Galaxy)h(relativ)m(e)g (to)f(the)227 4917 y(mean)25 b(motion)h(of)f(the)g(lo)s(cal)h(group.)39 b(The)24 b(result)h(is)g(+v)m(e)g(when)f(the)h(Sun)f(is)h(receding)g (from)f(the)h(giv)m(en)227 5030 y(p)s(oin)m(t)31 b(on)f(the)g(sky)-8 b(.)0 5222 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palRvlg\()g(double)g(r2000,)g(double)g(d2000)g(\))0 5413 y Fn(Argumen)m(ts:)262 5580 y(r2000)36 b(=)f(double)h(\(Giv)m (en\))427 5693 y Fl(J2000.0)d(mean)d(RA)h(\(radians\))p eop end %%Page: 57 59 TeXDict begin 57 58 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palRvlsrd)2653 b Fl(57)262 351 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 464 y Fl(J2000.0)d(mean)d(Dec)i(\(radians\))0 641 y Fn(Returned)j(V)-9 b(alue:)262 794 y(Comp)s(onen)m(t)35 b(of)g(SOLAR)g(motion)g(in)g (direction)h(R2000,D2000)h(\(km/s\).)-2 1084 y(Reference)n(:)336 1400 y Fg(\017)46 b Fl(IA)m(U)31 b(T)-8 b(rans)30 b(1976,)i(168,)g (p201.)p 0 1600 3780 12 v 0 1734 a Fi(palRvlsrd)192 b Fc(V)-10 b(elo)s(cit)m(y)37 b(comp)s(onen)m(t)g(in)i(a)f(giv)m(en)g (direction)f(due)862 1847 y(to)h(the)g(Sun)p Fb(')p Fc(s)h(motion)e (with)h(resp)s(ect)g(to)g(the)1015 1960 y(dynamical)e(Lo)s(cal)i (Standard)g(of)g(Rest)3211 1734 y Fi(palRvlsrd)0 2142 y Fn(Description:)47 b Fl(This)40 b(function)i(returns)f(the)g(v)m(elo) s(cit)m(y)k(comp)s(onen)m(t)d(in)f(a)h(giv)m(en)h(direction)g(due)e(to) h(the)227 2255 y(Sun)p Fe(')p Fl(s)34 b(motion)i(with)f(resp)s(ect)g (to)h(the)g(dynamical)g(Lo)s(cal)g(Standard)e(of)h(Rest.)56 b(The)35 b(result)h(is)f(+v)m(e)227 2368 y(when)30 b(the)g(Sun)f(is)h (receding)h(from)f(the)h(giv)m(en)g(p)s(oin)m(t)f(on)h(the)f(sky)-8 b(.)0 2544 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palRvlsrd\()f(double)h(r2000,)g(double)h(d2000)f(\))0 2721 y Fn(Argumen)m(ts:)262 2874 y(r2000)36 b(=)f(double)h(\(Giv)m (en\))427 2987 y Fl(J2000.0)d(mean)d(RA)h(\(radians\))262 3122 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 3235 y Fl(J2000.0)d(mean)d(Dec)i(\(radians\))0 3412 y Fn(Returned)j(V)-9 b(alue:)262 3565 y(Comp)s(onen)m(t)35 b(of)g Fe(")p Fn(p)s(eculiar)p Fe(")g Fn(solar)g(motion)g(in)g(direction)h(R2000,D2000)h(\(km/s\).)0 3887 y(Notes:)336 4203 y Fg(\017)46 b Fl(The)25 b(Lo)s(cal)i(Standard)d (of)h(Rest)h(used)f(here)g(is)h(the)g Fe(")p Fl(dynamical)p Fe(")f Fl(LSR,)g(a)h(p)s(oin)m(t)f(in)g(the)h(vicinit)m(y)427 4316 y(of)i(the)h(Sun)d(whic)m(h)i(is)g(in)f(a)i(circular)f(orbit)g (around)f(the)h(Galactic)j(cen)m(tre.)41 b(The)28 b(Sun)p Fe(')p Fl(s)e(motion)427 4429 y(with)k(resp)s(ect)h(to)g(the)f (dynamical)h(LSR)f(is)g(called)i(the)e Fe(")p Fl(p)s(eculiar)p Fe(")g Fl(solar)h(motion.)336 4564 y Fg(\017)46 b Fl(There)28 b(is)h(another)f(t)m(yp)s(e)h(of)f(LSR,)g(called)i(a)f Fe(")p Fl(kinematical)p Fe(")g Fl(LSR.)f(A)h(kinematical)h(LSR)e(is)g (the)427 4677 y(mean)j(standard)g(of)g(rest)g(of)g(sp)s(eci\014ed)g (star)g(catalogues)i(or)e(stellar)i(p)s(opulations,)e(and)f(sev)m(eral) 427 4790 y(sligh)m(tly)42 b(di\013eren)m(t)e(kinematical)j(LSRs)c(are)h (in)g(use.)70 b(The)40 b(Sun)p Fe(')p Fl(s)e(motion)j(with)f(resp)s (ect)g(to)427 4903 y(an)d(agreed)h(kinematical)h(LSR)d(is)h(kno)m(wn)g (as)g(the)g Fe(")p Fl(standard)p Fe(")f Fl(solar)i(motion.)61 b(T)-8 b(o)38 b(obtain)f(a)427 5016 y(radial)26 b(v)m(elo)s(cit)m(y)i (correction)f(with)e(resp)s(ect)h(to)g(an)f(adopted)h(kinematical)h (LSR)e(use)g(the)g(routine)427 5129 y(sla)p Fe(_)p Fl(R)-10 b(VLSRK.)-2 5306 y Fn(Reference)n(:)336 5622 y Fg(\017)46 b Fl(Delha)m(y)m(e)33 b(\(1965\),)g(in)d Fe(")p Fl(Stars)g(and)g (Stellar)h(Systems)p Fe(")p Fl(,)f(v)m(ol)h(5,)g(p73.)p eop end %%Page: 58 60 TeXDict begin 58 59 bop 0 52 a Fl(58)2657 b Fh(SUN/267.1)63 b(|)d(palSub)s(et)p 0 351 3780 12 v 0 486 a Fi(palRvlsrk)196 b Fc(V)-10 b(elo)s(cit)m(y)37 b(comp)s(onen)m(t)g(in)i(a)f(giv)m(en)g (direction)f(due)881 599 y(to)h(the)h(Sun)p Fb(')p Fc(s)g(motion)d (with)i(resp)s(ect)h(to)f(an)803 712 y(adopted)g(kinematic)f(Lo)s(cal)h (Standard)f(of)h(Rest)3214 486 y Fi(palRvlsrk)0 929 y Fn(Description:)47 b Fl(This)40 b(function)i(returns)f(the)g(v)m(elo)s (cit)m(y)k(comp)s(onen)m(t)d(in)f(a)h(giv)m(en)h(direction)g(due)e(to)h (the)227 1041 y(Sun)p Fe(')p Fl(s)26 b(motion)j(with)f(resp)s(ect)g(to) g(an)g(adopted)g(kinematic)i(Lo)s(cal)f(Standard)d(of)j(Rest.)40 b(The)28 b(result)f(is)227 1154 y(+v)m(e)k(when)f(the)g(Sun)f(is)h (receding)h(from)f(the)h(giv)m(en)g(p)s(oin)m(t)f(on)h(the)f(sky)-8 b(.)0 1341 y Fn(In)m(v)m(o)s(cation:)130 b Fe(double)46 b(palRvlsrk\()f(double)h(r2000,)g(double)h(d2000)f(\))0 1528 y Fn(Argumen)m(ts:)262 1691 y(r2000)36 b(=)f(double)h(\(Giv)m (en\))427 1804 y Fl(J2000.0)d(mean)d(RA)h(\(radians\))262 1950 y Fn(d2000)36 b(=)f(double)h(\(Giv)m(en\))427 2063 y Fl(J2000.0)d(mean)d(Dec)i(\(radians\))0 2250 y Fn(Returned)j(V)-9 b(alue:)262 2412 y(Comp)s(onen)m(t)35 b(of)g Fe(")p Fn(standard)p Fe(")f Fn(solar)h(motion)h(in)f(direction)g(R2000,D2000)j(\(km/s\).)0 2749 y(Notes:)336 3076 y Fg(\017)46 b Fl(The)22 b(Lo)s(cal)h(Standard)e (of)h(Rest)h(used)e(here)h(is)g(one)h(of)f(sev)m(eral)i Fe(")p Fl(kinematical)p Fe(")f Fl(LSRs)e(in)h(common)427 3189 y(use.)49 b(A)33 b(kinematical)j(LSR)c(is)h(the)g(mean)h(standard) e(of)h(rest)h(of)f(sp)s(eci\014ed)f(star)i(catalogues)h(or)427 3302 y(stellar)g(p)s(opulations.)50 b(The)33 b(Sun)p Fe(')p Fl(s)e(motion)j(with)g(resp)s(ect)f(to)h(a)g(kinematical)i(LSR)c (is)i(kno)m(wn)427 3415 y(as)d(the)f Fe(")p Fl(standard)p Fe(")f Fl(solar)i(motion.)336 3560 y Fg(\017)46 b Fl(There)24 b(is)h(another)f(sort)h(of)f(LSR,)g(the)g Fe(")p Fl(dynamical)p Fe(")h Fl(LSR,)e(whic)m(h)i(is)f(a)h(p)s(oin)m(t)f(in)g(the)h(vicinit)m (y)g(of)427 3673 y(the)c(Sun)e(whic)m(h)i(is)g(in)f(a)h(circular)g (orbit)g(around)f(the)h(Galactic)j(cen)m(tre.)38 b(The)20 b(Sun)p Fe(')p Fl(s)f(motion)j(with)427 3786 y(resp)s(ect)h(to)h(the)g (dynamical)f(LSR)f(is)i(called)g(the)f Fe(")p Fl(p)s(eculiar)p Fe(")g Fl(solar)g(motion.)39 b(T)-8 b(o)24 b(obtain)f(a)h(radial)427 3899 y(v)m(elo)s(cit)m(y)32 b(correction)f(with)e(resp)s(ect)g(to)h (the)g(dynamical)g(LSR)e(use)h(the)h(routine)f(sla)p Fe(_)p Fl(R)-10 b(VLSRD.)-2 4086 y Fn(Reference)n(:)336 4413 y Fg(\017)46 b Fl(Delha)m(y)m(e)33 b(\(1965\),)g(in)d Fe(")p Fl(Stars)g(and)g(Stellar)h(Systems)p Fe(")p Fl(,)f(v)m(ol)h(5,)g (p73.)p 0 4648 V 0 4782 a Fi(palSub)t(et)296 b Fc(Remo)m(v)m(e)37 b(the)i(E-terms)f(from)f(a)h(pre)h(IA)m(U)g(1976)1430 4895 y(catalogue)d(RA,Dec)3261 4782 y Fi(palSub)t(et)0 5117 y Fn(Description:)47 b Fl(Remo)m(v)m(e)36 b(the)f(E-terms)f (\(elliptic)j(comp)s(onen)m(t)e(of)f(ann)m(ual)h(ab)s(erration\))g (from)f(a)h(pre)f(IA)m(U)227 5230 y(1976)e(catalogue)h(RA,Dec)f(to)f (giv)m(e)h(a)f(mean)g(place.)0 5417 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palSubet)e(\()j(double)e(rc,)h(double)f(dc,)h(double)f (eq,)h(double)f Fg(\003)p Fe(rm,)h(double)227 5530 y Fg(\003)p Fe(dm)h(\);)0 5717 y Fn(Argumen)m(ts:)p eop end %%Page: 59 61 TeXDict begin 59 60 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palSupgal)2648 b Fl(59)262 351 y Fn(rc)35 b(=)h(double)f(\(Giv)m(en\))427 464 y Fl(RA)c(with)f(E-terms)g(included)g(\(radians\))262 599 y Fn(dc)36 b(=)f(double)g(\(Giv)m(en\))427 712 y Fl(Dec)d(with)e(E-terms)g(included)g(\(radians\))262 848 y Fn(eq)35 b(=)g(double)h(\(Giv)m(en\))427 961 y Fl(Besselian)c(ep)s(o)s(c)m(h)e(of)h(mean)f(equator)h(and)f(equino)m(x) 262 1096 y Fn(rm)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1209 y Fl(RA)c(without)f(E-terms)h(\(radians\))262 1344 y Fn(dm)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 1457 y Fl(Dec)d(without)e(E-terms)h(\(radians\))0 1666 y Fn(Notes:)227 1830 y Fl(Most)39 b(star)g(p)s(ositions)f(from)f (pre-1984)j(optical)f(catalogues)i(\(or)d(deriv)m(ed)h(from)e (astrometry)i(using)227 1943 y(suc)m(h)32 b(stars\))g(em)m(b)s(o)s(dy)f (the)h(E-terms.)45 b(This)31 b(routine)h(con)m(v)m(erts)h(suc)m(h)f(a)g (p)s(osition)g(to)g(a)g(formal)g(mean)227 2056 y(place)g(\(allo)m (wing,)g(for)e(example,)i(comparison)e(with)g(a)h(pulsar)f(timing)g(p)s (osition\).)-2 2232 y Fn(See)35 b(Also)n(:)227 2396 y Fl(Explanatory)c(Supplemen)m(t)e(to)j(the)e(Astronomical)i(Ephemeris,)e (section)h(2D,)h(page)f(48.)p 0 2596 3780 12 v 0 2730 a Fi(palSupgal)338 b Fc(Con)m(v)m(ert)37 b(from)g(sup)s(ergalactic)f (to)i(galactic)1598 2843 y(co)s(ordinates)3208 2730 y Fi(palSupgal)0 3001 y Fn(Description:)47 b Fl(T)-8 b(ransformation)20 b(from)g(de)g(V)-8 b(aucouleurs)21 b(sup)s(ergalactic)g(co)s(ordinates) g(to)g(IA)m(U)g(1958)h(galac-)227 3114 y(tic)32 b(co)s(ordinates)0 3291 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palSupgal)e(\()j (double)e(dsl,)g(double)g(dsb,)h(double)f Fg(\003)p Fe(dl,)h(double)g Fg(\003)p Fe(db)g(\);)0 3468 y Fn(Argumen)m(ts:)262 3621 y(dsl)35 b(=)g(double)h(\(Giv)m(en\))427 3734 y Fl(Sup)s(ergalactic)c (longitude.)262 3869 y Fn(dsb)j(=)h(double)f(\(Giv)m(en\))427 3982 y Fl(Sup)s(ergalactic)d(latitude.)262 4117 y Fn(dl)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4230 y Fl(Galactic)e(longitude.)262 4365 y Fn(db)i(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4478 y Fl(Galactic)e(latitude.)-2 4655 y Fn(See)i(Also)n(:)336 4972 y Fg(\017)46 b Fl(de)38 b(V)-8 b(aucouleurs,)41 b(de)d(V)-8 b(aucouleurs,)41 b(&)d(Corwin,)i(Second)e(Reference)h (Catalogue)h(of)e(Brigh)m(t)427 5085 y(Galaxies,)33 b(U.)e(T)-8 b(exas,)31 b(page)g(8.)336 5220 y Fg(\017)46 b Fl(Systems)29 b(&)g(Applied)g(Sciences)i(Corp.,)e(Do)s(cumen)m(tation)i(for)e(the)h (mac)m(hine-readable)h(v)m(ersion)427 5333 y(of)g(the)f(ab)s(o)m(v)m(e) i(catalogue,)h(Con)m(tract)f(NAS)e(5-26490.)227 5510 y(\(These)k(t)m(w)m(o)h(references)g(giv)m(e)g(di\013eren)m(t)f(v)-5 b(alues)34 b(for)g(the)g(galactic)j(longitude)d(of)g(the)g(sup)s (ergalactic)227 5623 y(origin.)41 b(Both)31 b(are)g(wrong;)f(the)h (correct)h(v)-5 b(alue)30 b(is)h(L2=137.37.\))p eop end %%Page: 60 62 TeXDict begin 60 61 bop 0 52 a Fl(60)2667 b Fh(SUN/267.1)63 b(|)d(palUe2el)p 0 351 3780 12 v 0 486 a Fi(palUe2el)245 b Fc(Univ)m(ersal)36 b(elemen)m(ts)i(to)g(helio)s(cen)m(tric)e (osculating)1670 599 y(elemen)m(ts)3271 486 y Fi(palUe2el)0 838 y Fn(Description:)47 b Fl(T)-8 b(ransform)28 b(univ)m(ersal)h (elemen)m(ts)h(in)m(to)h(con)m(v)m(en)m(tional)g(helio)s(cen)m(tric)g (osculating)g(elemen)m(ts.)0 1061 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palUe2el)e(\()j(const)e(double)g(u[13],)g(int)h(jformr,) f(int)h Fg(\003)p Fe(jform,)g(double)227 1173 y Fg(\003)p Fe(epoch,)g(double)f Fg(\003)p Fe(orbinc,)g(double)g Fg(\003)p Fe(anode,)h(double)f Fg(\003)p Fe(perih,)g(double)h Fg(\003)p Fe(aorq,)f(double)g Fg(\003)p Fe(e,)227 1286 y(double)g Fg(\003)p Fe(aorl,)h(double)f Fg(\003)p Fe(dm,)i(int)f Fg(\003)p Fe(jstat)f(\);)0 1509 y Fn(Argumen)m(ts:)262 1707 y(u)35 b(=)g(const)h(double)f([13])h(\(Giv)m(en\))427 1820 y Fl(Univ)m(ersal)26 b(orbital)g(elemen)m(ts)g(\(Note)g(1\))g (\(0\))g(com)m(bined)f(mass)f(\(M+m\))i(\(1\))g(total)g(energy)f(of)g (the)427 1933 y(orbit)35 b(\(alpha\))h(\(2\))g(reference)f (\(osculating\))i(ep)s(o)s(c)m(h)e(\(t0\))h(\(3-5\))h(p)s(osition)e(at) g(reference)h(ep)s(o)s(c)m(h)427 2046 y(\(r0\))28 b(\(6-8\))g(v)m(elo)s (cit)m(y)h(at)f(reference)f(ep)s(o)s(c)m(h)g(\(v0\))g(\(9\))h(helio)s (cen)m(tric)h(distance)e(at)h(reference)f(ep)s(o)s(c)m(h)427 2159 y(\(10\))32 b(r0.v0)f(\(11\))h(date)f(\(t\))h(\(12\))f(univ)m (ersal)g(eccen)m(tric)i(anomaly)e(\(psi\))f(of)h(date,)g(appro)m(x)262 2322 y Fn(jformr)k(=)h(in)m(t)e(\(Giv)m(en\))427 2435 y Fl(Requested)d(elemen)m(t)h(set)f(\(1-3;)h(Note)g(3\))262 2599 y Fn(jform)j(=)g(in)m(t)g Fg(\003)g Fn(\(Returned\))427 2712 y Fl(Elemen)m(t)d(set)f(actually)g(returned)f(\(1-3;)i(Note)f(4\)) 262 2875 y Fn(ep)s(o)s(c)m(h)36 b(=)f(double)g Fg(\003)g Fn(\(Returned\))427 2988 y Fl(Ep)s(o)s(c)m(h)30 b(of)g(elemen)m(ts)i (\(TT)e(MJD\))262 3152 y Fn(orbinc)36 b(=)f(double)g Fg(\003)h Fn(\(Returned\))427 3265 y Fl(inclination)c(\(radians\))262 3428 y Fn(ano)s(de)j(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3541 y Fl(longitude)c(of)g(the)f(ascending)h(no)s(de)f(\(radians\))262 3705 y Fn(p)s(erih)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 3817 y Fl(longitude)c(or)g(argumen)m(t)f(of)h(p)s(erihelion)f (\(radians\))262 3981 y Fn(aorq)35 b(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4094 y Fl(mean)c(distance)g(or)f(p)s(erihelion)g (distance)h(\(A)m(U\))262 4257 y Fn(e)k(=)g(double)g Fg(\003)h Fn(\(Returned\))427 4370 y Fl(eccen)m(tricit)m(y)262 4534 y Fn(aorl)f(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4647 y Fl(mean)c(anomaly)g(or)f(longitude)h(\(radians,)g(JF)m(ORM=1,2)g (only\))262 4810 y Fn(dm)k(=)g(double)h Fg(\003)f Fn(\(Returned\))427 4923 y Fl(daily)c(motion)g(\(radians,)g(JF)m(ORM=1)g(only\))262 5087 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 5200 y Fl(status:)41 b(0)31 b(=)f(OK)506 5339 y Fg(\017)46 b Fl(1)31 b(=)f(illegal)j(com)m(bined)d(mass)506 5477 y Fg(\017)46 b Fl(2)31 b(=)f(illegal)j(JF)m(ORMR)506 5616 y Fg(\017)46 b Fl(3)31 b(=)f(p)s(osition/v)m(elo)s(cit)m(y)k(out)c (of)h(range)p eop end %%Page: 61 63 TeXDict begin 61 62 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palUe2el)2698 b Fl(61)0 351 y Fn(Notes:)336 682 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m (h)g(de\014ne)e(the)i(orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 795 y(metho)s(d)26 b(of)g(univ)m(ersal)h(v)-5 b(ariables)27 b(\(see)g(reference)f(2\).)41 b(They)25 b(consist)i(of)f(the)h(com)m (bined)f(mass)g(of)427 907 y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f (ep)s(o)s(c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j (v)m(ectors)f(\(arbitrary)f(reference)427 1020 y(frame\))i(at)g(that)g (ep)s(o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g (includes)g(also)i(v)-5 b(arious)34 b(quan)m(tities)427 1133 y(that)h(can,)g(in)e(fact,)j(b)s(e)d(deriv)m(ed)g(from)h(the)f (other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to) 427 1246 y(a)m(v)m(oiding)k(unnecessary)e(computation)h(and)f(loss)h (of)f(accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 1359 y(tities)k(are)f(\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional) g(to)h(the)g(total)h(energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 1472 y(helio)s(cen)m(tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g (the)e(out)m(w)m(ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y) h(at)f(the)427 1585 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g (estimate)h(of)e(psi,)j(the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j (anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 1698 y(date)31 b(and)f(\(v\))h(that)g(date.)336 1845 y Fg(\017)46 b Fl(The)34 b(univ)m(ersal)h(elemen)m(ts)g(are)g(with)f(resp)s(ect)h(to)g (the)f(mean)h(equator)g(and)e(equino)m(x)i(of)g(ep)s(o)s(c)m(h)427 1958 y(J2000.)40 b(The)23 b(orbital)h(elemen)m(ts)g(pro)s(duced)e(are)h (with)g(resp)s(ect)g(to)h(the)f(J2000)i(ecliptic)g(and)d(mean)427 2071 y(equino)m(x.)336 2219 y Fg(\017)46 b Fl(Three)30 b(di\013eren)m(t)h(elemen)m(t-format)i(options)d(are)h(supp)s(orted:) 227 2410 y(Option)f(JF)m(ORM=1,)i(suitable)e(for)h(the)f(ma)5 b(jor)31 b(planets:)227 2561 y(EPOCH)k(=)f(ep)s(o)s(c)m(h)h(of)g (elemen)m(ts)i(\(TT)d(MJD\))i(ORBINC)f(=)g(inclination)h(i)f (\(radians\))g(ANODE)h(=)227 2674 y(longitude)h(of)f(the)g(ascending)g (no)s(de,)h(big)f(omega)h(\(radians\))f(PERIH)g(=)f(longitude)i(of)f(p) s(erihelion,)227 2787 y(curly)i(pi)g(\(radians\))h(A)m(OR)m(Q)g(=)f (mean)g(distance,)j(a)e(\(A)m(U\))h(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)44 b(e)39 b(A)m(ORL)f(=)g(mean)227 2900 y(longitude)31 b(L)f(\(radians\))h(DM)g(=)f(daily)h(motion)g(\(radians\))227 3052 y(Option)f(JF)m(ORM=2,)i(suitable)e(for)h(minor)e(planets:)227 3204 y(EPOCH)35 b(=)f(ep)s(o)s(c)m(h)h(of)g(elemen)m(ts)i(\(TT)d(MJD\)) i(ORBINC)f(=)g(inclination)h(i)f(\(radians\))g(ANODE)h(=)227 3316 y(longitude)g(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 3429 y(little)30 b(omega)f(\(radians\))f(A)m(OR)m(Q)g(=)f(mean)h (distance,)h(a)f(\(A)m(U\))h(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)33 b(e)27 b(A)m(ORL)h(=)f(mean)227 3542 y(anomaly)k(M)g (\(radians\))227 3694 y(Option)f(JF)m(ORM=3,)i(suitable)e(for)h (comets:)227 3846 y(EPOCH)g(=)g(ep)s(o)s(c)m(h)f(of)i(p)s(erihelion)f (\(TT)f(MJD\))i(ORBINC)f(=)g(inclination)h(i)g(\(radians\))f(ANODE)h(=) 227 3959 y(longitude)k(of)f(the)h(ascending)f(no)s(de,)h(big)g(omega)g (\(radians\))g(PERIH)f(=)g(argumen)m(t)g(of)h(p)s(erihelion,)227 4072 y(little)c(omega)g(\(radians\))f(A)m(OR)m(Q)g(=)f(p)s(erihelion)g (distance,)h(q)f(\(A)m(U\))i(E)e(=)g(eccen)m(tricit)m(y)-8 b(,)35 b(e)336 4390 y Fg(\017)46 b Fl(It)26 b(ma)m(y)g(not)g(b)s(e)f(p) s(ossible)g(to)h(generate)h(elemen)m(ts)g(in)f(the)f(form)g(requested)h (through)f(JF)m(ORMR.)427 4503 y(The)45 b(caller)h(is)f(noti\014ed)g (of)g(the)g(form)f(of)h(elemen)m(ts)h(actually)h(returned)d(b)m(y)g (means)h(of)g(the)427 4616 y(JF)m(ORM)31 b(argumen)m(t:)227 4806 y(JF)m(ORMR)g(JF)m(ORM)g(meaning)227 4958 y(1)g(1)g(OK)f(-)g (elemen)m(ts)i(are)f(in)f(the)g(requested)h(format)f(1)h(2)g(nev)m(er)f (happ)s(ens)f(1)i(3)g(orbit)f(not)h(elliptical)227 5110 y(2)g(1)g(nev)m(er)f(happ)s(ens)f(2)i(2)g(OK)e(-)i(elemen)m(ts)h(are)e (in)g(the)h(requested)f(format)h(2)g(3)g(orbit)f(not)h(elliptical)227 5262 y(3)g(1)g(nev)m(er)f(happ)s(ens)f(3)i(2)g(nev)m(er)f(happ)s(ens)f (3)i(3)f(OK)g(-)h(elemen)m(ts)g(are)g(in)f(the)h(requested)f(format)336 5580 y Fg(\017)46 b Fl(The)33 b(argumen)m(ts)h(returned)e(for)h(eac)m (h)i(v)-5 b(alue)34 b(of)f(JF)m(ORM)h(\(cf)g(Note)h(6:)47 b(JF)m(ORM)33 b(ma)m(y)h(not)g(b)s(e)427 5693 y(the)d(same)g(as)f(JF)m (ORMR\))h(are)g(as)g(follo)m(ws:)p eop end %%Page: 62 64 TeXDict begin 62 63 bop 0 52 a Fl(62)2636 b Fh(SUN/267.1)63 b(|)e(palUe2p)m(v)227 351 y Fl(JF)m(ORM)26 b(1)g(2)f(3)h(EPOCH)e(t0)i (t0)g(T)f(ORBINC)g(i)h(i)f(i)g(ANODE)h(Omega)g(Omega)g(Omega)g(PERIH)f (curly)227 464 y(pi)30 b(omega)i(omega)g(A)m(OR)m(Q)f(a)g(a)f(q)h(E)f (e)g(e)h(e)g(A)m(ORL)f(L)g(M)h(-)g(DM)g(n)f(-)g(-)227 620 y(where:)227 775 y(t0)e(is)f(the)g(ep)s(o)s(c)m(h)g(of)g(the)h (elemen)m(ts)g(\(MJD,)g(TT\))f(T)f Fe(")h Fl(ep)s(o)s(c)m(h)g(of)g(p)s (erihelion)g(\(MJD,)h(TT\))f(i)g Fe(")g Fl(inclina-)227 888 y(tion)33 b(\(radians\))f(Omega)g Fe(")g Fl(longitude)g(of)g(the)g (ascending)g(no)s(de)f(\(radians\))h(curly)g(pi)f Fe(")h Fl(longitude)g(of)227 1001 y(p)s(erihelion)26 b(\(radians\))h(omega)h Fe(")f Fl(argumen)m(t)g(of)f(p)s(erihelion)g(\(radians\))h(a)g Fe(")f Fl(mean)h(distance)g(\(A)m(U\))h(q)f Fe(")227 1114 y Fl(p)s(erihelion)e(distance)i(\(A)m(U\))g(e)f Fe(")f Fl(eccen)m(tricit)m(y)k(L)c Fe(")g Fl(longitude)h(\(radians,)h (0-2pi\))g(M)f Fe(")f Fl(mean)h(anomaly)227 1227 y(\(radians,)31 b(0-2pi\))g(n)f Fe(")g Fl(daily)h(motion)g(\(radians\))336 1401 y Fg(\017)46 b Fl(means)31 b(no)f(v)-5 b(alue)31 b(is)f(set)336 1552 y Fg(\017)46 b Fl(A)m(t)c(v)m(ery)g(small)g (inclinations,)j(the)d(longitude)g(of)f(the)g(ascending)h(no)s(de)f (ANODE)g(b)s(ecomes)427 1665 y(indeterminate)d(and)e(under)f(some)i (circumstances)g(ma)m(y)g(b)s(e)f(set)h(arbitrarily)g(to)g(zero.)60 b(Simi-)427 1778 y(larly)-8 b(,)40 b(if)c(the)h(orbit)g(is)f(close)i (to)g(circular,)g(the)f(true)g(anomaly)g(b)s(ecomes)g(indeterminate)g (and)427 1891 y(under)f(some)i(circumstances)h(ma)m(y)f(b)s(e)f(set)h (arbitrarily)g(to)g(zero.)63 b(In)37 b(suc)m(h)g(cases,)j(the)e(other) 427 2004 y(elemen)m(ts)i(are)f(automatically)j(adjusted)c(to)i(comp)s (ensate,)h(and)d(so)h(the)g(elemen)m(ts)h(remain)f(a)427 2117 y(v)-5 b(alid)31 b(description)f(of)h(the)f(orbit.)227 2315 y(See)h(Also:)336 2489 y Fg(\017)46 b Fl(Sterne,)26 b(Theo)s(dore)e(E.,)i Fe(")p Fl(An)e(In)m(tro)s(duction)g(to)h (Celestial)h(Mec)m(hanics)p Fe(")p Fl(,)i(In)m(terscience)d(Publish-) 427 2602 y(ers)30 b(Inc.,)h(1960.)42 b(Section)32 b(6.7,)f(p199.)336 2753 y Fg(\017)46 b Fl(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)g(E.T.,)h (Am.J.Ph)m(ys.)40 b(51,)32 b(712,)g(1983.)p 0 3004 3780 12 v 0 3139 a Fi(palUe2p)l(v)172 b Fc(Helio)s(cen)m(tric)36 b(p)s(osition)h(and)i(v)m(elo)s(cit)m(y)d(of)j(a)f(planet,)803 3251 y(asteroid)f(or)h(comet,)f(from)g(univ)m(ersal)g(elemen)m(ts)3228 3139 y Fi(palUe2p)l(v)0 3484 y Fn(Description:)47 b Fl(Helio)s(cen)m (tric)38 b(p)s(osition)e(and)f(v)m(elo)s(cit)m(y)j(of)e(a)g(planet,)i (asteroid)f(or)f(comet,)i(starting)f(from)227 3597 y(orbital)31 b(elemen)m(ts)h(in)e(the)h Fe(")p Fl(univ)m(ersal)f(v)-5 b(ariables)p Fe(")31 b Fl(form.)0 3795 y Fn(In)m(v)m(o)s(cation:)130 b Fe(void)47 b(palUe2pv\()e(double)h(date,)h(double)f(u[13],)g(double)g (pv[6],)g(int)h Fg(\003)p Fe(jstat)227 3908 y(\);)0 4106 y Fn(Argumen)m(ts:)262 4280 y(date)34 b(=)i(double)f(\(Giv)m(en\))427 4393 y Fl(TT)30 b(Mo)s(di\014ed)g(Julian)g(date)h(\(JD-2400000.5\).)262 4544 y Fn(u)k(=)g(double)h([13])f(\(Giv)m(en)g(&)g(Returned\))427 4657 y Fl(Univ)m(ersal)40 b(orbital)f(elemen)m(ts)i(\(up)s(dated,)f (see)f(note)g(1\))h(giv)m(en)g(\(0\))f(com)m(bined)g(mass)g(\(M+m\))427 4770 y Fe(")d Fl(\(1\))h(total)g(energy)f(of)g(the)g(orbit)g(\(alpha\)) h Fe(")e Fl(\(2\))i(reference)f(\(osculating\))i(ep)s(o)s(c)m(h)e (\(t0\))h Fe(")e Fl(\(3-)427 4883 y(5\))44 b(p)s(osition)g(at)g (reference)g(ep)s(o)s(c)m(h)f(\(r0\))h Fe(")f Fl(\(6-8\))i(v)m(elo)s (cit)m(y)h(at)e(reference)g(ep)s(o)s(c)m(h)f(\(v0\))h Fe(")f Fl(\(9\))427 4996 y(helio)s(cen)m(tric)f(distance)e(at)g (reference)h(ep)s(o)s(c)m(h)e Fe(")g Fl(\(10\))j(r0.v0)e(returned)e (\(11\))k(date)e(\(t\))h Fe(")e Fl(\(12\))427 5109 y(univ)m(ersal)31 b(eccen)m(tric)h(anomaly)g(\(psi\))e(of)h(date)262 5260 y Fn(jstat)j(=)h(in)m(t)g Fg(\003)g Fn(\(Returned\))427 5373 y Fl(status:)41 b(0)31 b(=)f(OK)506 5500 y Fg(\017)46 b Fl(1)31 b(=)f(radius)g(v)m(ector)i(zero)506 5633 y Fg(\017)46 b Fl(2)31 b(=)f(failed)h(to)g(con)m(v)m(erge)p eop end %%Page: 63 65 TeXDict begin 63 64 bop 0 52 a Fh(SUN/267.1)63 b(|)e(palUe2p)m(v)2667 b Fl(63)0 351 y Fn(Notes:)336 679 y Fg(\017)46 b Fl(The)39 b Fe(")p Fl(univ)m(ersal)p Fe(")h Fl(elemen)m(ts)g(are)g(those)g(whic)m (h)g(de\014ne)e(the)i(orbit)g(for)f(the)h(purp)s(oses)e(of)h(the)427 792 y(metho)s(d)32 b(of)g(univ)m(ersal)g(v)-5 b(ariables)33 b(\(see)g(reference\).)47 b(They)32 b(consist)g(of)h(the)f(com)m(bined) g(mass)g(of)427 904 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)f(an)f(ep)s(o)s (c)m(h,)h(and)f(the)h(p)s(osition)g(and)f(v)m(elo)s(cit)m(y)j(v)m (ectors)f(\(arbitrary)f(reference)427 1017 y(frame\))i(at)g(that)g(ep)s (o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)g (also)i(v)-5 b(arious)34 b(quan)m(tities)427 1130 y(that)h(can,)g(in)e (fact,)j(b)s(e)d(deriv)m(ed)g(from)h(the)f(other)h(information.)51 b(This)33 b(approac)m(h)h(is)g(tak)m(en)h(to)427 1243 y(a)m(v)m(oiding)k(unnecessary)e(computation)h(and)f(loss)h(of)f (accuracy)-8 b(.)63 b(The)37 b(supplemen)m(tary)g(quan-)427 1356 y(tities)k(are)f(\(i\))g(alpha,)i(whic)m(h)d(is)g(prop)s(ortional) g(to)h(the)g(total)h(energy)e(of)h(the)f(orbit,)j(\(ii\))e(the)427 1469 y(helio)s(cen)m(tric)g(distance)f(at)g(ep)s(o)s(c)m(h,)h(\(iii\))g (the)e(out)m(w)m(ards)g(comp)s(onen)m(t)h(of)f(the)h(v)m(elo)s(cit)m(y) h(at)f(the)427 1582 y(giv)m(en)i(ep)s(o)s(c)m(h,)g(\(iv\))f(an)g (estimate)h(of)e(psi,)j(the)d Fe(")p Fl(univ)m(ersal)g(eccen)m(tric)j (anomaly)p Fe(")e Fl(at)g(a)f(giv)m(en)427 1695 y(date)31 b(and)f(\(v\))h(that)g(date.)336 1841 y Fg(\017)46 b Fl(The)41 b(companion)h(routine)g(is)f(palEl2ue.)75 b(This)41 b(tak)m(es)i(the)e(con)m(v)m(en)m(tional)k(orbital)d(elemen)m(ts)427 1954 y(and)j(transforms)f(them)g(in)m(to)i(the)f(set)h(of)f(n)m(um)m(b) s(ers)e(needed)i(b)m(y)f(the)h(presen)m(t)g(routine.)84 b(A)427 2067 y(single)30 b(prediction)f(requires)f(one)h(one)g(call)h (to)g(palEl2ue)f(follo)m(w)m(ed)h(b)m(y)f(one)g(call)h(to)f(the)g (presen)m(t)427 2180 y(routine;)49 b(for)43 b(con)m(v)m(enience,)48 b(the)43 b(t)m(w)m(o)h(calls)g(are)f(pac)m(k)-5 b(aged)45 b(as)e(the)f(routine)h(sla)p Fe(_)p Fl(PLANEL.)427 2293 y(Multiple)37 b(predictions)e(ma)m(y)h(b)s(e)f(made)g(b)m(y)h(again)g (calling)h(palEl2ue)f(once,)i(but)d(then)g(calling)427 2405 y(the)c(presen)m(t)f(routine)h(m)m(ultiple)g(times,)g(whic)m(h)f (is)g(faster)h(than)f(m)m(ultiple)h(calls)h(to)f(palPlanel.)336 2552 y Fg(\017)46 b Fl(It)31 b(is)g(not)g(obligatory)h(to)f(use)g (palEl2ue)g(to)g(obtain)g(the)g(parameters.)42 b(Ho)m(w)m(ev)m(er,)33 b(it)e(should)f(b)s(e)427 2664 y(noted)25 b(that)g(b)s(ecause)g (palEl2ue)g(p)s(erforms)e(its)i(o)m(wn)g(v)-5 b(alidation,)27 b(no)e(c)m(hec)m(ks)h(on)e(the)h(con)m(ten)m(ts)h(of)427 2777 y(the)c(arra)m(y)g(U)g(are)g(made)f(b)m(y)h(the)g(presen)m(t)f (routine.)38 b(in)21 b(the)h(TT)f(timescale)j(\(formerly)d(Ephemeris) 427 2890 y(Time,)37 b(ET\))e(and)f(is)h(a)g(Mo)s(di\014ed)g(Julian)f (Date)j(\(JD-2400000.5\).)60 b(units)34 b(\(solar)i(masses,)h(A)m(U)427 3003 y(and)k(canonical)i(da)m(ys\).)74 b(The)40 b(p)s(osition)i(and)e (v)m(elo)s(cit)m(y)k(are)e(not)f(sensitiv)m(e)i(to)f(the)f(c)m(hoice)i (of)427 3116 y(reference)35 b(frame.)54 b(The)34 b(palEl2ue)h(routine)f (in)h(fact)g(pro)s(duces)f(co)s(ordinates)h(with)f(resp)s(ect)h(to)427 3229 y(the)c(J2000)h(equator)f(and)f(equino)m(x.)336 3375 y Fg(\017)46 b Fl(The)40 b(algorithm)i(w)m(as)f(originally)h (adapted)f(from)f(the)h(EPHSLA)f(program)g(of)h(D.H.P)-8 b(.Jones)427 3488 y(\(priv)j(ate)36 b(comm)m(unication,)h(1996\).)56 b(The)34 b(metho)s(d)g(is)g(based)h(on)f(Stump\013)p Fe(')p Fl(s)f(Univ)m(ersal)i(V)-8 b(ari-)427 3601 y(ables.)336 3747 y Fg(\017)46 b Fl(Reference:)c(Ev)m(erhart,)31 b(E.)f(&)g(Pitkin,) h(E.T.,)f(Am.J.Ph)m(ys.)41 b(51,)31 b(712,)h(1983.)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF pal-0.3.0/sun267.tex000644 000161 000120 00000547513 12014745436 014157 0ustar00timjadmin000000 000000 \documentclass[twoside,11pt]{article} % ? Specify used packages % \usepackage{graphicx} % Use this one for final production. % \usepackage[draft]{graphicx} % Use this one for drafting. % ? End of specify used packages \pagestyle{myheadings} % ----------------------------------------------------------------------------- % ? Document identification % Fixed part \newcommand{\stardoccategory} {Starlink User Note} \newcommand{\stardocinitials} {SUN} \newcommand{\stardocsource} {sun\stardocnumber} \newcommand{\stardoccopyright} {Copyright \copyright\ 2012 Science and Technology Facilities Council} % Variable part - replace [xxx] as appropriate. \newcommand{\stardocnumber} {267.1} \newcommand{\stardocauthors} {Tim Jenness} \newcommand{\stardocdate} {2012 March 23} \newcommand{\stardoctitle} {PAL --- Positional Astronomy Library} \newcommand{\stardocversion} {0.1.0} \newcommand{\stardocmanual} {Programmer's Manual} \newcommand{\stardocabstract} { PAL provides a subset of the Fortran SLALIB library but written in C using the SLALIB C API. Where possible the PAL routines are implemented using the C SOFA library. It is provided with a GPL license. } % ? End of document identification % ----------------------------------------------------------------------------- % + % Name: % sun.tex % % Purpose: % Template for Starlink User Note (SUN) documents. % Refer to SUN/199 % % Authors: % AJC: A.J.Chipperfield (Starlink, RAL) % BLY: M.J.Bly (Starlink, RAL) % PWD: Peter W. Draper (Starlink, Durham University) % % History: % 17-JAN-1996 (AJC): % Original with hypertext macros, based on MDL plain originals. % 16-JUN-1997 (BLY): % Adapted for LaTeX2e. % Added picture commands. % 13-AUG-1998 (PWD): % Converted for use with LaTeX2HTML version 98.2 and % Star2HTML version 1.3. % 1-FEB-2000 (AJC): % Add Copyright statement in LaTeX % {Add further history here} % % - \newcommand{\stardocname}{\stardocinitials /\stardocnumber} \markboth{\stardocname}{\stardocname} \setlength{\textwidth}{160mm} \setlength{\textheight}{230mm} \setlength{\topmargin}{-2mm} \setlength{\oddsidemargin}{0mm} \setlength{\evensidemargin}{0mm} \setlength{\parindent}{0mm} \setlength{\parskip}{\medskipamount} \setlength{\unitlength}{1mm} % ----------------------------------------------------------------------------- % Hypertext definitions. % ====================== % These are used by the LaTeX2HTML translator in conjunction with star2html. % Comment.sty: version 2.0, 19 June 1992 % Selectively in/exclude pieces of text. % % Author % Victor Eijkhout % Department of Computer Science % University Tennessee at Knoxville % 104 Ayres Hall % Knoxville, TN 37996 % USA % Do not remove the %begin{latexonly} and %end{latexonly} lines (used by % LaTeX2HTML to signify text it shouldn't process). %begin{latexonly} \makeatletter \def\makeinnocent#1{\catcode`#1=12 } \def\csarg#1#2{\expandafter#1\csname#2\endcsname} \def\ThrowAwayComment#1{\begingroup \def\CurrentComment{#1}% \let\do\makeinnocent \dospecials \makeinnocent\^^L% and whatever other special cases \endlinechar`\^^M \catcode`\^^M=12 \xComment} {\catcode`\^^M=12 \endlinechar=-1 % \gdef\xComment#1^^M{\def\test{#1} \csarg\ifx{PlainEnd\CurrentComment Test}\test \let\html@next\endgroup \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test \edef\html@next{\endgroup\noexpand\end{\CurrentComment}} \else \let\html@next\xComment \fi \fi \html@next} } \makeatother \def\includecomment #1{\expandafter\def\csname#1\endcsname{}% \expandafter\def\csname end#1\endcsname{}} \def\excludecomment #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}% {\escapechar=-1\relax \csarg\xdef{PlainEnd#1Test}{\string\\end#1}% \csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}% }} % Define environments that ignore their contents. \excludecomment{comment} \excludecomment{rawhtml} \excludecomment{htmlonly} % Hypertext commands etc. This is a condensed version of the html.sty % file supplied with LaTeX2HTML by: Nikos Drakos & % Jelle van Zeijl . The LaTeX2HTML documentation % should be consulted about all commands (and the environments defined above) % except \xref and \xlabel which are Starlink specific. \newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}} \newcommand{\htmladdnormallink}[2]{#1} \newcommand{\htmladdimg}[1]{} \newcommand{\hyperref}[4]{#2\ref{#4}#3} \newcommand{\htmlref}[2]{#1} \newcommand{\htmlimage}[1]{} \newcommand{\htmladdtonavigation}[1]{} \newenvironment{latexonly}{}{} \newcommand{\latex}[1]{#1} \newcommand{\html}[1]{} \newcommand{\latexhtml}[2]{#1} \newcommand{\HTMLcode}[2][]{} % Starlink cross-references and labels. \newcommand{\xref}[3]{#1} \newcommand{\xlabel}[1]{} % LaTeX2HTML symbol. \newcommand{\latextohtml}{\LaTeX2\texttt{HTML}} % Define command to re-centre underscore for Latex and leave as normal % for HTML (severe problems with \_ in tabbing environments and \_\_ % generally otherwise). \renewcommand{\_}{\texttt{\symbol{95}}} % ----------------------------------------------------------------------------- % Debugging. % ========= % Remove % on the following to debug links in the HTML version using Latex. % \newcommand{\hotlink}[2]{\fbox{\begin{tabular}[t]{@{}c@{}}#1\\\hline{\footnotesize #2}\end{tabular}}} % \renewcommand{\htmladdnormallinkfoot}[2]{\hotlink{#1}{#2}} % \renewcommand{\htmladdnormallink}[2]{\hotlink{#1}{#2}} % \renewcommand{\hyperref}[4]{\hotlink{#1}{\S\ref{#4}}} % \renewcommand{\htmlref}[2]{\hotlink{#1}{\S\ref{#2}}} % \renewcommand{\xref}[3]{\hotlink{#1}{#2 -- #3}} %end{latexonly} % ----------------------------------------------------------------------------- % ? Document specific \newcommand or \newenvironment commands. %+ % Name: % SST.TEX % Purpose: % Define LaTeX commands for laying out Starlink routine descriptions. % Language: % LaTeX % Type of Module: % LaTeX data file. % Description: % This file defines LaTeX commands which allow routine documentation % produced by the SST application PROLAT to be processed by LaTeX and % by LaTeX2html. The contents of this file should be included in the % source prior to any statements that make of the sst commnds. % Notes: % The commands defined in the style file html.sty provided with LaTeX2html % are used. These should either be made available by using the appropriate % sun.tex (with hypertext extensions) or by putting the file html.sty % on your TEXINPUTS path (and including the name as part of the % documentstyle declaration). % Authors: % RFWS: R.F. Warren-Smith (STARLINK) % PDRAPER: P.W. Draper (Starlink - Durham University) % MJC: Malcolm J. Currie (STARLINK) % DSB: David Berry (STARLINK) % TIMJ: Tim Jenness (JAC) % History: % 10-SEP-1990 (RFWS): % Original version. % 10-SEP-1990 (RFWS): % Added the implementation status section. % 12-SEP-1990 (RFWS): % Added support for the usage section and adjusted various spacings. % 8-DEC-1994 (PDRAPER): % Added support for simplified formatting using LaTeX2html. % 1995 October 4 (MJC): % Added goodbreaks and pagebreak[3] in various places to improve % pages breaking before headings, not immediately after. % Corrected banner width. % 1996 March 7 (MJC): % Mark document name on both sides of an sstroutine. % 2-DEC-1998 (DSB): % Added sstattributetype (copied from sun210.tex). % 2004 August 6 (MJC): % Added sstattribute. % 21-JUL-2009 (TIMJ): % Added \sstdiylist{}{} as used when a Parameters section is located that % is not "ADAM Parameters". % {enter_further_changes_here} % Bugs: % {note_any_bugs_here} %- % Define length variables. \newlength{\sstbannerlength} \newlength{\sstcaptionlength} \newlength{\sstexampleslength} \newlength{\sstexampleswidth} % Define a \tt font of the required size. \latex{\newfont{\ssttt}{cmtt10 scaled 1095}} \html{\newcommand{\ssttt}{\tt}} % Define a command to produce a routine header, including its name, % a purpose description and the rest of the routine's documentation. \newcommand{\sstroutine}[3]{ \goodbreak \markboth{{\stardocname}~ --- #1}{{\stardocname}~ --- #1} \rule{\textwidth}{0.5mm} \vspace{-7ex} \newline \settowidth{\sstbannerlength}{{\Large {\bf #1}}} \setlength{\sstcaptionlength}{\textwidth} \setlength{\sstexampleslength}{\textwidth} \addtolength{\sstbannerlength}{0.5em} \addtolength{\sstcaptionlength}{-2.0\sstbannerlength} \addtolength{\sstcaptionlength}{-5.0pt} \settowidth{\sstexampleswidth}{{\bf Examples:}} \addtolength{\sstexampleslength}{-\sstexampleswidth} \parbox[t]{\sstbannerlength}{\flushleft{\Large {\bf #1}}} \parbox[t]{\sstcaptionlength}{\center{\Large #2}} \parbox[t]{\sstbannerlength}{\flushright{\Large {\bf #1}}} \begin{description} #3 \end{description} } % Frame attributes fount. Need to find a way for these to stand out. % San serif doesn't work by default. Also without the \rm the % san serif continues after \sstatt hyperlinks. Extra braces % failed to prevent \sstattribute from using roman fount for its % headings. The current lash up appears to work, but needs further % investigation or a TeX wizard. \newcommand{\sstatt}[1]{\sf #1} \begin{htmlonly} \newcommand{\sstatt}[1]{\large{\tt #1}} \end{htmlonly} % Define a command to produce an attribute header, including its name, % a purpose description and the rest of the routine's documentation. \newcommand{\sstattribute}[3]{ \goodbreak \markboth{{\stardocname}~ --- #1}{{\stardocname}~ --- #1} \rule{\textwidth}{0.5mm} \vspace{-7ex} \newline \settowidth{\sstbannerlength}{{\Large {\sstatt #1}}} \setlength{\sstcaptionlength}{\textwidth} \setlength{\sstexampleslength}{\textwidth} \addtolength{\sstbannerlength}{0.5em} \addtolength{\sstcaptionlength}{-2.0\sstbannerlength} \addtolength{\sstcaptionlength}{-4.9pt} \settowidth{\sstexampleswidth}{{\bf Examples:}} \addtolength{\sstexampleslength}{-\sstexampleswidth} \parbox[t]{\sstbannerlength}{\flushleft{\Large {\sstatt #1}}} \parbox[t]{\sstcaptionlength}{\center{\Large #2}} \parbox[t]{\sstbannerlength}{\flushright{\Large {\sstatt #1}}} \begin{description} #3 \end{description} } % Format the description section. \newcommand{\sstdescription}[1]{\item[Description:] #1} % Format the usage section. \newcommand{\sstusage}[1]{\goodbreak \item[Usage:] \mbox{} \\[1.3ex]{\raggedright \ssttt #1}} % Format the invocation section. \newcommand{\sstinvocation}[1]{\item[Invocation:]\hspace{0.4em}{\tt #1}} % Format the attribute data type section. \newcommand{\sstattributetype}[1]{ \item[Type:] \mbox{} \\ #1 } % Format the arguments section. \newcommand{\sstarguments}[1]{ \item[Arguments:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % Format the returned value section (for a function). \newcommand{\sstreturnedvalue}[1]{ \item[Returned Value:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % Format the parameters section (for an application). \newcommand{\sstparameters}[1]{ \goodbreak \item[Parameters:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % Format the applicability section. \newcommand{\sstapplicability}[1]{ \item[Class Applicability:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % Format the examples section. \newcommand{\sstexamples}[1]{ \goodbreak \item[Examples:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #1 \end{description} } % Define the format of a subsection in a normal section. \newcommand{\sstsubsection}[1]{ \item[{#1}] \mbox{} \\} % Define the format of a subsection in the examples section. \newcommand{\sstexamplesubsection}[2]{\sloppy \item[\parbox{\sstexampleslength}{\ssttt #1}] \mbox{} \vspace{1.0ex} \\ #2 } % Format the notes section. \newcommand{\sstnotes}[1]{\goodbreak \item[Notes:] \mbox{} \\[1.3ex] #1} % Provide a general-purpose format for additional (DIY) sections. \newcommand{\sstdiytopic}[2]{\item[{\hspace{-0.35em}#1\hspace{-0.35em}:}] \mbox{} \\[1.3ex] #2} % Format the a generic section as a list \newcommand{\sstdiylist}[2]{ \item[#1:] \mbox{} \\ \vspace{-3.5ex} \begin{description} #2 \end{description} } % Format the implementation status section. \newcommand{\sstimplementationstatus}[1]{ \item[{Implementation Status:}] \mbox{} \\[1.3ex] #1} % Format the bugs section. \newcommand{\sstbugs}[1]{\item[Bugs:] #1} % Format a list of items while in paragraph mode. \newcommand{\sstitemlist}[1]{ \mbox{} \\ \vspace{-3.5ex} \begin{itemize} #1 \end{itemize} } % Define the format of an item. \newcommand{\sstitem}{\item} % Now define html equivalents of those already set. These are used by % latex2html and are defined in the html.sty files. \begin{htmlonly} % sstroutine. \newcommand{\sstroutine}[3]{ \subsection{#1\xlabel{#1}-\label{#1}#2} \begin{description} #3 \end{description} } % sstattribute. Note the further level of subsectioning. \newcommand{\sstattribute}[3]{ \subsubsection{#1\xlabel{#1}-\label{#1}#2} \begin{description} #3 \end{description} \\ } % sstdescription \newcommand{\sstdescription}[1]{\item[Description:] \begin{description} #1 \end{description} \\ } % sstusage \newcommand{\sstusage}[1]{\item[Usage:] \begin{description} {\ssttt #1} \end{description} \\ } % sstinvocation \newcommand{\sstinvocation}[1]{\item[Invocation:] \begin{description} {\ssttt #1} \end{description} \\ } % sstarguments \newcommand{\sstarguments}[1]{ \item[Arguments:] \\ \begin{description} #1 \end{description} \\ } % sstreturnedvalue \newcommand{\sstreturnedvalue}[1]{ \item[Returned Value:] \\ \begin{description} #1 \end{description} \\ } % sstparameters \newcommand{\sstparameters}[1]{ \item[Parameters:] \\ \begin{description} #1 \end{description} \\ } % sstapplicability \newcommand{\sstapplicability}[1]{% \item[Class Applicability:] \begin{description} #1 \end{description} \\ } % sstexamples \newcommand{\sstexamples}[1]{ \item[Examples:] \\ \begin{description} #1 \end{description} \\ } % sstsubsection \newcommand{\sstsubsection}[1]{\item[{#1}]} % sstexamplesubsection \newcommand{\sstexamplesubsection}[2]{\item[{\ssttt #1}] #2\\} % sstnotes \newcommand{\sstnotes}[1]{\item[Notes:] #1 } % sstdiytopic \newcommand{\sstdiytopic}[2]{\item[{#1}] #2 } % sstimplementationstatus \newcommand{\sstimplementationstatus}[1]{ \item[Implementation Status:] #1 } % sstitemlist \newcommand{\sstitemlist}[1]{ \begin{itemize} #1 \end{itemize} \\ } % sstitem \newcommand{\sstitem}{\item} \end{htmlonly} % End of sst.tex layout definitions. %. % ? End of document specific commands % ----------------------------------------------------------------------------- % Title Page. % =========== \renewcommand{\thepage}{\roman{page}} \begin{document} \thispagestyle{empty} % Latex document header. % ====================== \begin{latexonly} \textsc{Joint Astronomy Centre} \hfill \textbf{\stardocname}\\ {\large Science \& Technology Facilities Council}\\ {\large Starlink Project\\} {\large \stardoccategory\ \stardocnumber} \begin{flushright} \stardocauthors\\ \stardocdate \end{flushright} \vspace{-4mm} \rule{\textwidth}{0.5mm} \vspace{5mm} \begin{center} {\Huge\textbf{\stardoctitle \\ [2.5ex]}} {\LARGE\textbf{\stardocversion \\ [4ex]}} {\Huge\textbf{\stardocmanual}} \end{center} \vspace{5mm} % ? Add picture here if required for the LaTeX version. % e.g. \includegraphics[scale=0.3]{filename.ps} % ? End of picture % ? Heading for abstract if used. \vspace{10mm} \begin{center} {\Large\textbf{Abstract}} \end{center} % ? End of heading for abstract. \end{latexonly} % HTML documentation header. % ========================== \begin{htmlonly} \xlabel{} \begin{rawhtml}

\end{rawhtml} \stardoctitle\\ \stardocversion\\ \stardocmanual \begin{rawhtml}


\end{rawhtml} % ? Add picture here if required for the hypertext version. % e.g. \includegraphics[scale=0.7]{filename.ps} % ? End of picture \begin{rawhtml}

\end{rawhtml} \stardoccategory\ \stardocnumber \\ \stardocauthors \\ \stardocdate \begin{rawhtml}

\end{rawhtml} \htmladdnormallink{Joint Astronomy Centre} {http://www.jach.hawaii.edu} \\ \htmladdnormallink{Science \& Technology Facilities Council} {http://www.scitech.ac.uk} \\ \begin{rawhtml}

\end{rawhtml} \htmladdnormallink{Starlink Project}{http://www.starlink.ac.uk/} \begin{rawhtml}

\end{rawhtml} \htmladdnormallink{\htmladdimg{source.gif} Retrieve hardcopy} {http://www.starlink.ac.uk/cgi-bin/hcserver?\stardocsource}\\ % HTML document table of contents. % ================================ % Add table of contents header and a navigation button to return to this % point in the document (this should always go before the abstract \section). \label{stardoccontents} \begin{rawhtml}

Contents

\end{rawhtml} \htmladdtonavigation{\htmlref{\htmladdimg{contents_motif.gif}} {stardoccontents}} % ? New section for abstract if used. \section{\xlabel{abstract}Abstract} % ? End of new section for abstract \end{htmlonly} % ----------------------------------------------------------------------------- % ? Document Abstract. (if used) % ================== \stardocabstract % ? End of document abstract % ----------------------------------------------------------------------------- % ? Latex Copyright Statement % ========================= \begin{latexonly} \newpage \vspace*{\fill} \stardoccopyright \end{latexonly} % ? End of Latex copyright statement % ----------------------------------------------------------------------------- % ? Latex document Table of Contents (if used). % =========================================== % \newpage % \begin{latexonly} % \setlength{\parskip}{0mm} % \tableofcontents % \setlength{\parskip}{\medskipamount} % \markboth{\stardocname}{\stardocname} %\end{latexonly} % ? End of Latex document table of contents % ----------------------------------------------------------------------------- \cleardoublepage \renewcommand{\thepage}{\arabic{page}} \setcounter{page}{1} % ? Main text \section{Introduction} This library provides a C library designed as a API-compatible replacement for the C SLALIB library () and uses a GPL licence so is freely redistributable. Where possible the functions call equivalent SOFA routines and use current IAU 2006 standards. This means that any functions that rely on nutation or precession will return slightly different answers to the SLA functions. \clearpage \appendix \section{\label{APP:SPEC}Function Descriptions} \subsection{SOFA Mappings} The following table lists PAL/SLA functions that have direct replacements in SOFA. Whilst these routines are implemented in the PAL library using SOFA new code should probably call SOFA directly. \begin{tabular}{ll} SLA/PAL & SOFA \\ \texttt{palCldj} & \texttt{iauCal2jd} \\ \texttt{palDbear} & \texttt{iauPas} \\ \texttt{palDaf2r} & \texttt{iauAf2a} \\ \texttt{palDav2m} & \texttt{iauRv2m} \\ \texttt{palDcc2s} & \texttt{iauC2s} \\ \texttt{palDcs2c} & \texttt{iauS2c} \\ \texttt{palDd2tf} & \texttt{iauD2tf}\\ \texttt{palDimxv} & \texttt{iauTrxp}\\ \texttt{palDm2av} & \texttt{iauRm2v}\\ \texttt{palDjcl} & \texttt{iauJd2cal}\\ \texttt{palDmxm} & \texttt{iauRxr}\\ \texttt{palDmxv} & \texttt{iauRxp}\\ \texttt{palDpav} & \texttt{iauPap}\\ \texttt{palDr2af} & \texttt{iauA2af}\\ \texttt{palDr2tf} & \texttt{iauA2tf}\\ \texttt{palDranrm} & \texttt{iauAnp}\\ \texttt{palDsep} & \texttt{iauSeps}\\ \texttt{palDsepv} & \texttt{iauSepp}\\ \texttt{palDtf2d} & \texttt{iauTf2d}\\ \texttt{palDtf2r} & \texttt{iauTf2a}\\ \texttt{palDvdv} & \texttt{iauPdp}\\ \texttt{palDvn} & \texttt{iauPn}\\ \texttt{palDvxv} & \texttt{iauPxp}\\ \texttt{palEpb} & \texttt{iauEpb}\\ \texttt{palEpb2d} & \texttt{iauEpb2d}\\ \texttt{palEpj} & \texttt{iauEpj}\\ \texttt{palEpj2d} & \texttt{iauEpj2jd}\\ \texttt{palEqeqx} & \texttt{iauEe06a}\\ \texttt{palFk5hz} & \texttt{iauFk5hz} \textit{also calls iauEpj2jd}\\ \texttt{palGmst} & \texttt{iauGmst06}\\ \texttt{palGmsta} & \texttt{iauGmst06}\\ \texttt{palHfk5z} & \texttt{iauHfk5z} \textit{also calls iauEpj2jd}\\ \end{tabular} \subsection{More complex functions} These functions do not have a simple equivalent in SOFA so are reimplemented either completely standalone or using multiple SOFA functions. %% Regenerate everything after this from the prologues using SST by %% running "make palsun.tex". We do not build this automatically as %% there is no particular need for an SST dependency. %% Some manual tweaking is required after creating the SST tex. \sstroutine{ palAddet }{ Add the E-terms to a pre IAU 1976 mean place }{ \sstdescription{ Add the E-terms (elliptic component of annual aberration) to a pre IAU 1976 mean place to conform to the old catalogue convention. } \sstinvocation{ void palAddet ( double rm, double dm, double eq, double $*$rc, double $*$dc ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ RA without E-terms (radians) } \sstsubsection{ dm = double (Given) }{ Dec without E-terms (radians) } \sstsubsection{ eq = double (Given) }{ Besselian epoch of mean equator and equinox } \sstsubsection{ rc = double $*$ (Returned) }{ RA with E-terms included (radians) } \sstsubsection{ dc = double $*$ (Returned) }{ Dec with E-terms included (radians) } } \sstnotes{ Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. If it is necessary to convert a formal mean place (for example a pulsar timing position) to one consistent with such a star catalogue, then the RA,Dec should be adjusted using this routine. } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48. } } \sstroutine{ palAirmas }{ Air mass at given zenith distance }{ \sstdescription{ Calculates the airmass at the observed zenith distance. } \sstinvocation{ double palAirmas( double zd ); } \sstarguments{ \sstsubsection{ zd = double (Given) }{ Observed zenith distance (radians) } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}observed{\tt "} zenith distance referred to above means {\tt "}as affected by refraction{\tt "}. \sstitem Uses Hardie{\tt '}s (1962) polynomial fit to Bemporad{\tt '}s data for the relative air mass, X, in units of thickness at the zenith as tabulated by Schoenberg (1929). This is adequate for all normal needs as it is accurate to better than 0.1\% up to X = 6.8 and better than 1\% up to X = 10. Bemporad{\tt '}s tabulated values are unlikely to be trustworthy to such accuracy because of variations in density, pressure and other conditions in the atmosphere from those assumed in his work. \sstitem The sign of the ZD is ignored. \sstitem At zenith distances greater than about ZD = 87 degrees the air mass is held constant to avoid arithmetic overflows. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Hardie, R.H., 1962, in {\tt "}Astronomical Techniques{\tt "} ed. W.A. Hiltner, University of Chicago Press, p180. \sstitem Schoenberg, E., 1929, Hdb. d. Ap., Berlin, Julius Springer, 2, 268. } } } \sstroutine{ palAmp }{ Convert star RA,Dec from geocentric apparaent to mean place }{ \sstdescription{ Convert star RA,Dec from geocentric apparent to mean place. The mean coordinate system is close to ICRS. See palAmpqk for details. } \sstinvocation{ void palAmp ( double ra, double da, double date, double eq, double $*$rm, double $*$dm ); } \sstarguments{ \sstsubsection{ ra = double (Given) }{ Apparent RA (radians) } \sstsubsection{ dec = double (Given) }{ Apparent Dec (radians) } \sstsubsection{ date = double (Given) }{ TDB for apparent place (JD-2400000.5) } \sstsubsection{ eq = double (Given) }{ Equinox: Julian epoch of mean place. } \sstsubsection{ rm = double $*$ (Returned) }{ Mean RA (radians) } \sstsubsection{ dm = double $*$ (Returned) }{ Mean Dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem See palMappa and palAmpqk for details. } } } \sstroutine{ palAmpqk }{ Convert star RA,Dec from geocentric apparent to mean place }{ \sstdescription{ Convert star RA,Dec from geocentric apparent to mean place. The {\tt "}mean{\tt "} coordinate system is in fact close to ICRS. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one epoch and equinox. The star-independent parameters can be obtained by calling the palMappa function. } \sstinvocation{ void palAmpqk ( double ra, double da, double amprms[21], double $*$rm, double $*$dm ) } \sstarguments{ \sstsubsection{ ra = double (Given) }{ Apparent RA (radians). } \sstsubsection{ da = double (Given) }{ Apparent Dec (radians). } \sstsubsection{ amprms = double[21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa): (0) time interval for proper motion (Julian years) (1-3) barycentric position of the Earth (AU) (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$v) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix } \sstsubsection{ rm = double (Returned) }{ Mean RA (radians). } \sstsubsection{ dm = double (Returned) }{ Mean Dec (radians). } } } \sstroutine{ palCaldj }{ Gregorian Calendar to Modified Julian Date }{ \sstdescription{ Modified Julian Date to Gregorian Calendar with special behaviour for 2-digit years relating to 1950 to 2049. } \sstinvocation{ void palCaldj ( int iy, int im, int id, double $*$djm, int $*$j ); } \sstarguments{ \sstsubsection{ iy = int (Given) }{ Year in the Gregorian calendar } \sstsubsection{ im = int (Given) }{ Month in the Gergorian calendar } \sstsubsection{ id = int (Given) }{ Day in the Gregorian calendar } \sstsubsection{ djm = double $*$ (Returned) }{ Modified Julian Date (JD-2400000.5) for 0 hrs } \sstsubsection{ j = status (Returned) }{ 0 = OK. See iauCal2jd for other values. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauCal2jd \sstitem Unlike iauCal2jd this routine treats the years 0-100 as referring to the end of the 20th Century and beginning of the 21st Century. If this behaviour is not acceptable use the SOFA routine directly or palCldj. Acceptable years are 00-49, interpreted as 2000-2049, 50-99, {\tt "} {\tt "} 1950-1999, all others, interpreted literally. \sstitem Unlike SLA this routine will work with negative years. } } } \sstroutine{ palDafin }{ Sexagesimal character string to angle }{ \sstdescription{ Extracts an angle from a sexagesimal string with degrees, arcmin, arcsec fields using space or comma delimiters. } \sstinvocation{ void palDafin ( const char $*$string, int $*$ipos, double $*$a, int $*$j ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing deg, arcmin, arcsec fields } \sstsubsection{ ipos = int $*$ (Given \& Returned) }{ Position to start decoding {\tt "}string{\tt "}. First character is position 1 for compatibility with SLA. After calling this routine {\tt "}iptr{\tt "} will be positioned after the sexagesimal string. } \sstsubsection{ a = double $*$ (Returned) }{ Angle in radians. } \sstsubsection{ j = int $*$ (Returned) }{ status: 0 = OK $+$1 = default, A unchanged \sstitemlist{ \sstitem 1 = bad degrees ) \sstitem 2 = bad arcminutes ) (note 3) \sstitem 3 = bad arcseconds ) } } } \sstnotes{ \sstitemlist{ \sstitem The first three {\tt "}fields{\tt "} in STRING are degrees, arcminutes, arcseconds, separated by spaces or commas. The degrees field may be signed, but not the others. The decoding is carried out by the palDfltin routine and is free-format. \sstitem Successive fields may be absent, defaulting to zero. For zero status, the only combinations allowed are degrees alone, degrees and arcminutes, and all three fields present. If all three fields are omitted, a status of $+$1 is returned and A is unchanged. In all other cases A is changed. \sstitem Range checking: } The degrees field is not range checked. However, it is expected to be integral unless the other two fields are absent. The arcminutes field is expected to be 0-59, and integral if the arcseconds field is present. If the arcseconds field is absent, the arcminutes is expected to be 0-59.9999... The arcseconds field is expected to be 0-59.9999... \sstitemlist{ \sstitem Decoding continues even when a check has failed. Under these circumstances the field takes the supplied value, defaulting to zero, and the result A is computed and returned. \sstitem Further fields after the three expected ones are not treated as an error. The pointer IPOS is left in the correct state for further decoding with the present routine or with palDfltin etc. See the example, above. \sstitem If STRING contains hours, minutes, seconds instead of degrees etc, or if the required units are turns (or days) instead of radians, the result A should be multiplied as follows: } for to obtain multiply STRING A in A by d {\tt '} {\tt "} radians 1 = 1.0 d {\tt '} {\tt "} turns 1/2pi = 0.1591549430918953358 h m s radians 15 = 15.0 h m s days 15/2pi = 2.3873241463784300365 } \sstdiytopic{ Example }{ argument before after STRING {\tt '}-57 17 44.806 12 34 56.7{\tt '} unchanged IPTR 1 16 (points to 12...) A ? -1.00000D0 J ? 0 } } \sstroutine{ palDe2h }{ Equatorial to horizon coordinates: HA,Dec to Az,E }{ \sstdescription{ Convert equatorial to horizon coordinates. } \sstinvocation{ palDe2h( double ha, double dec, double phi, double $*$ az, double $*$ el ); } \sstarguments{ \sstsubsection{ ha = double $*$ (Given) }{ Hour angle (radians) } \sstsubsection{ dec = double $*$ (Given) }{ Declination (radians) } \sstsubsection{ phi = double (Given) }{ Observatory latitude (radians) } \sstsubsection{ az = double $*$ (Returned) }{ Azimuth (radians) } \sstsubsection{ el = double $*$ (Returned) }{ Elevation (radians) } } \sstnotes{ \sstitemlist{ \sstitem All the arguments are angles in radians. \sstitem Azimuth is returned in the range 0-2pi; north is zero, and east is $+$pi/2. Elevation is returned in the range $+$/-pi/2. \sstitem The latitude must be geodetic. In critical applications, corrections for polar motion should be applied. \sstitem In some applications it will be important to specify the correct type of hour angle and declination in order to produce the required type of azimuth and elevation. In particular, it may be important to distinguish between elevation as affected by refraction, which would require the {\tt "}observed{\tt "} HA,Dec, and the elevation in vacuo, which would require the {\tt "}topocentric{\tt "} HA,Dec. If the effects of diurnal aberration can be neglected, the {\tt "}apparent{\tt "} HA,Dec may be used instead of the topocentric HA,Dec. \sstitem No range checking of arguments is carried out. \sstitem In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude, and (for tracking a star) sine and cosine of declination. } } } \sstroutine{ palDeuler }{ Form a rotation matrix from the Euler angles }{ \sstdescription{ A rotation is positive when the reference frame rotates anticlockwise as seen looking towards the origin from the positive region of the specified axis. The characters of ORDER define which axes the three successive rotations are about. A typical value is {\tt '}ZXZ{\tt '}, indicating that RMAT is to become the direction cosine matrix corresponding to rotations of the reference frame through PHI radians about the old Z-axis, followed by THETA radians about the resulting X-axis, then PSI radians about the resulting Z-axis. The axis names can be any of the following, in any order or combination: X, Y, Z, uppercase or lowercase, 1, 2, 3. Normal axis labelling/numbering conventions apply; the xyz (=123) triad is right-handed. Thus, the {\tt '}ZXZ{\tt '} example given above could be written {\tt '}zxz{\tt '} or {\tt '}313{\tt '} (or even {\tt '}ZxZ{\tt '} or {\tt '}3xZ{\tt '}). ORDER is terminated by length or by the first unrecognized character. Fewer than three rotations are acceptable, in which case the later angle arguments are ignored. If all rotations are zero, the identity matrix is produced. } \sstinvocation{ void palDeuler ( const char $*$order, double phi, double theta, double psi, double rmat[3][3] ); } \sstarguments{ \sstsubsection{ order = const char[] (Given) }{ Specifies about which axes the rotation occurs } \sstsubsection{ phi = double (Given) }{ 1st rotation (radians) } \sstsubsection{ theta = double (Given) }{ 2nd rotation (radians) } \sstsubsection{ psi = double (Given) }{ 3rd rotation (radians) } \sstsubsection{ rmat = double[3][3] (Given \& Returned) }{ Rotation matrix } } } \sstroutine{ palDfltin }{ Convert free-format input into double precision floating point }{ \sstdescription{ Extracts a number from an input string starting at the specified index. } \sstinvocation{ void palDfltin( const char $*$ string, int $*$nstrt, double $*$dreslt, int $*$jflag ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing number to be decoded. } \sstsubsection{ nstrt = int $*$ (Given and Returned) }{ Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1. } \sstsubsection{ dreslt = double $*$ (Returned) }{ Result. Not updated when jflag=1. } \sstsubsection{ jflag = int $*$ (Returned) }{ status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error } } \sstnotes{ \sstitemlist{ \sstitem Uses the strtod() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing. \sstitem All {\tt "}D{\tt "} characters are converted to {\tt "}E{\tt "} to handle fortran exponents. \sstitem Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space. \sstitem If no number can be found flag will be set to 1. \sstitem If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value HUGE\_VAL, for underflow it will have the value 0.0. \sstitem For compatiblity with SLA/F -0 will be returned as {\tt "}0{\tt "} with jflag == -1. \sstitem Unlike slaDfltin a standalone {\tt "}E{\tt "} will return status 1 (could not find a number) rather than 2 (bad number). } } } \sstroutine{ palDh2e }{ Horizon to equatorial coordinates: Az,El to HA,Dec }{ \sstdescription{ Convert horizon to equatorial coordinates. } \sstinvocation{ palDh2e( double az, double el, double phi, double $*$ ha, double $*$ dec ); } \sstarguments{ \sstsubsection{ az = double (Given) }{ Azimuth (radians) } \sstsubsection{ el = double (Given) }{ Elevation (radians) } \sstsubsection{ phi = double (Given) }{ Observatory latitude (radians) } \sstsubsection{ ha = double $*$ (Returned) }{ Hour angle (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Declination (radians) } } \sstnotes{ \sstitemlist{ \sstitem All the arguments are angles in radians. \sstitem The sign convention for azimuth is north zero, east $+$pi/2. \sstitem HA is returned in the range $+$/-pi. Declination is returned in the range $+$/-pi/2. \sstitem The latitude is (in principle) geodetic. In critical applications, corrections for polar motion should be applied. \sstitem In some applications it will be important to specify the correct type of elevation in order to produce the required type of HA,Dec. In particular, it may be important to distinguish between the elevation as affected by refraction, which will yield the {\tt "}observed{\tt "} HA,Dec, and the elevation in vacuo, which will yield the {\tt "}topocentric{\tt "} HA,Dec. If the effects of diurnal aberration can be neglected, the topocentric HA,Dec may be used as an approximation to the {\tt "}apparent{\tt "} HA,Dec. \sstitem No range checking of arguments is done. \sstitem In applications which involve many such calculations, rather than calling the present routine it will be more efficient to use inline code, having previously computed fixed terms such as sine and cosine of latitude. } } } \sstroutine{ palDjcal }{ Modified Julian Date to Gregorian Calendar }{ \sstdescription{ Modified Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages (namely rounded to a specified precision, and with the fields stored in a single array) } \sstinvocation{ void palDjcal ( int ndp, double djm, int iymdf[4], int $*$j ); } \sstarguments{ \sstsubsection{ ndp = int (Given) }{ Number of decimal places of days in fraction. } \sstsubsection{ djm = double (Given) }{ Modified Julian Date (JD-2400000.5) } \sstsubsection{ iymdf[4] = int[] (Returned) }{ Year, month, day, fraction in Gregorian calendar. } \sstsubsection{ j = status (Returned) }{ 0 = OK. See iauJd2cal for other values. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauJd2cal } } } \sstroutine{ palDmat }{ Matrix inversion \& solution of simultaneous equations }{ \sstdescription{ Matrix inversion \& solution of simultaneous equations For the set of n simultaneous equations in n unknowns: A.Y = X this routine calculates the inverse of A, the determinant of matrix A and the vector of N unknowns. } \sstinvocation{ void palDmat( int n, double $*$a, double $*$y, double $*$d, int $*$jf, int $*$iw ); } \sstarguments{ \sstsubsection{ n = int (Given) }{ Number of simultaneous equations and number of unknowns. } \sstsubsection{ a = double[] (Given \& Returned) }{ A non-singular NxN matrix (implemented as a contiguous block of memory). After calling this routine {\tt "}a{\tt "} contains the inverse of the matrix. } \sstsubsection{ y = double[] (Given \& Returned) }{ The vector of N unknowns. On exit this vector contains the N solutions. } \sstsubsection{ d = double $*$ (Returned) }{ The determinant. } \sstsubsection{ jf = int $*$ (Returned) }{ The singularity flag. If the matrix is non-singular, jf=0 is returned. If the matrix is singular, jf=-1 \& d=0.0 are returned. In the latter case, the contents of array {\tt "}a{\tt "} on return are undefined. } } \sstnotes{ \sstitemlist{ \sstitem Implemented using Gaussian elimination with partial pivoting. \sstitem Optimized for speed rather than accuracy with errors 1 to 4 times those of routines optimized for accuracy. } } } \sstroutine{ palDs2tp }{ Spherical to tangent plane projection }{ \sstdescription{ Projection of spherical coordinates onto tangent plane: {\tt "}gnomonic{\tt "} projection - {\tt "}standard coordinates{\tt "} } \sstinvocation{ palDs2tp( double ra, double dec, double raz, double decz, double $*$xi, double $*$eta, int $*$j ); } \sstarguments{ \sstsubsection{ ra = double (Given) }{ RA spherical coordinate of point to be projected (radians) } \sstsubsection{ dec = double (Given) }{ Dec spherical coordinate of point to be projected (radians) } \sstsubsection{ raz = double (Given) }{ RA spherical coordinate of tangent point (radians) } \sstsubsection{ decz = double (Given) }{ Dec spherical coordinate of tangent point (radians) } \sstsubsection{ xi = double $*$ (Returned) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double $*$ (Returned) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ j = int $*$ (Returned) }{ status: 0 = OK, star on tangent plane 1 = error, star too far from axis 2 = error, antistar on tangent plane 3 = error, antistar too far from axis } } } \sstroutine{ palDtt }{ Return offset between UTC and TT }{ \sstdescription{ Increment to be applied to Coordinated Universal Time UTC to give International Atomic Time (TAI). } \sstinvocation{ dat = palDat( double utc ); } \sstarguments{ \sstsubsection{ utc = double (Given) }{ UTC date as a modified JD (JD-2400000.5) } } \sstreturnedvalue{ \sstsubsection{ dat = double }{ TAI-UTC in seconds } } \sstnotes{ \sstitemlist{ \sstitem This routine converts the MJD argument to calendar date before calling the SOFA iauDat function. \sstitem This routine matches the slaDat interface which differs from the iauDat interface. Consider coding directly to the SOFA interface. \sstitem See iauDat for a description of error conditions when calling this function with a time outside of the UTC range. \sstitem The status argument from iauDat is ignored. This is reasonable since the error codes are mainly related to incorrect calendar dates when calculating the JD internally. } } } \sstroutine{ palDmoon }{ Approximate geocentric position and velocity of the Moon }{ \sstdescription{ Calculate the approximate geocentric position of the Moon using a full implementation of the algorithm published by Meeus (l{\tt '}Astronomie, June 1984, p348). } \sstinvocation{ void palDmoon( double date, double pv[6] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB as a Modified Julian Date (JD-2400000.5) } \sstsubsection{ pv = double [6] (Returned) }{ Moon x,y,z,xdot,ydot,zdot, mean equator and equinox of date (AU, AU/s) } } \sstnotes{ \sstitemlist{ \sstitem Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in latitude and 0.2 arcsec in HP (equivalent to about 20 km in distance). Comparison with JPL DE200 over the interval 1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km and 81 mm/s in distance. The maximum errors over the same interval are 18 arcsec and 0.50 arcsec/hour in longitude, 11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s in distance. \sstitem The original algorithm is expressed in terms of the obsolete timescale Ephemeris Time. Either TDB or TT can be used, but not UT without incurring significant errors (30 arcsec at the present time) due to the Moon{\tt '}s 0.5 arcsec/sec movement. \sstitem The algorithm is based on pre IAU 1976 standards. However, the result has been moved onto the new (FK5) equinox, an adjustment which is in any case much smaller than the intrinsic accuracy of the procedure. \sstitem Velocity is obtained by a complete analytical differentiation of the Meeus model. } } } \sstroutine{ palDrange }{ Normalize angle into range $+$/- pi }{ \sstdescription{ The result is {\tt "}angle{\tt "} expressed in the range $+$/- pi. If the supplied value for {\tt "}angle{\tt "} is equal to $+$/- pi, it is returned unchanged. } \sstinvocation{ palDrange( double angle ) } \sstarguments{ \sstsubsection{ angle = double (Given) }{ The angle in radians. } } } \sstroutine{ palDt }{ Estimate the offset between dynamical time and UT }{ \sstdescription{ Estimate the offset between dynamical time and Universal Time for a given historical epoch. } \sstinvocation{ double palDt( double epoch ); } \sstarguments{ \sstsubsection{ epoch = double (Given) }{ Julian epoch (e.g. 1850.0) } } \sstreturnedvalue{ \sstsubsection{ palDt = double }{ Rough estimate of ET-UT (after 1984, TT-UT) at the given epoch, in seconds. } } \sstnotes{ \sstitemlist{ \sstitem Depending on the epoch, one of three parabolic approximations is used: } before 979 Stephenson \& Morrison{\tt '}s 390 BC to AD 948 model 979 to 1708 Stephenson \& Morrison{\tt '}s 948 to 1600 model after 1708 McCarthy \& Babcock{\tt '}s post-1650 model The breakpoints are chosen to ensure continuity: they occur at places where the adjacent models give the same answer as each other. \sstitemlist{ \sstitem The accuracy is modest, with errors of up to 20 sec during the interval since 1650, rising to perhaps 30 min by 1000 BC. Comparatively accurate values from AD 1600 are tabulated in the Astronomical Almanac (see section K8 of the 1995 AA). \sstitem The use of double-precision for both argument and result is purely for compatibility with other SLALIB time routines. \sstitem The models used are based on a lunar tidal acceleration value of -26.00 arcsec per century. } } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Almanac, ed P.K.Seidelmann, University Science Books (1992), section 2.553, p83. This contains references to the Stephenson \& Morrison and McCarthy \& Babcock papers. } } \sstroutine{ palDtp2s }{ Tangent plane to spherical coordinates }{ \sstdescription{ Transform tangent plane coordinates into spherical. } \sstinvocation{ palDtp2s( double xi, double eta, double raz, double decz, double $*$ra, double $*$dec); } \sstarguments{ \sstsubsection{ xi = double (Given) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double (Given) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ raz = double (Given) }{ RA spherical coordinate of tangent point (radians) } \sstsubsection{ decz = double (Given) }{ Dec spherical coordinate of tangent point (radians) } \sstsubsection{ ra = double $*$ (Returned) }{ RA spherical coordinate of point to be projected (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Dec spherical coordinate of point to be projected (radians) } } } \sstroutine{ palDtps2c }{ Determine RA,Dec of tangent point from coordinates }{ \sstdescription{ From the tangent plane coordinates of a star of known RA,Dec, determine the RA,Dec of the tangent point. } \sstinvocation{ palDtps2c( double xi, double eta, double ra, double dec, double $*$ raz1, double decz1, double $*$ raz2, double decz2, int $*$n); } \sstarguments{ \sstsubsection{ xi = double (Given) }{ First rectangular coordinate on tangent plane (radians) } \sstsubsection{ eta = double (Given) }{ Second rectangular coordinate on tangent plane (radians) } \sstsubsection{ ra = double (Given) }{ RA spherical coordinate of star (radians) } \sstsubsection{ dec = double (Given) }{ Dec spherical coordinate of star (radians) } \sstsubsection{ raz1 = double $*$ (Returned) }{ RA spherical coordinate of tangent point, solution 1 (radians) } \sstsubsection{ decz1 = double $*$ (Returned) }{ Dec spherical coordinate of tangent point, solution 1 (radians) } \sstsubsection{ raz2 = double $*$ (Returned) }{ RA spherical coordinate of tangent point, solution 2 (radians) } \sstsubsection{ decz2 = double $*$ (Returned) }{ Dec spherical coordinate of tangent point, solution 2 (radians) } \sstsubsection{ n = int $*$ (Returned) }{ number of solutions: 0 = no solutions returned (note 2) 1 = only the first solution is useful (note 3) 2 = both solutions are useful (note 3) } } \sstnotes{ \sstitemlist{ \sstitem The RAZ1 and RAZ2 values are returned in the range 0-2pi. \sstitem Cases where there is no solution can only arise near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero XI value, and hence it is meaningless to ask where the tangent point would have to be to bring about this combination of XI and DEC. \sstitem Also near the poles, cases can arise where there are two useful solutions. The argument N indicates whether the second of the two solutions returned is useful. N=1 indicates only one useful solution, the usual case; under these circumstances, the second solution corresponds to the {\tt "}over-the-pole{\tt "} case, and this is reflected in the values of RAZ2 and DECZ2 which are returned. \sstitem The DECZ1 and DECZ2 values are returned in the range $+$/-pi, but in the usual, non-pole-crossing, case, the range is $+$/-pi/2. \sstitem This routine is the spherical equivalent of the routine sla\_DTPV2C. } } } \sstroutine{ palDtt }{ Return offset between UTC and TT }{ \sstdescription{ Increment to be applied to Coordinated Universal Time UTC to give Terrestrial Time TT (formerly Ephemeris Time ET) } \sstinvocation{ dtt = palDtt( double utc ); } \sstarguments{ \sstsubsection{ utc = double (Given) }{ UTC date as a modified JD (JD-2400000.5) } } \sstreturnedvalue{ \sstsubsection{ dtt = double }{ TT-UTC in seconds } } \sstnotes{ \sstitemlist{ \sstitem Consider a comprehensive upgrade to use the time transformations in SOFA{\tt '}s time cookbook: http://www.iausofa.org/sofa\_ts\_c.pdf. \sstitem See iauDat for a description of error conditions when calling this function with a time outside of the UTC range. This behaviour differs from slaDtt. } } } \sstroutine{ palEcmat }{ Form the equatorial to ecliptic rotation matrix - IAU 2006 precession model }{ \sstdescription{ The equatorial to ecliptic rotation matrix is found and returned. The matrix is in the sense V(ecl) = RMAT $*$ V(equ); the equator, equinox and ecliptic are mean of date. } \sstinvocation{ palEcmat( double date, double rmat[3][3] ) } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds). } \sstsubsection{ rmat = double[3][3] (Returned) }{ Rotation matrix } } } \sstroutine{ palEl2ue }{ Transform conventional elements into {\tt "}universal{\tt "} form }{ \sstdescription{ Transform conventional osculating elements into {\tt "}universal{\tt "} form. } \sstinvocation{ void palEl2ue ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double u[13], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Epoch (TT MJD) of osculation (Note 3) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = illegal JFORM \sstitem 2 = illegal E \sstitem 3 = illegal AORQ \sstitem 4 = illegal DM \sstitem 5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The companion routine is palUe2pv. This takes the set of numbers that the present routine outputs and uses them to derive the object{\tt '}s position and velocity. A single prediction requires one call to the present routine followed by one call to palUe2pv; for convenience, the two calls are packaged as the routine palPlanel. Multiple predictions may be made by again calling the present routine once, but then calling palUe2pv multiple times, which is faster than multiple calls to palPlanel. \sstitem DATE is the epoch of osculation. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The supplied orbital elements are with respect to the J2000 ecliptic and equinox. The position and velocity parameters returned in the array U are with respect to the mean equator and equinox of epoch J2000, and are for the perihelion prior to the specified epoch. \sstitem The universal elements returned in the array U are in canonical units (solar masses, AU and canonical days). \sstitem Three different element-format options are available: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) \sstitemlist{ \sstitem Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. } } \sstdiytopic{ See Also }{ Everhart \& Pitkin, Am.J.Phys. 51, 712 (1983). } } \sstroutine{ palEpco }{ Convert an epoch into the appropriate form - {\tt '}B{\tt '} or {\tt '}J{\tt '} }{ \sstdescription{ Converts a Besselian or Julian epoch to a Julian or Besselian epoch. } \sstinvocation{ double palEpco( char k0, char k, double e ); } \sstarguments{ \sstsubsection{ k0 = char (Given) }{ Form of result: {\tt '}B{\tt '}=Besselian, {\tt '}J{\tt '}=Julian } \sstsubsection{ k = char (Given) }{ Form of given epoch: {\tt '}B{\tt '} or {\tt '}J{\tt '}. } } \sstnotes{ \sstitemlist{ \sstitem The result is always either equal to or very close to the given epoch E. The routine is required only in applications where punctilious treatment of heterogeneous mixtures of star positions is necessary. \sstitem k and k0 are case insensitive. This differes slightly from the Fortran SLA implementation. \sstitem k and k0 are not validated. They are interpreted as follows: o If k0 and k are the same the result is e o If k0 is {\tt '}b{\tt '} or {\tt '}B{\tt '} and k isn{\tt '}t the conversion is J to B. o In all other cases, the conversion is B to J. } } } \sstroutine{ palEpv }{ Earth position and velocity with respect to the BCRS }{ \sstdescription{ Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System. } \sstinvocation{ void palEpv( double date, double ph[3], double vh[3], double pb[3], double vb[3] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Date, TDB Modified Julian Date (JD-2400000.5) } \sstsubsection{ ph = double [3] (Returned) }{ Heliocentric Earth position (AU) } \sstsubsection{ vh = double [3] (Returned) }{ Heliocentric Earth velocity (AU/day) } \sstsubsection{ pb = double [3] (Returned) }{ Barycentric Earth position (AU) } \sstsubsection{ vb = double [3] (Returned) }{ Barycentric Earth velocity (AU/day) } } \sstnotes{ \sstitemlist{ \sstitem See iauEpv00 for details on accuracy \sstitem Note that the status argument from iauEpv00 is ignored } } } \sstroutine{ palEtrms }{ Compute the E-terms vector }{ \sstdescription{ Computes the E-terms (elliptic component of annual aberration) vector. Note the use of the J2000 aberration constant (20.49552 arcsec). This is a reflection of the fact that the E-terms embodied in existing star catalogues were computed from a variety of aberration constants. Rather than adopting one of the old constants the latest value is used here. } \sstinvocation{ void palEtrms ( double ep, double ev[3] ); } \sstarguments{ \sstsubsection{ ep = double (Given) }{ Besselian epoch } \sstsubsection{ ev = double [3] (Returned) }{ E-terms as (dx,dy,dz) } } \sstdiytopic{ See also }{ \sstitemlist{ \sstitem Smith, C.A. et al., 1989. Astr.J. 97, 265. \sstitem Yallop, B.D. et al., 1989. Astr.J. 97, 274. } } } \sstroutine{ palEqecl }{ Transform from J2000.0 equatorial coordinates to ecliptic coordinates }{ \sstdescription{ Transform from J2000.0 equatorial coordinates to ecliptic coordinates. } \sstinvocation{ void palEqecl( double dr, double dd, double date, double $*$dl, double $*$db); } \sstarguments{ \sstsubsection{ dr = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ dd = double (Given) }{ J2000.0 mean Dec (Radians) } \sstsubsection{ date = double (Given) }{ TT as Modified Julian Date (JD-2400000.5). The difference between TT and TDB is of the order of a millisecond or two (i.e. about 0.02 arc-seconds). } \sstsubsection{ dl = double $*$ (Returned) }{ Ecliptic longitude (mean of date, IAU 1980 theory, radians) } \sstsubsection{ db = double $*$ (Returned) }{ Ecliptic latitude (mean of date, IAU 1980 theory, radians) } } } \sstroutine{ palEqgal }{ Convert from J2000.0 equatorial coordinates to Galactic }{ \sstdescription{ Transformation from J2000.0 equatorial coordinates to IAU 1958 galactic coordinates. } \sstinvocation{ void palEqgal ( double dr, double dd, double $*$dl, double $*$db ); } \sstarguments{ \sstsubsection{ dr = double (Given) }{ J2000.0 RA (radians) } \sstsubsection{ dd = double (Given) }{ J2000.0 Dec (radians } \sstsubsection{ dl = double $*$ (Returned) }{ Galactic longitude (radians). } \sstsubsection{ db = double $*$ (Returned) }{ Galactic latitude (radians). } } \sstnotes{ The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is required. } \sstdiytopic{ See Also }{ Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } \sstroutine{ palEvp }{ Returns the barycentric and heliocentric velocity and position of the Earth }{ \sstdescription{ Returns the barycentric and heliocentric velocity and position of the Earth at a given epoch, given with respect to a specified equinox. For information about accuracy, see the function iauEpv00. } \sstinvocation{ void palEvp( double date, double deqx, double dvb[3], double dpb[3], double dvh[3], double dph[3] ) } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB (loosely ET) as a Modified Julian Date (JD-2400000.5) } \sstsubsection{ deqx = double (Given) }{ Julian epoch (e.g. 2000.0) of mean equator and equinox of the vectors returned. If deqx $<$= 0.0, all vectors are referred to the mean equator and equinox (FK5) of epoch date. } \sstsubsection{ dvb = double[3] (Returned) }{ Barycentric velocity (AU/s, AU) } \sstsubsection{ dpb = double[3] (Returned) }{ Barycentric position (AU/s, AU) } \sstsubsection{ dvh = double[3] (Returned) }{ heliocentric velocity (AU/s, AU) } \sstsubsection{ dph = double[3] (Returned) }{ Heliocentric position (AU/s, AU) } } } \sstroutine{ palFk45z }{ Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame }{ \sstdescription{ Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero proper motion in the FK5 frame (double precision) This function converts stars from the Bessel-Newcomb, FK4 system to the IAU 1976, FK5, Fricke system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined. The method is from Appendix 2 of Ref 1, but using the constants of Ref 4. } \sstinvocation{ palFk45z( double r1950, double d1950, double bepoch, double $*$r2000, double $*$d2000 ) } \sstarguments{ \sstsubsection{ r1950 = double (Given) }{ B1950.0 FK4 RA at epoch (radians). } \sstsubsection{ d1950 = double (Given) }{ B1950.0 FK4 Dec at epoch (radians). } \sstsubsection{ bepoch = double (Given) }{ Besselian epoch (e.g. 1979.3) } \sstsubsection{ r2000 = double (Returned) }{ J2000.0 FK5 RA (Radians). } \sstsubsection{ d2000 = double (Returned) }{ J2000.0 FK5 Dec(Radians). } } \sstnotes{ \sstitemlist{ \sstitem The epoch BEPOCH is strictly speaking Besselian, but if a Julian epoch is supplied the result will be affected only to a negligible extent. \sstitem Conversion from Besselian epoch 1950.0 to Julian epoch 2000.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after palFk45z is called. \sstitem In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion. } } \sstdiytopic{ References }{ \sstitemlist{ \sstitem Aoki,S., et al, 1983. Astron.Astrophys., 128, 263. \sstitem Smith, C.A. et al, 1989. {\tt "}The transformation of astrometric catalog systems to the equinox J2000.0{\tt "}. Astron.J. 97, 265. \sstitem Yallop, B.D. et al, 1989. {\tt "}Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}. Astron.J. 97, 274. \sstitem Seidelmann, P.K. (ed), 1992. {\tt "}Explanatory Supplement to the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7. } } } \sstroutine{ palFk524 }{ Convert J2000.0 FK5 star data to B1950.0 FK4 }{ \sstdescription{ This function converts stars from the IAU 1976, FK5, Fricke system, to the Bessel-Newcomb, FK4 system. The precepts of Smith et al (Ref 1) are followed, using the implementation by Yallop et al (Ref 2) of a matrix method due to Standish. Kinoshita{\tt '}s development of Andoyer{\tt '}s post-Newcomb precession is used. The numerical constants from Seidelmann et al (Ref 3) are used canonically. } \sstinvocation{ palFk524( double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950, double $*$p1950, double $*$v1950 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 FK5 RA (radians). } \sstsubsection{ d2000 = double (Given) }{ J2000.0 FK5 Dec (radians). } \sstsubsection{ dr2000 = double (Given) }{ J2000.0 FK5 RA proper motion (rad/Jul.yr) } \sstsubsection{ dd2000 = double (Given) }{ J2000.0 FK5 Dec proper motion (rad/Jul.yr) } \sstsubsection{ p2000 = double (Given) }{ J2000.0 FK5 parallax (arcsec) } \sstsubsection{ v2000 = double (Given) }{ J2000.0 FK5 radial velocity (km/s, $+$ve = moving away) } \sstsubsection{ r1950 = double $*$ (Returned) }{ B1950.0 FK4 RA (radians). } \sstsubsection{ d1950 = double $*$ (Returned) }{ B1950.0 FK4 Dec (radians). } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950.0 FK4 RA proper motion (rad/Jul.yr) } \sstsubsection{ dd1950 = double $*$ (Returned) }{ B1950.0 FK4 Dec proper motion (rad/Jul.yr) } \sstsubsection{ p1950 = double $*$ (Returned) }{ B1950.0 FK4 parallax (arcsec) } \sstsubsection{ v1950 = double $*$ (Returned) }{ B1950.0 FK4 radial velocity (km/s, $+$ve = moving away) } } \sstnotes{ \sstitemlist{ \sstitem The proper motions in RA are dRA/dt rather than cos(Dec)$*$dRA/dt, and are per year rather than per century. \sstitem Note that conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession, proper motion, and E-terms routines before and/or after FK524 is called. \sstitem In the FK4 catalogue the proper motions of stars within 10 degrees of the poles do not embody the differential E-term effect and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non-polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this routine to include the effect of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000, and measuring on the sky rather than in terms of dRA, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion. } } \sstdiytopic{ References }{ \sstitemlist{ \sstitem Smith, C.A. et al, 1989. {\tt "}The transformation of astrometric catalog systems to the equinox J2000.0{\tt "}. Astron.J. 97, 265. \sstitem Yallop, B.D. et al, 1989. {\tt "}Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space{\tt "}. Astron.J. 97, 274. \sstitem Seidelmann, P.K. (ed), 1992. {\tt "}Explanatory Supplement to the Astronomical Almanac{\tt "}, ISBN 0-935702-68-7. } } } \sstroutine{ palFk54z }{ Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming zero proper motion and parallax }{ \sstdescription{ This function converts star positions from the IAU 1976, FK5, Fricke system to the Bessel-Newcomb, FK4 system. } \sstinvocation{ palFk54z( double r2000, double d2000, double bepoch, double $*$r1950, double $*$d1950, double $*$dr1950, double $*$dd1950 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 FK5 RA (radians). } \sstsubsection{ d2000 = double (Given) }{ J2000.0 FK5 Dec (radians). } \sstsubsection{ bepoch = double (Given) }{ Besselian epoch (e.g. 1950.0). } \sstsubsection{ r1950 = double $*$ (Returned) }{ B1950 FK4 RA (radians) at epoch {\tt "}bepoch{\tt "}. } \sstsubsection{ d1950 = double $*$ (Returned) }{ B1950 FK4 Dec (radians) at epoch {\tt "}bepoch{\tt "}. } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950 FK4 proper motion (RA) (radians/trop.yr)). } \sstsubsection{ dr1950 = double $*$ (Returned) }{ B1950 FK4 proper motion (Dec) (radians/trop.yr)). } } \sstnotes{ \sstitemlist{ \sstitem The proper motion in RA is dRA/dt rather than cos(Dec)$*$dRA/dt. \sstitem Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0 only is provided for. Conversions involving other epochs will require use of the appropriate precession functions before and after this function is called. \sstitem The FK5 proper motions, the parallax and the radial velocity are presumed zero. \sstitem It is the intention that FK5 should be a close approximation to an inertial frame, so that distant objects have zero proper motion; such objects have (in general) non-zero proper motion in FK4, and this function returns those fictitious proper motions. \sstitem The position returned by this function is in the B1950 reference frame but at Besselian epoch BEPOCH. For comparison with catalogues the {\tt "}bepoch{\tt "} argument will frequently be 1950.0. } } } \sstroutine{ palGaleq }{ Convert from galactic to J2000.0 equatorial coordinates }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to J2000.0 equatorial coordinates. } \sstinvocation{ void palGaleq ( double dl, double db, double $*$dr, double $*$dd ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude (radians). } \sstsubsection{ db = double (Given) }{ Galactic latitude (radians). } \sstsubsection{ dr = double $*$ (Returned) }{ J2000.0 RA (radians) } \sstsubsection{ dd = double $*$ (Returned) }{ J2000.0 Dec (radians) } } \sstnotes{ The equatorial coordinates are J2000.0. Use the routine palGe50 if conversion to B1950.0 {\tt '}FK4{\tt '} coordinates is required. } \sstdiytopic{ See Also }{ Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } \sstroutine{ palGalsup }{ Convert from galactic to supergalactic coordinates }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to de Vaucouleurs supergalactic coordinates. } \sstinvocation{ void palGalsup ( double dl, double db, double $*$dsl, double $*$dsb ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude. } \sstsubsection{ db = double (Given) }{ Galactic latitude. } \sstsubsection{ dsl = double $*$ (Returned) }{ Supergalactic longitude. } \sstsubsection{ dsb = double $*$ (Returned) }{ Supergalactic latitude. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8. \sstitem Systems \& Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490. } (These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.) } } \sstroutine{ palGe50 }{ Transform Galactic Coordinate to B1950 FK4 }{ \sstdescription{ Transformation from IAU 1958 galactic coordinates to B1950.0 {\tt '}FK4{\tt '} equatorial coordinates. } \sstinvocation{ palGe50( double dl, double db, double $*$dr, double $*$dd ); } \sstarguments{ \sstsubsection{ dl = double (Given) }{ Galactic longitude (radians) } \sstsubsection{ db = double (Given) }{ Galactic latitude (radians) } \sstsubsection{ dr = double $*$ (Returned) }{ B9150.0 FK4 RA. } \sstsubsection{ dd = double $*$ (Returned) }{ B1950.0 FK4 Dec. } } \sstnotes{ \sstitemlist{ \sstitem The equatorial coordinates are B1950.0 {\tt '}FK4{\tt '}. Use the routine palGaleq if conversion to J2000.0 coordinates is required. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960) } } } \sstroutine{ palGeoc }{ Convert geodetic position to geocentric }{ \sstdescription{ Convert geodetic position to geocentric. } \sstinvocation{ void palGeoc( double p, double h, double $*$ r, double $*$z ); } \sstarguments{ \sstsubsection{ p = double (Given) }{ latitude (radians) } \sstsubsection{ h = double (Given) }{ height above reference spheroid (geodetic, metres) } \sstsubsection{ r = double $*$ (Returned) }{ distance from Earth axis (AU) } \sstsubsection{ z = double $*$ (Returned) }{ distance from plane of Earth equator (AU) } } \sstnotes{ \sstitemlist{ \sstitem Geocentric latitude can be obtained by evaluating atan2(z,r) \sstitem Uses WGS84 reference ellipsoid and calls iauGd2gc } } } \sstroutine{ palIntin }{ Convert free-format input into an integer }{ \sstdescription{ Extracts a number from an input string starting at the specified index. } \sstinvocation{ void palIntin( const char $*$ string, int $*$nstrt, long $*$ireslt, int $*$jflag ); } \sstarguments{ \sstsubsection{ string = const char $*$ (Given) }{ String containing number to be decoded. } \sstsubsection{ nstrt = int $*$ (Given and Returned) }{ Character number indicating where decoding should start. On output its value is updated to be the location of the possible next value. For compatibility with SLA the first character is index 1. } \sstsubsection{ ireslt = long $*$ (Returned) }{ Result. Not updated when jflag=1. } \sstsubsection{ jflag = int $*$ (Returned) }{ status: -1 = -OK, 0 = $+$OK, 1 = null, 2 = error } } \sstnotes{ \sstitemlist{ \sstitem Uses the strtol() system call to do the parsing. This may lead to subtle differences when compared to the SLA/F parsing. \sstitem Commas are recognized as a special case and are skipped if one happens to be the next character when updating nstrt. Additionally the output nstrt position will skip past any trailing space. \sstitem If no number can be found flag will be set to 1. \sstitem If the number overflows or underflows jflag will be set to 2. For overflow the returned result will have the value LONG\_MAX, for underflow it will have the value LONG\_MIN. } } } \sstroutine{ palMap }{ Convert star RA,Dec from mean place to geocentric apparent }{ \sstdescription{ Convert star RA,Dec from mean place to geocentric apparent. } \sstinvocation{ void palMap( double rm, double dm, double pr, double pd, double px, double rv, double eq, double date, double $*$ra, double $*$da ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians) } \sstsubsection{ dm = double (Given) }{ Mean declination (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion, changes per Julian year (radians) } \sstsubsection{ pd = double (Given) }{ Dec proper motion, changes per Julian year (radians) } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/s, $+$ve if receding) } \sstsubsection{ eq = double (Given) }{ Epoch and equinox of star data (Julian) } \sstsubsection{ date = double (Given) }{ TDB for apparent place (JD-2400000.5) } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Apparent dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem Calls palMappa and palMapqk \sstitem The reference systems and timescales used are IAU 2006. } } } \sstroutine{ palMappa }{ Compute parameters needed by palAmpqk and palMapqk }{ \sstdescription{ Compute star-independent parameters in preparation for transformations between mean place and geocentric apparent place. The parameters produced by this function are required in the parallax, aberration, and nutation/bias/precession parts of the mean/apparent transformations. The reference systems and timescales used are IAU 2006. } \sstinvocation{ void palMappa( double eq, double date, double amprms[21] ) } \sstarguments{ \sstsubsection{ eq = double (Given) }{ epoch of mean equinox to be used (Julian) } \sstsubsection{ date = double (Given) }{ TDB (JD-2400000.5) } \sstsubsection{ amprms = double[21] (Returned) }{ star-independent mean-to-apparent parameters: \sstitemlist{ \sstitem (0) time interval for proper motion (Julian years) \sstitem (1-3) barycentric position of the Earth (AU) \sstitem (4-6) heliocentric direction of the Earth (unit vector) \sstitem (7) (grav rad Sun)$*$2/(Sun-Earth distance) \sstitem (8-10) abv: barycentric Earth velocity in units of c \sstitem (11) sqrt(1-v$*$$*$2) where v=modulus(abv) \sstitem (12-20) precession/nutation (3,3) matrix } } } \sstnotes{ \sstitemlist{ \sstitem For date, the distinction between the required TDB and TT is always negligible. Moreover, for all but the most critical applications UTC is adequate. \sstitem The vector amprms(1-3) is referred to the mean equinox and equator of epoch eq. \sstitem The parameters amprms produced by this function are used by palAmpqk, palMapqk and palMapqkz. } } } \sstroutine{ palMapqk }{ Quick mean to apparent place }{ \sstdescription{ Quick mean to apparent place: transform a star RA,Dec from mean place to geocentric apparent place, given the star-independent parameters. Use of this routine is appropriate when efficiency is important and where many star positions, all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa routine. If the parallax and proper motions are zero the palMapqkz routine can be used instead. } \sstinvocation{ void palMapqk ( double rm, double dm, double pr, double pd, double px, double rv, double amprms[21], double $*$ra, double $*$da ); } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians) } \sstsubsection{ dm = double (Given) }{ Mean declination (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion, changes per Julian year (radians) } \sstsubsection{ pd = double (Given) }{ Dec proper motion, changes per Julian year (radians) } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/s, $+$ve if receding) } \sstsubsection{ amprms = double [21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa). } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Apparent dec (radians) } } \sstnotes{ \sstitemlist{ \sstitem The reference frames and timescales used are post IAU 2006. } } } \sstroutine{ palMapqkz }{ Quick mean to apparent place }{ \sstdescription{ Quick mean to apparent place: transform a star RA,dec from mean place to geocentric apparent place, given the star-independent parameters, and assuming zero parallax and proper motion. Use of this function is appropriate when efficiency is important and where many star positions, all with parallax and proper motion either zero or already allowed for, and all referred to the same equator and equinox, are to be transformed for one epoch. The star-independent parameters can be obtained by calling the palMappa function. The corresponding function for the case of non-zero parallax and proper motion is palMapqk. The reference systems and timescales used are IAU 2006. Strictly speaking, the function is not valid for solar-system sources, though the error will usually be extremely small. } \sstinvocation{ void palMapqkz( double rm, double dm, double amprms[21], double $*$ra, double $*$da ) } \sstarguments{ \sstsubsection{ rm = double (Given) }{ Mean RA (radians). } \sstsubsection{ dm = double (Given) }{ Mean Dec (radians). } \sstsubsection{ amprms = double[21] (Given) }{ Star-independent mean-to-apparent parameters (see palMappa): (0-3) not used (4-6) not used (7) not used (8-10) abv: barycentric Earth velocity in units of c (11) sqrt(1-v$*$$*$2) where v=modulus(abv) (12-20) precession/nutation (3,3) matrix } \sstsubsection{ ra = double $*$ (Returned) }{ Apparent RA (radians). } \sstsubsection{ da = double $*$ (Returned) }{ Apparent Dec (radians). } } } \sstroutine{ palNut }{ Form the matrix of nutation }{ \sstdescription{ Form the matrix of nutation for a given date using the IAU 2006 nutation model and palDeuler. } \sstinvocation{ void palNut( double date, double rmatn[3][3] ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as modified Julian date (JD-2400000.5) } \sstsubsection{ rmatn = double [3][3] (Returned) }{ Nutation matrix in the sense v(true)=rmatn $*$ v(mean) where v(true) is the star vector relative to the true equator and equinox of date and v(mean) is the star vector relative to the mean equator and equinox of date. } } \sstnotes{ \sstitemlist{ \sstitem Uses iauNut06a via palNutc \sstitem The distinction between TDB and TT is negligible. For all but the most critical applications UTC is adequate. } } } \sstroutine{ palNutc }{ Calculate nutation longitude \& obliquoty components }{ \sstdescription{ Calculates the longitude $*$ obliquity components and mean obliquity using the SOFA library. } \sstinvocation{ void palNutc( double date, double $*$ dpsi, double $*$deps, double $*$eps0 ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT as modified Julian date (JD-2400000.5) } \sstsubsection{ dpsi = double $*$ (Returned) }{ Nutation in longitude } \sstsubsection{ deps = double $*$ (Returned) }{ Nutation in obliquity } \sstsubsection{ eps0 = double $*$ (Returned) }{ Mean obliquity. } } \sstnotes{ \sstitemlist{ \sstitem Calls iauObl06 and iauNut06a and therefore uses the IAU 206 precession/nutation model. \sstitem Note the change from SLA/F regarding the date. TT is used rather than TDB. } } } \sstroutine{ palObs }{ Parameters of selected ground-based observing stations }{ \sstdescription{ Station numbers, identifiers, names and other details are subject to change and should not be hardwired into application programs. All characters in {\tt "}c{\tt "} up to the first space are checked; thus an abbreviated ID will return the parameters for the first station in the list which matches the abbreviation supplied, and no station in the list will ever contain embedded spaces. {\tt "}c{\tt "} must not have leading spaces. IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION. The longitude returned by sla\_OBS is west-positive in accordance with astronomical usage. However, this sign convention is left-handed and is the opposite of the one used by geographers; elsewhere in PAL the preferable east-positive convention is used. In particular, note that for use in palAop, palAoppa and palOap the sign of the longitude must be reversed. Users are urged to inform the author of any improvements they would like to see made. For example: typographical corrections more accurate parameters better station identifiers or names additional stations } \sstinvocation{ int palObs( size\_t n, const char $*$ c, char $*$ ident, size\_t identlen, char $*$ name, size\_t namelen, double $*$ w, double $*$ p, double $*$ h ); } \sstarguments{ \sstsubsection{ n = size\_t (Given) }{ Number specifying the observing station. If 0 the identifier in {\tt "}c{\tt "} is used to determine the observing station to use. } \sstsubsection{ c = const char $*$ (Given) }{ Identifier specifying the observing station for which the parameters should be returned. Only used if n is 0. Can be NULL for n$>$0. Case insensitive. } \sstsubsection{ ident = char $*$ (Returned) }{ Identifier of the observing station selected. Will be identical to {\tt "}c{\tt "} if n==0. Unchanged if {\tt "}n{\tt "} or {\tt "}c{\tt "} do not match an observing station. Should be at least 11 characters (including the trailing nul). } \sstsubsection{ identlen = size\_t (Given) }{ Size of the buffer {\tt "}ident{\tt "} including trailing nul. } \sstsubsection{ name = char $*$ (Returned) }{ Full name of the specified observing station. Contains {\tt "}?{\tt "} if {\tt "}n{\tt "} or {\tt "}c{\tt "} did not correspond to a valid station. Should be at least 41 characters (including the trailing nul). } \sstsubsection{ w = double $*$ (Returned) }{ Longitude (radians, West $+$ve). Unchanged if observing station could not be identified. } \sstsubsection{ p = double $*$ (Returned) }{ Geodetic latitude (radians, North $+$ve). Unchanged if observing station could not be identified. } \sstsubsection{ h = double $*$ (Returned) }{ Height above sea level (metres). Unchanged if observing station could not be identified. } } \sstreturnedvalue{ \sstsubsection{ palObs = int }{ 0 if an observing station was returned. -1 if no match was found. } } \sstnotes{ \sstitemlist{ \sstitem Differs from the SLA interface in that the output short name is not the same variable as the input short name. This simplifies consting. Additionally the size of the output buffers are now specified in the API and a status integer is returned. } } } \sstroutine{ palPa }{ HA, Dec to Parallactic Angle }{ \sstdescription{ Converts HA, Dec to Parallactic Angle. } \sstinvocation{ double palPa( double ha, double dec, double phi ); } \sstarguments{ \sstsubsection{ ha = double (Given) }{ Hour angle in radians (Geocentric apparent) } \sstsubsection{ dec = double (Given) }{ Declination in radians (Geocentric apparent) } \sstsubsection{ phi = double (Given) }{ Observatory latitude in radians (geodetic) } } \sstreturnedvalue{ \sstsubsection{ palPa = double }{ Parallactic angle in the range -pi to $+$pi. } } \sstnotes{ \sstitemlist{ \sstitem The parallactic angle at a point in the sky is the position angle of the vertical, i.e. the angle between the direction to the pole and to the zenith. In precise applications care must be taken only to use geocentric apparent HA,Dec and to consider separately the effects of atmospheric refraction and telescope mount errors. \sstitem At the pole a zero result is returned. } } } \sstroutine{ palPertel }{ Update elements by applying planetary perturbations }{ \sstdescription{ Update the osculating orbital elements of an asteroid or comet by applying planetary perturbations. } \sstinvocation{ void palPertel (int jform, double date0, double date1, double epoch0, double orbi0, double anode0, double perih0, double aorq0, double e0, double am0, double $*$epoch1, double $*$orbi1, double $*$anode1, double $*$perih1, double $*$aorq1, double $*$e1, double $*$am1, int $*$jstat ); } \sstarguments{ \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ date0 = double (Given) }{ Date of osculation (TT MJD) for the given elements. } \sstsubsection{ date1 = double (Given) }{ Date of osculation (TT MJD) for the updated elements. } \sstsubsection{ epoch0 = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbi0 = double (Given) }{ inclination (radians) } \sstsubsection{ anode0 = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih0 = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq0 = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e0 = double (Given) }{ eccentricity } \sstsubsection{ am0 = double (Given) }{ mean anomaly (radians, JFORM=2 only) } \sstsubsection{ epoch1 = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbi1 = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode1 = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih1 = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq1 = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e1 = double $*$ (Returned) }{ eccentricity } \sstsubsection{ am1 = double $*$ (Returned) }{ mean anomaly (radians, JFORM=2 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: \sstitemlist{ \sstitem $+$102 = warning, distant epoch \sstitem $+$101 = warning, large timespan ( $>$ 100 years) \sstitem $+$1 to $+$10 = coincident with planet (Note 6) \sstitem 0 = OK \sstitem -1 = illegal JFORM \sstitem -2 = illegal E0 \sstitem -3 = illegal AORQ0 \sstitem -4 = internal error \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem Two different element-format options are available: } Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AM = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBI = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in the TT timescale (formerly Ephemeris Time, ET), expressed as Modified Julian Dates (JD-2400000.5). } DATE0 is the instant at which the given (i.e. unperturbed) osculating elements are correct. DATE1 is the specified instant at which the updated osculating elements are correct. EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1 (respectively) for the JFORM=2 case, normally used for minor planets. For the JFORM=3 case, the two epochs will refer to perihelion passage and so will not, in general, be the same as DATE0 and/or DATE1 though they may be similar to one another. \sstitemlist{ \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem Unused elements (AM0 and AM1 for JFORM=3) are not accessed. \sstitem See the palPertue routine for details of the algorithm used. \sstitem This routine is not intended to be used for major planets, which is why JFORM=1 is not available and why there is no opportunity to specify either the longitude of perihelion or the daily motion. However, if JFORM=2 elements are somehow obtained for a major planet and supplied to the routine, sensible results will, in fact, be produced. This happens because the sla\_PERTUE routine that is called to perform the calculations checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply it to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. } } } \sstroutine{ palPertue }{ Update the universal elements by applying planetary perturbations }{ \sstdescription{ Update the universal elements of an asteroid or comet by applying planetary perturbations. } \sstinvocation{ void palPertue( double date, double u[13], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Final epoch (TT MJD) for the update elements. } \sstsubsection{ u = const double [13] (Given \& Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: $+$102 = warning, distant epoch $+$101 = warning, large timespan ( $>$ 100 years) $+$1 to $+$10 = coincident with major planet (Note 5) 0 = OK \sstitemlist{ \sstitem 1 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the J2000 equator and equinox. \sstitem The epochs DATE, U(3) and U(12) are all Modified Julian Dates (JD-2400000.5). \sstitem The algorithm is a simplified form of Encke{\tt '}s method. It takes as a basis the unperturbed motion of the body, and numerically integrates the perturbing accelerations from the major planets. The expression used is essentially Sterne{\tt '}s 6.7-2 (reference 1). Everhart and Pitkin (reference 2) suggest rectifying the orbit at each integration step by propagating the new perturbed position and velocity as the new universal variables. In the present routine the orbit is rectified less frequently than this, in order to gain a slight speed advantage. However, the rectification is done directly in terms of position and velocity, as suggested by Everhart and Pitkin, bypassing the use of conventional orbital elements. } The f(q) part of the full Encke method is not used. The purpose of this part is to avoid subtracting two nearly equal quantities when calculating the {\tt "}indirect member{\tt "}, which takes account of the small change in the Sun{\tt '}s attraction due to the slightly displaced position of the perturbed body. A simpler, direct calculation in double precision proves to be faster and not significantly less accurate. Apart from employing a variable timestep, and occasionally {\tt "}rectifying the orbit{\tt "} to keep the indirect member small, the integration is done in a fairly straightforward way. The acceleration estimated for the middle of the timestep is assumed to apply throughout that timestep; it is also used in the extrapolation of the perturbations to the middle of the next timestep, to predict the new disturbed position. There is no iteration within a timestep. Measures are taken to reach a compromise between execution time and accuracy. The starting-point is the goal of achieving arcsecond accuracy for ordinary minor planets over a ten-year timespan. This goal dictates how large the timesteps can be, which in turn dictates how frequently the unperturbed motion has to be recalculated from the osculating elements. Within predetermined limits, the timestep for the numerical integration is varied in length in inverse proportion to the magnitude of the net acceleration on the body from the major planets. The numerical integration requires estimates of the major-planet motions. Approximate positions for the major planets (Pluto alone is omitted) are obtained from the routine palPlanet. Two levels of interpolation are used, to enhance speed without significantly degrading accuracy. At a low frequency, the routine palPlanet is called to generate updated position$+$velocity {\tt "}state vectors{\tt "}. The only task remaining to be carried out at the full frequency (i.e. at each integration step) is to use the state vectors to extrapolate the planetary positions. In place of a strictly linear extrapolation, some allowance is made for the curvature of the orbit by scaling back the radius vector as the linear extrapolation goes off at a tangent. Various other approximations are made. For example, perturbations by Pluto and the minor planets are neglected and relativistic effects are not taken into account. In the interests of simplicity, the background calculations for the major planets are carried out en masse. The mean elements and state vectors for all the planets are refreshed at the same time, without regard for orbit curvature, mass or proximity. The Earth-Moon system is treated as a single body when the body is distant but as separate bodies when closer to the EMB than the parameter RNE, which incurs a time penalty but improves accuracy for near-Earth objects. \sstitemlist{ \sstitem This routine is not intended to be used for major planets. However, if major-planet elements are supplied, sensible results will, in fact, be produced. This happens because the routine checks the separation between the body and each of the planets and interprets a suspiciously small value (0.001 AU) as an attempt to apply the routine to the planet concerned. If this condition is detected, the contribution from that planet is ignored, and the status is set to the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } \sstroutine{ palPlanel }{ Transform conventional elements into position and velocity }{ \sstdescription{ Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements. } \sstinvocation{ void palPlanel ( double date, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double pv[6], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ Epoch (TT MJD) of osculation (Note 1) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 3) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) (Note 4) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal JFORM \sstitem -2 = illegal E \sstitem -3 = illegal AORQ \sstitem -4 = illegal DM \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem A choice of three different element-set options is available: } Option JFORM = 1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM = 2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM = 3, suitable for comets: EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitemlist{ \sstitem Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called {\tt "}osculating elements{\tt "}, using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body. } Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them: . The epoch of observation: the moment in time for which the position of the body is to be predicted. . The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached. . The osculating epoch: the moment in time at which the given elements are correct. For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation. For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved. For the present routine: . The epoch of observation is the argument DATE. . The epoch defining the position of the body is the argument EPOCH. . The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla\_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations. \sstitemlist{ \sstitem The reference frame for the result is with respect to the mean equator and equinox of epoch J2000. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. } } \sstdiytopic{ See Also }{ Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } \sstroutine{ palPlanet }{ Approximate heliocentric position and velocity of major planet }{ \sstdescription{ Calculates the approximate heliocentric position and velocity of the specified major planet. } \sstinvocation{ void palPlanet ( double date, int np, double pv[6], int $*$j ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TDB Modified Julian Date (JD-2400000.5). } \sstsubsection{ np = int (Given) }{ planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) } \sstsubsection{ pv = double [6] (Returned) }{ heliocentric x,y,z,xdot,ydot,zdot, J2000, equatorial triad in units AU and AU/s. } \sstsubsection{ j = int $*$ (Returned) }{ \sstitemlist{ \sstitem -2 = solution didn{\tt '}t converge. \sstitem -1 = illegal np (1-8) \sstitem 0 = OK \sstitem $+$1 = warning: year outside 1000-3000 } } } \sstnotes{ \sstitemlist{ \sstitem See SOFA iauPlan94 for details \sstitem Note that Pluto is supported in SLA/F but not in this routine \sstitem Status -2 is equivalent to iauPlan94 status $+$2. \sstitem Note that velocity units here match the SLA/F documentation. } } } \sstroutine{ palPlante }{ Topocentric RA,Dec of a Solar-System object from heliocentric orbital elements }{ \sstdescription{ Topocentric apparent RA,Dec of a Solar-System object whose heliocentric orbital elements are known. } \sstinvocation{ void palPlante ( double date, double elong, double phi, int jform, double epoch, double orbinc, double anode, double perih, double aorq, double e, double aorl, double dm, double $*$ra, double $*$dec, double $*$r, int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT MJD of observation (JD-2400000.5) } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ jform = int (Given) }{ Element set actually returned (1-3; Note 6) } \sstsubsection{ epoch = double (Given) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double (Given) }{ inclination (radians) } \sstsubsection{ anode = double (Given) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double (Given) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double (Given) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double (Given) }{ eccentricity } \sstsubsection{ aorl = double (Given) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double (Given) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ ra = double $*$ (Returned) }{ Topocentric apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Topocentric apparent Dec (radians) } \sstsubsection{ r = double $*$ (Returned) }{ Distance from observer (AU) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal jform \sstitem -2 = illegal e \sstitem -3 = illegal aorq \sstitem -4 = illegal dm \sstitem -5 = numerical error } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv. \sstitem The elements are with respect to the J2000 ecliptic and equinox. \sstitem A choice of three different element-set options is available: } Option JFORM = 1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM = 2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e (range 0 to $<$1) AORL = mean anomaly M (radians) Option JFORM = 3, suitable for comets: EPOCH = epoch of elements and perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e (range 0 to 10) Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not accessed. \sstitemlist{ \sstitem Each of the three element sets defines an unperturbed heliocentric orbit. For a given epoch of observation, the position of the body in its orbit can be predicted from these elements, which are called {\tt "}osculating elements{\tt "}, using standard two-body analytical solutions. However, due to planetary perturbations, a given set of osculating elements remains usable for only as long as the unperturbed orbit that it describes is an adequate approximation to reality. Attached to such a set of elements is a date called the {\tt "}osculating epoch{\tt "}, at which the elements are, momentarily, a perfect representation of the instantaneous position and velocity of the body. } Therefore, for any given problem there are up to three different epochs in play, and it is vital to distinguish clearly between them: . The epoch of observation: the moment in time for which the position of the body is to be predicted. . The epoch defining the position of the body: the moment in time at which, in the absence of purturbations, the specified position (mean longitude, mean anomaly, or perihelion) is reached. . The osculating epoch: the moment in time at which the given elements are correct. For the major-planet and minor-planet cases it is usual to make the epoch that defines the position of the body the same as the epoch of osculation. Thus, only two different epochs are involved: the epoch of the elements and the epoch of observation. For comets, the epoch of perihelion fixes the position in the orbit and in general a different epoch of osculation will be chosen. Thus, all three types of epoch are involved. For the present routine: . The epoch of observation is the argument DATE. . The epoch defining the position of the body is the argument EPOCH. . The osculating epoch is not used and is assumed to be close enough to the epoch of observation to deliver adequate accuracy. If not, a preliminary call to sla\_PERTEL may be used to update the element-set (and its associated osculating epoch) by applying planetary perturbations. \sstitemlist{ \sstitem Two important sources for orbital elements are Horizons, operated by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet Center, operated by the Center for Astrophysics, Harvard. } The JPL Horizons elements (heliocentric, J2000 ecliptic and equinox) correspond to SLALIB arguments as follows. Major planets: JFORM = 1 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = OM$+$W (in radians) AORQ = A E = EC AORL = MA$+$OM$+$W (in radians) DM = N (in radians) Epoch of osculation = JDCT-2400000.5 Minor planets: JFORM = 2 EPOCH = JDCT-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = A E = EC AORL = MA (in radians) Epoch of osculation = JDCT-2400000.5 Comets: JFORM = 3 EPOCH = Tp-2400000.5 ORBINC = IN (in radians) ANODE = OM (in radians) PERIH = W (in radians) AORQ = QR E = EC Epoch of osculation = JDCT-2400000.5 The MPC elements correspond to SLALIB arguments as follows. Minor planets: JFORM = 2 EPOCH = Epoch-2400000.5 ORBINC = Incl. (in radians) ANODE = Node (in radians) PERIH = Perih. (in radians) AORQ = a E = e AORL = M (in radians) Epoch of osculation = Epoch-2400000.5 Comets: JFORM = 3 EPOCH = T-2400000.5 ORBINC = Incl. (in radians) ANODE = Node. (in radians) PERIH = Perih. (in radians) AORQ = q E = e Epoch of osculation = Epoch-2400000.5 } } \sstroutine{ palPlantu }{ Topocentric RA,Dec of a Solar-System object from universal elements }{ \sstdescription{ Topocentric apparent RA,Dec of a Solar-System object whose heliocentric universal elements are known. } \sstinvocation{ void palPlantu ( double date, double elong, double phi, const double u[13], double $*$ra, double $*$dec, double $*$r, int $*$jstat ) \{ } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT MJD of observation (JD-2400000.5) } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ u = const double [13] (Given) }{ Universal orbital elements \sstitemlist{ \sstitem (0) combined mass (M$+$m) \sstitem (1) total energy of the orbit (alpha) \sstitem (2) reference (osculating) epoch (t0) \sstitem (3-5) position at reference epoch (r0) \sstitem (6-8) velocity at reference epoch (v0) \sstitem (9) heliocentric distance at reference epoch \sstitem (10) r0.v0 \sstitem (11) date (t) \sstitem (12) universal eccentric anomaly (psi) of date, approx } } \sstsubsection{ ra = double $*$ (Returned) }{ Topocentric apparent RA (radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Topocentric apparent Dec (radians) } \sstsubsection{ r = double $*$ (Returned) }{ Distance from observer (AU) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = radius vector zero \sstitem -2 = failed to converge } } } \sstnotes{ \sstitemlist{ \sstitem DATE is the instant for which the prediction is required. It is in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). \sstitem The longitude and latitude allow correction for geocentric parallax. This is usually a small effect, but can become important for near-Earth asteroids. Geocentric positions can be generated by appropriate use of routines palEpv (or palEvp) and palUe2pv. \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the J2000 equator and equinox. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } \sstroutine{ palPm }{ Apply corrections for proper motion a star RA,Dec }{ \sstdescription{ Apply corrections for proper motion to a star RA,Dec using the SOFA routine iauStarpm. } \sstinvocation{ void palPm ( double r0, double d0, double pr, double pd, double px, double rv, double ep0, double ep1, double $*$r1, double $*$d1 ); } \sstarguments{ \sstsubsection{ r0 = double (Given) }{ RA at epoch ep0 (radians) } \sstsubsection{ d0 = double (Given) }{ Dec at epoch ep0 (radians) } \sstsubsection{ pr = double (Given) }{ RA proper motion in radians per year. } \sstsubsection{ pd = double (Given) }{ Dec proper motion in radians per year. } \sstsubsection{ px = double (Given) }{ Parallax (arcsec) } \sstsubsection{ rv = double (Given) }{ Radial velocity (km/sec $+$ve if receding) } \sstsubsection{ ep0 = double (Given) }{ Start epoch in years, assumed to be Julian. } \sstsubsection{ ep1 = double (Given) }{ End epoch in years, assumed to be Julian. } \sstsubsection{ r1 = double $*$ (Returned) }{ RA at epoch ep1 (radians) } \sstsubsection{ d1 = double $*$ (Returned) }{ Dec at epoch ep1 (radians) } } \sstnotes{ \sstitemlist{ \sstitem Uses iauStarpm but ignores the status returns from that routine. In particular note that parallax should not be zero when the proper motions are non-zero. SLA/F allows parallax to be zero. \sstitem Assumes all epochs are Julian epochs. } } } \sstroutine{ palPrebn }{ Generate the matrix of precession between two objects (old) }{ \sstdescription{ Generate the matrix of precession between two epochs, using the old, pre-IAU1976, Bessel-Newcomb model, using Kinoshita{\tt '}s formulation } \sstinvocation{ void palPrebn ( double bep0, double bep1, double rmatp[3][3] ); } \sstarguments{ \sstsubsection{ bep0 = double (Given) }{ Beginning Besselian epoch. } \sstsubsection{ bep1 = double (Given) }{ Ending Besselian epoch } \sstsubsection{ rmatp = double[3][3] (Returned) }{ precession matrix in the sense V(BEP1) = RMATP $*$ V(BEP0) } } \sstdiytopic{ See Also }{ Kinoshita, H. (1975) {\tt '}Formulas for precession{\tt '}, SAO Special Report No. 364, Smithsonian Institution Astrophysical Observatory, Cambridge, Massachusetts. } } \sstroutine{ palPrec }{ Form the matrix of precession between two epochs (IAU 2006) }{ \sstdescription{ The IAU 2006 precession matrix from ep0 to ep1 is found and returned. The matrix is in the sense V(EP1) = RMATP $*$ V(EP0). The epochs are TDB (loosely TT) Julian epochs. Though the matrix method itself is rigorous, the precession angles are expressed through canonical polynomials which are valid only for a limited time span of a few hundred years around the current epoch. } \sstinvocation{ palPrec( double ep0, double ep1, double rmatp[3][3] ) } \sstarguments{ \sstsubsection{ ep0 = double (Given) }{ Beginning epoch } \sstsubsection{ ep1 = double (Given) }{ Ending epoch } \sstsubsection{ rmatp = double[3][3] (Returned) }{ Precession matrix } } } \sstroutine{ palPreces }{ Precession - either FK4 or FK5 as required }{ \sstdescription{ Precess coordinates using the appropriate system and epochs. } \sstinvocation{ void palPreces ( const char sys[3], double ep0, double ep1, double $*$ra, double $*$dc ); } \sstarguments{ \sstsubsection{ sys = const char [3] (Given) }{ Precession to be applied: FK4 or FK5. Case insensitive. } \sstsubsection{ ep0 = double (Given) }{ Starting epoch. } \sstsubsection{ ep1 = double (Given) }{ Ending epoch } \sstsubsection{ ra = double $*$ (Given \& Returned) }{ On input the RA mean equator \& equinox at epoch ep0. On exit the RA mean equator \& equinox of epoch ep1. } \sstsubsection{ dec = double $*$ (Given \& Returned) }{ On input the dec mean equator \& equinox at epoch ep0. On exit the dec mean equator \& equinox of epoch ep1. } } \sstnotes{ \sstitemlist{ \sstitem Uses palPrec for FK5 data and palPrebn for FK4 data. \sstitem The epochs are Besselian if SYSTEM={\tt '}FK4{\tt '} and Julian if {\tt '}FK5{\tt '}. For example, to precess coordinates in the old system from equinox 1900.0 to 1950.0 the call would be: palPreces( {\tt "}FK4{\tt "}, 1900.0, 1950.0, \&ra, \&dc ); \sstitem This routine will NOT correctly convert between the old and the new systems - for example conversion from B1950 to J2000. For these purposes see palFk425, palFk524, palFk45z and palFk54z. \sstitem If an invalid SYSTEM is supplied, values of -99D0,-99D0 will be returned for both RA and DC. } } } \sstroutine{ palPrenut }{ Form the matrix of bias-precession-nutation (IAU 2006/2000A) }{ \sstdescription{ Form the matrix of bias-precession-nutation (IAU 2006/2000A). The epoch and date are TT (but TDB is usually close enough). The matrix is in the sense v(true) = rmatpn $*$ v(mean). } \sstinvocation{ void palPrenut( double epoch, double date, double rmatpn[3][3] ) } \sstarguments{ \sstsubsection{ epoch = double (Returned) }{ Julian epoch for mean coordinates. } \sstsubsection{ date = double (Returned) }{ Modified Julian Date (JD-2400000.5) for true coordinates. } \sstsubsection{ rmatpn = double[3][3] (Returned) }{ combined NPB matrix } } } \sstroutine{ palPv2el }{ Position velocity to heliocentirc osculating elements }{ \sstdescription{ Heliocentric osculating elements obtained from instantaneous position and velocity. } \sstinvocation{ void palPv2el ( const double pv[6], double date, double pmass, int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat ); } \sstarguments{ \sstsubsection{ pv = const double [6] (Given) }{ Heliocentric x,y,z,xdot,ydot,zdot of date, J2000 equatorial triad (AU,AU/s; Note 1) } \sstsubsection{ date = double (Given) }{ Date (TT Modified Julian Date = JD-2400000.5) } \sstsubsection{ pmass = double (Given) }{ Mass of the planet (Sun=1; Note 2) } \sstsubsection{ jformr = int (Given) }{ Requested element set (1-3; Note 3) } \sstsubsection{ jform = int $*$ (Returned) }{ Element set actually returned (1-3; Note 4) } \sstsubsection{ epoch = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double $*$ (Returned) }{ eccentricity } \sstsubsection{ aorl = double $*$ (Returned) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double $*$ (Returned) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal PMASS \sstitem -2 = illegal JFORMR \sstitem -3 = position/velocity out of range } } } \sstnotes{ \sstitemlist{ \sstitem The PV 6-vector is with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox. \sstitem The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal. \sstitem Three different element-format options are supported: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument: } JFORMR JFORM meaning 1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical 2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical 3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format \sstitemlist{ \sstitem The arguments returned for each value of JFORM (cf Note 5: JFORM may not be the same as JFORMR) are as follows: } JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - - where: t0 is the epoch of the elements (MJD, TT) T {\tt "} epoch of perihelion (MJD, TT) i {\tt "} inclination (radians) Omega {\tt "} longitude of the ascending node (radians) curly pi {\tt "} longitude of perihelion (radians) omega {\tt "} argument of perihelion (radians) a {\tt "} mean distance (AU) q {\tt "} perihelion distance (AU) e {\tt "} eccentricity L {\tt "} longitude (radians, 0-2pi) M {\tt "} mean anomaly (radians, 0-2pi) n {\tt "} daily motion (radians) \sstitemlist{ \sstitem means no value is set \sstitem At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit. \sstitem The osculating epoch for the returned elements is the argument DATE. \sstitem Reference: Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers, 1960 } } } \sstroutine{ palPv2ue }{ Universal elements to position and velocity }{ \sstdescription{ Construct a universal element set based on an instantaneous position and velocity. } \sstinvocation{ void palPv2ue( const double pv[6], double date, double pmass, double u[13], int $*$ jstat ); } \sstarguments{ \sstsubsection{ pv = double [6] (Given) }{ Heliocentric x,y,z,xdot,ydot,zdot of date, (AU,AU/s; Note 1) } \sstsubsection{ date = double (Given) }{ Date (TT modified Julian Date = JD-2400000.5) } \sstsubsection{ pmass = double (Given) }{ Mass of the planet (Sun=1; note 2) } \sstsubsection{ u = double [13] (Returned) }{ Universal orbital elements (Note 3) \sstitemlist{ \sstitem (0) combined mass (M$+$m) \sstitem (1) total energy of the orbit (alpha) \sstitem (2) reference (osculating) epoch (t0) \sstitem (3-5) position at reference epoch (r0) \sstitem (6-8) velocity at reference epoch (v0) \sstitem (9) heliocentric distance at reference epoch \sstitem (10) r0.v0 \sstitem (11) date (t) \sstitem (12) universal eccentric anomaly (psi) of date, approx } } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem -1 = illegal PMASS \sstitem -2 = too close to Sun \sstitem -3 = too slow } } } \sstnotes{ \sstitemlist{ \sstitem The PV 6-vector can be with respect to any chosen inertial frame, and the resulting universal-element set will be with respect to the same frame. A common choice will be mean equator and ecliptic of epoch J2000. \sstitem The mass, PMASS, is important only for the larger planets. For most purposes (e.g. asteroids) use 0D0. Values less than zero are illegal. \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem Reference: Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } \sstroutine{ palPvobs }{ Position and velocity of an observing station }{ \sstdescription{ Returns the position and velocity of an observing station. } \sstinvocation{ palPvobs( double p, double h, double stl, double pv[6] ) } \sstarguments{ \sstsubsection{ p = double (Given) }{ Latitude (geodetic, radians). } \sstsubsection{ h = double (Given) }{ Height above reference spheroid (geodetic, metres). } \sstsubsection{ stl = double (Given) }{ Local apparent sidereal time (radians). } \sstsubsection{ pv = double[ 6 ] (Returned) }{ position/velocity 6-vector (AU, AU/s, true equator and equinox of date). } } \sstnotes{ \sstitemlist{ \sstitem The WGS84 reference ellipsoid is used. } } } \sstroutine{ palRdplan }{ Approximate topocentric apparent RA,Dec of a planet }{ \sstdescription{ Approximate topocentric apparent RA,Dec of a planet, and its angular diameter. } \sstinvocation{ void palRdplan( double date, int np, double elong, double phi, double $*$ ra, double $*$ dec, double $*$ diam ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ MJD of observation (JD-2400000.5) in TDB. For all practical purposes TT can be used instead of TDB, and for many applications UT will do (except for the Moon). } \sstsubsection{ np = int (Given) }{ Planet: 1 = Mercury 2 = Venus 3 = Moon 4 = Mars 5 = Jupiter 6 = Saturn 7 = Uranus 8 = Neptune else = Sun } \sstsubsection{ elong = double (Given) }{ Observer{\tt '}s east longitude (radians) } \sstsubsection{ phi = double (Given) }{ Observer{\tt '}s geodetic latitude (radians) } \sstsubsection{ ra = double $*$ (Returned) }{ RA (topocentric apparent, radians) } \sstsubsection{ dec = double $*$ (Returned) }{ Dec (topocentric apparent, radians) } \sstsubsection{ diam = double $*$ (Returned) }{ Angular diameter (equatorial, radians) } } \sstnotes{ \sstitemlist{ \sstitem Unlike with slaRdplan, Pluto is not supported. \sstitem The longitude and latitude allow correction for geocentric parallax. This is a major effect for the Moon, but in the context of the limited accuracy of the present routine its effect on planetary positions is small (negligible for the outer planets). Geocentric positions can be generated by appropriate use of the routines palDmoon and iauPlan94. } } } \sstroutine{ palRverot }{ Velocity component in a given direction due to Earth rotation }{ \sstdescription{ Calculate the velocity component in a given direction due to Earth rotation. The simple algorithm used assumes a spherical Earth, of a radius chosen to give results accurate to about 0.0005 km/s for observing stations at typical latitudes and heights. For applications requiring greater precision, use the routine palPvobs. } \sstinvocation{ double palRverot ( double phi, double ra, double da, double st ); } \sstarguments{ \sstsubsection{ phi = double (Given) }{ latitude of observing station (geodetic) (radians) } \sstsubsection{ ra = double (Given) }{ apparent RA (radians) } \sstsubsection{ da = double (Given) }{ apparent Dec (radians) } \sstsubsection{ st = double (Given) }{ } } \sstreturnedvalue{ \sstsubsection{ palRverot = double }{ Component of Earth rotation in direction RA,DA (km/s). The result is $+$ve when the observatory is receding from the given point on the sky. } } } \sstroutine{ palRvgalc }{ Velocity component in a given direction due to the rotation of the Galaxy }{ \sstdescription{ This function returns the Component of dynamical LSR motion in the direction of R2000,D2000. The result is $+$ve when the dynamical LSR is receding from the given point on the sky. } \sstinvocation{ double palRvgalc( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of dynamical LSR motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. Sometimes called the {\tt "}dynamical{\tt "} LSR, it is not to be confused with a {\tt "}kinematical{\tt "} LSR, which is the mean standard of rest of star catalogues or stellar populations. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem The orbital speed of 220 km/s used here comes from Kerr \& Lynden-Bell (1986), MNRAS, 221, p1023. } } } \sstroutine{ palRvlg }{ Velocity component in a given direction due to Galactic rotation and motion of the local group }{ \sstdescription{ This function returns the velocity component in a given direction due to the combination of the rotation of the Galaxy and the motion of the Galaxy relative to the mean motion of the local group. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlg( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of SOLAR motion in direction R2000,D2000 (km/s). }{ } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem IAU Trans 1976, 168, p201. } } } \sstroutine{ palRvlsrd }{ Velocity component in a given direction due to the Sun{\tt '}s motion with respect to the dynamical Local Standard of Rest }{ \sstdescription{ This function returns the velocity component in a given direction due to the Sun{\tt '}s motion with respect to the dynamical Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlsrd( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of {\tt "}peculiar{\tt "} solar motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is the {\tt "}dynamical{\tt "} LSR, a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun{\tt '}s motion with respect to the dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion. \sstitem There is another type of LSR, called a {\tt "}kinematical{\tt "} LSR. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations, and several slightly different kinematical LSRs are in use. The Sun{\tt '}s motion with respect to an agreed kinematical LSR is known as the {\tt "}standard{\tt "} solar motion. To obtain a radial velocity correction with respect to an adopted kinematical LSR use the routine sla\_RVLSRK. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73. } } } \sstroutine{ palRvlsrk }{ Velocity component in a given direction due to the Sun{\tt '}s motion with respect to an adopted kinematic Local Standard of Rest }{ \sstdescription{ This function returns the velocity component in a given direction due to the Sun{\tt '}s motion with respect to an adopted kinematic Local Standard of Rest. The result is $+$ve when the Sun is receding from the given point on the sky. } \sstinvocation{ double palRvlsrk( double r2000, double d2000 ) } \sstarguments{ \sstsubsection{ r2000 = double (Given) }{ J2000.0 mean RA (radians) } \sstsubsection{ d2000 = double (Given) }{ J2000.0 mean Dec (radians) } } \sstreturnedvalue{ \sstsubsection{ Component of {\tt "}standard{\tt "} solar motion in direction R2000,D2000 (km/s). }{ } } \sstnotes{ \sstitemlist{ \sstitem The Local Standard of Rest used here is one of several {\tt "}kinematical{\tt "} LSRs in common use. A kinematical LSR is the mean standard of rest of specified star catalogues or stellar populations. The Sun{\tt '}s motion with respect to a kinematical LSR is known as the {\tt "}standard{\tt "} solar motion. \sstitem There is another sort of LSR, the {\tt "}dynamical{\tt "} LSR, which is a point in the vicinity of the Sun which is in a circular orbit around the Galactic centre. The Sun{\tt '}s motion with respect to the dynamical LSR is called the {\tt "}peculiar{\tt "} solar motion. To obtain a radial velocity correction with respect to the dynamical LSR use the routine sla\_RVLSRD. } } \sstdiytopic{ Reference }{ \sstitemlist{ \sstitem Delhaye (1965), in {\tt "}Stars and Stellar Systems{\tt "}, vol 5, p73. } } } \sstroutine{ palSubet }{ Remove the E-terms from a pre IAU 1976 catalogue RA,Dec }{ \sstdescription{ Remove the E-terms (elliptic component of annual aberration) from a pre IAU 1976 catalogue RA,Dec to give a mean place. } \sstinvocation{ void palSubet ( double rc, double dc, double eq, double $*$rm, double $*$dm ); } \sstarguments{ \sstsubsection{ rc = double (Given) }{ RA with E-terms included (radians) } \sstsubsection{ dc = double (Given) }{ Dec with E-terms included (radians) } \sstsubsection{ eq = double (Given) }{ Besselian epoch of mean equator and equinox } \sstsubsection{ rm = double $*$ (Returned) }{ RA without E-terms (radians) } \sstsubsection{ dm = double $*$ (Returned) }{ Dec without E-terms (radians) } } \sstnotes{ Most star positions from pre-1984 optical catalogues (or derived from astrometry using such stars) embody the E-terms. This routine converts such a position to a formal mean place (allowing, for example, comparison with a pulsar timing position). } \sstdiytopic{ See Also }{ Explanatory Supplement to the Astronomical Ephemeris, section 2D, page 48. } } \sstroutine{ palSupgal }{ Convert from supergalactic to galactic coordinates }{ \sstdescription{ Transformation from de Vaucouleurs supergalactic coordinates to IAU 1958 galactic coordinates } \sstinvocation{ void palSupgal ( double dsl, double dsb, double $*$dl, double $*$db ); } \sstarguments{ \sstsubsection{ dsl = double (Given) }{ Supergalactic longitude. } \sstsubsection{ dsb = double (Given) }{ Supergalactic latitude. } \sstsubsection{ dl = double $*$ (Returned) }{ Galactic longitude. } \sstsubsection{ db = double $*$ (Returned) }{ Galactic latitude. } } \sstdiytopic{ See Also }{ \sstitemlist{ \sstitem de Vaucouleurs, de Vaucouleurs, \& Corwin, Second Reference Catalogue of Bright Galaxies, U. Texas, page 8. \sstitem Systems \& Applied Sciences Corp., Documentation for the machine-readable version of the above catalogue, Contract NAS 5-26490. } (These two references give different values for the galactic longitude of the supergalactic origin. Both are wrong; the correct value is L2=137.37.) } } \sstroutine{ palUe2el }{ Universal elements to heliocentric osculating elements }{ \sstdescription{ Transform universal elements into conventional heliocentric osculating elements. } \sstinvocation{ void palUe2el ( const double u[13], int jformr, int $*$jform, double $*$epoch, double $*$orbinc, double $*$anode, double $*$perih, double $*$aorq, double $*$e, double $*$aorl, double $*$dm, int $*$jstat ); } \sstarguments{ \sstsubsection{ u = const double [13] (Given) }{ Universal orbital elements (Note 1) (0) combined mass (M$+$m) (1) total energy of the orbit (alpha) (2) reference (osculating) epoch (t0) (3-5) position at reference epoch (r0) (6-8) velocity at reference epoch (v0) (9) heliocentric distance at reference epoch (10) r0.v0 (11) date (t) (12) universal eccentric anomaly (psi) of date, approx } \sstsubsection{ jformr = int (Given) }{ Requested element set (1-3; Note 3) } \sstsubsection{ jform = int $*$ (Returned) }{ Element set actually returned (1-3; Note 4) } \sstsubsection{ epoch = double $*$ (Returned) }{ Epoch of elements (TT MJD) } \sstsubsection{ orbinc = double $*$ (Returned) }{ inclination (radians) } \sstsubsection{ anode = double $*$ (Returned) }{ longitude of the ascending node (radians) } \sstsubsection{ perih = double $*$ (Returned) }{ longitude or argument of perihelion (radians) } \sstsubsection{ aorq = double $*$ (Returned) }{ mean distance or perihelion distance (AU) } \sstsubsection{ e = double $*$ (Returned) }{ eccentricity } \sstsubsection{ aorl = double $*$ (Returned) }{ mean anomaly or longitude (radians, JFORM=1,2 only) } \sstsubsection{ dm = double $*$ (Returned) }{ daily motion (radians, JFORM=1 only) } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = illegal combined mass \sstitem 2 = illegal JFORMR \sstitem 3 = position/velocity out of range } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference 2). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The universal elements are with respect to the mean equator and equinox of epoch J2000. The orbital elements produced are with respect to the J2000 ecliptic and mean equinox. \sstitem Three different element-format options are supported: } Option JFORM=1, suitable for the major planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = longitude of perihelion, curly pi (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean longitude L (radians) DM = daily motion (radians) Option JFORM=2, suitable for minor planets: EPOCH = epoch of elements (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = mean distance, a (AU) E = eccentricity, e AORL = mean anomaly M (radians) Option JFORM=3, suitable for comets: EPOCH = epoch of perihelion (TT MJD) ORBINC = inclination i (radians) ANODE = longitude of the ascending node, big omega (radians) PERIH = argument of perihelion, little omega (radians) AORQ = perihelion distance, q (AU) E = eccentricity, e \sstitemlist{ \sstitem It may not be possible to generate elements in the form requested through JFORMR. The caller is notified of the form of elements actually returned by means of the JFORM argument: } JFORMR JFORM meaning 1 1 OK - elements are in the requested format 1 2 never happens 1 3 orbit not elliptical 2 1 never happens 2 2 OK - elements are in the requested format 2 3 orbit not elliptical 3 1 never happens 3 2 never happens 3 3 OK - elements are in the requested format \sstitemlist{ \sstitem The arguments returned for each value of JFORM (cf Note 6: JFORM may not be the same as JFORMR) are as follows: } JFORM 1 2 3 EPOCH t0 t0 T ORBINC i i i ANODE Omega Omega Omega PERIH curly pi omega omega AORQ a a q E e e e AORL L M - DM n - - where: t0 is the epoch of the elements (MJD, TT) T {\tt "} epoch of perihelion (MJD, TT) i {\tt "} inclination (radians) Omega {\tt "} longitude of the ascending node (radians) curly pi {\tt "} longitude of perihelion (radians) omega {\tt "} argument of perihelion (radians) a {\tt "} mean distance (AU) q {\tt "} perihelion distance (AU) e {\tt "} eccentricity L {\tt "} longitude (radians, 0-2pi) M {\tt "} mean anomaly (radians, 0-2pi) n {\tt "} daily motion (radians) \sstitemlist{ \sstitem means no value is set \sstitem At very small inclinations, the longitude of the ascending node ANODE becomes indeterminate and under some circumstances may be set arbitrarily to zero. Similarly, if the orbit is close to circular, the true anomaly becomes indeterminate and under some circumstances may be set arbitrarily to zero. In such cases, the other elements are automatically adjusted to compensate, and so the elements remain a valid description of the orbit. } See Also: \sstitemlist{ \sstitem Sterne, Theodore E., {\tt "}An Introduction to Celestial Mechanics{\tt "}, Interscience Publishers Inc., 1960. Section 6.7, p199. \sstitem Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } \sstroutine{ palUe2pv }{ Heliocentric position and velocity of a planet, asteroid or comet, from universal elements }{ \sstdescription{ Heliocentric position and velocity of a planet, asteroid or comet, starting from orbital elements in the {\tt "}universal variables{\tt "} form. } \sstinvocation{ void palUe2pv( double date, double u[13], double pv[6], int $*$jstat ); } \sstarguments{ \sstsubsection{ date = double (Given) }{ TT Modified Julian date (JD-2400000.5). } \sstsubsection{ u = double [13] (Given \& Returned) }{ Universal orbital elements (updated, see note 1) given (0) combined mass (M$+$m) {\tt "} (1) total energy of the orbit (alpha) {\tt "} (2) reference (osculating) epoch (t0) {\tt "} (3-5) position at reference epoch (r0) {\tt "} (6-8) velocity at reference epoch (v0) {\tt "} (9) heliocentric distance at reference epoch {\tt "} (10) r0.v0 returned (11) date (t) {\tt "} (12) universal eccentric anomaly (psi) of date } \sstsubsection{ jstat = int $*$ (Returned) }{ status: 0 = OK \sstitemlist{ \sstitem 1 = radius vector zero \sstitem 2 = failed to converge } } } \sstnotes{ \sstitemlist{ \sstitem The {\tt "}universal{\tt "} elements are those which define the orbit for the purposes of the method of universal variables (see reference). They consist of the combined mass of the two bodies, an epoch, and the position and velocity vectors (arbitrary reference frame) at that epoch. The parameter set used here includes also various quantities that can, in fact, be derived from the other information. This approach is taken to avoiding unnecessary computation and loss of accuracy. The supplementary quantities are (i) alpha, which is proportional to the total energy of the orbit, (ii) the heliocentric distance at epoch, (iii) the outwards component of the velocity at the given epoch, (iv) an estimate of psi, the {\tt "}universal eccentric anomaly{\tt "} at a given date and (v) that date. \sstitem The companion routine is palEl2ue. This takes the conventional orbital elements and transforms them into the set of numbers needed by the present routine. A single prediction requires one one call to palEl2ue followed by one call to the present routine; for convenience, the two calls are packaged as the routine sla\_PLANEL. Multiple predictions may be made by again calling palEl2ue once, but then calling the present routine multiple times, which is faster than multiple calls to palPlanel. \sstitem It is not obligatory to use palEl2ue to obtain the parameters. However, it should be noted that because palEl2ue performs its own validation, no checks on the contents of the array U are made by the present routine. in the TT timescale (formerly Ephemeris Time, ET) and is a Modified Julian Date (JD-2400000.5). units (solar masses, AU and canonical days). The position and velocity are not sensitive to the choice of reference frame. The palEl2ue routine in fact produces coordinates with respect to the J2000 equator and equinox. \sstitem The algorithm was originally adapted from the EPHSLA program of D.H.P.Jones (private communication, 1996). The method is based on Stumpff{\tt '}s Universal Variables. \sstitem Reference: Everhart, E. \& Pitkin, E.T., Am.J.Phys. 51, 712, 1983. } } } % ? End of main text \end{document}